1 /* Retrieve information about a FILE stream.
2 Copyright (C) 2007, 2009-2024 Free Software Foundation, Inc.
4 This file is free software: you can redistribute it and/or modify
5 it under the terms of the GNU Lesser General Public License as
6 published by the Free Software Foundation, either version 3 of the
7 License, or (at your option) any later version.
9 This file is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU Lesser General Public License for more details.
14 You should have received a copy of the GNU Lesser General Public License
15 along with this program. If not, see <https://www.gnu.org/licenses/>. */
17 /* This file uses _GL_ATTRIBUTE_PURE, HAVE___FWRITING, HAVE_STDIO_EXT_H. */
18 #if !_GL_CONFIG_H_INCLUDED
19 #error "Please include config.h first."
24 /* Return true if the stream STREAM is opened write-only or
25 append-only, or if the last operation on the stream was a write
26 operation. Return false if the stream is opened read-only, or if
27 it supports reading and there is no current write operation (such
30 freading and fwriting will never both be true. If STREAM supports
31 both reads and writes, then:
32 - both freading and fwriting might be false when the stream is first
33 opened, after read encounters EOF, or after fflush,
34 - freading might be false or true and fwriting might be false
35 after repositioning (such as fseek, fsetpos, or rewind),
36 depending on the underlying implementation.
38 STREAM must not be wide-character oriented. */
41 /* glibc >= 2.2, Solaris >= 7, UnixWare >= 7.1.4.MP4, Cygwin >= 1.7.34, Android API >= 29, musl libc */
44 # include <stdio_ext.h>
46 # define fwriting(stream) (__fwriting (stream) != 0)
54 extern bool fwriting (FILE *stream
) _GL_ATTRIBUTE_PURE
;