lib: Add a simple read_data call without NTSTATUS
authorVolker Lendecke <vl@samba.org>
Wed, 19 Nov 2014 14:35:14 +0000 (14:35 +0000)
committerJeremy Allison <jra@samba.org>
Sat, 6 Dec 2014 23:12:07 +0000 (00:12 +0100)
Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
source3/lib/sys_rw_data.c
source3/lib/sys_rw_data.h

index e4f9a16345f9c3e23a173f20e9143b00f0924b9e..353dbe75c2db9deb0bd43d7827c0ed76b2cc0584 100644 (file)
@@ -105,3 +105,25 @@ ssize_t write_data(int fd, const void *buffer, size_t n)
        iov.iov_len = n;
        return write_data_iov(fd, &iov, 1);
 }
+
+/*
+ * Blocking read n bytes from a fd
+ */
+
+ssize_t read_data(int fd, void *buffer, size_t n)
+{
+       ssize_t nread;
+
+       nread = 0;
+
+       while (nread < n) {
+               ssize_t ret;
+               ret = sys_read(fd, ((char *)buffer) + nread, n - nread);
+               if (ret <= 0) {
+                       return ret;
+               }
+               nread += ret;
+       }
+
+       return nread;
+}
index 5d1995b334287897879fefb38331907c9b475bef..bda3795d05176dc65f0672ea7898d59421e8d734 100644 (file)
@@ -29,5 +29,6 @@ struct iovec;
 
 ssize_t write_data_iov(int fd, const struct iovec *iov, int iovcnt);
 ssize_t write_data(int fd, const void *buffer, size_t n);
+ssize_t read_data(int fd, void *buffer, size_t n);
 
 #endif