Synchronize with trunk revision 59636 (just before Alex's CreateProcess revamp).
[reactos.git] / dll / win32 / kernel32 / client / file / create.c
index 73e2c28..8346789 100644 (file)
@@ -1,5 +1,4 @@
-/* $Id: create.c 54326 2011-11-07 00:18:13Z ion $
- *
+/*
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS system libraries
  * FILE:            lib/kernel32/file/create.c
@@ -99,6 +98,7 @@ HANDLE WINAPI CreateFileW (LPCWSTR                    lpFileName,
    OBJECT_ATTRIBUTES ObjectAttributes;
    IO_STATUS_BLOCK IoStatusBlock;
    UNICODE_STRING NtPathU;
+   LPCWSTR pszConsoleFileName;
    HANDLE FileHandle;
    NTSTATUS Status;
    ULONG FileAttributes, Flags = 0;
@@ -142,10 +142,10 @@ HANDLE WINAPI CreateFileW (LPCWSTR                        lpFileName,
      }
 
    /* check for console input/output */
-   if (0 == _wcsicmp(L"CONOUT$", lpFileName)
-       || 0 == _wcsicmp(L"CONIN$", lpFileName))
+   pszConsoleFileName = IntCheckForConsoleFileName(lpFileName, dwDesiredAccess);
+   if (pszConsoleFileName)
    {
-      return OpenConsoleW(lpFileName,
+      return OpenConsoleW(pszConsoleFileName,
                           dwDesiredAccess,
                           lpSecurityAttributes ? lpSecurityAttributes->bInheritHandle : FALSE,
                           FILE_SHARE_READ | FILE_SHARE_WRITE);
@@ -200,7 +200,7 @@ HANDLE WINAPI CreateFileW (LPCWSTR                  lpFileName,
 
    FileAttributes = (dwFlagsAndAttributes & (FILE_ATTRIBUTE_VALID_FLAGS & ~FILE_ATTRIBUTE_DIRECTORY));
 
-   /* handle may allways be waited on and querying attributes are allways allowed */
+   /* handle may always be waited on and querying attributes are always allowed */
    dwDesiredAccess |= SYNCHRONIZE | FILE_READ_ATTRIBUTES;
 
    /* FILE_FLAG_POSIX_SEMANTICS is handled later */
@@ -535,11 +535,11 @@ OpenFile(LPCSTR lpFileName,
        ObjectAttributes.SecurityQualityOfService = NULL;
 
        errCode = NtOpenFile (&FileHandle,
-                             GENERIC_READ|SYNCHRONIZE,
+                             GENERIC_READ | SYNCHRONIZE,
                              &ObjectAttributes,
                              &IoStatusBlock,
                              FILE_SHARE_READ,
-                             FILE_NON_DIRECTORY_FILE|FILE_SYNCHRONOUS_IO_NONALERT);
+                             FILE_NON_DIRECTORY_FILE | FILE_SYNCHRONOUS_IO_NONALERT);
 
        RtlFreeHeap(RtlGetProcessHeap(), 0, FileNameString.Buffer);