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 source tree. 8 */ 9#include "libbb.h" 10 11/* A number of standard utilities can accept multiple command line args 12 * of '-' for stdin, according to SUSv3. So we encapsulate the check 13 * here to save a little space. 14 */ 15int FAST_FUNC fclose_if_not_stdin(FILE *f) 16{ 17 /* Some more paranoid applets want ferror() check too */ 18 int r = ferror(f); /* NB: does NOT set errno! */ 19 if (r) 20 errno = EIO; /* so we'll help it */ 21 if (f != stdin) 22 return (r | fclose(f)); /* fclose does set errno on error */ 23 return r; 24} 25