summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/path.cc
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2008-05-21 09:02:42 +0000
committerCorinna Vinschen <corinna@vinschen.de>2008-05-21 09:02:42 +0000
commit0d3f3658816a3759e608d6b944bb22ad194f389c (patch)
tree376fcd68501dae5d7633427c5600cb64962a4fc4 /winsup/cygwin/path.cc
parent2762ac6c1944e320cb880f40866d47475f9892ba (diff)
downloadcygnal-0d3f3658816a3759e608d6b944bb22ad194f389c.tar.gz
cygnal-0d3f3658816a3759e608d6b944bb22ad194f389c.tar.bz2
cygnal-0d3f3658816a3759e608d6b944bb22ad194f389c.zip
* fhandler.h (dirent_states): Add dirent_nfs_d_ino state and add it to
dirent_info_mask. * fhandler_disk_file.cc (fhandler_disk_file::opendir): Set dirent_nfs_d_ino flag for NFS shares. Explain why. (fhandler_disk_file::readdir): Use FileNamesInformation instead of FileBothDirectoryInformation info class on NFS clients not supporting the FileIdBothDirectoryInformation info class. Use local pointers to accommodate different offsets. * path.cc (symlink_info::check): Don't test directories for symlinks on NFS shares. Enhance comment.
Diffstat (limited to 'winsup/cygwin/path.cc')
-rw-r--r--winsup/cygwin/path.cc5
1 files changed, 3 insertions, 2 deletions
diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc
index d01b7f8a2..92994d1b1 100644
--- a/winsup/cygwin/path.cc
+++ b/winsup/cygwin/path.cc
@@ -2514,8 +2514,9 @@ symlink_info::check (char *path, const suffix_info *suffixes, unsigned opt,
}
/* If the file could be opened with FILE_READ_EA, and if it's on a
- NFS share, check if it's a symlink. */
- else if (!no_ea && fs.is_nfs ())
+ NFS share, check if it's a symlink. Only files can be symlinks
+ (which can be symlinks to directories). */
+ else if (!no_ea && !(fileattr & FILE_ATTRIBUTE_DIRECTORY) && fs.is_nfs ())
{
res = check_nfs_symlink (h);
if (!res)