kolibrios/contrib/sdk/sources/newlib/libc/include/stdio_ext.h
Sergey Semyonov (Serge) 7315bb05c0 newlib-2.1.0
git-svn-id: svn://kolibrios.org@4921 a494cfbc-eb01-0410-851d-a64ba20cac60
2014-05-10 22:12:19 +00:00

64 lines
1.5 KiB
C

/*
* 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 *));
/* 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_ */