rename: compare_string_array -> index_in_str_array introduce index_in_substr_array and use it in iproute2
No binary (build failed)
—
(log yok)
| @@ -644,7 +644,7 @@ static unsigned int fill_package_struct(char *control_buffer) | |
| goto fill_package_struct_cleanup; /* Oh no, the dreaded goto statement ! */ | |
| } | |
| - | field_num = compare_string_array(field_names, field_name); |
| + | field_num = index_in_str_array(field_names, field_name); |
| switch (field_num) { | |
| case 0: /* Package */ | |
| new_node->name = search_name_hashtable(field_value); | |
| @@ -996,11 +996,11 @@ static int ignore(struct fs_info *fs) | |
| if (!fs_match(fs, &fs_type_compiled)) return 1; | |
| /* Are we ignoring this type? */ | |
| - | if(compare_string_array(ignored_types, fs->type) >= 0) |
| + | if (index_in_str_array(ignored_types, fs->type) >= 0) |
| return 1; | |
| /* Do we really really want to check this fs? */ | |
| - | wanted = compare_string_array(really_wanted, fs->type) >= 0; |
| + | wanted = index_in_str_array(really_wanted, fs->type) >= 0; |
| /* See if the <fsck.fs> program is available. */ | |
| s = find_fsck(fs->type); | |
| @@ -477,7 +477,8 @@ extern void setup_environment(const char *shell, int loginshell, int changeenv, | |
| extern int correct_password(const struct passwd *pw); | |
| extern char *pw_encrypt(const char *clear, const char *salt); | |
| extern int obscure(const char *old, const char *newval, const struct passwd *pwdp); | |
| - | extern int compare_string_array(const char * const string_array[], const char *key); |
| + | extern int index_in_str_array(const char * const string_array[], const char *key); |
| + | extern int index_in_substr_array(const char * const string_array[], const char *key); |
| extern void print_login_issue(const char *issue_file, const char *tty); | |
| extern void print_login_prompt(void); | |
| #ifdef BB_NOMMU | |
| @@ -3,11 +3,11 @@ | |
| * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. | |
| */ | |
| - | #include <string.h> |
| #include "libbb.h" | |
| - | /* returns the array number of the string */ |
| - | int compare_string_array(const char * const string_array[], const char *key) |
| + | /* returns the array index of the string */ |
| + | /* (index of first match is returned, or -1) */ |
| + | int index_in_str_array(const char * const string_array[], const char *key) |
| { | |
| int i; | |
| @@ -16,6 +16,22 @@ int compare_string_array(const char * const string_array[], const char *key) | |
| return i; | |
| } | |
| } | |
| - | return -i; |
| + | return -1; |
| } | |
| + | /* returns the array index of the string, even if it matches only a beginning */ |
| + | /* (index of first match is returned, or -1) */ |
| + | int index_in_substr_array(const char * const string_array[], const char *key) |
| + | { |
| + | int i; |
| + | int len = strlen(key); |
| + | if (!len) |
| + | return -1; |
| + | |
| + | for (i = 0; string_array[i] != 0; i++) { |
| + | if (strncmp(string_array[i], key, len) == 0) { |
| + | return i; |
| + | } |
| + | } |
| + | return -1; |
| + | } |
| @@ -627,7 +627,7 @@ static void process_config_line (const char *line, unsigned long *event_mask) | |
| when, name, what, | |
| p[0], p[1], p[2], p[3], p[4], p[5], p[6]); | |
| - | i = compare_string_array(options, when ); |
| + | i = index_in_str_array(options, when ); |
| /*"CLEAR_CONFIG"*/ | |
| if( i == 0) | |
| @@ -673,7 +673,7 @@ static void process_config_line (const char *line, unsigned long *event_mask) | |
| goto process_config_line_err; | |
| } | |
| - | i = compare_string_array(options, what ); |
| + | i = index_in_str_array(options, what ); |
| switch(i) | |
| { | |
| @@ -1313,8 +1313,8 @@ static const char *get_variable (const char *variable, void *info) | |
| /* Here on error we should do exit(RV_SYS_ERROR), instead we do exit(EXIT_FAILURE) */ | |
| hostname[STRING_LENGTH - 1] = '\0'; | |
| - | /* compare_string_array returns i>=0 */ |
| - | i=compare_string_array(field_names, variable); |
| + | /* index_in_str_array returns i>=0 */ |
| + | i=index_in_str_array(field_names, variable); |
| if ( i > 6 || i < 0 || (i > 1 && gv_info == NULL)) | |
| return (NULL); | |
| @@ -12,20 +12,11 @@ | |
| * Rani Assaf <[email protected]> 980929: resolve addresses | |
| */ | |
| - | #include <stdio.h> |
| - | #include <stdlib.h> |
| - | #include <unistd.h> |
| - | #include <syslog.h> |
| - | #include <fcntl.h> |
| - | #include <sys/socket.h> |
| - | #include <netinet/in.h> |
| - | #include <string.h> |
| + | #include "busybox.h" |
| #include "libiproute/utils.h" | |
| #include "libiproute/ip_common.h" | |
| - | #include "busybox.h" |
| - | |
| int ip_main(int argc, char **argv) | |
| { | |
| int ret = EXIT_FAILURE; | |
| @@ -57,5 +48,5 @@ int ip_main(int argc, char **argv) | |
| if (ret) { | |
| bb_show_usage(); | |
| } | |
| - | return(EXIT_SUCCESS); |
| + | return EXIT_SUCCESS; |
| } | |
| @@ -441,7 +441,7 @@ int ipaddr_list_or_flush(int argc, char **argv, int flush) | |
| } | |
| while (argc > 0) { | |
| - | const int option_num = compare_string_array(option, *argv); |
| + | const int option_num = index_in_str_array(option, *argv); |
| switch (option_num) { | |
| case 0: /* to */ | |
| NEXT_ARG(); | |
| @@ -653,7 +653,7 @@ static int ipaddr_modify(int cmd, int argc, char **argv) | |
| req.ifa.ifa_family = preferred_family; | |
| while (argc > 0) { | |
| - | const int option_num = compare_string_array(option, *argv); |
| + | const int option_num = index_in_str_array(option, *argv); |
| switch (option_num) { | |
| case 0: /* peer */ | |
| case 1: /* remote */ | |
| @@ -800,25 +800,24 @@ static int ipaddr_modify(int cmd, int argc, char **argv) | |
| int do_ipaddr(int argc, char **argv) | |
| { | |
| static const char *const commands[] = { | |
| - | "add", "del", "delete", "list", "show", "lst", "flush", 0 |
| + | "add", "delete", "list", "show", "lst", "flush", 0 |
| }; | |
| int command_num = 2; | |
| if (*argv) { | |
| - | command_num = compare_string_array(commands, *argv); |
| + | command_num = index_in_substr_array(commands, *argv); |
| } | |
| switch (command_num) { | |
| case 0: /* add */ | |
| return ipaddr_modify(RTM_NEWADDR, argc-1, argv+1); | |
| - | case 1: /* del */ |
| - | case 2: /* delete */ |
| + | case 1: /* delete */ |
| return ipaddr_modify(RTM_DELADDR, argc-1, argv+1); | |
| - | case 3: /* list */ |
| - | case 4: /* show */ |
| - | case 5: /* lst */ |
| + | case 2: /* list */ |
| + | case 3: /* show */ |
| + | case 4: /* lst */ |
| return ipaddr_list_or_flush(argc-1, argv+1, 0); | |
| - | case 6: /* flush */ |
| + | case 5: /* flush */ |
| return ipaddr_list_or_flush(argc-1, argv+1, 1); | |
| } | |
| bb_error_msg_and_die("unknown command %s", *argv); | |
| @@ -670,7 +670,7 @@ static int iproute_get(int argc, char **argv) | |
| req.r.rtm_tos = 0; | |
| while (argc > 0) { | |
| - | switch (compare_string_array(options, *argv)) { |
| + | switch (index_in_str_array(options, *argv)) { |
| case 0: /* from */ | |
| { | |
| inet_prefix addr; | |
| @@ -811,14 +811,16 @@ static int iproute_get(int argc, char **argv) | |
| int do_iproute(int argc, char **argv) | |
| { | |
| static const char * const ip_route_commands[] = | |
| - | { "add", "append", "change", "chg", "delete", "del", "get", |
| + | { "add", "append", "change", "chg", "delete", "get", |
| "list", "show", "prepend", "replace", "test", "flush", 0 }; | |
| - | int command_num = 7; |
| + | int command_num = 6; |
| unsigned int flags = 0; | |
| int cmd = RTM_NEWROUTE; | |
| + | /* "Standard" 'ip r a' treats 'a' as 'add', not 'append' */ |
| + | /* It probably means that it is using "first match" rule */ |
| if (*argv) { | |
| - | command_num = compare_string_array(ip_route_commands, *argv); |
| + | command_num = index_in_substr_array(ip_route_commands, *argv); |
| } | |
| switch (command_num) { | |
| case 0: /* add*/ | |
| @@ -263,10 +263,7 @@ int matches(char *cmd, char *pattern) | |
| { | |
| int len = strlen(cmd); | |
| - | if (len > strlen(pattern)) { |
| - | return -1; |
| - | } |
| - | return memcmp(pattern, cmd, len); |
| + | return strncmp(pattern, cmd, len); |
| } | |
| int inet_addr_match(inet_prefix * a, inet_prefix * b, int bits) | |
| @@ -898,7 +898,7 @@ static int nfsmount(struct mntent *mp, int vfsflags, char *filteropts) | |
| }; | |
| int val = xatoi_u(opteq + 1); | |
| *opteq = '\0'; | |
| - | switch (compare_string_array(options, opt)) { |
| + | switch (index_in_str_array(options, opt)) { |
| case 0: // "rsize" | |
| data.rsize = val; | |
| break; | |
| @@ -940,7 +940,7 @@ static int nfsmount(struct mntent *mp, int vfsflags, char *filteropts) | |
| break; | |
| case 12: // "mounthost" | |
| mounthost = xstrndup(opteq+1, | |
| - | strcspn(opteq+1," \t\n\r,")); |
| + | strcspn(opteq+1," \t\n\r,")); |
| break; | |
| case 13: // "mountprog" | |
| mountprog = val; | |
| @@ -996,7 +996,7 @@ static int nfsmount(struct mntent *mp, int vfsflags, char *filteropts) | |
| val = 0; | |
| opt += 2; | |
| } | |
| - | switch (compare_string_array(options, opt)) { |
| + | switch (index_in_str_array(options, opt)) { |
| case 0: // "bg" | |
| bg = val; | |
| break; | |