]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib: Add i_strstr_arr for searching string for multiple needles
authorAki Tuomi <aki.tuomi@dovecot.fi>
Sat, 10 Mar 2018 15:56:33 +0000 (17:56 +0200)
committerAki Tuomi <aki.tuomi@dovecot.fi>
Tue, 21 Aug 2018 09:11:25 +0000 (12:11 +0300)
src/lib/strfuncs.c
src/lib/strfuncs.h

index e2e082e63ac5a4faf6c9e52591241c92ef624e00..f09782b14475db3210843bc402737792961285d3 100644 (file)
@@ -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)
index 9bff5a25a92add2ba94ed7a854714196968f6100..974cd468ecf34b4839640d7f122782de9f93eecc 100644 (file)
@@ -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);