From: Wolfgang Bumiller Date: Thu, 4 Jul 2019 12:25:02 +0000 (+0200) Subject: file_utils: add lxc_recvmsg_nointr_iov X-Git-Tag: lxc-3.2.0~9^2~14 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=99d03dec11e289d9be60a4ad3ea95d7397629a5f;p=thirdparty%2Flxc.git file_utils: add lxc_recvmsg_nointr_iov Signed-off-by: Wolfgang Bumiller --- diff --git a/src/lxc/file_utils.c b/src/lxc/file_utils.c index 31411d712..9cbe6c275 100644 --- a/src/lxc/file_utils.c +++ b/src/lxc/file_utils.c @@ -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; diff --git a/src/lxc/file_utils.h b/src/lxc/file_utils.h index 1b8033d69..a087147e1 100644 --- a/src/lxc/file_utils.h +++ b/src/lxc/file_utils.h @@ -26,6 +26,7 @@ #include #include #include +#include #include #include @@ -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);