13e12c5d1SDavid du Colombier #include <u.h> 23e12c5d1SDavid du Colombier #include <libc.h> 33e12c5d1SDavid du Colombier 43e12c5d1SDavid du Colombier void main(int argc,char * argv[])53e12c5d1SDavid du Colombiermain(int argc, char *argv[]) 63e12c5d1SDavid du Colombier { 73e12c5d1SDavid du Colombier char *pr; 8219b2ee8SDavid du Colombier int n, dflag; 93e12c5d1SDavid du Colombier 10219b2ee8SDavid du Colombier dflag = 0; 11219b2ee8SDavid du Colombier if(argc>1 && strcmp(argv[1], "-d") == 0){ 12219b2ee8SDavid du Colombier --argc; 13219b2ee8SDavid du Colombier ++argv; 14219b2ee8SDavid du Colombier dflag = 1; 15219b2ee8SDavid du Colombier } 16*7dd7cddfSDavid du Colombier if(argc < 2 || argc > 3){ 17219b2ee8SDavid 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], '/'); 21219b2ee8SDavid du Colombier if(dflag){ 22219b2ee8SDavid du Colombier if(pr){ 23219b2ee8SDavid du Colombier *pr = 0; 24219b2ee8SDavid du Colombier print("%s\n", argv[1]); 25219b2ee8SDavid du Colombier exits(0); 26219b2ee8SDavid du Colombier } 27219b2ee8SDavid du Colombier print(".\n"); 28219b2ee8SDavid du Colombier exits(0); 29219b2ee8SDavid 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