pmt: initial 3.0.2 update
This commit is contained in:
62
include/libgnulib/fwriteerror.h
Executable file
62
include/libgnulib/fwriteerror.h
Executable file
@@ -0,0 +1,62 @@
|
||||
/* Detect write error on a stream.
|
||||
Copyright (C) 2003, 2005-2006, 2009-2024 Free Software Foundation, Inc.
|
||||
Written by Bruno Haible <bruno@clisp.org>, 2003.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>. */
|
||||
|
||||
/* There are two approaches for detecting a write error on a stream opened
|
||||
for writing:
|
||||
|
||||
(a) Test the return value of every fwrite() or fprintf() call, and react
|
||||
immediately.
|
||||
(b) Just before fclose(), test the error indicator in the stream and
|
||||
the return value of the final fclose() call.
|
||||
|
||||
The benefit of (a) is that non file related errors (such that ENOMEM during
|
||||
fprintf) and temporary error conditions can be diagnosed accurately.
|
||||
|
||||
A theoretical benefit of (a) is also that, on POSIX systems, in the case of
|
||||
an ENOSPC error, errno is set and can be used by error() to provide a more
|
||||
accurate error message. But in practice, this benefit is not big because
|
||||
users can easily figure out by themselves why a file cannot be written to,
|
||||
and furthermore the function fwriteerror() can provide errno as well.
|
||||
|
||||
The big drawback of (a) is extensive error checking code: Every function
|
||||
which does stream output must return an error indicator.
|
||||
|
||||
This file provides support for (b). */
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Write out the not yet written buffered contents of the stream FP, close
|
||||
the stream FP, and test whether some error occurred on the stream FP.
|
||||
FP must be a stream opened for writing.
|
||||
Return 0 if no error occurred and fclose (fp) succeeded.
|
||||
Return -1 and set errno if there was an error. The errno value will be 0
|
||||
if the cause of the error cannot be determined.
|
||||
For any given stream FP other than stdout, fwriteerror (FP) may only be
|
||||
called once. */
|
||||
extern int fwriteerror (FILE *fp);
|
||||
|
||||
/* Likewise, but don't consider it an error if FP has an invalid file
|
||||
descriptor and no output was done to FP. */
|
||||
extern int fwriteerror_no_ebadf (FILE *fp);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
Reference in New Issue
Block a user