+void buffer_consume(buffer_t *buf, ssize_t len) {
+ if (len <= 0)
+ return;
+
+ if (len >= buf->len) {
+ buffer_reset(buf);
+ return;
+ }
+
+ 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);