aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xscripts/test/basename.test6
-rw-r--r--toys/basename.c6
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);