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
diff --git a/modutils/depmod.c b/modutils/depmod.c
index d128ac0..b6a914e 100644
--- a/modutils/depmod.c
+++ b/modutils/depmod.c
@@ -150,7 +150,7 @@
if (!(option_mask32 & ARG_n)) { /* --dry-run */
chp = concat_path_file(moddir, CONFIG_DEFAULT_DEPMOD_FILE);
- filedes = xfopen(chp, "w");
+ filedes = xfopen_for_write(chp);
if (ENABLE_FEATURE_CLEAN_UP)
free(chp);
}
diff --git a/modutils/insmod.c b/modutils/insmod.c
index 97f4a87..9dcc5b0 100644
--- a/modutils/insmod.c
+++ b/modutils/insmod.c
@@ -3992,7 +3992,7 @@
/* Get a filedesc for the module. Check that we have a complete path */
if (stat(arg1, &st) < 0 || !S_ISREG(st.st_mode)
- || (fp = fopen(arg1, "r")) == NULL
+ || (fp = fopen_for_read(arg1)) == NULL
) {
/* Hmm. Could not open it. First search under /lib/modules/`uname -r`,
* but do not error out yet if we fail to find it... */
@@ -4016,7 +4016,7 @@
}
/* Check if we have found anything yet */
- if (!m_filename || ((fp = fopen(m_filename, "r")) == NULL)) {
+ if (!m_filename || ((fp = fopen_for_read(m_filename)) == NULL)) {
int r;
char *module_dir;
@@ -4033,7 +4033,7 @@
bb_error_msg_and_die("%s: module not found", m_fullName);
free(module_dir);
if (m_filename == NULL
- || ((fp = fopen(m_filename, "r")) == NULL)
+ || ((fp = fopen_for_read(m_filename)) == NULL)
) {
bb_error_msg_and_die("%s: module not found", m_fullName);
}
diff --git a/modutils/lsmod.c b/modutils/lsmod.c
index 5e37923..3f23703 100644
--- a/modutils/lsmod.c
+++ b/modutils/lsmod.c
@@ -28,7 +28,7 @@
FILE *f;
tainted = 0;
- f = fopen(TAINT_FILENAME, "r");
+ f = fopen_for_read(TAINT_FILENAME);
if (f) {
fscanf(f, "%d", &tainted);
fclose(f);
@@ -145,7 +145,7 @@
int lsmod_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int lsmod_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
{
- FILE *file = xfopen("/proc/modules", "r");
+ FILE *file = xfopen_for_read("/proc/modules");
printf("Module Size Used by");
check_tainted();
diff --git a/modutils/modprobe-small.c b/modutils/modprobe-small.c
index ae7c29c..f75dae8 100644
--- a/modutils/modprobe-small.c
+++ b/modutils/modprobe-small.c
@@ -299,7 +299,7 @@
static int load_dep_bb(void)
{
char *line;
- FILE *fp = fopen(DEPFILE_BB, "r");
+ FILE *fp = fopen_for_read(DEPFILE_BB);
if (!fp)
return 0;
@@ -492,7 +492,7 @@
char *line;
FILE* modules;
- modules = xfopen("/proc/modules", "r");
+ modules = xfopen_for_read("/proc/modules");
while ((line = xmalloc_fgets(modules)) != NULL) {
if (strncmp(line, name, len) == 0 && line[len] == ' ') {
free(line);
@@ -688,7 +688,7 @@
/* are we lsmod? -> just dump /proc/modules */
if ('l' == applet0) {
- xprint_and_close_file(xfopen("/proc/modules", "r"));
+ xprint_and_close_file(xfopen_for_read("/proc/modules"));
return EXIT_SUCCESS;
}