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

Last change on this file since 2123 was 2107, checked in by sandervl, 26 years ago

JW: Removed the ERRNO Defs from CRTINC.H and included ERRNO.H

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