Commit | Line | Data |
---|---|---|
3d458a81 AW |
1 | /* Retrieve information about a FILE stream. |
2 | Copyright (C) 2007-2011 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 Lesser 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 Lesser General Public License for more details. | |
13 | ||
14 | You should have received a copy of the GNU Lesser 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 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 */ | |
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); | |
48 | ||
49 | # ifdef __cplusplus | |
50 | } | |
51 | # endif | |
52 | ||
53 | #endif |