diff options
Diffstat (limited to 'basename.c')
-rw-r--r-- | basename.c | 16 |
1 files changed, 12 insertions, 4 deletions
@@ -6,6 +6,14 @@ #include <backupfile.h> +#ifndef FILESYSTEM_PREFIX_LEN +#define FILESYSTEM_PREFIX_LEN(f) 0 +#endif + +#ifndef ISSLASH +#define ISSLASH(c) ((c) == '/') +#endif + /* In general, we can't use the builtin `basename' function if available, since it has different meanings in different environments. In some environments the builtin `basename' modifies its argument. */ @@ -14,11 +22,11 @@ char * base_name (name) char const *name; { - char const *base = name; + char const *base = name += FILESYSTEM_PREFIX_LEN (name); - while (*name) - if (*name++ == '/') - base = name; + for (; *name; name++) + if (ISSLASH (*name)) + base = name + 1; return (char *) base; } |