]>
git.ipfire.org Git - thirdparty/systemd.git/blob - src/test/test-install.c
2 This file is part of systemd.
4 Copyright 2011 Lennart Poettering
6 systemd is free software; you can redistribute it and/or modify it
7 under the terms of the GNU Lesser General Public License as published by
8 the Free Software Foundation; either version 2.1 of the License, or
9 (at your option) any later version.
11 systemd is distributed in the hope that it will be useful, but
12 WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Lesser General Public License for more details.
16 You should have received a copy of the GNU Lesser General Public License
17 along with systemd; If not, see <http://www.gnu.org/licenses/>.
25 static void dump_changes(UnitFileChange
*c
, unsigned n
) {
28 assert_se(n
== 0 || c
);
30 for (i
= 0; i
< n
; i
++) {
31 if (c
[i
].type
== UNIT_FILE_UNLINK
)
32 printf("rm '%s'\n", c
[i
].path
);
33 else if (c
[i
].type
== UNIT_FILE_SYMLINK
)
34 printf("ln -s '%s' '%s'\n", c
[i
].source
, c
[i
].path
);
38 int main(int argc
, char* argv
[]) {
43 const char *const files
[] = { "avahi-daemon.service", NULL
};
44 const char *const files2
[] = { "/home/lennart/test.service", NULL
};
45 UnitFileChange
*changes
= NULL
;
46 unsigned n_changes
= 0;
47 UnitFileState state
= 0;
49 log_set_max_level(LOG_DEBUG
);
50 log_parse_environment();
52 h
= hashmap_new(&string_hash_ops
);
53 r
= unit_file_get_list(UNIT_FILE_SYSTEM
, NULL
, h
, NULL
, NULL
);
56 HASHMAP_FOREACH(p
, h
, i
) {
57 UnitFileState s
= _UNIT_FILE_STATE_INVALID
;
59 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, basename(p
->path
), &s
);
61 assert_se((r
< 0 && p
->state
== UNIT_FILE_BAD
) ||
64 fprintf(stderr
, "%s (%s)\n",
66 unit_file_state_to_string(p
->state
));
69 unit_file_list_free(h
);
71 log_info("/*** enable **/");
73 r
= unit_file_enable(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files
, &changes
, &n_changes
);
76 log_info("/*** enable2 **/");
78 r
= unit_file_enable(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files
, &changes
, &n_changes
);
81 dump_changes(changes
, n_changes
);
82 unit_file_changes_free(changes
, n_changes
);
84 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, files
[0], &state
);
86 assert_se(state
== UNIT_FILE_ENABLED
);
88 log_info("/*** disable ***/");
92 r
= unit_file_disable(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files
, &changes
, &n_changes
);
95 dump_changes(changes
, n_changes
);
96 unit_file_changes_free(changes
, n_changes
);
98 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, files
[0], &state
);
100 assert_se(state
== UNIT_FILE_DISABLED
);
102 log_info("/*** mask ***/");
106 r
= unit_file_mask(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files
, &changes
, &n_changes
);
108 log_info("/*** mask2 ***/");
109 r
= unit_file_mask(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files
, &changes
, &n_changes
);
112 dump_changes(changes
, n_changes
);
113 unit_file_changes_free(changes
, n_changes
);
115 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, files
[0], &state
);
117 assert_se(state
== UNIT_FILE_MASKED
);
119 log_info("/*** unmask ***/");
123 r
= unit_file_unmask(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files
, &changes
, &n_changes
);
125 log_info("/*** unmask2 ***/");
126 r
= unit_file_unmask(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files
, &changes
, &n_changes
);
129 dump_changes(changes
, n_changes
);
130 unit_file_changes_free(changes
, n_changes
);
132 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, files
[0], &state
);
134 assert_se(state
== UNIT_FILE_DISABLED
);
136 log_info("/*** mask ***/");
140 r
= unit_file_mask(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files
, &changes
, &n_changes
);
143 dump_changes(changes
, n_changes
);
144 unit_file_changes_free(changes
, n_changes
);
146 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, files
[0], &state
);
148 assert_se(state
== UNIT_FILE_MASKED
);
150 log_info("/*** disable ***/");
154 r
= unit_file_disable(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files
, &changes
, &n_changes
);
156 log_info("/*** disable2 ***/");
157 r
= unit_file_disable(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files
, &changes
, &n_changes
);
160 dump_changes(changes
, n_changes
);
161 unit_file_changes_free(changes
, n_changes
);
163 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, files
[0], &state
);
165 assert_se(state
== UNIT_FILE_MASKED
);
167 log_info("/*** umask ***/");
171 r
= unit_file_unmask(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files
, &changes
, &n_changes
);
174 dump_changes(changes
, n_changes
);
175 unit_file_changes_free(changes
, n_changes
);
177 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, files
[0], &state
);
179 assert_se(state
== UNIT_FILE_DISABLED
);
181 log_info("/*** enable files2 ***/");
185 r
= unit_file_enable(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files2
, &changes
, &n_changes
);
188 dump_changes(changes
, n_changes
);
189 unit_file_changes_free(changes
, n_changes
);
191 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, basename(files2
[0]), &state
);
193 assert_se(state
== UNIT_FILE_ENABLED
);
195 log_info("/*** disable files2 ***/");
199 r
= unit_file_disable(UNIT_FILE_SYSTEM
, 0, NULL
, STRV_MAKE(basename(files2
[0])), &changes
, &n_changes
);
202 dump_changes(changes
, n_changes
);
203 unit_file_changes_free(changes
, n_changes
);
205 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, basename(files2
[0]), &state
);
208 log_info("/*** link files2 ***/");
212 r
= unit_file_link(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files2
, &changes
, &n_changes
);
215 dump_changes(changes
, n_changes
);
216 unit_file_changes_free(changes
, n_changes
);
218 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, basename(files2
[0]), &state
);
220 assert_se(state
== UNIT_FILE_LINKED
);
222 log_info("/*** disable files2 ***/");
226 r
= unit_file_disable(UNIT_FILE_SYSTEM
, 0, NULL
, STRV_MAKE(basename(files2
[0])), &changes
, &n_changes
);
229 dump_changes(changes
, n_changes
);
230 unit_file_changes_free(changes
, n_changes
);
232 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, basename(files2
[0]), &state
);
235 log_info("/*** link files2 ***/");
239 r
= unit_file_link(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files2
, &changes
, &n_changes
);
242 dump_changes(changes
, n_changes
);
243 unit_file_changes_free(changes
, n_changes
);
245 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, basename(files2
[0]), &state
);
247 assert_se(state
== UNIT_FILE_LINKED
);
249 log_info("/*** reenable files2 ***/");
253 r
= unit_file_reenable(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files2
, &changes
, &n_changes
);
256 dump_changes(changes
, n_changes
);
257 unit_file_changes_free(changes
, n_changes
);
259 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, basename(files2
[0]), &state
);
261 assert_se(state
== UNIT_FILE_ENABLED
);
263 log_info("/*** disable files2 ***/");
267 r
= unit_file_disable(UNIT_FILE_SYSTEM
, 0, NULL
, STRV_MAKE(basename(files2
[0])), &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(files2
[0]), &state
);
275 log_info("/*** preset files ***/");
279 r
= unit_file_preset(UNIT_FILE_SYSTEM
, 0, NULL
, (char**) files
, UNIT_FILE_PRESET_FULL
, &changes
, &n_changes
);
282 dump_changes(changes
, n_changes
);
283 unit_file_changes_free(changes
, n_changes
);
285 r
= unit_file_get_state(UNIT_FILE_SYSTEM
, NULL
, basename(files
[0]), &state
);
287 assert_se(state
== UNIT_FILE_ENABLED
);