basename.c - 9base - revived minimalist port of Plan 9 userland to Unix
 (HTM) git clone git://git.suckless.org/9base
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       basename.c (605B)
       ---
            1 #include <u.h>
            2 #include <libc.h>
            3 
            4 void
            5 main(int argc, char *argv[])
            6 {
            7         char *pr;
            8         int n, dflag;
            9 
           10         dflag = 0;
           11         if(argc>1 && strcmp(argv[1], "-d") == 0){
           12                 --argc;
           13                 ++argv;
           14                 dflag = 1;
           15         }
           16         if(argc < 2 || argc > 3){
           17                 fprint(2, "usage: basename [-d] string [suffix]\n");
           18                 exits("usage");
           19         }
           20         pr = utfrrune(argv[1], '/');
           21         if(dflag){
           22                 if(pr){
           23                         *pr = 0;
           24                         print("%s\n", argv[1]);
           25                         exits(0);
           26                 }
           27                 print(".\n");
           28                 exits(0);
           29         }
           30         if(pr)
           31                 pr++;
           32         else
           33                 pr = argv[1];
           34         if(argc==3){
           35                 n = strlen(pr)-strlen(argv[2]);
           36                 if(n >= 0 && !strcmp(pr+n, argv[2]))
           37                         pr[n] = 0;
           38         }
           39         print("%s\n", pr);
           40         exits(0);
           41 }