diff --git a/include/proto/buffers.h b/include/proto/buffers.h
index 3a43678..a20ae8b 100644
--- a/include/proto/buffers.h
+++ b/include/proto/buffers.h
@@ -409,8 +409,6 @@
 int buffer_replace(struct buffer *b, char *pos, char *end, const char *str);
 int buffer_replace2(struct buffer *b, char *pos, char *end, const char *str, int len);
 int buffer_insert_line2(struct buffer *b, char *pos, const char *str, int len);
-int chunk_printf(struct chunk *chk, int size, const char *fmt, ...)
-	__attribute__ ((format(printf, 3, 4)));
 void buffer_dump(FILE *o, struct buffer *b, int from, int to);
 
 
@@ -448,6 +446,65 @@
 	return ret;
 }
 
+static inline void chunk_init(struct chunk *chk, char *str, size_t size) {
+	chk->str  = str;
+	chk->len  = 0;
+	chk->size = size;
+}
+
+/* report 0 in case of error, 1 if OK. */
+static inline int chunk_initlen(struct chunk *chk, char *str, size_t size, size_t len) {
+
+	if (len > size)
+		return 0;
+
+	chk->str  = str;
+	chk->len  = len;
+	chk->size = size;
+
+	return 1;
+}
+
+static inline void chunk_initstr(struct chunk *chk, char *str) {
+	chk->str = str;
+	chk->len = strlen(str);
+	chk->size = 0;			/* mark it read-only */
+}
+
+static inline int chunk_strcpy(struct chunk *chk, const char *str) {
+	size_t len;
+
+	len = strlen(str);
+
+	if (unlikely(len > chk->size))
+		return 0;
+
+	chk->len  = len;
+	memcpy(chk->str, str, len);
+
+	return 1;
+}
+
+int chunk_printf(struct chunk *chk, const char *fmt, ...)
+	__attribute__ ((format(printf, 2, 3)));
+
+static inline void chunk_reset(struct chunk *chk) {
+	chk->str  = NULL;
+	chk->len  = -1;
+	chk->size = 0;
+}
+
+static inline void chunk_destroy(struct chunk *chk) {
+
+	if (!chk->size)
+		return;
+
+	if (chk->str)
+		free(chk->str);
+
+	chunk_reset(chk);
+}
+
 /*
  * frees the destination chunk if already allocated, allocates a new string,
  * and copies the source into it. The pointer to the destination string is
diff --git a/include/types/buffers.h b/include/types/buffers.h
index c7ac91b..133285f 100644
--- a/include/types/buffers.h
+++ b/include/types/buffers.h
@@ -148,7 +148,8 @@
 /* describes a chunk of string */
 struct chunk {
 	char *str;	/* beginning of the string itself. Might not be 0-terminated */
-	int len;	/* size of the string from first to last char. <0 = uninit. */
+	size_t size;	/* total size of the buffer, 0 if the *str is read-only */
+	size_t len;	/* current size of the string from first to last char. <0 = uninit. */
 };
 
 /* needed for a declaration below */
