]>
git.ipfire.org Git - thirdparty/systemd.git/blob - src/test/test-install.c
1 /* SPDX-License-Identifier: LGPL-2.1+ */
3 This file is part of systemd.
5 Copyright 2011 Lennart Poettering
13 static void dump_changes(UnitFileChange
*c
, unsigned n
) {
16 assert_se(n
== 0 || c
);
18 for (i
= 0; i
< n
; i
++) {
19 if (c
[i
].type
== UNIT_FILE_UNLINK
)
20 printf("rm '%s'\n", c
[i
].path
);
21 else if (c
[i
].type
== UNIT_FILE_SYMLINK
)
22 printf("ln -s '%s' '%s'\n", c
[i
].source
, c
[i
].path
);
26 int main(int argc
, char* argv
[]) {
31 const char *const files
[] = { "avahi-daemon.service", NULL
};
32 const char *const files2
[] = { "/home/lennart/test.service", NULL
};
33 UnitFileChange
*changes
= NULL
;
35 UnitFileState state
= 0;
37 log_set_max_level(LOG_DEBUG
);
38 log_parse_environment();
40 h
= hashmap_new(&string_hash_ops
);
41 r
= unit_file_get_list(UNIT_FILE_SYSTEM
, NULL
, h
, NULL
, NULL
);
44 HASHMAP_FOREACH(p
, h
, i
) {
45 UnitFileState s
= _UNIT_FILE_STATE_INVALID
;
47 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, basename(p
->path
), &s
);
49 assert_se((r
< 0 && p
->state
== UNIT_FILE_BAD
) ||
52 fprintf(stderr
, "%s (%s)\n",
54 unit_file_state_to_string(p
->state
));
57 unit_file_list_free(h
);
59 log_info("/*** enable **/");
61 r
= unit_file_enable(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files
, &changes
, &n_changes
);
64 log_info("/*** enable2 **/");
66 r
= unit_file_enable(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files
, &changes
, &n_changes
);
69 dump_changes(changes
, n_changes
);
70 unit_file_changes_free(changes
, n_changes
);
72 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, files
[0], &state
);
74 assert_se(state
== UNIT_FILE_ENABLED
);
76 log_info("/*** disable ***/");
80 r
= unit_file_disable(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files
, &changes
, &n_changes
);
83 dump_changes(changes
, n_changes
);
84 unit_file_changes_free(changes
, n_changes
);
86 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, files
[0], &state
);
88 assert_se(state
== UNIT_FILE_DISABLED
);
90 log_info("/*** mask ***/");
94 r
= unit_file_mask(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files
, &changes
, &n_changes
);
96 log_info("/*** mask2 ***/");
97 r
= unit_file_mask(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files
, &changes
, &n_changes
);
100 dump_changes(changes
, n_changes
);
101 unit_file_changes_free(changes
, n_changes
);
103 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, files
[0], &state
);
105 assert_se(state
== UNIT_FILE_MASKED
);
107 log_info("/*** unmask ***/");
111 r
= unit_file_unmask(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files
, &changes
, &n_changes
);
113 log_info("/*** unmask2 ***/");
114 r
= unit_file_unmask(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files
, &changes
, &n_changes
);
117 dump_changes(changes
, n_changes
);
118 unit_file_changes_free(changes
, n_changes
);
120 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, files
[0], &state
);
122 assert_se(state
== UNIT_FILE_DISABLED
);
124 log_info("/*** mask ***/");
128 r
= unit_file_mask(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files
, &changes
, &n_changes
);
131 dump_changes(changes
, n_changes
);
132 unit_file_changes_free(changes
, n_changes
);
134 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, files
[0], &state
);
136 assert_se(state
== UNIT_FILE_MASKED
);
138 log_info("/*** disable ***/");
142 r
= unit_file_disable(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files
, &changes
, &n_changes
);
144 log_info("/*** disable2 ***/");
145 r
= unit_file_disable(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files
, &changes
, &n_changes
);
148 dump_changes(changes
, n_changes
);
149 unit_file_changes_free(changes
, n_changes
);
151 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, files
[0], &state
);
153 assert_se(state
== UNIT_FILE_MASKED
);
155 log_info("/*** umask ***/");
159 r
= unit_file_unmask(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files
, &changes
, &n_changes
);
162 dump_changes(changes
, n_changes
);
163 unit_file_changes_free(changes
, n_changes
);
165 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, files
[0], &state
);
167 assert_se(state
== UNIT_FILE_DISABLED
);
169 log_info("/*** enable files2 ***/");
173 r
= unit_file_enable(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files2
, &changes
, &n_changes
);
176 dump_changes(changes
, n_changes
);
177 unit_file_changes_free(changes
, n_changes
);
179 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, basename(files2
[0]), &state
);
181 assert_se(state
== UNIT_FILE_ENABLED
);
183 log_info("/*** disable files2 ***/");
187 r
= unit_file_disable(UNIT_FILE_SYSTEM
, 0, NULL
, STRV_MAKE(basename(files2
[0])), &changes
, &n_changes
);
190 dump_changes(changes
, n_changes
);
191 unit_file_changes_free(changes
, n_changes
);
193 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, basename(files2
[0]), &state
);
196 log_info("/*** link files2 ***/");
200 r
= unit_file_link(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files2
, &changes
, &n_changes
);
203 dump_changes(changes
, n_changes
);
204 unit_file_changes_free(changes
, n_changes
);
206 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, basename(files2
[0]), &state
);
208 assert_se(state
== UNIT_FILE_LINKED
);
210 log_info("/*** disable files2 ***/");
214 r
= unit_file_disable(UNIT_FILE_SYSTEM
, 0, NULL
, STRV_MAKE(basename(files2
[0])), &changes
, &n_changes
);
217 dump_changes(changes
, n_changes
);
218 unit_file_changes_free(changes
, n_changes
);
220 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, basename(files2
[0]), &state
);
223 log_info("/*** link files2 ***/");
227 r
= unit_file_link(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files2
, &changes
, &n_changes
);
230 dump_changes(changes
, n_changes
);
231 unit_file_changes_free(changes
, n_changes
);
233 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, basename(files2
[0]), &state
);
235 assert_se(state
== UNIT_FILE_LINKED
);
237 log_info("/*** reenable files2 ***/");
241 r
= unit_file_reenable(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files2
, &changes
, &n_changes
);
244 dump_changes(changes
, n_changes
);
245 unit_file_changes_free(changes
, n_changes
);
247 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, basename(files2
[0]), &state
);
249 assert_se(state
== UNIT_FILE_ENABLED
);
251 log_info("/*** disable files2 ***/");
255 r
= unit_file_disable(UNIT_FILE_SYSTEM
, 0, NULL
, STRV_MAKE(basename(files2
[0])), &changes
, &n_changes
);
258 dump_changes(changes
, n_changes
);
259 unit_file_changes_free(changes
, n_changes
);
261 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, basename(files2
[0]), &state
);
263 log_info("/*** preset files ***/");
267 r
= unit_file_preset(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files
, UNIT_FILE_PRESET_FULL
, &changes
, &n_changes
);
270 dump_changes(changes
, n_changes
);
271 unit_file_changes_free(changes
, n_changes
);
273 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, basename(files
[0]), &state
);
275 assert_se(state
== UNIT_FILE_ENABLED
);