From: Mike Yuan Date: Tue, 26 Mar 2024 16:15:40 +0000 (+0800) Subject: string-util: modernize string_contains_word_strv a bit X-Git-Tag: v256-rc1~361^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f8c700791e7a11d7a9aab0112da31725421d43fe;p=thirdparty%2Fsystemd.git string-util: modernize string_contains_word_strv a bit Also correct the comment on flags. --- diff --git a/src/basic/string-util.c b/src/basic/string-util.c index 7f6c87b4613..b50f45f7f4a 100644 --- a/src/basic/string-util.c +++ b/src/basic/string-util.c @@ -1268,18 +1268,16 @@ int string_extract_line(const char *s, size_t i, char **ret) { } } -int string_contains_word_strv(const char *string, const char *separators, char **words, const char **ret_word) { - /* In the default mode with no separators specified, we split on whitespace and - * don't coalesce separators. */ +int string_contains_word_strv(const char *string, const char *separators, char * const *words, const char **ret_word) { + /* In the default mode with no separators specified, we split on whitespace and coalesce separators. */ const ExtractFlags flags = separators ? EXTRACT_DONT_COALESCE_SEPARATORS : 0; - const char *found = NULL; + int r; - for (const char *p = string;;) { + for (;;) { _cleanup_free_ char *w = NULL; - int r; - r = extract_first_word(&p, &w, separators, flags); + r = extract_first_word(&string, &w, separators, flags); if (r < 0) return r; if (r == 0) diff --git a/src/basic/string-util.h b/src/basic/string-util.h index a68f3c94abc..055ab66668b 100644 --- a/src/basic/string-util.h +++ b/src/basic/string-util.h @@ -271,7 +271,7 @@ char* string_erase(char *x); int string_truncate_lines(const char *s, size_t n_lines, char **ret); int string_extract_line(const char *s, size_t i, char **ret); -int string_contains_word_strv(const char *string, const char *separators, char **words, const char **ret_word); +int string_contains_word_strv(const char *string, const char *separators, char * const *words, const char **ret_word); static inline int string_contains_word(const char *string, const char *separators, const char *word) { return string_contains_word_strv(string, separators, STRV_MAKE(word), NULL); }