summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/strv.h1
-rw-r--r--lib/strv.c11
2 files changed, 12 insertions, 0 deletions
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;