From dd2d3e975e80f5ae3b64bd9c2b63d866415c764e Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Thu, 23 Mar 2023 01:34:43 +0900 Subject: [PATCH] condition: use proc_cmdline_strv() --- src/shared/condition.c | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) 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, '='); } -- 2.47.3