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 /libbb | |
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 'libbb')
-rw-r--r-- | libbb/appletlib.c | 2 | ||||
-rw-r--r-- | libbb/lineedit.c | 4 | ||||
-rw-r--r-- | libbb/login.c | 2 | ||||
-rw-r--r-- | libbb/parse_config.c | 20 | ||||
-rw-r--r-- | libbb/procps.c | 2 | ||||
-rw-r--r-- | libbb/rtc.c | 2 | ||||
-rw-r--r-- | libbb/wfopen.c | 20 |
7 files changed, 41 insertions, 11 deletions
diff --git a/libbb/appletlib.c b/libbb/appletlib.c index 8c35450f8..beb1d6fcb 100644 --- a/libbb/appletlib.c +++ b/libbb/appletlib.c | |||
@@ -316,7 +316,7 @@ static void parse_config_file(void) | |||
316 | || !S_ISREG(st.st_mode) /* Not a regular file? */ | 316 | || !S_ISREG(st.st_mode) /* Not a regular file? */ |
317 | || (st.st_uid != 0) /* Not owned by root? */ | 317 | || (st.st_uid != 0) /* Not owned by root? */ |
318 | || (st.st_mode & (S_IWGRP | S_IWOTH)) /* Writable by non-root? */ | 318 | || (st.st_mode & (S_IWGRP | S_IWOTH)) /* Writable by non-root? */ |
319 | || !(f = fopen(config_file, "r")) /* Cannot open? */ | 319 | || !(f = fopen_for_read(config_file)) /* Cannot open? */ |
320 | ) { | 320 | ) { |
321 | return; | 321 | return; |
322 | } | 322 | } |
diff --git a/libbb/lineedit.c b/libbb/lineedit.c index a46b5d2c4..2e16e6a0a 100644 --- a/libbb/lineedit.c +++ b/libbb/lineedit.c | |||
@@ -989,7 +989,7 @@ static void load_history(const char *fromfile) | |||
989 | 989 | ||
990 | /* NB: do not trash old history if file can't be opened */ | 990 | /* NB: do not trash old history if file can't be opened */ |
991 | 991 | ||
992 | fp = fopen(fromfile, "r"); | 992 | fp = fopen_for_read(fromfile); |
993 | if (fp) { | 993 | if (fp) { |
994 | /* clean up old history */ | 994 | /* clean up old history */ |
995 | for (hi = state->cnt_history; hi > 0;) { | 995 | for (hi = state->cnt_history; hi > 0;) { |
@@ -1022,7 +1022,7 @@ static void save_history(const char *tofile) | |||
1022 | { | 1022 | { |
1023 | FILE *fp; | 1023 | FILE *fp; |
1024 | 1024 | ||
1025 | fp = fopen(tofile, "w"); | 1025 | fp = fopen_for_write(tofile); |
1026 | if (fp) { | 1026 | if (fp) { |
1027 | int i; | 1027 | int i; |
1028 | 1028 | ||
diff --git a/libbb/login.c b/libbb/login.c index 1703a2eb7..b3e199ce4 100644 --- a/libbb/login.c +++ b/libbb/login.c | |||
@@ -32,7 +32,7 @@ void FAST_FUNC print_login_issue(const char *issue_file, const char *tty) | |||
32 | 32 | ||
33 | puts("\r"); /* start a new line */ | 33 | puts("\r"); /* start a new line */ |
34 | 34 | ||
35 | fp = fopen(issue_file, "r"); | 35 | fp = fopen_for_read(issue_file); |
36 | if (!fp) | 36 | if (!fp) |
37 | return; | 37 | return; |
38 | while ((c = fgetc(fp)) != EOF) { | 38 | while ((c = fgetc(fp)) != EOF) { |
diff --git a/libbb/parse_config.c b/libbb/parse_config.c index 3174a649e..5109066d8 100644 --- a/libbb/parse_config.c +++ b/libbb/parse_config.c | |||
@@ -59,11 +59,11 @@ Typical usage: | |||
59 | 59 | ||
60 | */ | 60 | */ |
61 | 61 | ||
62 | parser_t* FAST_FUNC config_open(const char *filename) | 62 | parser_t* FAST_FUNC config_open2(const char *filename, FILE* FAST_FUNC (*fopen_func)(const char *path)) |
63 | { | 63 | { |
64 | parser_t *parser = xzalloc(sizeof(parser_t)); | 64 | parser_t *parser = xzalloc(sizeof(parser_t)); |
65 | /* empty file configures nothing */ | 65 | /* empty file configures nothing */ |
66 | parser->fp = fopen_or_warn_stdin(filename); | 66 | parser->fp = fopen_func(filename); |
67 | if (parser->fp) | 67 | if (parser->fp) |
68 | return parser; | 68 | return parser; |
69 | if (ENABLE_FEATURE_CLEAN_UP) | 69 | if (ENABLE_FEATURE_CLEAN_UP) |
@@ -71,6 +71,11 @@ parser_t* FAST_FUNC config_open(const char *filename) | |||
71 | return NULL; | 71 | return NULL; |
72 | } | 72 | } |
73 | 73 | ||
74 | parser_t* FAST_FUNC config_open(const char *filename) | ||
75 | { | ||
76 | return config_open2(filename, fopen_or_warn_stdin); | ||
77 | } | ||
78 | |||
74 | static void config_free_data(parser_t *const parser) | 79 | static void config_free_data(parser_t *const parser) |
75 | { | 80 | { |
76 | free(parser->line); | 81 | free(parser->line); |
@@ -114,6 +119,7 @@ int FAST_FUNC config_read(parser_t *parser, char **tokens, unsigned flags, const | |||
114 | int ntokens = flags & 0xFF; | 119 | int ntokens = flags & 0xFF; |
115 | int mintokens = (flags & 0xFF00) >> 8; | 120 | int mintokens = (flags & 0xFF00) >> 8; |
116 | 121 | ||
122 | again: | ||
117 | // N.B. this could only be used in read-in-one-go version, or when tokens use xstrdup(). TODO | 123 | // N.B. this could only be used in read-in-one-go version, or when tokens use xstrdup(). TODO |
118 | //if (!parser->lineno || !(flags & PARSE_DONT_NULL)) | 124 | //if (!parser->lineno || !(flags & PARSE_DONT_NULL)) |
119 | memset(tokens, 0, sizeof(tokens[0]) * ntokens); | 125 | memset(tokens, 0, sizeof(tokens[0]) * ntokens); |
@@ -211,9 +217,13 @@ int FAST_FUNC config_read(parser_t *parser, char **tokens, unsigned flags, const | |||
211 | //bb_info_msg("A[%s]", line); | 217 | //bb_info_msg("A[%s]", line); |
212 | } | 218 | } |
213 | 219 | ||
214 | if (ii < mintokens) | 220 | if (ii < mintokens) { |
215 | bb_error_msg_and_die("bad line %u: %d tokens found, %d needed", | 221 | bb_error_msg("bad line %u: %d tokens found, %d needed", |
216 | parser->lineno, ii, mintokens); | 222 | parser->lineno, ii, mintokens); |
223 | if (flags & PARSE_MIN_DIE) | ||
224 | xfunc_die(); | ||
225 | goto again; | ||
226 | } | ||
217 | 227 | ||
218 | return ii; | 228 | return ii; |
219 | } | 229 | } |
diff --git a/libbb/procps.c b/libbb/procps.c index f799099fd..ba3d25050 100644 --- a/libbb/procps.c +++ b/libbb/procps.c | |||
@@ -308,7 +308,7 @@ procps_status_t* FAST_FUNC procps_scan(procps_status_t* sp, int flags) | |||
308 | FILE *file; | 308 | FILE *file; |
309 | 309 | ||
310 | strcpy(filename_tail, "/smaps"); | 310 | strcpy(filename_tail, "/smaps"); |
311 | file = fopen(filename, "r"); | 311 | file = fopen_for_read(filename); |
312 | if (!file) | 312 | if (!file) |
313 | break; | 313 | break; |
314 | while (fgets(buf, sizeof(buf), file)) { | 314 | while (fgets(buf, sizeof(buf), file)) { |
diff --git a/libbb/rtc.c b/libbb/rtc.c index 1fdeee80f..222d977ca 100644 --- a/libbb/rtc.c +++ b/libbb/rtc.c | |||
@@ -14,7 +14,7 @@ | |||
14 | int FAST_FUNC rtc_adjtime_is_utc(void) | 14 | int FAST_FUNC rtc_adjtime_is_utc(void) |
15 | { | 15 | { |
16 | int utc = 0; | 16 | int utc = 0; |
17 | FILE *f = fopen(ADJTIME_PATH, "r"); | 17 | FILE *f = fopen_for_read(ADJTIME_PATH); |
18 | 18 | ||
19 | if (f) { | 19 | if (f) { |
20 | RESERVE_CONFIG_BUFFER(buffer, 128); | 20 | RESERVE_CONFIG_BUFFER(buffer, 128); |
diff --git a/libbb/wfopen.c b/libbb/wfopen.c index ac365c2a0..4c84b3ba9 100644 --- a/libbb/wfopen.c +++ b/libbb/wfopen.c | |||
@@ -18,3 +18,23 @@ FILE* FAST_FUNC fopen_or_warn(const char *path, const char *mode) | |||
18 | } | 18 | } |
19 | return fp; | 19 | return fp; |
20 | } | 20 | } |
21 | |||
22 | FILE* FAST_FUNC fopen_for_read(const char *path) | ||
23 | { | ||
24 | return fopen(path, "r"); | ||
25 | } | ||
26 | |||
27 | FILE* FAST_FUNC xfopen_for_read(const char *path) | ||
28 | { | ||
29 | return xfopen(path, "r"); | ||
30 | } | ||
31 | |||
32 | FILE* FAST_FUNC fopen_for_write(const char *path) | ||
33 | { | ||
34 | return fopen(path, "w"); | ||
35 | } | ||
36 | |||
37 | FILE* FAST_FUNC xfopen_for_write(const char *path) | ||
38 | { | ||
39 | return xfopen(path, "w"); | ||
40 | } | ||