summaryrefslogtreecommitdiff
path: root/libavformat/os_support.h
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2014-12-20 00:49:12 +0100
committerMichael Niedermayer <michaelni@gmx.at>2014-12-20 00:49:47 +0100
commit3d6545d51e6c031a77b0abf7470c681034dd8193 (patch)
treec08af2c4aa65e0197a20258c4206993a052acd6b /libavformat/os_support.h
parenta701a9cff4d53791ff811ebeaf1a644fca74191c (diff)
parent8ebf02f8f530240edf7e45f35f7647ef9dd44a58 (diff)
Merge commit '8ebf02f8f530240edf7e45f35f7647ef9dd44a58'
* commit '8ebf02f8f530240edf7e45f35f7647ef9dd44a58': libavformat: Only use MoveFileExA when targeting the desktop API subset Conflicts: configure Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat/os_support.h')
-rw-r--r--libavformat/os_support.h19
1 files changed, 16 insertions, 3 deletions
diff --git a/libavformat/os_support.h b/libavformat/os_support.h
index ffae4b7293..a3329119c0 100644
--- a/libavformat/os_support.h
+++ b/libavformat/os_support.h
@@ -146,6 +146,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) \
{ \
@@ -197,13 +209,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