From: Aki Tuomi Date: Sat, 10 Mar 2018 15:56:33 +0000 (+0200) Subject: lib: Add i_strstr_arr for searching string for multiple needles X-Git-Tag: 2.3.4~310 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=02c1f0e535fcbb82c5c4c08dc1d00f3e1b48d69e;p=thirdparty%2Fdovecot%2Fcore.git lib: Add i_strstr_arr for searching string for multiple needles --- diff --git a/src/lib/strfuncs.c b/src/lib/strfuncs.c index e2e082e63a..f09782b144 100644 --- a/src/lib/strfuncs.c +++ b/src/lib/strfuncs.c @@ -366,6 +366,15 @@ const char *t_str_ucase(const char *str) return str_ucase(t_strdup_noconst(str)); } +const char *i_strstr_arr(const char *haystack, const char *const *needles) +{ + const char *ptr; + for(; *needles != NULL; needles++) + if ((ptr = strstr(haystack, *needles)) != NULL) + return ptr; + return NULL; +} + static void str_trim_parse(const char *str, const char *chars, enum _str_trim_sides sides, const char **begin_r, const char **end_r) diff --git a/src/lib/strfuncs.h b/src/lib/strfuncs.h index 9bff5a25a9..974cd468ec 100644 --- a/src/lib/strfuncs.h +++ b/src/lib/strfuncs.h @@ -54,6 +54,9 @@ char *str_lcase(char *str); const char *t_str_lcase(const char *str); const char *t_str_ucase(const char *str); +/* Return pointer to first matching needle */ +const char *i_strstr_arr(const char *haystack, const char *const *needles); + /* Trim matching chars from either side of the string */ const char *t_str_trim(const char *str, const char *chars); const char *p_str_trim(pool_t pool, const char *str, const char *chars);