diff options
author | Nicholas <nbnoll@eml.cc> | 2021-11-17 08:22:03 -0800 |
---|---|---|
committer | Nicholas <nbnoll@eml.cc> | 2021-11-17 08:22:03 -0800 |
commit | ab400c0be5577cab2a66d242183887ebbd61717f (patch) | |
tree | f0391a4eab4d84c43692d4113076ea466568dcbd /src/cmd/core/basename.c | |
parent | 09c0a372823446d4559fc971d9a6128c89420b75 (diff) |
checkin
Diffstat (limited to 'src/cmd/core/basename.c')
-rw-r--r-- | src/cmd/core/basename.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/cmd/core/basename.c b/src/cmd/core/basename.c new file mode 100644 index 0000000..ba9d4c9 --- /dev/null +++ b/src/cmd/core/basename.c @@ -0,0 +1,36 @@ +#include <u.h> +#include <base.h> +#include <libfmt.h> + +static void +usage(void) +{ + fmt·fprint(2,"usage: %s [-d] path [suffix]\n", argv0); + exits("usage"); +} + +int +main(int argc, char *argv[]) +{ + int d; + long n; + char *p, *s; + + ARGBEGIN{ + case 'd': d = 1; break; + default: + usage(); + }ARGEND; + + if(argc < 1 || argc > 2) + usage(); + + p = d ? os·dirname(argv[0]) : os·basename(argv[0]); + if(argc>1){ + n = strlen(p)-strlen(argv[1]); + if(n >= 0 && strcmp(p+n, argv[1])==0) + p[n] = 0; + } + puts(p); + exits(nil); +} |