mirror of
https://github.com/morgan9e/systemd
synced 2026-04-15 08:56:15 +09:00
condition: use proc_cmdline_strv()
This commit is contained in:
@@ -106,35 +106,28 @@ Condition* condition_free_list_type(Condition *head, ConditionType type) {
|
||||
}
|
||||
|
||||
static int condition_test_kernel_command_line(Condition *c, char **env) {
|
||||
_cleanup_free_ char *line = NULL;
|
||||
_cleanup_strv_free_ char **args = NULL;
|
||||
int r;
|
||||
|
||||
assert(c);
|
||||
assert(c->parameter);
|
||||
assert(c->type == CONDITION_KERNEL_COMMAND_LINE);
|
||||
|
||||
r = proc_cmdline(&line);
|
||||
r = proc_cmdline_strv(&args);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
bool equal = strchr(c->parameter, '=');
|
||||
|
||||
for (const char *p = line;;) {
|
||||
_cleanup_free_ char *word = NULL;
|
||||
STRV_FOREACH(word, args) {
|
||||
bool found;
|
||||
|
||||
r = extract_first_word(&p, &word, NULL, EXTRACT_UNQUOTE|EXTRACT_RELAX);
|
||||
if (r < 0)
|
||||
return r;
|
||||
if (r == 0)
|
||||
break;
|
||||
|
||||
if (equal)
|
||||
found = streq(word, c->parameter);
|
||||
found = streq(*word, c->parameter);
|
||||
else {
|
||||
const char *f;
|
||||
|
||||
f = startswith(word, c->parameter);
|
||||
f = startswith(*word, c->parameter);
|
||||
found = f && IN_SET(*f, 0, '=');
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user