From 460e040a3ff405d8fc0de1e380610dd10764e6f3 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Fri, 21 Apr 2000 04:56:35 +0000 Subject: Update. 2000-03-08 H.J. Lu * posix/regex.c (regex_compile): Correctly handle "\{" when the RE_INTERVALS is set and the RE_NO_BK_BRACES bit is not set. --- manual/stdio.texi | 50 ++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 40 insertions(+), 10 deletions(-) (limited to 'manual/stdio.texi') diff --git a/manual/stdio.texi b/manual/stdio.texi index 4764003443..5c37698fc6 100644 --- a/manual/stdio.texi +++ b/manual/stdio.texi @@ -27,6 +27,7 @@ representing a communications channel to a file, device, or process. @code{printf} and friends. * Formatted Input:: @code{scanf} and related functions. * EOF and Errors:: How you can tell if an I/O error happens. +* Error Recovery:: What you can do about errors. * Binary Streams:: Some systems distinguish between text files and binary files. * File Positioning:: About random-access streams. @@ -3053,16 +3054,6 @@ With the GNU library, @code{EOF} is @code{-1}. In other libraries, its value may be some other negative number. @end deftypevr -@comment stdio.h -@comment ISO -@deftypefun void clearerr (FILE *@var{stream}) -This function clears the end-of-file and error indicators for the -stream @var{stream}. - -The file positioning functions (@pxref{File Positioning}) also clear the -end-of-file indicator for the stream. -@end deftypefun - @comment stdio.h @comment ISO @deftypefun int feof (FILE *@var{stream}) @@ -3088,6 +3079,45 @@ conditions defined for @code{write} are meaningful for these functions. For more information about the descriptor-level I/O functions, see @ref{Low-Level I/O}. +@node Error Recovery +@section Recovering from errors + +You may explicitly clear the error and EOF flags with the @code{clearerr} +function. + +@comment stdio.h +@comment ISO +@deftypefun void clearerr (FILE *@var{stream}) +This function clears the end-of-file and error indicators for the +stream @var{stream}. + +The file positioning functions (@pxref{File Positioning}) also clear the +end-of-file indicator for the stream. +@end deftypefun + +Note that it is @emph{not} correct to just clear the error flag and retry +a failed stream operation. After a failed write, any number of +characters since the last buffer flush may have been committed to the +file, while some buffered data may have been discarded. Merely retrying +can thus cause lost or repeated data. + +A failed read may leave the file pointer in an inappropriate position for +a second try. In both cases, you should seek to a known position before +retrying. + +Most errors that can happen are not recoverable --- a second try will +always fail again in the same way. So usually it is best to give up and +report the error to the user, rather than install complicated recovery +logic. + +One important exception is @code{EINTR} (@pxref{Interrupted Primitives}). +Many stream I/O implementations will treat it as an ordinary error, which +can be quite inconvenient. You can avoid this hassle by installing all +signals with the @code{SA_RESTART} flag. + +For similar reasons, setting nonblocking I/O on a stream's file +descriptor is not usually advisable. + @node Binary Streams @section Text and Binary Streams -- cgit 1.4.1