diff --git a/include/strv.h b/include/strv.h index 52862989a..260ad12d5 100644 --- a/include/strv.h +++ b/include/strv.h @@ -13,6 +13,7 @@ unsigned strv_length(char * const *l); int strv_extend_strv(char ***a, char **b); int strv_extend_strv_concat(char ***a, char **b, const char *suffix); int strv_extend(char ***l, const char *value); +int strv_extendv(char ***l, const char *format, va_list ap); int strv_extendf(char ***l, const char *format, ...) __attribute__ ((__format__ (__printf__, 2, 0))); int strv_push(char ***l, char *value); diff --git a/lib/strv.c b/lib/strv.c index e030033b6..ddc2a0c5d 100644 --- a/lib/strv.c +++ b/lib/strv.c @@ -373,6 +373,17 @@ int strv_extendf(char ***l, const char *format, ...) { return strv_consume(l, x); } +int strv_extendv(char ***l, const char *format, va_list ap) { + char *x; + int r; + + r = vasprintf(&x, format, ap); + if (r < 0) + return -ENOMEM; + + return strv_consume(l, x); +} + char **strv_reverse(char **l) { unsigned n, i;