Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2014-11-27 13:35:54 +0300
committerMichael Niedermayer <michaelni@gmx.at>2014-11-27 13:35:54 +0300
commitcc663bd13a97a92a3b3ba838393e77f2e1c490ad (patch)
tree64548f2cbc0ba8461b3ea7e3ea9c0ab63976c94f /libavformat/os_support.h
parent097de4d1d68fb5aef5fc8881b2afc65db3f0dac0 (diff)
parent79fd186a5035cf16fc0ab288d8f59da8b1ba2c0e (diff)
Merge commit '79fd186a5035cf16fc0ab288d8f59da8b1ba2c0e'
* commit '79fd186a5035cf16fc0ab288d8f59da8b1ba2c0e': lavf: Use MoveFileEx instead of rename/_wrename on windows Conflicts: configure Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat/os_support.h')
-rw-r--r--libavformat/os_support.h21
1 files changed, 19 insertions, 2 deletions
diff --git a/libavformat/os_support.h b/libavformat/os_support.h
index 73b7f9f65b..ffae4b7293 100644
--- a/libavformat/os_support.h
+++ b/libavformat/os_support.h
@@ -187,14 +187,31 @@ static inline int win32_rename(const char *src_utf8, const char *dest_utf8)
goto fallback;
}
- ret = _wrename(src_w, dest_w);
+ ret = MoveFileExW(src_w, dest_w, MOVEFILE_REPLACE_EXISTING);
av_free(src_w);
av_free(dest_w);
+ // Lacking proper mapping from GetLastError() error codes to errno codes
+ if (ret)
+ errno = EPERM;
return ret;
fallback:
/* filename may be be in CP_ACP */
- return rename(src_utf8, dest_utf8);
+#if HAVE_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
+ * 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
+ * store apps (or windows phone), and the notion of a native code page
+ * doesn't make much sense there. */
+ ret = rename(src_utf8, dest_utf8);
+#endif
+ return ret;
}
#define mkdir(a, b) win32_mkdir(a)