]> git.sesse.net Git - ffmpeg/blobdiff - libavformat/os_support.h
audiodsp/x86: clear the high bits of the order parameter on 64bit
[ffmpeg] / libavformat / os_support.h
index 49490655a9ce7c2f76f3aee047291ac42ae067fd..6cc6d9aa2b7972557caf7c514646ceb4095da486 100644 (file)
@@ -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