Alters the behavior of the 'Create NAT on tunnel' to also add the appropriate NAT...
[tomato.git] / release / src / router / busybox / libbb / wfopen.c
blob76dc8b82a0312b31d16e38e5727e527aad0a30c7
1 /* vi: set sw=4 ts=4: */
2 /*
3 * Utility routines.
5 * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
7 * Licensed under GPLv2 or later, see file LICENSE in this source tree.
8 */
10 #include "libbb.h"
12 FILE* FAST_FUNC fopen_or_warn(const char *path, const char *mode)
14 FILE *fp = fopen(path, mode);
15 if (!fp) {
16 bb_simple_perror_msg(path);
17 //errno = 0; /* why? */
19 return fp;
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");
45 if (!fp)
46 bb_error_msg_and_die(bb_msg_memory_exhausted);
47 return fp;
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);