1 /* wvWare
2  * Copyright (C) Caolan McNamara, Dom Lachowicz, and others
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License
6  * as published by the Free Software Foundation; either version 2
7  * of the License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
17  * 02111-1307, USA.
18  */
19 
20 #ifdef HAVE_CONFIG_H
21 #include "config.h"
22 #endif
23 
24 #include <stdlib.h>
25 #include <stdio.h>
26 #include <string.h>
27 #include "wv.h"
28 
29 void
wvInitFIB(FIB * item)30 wvInitFIB (FIB * item)
31 {
32     item->wIdent = 0;
33     item->nFib = 0;
34     item->nProduct = 0;
35     item->lid = 0;
36     item->pnNext = 0;
37     item->fDot = 0;
38     item->fGlsy = 0;
39     item->fComplex = 0;
40     item->fHasPic = 0;
41     item->cQuickSaves = 0;
42     item->fEncrypted = 0;
43     item->fWhichTblStm = 0;
44     item->fReadOnlyRecommended = 0;
45     item->fWriteReservation = 0;
46     item->fExtChar = 0;
47     item->fLoadOverride = 0;
48     item->fFarEast = 0;
49     item->fCrypto = 0;
50     item->nFibBack = 0;
51     item->lKey = 0;
52     item->envr = 0;
53     item->fMac = 0;
54     item->fEmptySpecial = 0;
55     item->fLoadOverridePage = 0;
56     item->fFutureSavedUndo = 0;
57     item->fWord97Saved = 0;
58     item->fSpare0 = 0;
59     item->chse = 0;
60     item->chsTables = 0;
61     item->fcMin = 0;
62     item->fcMac = 0;
63     item->csw = 0;
64     item->wMagicCreated = 0;
65     item->wMagicRevised = 0;
66     item->wMagicCreatedPrivate = 0;
67     item->wMagicRevisedPrivate = 0;
68     item->pnFbpChpFirst_W6 = 0;
69     item->pnChpFirst_W6 = 0;
70     item->cpnBteChp_W6 = 0;
71     item->pnFbpPapFirst_W6 = 0;
72     item->pnPapFirst_W6 = 0;
73     item->cpnBtePap_W6 = 0;
74     item->pnFbpLvcFirst_W6 = 0;
75     item->pnLvcFirst_W6 = 0;
76     item->cpnBteLvc_W6 = 0;
77     item->lidFE = 0;
78     item->clw = 0;
79     item->cbMac = 0;
80     item->lProductCreated = 0;
81     item->lProductRevised = 0;
82     item->ccpText = 0;
83     item->ccpFtn = 0;
84     item->ccpHdr = 0;
85     item->ccpMcr = 0;
86     item->ccpAtn = 0;
87     item->ccpEdn = 0;
88     item->ccpTxbx = 0;
89     item->ccpHdrTxbx = 0;
90     item->pnFbpChpFirst = 0;
91     item->pnChpFirst = 0;
92     item->cpnBteChp = 0;
93     item->pnFbpPapFirst = 0;
94     item->pnPapFirst = 0;
95     item->cpnBtePap = 0;
96     item->pnFbpLvcFirst = 0;
97     item->pnLvcFirst = 0;
98     item->cpnBteLvc = 0;
99     item->fcIslandFirst = 0;
100     item->fcIslandLim = 0;
101     item->cfclcb = 0;
102     item->fcStshfOrig = 0;
103     item->lcbStshfOrig = 0;
104     item->fcStshf = 0;
105     item->lcbStshf = 0;
106     item->fcPlcffndRef = 0;
107     item->lcbPlcffndRef = 0;
108     item->fcPlcffndTxt = 0;
109     item->lcbPlcffndTxt = 0;
110     item->fcPlcfandRef = 0;
111     item->lcbPlcfandRef = 0;
112     item->fcPlcfandTxt = 0;
113     item->lcbPlcfandTxt = 0;
114     item->fcPlcfsed = 0;
115     item->lcbPlcfsed = 0;
116     item->fcPlcpad = 0;
117     item->lcbPlcpad = 0;
118     item->fcPlcfphe = 0;
119     item->lcbPlcfphe = 0;
120     item->fcSttbfglsy = 0;
121     item->lcbSttbfglsy = 0;
122     item->fcPlcfglsy = 0;
123     item->lcbPlcfglsy = 0;
124     item->fcPlcfhdd = 0;
125     item->lcbPlcfhdd = 0;
126     item->fcPlcfbteChpx = 0;
127     item->lcbPlcfbteChpx = 0;
128     item->fcPlcfbtePapx = 0;
129     item->lcbPlcfbtePapx = 0;
130     item->fcPlcfsea = 0;
131     item->lcbPlcfsea = 0;
132     item->fcSttbfffn = 0;
133     item->lcbSttbfffn = 0;
134     item->fcPlcffldMom = 0;
135     item->lcbPlcffldMom = 0;
136     item->fcPlcffldHdr = 0;
137     item->lcbPlcffldHdr = 0;
138     item->fcPlcffldFtn = 0;
139     item->lcbPlcffldFtn = 0;
140     item->fcPlcffldAtn = 0;
141     item->lcbPlcffldAtn = 0;
142     item->fcPlcffldMcr = 0;
143     item->lcbPlcffldMcr = 0;
144     item->fcSttbfbkmk = 0;
145     item->lcbSttbfbkmk = 0;
146     item->fcPlcfbkf = 0;
147     item->lcbPlcfbkf = 0;
148     item->fcPlcfbkl = 0;
149     item->lcbPlcfbkl = 0;
150     item->fcCmds = 0;
151     item->lcbCmds = 0;
152     item->fcPlcmcr = 0;
153     item->lcbPlcmcr = 0;
154     item->fcSttbfmcr = 0;
155     item->lcbSttbfmcr = 0;
156     item->fcPrDrvr = 0;
157     item->lcbPrDrvr = 0;
158     item->fcPrEnvPort = 0;
159     item->lcbPrEnvPort = 0;
160     item->fcPrEnvLand = 0;
161     item->lcbPrEnvLand = 0;
162     item->fcWss = 0;
163     item->lcbWss = 0;
164     item->fcDop = 0;
165     item->lcbDop = 0;
166     item->fcSttbfAssoc = 0;
167     item->lcbSttbfAssoc = 0;
168     item->fcClx = 0;
169     item->lcbClx = 0;
170     item->fcPlcfpgdFtn = 0;
171     item->lcbPlcfpgdFtn = 0;
172     item->fcAutosaveSource = 0;
173     item->lcbAutosaveSource = 0;
174     item->fcGrpXstAtnOwners = 0;
175     item->lcbGrpXstAtnOwners = 0;
176     item->fcSttbfAtnbkmk = 0;
177     item->lcbSttbfAtnbkmk = 0;
178     item->fcPlcdoaMom = 0;
179     item->lcbPlcdoaMom = 0;
180     item->fcPlcdoaHdr = 0;
181     item->lcbPlcdoaHdr = 0;
182     item->fcPlcspaMom = 0;
183     item->lcbPlcspaMom = 0;
184     item->fcPlcspaHdr = 0;
185     item->lcbPlcspaHdr = 0;
186     item->fcPlcfAtnbkf = 0;
187     item->lcbPlcfAtnbkf = 0;
188     item->fcPlcfAtnbkl = 0;
189     item->lcbPlcfAtnbkl = 0;
190     item->fcPms = 0;
191     item->lcbPms = 0;
192     item->fcFormFldSttbs = 0;
193     item->lcbFormFldSttbs = 0;
194     item->fcPlcfendRef = 0;
195     item->lcbPlcfendRef = 0;
196     item->fcPlcfendTxt = 0;
197     item->lcbPlcfendTxt = 0;
198     item->fcPlcffldEdn = 0;
199     item->lcbPlcffldEdn = 0;
200     item->fcPlcfpgdEdn = 0;
201     item->lcbPlcfpgdEdn = 0;
202     item->fcDggInfo = 0;
203     item->lcbDggInfo = 0;
204     item->fcSttbfRMark = 0;
205     item->lcbSttbfRMark = 0;
206     item->fcSttbCaption = 0;
207     item->lcbSttbCaption = 0;
208     item->fcSttbAutoCaption = 0;
209     item->lcbSttbAutoCaption = 0;
210     item->fcPlcfwkb = 0;
211     item->lcbPlcfwkb = 0;
212     item->fcPlcfspl = 0;
213     item->lcbPlcfspl = 0;
214     item->fcPlcftxbxTxt = 0;
215     item->lcbPlcftxbxTxt = 0;
216     item->fcPlcffldTxbx = 0;
217     item->lcbPlcffldTxbx = 0;
218     item->fcPlcfhdrtxbxTxt = 0;
219     item->lcbPlcfhdrtxbxTxt = 0;
220     item->fcPlcffldHdrTxbx = 0;
221     item->lcbPlcffldHdrTxbx = 0;
222     item->fcStwUser = 0;
223     item->lcbStwUser = 0;
224     item->fcSttbttmbd = 0;
225     item->cbSttbttmbd = 0;
226     item->fcUnused = 0;
227     item->lcbUnused = 0;
228     item->fcPgdMother = 0;
229     item->lcbPgdMother = 0;
230     item->fcBkdMother = 0;
231     item->lcbBkdMother = 0;
232     item->fcPgdFtn = 0;
233     item->lcbPgdFtn = 0;
234     item->fcBkdFtn = 0;
235     item->lcbBkdFtn = 0;
236     item->fcPgdEdn = 0;
237     item->lcbPgdEdn = 0;
238     item->fcBkdEdn = 0;
239     item->lcbBkdEdn = 0;
240     item->fcSttbfIntlFld = 0;
241     item->lcbSttbfIntlFld = 0;
242     item->fcRouteSlip = 0;
243     item->lcbRouteSlip = 0;
244     item->fcSttbSavedBy = 0;
245     item->lcbSttbSavedBy = 0;
246     item->fcSttbFnm = 0;
247     item->lcbSttbFnm = 0;
248     item->fcPlcfLst = 0;
249     item->lcbPlcfLst = 0;
250     item->fcPlfLfo = 0;
251     item->lcbPlfLfo = 0;
252     item->fcPlcftxbxBkd = 0;
253     item->lcbPlcftxbxBkd = 0;
254     item->fcPlcftxbxHdrBkd = 0;
255     item->lcbPlcftxbxHdrBkd = 0;
256     item->fcDocUndo = 0;
257     item->lcbDocUndo = 0;
258     item->fcRgbuse = 0;
259     item->lcbRgbuse = 0;
260     item->fcUsp = 0;
261     item->lcbUsp = 0;
262     item->fcUskf = 0;
263     item->lcbUskf = 0;
264     item->fcPlcupcRgbuse = 0;
265     item->lcbPlcupcRgbuse = 0;
266     item->fcPlcupcUsp = 0;
267     item->lcbPlcupcUsp = 0;
268     item->fcSttbGlsyStyle = 0;
269     item->lcbSttbGlsyStyle = 0;
270     item->fcPlgosl = 0;
271     item->lcbPlgosl = 0;
272     item->fcPlcocx = 0;
273     item->lcbPlcocx = 0;
274     item->fcPlcfbteLvc = 0;
275     item->lcbPlcfbteLvc = 0;
276     wvInitFILETIME (&item->ftModified);
277     item->fcPlcflvc = 0;
278     item->lcbPlcflvc = 0;
279     item->fcPlcasumy = 0;
280     item->lcbPlcasumy = 0;
281     item->fcPlcfgram = 0;
282     item->lcbPlcfgram = 0;
283     item->fcSttbListNames = 0;
284     item->lcbSttbListNames = 0;
285     item->fcSttbfUssr = 0;
286     item->lcbSttbfUssr = 0;
287 
288     /* Word 2 */
289     item->Spare = 0;
290     item->rgwSpare0[0] = 0;
291     item->rgwSpare0[1] = 0;
292     item->rgwSpare0[2] = 0;
293     item->fcSpare0 = 0;
294     item->fcSpare1 = 0;
295     item->fcSpare2 = 0;
296     item->fcSpare3 = 0;
297     item->ccpSpare0 = 0;
298     item->ccpSpare1 = 0;
299     item->ccpSpare2 = 0;
300     item->ccpSpare3 = 0;
301     item->fcPlcfpgd = 0;
302     item->cbPlcfpgd = 0;
303 
304     item->fcSpare5 = 0;
305     item->cbSpare5 = 0;
306     item->fcSpare6 = 0;
307     item->cbSpare6 = 0;
308     item->wSpare4 = 0;
309 }
310 
311 void
wvGetFIB(FIB * item,wvStream * fd)312 wvGetFIB (FIB * item, wvStream * fd)
313 {
314     U16 temp16;
315     U8 temp8;
316 
317     item->fEncrypted = 0;
318 
319     wvStream_goto (fd, 0);
320 #ifdef PURIFY
321     wvInitFIB (item);
322 #endif
323     item->wIdent = read_16ubit (fd);
324     item->nFib = read_16ubit (fd);
325 
326     if ((wvQuerySupported (item, NULL) == WORD2))
327       {
328 	  wvInitFIB (item);
329 	  wvStream_offset (fd, -4);
330 	  wvGetFIB2 (item, fd);
331 	  return;
332       }
333 
334     if ((wvQuerySupported (item, NULL) == WORD5)
335 	|| (wvQuerySupported (item, NULL) == WORD6)
336 	|| (wvQuerySupported (item, NULL) == WORD7))
337       {
338 	  wvInitFIB (item);
339 	  wvStream_offset (fd, -4);
340 	  wvGetFIB6 (item, fd);
341 	  return;
342       }
343 
344     item->nProduct = read_16ubit (fd);
345     item->lid = read_16ubit (fd);
346     wvTrace (("lid is %x\n", item->lid));
347     item->pnNext = (S16) read_16ubit (fd);
348     temp16 = read_16ubit (fd);
349     item->fDot = (temp16 & 0x0001);
350     item->fGlsy = (temp16 & 0x0002) >> 1;
351     item->fComplex = (temp16 & 0x0004) >> 2;
352     item->fHasPic = (temp16 & 0x0008) >> 3;
353     item->cQuickSaves = (temp16 & 0x00F0) >> 4;
354     item->fEncrypted = (temp16 & 0x0100) >> 8;
355     item->fWhichTblStm = (temp16 & 0x0200) >> 9;
356     item->fReadOnlyRecommended = (temp16 & 0x0400) >> 10;
357     item->fWriteReservation = (temp16 & 0x0800) >> 11;
358     item->fExtChar = (temp16 & 0x1000) >> 12;
359     wvTrace (("fExtChar is %d\n", item->fExtChar));
360     item->fLoadOverride = (temp16 & 0x2000) >> 13;
361     item->fFarEast = (temp16 & 0x4000) >> 14;
362     item->fCrypto = (temp16 & 0x8000) >> 15;
363     item->nFibBack = read_16ubit (fd);
364     item->lKey = read_32ubit (fd);
365     item->envr = read_8ubit (fd);
366     temp8 = read_8ubit (fd);
367     item->fMac = (temp8 & 0x01);
368     item->fEmptySpecial = (temp8 & 0x02) >> 1;
369     item->fLoadOverridePage = (temp8 & 0x04) >> 2;
370     item->fFutureSavedUndo = (temp8 & 0x08) >> 3;
371     item->fWord97Saved = (temp8 & 0x10) >> 4;
372     item->fSpare0 = (temp8 & 0xFE) >> 5;
373     item->chse = read_16ubit (fd);
374     item->chsTables = read_16ubit (fd);
375     item->fcMin = read_32ubit (fd);
376     item->fcMac = read_32ubit (fd);
377     item->csw = read_16ubit (fd);
378     item->wMagicCreated = read_16ubit (fd);
379     item->wMagicRevised = read_16ubit (fd);
380     item->wMagicCreatedPrivate = read_16ubit (fd);
381     item->wMagicRevisedPrivate = read_16ubit (fd);
382     item->pnFbpChpFirst_W6 = (S16) read_16ubit (fd);
383     item->pnChpFirst_W6 = (S16) read_16ubit (fd);
384     item->cpnBteChp_W6 = (S16) read_16ubit (fd);
385     item->pnFbpPapFirst_W6 = (S16) read_16ubit (fd);
386     item->pnPapFirst_W6 = (S16) read_16ubit (fd);
387     item->cpnBtePap_W6 = (S16) read_16ubit (fd);
388     item->pnFbpLvcFirst_W6 = (S16) read_16ubit (fd);
389     item->pnLvcFirst_W6 = (S16) read_16ubit (fd);
390     item->cpnBteLvc_W6 = (S16) read_16ubit (fd);
391     item->lidFE = (S16) read_16ubit (fd);
392     item->clw = read_16ubit (fd);
393     item->cbMac = (S32) read_32ubit (fd);
394     item->lProductCreated = read_32ubit (fd);
395     item->lProductRevised = read_32ubit (fd);
396     item->ccpText = read_32ubit (fd);
397     item->ccpFtn = (S32) read_32ubit (fd);
398     item->ccpHdr = (S32) read_32ubit (fd);
399     item->ccpMcr = (S32) read_32ubit (fd);
400     item->ccpAtn = (S32) read_32ubit (fd);
401     item->ccpEdn = (S32) read_32ubit (fd);
402     item->ccpTxbx = (S32) read_32ubit (fd);
403     item->ccpHdrTxbx = (S32) read_32ubit (fd);
404     item->pnFbpChpFirst = (S32) read_32ubit (fd);
405     item->pnChpFirst = (S32) read_32ubit (fd);
406     item->cpnBteChp = (S32) read_32ubit (fd);
407     item->pnFbpPapFirst = (S32) read_32ubit (fd);
408     item->pnPapFirst = (S32) read_32ubit (fd);
409     item->cpnBtePap = (S32) read_32ubit (fd);
410     item->pnFbpLvcFirst = (S32) read_32ubit (fd);
411     item->pnLvcFirst = (S32) read_32ubit (fd);
412     item->cpnBteLvc = (S32) read_32ubit (fd);
413     item->fcIslandFirst = (S32) read_32ubit (fd);
414     item->fcIslandLim = (S32) read_32ubit (fd);
415     item->cfclcb = read_16ubit (fd);
416     item->fcStshfOrig = (S32) read_32ubit (fd);
417     item->lcbStshfOrig = read_32ubit (fd);
418     item->fcStshf = (S32) read_32ubit (fd);
419     item->lcbStshf = read_32ubit (fd);
420 
421     item->fcPlcffndRef = (S32) read_32ubit (fd);
422     item->lcbPlcffndRef = read_32ubit (fd);
423     item->fcPlcffndTxt = (S32) read_32ubit (fd);
424     item->lcbPlcffndTxt = read_32ubit (fd);
425     item->fcPlcfandRef = (S32) read_32ubit (fd);
426     item->lcbPlcfandRef = read_32ubit (fd);
427     item->fcPlcfandTxt = (S32) read_32ubit (fd);
428     item->lcbPlcfandTxt = read_32ubit (fd);
429     item->fcPlcfsed = (S32) read_32ubit (fd);
430     item->lcbPlcfsed = read_32ubit (fd);
431     item->fcPlcpad = (S32) read_32ubit (fd);
432     item->lcbPlcpad = read_32ubit (fd);
433     item->fcPlcfphe = (S32) read_32ubit (fd);
434     item->lcbPlcfphe = read_32ubit (fd);
435     item->fcSttbfglsy = (S32) read_32ubit (fd);
436     item->lcbSttbfglsy = read_32ubit (fd);
437     item->fcPlcfglsy = (S32) read_32ubit (fd);
438     item->lcbPlcfglsy = read_32ubit (fd);
439     item->fcPlcfhdd = (S32) read_32ubit (fd);
440     item->lcbPlcfhdd = read_32ubit (fd);
441     item->fcPlcfbteChpx = (S32) read_32ubit (fd);
442     item->lcbPlcfbteChpx = read_32ubit (fd);
443     item->fcPlcfbtePapx = (S32) read_32ubit (fd);
444     item->lcbPlcfbtePapx = read_32ubit (fd);
445     item->fcPlcfsea = (S32) read_32ubit (fd);
446     item->lcbPlcfsea = read_32ubit (fd);
447     item->fcSttbfffn = (S32) read_32ubit (fd);
448     item->lcbSttbfffn = read_32ubit (fd);
449     item->fcPlcffldMom = (S32) read_32ubit (fd);
450     item->lcbPlcffldMom = read_32ubit (fd);
451     item->fcPlcffldHdr = (S32) read_32ubit (fd);
452     item->lcbPlcffldHdr = read_32ubit (fd);
453     item->fcPlcffldFtn = (S32) read_32ubit (fd);
454     item->lcbPlcffldFtn = read_32ubit (fd);
455     item->fcPlcffldAtn = (S32) read_32ubit (fd);
456     item->lcbPlcffldAtn = read_32ubit (fd);
457     item->fcPlcffldMcr = (S32) read_32ubit (fd);
458     item->lcbPlcffldMcr = read_32ubit (fd);
459     item->fcSttbfbkmk = (S32) read_32ubit (fd);
460     item->lcbSttbfbkmk = read_32ubit (fd);
461     item->fcPlcfbkf = (S32) read_32ubit (fd);
462     item->lcbPlcfbkf = read_32ubit (fd);
463     item->fcPlcfbkl = (S32) read_32ubit (fd);
464     item->lcbPlcfbkl = read_32ubit (fd);
465     item->fcCmds = (S32) read_32ubit (fd);
466     item->lcbCmds = read_32ubit (fd);
467     item->fcPlcmcr = (S32) read_32ubit (fd);
468     item->lcbPlcmcr = read_32ubit (fd);
469     item->fcSttbfmcr = (S32) read_32ubit (fd);
470     item->lcbSttbfmcr = read_32ubit (fd);
471     item->fcPrDrvr = (S32) read_32ubit (fd);
472     item->lcbPrDrvr = read_32ubit (fd);
473     item->fcPrEnvPort = (S32) read_32ubit (fd);
474     item->lcbPrEnvPort = read_32ubit (fd);
475     item->fcPrEnvLand = (S32) read_32ubit (fd);
476     item->lcbPrEnvLand = read_32ubit (fd);
477     item->fcWss = (S32) read_32ubit (fd);
478     item->lcbWss = read_32ubit (fd);
479     item->fcDop = (S32) read_32ubit (fd);
480     item->lcbDop = read_32ubit (fd);
481     item->fcSttbfAssoc = (S32) read_32ubit (fd);
482     item->lcbSttbfAssoc = read_32ubit (fd);
483     item->fcClx = (S32) read_32ubit (fd);
484     item->lcbClx = read_32ubit (fd);
485     item->fcPlcfpgdFtn = (S32) read_32ubit (fd);
486     item->lcbPlcfpgdFtn = read_32ubit (fd);
487     item->fcAutosaveSource = (S32) read_32ubit (fd);
488     item->lcbAutosaveSource = read_32ubit (fd);
489     item->fcGrpXstAtnOwners = (S32) read_32ubit (fd);
490     item->lcbGrpXstAtnOwners = read_32ubit (fd);
491     item->fcSttbfAtnbkmk = (S32) read_32ubit (fd);
492     item->lcbSttbfAtnbkmk = read_32ubit (fd);
493     item->fcPlcdoaMom = (S32) read_32ubit (fd);
494     item->lcbPlcdoaMom = read_32ubit (fd);
495     item->fcPlcdoaHdr = (S32) read_32ubit (fd);
496     item->lcbPlcdoaHdr = read_32ubit (fd);
497     item->fcPlcspaMom = (S32) read_32ubit (fd);
498     item->lcbPlcspaMom = read_32ubit (fd);
499     item->fcPlcspaHdr = (S32) read_32ubit (fd);
500     item->lcbPlcspaHdr = read_32ubit (fd);
501     item->fcPlcfAtnbkf = (S32) read_32ubit (fd);
502     item->lcbPlcfAtnbkf = read_32ubit (fd);
503     item->fcPlcfAtnbkl = (S32) read_32ubit (fd);
504     item->lcbPlcfAtnbkl = read_32ubit (fd);
505     item->fcPms = (S32) read_32ubit (fd);
506     item->lcbPms = read_32ubit (fd);
507     item->fcFormFldSttbs = (S32) read_32ubit (fd);
508     item->lcbFormFldSttbs = read_32ubit (fd);
509     item->fcPlcfendRef = (S32) read_32ubit (fd);
510     item->lcbPlcfendRef = read_32ubit (fd);
511     item->fcPlcfendTxt = (S32) read_32ubit (fd);
512     item->lcbPlcfendTxt = read_32ubit (fd);
513     item->fcPlcffldEdn = (S32) read_32ubit (fd);
514     item->lcbPlcffldEdn = read_32ubit (fd);
515     item->fcPlcfpgdEdn = (S32) read_32ubit (fd);
516     item->lcbPlcfpgdEdn = read_32ubit (fd);
517     item->fcDggInfo = (S32) read_32ubit (fd);
518     item->lcbDggInfo = read_32ubit (fd);
519     item->fcSttbfRMark = (S32) read_32ubit (fd);
520     item->lcbSttbfRMark = read_32ubit (fd);
521     item->fcSttbCaption = (S32) read_32ubit (fd);
522     item->lcbSttbCaption = read_32ubit (fd);
523     item->fcSttbAutoCaption = (S32) read_32ubit (fd);
524     item->lcbSttbAutoCaption = read_32ubit (fd);
525     item->fcPlcfwkb = (S32) read_32ubit (fd);
526     item->lcbPlcfwkb = read_32ubit (fd);
527     item->fcPlcfspl = (S32) read_32ubit (fd);
528     item->lcbPlcfspl = read_32ubit (fd);
529     item->fcPlcftxbxTxt = (S32) read_32ubit (fd);
530     item->lcbPlcftxbxTxt = read_32ubit (fd);
531     item->fcPlcffldTxbx = (S32) read_32ubit (fd);
532     item->lcbPlcffldTxbx = read_32ubit (fd);
533     item->fcPlcfhdrtxbxTxt = (S32) read_32ubit (fd);
534     item->lcbPlcfhdrtxbxTxt = read_32ubit (fd);
535     item->fcPlcffldHdrTxbx = (S32) read_32ubit (fd);
536     item->lcbPlcffldHdrTxbx = read_32ubit (fd);
537     item->fcStwUser = (S32) read_32ubit (fd);
538     item->lcbStwUser = read_32ubit (fd);
539     item->fcSttbttmbd = (S32) read_32ubit (fd);
540     item->cbSttbttmbd = read_32ubit (fd);
541     item->fcUnused = (S32) read_32ubit (fd);
542     item->lcbUnused = read_32ubit (fd);
543     item->fcPgdMother = (S32) read_32ubit (fd);
544     item->lcbPgdMother = read_32ubit (fd);
545     item->fcBkdMother = (S32) read_32ubit (fd);
546     item->lcbBkdMother = read_32ubit (fd);
547     item->fcPgdFtn = (S32) read_32ubit (fd);
548     item->lcbPgdFtn = read_32ubit (fd);
549     item->fcBkdFtn = (S32) read_32ubit (fd);
550     item->lcbBkdFtn = read_32ubit (fd);
551     item->fcPgdEdn = (S32) read_32ubit (fd);
552     item->lcbPgdEdn = read_32ubit (fd);
553     item->fcBkdEdn = (S32) read_32ubit (fd);
554     item->lcbBkdEdn = read_32ubit (fd);
555     item->fcSttbfIntlFld = (S32) read_32ubit (fd);
556     item->lcbSttbfIntlFld = read_32ubit (fd);
557     item->fcRouteSlip = (S32) read_32ubit (fd);
558     item->lcbRouteSlip = read_32ubit (fd);
559     item->fcSttbSavedBy = (S32) read_32ubit (fd);
560     item->lcbSttbSavedBy = read_32ubit (fd);
561     item->fcSttbFnm = (S32) read_32ubit (fd);
562     item->lcbSttbFnm = read_32ubit (fd);
563     item->fcPlcfLst = (S32) read_32ubit (fd);
564     item->lcbPlcfLst = read_32ubit (fd);
565     item->fcPlfLfo = (S32) read_32ubit (fd);
566     item->lcbPlfLfo = read_32ubit (fd);
567     item->fcPlcftxbxBkd = (S32) read_32ubit (fd);
568     item->lcbPlcftxbxBkd = read_32ubit (fd);
569     item->fcPlcftxbxHdrBkd = (S32) read_32ubit (fd);
570     item->lcbPlcftxbxHdrBkd = read_32ubit (fd);
571     item->fcDocUndo = (S32) read_32ubit (fd);
572     item->lcbDocUndo = read_32ubit (fd);
573     item->fcRgbuse = (S32) read_32ubit (fd);
574     item->lcbRgbuse = read_32ubit (fd);
575     item->fcUsp = (S32) read_32ubit (fd);
576     item->lcbUsp = read_32ubit (fd);
577     item->fcUskf = (S32) read_32ubit (fd);
578     item->lcbUskf = read_32ubit (fd);
579     item->fcPlcupcRgbuse = (S32) read_32ubit (fd);
580     item->lcbPlcupcRgbuse = read_32ubit (fd);
581     item->fcPlcupcUsp = (S32) read_32ubit (fd);
582     item->lcbPlcupcUsp = read_32ubit (fd);
583     item->fcSttbGlsyStyle = (S32) read_32ubit (fd);
584     item->lcbSttbGlsyStyle = read_32ubit (fd);
585     item->fcPlgosl = (S32) read_32ubit (fd);
586     item->lcbPlgosl = read_32ubit (fd);
587     item->fcPlcocx = (S32) read_32ubit (fd);
588     item->lcbPlcocx = read_32ubit (fd);
589     item->fcPlcfbteLvc = (S32) read_32ubit (fd);
590     item->lcbPlcfbteLvc = read_32ubit (fd);
591     wvGetFILETIME (&(item->ftModified), fd);
592     item->fcPlcflvc = (S32) read_32ubit (fd);
593     item->lcbPlcflvc = read_32ubit (fd);
594     item->fcPlcasumy = (S32) read_32ubit (fd);
595     item->lcbPlcasumy = read_32ubit (fd);
596     item->fcPlcfgram = (S32) read_32ubit (fd);
597     item->lcbPlcfgram = read_32ubit (fd);
598     item->fcSttbListNames = (S32) read_32ubit (fd);
599     item->lcbSttbListNames = read_32ubit (fd);
600     item->fcSttbfUssr = (S32) read_32ubit (fd);
601     item->lcbSttbfUssr = read_32ubit (fd);
602 }
603 
604 wvStream *
wvWhichTableStream(FIB * fib,wvParseStruct * ps)605 wvWhichTableStream (FIB * fib, wvParseStruct * ps)
606 {
607     wvStream *ret;
608 
609     if ((wvQuerySupported (fib, NULL) & 0x7fff) == WORD8)
610       {
611 	  if (fib->fWhichTblStm)
612 	    {
613 		wvTrace (("1Table\n"));
614 		ret = ps->tablefd1;
615 		if (ret == NULL)
616 		  {
617 		      wvError (
618 			       ("!!, the FIB lied to us, (told us to use the 1Table) making a heroic effort to use the other table stream, hold on tight\n"));
619 		      ret = ps->tablefd0;
620 		  }
621 	    }
622 	  else
623 	    {
624 		wvTrace (("0Table\n"));
625 		ret = ps->tablefd0;
626 		if (ret == NULL)
627 		  {
628 		      wvError (
629 			       ("!!, the FIB lied to us, (told us to use the 0Table) making a heroic effort to use the other table stream, hold on tight\n"));
630 		      ret = ps->tablefd1;
631 		  }
632 	    }
633       }
634     else			/* word 7- */
635 	ret = ps->mainfd;
636     return (ret);
637 }
638 
639 
640 wvVersion
wvQuerySupported(FIB * fib,int * reason)641 wvQuerySupported (FIB * fib, int *reason)
642 {
643     int ret = WORD8;
644 
645     if (fib->wIdent == 0x37FE)
646 	ret = WORD5;
647     else
648       {
649 	  /*begin from microsofts kb q 40 */
650 	  if (fib->nFib < 101)
651 	    {
652 		if (reason)
653 		    *reason = 1;
654 		ret = WORD2;
655 	    }
656 	  else
657 	    {
658 		switch (fib->nFib)
659 		  {
660 		  case 101:
661 		      if (reason)
662 			  *reason = 2;
663 		      ret = WORD6;
664 		      break;	/* I'm pretty sure we should break here, Jamie. */
665 		  case 103:
666 		  case 104:
667 		      if (reason)
668 			  *reason = 3;
669 		      ret = WORD7;
670 		      break;	/* I'm pretty sure we should break here, Jamie. */
671 		  default:
672 		      break;
673 		  }
674 	    }
675 	  /*end from microsofts kb q 40 */
676       }
677     wvTrace (("RET is %d\n", ret));
678     if (fib->fEncrypted)
679       {
680 	  if (reason)
681 	      *reason = 4;
682 	  ret |= 0x8000;
683       }
684     return (ret);
685 }
686 
687 void
wvGetFIB2(FIB * item,wvStream * fd)688 wvGetFIB2 (FIB * item, wvStream * fd)
689 {
690     U16 temp16 = 0;
691 
692     item->wIdent = read_16ubit (fd);
693     item->nFib = read_16ubit (fd);
694 
695     item->nProduct = read_16ubit (fd);
696     item->lid = read_16ubit (fd);
697     wvTrace (("lid is %x\n", item->lid));
698     item->pnNext = (S16) read_16ubit (fd);
699     temp16 = read_16ubit (fd);
700 
701     item->fDot = (temp16 & 0x0001);
702     item->fGlsy = (temp16 & 0x0002) >> 1;
703     item->fComplex = (temp16 & 0x0004) >> 2;
704     item->fHasPic = (temp16 & 0x0008) >> 3;
705     item->cQuickSaves = (temp16 & 0x00F0) >> 4;
706     item->fEncrypted = (temp16 & 0x0100) >> 8;
707     item->fWhichTblStm = 0;	/* Unused from here on */
708     item->fReadOnlyRecommended = 0;
709     item->fWriteReservation = 0;
710     item->fExtChar = 0;
711     item->fLoadOverride = 0;
712     item->fFarEast = 0;
713     item->fCrypto = 0;
714 
715     item->nFibBack = read_16ubit (fd);
716     wvTrace (("nFibBack is %d\n", item->nFibBack));
717 
718     item->Spare = read_32ubit (fd);	/* A spare for W2 */
719     item->rgwSpare0[0] = read_16ubit (fd);
720     item->rgwSpare0[1] = read_16ubit (fd);
721     item->rgwSpare0[2] = read_16ubit (fd);
722     item->fcMin = read_32ubit (fd);	/* These appear correct MV 29.8.2000 */
723     item->fcMac = read_32ubit (fd);
724     wvTrace (("fc from %d to %d\n", item->fcMin, item->fcMac));
725 
726     item->cbMac = read_32ubit (fd);	/* Last byte file position plus one. */
727 
728     item->fcSpare0 = read_32ubit (fd);
729     item->fcSpare1 = read_32ubit (fd);
730     item->fcSpare2 = read_32ubit (fd);
731     item->fcSpare3 = read_32ubit (fd);
732 
733     item->ccpText = read_32ubit (fd);
734     wvTrace (("length %d == %d\n", item->fcMac - item->fcMin, item->ccpText));
735 
736     item->ccpFtn = (S32) read_32ubit (fd);
737     item->ccpHdr = (S32) read_32ubit (fd);
738     item->ccpMcr = (S32) read_32ubit (fd);
739     item->ccpAtn = (S32) read_32ubit (fd);
740     item->ccpSpare0 = (S32) read_32ubit (fd);
741     item->ccpSpare1 = (S32) read_32ubit (fd);
742     item->ccpSpare2 = (S32) read_32ubit (fd);
743     item->ccpSpare3 = (S32) read_32ubit (fd);
744 
745     item->fcStshfOrig = read_32ubit (fd);
746     item->lcbStshfOrig = (S32) read_16ubit (fd);
747     item->fcStshf = read_32ubit (fd);
748     item->lcbStshf = (S32) read_16ubit (fd);
749     item->fcPlcffndRef = read_32ubit (fd);
750     item->lcbPlcffndRef = (S32) read_16ubit (fd);
751     item->fcPlcffndTxt = read_32ubit (fd);
752     item->lcbPlcffndTxt = (S32) read_16ubit (fd);
753     item->fcPlcfandRef = read_32ubit (fd);
754     item->lcbPlcfandRef = (S32) read_16ubit (fd);
755     item->fcPlcfandTxt = read_32ubit (fd);
756     item->lcbPlcfandTxt = (S32) read_16ubit (fd);
757     item->fcPlcfsed = read_32ubit (fd);
758     item->lcbPlcfsed = (S32) read_16ubit (fd);
759     item->fcPlcfpgd = read_32ubit (fd);
760     item->cbPlcfpgd = read_16ubit (fd);
761     item->fcPlcfphe = read_32ubit (fd);
762     item->lcbPlcfphe = (S32) read_16ubit (fd);
763     item->fcPlcfglsy = read_32ubit (fd);
764     item->lcbPlcfglsy = (S32) read_16ubit (fd);
765     item->fcPlcfhdd = read_32ubit (fd);
766     item->lcbPlcfhdd = (S32) read_16ubit (fd);
767     item->fcPlcfbteChpx = read_32ubit (fd);
768     item->lcbPlcfbteChpx = (S32) read_16ubit (fd);
769     item->fcPlcfbtePapx = read_32ubit (fd);
770     item->lcbPlcfbtePapx = (S32) read_16ubit (fd);
771     item->fcPlcfsea = read_32ubit (fd);
772     item->lcbPlcfsea = (S32) read_16ubit (fd);
773     item->fcSttbfffn = read_32ubit (fd);
774     item->lcbSttbfffn = (S32) read_16ubit (fd);
775     item->fcPlcffldMom = read_32ubit (fd);
776     item->lcbPlcffldMom = (S32) read_16ubit (fd);
777     item->fcPlcffldHdr = read_32ubit (fd);
778     item->lcbPlcffldHdr = (S32) read_16ubit (fd);
779     item->fcPlcffldFtn = read_32ubit (fd);
780     item->lcbPlcffldFtn = (S32) read_16ubit (fd);
781     item->fcPlcffldAtn = read_32ubit (fd);
782     item->lcbPlcffldAtn = (S32) read_16ubit (fd);
783     item->fcPlcffldMcr = read_32ubit (fd);
784     item->lcbPlcffldMcr = (S32) read_16ubit (fd);
785     item->fcSttbfbkmk = read_32ubit (fd);
786     item->lcbSttbfbkmk = (S32) read_16ubit (fd);
787     item->fcPlcfbkf = read_32ubit (fd);
788     item->lcbPlcfbkf = (S32) read_16ubit (fd);
789     item->fcPlcfbkl = read_32ubit (fd);
790     item->lcbPlcfbkl = (S32) read_16ubit (fd);
791     item->fcCmds = read_32ubit (fd);
792     item->lcbCmds = (S32) read_16ubit (fd);
793     item->fcPlcmcr = read_32ubit (fd);
794     item->lcbPlcmcr = (S32) read_16ubit (fd);
795     item->fcSttbfmcr = read_32ubit (fd);
796     item->lcbSttbfmcr = (S32) read_16ubit (fd);
797     item->fcPrDrvr = read_32ubit (fd);
798     item->lcbPrDrvr = (S32) read_16ubit (fd);
799     item->fcPrEnvPort = read_32ubit (fd);
800     item->lcbPrEnvPort = (S32) read_16ubit (fd);
801     item->fcPrEnvLand = read_32ubit (fd);
802     item->lcbPrEnvLand = (S32) read_16ubit (fd);
803     item->fcWss = read_32ubit (fd);
804     item->lcbWss = (S32) read_16ubit (fd);
805     item->fcDop = read_32ubit (fd);
806     item->lcbDop = (S32) read_16ubit (fd);
807     item->fcSttbfAssoc = read_32ubit (fd);
808     item->lcbSttbfAssoc = (S32) read_16ubit (fd);
809     item->fcClx = read_32ubit (fd);
810     item->lcbClx = (S32) read_16ubit (fd);
811     item->fcPlcfpgdFtn = read_32ubit (fd);
812     item->lcbPlcfpgdFtn = (S32) read_16ubit (fd);
813     item->fcAutosaveSource = read_32ubit (fd);
814     item->lcbAutosaveSource = (S32) read_16ubit (fd);
815     item->fcSpare5 = read_32ubit (fd);
816     item->cbSpare5 = read_16ubit (fd);
817     item->fcSpare6 = read_32ubit (fd);
818     item->cbSpare6 = read_16ubit (fd);
819     item->wSpare4 = read_16ubit (fd);
820     item->pnChpFirst = read_16ubit (fd);
821     item->pnPapFirst = read_16ubit (fd);
822     item->cpnBteChp = read_16ubit (fd);
823     item->cpnBtePap = read_16ubit (fd);
824 
825 }
826 
827 void
wvGetFIB6(FIB * item,wvStream * fd)828 wvGetFIB6 (FIB * item, wvStream * fd)
829 {
830     U16 temp16;
831     U8 temp8;
832 
833     item->wIdent = read_16ubit (fd);
834     item->nFib = read_16ubit (fd);
835 
836     item->nProduct = read_16ubit (fd);
837     item->lid = read_16ubit (fd);
838     wvTrace (("lid is %x\n", item->lid));
839     item->pnNext = (S16) read_16ubit (fd);
840     temp16 = read_16ubit (fd);
841 
842     item->fDot = (temp16 & 0x0001);
843     item->fGlsy = (temp16 & 0x0002) >> 1;
844     item->fComplex = (temp16 & 0x0004) >> 2;
845     item->fHasPic = (temp16 & 0x0008) >> 3;
846     item->cQuickSaves = (temp16 & 0x00F0) >> 4;
847     item->fEncrypted = (temp16 & 0x0100) >> 8;
848     item->fWhichTblStm = 0;	/* word 6 files only have one table stream */
849     item->fReadOnlyRecommended = (temp16 & 0x0400) >> 10;
850     item->fWriteReservation = (temp16 & 0x0800) >> 11;
851     item->fExtChar = (temp16 & 0x1000) >> 12;
852     wvTrace (("fExtChar is %d\n", item->fExtChar));
853     item->fLoadOverride = 0;
854     item->fFarEast = 0;
855     item->fCrypto = 0;
856     item->nFibBack = read_16ubit (fd);
857     item->lKey = read_32ubit (fd);
858     item->envr = read_8ubit (fd);
859     temp8 = read_8ubit (fd);
860     item->fMac = 0;
861     item->fEmptySpecial = 0;
862     item->fLoadOverridePage = 0;
863     item->fFutureSavedUndo = 0;
864     item->fWord97Saved = 0;
865     item->fSpare0 = 0;
866     item->chse = read_16ubit (fd);
867     item->chsTables = read_16ubit (fd);
868     item->fcMin = read_32ubit (fd);
869     item->fcMac = read_32ubit (fd);
870 
871     item->csw = 14;
872     item->wMagicCreated = 0xCA0;	/*this is the unique id of the creater, so its me :-) */
873 
874     item->cbMac = read_32ubit (fd);
875 
876     read_16ubit (fd);
877     read_16ubit (fd);
878     read_16ubit (fd);
879     read_16ubit (fd);
880     read_16ubit (fd);
881     read_16ubit (fd);
882     read_16ubit (fd);
883     read_16ubit (fd);
884 
885     item->ccpText = read_32ubit (fd);
886     item->ccpFtn = (S32) read_32ubit (fd);
887     item->ccpHdr = (S32) read_32ubit (fd);
888     item->ccpMcr = (S32) read_32ubit (fd);
889     item->ccpAtn = (S32) read_32ubit (fd);
890     item->ccpEdn = (S32) read_32ubit (fd);
891     item->ccpTxbx = (S32) read_32ubit (fd);
892     item->ccpHdrTxbx = (S32) read_32ubit (fd);
893 
894     read_32ubit (fd);
895 
896     item->fcStshfOrig = (S32) read_32ubit (fd);
897     item->lcbStshfOrig = read_32ubit (fd);
898     item->fcStshf = (S32) read_32ubit (fd);
899     item->lcbStshf = read_32ubit (fd);
900     item->fcPlcffndRef = (S32) read_32ubit (fd);
901     item->lcbPlcffndRef = read_32ubit (fd);
902     item->fcPlcffndTxt = (S32) read_32ubit (fd);
903     item->lcbPlcffndTxt = read_32ubit (fd);
904     item->fcPlcfandRef = (S32) read_32ubit (fd);
905     item->lcbPlcfandRef = read_32ubit (fd);
906     item->fcPlcfandTxt = (S32) read_32ubit (fd);
907     item->lcbPlcfandTxt = read_32ubit (fd);
908     item->fcPlcfsed = (S32) read_32ubit (fd);
909     item->lcbPlcfsed = read_32ubit (fd);
910     item->fcPlcpad = (S32) read_32ubit (fd);
911     item->lcbPlcpad = read_32ubit (fd);
912     item->fcPlcfphe = (S32) read_32ubit (fd);
913     item->lcbPlcfphe = read_32ubit (fd);
914     item->fcSttbfglsy = (S32) read_32ubit (fd);
915     item->lcbSttbfglsy = read_32ubit (fd);
916     item->fcPlcfglsy = (S32) read_32ubit (fd);
917     item->lcbPlcfglsy = read_32ubit (fd);
918     item->fcPlcfhdd = (S32) read_32ubit (fd);
919     item->lcbPlcfhdd = read_32ubit (fd);
920     item->fcPlcfbteChpx = (S32) read_32ubit (fd);
921     item->lcbPlcfbteChpx = read_32ubit (fd);
922     item->fcPlcfbtePapx = (S32) read_32ubit (fd);
923     item->lcbPlcfbtePapx = read_32ubit (fd);
924     item->fcPlcfsea = (S32) read_32ubit (fd);
925     item->lcbPlcfsea = read_32ubit (fd);
926     item->fcSttbfffn = (S32) read_32ubit (fd);
927     item->lcbSttbfffn = read_32ubit (fd);
928     item->fcPlcffldMom = (S32) read_32ubit (fd);
929     item->lcbPlcffldMom = read_32ubit (fd);
930     item->fcPlcffldHdr = (S32) read_32ubit (fd);
931     item->lcbPlcffldHdr = read_32ubit (fd);
932     item->fcPlcffldFtn = (S32) read_32ubit (fd);
933     item->lcbPlcffldFtn = read_32ubit (fd);
934     item->fcPlcffldAtn = (S32) read_32ubit (fd);
935     item->lcbPlcffldAtn = read_32ubit (fd);
936     item->fcPlcffldMcr = (S32) read_32ubit (fd);
937     item->lcbPlcffldMcr = read_32ubit (fd);
938     item->fcSttbfbkmk = (S32) read_32ubit (fd);
939     item->lcbSttbfbkmk = read_32ubit (fd);
940     item->fcPlcfbkf = (S32) read_32ubit (fd);
941     item->lcbPlcfbkf = read_32ubit (fd);
942     item->fcPlcfbkl = (S32) read_32ubit (fd);
943     item->lcbPlcfbkl = read_32ubit (fd);
944     item->fcCmds = (S32) read_32ubit (fd);
945     item->lcbCmds = read_32ubit (fd);
946     item->fcPlcmcr = (S32) read_32ubit (fd);
947     item->lcbPlcmcr = read_32ubit (fd);
948     item->fcSttbfmcr = (S32) read_32ubit (fd);
949     item->lcbSttbfmcr = read_32ubit (fd);
950     item->fcPrDrvr = (S32) read_32ubit (fd);
951     item->lcbPrDrvr = read_32ubit (fd);
952     item->fcPrEnvPort = (S32) read_32ubit (fd);
953     item->lcbPrEnvPort = read_32ubit (fd);
954     item->fcPrEnvLand = (S32) read_32ubit (fd);
955     item->lcbPrEnvLand = read_32ubit (fd);
956     item->fcWss = (S32) read_32ubit (fd);
957     item->lcbWss = read_32ubit (fd);
958     item->fcDop = (S32) read_32ubit (fd);
959     item->lcbDop = read_32ubit (fd);
960     item->fcSttbfAssoc = (S32) read_32ubit (fd);
961     item->lcbSttbfAssoc = read_32ubit (fd);
962     item->fcClx = (S32) read_32ubit (fd);
963     item->lcbClx = read_32ubit (fd);
964     item->fcPlcfpgdFtn = (S32) read_32ubit (fd);
965     item->lcbPlcfpgdFtn = read_32ubit (fd);
966     item->fcAutosaveSource = (S32) read_32ubit (fd);
967     item->lcbAutosaveSource = read_32ubit (fd);
968     item->fcGrpXstAtnOwners = (S32) read_32ubit (fd);
969     item->lcbGrpXstAtnOwners = read_32ubit (fd);
970     item->fcSttbfAtnbkmk = (S32) read_32ubit (fd);
971     item->lcbSttbfAtnbkmk = read_32ubit (fd);
972 
973     read_16ubit (fd);
974 
975     item->pnChpFirst = (S32) read_16ubit (fd);
976     item->pnPapFirst = (S32) read_16ubit (fd);
977     item->cpnBteChp = (S32) read_16ubit (fd);
978     item->cpnBtePap = (S32) read_16ubit (fd);
979     item->fcPlcdoaMom = (S32) read_32ubit (fd);
980     item->lcbPlcdoaMom = read_32ubit (fd);
981     item->fcPlcdoaHdr = (S32) read_32ubit (fd);
982     item->lcbPlcdoaHdr = read_32ubit (fd);
983 
984     read_32ubit (fd);
985     read_32ubit (fd);
986     read_32ubit (fd);
987     read_32ubit (fd);
988 
989     item->fcPlcfAtnbkf = (S32) read_32ubit (fd);
990     item->lcbPlcfAtnbkf = read_32ubit (fd);
991     item->fcPlcfAtnbkl = (S32) read_32ubit (fd);
992     item->lcbPlcfAtnbkl = read_32ubit (fd);
993     item->fcPms = (S32) read_32ubit (fd);
994     item->lcbPms = read_32ubit (fd);
995     item->fcFormFldSttbs = (S32) read_32ubit (fd);
996     item->lcbFormFldSttbs = read_32ubit (fd);
997     item->fcPlcfendRef = (S32) read_32ubit (fd);
998     item->lcbPlcfendRef = read_32ubit (fd);
999     item->fcPlcfendTxt = (S32) read_32ubit (fd);
1000     item->lcbPlcfendTxt = read_32ubit (fd);
1001     item->fcPlcffldEdn = (S32) read_32ubit (fd);
1002     item->lcbPlcffldEdn = read_32ubit (fd);
1003     item->fcPlcfpgdEdn = (S32) read_32ubit (fd);
1004     item->lcbPlcfpgdEdn = read_32ubit (fd);
1005 
1006     read_32ubit (fd);
1007     read_32ubit (fd);
1008 
1009     item->fcSttbfRMark = (S32) read_32ubit (fd);
1010     item->lcbSttbfRMark = read_32ubit (fd);
1011     item->fcSttbCaption = (S32) read_32ubit (fd);
1012     item->lcbSttbCaption = read_32ubit (fd);
1013     item->fcSttbAutoCaption = (S32) read_32ubit (fd);
1014     item->lcbSttbAutoCaption = read_32ubit (fd);
1015     item->fcPlcfwkb = (S32) read_32ubit (fd);
1016     item->lcbPlcfwkb = read_32ubit (fd);
1017 
1018     read_32ubit (fd);
1019     read_32ubit (fd);
1020 
1021 
1022     item->fcPlcftxbxTxt = (S32) read_32ubit (fd);
1023     item->lcbPlcftxbxTxt = read_32ubit (fd);
1024     item->fcPlcffldTxbx = (S32) read_32ubit (fd);
1025     item->lcbPlcffldTxbx = read_32ubit (fd);
1026     item->fcPlcfhdrtxbxTxt = (S32) read_32ubit (fd);
1027     item->lcbPlcfhdrtxbxTxt = read_32ubit (fd);
1028     item->fcPlcffldHdrTxbx = (S32) read_32ubit (fd);
1029     item->lcbPlcffldHdrTxbx = read_32ubit (fd);
1030     item->fcStwUser = (S32) read_32ubit (fd);
1031     item->lcbStwUser = read_32ubit (fd);
1032     item->fcSttbttmbd = (S32) read_32ubit (fd);
1033     item->cbSttbttmbd = read_32ubit (fd);
1034     item->fcUnused = (S32) read_32ubit (fd);
1035     item->lcbUnused = read_32ubit (fd);
1036     item->fcPgdMother = (S32) read_32ubit (fd);
1037     item->lcbPgdMother = read_32ubit (fd);
1038     item->fcBkdMother = (S32) read_32ubit (fd);
1039     item->lcbBkdMother = read_32ubit (fd);
1040     item->fcPgdFtn = (S32) read_32ubit (fd);
1041     item->lcbPgdFtn = read_32ubit (fd);
1042     item->fcBkdFtn = (S32) read_32ubit (fd);
1043     item->lcbBkdFtn = read_32ubit (fd);
1044     item->fcPgdEdn = (S32) read_32ubit (fd);
1045     item->lcbPgdEdn = read_32ubit (fd);
1046     item->fcBkdEdn = (S32) read_32ubit (fd);
1047     item->lcbBkdEdn = read_32ubit (fd);
1048     item->fcSttbfIntlFld = (S32) read_32ubit (fd);
1049     item->lcbSttbfIntlFld = read_32ubit (fd);
1050     item->fcRouteSlip = (S32) read_32ubit (fd);
1051     item->lcbRouteSlip = read_32ubit (fd);
1052     item->fcSttbSavedBy = (S32) read_32ubit (fd);
1053     item->lcbSttbSavedBy = read_32ubit (fd);
1054     item->fcSttbFnm = (S32) read_32ubit (fd);
1055     item->lcbSttbFnm = read_32ubit (fd);
1056 }
1057