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 tarball for details. 8 */ 9 10#include "libbb.h" 11 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 22FILE* FAST_FUNC fopen_for_read(const char *path) 23{ 24 return fopen(path, "r"); 25} 26 27FILE* FAST_FUNC xfopen_for_read(const char *path) 28{ 29 return xfopen(path, "r"); 30} 31 32FILE* FAST_FUNC fopen_for_write(const char *path) 33{ 34 return fopen(path, "w"); 35} 36 37FILE* FAST_FUNC xfopen_for_write(const char *path) 38{ 39 return xfopen(path, "w"); 40} 41 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} 49FILE* FAST_FUNC xfdopen_for_read(int fd) 50{ 51 return xfdopen_helper(fd << 1); 52} 53FILE* FAST_FUNC xfdopen_for_write(int fd) 54{ 55 return xfdopen_helper((fd << 1) + 1); 56} 57