diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2008-07-22 03:05:26 +0400 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2008-07-22 03:05:26 +0400 |
commit | 5415c856eaccd1bc5d064022770a288f43b2e94f (patch) | |
tree | 5973db4e6f81b5e311e8944700ded5db1083d440 /networking/hostname.c | |
parent | b74a2dba571d1c5a6127c683fb50923336d9c59f (diff) |
libbb: [x]fopen_for_{read,write} introduced and used.
(by Valdimir)
function old new delta
config_open2 - 41 +41
config_read 507 542 +35
find_pair 169 187 +18
fopen_for_write - 14 +14
fopen_for_read - 14 +14
find_main 406 418 +12
xfopen_for_write - 10 +10
xfopen_for_read - 10 +10
popstring 134 140 +6
parse_inittab 396 401 +5
next_token 923 928 +5
pack_gzip 1659 1661 +2
bb__parsespent 117 119 +2
fallbackSort 1719 1717 -2
evalvar 1376 1374 -2
qrealloc 36 33 -3
...
...
...
...
singlemount 4579 4569 -10
process_stdin 443 433 -10
patch_main 1111 1101 -10
ifupdown_main 2175 2165 -10
file_action_grep 90 80 -10
uuidcache_init 649 637 -12
hush_main 797 785 -12
read_config 230 217 -13
dpkg_main 3835 3820 -15
read_line_input 3134 3110 -24
sysctl_main 232 203 -29
config_open 40 10 -30
WARN_BAD_LINE 44 - -44
login_main 1714 1575 -139
------------------------------------------------------------------------------
(add/remove: 5/1 grow/shrink: 8/74 up/down: 174/-737) Total: -563 bytes
Diffstat (limited to 'networking/hostname.c')
-rw-r--r-- | networking/hostname.c | 29 |
1 files changed, 10 insertions, 19 deletions
diff --git a/networking/hostname.c b/networking/hostname.c index 93cbc961f..dd2a20689 100644 --- a/networking/hostname.c +++ b/networking/hostname.c @@ -16,28 +16,19 @@ static void do_sethostname(char *s, int isfile) { - FILE *f; - if (!s) return; - if (!isfile) { - if (sethostname(s, strlen(s)) < 0) { - if (errno == EPERM) - bb_error_msg_and_die(bb_msg_perm_denied_are_you_root); - bb_perror_msg_and_die("sethostname"); - } - } else { - f = xfopen(s, "r"); -#define strbuf bb_common_bufsiz1 - while (fgets(strbuf, sizeof(strbuf), f) != NULL) { - if (strbuf[0] == '#') { - continue; - } - chomp(strbuf); - do_sethostname(strbuf, 0); + if (isfile) { + parser_t *parser = config_open2(s, xfopen_for_read); + while (config_read(parser, &s, 1, 1, "# \t", 0)) { + do_sethostname(s, 0); } if (ENABLE_FEATURE_CLEAN_UP) - fclose(f); + config_close(parser); + } else if (sethostname(s, strlen(s)) < 0) { + if (errno == EPERM) + bb_error_msg_and_die(bb_msg_perm_denied_are_you_root); + bb_perror_msg_and_die("sethostname"); } } @@ -98,5 +89,5 @@ int hostname_main(int argc, char **argv) } if (ENABLE_FEATURE_CLEAN_UP) free(buf); - return 0; + return EXIT_SUCCESS; } |