Mercurial > gnulib
changeset 590:cf44c49093fd
(basename): Rewrite so it doesn't rely on strrchr,
and hence doesn't need to include string.h -- on some alpha-based
OSF systems, there's a conflicting prototype for basename in string.h.
Reported by Kaveh Ghazi.
author | Jim Meyering <jim@meyering.net> |
---|---|
date | Fri, 19 Apr 1996 04:41:27 +0000 |
parents | 7a4c77f099c7 |
children | 8088065f7ad8 |
files | lib/basename.c |
diffstat | 1 files changed, 10 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/lib/basename.c Thu Apr 18 23:02:17 1996 +0000 +++ b/lib/basename.c Fri Apr 19 04:41:27 1996 +0000 @@ -19,23 +19,20 @@ #include <config.h> #endif -#if defined(STDC_HEADERS) || defined(HAVE_STRING_H) -#include <string.h> -#else -#include <strings.h> -#ifndef strrchr -#define strrchr rindex -#endif -#endif - -/* Return NAME with any leading path stripped off. */ +/* Return NAME with any leading path stripped off. + Don't use strrchr/rindex. */ char * basename (name) const char *name; { - char *base; + const char *base = name; - base = strrchr (name, '/'); - return base ? base + 1 : (char *) name; + while (*name) + { + if (*name == '/') + base = name + 1; + ++name; + } + return (char *) base; }