From c233a70323993168c93120b33d46feee306de155 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 22 Dec 2007 10:55:30 +0000 Subject: [PATCH] vpath.c (construct_vpath_list) [HAVE_DOS_PATHS]: Support VPATH values that use `:' in drive letters, when PATH_SEPARATOR_CHAR is also `:'. --- ChangeLog | 6 ++++++ vpath.c | 14 ++++++++++++-- 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 + + * 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 * 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 -- 2.7.4