summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/spawn.cc
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2008-07-31 14:41:19 +0000
committerCorinna Vinschen <corinna@vinschen.de>2008-07-31 14:41:19 +0000
commit9fe98985b32d62cff4bc910323f3a8f22751e89d (patch)
tree5f1938bce6c79e46d8416a7577d1de06bd8b3fba /winsup/cygwin/spawn.cc
parent9ad2ea2fd901d31a7888c81d0270c5dd69abd2ce (diff)
downloadcygnal-9fe98985b32d62cff4bc910323f3a8f22751e89d.tar.gz
cygnal-9fe98985b32d62cff4bc910323f3a8f22751e89d.tar.bz2
cygnal-9fe98985b32d62cff4bc910323f3a8f22751e89d.zip
* spawn.cc (spawn_guts): Check constructed short pathname for being
a DOS device name and fall back to long path name, if so.
Diffstat (limited to 'winsup/cygwin/spawn.cc')
-rw-r--r--winsup/cygwin/spawn.cc5
1 files changed, 4 insertions, 1 deletions
diff --git a/winsup/cygwin/spawn.cc b/winsup/cygwin/spawn.cc
index 485d2c44b..f98ab6be9 100644
--- a/winsup/cygwin/spawn.cc
+++ b/winsup/cygwin/spawn.cc
@@ -483,7 +483,10 @@ spawn_guts (const char *prog_arg, const char *const *argv,
PWCHAR r = runpath + 4;
if (r[1] != L':') /* UNC path */
*(r += 2) = L'\\';
- runpath = r;
+ if (!RtlIsDosDeviceName_U (r))
+ runpath = r;
+ else if (*r == L'\\')
+ *r = L'C';
}
}