Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2008-07-30 18:41:59 +0400
committerCorinna Vinschen <corinna@vinschen.de>2008-07-30 18:41:59 +0400
commitd79a78e5c8d88fc7f38c396a3d25c376766c769a (patch)
treedca36c50fa239ee670cf926f15149f34b9f227d7 /winsup/cygwin/path.h
parentb54881352d5c4d1c179726e52d00cc50f35a2080 (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.h25
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)