summaryrefslogtreecommitdiff
path: root/coreutils
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2007-04-11 23:20:53 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2007-04-11 23:20:53 +0000
commit50f7f446ecaadef6895a4ee601567e0b68330637 (patch)
treea10f1d7fd192b8c7ee6cb3d5aa46a0295dd08f2a /coreutils
parentd7c8196c1bba74d1e27ac9cb5e2eb57413daa463 (diff)
downloadbusybox-w32-50f7f446ecaadef6895a4ee601567e0b68330637.tar.gz
busybox-w32-50f7f446ecaadef6895a4ee601567e0b68330637.tar.bz2
busybox-w32-50f7f446ecaadef6895a4ee601567e0b68330637.zip
bb_full_fd_action: remove potential xmalloc from NOFORK path
cat: stop using stdio.h opens libbb: introduce & use open[3]_or_warn function old new delta open3_or_warn - 54 +54 bb_cat 115 144 +29 open_or_warn - 25 +25 unlzma 2404 2412 +8 chattr_main 334 339 +5 xstrtoul_range_sfx 251 255 +4 telnet_main 1514 1510 -4 static.opt 4 - -4 qgravechar 122 118 -4 fuser_add_pid 61 54 -7 fuser_add_inode 154 147 -7 writeFileToTarball 1542 1534 -8 refresh 1156 1148 -8 do_show 856 846 -10 read_leases 212 200 -12 setup_redirects 236 222 -14 iproute_list_or_flush 1582 1568 -14 read_config 427 411 -16 write_leases 284 264 -20 hash_file 338 318 -20 copy_file 1760 1740 -20 do_iproute 2610 2588 -22 bb_full_fd_action 320 269 -51 open_to_or_warn 103 49 -54 fuser_main 1660 1596 -64 .rodata 131160 131096 -64 ------------------------------------------------------------------------------ (add/remove: 2/1 grow/shrink: 4/19 up/down: 125/-423) Total: -298 bytes
Diffstat (limited to 'coreutils')
-rw-r--r--coreutils/cat.c13
-rw-r--r--coreutils/dos2unix.c6
-rw-r--r--coreutils/md5_sha1_sum.c3
3 files changed, 12 insertions, 10 deletions
diff --git a/coreutils/cat.c b/coreutils/cat.c
index eb141dc79..ed3f33650 100644
--- a/coreutils/cat.c
+++ b/coreutils/cat.c
@@ -19,18 +19,21 @@ int bb_cat(char **argv)
19{ 19{
20 static const char *const argv_dash[] = { "-", NULL }; 20 static const char *const argv_dash[] = { "-", NULL };
21 21
22 FILE *f; 22 int fd;
23 int retval = EXIT_SUCCESS; 23 int retval = EXIT_SUCCESS;
24 24
25 if (!*argv) 25 if (!*argv)
26 argv = (char**) &argv_dash; 26 argv = (char**) &argv_dash;
27 27
28 do { 28 do {
29 f = fopen_or_warn_stdin(*argv); 29 fd = STDIN_FILENO;
30 if (f) { 30 if (!LONE_DASH(*argv))
31 fd = open_or_warn(*argv, O_RDONLY);
32 if (fd >= 0) {
31 /* This is not an xfunc - never exits */ 33 /* This is not an xfunc - never exits */
32 off_t r = bb_copyfd_eof(fileno(f), STDOUT_FILENO); 34 off_t r = bb_copyfd_eof(fd, STDOUT_FILENO);
33 fclose_if_not_stdin(f); 35 if (fd != STDIN_FILENO)
36 close(fd);
34 if (r >= 0) 37 if (r >= 0)
35 continue; 38 continue;
36 } 39 }
diff --git a/coreutils/dos2unix.c b/coreutils/dos2unix.c
index 1d35d524a..04c56ac9c 100644
--- a/coreutils/dos2unix.c
+++ b/coreutils/dos2unix.c
@@ -30,7 +30,7 @@ static int convert(char *fn)
30 /* 30 /*
31 The file is then created with mode read/write and 31 The file is then created with mode read/write and
32 permissions 0666 for glibc 2.0.6 and earlier or 32 permissions 0666 for glibc 2.0.6 and earlier or
33 0600 for glibc 2.0.7 and later. 33 0600 for glibc 2.0.7 and later.
34 */ 34 */
35 snprintf(bb_common_bufsiz1, sizeof(bb_common_bufsiz1), "%sXXXXXX", fn); 35 snprintf(bb_common_bufsiz1, sizeof(bb_common_bufsiz1), "%sXXXXXX", fn);
36 /* 36 /*
@@ -38,8 +38,8 @@ static int convert(char *fn)
38 hold the full path. However if the output is truncated the 38 hold the full path. However if the output is truncated the
39 subsequent call to mkstemp would fail. 39 subsequent call to mkstemp would fail.
40 */ 40 */
41 if ((i = mkstemp(&bb_common_bufsiz1[0])) == -1 41 i = mkstemp(&bb_common_bufsiz1[0]);
42 || chmod(bb_common_bufsiz1, 0600) == -1) { 42 if (i == -1 || chmod(bb_common_bufsiz1, 0600) == -1) {
43 bb_perror_nomsg_and_die(); 43 bb_perror_nomsg_and_die();
44 } 44 }
45 out = fdopen(i, "w+"); 45 out = fdopen(i, "w+");
diff --git a/coreutils/md5_sha1_sum.c b/coreutils/md5_sha1_sum.c
index 417e90b00..a3818d519 100644
--- a/coreutils/md5_sha1_sum.c
+++ b/coreutils/md5_sha1_sum.c
@@ -38,9 +38,8 @@ static uint8_t *hash_file(const char *filename, hash_algo_t hash_algo)
38 38
39 src_fd = STDIN_FILENO; 39 src_fd = STDIN_FILENO;
40 if (NOT_LONE_DASH(filename)) { 40 if (NOT_LONE_DASH(filename)) {
41 src_fd = open(filename, O_RDONLY); 41 src_fd = open_or_warn(filename, O_RDONLY);
42 if (src_fd < 0) { 42 if (src_fd < 0) {
43 bb_perror_msg("%s", filename);
44 return NULL; 43 return NULL;
45 } 44 }
46 } 45 }