* fhandler_disk_file.cc: Set 4th parameter of NtQueryDirectoryFile to
NULL throughout. (fhandler_disk_file::facl): Fix a condition so that fstat_by_handle is actually used. (fhandler_disk_file::readdir): Don't print debug message on a simple STATUS_NO_MORE_FILES status code.
This commit is contained in:
parent
dc7dfa3a82
commit
a4fc1198a4
|
@ -1,3 +1,12 @@
|
||||||
|
2008-12-18 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
|
* fhandler_disk_file.cc: Set 4th parameter of NtQueryDirectoryFile to
|
||||||
|
NULL throughout.
|
||||||
|
(fhandler_disk_file::facl): Fix a condition so that fstat_by_handle
|
||||||
|
is actually used.
|
||||||
|
(fhandler_disk_file::readdir): Don't print debug message on a simple
|
||||||
|
STATUS_NO_MORE_FILES status code.
|
||||||
|
|
||||||
2008-12-18 Corinna Vinschen <corinna@vinschen.de>
|
2008-12-18 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
* path.cc (symlin_info::check): Set 4th parameter of
|
* path.cc (symlin_info::check): Set 4th parameter of
|
||||||
|
|
|
@ -199,7 +199,7 @@ path_conv::ndisk_links (DWORD nNumberOfLinks)
|
||||||
PFILE_DIRECTORY_INFORMATION fdibuf = (PFILE_DIRECTORY_INFORMATION)
|
PFILE_DIRECTORY_INFORMATION fdibuf = (PFILE_DIRECTORY_INFORMATION)
|
||||||
alloca (65536);
|
alloca (65536);
|
||||||
__DIR_mounts *dir = new __DIR_mounts (normalized_path);
|
__DIR_mounts *dir = new __DIR_mounts (normalized_path);
|
||||||
while (NT_SUCCESS (NtQueryDirectoryFile (fh, NULL, NULL, 0, &io, fdibuf,
|
while (NT_SUCCESS (NtQueryDirectoryFile (fh, NULL, NULL, NULL, &io, fdibuf,
|
||||||
65536, FileDirectoryInformation,
|
65536, FileDirectoryInformation,
|
||||||
FALSE, NULL, first)))
|
FALSE, NULL, first)))
|
||||||
{
|
{
|
||||||
|
@ -391,13 +391,14 @@ fhandler_base::fstat_by_name (struct __stat64 *buf)
|
||||||
goto too_bad;
|
goto too_bad;
|
||||||
}
|
}
|
||||||
if (wincap.has_fileid_dirinfo () && !pc.has_buggy_fileid_dirinfo ()
|
if (wincap.has_fileid_dirinfo () && !pc.has_buggy_fileid_dirinfo ()
|
||||||
&& NT_SUCCESS (status = NtQueryDirectoryFile (dir, NULL, NULL, 0, &io,
|
&& NT_SUCCESS (status = NtQueryDirectoryFile (dir, NULL, NULL, NULL, &io,
|
||||||
&fdi_buf.fdi, sizeof fdi_buf,
|
&fdi_buf.fdi, sizeof fdi_buf,
|
||||||
FileIdBothDirectoryInformation,
|
FileIdBothDirectoryInformation,
|
||||||
TRUE, &basename, TRUE)))
|
TRUE, &basename, TRUE)))
|
||||||
FileId = fdi_buf.fdi.FileId;
|
FileId = fdi_buf.fdi.FileId;
|
||||||
else if (NT_SUCCESS (status = NtQueryDirectoryFile (dir, NULL, NULL, 0, &io,
|
else if (NT_SUCCESS (status = NtQueryDirectoryFile (dir, NULL, NULL, NULL,
|
||||||
&fdi_buf.fdi, sizeof fdi_buf,
|
&io, &fdi_buf.fdi,
|
||||||
|
sizeof fdi_buf,
|
||||||
FileDirectoryInformation,
|
FileDirectoryInformation,
|
||||||
TRUE, &basename, TRUE)))
|
TRUE, &basename, TRUE)))
|
||||||
FileId.QuadPart = 0; /* get_ino is called in fstat_helper. */
|
FileId.QuadPart = 0; /* get_ino is called in fstat_helper. */
|
||||||
|
@ -920,7 +921,7 @@ cant_access_acl:
|
||||||
query_open (query_read_attributes);
|
query_open (query_read_attributes);
|
||||||
oret = open (O_BINARY, 0);
|
oret = open (O_BINARY, 0);
|
||||||
}
|
}
|
||||||
if ((!oret && !fstat_by_handle (&st))
|
if ((oret && !fstat_by_handle (&st))
|
||||||
|| !fstat_by_name (&st))
|
|| !fstat_by_name (&st))
|
||||||
{
|
{
|
||||||
aclbufp[0].a_type = USER_OBJ;
|
aclbufp[0].a_type = USER_OBJ;
|
||||||
|
@ -1777,7 +1778,7 @@ fhandler_disk_file::readdir (DIR *dir, dirent *de)
|
||||||
{
|
{
|
||||||
if ((dir->__flags & dirent_get_d_ino))
|
if ((dir->__flags & dirent_get_d_ino))
|
||||||
{
|
{
|
||||||
status = NtQueryDirectoryFile (get_handle (), NULL, NULL, 0, &io,
|
status = NtQueryDirectoryFile (get_handle (), NULL, NULL, NULL, &io,
|
||||||
d_cache (dir), DIR_BUF_SIZE,
|
d_cache (dir), DIR_BUF_SIZE,
|
||||||
FileIdBothDirectoryInformation,
|
FileIdBothDirectoryInformation,
|
||||||
FALSE, NULL, dir->__d_position == 0);
|
FALSE, NULL, dir->__d_position == 0);
|
||||||
|
@ -1821,7 +1822,8 @@ fhandler_disk_file::readdir (DIR *dir, dirent *de)
|
||||||
if (d_cachepos (dir) == 0)
|
if (d_cachepos (dir) == 0)
|
||||||
{
|
{
|
||||||
status = NtQueryDirectoryFile (get_handle (), NULL, NULL,
|
status = NtQueryDirectoryFile (get_handle (), NULL, NULL,
|
||||||
0, &io, d_cache (dir), DIR_BUF_SIZE,
|
NULL, &io, d_cache (dir),
|
||||||
|
DIR_BUF_SIZE,
|
||||||
FileDirectoryInformation,
|
FileDirectoryInformation,
|
||||||
FALSE, NULL, cnt == 0);
|
FALSE, NULL, cnt == 0);
|
||||||
if (!NT_SUCCESS (status))
|
if (!NT_SUCCESS (status))
|
||||||
|
@ -1838,7 +1840,7 @@ fhandler_disk_file::readdir (DIR *dir, dirent *de)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!(dir->__flags & dirent_get_d_ino))
|
if (!(dir->__flags & dirent_get_d_ino))
|
||||||
status = NtQueryDirectoryFile (get_handle (), NULL, NULL, 0, &io,
|
status = NtQueryDirectoryFile (get_handle (), NULL, NULL, NULL, &io,
|
||||||
d_cache (dir), DIR_BUF_SIZE,
|
d_cache (dir), DIR_BUF_SIZE,
|
||||||
(dir->__flags & dirent_nfs_d_ino)
|
(dir->__flags & dirent_nfs_d_ino)
|
||||||
? FileNamesInformation
|
? FileNamesInformation
|
||||||
|
@ -1848,7 +1850,9 @@ fhandler_disk_file::readdir (DIR *dir, dirent *de)
|
||||||
|
|
||||||
go_ahead:
|
go_ahead:
|
||||||
|
|
||||||
if (!NT_SUCCESS (status))
|
if (status == STATUS_NO_MORE_FILES)
|
||||||
|
/*nothing*/;
|
||||||
|
else if (!NT_SUCCESS (status))
|
||||||
debug_printf ("NtQueryDirectoryFile failed, status %p, win32 error %lu",
|
debug_printf ("NtQueryDirectoryFile failed, status %p, win32 error %lu",
|
||||||
status, RtlNtStatusToDosError (status));
|
status, RtlNtStatusToDosError (status));
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in New Issue