mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
membuffer: add helper functions to return regular C strings
The whole "create a string using a printf-like interface" thing is
pretty common, and most users then don't necessarily want to deal with
the membuffer interfaces around it.
So this just creates trivial wrappers to do this, so that you can do
s = format_string("%d: %s\n", i, str);
or similar things.
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
6397d56af4
commit
3521cdcbd6
2 changed files with 34 additions and 2 deletions
30
membuffer.c
30
membuffer.c
|
|
@ -6,12 +6,18 @@
|
|||
#include "dive.h"
|
||||
#include "membuffer.h"
|
||||
|
||||
void free_buffer(struct membuffer *b)
|
||||
char *detach_buffer(struct membuffer *b)
|
||||
{
|
||||
free(b->buffer);
|
||||
char *result = b->buffer;
|
||||
b->buffer = NULL;
|
||||
b->len = 0;
|
||||
b->alloc = 0;
|
||||
return result;
|
||||
}
|
||||
|
||||
void free_buffer(struct membuffer *b)
|
||||
{
|
||||
free(detach_buffer(b));
|
||||
}
|
||||
|
||||
void flush_buffer(struct membuffer *b, FILE *f)
|
||||
|
|
@ -100,6 +106,26 @@ void put_vformat(struct membuffer *b, const char *fmt, va_list args)
|
|||
}
|
||||
}
|
||||
|
||||
/* Silly helper using membuffer */
|
||||
char *vformat_string(const char *fmt, va_list args)
|
||||
{
|
||||
struct membuffer mb = { 0 };
|
||||
put_vformat(&mb, fmt, args);
|
||||
mb_cstring(&mb);
|
||||
return detach_buffer(&mb);
|
||||
}
|
||||
|
||||
char *format_string(const char *fmt, ...)
|
||||
{
|
||||
va_list args;
|
||||
char *result;
|
||||
|
||||
va_start(args, fmt);
|
||||
result = vformat_string(fmt, args);
|
||||
va_end(args);
|
||||
return result;
|
||||
}
|
||||
|
||||
void put_format(struct membuffer *b, const char *fmt, ...)
|
||||
{
|
||||
va_list args;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue