From 528e3ba874f0d89f5a4d1f8ce8c04adbaa2ec1e4 Mon Sep 17 00:00:00 2001 From: Elie De Brauwer Date: Sun, 12 Feb 2012 14:14:58 +0100 Subject: Add test for basename, fix issue where suffix is wrongfully applied if it appears in the middle of the filename --- toys/basename.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'toys') diff --git a/toys/basename.c b/toys/basename.c index ef571032..a6a3bb96 100644 --- a/toys/basename.c +++ b/toys/basename.c @@ -15,7 +15,7 @@ config BASENAME help usage: basename string [suffix] - Return non-directory portion of a pathname + Return non-directory portion of a pathname removing suffix */ #include "toys.h" @@ -37,9 +37,11 @@ void basename_main(void) // chop off the suffix if provided if (suffix) { - char *s = strstr(base, suffix); - if (s && s != base) *s = 0; + int suflen = strlen(suffix); + int reslen = strlen(base); + if (suflen < reslen && !strcmp( base+reslen-suflen, suffix)) + base[reslen-suflen] = 0; } - + puts(base); } -- cgit v1.2.3