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 #include "libbb.h" 10 fopen_or_warn(const char * path,const char * mode)11FILE* FAST_FUNC fopen_or_warn(const char *path, const char *mode) 12 { 13 FILE *fp = fopen(path, mode); 14 if (!fp) { 15 bb_simple_perror_msg(path); 16 //errno = 0; /* why? */ 17 } 18 return fp; 19 } 20 fopen_for_read(const char * path)21FILE* FAST_FUNC fopen_for_read(const char *path) 22 { 23 return fopen(path, "r"); 24 } 25 xfopen_for_read(const char * path)26FILE* FAST_FUNC xfopen_for_read(const char *path) 27 { 28 return xfopen(path, "r"); 29 } 30 fopen_for_write(const char * path)31FILE* FAST_FUNC fopen_for_write(const char *path) 32 { 33 return fopen(path, "w"); 34 } 35 xfopen_for_write(const char * path)36FILE* FAST_FUNC xfopen_for_write(const char *path) 37 { 38 return xfopen(path, "w"); 39 } 40 xfdopen_helper(unsigned fd_and_rw_bit)41static FILE* xfdopen_helper(unsigned fd_and_rw_bit) 42 { 43 FILE* fp = fdopen(fd_and_rw_bit >> 1, fd_and_rw_bit & 1 ? "w" : "r"); 44 if (!fp) 45 bb_die_memory_exhausted(); 46 return fp; 47 } xfdopen_for_read(int fd)48FILE* FAST_FUNC xfdopen_for_read(int fd) 49 { 50 return xfdopen_helper(fd << 1); 51 } xfdopen_for_write(int fd)52FILE* FAST_FUNC xfdopen_for_write(int fd) 53 { 54 return xfdopen_helper((fd << 1) + 1); 55 } 56