mirror of https://github.com/mpv-player/mpv
common: change mp_snprintf_append semantics
Make it more suitable for chaining. This means a function formatting a value to a string using a static buffer can work exactly like mp_snprintf_append itself. Also rename it to mp_snprintf_cat, because that's shorter.
This commit is contained in:
parent
7fb5df0d3e
commit
a8b267540e
|
@ -109,16 +109,23 @@ bool mp_rect_intersection(struct mp_rect *rc, const struct mp_rect *rc2)
|
|||
|
||||
// This works like snprintf(), except that it starts writing the first output
|
||||
// character to str[strlen(str)]. This returns the number of characters the
|
||||
// string would have assuming a large enough buffer, will make sure str is
|
||||
// null-terminated, and will never write to str[size] or past.
|
||||
int mp_snprintf_append(char *str, size_t size, const char *format, ...)
|
||||
// string would have *appended* assuming a large enough buffer, will make sure
|
||||
// str is null-terminated, and will never write to str[size] or past.
|
||||
// Example:
|
||||
// int example(char *buf, size_t buf_size, double num, char *str) {
|
||||
// int n = 0;
|
||||
// n += mp_snprintf_cat(buf, size, "%f", num);
|
||||
// n += mp_snprintf_cat(buf, size, "%s", str);
|
||||
// return n; }
|
||||
// Note how this can be chained with functions similar in style.
|
||||
int mp_snprintf_cat(char *str, size_t size, const char *format, ...)
|
||||
{
|
||||
size_t len = strnlen(str, size);
|
||||
assert(!size || len < size); // str with no 0-termination is not allowed
|
||||
int r;
|
||||
va_list ap;
|
||||
va_start(ap, format);
|
||||
r = len + vsnprintf(str + len, size - len, format, ap);
|
||||
r = vsnprintf(str + len, size - len, format, ap);
|
||||
va_end(ap);
|
||||
return r;
|
||||
}
|
||||
|
|
|
@ -77,7 +77,7 @@ struct mp_rect {
|
|||
void mp_rect_union(struct mp_rect *rc, const struct mp_rect *src);
|
||||
bool mp_rect_intersection(struct mp_rect *rc, const struct mp_rect *rc2);
|
||||
|
||||
int mp_snprintf_append(char *str, size_t size, const char *format, ...)
|
||||
int mp_snprintf_cat(char *str, size_t size, const char *format, ...)
|
||||
PRINTF_ATTRIBUTE(3, 4);
|
||||
|
||||
struct bstr;
|
||||
|
|
|
@ -1561,7 +1561,7 @@ static int probe_deint_filters(struct MPContext *mpctx)
|
|||
if (pref > 0 && pref <= 4) {
|
||||
const char *types[] =
|
||||
{"", "first-field", "bob", "temporal", "temporal-spatial"};
|
||||
mp_snprintf_append(filter, sizeof(filter), ":deint-mode=%s",
|
||||
mp_snprintf_cat(filter, sizeof(filter), ":deint-mode=%s",
|
||||
types[pref]);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue