diff options
Diffstat (limited to 'libavformat/os_support.h')
-rw-r--r-- | libavformat/os_support.h | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/libavformat/os_support.h b/libavformat/os_support.h index 49490655a9..6cc6d9aa2b 100644 --- a/libavformat/os_support.h +++ b/libavformat/os_support.h @@ -129,6 +129,18 @@ int ff_poll(struct pollfd *fds, nfds_t numfds, int timeout); #include <windows.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) \ static inline int win32_##name(const char *filename_utf8) \ { \ @@ -180,13 +192,14 @@ static inline int win32_rename(const char *src_utf8, const char *dest_utf8) fallback: /* filename may be be in CP_ACP */ -#if HAVE_MOVEFILEEXA +#ifdef USE_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 + /* Windows Phone doesn't have MoveFileExA, and for Windows Store apps, + * 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 * do MultiByteToWideChar(CP_ACP) and use MoveFileExW, but doing * explicit conversions with CP_ACP is allegedly forbidden in windows |