From ca55ba371593919fab355caccc492f54e69a560c Mon Sep 17 00:00:00 2001 From: Jim Meyering Date: Tue, 27 May 1997 09:41:25 +0000 Subject: Update from FSF via patch-2.2.93. --- lib/basename.c | 48 +++++++++++++++++++++--------------------------- 1 file changed, 21 insertions(+), 27 deletions(-) (limited to 'lib/basename.c') diff --git a/lib/basename.c b/lib/basename.c index f1a7266ad..8d18a8fab 100644 --- a/lib/basename.c +++ b/lib/basename.c @@ -1,38 +1,32 @@ -/* basename.c -- return the last element in a path - Copyright (C) 1990 Free Software Foundation, Inc. +/* basename.c -- return the last element in a path */ - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. +#if HAVE_CONFIG_H +# include +#endif - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. +#include - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#ifndef FILESYSTEM_PREFIX_LEN +#define FILESYSTEM_PREFIX_LEN(f) 0 +#endif -#ifdef HAVE_CONFIG_H -# include +#ifndef ISSLASH +#define ISSLASH(c) ((c) == '/') #endif -/* Return NAME with any leading path stripped off. - Don't use strrchr/rindex. */ +/* In general, we can't use the builtin `basename' function if available, + since it has different meanings in different environments. + In some environments the builtin `basename' modifies its argument. */ char * -basename (name) - const char *name; +base_name (name) + char const *name; { - const char *base = name; - - while (*name) - { - if (*name == '/') - base = name + 1; - ++name; - } + char const *base = name += FILESYSTEM_PREFIX_LEN (name); + + for (; *name; name++) + if (ISSLASH (*name)) + base = name + 1; + return (char *) base; } -- cgit v1.2.3-54-g00ecf