diff options
Diffstat (limited to 'lib/string.c')
-rw-r--r-- | lib/string.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/lib/string.c b/lib/string.c index ed83562a53ae..1a7d3fd52541 100644 --- a/lib/string.c +++ b/lib/string.c | |||
@@ -656,6 +656,32 @@ int match_string(const char * const *array, size_t n, const char *string) | |||
656 | } | 656 | } |
657 | EXPORT_SYMBOL(match_string); | 657 | EXPORT_SYMBOL(match_string); |
658 | 658 | ||
659 | /** | ||
660 | * __sysfs_match_string - matches given string in an array | ||
661 | * @array: array of strings | ||
662 | * @n: number of strings in the array or -1 for NULL terminated arrays | ||
663 | * @str: string to match with | ||
664 | * | ||
665 | * Returns index of @str in the @array or -EINVAL, just like match_string(). | ||
666 | * Uses sysfs_streq instead of strcmp for matching. | ||
667 | */ | ||
668 | int __sysfs_match_string(const char * const *array, size_t n, const char *str) | ||
669 | { | ||
670 | const char *item; | ||
671 | int index; | ||
672 | |||
673 | for (index = 0; index < n; index++) { | ||
674 | item = array[index]; | ||
675 | if (!item) | ||
676 | break; | ||
677 | if (sysfs_streq(item, str)) | ||
678 | return index; | ||
679 | } | ||
680 | |||
681 | return -EINVAL; | ||
682 | } | ||
683 | EXPORT_SYMBOL(__sysfs_match_string); | ||
684 | |||
659 | #ifndef __HAVE_ARCH_MEMSET | 685 | #ifndef __HAVE_ARCH_MEMSET |
660 | /** | 686 | /** |
661 | * memset - Fill a region of memory with the given value | 687 | * memset - Fill a region of memory with the given value |