diff options
author | Eli Zaretskii <eliz@gnu.org> | 2017-08-14 19:17:22 +0300 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2017-08-14 19:17:22 +0300 |
commit | 16f11be4b96fc37204dc950e64f78ed340cd70d8 (patch) | |
tree | 5c72675b9dd76663b6fe93d65162952fc0ca0bb6 /src/w32.c | |
parent | 65899e5b0180284b87b1fa94c091b903056c6bfc (diff) | |
download | emacs-16f11be4b96fc37204dc950e64f78ed340cd70d8.tar.gz emacs-16f11be4b96fc37204dc950e64f78ed340cd70d8.tar.bz2 emacs-16f11be4b96fc37204dc950e64f78ed340cd70d8.zip |
Fix 'rename' on MS-Windows
* src/w32.c (sys_rename_replace): Use the FORCE argument only if
the primitive rename errors out with EEXIST.
Diffstat (limited to 'src/w32.c')
-rw-r--r-- | src/w32.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/w32.c b/src/w32.c index c5b51bb6b0e..c821e245d83 100644 --- a/src/w32.c +++ b/src/w32.c @@ -4502,7 +4502,7 @@ sys_rename_replace (const char *oldname, const char *newname, BOOL force) filename_to_utf16 (temp, temp_w); filename_to_utf16 (newname, newname_w); result = _wrename (temp_w, newname_w); - if (result < 0 && force) + if (result < 0) { DWORD w32err = GetLastError (); @@ -4520,7 +4520,7 @@ sys_rename_replace (const char *oldname, const char *newname, BOOL force) && (attributes & FILE_ATTRIBUTE_DIRECTORY)) errno = EXDEV; } - else if (errno == EEXIST) + else if (errno == EEXIST && force) { if (_wchmod (newname_w, 0666) != 0) return result; @@ -4546,7 +4546,7 @@ sys_rename_replace (const char *oldname, const char *newname, BOOL force) filename_to_ansi (temp, temp_a); filename_to_ansi (newname, newname_a); result = rename (temp_a, newname_a); - if (result < 0 && force) + if (result < 0) { DWORD w32err = GetLastError (); @@ -4559,7 +4559,7 @@ sys_rename_replace (const char *oldname, const char *newname, BOOL force) && (attributes & FILE_ATTRIBUTE_DIRECTORY)) errno = EXDEV; } - else if (errno == EEXIST) + else if (errno == EEXIST && force) { if (_chmod (newname_a, 0666) != 0) return result; |