summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlasdair G Kergon <agk@redhat.com>2016-07-14 14:46:38 +0100
committerAlasdair G Kergon <agk@redhat.com>2016-07-14 14:46:38 +0100
commit12925d8b70c88e1a7a98e69ab896eb16ed2602fc (patch)
treeaad9866215f70d4c3e1c488a4d6a1945270e916b
parent5af311ddd8f5c03839b1c2a8feff5eb8dfde5606 (diff)
downloadlvm2-12925d8b70c88e1a7a98e69ab896eb16ed2602fc.tar.gz
string: Add first_substring().
-rw-r--r--lib/misc/lvm-string.c16
-rw-r--r--lib/misc/lvm-string.h8
2 files changed, 24 insertions, 0 deletions
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