Reactos
1/*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS system libraries
4 * FILE: dll/win32/kernel32/client/file/copyansi.c
5 * PURPOSE: Copying files
6 * PROGRAMMER: Ariadne (ariadne@xs4all.nl)
7 */
8
9/* INCLUDES ****************************************************************/
10
11#include <k32.h>
12
13/* FUNCTIONS ****************************************************************/
14
15/*
16 * @implemented
17 */
18BOOL
19WINAPI
20CopyFileExA(IN LPCSTR lpExistingFileName,
21 IN LPCSTR lpNewFileName,
22 IN LPPROGRESS_ROUTINE lpProgressRoutine OPTIONAL,
23 IN LPVOID lpData OPTIONAL,
24 IN LPBOOL pbCancel OPTIONAL,
25 IN DWORD dwCopyFlags)
26{
27 BOOL Result = FALSE;
28 UNICODE_STRING lpNewFileNameW;
29 PUNICODE_STRING lpExistingFileNameW;
30
31 lpExistingFileNameW = Basep8BitStringToStaticUnicodeString(lpExistingFileName);
32 if (!lpExistingFileNameW)
33 {
34 return FALSE;
35 }
36
37 if (Basep8BitStringToDynamicUnicodeString(&lpNewFileNameW, lpNewFileName))
38 {
39 Result = CopyFileExW(lpExistingFileNameW->Buffer,
40 lpNewFileNameW.Buffer,
41 lpProgressRoutine,
42 lpData,
43 pbCancel,
44 dwCopyFlags);
45
46 RtlFreeUnicodeString(&lpNewFileNameW);
47 }
48
49 return Result;
50}
51
52
53/*
54 * @implemented
55 */
56BOOL
57WINAPI
58CopyFileA(IN LPCSTR lpExistingFileName,
59 IN LPCSTR lpNewFileName,
60 IN BOOL bFailIfExists)
61{
62 BOOL Result = FALSE;
63 UNICODE_STRING lpNewFileNameW;
64 PUNICODE_STRING lpExistingFileNameW;
65
66 lpExistingFileNameW = Basep8BitStringToStaticUnicodeString(lpExistingFileName);
67 if (!lpExistingFileNameW)
68 {
69 return FALSE;
70 }
71
72 if (Basep8BitStringToDynamicUnicodeString(&lpNewFileNameW, lpNewFileName))
73 {
74 Result = CopyFileExW(lpExistingFileNameW->Buffer,
75 lpNewFileNameW.Buffer,
76 NULL,
77 NULL,
78 NULL,
79 (bFailIfExists ? COPY_FILE_FAIL_IF_EXISTS : 0));
80
81 RtlFreeUnicodeString(&lpNewFileNameW);
82 }
83
84 return Result;
85}
86
87/* EOF */