/* Retrieve information about a FILE stream.
- Copyright (C) 2007-2008 Free Software Foundation, Inc.
+ Copyright (C) 2007-2013 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include <stddef.h>
#include <stdio.h>
-#ifdef __cplusplus
-extern "C" {
-#endif
-
/* Assuming the stream STREAM is open for reading:
- Return a pointer to the input buffer of STREAM.
- If freadahead (STREAM) > 0, the result is a pointer to freadahead (STREAM)
- bytes.
- If freadahead (STREAM) == 0, the result is not usable; it may be NULL.
- In this case, you should use getc (STREAM), fgetc (STREAM), or
- fread (..., STREAM) to access the input from STREAM.
+ Return a pointer to the input buffer of STREAM, or NULL.
+ If the returned pointer is non-NULL, *SIZEP is set to the (positive) size
+ of the input buffer.
+ If the returned pointer is NULL, you should use getc (STREAM),
+ fgetc (STREAM), or fread (..., STREAM) to access the input from STREAM.
The resulting pointer becomes invalid upon any operation on STREAM.
STREAM must not be wide-character oriented. */
-extern const char * freadptr (FILE *stream);
+#if HAVE___FREADPTR /* musl libc */
+
+# include <stdio_ext.h>
+# define freadptr(stream,sizep) __freadptr (stream, sizep)
+
+#else
-#ifdef __cplusplus
+# ifdef __cplusplus
+extern "C" {
+# endif
+
+extern const char * freadptr (FILE *stream, size_t *sizep);
+
+# ifdef __cplusplus
}
+# endif
+
#endif