Add para_readv(), a simple wrapper for readv().
authorAndre Noll <maan@systemlinux.org>
Sat, 13 Feb 2010 11:58:40 +0000 (12:58 +0100)
committerAndre Noll <maan@systemlinux.org>
Sat, 13 Feb 2010 11:58:40 +0000 (12:58 +0100)
This new function will be used by the dccp receiver in a subsequent patch.

fd.c
fd.h

diff --git a/fd.c b/fd.c
index 0fb7960..32d1107 100644 (file)
--- 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 a21cd9f..cd670d3 100644 (file)
--- 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);