1
/* Return the basename of a pathname.
2
This file is in the public domain. */
6
@deftypefn Supplemental char* basename (const char *@var{name})
8
Returns a pointer to the last component of pathname @var{name}.
9
Behavior is undefined if the pathname ends in a directory separator.
16
#include "libiberty.h"
17
#include "safe-ctype.h"
20
#define DIR_SEPARATOR '/'
23
#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
25
#define HAVE_DOS_BASED_FILE_SYSTEM
26
#ifndef DIR_SEPARATOR_2
27
#define DIR_SEPARATOR_2 '\\'
31
/* Define IS_DIR_SEPARATOR. */
32
#ifndef DIR_SEPARATOR_2
33
# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
34
#else /* DIR_SEPARATOR_2 */
35
# define IS_DIR_SEPARATOR(ch) \
36
(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
37
#endif /* DIR_SEPARATOR_2 */
45
#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
46
/* Skip over the disk name in MSDOS pathnames. */
47
if (ISALPHA (name[0]) && name[1] == ':')
51
for (base = name; *name; name++)
53
if (IS_DIR_SEPARATOR (*name))