basename.c (584B)
1 /* See LICENSE file for copyright and license details. */ 2 #include <libgen.h> 3 #include <stdio.h> 4 #include <string.h> 5 6 #include "util.h" 7 8 static void 9 usage(void) 10 { 11 eprintf("usage: %s path [suffix]\n", argv0); 12 } 13 14 int 15 main(int argc, char *argv[]) 16 { 17 ssize_t off; 18 size_t slen; 19 char *p; 20 21 ARGBEGIN { 22 default: 23 usage(); 24 } ARGEND 25 26 if (argc != 1 && argc != 2) 27 usage(); 28 29 p = basename(argv[0]); 30 if (argc == 2 && (slen = strlen(argv[1])) > 0) { 31 off = strlen(p) - slen; 32 if (off > 0 && !strcmp(p + off, argv[1])) 33 p[off] = '\0'; 34 } 35 puts(p); 36 37 return fshut(stdout, "<stdout>"); 38 }