| /* |
| * 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> |
| |
| #define FSETLOCKING_QUERY 0 |
| #define FSETLOCKING_INTERNAL 1 |
| #define FSETLOCKING_BYCALLER 2 |
| |
| _BEGIN_STD_C |
| |
| void _EXFUN(__fpurge,(FILE *)); |
| int _EXFUN(__fsetlocking,(FILE *, int)); |
| |
| /* TODO: |
| |
| void _flushlbf (void); |
| */ |
| |
| #ifdef __GNUC__ |
| |
| _ELIDABLE_INLINE size_t |
| __fbufsize (FILE *__fp) { return (size_t) __fp->_bf._size; } |
| |
| _ELIDABLE_INLINE int |
| __freading (FILE *__fp) { return (__fp->_flags & __SRD) != 0; } |
| |
| _ELIDABLE_INLINE int |
| __fwriting (FILE *__fp) { return (__fp->_flags & __SWR) != 0; } |
| |
| _ELIDABLE_INLINE int |
| __freadable (FILE *__fp) { return (__fp->_flags & (__SRD | __SRW)) != 0; } |
| |
| _ELIDABLE_INLINE int |
| __fwritable (FILE *__fp) { return (__fp->_flags & (__SWR | __SRW)) != 0; } |
| |
| _ELIDABLE_INLINE int |
| __flbf (FILE *__fp) { return (__fp->_flags & __SLBF) != 0; } |
| |
| _ELIDABLE_INLINE size_t |
| __fpending (FILE *__fp) { return __fp->_p - __fp->_bf._base; } |
| |
| #else |
| |
| size_t _EXFUN(__fbufsize,(FILE *)); |
| int _EXFUN(__freading,(FILE *)); |
| int _EXFUN(__fwriting,(FILE *)); |
| int _EXFUN(__freadable,(FILE *)); |
| int _EXFUN(__fwritable,(FILE *)); |
| int _EXFUN(__flbf,(FILE *)); |
| size_t _EXFUN(__fpending,(FILE *)); |
| |
| #ifndef __cplusplus |
| |
| #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 __fwritable(__fp) (((__fp)->_flags & (__SWR | __SRW)) != 0) |
| #define __flbf(__fp) (((__fp)->_flags & __SLBF) != 0) |
| #define __fpending(__fp) ((size_t) ((__fp)->_p - (__fp)->_bf._base)) |
| |
| #endif /* __cplusplus */ |
| |
| #endif /* __GNUC__ */ |
| |
| _END_STD_C |
| |
| #endif /* _STDIO_EXT_H_ */ |