summaryrefslogtreecommitdiff
path: root/src/basic
diff options
context:
space:
mode:
Diffstat (limited to 'src/basic')
-rw-r--r--src/basic/strv.c31
-rw-r--r--src/basic/strv.h2
2 files changed, 33 insertions, 0 deletions
diff --git a/src/basic/strv.c b/src/basic/strv.c
index 0a3d15706f..dc5bafcf24 100644
--- a/src/basic/strv.c
+++ b/src/basic/strv.c
@@ -871,3 +871,34 @@ rollback:
nl[k] = NULL;
return -ENOMEM;
}
+
+int fputstrv(FILE *f, char **l, const char *separator, bool *space) {
+ bool b = false;
+ char **s;
+ int r;
+
+ /* Like fputs(), but for strv, and with a less stupid argument order */
+
+ if (!f)
+ f = stdout;
+ if (!separator)
+ separator = " ";
+ if (!space)
+ space = &b;
+
+ STRV_FOREACH(s, l) {
+ if (*space) {
+ r = fputs(separator, f);
+ if (r < 0)
+ return r;
+ }
+
+ r = fputs(*s, f);
+ if (r < 0)
+ return r;
+
+ *space = true;
+ }
+
+ return 0;
+}
diff --git a/src/basic/strv.h b/src/basic/strv.h
index bb61db2638..560f90115c 100644
--- a/src/basic/strv.h
+++ b/src/basic/strv.h
@@ -169,3 +169,5 @@ char ***strv_free_free(char ***l);
char **strv_skip(char **l, size_t n);
int strv_extend_n(char ***l, const char *value, size_t n);
+
+int fputstrv(FILE *f, char **l, const char *separator, bool *space);