emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master f650d54 1/2: Unbreak the MS-Windows build


From: Eli Zaretskii
Subject: master f650d54 1/2: Unbreak the MS-Windows build
Date: Mon, 20 Jan 2020 11:22:24 -0500 (EST)

branch: master
commit f650d54c6a3620d3b1c264a944023beea15fe394
Author: Eli Zaretskii <address@hidden>
Commit: Eli Zaretskii <address@hidden>

    Unbreak the MS-Windows build
    
    * src/w32.c (openat): New function.
    * src/w32.h (openat): Add prototype.
---
 src/w32.c | 21 +++++++++++++++++++++
 src/w32.h |  1 +
 2 files changed, 22 insertions(+)

diff --git a/src/w32.c b/src/w32.c
index 62c53fd..a3b9a56 100644
--- a/src/w32.c
+++ b/src/w32.c
@@ -4592,6 +4592,27 @@ sys_open (const char * path, int oflag, int mode)
 }
 
 int
+openat (int fd, const char * path, int oflag, int mode)
+{
+  /* Rely on a hack: an open directory is modeled as file descriptor 0,
+     as in fstatat.  FIXME: Add proper support for openat.  */
+  char fullname[MAX_UTF8_PATH];
+
+  if (fd != AT_FDCWD)
+    {
+      if (_snprintf (fullname, sizeof fullname, "%s/%s", dir_pathname, path)
+         < 0)
+       {
+         errno = ENAMETOOLONG;
+         return -1;
+       }
+      path = fullname;
+    }
+
+  return sys_open (path, oflag, mode);
+}
+
+int
 fchmod (int fd, mode_t mode)
 {
   return 0;
diff --git a/src/w32.h b/src/w32.h
index b8655ec..f301b38 100644
--- a/src/w32.h
+++ b/src/w32.h
@@ -221,6 +221,7 @@ extern void register_child (pid_t, int);
 
 extern void sys_sleep (int);
 extern int sys_link (const char *, const char *);
+extern int openat (int, const char *, int, int);
 
 /* Return total and free memory info.  */
 extern int w32_memory_info (unsigned long long *, unsigned long long *,



reply via email to

[Prev in Thread] Current Thread [Next in Thread]