diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2013-08-02 07:52:09 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2013-08-02 07:52:09 +0000 |
commit | f34670b338d51f01c32f712ab2be862f00e1abb2 (patch) | |
tree | 419a6b1693b51409ba44d9dde5f9a4a7951ba03c /newlib/libc/include/stdio_ext.h | |
parent | 762d970290b5765cf406b22c8520881c3c6ec33b (diff) | |
download | cygnal-f34670b338d51f01c32f712ab2be862f00e1abb2.tar.gz cygnal-f34670b338d51f01c32f712ab2be862f00e1abb2.tar.bz2 cygnal-f34670b338d51f01c32f712ab2be862f00e1abb2.zip |
* 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.
Diffstat (limited to 'newlib/libc/include/stdio_ext.h')
-rw-r--r-- | newlib/libc/include/stdio_ext.h | 41 |
1 files changed, 41 insertions, 0 deletions
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_ */ |