https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=e931b1a0eb33170980558a3768a8091d50227bc7

commit e931b1a0eb33170980558a3768a8091d50227bc7
Author: Corinna Vinschen <[email protected]>
Date:   Tue Dec 15 15:04:26 2015 +0100

    Drop has_broken_udf flag

Diff:
---
 winsup/cygwin/mount.cc  | 15 +++------------
 winsup/cygwin/path.cc   | 26 --------------------------
 winsup/cygwin/wincap.cc |  7 -------
 winsup/cygwin/wincap.h  |  2 --
 4 files changed, 3 insertions(+), 47 deletions(-)

diff --git a/winsup/cygwin/mount.cc b/winsup/cygwin/mount.cc
index 376fca8..c890b02 100644
--- a/winsup/cygwin/mount.cc
+++ b/winsup/cygwin/mount.cc
@@ -448,18 +448,9 @@ fs_info::update (PUNICODE_STRING upath, HANDLE in_vol)
      except on Samba which handles Windows clients case insensitive.
 
      NFS doesn't set the FILE_CASE_SENSITIVE_SEARCH flag but is case
-     sensitive.
-
-     UDF on NT 5.x is broken (at least) in terms of case sensitivity.
-     The UDF driver reports the FILE_CASE_SENSITIVE_SEARCH capability
-     but:
-     - Opening the root directory for query seems to work at first,
-       but the filenames in the directory listing are mutilated.
-     - When trying to open a file or directory case sensitive, the file
-       appears to be non-existant. */
-  caseinsensitive (((!(flags () & FILE_CASE_SENSITIVE_SEARCH) || is_samba ())
-                   && !is_nfs ())
-                  || (is_udf () && wincap.has_broken_udf ()));
+     sensitive. */
+  caseinsensitive ((!(flags () & FILE_CASE_SENSITIVE_SEARCH) || is_samba ())
+                  && !is_nfs ());
 
   if (!in_vol)
     NtClose (vol);
diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc
index f926ff6..77117fc 100644
--- a/winsup/cygwin/path.cc
+++ b/winsup/cygwin/path.cc
@@ -2703,32 +2703,6 @@ restart:
        }
       if (status == STATUS_OBJECT_NAME_NOT_FOUND)
        {
-         if (ci_flag == 0 && wincap.has_broken_udf ()
-             && (!fs.inited () || fs.is_udf ()))
-           {
-             /* On NT 5.x UDF is broken (at least) in terms of case
-                sensitivity.  When trying to open a file case sensitive,
-                the file appears to be non-existant.  Another bug is
-                described in fs_info::update. */
-             attr.Attributes = OBJ_CASE_INSENSITIVE;
-             status = NtOpenFile (&h, READ_CONTROL | FILE_READ_ATTRIBUTES,
-                                  &attr, &io, FILE_SHARE_VALID_FLAGS,
-                                  FILE_OPEN_REPARSE_POINT
-                                  | FILE_OPEN_FOR_BACKUP_INTENT);
-             debug_printf ("%y = NtOpenFile (broken-UDF, %S)", status, &upath);
-             attr.Attributes = 0;
-             if (NT_SUCCESS (status))
-               {
-                 if (!fs.inited ())
-                   fs.update (&upath, h);
-                 if (!fs.is_udf ())
-                   {
-                     NtClose (h);
-                     h = NULL;
-                     status = STATUS_OBJECT_NAME_NOT_FOUND;
-                   }
-               }
-           }
          /* There are filesystems out in the wild (Netapp, NWFS, and others)
             which are uncapable of generating pathnames outside the Win32
             rules.  That means, filenames on these FSes must not have a
diff --git a/winsup/cygwin/wincap.cc b/winsup/cygwin/wincap.cc
index 0aea24c..e3da924 100644
--- a/winsup/cygwin/wincap.cc
+++ b/winsup/cygwin/wincap.cc
@@ -24,7 +24,6 @@ wincaps wincap_xpsp2 __attribute__((section 
(".cygwin_dll_common"), shared)) = {
   needs_count_in_si_lpres2:false,
   has_gaa_largeaddress_bug:false,
   has_transactions:false,
-  has_broken_udf:true,
   has_broken_alloc_console:false,
   has_always_all_codepages:false,
   has_localenames:false,
@@ -53,7 +52,6 @@ wincaps wincap_2003 __attribute__((section 
(".cygwin_dll_common"), shared)) = {
   needs_count_in_si_lpres2:false,
   has_gaa_largeaddress_bug:false,
   has_transactions:false,
-  has_broken_udf:true,
   has_broken_alloc_console:false,
   has_always_all_codepages:false,
   has_localenames:false,
@@ -82,7 +80,6 @@ wincaps wincap_vista __attribute__((section 
(".cygwin_dll_common"), shared)) = {
   needs_count_in_si_lpres2:true,
   has_gaa_largeaddress_bug:true,
   has_transactions:true,
-  has_broken_udf:false,
   has_broken_alloc_console:false,
   has_always_all_codepages:true,
   has_localenames:true,
@@ -111,7 +108,6 @@ wincaps wincap_7 __attribute__((section 
(".cygwin_dll_common"), shared)) = {
   needs_count_in_si_lpres2:false,
   has_gaa_largeaddress_bug:true,
   has_transactions:true,
-  has_broken_udf:false,
   has_broken_alloc_console:true,
   has_always_all_codepages:true,
   has_localenames:true,
@@ -140,7 +136,6 @@ wincaps wincap_8 __attribute__((section 
(".cygwin_dll_common"), shared)) = {
   needs_count_in_si_lpres2:false,
   has_gaa_largeaddress_bug:false,
   has_transactions:true,
-  has_broken_udf:false,
   has_broken_alloc_console:true,
   has_always_all_codepages:true,
   has_localenames:true,
@@ -169,7 +164,6 @@ wincaps wincap_10 __attribute__((section 
(".cygwin_dll_common"), shared)) = {
   needs_count_in_si_lpres2:false,
   has_gaa_largeaddress_bug:false,
   has_transactions:true,
-  has_broken_udf:false,
   has_broken_alloc_console:true,
   has_always_all_codepages:true,
   has_localenames:true,
@@ -198,7 +192,6 @@ wincaps wincap_10_1511 __attribute__((section 
(".cygwin_dll_common"), shared)) =
   needs_count_in_si_lpres2:false,
   has_gaa_largeaddress_bug:false,
   has_transactions:true,
-  has_broken_udf:false,
   has_broken_alloc_console:true,
   has_always_all_codepages:true,
   has_localenames:true,
diff --git a/winsup/cygwin/wincap.h b/winsup/cygwin/wincap.h
index b4989b6..529e7d7 100644
--- a/winsup/cygwin/wincap.h
+++ b/winsup/cygwin/wincap.h
@@ -17,7 +17,6 @@ struct wincaps
   unsigned needs_count_in_si_lpres2                    : 1;
   unsigned has_gaa_largeaddress_bug                    : 1;
   unsigned has_transactions                            : 1;
-  unsigned has_broken_udf                              : 1;
   unsigned has_broken_alloc_console                    : 1;
   unsigned has_always_all_codepages                    : 1;
   unsigned has_localenames                             : 1;
@@ -71,7 +70,6 @@ public:
   bool IMPLEMENT (needs_count_in_si_lpres2)
   bool IMPLEMENT (has_gaa_largeaddress_bug)
   bool IMPLEMENT (has_transactions)
-  bool IMPLEMENT (has_broken_udf)
   bool IMPLEMENT (has_broken_alloc_console)
   bool IMPLEMENT (has_always_all_codepages)
   bool IMPLEMENT (has_localenames)

Reply via email to