OSDN Git Service

* path.cc (symlink_info::check_shortcut): Handle device "symlinks" specially -
authorcgf <cgf>
Sat, 7 Jul 2007 16:48:26 +0000 (16:48 +0000)
committercgf <cgf>
Sat, 7 Jul 2007 16:48:26 +0000 (16:48 +0000)
don't posixify them.

winsup/cygwin/ChangeLog
winsup/cygwin/path.cc

index e4051a5..bb94050 100644 (file)
@@ -1,5 +1,10 @@
 2007-07-07  Christopher Faylor  <me+cygwin@cgf.cx>
 
+       * path.cc (symlink_info::check_shortcut): Handle device "symlinks"
+       specially - don't posixify them.
+
+2007-07-07  Christopher Faylor  <me+cygwin@cgf.cx>
+
        * fhandler_disk_file.cc: White space.
        * fhandler_proc.cc: Ditto.
        * fhandler_virtual.cc: Ditto.
index 52c04af..e2ac1bb 100644 (file)
@@ -3064,7 +3064,11 @@ symlink_info::check_shortcut (const char *path, HANDLE h)
     goto file_not_symlink;
   cp += 2;
   cp[len] = '\0';
-  res = posixify (cp);
+  /* Check if this is a device file - these start with the sequence :\\ */
+  if (strncmp (cp, ":\\", 2) == 0)
+    res = strlen (strcpy (contents, cp)); /* Don't try to mess with device files */
+  else
+    res = posixify (cp);
   if (res) /* It's a symlink.  */
     pflags = PATH_SYMLINK | PATH_LNK;
   goto close_it;
@@ -4235,7 +4239,7 @@ cwdstuff::set (const char *win32_cwd, const char *posix_cwd, bool doit)
               privilege enabled.  The reason is apparently that
               SetCurrentDirectory calls NtOpenFile without the
               FILE_OPEN_FOR_BACKUP_INTENT flag set.
+
             - Unlinking a cwd fails because SetCurrentDirectory seems to
               open directories so that deleting the directory is disallowed.
               The below code opens with *all* sharing flags set. */