* fhandler_disk_file.cc (fhandler_disk_file::opendir): Only set

the dirent_get_d_ino flag on filesystems having useful File IDs.
	Add comment explaining why.
This commit is contained in:
Corinna Vinschen 2006-02-09 14:42:48 +00:00
parent 9d1c0a6053
commit 30f1c8a675
2 changed files with 19 additions and 3 deletions

View File

@ -1,3 +1,9 @@
2006-02-09 Corinna Vinschen <corinna@vinschen.de>
* fhandler_disk_file.cc (fhandler_disk_file::opendir): Only set
the dirent_get_d_ino flag on filesystems having useful File IDs.
Add comment explaining why.
2006-02-07 Corinna Vinschen <corinna@vinschen.de> 2006-02-07 Corinna Vinschen <corinna@vinschen.de>
* dtable.cc (handle_to_fn): Accomodate new argument order in call to * dtable.cc (handle_to_fn): Accomodate new argument order in call to

View File

@ -1450,10 +1450,20 @@ fhandler_disk_file::opendir ()
__seterrno (); __seterrno ();
goto free_dirent; goto free_dirent;
} }
if (wincap.has_fileid_dirinfo ()) /* FileIdBothDirectoryInformation is apparently unsupported on XP
dir->__flags |= dirent_get_d_ino; when accessing directories on UDF. When trying to use it so,
NtQueryDirectoryFile returns with STATUS_ACCESS_VIOLATION. It's
not clear if the call isn't also unsupported on other OS/FS
combinations (say, Win2K/CDFS or so). Instead of testing in
readdir for yet another error code, let's use
FileIdBothDirectoryInformation only on filesystems supporting
persistent ACLs, FileBothDirectoryInformation otherwise. */
if (pc.hasgood_inode ()) if (pc.hasgood_inode ())
dir->__flags |= dirent_set_d_ino; {
dir->__flags |= dirent_set_d_ino;
if (wincap.has_fileid_dirinfo ())
dir->__flags |= dirent_get_d_ino;
}
} }
res = dir; res = dir;
} }