Subversion Repositories planix.SVN

Rev

Rev 2 | Blame | Compare with Previous | Last modification | View Log | RSS feed

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