changeset 22501:d2edb98d0fa5

(sys_rename): On some network drives, rename fails with EACCES instead of EEXIST if target already exists.
author Richard M. Stallman <rms@gnu.org>
date Tue, 16 Jun 1998 04:33:08 +0000
parents 274456e421ab
children 627b13315f04
files src/w32.c
diffstat 1 files changed, 3 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/w32.c	Tue Jun 16 04:32:03 1998 +0000
+++ b/src/w32.c	Tue Jun 16 04:33:08 1998 +0000
@@ -1558,12 +1558,12 @@
 	{
 	  /* Force temp name to require a manufactured 8.3 alias - this
 	     seems to make the second rename work properly.  */
-	  sprintf (p, ".%s.%u", o, i);
+	  sprintf (p, "_.%s.%u", o, i);
 	  i++;
 	  result = rename (oldname, temp);
 	}
       /* This loop must surely terminate!  */
-      while (result < 0 && errno == EEXIST);
+      while (result < 0 && (errno == EEXIST || errno == EACCES));
       if (result < 0)
 	return -1;
     }
@@ -1583,7 +1583,7 @@
   result = rename (temp, newname);
 
   if (result < 0
-      && errno == EEXIST
+      && (errno == EEXIST || errno == EACCES)
       && _chmod (newname, 0666) == 0
       && _unlink (newname) == 0)
     result = rename (temp, newname);