mirror of https://git.ffmpeg.org/ffmpeg.git
Merge commit '79fd186a5035cf16fc0ab288d8f59da8b1ba2c0e'
* commit '79fd186a5035cf16fc0ab288d8f59da8b1ba2c0e': lavf: Use MoveFileEx instead of rename/_wrename on windows Conflicts: configure Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
commit
cc663bd13a
|
@ -1732,6 +1732,7 @@ SYSTEM_FUNCS="
|
||||||
lzo1x_999_compress
|
lzo1x_999_compress
|
||||||
mach_absolute_time
|
mach_absolute_time
|
||||||
MapViewOfFile
|
MapViewOfFile
|
||||||
|
MoveFileExA
|
||||||
memalign
|
memalign
|
||||||
mkstemp
|
mkstemp
|
||||||
mmap
|
mmap
|
||||||
|
@ -4736,6 +4737,7 @@ check_func_headers windows.h GetProcessAffinityMask
|
||||||
check_func_headers windows.h GetProcessTimes
|
check_func_headers windows.h GetProcessTimes
|
||||||
check_func_headers windows.h GetSystemTimeAsFileTime
|
check_func_headers windows.h GetSystemTimeAsFileTime
|
||||||
check_func_headers windows.h MapViewOfFile
|
check_func_headers windows.h MapViewOfFile
|
||||||
|
check_func_headers windows.h MoveFileExA
|
||||||
check_func_headers windows.h PeekNamedPipe
|
check_func_headers windows.h PeekNamedPipe
|
||||||
check_func_headers windows.h SetConsoleTextAttribute
|
check_func_headers windows.h SetConsoleTextAttribute
|
||||||
check_func_headers windows.h Sleep
|
check_func_headers windows.h Sleep
|
||||||
|
|
|
@ -187,14 +187,31 @@ static inline int win32_rename(const char *src_utf8, const char *dest_utf8)
|
||||||
goto fallback;
|
goto fallback;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = _wrename(src_w, dest_w);
|
ret = MoveFileExW(src_w, dest_w, MOVEFILE_REPLACE_EXISTING);
|
||||||
av_free(src_w);
|
av_free(src_w);
|
||||||
av_free(dest_w);
|
av_free(dest_w);
|
||||||
|
// Lacking proper mapping from GetLastError() error codes to errno codes
|
||||||
|
if (ret)
|
||||||
|
errno = EPERM;
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
fallback:
|
fallback:
|
||||||
/* filename may be be in CP_ACP */
|
/* filename may be be in CP_ACP */
|
||||||
return rename(src_utf8, dest_utf8);
|
#if HAVE_MOVEFILEEXA
|
||||||
|
ret = MoveFileExA(src_utf8, dest_utf8, MOVEFILE_REPLACE_EXISTING);
|
||||||
|
if (ret)
|
||||||
|
errno = EPERM;
|
||||||
|
#else
|
||||||
|
/* Windows Phone doesn't have MoveFileExA. However, it's unlikely
|
||||||
|
* that anybody would input filenames in CP_ACP there, so this
|
||||||
|
* fallback is kept mostly for completeness. Alternatively we could
|
||||||
|
* do MultiByteToWideChar(CP_ACP) and use MoveFileExW, but doing
|
||||||
|
* explicit conversions with CP_ACP is allegedly forbidden in windows
|
||||||
|
* store apps (or windows phone), and the notion of a native code page
|
||||||
|
* doesn't make much sense there. */
|
||||||
|
ret = rename(src_utf8, dest_utf8);
|
||||||
|
#endif
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define mkdir(a, b) win32_mkdir(a)
|
#define mkdir(a, b) win32_mkdir(a)
|
||||||
|
|
Loading…
Reference in New Issue