/* * stdio_ext.h * * Definitions for I/O internal operations, originally from Solaris. */ #ifndef _STDIO_EXT_H_ #define _STDIO_EXT_H_ #ifdef __rtems__ #error " not supported" #endif #include #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_ */