diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2017-08-14 15:25:13 -0700 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2017-08-14 15:53:28 -0700 |
commit | 13a846823a92447d5cf0c2ce2bb401c5cdcb9ee4 (patch) | |
tree | 5c7f07e83772c76357fc56145ef8cd96ea4eb460 /src/sysdep.c | |
parent | 4fe9a9efcfdd39c5751d4506e94afaf28fcbcaef (diff) | |
download | emacs-13a846823a92447d5cf0c2ce2bb401c5cdcb9ee4.tar.gz emacs-13a846823a92447d5cf0c2ce2bb401c5cdcb9ee4.tar.bz2 emacs-13a846823a92447d5cf0c2ce2bb401c5cdcb9ee4.zip |
Improve rename-file behavior on macOS
Problem reported by Philipp Stephani (Bug#27986).
* src/fileio.c (Frename_file):
Worry about file name case sensitivity only if CYGWIN or DOS_NT.
* src/sysdep.c (renameat_noreplace): Use renameatx_np on macOS,
since this provides the necessary atomicity guarantees.
Diffstat (limited to 'src/sysdep.c')
-rw-r--r-- | src/sysdep.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/sysdep.c b/src/sysdep.c index 35f499c1853..2e18a419e3f 100644 --- a/src/sysdep.c +++ b/src/sysdep.c @@ -2693,11 +2693,13 @@ renameat_noreplace (int srcfd, char const *src, int dstfd, char const *dst) { #if defined SYS_renameat2 && defined RENAME_NOREPLACE return syscall (SYS_renameat2, srcfd, src, dstfd, dst, RENAME_NOREPLACE); +#elif defined RENAME_EXCL + return renameatx_np (srcfd, src, dstfd, dst, RENAME_EXCL); #else -#ifdef WINDOWSNT +# ifdef WINDOWSNT if (srcfd == AT_FDCWD && dstfd == AT_FDCWD) return sys_rename_replace (src, dst, 0); -#endif +# endif errno = ENOSYS; return -1; #endif |