Signed-off-by: Bryce Harrington <[email protected]>
---
 src/wayland-os.c | 24 +++++++++++++++++-------
 src/wayland-os.h |  3 +++
 2 files changed, 20 insertions(+), 7 deletions(-)

diff --git a/src/wayland-os.c b/src/wayland-os.c
index 93b6f5f..342a73a 100644
--- a/src/wayland-os.c
+++ b/src/wayland-os.c
@@ -35,8 +35,18 @@
 #include "../config.h"
 #include "wayland-os.h"
 
-static int
-set_cloexec_or_close(int fd)
+
+/** Ensure the file descriptor will close after an execve
+ *
+ * If the fd cannot be set as cloexec, close it and return
+ * an error.
+ *
+ * \param fd The file descriptor to be modified
+ *
+ * \memberof wl_os
+ */
+int
+wl_os_set_cloexec_or_close(int fd)
 {
        long flags;
 
@@ -69,7 +79,7 @@ wl_os_socket_cloexec(int domain, int type, int protocol)
                return -1;
 
        fd = socket(domain, type, protocol);
-       return set_cloexec_or_close(fd);
+       return wl_os_set_cloexec_or_close(fd);
 }
 
 int
@@ -84,7 +94,7 @@ wl_os_dupfd_cloexec(int fd, long minfd)
                return -1;
 
        newfd = fcntl(fd, F_DUPFD, minfd);
-       return set_cloexec_or_close(newfd);
+       return wl_os_set_cloexec_or_close(newfd);
 }
 
 static ssize_t
@@ -112,7 +122,7 @@ recvmsg_cloexec_fallback(int sockfd, struct msghdr *msg, 
int flags)
                data = CMSG_DATA(cmsg);
                end = (int *)(data + cmsg->cmsg_len - CMSG_LEN(0));
                for (fd = (int *)data; fd < end; ++fd)
-                       *fd = set_cloexec_or_close(*fd);
+                       *fd = wl_os_set_cloexec_or_close(*fd);
        }
 
        return len;
@@ -146,7 +156,7 @@ wl_os_epoll_create_cloexec(void)
 #endif
 
        fd = epoll_create(1);
-       return set_cloexec_or_close(fd);
+       return wl_os_set_cloexec_or_close(fd);
 }
 
 int
@@ -163,5 +173,5 @@ wl_os_accept_cloexec(int sockfd, struct sockaddr *addr, 
socklen_t *addrlen)
 #endif
 
        fd = accept(sockfd, addr, addrlen);
-       return set_cloexec_or_close(fd);
+       return wl_os_set_cloexec_or_close(fd);
 }
diff --git a/src/wayland-os.h b/src/wayland-os.h
index f51efaa..e756841 100644
--- a/src/wayland-os.h
+++ b/src/wayland-os.h
@@ -27,6 +27,9 @@
 #define WAYLAND_OS_H
 
 int
+wl_os_set_cloexec_or_close(int fd);
+
+int
 wl_os_socket_cloexec(int domain, int type, int protocol);
 
 int
-- 
1.9.1

_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to