iproute: more string reuse
No binary (build failed)
—
(log yok)
| @@ -28,8 +28,11 @@ typedef struct rtnl_tab_t { | |
| static void rtnl_tab_initialize(const char *file, const char **tab) | |
| { | |
| char *token[2]; | |
| - | parser_t *parser = config_open2(file, fopen_for_read); |
| + | char fullname[sizeof(CONFDIR"/rt_dsfield") + 8]; |
| + | parser_t *parser; |
| + | sprintf(fullname, CONFDIR"/rt_%s", file); |
| + | parser = config_open2(fullname, fopen_for_read); |
| while (config_read(parser, token, 2, 2, "# \t", PARSE_NORMAL)) { | |
| unsigned id = bb_strtou(token[0], NULL, 0); | |
| if (id > RT_TABLE_MAX) { | |
| @@ -94,7 +97,7 @@ static void rtnl_rtprot_initialize(void) | |
| return; | |
| rtnl_rtprot_tab = xzalloc(sizeof(*rtnl_rtprot_tab)); | |
| memcpy(rtnl_rtprot_tab->tab, init_tab, sizeof(init_tab)); | |
| - | rtnl_tab_initialize(CONFDIR "/rt_protos", rtnl_rtprot_tab->tab); |
| + | rtnl_tab_initialize("protos", rtnl_rtprot_tab->tab); |
| } | |
| #if 0 /* UNUSED */ | |
| @@ -131,7 +134,7 @@ static void rtnl_rtscope_initialize(void) | |
| rtnl_rtscope_tab->tab[254] = "host"; | |
| rtnl_rtscope_tab->tab[253] = "link"; | |
| rtnl_rtscope_tab->tab[200] = "site"; | |
| - | rtnl_tab_initialize(CONFDIR "/rt_scopes", rtnl_rtscope_tab->tab); |
| + | rtnl_tab_initialize("scopes", rtnl_rtscope_tab->tab); |
| } | |
| const char* FAST_FUNC rtnl_rtscope_n2a(int id) | |
| @@ -161,7 +164,7 @@ static void rtnl_rtrealm_initialize(void) | |
| if (rtnl_rtrealm_tab) return; | |
| rtnl_rtrealm_tab = xzalloc(sizeof(*rtnl_rtrealm_tab)); | |
| rtnl_rtrealm_tab->tab[0] = "unknown"; | |
| - | rtnl_tab_initialize(CONFDIR "/rt_realms", rtnl_rtrealm_tab->tab); |
| + | rtnl_tab_initialize("realms", rtnl_rtrealm_tab->tab); |
| } | |
| int FAST_FUNC rtnl_rtrealm_a2n(uint32_t *id, char *arg) | |
| @@ -193,7 +196,7 @@ static void rtnl_rtdsfield_initialize(void) | |
| if (rtnl_rtdsfield_tab) return; | |
| rtnl_rtdsfield_tab = xzalloc(sizeof(*rtnl_rtdsfield_tab)); | |
| rtnl_rtdsfield_tab->tab[0] = "0"; | |
| - | rtnl_tab_initialize(CONFDIR "/rt_dsfield", rtnl_rtdsfield_tab->tab); |
| + | rtnl_tab_initialize("dsfield", rtnl_rtdsfield_tab->tab); |
| } | |
| const char* FAST_FUNC rtnl_dsfield_n2a(int id) | |
| @@ -229,7 +232,7 @@ static void rtnl_rttable_initialize(void) | |
| rtnl_rttable_tab->tab[255] = "local"; | |
| rtnl_rttable_tab->tab[254] = "main"; | |
| rtnl_rttable_tab->tab[253] = "default"; | |
| - | rtnl_tab_initialize(CONFDIR "/rt_tables", rtnl_rttable_tab->tab); |
| + | rtnl_tab_initialize("tables", rtnl_rttable_tab->tab); |
| } | |
| const char* FAST_FUNC rtnl_rttable_n2a(int id) | |