MINOR: chunk: add chunk_cpy() and chunk_cat()

Sometimes we need to concatenate constant chunks to existing ones, but
no function currently exists to do this easily, hence these two new ones.
This commit is contained in:
Willy Tarreau 2018-10-08 07:34:25 +02:00
parent 9fa267dada
commit c1f40b38a6
1 changed files with 22 additions and 0 deletions

View File

@ -96,6 +96,28 @@ static inline void chunk_initstr(struct buffer *chk, const char *str)
chk->size = 0; /* mark it read-only */
}
/* copies chunk <src> into <chk>. Returns 0 in case of failure. */
static inline int chunk_cpy(struct buffer *chk, const struct buffer *src)
{
if (unlikely(src->data >= chk->size))
return 0;
chk->data = src->data;
memcpy(chk->area, src->area, src->data);
return 1;
}
/* appends chunk <src> after <chk>. Returns 0 in case of failure. */
static inline int chunk_cat(struct buffer *chk, const struct buffer *src)
{
if (unlikely(chk->data + src->data >= chk->size))
return 0;
memcpy(chk->area + chk->data, src->area, src->data);
chk->data += src->data;
return 1;
}
/* copies memory area <src> into <chk> for <len> bytes. Returns 0 in
* case of failure. No trailing zero is added.
*/