root/tags/5.4.pre05/cisisx.cpp @ 1

Revision 1, 12.1 kB (checked in by heitor.barbieri, 2 years ago)

Criação do svn para Cisis.

Line 
1///******************************************************
2//CISISX.CPP
3//******************************************************/
4
5#define CISISX_SOURCE
6
7//#include <cisisx.hpp>
8#include <ciiso.hpp>
9#include <cirun.hpp>
10#include <string.h>
11
12#include <cisisx.c>
13
14#if CICPP
15
16void CISISX :: cidbx_init(void)
17{
18 partrace=0;                 /* dbxopen/dbxcipar trace */
19 dbxtrace=0;                 /* dbxopen/dbxcipar trace */
20 rectrace=0;                 /* rec RESTRACE runtime switch */
21 dectrace=0;                 /* decoread()/recdeco() runtime switch  */
22 trmtrace=0;                 /* trm TRSTRACE runtime switch */
23 b40trace=0;                 /* b40 RUXTRACE runtime switch */
24 b50trace=0;                 /* b50 RUXTRACE runtime switch */
25 b70trace=0;                 /* b70 RUXTRACE runtime switch */
26 fmttrace=0;                 /* fmt runtime switch */
27 fsttrace=0;                 /* fst FSSTRACE runtime switch */
28 multrace=0;                 /* upd MULTRACE runtime switch */
29 cgitrace=0;                 /* cicgi trace */
30 bugadddel=1;                /* 13/03/94 */
31
32 dbxopt_fatal = 1;           /* dbxopen() - fatal when file doesn't exist */
33 dbxopt_errno = 1;           /* dbxopen() - dbname/errno msg before fatal */
34
35 dbxopt_mflush = 0;          /* record() - flush lastrecread if != dbname */
36 dbxopt_mclose = 0;          /* record() - close lastrecread if != dbname */
37 dbxopt_iflush = 0;          /* term() - flush lasttrmread if != dbname */
38
39 rec_maxmfrl=MAXMFRL;        /* 25/02/97 */
40 rec_mstload=0L;             /* 28/03/97 */
41 trm_invload=0L;             /* 28/03/97 */
42
43#if MULTI
44 dbxfloff=MSBSIZ;            /* dbxflock()/dbxulock() - offset = blk #2 */
45 dbxflsiz=MSBSIZ;            /* dbxflock()/dbxulock() - length */
46 dbxfloop = SHRT_MAX;        /* dbxflock() - #retries */
47 dbxwloop = SHRT_MAX;        /* dbxwlock() - #retries */
48 dbxiloop = SHRT_MAX;        /* dbxilock() - #retries */
49 dbxuclos = 1;               /* dbxulock() - close/reopen */
50 dbxewlrc = 0;               /* dbxflock()/dbxwlock() error action */
51 dbxsleep = 0;               /* dbxilock() seconds to sleep */
52#endif /* MULTI */
53
54#if MULTI
55 dbxopt_ordwr = O_RDONLY;    /* dbxopen() */
56#else
57 dbxopt_ordwr = O_RDONLY;    /* dbxopen() - O_RDWR / O_RDONLY */
58#endif
59 dbxordwr = 0;               /* dbxopen() - dbxopt_ordwr & O_RDWR */
60
61 bitmask[0] = 0x80; bitmask[1] = 0x40; bitmask[2] = 0x20;
62 bitmask[3] = 0x10; bitmask[4] = 0x08; bitmask[5] = 0x04;
63 bitmask[6] = 0x02; bitmask[7] = 0x01;
64
65 fpc_fd=0;                   /* fpccreat()/fpcwrite()/fpcclose() */
66 fpc_left=FPCBSIZ;           /* fpccreat()/fpcwrite()/fpcclose() */
67 fpc_buffer=NULL;            /* fpccreat()/fpcwrite()/fpcclose() */
68
69 vlex[0] = LE1; vlex[1] = LE2;             /* use it */
70 nxbsiz[0] = N1BSIZ; nxbsiz[1] = N2BSIZ;   /* use it */
71 lxbsiz[0] = L1BSIZ; lxbsiz[1] = L2BSIZ;   /* use it */
72
73 mx1extp = ".mst";                         /* mstsetup/recisis0 */
74 xx1extp = ".xrf";                         /* mstsetup/recisis0 */
75
76 cx1extp = ".cnt";                           /* invsetup/trmisis0 */
77 nx12extp[0] = ".n01"; nx12extp[1] = ".n02"; /* invsetup/trmisis0 */
78#if LIND
79 lx12extp[0] = ".ly1"; lx12extp[1] = ".ly2"; /* invsetup/trmisis0 */
80 ix1extp = ".iyp";                           /* invsetup/trmisis0 */
81#else
82 lx12extp[0] = ".l01"; lx12extp[1] = ".l02"; /* invsetup/trmisis0 */
83 ix1extp = ".ifp";                           /* invsetup/trmisis0 */
84#endif
85#if CNLI
86 iy0extp = ".iy0";           /* All IF into 1. To ALP, WL */
87#endif
88
89#if MULTI
90 cipnetws=MONONETS;          /* MULTI default operation */
91#endif
92
93#if DBXMSTXL
94#if CIFFI
95 cipmstxl=4;                 /* extended .mst capacity */
96#else
97 cipmstxl=0;                 /* extended .mst capacity */
98#endif
99#endif
100
101#if BEFORE20000323           /* because some BRM's GCC - ask rpiva */
102 cistderr=stderr;            /* 20/05/98 (Asael!) */
103#else
104#define cistderr stderr
105#endif
106
107 dbxcipfp = NULL;            /* dbxcipar() input parameter file pointer */
108 dbxcdcip = NULL;            /* dbxcipar() input data */
109 dbxcipok = 0;               /* dbxcipar() found */
110
111#if GIPAR
112 dbxgiext[0] = ".xrf";
113 dbxgiext[1] = ".mst";
114 dbxgiext[2] = ".cnt";
115 dbxgiext[3] = ".n01";
116 dbxgiext[4] = ".n02";
117#if LIND
118 dbxgiext[5] = ".ly1";
119 dbxgiext[6] = ".ly2";
120 dbxgiext[7] = ".iyp";
121#else /* LIND */
122 dbxgiext[5] = ".l01";
123 dbxgiext[6] = ".l02";
124 dbxgiext[7] = ".ifp";
125#endif /* LIND */
126 dbxgiext[8] = ".any";
127 dbxgiext[9] = ".fdt";
128 dbxgiext[10] = ".fst";
129 dbxgiext[11] = ".fmt";
130 dbxgiext[12] = ".pft";
131 dbxgiext[13] = ".stw";
132 dbxgiext[14] = ".srt";
133 dbxgiext[15] = ".wpr";
134 dbxgiext[16] = ".val";
135 dbxgiext[17] = NULL;
136
137 dbxgiexn[0] = 1;
138 dbxgiexn[1] = 2;
139 dbxgiexn[2] = 3;
140 dbxgiexn[3] = 4;
141 dbxgiexn[4] = 5;
142 dbxgiexn[5] = 6;
143 dbxgiexn[6] = 7;
144 dbxgiexn[7] = 8;
145 dbxgiexn[8] = 9;
146 dbxgiexn[9] = 10;
147 dbxgiexn[10] = 10;
148 dbxgiexn[11] = 10;
149 dbxgiexn[12] = 10;
150 dbxgiexn[13] = 10;
151 dbxgiexn[14] = 10;
152 dbxgiexn[15] = 10;
153 dbxgiexn[16] = 10;
154#endif /* GIPAR */
155
156}
157
158void CISISX :: cirec_init(void)
159{
160 memset(lastrecread, 0x00, CIMPL+1);   /* 950724 */
161
162 recxrefb=0;                /* recxref() comb */
163 recxrefp=0;                /* recxref() comp */
164 recxrefn=0;                /* recxref() flagnew */
165 recxrefm=0;                /* recxref() flagmod */
166 recreadl=0;                /* force recread() mfrl */
167
168#if IFUPDATE
169 recreadb=0;                /* force recread() comb = mfbwb */
170 recreadp=0;                /* force recread() comp = mfbwp */
171#endif
172
173 recisis0_m=1;              /* recisis0() init .mst */
174 recisis0_s=0;              /* recisis0() system file type */
175}
176
177void CISISX :: citrm_init(void)
178{
179 trmifupd=0;                        /* trm IFUPDATE operation */
180
181 lrlrseek=0L;
182 lrlrsize=0;
183
184 memset(lasttrmread, 0x00, CIMPL+1);    /* 950724 */
185
186#if PC
187 highv[0]=0xFF; highv[1]='\0';      /* manca controllo.. if signed */
188#else
189 highv[0]=0x7F; highv[1]='\0';      /* manca controllo.. if signed */
190#endif
191}
192
193void CISISX :: ciifl_init(void)
194{
195 ciiflfix = 0;
196 ciiflfim = 0;
197 ifl_balan = 1;
198}
199
200void CISISX :: ciutl_init(void)
201{
202 sfldchr = SFLDCHR;
203 loaduct0 = 0;
204}
205
206unsigned char CISISX :: init_isisuctab[256]=
207{
208#if PC || UNIX
209          0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
210         16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
211         32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
212         48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
213         64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
214         80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
215         96, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
216         80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,123,124,125,126,127,
217         67, 85, 69, 65, 65, 65, 65, 67, 69, 69, 69, 73, 73, 73, 65, 65,
218         69, 69, 69, 79, 79, 79, 85, 85, 89, 79, 85,155,156,157,158,159,
219         65, 73, 79, 85, 78, 78,166,167,168,169,170,171,172,173,174,175,
220        176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
221        192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
222        208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
223        224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
224        240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
225#endif
226#if MPE
227          0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
228         16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 28, 30, 31,
229         32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
230         48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
231         64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
232         80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
233         96, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
234         80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,123,124,125,126,127,
235        128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
236        144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
237        160, 65, 65, 69, 69, 69, 73, 73,168,169,170,171,172, 85, 85,175,
238        176, 89, 89,179, 67, 67, 78, 78,184,185,186,187,188,189,190,191,
239         65, 69, 79, 85, 65, 69, 79, 85, 65, 69, 79, 85, 65, 69, 79, 85,
240         65,209, 79,211, 65, 73, 79,215, 65, 73, 79, 85, 69,221,222, 79,
241         65, 65, 65, 68, 68, 73, 73, 79, 79, 79, 79,235,236, 85, 89, 89,
242        240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
243#endif
244#if VAX
245          0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
246         16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
247         32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
248         48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
249         64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
250         80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
251         96, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
252         80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,123,124,125,126,127,
253        128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
254        144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
255        160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
256        176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
257        192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
258        208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
259        224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
260        240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
261#endif
262};
263
264#ifdef CI_WINISIS
265unsigned char CISISX :: init_isisactab[256] = {
266#else
267unsigned char CISISX :: init_isisactab[] = {
268#if PC || UNIX
269 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
270 84, 85, 86, 87, 88, 89, 90, 97, 98, 99,100,101,102,
271103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,
272122,128,129,130,131,132,133,134,135,136,137,138,139,
273140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,160,161,162,163,
274164,165
275#endif
276#if MPE
277 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
278 84, 85, 86, 87, 88, 89, 90, 97, 98, 99,100,101,102,
279103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,
280122,161,162,163,164,165,166,167,173,174,177,178,180,
281181,182,183,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
282208,210,212,213,214,216,217,218,219,220,220,220,220,
283223,224,225,226,227,228,229,230,231,232,233,239,234,237,238,239
284#endif
285#if VAX
286 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
287 84, 85, 86, 87, 88, 89, 90, 97, 98, 99,100,101,102,
288103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,
289122
290#endif
291,000
292  };
293#endif /* CI_WINISIS */
294
295CISISX :: CISISX (unsigned char *parm_isisactab,
296                  unsigned char *parm_isisuctab,
297                  int *parm_NXPAGESp)
298{
299 maxndbx = MAXNDBX;         /* runtime value                */
300
301 // initialize vdbxp[]
302 for (ndbxs=maxndbx;ndbxs--;)
303  vdbxp[(unsigned)ndbxs]=(DBXSTRU *)NULL;
304 ndbxs=0;                   /* actual #entries              */
305
306#if FATRAP
307 fatal_errcod = 1;              /* cisis fatal() error code */
308 fatal_iomsg[0] = '\0';         /* cisis fatal() flag/msg */
309 memset(&fatal_jumper,0x00,sizeof(fatal_jumper));
310#endif
311
312 // set up the upper case charaters table
313 if (parm_isisuctab)
314  memcpy(isisuctab,parm_isisuctab,sizeof(isisuctab));
315 else
316  memcpy(isisuctab,init_isisuctab,sizeof(isisuctab));
317
318 isiswctot=0;
319
320 // set up the alphabetic charaters table
321 if (parm_isisactab)
322  memcpy(isisactab,parm_isisactab,sizeof(isisactab));
323 else
324  memcpy(isisactab,init_isisactab,sizeof(isisactab));
325 memset(isiswctab,0x00,sizeof(isiswctab));
326 for (isiswctot=0; isisactab[isiswctot]; isiswctot++)
327  isiswctab[isisactab[isiswctot]]=1;
328
329 // set up NXPAGES
330 if (parm_NXPAGESp)
331  for (int i=0; i <= MAXLIV; i++) NXPAGES[i]=parm_NXPAGESp[i];
332 else {
333  for (int i=0; i <= MAXLIV; i++) NXPAGES[i]=1;
334  NXPAGES[1]=TWORDN;
335 }
336
337 cidbx_init();
338 cirec_init();
339 citrm_init();
340 ciifl_init();
341 ciutl_init();
342} // end of constructor
343
344
345CISISX :: ~CISISX (void)
346{
347}
348
349DBXSTRU * CISISX :: getDBXSTRU(char *dbnamep)
350{
351 char *dbnp = (char *)((dbnamep == NULL) ? "_" : dbnamep);
352
353 return xdbxstorp(dbnp);
354}
355#endif // CICPP
Note: See TracBrowser for help on using the browser.