MEDIUM: buffer: make bo_putblk/bo_putstr/bo_putchk return the number of bytes copied.

This is not used yet. Planned for LUA.
This commit is contained in:
Thierry FOURNIER 2015-02-06 18:40:20 +01:00 committed by Willy Tarreau
parent cc87a11842
commit 549aac8d0b

View File

@ -354,9 +354,10 @@ static inline void bo_putchr(struct buffer *b, char c)
} }
/* Tries to copy block <blk> into output data at buffer <b>. Supports wrapping. /* Tries to copy block <blk> into output data at buffer <b>. Supports wrapping.
* Data are truncated if buffer is too short. * Data are truncated if buffer is too short. It returns the number of bytes
* copied.
*/ */
static inline void bo_putblk(struct buffer *b, const char *blk, int len) static inline int bo_putblk(struct buffer *b, const char *blk, int len)
{ {
int cur_len = buffer_len(b); int cur_len = buffer_len(b);
int half; int half;
@ -364,7 +365,7 @@ static inline void bo_putblk(struct buffer *b, const char *blk, int len)
if (len > b->size - cur_len) if (len > b->size - cur_len)
len = (b->size - cur_len); len = (b->size - cur_len);
if (!len) if (!len)
return; return 0;
half = buffer_contig_space(b); half = buffer_contig_space(b);
if (half > len) if (half > len)
@ -377,20 +378,23 @@ static inline void bo_putblk(struct buffer *b, const char *blk, int len)
b->p = b_ptr(b, half); b->p = b_ptr(b, half);
} }
b->o += len; b->o += len;
return len;
} }
/* Tries to copy string <str> into output data at buffer <b>. Supports wrapping. /* Tries to copy string <str> into output data at buffer <b>. Supports wrapping.
* Data are truncated if buffer is too short. * Data are truncated if buffer is too short. It returns the number of bytes
* copied.
*/ */
static inline void bo_putstr(struct buffer *b, const char *str) static inline int bo_putstr(struct buffer *b, const char *str)
{ {
return bo_putblk(b, str, strlen(str)); return bo_putblk(b, str, strlen(str));
} }
/* Tries to copy chunk <chk> into output data at buffer <b>. Supports wrapping. /* Tries to copy chunk <chk> into output data at buffer <b>. Supports wrapping.
* Data are truncated if buffer is too short. * Data are truncated if buffer is too short. It returns the number of bytes
* copied.
*/ */
static inline void bo_putchk(struct buffer *b, const struct chunk *chk) static inline int bo_putchk(struct buffer *b, const struct chunk *chk)
{ {
return bo_putblk(b, chk->str, chk->len); return bo_putblk(b, chk->str, chk->len);
} }