summaryrefslogtreecommitdiff
path: root/src/win32
diff options
context:
space:
mode:
authorCarlos Martín Nieto <carlos@cmartin.tk>2011-11-07 19:34:24 +0100
committerCarlos Martín Nieto <carlos@cmartin.tk>2011-11-07 20:34:27 +0100
commit0c49ec2d3b5bfc32d69d189b7dc69cc26beb6a92 (patch)
tree86fe3204cfbe9b2a09fcd4d22b1ddf24f51e7269 /src/win32
parent38068dc1d3cf4a0f0dc2ce8c488a1de4621c04b5 (diff)
downloadlibgit2-0c49ec2d3b5bfc32d69d189b7dc69cc26beb6a92.tar.gz
Implement p_rename
Move the callers of git_futils_mv_atomic to use p_rename. Signed-off-by: Carlos Martín Nieto <carlos@cmartin.tk>
Diffstat (limited to 'src/win32')
-rw-r--r--src/win32/posix.h1
-rw-r--r--src/win32/posix_w32.c14
2 files changed, 15 insertions, 0 deletions
diff --git a/src/win32/posix.h b/src/win32/posix.h
index 7b5553061..ae6323679 100644
--- a/src/win32/posix.h
+++ b/src/win32/posix.h
@@ -48,5 +48,6 @@ extern int p_fsync(int fd);
extern int p_open(const char *path, int flags);
extern int p_creat(const char *path, mode_t mode);
extern int p_getcwd(char *buffer_out, size_t size);
+extern int p_rename(const char *from, const char *to);
#endif
diff --git a/src/win32/posix_w32.c b/src/win32/posix_w32.c
index 4b1b0074d..6f722581e 100644
--- a/src/win32/posix_w32.c
+++ b/src/win32/posix_w32.c
@@ -388,3 +388,17 @@ int p_access(const char* path, mode_t mode)
return ret;
}
+
+extern int p_rename(const char *from, const char *to)
+{
+ wchar_t *wfrom = gitwin_to_utf16(from);
+ wchar_t *wto = gitwin_to_utf16(to);
+ int ret;
+
+ ret = MoveFileExW(wfrom, wto, MOVEFILE_REPLACE_EXISTING | MOVEFILE_COPY_ALLOWED) ? GIT_SUCCESS : GIT_EOSERR;
+
+ git__free(wfrom);
+ git__free(wto);
+
+ return ret;
+}