Make a simple helper for matching strings with sysfs attribute files. In most parts the same as match_string(), except sysfs_match_string() uses sysfs_streq() instead of strcmp() for matching. This is more convenient when used with sysfs attributes.
Showing the changes to lib/string.c (1 of 2 files). Show all
Unified · Split
| @@ -656,6 +656,32 @@ int match_string(const char * const *array, size_t n, const char *string) · 655 unmodified lines | |||
| 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 |