gcc/libiberty/basename.c
Gabriel Dos Reis 9486db4fb6 demangle.h: Remove uses of PARAMS.
include/
2005-03-26  Gabriel Dos Reis  <gdr@integrable-solutions.net>

        * demangle.h: Remove uses of PARAMS.

        * libiberty.h (ANSI_PROTOTYPES): Remove guard since
        ANSI_PROTOTYPES is always assumed.
        Remove uses of PARAMS throughout.

libiberty/
2005-03-26  Gabriel Dos Reis  <gdr@integrable-solutions.net>

        Convert libiberty to use ISO C prototype style 2/n.
        * cp-demangle.h: Remove uses of PARAMS.
        * cp-demangle.c: Likewise.
        (d_dump, cplus_demangle_fill_name,
        cplus_demangle_fill_extended_operator,
        cplus_demangle_fill_ctor,
        cplus_demangle_fill_dtor, d_make_empty, d_make_comp,
        d_make_name,
        d_make_builtin_type, d_make_operator,
        d_make_extended_operator,
        d_make_ctor, d_make_dtor, d_make_template_param, d_make_sub,
        cplus_demangle_mangled_name, has_return_type,
        is_ctor_dtor_or_conversion, d_encoding, d_name, d_nested_name,
        d_prefix, d_unqualified_name, d_source_name, d_number,
        d_identifier, d_operator_name, d_special_name, d_call_offset,
        d_ctor_dtor_name, cplus_demangle_type, d_cv_qualifiers,
        d_function_type, d_bare_function_type, d_class_enum_type,
        d_array_type, d_pointer_to_member_type, d_template_param,
        d_template_args, d_template_arg, d_expression, d_expr_primary,
        d_local_name, d_discriminator, d_add_substitution,
        d_substitution, d_print_resize, d_print_append_char,
        d_print_append_buffer, d_print_error, cplus_demangle_print,
        d_print_comp, d_print_java_identifier, d_print_mod_list,
        d_print_mod, d_print_function_type, d_print_array_type,
        d_print_expr_op, d_print_cast, cplus_demangle_init_info,
        d_demangle, __cxa_demangle, cplus_demangle_v3,
        java_demangle_v3,
        is_ctor_or_dtor, is_gnu_v3_mangled_ctor,
        is_gnu_v3_mangled_dtor,
        print_usage, main):

2005-03-26  Gabriel Dos Reis  <gdr@integrable-solutions.net>

        Convert libiberty to ISO C prototype style 1/n.
        * _doprnt.c: Remove conditional #include <varargs.h> on
        ANSI_PROTOTYPES as the latter is always assumed.
        (_doprnt, checkit, main): Use ISO C prototype.
        * alloca.c (find_stack_direction, C_alloca): Use ISO C
        prototype.
        * argv.c: Remove conditional #includes on ANSI_PROTOTYPES.
        (dupargv, freeargv, buildargv, main): Use ISO C prototype.
        * atexit.c (atexit): Likewise
        * asprintf.c: Remove conditional include on ANSI_PROTOTYPES.
        (asprintf): Use ISO C prototype.
        * basename.c (basename): Likewise
        * bcmp.c (bcmp): Likewise.
        * bcopy.c (bcopy): Likewise.
        * bzero.c (bzero): Likewise.
        * bsearch.c (bsearch): Likewise.  Improve const-correctness.
        * choose-temp.c (choose_temp_base): Likewise.
        * calloc.c: Remove conditional #include on ANSI_PROTOTYPES.
        (calloc): Use ISO C prototype.
        * clock.c (clock): Likewise.
        * concat.c: Remove conditional #include on ANSI_PROTOTYPES.
        (vconcat_length, vconcat_copy, concat_length, concat_copy,
        concat_copy2, concat, reconcat, main): Use ISO C prototype.
        * copysign.c (copysign): Likewise.

From-SVN: r97085
2005-03-26 19:24:33 +00:00

60 lines
1.2 KiB
C

/* Return the basename of a pathname.
This file is in the public domain. */
/*
@deftypefn Supplemental char* basename (const char *@var{name})
Returns a pointer to the last component of pathname @var{name}.
Behavior is undefined if the pathname ends in a directory separator.
@end deftypefn
*/
#include "ansidecl.h"
#include "libiberty.h"
#include "safe-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 (const char *name)
{
const char *base;
#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 (IS_DIR_SEPARATOR (*name))
{
base = name + 1;
}
}
return (char *) base;
}