/**************************************************************************** * * Open Watcom Project * * Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved. * * ======================================================================== * * This file contains Original Code and/or Modifications of Original * Code as defined in and that are subject to the Sybase Open Watcom * Public License version 1.0 (the 'License'). You may not use this file * except in compliance with the License. BY USING THIS FILE YOU AGREE TO * ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is * provided with the Original Code and Modifications, and is also * available at www.sybase.com/developer/opensource. * * The Original Code and all software distributed under the License are * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER * EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM * ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR * NON-INFRINGEMENT. Please see the License for the specific language * governing rights and limitations under the License. * * ======================================================================== * * Description: Internal CLIB structures and variables. * ****************************************************************************/ #ifndef _RTDATA_H_INCLUDED #define _RTDATA_H_INCLUDED #include "variety.h" #include #include "errorno.h" /* DOS based platforms have stdaux/stdprn in addition to stdin/out/err */ #if defined(__DOS__) || defined(__WINDOWS__) || defined(__OSI__) #define NUM_STD_STREAMS 5 #else #define NUM_STD_STREAMS 3 #endif #if defined(__NT__) || defined(__OS2__) struct __pipe_info { int isPipe; /* non-zero if it's a pipe */ int pid; /* PID of spawned process */ }; #endif typedef struct __stream_link { struct __stream_link * next; struct __iobuf * stream; unsigned char * _base; /* location of buffer */ int _orientation; /* wide/byte/not oriented */ int _extflags; /* extended flags */ unsigned char _tmpfchar; /* tmpfile number */ unsigned char _filler[sizeof(int)-1];/* explicit padding */ #if defined(__NT__) || defined(__OS2__) struct __pipe_info pipeInfo; /* pipe-related fields */ #endif } __stream_link; typedef void _WCI86FAR FPEhandler( int ); #define _FP_BASE(__fp) ((__fp)->_link->_base) #ifndef __NETWARE__ #define _FP_ORIENTATION(__fp) ((__fp)->_link->_orientation) #define _FP_EXTFLAGS(__fp) ((__fp)->_link->_extflags) #endif #define _FP_TMPFCHAR(__fp) ((__fp)->_link->_tmpfchar) #ifndef __NETWARE__ #define _FP_PIPEDATA(__fp) ((__fp)->_link->pipeInfo) #endif extern __stream_link *__OpenStreams; extern __stream_link *__ClosedStreams; extern char * _WCNEAR __env_mask; /* ptr to char array of flags */ extern FPEhandler *__FPE_handler; extern void (*__FPE_handler_exit)( void ); #if !defined(__NETWARE__) extern int _cbyte; extern int _cbyte2; extern int _child; extern int __umaskval; extern unsigned _curbrk; extern int _commode; #endif #if !defined (_NETWARE_LIBC) extern unsigned _STACKTOP; #endif #if !defined(__QNX__) && !defined(__LINUX__) extern void (*__Save8087)();/* Ptr to FP state save rtn (spawn) */ extern void (*__Rest8087)();/* Ptr to FP state restore rtn (spawn) */ #endif extern unsigned short _8087cw; /* control word initializer */ extern unsigned char _no87; /* NO87 environment var defined */ extern unsigned char _8087; /* type of 8087/emulator present */ extern unsigned char _real87; /* 8087 coprocessor hardware present */ #if defined(_M_IX86) #pragma aux _8087cw "_*"; #pragma aux _no87 "_*"; #pragma aux _8087 "_*"; #pragma aux _real87 "_*"; #endif #if !defined(__SW_BM) extern unsigned _STACKLOW; #endif #define _RWD_ostream __OpenStreams #define _RWD_cstream __ClosedStreams #define _RWD_iob __iob #if !defined(__NETWARE__) #define _RWD_threadid _threadid #endif #define _RWD_environ environ #define _RWD_wenviron _wenviron #define _RWD_env_mask __env_mask #define _RWD_abort __abort #define _RWD_sigtab __SIGNALTABLE #define _RWD_FPE_handler_exit __FPE_handler_exit #define _RWD_FPE_handler __FPE_handler #define _RWD_fmode _fmode #if !defined(__NETWARE__) #define _RWD_umaskval __umaskval #define _RWD_cbyte _cbyte #define _RWD_cbyte2 _cbyte2 #define _RWD_child _child #define _RWD_amblksiz _amblksiz #define _RWD_curbrk _curbrk #define _RWD_dynend _dynend #define _RWD_psp _psp #endif #if !defined (_NETWARE_LIBC) #define _RWD_stacktop _STACKTOP #endif #if !defined(__QNX__) && !defined(__LINUX__) #define _RWD_Save8087 __Save8087 #define _RWD_Rest8087 __Rest8087 #endif #define _RWD_8087cw _8087cw #define _RWD_no87 _no87 #define _RWD_8087 _8087 #define _RWD_real87 _real87 #if !defined(__NETWARE__) #define _RWD_HShift _HShift #define _RWD_osmajor _osmajor #define _RWD_osminor _osminor #define _RWD_osmode _osmode #if defined(__NT__) #define _RWD_osbuild _osbuild #define _RWD_osver _osver #define _RWD_winmajor _winmajor #define _RWD_winminor _winminor #define _RWD_winver _winver #endif #define _RWD_doserrno _DOSERRNO #endif #define _RWD_tmpfnext __tmpfnext #if !defined(_RWD_errno) #define _RWD_errno _ERRNO #endif #define _RWD_nexttok _NEXTTOK #define _RWD_nextftok _NEXTFTOK #define _RWD_nextmbtok _NEXTMBTOK #define _RWD_nextmbftok _NEXTMBFTOK #define _RWD_nextwtok _NEXTWTOK #define _RWD_tzname tzname #define _RWD_timezone timezone #define _RWD_daylight daylight #define _RWD_dst_adjust __dst_adjust #define _RWD_start_dst __start_dst #define _RWD_end_dst __end_dst #define _RWD_asctime _RESULT #ifdef __SW_BM #define _RWD_cvtbuf __THREADDATAPTR->__cvt_buffer #else #define _RWD_cvtbuf cvt_buffer #endif #if defined(__NETWARE__) #define _RWD_ioexit __ioexit #define _RWD_tmpnambuf (__THREADDATAPTR->__tmpnambuf) #define _RWD_randnextinit (__THREADDATAPTR->__randnextinit) #else #define _RWD_tmpnambuf _tmpname #define _RWD_randnextinit THREAD_PTR.__randnextinit #endif #define _RWD_stacklow _STACKLOW #define _RWD_randnext _RANDNEXT #define _RWD_ThreadData _ThreadData #define _RWD_StaticInitSema _StaticInitSema #define _RWD_PureErrorFlag _PureErrorFlag #define _RWD_UndefVfunFlag _UndefVfunFlag #define _RWD_ModuleInit _ModuleInit /* For the sake of efficiency, tell the compiler that the __exit... routines never return. */ _WCRTLINK extern void __exit( unsigned ); #if defined(_M_IX86) #pragma aux __exit aborts; #endif extern void (*__abort)( void ); // Defined in abort.c extern void __terminate( void ); // Defined in abort.c #endif // _RTDATA_H_INCLUDED