cygwin: readdir: Activate check for remote reparse points
Fix and move comment accordingly. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
parent
7a4e299a18
commit
185cd97d24
|
@ -189,6 +189,10 @@ readdir_check_reparse_point (POBJECT_ATTRIBUTES attr, bool remote)
|
||||||
&io, FSCTL_GET_REPARSE_POINT, NULL, 0,
|
&io, FSCTL_GET_REPARSE_POINT, NULL, 0,
|
||||||
(LPVOID) rp, MAXIMUM_REPARSE_DATA_BUFFER_SIZE)))
|
(LPVOID) rp, MAXIMUM_REPARSE_DATA_BUFFER_SIZE)))
|
||||||
{
|
{
|
||||||
|
/* If reparse point is stored on a remote volume, lstat returns
|
||||||
|
them as normal files or dirs, not as symlink. For a description,
|
||||||
|
see the comment preceeding remote check in
|
||||||
|
symlink_info::check_reparse_point. */
|
||||||
if (!remote && rp->ReparseTag == IO_REPARSE_TAG_MOUNT_POINT)
|
if (!remote && rp->ReparseTag == IO_REPARSE_TAG_MOUNT_POINT)
|
||||||
{
|
{
|
||||||
RtlInitCountedUnicodeString (&subst,
|
RtlInitCountedUnicodeString (&subst,
|
||||||
|
@ -2028,10 +2032,7 @@ fhandler_disk_file::readdir_helper (DIR *dir, dirent *de, DWORD w32_err,
|
||||||
|
|
||||||
InitializeObjectAttributes (&oattr, fname, pc.objcaseinsensitive (),
|
InitializeObjectAttributes (&oattr, fname, pc.objcaseinsensitive (),
|
||||||
get_handle (), NULL);
|
get_handle (), NULL);
|
||||||
/* FUTURE: Ideally would know at this point if reparse point
|
if (readdir_check_reparse_point (&oattr, isremote ()))
|
||||||
is stored on a remote volume. Without this, may return DT_LNK
|
|
||||||
for remote names that end up lstat-ing as a normal directory. */
|
|
||||||
if (readdir_check_reparse_point (&oattr, false/*remote*/))
|
|
||||||
de->d_type = DT_LNK;
|
de->d_type = DT_LNK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue