Blame


1 bc7cb1a1 2003-11-23 devnull #include <u.h>
2 bc7cb1a1 2003-11-23 devnull #include <libc.h>
3 bc7cb1a1 2003-11-23 devnull
4 bc7cb1a1 2003-11-23 devnull void
5 bc7cb1a1 2003-11-23 devnull main(int argc, char *argv[])
6 bc7cb1a1 2003-11-23 devnull {
7 bc7cb1a1 2003-11-23 devnull char *pr;
8 bc7cb1a1 2003-11-23 devnull int n, dflag;
9 bc7cb1a1 2003-11-23 devnull
10 bc7cb1a1 2003-11-23 devnull dflag = 0;
11 bc7cb1a1 2003-11-23 devnull if(argc>1 && strcmp(argv[1], "-d") == 0){
12 bc7cb1a1 2003-11-23 devnull --argc;
13 bc7cb1a1 2003-11-23 devnull ++argv;
14 bc7cb1a1 2003-11-23 devnull dflag = 1;
15 bc7cb1a1 2003-11-23 devnull }
16 bc7cb1a1 2003-11-23 devnull if(argc < 2 || argc > 3){
17 bc7cb1a1 2003-11-23 devnull fprint(2, "usage: basename [-d] string [suffix]\n");
18 bc7cb1a1 2003-11-23 devnull exits("usage");
19 bc7cb1a1 2003-11-23 devnull }
20 bc7cb1a1 2003-11-23 devnull pr = utfrrune(argv[1], '/');
21 bc7cb1a1 2003-11-23 devnull if(dflag){
22 bc7cb1a1 2003-11-23 devnull if(pr){
23 bc7cb1a1 2003-11-23 devnull *pr = 0;
24 bc7cb1a1 2003-11-23 devnull print("%s\n", argv[1]);
25 bc7cb1a1 2003-11-23 devnull exits(0);
26 bc7cb1a1 2003-11-23 devnull }
27 bc7cb1a1 2003-11-23 devnull print(".\n");
28 bc7cb1a1 2003-11-23 devnull exits(0);
29 bc7cb1a1 2003-11-23 devnull }
30 bc7cb1a1 2003-11-23 devnull if(pr)
31 bc7cb1a1 2003-11-23 devnull pr++;
32 bc7cb1a1 2003-11-23 devnull else
33 bc7cb1a1 2003-11-23 devnull pr = argv[1];
34 bc7cb1a1 2003-11-23 devnull if(argc==3){
35 bc7cb1a1 2003-11-23 devnull n = strlen(pr)-strlen(argv[2]);
36 bc7cb1a1 2003-11-23 devnull if(n >= 0 && !strcmp(pr+n, argv[2]))
37 bc7cb1a1 2003-11-23 devnull pr[n] = 0;
38 bc7cb1a1 2003-11-23 devnull }
39 bc7cb1a1 2003-11-23 devnull print("%s\n", pr);
40 bc7cb1a1 2003-11-23 devnull exits(0);
41 bc7cb1a1 2003-11-23 devnull }