basename.c (DIR_SEPARATOR): New macro.
* basename.c (DIR_SEPARATOR): New macro. (DIR_SEPARATOR_2): Likewise. (HAVE_DOS_BASED_FILESYSTEM): Likewise. (IS_DIR_SEPARATOR): Likewise. (main): Handle MSDOS style pathname. From-SVN: r29937
This commit is contained in:
parent
df1f639fb1
commit
7f22ec2e64
@ -1,3 +1,11 @@
|
||||
Wed Oct 13 01:16:47 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.
|
||||
|
||||
1999-10-11 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
* cplus-dem.c (do_type): Handle pointer to member types whose
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user