buffer: Make buffer_pull() return the start of the pulled data.
authorBen Pfaff <blp@nicira.com>
Mon, 14 Jul 2008 20:51:26 +0000 (13:51 -0700)
committerBen Pfaff <blp@nicira.com>
Fri, 18 Jul 2008 20:42:37 +0000 (13:42 -0700)
Some callers find this useful.

include/buffer.h
lib/buffer.c

index 0d024ec9e803e3f930ef9ebf09152ca80d0b6c1d..c2cbb139c571e349b43ed277d5eff8e1e506f4fe 100644 (file)
@@ -76,6 +76,6 @@ size_t buffer_tailroom(struct buffer *);
 void buffer_reserve_tailroom(struct buffer *, size_t);
 
 void buffer_clear(struct buffer *);
-void buffer_pull(struct buffer *, size_t);
+void *buffer_pull(struct buffer *, size_t);
 
 #endif /* buffer.h */
index 2b6e3b783c133b34be055a63be025a64a26dfd2e..dc9887a9e6e238b87e7f5c897bd4deb11c50501e 100644 (file)
@@ -231,12 +231,14 @@ buffer_clear(struct buffer *b)
 }
 
 /* Removes 'size' bytes from the head end of 'b', which must contain at least
- * 'size' bytes of data. */
-void
+ * 'size' bytes of data.  Returns the first byte of data removed. */
+void *
 buffer_pull(struct buffer *b, size_t size) 
 {
+    void *data = b->data;
     assert(b->size >= size);
     b->data += size;
     b->size -= size;
+    return data;
 }