home *** CD-ROM | disk | FTP | other *** search
- Mon Aug 30 18:09:42 1999 Mumit Khan <khan@xraylith.wisc.edu>
-
- * basename.c (DIR_SEPARATOR): New macro.
- (DIR_SEPARATOR_2): Likewise.
- (HAVE_DOS_BASED_FILESYSTEM): Likewise.
- (IS_DIR_SEPARATOR): Likewise.
- (main): Handle MSDOS style pathname.
-
- Index: gcc-2.95.2/libiberty/basename.c
- ===================================================================
- RCS file: /homes/khan/src/CVSROOT/gcc-2.95.2/libiberty/basename.c,v
- retrieving revision 1.1.1.1
- diff -u -3 -p -r1.1.1.1 basename.c
- --- gcc-2.95.2/libiberty/basename.c 1999/11/05 01:10:13 1.1.1.1
- +++ gcc-2.95.2/libiberty/basename.c 1999/11/05 09:39:14
- @@ -14,24 +14,53 @@ DESCRIPTION
- last component of the pathname ("ls.c" in this case).
-
- BUGS
- - Presumes a UNIX style path with UNIX style separators.
- + Presumes a UNIX or DOS/Windows style path with UNIX or DOS/Windows
- + style separators.
- */
-
- #include "ansidecl.h"
- #include "libiberty.h"
- +#include <ctype.h>
-
- +#ifndef DIR_SEPARATOR
- +#define DIR_SEPARATOR '/'
- +#endif
- +
- +#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
- + defined (__OS2__)
- +#define HAVE_DOS_BASED_FILE_SYSTEM
- +#ifndef DIR_SEPARATOR_2
- +#define DIR_SEPARATOR_2 '\\'
- +#endif
- +#endif
- +
- +/* Define IS_DIR_SEPARATOR. */
- +#ifndef DIR_SEPARATOR_2
- +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
- +#else /* DIR_SEPARATOR_2 */
- +# define IS_DIR_SEPARATOR(ch) \
- + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
- +#endif /* DIR_SEPARATOR_2 */
- +
- char *
- basename (name)
- const char *name;
- {
- - const char *base = name;
- + const char *base;
-
- - while (*name)
- +#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
- + /* Skip over the disk name in MSDOS pathnames. */
- + if (isalpha (name[0]) && name[1] == ':')
- + name += 2;
- +#endif
- +
- + for (base = name; *name; name++)
- {
- - if (*name++ == '/')
- + if (IS_DIR_SEPARATOR (*name))
- {
- - base = name;
- + base = name + 1;
- }
- }
- return (char *) base;
- }
- +
-