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/shell/hush.c b/shell/hush.c
index 3dc27d9..cf6a18f 100644
--- a/shell/hush.c
+++ b/shell/hush.c
@@ -4012,7 +4012,7 @@
if (argv[0] && argv[0][0] == '-') {
debug_printf("sourcing /etc/profile\n");
- input = fopen("/etc/profile", "r");
+ input = fopen_for_read("/etc/profile");
if (input != NULL) {
close_on_exec_on(fileno(input));
parse_and_run_file(input);
@@ -4116,7 +4116,7 @@
debug_printf("\nrunning script '%s'\n", argv[optind]);
global_argv = argv + optind;
global_argc = argc - optind;
- input = xfopen(argv[optind], "r");
+ input = xfopen_for_read(argv[optind]);
fcntl(fileno(input), F_SETFD, FD_CLOEXEC);
opt = parse_and_run_file(input);
}
@@ -4423,7 +4423,7 @@
return EXIT_FAILURE;
/* XXX search through $PATH is missing */
- input = fopen(argv[1], "r");
+ input = fopen_for_read(argv[1]);
if (!input) {
bb_error_msg("can't open '%s'", argv[1]);
return EXIT_FAILURE;