Don’t worry about unlink if errno == ENOENT
* 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.
This commit is contained in:
parent
f74164a845
commit
1a65afb7ec
2 changed files with 3 additions and 2 deletions
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Reference in a new issue