1/* vi: set sw=4 ts=4: */ 2/* 3 * fclose_nonstdin implementation for busybox 4 * 5 * Copyright (C) 2003 Manuel Novoa III <mjn3@codepoet.org> 6 * 7 * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. 8 */ 9 10/* A number of standard utilities can accept multiple command line args 11 * of '-' for stdin, according to SUSv3. So we encapsulate the check 12 * here to save a little space. 13 */ 14 15#include "libbb.h" 16 17int FAST_FUNC fclose_if_not_stdin(FILE *f) 18{ 19 /* Some more paranoid applets want ferror() check too */ 20 int r = ferror(f); /* NB: does NOT set errno! */ 21 if (r) errno = EIO; /* so we'll help it */ 22 if (f != stdin) 23 return (r | fclose(f)); /* fclose does set errno on error */ 24 return r; 25} 26