diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-02-09 09:40:49 -0800 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2014-02-10 07:03:25 -0800 |
commit | 77da20196f3efe8eaf4a7bd898f0c6206d146c61 (patch) | |
tree | a31532d8d1e3410fd23b5af1d3b29c1b612d07bf /membuffer.c | |
parent | 22f66501ac4075084c0fd1d0b0d943aa92df1306 (diff) | |
download | subsurface-77da20196f3efe8eaf4a7bd898f0c6206d146c61.tar.gz |
Clean up membuffer internal structure names, add strip function
The "size" member was confusing - it's the size of the allocation, not
the size of the current string. The size of the current string is the
member called "used".
This naming makes perfect sense for the internal implementation, but
it's confusing to users who actually do want to get the size of the
resulting string at the end.
So rename the fields to "alloc" and "len" - which is pretty clear.
This also adds a helper function to strip whitespace from the end:
"strip_mb()".
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'membuffer.c')
-rw-r--r-- | membuffer.c | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/membuffer.c b/membuffer.c index 30ba05fdb..a258c424a 100644 --- a/membuffer.c +++ b/membuffer.c @@ -10,18 +10,24 @@ void free_buffer(struct membuffer *b) { free(b->buffer); b->buffer = NULL; - b->used = 0; - b->size = 0; + b->len = 0; + b->alloc = 0; } void flush_buffer(struct membuffer *b, FILE *f) { - if (b->used) { - fwrite(b->buffer, 1, b->used, f); + if (b->len) { + fwrite(b->buffer, 1, b->len, f); free_buffer(b); } } +void strip_mb(struct membuffer *b) +{ + while (b->len && isspace(b->buffer[b->len-1])) + b->len--; +} + /* * Running out of memory isn't really an issue these days. * So rather than do insane error handling and making the @@ -36,8 +42,8 @@ static void oom(void) static void make_room(struct membuffer *b, unsigned int size) { - unsigned int needed = b->used + size; - if (needed > b->size) { + unsigned int needed = b->len + size; + if (needed > b->alloc) { char *n; /* round it up to not reallocate all the time.. */ needed = needed * 9 / 8 + 1024; @@ -45,15 +51,15 @@ static void make_room(struct membuffer *b, unsigned int size) if (!n) oom(); b->buffer = n; - b->size = needed; + b->alloc = needed; } } void put_bytes(struct membuffer *b, const char *str, int len) { make_room(b, len); - memcpy(b->buffer + b->used, str, len); - b->used += len; + memcpy(b->buffer + b->len, str, len); + b->len += len; } void put_string(struct membuffer *b, const char *str) |