.\" Copyright (c) 1990, 1991 The Regents of the University of California.
.\" and Copyright (C) 2021 Michael Kerrisk <mtk.manpages@gmail.com>
.\" All rights reserved.
.\"
.\" This code is derived from software contributed to Berkeley by
.\" Chris Torek and the American National Standards Committee X3,
.\" on Information Processing Systems.
.\"
.\" %%%LICENSE_START(BSD_4_CLAUSE_UCB)
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\"    notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\"    notice, this list of conditions and the following disclaimer in the
.\"    documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\"    must display the following acknowledgement:
.\"	This product includes software developed by the University of
.\"	California, Berkeley and its contributors.
.\" 4. Neither the name of the University nor the names of its contributors
.\"    may be used to endorse or promote products derived from this software
.\"    without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\" %%%LICENSE_END
.\"
.\"     @(#)ferror.3	6.8 (Berkeley) 6/29/91
.\"
.\"
.\" Converted for Linux, Mon Nov 29 14:24:40 1993, faith@cs.unc.edu
.\"
.TH FERROR 3  2021-03-22 "" "Linux Programmer's Manual"
.SH NAME
clearerr, feof, ferror \- check and reset stream status
.SH SYNOPSIS
.nf
.B #include <stdio.h>
.PP
.BI "void clearerr(FILE *" stream );
.BI "int feof(FILE *" stream );
.BI "int ferror(FILE *" stream );
.fi
.SH DESCRIPTION
The function
.BR clearerr ()
clears the end-of-file and error indicators for the stream pointed to by
.IR stream .
.PP
The function
.BR feof ()
tests the end-of-file indicator for the stream pointed to by
.IR stream ,
returning nonzero if it is set.
The end-of-file indicator can be cleared only by the function
.BR clearerr ().
.PP
The function
.BR ferror ()
tests the error indicator for the stream pointed to by
.IR stream ,
returning nonzero if it is set.
The error indicator can be reset only by the
.BR clearerr ()
function.
.PP
For nonlocking counterparts, see
.BR unlocked_stdio (3).
.SH RETURN VALUE
The
.BR feof ()
function returns nonzero if the end-of-file indicator is set for
.IR stream ;
otherwise, it returns zero.
.PP
The
.BR feof ()
function returns nonzero if the error indicator is set for
.IR stream ;
otherwise, it returns zero.
.SH ERRORS
These functions should not fail and do not set
.IR errno .
.SH ATTRIBUTES
For an explanation of the terms used in this section, see
.BR attributes (7).
.ad l
.nh
.TS
allbox;
lbx lb lb
l l l.
Interface	Attribute	Value
T{
.BR clearerr (),
.BR feof (),
.BR ferror ()
T}	Thread safety	MT-Safe
.TE
.hy
.ad
.sp 1
.SH CONFORMING TO
The functions
.BR clearerr (),
.BR feof (),
and
.BR ferror ()
conform to C89, C99, POSIX.1-2001, and POSIX.1-2008.
.SH NOTES
POSIX.1-2008 specifies
.\"https://www.austingroupbugs.net/view.php?id=401
that these functions shall not change the value of
.I errno
if
.I stream
is valid.
.SH SEE ALSO
.BR open (2),
.BR fdopen (3),
.BR fileno (3),
.BR stdio (3),
.BR unlocked_stdio (3)
