diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2008-07-16 22:12:18 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2008-07-16 22:12:18 +0000 |
commit | c01340fe26b76e172805ff641ad9af6bc45cdc91 (patch) | |
tree | 1b3b57ef2fd7441bb91410b89f763056279baddf /networking | |
parent | 38e54f1c1384e76adafb4e611a6bd456e4351d42 (diff) | |
download | busybox-w32-c01340fe26b76e172805ff641ad9af6bc45cdc91.tar.gz busybox-w32-c01340fe26b76e172805ff641ad9af6bc45cdc91.tar.bz2 busybox-w32-c01340fe26b76e172805ff641ad9af6bc45cdc91.zip |
update of config file parser from Vladimir
Diffstat (limited to 'networking')
-rw-r--r-- | networking/nameif.c | 20 |
1 files changed, 6 insertions, 14 deletions
diff --git a/networking/nameif.c b/networking/nameif.c index f3d333baf..506f4fa1c 100644 --- a/networking/nameif.c +++ b/networking/nameif.c | |||
@@ -160,21 +160,13 @@ int nameif_main(int argc, char **argv) | |||
160 | prepend_new_eth_table(&clist, ifname, *argv++); | 160 | prepend_new_eth_table(&clist, ifname, *argv++); |
161 | } | 161 | } |
162 | } else { | 162 | } else { |
163 | ifh = xfopen(fname, "r"); | 163 | struct parser_t parser; |
164 | while ((line = xmalloc_fgets(ifh)) != NULL) { | 164 | if (config_open(&parser, fname)) { |
165 | char *next; | 165 | char *tokens[2]; |
166 | 166 | while (config_read(&parser, tokens, 2, 2, " \t", '#')) | |
167 | line_ptr = skip_whitespace(line); | 167 | prepend_new_eth_table(&clist, tokens[0], tokens[1]); |
168 | if ((line_ptr[0] == '#') || (line_ptr[0] == '\n')) | 168 | config_close(&parser); |
169 | goto read_next_line; | ||
170 | next = skip_non_whitespace(line_ptr); | ||
171 | if (*next) | ||
172 | *next++ = '\0'; | ||
173 | prepend_new_eth_table(&clist, line_ptr, next); | ||
174 | read_next_line: | ||
175 | free(line); | ||
176 | } | 169 | } |
177 | fclose(ifh); | ||
178 | } | 170 | } |
179 | 171 | ||
180 | ctl_sk = xsocket(PF_INET, SOCK_DGRAM, 0); | 172 | ctl_sk = xsocket(PF_INET, SOCK_DGRAM, 0); |