summaryrefslogtreecommitdiff
path: root/lib/path-concat.c
diff options
context:
space:
mode:
authorJim Meyering <jim@meyering.net>2001-03-13 15:57:15 +0000
committerJim Meyering <jim@meyering.net>2001-03-13 15:57:15 +0000
commit35e76078e7b584044bf9629448e581d2aec69881 (patch)
treee6ad017a221203dd29ffb26d7f7aacaa095064a9 /lib/path-concat.c
parent4d44d31bd939595ebb34ac8549d1fa31df99aa36 (diff)
downloadcoreutils-35e76078e7b584044bf9629448e581d2aec69881.tar.xz
(path_concat) [FILESYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX]:
Don't insert a backslash when concatenating e.g., `C:' and `foo'. From Bruno Haible.
Diffstat (limited to 'lib/path-concat.c')
-rw-r--r--lib/path-concat.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/lib/path-concat.c b/lib/path-concat.c
index 3130e386d..e6f44d3e8 100644
--- a/lib/path-concat.c
+++ b/lib/path-concat.c
@@ -1,5 +1,5 @@
/* path-concat.c -- concatenate two arbitrary pathnames
- Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 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
@@ -59,6 +59,10 @@ char *strdup ();
# define DIRECTORY_SEPARATOR '/'
#endif
+#ifndef FILESYSTEM_PREFIX_LEN
+# define FILESYSTEM_PREFIX_LEN(Filename) 0
+#endif
+
#ifndef ISSLASH
# define ISSLASH(C) ((C) == DIRECTORY_SEPARATOR)
#endif
@@ -105,11 +109,11 @@ path_concat (const char *dir, const char *base, char **base_in_result)
p = mempcpy (p_concat, dir, dir_len);
- if (dir_len > 0)
+ if (dir_len > FILESYSTEM_PREFIX_LEN (dir))
{
- if (ISSLASH (*(p - 1)) && ISSLASH(*base))
+ if (ISSLASH (*(p - 1)) && ISSLASH (*base))
--p;
- else if (!ISSLASH (*(p - 1)) && !ISSLASH(*base))
+ else if (!ISSLASH (*(p - 1)) && !ISSLASH (*base))
*p++ = DIRECTORY_SEPARATOR;
}