Commit 3d6545d5 authored by Michael Niedermayer's avatar Michael Niedermayer

Merge commit '8ebf02f8'

* commit '8ebf02f8':
  libavformat: Only use MoveFileExA when targeting the desktop API subset

Conflicts:
	configure
Merged-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parents a701a9cf 8ebf02f8
...@@ -1741,7 +1741,6 @@ SYSTEM_FUNCS=" ...@@ -1741,7 +1741,6 @@ SYSTEM_FUNCS="
lzo1x_999_compress lzo1x_999_compress
mach_absolute_time mach_absolute_time
MapViewOfFile MapViewOfFile
MoveFileExA
memalign memalign
mkstemp mkstemp
mmap mmap
...@@ -4759,7 +4758,6 @@ check_func_headers windows.h GetProcessAffinityMask ...@@ -4759,7 +4758,6 @@ 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
......
...@@ -146,6 +146,18 @@ int ff_poll(struct pollfd *fds, nfds_t numfds, int timeout); ...@@ -146,6 +146,18 @@ int ff_poll(struct pollfd *fds, nfds_t numfds, int timeout);
#include <windows.h> #include <windows.h>
#include "libavutil/wchar_filename.h" #include "libavutil/wchar_filename.h"
#ifdef WINAPI_FAMILY
#include <winapifamily.h>
// If a WINAPI_FAMILY is defined, check that the desktop API subset
// is enabled
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
#define USE_MOVEFILEEXA
#endif
#else
// If no WINAPI_FAMILY is defined, assume the full API subset
#define USE_MOVEFILEEXA
#endif
#define DEF_FS_FUNCTION(name, wfunc, afunc) \ #define DEF_FS_FUNCTION(name, wfunc, afunc) \
static inline int win32_##name(const char *filename_utf8) \ static inline int win32_##name(const char *filename_utf8) \
{ \ { \
...@@ -197,13 +209,14 @@ static inline int win32_rename(const char *src_utf8, const char *dest_utf8) ...@@ -197,13 +209,14 @@ static inline int win32_rename(const char *src_utf8, const char *dest_utf8)
fallback: fallback:
/* filename may be be in CP_ACP */ /* filename may be be in CP_ACP */
#if HAVE_MOVEFILEEXA #ifdef USE_MOVEFILEEXA
ret = MoveFileExA(src_utf8, dest_utf8, MOVEFILE_REPLACE_EXISTING); ret = MoveFileExA(src_utf8, dest_utf8, MOVEFILE_REPLACE_EXISTING);
if (ret) if (ret)
errno = EPERM; errno = EPERM;
#else #else
/* Windows Phone doesn't have MoveFileExA. However, it's unlikely /* Windows Phone doesn't have MoveFileExA, and for Windows Store apps,
* that anybody would input filenames in CP_ACP there, so this * it is available but not allowed by the app certification kit. However,
* it's unlikely that anybody would input filenames in CP_ACP there, so this
* fallback is kept mostly for completeness. Alternatively we could * fallback is kept mostly for completeness. Alternatively we could
* do MultiByteToWideChar(CP_ACP) and use MoveFileExW, but doing * do MultiByteToWideChar(CP_ACP) and use MoveFileExW, but doing
* explicit conversions with CP_ACP is allegedly forbidden in windows * explicit conversions with CP_ACP is allegedly forbidden in windows
......
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