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
This commit is contained in:
Denis Vlasenko
2007-04-11 23:20:53 +00:00
parent d7c8196c1b
commit 50f7f446ec
20 changed files with 186 additions and 165 deletions

View File

@ -106,31 +106,46 @@ FILE *xfopen(const char *path, const char *mode)
{
FILE *fp = fopen(path, mode);
if (fp == NULL)
bb_perror_msg_and_die("%s", path);
bb_perror_msg_and_die("cannot open '%s'", path);
return fp;
}
// Die if we can't open an existing file and return an fd.
int xopen(const char *pathname, int flags)
{
//if (ENABLE_DEBUG && (flags & O_CREAT))
// bb_error_msg_and_die("xopen() with O_CREAT");
return xopen3(pathname, flags, 0666);
}
// Die if we can't open a new file and return an fd.
// Die if we can't open a file and return a fd.
int xopen3(const char *pathname, int flags, int mode)
{
int ret;
ret = open(pathname, flags, mode);
if (ret < 0) {
bb_perror_msg_and_die("%s", pathname);
bb_perror_msg_and_die("cannot open '%s'", pathname);
}
return ret;
}
// Die if we can't open an existing file and return a fd.
int xopen(const char *pathname, int flags)
{
return xopen3(pathname, flags, 0666);
}
// Warn if we can't open a file and return a fd.
int open3_or_warn(const char *pathname, int flags, int mode)
{
int ret;
ret = open(pathname, flags, mode);
if (ret < 0) {
bb_perror_msg("cannot open '%s'", pathname);
}
return ret;
}
// Warn if we can't open a file and return a fd.
int open_or_warn(const char *pathname, int flags)
{
return open3_or_warn(pathname, flags, 0666);
}
void xunlink(const char *pathname)
{
if (unlink(pathname))
@ -184,6 +199,7 @@ off_t xlseek(int fd, off_t offset, int whence)
void die_if_ferror(FILE *fp, const char *fn)
{
if (ferror(fp)) {
/* doesn't set useful errno */
bb_error_msg_and_die("%s: I/O error", fn);
}
}