/* FUNCTION <>---close all files INDEX fcloseall INDEX _fcloseall_r ANSI_SYNOPSIS #include int fcloseall(void); int _fcloseall_r (struct _reent *<[ptr]>); TRAD_SYNOPSIS #include int fcloseall() int _fcloseall_r (<[ptr]>) struct _reent *<[ptr]>; DESCRIPTION <> closes all files in the current reentrancy struct's domain. The function <<_fcloseall_r>> is the same function, except the reentrancy struct is passed in as the <[ptr]> argument. This function is not recommended as it closes all streams, including the std streams. RETURNS <> returns <<0>> if all closes are successful. Otherwise, EOF is returned. PORTABILITY <> is a glibc extension. Required OS subroutines: <>, <>, <>, <>, <>, <>, <>. */ /* This file based upon fwalk.c. */ /* * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * advertising materials, and other materials related to such * distribution and use acknowledge that the software was developed * by the University of California, Berkeley. The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #include #include #include #include "local.h" int _fcloseall_r (ptr) struct _reent *ptr; { register FILE *fp; register int n, ret = 0; register struct _glue *g; for (g = &ptr->__sglue; g != NULL; g = g->_next) for (fp = g->_iobs, n = g->_niobs; --n >= 0; fp++) if (fp->_flags != 0) ret |= fclose (fp); return ret; } #ifndef _REENT_ONLY int fcloseall (void) { return _fcloseall_r (_GLOBAL_REENT); } #endif