From 12925d8b70c88e1a7a98e69ab896eb16ed2602fc Mon Sep 17 00:00:00 2001 From: Alasdair G Kergon Date: Thu, 14 Jul 2016 14:46:38 +0100 Subject: [PATCH] string: Add first_substring(). --- lib/misc/lvm-string.c | 16 ++++++++++++++++ lib/misc/lvm-string.h | 8 ++++++++ 2 files changed, 24 insertions(+) diff --git a/lib/misc/lvm-string.c b/lib/misc/lvm-string.c index 809c63c13..cdcc993d3 100644 --- a/lib/misc/lvm-string.c +++ b/lib/misc/lvm-string.c @@ -243,3 +243,19 @@ char *build_dm_uuid(struct dm_pool *mem, const struct logical_volume *lv, return dlid; } + +char *first_substring(const char *str, ...) +{ + char *substr, *r = NULL; + va_list ap; + + va_start(ap, str); + + while ((substr = va_arg(ap, char *))) + if ((r = strstr(str, substr))) + break; + + va_end(ap); + + return r; +} diff --git a/lib/misc/lvm-string.h b/lib/misc/lvm-string.h index d96dad580..ebdf95652 100644 --- a/lib/misc/lvm-string.h +++ b/lib/misc/lvm-string.h @@ -49,4 +49,12 @@ void copy_systemid_chars(const char *src, char *dst); int apply_lvname_restrictions(const char *name); int is_reserved_lvname(const char *name); +/* + * Provided with a NULL-terminated argument list of const char * + * substrings that might be contained within the string str, use + * strstr() to search str for each in turn and return a pointer to the + * first match or else NULL. + */ +char *first_substring(const char *str, ...); + #endif -- 2.43.5