]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
strv: introduce strv_join_prefix()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 11 Sep 2018 04:22:31 +0000 (13:22 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 13 Sep 2018 08:02:58 +0000 (17:02 +0900)
src/basic/strv.c
src/basic/strv.h

index abf3fc4c7bd9bc5fb38e030d981500432126cc5d..493fad16a16243c6f50a18aac566cab46e50b58f 100644 (file)
@@ -339,21 +339,22 @@ int strv_split_extract(char ***t, const char *s, const char *separators, Extract
         return (int) n;
 }
 
-char *strv_join(char **l, const char *separator) {
+char *strv_join_prefix(char **l, const char *separator, const char *prefix) {
         char *r, *e;
         char **s;
-        size_t n, k;
+        size_t n, k, m;
 
         if (!separator)
                 separator = " ";
 
         k = strlen(separator);
+        m = strlen_ptr(prefix);
 
         n = 0;
         STRV_FOREACH(s, l) {
                 if (s != l)
                         n += k;
-                n += strlen(*s);
+                n += m + strlen(*s);
         }
 
         r = new(char, n+1);
@@ -365,6 +366,9 @@ char *strv_join(char **l, const char *separator) {
                 if (s != l)
                         e = stpcpy(e, separator);
 
+                if (prefix)
+                        e = stpcpy(e, prefix);
+
                 e = stpcpy(e, *s);
         }
 
index 51d03db9403d03e08200096429fd5465690b0cbe..34a660cb920037286fa24135de772655bc943e1d 100644 (file)
@@ -71,7 +71,10 @@ char **strv_split_newlines(const char *s);
 
 int strv_split_extract(char ***t, const char *s, const char *separators, ExtractFlags flags);
 
-char *strv_join(char **l, const char *separator);
+char *strv_join_prefix(char **l, const char *separator, const char *prefix);
+static inline char *strv_join(char **l, const char *separator) {
+        return strv_join_prefix(l, separator, NULL);
+}
 
 char **strv_parse_nulstr(const char *s, size_t l);
 char **strv_split_nulstr(const char *s);