return strv_consume_with_size(l, n, x);
}
+int strv_extend_joined_with_size_sentinel(char ***l, size_t *n, ...) {
+ va_list ap;
+
+ va_start(ap, n);
+ char *x = strextendv_with_separator(/* x= */ NULL, /* separator=*/ NULL, ap);
+ va_end(ap);
+ if (!x)
+ return -ENOMEM;
+
+ return strv_consume_with_size(l, n, x);
+}
+
char* startswith_strv(const char *s, char * const *l) {
STRV_FOREACH(i, l) {
char *found = startswith(s, *i);
int strv_extendf_with_size(char ***l, size_t *n, const char *format, ...) _printf_(3,4);
#define strv_extendf(l, ...) strv_extendf_with_size(l, NULL, __VA_ARGS__)
+int strv_extend_joined_with_size_sentinel(char ***l, size_t *n, ...) _sentinel_;
+#define strv_extend_joined_with_size(l, n, ...) strv_extend_joined_with_size_sentinel(l, n, __VA_ARGS__, NULL)
+#define strv_extend_joined(l, ...) strv_extend_joined_with_size(l, NULL, __VA_ARGS__)
+
int strv_push_with_size(char ***l, size_t *n, char *value);
static inline int strv_push(char ***l, char *value) {
return strv_push_with_size(l, NULL, value);
ASSERT_STREQ(a[1], "test3 bar foo 128");
}
+TEST(strv_extend_joined) {
+ _cleanup_strv_free_ char **a = NULL;
+
+ ASSERT_OK(strv_extend_joined(&a, "hoge"));
+ ASSERT_OK(strv_extend_joined(&a, "aaa", "bbb", "ccc"));
+
+ ASSERT_EQ(strv_length(a), 2u);
+ ASSERT_STREQ(a[0], "hoge");
+ ASSERT_STREQ(a[1], "aaabbbccc");
+}
+
+TEST(strv_extend_joined_with_size) {
+ _cleanup_strv_free_ char **a = NULL;
+ size_t n = 0;
+
+ ASSERT_OK(strv_extend_joined_with_size(&a, &n, "hoge"));
+ ASSERT_OK(strv_extend_joined_with_size(&a, &n, "aaa", "bbb", "ccc"));
+
+ ASSERT_EQ(n, 2u);
+ ASSERT_EQ(strv_length(a), n);
+ ASSERT_STREQ(a[0], "hoge");
+ ASSERT_STREQ(a[1], "aaabbbccc");
+}
+
TEST(strv_foreach) {
_cleanup_strv_free_ char **a;
unsigned i = 0;