From 1fe69c4656082f48762f69149efc6d9d01d62ce1 Mon Sep 17 00:00:00 2001 From: Martin Kletzander Date: Mon, 3 Aug 2015 14:03:23 +0200 Subject: [PATCH] util: Add virStringGetFirstWithPrefix That function takes string list and returns first string in that list that starts with the @prefix parameter with that prefix being skipped as the caller knows what it starts with (also for easier manipulation in future). Signed-off-by: Martin Kletzander --- src/libvirt_private.syms | 1 + src/util/virstring.c | 17 +++++++++++++++++ src/util/virstring.h | 2 ++ 3 files changed, 20 insertions(+) diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index eb42bfa519..ef62a5be6b 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -2177,6 +2177,7 @@ virStrdup; virStringArrayHasString; virStringFreeList; virStringFreeListCount; +virStringGetFirstWithPrefix; virStringHasControlChars; virStringIsEmpty; virStringJoin; diff --git a/src/util/virstring.c b/src/util/virstring.c index 4f0afe999b..8cd4bdd16e 100644 --- a/src/util/virstring.c +++ b/src/util/virstring.c @@ -238,6 +238,23 @@ virStringArrayHasString(char **strings, const char *needle) return false; } +char * +virStringGetFirstWithPrefix(char **strings, const char *prefix) +{ + size_t i = 0; + + if (!strings) + return NULL; + + while (strings[i]) { + if (STRPREFIX(strings[i], prefix)) + return strings[i] + strlen(prefix); + i++; + } + + return NULL; +} + /* Like strtol, but produce an "int" result, and check more carefully. Return 0 upon success; return -1 to indicate failure. When END_PTR is NULL, the byte after the final valid digit must be NUL. diff --git a/src/util/virstring.h b/src/util/virstring.h index 9848fb622c..df5928fb13 100644 --- a/src/util/virstring.h +++ b/src/util/virstring.h @@ -47,6 +47,8 @@ void virStringFreeListCount(char **strings, size_t count); size_t virStringListLen(const char **strings); bool virStringArrayHasString(char **strings, const char *needle); +char *virStringGetFirstWithPrefix(char **strings, const char *prefix) + ATTRIBUTE_NONNULL(2); char *virArgvToString(const char *const *argv); -- GitLab