|  | #include <u.h> | 
|  | #include <libc.h> | 
|  |  | 
|  | void | 
|  | main(int argc, char *argv[]) | 
|  | { | 
|  | char *pr; | 
|  | int n, dflag; | 
|  |  | 
|  | dflag = 0; | 
|  | if(argc>1 && strcmp(argv[1], "-d") == 0){ | 
|  | --argc; | 
|  | ++argv; | 
|  | dflag = 1; | 
|  | } | 
|  | if(argc < 2 || argc > 3){ | 
|  | fprint(2, "usage: basename [-d] string [suffix]\n"); | 
|  | exits("usage"); | 
|  | } | 
|  | pr = utfrrune(argv[1], '/'); | 
|  | if(dflag){ | 
|  | if(pr){ | 
|  | *pr = 0; | 
|  | print("%s\n", argv[1]); | 
|  | exits(0); | 
|  | } | 
|  | print(".\n"); | 
|  | exits(0); | 
|  | } | 
|  | if(pr) | 
|  | pr++; | 
|  | else | 
|  | pr = argv[1]; | 
|  | if(argc==3){ | 
|  | n = strlen(pr)-strlen(argv[2]); | 
|  | if(n >= 0 && !strcmp(pr+n, argv[2])) | 
|  | pr[n] = 0; | 
|  | } | 
|  | print("%s\n", pr); | 
|  | exits(0); | 
|  | } |