Charles Davis : kernel32: Make CopyFile() call CopyFileEx() instead of the other way around.
Alexandre Julliard
julliard at winehq.org
Fri Jan 18 12:07:36 CST 2013
Module: wine
Branch: master
Commit: e21c805fbeefae5224ea8faf8e9ce4b94cabaeb1
URL: http://source.winehq.org/git/wine.git/?a=commit;h=e21c805fbeefae5224ea8faf8e9ce4b94cabaeb1
Author: Charles Davis <cdavis5x at gmail.com>
Date: Thu Jan 17 13:28:43 2013 -0700
kernel32: Make CopyFile() call CopyFileEx() instead of the other way around.
---
dlls/kernel32/path.c | 72 +++++++++++++++++++++++---------------------------
1 files changed, 33 insertions(+), 39 deletions(-)
diff --git a/dlls/kernel32/path.c b/dlls/kernel32/path.c
index a326058..e42b05b 100644
--- a/dlls/kernel32/path.c
+++ b/dlls/kernel32/path.c
@@ -907,6 +907,36 @@ static BOOL is_same_file(HANDLE h1, HANDLE h2)
*/
BOOL WINAPI CopyFileW( LPCWSTR source, LPCWSTR dest, BOOL fail_if_exists )
{
+ return CopyFileExW( source, dest, NULL, NULL, NULL,
+ fail_if_exists ? COPY_FILE_FAIL_IF_EXISTS : 0 );
+}
+
+
+/**************************************************************************
+ * CopyFileA (KERNEL32.@)
+ */
+BOOL WINAPI CopyFileA( LPCSTR source, LPCSTR dest, BOOL fail_if_exists)
+{
+ WCHAR *sourceW, *destW;
+ BOOL ret;
+
+ if (!(sourceW = FILE_name_AtoW( source, FALSE ))) return FALSE;
+ if (!(destW = FILE_name_AtoW( dest, TRUE ))) return FALSE;
+
+ ret = CopyFileW( sourceW, destW, fail_if_exists );
+
+ HeapFree( GetProcessHeap(), 0, destW );
+ return ret;
+}
+
+
+/**************************************************************************
+ * CopyFileExW (KERNEL32.@)
+ */
+BOOL WINAPI CopyFileExW(LPCWSTR source, LPCWSTR dest,
+ LPPROGRESS_ROUTINE progress, LPVOID param,
+ LPBOOL cancel_ptr, DWORD flags)
+{
static const int buffer_size = 65536;
HANDLE h1, h2;
BY_HANDLE_FILE_INFORMATION info;
@@ -925,7 +955,7 @@ BOOL WINAPI CopyFileW( LPCWSTR source, LPCWSTR dest, BOOL fail_if_exists )
return FALSE;
}
- TRACE("%s -> %s, %d\n", debugstr_w(source), debugstr_w(dest), fail_if_exists);
+ TRACE("%s -> %s, %x\n", debugstr_w(source), debugstr_w(dest), flags);
if ((h1 = CreateFileW(source, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, OPEN_EXISTING, 0, 0)) == INVALID_HANDLE_VALUE)
@@ -943,7 +973,7 @@ BOOL WINAPI CopyFileW( LPCWSTR source, LPCWSTR dest, BOOL fail_if_exists )
return FALSE;
}
- if (!fail_if_exists)
+ if (!(flags & COPY_FILE_FAIL_IF_EXISTS))
{
BOOL same_file = FALSE;
h2 = CreateFileW( dest, 0, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
@@ -963,7 +993,7 @@ BOOL WINAPI CopyFileW( LPCWSTR source, LPCWSTR dest, BOOL fail_if_exists )
}
if ((h2 = CreateFileW( dest, GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
- fail_if_exists ? CREATE_NEW : CREATE_ALWAYS,
+ (flags & COPY_FILE_FAIL_IF_EXISTS) ? CREATE_NEW : CREATE_ALWAYS,
info.dwFileAttributes, h1 )) == INVALID_HANDLE_VALUE)
{
WARN("Unable to open dest %s\n", debugstr_w(dest));
@@ -995,42 +1025,6 @@ done:
/**************************************************************************
- * CopyFileA (KERNEL32.@)
- */
-BOOL WINAPI CopyFileA( LPCSTR source, LPCSTR dest, BOOL fail_if_exists)
-{
- WCHAR *sourceW, *destW;
- BOOL ret;
-
- if (!(sourceW = FILE_name_AtoW( source, FALSE ))) return FALSE;
- if (!(destW = FILE_name_AtoW( dest, TRUE ))) return FALSE;
-
- ret = CopyFileW( sourceW, destW, fail_if_exists );
-
- HeapFree( GetProcessHeap(), 0, destW );
- return ret;
-}
-
-
-/**************************************************************************
- * CopyFileExW (KERNEL32.@)
- *
- * This implementation ignores most of the extra parameters passed-in into
- * the "ex" version of the method and calls the CopyFile method.
- * It will have to be fixed eventually.
- */
-BOOL WINAPI CopyFileExW(LPCWSTR sourceFilename, LPCWSTR destFilename,
- LPPROGRESS_ROUTINE progressRoutine, LPVOID appData,
- LPBOOL cancelFlagPointer, DWORD copyFlags)
-{
- /*
- * Interpret the only flag that CopyFile can interpret.
- */
- return CopyFileW(sourceFilename, destFilename, (copyFlags & COPY_FILE_FAIL_IF_EXISTS) != 0);
-}
-
-
-/**************************************************************************
* CopyFileExA (KERNEL32.@)
*/
BOOL WINAPI CopyFileExA(LPCSTR sourceFilename, LPCSTR destFilename,
More information about the wine-cvs
mailing list