mirror of
https://github.com/sheumann/hush.git
synced 2024-12-25 03:32:18 +00:00
ifupdown: code shrink
function old new delta keywords_up_down - 43 +43 set_environ 371 259 -112 ifupdown_main 2194 2073 -121 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 0/2 up/down: 43/-233) Total: -190 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
dd82443b92
commit
9c28fb8d28
@ -87,7 +87,6 @@ struct mapping_defn_t {
|
|||||||
|
|
||||||
char *script;
|
char *script;
|
||||||
|
|
||||||
int max_mappings;
|
|
||||||
int n_mappings;
|
int n_mappings;
|
||||||
char **mapping;
|
char **mapping;
|
||||||
};
|
};
|
||||||
@ -102,7 +101,6 @@ struct interface_defn_t {
|
|||||||
const struct method_t *method;
|
const struct method_t *method;
|
||||||
|
|
||||||
char *iface;
|
char *iface;
|
||||||
int max_options;
|
|
||||||
int n_options;
|
int n_options;
|
||||||
struct variable_t *option;
|
struct variable_t *option;
|
||||||
};
|
};
|
||||||
@ -138,6 +136,16 @@ struct globals {
|
|||||||
#define INIT_G() do { } while (0)
|
#define INIT_G() do { } while (0)
|
||||||
|
|
||||||
|
|
||||||
|
static const char keywords_up_down[] ALIGN1 =
|
||||||
|
"up\0"
|
||||||
|
"down\0"
|
||||||
|
"pre-up\0"
|
||||||
|
"pre-down\0"
|
||||||
|
"post-up\0"
|
||||||
|
"post-down\0"
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
#if ENABLE_FEATURE_IFUPDOWN_IPV4 || ENABLE_FEATURE_IFUPDOWN_IPV6
|
#if ENABLE_FEATURE_IFUPDOWN_IPV4 || ENABLE_FEATURE_IFUPDOWN_IPV6
|
||||||
|
|
||||||
static void addstr(char **bufp, const char *str, size_t str_length)
|
static void addstr(char **bufp, const char *str, size_t str_length)
|
||||||
@ -803,7 +811,6 @@ static struct interfaces_file_t *read_interfaces(const char *filename)
|
|||||||
currmap->match = xrealloc_vector(currmap->match, 4, currmap->n_matches);
|
currmap->match = xrealloc_vector(currmap->match, 4, currmap->n_matches);
|
||||||
currmap->match[currmap->n_matches++] = xstrdup(first_word);
|
currmap->match[currmap->n_matches++] = xstrdup(first_word);
|
||||||
}
|
}
|
||||||
/*currmap->max_mappings = 0; - done by xzalloc */
|
|
||||||
/*currmap->n_mappings = 0;*/
|
/*currmap->n_mappings = 0;*/
|
||||||
/*currmap->mapping = NULL;*/
|
/*currmap->mapping = NULL;*/
|
||||||
/*currmap->script = NULL;*/
|
/*currmap->script = NULL;*/
|
||||||
@ -888,25 +895,16 @@ static struct interfaces_file_t *read_interfaces(const char *filename)
|
|||||||
if (rest_of_line[0] == '\0')
|
if (rest_of_line[0] == '\0')
|
||||||
bb_error_msg_and_die("option with empty value \"%s\"", buf);
|
bb_error_msg_and_die("option with empty value \"%s\"", buf);
|
||||||
|
|
||||||
if (strcmp(first_word, "up") != 0
|
/* If not one of "up", "down",... words... */
|
||||||
&& strcmp(first_word, "down") != 0
|
if (index_in_strings(keywords_up_down, first_word) < 0) {
|
||||||
&& strcmp(first_word, "pre-up") != 0
|
|
||||||
&& strcmp(first_word, "pre-down") != 0
|
|
||||||
&& strcmp(first_word, "post-up") != 0
|
|
||||||
&& strcmp(first_word, "post-down") != 0
|
|
||||||
) {
|
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < currif->n_options; i++) {
|
for (i = 0; i < currif->n_options; i++) {
|
||||||
if (strcmp(currif->option[i].name, first_word) == 0)
|
if (strcmp(currif->option[i].name, first_word) == 0)
|
||||||
bb_error_msg_and_die("duplicate option \"%s\"", buf);
|
bb_error_msg_and_die("duplicate option \"%s\"", buf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (currif->n_options >= currif->max_options) {
|
|
||||||
currif->max_options += 10;
|
|
||||||
currif->option = xrealloc(currif->option,
|
|
||||||
sizeof(*currif->option) * currif->max_options);
|
|
||||||
}
|
|
||||||
debug_noise("\t%s=%s\n", first_word, rest_of_line);
|
debug_noise("\t%s=%s\n", first_word, rest_of_line);
|
||||||
|
currif->option = xrealloc_vector(currif->option, 4, currif->n_options);
|
||||||
currif->option[currif->n_options].name = xstrdup(first_word);
|
currif->option[currif->n_options].name = xstrdup(first_word);
|
||||||
currif->option[currif->n_options].value = xstrdup(rest_of_line);
|
currif->option[currif->n_options].value = xstrdup(rest_of_line);
|
||||||
currif->n_options++;
|
currif->n_options++;
|
||||||
@ -918,11 +916,7 @@ static struct interfaces_file_t *read_interfaces(const char *filename)
|
|||||||
bb_error_msg_and_die("duplicate script in mapping \"%s\"", buf);
|
bb_error_msg_and_die("duplicate script in mapping \"%s\"", buf);
|
||||||
currmap->script = xstrdup(next_word(&rest_of_line));
|
currmap->script = xstrdup(next_word(&rest_of_line));
|
||||||
} else if (strcmp(first_word, "map") == 0) {
|
} else if (strcmp(first_word, "map") == 0) {
|
||||||
if (currmap->n_mappings >= currmap->max_mappings) {
|
currmap->mapping = xrealloc_vector(currmap->mapping, 2, currmap->n_mappings);
|
||||||
currmap->max_mappings = currmap->max_mappings * 2 + 1;
|
|
||||||
currmap->mapping = xrealloc(currmap->mapping,
|
|
||||||
sizeof(char *) * currmap->max_mappings);
|
|
||||||
}
|
|
||||||
currmap->mapping[currmap->n_mappings] = xstrdup(next_word(&rest_of_line));
|
currmap->mapping[currmap->n_mappings] = xstrdup(next_word(&rest_of_line));
|
||||||
currmap->n_mappings++;
|
currmap->n_mappings++;
|
||||||
} else {
|
} else {
|
||||||
@ -986,13 +980,7 @@ static void set_environ(struct interface_defn_t *iface, const char *mode)
|
|||||||
pp = G.my_environ;
|
pp = G.my_environ;
|
||||||
|
|
||||||
for (i = 0; i < iface->n_options; i++) {
|
for (i = 0; i < iface->n_options; i++) {
|
||||||
if (strcmp(iface->option[i].name, "up") == 0
|
if (index_in_strings(keywords_up_down, iface->option[i].name) >= 0) {
|
||||||
|| strcmp(iface->option[i].name, "down") == 0
|
|
||||||
|| strcmp(iface->option[i].name, "pre-up") == 0
|
|
||||||
|| strcmp(iface->option[i].name, "pre-down") == 0
|
|
||||||
|| strcmp(iface->option[i].name, "post-up") == 0
|
|
||||||
|| strcmp(iface->option[i].name, "post-down") == 0
|
|
||||||
) {
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
*pp++ = setlocalenv("IF_%s=%s", iface->option[i].name, iface->option[i].value);
|
*pp++ = setlocalenv("IF_%s=%s", iface->option[i].name, iface->option[i].value);
|
||||||
|
Loading…
Reference in New Issue
Block a user