changeset 34644:69143373d98d

(sys_rename): Only check errno against EEXIST, and not 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.
author Andrew Innes <andrewi@gnu.org>
date Sun, 17 Dec 2000 23:14:55 +0000
parents 7108531c744b
children a99432ee1fcb
files src/w32.c
diffstat 1 files changed, 3 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/w32.c	Sun Dec 17 23:13:26 2000 +0000
+++ b/src/w32.c	Sun Dec 17 23:14:55 2000 +0000
@@ -1807,7 +1807,7 @@
 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 @@
 	  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 @@
   result = rename (temp, newname);
 
   if (result < 0
-      && (errno == EEXIST || errno == EACCES)
+      && errno == EEXIST
       && _chmod (newname, 0666) == 0
       && _unlink (newname) == 0)
     result = rename (temp, newname);