source: trunk/src/crtdll/crtinc.h@ 2246

Last change on this file since 2246 was 2182, checked in by sandervl, 26 years ago

calloc bugfix + private heap for crtldll added

File size: 10.5 KB
Line 
1/* $Id: crtinc.h,v 1.13 1999-12-21 13:46:25 sandervl Exp $ */
2
3/* Definitions for the CRTDLL library (CRTDLL.DLL)
4 *
5 * Copyright 1999 Jens Wiessner
6 */
7
8#define MB_LEN_MAX 2
9#ifndef MAX_PATHNAME_LEN
10#define MAX_PATHNAME_LEN 260
11#endif
12
13//SvL: Internal heap allocation definitions for NTDLL
14extern HANDLE CRTDLL_hHeap;
15#define Heap_Alloc(a) HeapAlloc(CRTDLL_hHeap, HEAP_ZERO_MEMORY, a)
16#define Heap_Free(a) HeapFree(CRTDLL_hHeap, 0, (PVOID)a)
17
18// MBC Defs
19#define _MBC_SINGLE 0
20#define _MBC_LEAD 1
21#define _MBC_TRAIL 2
22#define _MBC_ILLEGAL -1
23
24#define _MB_CP_SBCS 0
25#define _MB_CP_OEM -2
26#define _MB_CP_ANSI -3
27#define _MB_CP_LOCALE -4
28
29#define _KNJ_M ((char)0x01) /* Non-punctuation of Kana-set */
30#define _KNJ_P ((char)0x02) /* Punctuation of Kana-set */
31#define _KNJ_1 ((char)0x04) /* Legal 1st byte of double byte stream */
32#define _KNJ_2 ((char)0x08) /* Legal 2nd btye of double byte stream */
33
34#define ___ 0
35#define _1_ _KNJ_1 /* Legal 1st byte of double byte code */
36#define __2 _KNJ_2 /* Legal 2nd byte of double byte code */
37#define _M_ _KNJ_M /* Non-puntuation in Kana-set */
38#define _P_ _KNJ_P /* Punctuation of Kana-set */
39#define _12 (_1_|__2)
40#define _M2 (_M_|__2)
41#define _P2 (_P_|__2)
42
43#define CASE_DIFF (0x8281 - 0x8260)
44
45
46// fpclass Defs
47#define FP_SNAN 0x0001 // signaling NaN
48#define FP_QNAN 0x0002 // quiet NaN
49#define FP_NINF 0x0004 // negative infinity
50#define FP_PINF 0x0200 // positive infinity
51#define FP_NDENORM 0x0008 // negative denormalized non-zero
52#define FP_PDENORM 0x0010 // positive denormalized non-zero
53#define FP_NZERO 0x0020 // negative zero
54#define FP_PZERO 0x0040 // positive zero
55#define FP_NNORM 0x0080 // negative normalized non-zero
56#define FP_PNORM 0x0100 // positive normalized non-zero
57
58
59// Defs
60#define DOSFS_GetFullName(a,b,c) strcpy(c,a)
61
62#if defined(__GNUC__) && defined(__i386__)
63#define USING_REAL_FPU
64#define DO_FPU(x,y) __asm__ __volatile__( x " %0;fwait" : "=m" (y) : )
65#define POP_FPU(x) DO_FPU("fstpl",x)
66#endif
67
68#if (__IBMCPP__ > 300)
69#define exception _exception
70#endif
71
72typedef struct
73{
74 HANDLE handle;
75 int pad[7];
76} CRTDLL_FILE, *PCRTDLL_FILE;
77
78
79/* Definition of a full DOS file name */
80typedef struct
81{
82 char long_name[MAX_PATHNAME_LEN]; /* Long pathname in Unix format */
83 char short_name[MAX_PATHNAME_LEN]; /* Short pathname in DOS 8.3 format */
84 int drive;
85} DOS_FULL_NAME;
86
87/* Definition for _cabs */
88struct _complex
89{
90 double x; /* Real part */
91 double y; /* Imaginary part */
92};
93
94#ifndef _DISKFREE_T_DEFINED
95#define _DISKFREE_T_DEFINED
96#define _DISKFREE_T_DEFINED_
97struct _diskfree_t {
98 unsigned total_clusters;
99 unsigned avail_clusters;
100 unsigned sectors_per_cluster;
101 unsigned bytes_per_sector;
102};
103#define diskfree_t _diskfree_t
104#endif
105
106
107typedef VOID (*new_handler_type)(VOID);
108typedef void (*_INITTERMFUN)();
109
110
111CRTDLL_FILE CRTDLL_iob[3];
112
113static CRTDLL_FILE * const CRTDLL_stdin = &CRTDLL_iob[0];
114static CRTDLL_FILE * const CRTDLL_stdout = &CRTDLL_iob[1];
115static CRTDLL_FILE * const CRTDLL_stderr = &CRTDLL_iob[2];
116static new_handler_type new_handler;
117
118// CRTDLL Exports
119double *CRTDLL_HUGE_dll; /* CRTDLL.20 */
120UINT CRTDLL_argc_dll; /* CRTDLL.23 */
121LPSTR *CRTDLL_argv_dll; /* CRTDLL.24 */
122int CRTDLL_mb_cur_max_dll; /* CRTDLL.31 */
123LPSTR CRTDLL_acmdln_dll; /* CRTDLL.38 */
124UINT CRTDLL_basemajor_dll; /* CRTDLL.42 */
125UINT CRTDLL_baseminor_dll; /* CRTDLL.43 */
126UINT CRTDLL_baseversion_dll; /* CRTDLL.44 */
127UINT CRTDLL_commode_dll; /* CRTDLL.59 */
128UCHAR *CRTDLL_cpumode_dll; /* CRTDLL.64 */
129USHORT *CRTDLL_ctype; /* CRTDLL.68 */
130UINT CRTDLL_daylight_dll; /* CRTDLL.70 */
131LPSTR CRTDLL_environ_dll; /* CRTDLL.75 */
132LPSTR CRTDLL_fileinfo_dll; /* CRTDLL.95 */
133UINT CRTDLL_fmode_dll; /* CRTDLL.104 */
134LPSTR CRTDLL_mbctype; /* CRTDLL.193 */
135UINT CRTDLL_osmajor_dll; /* CRTDLL.239 */
136UINT CRTDLL_osminor_dll; /* CRTDLL.240 */
137UINT CRTDLL_osmode_dll; /* CRTDLL.241 */
138UINT CRTDLL_osver_dll; /* CRTDLL.242 */
139UINT CRTDLL_osversion_dll; /* CRTDLL.243 */
140USHORT CRTDLL_pctype_dll[] = {0,0}; /* CRTDLL.245 */
141LPSTR CRTDLL_pgmptr_dll; /* CRTDLL.246 */
142USHORT *CRTDLL_pwctype_dll; /* CRTDLL.253 */
143UINT CRTDLL_timezone_dll; /* CRTDLL.304 */
144LPSTR CRTDLL_tzname; /* CRTDLL.307 */
145UINT CRTDLL_winmajor_dll; /* CRTDLL.326 */
146UINT CRTDLL_winminor_dll; /* CRTDLL.327 */
147UINT CRTDLL_winver_dll; /* CRTDLL.328 */
148
149
150// CRTDLL Functions
151CRTDLL_FILE * CDECL CRTDLL__fdopen(INT handle, LPCSTR mode);
152INT CDECL CRTDLL__wcsicmp( LPCWSTR str1, LPCWSTR str2 );
153INT CDECL CRTDLL_vfprintf( CRTDLL_FILE *file, LPSTR format, va_list args );
154VOID * CDECL CRTDLL_malloc(DWORD size);
155long CDECL CRTDLL__lseek(int handle,long offset,int origin);
156long CDECL CRTDLL__filelength( int i );
157VOID CDECL CRTDLL__exit(DWORD ret);
158INT CDECL CRTDLL_isalnum(int i);
159int CDECL CRTDLL_isgraph(int i);
160int CDECL CRTDLL__access(const char *path,int mode);
161int CDECL CRTDLL__getch(void);
162size_t CDECL CRTDLL_fread( void *ptr, size_t size, size_t n, FILE *fp );
163int CDECL CRTDLL__mbbtype( unsigned char c, int type );
164unsigned char * CDECL CRTDLL__mbscpy( unsigned char *s1, const unsigned char *s2 );
165LPSTR CDECL CRTDLL__mbsinc( LPCSTR str );
166INT CDECL CRTDLL__mbslen( LPCSTR str );
167int CDECL CRTDLL__ismbbkalnum( unsigned int c );
168int CDECL CRTDLL__ismbbkana( unsigned int c );
169int CDECL CRTDLL__ismbbalpha( unsigned int c );
170int CDECL CRTDLL__ismbbtrail( unsigned int c );
171int CDECL CRTDLL__ismbblead( unsigned int c );
172char * CDECL CRTDLL_getenv( const char *name );
173int CDECL CRTDLL__isnan( double __x );
174void * CDECL CRTDLL__get_osfhandle( int fileno );
175
176//
177// Definitions for internal functions
178//
179int __set_errno (int error);
180unsigned int _mbbtoupper(unsigned int c);
181unsigned int _mbbtolower(unsigned int c);
182size_t _mbclen2(const unsigned int s);
183int _isinf(double __x);
184void *filehnd(int fileno);
185
186
187//
188// Defs for filehnd
189//
190typedef struct _fileno_modes_type
191{
192 HANDLE hFile;
193 int mode;
194 int fd;
195} fileno_modes_type;
196
197fileno_modes_type *fileno_modes = NULL;
198
199int maxfno = 5;
200int minfno = 5;
201
202
203//
204// MBC Includes
205//
206static unsigned short han_to_zen_ascii_table[0x5f] = {
207 0x8140, 0x8149, 0x8168, 0x8194, 0x8190, 0x8193, 0x8195, 0x8166,
208 0x8169, 0x816a, 0x8196, 0x817b, 0x8143, 0x817c, 0x8144, 0x815e,
209 0x824f, 0x8250, 0x8251, 0x8252, 0x8253, 0x8254, 0x8255, 0x8256,
210 0x8257, 0x8258, 0x8146, 0x8147, 0x8183, 0x8181, 0x8184, 0x8148,
211 0x8197, 0x8260, 0x8261, 0x8262, 0x8263, 0x8264, 0x8265, 0x8266,
212 0x8267, 0x8268, 0x8269, 0x826a, 0x826b, 0x826c, 0x826d, 0x826e,
213 0x826f, 0x8270, 0x8271, 0x8272, 0x8273, 0x8274, 0x8275, 0x8276,
214 0x8277, 0x8278, 0x8279, 0x816d, 0x818f, 0x816e, 0x814f, 0x8151,
215 0x8165, 0x8281, 0x8282, 0x8283, 0x8284, 0x8285, 0x8286, 0x8287,
216 0x8288, 0x8289, 0x828a, 0x828b, 0x828c, 0x828d, 0x828e, 0x828f,
217 0x8290, 0x8291, 0x8292, 0x8293, 0x8294, 0x8295, 0x8296, 0x8297,
218 0x8298, 0x8299, 0x829a, 0x816f, 0x8162, 0x8170, 0x8150
219};
220static unsigned short han_to_zen_kana_table[0x40] = {
221 0x8140, 0x8142, 0x8175, 0x8176, 0x8141, 0x8145, 0x8392, 0x8340,
222 0x8342, 0x8344, 0x8346, 0x8348, 0x8383, 0x8385, 0x8387, 0x8362,
223 0x815b, 0x8341, 0x8343, 0x8345, 0x8347, 0x8349, 0x834a, 0x834c,
224 0x834e, 0x8350, 0x8352, 0x8354, 0x8356, 0x8358, 0x835a, 0x835c,
225 0x835e, 0x8360, 0x8363, 0x8365, 0x8367, 0x8369, 0x836a, 0x836b,
226 0x836c, 0x836d, 0x836e, 0x8371, 0x8374, 0x8377, 0x837a, 0x837d,
227 0x837e, 0x8380, 0x8381, 0x8382, 0x8384, 0x8386, 0x8388, 0x8389,
228 0x838a, 0x838b, 0x838c, 0x838d, 0x838f, 0x8393, 0x814a, 0x814b
229};
230static unsigned char zen_to_han_kana_table[0x8396-0x8340+1] = {
231 0xa7, 0xb1, 0xa8, 0xb2, 0xa9, 0xb3, 0xaa, 0xb4,
232 0xab, 0xb5, 0xb6, 0xb6, 0xb7, 0xb7, 0xb8, 0xb8,
233 0xb9, 0xb9, 0xba, 0xba, 0xbb, 0xbb, 0xbc, 0xbc,
234 0xbd, 0xbd, 0xbe, 0xbe, 0xbf, 0xbf, 0xc0, 0xc0,
235 0xc1, 0xc1, 0xaf, 0xc2, 0xc2, 0xc3, 0xc3, 0xc4,
236 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xca,
237 0xca, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcd,
238 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xcf, 0xd0, 0,
239 0xd1, 0xd2, 0xd3, 0xac, 0xd4, 0xad, 0xd5, 0xae,
240 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdc,
241 0xb2, 0xb4, 0xa6, 0xdd, 0xb3, 0xb6, 0xb9
242};
243#define ZTOH_SYMBOLS 9
244static unsigned short zen_to_han_symbol_table_1[ZTOH_SYMBOLS] = {
245 0x8142, 0x8175, 0x8176, 0x8141, 0x8145, 0x815b, 0x814a, 0x814b
246};
247static unsigned char zen_to_han_symbol_table_2[ZTOH_SYMBOLS] = {
248 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xb0, 0xde, 0xdf
249};
250#define ISKANA(c) ((c) >= 0xa1 && (c) <= 0xdf)
251#define JISHIRA(c) ((c) >= 0x829f && (c) <= 0x82f1)
252#define JISKANA(c) ((c) >= 0x8340 && (c) <= 0x8396 && (c) != 0x837f)
253#define JTOKANA(c) ((c) <= 0x82dd ? (c) + 0xa1 : (c) + 0xa2)
254
255char _jctype[257] = {
256/*-1*/ ___,
257/*0x*/ ___,___,___,___,___,___,___,___,___,___,___,___,___,___,___,___,
258/*1x*/ ___,___,___,___,___,___,___,___,___,___,___,___,___,___,___,___,
259/*2x*/ ___,___,___,___,___,___,___,___,___,___,___,___,___,___,___,___,
260/*3x*/ ___,___,___,___,___,___,___,___,___,___,___,___,___,___,___,___,
261/*4x*/ __2,__2,__2,__2,__2,__2,__2,__2,__2,__2,__2,__2,__2,__2,__2,__2,
262/*5x*/ __2,__2,__2,__2,__2,__2,__2,__2,__2,__2,__2,__2,__2,__2,__2,__2,
263/*6x*/ __2,__2,__2,__2,__2,__2,__2,__2,__2,__2,__2,__2,__2,__2,__2,__2,
264/*7x*/ __2,__2,__2,__2,__2,__2,__2,__2,__2,__2,__2,__2,__2,__2,__2,___,
265/*8x*/ __2,_12,_12,_12,_12,_12,_12,_12,_12,_12,_12,_12,_12,_12,_12,_12,
266/*9x*/ _12,_12,_12,_12,_12,_12,_12,_12,_12,_12,_12,_12,_12,_12,_12,_12,
267/*Ax*/ __2,_P2,_P2,_P2,_P2,_P2,_M2,_M2,_M2,_M2,_M2,_M2,_M2,_M2,_M2,_M2,
268/*Bx*/ _M2,_M2,_M2,_M2,_M2,_M2,_M2,_M2,_M2,_M2,_M2,_M2,_M2,_M2,_M2,_M2,
269/*Cx*/ _M2,_M2,_M2,_M2,_M2,_M2,_M2,_M2,_M2,_M2,_M2,_M2,_M2,_M2,_M2,_M2,
270/*Dx*/ _M2,_M2,_M2,_M2,_M2,_M2,_M2,_M2,_M2,_M2,_M2,_M2,_M2,_M2,_M2,_M2,
271/*Ex*/ _12,_12,_12,_12,_12,_12,_12,_12,_12,_12,_12,_12,_12,_12,_12,_12,
272/*Fx*/ _12,_12,_12,_12,_12,_12,_12,_12,_12,_12,_12,_12,_12,___,___,___
273};
274
275
276// syserr / sysnerr Defs
277const char *CRTDLL_sys_errlist[] = {
278__syserr00, __syserr01, __syserr02, __syserr03, __syserr04,
279__syserr05, __syserr06, __syserr07, __syserr08, __syserr09,
280__syserr10, __syserr11, __syserr12, __syserr13, __syserr14,
281__syserr15, __syserr16, __syserr17, __syserr18, __syserr19,
282__syserr20, __syserr21, __syserr22, __syserr23, __syserr24,
283__syserr25, __syserr26, __syserr27, __syserr28, __syserr29,
284__syserr30, __syserr31, __syserr32, __syserr33, __syserr34,
285__syserr35, __syserr36, __syserr37, __syserr38
286};
287
288int __sys_nerr = sizeof(CRTDLL_sys_errlist) / sizeof(CRTDLL_sys_errlist[0]);
289
290int* CRTDLL_sys_nerr_dll = &__sys_nerr;
Note: See TracBrowser for help on using the repository browser.