]> git.eshelyaron.com Git - emacs.git/commitdiff
Don’t worry about unlink if errno == ENOENT
authorPaul Eggert <eggert@cs.ucla.edu>
Wed, 2 Aug 2017 00:24:28 +0000 (17:24 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Wed, 2 Aug 2017 00:24:50 +0000 (17:24 -0700)
* src/fileio.c (Fdelete_file):
* src/keyboard.c (Fopen_dribble_file): Do not report failure to
remove a file if unlink fails with errno == ENOENT.  This can
happen even if Emacs is the only program removing the file, in
case an NFS cache overflows.  The file does not exist if errno ==
ENOENT, so it is OK to proceed.

src/fileio.c
src/keyboard.c

index a57d50b24e00c4a971b561da07fdb9a9f276444a..7531214fe45ba3aea7e1538e550d75b9122377a4 100644 (file)
@@ -2216,7 +2216,7 @@ With a prefix argument, TRASH is nil.  */)
 
   encoded_file = ENCODE_FILE (filename);
 
-  if (unlink (SSDATA (encoded_file)) < 0)
+  if (unlink (SSDATA (encoded_file)) != 0 && errno != ENOENT)
     report_file_error ("Removing old name", filename);
   return Qnil;
 }
index 804af85dad9a050dddc074b5f3e6823b6a223d85..97069a24acc37f42e3fa9e2b92c2f93ee209ba7d 100644 (file)
@@ -10168,7 +10168,8 @@ This may include sensitive information such as passwords.  */)
       file = Fexpand_file_name (file, Qnil);
       encfile = ENCODE_FILE (file);
       fd = emacs_open (SSDATA (encfile), O_WRONLY | O_CREAT | O_EXCL, 0600);
-      if (fd < 0 && errno == EEXIST && unlink (SSDATA (encfile)) == 0)
+      if (fd < 0 && errno == EEXIST
+         && (unlink (SSDATA (encfile)) == 0 || errno == ENOENT))
        fd = emacs_open (SSDATA (encfile), O_WRONLY | O_CREAT | O_EXCL, 0600);
       dribble = fd < 0 ? 0 : fdopen (fd, "w");
       if (dribble == 0)