]> git.ipfire.org Git - thirdparty/systemd.git/blobdiff - src/shared/varlink.c
varlink: add varlink_peek_dup_fd() helper
[thirdparty/systemd.git] / src / shared / varlink.c
index 1bfa4c70818b77d55dc70e6caf00127c72c3c7b8..713aff289597929523a85a810f17c4653eed2950 100644 (file)
@@ -3093,7 +3093,7 @@ int varlink_push_fd(Varlink *v, int fd) {
         return i;
 }
 
-int varlink_dup_fd(Varlink *v, int fd) {
+int varlink_push_dup_fd(Varlink *v, int fd) {
         _cleanup_close_ int dp = -1;
         int r;
 
@@ -3141,6 +3141,16 @@ int varlink_peek_fd(Varlink *v, size_t i) {
         return v->input_fds[i];
 }
 
+int varlink_peek_dup_fd(Varlink *v, size_t i) {
+        int fd;
+
+        fd = varlink_peek_fd(v, i);
+        if (fd < 0)
+                return fd;
+
+        return RET_NERRNO(fcntl(fd, F_DUPFD_CLOEXEC, 3));
+}
+
 int varlink_take_fd(Varlink *v, size_t i) {
         assert_return(v, -EINVAL);