[KERNEL32]
[reactos.git] / reactos / dll / win32 / kernel32 / file / copy.c
index 7c58bab..30c847b 100644 (file)
 /* INCLUDES ****************************************************************/
 
 #include <k32.h>
-
 #define NDEBUG
 #include <debug.h>
 
+#if DBG
+DEBUG_CHANNEL(kernel32file);
+#endif
 
 /* FUNCTIONS ****************************************************************/
 
@@ -72,11 +74,11 @@ CopyLoop (
                   switch (ProgressResult)
                     {
                     case PROGRESS_CANCEL:
-                       DPRINT("Progress callback requested cancel\n");
+                       TRACE("Progress callback requested cancel\n");
                        errCode = STATUS_REQUEST_ABORTED;
                        break;
                     case PROGRESS_STOP:
-                       DPRINT("Progress callback requested stop\n");
+                       TRACE("Progress callback requested stop\n");
                        errCode = STATUS_REQUEST_ABORTED;
                        *KeepDest = TRUE;
                        break;
@@ -117,7 +119,7 @@ CopyLoop (
                         }
                       else
                         {
-                           DPRINT("Error 0x%08x reading writing to dest\n", errCode);
+                           WARN("Error 0x%08x reading writing to dest\n", errCode);
                         }
                    }
                  else if (!NT_SUCCESS(errCode))
@@ -129,7 +131,7 @@ CopyLoop (
                         }
                       else
                         {
-                           DPRINT("Error 0x%08x reading from source\n", errCode);
+                           WARN("Error 0x%08x reading from source\n", errCode);
                         }
                    }
               }
@@ -137,7 +139,7 @@ CopyLoop (
 
        if (! EndOfFileFound && (NULL != pbCancel && *pbCancel))
          {
-         DPRINT("User requested cancel\n");
+         TRACE("User requested cancel\n");
          errCode = STATUS_REQUEST_ABORTED;
          }
 
@@ -148,7 +150,7 @@ CopyLoop (
      }
    else
      {
-       DPRINT("Error 0x%08x allocating buffer of %d bytes\n", errCode, RegionSize);
+       TRACE("Error 0x%08x allocating buffer of %d bytes\n", errCode, RegionSize);
      }
 
    return errCode;
@@ -171,7 +173,7 @@ SetLastWriteTime(
                                     FileBasicInformation);
    if (!NT_SUCCESS(errCode))
      {
-       DPRINT("Error 0x%08x obtaining FileBasicInformation\n", errCode);
+       WARN("Error 0x%08x obtaining FileBasicInformation\n", errCode);
      }
    else
      {
@@ -183,7 +185,7 @@ SetLastWriteTime(
                                        FileBasicInformation);
        if (!NT_SUCCESS(errCode))
          {
-            DPRINT("Error 0x%0x setting LastWriteTime\n", errCode);
+            WARN("Error 0x%0x setting LastWriteTime\n", errCode);
          }
      }
 
@@ -195,7 +197,7 @@ SetLastWriteTime(
  * @implemented
  */
 BOOL
-STDCALL
+WINAPI
 CopyFileExW (
        LPCWSTR                 lpExistingFileName,
        LPCWSTR                 lpNewFileName,
@@ -216,7 +218,7 @@ CopyFileExW (
 
    FileHandleSource = CreateFileW(lpExistingFileName,
                                  GENERIC_READ,
-                                 FILE_SHARE_READ,
+                                 FILE_SHARE_READ | FILE_SHARE_WRITE,
                                  NULL,
                                  OPEN_EXISTING,
                                  FILE_ATTRIBUTE_NORMAL|FILE_FLAG_NO_BUFFERING,
@@ -230,7 +232,7 @@ CopyFileExW (
                                         FileStandardInformation);
        if (!NT_SUCCESS(errCode))
          {
-            DPRINT("Status 0x%08x obtaining FileStandardInformation for source\n", errCode);
+            TRACE("Status 0x%08x obtaining FileStandardInformation for source\n", errCode);
             SetLastErrorByStatus(errCode);
          }
        else
@@ -241,7 +243,7 @@ CopyFileExW (
                                              FileBasicInformation);
             if (!NT_SUCCESS(errCode))
               {
-                 DPRINT("Status 0x%08x obtaining FileBasicInformation for source\n", errCode);
+                 TRACE("Status 0x%08x obtaining FileBasicInformation for source\n", errCode);
                  SetLastErrorByStatus(errCode);
               }
             else
@@ -292,7 +294,7 @@ CopyFileExW (
                    }
                  else
                    {
-                   DPRINT("Error %d during opening of dest file\n", GetLastError());
+                   WARN("Error %d during opening of dest file\n", GetLastError());
                    }
               }
          }
@@ -300,7 +302,7 @@ CopyFileExW (
      }
    else
      {
-     DPRINT("Error %d during opening of source file\n", GetLastError());
+     WARN("Error %d during opening of source file\n", GetLastError());
      }
 
    return RC;
@@ -311,38 +313,37 @@ CopyFileExW (
  * @implemented
  */
 BOOL
-STDCALL
-CopyFileExA (
-       LPCSTR                  lpExistingFileName,
-       LPCSTR                  lpNewFileName,
-       LPPROGRESS_ROUTINE      lpProgressRoutine,
-       LPVOID                  lpData,
-       BOOL                    *pbCancel,
-       DWORD                   dwCopyFlags
-       )
+WINAPI
+CopyFileExA(IN LPCSTR lpExistingFileName,
+            IN LPCSTR lpNewFileName,
+            IN LPPROGRESS_ROUTINE lpProgressRoutine OPTIONAL,
+            IN LPVOID lpData OPTIONAL,
+            IN LPBOOL pbCancel OPTIONAL,
+            IN DWORD dwCopyFlags)
 {
-       PWCHAR ExistingFileNameW;
-   PWCHAR NewFileNameW;
-       BOOL Result;
-
-   if (!(ExistingFileNameW = FilenameA2W(lpExistingFileName, FALSE)))
-      return FALSE;
-
-   if (!(NewFileNameW = FilenameA2W(lpNewFileName, TRUE)))
-      return FALSE;
-
-   Result = CopyFileExW (ExistingFileNameW ,
-                         NewFileNameW ,
-                             lpProgressRoutine,
-                             lpData,
-                             pbCancel,
-                             dwCopyFlags);
-
-       RtlFreeHeap (RtlGetProcessHeap (),
-                    0,
-                NewFileNameW);
-
-       return Result;
+    BOOL Result = FALSE;
+    UNICODE_STRING lpNewFileNameW;
+    PUNICODE_STRING lpExistingFileNameW;
+
+    lpExistingFileNameW = Basep8BitStringToStaticUnicodeString(lpExistingFileName);
+    if (!lpExistingFileName)
+    {
+        return FALSE;
+    }
+
+    if (Basep8BitStringToDynamicUnicodeString(&lpNewFileNameW, lpNewFileName))
+    {
+        Result = CopyFileExW(lpExistingFileNameW->Buffer,
+                             lpNewFileNameW.Buffer,
+                             lpProgressRoutine,
+                             lpData,
+                             pbCancel,
+                             dwCopyFlags);
+
+        RtlFreeUnicodeString(&lpNewFileNameW);
+    }
+
+    return Result;
 }
 
 
@@ -350,7 +351,7 @@ CopyFileExA (
  * @implemented
  */
 BOOL
-STDCALL
+WINAPI
 CopyFileA (
        LPCSTR  lpExistingFileName,
        LPCSTR  lpNewFileName,
@@ -370,7 +371,7 @@ CopyFileA (
  * @implemented
  */
 BOOL
-STDCALL
+WINAPI
 CopyFileW (
        LPCWSTR lpExistingFileName,
        LPCWSTR lpNewFileName,
@@ -390,7 +391,7 @@ CopyFileW (
  * @implemented
  */
 BOOL
-STDCALL
+WINAPI
 PrivCopyFileExW (
        LPCWSTR                 lpExistingFileName,
        LPCWSTR                 lpNewFileName,