Mercurial > hg > toybox
diff toys/basename.c @ 455:6c62d5b6675a
Add test for basename, fix issue where suffix is wrongfully applied if it appears in the middle of the filename
author | Elie De Brauwer <eliedebrauwer@gmail.com> |
---|---|
date | Sun, 12 Feb 2012 14:14:58 +0100 |
parents | eda61bcf575a |
children | dd24f86d5ad5 |
line wrap: on
line diff
--- a/toys/basename.c Mon Feb 13 08:44:32 2012 -0600 +++ b/toys/basename.c Sun Feb 12 14:14:58 2012 +0100 @@ -15,7 +15,7 @@ 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 @@ // 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); }