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;
 	}