.
[gnulib.git] / lib / basename.c
index 6038e52..36e0f62 100644 (file)
@@ -1,5 +1,5 @@
 /* basename.c -- return the last element in a path
-   Copyright (C) 1990, 1998, 1999 Free Software Foundation, Inc.
+   Copyright (C) 1990, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
 
    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
 # include <config.h>
 #endif
 
+#include <stdio.h>
+#include <assert.h>
+
 #ifndef FILESYSTEM_PREFIX_LEN
 # define FILESYSTEM_PREFIX_LEN(Filename) 0
 #endif
 
+#ifndef PARAMS
+# if defined PROTOTYPES || (defined __STDC__ && __STDC__)
+#  define PARAMS(Args) Args
+# else
+#  define PARAMS(Args) ()
+# endif
+#endif
+
 #ifndef ISSLASH
 # define ISSLASH(C) ((C) == '/')
 #endif
 
+char *base_name PARAMS ((char const *name));
+
 /* 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.
-   If NAME is all slashes, be sure to return `/'.
-   FIXME: what if NAME is the empty string?  */
+   If NAME is all slashes, be sure to return `/'.  */
 
 char *
 base_name (char const *name)
@@ -52,5 +64,8 @@ base_name (char const *name)
   if (*base == '\0' && ISSLASH (*name) && all_slashes)
     --base;
 
+  /* Make sure the last byte is not a slash.  */
+  assert (all_slashes || !ISSLASH (*(p - 1)));
+
   return (char *) base;
 }