diff options
| -rw-r--r-- | usr.bin/basename/basename.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/usr.bin/basename/basename.c b/usr.bin/basename/basename.c index e22e5a6c4a2a..b6756ca2cdfe 100644 --- a/usr.bin/basename/basename.c +++ b/usr.bin/basename/basename.c @@ -71,10 +71,15 @@ main(argc, argv) if (argc != 1 && argc != 2) usage(); + if (!*argv[0]) { + printf("\n"); + exit(0); + } if ((p = basename(argv[0])) == NULL) err(1, "%s", argv[0]); - if (*++argv && (q = strstr(p, *argv)) && strcmp(q, *argv) == 0) - *q = '\0'; + if (*++argv && (q = strchr(p, '\0') - strlen(*argv)) > p && + strcmp(*argv, q) == 0) + *q = '\0'; (void)printf("%s\n", p); exit(0); } |
