Archived
1
0
Fork 0

buffer: adding buffer_cstr_release

This commit is contained in:
Henrik Hautakoski 2011-10-21 13:46:38 +02:00
parent 5245d19d71
commit 710f761cc6
2 changed files with 22 additions and 0 deletions

View file

@ -55,6 +55,26 @@ char* buffer_cstr(struct buffer *b) {
return (char*) b->block; return (char*) b->block;
} }
char* buffer_cstr_release(struct buffer *b) {
char *ret;
if (b->size) {
if (b->len + 1 != b->size) {
ret = realloc(b->block, b->len + 1);
} else {
ret = (char *) b->block;
}
b->block[b->len + 1] = '\0';
} else {
ret = calloc(1, 1);
}
buffer_init(b);
return ret;
}
void buffer_free(struct buffer *b) { void buffer_free(struct buffer *b) {
if (!b->size) if (!b->size)

View file

@ -63,6 +63,8 @@ static inline void buffer_reduce(struct buffer *b, size_t len) {
char* buffer_cstr(struct buffer *b); char* buffer_cstr(struct buffer *b);
char* buffer_cstr_release(struct buffer *b);
void buffer_free(struct buffer *b); void buffer_free(struct buffer *b);
void buffer_attach(struct buffer *b, void *str, size_t len, size_t size); void buffer_attach(struct buffer *b, void *str, size_t len, size_t size);