Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2013-08-02 11:52:09 +0400
committerCorinna Vinschen <corinna@vinschen.de>2013-08-02 11:52:09 +0400
commitf34670b338d51f01c32f712ab2be862f00e1abb2 (patch)
tree419a6b1693b51409ba44d9dde5f9a4a7951ba03c
parent762d970290b5765cf406b22c8520881c3c6ec33b (diff)
* libc/include/stdio_ext.h (__fbufsize): Define as inline function for
gcc, as macro otherwise. (__freading): Ditto. (__fwriting): Ditto. (__freadable): Ditto. (__fwriteable): Ditto. (__flbf): Ditto. (__fpending): Ditto.
-rw-r--r--newlib/ChangeLog11
-rw-r--r--newlib/libc/include/stdio_ext.h41
2 files changed, 52 insertions, 0 deletions
diff --git a/newlib/ChangeLog b/newlib/ChangeLog
index 2cdb28871..27625834e 100644
--- a/newlib/ChangeLog
+++ b/newlib/ChangeLog
@@ -1,3 +1,14 @@
+2013-08-01 Corinna Vinschen <vinschen@redhat.com>
+
+ * libc/include/stdio_ext.h (__fbufsize): Define as inline function for
+ gcc, as macro otherwise.
+ (__freading): Ditto.
+ (__fwriting): Ditto.
+ (__freadable): Ditto.
+ (__fwriteable): Ditto.
+ (__flbf): Ditto.
+ (__fpending): Ditto.
+
2013-07-23 Sahil Patnayakuni <sahilp@rtems.org>
* libc/sys/linux/include/netdb.h, libc/sys/linux/net/getaddrinfo.c,
diff --git a/newlib/libc/include/stdio_ext.h b/newlib/libc/include/stdio_ext.h
index fcfb662a0..a830c8815 100644
--- a/newlib/libc/include/stdio_ext.h
+++ b/newlib/libc/include/stdio_ext.h
@@ -17,6 +17,47 @@ _BEGIN_STD_C
void _EXFUN(__fpurge,(FILE *));
+/* TODO:
+
+ void _flushlbf (void);
+ int __fsetlocking (FILE *__fp, int __type);
+*/
+
+#ifdef __GNUC__
+
+_ELIDABLE_INLINE inline size_t
+__fbufsize (FILE *__fp) { return (size_t) __fp->_bf._size; }
+
+_ELIDABLE_INLINE inline int
+__freading (FILE *__fp) { return (__fp->_flags & __SRD) != 0; }
+
+_ELIDABLE_INLINE inline int
+__fwriting (FILE *__fp) { return (__fp->_flags & __SWR) != 0; }
+
+_ELIDABLE_INLINE inline int
+__freadable (FILE *__fp) { return (__fp->_flags & (__SRD | __SRW)) != 0; }
+
+_ELIDABLE_INLINE inline int
+__fwriteable (FILE *__fp) { return (__fp->_flags & (__SWR | __SRW)) != 0; }
+
+_ELIDABLE_INLINE inline int
+__flbf (FILE *__fp) { return (__fp->_flags & __SLBF) != 0; }
+
+_ELIDABLE_INLINE inline size_t
+__fpending (FILE *__fp) { return __fp->_p - __fp->_bf._base; }
+
+#else
+
+#define __fbufsize(__fp) ((size_t) (__fp)->_bf._size)
+#define __freading(__fp) (((__fp)->_flags & __SRD) != 0)
+#define __fwriting(__fp) (((__fp)->_flags & __SWR) != 0)
+#define __freadable(__fp) (((__fp)->_flags & (__SRD | __SRW)) != 0)
+#define __fwriteable(__fp) (((__fp)->_flags & (__SWR | __SRW)) != 0)
+#define __flbf(__fp) (((__fp)->_flags & __SLBF) != 0)
+#define __fpending(__fp) ((size_t) ((__fp)->_p - (__fp)->_bf._base))
+
+#endif /* __GNUC__ */
+
_END_STD_C
#endif /* _STDIO_EXT_H_ */