diff options
Diffstat (limited to 'winsup/cygwin/mount.cc')
-rw-r--r-- | winsup/cygwin/mount.cc | 16 |
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; |