summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/mount.cc
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/mount.cc')
-rw-r--r--winsup/cygwin/mount.cc16
1 files changed, 15 insertions, 1 deletions
diff --git a/winsup/cygwin/mount.cc b/winsup/cygwin/mount.cc
index 0797d1bb3..a7cc07efb 100644
--- a/winsup/cygwin/mount.cc
+++ b/winsup/cygwin/mount.cc
@@ -262,7 +262,6 @@ fs_info::update (PUNICODE_STRING upath, HANDLE in_vol)
}
is_ntfs (RtlEqualUnicodeString (&fsname, &testname, FALSE)
&& !is_samba () && !is_netapp ());
- is_cdrom (ffdi.DeviceType == FILE_DEVICE_CD_ROM);
has_acls (flags () & FS_PERSISTENT_ACLS);
hasgood_inode (((flags () & FILE_PERSISTENT_ACLS) && !is_netapp ())
@@ -274,6 +273,21 @@ fs_info::update (PUNICODE_STRING upath, HANDLE in_vol)
caseinsensitive ((!(flags () & FILE_CASE_SENSITIVE_SEARCH) || is_samba ())
&& !is_nfs ());
+ is_cdrom (ffdi.DeviceType == FILE_DEVICE_CD_ROM);
+ if (is_cdrom ())
+ {
+ RtlInitUnicodeString (&testname, L"UDF");
+ is_udf (RtlEqualUnicodeString (&fsname, &testname, FALSE));
+ /* 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. */
+ if (is_udf () && wincap.has_broken_udf ())
+ caseinsensitive (true);
+ }
+
if (!in_vol)
NtClose (vol);
return true;