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
This commit is contained in:
Denis Vlasenko
2008-07-21 23:05:26 +00:00
parent b74a2dba57
commit 5415c856ea
71 changed files with 173 additions and 168 deletions

View File

@@ -316,7 +316,7 @@ static void parse_config_file(void)
|| !S_ISREG(st.st_mode) /* Not a regular file? */
|| (st.st_uid != 0) /* Not owned by root? */
|| (st.st_mode & (S_IWGRP | S_IWOTH)) /* Writable by non-root? */
|| !(f = fopen(config_file, "r")) /* Cannot open? */
|| !(f = fopen_for_read(config_file)) /* Cannot open? */
) {
return;
}

View File

@@ -989,7 +989,7 @@ static void load_history(const char *fromfile)
/* NB: do not trash old history if file can't be opened */
fp = fopen(fromfile, "r");
fp = fopen_for_read(fromfile);
if (fp) {
/* clean up old history */
for (hi = state->cnt_history; hi > 0;) {
@@ -1022,7 +1022,7 @@ static void save_history(const char *tofile)
{
FILE *fp;
fp = fopen(tofile, "w");
fp = fopen_for_write(tofile);
if (fp) {
int i;

View File

@@ -32,7 +32,7 @@ void FAST_FUNC print_login_issue(const char *issue_file, const char *tty)
puts("\r"); /* start a new line */
fp = fopen(issue_file, "r");
fp = fopen_for_read(issue_file);
if (!fp)
return;
while ((c = fgetc(fp)) != EOF) {

View File

@@ -59,11 +59,11 @@ Typical usage:
*/
parser_t* FAST_FUNC config_open(const char *filename)
parser_t* FAST_FUNC config_open2(const char *filename, FILE* FAST_FUNC (*fopen_func)(const char *path))
{
parser_t *parser = xzalloc(sizeof(parser_t));
/* empty file configures nothing */
parser->fp = fopen_or_warn_stdin(filename);
parser->fp = fopen_func(filename);
if (parser->fp)
return parser;
if (ENABLE_FEATURE_CLEAN_UP)
@@ -71,6 +71,11 @@ parser_t* FAST_FUNC config_open(const char *filename)
return NULL;
}
parser_t* FAST_FUNC config_open(const char *filename)
{
return config_open2(filename, fopen_or_warn_stdin);
}
static void config_free_data(parser_t *const parser)
{
free(parser->line);
@@ -114,6 +119,7 @@ int FAST_FUNC config_read(parser_t *parser, char **tokens, unsigned flags, const
int ntokens = flags & 0xFF;
int mintokens = (flags & 0xFF00) >> 8;
again:
// N.B. this could only be used in read-in-one-go version, or when tokens use xstrdup(). TODO
//if (!parser->lineno || !(flags & PARSE_DONT_NULL))
memset(tokens, 0, sizeof(tokens[0]) * ntokens);
@@ -211,9 +217,13 @@ int FAST_FUNC config_read(parser_t *parser, char **tokens, unsigned flags, const
//bb_info_msg("A[%s]", line);
}
if (ii < mintokens)
bb_error_msg_and_die("bad line %u: %d tokens found, %d needed",
parser->lineno, ii, mintokens);
if (ii < mintokens) {
bb_error_msg("bad line %u: %d tokens found, %d needed",
parser->lineno, ii, mintokens);
if (flags & PARSE_MIN_DIE)
xfunc_die();
goto again;
}
return ii;
}

View File

@@ -308,7 +308,7 @@ procps_status_t* FAST_FUNC procps_scan(procps_status_t* sp, int flags)
FILE *file;
strcpy(filename_tail, "/smaps");
file = fopen(filename, "r");
file = fopen_for_read(filename);
if (!file)
break;
while (fgets(buf, sizeof(buf), file)) {

View File

@@ -14,7 +14,7 @@
int FAST_FUNC rtc_adjtime_is_utc(void)
{
int utc = 0;
FILE *f = fopen(ADJTIME_PATH, "r");
FILE *f = fopen_for_read(ADJTIME_PATH);
if (f) {
RESERVE_CONFIG_BUFFER(buffer, 128);

View File

@@ -18,3 +18,23 @@ FILE* FAST_FUNC fopen_or_warn(const char *path, const char *mode)
}
return fp;
}
FILE* FAST_FUNC fopen_for_read(const char *path)
{
return fopen(path, "r");
}
FILE* FAST_FUNC xfopen_for_read(const char *path)
{
return xfopen(path, "r");
}
FILE* FAST_FUNC fopen_for_write(const char *path)
{
return fopen(path, "w");
}
FILE* FAST_FUNC xfopen_for_write(const char *path)
{
return xfopen(path, "w");
}