[dovecot-cvs] dovecot/src/lib buffer.c,1.15,1.16 buffer.h,1.8,1.9

cras at dovecot.org cras at dovecot.org
Wed Aug 18 03:59:49 EEST 2004


Update of /home/cvs/dovecot/src/lib
In directory talvi:/tmp/cvs-serv9511

Modified Files:
	buffer.c buffer.h 
Log Message:
Added buffer_reset()



Index: buffer.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib/buffer.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- buffer.c	31 Jul 2004 20:53:07 -0000	1.15
+++ buffer.c	18 Aug 2004 00:59:47 -0000	1.16
@@ -12,7 +12,7 @@
 
 	/* private: */
 	unsigned char *w_buffer;
-	size_t alloc, max_alloc;
+	size_t dirty, alloc, max_alloc;
 
 	pool_t pool;
 
@@ -159,6 +159,15 @@
 	return data;
 }
 
+void buffer_reset(buffer_t *_buf)
+{
+	struct real_buffer *buf = (struct real_buffer *)_buf;
+
+	memset(buf, 0, I_MAX(buf->used, buf->dirty));
+	buf->dirty = 0;
+	buf->used = 0;
+}
+
 size_t buffer_write(buffer_t *_buf, size_t pos,
 		    const void *data, size_t data_size)
 {
@@ -293,6 +302,9 @@
 
 	i_assert(used_size <= buf->alloc);
 
+	if (used_size < buf->used && buf->used > buf->dirty)
+		buf->dirty = buf->used;
+
 	buf->used = used_size;
 }
 

Index: buffer.h
===================================================================
RCS file: /home/cvs/dovecot/src/lib/buffer.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- buffer.h	31 Jul 2004 22:34:44 -0000	1.8
+++ buffer.h	18 Aug 2004 00:59:47 -0000	1.9
@@ -30,6 +30,9 @@
    unfree'd. */
 void *buffer_free_without_data(buffer_t *buf);
 
+/* Reset the buffer. used size and it's contents are zeroed. */
+void buffer_reset(buffer_t *buf);
+
 /* Write data to buffer at specified position, returns number of bytes
    written. */
 size_t buffer_write(buffer_t *buf, size_t pos,



More information about the dovecot-cvs mailing list