diff options
-rwxr-xr-x | scripts/test/basename.test | 6 | ||||
-rw-r--r-- | toys/basename.c | 6 |
2 files changed, 5 insertions, 7 deletions
diff --git a/scripts/test/basename.test b/scripts/test/basename.test index e0288ce1..bd48f4af 100755 --- a/scripts/test/basename.test +++ b/scripts/test/basename.test @@ -16,8 +16,8 @@ testing "basename suffix" "basename a/b/c/d.suffix .suffix" "d\n" "" "" testing "basename suffix=result" "basename .txt .txt" ".txt\n" "" "" # Deal with suffix appearing in the filename -testing "basename reappering suffix 1" "basename a.txt.txt .txt" "a.txt\n" "" "" -testing "basename reappering suffix 2" "basename a.txt.old .txt" "a.txt.old\n" "" "" +testing "basename reappearing suffix 1" "basename a.txt.txt .txt" "a.txt\n" "" "" +testing "basename reappearing suffix 2" "basename a.txt.old .txt" "a.txt.old\n" "" "" # A suffix should be a real suffix, only a the end. -testing "basename invalid suffix" "basename isthisasuffix? suffix" "isthisasuffix?\n" "" ""
\ No newline at end of file +testing "basename invalid suffix" "basename isthisasuffix? suffix" "isthisasuffix?\n" "" "" diff --git a/toys/basename.c b/toys/basename.c index a6a3bb96..9f228b41 100644 --- a/toys/basename.c +++ b/toys/basename.c @@ -37,10 +37,8 @@ void basename_main(void) // chop off the suffix if provided if (suffix) { - int suflen = strlen(suffix); - int reslen = strlen(base); - if (suflen < reslen && !strcmp( base+reslen-suflen, suffix)) - base[reslen-suflen] = 0; + arg = base + strlen(base) - strlen(suffix); + if (arg > base && !strcmp(arg, suffix)) *arg = 0; } puts(base); |