mirror of
https://github.com/sheumann/hush.git
synced 2024-08-20 04:28:57 +00:00
rename: compare_string_array -> index_in_str_array
introduce index_in_substr_array and use it in iproute2
This commit is contained in:
parent
402151671b
commit
5af906e7c8
@ -644,7 +644,7 @@ static unsigned int fill_package_struct(char *control_buffer)
|
|||||||
goto fill_package_struct_cleanup; /* Oh no, the dreaded goto statement ! */
|
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) {
|
switch (field_num) {
|
||||||
case 0: /* Package */
|
case 0: /* Package */
|
||||||
new_node->name = search_name_hashtable(field_value);
|
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;
|
if (!fs_match(fs, &fs_type_compiled)) return 1;
|
||||||
|
|
||||||
/* Are we ignoring this type? */
|
/* 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;
|
return 1;
|
||||||
|
|
||||||
/* Do we really really want to check this fs? */
|
/* 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. */
|
/* See if the <fsck.fs> program is available. */
|
||||||
s = find_fsck(fs->type);
|
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 int correct_password(const struct passwd *pw);
|
||||||
extern char *pw_encrypt(const char *clear, const char *salt);
|
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 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_issue(const char *issue_file, const char *tty);
|
||||||
extern void print_login_prompt(void);
|
extern void print_login_prompt(void);
|
||||||
#ifdef BB_NOMMU
|
#ifdef BB_NOMMU
|
||||||
|
@ -3,11 +3,11 @@
|
|||||||
* Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
|
* Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <string.h>
|
|
||||||
#include "libbb.h"
|
#include "libbb.h"
|
||||||
|
|
||||||
/* returns the array number of the string */
|
/* returns the array index of the string */
|
||||||
int compare_string_array(const char * const string_array[], const char *key)
|
/* (index of first match is returned, or -1) */
|
||||||
|
int index_in_str_array(const char * const string_array[], const char *key)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@ -16,6 +16,22 @@ int compare_string_array(const char * const string_array[], const char *key)
|
|||||||
return i;
|
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,
|
when, name, what,
|
||||||
p[0], p[1], p[2], p[3], p[4], p[5], p[6]);
|
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"*/
|
/*"CLEAR_CONFIG"*/
|
||||||
if( i == 0)
|
if( i == 0)
|
||||||
@ -673,7 +673,7 @@ static void process_config_line (const char *line, unsigned long *event_mask)
|
|||||||
goto process_config_line_err;
|
goto process_config_line_err;
|
||||||
}
|
}
|
||||||
|
|
||||||
i = compare_string_array(options, what );
|
i = index_in_str_array(options, what );
|
||||||
|
|
||||||
switch(i)
|
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) */
|
/* Here on error we should do exit(RV_SYS_ERROR), instead we do exit(EXIT_FAILURE) */
|
||||||
hostname[STRING_LENGTH - 1] = '\0';
|
hostname[STRING_LENGTH - 1] = '\0';
|
||||||
|
|
||||||
/* compare_string_array returns i>=0 */
|
/* index_in_str_array returns i>=0 */
|
||||||
i=compare_string_array(field_names, variable);
|
i=index_in_str_array(field_names, variable);
|
||||||
|
|
||||||
if ( i > 6 || i < 0 || (i > 1 && gv_info == NULL))
|
if ( i > 6 || i < 0 || (i > 1 && gv_info == NULL))
|
||||||
return (NULL);
|
return (NULL);
|
||||||
|
@ -12,20 +12,11 @@
|
|||||||
* Rani Assaf <rani@magic.metawire.com> 980929: resolve addresses
|
* Rani Assaf <rani@magic.metawire.com> 980929: resolve addresses
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stdio.h>
|
#include "busybox.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 "libiproute/utils.h"
|
#include "libiproute/utils.h"
|
||||||
#include "libiproute/ip_common.h"
|
#include "libiproute/ip_common.h"
|
||||||
|
|
||||||
#include "busybox.h"
|
|
||||||
|
|
||||||
int ip_main(int argc, char **argv)
|
int ip_main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
int ret = EXIT_FAILURE;
|
int ret = EXIT_FAILURE;
|
||||||
@ -57,5 +48,5 @@ int ip_main(int argc, char **argv)
|
|||||||
if (ret) {
|
if (ret) {
|
||||||
bb_show_usage();
|
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) {
|
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) {
|
switch (option_num) {
|
||||||
case 0: /* to */
|
case 0: /* to */
|
||||||
NEXT_ARG();
|
NEXT_ARG();
|
||||||
@ -653,7 +653,7 @@ static int ipaddr_modify(int cmd, int argc, char **argv)
|
|||||||
req.ifa.ifa_family = preferred_family;
|
req.ifa.ifa_family = preferred_family;
|
||||||
|
|
||||||
while (argc > 0) {
|
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) {
|
switch (option_num) {
|
||||||
case 0: /* peer */
|
case 0: /* peer */
|
||||||
case 1: /* remote */
|
case 1: /* remote */
|
||||||
@ -800,25 +800,24 @@ static int ipaddr_modify(int cmd, int argc, char **argv)
|
|||||||
int do_ipaddr(int argc, char **argv)
|
int do_ipaddr(int argc, char **argv)
|
||||||
{
|
{
|
||||||
static const char *const commands[] = {
|
static const char *const commands[] = {
|
||||||
"add", "del", "delete", "list", "show", "lst", "flush", 0
|
"add", "delete", "list", "show", "lst", "flush", 0
|
||||||
};
|
};
|
||||||
|
|
||||||
int command_num = 2;
|
int command_num = 2;
|
||||||
|
|
||||||
if (*argv) {
|
if (*argv) {
|
||||||
command_num = compare_string_array(commands, *argv);
|
command_num = index_in_substr_array(commands, *argv);
|
||||||
}
|
}
|
||||||
switch (command_num) {
|
switch (command_num) {
|
||||||
case 0: /* add */
|
case 0: /* add */
|
||||||
return ipaddr_modify(RTM_NEWADDR, argc-1, argv+1);
|
return ipaddr_modify(RTM_NEWADDR, argc-1, argv+1);
|
||||||
case 1: /* del */
|
case 1: /* delete */
|
||||||
case 2: /* delete */
|
|
||||||
return ipaddr_modify(RTM_DELADDR, argc-1, argv+1);
|
return ipaddr_modify(RTM_DELADDR, argc-1, argv+1);
|
||||||
case 3: /* list */
|
case 2: /* list */
|
||||||
case 4: /* show */
|
case 3: /* show */
|
||||||
case 5: /* lst */
|
case 4: /* lst */
|
||||||
return ipaddr_list_or_flush(argc-1, argv+1, 0);
|
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);
|
return ipaddr_list_or_flush(argc-1, argv+1, 1);
|
||||||
}
|
}
|
||||||
bb_error_msg_and_die("unknown command %s", *argv);
|
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;
|
req.r.rtm_tos = 0;
|
||||||
|
|
||||||
while (argc > 0) {
|
while (argc > 0) {
|
||||||
switch (compare_string_array(options, *argv)) {
|
switch (index_in_str_array(options, *argv)) {
|
||||||
case 0: /* from */
|
case 0: /* from */
|
||||||
{
|
{
|
||||||
inet_prefix addr;
|
inet_prefix addr;
|
||||||
@ -811,14 +811,16 @@ static int iproute_get(int argc, char **argv)
|
|||||||
int do_iproute(int argc, char **argv)
|
int do_iproute(int argc, char **argv)
|
||||||
{
|
{
|
||||||
static const char * const ip_route_commands[] =
|
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 };
|
"list", "show", "prepend", "replace", "test", "flush", 0 };
|
||||||
int command_num = 7;
|
int command_num = 6;
|
||||||
unsigned int flags = 0;
|
unsigned int flags = 0;
|
||||||
int cmd = RTM_NEWROUTE;
|
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) {
|
if (*argv) {
|
||||||
command_num = compare_string_array(ip_route_commands, *argv);
|
command_num = index_in_substr_array(ip_route_commands, *argv);
|
||||||
}
|
}
|
||||||
switch (command_num) {
|
switch (command_num) {
|
||||||
case 0: /* add*/
|
case 0: /* add*/
|
||||||
|
@ -263,10 +263,7 @@ int matches(char *cmd, char *pattern)
|
|||||||
{
|
{
|
||||||
int len = strlen(cmd);
|
int len = strlen(cmd);
|
||||||
|
|
||||||
if (len > strlen(pattern)) {
|
return strncmp(pattern, cmd, len);
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
return memcmp(pattern, cmd, len);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int inet_addr_match(inet_prefix * a, inet_prefix * b, int bits)
|
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);
|
int val = xatoi_u(opteq + 1);
|
||||||
*opteq = '\0';
|
*opteq = '\0';
|
||||||
switch (compare_string_array(options, opt)) {
|
switch (index_in_str_array(options, opt)) {
|
||||||
case 0: // "rsize"
|
case 0: // "rsize"
|
||||||
data.rsize = val;
|
data.rsize = val;
|
||||||
break;
|
break;
|
||||||
@ -940,7 +940,7 @@ static int nfsmount(struct mntent *mp, int vfsflags, char *filteropts)
|
|||||||
break;
|
break;
|
||||||
case 12: // "mounthost"
|
case 12: // "mounthost"
|
||||||
mounthost = xstrndup(opteq+1,
|
mounthost = xstrndup(opteq+1,
|
||||||
strcspn(opteq+1," \t\n\r,"));
|
strcspn(opteq+1," \t\n\r,"));
|
||||||
break;
|
break;
|
||||||
case 13: // "mountprog"
|
case 13: // "mountprog"
|
||||||
mountprog = val;
|
mountprog = val;
|
||||||
@ -996,7 +996,7 @@ static int nfsmount(struct mntent *mp, int vfsflags, char *filteropts)
|
|||||||
val = 0;
|
val = 0;
|
||||||
opt += 2;
|
opt += 2;
|
||||||
}
|
}
|
||||||
switch (compare_string_array(options, opt)) {
|
switch (index_in_str_array(options, opt)) {
|
||||||
case 0: // "bg"
|
case 0: // "bg"
|
||||||
bg = val;
|
bg = val;
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user