1 /* vi: set sw=4 ts=4: */
5 * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
7 * Licensed under GPLv2 or later, see file LICENSE in this source tree.
12 FILE* FAST_FUNC
fopen_or_warn(const char *path
, const char *mode
)
14 FILE *fp
= fopen(path
, mode
);
16 bb_simple_perror_msg(path
);
17 //errno = 0; /* why? */
22 FILE* FAST_FUNC
fopen_for_read(const char *path
)
24 return fopen(path
, "r");
27 FILE* FAST_FUNC
xfopen_for_read(const char *path
)
29 return xfopen(path
, "r");
32 FILE* FAST_FUNC
fopen_for_write(const char *path
)
34 return fopen(path
, "w");
37 FILE* FAST_FUNC
xfopen_for_write(const char *path
)
39 return xfopen(path
, "w");
42 static FILE* xfdopen_helper(unsigned fd_and_rw_bit
)
44 FILE* fp
= fdopen(fd_and_rw_bit
>> 1, fd_and_rw_bit
& 1 ? "w" : "r");
46 bb_error_msg_and_die(bb_msg_memory_exhausted
);
49 FILE* FAST_FUNC
xfdopen_for_read(int fd
)
51 return xfdopen_helper(fd
<< 1);
53 FILE* FAST_FUNC
xfdopen_for_write(int fd
)
55 return xfdopen_helper((fd
<< 1) + 1);