On 25/11/14 10:08, Martin Storsjö wrote:
This allows getting the normal unix semantics, where a rename allows replacing an existing file.Based on a suggestion by Reimar Döffinger. --- libavformat/os_support.h | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/libavformat/os_support.h b/libavformat/os_support.h index 4aa98bd..7f5edfc 100644 --- a/libavformat/os_support.h +++ b/libavformat/os_support.h @@ -170,14 +170,20 @@ 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); + ret = MoveFileExA(src_utf8, dest_utf8, MOVEFILE_REPLACE_EXISTING); + if (ret) + errno = EPERM; + return ret; } #define mkdir(a, b) win32_mkdir(a)
Probably ok, is this function available everywhere? _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
