MoveFile[AW] should simply call MoveFileEx[AW]. Should fix issue

reported by Roderick Colenbrander.
This commit is contained in:
Alexandre Julliard 2003-02-26 20:28:37 +00:00
parent 149c0c520b
commit 28d65b1ac9
1 changed files with 2 additions and 54 deletions

View File

@ -2821,43 +2821,7 @@ BOOL WINAPI MoveFileExA( LPCSTR fn1, LPCSTR fn2, DWORD flag )
*/ */
BOOL WINAPI MoveFileW( LPCWSTR fn1, LPCWSTR fn2 ) BOOL WINAPI MoveFileW( LPCWSTR fn1, LPCWSTR fn2 )
{ {
DOS_FULL_NAME full_name1, full_name2;
struct stat fstat;
if (!fn1 || !fn2)
{
SetLastError(ERROR_INVALID_PARAMETER);
return FALSE;
}
TRACE("(%s,%s)\n", debugstr_w(fn1), debugstr_w(fn2) );
if (!DOSFS_GetFullName( fn1, TRUE, &full_name1 )) return FALSE;
if (DOSFS_GetFullName( fn2, TRUE, &full_name2 )) {
/* The new name must not already exist */
SetLastError(ERROR_ALREADY_EXISTS);
return FALSE;
}
if (!DOSFS_GetFullName( fn2, FALSE, &full_name2 )) return FALSE;
if (full_name1.drive == full_name2.drive) /* move */
return MoveFileExW( fn1, fn2, MOVEFILE_COPY_ALLOWED ); return MoveFileExW( fn1, fn2, MOVEFILE_COPY_ALLOWED );
/* copy */
if (stat( full_name1.long_name, &fstat ))
{
WARN("Invalid source file %s\n",
full_name1.long_name);
FILE_SetDosError();
return FALSE;
}
if (S_ISDIR(fstat.st_mode)) {
/* No Move for directories across file systems */
/* FIXME: Use right error code */
SetLastError( ERROR_GEN_FAILURE );
return FALSE;
}
return CopyFileW(fn1, fn2, TRUE); /*fail, if exist */
} }
@ -2866,23 +2830,7 @@ BOOL WINAPI MoveFileW( LPCWSTR fn1, LPCWSTR fn2 )
*/ */
BOOL WINAPI MoveFileA( LPCSTR fn1, LPCSTR fn2 ) BOOL WINAPI MoveFileA( LPCSTR fn1, LPCSTR fn2 )
{ {
UNICODE_STRING fn1W, fn2W; return MoveFileExA( fn1, fn2, MOVEFILE_COPY_ALLOWED );
BOOL ret;
if (!fn1 || !fn2)
{
SetLastError(ERROR_INVALID_PARAMETER);
return FALSE;
}
RtlCreateUnicodeStringFromAsciiz(&fn1W, fn1);
RtlCreateUnicodeStringFromAsciiz(&fn2W, fn2);
ret = MoveFileW( fn1W.Buffer, fn2W.Buffer );
RtlFreeUnicodeString(&fn1W);
RtlFreeUnicodeString(&fn2W);
return ret;
} }