Paul Vriens : ntdll/tests: Enumerate one by one.
Alexandre Julliard
julliard at winehq.org
Mon Apr 12 09:54:10 CDT 2010
Module: wine
Branch: master
Commit: 35367700839ffe28ebe5dca9bd222cd4250ec90d
URL: http://source.winehq.org/git/wine.git/?a=commit;h=35367700839ffe28ebe5dca9bd222cd4250ec90d
Author: Paul Vriens <Paul.Vriens.Wine at gmail.com>
Date: Mon Apr 12 14:52:50 2010 +0200
ntdll/tests: Enumerate one by one.
---
dlls/ntdll/tests/file.c | 78 ++++++++++++++++++++++------------------------
1 files changed, 37 insertions(+), 41 deletions(-)
diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c
index af5747a..08f8139 100644
--- a/dlls/ntdll/tests/file.c
+++ b/dlls/ntdll/tests/file.c
@@ -254,7 +254,7 @@ static void open_file_test(void)
NTSTATUS status;
HANDLE dir, root, handle;
WCHAR path[MAX_PATH];
- BYTE data[8192];
+ BYTE data[1024];
OBJECT_ATTRIBUTES attr;
IO_STATUS_BLOCK io;
UNICODE_STRING nameW;
@@ -320,56 +320,52 @@ static void open_file_test(void)
/* try open by file id */
while (!pNtQueryDirectoryFile( dir, NULL, NULL, NULL, &io, data, sizeof(data),
- FileIdBothDirectoryInformation, FALSE, NULL, restart ))
+ FileIdBothDirectoryInformation, TRUE, NULL, restart ))
{
FILE_ID_BOTH_DIRECTORY_INFORMATION *info = (FILE_ID_BOTH_DIRECTORY_INFORMATION *)data;
restart = FALSE;
- for (;;)
+
+ if (!info->FileId.QuadPart) continue;
+
+ nameW.Buffer = (WCHAR *)&info->FileId;
+ nameW.Length = sizeof(info->FileId);
+ info->FileName[info->FileNameLength/sizeof(WCHAR)] = 0;
+ attr.RootDirectory = dir;
+ status = pNtOpenFile( &handle, GENERIC_READ, &attr, &io,
+ FILE_SHARE_READ|FILE_SHARE_WRITE,
+ FILE_OPEN_BY_FILE_ID |
+ ((info->FileAttributes & FILE_ATTRIBUTE_DIRECTORY) ? FILE_DIRECTORY_FILE : 0) );
+ ok( status == STATUS_SUCCESS || status == STATUS_ACCESS_DENIED || status == STATUS_NOT_IMPLEMENTED,
+ "open %s failed %x\n", wine_dbgstr_w(info->FileName), status );
+ if (status == STATUS_NOT_IMPLEMENTED)
+ {
+ win_skip( "FILE_OPEN_BY_FILE_ID not supported\n" );
+ break;
+ }
+ if (!status)
{
- if (!info->FileId.QuadPart) goto next;
- nameW.Buffer = (WCHAR *)&info->FileId;
- nameW.Length = sizeof(info->FileId);
- info->FileName[info->FileNameLength/sizeof(WCHAR)] = 0;
- attr.RootDirectory = dir;
+ FILE_ALL_INFORMATION all_info;
+
+ if (!pNtQueryInformationFile( handle, &io, &all_info, sizeof(all_info), FileAllInformation ))
+ {
+ /* check that it's the same file */
+ ok( info->EndOfFile.QuadPart == all_info.StandardInformation.EndOfFile.QuadPart,
+ "mismatched file size for %s\n", wine_dbgstr_w(info->FileName));
+ ok( info->LastWriteTime.QuadPart == all_info.BasicInformation.LastWriteTime.QuadPart,
+ "mismatched write time for %s\n", wine_dbgstr_w(info->FileName));
+ }
+ CloseHandle( handle );
+
+ /* try same thing from drive root */
+ attr.RootDirectory = root;
status = pNtOpenFile( &handle, GENERIC_READ, &attr, &io,
FILE_SHARE_READ|FILE_SHARE_WRITE,
FILE_OPEN_BY_FILE_ID |
((info->FileAttributes & FILE_ATTRIBUTE_DIRECTORY) ? FILE_DIRECTORY_FILE : 0) );
- ok( status == STATUS_SUCCESS || status == STATUS_ACCESS_DENIED || status == STATUS_NOT_IMPLEMENTED,
+ ok( status == STATUS_SUCCESS || status == STATUS_NOT_IMPLEMENTED,
"open %s failed %x\n", wine_dbgstr_w(info->FileName), status );
- if (status == STATUS_NOT_IMPLEMENTED)
- {
- win_skip( "FILE_OPEN_BY_FILE_ID not supported\n" );
- break;
- }
- if (!status)
- {
- FILE_ALL_INFORMATION all_info;
-
- if (!pNtQueryInformationFile( handle, &io, &all_info, sizeof(all_info), FileAllInformation ))
- {
- /* check that it's the same file */
- ok( info->EndOfFile.QuadPart == all_info.StandardInformation.EndOfFile.QuadPart,
- "mismatched file size for %s\n", wine_dbgstr_w(info->FileName));
- ok( info->LastWriteTime.QuadPart == all_info.BasicInformation.LastWriteTime.QuadPart,
- "mismatched write time for %s\n", wine_dbgstr_w(info->FileName));
- }
- CloseHandle( handle );
-
- /* try same thing from drive root */
- attr.RootDirectory = root;
- status = pNtOpenFile( &handle, GENERIC_READ, &attr, &io,
- FILE_SHARE_READ|FILE_SHARE_WRITE,
- FILE_OPEN_BY_FILE_ID |
- ((info->FileAttributes & FILE_ATTRIBUTE_DIRECTORY) ? FILE_DIRECTORY_FILE : 0) );
- ok( status == STATUS_SUCCESS || status == STATUS_NOT_IMPLEMENTED,
- "open %s failed %x\n", wine_dbgstr_w(info->FileName), status );
- if (!status) CloseHandle( handle );
- }
- next:
- if (!info->NextEntryOffset) break;
- info = (FILE_ID_BOTH_DIRECTORY_INFORMATION *)((char *)info + info->NextEntryOffset);
+ if (!status) CloseHandle( handle );
}
}
More information about the wine-cvs
mailing list