summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/mount.h
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/mount.h')
-rw-r--r--winsup/cygwin/mount.h36
1 files changed, 24 insertions, 12 deletions
diff --git a/winsup/cygwin/mount.h b/winsup/cygwin/mount.h
index 9836636c7..bc6de12b0 100644
--- a/winsup/cygwin/mount.h
+++ b/winsup/cygwin/mount.h
@@ -20,21 +20,30 @@ class fs_info
ULONG samba_version; /* Samba version if available */
ULONG name_len; /* MaximumComponentNameLength */
unsigned is_remote_drive : 1;
- unsigned has_buggy_open : 1;
- unsigned has_buggy_fileid_dirinfo : 1;
unsigned has_acls : 1;
unsigned hasgood_inode : 1;
unsigned caseinsensitive : 1;
- unsigned is_fat : 1;
- unsigned is_ntfs : 1;
- unsigned is_samba : 1;
- unsigned is_nfs : 1;
- unsigned is_netapp : 1;
- unsigned is_cdrom : 1;
- unsigned is_udf : 1;
- unsigned is_csc_cache : 1;
+ union
+ {
+ struct
+ {
+ unsigned is_fat : 1;
+ unsigned is_ntfs : 1;
+ unsigned is_samba : 1;
+ unsigned is_nfs : 1;
+ unsigned is_netapp : 1;
+ unsigned is_cdrom : 1;
+ unsigned is_udf : 1;
+ unsigned is_csc_cache : 1;
+ unsigned is_sunwnfs : 1;
+ unsigned is_unixfs : 1;
+ };
+ unsigned long fs_flags;
+ };
} status;
ULONG sernum;
+ unsigned long got_fs () { return status.fs_flags; }
+
public:
void clear () { memset (&status, 0 , sizeof status); sernum = 0UL; }
fs_info () { clear (); }
@@ -43,8 +52,6 @@ class fs_info
IMPLEMENT_STATUS_FLAG (ULONG, samba_version)
IMPLEMENT_STATUS_FLAG (ULONG, name_len)
IMPLEMENT_STATUS_FLAG (bool, is_remote_drive)
- IMPLEMENT_STATUS_FLAG (bool, has_buggy_open)
- IMPLEMENT_STATUS_FLAG (bool, has_buggy_fileid_dirinfo)
IMPLEMENT_STATUS_FLAG (bool, has_acls)
IMPLEMENT_STATUS_FLAG (bool, hasgood_inode)
IMPLEMENT_STATUS_FLAG (bool, caseinsensitive)
@@ -56,8 +63,13 @@ class fs_info
IMPLEMENT_STATUS_FLAG (bool, is_cdrom)
IMPLEMENT_STATUS_FLAG (bool, is_udf)
IMPLEMENT_STATUS_FLAG (bool, is_csc_cache)
+ IMPLEMENT_STATUS_FLAG (bool, is_sunwnfs)
+ IMPLEMENT_STATUS_FLAG (bool, is_unixfs)
ULONG serial_number () const { return sernum; }
+ int has_buggy_open () const {return is_sunwnfs ();}
+ int has_buggy_fileid_dirinfo () const {return is_unixfs ();}
+
bool update (PUNICODE_STRING, HANDLE) __attribute__ ((regparm (3)));
};