diff --git a/src/fileops.c b/src/fileops.c index 1da6116d9..602862ca4 100644 --- a/src/fileops.c +++ b/src/fileops.c @@ -150,21 +150,19 @@ int gitfo_move_file(char *from, char *to) * file exists, the `rename` call fails. This is as * close as it gets with the Win32 API. */ - if (gitfo_exists(to) == GIT_SUCCESS) - return ReplaceFile(to, from, NULL, 0, NULL, NULL) ? - GIT_SUCCESS : GIT_EOSERR; + return MoveFileEx(from, to, MOVEFILE_REPLACE_EXISTING) ? GIT_SUCCESS : GIT_EOSERR; #else /* Don't even try this on Win32 */ if (!link(from, to)) { gitfo_unlink(from); return GIT_SUCCESS; } -#endif if (!rename(from, to)) return GIT_SUCCESS; return GIT_EOSERR; +#endif } int gitfo_map_ro(git_map *out, git_file fd, git_off_t begin, size_t len)