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