libbb: code shrink and speed up index_in_strings()
No binary (build failed)
—
(log yok)
| @@ -63,13 +63,19 @@ int FAST_FUNC index_in_str_array(const char *const string_array[], const char *k | |
| int FAST_FUNC index_in_strings(const char *strings, const char *key) | |
| { | |
| - | int idx = 0; |
| + | int j, idx = 0; |
| while (*strings) { | |
| - | if (strcmp(strings, key) == 0) { |
| - | return idx; |
| + | /* Do we see "key\0" at current position in strings? */ |
| + | for (j = 0; *strings == key[j]; ++j) { |
| + | if (*strings++ == '\0') { |
| + | //bb_error_msg("found:'%s' i:%u", key, idx); |
| + | return idx; /* yes */ |
| + | } |
| } | |
| - | strings += strlen(strings) + 1; /* skip NUL */ |
| + | /* No. Move to the start of the next string. */ |
| + | while (*strings++ != '\0') |
| + | continue; |
| idx++; | |
| } | |
| return -1; | |