1 /* Retrieve information about a FILE stream. 2 Copyright (C) 2007, 2009-2021 Free Software Foundation, Inc. 3 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. 8 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. 13 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/>. */ 16 17 #include <stdbool.h> 18 #include <stdio.h> 19 20 /* Return true if the stream STREAM supports reading, false if it supports 21 only writing, i.e. if it was opened write-only or append-only. 22 STREAM must not be wide-character oriented. 23 The result doesn't change until the stream is closed or re-opened. */ 24 25 #if HAVE___FREADABLE 26 /* glibc >= 2.2, Solaris >= 7, UnixWare >= 7.1.4.MP4, Cygwin >= 1.7.34, Android API >= 23, musl libc */ 27 28 # if HAVE_STDIO_EXT_H 29 # include <stdio_ext.h> 30 # endif 31 # define freadable(stream) (__freadable (stream) != 0) 32 33 #else 34 35 # ifdef __cplusplus 36 extern "C" { 37 # endif 38 39 extern bool freadable (FILE *stream) _GL_ATTRIBUTE_PURE; 40 41 # ifdef __cplusplus 42 } 43 # endif 44 45 #endif