summaryrefslogtreecommitdiff
path: root/src/w32.c
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2017-08-14 19:17:22 +0300
committerEli Zaretskii <eliz@gnu.org>2017-08-14 19:17:22 +0300
commit16f11be4b96fc37204dc950e64f78ed340cd70d8 (patch)
tree5c72675b9dd76663b6fe93d65162952fc0ca0bb6 /src/w32.c
parent65899e5b0180284b87b1fa94c091b903056c6bfc (diff)
downloademacs-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.c8
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;