- Fix 3 wine tests for OpenFile function
authorDmitry Chapyshev <dmitry@reactos.org>
Sat, 10 Jan 2009 12:33:22 +0000 (12:33 +0000)
committerDmitry Chapyshev <dmitry@reactos.org>
Sat, 10 Jan 2009 12:33:22 +0000 (12:33 +0000)
svn path=/trunk/; revision=38678

reactos/dll/win32/kernel32/file/file.c

index 111601a..24b7300 100644 (file)
@@ -265,6 +265,27 @@ OpenFile(LPCSTR lpFileName,
         return 0;
     }
 
+    if ((uStyle & OF_EXIST) && !(uStyle & OF_CREATE))
+    {
+        DWORD dwAttributes = GetFileAttributesA(lpReOpenBuff->szPathName);
+
+        switch (dwAttributes)
+        {
+            case 0xFFFFFFFF: /* File does not exist */
+                SetLastError(ERROR_FILE_NOT_FOUND);
+                lpReOpenBuff->nErrCode = (WORD) ERROR_FILE_NOT_FOUND;
+                return -1;
+
+            case FILE_ATTRIBUTE_DIRECTORY:
+                SetLastError(ERROR_ACCESS_DENIED);
+                lpReOpenBuff->nErrCode = (WORD) ERROR_ACCESS_DENIED;
+                return -1;
+
+            default:
+                return 1;
+        }
+    }
+
        if ((uStyle & OF_CREATE) == OF_CREATE)
        {
                DWORD Sharing;
@@ -371,7 +392,7 @@ OpenFile(LPCSTR lpFileName,
        if (uStyle & OF_EXIST)
        {
                NtClose(FileHandle);
-               return TRUE;
+               return (HFILE)1;
        }
 
        return (HFILE)FileHandle;