]>
git.ipfire.org Git - thirdparty/systemd.git/blob - strv.c
1 /*-*- Mode: C; c-basic-offset: 8 -*-*/
11 char *strv_find(char **l
, const char *name
) {
22 void strv_free(char **l
) {
34 char **strv_copy(char **l
) {
37 if (!(r
= new(char*, strv_length(l
)+1)))
40 for (k
= r
; *l
; k
++, l
++)
41 if (!(*k
= strdup(*l
)))
48 for (k
--, l
--; k
>= r
; k
--, l
--)
54 unsigned strv_length(char **l
) {
66 char **strv_new(const char *x
, ...) {
69 unsigned n
= 0, i
= 0;
77 while (va_arg(ap
, const char*))
83 if (!(a
= new(char*, n
+1)))
87 if (!(a
[i
] = strdup(x
))) {
96 while ((s
= va_arg(ap
, const char*))) {
97 if (!(a
[i
] = strdup(s
)))
119 char **strv_merge(char **a
, char **b
) {
128 if (!(r
= new(char*, strv_length(a
)+strv_length(b
)+1)))
131 for (k
= r
; *a
; k
++, a
++)
132 if (!(*k
= strdup(*a
)))
135 if (!(*k
= strdup(*b
)))
142 for (k
--; k
>= r
; k
--)
149 bool strv_contains(char **l
, const char *s
) {