]> git.eshelyaron.com Git - emacs.git/commitdiff
(sys_rename): Only check errno against EEXIST, and not
authorAndrew Innes <andrewi@gnu.org>
Sun, 17 Dec 2000 23:14:55 +0000 (23:14 +0000)
committerAndrew Innes <andrewi@gnu.org>
Sun, 17 Dec 2000 23:14:55 +0000 (23:14 +0000)
EACCES, when determining whether rename failed because the target
exists.  This was resulting in indefinite looping on Windows 9x if
the source file was locked by another process.

src/w32.c

index efc0bb5511c248e1e6ade825a354f3530612eb91..abf2db6580b8564fdfe058997820e480ef180073 100644 (file)
--- a/src/w32.c
+++ b/src/w32.c
@@ -1807,7 +1807,7 @@ sys_open (const char * path, int oflag, int mode)
 int
 sys_rename (const char * oldname, const char * newname)
 {
-  int result;
+  BOOL result;
   char temp[MAX_PATH];
 
   /* MoveFile on Windows 95 doesn't correctly change the short file name
@@ -1851,7 +1851,7 @@ sys_rename (const char * oldname, const char * newname)
          result = rename (oldname, temp);
        }
       /* This loop must surely terminate!  */
-      while (result < 0 && (errno == EEXIST || errno == EACCES));
+      while (result < 0 && errno == EEXIST);
       if (result < 0)
        return -1;
     }
@@ -1871,7 +1871,7 @@ sys_rename (const char * oldname, const char * newname)
   result = rename (temp, newname);
 
   if (result < 0
-      && (errno == EEXIST || errno == EACCES)
+      && errno == EEXIST
       && _chmod (newname, 0666) == 0
       && _unlink (newname) == 0)
     result = rename (temp, newname);