metadata: add vargs format method for metadata values

This commit is contained in:
Wim Taymans 2021-06-16 11:45:49 +02:00
parent beb80a06e8
commit f6ce23cbe3
2 changed files with 36 additions and 0 deletions

View file

@ -570,3 +570,35 @@ int pw_impl_metadata_set_property(struct pw_impl_metadata *metadata,
{
return impl_set_property(metadata->metadata, subject, key, type, value);
}
SPA_EXPORT
int pw_impl_metadata_set_propertyf(struct pw_impl_metadata *metadata,
uint32_t subject, const char *key, const char *type,
const char *fmt, ...)
{
va_list args;
int n = 0;
size_t size = 0;
char *p = NULL;
va_start(args, fmt);
n = vsnprintf(p, size, fmt, args);
va_end(args);
if (n < 0)
return -errno;
size = (size_t) n + 1;
p = malloc(size);
if (p == NULL)
return -errno;
va_start(args, fmt);
n = vsnprintf(p, size, fmt, args);
va_end(args);
if (n < 0) {
free(p);
return -errno;
}
return pw_impl_metadata_set_property(metadata, subject, key, type, p);
}

View file

@ -99,6 +99,10 @@ int pw_impl_metadata_set_property(struct pw_impl_metadata *metadata,
uint32_t subject, const char *key, const char *type,
const char *value);
int pw_impl_metadata_set_propertyf(struct pw_impl_metadata *metadata,
uint32_t subject, const char *key, const char *type,
const char *fmt, ...) SPA_PRINTF_FUNC(5,6);
/**
* \}
*/