diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2008-07-21 23:05:26 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2008-07-21 23:05:26 +0000 |
commit | 5415c856eaccd1bc5d064022770a288f43b2e94f (patch) | |
tree | 5973db4e6f81b5e311e8944700ded5db1083d440 /networking/hostname.c | |
parent | b74a2dba571d1c5a6127c683fb50923336d9c59f (diff) | |
download | busybox-w32-5415c856eaccd1bc5d064022770a288f43b2e94f.tar.gz busybox-w32-5415c856eaccd1bc5d064022770a288f43b2e94f.tar.bz2 busybox-w32-5415c856eaccd1bc5d064022770a288f43b2e94f.zip |
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 @@ | |||
16 | 16 | ||
17 | static void do_sethostname(char *s, int isfile) | 17 | static void do_sethostname(char *s, int isfile) |
18 | { | 18 | { |
19 | FILE *f; | ||
20 | |||
21 | if (!s) | 19 | if (!s) |
22 | return; | 20 | return; |
23 | if (!isfile) { | 21 | if (isfile) { |
24 | if (sethostname(s, strlen(s)) < 0) { | 22 | parser_t *parser = config_open2(s, xfopen_for_read); |
25 | if (errno == EPERM) | 23 | while (config_read(parser, &s, 1, 1, "# \t", 0)) { |
26 | bb_error_msg_and_die(bb_msg_perm_denied_are_you_root); | 24 | do_sethostname(s, 0); |
27 | bb_perror_msg_and_die("sethostname"); | ||
28 | } | ||
29 | } else { | ||
30 | f = xfopen(s, "r"); | ||
31 | #define strbuf bb_common_bufsiz1 | ||
32 | while (fgets(strbuf, sizeof(strbuf), f) != NULL) { | ||
33 | if (strbuf[0] == '#') { | ||
34 | continue; | ||
35 | } | ||
36 | chomp(strbuf); | ||
37 | do_sethostname(strbuf, 0); | ||
38 | } | 25 | } |
39 | if (ENABLE_FEATURE_CLEAN_UP) | 26 | if (ENABLE_FEATURE_CLEAN_UP) |
40 | fclose(f); | 27 | config_close(parser); |
28 | } else if (sethostname(s, strlen(s)) < 0) { | ||
29 | if (errno == EPERM) | ||
30 | bb_error_msg_and_die(bb_msg_perm_denied_are_you_root); | ||
31 | bb_perror_msg_and_die("sethostname"); | ||
41 | } | 32 | } |
42 | } | 33 | } |
43 | 34 | ||
@@ -98,5 +89,5 @@ int hostname_main(int argc, char **argv) | |||
98 | } | 89 | } |
99 | if (ENABLE_FEATURE_CLEAN_UP) | 90 | if (ENABLE_FEATURE_CLEAN_UP) |
100 | free(buf); | 91 | free(buf); |
101 | return 0; | 92 | return EXIT_SUCCESS; |
102 | } | 93 | } |