diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2015-11-04 14:47:25 +0100 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2015-11-04 16:20:17 +0100 |
commit | 8474c4535bd2e2064b3d5738559be4248b7900af (patch) | |
tree | d78874fd432e14a87a2636f03b4c0a9a944307e8 | |
parent | b448736234ce273d80f16fe56b541a0e85b35aa1 (diff) | |
download | newlib-8474c4535bd2e2064b3d5738559be4248b7900af.zip newlib-8474c4535bd2e2064b3d5738559be4248b7900af.tar.gz newlib-8474c4535bd2e2064b3d5738559be4248b7900af.tar.bz2 |
Accommodate trailing NUL in PrlSF filesystem name.
* globals.cc (ro_u_prlfs): Add trailing NUL. Explain why.
* mount.cc (fs_info::update): Add a comment to explain PrlSF.
* path.h (path_conv::fs_is_prlfs): Add for symmetry.
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
-rw-r--r-- | winsup/cygwin/ChangeLog | 6 | ||||
-rw-r--r-- | winsup/cygwin/globals.cc | 4 | ||||
-rw-r--r-- | winsup/cygwin/mount.cc | 2 | ||||
-rw-r--r-- | winsup/cygwin/path.h | 1 |
4 files changed, 12 insertions, 1 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index b6e7255..2946387 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,9 @@ +2015-11-04 Corinna Vinschen <corinna@vinschen.de> + + * globals.cc (ro_u_prlfs): Add trailing NUL. Explain why. + * mount.cc (fs_info::update): Add a comment to explain PrlSF. + * path.h (path_conv::fs_is_prlfs): Add for symmetry. + 2015-11-03 Corinna Vinschen <corinna@vinschen.de> * sigproc.cc (pending_signals::clear): Fix previous fix resulting in diff --git a/winsup/cygwin/globals.cc b/winsup/cygwin/globals.cc index 7a17376..383b8f1 100644 --- a/winsup/cygwin/globals.cc +++ b/winsup/cygwin/globals.cc @@ -138,7 +138,9 @@ extern "C" { extern UNICODE_STRING _RDATA ro_u_mvfs = _ROU (L"MVFS"); extern UNICODE_STRING _RDATA ro_u_nfs = _ROU (L"NFS"); extern UNICODE_STRING _RDATA ro_u_ntfs = _ROU (L"NTFS"); - extern UNICODE_STRING _RDATA ro_u_prlfs = _ROU (L"PrlSF"); /* No typo! */ + /* No typo! It's actually "SF", not "FS", and the trailing NUL is counted + in the reply from the filesystem. */ + extern UNICODE_STRING _RDATA ro_u_prlfs = _ROU (L"PrlSF\0"); extern UNICODE_STRING _RDATA ro_u_refs = _ROU (L"ReFS"); extern UNICODE_STRING _RDATA ro_u_sunwnfs = _ROU (L"SUNWNFS"); extern UNICODE_STRING _RDATA ro_u_udf = _ROU (L"UDF"); diff --git a/winsup/cygwin/mount.cc b/winsup/cygwin/mount.cc index 01f1759..66e8571 100644 --- a/winsup/cygwin/mount.cc +++ b/winsup/cygwin/mount.cc @@ -371,6 +371,8 @@ fs_info::update (PUNICODE_STRING upath, HANDLE in_vol) /* AFSRDRFsd == Andrew File System. Doesn't support DOS attributes. Only native symlinks are supported. */ && !is_afs (RtlEqualUnicodeString (&fsname, &ro_u_afs, FALSE)) + /* PrlSF == Parallels Desktop File System. Has a bug in + FileNetworkOpenInformation, see below. */ && !is_prlfs (RtlEqualUnicodeString (&fsname, &ro_u_prlfs, FALSE))) { /* Known remote file system with buggy open calls. Further diff --git a/winsup/cygwin/path.h b/winsup/cygwin/path.h index f8cb37a..ce41645 100644 --- a/winsup/cygwin/path.h +++ b/winsup/cygwin/path.h @@ -376,6 +376,7 @@ class path_conv bool fs_is_nwfs () const {return fs.is_nwfs ();} bool fs_is_ncfsd () const {return fs.is_ncfsd ();} bool fs_is_afs () const {return fs.is_afs ();} + bool fs_is_prlfs () const {return fs.is_prlfs ();} fs_info_type fs_type () const {return fs.what_fs ();} ULONG fs_serial_number () const {return fs.serial_number ();} inline const char *set_path (const char *p) |