maint: update copyright
[gnulib.git] / lib / fwriting.h
1 /* Retrieve information about a FILE stream.
2    Copyright (C) 2007, 2009-2014 Free Software Foundation, Inc.
3
4    This program is free software: you can redistribute it and/or modify
5    it under the terms of the GNU General Public License as published by
6    the Free Software Foundation; either version 3 of the License, or
7    (at your option) any later version.
8
9    This program 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 General Public License for more details.
13
14    You should have received a copy of the GNU General Public License
15    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
16
17 #include <stdbool.h>
18 #include <stdio.h>
19
20 /* Return true if the stream STREAM is opened write-only or
21    append-only, or if the last operation on the stream was a write
22    operation.  Return false if the stream is opened read-only, or if
23    it supports reading and there is no current write operation (such
24    as fputc).
25
26    freading and fwriting will never both be true.  If STREAM supports
27    both reads and writes, then:
28      - both freading and fwriting might be false when the stream is first
29        opened, after read encounters EOF, or after fflush,
30      - freading might be false or true and fwriting might be false
31        after repositioning (such as fseek, fsetpos, or rewind),
32    depending on the underlying implementation.
33
34    STREAM must not be wide-character oriented.  */
35
36 #if HAVE___FWRITING /* glibc >= 2.2, Solaris >= 7, musl libc */
37
38 # include <stdio_ext.h>
39 # define fwriting(stream) (__fwriting (stream) != 0)
40
41 #else
42
43 # ifdef __cplusplus
44 extern "C" {
45 # endif
46
47 extern bool fwriting (FILE *stream);
48
49 # ifdef __cplusplus
50 }
51 # endif
52
53 #endif