mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2026-03-14 05:34:06 -04:00
spa: utils: string: add spa_strbuf_appendv()
Add a function that makes it possible to pass a `va_list` when printing into a `spa_strbuf`.
This commit is contained in:
parent
e4e5f62d44
commit
00148467ef
1 changed files with 14 additions and 5 deletions
|
|
@ -380,17 +380,26 @@ SPA_API_STRING void spa_strbuf_init(struct spa_strbuf *buf, char *buffer, size_t
|
|||
buf->buffer[0] = '\0';
|
||||
}
|
||||
|
||||
SPA_PRINTF_FUNC(2, 0)
|
||||
SPA_API_STRING int spa_strbuf_appendv(struct spa_strbuf *buf, const char *fmt, va_list args)
|
||||
{
|
||||
size_t remain = buf->maxsize - buf->pos;
|
||||
int written = vsnprintf(&buf->buffer[buf->pos], remain, fmt, args);
|
||||
if (written > 0)
|
||||
buf->pos += SPA_MIN(remain, (size_t)written);
|
||||
return written;
|
||||
}
|
||||
|
||||
SPA_PRINTF_FUNC(2, 3)
|
||||
SPA_API_STRING int spa_strbuf_append(struct spa_strbuf *buf, const char *fmt, ...)
|
||||
{
|
||||
size_t remain = buf->maxsize - buf->pos;
|
||||
ssize_t written;
|
||||
va_list args;
|
||||
int written;
|
||||
|
||||
va_start(args, fmt);
|
||||
written = vsnprintf(&buf->buffer[buf->pos], remain, fmt, args);
|
||||
written = spa_strbuf_appendv(buf, fmt, args);
|
||||
va_end(args);
|
||||
if (written > 0)
|
||||
buf->pos += SPA_MIN(remain, (size_t)written);
|
||||
|
||||
return written;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue