فهرست منبع

add and consolidate nasty stdio_ext junk

hopefully this resolves the rest of the issues with hideously
nonportable hacks in programs that use gnulib.
Rich Felker 13 سال پیش
والد
کامیت
a0b56b947a
4فایلهای تغییر یافته به همراه84 افزوده شده و 17 حذف شده
  1. 27 0
      include/stdio_ext.h
  2. 0 6
      src/stdio/__fpending.c
  3. 57 0
      src/stdio/ext.c
  4. 0 11
      src/stdio/fpurge.c

+ 27 - 0
include/stdio_ext.h

@@ -0,0 +1,27 @@
+#ifndef _STDIO_EXT_H
+#define _STDIO_EXT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define FSETLOCKING_QUERY 0
+#define FSETLOCKING_INTERNAL 1
+#define FSETLOCKING_BYCALLER 2
+
+void _flushlbf(void);
+int __fsetlocking(FILE *, int);
+int __fwriting(FILE *);
+int __freading(FILE *);
+int __freadable(FILE *);
+int __fwritable(FILE *);
+int __flbf(FILE *);
+size_t __fbufsize(FILE *);
+size_t __fpending(FILE *);
+int __fpurge(FILE *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif

+ 0 - 6
src/stdio/__fpending.c

@@ -1,6 +0,0 @@
-#include "stdio_impl.h"
-
-size_t __fpending(FILE *f)
-{
-	return f->wend ? f->wpos - f->wbase : 0;
-}

+ 57 - 0
src/stdio/ext.c

@@ -0,0 +1,57 @@
+#define _GNU_SOURCE
+#include "stdio_impl.h"
+#include <stdio_ext.h>
+
+void _flushlbf(void)
+{
+	fflush(0);
+}
+
+int __fsetlocking(FILE *f, int type)
+{
+	return 0;
+}
+
+int __fwriting(FILE *f)
+{
+	return f->wend > f->wpos;
+}
+
+int __freading(FILE *f)
+{
+	return f->rend > f->rpos;
+}
+
+int __freadable(FILE *f)
+{
+	return !(f->flags & F_NORD);
+}
+
+int __fwritable(FILE *f)
+{
+	return !(f->flags & F_NOWR);
+}
+
+int __flbf(FILE *f)
+{
+	return f->lbf >= 0;
+}
+
+size_t __fbufsize(FILE *f)
+{
+	return f->buf_size;
+}
+
+size_t __fpending(FILE *f)
+{
+	return f->wend ? f->wpos - f->wbase : 0;
+}
+
+int __fpurge(FILE *f)
+{
+	f->wpos = f->wbase = f->wend = 0;
+	f->rpos = f->rend = 0;
+	return 0;
+}
+
+weak_alias(__fpurge, fpurge);

+ 0 - 11
src/stdio/fpurge.c

@@ -1,11 +0,0 @@
-#define _GNU_SOURCE
-#include "stdio_impl.h"
-
-int __fpurge(FILE *f)
-{
-	f->wpos = f->wbase = f->wend = 0;
-	f->rpos = f->rend = 0;
-	return 0;
-}
-
-weak_alias(__fpurge, fpurge);