shared: introduce os_fd_clear_cloexec() 25/28025/1
authorMarius Vlad <marius.vlad@collabora.com>
Mon, 19 Sep 2022 19:56:12 +0000 (22:56 +0300)
committerMarius Vlad <marius.vlad@collabora.com>
Thu, 22 Sep 2022 11:13:21 +0000 (14:13 +0300)
This function will be used between fork() and exec() to remove the
close-on-exec flag. The first user will be compositor/xwayland.c.

Bug-AGL: SPEC-4510

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Ib2245394654651583f9d59785540962ae4cb8a28

shared/os-compatibility.c
shared/os-compatibility.h

index 4bf7d81..681a544 100644 (file)
@@ -403,3 +403,18 @@ os_ro_anonymous_file_put_fd(int fd)
 
        return 0;
 }
+
+int
+os_fd_clear_cloexec(int fd)
+{
+       int flags;
+
+       flags = fcntl(fd, F_GETFD);
+       if (flags == -1)
+               return -1;
+
+       if (fcntl(fd, F_SETFD, flags & ~(int)FD_CLOEXEC) == -1)
+               return -1;
+
+       return 0;
+}
index 1ad45d7..c396c7d 100644 (file)
@@ -69,4 +69,7 @@ os_ro_anonymous_file_get_fd(struct ro_anonymous_file *file,
 int
 os_ro_anonymous_file_put_fd(int fd);
 
+int
+os_fd_clear_cloexec(int fd);
+
 #endif /* OS_COMPATIBILITY_H */