Bug Summary

File:build-scan/../src/test/test-strv.c
Warning:line 661, column 17
Array access (from variable 'l') results in a null pointer dereference

Annotated Source Code

Press '?' to see keyboard shortcuts

clang -cc1 -cc1 -triple x86_64-unknown-linux-gnu -analyze -disable-free -disable-llvm-verifier -discard-value-names -main-file-name test-strv.c -analyzer-store=region -analyzer-opt-analyze-nested-blocks -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model static -mframe-pointer=all -relaxed-aliasing -menable-no-infs -menable-no-nans -menable-unsafe-fp-math -fno-signed-zeros -mreassociate -freciprocal-math -fdenormal-fp-math=preserve-sign,preserve-sign -ffp-contract=fast -fno-rounding-math -ffast-math -ffinite-math-only -mconstructor-aliases -munwind-tables -target-cpu x86-64 -tune-cpu generic -fno-split-dwarf-inlining -debugger-tuning=gdb -resource-dir /usr/lib64/clang/12.0.0 -include config.h -I test-strv.p -I . -I .. -I src/basic -I ../src/basic -I src/shared -I ../src/shared -I src/systemd -I ../src/systemd -I src/journal -I ../src/journal -I src/journal-remote -I ../src/journal-remote -I src/nspawn -I ../src/nspawn -I src/resolve -I ../src/resolve -I src/timesync -I ../src/timesync -I ../src/time-wait-sync -I src/login -I ../src/login -I src/udev -I ../src/udev -I src/libudev -I ../src/libudev -I src/core -I ../src/core -I ../src/libsystemd/sd-bus -I ../src/libsystemd/sd-device -I ../src/libsystemd/sd-hwdb -I ../src/libsystemd/sd-id128 -I ../src/libsystemd/sd-netlink -I ../src/libsystemd/sd-network -I src/libsystemd-network -I ../src/libsystemd-network -D _FILE_OFFSET_BITS=64 -internal-isystem /usr/local/include -internal-isystem /usr/lib64/clang/12.0.0/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -Wwrite-strings -Wno-unused-parameter -Wno-missing-field-initializers -Wno-unused-result -Wno-format-signedness -Wno-error=nonnull -std=gnu99 -fconst-strings -fdebug-compilation-dir /home/mrc0mmand/repos/@redhat-plumbers/systemd-rhel8/build-scan -ferror-limit 19 -fvisibility hidden -stack-protector 2 -fgnuc-version=4.2.1 -fcolor-diagnostics -analyzer-output=html -faddrsig -o /tmp/scan-build-2021-07-16-221226-1465241-1 -x c ../src/test/test-strv.c
1/* SPDX-License-Identifier: LGPL-2.1+ */
2
3#include <string.h>
4
5#include "alloc-util.h"
6#include "escape.h"
7#include "specifier.h"
8#include "string-util.h"
9#include "strv.h"
10#include "util.h"
11
12static void test_specifier_printf(void) {
13 static const Specifier table[] = {
14 { 'a', specifier_string, (char*) "AAAA" },
15 { 'b', specifier_string, (char*) "BBBB" },
16 { 'm', specifier_machine_id, NULL((void*)0) },
17 { 'B', specifier_boot_id, NULL((void*)0) },
18 { 'H', specifier_host_name, NULL((void*)0) },
19 { 'v', specifier_kernel_release, NULL((void*)0) },
20 {}
21 };
22
23 _cleanup_free___attribute__((cleanup(freep))) char *w = NULL((void*)0);
24 int r;
25
26 r = specifier_printf("xxx a=%a b=%b yyy", table, NULL((void*)0), &w);
27 assert_se(r >= 0)do { if ((__builtin_expect(!!(!(r >= 0)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("r >= 0"), "../src/test/test-strv.c",
27, __PRETTY_FUNCTION__); } while (0)
;
28 assert_se(w)do { if ((__builtin_expect(!!(!(w)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("w"), "../src/test/test-strv.c", 28, __PRETTY_FUNCTION__
); } while (0)
;
29
30 puts(w);
31 assert_se(streq(w, "xxx a=AAAA b=BBBB yyy"))do { if ((__builtin_expect(!!(!((strcmp((w),("xxx a=AAAA b=BBBB yyy"
)) == 0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(w, \"xxx a=AAAA b=BBBB yyy\")"
), "../src/test/test-strv.c", 31, __PRETTY_FUNCTION__); } while
(0)
;
32
33 free(w);
34 r = specifier_printf("machine=%m, boot=%B, host=%H, version=%v", table, NULL((void*)0), &w);
35 assert_se(r >= 0)do { if ((__builtin_expect(!!(!(r >= 0)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("r >= 0"), "../src/test/test-strv.c",
35, __PRETTY_FUNCTION__); } while (0)
;
36 assert_se(w)do { if ((__builtin_expect(!!(!(w)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("w"), "../src/test/test-strv.c", 36, __PRETTY_FUNCTION__
); } while (0)
;
37 puts(w);
38}
39
40static void test_str_in_set(void) {
41 assert_se(STR_IN_SET("x", "x", "y", "z"))do { if ((__builtin_expect(!!(!((!!strv_find((((char**) ((const
char*[]) { "x", "y", "z", ((void*)0) }))), ("x"))))),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("STR_IN_SET(\"x\", \"x\", \"y\", \"z\")"
), "../src/test/test-strv.c", 41, __PRETTY_FUNCTION__); } while
(0)
;
42 assert_se(!STR_IN_SET("X", "x", "y", "z"))do { if ((__builtin_expect(!!(!(!(!!strv_find((((char**) ((const
char*[]) { "x", "y", "z", ((void*)0) }))), ("X"))))),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("!STR_IN_SET(\"X\", \"x\", \"y\", \"z\")"
), "../src/test/test-strv.c", 42, __PRETTY_FUNCTION__); } while
(0)
;
43 assert_se(!STR_IN_SET("", "x", "y", "z"))do { if ((__builtin_expect(!!(!(!(!!strv_find((((char**) ((const
char*[]) { "x", "y", "z", ((void*)0) }))), (""))))),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("!STR_IN_SET(\"\", \"x\", \"y\", \"z\")"
), "../src/test/test-strv.c", 43, __PRETTY_FUNCTION__); } while
(0)
;
44 assert_se(STR_IN_SET("x", "w", "x"))do { if ((__builtin_expect(!!(!((!!strv_find((((char**) ((const
char*[]) { "w", "x", ((void*)0) }))), ("x"))))),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("STR_IN_SET(\"x\", \"w\", \"x\")"), "../src/test/test-strv.c"
, 44, __PRETTY_FUNCTION__); } while (0)
;
45}
46
47static void test_strptr_in_set(void) {
48 assert_se(STRPTR_IN_SET("x", "x", "y", "z"))do { if ((__builtin_expect(!!(!(({ const char* _x = ("x"); _x
&& (!!strv_find((((char**) ((const char*[]) { "x", "y"
, "z", ((void*)0) }))), (_x))); }))),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("STRPTR_IN_SET(\"x\", \"x\", \"y\", \"z\")"
), "../src/test/test-strv.c", 48, __PRETTY_FUNCTION__); } while
(0)
;
49 assert_se(!STRPTR_IN_SET("X", "x", "y", "z"))do { if ((__builtin_expect(!!(!(!({ const char* _x = ("X"); _x
&& (!!strv_find((((char**) ((const char*[]) { "x", "y"
, "z", ((void*)0) }))), (_x))); }))),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("!STRPTR_IN_SET(\"X\", \"x\", \"y\", \"z\")"
), "../src/test/test-strv.c", 49, __PRETTY_FUNCTION__); } while
(0)
;
50 assert_se(!STRPTR_IN_SET("", "x", "y", "z"))do { if ((__builtin_expect(!!(!(!({ const char* _x = (""); _x
&& (!!strv_find((((char**) ((const char*[]) { "x", "y"
, "z", ((void*)0) }))), (_x))); }))),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("!STRPTR_IN_SET(\"\", \"x\", \"y\", \"z\")"
), "../src/test/test-strv.c", 50, __PRETTY_FUNCTION__); } while
(0)
;
51 assert_se(STRPTR_IN_SET("x", "w", "x"))do { if ((__builtin_expect(!!(!(({ const char* _x = ("x"); _x
&& (!!strv_find((((char**) ((const char*[]) { "w", "x"
, ((void*)0) }))), (_x))); }))),0))) log_assert_failed_realm(
LOG_REALM_SYSTEMD, ("STRPTR_IN_SET(\"x\", \"w\", \"x\")"), "../src/test/test-strv.c"
, 51, __PRETTY_FUNCTION__); } while (0)
;
52
53 assert_se(!STRPTR_IN_SET(NULL, "x", "y", "z"))do { if ((__builtin_expect(!!(!(!({ const char* _x = (((void*
)0)); _x && (!!strv_find((((char**) ((const char*[]) {
"x", "y", "z", ((void*)0) }))), (_x))); }))),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("!STRPTR_IN_SET(NULL, \"x\", \"y\", \"z\")"
), "../src/test/test-strv.c", 53, __PRETTY_FUNCTION__); } while
(0)
;
54 assert_se(!STRPTR_IN_SET(NULL, ""))do { if ((__builtin_expect(!!(!(!({ const char* _x = (((void*
)0)); _x && (!!strv_find((((char**) ((const char*[]) {
"", ((void*)0) }))), (_x))); }))),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("!STRPTR_IN_SET(NULL, \"\")"), "../src/test/test-strv.c"
, 54, __PRETTY_FUNCTION__); } while (0)
;
55 /* strv cannot contain a null, hence the result below */
56 assert_se(!STRPTR_IN_SET(NULL, NULL))do { if ((__builtin_expect(!!(!(!({ const char* _x = (((void*
)0)); _x && (!!strv_find((((char**) ((const char*[]) {
((void*)0), ((void*)0) }))), (_x))); }))),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("!STRPTR_IN_SET(NULL, NULL)"), "../src/test/test-strv.c"
, 56, __PRETTY_FUNCTION__); } while (0)
;
57}
58
59static void test_startswith_set(void) {
60 assert_se(!STARTSWITH_SET("foo", "bar", "baz", "waldo"))do { if ((__builtin_expect(!!(!(!({ const char *_p = ("foo");
char *_found = ((void*)0), **_i; for ((_i) = (((char**) ((const
char*[]) { "bar", "baz", "waldo", ((void*)0) }))); (_i) &&
*(_i); (_i)++) { _found = startswith(_p, *_i); if (_found) break
; } _found; }))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD
, ("!STARTSWITH_SET(\"foo\", \"bar\", \"baz\", \"waldo\")"), "../src/test/test-strv.c"
, 60, __PRETTY_FUNCTION__); } while (0)
;
61 assert_se(!STARTSWITH_SET("foo", "bar"))do { if ((__builtin_expect(!!(!(!({ const char *_p = ("foo");
char *_found = ((void*)0), **_i; for ((_i) = (((char**) ((const
char*[]) { "bar", ((void*)0) }))); (_i) && *(_i); (_i
)++) { _found = startswith(_p, *_i); if (_found) break; } _found
; }))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("!STARTSWITH_SET(\"foo\", \"bar\")"
), "../src/test/test-strv.c", 61, __PRETTY_FUNCTION__); } while
(0)
;
62
63 assert_se(STARTSWITH_SET("abc", "a", "ab", "abc"))do { if ((__builtin_expect(!!(!(({ const char *_p = ("abc"); char
*_found = ((void*)0), **_i; for ((_i) = (((char**) ((const char
*[]) { "a", "ab", "abc", ((void*)0) }))); (_i) && *(_i
); (_i)++) { _found = startswith(_p, *_i); if (_found) break;
} _found; }))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD
, ("STARTSWITH_SET(\"abc\", \"a\", \"ab\", \"abc\")"), "../src/test/test-strv.c"
, 63, __PRETTY_FUNCTION__); } while (0)
;
64 assert_se(STARTSWITH_SET("abc", "ax", "ab", "abc"))do { if ((__builtin_expect(!!(!(({ const char *_p = ("abc"); char
*_found = ((void*)0), **_i; for ((_i) = (((char**) ((const char
*[]) { "ax", "ab", "abc", ((void*)0) }))); (_i) && *(
_i); (_i)++) { _found = startswith(_p, *_i); if (_found) break
; } _found; }))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD
, ("STARTSWITH_SET(\"abc\", \"ax\", \"ab\", \"abc\")"), "../src/test/test-strv.c"
, 64, __PRETTY_FUNCTION__); } while (0)
;
65 assert_se(STARTSWITH_SET("abc", "ax", "abx", "abc"))do { if ((__builtin_expect(!!(!(({ const char *_p = ("abc"); char
*_found = ((void*)0), **_i; for ((_i) = (((char**) ((const char
*[]) { "ax", "abx", "abc", ((void*)0) }))); (_i) && *
(_i); (_i)++) { _found = startswith(_p, *_i); if (_found) break
; } _found; }))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD
, ("STARTSWITH_SET(\"abc\", \"ax\", \"abx\", \"abc\")"), "../src/test/test-strv.c"
, 65, __PRETTY_FUNCTION__); } while (0)
;
66 assert_se(!STARTSWITH_SET("abc", "ax", "abx", "abcx"))do { if ((__builtin_expect(!!(!(!({ const char *_p = ("abc");
char *_found = ((void*)0), **_i; for ((_i) = (((char**) ((const
char*[]) { "ax", "abx", "abcx", ((void*)0) }))); (_i) &&
*(_i); (_i)++) { _found = startswith(_p, *_i); if (_found) break
; } _found; }))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD
, ("!STARTSWITH_SET(\"abc\", \"ax\", \"abx\", \"abcx\")"), "../src/test/test-strv.c"
, 66, __PRETTY_FUNCTION__); } while (0)
;
67
68 assert_se(streq_ptr(STARTSWITH_SET("foobar", "hhh", "kkk", "foo", "zzz"), "bar"))do { if ((__builtin_expect(!!(!(streq_ptr(({ const char *_p =
("foobar"); char *_found = ((void*)0), **_i; for ((_i) = (((
char**) ((const char*[]) { "hhh", "kkk", "foo", "zzz", ((void
*)0) }))); (_i) && *(_i); (_i)++) { _found = startswith
(_p, *_i); if (_found) break; } _found; }), "bar"))),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("streq_ptr(STARTSWITH_SET(\"foobar\", \"hhh\", \"kkk\", \"foo\", \"zzz\"), \"bar\")"
), "../src/test/test-strv.c", 68, __PRETTY_FUNCTION__); } while
(0)
;
69 assert_se(streq_ptr(STARTSWITH_SET("foobar", "hhh", "kkk", "", "zzz"), "foobar"))do { if ((__builtin_expect(!!(!(streq_ptr(({ const char *_p =
("foobar"); char *_found = ((void*)0), **_i; for ((_i) = (((
char**) ((const char*[]) { "hhh", "kkk", "", "zzz", ((void*)0
) }))); (_i) && *(_i); (_i)++) { _found = startswith(
_p, *_i); if (_found) break; } _found; }), "foobar"))),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("streq_ptr(STARTSWITH_SET(\"foobar\", \"hhh\", \"kkk\", \"\", \"zzz\"), \"foobar\")"
), "../src/test/test-strv.c", 69, __PRETTY_FUNCTION__); } while
(0)
;
70 assert_se(streq_ptr(STARTSWITH_SET("", "hhh", "kkk", "zzz", ""), ""))do { if ((__builtin_expect(!!(!(streq_ptr(({ const char *_p =
(""); char *_found = ((void*)0), **_i; for ((_i) = (((char**
) ((const char*[]) { "hhh", "kkk", "zzz", "", ((void*)0) })))
; (_i) && *(_i); (_i)++) { _found = startswith(_p, *_i
); if (_found) break; } _found; }), ""))),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("streq_ptr(STARTSWITH_SET(\"\", \"hhh\", \"kkk\", \"zzz\", \"\"), \"\")"
), "../src/test/test-strv.c", 70, __PRETTY_FUNCTION__); } while
(0)
;
71}
72
73static const char* const input_table_multiple[] = {
74 "one",
75 "two",
76 "three",
77 NULL((void*)0),
78};
79
80static const char* const input_table_one[] = {
81 "one",
82 NULL((void*)0),
83};
84
85static const char* const input_table_none[] = {
86 NULL((void*)0),
87};
88
89static const char* const input_table_two_empties[] = {
90 "",
91 "",
92 NULL((void*)0),
93};
94
95static const char* const input_table_one_empty[] = {
96 "",
97 NULL((void*)0),
98};
99
100static void test_strv_find(void) {
101 assert_se(strv_find((char **)input_table_multiple, "three"))do { if ((__builtin_expect(!!(!(strv_find((char **)input_table_multiple
, "three"))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, (
"strv_find((char **)input_table_multiple, \"three\")"), "../src/test/test-strv.c"
, 101, __PRETTY_FUNCTION__); } while (0)
;
102 assert_se(!strv_find((char **)input_table_multiple, "four"))do { if ((__builtin_expect(!!(!(!strv_find((char **)input_table_multiple
, "four"))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, (
"!strv_find((char **)input_table_multiple, \"four\")"), "../src/test/test-strv.c"
, 102, __PRETTY_FUNCTION__); } while (0)
;
103}
104
105static void test_strv_find_prefix(void) {
106 assert_se(strv_find_prefix((char **)input_table_multiple, "o"))do { if ((__builtin_expect(!!(!(strv_find_prefix((char **)input_table_multiple
, "o"))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("strv_find_prefix((char **)input_table_multiple, \"o\")"
), "../src/test/test-strv.c", 106, __PRETTY_FUNCTION__); } while
(0)
;
107 assert_se(strv_find_prefix((char **)input_table_multiple, "one"))do { if ((__builtin_expect(!!(!(strv_find_prefix((char **)input_table_multiple
, "one"))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("strv_find_prefix((char **)input_table_multiple, \"one\")"
), "../src/test/test-strv.c", 107, __PRETTY_FUNCTION__); } while
(0)
;
108 assert_se(strv_find_prefix((char **)input_table_multiple, ""))do { if ((__builtin_expect(!!(!(strv_find_prefix((char **)input_table_multiple
, ""))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("strv_find_prefix((char **)input_table_multiple, \"\")"
), "../src/test/test-strv.c", 108, __PRETTY_FUNCTION__); } while
(0)
;
109 assert_se(!strv_find_prefix((char **)input_table_multiple, "xxx"))do { if ((__builtin_expect(!!(!(!strv_find_prefix((char **)input_table_multiple
, "xxx"))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("!strv_find_prefix((char **)input_table_multiple, \"xxx\")"
), "../src/test/test-strv.c", 109, __PRETTY_FUNCTION__); } while
(0)
;
110 assert_se(!strv_find_prefix((char **)input_table_multiple, "onee"))do { if ((__builtin_expect(!!(!(!strv_find_prefix((char **)input_table_multiple
, "onee"))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, (
"!strv_find_prefix((char **)input_table_multiple, \"onee\")")
, "../src/test/test-strv.c", 110, __PRETTY_FUNCTION__); } while
(0)
;
111}
112
113static void test_strv_find_startswith(void) {
114 char *r;
115
116 r = strv_find_startswith((char **)input_table_multiple, "o");
117 assert_se(r && streq(r, "ne"))do { if ((__builtin_expect(!!(!(r && (strcmp((r),("ne"
)) == 0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("r && streq(r, \"ne\")"
), "../src/test/test-strv.c", 117, __PRETTY_FUNCTION__); } while
(0)
;
118
119 r = strv_find_startswith((char **)input_table_multiple, "one");
120 assert_se(r && streq(r, ""))do { if ((__builtin_expect(!!(!(r && (strcmp((r),("")
) == 0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("r && streq(r, \"\")"
), "../src/test/test-strv.c", 120, __PRETTY_FUNCTION__); } while
(0)
;
121
122 r = strv_find_startswith((char **)input_table_multiple, "");
123 assert_se(r && streq(r, "one"))do { if ((__builtin_expect(!!(!(r && (strcmp((r),("one"
)) == 0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("r && streq(r, \"one\")"
), "../src/test/test-strv.c", 123, __PRETTY_FUNCTION__); } while
(0)
;
124
125 assert_se(!strv_find_startswith((char **)input_table_multiple, "xxx"))do { if ((__builtin_expect(!!(!(!strv_find_startswith((char *
*)input_table_multiple, "xxx"))),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("!strv_find_startswith((char **)input_table_multiple, \"xxx\")"
), "../src/test/test-strv.c", 125, __PRETTY_FUNCTION__); } while
(0)
;
126 assert_se(!strv_find_startswith((char **)input_table_multiple, "onee"))do { if ((__builtin_expect(!!(!(!strv_find_startswith((char *
*)input_table_multiple, "onee"))),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("!strv_find_startswith((char **)input_table_multiple, \"onee\")"
), "../src/test/test-strv.c", 126, __PRETTY_FUNCTION__); } while
(0)
;
127}
128
129static void test_strv_join(void) {
130 _cleanup_free___attribute__((cleanup(freep))) char *p = NULL((void*)0), *q = NULL((void*)0), *r = NULL((void*)0), *s = NULL((void*)0), *t = NULL((void*)0), *v = NULL((void*)0), *w = NULL((void*)0);
131
132 p = strv_join((char **)input_table_multiple, ", ");
133 assert_se(p)do { if ((__builtin_expect(!!(!(p)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("p"), "../src/test/test-strv.c", 133, __PRETTY_FUNCTION__
); } while (0)
;
134 assert_se(streq(p, "one, two, three"))do { if ((__builtin_expect(!!(!((strcmp((p),("one, two, three"
)) == 0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(p, \"one, two, three\")"
), "../src/test/test-strv.c", 134, __PRETTY_FUNCTION__); } while
(0)
;
135
136 q = strv_join((char **)input_table_multiple, ";");
137 assert_se(q)do { if ((__builtin_expect(!!(!(q)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("q"), "../src/test/test-strv.c", 137, __PRETTY_FUNCTION__
); } while (0)
;
138 assert_se(streq(q, "one;two;three"))do { if ((__builtin_expect(!!(!((strcmp((q),("one;two;three")
) == 0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(q, \"one;two;three\")"
), "../src/test/test-strv.c", 138, __PRETTY_FUNCTION__); } while
(0)
;
139
140 r = strv_join((char **)input_table_multiple, NULL((void*)0));
141 assert_se(r)do { if ((__builtin_expect(!!(!(r)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("r"), "../src/test/test-strv.c", 141, __PRETTY_FUNCTION__
); } while (0)
;
142 assert_se(streq(r, "one two three"))do { if ((__builtin_expect(!!(!((strcmp((r),("one two three")
) == 0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(r, \"one two three\")"
), "../src/test/test-strv.c", 142, __PRETTY_FUNCTION__); } while
(0)
;
143
144 s = strv_join((char **)input_table_one, ", ");
145 assert_se(s)do { if ((__builtin_expect(!!(!(s)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("s"), "../src/test/test-strv.c", 145, __PRETTY_FUNCTION__
); } while (0)
;
146 assert_se(streq(s, "one"))do { if ((__builtin_expect(!!(!((strcmp((s),("one")) == 0))),
0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(s, \"one\")"
), "../src/test/test-strv.c", 146, __PRETTY_FUNCTION__); } while
(0)
;
147
148 t = strv_join((char **)input_table_none, ", ");
149 assert_se(t)do { if ((__builtin_expect(!!(!(t)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("t"), "../src/test/test-strv.c", 149, __PRETTY_FUNCTION__
); } while (0)
;
150 assert_se(streq(t, ""))do { if ((__builtin_expect(!!(!((strcmp((t),("")) == 0))),0))
) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(t, \"\")"
), "../src/test/test-strv.c", 150, __PRETTY_FUNCTION__); } while
(0)
;
151
152 v = strv_join((char **)input_table_two_empties, ", ");
153 assert_se(v)do { if ((__builtin_expect(!!(!(v)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("v"), "../src/test/test-strv.c", 153, __PRETTY_FUNCTION__
); } while (0)
;
154 assert_se(streq(v, ", "))do { if ((__builtin_expect(!!(!((strcmp((v),(", ")) == 0))),0
))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(v, \", \")"
), "../src/test/test-strv.c", 154, __PRETTY_FUNCTION__); } while
(0)
;
155
156 w = strv_join((char **)input_table_one_empty, ", ");
157 assert_se(w)do { if ((__builtin_expect(!!(!(w)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("w"), "../src/test/test-strv.c", 157, __PRETTY_FUNCTION__
); } while (0)
;
158 assert_se(streq(w, ""))do { if ((__builtin_expect(!!(!((strcmp((w),("")) == 0))),0))
) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(w, \"\")"
), "../src/test/test-strv.c", 158, __PRETTY_FUNCTION__); } while
(0)
;
159}
160
161static void test_strv_unquote(const char *quoted, char **list) {
162 _cleanup_strv_free___attribute__((cleanup(strv_freep))) char **s;
163 _cleanup_free___attribute__((cleanup(freep))) char *j;
164 unsigned i = 0;
165 char **t;
166 int r;
167
168 r = strv_split_extract(&s, quoted, WHITESPACE" \t\n\r", EXTRACT_QUOTES);
169 assert_se(r == (int) strv_length(list))do { if ((__builtin_expect(!!(!(r == (int) strv_length(list))
),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("r == (int) strv_length(list)"
), "../src/test/test-strv.c", 169, __PRETTY_FUNCTION__); } while
(0)
;
170 assert_se(s)do { if ((__builtin_expect(!!(!(s)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("s"), "../src/test/test-strv.c", 170, __PRETTY_FUNCTION__
); } while (0)
;
171 j = strv_join(s, " | ");
172 assert_se(j)do { if ((__builtin_expect(!!(!(j)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("j"), "../src/test/test-strv.c", 172, __PRETTY_FUNCTION__
); } while (0)
;
173 puts(j);
174
175 STRV_FOREACH(t, s)for ((t) = (s); (t) && *(t); (t)++)
176 assert_se(streq(list[i++], *t))do { if ((__builtin_expect(!!(!((strcmp((list[i++]),(*t)) == 0
))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(list[i++], *t)"
), "../src/test/test-strv.c", 176, __PRETTY_FUNCTION__); } while
(0)
;
177
178 assert_se(list[i] == NULL)do { if ((__builtin_expect(!!(!(list[i] == ((void*)0))),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("list[i] == NULL"), "../src/test/test-strv.c"
, 178, __PRETTY_FUNCTION__); } while (0)
;
179}
180
181static void test_invalid_unquote(const char *quoted) {
182 char **s = NULL((void*)0);
183 int r;
184
185 r = strv_split_extract(&s, quoted, WHITESPACE" \t\n\r", EXTRACT_QUOTES);
186 assert_se(s == NULL)do { if ((__builtin_expect(!!(!(s == ((void*)0))),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("s == NULL"), "../src/test/test-strv.c",
186, __PRETTY_FUNCTION__); } while (0)
;
187 assert_se(r == -EINVAL)do { if ((__builtin_expect(!!(!(r == -22)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("r == -EINVAL"), "../src/test/test-strv.c"
, 187, __PRETTY_FUNCTION__); } while (0)
;
188}
189
190static void test_strv_split(void) {
191 char **s;
192 unsigned i = 0;
193 _cleanup_strv_free___attribute__((cleanup(strv_freep))) char **l = NULL((void*)0);
194 const char str[] = "one,two,three";
195
196 l = strv_split(str, ",");
197
198 assert_se(l)do { if ((__builtin_expect(!!(!(l)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("l"), "../src/test/test-strv.c", 198, __PRETTY_FUNCTION__
); } while (0)
;
199
200 STRV_FOREACH(s, l)for ((s) = (l); (s) && *(s); (s)++) {
201 assert_se(streq(*s, input_table_multiple[i++]))do { if ((__builtin_expect(!!(!((strcmp((*s),(input_table_multiple
[i++])) == 0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD
, ("streq(*s, input_table_multiple[i++])"), "../src/test/test-strv.c"
, 201, __PRETTY_FUNCTION__); } while (0)
;
202 }
203}
204
205static void test_strv_split_extract(void) {
206 _cleanup_strv_free___attribute__((cleanup(strv_freep))) char **l = NULL((void*)0);
207 const char *str = ":foo\\:bar::waldo:";
208 int r;
209
210 r = strv_split_extract(&l, str, ":", EXTRACT_DONT_COALESCE_SEPARATORS);
211 assert_se(r == (int) strv_length(l))do { if ((__builtin_expect(!!(!(r == (int) strv_length(l))),0
))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("r == (int) strv_length(l)"
), "../src/test/test-strv.c", 211, __PRETTY_FUNCTION__); } while
(0)
;
212 assert_se(streq_ptr(l[0], ""))do { if ((__builtin_expect(!!(!(streq_ptr(l[0], ""))),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("streq_ptr(l[0], \"\")"), "../src/test/test-strv.c"
, 212, __PRETTY_FUNCTION__); } while (0)
;
213 assert_se(streq_ptr(l[1], "foo:bar"))do { if ((__builtin_expect(!!(!(streq_ptr(l[1], "foo:bar"))),
0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq_ptr(l[1], \"foo:bar\")"
), "../src/test/test-strv.c", 213, __PRETTY_FUNCTION__); } while
(0)
;
214 assert_se(streq_ptr(l[2], ""))do { if ((__builtin_expect(!!(!(streq_ptr(l[2], ""))),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("streq_ptr(l[2], \"\")"), "../src/test/test-strv.c"
, 214, __PRETTY_FUNCTION__); } while (0)
;
215 assert_se(streq_ptr(l[3], "waldo"))do { if ((__builtin_expect(!!(!(streq_ptr(l[3], "waldo"))),0)
)) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq_ptr(l[3], \"waldo\")"
), "../src/test/test-strv.c", 215, __PRETTY_FUNCTION__); } while
(0)
;
216 assert_se(streq_ptr(l[4], ""))do { if ((__builtin_expect(!!(!(streq_ptr(l[4], ""))),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("streq_ptr(l[4], \"\")"), "../src/test/test-strv.c"
, 216, __PRETTY_FUNCTION__); } while (0)
;
217 assert_se(streq_ptr(l[5], NULL))do { if ((__builtin_expect(!!(!(streq_ptr(l[5], ((void*)0))))
,0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq_ptr(l[5], NULL)"
), "../src/test/test-strv.c", 217, __PRETTY_FUNCTION__); } while
(0)
;
218}
219
220static void test_strv_split_newlines(void) {
221 unsigned i = 0;
222 char **s;
223 _cleanup_strv_free___attribute__((cleanup(strv_freep))) char **l = NULL((void*)0);
224 const char str[] = "one\ntwo\nthree";
225
226 l = strv_split_newlines(str);
227
228 assert_se(l)do { if ((__builtin_expect(!!(!(l)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("l"), "../src/test/test-strv.c", 228, __PRETTY_FUNCTION__
); } while (0)
;
229
230 STRV_FOREACH(s, l)for ((s) = (l); (s) && *(s); (s)++) {
231 assert_se(streq(*s, input_table_multiple[i++]))do { if ((__builtin_expect(!!(!((strcmp((*s),(input_table_multiple
[i++])) == 0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD
, ("streq(*s, input_table_multiple[i++])"), "../src/test/test-strv.c"
, 231, __PRETTY_FUNCTION__); } while (0)
;
232 }
233}
234
235static void test_strv_split_nulstr(void) {
236 _cleanup_strv_free___attribute__((cleanup(strv_freep))) char **l = NULL((void*)0);
237 const char nulstr[] = "str0\0str1\0str2\0str3\0";
238
239 l = strv_split_nulstr (nulstr);
240 assert_se(l)do { if ((__builtin_expect(!!(!(l)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("l"), "../src/test/test-strv.c", 240, __PRETTY_FUNCTION__
); } while (0)
;
241
242 assert_se(streq(l[0], "str0"))do { if ((__builtin_expect(!!(!((strcmp((l[0]),("str0")) == 0
))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(l[0], \"str0\")"
), "../src/test/test-strv.c", 242, __PRETTY_FUNCTION__); } while
(0)
;
243 assert_se(streq(l[1], "str1"))do { if ((__builtin_expect(!!(!((strcmp((l[1]),("str1")) == 0
))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(l[1], \"str1\")"
), "../src/test/test-strv.c", 243, __PRETTY_FUNCTION__); } while
(0)
;
244 assert_se(streq(l[2], "str2"))do { if ((__builtin_expect(!!(!((strcmp((l[2]),("str2")) == 0
))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(l[2], \"str2\")"
), "../src/test/test-strv.c", 244, __PRETTY_FUNCTION__); } while
(0)
;
245 assert_se(streq(l[3], "str3"))do { if ((__builtin_expect(!!(!((strcmp((l[3]),("str3")) == 0
))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(l[3], \"str3\")"
), "../src/test/test-strv.c", 245, __PRETTY_FUNCTION__); } while
(0)
;
246}
247
248static void test_strv_parse_nulstr(void) {
249 _cleanup_strv_free___attribute__((cleanup(strv_freep))) char **l = NULL((void*)0);
250 const char nulstr[] = "fuck\0fuck2\0fuck3\0\0fuck5\0\0xxx";
251
252 l = strv_parse_nulstr(nulstr, sizeof(nulstr)-1);
253 assert_se(l)do { if ((__builtin_expect(!!(!(l)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("l"), "../src/test/test-strv.c", 253, __PRETTY_FUNCTION__
); } while (0)
;
254 puts("Parse nulstr:");
255 strv_print(l);
256
257 assert_se(streq(l[0], "fuck"))do { if ((__builtin_expect(!!(!((strcmp((l[0]),("fuck")) == 0
))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(l[0], \"fuck\")"
), "../src/test/test-strv.c", 257, __PRETTY_FUNCTION__); } while
(0)
;
258 assert_se(streq(l[1], "fuck2"))do { if ((__builtin_expect(!!(!((strcmp((l[1]),("fuck2")) == 0
))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(l[1], \"fuck2\")"
), "../src/test/test-strv.c", 258, __PRETTY_FUNCTION__); } while
(0)
;
259 assert_se(streq(l[2], "fuck3"))do { if ((__builtin_expect(!!(!((strcmp((l[2]),("fuck3")) == 0
))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(l[2], \"fuck3\")"
), "../src/test/test-strv.c", 259, __PRETTY_FUNCTION__); } while
(0)
;
260 assert_se(streq(l[3], ""))do { if ((__builtin_expect(!!(!((strcmp((l[3]),("")) == 0))),
0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(l[3], \"\")"
), "../src/test/test-strv.c", 260, __PRETTY_FUNCTION__); } while
(0)
;
261 assert_se(streq(l[4], "fuck5"))do { if ((__builtin_expect(!!(!((strcmp((l[4]),("fuck5")) == 0
))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(l[4], \"fuck5\")"
), "../src/test/test-strv.c", 261, __PRETTY_FUNCTION__); } while
(0)
;
262 assert_se(streq(l[5], ""))do { if ((__builtin_expect(!!(!((strcmp((l[5]),("")) == 0))),
0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(l[5], \"\")"
), "../src/test/test-strv.c", 262, __PRETTY_FUNCTION__); } while
(0)
;
263 assert_se(streq(l[6], "xxx"))do { if ((__builtin_expect(!!(!((strcmp((l[6]),("xxx")) == 0)
)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(l[6], \"xxx\")"
), "../src/test/test-strv.c", 263, __PRETTY_FUNCTION__); } while
(0)
;
264}
265
266static void test_strv_overlap(void) {
267 const char * const input_table[] = {
268 "one",
269 "two",
270 "three",
271 NULL((void*)0)
272 };
273 const char * const input_table_overlap[] = {
274 "two",
275 NULL((void*)0)
276 };
277 const char * const input_table_unique[] = {
278 "four",
279 "five",
280 "six",
281 NULL((void*)0)
282 };
283
284 assert_se(strv_overlap((char **)input_table, (char**)input_table_overlap))do { if ((__builtin_expect(!!(!(strv_overlap((char **)input_table
, (char**)input_table_overlap))),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("strv_overlap((char **)input_table, (char**)input_table_overlap)"
), "../src/test/test-strv.c", 284, __PRETTY_FUNCTION__); } while
(0)
;
285 assert_se(!strv_overlap((char **)input_table, (char**)input_table_unique))do { if ((__builtin_expect(!!(!(!strv_overlap((char **)input_table
, (char**)input_table_unique))),0))) log_assert_failed_realm(
LOG_REALM_SYSTEMD, ("!strv_overlap((char **)input_table, (char**)input_table_unique)"
), "../src/test/test-strv.c", 285, __PRETTY_FUNCTION__); } while
(0)
;
286}
287
288static void test_strv_sort(void) {
289 const char* input_table[] = {
290 "durian",
291 "apple",
292 "citrus",
293 "CAPITAL LETTERS FIRST",
294 "banana",
295 NULL((void*)0)
296 };
297
298 strv_sort((char **)input_table);
299
300 assert_se(streq(input_table[0], "CAPITAL LETTERS FIRST"))do { if ((__builtin_expect(!!(!((strcmp((input_table[0]),("CAPITAL LETTERS FIRST"
)) == 0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(input_table[0], \"CAPITAL LETTERS FIRST\")"
), "../src/test/test-strv.c", 300, __PRETTY_FUNCTION__); } while
(0)
;
301 assert_se(streq(input_table[1], "apple"))do { if ((__builtin_expect(!!(!((strcmp((input_table[1]),("apple"
)) == 0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(input_table[1], \"apple\")"
), "../src/test/test-strv.c", 301, __PRETTY_FUNCTION__); } while
(0)
;
302 assert_se(streq(input_table[2], "banana"))do { if ((__builtin_expect(!!(!((strcmp((input_table[2]),("banana"
)) == 0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(input_table[2], \"banana\")"
), "../src/test/test-strv.c", 302, __PRETTY_FUNCTION__); } while
(0)
;
303 assert_se(streq(input_table[3], "citrus"))do { if ((__builtin_expect(!!(!((strcmp((input_table[3]),("citrus"
)) == 0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(input_table[3], \"citrus\")"
), "../src/test/test-strv.c", 303, __PRETTY_FUNCTION__); } while
(0)
;
304 assert_se(streq(input_table[4], "durian"))do { if ((__builtin_expect(!!(!((strcmp((input_table[4]),("durian"
)) == 0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(input_table[4], \"durian\")"
), "../src/test/test-strv.c", 304, __PRETTY_FUNCTION__); } while
(0)
;
305}
306
307static void test_strv_extend_strv_concat(void) {
308 _cleanup_strv_free___attribute__((cleanup(strv_freep))) char **a = NULL((void*)0), **b = NULL((void*)0);
309
310 a = strv_new("without", "suffix", NULL((void*)0));
311 b = strv_new("with", "suffix", NULL((void*)0));
312 assert_se(a)do { if ((__builtin_expect(!!(!(a)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("a"), "../src/test/test-strv.c", 312, __PRETTY_FUNCTION__
); } while (0)
;
313 assert_se(b)do { if ((__builtin_expect(!!(!(b)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("b"), "../src/test/test-strv.c", 313, __PRETTY_FUNCTION__
); } while (0)
;
314
315 assert_se(strv_extend_strv_concat(&a, b, "_suffix") >= 0)do { if ((__builtin_expect(!!(!(strv_extend_strv_concat(&
a, b, "_suffix") >= 0)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD
, ("strv_extend_strv_concat(&a, b, \"_suffix\") >= 0")
, "../src/test/test-strv.c", 315, __PRETTY_FUNCTION__); } while
(0)
;
316
317 assert_se(streq(a[0], "without"))do { if ((__builtin_expect(!!(!((strcmp((a[0]),("without")) ==
0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(a[0], \"without\")"
), "../src/test/test-strv.c", 317, __PRETTY_FUNCTION__); } while
(0)
;
318 assert_se(streq(a[1], "suffix"))do { if ((__builtin_expect(!!(!((strcmp((a[1]),("suffix")) ==
0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(a[1], \"suffix\")"
), "../src/test/test-strv.c", 318, __PRETTY_FUNCTION__); } while
(0)
;
319 assert_se(streq(a[2], "with_suffix"))do { if ((__builtin_expect(!!(!((strcmp((a[2]),("with_suffix"
)) == 0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(a[2], \"with_suffix\")"
), "../src/test/test-strv.c", 319, __PRETTY_FUNCTION__); } while
(0)
;
320 assert_se(streq(a[3], "suffix_suffix"))do { if ((__builtin_expect(!!(!((strcmp((a[3]),("suffix_suffix"
)) == 0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(a[3], \"suffix_suffix\")"
), "../src/test/test-strv.c", 320, __PRETTY_FUNCTION__); } while
(0)
;
321}
322
323static void test_strv_extend_strv(void) {
324 _cleanup_strv_free___attribute__((cleanup(strv_freep))) char **a = NULL((void*)0), **b = NULL((void*)0), **n = NULL((void*)0);
325
326 a = strv_new("abc", "def", "ghi", NULL((void*)0));
327 b = strv_new("jkl", "mno", "abc", "pqr", NULL((void*)0));
328 assert_se(a)do { if ((__builtin_expect(!!(!(a)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("a"), "../src/test/test-strv.c", 328, __PRETTY_FUNCTION__
); } while (0)
;
329 assert_se(b)do { if ((__builtin_expect(!!(!(b)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("b"), "../src/test/test-strv.c", 329, __PRETTY_FUNCTION__
); } while (0)
;
330
331 assert_se(strv_extend_strv(&a, b, true) == 3)do { if ((__builtin_expect(!!(!(strv_extend_strv(&a, b, 1
) == 3)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("strv_extend_strv(&a, b, true) == 3"
), "../src/test/test-strv.c", 331, __PRETTY_FUNCTION__); } while
(0)
;
332
333 assert_se(streq(a[0], "abc"))do { if ((__builtin_expect(!!(!((strcmp((a[0]),("abc")) == 0)
)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(a[0], \"abc\")"
), "../src/test/test-strv.c", 333, __PRETTY_FUNCTION__); } while
(0)
;
334 assert_se(streq(a[1], "def"))do { if ((__builtin_expect(!!(!((strcmp((a[1]),("def")) == 0)
)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(a[1], \"def\")"
), "../src/test/test-strv.c", 334, __PRETTY_FUNCTION__); } while
(0)
;
335 assert_se(streq(a[2], "ghi"))do { if ((__builtin_expect(!!(!((strcmp((a[2]),("ghi")) == 0)
)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(a[2], \"ghi\")"
), "../src/test/test-strv.c", 335, __PRETTY_FUNCTION__); } while
(0)
;
336 assert_se(streq(a[3], "jkl"))do { if ((__builtin_expect(!!(!((strcmp((a[3]),("jkl")) == 0)
)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(a[3], \"jkl\")"
), "../src/test/test-strv.c", 336, __PRETTY_FUNCTION__); } while
(0)
;
337 assert_se(streq(a[4], "mno"))do { if ((__builtin_expect(!!(!((strcmp((a[4]),("mno")) == 0)
)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(a[4], \"mno\")"
), "../src/test/test-strv.c", 337, __PRETTY_FUNCTION__); } while
(0)
;
338 assert_se(streq(a[5], "pqr"))do { if ((__builtin_expect(!!(!((strcmp((a[5]),("pqr")) == 0)
)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(a[5], \"pqr\")"
), "../src/test/test-strv.c", 338, __PRETTY_FUNCTION__); } while
(0)
;
339 assert_se(strv_length(a) == 6)do { if ((__builtin_expect(!!(!(strv_length(a) == 6)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("strv_length(a) == 6"), "../src/test/test-strv.c"
, 339, __PRETTY_FUNCTION__); } while (0)
;
340
341 assert_se(strv_extend_strv(&n, b, false) >= 0)do { if ((__builtin_expect(!!(!(strv_extend_strv(&n, b, 0
) >= 0)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, (
"strv_extend_strv(&n, b, false) >= 0"), "../src/test/test-strv.c"
, 341, __PRETTY_FUNCTION__); } while (0)
;
342 assert_se(streq(n[0], "jkl"))do { if ((__builtin_expect(!!(!((strcmp((n[0]),("jkl")) == 0)
)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(n[0], \"jkl\")"
), "../src/test/test-strv.c", 342, __PRETTY_FUNCTION__); } while
(0)
;
343 assert_se(streq(n[1], "mno"))do { if ((__builtin_expect(!!(!((strcmp((n[1]),("mno")) == 0)
)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(n[1], \"mno\")"
), "../src/test/test-strv.c", 343, __PRETTY_FUNCTION__); } while
(0)
;
344 assert_se(streq(n[2], "abc"))do { if ((__builtin_expect(!!(!((strcmp((n[2]),("abc")) == 0)
)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(n[2], \"abc\")"
), "../src/test/test-strv.c", 344, __PRETTY_FUNCTION__); } while
(0)
;
345 assert_se(streq(n[3], "pqr"))do { if ((__builtin_expect(!!(!((strcmp((n[3]),("pqr")) == 0)
)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(n[3], \"pqr\")"
), "../src/test/test-strv.c", 345, __PRETTY_FUNCTION__); } while
(0)
;
346 assert_se(strv_length(n) == 4)do { if ((__builtin_expect(!!(!(strv_length(n) == 4)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("strv_length(n) == 4"), "../src/test/test-strv.c"
, 346, __PRETTY_FUNCTION__); } while (0)
;
347}
348
349static void test_strv_extend(void) {
350 _cleanup_strv_free___attribute__((cleanup(strv_freep))) char **a = NULL((void*)0), **b = NULL((void*)0);
351
352 a = strv_new("test", "test1", NULL((void*)0));
353 assert_se(a)do { if ((__builtin_expect(!!(!(a)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("a"), "../src/test/test-strv.c", 353, __PRETTY_FUNCTION__
); } while (0)
;
354 assert_se(strv_extend(&a, "test2") >= 0)do { if ((__builtin_expect(!!(!(strv_extend(&a, "test2") >=
0)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("strv_extend(&a, \"test2\") >= 0"
), "../src/test/test-strv.c", 354, __PRETTY_FUNCTION__); } while
(0)
;
355 assert_se(strv_extend(&b, "test3") >= 0)do { if ((__builtin_expect(!!(!(strv_extend(&b, "test3") >=
0)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("strv_extend(&b, \"test3\") >= 0"
), "../src/test/test-strv.c", 355, __PRETTY_FUNCTION__); } while
(0)
;
356
357 assert_se(streq(a[0], "test"))do { if ((__builtin_expect(!!(!((strcmp((a[0]),("test")) == 0
))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(a[0], \"test\")"
), "../src/test/test-strv.c", 357, __PRETTY_FUNCTION__); } while
(0)
;
358 assert_se(streq(a[1], "test1"))do { if ((__builtin_expect(!!(!((strcmp((a[1]),("test1")) == 0
))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(a[1], \"test1\")"
), "../src/test/test-strv.c", 358, __PRETTY_FUNCTION__); } while
(0)
;
359 assert_se(streq(a[2], "test2"))do { if ((__builtin_expect(!!(!((strcmp((a[2]),("test2")) == 0
))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(a[2], \"test2\")"
), "../src/test/test-strv.c", 359, __PRETTY_FUNCTION__); } while
(0)
;
360 assert_se(streq(b[0], "test3"))do { if ((__builtin_expect(!!(!((strcmp((b[0]),("test3")) == 0
))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(b[0], \"test3\")"
), "../src/test/test-strv.c", 360, __PRETTY_FUNCTION__); } while
(0)
;
361}
362
363static void test_strv_extendf(void) {
364 _cleanup_strv_free___attribute__((cleanup(strv_freep))) char **a = NULL((void*)0), **b = NULL((void*)0);
365
366 a = strv_new("test", "test1", NULL((void*)0));
367 assert_se(a)do { if ((__builtin_expect(!!(!(a)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("a"), "../src/test/test-strv.c", 367, __PRETTY_FUNCTION__
); } while (0)
;
368 assert_se(strv_extendf(&a, "test2 %s %d %s", "foo", 128, "bar") >= 0)do { if ((__builtin_expect(!!(!(strv_extendf(&a, "test2 %s %d %s"
, "foo", 128, "bar") >= 0)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD
, ("strv_extendf(&a, \"test2 %s %d %s\", \"foo\", 128, \"bar\") >= 0"
), "../src/test/test-strv.c", 368, __PRETTY_FUNCTION__); } while
(0)
;
369 assert_se(strv_extendf(&b, "test3 %s %s %d", "bar", "foo", 128) >= 0)do { if ((__builtin_expect(!!(!(strv_extendf(&b, "test3 %s %s %d"
, "bar", "foo", 128) >= 0)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD
, ("strv_extendf(&b, \"test3 %s %s %d\", \"bar\", \"foo\", 128) >= 0"
), "../src/test/test-strv.c", 369, __PRETTY_FUNCTION__); } while
(0)
;
370
371 assert_se(streq(a[0], "test"))do { if ((__builtin_expect(!!(!((strcmp((a[0]),("test")) == 0
))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(a[0], \"test\")"
), "../src/test/test-strv.c", 371, __PRETTY_FUNCTION__); } while
(0)
;
372 assert_se(streq(a[1], "test1"))do { if ((__builtin_expect(!!(!((strcmp((a[1]),("test1")) == 0
))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(a[1], \"test1\")"
), "../src/test/test-strv.c", 372, __PRETTY_FUNCTION__); } while
(0)
;
373 assert_se(streq(a[2], "test2 foo 128 bar"))do { if ((__builtin_expect(!!(!((strcmp((a[2]),("test2 foo 128 bar"
)) == 0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(a[2], \"test2 foo 128 bar\")"
), "../src/test/test-strv.c", 373, __PRETTY_FUNCTION__); } while
(0)
;
374 assert_se(streq(b[0], "test3 bar foo 128"))do { if ((__builtin_expect(!!(!((strcmp((b[0]),("test3 bar foo 128"
)) == 0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(b[0], \"test3 bar foo 128\")"
), "../src/test/test-strv.c", 374, __PRETTY_FUNCTION__); } while
(0)
;
375}
376
377static void test_strv_foreach(void) {
378 _cleanup_strv_free___attribute__((cleanup(strv_freep))) char **a;
379 unsigned i = 0;
380 char **check;
381
382 a = strv_new("one", "two", "three", NULL((void*)0));
383
384 assert_se(a)do { if ((__builtin_expect(!!(!(a)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("a"), "../src/test/test-strv.c", 384, __PRETTY_FUNCTION__
); } while (0)
;
385
386 STRV_FOREACH(check, a)for ((check) = (a); (check) && *(check); (check)++) {
387 assert_se(streq(*check, input_table_multiple[i++]))do { if ((__builtin_expect(!!(!((strcmp((*check),(input_table_multiple
[i++])) == 0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD
, ("streq(*check, input_table_multiple[i++])"), "../src/test/test-strv.c"
, 387, __PRETTY_FUNCTION__); } while (0)
;
388 }
389}
390
391static void test_strv_foreach_backwards(void) {
392 _cleanup_strv_free___attribute__((cleanup(strv_freep))) char **a;
393 unsigned i = 2;
394 char **check;
395
396 a = strv_new("one", "two", "three", NULL((void*)0));
397
398 assert_se(a)do { if ((__builtin_expect(!!(!(a)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("a"), "../src/test/test-strv.c", 398, __PRETTY_FUNCTION__
); } while (0)
;
399
400 STRV_FOREACH_BACKWARDS(check, a)for (check = ({ char **_l = a; _l ? _l + strv_length(_l) - 1U
: ((void*)0); }); (a) && ((check) >= (a)); (check
)--)
401 assert_se(streq_ptr(*check, input_table_multiple[i--]))do { if ((__builtin_expect(!!(!(streq_ptr(*check, input_table_multiple
[i--]))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq_ptr(*check, input_table_multiple[i--])"
), "../src/test/test-strv.c", 401, __PRETTY_FUNCTION__); } while
(0)
;
402
403 STRV_FOREACH_BACKWARDS(check, (char**) NULL)for (check = ({ char **_l = (char**) ((void*)0); _l ? _l + strv_length
(_l) - 1U : ((void*)0); }); ((char**) ((void*)0)) && (
(check) >= ((char**) ((void*)0))); (check)--)
404 assert_not_reached("Let's see that we check empty strv right, too.")do { log_assert_failed_unreachable_realm(LOG_REALM_SYSTEMD, (
"Let's see that we check empty strv right, too."), "../src/test/test-strv.c"
, 404, __PRETTY_FUNCTION__); } while (0)
;
405
406 STRV_FOREACH_BACKWARDS(check, (char**) { NULL })for (check = ({ char **_l = (char**) { ((void*)0) }; _l ? _l +
strv_length(_l) - 1U : ((void*)0); }); ((char**) { ((void*)0
) }) && ((check) >= ((char**) { ((void*)0) })); (check
)--)
407 assert_not_reached("Let's see that we check empty strv right, too.")do { log_assert_failed_unreachable_realm(LOG_REALM_SYSTEMD, (
"Let's see that we check empty strv right, too."), "../src/test/test-strv.c"
, 407, __PRETTY_FUNCTION__); } while (0)
;
408}
409
410static void test_strv_foreach_pair(void) {
411 _cleanup_strv_free___attribute__((cleanup(strv_freep))) char **a = NULL((void*)0);
412 char **x, **y;
413
414 a = strv_new("pair_one", "pair_one",
415 "pair_two", "pair_two",
416 "pair_three", "pair_three",
417 NULL((void*)0));
418
419 STRV_FOREACH_PAIR(x, y, a)for ((x) = (a), (y) = (x+1); (x) && *(x) && *
(y); (x) += 2, (y) = (x + 1))
{
420 assert_se(streq(*x, *y))do { if ((__builtin_expect(!!(!((strcmp((*x),(*y)) == 0))),0)
)) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(*x, *y)"
), "../src/test/test-strv.c", 420, __PRETTY_FUNCTION__); } while
(0)
;
421 }
422}
423
424static void test_strv_from_stdarg_alloca_one(char **l, const char *first, ...) {
425 char **j;
426 unsigned i;
427
428 j = strv_from_stdarg_alloca(first)({ char **_l; if (!first) _l = (char**) &first; else { size_t
_n; va_list _ap; _n = 1; __builtin_va_start(_ap, first); while
(__builtin_va_arg(_ap, char*)) _n++; __builtin_va_end(_ap); _l
= ({ do { if ((__builtin_expect(!!(!(!size_multiply_overflow
(sizeof(char*), _n+1))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD
, ("!size_multiply_overflow(sizeof(char*), _n+1)"), "../src/test/test-strv.c"
, 428, __PRETTY_FUNCTION__); } while (0); (char**) __builtin_alloca
(sizeof(char*)*(_n+1)); }); _l[_n = 0] = (char*) first; __builtin_va_start
(_ap, first); for (;;) { _l[++_n] = __builtin_va_arg(_ap, char
*); if (!_l[_n]) break; } __builtin_va_end(_ap); } _l; })
;
429
430 for (i = 0;; i++) {
431 assert_se(streq_ptr(l[i], j[i]))do { if ((__builtin_expect(!!(!(streq_ptr(l[i], j[i]))),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("streq_ptr(l[i], j[i])"), "../src/test/test-strv.c"
, 431, __PRETTY_FUNCTION__); } while (0)
;
432
433 if (!l[i])
434 break;
435 }
436}
437
438static void test_strv_from_stdarg_alloca(void) {
439 test_strv_from_stdarg_alloca_one(STRV_MAKE("foo", "bar")((char**) ((const char*[]) { "foo", "bar", ((void*)0) })), "foo", "bar", NULL((void*)0));
440 test_strv_from_stdarg_alloca_one(STRV_MAKE("foo")((char**) ((const char*[]) { "foo", ((void*)0) })), "foo", NULL((void*)0));
441 test_strv_from_stdarg_alloca_one(STRV_MAKE_EMPTY((char*[1]) { ((void*)0) }), NULL((void*)0));
442}
443
444static void test_strv_insert(void) {
445 _cleanup_strv_free___attribute__((cleanup(strv_freep))) char **a = NULL((void*)0);
446
447 assert_se(strv_insert(&a, 0, strdup("first")) == 0)do { if ((__builtin_expect(!!(!(strv_insert(&a, 0, strdup
("first")) == 0)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD
, ("strv_insert(&a, 0, strdup(\"first\")) == 0"), "../src/test/test-strv.c"
, 447, __PRETTY_FUNCTION__); } while (0)
;
448 assert_se(streq(a[0], "first"))do { if ((__builtin_expect(!!(!((strcmp((a[0]),("first")) == 0
))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(a[0], \"first\")"
), "../src/test/test-strv.c", 448, __PRETTY_FUNCTION__); } while
(0)
;
449 assert_se(!a[1])do { if ((__builtin_expect(!!(!(!a[1])),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("!a[1]"), "../src/test/test-strv.c", 449
, __PRETTY_FUNCTION__); } while (0)
;
450
451 assert_se(strv_insert(&a, 0, NULL) == 0)do { if ((__builtin_expect(!!(!(strv_insert(&a, 0, ((void
*)0)) == 0)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, (
"strv_insert(&a, 0, NULL) == 0"), "../src/test/test-strv.c"
, 451, __PRETTY_FUNCTION__); } while (0)
;
452 assert_se(streq(a[0], "first"))do { if ((__builtin_expect(!!(!((strcmp((a[0]),("first")) == 0
))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(a[0], \"first\")"
), "../src/test/test-strv.c", 452, __PRETTY_FUNCTION__); } while
(0)
;
453 assert_se(!a[1])do { if ((__builtin_expect(!!(!(!a[1])),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("!a[1]"), "../src/test/test-strv.c", 453
, __PRETTY_FUNCTION__); } while (0)
;
454
455 assert_se(strv_insert(&a, 1, strdup("two")) == 0)do { if ((__builtin_expect(!!(!(strv_insert(&a, 1, strdup
("two")) == 0)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD
, ("strv_insert(&a, 1, strdup(\"two\")) == 0"), "../src/test/test-strv.c"
, 455, __PRETTY_FUNCTION__); } while (0)
;
456 assert_se(streq(a[0], "first"))do { if ((__builtin_expect(!!(!((strcmp((a[0]),("first")) == 0
))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(a[0], \"first\")"
), "../src/test/test-strv.c", 456, __PRETTY_FUNCTION__); } while
(0)
;
457 assert_se(streq(a[1], "two"))do { if ((__builtin_expect(!!(!((strcmp((a[1]),("two")) == 0)
)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(a[1], \"two\")"
), "../src/test/test-strv.c", 457, __PRETTY_FUNCTION__); } while
(0)
;
458 assert_se(!a[2])do { if ((__builtin_expect(!!(!(!a[2])),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("!a[2]"), "../src/test/test-strv.c", 458
, __PRETTY_FUNCTION__); } while (0)
;
459
460 assert_se(strv_insert(&a, 4, strdup("tri")) == 0)do { if ((__builtin_expect(!!(!(strv_insert(&a, 4, strdup
("tri")) == 0)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD
, ("strv_insert(&a, 4, strdup(\"tri\")) == 0"), "../src/test/test-strv.c"
, 460, __PRETTY_FUNCTION__); } while (0)
;
461 assert_se(streq(a[0], "first"))do { if ((__builtin_expect(!!(!((strcmp((a[0]),("first")) == 0
))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(a[0], \"first\")"
), "../src/test/test-strv.c", 461, __PRETTY_FUNCTION__); } while
(0)
;
462 assert_se(streq(a[1], "two"))do { if ((__builtin_expect(!!(!((strcmp((a[1]),("two")) == 0)
)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(a[1], \"two\")"
), "../src/test/test-strv.c", 462, __PRETTY_FUNCTION__); } while
(0)
;
463 assert_se(streq(a[2], "tri"))do { if ((__builtin_expect(!!(!((strcmp((a[2]),("tri")) == 0)
)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(a[2], \"tri\")"
), "../src/test/test-strv.c", 463, __PRETTY_FUNCTION__); } while
(0)
;
464 assert_se(!a[3])do { if ((__builtin_expect(!!(!(!a[3])),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("!a[3]"), "../src/test/test-strv.c", 464
, __PRETTY_FUNCTION__); } while (0)
;
465
466 assert_se(strv_insert(&a, 1, strdup("duo")) == 0)do { if ((__builtin_expect(!!(!(strv_insert(&a, 1, strdup
("duo")) == 0)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD
, ("strv_insert(&a, 1, strdup(\"duo\")) == 0"), "../src/test/test-strv.c"
, 466, __PRETTY_FUNCTION__); } while (0)
;
467 assert_se(streq(a[0], "first"))do { if ((__builtin_expect(!!(!((strcmp((a[0]),("first")) == 0
))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(a[0], \"first\")"
), "../src/test/test-strv.c", 467, __PRETTY_FUNCTION__); } while
(0)
;
468 assert_se(streq(a[1], "duo"))do { if ((__builtin_expect(!!(!((strcmp((a[1]),("duo")) == 0)
)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(a[1], \"duo\")"
), "../src/test/test-strv.c", 468, __PRETTY_FUNCTION__); } while
(0)
;
469 assert_se(streq(a[2], "two"))do { if ((__builtin_expect(!!(!((strcmp((a[2]),("two")) == 0)
)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(a[2], \"two\")"
), "../src/test/test-strv.c", 469, __PRETTY_FUNCTION__); } while
(0)
;
470 assert_se(streq(a[3], "tri"))do { if ((__builtin_expect(!!(!((strcmp((a[3]),("tri")) == 0)
)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(a[3], \"tri\")"
), "../src/test/test-strv.c", 470, __PRETTY_FUNCTION__); } while
(0)
;
471 assert_se(!a[4])do { if ((__builtin_expect(!!(!(!a[4])),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("!a[4]"), "../src/test/test-strv.c", 471
, __PRETTY_FUNCTION__); } while (0)
;
472}
473
474static void test_strv_push_prepend(void) {
475 _cleanup_strv_free___attribute__((cleanup(strv_freep))) char **a = NULL((void*)0);
476
477 a = strv_new("foo", "bar", "three", NULL((void*)0));
478
479 assert_se(strv_push_prepend(&a, strdup("first")) >= 0)do { if ((__builtin_expect(!!(!(strv_push_prepend(&a, strdup
("first")) >= 0)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD
, ("strv_push_prepend(&a, strdup(\"first\")) >= 0"), "../src/test/test-strv.c"
, 479, __PRETTY_FUNCTION__); } while (0)
;
480 assert_se(streq(a[0], "first"))do { if ((__builtin_expect(!!(!((strcmp((a[0]),("first")) == 0
))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(a[0], \"first\")"
), "../src/test/test-strv.c", 480, __PRETTY_FUNCTION__); } while
(0)
;
481 assert_se(streq(a[1], "foo"))do { if ((__builtin_expect(!!(!((strcmp((a[1]),("foo")) == 0)
)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(a[1], \"foo\")"
), "../src/test/test-strv.c", 481, __PRETTY_FUNCTION__); } while
(0)
;
482 assert_se(streq(a[2], "bar"))do { if ((__builtin_expect(!!(!((strcmp((a[2]),("bar")) == 0)
)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(a[2], \"bar\")"
), "../src/test/test-strv.c", 482, __PRETTY_FUNCTION__); } while
(0)
;
483 assert_se(streq(a[3], "three"))do { if ((__builtin_expect(!!(!((strcmp((a[3]),("three")) == 0
))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(a[3], \"three\")"
), "../src/test/test-strv.c", 483, __PRETTY_FUNCTION__); } while
(0)
;
484 assert_se(!a[4])do { if ((__builtin_expect(!!(!(!a[4])),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("!a[4]"), "../src/test/test-strv.c", 484
, __PRETTY_FUNCTION__); } while (0)
;
485
486 assert_se(strv_consume_prepend(&a, strdup("first2")) >= 0)do { if ((__builtin_expect(!!(!(strv_consume_prepend(&a, strdup
("first2")) >= 0)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD
, ("strv_consume_prepend(&a, strdup(\"first2\")) >= 0"
), "../src/test/test-strv.c", 486, __PRETTY_FUNCTION__); } while
(0)
;
487 assert_se(streq(a[0], "first2"))do { if ((__builtin_expect(!!(!((strcmp((a[0]),("first2")) ==
0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(a[0], \"first2\")"
), "../src/test/test-strv.c", 487, __PRETTY_FUNCTION__); } while
(0)
;
488 assert_se(streq(a[1], "first"))do { if ((__builtin_expect(!!(!((strcmp((a[1]),("first")) == 0
))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(a[1], \"first\")"
), "../src/test/test-strv.c", 488, __PRETTY_FUNCTION__); } while
(0)
;
489 assert_se(streq(a[2], "foo"))do { if ((__builtin_expect(!!(!((strcmp((a[2]),("foo")) == 0)
)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(a[2], \"foo\")"
), "../src/test/test-strv.c", 489, __PRETTY_FUNCTION__); } while
(0)
;
490 assert_se(streq(a[3], "bar"))do { if ((__builtin_expect(!!(!((strcmp((a[3]),("bar")) == 0)
)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(a[3], \"bar\")"
), "../src/test/test-strv.c", 490, __PRETTY_FUNCTION__); } while
(0)
;
491 assert_se(streq(a[4], "three"))do { if ((__builtin_expect(!!(!((strcmp((a[4]),("three")) == 0
))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(a[4], \"three\")"
), "../src/test/test-strv.c", 491, __PRETTY_FUNCTION__); } while
(0)
;
492 assert_se(!a[5])do { if ((__builtin_expect(!!(!(!a[5])),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("!a[5]"), "../src/test/test-strv.c", 492
, __PRETTY_FUNCTION__); } while (0)
;
493}
494
495static void test_strv_push(void) {
496 _cleanup_strv_free___attribute__((cleanup(strv_freep))) char **a = NULL((void*)0);
497 char *i, *j;
498
499 assert_se(i = strdup("foo"))do { if ((__builtin_expect(!!(!(i = strdup("foo"))),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("i = strdup(\"foo\")"), "../src/test/test-strv.c"
, 499, __PRETTY_FUNCTION__); } while (0)
;
500 assert_se(strv_push(&a, i) >= 0)do { if ((__builtin_expect(!!(!(strv_push(&a, i) >= 0)
),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("strv_push(&a, i) >= 0"
), "../src/test/test-strv.c", 500, __PRETTY_FUNCTION__); } while
(0)
;
501
502 assert_se(i = strdup("a"))do { if ((__builtin_expect(!!(!(i = strdup("a"))),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("i = strdup(\"a\")"), "../src/test/test-strv.c"
, 502, __PRETTY_FUNCTION__); } while (0)
;
503 assert_se(j = strdup("b"))do { if ((__builtin_expect(!!(!(j = strdup("b"))),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("j = strdup(\"b\")"), "../src/test/test-strv.c"
, 503, __PRETTY_FUNCTION__); } while (0)
;
504 assert_se(strv_push_pair(&a, i, j) >= 0)do { if ((__builtin_expect(!!(!(strv_push_pair(&a, i, j) >=
0)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("strv_push_pair(&a, i, j) >= 0"
), "../src/test/test-strv.c", 504, __PRETTY_FUNCTION__); } while
(0)
;
505
506 assert_se(streq_ptr(a[0], "foo"))do { if ((__builtin_expect(!!(!(streq_ptr(a[0], "foo"))),0)))
log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq_ptr(a[0], \"foo\")"
), "../src/test/test-strv.c", 506, __PRETTY_FUNCTION__); } while
(0)
;
507 assert_se(streq_ptr(a[1], "a"))do { if ((__builtin_expect(!!(!(streq_ptr(a[1], "a"))),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("streq_ptr(a[1], \"a\")"), "../src/test/test-strv.c"
, 507, __PRETTY_FUNCTION__); } while (0)
;
508 assert_se(streq_ptr(a[2], "b"))do { if ((__builtin_expect(!!(!(streq_ptr(a[2], "b"))),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("streq_ptr(a[2], \"b\")"), "../src/test/test-strv.c"
, 508, __PRETTY_FUNCTION__); } while (0)
;
509 assert_se(streq_ptr(a[3], NULL))do { if ((__builtin_expect(!!(!(streq_ptr(a[3], ((void*)0))))
,0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq_ptr(a[3], NULL)"
), "../src/test/test-strv.c", 509, __PRETTY_FUNCTION__); } while
(0)
;
510}
511
512static void test_strv_equal(void) {
513 _cleanup_strv_free___attribute__((cleanup(strv_freep))) char **a = NULL((void*)0);
514 _cleanup_strv_free___attribute__((cleanup(strv_freep))) char **b = NULL((void*)0);
515 _cleanup_strv_free___attribute__((cleanup(strv_freep))) char **c = NULL((void*)0);
516
517 a = strv_new("one", "two", "three", NULL((void*)0));
518 assert_se(a)do { if ((__builtin_expect(!!(!(a)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("a"), "../src/test/test-strv.c", 518, __PRETTY_FUNCTION__
); } while (0)
;
519 b = strv_new("one", "two", "three", NULL((void*)0));
520 assert_se(a)do { if ((__builtin_expect(!!(!(a)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("a"), "../src/test/test-strv.c", 520, __PRETTY_FUNCTION__
); } while (0)
;
521 c = strv_new("one", "two", "three", "four", NULL((void*)0));
522 assert_se(a)do { if ((__builtin_expect(!!(!(a)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("a"), "../src/test/test-strv.c", 522, __PRETTY_FUNCTION__
); } while (0)
;
523
524 assert_se(strv_equal(a, a))do { if ((__builtin_expect(!!(!(strv_equal(a, a))),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("strv_equal(a, a)"), "../src/test/test-strv.c"
, 524, __PRETTY_FUNCTION__); } while (0)
;
525 assert_se(strv_equal(a, b))do { if ((__builtin_expect(!!(!(strv_equal(a, b))),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("strv_equal(a, b)"), "../src/test/test-strv.c"
, 525, __PRETTY_FUNCTION__); } while (0)
;
526 assert_se(strv_equal(NULL, NULL))do { if ((__builtin_expect(!!(!(strv_equal(((void*)0), ((void
*)0)))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("strv_equal(NULL, NULL)"
), "../src/test/test-strv.c", 526, __PRETTY_FUNCTION__); } while
(0)
;
527
528 assert_se(!strv_equal(a, c))do { if ((__builtin_expect(!!(!(!strv_equal(a, c))),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("!strv_equal(a, c)"), "../src/test/test-strv.c"
, 528, __PRETTY_FUNCTION__); } while (0)
;
529 assert_se(!strv_equal(b, c))do { if ((__builtin_expect(!!(!(!strv_equal(b, c))),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("!strv_equal(b, c)"), "../src/test/test-strv.c"
, 529, __PRETTY_FUNCTION__); } while (0)
;
530 assert_se(!strv_equal(b, NULL))do { if ((__builtin_expect(!!(!(!strv_equal(b, ((void*)0)))),
0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("!strv_equal(b, NULL)"
), "../src/test/test-strv.c", 530, __PRETTY_FUNCTION__); } while
(0)
;
531}
532
533static void test_strv_is_uniq(void) {
534 _cleanup_strv_free___attribute__((cleanup(strv_freep))) char **a = NULL((void*)0), **b = NULL((void*)0), **c = NULL((void*)0), **d = NULL((void*)0);
535
536 a = strv_new(NULL((void*)0), NULL((void*)0));
537 assert_se(a)do { if ((__builtin_expect(!!(!(a)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("a"), "../src/test/test-strv.c", 537, __PRETTY_FUNCTION__
); } while (0)
;
538 assert_se(strv_is_uniq(a))do { if ((__builtin_expect(!!(!(strv_is_uniq(a))),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("strv_is_uniq(a)"), "../src/test/test-strv.c"
, 538, __PRETTY_FUNCTION__); } while (0)
;
539
540 b = strv_new("foo", NULL((void*)0));
541 assert_se(b)do { if ((__builtin_expect(!!(!(b)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("b"), "../src/test/test-strv.c", 541, __PRETTY_FUNCTION__
); } while (0)
;
542 assert_se(strv_is_uniq(b))do { if ((__builtin_expect(!!(!(strv_is_uniq(b))),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("strv_is_uniq(b)"), "../src/test/test-strv.c"
, 542, __PRETTY_FUNCTION__); } while (0)
;
543
544 c = strv_new("foo", "bar", NULL((void*)0));
545 assert_se(c)do { if ((__builtin_expect(!!(!(c)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("c"), "../src/test/test-strv.c", 545, __PRETTY_FUNCTION__
); } while (0)
;
546 assert_se(strv_is_uniq(c))do { if ((__builtin_expect(!!(!(strv_is_uniq(c))),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("strv_is_uniq(c)"), "../src/test/test-strv.c"
, 546, __PRETTY_FUNCTION__); } while (0)
;
547
548 d = strv_new("foo", "bar", "waldo", "bar", "piep", NULL((void*)0));
549 assert_se(d)do { if ((__builtin_expect(!!(!(d)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("d"), "../src/test/test-strv.c", 549, __PRETTY_FUNCTION__
); } while (0)
;
550 assert_se(!strv_is_uniq(d))do { if ((__builtin_expect(!!(!(!strv_is_uniq(d))),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("!strv_is_uniq(d)"), "../src/test/test-strv.c"
, 550, __PRETTY_FUNCTION__); } while (0)
;
551}
552
553static void test_strv_reverse(void) {
554 _cleanup_strv_free___attribute__((cleanup(strv_freep))) char **a = NULL((void*)0), **b = NULL((void*)0), **c = NULL((void*)0), **d = NULL((void*)0);
555
556 a = strv_new(NULL((void*)0), NULL((void*)0));
557 assert_se(a)do { if ((__builtin_expect(!!(!(a)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("a"), "../src/test/test-strv.c", 557, __PRETTY_FUNCTION__
); } while (0)
;
558
559 strv_reverse(a);
560 assert_se(strv_isempty(a))do { if ((__builtin_expect(!!(!(strv_isempty(a))),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("strv_isempty(a)"), "../src/test/test-strv.c"
, 560, __PRETTY_FUNCTION__); } while (0)
;
561
562 b = strv_new("foo", NULL((void*)0));
563 assert_se(b)do { if ((__builtin_expect(!!(!(b)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("b"), "../src/test/test-strv.c", 563, __PRETTY_FUNCTION__
); } while (0)
;
564 strv_reverse(b);
565 assert_se(streq_ptr(b[0], "foo"))do { if ((__builtin_expect(!!(!(streq_ptr(b[0], "foo"))),0)))
log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq_ptr(b[0], \"foo\")"
), "../src/test/test-strv.c", 565, __PRETTY_FUNCTION__); } while
(0)
;
566 assert_se(streq_ptr(b[1], NULL))do { if ((__builtin_expect(!!(!(streq_ptr(b[1], ((void*)0))))
,0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq_ptr(b[1], NULL)"
), "../src/test/test-strv.c", 566, __PRETTY_FUNCTION__); } while
(0)
;
567
568 c = strv_new("foo", "bar", NULL((void*)0));
569 assert_se(c)do { if ((__builtin_expect(!!(!(c)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("c"), "../src/test/test-strv.c", 569, __PRETTY_FUNCTION__
); } while (0)
;
570 strv_reverse(c);
571 assert_se(streq_ptr(c[0], "bar"))do { if ((__builtin_expect(!!(!(streq_ptr(c[0], "bar"))),0)))
log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq_ptr(c[0], \"bar\")"
), "../src/test/test-strv.c", 571, __PRETTY_FUNCTION__); } while
(0)
;
572 assert_se(streq_ptr(c[1], "foo"))do { if ((__builtin_expect(!!(!(streq_ptr(c[1], "foo"))),0)))
log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq_ptr(c[1], \"foo\")"
), "../src/test/test-strv.c", 572, __PRETTY_FUNCTION__); } while
(0)
;
573 assert_se(streq_ptr(c[2], NULL))do { if ((__builtin_expect(!!(!(streq_ptr(c[2], ((void*)0))))
,0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq_ptr(c[2], NULL)"
), "../src/test/test-strv.c", 573, __PRETTY_FUNCTION__); } while
(0)
;
574
575 d = strv_new("foo", "bar", "waldo", NULL((void*)0));
576 assert_se(d)do { if ((__builtin_expect(!!(!(d)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("d"), "../src/test/test-strv.c", 576, __PRETTY_FUNCTION__
); } while (0)
;
577 strv_reverse(d);
578 assert_se(streq_ptr(d[0], "waldo"))do { if ((__builtin_expect(!!(!(streq_ptr(d[0], "waldo"))),0)
)) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq_ptr(d[0], \"waldo\")"
), "../src/test/test-strv.c", 578, __PRETTY_FUNCTION__); } while
(0)
;
579 assert_se(streq_ptr(d[1], "bar"))do { if ((__builtin_expect(!!(!(streq_ptr(d[1], "bar"))),0)))
log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq_ptr(d[1], \"bar\")"
), "../src/test/test-strv.c", 579, __PRETTY_FUNCTION__); } while
(0)
;
580 assert_se(streq_ptr(d[2], "foo"))do { if ((__builtin_expect(!!(!(streq_ptr(d[2], "foo"))),0)))
log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq_ptr(d[2], \"foo\")"
), "../src/test/test-strv.c", 580, __PRETTY_FUNCTION__); } while
(0)
;
581 assert_se(streq_ptr(d[3], NULL))do { if ((__builtin_expect(!!(!(streq_ptr(d[3], ((void*)0))))
,0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq_ptr(d[3], NULL)"
), "../src/test/test-strv.c", 581, __PRETTY_FUNCTION__); } while
(0)
;
582}
583
584static void test_strv_shell_escape(void) {
585 _cleanup_strv_free___attribute__((cleanup(strv_freep))) char **v = NULL((void*)0);
586
587 v = strv_new("foo:bar", "bar,baz", "wal\\do", NULL((void*)0));
588 assert_se(v)do { if ((__builtin_expect(!!(!(v)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("v"), "../src/test/test-strv.c", 588, __PRETTY_FUNCTION__
); } while (0)
;
589 assert_se(strv_shell_escape(v, ",:"))do { if ((__builtin_expect(!!(!(strv_shell_escape(v, ",:"))),
0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("strv_shell_escape(v, \",:\")"
), "../src/test/test-strv.c", 589, __PRETTY_FUNCTION__); } while
(0)
;
590 assert_se(streq_ptr(v[0], "foo\\:bar"))do { if ((__builtin_expect(!!(!(streq_ptr(v[0], "foo\\:bar"))
),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq_ptr(v[0], \"foo\\\\:bar\")"
), "../src/test/test-strv.c", 590, __PRETTY_FUNCTION__); } while
(0)
;
591 assert_se(streq_ptr(v[1], "bar\\,baz"))do { if ((__builtin_expect(!!(!(streq_ptr(v[1], "bar\\,baz"))
),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq_ptr(v[1], \"bar\\\\,baz\")"
), "../src/test/test-strv.c", 591, __PRETTY_FUNCTION__); } while
(0)
;
592 assert_se(streq_ptr(v[2], "wal\\\\do"))do { if ((__builtin_expect(!!(!(streq_ptr(v[2], "wal\\\\do"))
),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq_ptr(v[2], \"wal\\\\\\\\do\")"
), "../src/test/test-strv.c", 592, __PRETTY_FUNCTION__); } while
(0)
;
593 assert_se(streq_ptr(v[3], NULL))do { if ((__builtin_expect(!!(!(streq_ptr(v[3], ((void*)0))))
,0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq_ptr(v[3], NULL)"
), "../src/test/test-strv.c", 593, __PRETTY_FUNCTION__); } while
(0)
;
594}
595
596static void test_strv_skip_one(char **a, size_t n, char **b) {
597 a = strv_skip(a, n);
598 assert_se(strv_equal(a, b))do { if ((__builtin_expect(!!(!(strv_equal(a, b))),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("strv_equal(a, b)"), "../src/test/test-strv.c"
, 598, __PRETTY_FUNCTION__); } while (0)
;
599}
600
601static void test_strv_skip(void) {
602 test_strv_skip_one(STRV_MAKE("foo", "bar", "baz")((char**) ((const char*[]) { "foo", "bar", "baz", ((void*)0) }
))
, 0, STRV_MAKE("foo", "bar", "baz")((char**) ((const char*[]) { "foo", "bar", "baz", ((void*)0) }
))
);
603 test_strv_skip_one(STRV_MAKE("foo", "bar", "baz")((char**) ((const char*[]) { "foo", "bar", "baz", ((void*)0) }
))
, 1, STRV_MAKE("bar", "baz")((char**) ((const char*[]) { "bar", "baz", ((void*)0) })));
604 test_strv_skip_one(STRV_MAKE("foo", "bar", "baz")((char**) ((const char*[]) { "foo", "bar", "baz", ((void*)0) }
))
, 2, STRV_MAKE("baz")((char**) ((const char*[]) { "baz", ((void*)0) })));
605 test_strv_skip_one(STRV_MAKE("foo", "bar", "baz")((char**) ((const char*[]) { "foo", "bar", "baz", ((void*)0) }
))
, 3, STRV_MAKE(NULL)((char**) ((const char*[]) { ((void*)0), ((void*)0) })));
606 test_strv_skip_one(STRV_MAKE("foo", "bar", "baz")((char**) ((const char*[]) { "foo", "bar", "baz", ((void*)0) }
))
, 4, STRV_MAKE(NULL)((char**) ((const char*[]) { ((void*)0), ((void*)0) })));
607 test_strv_skip_one(STRV_MAKE("foo", "bar", "baz")((char**) ((const char*[]) { "foo", "bar", "baz", ((void*)0) }
))
, 55, STRV_MAKE(NULL)((char**) ((const char*[]) { ((void*)0), ((void*)0) })));
608
609 test_strv_skip_one(STRV_MAKE("quux")((char**) ((const char*[]) { "quux", ((void*)0) })), 0, STRV_MAKE("quux")((char**) ((const char*[]) { "quux", ((void*)0) })));
610 test_strv_skip_one(STRV_MAKE("quux")((char**) ((const char*[]) { "quux", ((void*)0) })), 1, STRV_MAKE(NULL)((char**) ((const char*[]) { ((void*)0), ((void*)0) })));
611 test_strv_skip_one(STRV_MAKE("quux")((char**) ((const char*[]) { "quux", ((void*)0) })), 55, STRV_MAKE(NULL)((char**) ((const char*[]) { ((void*)0), ((void*)0) })));
612
613 test_strv_skip_one(STRV_MAKE(NULL)((char**) ((const char*[]) { ((void*)0), ((void*)0) })), 0, STRV_MAKE(NULL)((char**) ((const char*[]) { ((void*)0), ((void*)0) })));
614 test_strv_skip_one(STRV_MAKE(NULL)((char**) ((const char*[]) { ((void*)0), ((void*)0) })), 1, STRV_MAKE(NULL)((char**) ((const char*[]) { ((void*)0), ((void*)0) })));
615 test_strv_skip_one(STRV_MAKE(NULL)((char**) ((const char*[]) { ((void*)0), ((void*)0) })), 55, STRV_MAKE(NULL)((char**) ((const char*[]) { ((void*)0), ((void*)0) })));
616}
617
618static void test_strv_extend_n(void) {
619 _cleanup_strv_free___attribute__((cleanup(strv_freep))) char **v = NULL((void*)0);
620
621 v = strv_new("foo", "bar", NULL((void*)0));
622 assert_se(v)do { if ((__builtin_expect(!!(!(v)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("v"), "../src/test/test-strv.c", 622, __PRETTY_FUNCTION__
); } while (0)
;
623
624 assert_se(strv_extend_n(&v, "waldo", 3) >= 0)do { if ((__builtin_expect(!!(!(strv_extend_n(&v, "waldo"
, 3) >= 0)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD
, ("strv_extend_n(&v, \"waldo\", 3) >= 0"), "../src/test/test-strv.c"
, 624, __PRETTY_FUNCTION__); } while (0)
;
625 assert_se(strv_extend_n(&v, "piep", 2) >= 0)do { if ((__builtin_expect(!!(!(strv_extend_n(&v, "piep",
2) >= 0)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD,
("strv_extend_n(&v, \"piep\", 2) >= 0"), "../src/test/test-strv.c"
, 625, __PRETTY_FUNCTION__); } while (0)
;
626
627 assert_se(streq(v[0], "foo"))do { if ((__builtin_expect(!!(!((strcmp((v[0]),("foo")) == 0)
)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(v[0], \"foo\")"
), "../src/test/test-strv.c", 627, __PRETTY_FUNCTION__); } while
(0)
;
628 assert_se(streq(v[1], "bar"))do { if ((__builtin_expect(!!(!((strcmp((v[1]),("bar")) == 0)
)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(v[1], \"bar\")"
), "../src/test/test-strv.c", 628, __PRETTY_FUNCTION__); } while
(0)
;
629 assert_se(streq(v[2], "waldo"))do { if ((__builtin_expect(!!(!((strcmp((v[2]),("waldo")) == 0
))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(v[2], \"waldo\")"
), "../src/test/test-strv.c", 629, __PRETTY_FUNCTION__); } while
(0)
;
630 assert_se(streq(v[3], "waldo"))do { if ((__builtin_expect(!!(!((strcmp((v[3]),("waldo")) == 0
))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(v[3], \"waldo\")"
), "../src/test/test-strv.c", 630, __PRETTY_FUNCTION__); } while
(0)
;
631 assert_se(streq(v[4], "waldo"))do { if ((__builtin_expect(!!(!((strcmp((v[4]),("waldo")) == 0
))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(v[4], \"waldo\")"
), "../src/test/test-strv.c", 631, __PRETTY_FUNCTION__); } while
(0)
;
632 assert_se(streq(v[5], "piep"))do { if ((__builtin_expect(!!(!((strcmp((v[5]),("piep")) == 0
))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(v[5], \"piep\")"
), "../src/test/test-strv.c", 632, __PRETTY_FUNCTION__); } while
(0)
;
633 assert_se(streq(v[6], "piep"))do { if ((__builtin_expect(!!(!((strcmp((v[6]),("piep")) == 0
))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(v[6], \"piep\")"
), "../src/test/test-strv.c", 633, __PRETTY_FUNCTION__); } while
(0)
;
634 assert_se(v[7] == NULL)do { if ((__builtin_expect(!!(!(v[7] == ((void*)0))),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("v[7] == NULL"), "../src/test/test-strv.c"
, 634, __PRETTY_FUNCTION__); } while (0)
;
635
636 v = strv_free(v);
637
638 assert_se(strv_extend_n(&v, "foo", 1) >= 0)do { if ((__builtin_expect(!!(!(strv_extend_n(&v, "foo", 1
) >= 0)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, (
"strv_extend_n(&v, \"foo\", 1) >= 0"), "../src/test/test-strv.c"
, 638, __PRETTY_FUNCTION__); } while (0)
;
639 assert_se(strv_extend_n(&v, "bar", 0) >= 0)do { if ((__builtin_expect(!!(!(strv_extend_n(&v, "bar", 0
) >= 0)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, (
"strv_extend_n(&v, \"bar\", 0) >= 0"), "../src/test/test-strv.c"
, 639, __PRETTY_FUNCTION__); } while (0)
;
640
641 assert_se(streq(v[0], "foo"))do { if ((__builtin_expect(!!(!((strcmp((v[0]),("foo")) == 0)
)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(v[0], \"foo\")"
), "../src/test/test-strv.c", 641, __PRETTY_FUNCTION__); } while
(0)
;
642 assert_se(v[1] == NULL)do { if ((__builtin_expect(!!(!(v[1] == ((void*)0))),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("v[1] == NULL"), "../src/test/test-strv.c"
, 642, __PRETTY_FUNCTION__); } while (0)
;
643}
644
645static void test_strv_make_nulstr_one(char **l) {
646 _cleanup_free___attribute__((cleanup(freep))) char *b = NULL((void*)0), *c = NULL((void*)0);
647 _cleanup_strv_free___attribute__((cleanup(strv_freep))) char **q = NULL((void*)0);
648 const char *s = NULL((void*)0);
649 size_t n, m;
650 unsigned i = 0;
651
652 assert_se(strv_make_nulstr(l, &b, &n) >= 0)do { if ((__builtin_expect(!!(!(strv_make_nulstr(l, &b, &
n) >= 0)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, (
"strv_make_nulstr(l, &b, &n) >= 0"), "../src/test/test-strv.c"
, 652, __PRETTY_FUNCTION__); } while (0)
;
4
Assuming the condition is true
5
Taking false branch
6
Loop condition is false. Exiting loop
653 assert_se(q = strv_parse_nulstr(b, n))do { if ((__builtin_expect(!!(!(q = strv_parse_nulstr(b, n)))
,0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("q = strv_parse_nulstr(b, n)"
), "../src/test/test-strv.c", 653, __PRETTY_FUNCTION__); } while
(0)
;
7
Assuming 'q' is non-null
8
Taking false branch
9
Loop condition is false. Exiting loop
654 assert_se(strv_equal(l, q))do { if ((__builtin_expect(!!(!(strv_equal(l, q))),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("strv_equal(l, q)"), "../src/test/test-strv.c"
, 654, __PRETTY_FUNCTION__); } while (0)
;
10
Assuming the condition is false
11
Taking false branch
12
Loop condition is false. Exiting loop
655
656 assert_se(strv_make_nulstr(q, &c, &m) >= 0)do { if ((__builtin_expect(!!(!(strv_make_nulstr(q, &c, &
m) >= 0)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, (
"strv_make_nulstr(q, &c, &m) >= 0"), "../src/test/test-strv.c"
, 656, __PRETTY_FUNCTION__); } while (0)
;
13
Assuming the condition is true
14
Taking false branch
15
Loop condition is false. Exiting loop
657 assert_se(m == n)do { if ((__builtin_expect(!!(!(m == n)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("m == n"), "../src/test/test-strv.c", 657
, __PRETTY_FUNCTION__); } while (0)
;
16
Assuming 'm' is equal to 'n'
17
Taking false branch
18
Loop condition is false. Exiting loop
658 assert_se(memcmp(b, c, m) == 0)do { if ((__builtin_expect(!!(!(memcmp(b, c, m) == 0)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("memcmp(b, c, m) == 0"), "../src/test/test-strv.c"
, 658, __PRETTY_FUNCTION__); } while (0)
;
19
Taking false branch
20
Loop condition is false. Exiting loop
659
660 NULSTR_FOREACH(s, b)for ((s) = (b); (s) && *(s); (s) = strchr((s), 0)+1)
21
Loop condition is true. Entering loop body
661 assert_se(streq(s, l[i++]))do { if ((__builtin_expect(!!(!((strcmp((s),(l[i++])) == 0)))
,0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(s, l[i++])"
), "../src/test/test-strv.c", 661, __PRETTY_FUNCTION__); } while
(0)
;
22
Array access (from variable 'l') results in a null pointer dereference
662 assert_se(i == strv_length(l))do { if ((__builtin_expect(!!(!(i == strv_length(l))),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("i == strv_length(l)"), "../src/test/test-strv.c"
, 662, __PRETTY_FUNCTION__); } while (0)
;
663}
664
665static void test_strv_make_nulstr(void) {
666 test_strv_make_nulstr_one(NULL((void*)0));
2
Passing null pointer value via 1st parameter 'l'
3
Calling 'test_strv_make_nulstr_one'
667 test_strv_make_nulstr_one(STRV_MAKE(NULL)((char**) ((const char*[]) { ((void*)0), ((void*)0) })));
668 test_strv_make_nulstr_one(STRV_MAKE("foo")((char**) ((const char*[]) { "foo", ((void*)0) })));
669 test_strv_make_nulstr_one(STRV_MAKE("foo", "bar")((char**) ((const char*[]) { "foo", "bar", ((void*)0) })));
670 test_strv_make_nulstr_one(STRV_MAKE("foo", "bar", "quuux")((char**) ((const char*[]) { "foo", "bar", "quuux", ((void*)0
) }))
);
671}
672
673static void test_strv_free_free(void) {
674 char ***t;
675
676 assert_se(t = new(char**, 3))do { if ((__builtin_expect(!!(!(t = ((char***) malloc_multiply
(sizeof(char**), (3))))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD
, ("t = new(char**, 3)"), "../src/test/test-strv.c", 676, __PRETTY_FUNCTION__
); } while (0)
;
677 assert_se(t[0] = strv_new("a", "b", NULL))do { if ((__builtin_expect(!!(!(t[0] = strv_new("a", "b", ((void
*)0)))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("t[0] = strv_new(\"a\", \"b\", NULL)"
), "../src/test/test-strv.c", 677, __PRETTY_FUNCTION__); } while
(0)
;
678 assert_se(t[1] = strv_new("c", "d", "e", NULL))do { if ((__builtin_expect(!!(!(t[1] = strv_new("c", "d", "e"
, ((void*)0)))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD
, ("t[1] = strv_new(\"c\", \"d\", \"e\", NULL)"), "../src/test/test-strv.c"
, 678, __PRETTY_FUNCTION__); } while (0)
;
679 t[2] = NULL((void*)0);
680
681 t = strv_free_free(t);
682}
683
684static void test_foreach_string(void) {
685 const char * const t[] = {
686 "foo",
687 "bar",
688 "waldo",
689 NULL((void*)0)
690 };
691 const char *x;
692 unsigned i = 0;
693
694 FOREACH_STRING(x, "foo", "bar", "waldo")for (char **_l = ({ char **_ll = ((char**) ((const char*[]) {
"foo", "bar", "waldo", ((void*)0) })); x = _ll ? _ll[0] : ((
void*)0); _ll; }); _l && *_l; x = ({ _l ++; _l[0]; })
)
695 assert_se(streq_ptr(t[i++], x))do { if ((__builtin_expect(!!(!(streq_ptr(t[i++], x))),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("streq_ptr(t[i++], x)"), "../src/test/test-strv.c"
, 695, __PRETTY_FUNCTION__); } while (0)
;
696
697 assert_se(i == 3)do { if ((__builtin_expect(!!(!(i == 3)),0))) log_assert_failed_realm
(LOG_REALM_SYSTEMD, ("i == 3"), "../src/test/test-strv.c", 697
, __PRETTY_FUNCTION__); } while (0)
;
698
699 FOREACH_STRING(x, "zzz")for (char **_l = ({ char **_ll = ((char**) ((const char*[]) {
"zzz", ((void*)0) })); x = _ll ? _ll[0] : ((void*)0); _ll; }
); _l && *_l; x = ({ _l ++; _l[0]; }))
700 assert_se(streq(x, "zzz"))do { if ((__builtin_expect(!!(!((strcmp((x),("zzz")) == 0))),
0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(x, \"zzz\")"
), "../src/test/test-strv.c", 700, __PRETTY_FUNCTION__); } while
(0)
;
701}
702
703static void test_strv_fnmatch(void) {
704 _cleanup_strv_free___attribute__((cleanup(strv_freep))) char **v = NULL((void*)0);
705
706 assert_se(!strv_fnmatch(STRV_MAKE_EMPTY, "a", 0))do { if ((__builtin_expect(!!(!(!strv_fnmatch(((char*[1]) { (
(void*)0) }), "a", 0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD
, ("!strv_fnmatch(STRV_MAKE_EMPTY, \"a\", 0)"), "../src/test/test-strv.c"
, 706, __PRETTY_FUNCTION__); } while (0)
;
707
708 v = strv_new("*\\*", NULL((void*)0));
709 assert_se(!strv_fnmatch(v, "\\", 0))do { if ((__builtin_expect(!!(!(!strv_fnmatch(v, "\\", 0))),0
))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("!strv_fnmatch(v, \"\\\\\", 0)"
), "../src/test/test-strv.c", 709, __PRETTY_FUNCTION__); } while
(0)
;
710 assert_se(strv_fnmatch(v, "\\", FNM_NOESCAPE))do { if ((__builtin_expect(!!(!(strv_fnmatch(v, "\\", (1 <<
1)))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("strv_fnmatch(v, \"\\\\\", FNM_NOESCAPE)"
), "../src/test/test-strv.c", 710, __PRETTY_FUNCTION__); } while
(0)
;
711}
712
713int main(int argc, char *argv[]) {
714 test_specifier_printf();
715 test_str_in_set();
716 test_strptr_in_set();
717 test_startswith_set();
718 test_strv_foreach();
719 test_strv_foreach_backwards();
720 test_strv_foreach_pair();
721 test_strv_find();
722 test_strv_find_prefix();
723 test_strv_find_startswith();
724 test_strv_join();
725
726 test_strv_unquote(" foo=bar \"waldo\" zzz ", STRV_MAKE("foo=bar", "waldo", "zzz")((char**) ((const char*[]) { "foo=bar", "waldo", "zzz", ((void
*)0) }))
);
727 test_strv_unquote("", STRV_MAKE_EMPTY((char*[1]) { ((void*)0) }));
728 test_strv_unquote(" ", STRV_MAKE_EMPTY((char*[1]) { ((void*)0) }));
729 test_strv_unquote(" ", STRV_MAKE_EMPTY((char*[1]) { ((void*)0) }));
730 test_strv_unquote(" x", STRV_MAKE("x")((char**) ((const char*[]) { "x", ((void*)0) })));
731 test_strv_unquote("x ", STRV_MAKE("x")((char**) ((const char*[]) { "x", ((void*)0) })));
732 test_strv_unquote(" x ", STRV_MAKE("x")((char**) ((const char*[]) { "x", ((void*)0) })));
733 test_strv_unquote(" \"x\" ", STRV_MAKE("x")((char**) ((const char*[]) { "x", ((void*)0) })));
734 test_strv_unquote(" 'x' ", STRV_MAKE("x")((char**) ((const char*[]) { "x", ((void*)0) })));
735 test_strv_unquote(" 'x\"' ", STRV_MAKE("x\"")((char**) ((const char*[]) { "x\"", ((void*)0) })));
736 test_strv_unquote(" \"x'\" ", STRV_MAKE("x'")((char**) ((const char*[]) { "x'", ((void*)0) })));
737 test_strv_unquote("a '--b=c \"d e\"'", STRV_MAKE("a", "--b=c \"d e\"")((char**) ((const char*[]) { "a", "--b=c \"d e\"", ((void*)0)
}))
);
738
739 /* trailing backslashes */
740 test_strv_unquote(" x\\\\", STRV_MAKE("x\\")((char**) ((const char*[]) { "x\\", ((void*)0) })));
741 test_invalid_unquote(" x\\");
742
743 test_invalid_unquote("a --b='c \"d e\"''");
744 test_invalid_unquote("a --b='c \"d e\" '\"");
745 test_invalid_unquote("a --b='c \"d e\"garbage");
746 test_invalid_unquote("'");
747 test_invalid_unquote("\"");
748 test_invalid_unquote("'x'y'g");
749
750 test_strv_split();
751 test_strv_split_extract();
752 test_strv_split_newlines();
753 test_strv_split_nulstr();
754 test_strv_parse_nulstr();
755 test_strv_overlap();
756 test_strv_sort();
757 test_strv_extend_strv();
758 test_strv_extend_strv_concat();
759 test_strv_extend();
760 test_strv_extendf();
761 test_strv_from_stdarg_alloca();
762 test_strv_insert();
763 test_strv_push_prepend();
764 test_strv_push();
765 test_strv_equal();
766 test_strv_is_uniq();
767 test_strv_reverse();
768 test_strv_shell_escape();
769 test_strv_skip();
770 test_strv_extend_n();
771 test_strv_make_nulstr();
1
Calling 'test_strv_make_nulstr'
772 test_strv_free_free();
773
774 test_foreach_string();
775 test_strv_fnmatch();
776
777 return 0;
778}