From e5b0c46fbb30acbc7a12c2fdf8687c56246a7b3a Mon Sep 17 00:00:00 2001 From: Andreas Gustafsson Date: Fri, 29 Oct 1999 23:50:55 +0000 Subject: [PATCH] added isc_buffer_putmem() --- lib/isc/buffer.c | 13 +++++++++++++ lib/isc/include/isc/buffer.h | 18 ++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/lib/isc/buffer.c b/lib/isc/buffer.c index 4c12795fd9..df94c75055 100644 --- a/lib/isc/buffer.c +++ b/lib/isc/buffer.c @@ -384,6 +384,19 @@ isc_buffer_putuint32(isc_buffer_t *b, isc_uint32_t val) cp[3] = (unsigned char)(val & 0x000000ff); } +void +isc_buffer_putmem(isc_buffer_t *b, unsigned char *base, unsigned int length) +{ + unsigned char *cp; + + REQUIRE(ISC_BUFFER_VALID(b)); + REQUIRE(b->used + length <= b->length); + + cp = b->base + b->used; + memcpy(cp, base, length); + b->used += length; +} + isc_result_t isc_buffer_copyregion(isc_buffer_t *b, isc_region_t *r) { unsigned char *base; diff --git a/lib/isc/include/isc/buffer.h b/lib/isc/include/isc/buffer.h index 08cab0e433..1558e5447d 100644 --- a/lib/isc/include/isc/buffer.h +++ b/lib/isc/include/isc/buffer.h @@ -539,6 +539,23 @@ isc_buffer_putuint32(isc_buffer_t *b, isc_uint32_t val); * The used pointer in 'b' is advanced by 4. */ +void +isc_buffer_putmem(isc_buffer_t *b, unsigned char *base, unsigned int length); +/* + * Copy 'length' bytes of memory at 'base' into 'b'. + * + * Requires: + * 'b' is a valid buffer. + * + * 'base' points to 'length' bytes of valid memory. + * + * Returns: + * + * ISC_R_SUCCESS + * ISC_R_NOSPACE The available region of 'b' is not + * big enough. + */ + isc_result_t isc_buffer_copyregion(isc_buffer_t *b, isc_region_t *r); /* @@ -556,6 +573,7 @@ isc_buffer_copyregion(isc_buffer_t *b, isc_region_t *r); * big enough. */ + ISC_LANG_ENDDECLS #endif /* ISC_BUFFER_H */