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/e2fsprogs/old_e2fsprogs/blkid/devname.c b/e2fsprogs/old_e2fsprogs/blkid/devname.c
index 97d1c35..5b9e48f 100644
--- a/e2fsprogs/old_e2fsprogs/blkid/devname.c
+++ b/e2fsprogs/old_e2fsprogs/blkid/devname.c
@@ -152,7 +152,7 @@
 	dev_t ret = 0;
 
 	DBG(DEBUG_DEVNAME, printf("opening %s\n", lvm_device));
-	if ((lvf = fopen(lvm_device, "r")) == NULL) {
+	if ((lvf = fopen_for_read(lvm_device)) == NULL) {
 		DBG(DEBUG_DEVNAME, printf("%s: (%d) %s\n", lvm_device, errno,
 					  strerror(errno)));
 		return 0;
@@ -233,7 +233,7 @@
 	FILE *procpt;
 	char device[110];
 
-	procpt = fopen(PROC_EVMS_VOLUMES, "r");
+	procpt = fopen_for_read(PROC_EVMS_VOLUMES);
 	if (!procpt)
 		return 0;
 	while (fgets(line, sizeof(line), procpt)) {
@@ -282,7 +282,7 @@
 	lvm_probe_all(cache);
 #endif
 
-	proc = fopen(PROC_PARTITIONS, "r");
+	proc = fopen_for_read(PROC_PARTITIONS);
 	if (!proc)
 		return -BLKID_ERR_PROC;
 
diff --git a/e2fsprogs/old_e2fsprogs/blkid/save.c b/e2fsprogs/old_e2fsprogs/blkid/save.c
index cdbaabc..3600260 100644
--- a/e2fsprogs/old_e2fsprogs/blkid/save.c
+++ b/e2fsprogs/old_e2fsprogs/blkid/save.c
@@ -102,7 +102,7 @@
 	}
 
 	if (!file) {
-		file = fopen(filename, "w");
+		file = fopen_for_write(filename);
 		opened = filename;
 	}
 
diff --git a/e2fsprogs/old_e2fsprogs/e2fsck.c b/e2fsprogs/old_e2fsprogs/e2fsck.c
index 4887a57..7cb1227 100644
--- a/e2fsprogs/old_e2fsprogs/e2fsck.c
+++ b/e2fsprogs/old_e2fsprogs/e2fsck.c
@@ -12672,7 +12672,7 @@
 	unsigned int    acflag;
 	struct dirent*  de;
 
-	f = fopen("/proc/apm", "r");
+	f = fopen_for_read("/proc/apm");
 	if (f) {
 		if (fscanf(f, "%s %s %s %x", tmp, tmp, tmp, &acflag) != 4)
 			acflag = 1;
@@ -12686,7 +12686,7 @@
 				continue;
 			snprintf(fname, 80, "/proc/acpi/ac_adapter/%s/state",
 				 de->d_name);
-			f = fopen(fname, "r");
+			f = fopen_for_read(fname);
 			if (!f)
 				continue;
 			if (fscanf(f, "%s %s", tmp2, tmp) != 2)
diff --git a/e2fsprogs/old_e2fsprogs/ext2fs/ismounted.c b/e2fsprogs/old_e2fsprogs/ext2fs/ismounted.c
index d943f11..7f24f9b 100644
--- a/e2fsprogs/old_e2fsprogs/ext2fs/ismounted.c
+++ b/e2fsprogs/old_e2fsprogs/ext2fs/ismounted.c
@@ -249,7 +249,7 @@
 		file_dev = st_buf.st_rdev;
 #endif	/* __GNU__ */
 
-	if (!(f = fopen("/proc/swaps", "r")))
+	if (!(f = fopen_for_read("/proc/swaps")))
 		return 0;
 	/* Skip the first line */
 	fgets(buf, sizeof(buf), f);
diff --git a/e2fsprogs/old_e2fsprogs/ext2fs/test_io.c b/e2fsprogs/old_e2fsprogs/ext2fs/test_io.c
index bd74225..3d40d9a 100644
--- a/e2fsprogs/old_e2fsprogs/ext2fs/test_io.c
+++ b/e2fsprogs/old_e2fsprogs/ext2fs/test_io.c
@@ -180,7 +180,7 @@
 
 	data->outfile = NULL;
 	if ((value = getenv("TEST_IO_LOGFILE")) != NULL)
-		data->outfile = fopen(value, "w");
+		data->outfile = fopen_for_write(value);
 	if (!data->outfile)
 		data->outfile = stderr;
 
diff --git a/e2fsprogs/old_e2fsprogs/mke2fs.c b/e2fsprogs/old_e2fsprogs/mke2fs.c
index e16fe93..852c249 100644
--- a/e2fsprogs/old_e2fsprogs/mke2fs.c
+++ b/e2fsprogs/old_e2fsprogs/mke2fs.c
@@ -225,7 +225,7 @@
 	FILE		*f;
 	errcode_t	retval;
 
-	f = xfopen(bad_blocks_file, "r");
+	f = xfopen_for_read(bad_blocks_file);
 	retval = ext2fs_read_bb_FILE(fs, f, bb_list, invalid_block);
 	fclose (f);
 	mke2fs_error_msg_and_die(retval, "read bad blocks from list");