#include #include 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); }