summaryrefslogtreecommitdiff
path: root/lib/dirname.c
diff options
context:
space:
mode:
authorJim Meyering <jim@meyering.net>2000-07-29 08:10:46 +0000
committerJim Meyering <jim@meyering.net>2000-07-29 08:10:46 +0000
commit03400241c02dd009c48992ce9b527176d02bb472 (patch)
tree2938f484d16598d34f20aa87168e346d3ced889a /lib/dirname.c
parent3f15d65b670c05ea4508604e699bf0e32e16dc02 (diff)
downloadgnulib-03400241c02dd009c48992ce9b527176d02bb472.tar.gz
(dir_name): Assert that there are no trailing slashes.
Diffstat (limited to 'lib/dirname.c')
-rw-r--r--lib/dirname.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/lib/dirname.c b/lib/dirname.c
index acaeba16cd..e6609f1ee8 100644
--- a/lib/dirname.c
+++ b/lib/dirname.c
@@ -32,6 +32,7 @@ char *malloc ();
# define strrchr rindex
# endif
#endif
+#include <assert.h>
#ifndef ISSLASH
# define ISSLASH(C) ((C) == '/')
@@ -52,6 +53,13 @@ dir_name (const char *path)
int length; /* Length of result, not including NUL. */
slash = strrchr (path, '/');
+
+ /* Make sure there are no trailing slashes. */
+ assert (slash == NULL /* There are no slashes in PATH. */
+ || slash[1] != 0 /* There is a non-NUL byte after the last slash. */
+ || path == slash /* PATH is just `/'. */
+ );
+
if (slash == 0)
{
/* File is in the current directory. */