OSDN Git Service

* path.cc (symlink_info::check): Don't use eabuf when trying to open
authorcorinna <corinna>
Fri, 15 Aug 2008 10:19:11 +0000 (10:19 +0000)
committercorinna <corinna>
Fri, 15 Aug 2008 10:19:11 +0000 (10:19 +0000)
file a second time.  Call NtOpenFile instead of NtCreateFile in this
case.

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

index 769bae8..46d7b6d 100644 (file)
@@ -1,3 +1,9 @@
+2008-08-15  Corinna Vinschen  <corinna@vinschen.de>
+
+       * path.cc (symlink_info::check): Don't use eabuf when trying to open
+       file a second time.  Call NtOpenFile instead of NtCreateFile in this
+       case.
+
 2008-08-14  Corinna Vinschen  <corinna@vinschen.de>
 
        * fhandler_disk_file.cc (fhandler_disk_file::link): Fix linking
index 4a91ff8..454efad 100644 (file)
@@ -2356,8 +2356,8 @@ symlink_info::check (char *path, const suffix_info *suffixes, unsigned opt,
         to special case NFS too much. */
       status = NtCreateFile (&h,
                             READ_CONTROL | FILE_READ_ATTRIBUTES | FILE_READ_EA,
-                            &attr, &io, NULL, FILE_ATTRIBUTE_NORMAL,
-                            FILE_SHARE_VALID_FLAGS, FILE_OPEN,
+                            &attr, &io, NULL, 0, FILE_SHARE_VALID_FLAGS,
+                            FILE_OPEN,
                             FILE_OPEN_REPARSE_POINT
                             | FILE_OPEN_FOR_BACKUP_INTENT,
                             eabuf, easize);
@@ -2372,12 +2372,10 @@ symlink_info::check (char *path, const suffix_info *suffixes, unsigned opt,
              eabuf = NULL;
              easize = 0;
            }
-         status = NtCreateFile (&h, READ_CONTROL | FILE_READ_ATTRIBUTES,
-                                &attr, &io, NULL, FILE_ATTRIBUTE_NORMAL,
-                                FILE_SHARE_VALID_FLAGS, FILE_OPEN,
-                                FILE_OPEN_REPARSE_POINT
-                                | FILE_OPEN_FOR_BACKUP_INTENT,
-                                eabuf, easize);
+         status = NtOpenFile (&h, READ_CONTROL | FILE_READ_ATTRIBUTES,
+                              &attr, &io, FILE_SHARE_VALID_FLAGS, 
+                              FILE_OPEN_REPARSE_POINT
+                              | FILE_OPEN_FOR_BACKUP_INTENT);
        }
       if (NT_SUCCESS (status)
          && NT_SUCCESS (status