* 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:
parent
9d1c0a6053
commit
30f1c8a675
|
@ -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>
|
||||
|
||||
* dtable.cc (handle_to_fn): Accomodate new argument order in call to
|
||||
|
|
|
@ -1450,10 +1450,20 @@ fhandler_disk_file::opendir ()
|
|||
__seterrno ();
|
||||
goto free_dirent;
|
||||
}
|
||||
if (wincap.has_fileid_dirinfo ())
|
||||
dir->__flags |= dirent_get_d_ino;
|
||||
/* FileIdBothDirectoryInformation is apparently unsupported on XP
|
||||
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 ())
|
||||
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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue