mirror of
				https://git.proxmox.com/git/libgit2
				synced 2025-11-04 12:12:46 +00:00 
			
		
		
		
	Fix file renaming in MinGW
We now use MoveFileEx, which is not assured to be atomic but works for always (both if the destination exists, or if it doesn't) and is available in MinGW. Since this is a Win32 API call, complaint about lost or overwritten files should be forwarded at Steve Ballmer. Signed-off-by: Vicent Marti <tanoku@gmail.com>
This commit is contained in:
		
							parent
							
								
									3eb47c9f67
								
							
						
					
					
						commit
						7360122ba9
					
				@ -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)
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user