13e12c5d1SDavid du Colombier #include <u.h> 23e12c5d1SDavid du Colombier #include <libc.h> 33e12c5d1SDavid du Colombier 43e12c5d1SDavid du Colombier void 53e12c5d1SDavid du Colombier main(int argc, char *argv[]) 63e12c5d1SDavid du Colombier { 73e12c5d1SDavid du Colombier char *pr; 8*219b2ee8SDavid du Colombier int n, dflag; 93e12c5d1SDavid du Colombier 10*219b2ee8SDavid du Colombier dflag = 0; 11*219b2ee8SDavid du Colombier if(argc>1 && strcmp(argv[1], "-d") == 0){ 12*219b2ee8SDavid du Colombier --argc; 13*219b2ee8SDavid du Colombier ++argv; 14*219b2ee8SDavid du Colombier dflag = 1; 15*219b2ee8SDavid du Colombier } 163e12c5d1SDavid du Colombier if(argc < 2){ 17*219b2ee8SDavid du Colombier fprint(2, "usage: basename [-d] string [suffix]\n"); 183e12c5d1SDavid du Colombier exits("usage"); 193e12c5d1SDavid du Colombier } 203e12c5d1SDavid du Colombier pr = utfrrune(argv[1], '/'); 21*219b2ee8SDavid du Colombier if(dflag){ 22*219b2ee8SDavid du Colombier if(pr){ 23*219b2ee8SDavid du Colombier *pr = 0; 24*219b2ee8SDavid du Colombier print("%s\n", argv[1]); 25*219b2ee8SDavid du Colombier exits(0); 26*219b2ee8SDavid du Colombier } 27*219b2ee8SDavid du Colombier print(".\n"); 28*219b2ee8SDavid du Colombier exits(0); 29*219b2ee8SDavid du Colombier } 30bd389b36SDavid du Colombier if(pr) 313e12c5d1SDavid du Colombier pr++; 32bd389b36SDavid du Colombier else 33bd389b36SDavid du Colombier pr = argv[1]; 343e12c5d1SDavid du Colombier if(argc==3){ 353e12c5d1SDavid du Colombier n = strlen(pr)-strlen(argv[2]); 36bd389b36SDavid du Colombier if(n >= 0 && !strcmp(pr+n, argv[2])) 373e12c5d1SDavid du Colombier pr[n] = 0; 383e12c5d1SDavid du Colombier } 393e12c5d1SDavid du Colombier print("%s\n", pr); 403e12c5d1SDavid du Colombier exits(0); 413e12c5d1SDavid du Colombier } 42