]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/test-env-replace.c
udev: check-keymaps.sh - fix source directory
[thirdparty/systemd.git] / src / test-env-replace.c
CommitLineData
d6c9574f 1/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
c24eb49e
LP
2
3/***
4 This file is part of systemd.
5
6 Copyright 2010 Lennart Poettering
7
8 systemd is free software; you can redistribute it and/or modify it
9 under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 2 of the License, or
11 (at your option) any later version.
12
13 systemd is distributed in the hope that it will be useful, but
14 WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with systemd; If not, see <http://www.gnu.org/licenses/>.
20***/
21
22#include <unistd.h>
23#include <string.h>
24
25#include "util.h"
26#include "log.h"
27#include "strv.h"
28
29int main(int argc, char *argv[]) {
30
31 const char *env[] = {
32 "FOO=BAR BAR",
33 "BAR=waldo",
34 NULL
35 };
36
37 const char *line[] = {
38 "FOO$FOO",
39 "FOO$FOOFOO",
40 "FOO${FOO}$FOO",
41 "FOO${FOO}",
42 "${FOO}",
43 "$FOO",
44 "$FOO$FOO",
45 "${FOO}${BAR}",
46 "${FOO",
47 NULL
48 };
49
a6ff950e 50 char **i, **r, *t, **a, **b;
21bc923a
LP
51 const char nulstr[] = "fuck\0fuck2\0fuck3\0\0fuck5\0\0xxx";
52
53 a = strv_parse_nulstr(nulstr, sizeof(nulstr)-1);
54
55 STRV_FOREACH(i, a)
56 printf("nulstr--%s\n", *i);
57
58 strv_free(a);
c24eb49e
LP
59
60 r = replace_env_argv((char**) line, (char**) env);
61
62 STRV_FOREACH(i, r)
63 printf("%s\n", *i);
64
65 strv_free(r);
66
5f7c426e
LP
67 t = normalize_env_assignment("foo=bar");
68 printf("%s\n", t);
69 free(t);
70
71 t = normalize_env_assignment("=bar");
72 printf("%s\n", t);
73 free(t);
74
75 t = normalize_env_assignment("foo=");
76 printf("%s\n", t);
77 free(t);
78
79 t = normalize_env_assignment("=");
80 printf("%s\n", t);
81 free(t);
82
83 t = normalize_env_assignment("");
84 printf("%s\n", t);
85 free(t);
86
87 t = normalize_env_assignment("a=\"waldo\"");
88 printf("%s\n", t);
89 free(t);
90
91 t = normalize_env_assignment("a=\"waldo");
92 printf("%s\n", t);
93 free(t);
94
95 t = normalize_env_assignment("a=waldo\"");
96 printf("%s\n", t);
97 free(t);
98
99 t = normalize_env_assignment("a=\'");
100 printf("%s\n", t);
101 free(t);
102
103 t = normalize_env_assignment("a=\'\'");
104 printf("%s\n", t);
105 free(t);
106
a6ff950e
LP
107 a = strv_new("FOO=BAR", "WALDO=WALDO", "WALDO=", "PIEP", "SCHLUMPF=SMURF", NULL);
108 b = strv_new("FOO=KKK", "FOO=", "PIEP=", "SCHLUMPF=SMURFF", "NANANANA=YES", NULL);
109
110 r = strv_env_merge(2, a, b);
111 strv_free(a);
112 strv_free(b);
113
114 STRV_FOREACH(i, r)
115 printf("%s\n", *i);
116
117 printf("CLEANED UP:\n");
118
119 r = strv_env_clean(r);
120
121 STRV_FOREACH(i, r)
122 printf("%s\n", *i);
123
124 strv_free(r);
125
5f7c426e 126 return 0;
c24eb49e 127}