[newlib-cygwin/cygwin-acl] Accommodate trailing NUL in PrlSF filesystem name.

Corinna Vinschen corinna@sourceware.org
Wed Nov 4 15:22:00 GMT 2015


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

commit 8474c4535bd2e2064b3d5738559be4248b7900af
Author: Corinna Vinschen <corinna@vinschen.de>
Date:   Wed Nov 4 14:47:25 2015 +0100

    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>

Diff:
---
 winsup/cygwin/ChangeLog  | 6 ++++++
 winsup/cygwin/globals.cc | 4 +++-
 winsup/cygwin/mount.cc   | 2 ++
 winsup/cygwin/path.h     | 1 +
 4 files changed, 12 insertions(+), 1 deletion(-)

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)



More information about the Cygwin-cvs mailing list