1 /* vi: set sw=4 ts=4: */ 2 /* 3 * Utility routines. 4 * 5 * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org> 6 * 7 * Licensed under GPLv2 or later, see file LICENSE in this source tree. 8 */ 9 10 #include "libbb.h" 11 fopen_or_warn(const char * path,const char * mode)12FILE* FAST_FUNC fopen_or_warn(const char *path, const char *mode) 13 { 14 FILE *fp = fopen(path, mode); 15 if (!fp) { 16 bb_simple_perror_msg(path); 17 //errno = 0; /* why? */ 18 } 19 return fp; 20 } 21 fopen_for_read(const char * path)22FILE* FAST_FUNC fopen_for_read(const char *path) 23 { 24 return fopen(path, "r"); 25 } 26 xfopen_for_read(const char * path)27FILE* FAST_FUNC xfopen_for_read(const char *path) 28 { 29 return xfopen(path, "r"); 30 } 31 fopen_for_write(const char * path)32FILE* FAST_FUNC fopen_for_write(const char *path) 33 { 34 return fopen(path, "w"); 35 } 36 xfopen_for_write(const char * path)37FILE* FAST_FUNC xfopen_for_write(const char *path) 38 { 39 return xfopen(path, "w"); 40 } 41 xfdopen_helper(unsigned fd_and_rw_bit)42static FILE* xfdopen_helper(unsigned fd_and_rw_bit) 43 { 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; 48 } xfdopen_for_read(int fd)49FILE* FAST_FUNC xfdopen_for_read(int fd) 50 { 51 return xfdopen_helper(fd << 1); 52 } xfdopen_for_write(int fd)53FILE* FAST_FUNC xfdopen_for_write(int fd) 54 { 55 return xfdopen_helper((fd << 1) + 1); 56 } 57