]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
file_utils: add lxc_recvmsg_nointr_iov
authorWolfgang Bumiller <w.bumiller@proxmox.com>
Thu, 4 Jul 2019 12:25:02 +0000 (14:25 +0200)
committerWolfgang Bumiller <w.bumiller@proxmox.com>
Tue, 9 Jul 2019 10:25:10 +0000 (12:25 +0200)
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
src/lxc/file_utils.c
src/lxc/file_utils.h

index 31411d712e5295124f272882031a30e12596ab7b..9cbe6c2753b6908c5f930b3d7d14ecfc79e75117 100644 (file)
@@ -142,6 +142,24 @@ again:
        return ret;
 }
 
+ssize_t lxc_recvmsg_nointr_iov(int sockfd, struct iovec *iov, size_t iovlen,
+                              int flags)
+{
+       ssize_t ret;
+       struct msghdr msg;
+
+       memset(&msg, 0, sizeof(msg));
+       msg.msg_iov = iov;
+       msg.msg_iovlen = iovlen;
+
+again:
+       ret = recvmsg(sockfd, &msg, flags);
+       if (ret < 0 && errno == EINTR)
+               goto again;
+
+       return ret;
+}
+
 ssize_t lxc_read_nointr_expect(int fd, void *buf, size_t count, const void *expected_buf)
 {
        ssize_t ret;
index 1b8033d69bda43953b39f72880b81a4ec9c36f3b..a087147e112a1c977c95566ae5e0100cfcf73dc0 100644 (file)
@@ -26,6 +26,7 @@
 #include <stdio.h>
 #include <sys/stat.h>
 #include <sys/types.h>
+#include <sys/uio.h>
 #include <sys/vfs.h>
 #include <unistd.h>
 
@@ -43,6 +44,8 @@ extern ssize_t lxc_read_nointr_expect(int fd, void *buf, size_t count,
 extern ssize_t lxc_read_file_expect(const char *path, void *buf, size_t count,
                                      const void *expected_buf);
 extern ssize_t lxc_recv_nointr(int sockfd, void *buf, size_t len, int flags);
+ssize_t lxc_recvmsg_nointr_iov(int sockfd, struct iovec *iov, size_t iovlen,
+                              int flags);
 
 extern bool file_exists(const char *f);
 extern int print_to_file(const char *file, const char *content);