strv: introduce strv_extendf_with_size()
This commit is contained in:
+2
-2
@@ -906,7 +906,7 @@ void strv_print_full(char * const *l, const char *prefix) {
|
||||
printf("%s%s\n", strempty(prefix), *s);
|
||||
}
|
||||
|
||||
int strv_extendf(char ***l, const char *format, ...) {
|
||||
int strv_extendf_with_size(char ***l, size_t *n, const char *format, ...) {
|
||||
va_list ap;
|
||||
char *x;
|
||||
int r;
|
||||
@@ -918,7 +918,7 @@ int strv_extendf(char ***l, const char *format, ...) {
|
||||
if (r < 0)
|
||||
return -ENOMEM;
|
||||
|
||||
return strv_consume(l, x);
|
||||
return strv_consume_with_size(l, n, x);
|
||||
}
|
||||
|
||||
char* startswith_strv(const char *s, char * const *l) {
|
||||
|
||||
+2
-1
@@ -56,7 +56,8 @@ static inline int strv_extend(char ***l, const char *value) {
|
||||
int strv_extend_many_internal(char ***l, const char *value, ...);
|
||||
#define strv_extend_many(l, ...) strv_extend_many_internal(l, __VA_ARGS__, POINTER_MAX)
|
||||
|
||||
int strv_extendf(char ***l, const char *format, ...) _printf_(2,3);
|
||||
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_push_with_size(char ***l, size_t *n, char *value);
|
||||
static inline int strv_push(char ***l, char *value) {
|
||||
|
||||
@@ -749,6 +749,19 @@ TEST(strv_extendf) {
|
||||
ASSERT_STREQ(b[0], "test3 bar foo 128");
|
||||
}
|
||||
|
||||
TEST(strv_extendf_with_size) {
|
||||
_cleanup_strv_free_ char **a = NULL;
|
||||
size_t n = 0;
|
||||
|
||||
ASSERT_OK(strv_extendf_with_size(&a, &n, "test2 %s %d %s", "foo", 128, "bar"));
|
||||
ASSERT_OK(strv_extendf_with_size(&a, &n, "test3 %s %s %d", "bar", "foo", 128));
|
||||
|
||||
ASSERT_EQ(n, 2u);
|
||||
ASSERT_EQ(strv_length(a), n);
|
||||
ASSERT_STREQ(a[0], "test2 foo 128 bar");
|
||||
ASSERT_STREQ(a[1], "test3 bar foo 128");
|
||||
}
|
||||
|
||||
TEST(strv_foreach) {
|
||||
_cleanup_strv_free_ char **a;
|
||||
unsigned i = 0;
|
||||
|
||||
Reference in New Issue
Block a user