ReactOS 0.4.16-dev-2274-gc61d98f
moveansi.c
Go to the documentation of this file.
1/*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS system libraries
4 * FILE: dll/win32/kernel32/client/file/moveansi.c
5 * PURPOSE: Directory functions
6 * PROGRAMMER: Ariadne ( ariadne@xs4all.nl)
7 * Gerhard W. Gruber (sparhawk_at_gmx.at)
8 * Dmitry Philippov (shedon@mail.ru)
9 * Pierre Schweitzer (pierre@reactos.org)
10 */
11
12/* INCLUDES *****************************************************************/
13
14#include <k32.h>
15
16/* FUNCTIONS ****************************************************************/
17
18/*
19 * @implemented
20 */
21BOOL
23MoveFileA(IN LPCSTR lpExistingFileName,
24 IN LPCSTR lpNewFileName)
25{
26 return MoveFileWithProgressA(lpExistingFileName,
27 lpNewFileName,
28 NULL,
29 NULL,
31}
32
33
34/*
35 * @implemented
36 */
37BOOL
39MoveFileExA(IN LPCSTR lpExistingFileName,
40 IN LPCSTR lpNewFileName OPTIONAL,
42{
43 return MoveFileWithProgressA(lpExistingFileName,
44 lpNewFileName,
45 NULL,
46 NULL,
47 dwFlags);
48}
49
50/*
51 * @implemented
52 */
53BOOL
55ReplaceFileA(IN LPCSTR lpReplacedFileName,
56 IN LPCSTR lpReplacementFileName,
57 IN LPCSTR lpBackupFileName OPTIONAL,
58 IN DWORD dwReplaceFlags,
59 IN LPVOID lpExclude,
61{
62 BOOL Ret;
63 UNICODE_STRING ReplacedFileNameW, ReplacementFileNameW, BackupFileNameW;
64
65 if (!lpReplacedFileName || !lpReplacementFileName || lpExclude || lpReserved ||
66 (dwReplaceFlags & ~(REPLACEFILE_WRITE_THROUGH | REPLACEFILE_IGNORE_MERGE_ERRORS)))
67 {
69 return FALSE;
70 }
71
72 if (!Basep8BitStringToDynamicUnicodeString(&ReplacedFileNameW, lpReplacedFileName))
73 {
74 return FALSE;
75 }
76
77 if (!Basep8BitStringToDynamicUnicodeString(&ReplacementFileNameW, lpReplacementFileName))
78 {
79 RtlFreeUnicodeString(&ReplacedFileNameW);
80 return FALSE;
81 }
82
83 if (lpBackupFileName)
84 {
85 if (!Basep8BitStringToDynamicUnicodeString(&BackupFileNameW, lpBackupFileName))
86 {
87 RtlFreeUnicodeString(&ReplacementFileNameW);
88 RtlFreeUnicodeString(&ReplacedFileNameW);
89 return FALSE;
90 }
91 }
92 else
93 {
94 BackupFileNameW.Buffer = NULL;
95 }
96
97 Ret = ReplaceFileW(ReplacedFileNameW.Buffer,
98 ReplacementFileNameW.Buffer,
99 BackupFileNameW.Buffer,
100 dwReplaceFlags, 0, 0);
101
102 if (lpBackupFileName)
103 {
104 RtlFreeUnicodeString(&BackupFileNameW);
105 }
106 RtlFreeUnicodeString(&ReplacementFileNameW);
107 RtlFreeUnicodeString(&ReplacedFileNameW);
108
109 return Ret;
110}
111
112
113/*
114 * @implemented
115 */
116BOOL
117WINAPI
118MoveFileWithProgressA(IN LPCSTR lpExistingFileName,
119 IN LPCSTR lpNewFileName OPTIONAL,
120 IN LPPROGRESS_ROUTINE lpProgressRoutine OPTIONAL,
121 IN LPVOID lpData OPTIONAL,
123{
124 BOOL Ret;
125 UNICODE_STRING ExistingFileNameW, NewFileNameW;
126
127 if (!Basep8BitStringToDynamicUnicodeString(&ExistingFileNameW, lpExistingFileName))
128 {
129 return FALSE;
130 }
131
132 if (lpNewFileName)
133 {
134 if (!Basep8BitStringToDynamicUnicodeString(&NewFileNameW, lpNewFileName))
135 {
136 RtlFreeUnicodeString(&ExistingFileNameW);
137 return FALSE;
138 }
139 }
140 else
141 {
142 NewFileNameW.Buffer = NULL;
143 }
144
145 Ret = MoveFileWithProgressW(ExistingFileNameW.Buffer,
146 NewFileNameW.Buffer,
147 lpProgressRoutine,
148 lpData,
149 dwFlags);
150
151 RtlFreeUnicodeString(&ExistingFileNameW);
152 RtlFreeUnicodeString(&NewFileNameW);
153
154 return Ret;
155}
156
157/* EOF */
#define NULL
Definition: types.h:112
#define FALSE
Definition: types.h:117
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
#define SetLastError(x)
Definition: compat.h:752
BOOL WINAPI MoveFileWithProgressW(IN LPCWSTR lpExistingFileName, IN LPCWSTR lpNewFileName, IN LPPROGRESS_ROUTINE lpProgressRoutine, IN LPVOID lpData, IN DWORD dwFlags)
Definition: move.c:718
BOOL WINAPI ReplaceFileW(LPCWSTR lpReplacedFileName, LPCWSTR lpReplacementFileName, LPCWSTR lpBackupFileName, DWORD dwReplaceFlags, LPVOID lpExclude, LPVOID lpReserved)
Definition: move.c:1090
BOOLEAN WINAPI Basep8BitStringToDynamicUnicodeString(OUT PUNICODE_STRING UnicodeString, IN LPCSTR String)
Definition: utils.c:226
#define MOVEFILE_COPY_ALLOWED
Definition: filesup.h:29
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
BOOL WINAPI MoveFileA(IN LPCSTR lpExistingFileName, IN LPCSTR lpNewFileName)
Definition: moveansi.c:23
BOOL WINAPI ReplaceFileA(IN LPCSTR lpReplacedFileName, IN LPCSTR lpReplacementFileName, IN LPCSTR lpBackupFileName OPTIONAL, IN DWORD dwReplaceFlags, IN LPVOID lpExclude, IN LPVOID lpReserved)
Definition: moveansi.c:55
BOOL WINAPI MoveFileExA(IN LPCSTR lpExistingFileName, IN LPCSTR lpNewFileName OPTIONAL, IN DWORD dwFlags)
Definition: moveansi.c:39
BOOL WINAPI MoveFileWithProgressA(IN LPCSTR lpExistingFileName, IN LPCSTR lpNewFileName OPTIONAL, IN LPPROGRESS_ROUTINE lpProgressRoutine OPTIONAL, IN LPVOID lpData OPTIONAL, IN DWORD dwFlags)
Definition: moveansi.c:118
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
Definition: netsh.h:141
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
PULONG MinorVersion OPTIONAL
Definition: CrossNt.h:68
#define IN
Definition: typedefs.h:39
DWORD(WINAPI * LPPROGRESS_ROUTINE)(_In_ LARGE_INTEGER, _In_ LARGE_INTEGER, _In_ LARGE_INTEGER, _In_ LARGE_INTEGER, _In_ DWORD, _In_ DWORD, _In_ HANDLE, _In_ HANDLE, _In_opt_ LPVOID)
Definition: winbase.h:1197
#define WINAPI
Definition: msvc.h:6
_In_ DWORD _In_ int _In_ int _In_opt_ LPNLSVERSIONINFO _In_opt_ LPVOID lpReserved
Definition: winnls.h:1268
const char * LPCSTR
Definition: xmlstorage.h:183