From cda5b2048d7b5455098bb1462171d80fa04e773a Mon Sep 17 00:00:00 2001 From: Andre Noll Date: Sat, 13 Feb 2010 12:58:40 +0100 Subject: [PATCH] Add para_readv(), a simple wrapper for readv(). This new function will be used by the dccp receiver in a subsequent patch. --- fd.c | 21 +++++++++++++++++++++ fd.h | 1 + 2 files changed, 22 insertions(+) diff --git a/fd.c b/fd.c index 0fb79602..32d11079 100644 --- a/fd.c +++ b/fd.c @@ -81,6 +81,27 @@ int write_nonblock(int fd, const char *buf, size_t len, return written; } +/** + * Simple wrapper for readv(). + * + * \param fd The file descriptor to read from. + * \param iov Scatter/gather array used in readv(). + * \param iovcnt Number of elements in \a iov. + * + * \return A negative error code on errors, the return value of the underlying + * call to readv() otherwise. + * + * \sa readv(2). + */ +int para_readv(int fd, struct iovec *iov, int iovcnt) +{ + int ret = readv(fd, iov, iovcnt); + + if (ret < 0) + return -ERRNO_TO_PARA_ERROR(errno); + return ret; +} + /** * Check whether a file exists. * diff --git a/fd.h b/fd.h index a21cd9f2..cd670d33 100644 --- a/fd.h +++ b/fd.h @@ -7,6 +7,7 @@ /** \file fd.h exported symbols from fd.c */ int write_all(int fd, const char *buf, size_t *len); +int para_readv(int fd, struct iovec *iov, int iovcnt); int file_exists(const char *); int para_select(int n, fd_set *readfds, fd_set *writefds, struct timeval *timeout_tv); -- 2.39.2