add buffer_read.
authorPierre Habouzit <madcoder@debian.org>
Sat, 3 Feb 2007 00:30:17 +0000 (01:30 +0100)
committerPierre Habouzit <madcoder@debian.org>
Sat, 3 Feb 2007 00:30:17 +0000 (01:30 +0100)
Signed-off-by: Pierre Habouzit <madcoder@debian.org>
buffer.c
buffer.h

index 366b7d0..8342162 100644 (file)
--- a/buffer.c
+++ b/buffer.c
@@ -33,6 +33,9 @@
  * Copyright © 2006 Pierre Habouzit
  */
 
+#include <stdio.h>
+#include <unistd.h>
+
 #include "buffer.h"
 
 #define BUFSIZ_INCREMENT  256
@@ -58,3 +61,22 @@ void buffer_consume(buffer_t *buf, ssize_t len) {
     memmove(buf->data, buf->data + len, buf->len + 1 - len);
     buf->len -= len;
 }
+
+ssize_t buffer_read(buffer_t *buf, int fd, ssize_t count)
+{
+    ssize_t res;
+
+    if (count < 0)
+        count = BUFSIZ;
+
+    buffer_ensure(buf, count);
+
+    res = read(fd, buf->data + buf->len, count);
+    if (res < 0) {
+        buf->data[buf->len] = '\0';
+        return res;
+    }
+
+    buffer_extend(buf, res);
+    return res;
+}
index 6c546d9..d0e1c57 100644 (file)
--- a/buffer.h
+++ b/buffer.h
@@ -102,4 +102,6 @@ static inline void buffer_addch(buffer_t *buf, int c) {
 
 void buffer_consume(buffer_t *buf, ssize_t len);
 
+ssize_t buffer_read(buffer_t *buf, int fd, ssize_t count);
+
 #endif /* POSTLICYD_BUFFER_H */