Commit cc663bd1 authored by Michael Niedermayer's avatar Michael Niedermayer

Merge commit '79fd186a'

* commit '79fd186a':
  lavf: Use MoveFileEx instead of rename/_wrename on windows

Conflicts:
	configure
Merged-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parents 097de4d1 79fd186a
...@@ -1732,6 +1732,7 @@ SYSTEM_FUNCS=" ...@@ -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 ...@@ -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) ...@@ -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)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment