]> Git Repo - linux.git/commitdiff
lib/string: introduce match_string() helper
authorAndy Shevchenko <[email protected]>
Thu, 17 Mar 2016 21:22:14 +0000 (14:22 -0700)
committerLinus Torvalds <[email protected]>
Thu, 17 Mar 2016 22:09:34 +0000 (15:09 -0700)
Occasionally we have to search for an occurrence of a string in an array
of strings.  Make a simple helper for that purpose.

Signed-off-by: Andy Shevchenko <[email protected]>
Cc: "David S. Miller" <[email protected]>
Cc: Bartlomiej Zolnierkiewicz <[email protected]>
Cc: David Airlie <[email protected]>
Cc: David Woodhouse <[email protected]>
Cc: Dmitry Eremin-Solenikov <[email protected]>
Cc: Greg Kroah-Hartman <[email protected]>
Cc: Heikki Krogerus <[email protected]>
Cc: Linus Walleij <[email protected]>
Cc: Mika Westerberg <[email protected]>
Cc: Rafael J. Wysocki <[email protected]>
Cc: Sebastian Reichel <[email protected]>
Cc: Tejun Heo <[email protected]>
Cc: Rasmus Villemoes <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
include/linux/string.h
lib/string.c

index 9eebc66d957a7f74cffd602372cff71d31473abc..0f235e80d355de73bd6e51090e07c80ebd483665 100644 (file)
@@ -130,6 +130,8 @@ extern void argv_free(char **argv);
 extern bool sysfs_streq(const char *s1, const char *s2);
 extern int strtobool(const char *s, bool *res);
 
+int match_string(const char * const *array, size_t n, const char *string);
+
 #ifdef CONFIG_BINARY_PRINTF
 int vbin_printf(u32 *bin_buf, size_t size, const char *fmt, va_list args);
 int bstr_printf(char *buf, size_t size, const char *fmt, const u32 *bin_buf);
index 0323c0d5629af31e674bcfa24624e0917e2bb80d..e9c9db161d2cf4f7a5d01bb9c707288f3811955e 100644 (file)
@@ -630,6 +630,32 @@ bool sysfs_streq(const char *s1, const char *s2)
 }
 EXPORT_SYMBOL(sysfs_streq);
 
+/**
+ * match_string - matches given string in an array
+ * @array:     array of strings
+ * @n:         number of strings in the array or -1 for NULL terminated arrays
+ * @string:    string to match with
+ *
+ * Return:
+ * index of a @string in the @array if matches, or %-EINVAL otherwise.
+ */
+int match_string(const char * const *array, size_t n, const char *string)
+{
+       int index;
+       const char *item;
+
+       for (index = 0; index < n; index++) {
+               item = array[index];
+               if (!item)
+                       break;
+               if (!strcmp(item, string))
+                       return index;
+       }
+
+       return -EINVAL;
+}
+EXPORT_SYMBOL(match_string);
+
 /**
  * strtobool - convert common user inputs into boolean values
  * @s: input string
This page took 0.061186 seconds and 4 git commands to generate.