summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2007-12-22 10:55:30 +0000
committerEli Zaretskii <eliz@gnu.org>2007-12-22 10:55:30 +0000
commitc233a70323993168c93120b33d46feee306de155 (patch)
treeb67b0ba82252285ddee513b024eb6e8dc473f354
parent8025f93312d53e0edc77677fe3c99e6e3b965991 (diff)
downloadgunmake-c233a70323993168c93120b33d46feee306de155.tar.gz
vpath.c (construct_vpath_list) [HAVE_DOS_PATHS]: Support VPATH values that
use `:' in drive letters, when PATH_SEPARATOR_CHAR is also `:'.
-rw-r--r--ChangeLog6
-rw-r--r--vpath.c14
2 files changed, 18 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index a99484f..cc4760e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2007-12-22 Eli Zaretskii <eliz@gnu.org>
+
+ * vpath.c (construct_vpath_list) [HAVE_DOS_PATHS]: Support VPATH
+ values that use `:' in drive letters, when PATH_SEPARATOR_CHAR is
+ also `:'.
+
2007-11-04 Paul Smith <psmith@gnu.org>
* doc/make.texi: Convert references to "commands", "command
diff --git a/vpath.c b/vpath.c
index c99949e..f5fe1ca 100644
--- a/vpath.c
+++ b/vpath.c
@@ -234,14 +234,24 @@ construct_vpath_list (char *pattern, char *dirpath)
/* Find the end of this entry. */
v = p;
- while (*p != '\0' && *p != PATH_SEPARATOR_CHAR
+ while (*p != '\0'
+#if defined(HAVE_DOS_PATHS) && (PATH_SEPARATOR_CHAR == ':')
+ /* Platforms whose PATH_SEPARATOR_CHAR is ':' and which
+ also define HAVE_DOS_PATHS would like us to recognize
+ colons after the drive letter in the likes of
+ "D:/foo/bar:C:/xyzzy". */
+ && (*p != PATH_SEPARATOR_CHAR
+ || (p == v + 1 && (p[1] == '/' || p[1] == '\\')))
+#else
+ && *p != PATH_SEPARATOR_CHAR
+#endif
&& !isblank ((unsigned char)*p))
++p;
len = p - v;
/* Make sure there's no trailing slash,
but still allow "/" as a directory. */
-#if defined(__MSDOS__) || defined(__EMX__)
+#if defined(__MSDOS__) || defined(__EMX__) || defined(HAVE_DOS_PATHS)
/* We need also to leave alone a trailing slash in "d:/". */
if (len > 3 || (len > 1 && v[1] != ':'))
#endif