On Tue, 25 Nov 2014, Luca Barbato wrote:
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?
Yes, it seems to be available already in Win2k.
// Martin
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel