diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2008-07-30 18:41:59 +0400 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2008-07-30 18:41:59 +0400 |
commit | d79a78e5c8d88fc7f38c396a3d25c376766c769a (patch) | |
tree | dca36c50fa239ee670cf926f15149f34b9f227d7 /winsup/cygwin/path.h | |
parent | b54881352d5c4d1c179726e52d00cc50f35a2080 (diff) |
* fhandler_disk_file.cc (fhandler_base::fstat_by_name): Check for
file systems incapable of handling FileIdBothDirectoryInformation
correctly.
(fhandler_disk_file::opendir): Ditto.
* path.cc (fs_info::update): Always clear at the start.
Rearrange to make certain tests only on non-Samba, non-NFS remote
drives.
Add test for file systems known to be incapable of handling
FileIdBothDirectoryInformation correctly. Right now that's just
"UNIXFS".
* path.h (struct fs_info): Add has_buggy_fileid_dirinfo flag and
accessor methods.
(class path_conv): Add has_buggy_fileid_dirinfo method.
Diffstat (limited to 'winsup/cygwin/path.h')
-rw-r--r-- | winsup/cygwin/path.h | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/winsup/cygwin/path.h b/winsup/cygwin/path.h index a9f0cc32f..4c6f5cba1 100644 --- a/winsup/cygwin/path.h +++ b/winsup/cygwin/path.h @@ -91,17 +91,18 @@ struct fs_info ULONG flags; /* Volume flags */ ULONG samba_version; /* Samba version if available */ ULONG name_len; /* MaximumComponentNameLength */ - unsigned is_remote_drive : 1; - unsigned has_buggy_open : 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_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; } status; ULONG sernum; public: @@ -113,6 +114,7 @@ struct fs_info 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) @@ -149,6 +151,7 @@ class path_conv bool isgood_inode (__ino64_t ino) const; int has_symlinks () const {return path_flags & PATH_HAS_SYMLINKS;} int has_buggy_open () const {return fs.has_buggy_open ();} + int has_buggy_fileid_dirinfo () const {return fs.has_buggy_fileid_dirinfo ();} int binmode () const { if (path_flags & PATH_BINARY) |