source: trunk/src/binutils/libiberty/basename.c@ 706

Last change on this file since 706 was 610, checked in by bird, 22 years ago

This commit was generated by cvs2svn to compensate for changes in r609,
which included commits to RCS files with non-trunk default branches.

  • Property cvs2svn:cvs-rev set to 1.1.1.2
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 1.2 KB
Line 
1/* Return the basename of a pathname.
2 This file is in the public domain. */
3
4/*
5
6@deftypefn Supplemental char* basename (const char *@var{name})
7
8Returns a pointer to the last component of pathname @var{name}.
9Behavior is undefined if the pathname ends in a directory separator.
10
11@end deftypefn
12
13*/
14
15#include "ansidecl.h"
16#include "libiberty.h"
17#include "safe-ctype.h"
18
19#ifndef DIR_SEPARATOR
20#define DIR_SEPARATOR '/'
21#endif
22
23#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
24 defined (__OS2__)
25#define HAVE_DOS_BASED_FILE_SYSTEM
26#ifndef DIR_SEPARATOR_2
27#define DIR_SEPARATOR_2 '\\'
28#endif
29#endif
30
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 */
38
39char *
40basename (name)
41 const char *name;
42{
43 const char *base;
44
45#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
46 /* Skip over the disk name in MSDOS pathnames. */
47 if (ISALPHA (name[0]) && name[1] == ':')
48 name += 2;
49#endif
50
51 for (base = name; *name; name++)
52 {
53 if (IS_DIR_SEPARATOR (*name))
54 {
55 base = name + 1;
56 }
57 }
58 return (char *) base;
59}
60
Note: See TracBrowser for help on using the repository browser.