From: Yu Watanabe Date: Wed, 22 Mar 2023 16:34:43 +0000 (+0900) Subject: condition: use proc_cmdline_strv() X-Git-Tag: v254-rc1~787^2~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=dd2d3e975e80f5ae3b64bd9c2b63d866415c764e;p=thirdparty%2Fsystemd.git condition: use proc_cmdline_strv() --- diff --git a/src/shared/condition.c b/src/shared/condition.c index d5fdbbf9e07..e5a80757e09 100644 --- a/src/shared/condition.c +++ b/src/shared/condition.c @@ -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, '='); }