basename.c (607B)
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 if (argv[0][0]) 30 p = basename(argv[0]); 31 if (argc == 2 && (slen = strlen(argv[1])) > 0) { 32 off = strlen(p) - slen; 33 if (off > 0 && !strcmp(p + off, argv[1])) 34 p[off] = '\0'; 35 } 36 puts(p); 37 38 return fshut(stdout, "<stdout>"); 39 }