]> git.sesse.net Git - ffmpeg/blobdiff - libavformat/os_support.h
avformat/sbgdec: remove double ;;
[ffmpeg] / libavformat / os_support.h
index ffae4b72934eea2b8672ff42b1808eab39821fed..a3329119c0b587f21f1dc5f8a40266e0f5abafbf 100644 (file)
@@ -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