aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKen Brown2017-09-10 11:00:35 -0400
committerKen Brown2017-09-10 11:04:30 -0400
commitc990f8d93dcc78aa98e58b89bddb666efcea2710 (patch)
tree42a7603c87328dbfbcaef17aee0a9d1df6276593
parent43779f9b97f3a1a66c8a32f126ce2c40af921429 (diff)
downloademacs-c990f8d93dcc78aa98e58b89bddb666efcea2710.tar.gz
emacs-c990f8d93dcc78aa98e58b89bddb666efcea2710.zip
Implement renameat_noreplace on recent Cygwin
* src/sysdep.c [CYGWIN]: Include cygwin/fs.h. (renameat_noreplace) [RENAME_NOREPLACE]: Use renameat2. (Bug#27986)
-rw-r--r--src/sysdep.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/sysdep.c b/src/sysdep.c
index b66a7453172..f5050e60f43 100644
--- a/src/sysdep.c
+++ b/src/sysdep.c
@@ -42,6 +42,10 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
42# include <sys/syscall.h> 42# include <sys/syscall.h>
43#endif 43#endif
44 44
45#ifdef CYGWIN
46# include <cygwin/fs.h>
47#endif
48
45#if defined DARWIN_OS || defined __FreeBSD__ 49#if defined DARWIN_OS || defined __FreeBSD__
46# include <sys/sysctl.h> 50# include <sys/sysctl.h>
47#endif 51#endif
@@ -2685,6 +2689,8 @@ renameat_noreplace (int srcfd, char const *src, int dstfd, char const *dst)
2685{ 2689{
2686#if defined SYS_renameat2 && defined RENAME_NOREPLACE 2690#if defined SYS_renameat2 && defined RENAME_NOREPLACE
2687 return syscall (SYS_renameat2, srcfd, src, dstfd, dst, RENAME_NOREPLACE); 2691 return syscall (SYS_renameat2, srcfd, src, dstfd, dst, RENAME_NOREPLACE);
2692#elif defined RENAME_NOREPLACE /* Cygwin >= 2.9.0. */
2693 return renameat2 (srcfd, src, dstfd, dst, RENAME_NOREPLACE);
2688#elif defined RENAME_EXCL 2694#elif defined RENAME_EXCL
2689 return renameatx_np (srcfd, src, dstfd, dst, RENAME_EXCL); 2695 return renameatx_np (srcfd, src, dstfd, dst, RENAME_EXCL);
2690#else 2696#else