dhcpd-pools  3.0
ISC dhcpd lease usage analyser
freading.h
Go to the documentation of this file.
1 /* Retrieve information about a FILE stream.
2  Copyright (C) 2007-2017 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 <https://www.gnu.org/licenses/>. */
16 
17 #include <stdbool.h>
18 #include <stdio.h>
19 
20 /* Return true if the stream STREAM is opened read-only, or if the
21  last operation on the stream was a read operation. Return false if
22  the stream is opened write-only or append-only, or if it supports
23  writing and there is no current read operation (such as fgetc).
24 
25  freading and fwriting will never both be true. If STREAM supports
26  both reads and writes, then:
27  - both freading and fwriting might be false when the stream is first
28  opened, after read encounters EOF, or after fflush,
29  - freading might be false or true and fwriting might be false
30  after repositioning (such as fseek, fsetpos, or rewind),
31  depending on the underlying implementation.
32 
33  STREAM must not be wide-character oriented. */
34 
35 #if HAVE___FREADING && (!defined __GLIBC__ || defined __UCLIBC__ || __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 7))
36 /* Solaris >= 7, not glibc >= 2.2, but glibc >= 2.7, or musl libc */
37 
38 # include <stdio_ext.h>
39 # define freading(stream) (__freading (stream) != 0)
40 
41 #else
42 
43 # ifdef __cplusplus
44 extern "C" {
45 # endif
46 
47 extern bool freading (FILE *stream) _GL_ATTRIBUTE_PURE;
48 
49 # ifdef __cplusplus
50 }
51 # endif
52 
53 #endif
#define _GL_ATTRIBUTE_PURE
Definition: config.h:1908
bool freading(FILE *stream) _GL_ATTRIBUTE_PURE
Definition: freading.c:29