Reactos
fork

Configure Feed

Select the types of activity you want to include in your feed.

at master 157 lines 4.2 kB view raw
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 */