fork
Configure Feed
Select the types of activity you want to include in your feed.
Reactos
fork
Configure Feed
Select the types of activity you want to include in your feed.
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
22WINAPI
23MoveFileA(IN LPCSTR lpExistingFileName,
24 IN LPCSTR lpNewFileName)
25{
26 return MoveFileWithProgressA(lpExistingFileName,
27 lpNewFileName,
28 NULL,
29 NULL,
30 MOVEFILE_COPY_ALLOWED);
31}
32
33
34/*
35 * @implemented
36 */
37BOOL
38WINAPI
39MoveFileExA(IN LPCSTR lpExistingFileName,
40 IN LPCSTR lpNewFileName OPTIONAL,
41 IN DWORD dwFlags)
42{
43 return MoveFileWithProgressA(lpExistingFileName,
44 lpNewFileName,
45 NULL,
46 NULL,
47 dwFlags);
48}
49
50/*
51 * @implemented
52 */
53BOOL
54WINAPI
55ReplaceFileA(IN LPCSTR lpReplacedFileName,
56 IN LPCSTR lpReplacementFileName,
57 IN LPCSTR lpBackupFileName OPTIONAL,
58 IN DWORD dwReplaceFlags,
59 IN LPVOID lpExclude,
60 IN LPVOID lpReserved)
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 {
68 SetLastError(ERROR_INVALID_PARAMETER);
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,
122 IN DWORD dwFlags)
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 */