diff options
Diffstat (limited to 'libbb/compare_string_array.c')
-rw-r--r-- | libbb/compare_string_array.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/libbb/compare_string_array.c b/libbb/compare_string_array.c index 077a280a2..e873d7cc3 100644 --- a/libbb/compare_string_array.c +++ b/libbb/compare_string_array.c | |||
@@ -19,8 +19,23 @@ int index_in_str_array(const char * const string_array[], const char *key) | |||
19 | return -1; | 19 | return -1; |
20 | } | 20 | } |
21 | 21 | ||
22 | int index_in_strings(const char *strings, const char *key) | ||
23 | { | ||
24 | int idx = 0; | ||
25 | |||
26 | while (strings[0]) { | ||
27 | if (strcmp(strings, key) == 0) { | ||
28 | return idx; | ||
29 | } | ||
30 | strings += strlen(strings) + 1; /* skip NUL */ | ||
31 | idx++; | ||
32 | } | ||
33 | return -1; | ||
34 | } | ||
35 | |||
22 | /* returns the array index of the string, even if it matches only a beginning */ | 36 | /* returns the array index of the string, even if it matches only a beginning */ |
23 | /* (index of first match is returned, or -1) */ | 37 | /* (index of first match is returned, or -1) */ |
38 | #ifdef UNUSED | ||
24 | int index_in_substr_array(const char * const string_array[], const char *key) | 39 | int index_in_substr_array(const char * const string_array[], const char *key) |
25 | { | 40 | { |
26 | int i; | 41 | int i; |
@@ -34,3 +49,21 @@ int index_in_substr_array(const char * const string_array[], const char *key) | |||
34 | } | 49 | } |
35 | return -1; | 50 | return -1; |
36 | } | 51 | } |
52 | #endif | ||
53 | |||
54 | int index_in_substrings(const char *strings, const char *key) | ||
55 | { | ||
56 | int len = strlen(key); | ||
57 | |||
58 | if (len) { | ||
59 | int idx = 0; | ||
60 | while (strings[0]) { | ||
61 | if (strncmp(strings, key, len) == 0) { | ||
62 | return idx; | ||
63 | } | ||
64 | strings += strlen(strings) + 1; /* skip NUL */ | ||
65 | idx++; | ||
66 | } | ||
67 | } | ||
68 | return -1; | ||
69 | } | ||