summaryrefslogtreecommitdiffstats
path: root/newlib/libc
diff options
context:
space:
mode:
Diffstat (limited to 'newlib/libc')
-rw-r--r--newlib/libc/include/stdio_ext.h22
-rw-r--r--newlib/libc/stdio/fpurge.c23
2 files changed, 45 insertions, 0 deletions
diff --git a/newlib/libc/include/stdio_ext.h b/newlib/libc/include/stdio_ext.h
new file mode 100644
index 000000000..fcfb662a0
--- /dev/null
+++ b/newlib/libc/include/stdio_ext.h
@@ -0,0 +1,22 @@
+/*
+ * stdio_ext.h
+ *
+ * Definitions for I/O internal operations, originally from Solaris.
+ */
+
+#ifndef _STDIO_EXT_H_
+#define _STDIO_EXT_H_
+
+#ifdef __rtems__
+#error "<stdio_ext.h> not supported"
+#endif
+
+#include <stdio.h>
+
+_BEGIN_STD_C
+
+void _EXFUN(__fpurge,(FILE *));
+
+_END_STD_C
+
+#endif /* _STDIO_EXT_H_ */
diff --git a/newlib/libc/stdio/fpurge.c b/newlib/libc/stdio/fpurge.c
index 41228efd7..7e23bb7fd 100644
--- a/newlib/libc/stdio/fpurge.c
+++ b/newlib/libc/stdio/fpurge.c
@@ -11,6 +11,8 @@ INDEX
fpurge
INDEX
_fpurge_r
+INDEX
+ __fpurge
ANSI_SYNOPSIS
#include <stdio.h>
@@ -18,6 +20,11 @@ ANSI_SYNOPSIS
int _fpurge_r(struct _reent *<[reent]>, FILE *<[fp]>);
+ #include <stdio.h>
+ #include <stdio_ext.h>
+ void __fpurge(FILE *<[fp]>);
+
+
DESCRIPTION
Use <<fpurge>> to clear all buffers of the given stream. For output
streams, this discards data not yet written to disk. For input streams,
@@ -26,6 +33,8 @@ but not yet read via <<getc>>. This is more severe than <<fflush>>,
and generally is only needed when manually altering the underlying file
descriptor of a stream.
+<<__fpurge>> behaves exactly like <<fpurge>> but does not return a value.
+
The alternate function <<_fpurge_r>> is a reentrant version, where the
extra argument <[reent]> is a pointer to a reentrancy structure, and
<[fp]> must not be NULL.
@@ -42,6 +51,9 @@ No supporting OS subroutines are required.
#include <_ansi.h>
#include <stdio.h>
+#ifndef __rtems__
+#include <stdio_ext.h>
+#endif
#include <errno.h>
#include "local.h"
@@ -87,4 +99,15 @@ _DEFUN(fpurge, (fp),
return _fpurge_r (_REENT, fp);
}
+#ifndef __rtems__
+
+void
+_DEFUN(__fpurge, (fp),
+ register FILE * fp)
+{
+ _fpurge_r (_REENT, fp);
+}
+
+#endif
+
#endif /* _REENT_ONLY */