#include "sfhdr.h"
static Vtmutex_t Sfmutex;
static Vtonce_t Sfonce = VTONCE_INITDATA;
static void _sfoncef()
{ vtmtxopen(_Sfmutex, VT_INIT);
vtmtxopen(&_Sfpool.mutex, VT_INIT);
vtmtxopen(sfstdin->mutex, VT_INIT);
vtmtxopen(sfstdout->mutex, VT_INIT);
vtmtxopen(sfstderr->mutex, VT_INIT);
_Sfdone = 1;
}
Sfextern_t _Sfextern =
{ 0,
{ NIL(Sfpool_t*), 0, 0, 0, NIL(Sfio_t**) },
NIL(int(*)_ARG_((Sfio_t*,int))),
NIL(Sfio_t*(*)_ARG_((Sfio_t*, Sfio_t*))),
NIL(void(*)_ARG_((Sfio_t*, int, int))),
NIL(int(*)_ARG_((Sfio_t*))),
{ NIL(Sfread_f),
NIL(Sfwrite_f),
NIL(Sfseek_f),
NIL(Sfexcept_f),
NIL(Sfdisc_t*)
},
NIL(void(*)_ARG_((void)) ),
0,
0,
&Sfonce,
_sfoncef,
&Sfmutex
};
ssize_t _Sfi = -1;
#if vt_threaded
static Vtmutex_t _Sfmtxin, _Sfmtxout, _Sfmtxerr;
#define SFMTXIN (&_Sfmtxin)
#define SFMTXOUT (&_Sfmtxout)
#define SFMTXERR (&_Sfmtxerr)
#else
#define SFMTXIN (0)
#define SFMTXOUT (0)
#define SFMTXERR (0)
#endif
Sfio_t _Sfstdin = SFNEW(NIL(char*),-1,0,
(SF_READ |SF_STATIC|SF_MTSAFE),NIL(Sfdisc_t*),SFMTXIN);
Sfio_t _Sfstdout = SFNEW(NIL(char*),-1,1,
(SF_WRITE|SF_STATIC|SF_MTSAFE),NIL(Sfdisc_t*),SFMTXOUT);
Sfio_t _Sfstderr = SFNEW(NIL(char*),-1,2,
(SF_WRITE|SF_STATIC|SF_MTSAFE),NIL(Sfdisc_t*),SFMTXERR);
Sfio_t* sfstdin = &_Sfstdin;
Sfio_t* sfstdout = &_Sfstdout;
Sfio_t* sfstderr = &_Sfstderr;
__EXTERN__(ssize_t,_Sfi);
__EXTERN__(Sfio_t,_Sfstdin);
__EXTERN__(Sfio_t,_Sfstdout);
__EXTERN__(Sfio_t,_Sfstderr);
__EXTERN__(Sfio_t*,sfstdin);
__EXTERN__(Sfio_t*,sfstdout);
__EXTERN__(Sfio_t*,sfstderr);