From a0b56b947a5a8a58fe2accea7f6d9ee927d70ad4 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Thu, 30 Jun 2011 12:44:48 -0400 Subject: [PATCH] add and consolidate nasty stdio_ext junk hopefully this resolves the rest of the issues with hideously nonportable hacks in programs that use gnulib. --- include/stdio_ext.h | 27 ++++++++++++++++++++ src/stdio/__fpending.c | 6 ----- src/stdio/ext.c | 57 ++++++++++++++++++++++++++++++++++++++++++ src/stdio/fpurge.c | 11 -------- 4 files changed, 84 insertions(+), 17 deletions(-) create mode 100644 include/stdio_ext.h delete mode 100644 src/stdio/__fpending.c create mode 100644 src/stdio/ext.c delete mode 100644 src/stdio/fpurge.c diff --git a/include/stdio_ext.h b/include/stdio_ext.h new file mode 100644 index 00000000..b090cab6 --- /dev/null +++ b/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 diff --git a/src/stdio/__fpending.c b/src/stdio/__fpending.c deleted file mode 100644 index a4334e23..00000000 --- a/src/stdio/__fpending.c +++ /dev/null @@ -1,6 +0,0 @@ -#include "stdio_impl.h" - -size_t __fpending(FILE *f) -{ - return f->wend ? f->wpos - f->wbase : 0; -} diff --git a/src/stdio/ext.c b/src/stdio/ext.c new file mode 100644 index 00000000..d5a403b6 --- /dev/null +++ b/src/stdio/ext.c @@ -0,0 +1,57 @@ +#define _GNU_SOURCE +#include "stdio_impl.h" +#include + +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); diff --git a/src/stdio/fpurge.c b/src/stdio/fpurge.c deleted file mode 100644 index a9e98e7b..00000000 --- a/src/stdio/fpurge.c +++ /dev/null @@ -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); -- 2.20.1