Lines Matching full:buffer

2  * buffer.c -- generic memory buffer .
13 #include <ldns/buffer.h>
18 ldns_buffer *buffer = LDNS_MALLOC(ldns_buffer); in ldns_buffer_new() local
20 if (!buffer) { in ldns_buffer_new()
24 buffer->_data = (uint8_t *) LDNS_XMALLOC(uint8_t, capacity); in ldns_buffer_new()
25 if (!buffer->_data) { in ldns_buffer_new()
26 LDNS_FREE(buffer); in ldns_buffer_new()
30 buffer->_position = 0; in ldns_buffer_new()
31 buffer->_limit = buffer->_capacity = capacity; in ldns_buffer_new()
32 buffer->_fixed = 0; in ldns_buffer_new()
33 buffer->_status = LDNS_STATUS_OK; in ldns_buffer_new()
35 ldns_buffer_invariant(buffer); in ldns_buffer_new()
37 return buffer; in ldns_buffer_new()
41 ldns_buffer_new_frm_data(ldns_buffer *buffer, const void *data, size_t size) in ldns_buffer_new_frm_data() argument
45 buffer->_position = 0; in ldns_buffer_new_frm_data()
46 buffer->_limit = buffer->_capacity = size; in ldns_buffer_new_frm_data()
47 buffer->_fixed = 0; in ldns_buffer_new_frm_data()
48 buffer->_data = LDNS_XMALLOC(uint8_t, size); in ldns_buffer_new_frm_data()
49 if(!buffer->_data) { in ldns_buffer_new_frm_data()
50 buffer->_status = LDNS_STATUS_MEM_ERR; in ldns_buffer_new_frm_data()
53 memcpy(buffer->_data, data, size); in ldns_buffer_new_frm_data()
54 buffer->_status = LDNS_STATUS_OK; in ldns_buffer_new_frm_data()
56 ldns_buffer_invariant(buffer); in ldns_buffer_new_frm_data()
60 ldns_buffer_set_capacity(ldns_buffer *buffer, size_t capacity) in ldns_buffer_set_capacity() argument
64 ldns_buffer_invariant(buffer); in ldns_buffer_set_capacity()
65 assert(buffer->_position <= capacity); in ldns_buffer_set_capacity()
66 assert(!buffer->_fixed); in ldns_buffer_set_capacity()
68 data = (uint8_t *) LDNS_XREALLOC(buffer->_data, uint8_t, capacity); in ldns_buffer_set_capacity()
70 buffer->_status = LDNS_STATUS_MEM_ERR; in ldns_buffer_set_capacity()
73 buffer->_data = data; in ldns_buffer_set_capacity()
74 buffer->_limit = buffer->_capacity = capacity; in ldns_buffer_set_capacity()
80 ldns_buffer_reserve(ldns_buffer *buffer, size_t amount) in ldns_buffer_reserve() argument
82 ldns_buffer_invariant(buffer); in ldns_buffer_reserve()
83 if (buffer->_capacity < buffer->_position + amount) { in ldns_buffer_reserve()
84 size_t new_capacity = buffer->_capacity * 3 / 2; in ldns_buffer_reserve()
86 if (new_capacity < buffer->_position + amount) { in ldns_buffer_reserve()
87 new_capacity = buffer->_position + amount; in ldns_buffer_reserve()
89 if (!ldns_buffer_set_capacity(buffer, new_capacity)) { in ldns_buffer_reserve()
90 buffer->_status = LDNS_STATUS_MEM_ERR; in ldns_buffer_reserve()
94 buffer->_limit = buffer->_capacity; in ldns_buffer_reserve()
99 ldns_buffer_printf(ldns_buffer *buffer, const char *format, ...) in ldns_buffer_printf() argument
105 if (ldns_buffer_status_ok(buffer)) { in ldns_buffer_printf()
106 ldns_buffer_invariant(buffer); in ldns_buffer_printf()
107 assert(buffer->_limit == buffer->_capacity); in ldns_buffer_printf()
109 remaining = ldns_buffer_remaining(buffer); in ldns_buffer_printf()
111 written = vsnprintf((char *) ldns_buffer_current(buffer), remaining, in ldns_buffer_printf()
115 buffer->_status = LDNS_STATUS_INTERNAL_ERR; in ldns_buffer_printf()
118 if (!ldns_buffer_reserve(buffer, (size_t) written + 1)) { in ldns_buffer_printf()
119 buffer->_status = LDNS_STATUS_MEM_ERR; in ldns_buffer_printf()
123 written = vsnprintf((char *) ldns_buffer_current(buffer), in ldns_buffer_printf()
124 ldns_buffer_remaining(buffer), format, args); in ldns_buffer_printf()
127 buffer->_status = LDNS_STATUS_INTERNAL_ERR; in ldns_buffer_printf()
131 buffer->_position += written; in ldns_buffer_printf()
137 ldns_buffer_free(ldns_buffer *buffer) in ldns_buffer_free() argument
139 if (!buffer) { in ldns_buffer_free()
143 if (!buffer->_fixed) in ldns_buffer_free()
144 LDNS_FREE(buffer->_data); in ldns_buffer_free()
146 LDNS_FREE(buffer); in ldns_buffer_free()
150 ldns_buffer_export(ldns_buffer *buffer) in ldns_buffer_export() argument
152 buffer->_fixed = 1; in ldns_buffer_export()
153 return buffer->_data; in ldns_buffer_export()
157 ldns_bgetc(ldns_buffer *buffer) in ldns_bgetc() argument
159 if (!ldns_buffer_available_at(buffer, buffer->_position, sizeof(uint8_t))) { in ldns_bgetc()
160 ldns_buffer_set_position(buffer, ldns_buffer_limit(buffer)); in ldns_bgetc()
161 /* ldns_buffer_rewind(buffer);*/ in ldns_bgetc()
164 return (int)ldns_buffer_read_u8(buffer); in ldns_bgetc()