summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2010-07-09 11:40:19 +0000
committerEli Zaretskii <eliz@gnu.org>2010-07-09 11:40:19 +0000
commit587588c1fa061de3ca46163a8f01cb1b2cb63a37 (patch)
tree3027752f46f15b7ac38fcd05528adf999bacc0a1
parent94bda718c4b7131b48eda8c6e7c0afe79e2b7d89 (diff)
downloadgunmake-587588c1fa061de3ca46163a8f01cb1b2cb63a37.tar.gz
Fix Savannah bug #30312.
function.c (abspath): Support absolute file names in UNC format.
-rw-r--r--ChangeLog3
-rw-r--r--function.c7
2 files changed, 10 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 97cf81d..79ee216 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
2010-07-09 Eli Zaretskii <eliz@gnu.org>
+ * function.c (abspath): Support absolute file names in UNC format.
+ (Savannah bug #30312.)
+
* job.c (pid2str) [WINDOWS32]: Don't use %Id with GCC < 4.x.
(exec_command) [WINDOWS32]: Use pid2str instead of non-portable
%Id.
diff --git a/function.c b/function.c
index 45ebc9e..870e4a0 100644
--- a/function.c
+++ b/function.c
@@ -1912,6 +1912,13 @@ abspath (const char *name, char *apath)
#ifdef HAVE_DOS_PATHS
if (IS_PATHSEP(name[0]))
{
+ if (IS_PATHSEP(name[1]))
+ {
+ /* A UNC. Don't prepend a drive letter. */
+ apath[0] = name[0];
+ apath[1] = name[1];
+ root_len = 2;
+ }
/* We have /foo, an absolute file name except for the drive
letter. Assume the missing drive letter is the current
drive, which we can get if we remove from starting_directory