diff options
| author | Denis Vlasenko <vda.linux@googlemail.com> | 2007-07-24 15:54:42 +0000 |
|---|---|---|
| committer | Denis Vlasenko <vda.linux@googlemail.com> | 2007-07-24 15:54:42 +0000 |
| commit | 990d0f63eeb502c8762076e5c5499196e09cba55 (patch) | |
| tree | 30a2091a8159b1694d65f9952e2aba2667d7dc11 /libbb/compare_string_array.c | |
| parent | bcb66ec22e82f6b1ab93f3aec917269393a5b464 (diff) | |
| download | busybox-w32-990d0f63eeb502c8762076e5c5499196e09cba55.tar.gz busybox-w32-990d0f63eeb502c8762076e5c5499196e09cba55.tar.bz2 busybox-w32-990d0f63eeb502c8762076e5c5499196e09cba55.zip | |
Replace index_in_[sub]str_array with index_in_[sub]strings,
which scans thru "abc\0def\0123\0\0" type strings. Saves 250 bytes.
text data bss dec hex filename
781266 1328 11844 794438 c1f46 busybox_old
781010 1328 11844 794182 c1e46 busybox_unstripped
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 | } | ||
