* 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:
Corinna Vinschen 2008-12-18 18:54:25 +00:00
parent dc7dfa3a82
commit a4fc1198a4
2 changed files with 22 additions and 9 deletions

View File

@ -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>
* path.cc (symlin_info::check): Set 4th parameter of

View File

@ -199,7 +199,7 @@ path_conv::ndisk_links (DWORD nNumberOfLinks)
PFILE_DIRECTORY_INFORMATION fdibuf = (PFILE_DIRECTORY_INFORMATION)
alloca (65536);
__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,
FALSE, NULL, first)))
{
@ -391,13 +391,14 @@ fhandler_base::fstat_by_name (struct __stat64 *buf)
goto too_bad;
}
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,
FileIdBothDirectoryInformation,
TRUE, &basename, TRUE)))
FileId = fdi_buf.fdi.FileId;
else if (NT_SUCCESS (status = NtQueryDirectoryFile (dir, NULL, NULL, 0, &io,
&fdi_buf.fdi, sizeof fdi_buf,
else if (NT_SUCCESS (status = NtQueryDirectoryFile (dir, NULL, NULL, NULL,
&io, &fdi_buf.fdi,
sizeof fdi_buf,
FileDirectoryInformation,
TRUE, &basename, TRUE)))
FileId.QuadPart = 0; /* get_ino is called in fstat_helper. */
@ -920,7 +921,7 @@ cant_access_acl:
query_open (query_read_attributes);
oret = open (O_BINARY, 0);
}
if ((!oret && !fstat_by_handle (&st))
if ((oret && !fstat_by_handle (&st))
|| !fstat_by_name (&st))
{
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))
{
status = NtQueryDirectoryFile (get_handle (), NULL, NULL, 0, &io,
status = NtQueryDirectoryFile (get_handle (), NULL, NULL, NULL, &io,
d_cache (dir), DIR_BUF_SIZE,
FileIdBothDirectoryInformation,
FALSE, NULL, dir->__d_position == 0);
@ -1821,7 +1822,8 @@ fhandler_disk_file::readdir (DIR *dir, dirent *de)
if (d_cachepos (dir) == 0)
{
status = NtQueryDirectoryFile (get_handle (), NULL, NULL,
0, &io, d_cache (dir), DIR_BUF_SIZE,
NULL, &io, d_cache (dir),
DIR_BUF_SIZE,
FileDirectoryInformation,
FALSE, NULL, cnt == 0);
if (!NT_SUCCESS (status))
@ -1838,7 +1840,7 @@ fhandler_disk_file::readdir (DIR *dir, dirent *de)
}
}
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,
(dir->__flags & dirent_nfs_d_ino)
? FileNamesInformation
@ -1848,7 +1850,9 @@ fhandler_disk_file::readdir (DIR *dir, dirent *de)
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",
status, RtlNtStatusToDosError (status));
else