@ -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)
fallback :
fallback :
/* filename may be be in CP_ACP */
/* filename may be be in CP_ACP */
# if HAV E_MOVEFILEEXA
# ifdef US E_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