2011-05-19 15:21:42 +08:00
|
|
|
/*
|
|
|
|
* 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>
|
|
|
|
|
2014-12-16 02:22:56 +08:00
|
|
|
#define FSETLOCKING_QUERY 0
|
|
|
|
#define FSETLOCKING_INTERNAL 1
|
|
|
|
#define FSETLOCKING_BYCALLER 2
|
|
|
|
|
2011-05-19 15:21:42 +08:00
|
|
|
_BEGIN_STD_C
|
|
|
|
|
2017-12-04 13:54:48 +08:00
|
|
|
void __fpurge (FILE *);
|
|
|
|
int __fsetlocking (FILE *, int);
|
2011-05-19 15:21:42 +08:00
|
|
|
|
2013-08-02 15:52:09 +08:00
|
|
|
/* TODO:
|
|
|
|
|
|
|
|
void _flushlbf (void);
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifdef __GNUC__
|
|
|
|
|
2014-12-10 17:39:06 +08:00
|
|
|
_ELIDABLE_INLINE size_t
|
2013-08-02 15:52:09 +08:00
|
|
|
__fbufsize (FILE *__fp) { return (size_t) __fp->_bf._size; }
|
|
|
|
|
2014-12-10 17:39:06 +08:00
|
|
|
_ELIDABLE_INLINE int
|
2013-08-02 15:52:09 +08:00
|
|
|
__freading (FILE *__fp) { return (__fp->_flags & __SRD) != 0; }
|
|
|
|
|
2014-12-10 17:39:06 +08:00
|
|
|
_ELIDABLE_INLINE int
|
2013-08-02 15:52:09 +08:00
|
|
|
__fwriting (FILE *__fp) { return (__fp->_flags & __SWR) != 0; }
|
|
|
|
|
2014-12-10 17:39:06 +08:00
|
|
|
_ELIDABLE_INLINE int
|
2013-08-02 15:52:09 +08:00
|
|
|
__freadable (FILE *__fp) { return (__fp->_flags & (__SRD | __SRW)) != 0; }
|
|
|
|
|
2014-12-10 17:39:06 +08:00
|
|
|
_ELIDABLE_INLINE int
|
2014-12-12 00:53:32 +08:00
|
|
|
__fwritable (FILE *__fp) { return (__fp->_flags & (__SWR | __SRW)) != 0; }
|
2013-08-02 15:52:09 +08:00
|
|
|
|
2014-12-10 17:39:06 +08:00
|
|
|
_ELIDABLE_INLINE int
|
2013-08-02 15:52:09 +08:00
|
|
|
__flbf (FILE *__fp) { return (__fp->_flags & __SLBF) != 0; }
|
|
|
|
|
2014-12-10 17:39:06 +08:00
|
|
|
_ELIDABLE_INLINE size_t
|
2013-08-02 15:52:09 +08:00
|
|
|
__fpending (FILE *__fp) { return __fp->_p - __fp->_bf._base; }
|
|
|
|
|
|
|
|
#else
|
|
|
|
|
2017-12-04 13:54:48 +08:00
|
|
|
size_t __fbufsize (FILE *);
|
|
|
|
int __freading (FILE *);
|
|
|
|
int __fwriting (FILE *);
|
|
|
|
int __freadable (FILE *);
|
|
|
|
int __fwritable (FILE *);
|
|
|
|
int __flbf (FILE *);
|
|
|
|
size_t __fpending (FILE *);
|
2014-12-12 00:53:32 +08:00
|
|
|
|
|
|
|
#ifndef __cplusplus
|
|
|
|
|
2013-08-02 15:52:09 +08:00
|
|
|
#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)
|
2014-12-12 00:53:32 +08:00
|
|
|
#define __fwritable(__fp) (((__fp)->_flags & (__SWR | __SRW)) != 0)
|
2013-08-02 15:52:09 +08:00
|
|
|
#define __flbf(__fp) (((__fp)->_flags & __SLBF) != 0)
|
|
|
|
#define __fpending(__fp) ((size_t) ((__fp)->_p - (__fp)->_bf._base))
|
|
|
|
|
2014-12-12 00:53:32 +08:00
|
|
|
#endif /* __cplusplus */
|
|
|
|
|
2013-08-02 15:52:09 +08:00
|
|
|
#endif /* __GNUC__ */
|
|
|
|
|
2011-05-19 15:21:42 +08:00
|
|
|
_END_STD_C
|
|
|
|
|
|
|
|
#endif /* _STDIO_EXT_H_ */
|