void wvGetFIB (FIB * item, wvStream * fd) { U16 temp16; U8 temp8; item->fEncrypted = 0; wvStream_goto (fd, 0); #ifdef PURIFY wvInitFIB (item); #endif item->wIdent = read_16ubit (fd); item->nFib = read_16ubit (fd); if ((wvQuerySupported (item, NULL) == WORD2)) { wvInitFIB (item); wvStream_offset (fd, -4); wvGetFIB2 (item, fd); return; } if ((wvQuerySupported (item, NULL) == WORD5) || (wvQuerySupported (item, NULL) == WORD6) || (wvQuerySupported (item, NULL) == WORD7)) { wvInitFIB (item); wvStream_offset (fd, -4); wvGetFIB6 (item, fd); return; } item->nProduct = read_16ubit (fd); item->lid = read_16ubit (fd); wvTrace (("lid is %x\n", item->lid)); item->pnNext = (S16) read_16ubit (fd); temp16 = read_16ubit (fd); item->fDot = (temp16 & 0x0001); item->fGlsy = (temp16 & 0x0002) >> 1; item->fComplex = (temp16 & 0x0004) >> 2; item->fHasPic = (temp16 & 0x0008) >> 3; item->cQuickSaves = (temp16 & 0x00F0) >> 4; item->fEncrypted = (temp16 & 0x0100) >> 8; item->fWhichTblStm = (temp16 & 0x0200) >> 9; item->fReadOnlyRecommended = (temp16 & 0x0400) >> 10; item->fWriteReservation = (temp16 & 0x0800) >> 11; item->fExtChar = (temp16 & 0x1000) >> 12; wvTrace (("fExtChar is %d\n", item->fExtChar)); item->fLoadOverride = (temp16 & 0x2000) >> 13; item->fFarEast = (temp16 & 0x4000) >> 14; item->fCrypto = (temp16 & 0x8000) >> 15; item->nFibBack = read_16ubit (fd); item->lKey = read_32ubit (fd); item->envr = read_8ubit (fd); temp8 = read_8ubit (fd); item->fMac = (temp8 & 0x01); item->fEmptySpecial = (temp8 & 0x02) >> 1; item->fLoadOverridePage = (temp8 & 0x04) >> 2; item->fFutureSavedUndo = (temp8 & 0x08) >> 3; item->fWord97Saved = (temp8 & 0x10) >> 4; item->fSpare0 = (temp8 & 0xFE) >> 5; item->chse = read_16ubit (fd); item->chsTables = read_16ubit (fd); item->fcMin = read_32ubit (fd); item->fcMac = read_32ubit (fd); item->csw = read_16ubit (fd); item->wMagicCreated = read_16ubit (fd); item->wMagicRevised = read_16ubit (fd); item->wMagicCreatedPrivate = read_16ubit (fd); item->wMagicRevisedPrivate = read_16ubit (fd); item->pnFbpChpFirst_W6 = (S16) read_16ubit (fd); item->pnChpFirst_W6 = (S16) read_16ubit (fd); item->cpnBteChp_W6 = (S16) read_16ubit (fd); item->pnFbpPapFirst_W6 = (S16) read_16ubit (fd); item->pnPapFirst_W6 = (S16) read_16ubit (fd); item->cpnBtePap_W6 = (S16) read_16ubit (fd); item->pnFbpLvcFirst_W6 = (S16) read_16ubit (fd); item->pnLvcFirst_W6 = (S16) read_16ubit (fd); item->cpnBteLvc_W6 = (S16) read_16ubit (fd); item->lidFE = (S16) read_16ubit (fd); item->clw = read_16ubit (fd); item->cbMac = (S32) read_32ubit (fd); item->lProductCreated = read_32ubit (fd); item->lProductRevised = read_32ubit (fd); item->ccpText = read_32ubit (fd); item->ccpFtn = (S32) read_32ubit (fd); item->ccpHdr = (S32) read_32ubit (fd); item->ccpMcr = (S32) read_32ubit (fd); item->ccpAtn = (S32) read_32ubit (fd); item->ccpEdn = (S32) read_32ubit (fd); item->ccpTxbx = (S32) read_32ubit (fd); item->ccpHdrTxbx = (S32) read_32ubit (fd); item->pnFbpChpFirst = (S32) read_32ubit (fd); item->pnChpFirst = (S32) read_32ubit (fd); item->cpnBteChp = (S32) read_32ubit (fd); item->pnFbpPapFirst = (S32) read_32ubit (fd); item->pnPapFirst = (S32) read_32ubit (fd); item->cpnBtePap = (S32) read_32ubit (fd); item->pnFbpLvcFirst = (S32) read_32ubit (fd); item->pnLvcFirst = (S32) read_32ubit (fd); item->cpnBteLvc = (S32) read_32ubit (fd); item->fcIslandFirst = (S32) read_32ubit (fd); item->fcIslandLim = (S32) read_32ubit (fd); item->cfclcb = read_16ubit (fd); item->fcStshfOrig = (S32) read_32ubit (fd); item->lcbStshfOrig = read_32ubit (fd); item->fcStshf = (S32) read_32ubit (fd); item->lcbStshf = read_32ubit (fd); item->fcPlcffndRef = (S32) read_32ubit (fd); item->lcbPlcffndRef = read_32ubit (fd); item->fcPlcffndTxt = (S32) read_32ubit (fd); item->lcbPlcffndTxt = read_32ubit (fd); item->fcPlcfandRef = (S32) read_32ubit (fd); item->lcbPlcfandRef = read_32ubit (fd); item->fcPlcfandTxt = (S32) read_32ubit (fd); item->lcbPlcfandTxt = read_32ubit (fd); item->fcPlcfsed = (S32) read_32ubit (fd); item->lcbPlcfsed = read_32ubit (fd); item->fcPlcpad = (S32) read_32ubit (fd); item->lcbPlcpad = read_32ubit (fd); item->fcPlcfphe = (S32) read_32ubit (fd); item->lcbPlcfphe = read_32ubit (fd); item->fcSttbfglsy = (S32) read_32ubit (fd); item->lcbSttbfglsy = read_32ubit (fd); item->fcPlcfglsy = (S32) read_32ubit (fd); item->lcbPlcfglsy = read_32ubit (fd); item->fcPlcfhdd = (S32) read_32ubit (fd); item->lcbPlcfhdd = read_32ubit (fd); item->fcPlcfbteChpx = (S32) read_32ubit (fd); item->lcbPlcfbteChpx = read_32ubit (fd); item->fcPlcfbtePapx = (S32) read_32ubit (fd); item->lcbPlcfbtePapx = read_32ubit (fd); item->fcPlcfsea = (S32) read_32ubit (fd); item->lcbPlcfsea = read_32ubit (fd); item->fcSttbfffn = (S32) read_32ubit (fd); item->lcbSttbfffn = read_32ubit (fd); item->fcPlcffldMom = (S32) read_32ubit (fd); item->lcbPlcffldMom = read_32ubit (fd); item->fcPlcffldHdr = (S32) read_32ubit (fd); item->lcbPlcffldHdr = read_32ubit (fd); item->fcPlcffldFtn = (S32) read_32ubit (fd); item->lcbPlcffldFtn = read_32ubit (fd); item->fcPlcffldAtn = (S32) read_32ubit (fd); item->lcbPlcffldAtn = read_32ubit (fd); item->fcPlcffldMcr = (S32) read_32ubit (fd); item->lcbPlcffldMcr = read_32ubit (fd); item->fcSttbfbkmk = (S32) read_32ubit (fd); item->lcbSttbfbkmk = read_32ubit (fd); item->fcPlcfbkf = (S32) read_32ubit (fd); item->lcbPlcfbkf = read_32ubit (fd); item->fcPlcfbkl = (S32) read_32ubit (fd); item->lcbPlcfbkl = read_32ubit (fd); item->fcCmds = (S32) read_32ubit (fd); item->lcbCmds = read_32ubit (fd); item->fcPlcmcr = (S32) read_32ubit (fd); item->lcbPlcmcr = read_32ubit (fd); item->fcSttbfmcr = (S32) read_32ubit (fd); item->lcbSttbfmcr = read_32ubit (fd); item->fcPrDrvr = (S32) read_32ubit (fd); item->lcbPrDrvr = read_32ubit (fd); item->fcPrEnvPort = (S32) read_32ubit (fd); item->lcbPrEnvPort = read_32ubit (fd); item->fcPrEnvLand = (S32) read_32ubit (fd); item->lcbPrEnvLand = read_32ubit (fd); item->fcWss = (S32) read_32ubit (fd); item->lcbWss = read_32ubit (fd); item->fcDop = (S32) read_32ubit (fd); item->lcbDop = read_32ubit (fd); item->fcSttbfAssoc = (S32) read_32ubit (fd); item->lcbSttbfAssoc = read_32ubit (fd); item->fcClx = (S32) read_32ubit (fd); item->lcbClx = read_32ubit (fd); item->fcPlcfpgdFtn = (S32) read_32ubit (fd); item->lcbPlcfpgdFtn = read_32ubit (fd); item->fcAutosaveSource = (S32) read_32ubit (fd); item->lcbAutosaveSource = read_32ubit (fd); item->fcGrpXstAtnOwners = (S32) read_32ubit (fd); item->lcbGrpXstAtnOwners = read_32ubit (fd); item->fcSttbfAtnbkmk = (S32) read_32ubit (fd); item->lcbSttbfAtnbkmk = read_32ubit (fd); item->fcPlcdoaMom = (S32) read_32ubit (fd); item->lcbPlcdoaMom = read_32ubit (fd); item->fcPlcdoaHdr = (S32) read_32ubit (fd); item->lcbPlcdoaHdr = read_32ubit (fd); item->fcPlcspaMom = (S32) read_32ubit (fd); item->lcbPlcspaMom = read_32ubit (fd); item->fcPlcspaHdr = (S32) read_32ubit (fd); item->lcbPlcspaHdr = read_32ubit (fd); item->fcPlcfAtnbkf = (S32) read_32ubit (fd); item->lcbPlcfAtnbkf = read_32ubit (fd); item->fcPlcfAtnbkl = (S32) read_32ubit (fd); item->lcbPlcfAtnbkl = read_32ubit (fd); item->fcPms = (S32) read_32ubit (fd); item->lcbPms = read_32ubit (fd); item->fcFormFldSttbs = (S32) read_32ubit (fd); item->lcbFormFldSttbs = read_32ubit (fd); item->fcPlcfendRef = (S32) read_32ubit (fd); item->lcbPlcfendRef = read_32ubit (fd); item->fcPlcfendTxt = (S32) read_32ubit (fd); item->lcbPlcfendTxt = read_32ubit (fd); item->fcPlcffldEdn = (S32) read_32ubit (fd); item->lcbPlcffldEdn = read_32ubit (fd); item->fcPlcfpgdEdn = (S32) read_32ubit (fd); item->lcbPlcfpgdEdn = read_32ubit (fd); item->fcDggInfo = (S32) read_32ubit (fd); item->lcbDggInfo = read_32ubit (fd); item->fcSttbfRMark = (S32) read_32ubit (fd); item->lcbSttbfRMark = read_32ubit (fd); item->fcSttbCaption = (S32) read_32ubit (fd); item->lcbSttbCaption = read_32ubit (fd); item->fcSttbAutoCaption = (S32) read_32ubit (fd); item->lcbSttbAutoCaption = read_32ubit (fd); item->fcPlcfwkb = (S32) read_32ubit (fd); item->lcbPlcfwkb = read_32ubit (fd); item->fcPlcfspl = (S32) read_32ubit (fd); item->lcbPlcfspl = read_32ubit (fd); item->fcPlcftxbxTxt = (S32) read_32ubit (fd); item->lcbPlcftxbxTxt = read_32ubit (fd); item->fcPlcffldTxbx = (S32) read_32ubit (fd); item->lcbPlcffldTxbx = read_32ubit (fd); item->fcPlcfhdrtxbxTxt = (S32) read_32ubit (fd); item->lcbPlcfhdrtxbxTxt = read_32ubit (fd); item->fcPlcffldHdrTxbx = (S32) read_32ubit (fd); item->lcbPlcffldHdrTxbx = read_32ubit (fd); item->fcStwUser = (S32) read_32ubit (fd); item->lcbStwUser = read_32ubit (fd); item->fcSttbttmbd = (S32) read_32ubit (fd); item->cbSttbttmbd = read_32ubit (fd); item->fcUnused = (S32) read_32ubit (fd); item->lcbUnused = read_32ubit (fd); item->fcPgdMother = (S32) read_32ubit (fd); item->lcbPgdMother = read_32ubit (fd); item->fcBkdMother = (S32) read_32ubit (fd); item->lcbBkdMother = read_32ubit (fd); item->fcPgdFtn = (S32) read_32ubit (fd); item->lcbPgdFtn = read_32ubit (fd); item->fcBkdFtn = (S32) read_32ubit (fd); item->lcbBkdFtn = read_32ubit (fd); item->fcPgdEdn = (S32) read_32ubit (fd); item->lcbPgdEdn = read_32ubit (fd); item->fcBkdEdn = (S32) read_32ubit (fd); item->lcbBkdEdn = read_32ubit (fd); item->fcSttbfIntlFld = (S32) read_32ubit (fd); item->lcbSttbfIntlFld = read_32ubit (fd); item->fcRouteSlip = (S32) read_32ubit (fd); item->lcbRouteSlip = read_32ubit (fd); item->fcSttbSavedBy = (S32) read_32ubit (fd); item->lcbSttbSavedBy = read_32ubit (fd); item->fcSttbFnm = (S32) read_32ubit (fd); item->lcbSttbFnm = read_32ubit (fd); item->fcPlcfLst = (S32) read_32ubit (fd); item->lcbPlcfLst = read_32ubit (fd); item->fcPlfLfo = (S32) read_32ubit (fd); item->lcbPlfLfo = read_32ubit (fd); item->fcPlcftxbxBkd = (S32) read_32ubit (fd); item->lcbPlcftxbxBkd = read_32ubit (fd); item->fcPlcftxbxHdrBkd = (S32) read_32ubit (fd); item->lcbPlcftxbxHdrBkd = read_32ubit (fd); item->fcDocUndo = (S32) read_32ubit (fd); item->lcbDocUndo = read_32ubit (fd); item->fcRgbuse = (S32) read_32ubit (fd); item->lcbRgbuse = read_32ubit (fd); item->fcUsp = (S32) read_32ubit (fd); item->lcbUsp = read_32ubit (fd); item->fcUskf = (S32) read_32ubit (fd); item->lcbUskf = read_32ubit (fd); item->fcPlcupcRgbuse = (S32) read_32ubit (fd); item->lcbPlcupcRgbuse = read_32ubit (fd); item->fcPlcupcUsp = (S32) read_32ubit (fd); item->lcbPlcupcUsp = read_32ubit (fd); item->fcSttbGlsyStyle = (S32) read_32ubit (fd); item->lcbSttbGlsyStyle = read_32ubit (fd); item->fcPlgosl = (S32) read_32ubit (fd); item->lcbPlgosl = read_32ubit (fd); item->fcPlcocx = (S32) read_32ubit (fd); item->lcbPlcocx = read_32ubit (fd); item->fcPlcfbteLvc = (S32) read_32ubit (fd); item->lcbPlcfbteLvc = read_32ubit (fd); wvGetFILETIME (&(item->ftModified), fd); item->fcPlcflvc = (S32) read_32ubit (fd); item->lcbPlcflvc = read_32ubit (fd); item->fcPlcasumy = (S32) read_32ubit (fd); item->lcbPlcasumy = read_32ubit (fd); item->fcPlcfgram = (S32) read_32ubit (fd); item->lcbPlcfgram = read_32ubit (fd); item->fcSttbListNames = (S32) read_32ubit (fd); item->lcbSttbListNames = read_32ubit (fd); item->fcSttbfUssr = (S32) read_32ubit (fd); item->lcbSttbfUssr = read_32ubit (fd); }
U32 wvEatmsofbt(MSOFBH *amsofbh, wvStream *fd) { wvStream_offset(fd, amsofbh->cbLength); return amsofbh->cbLength; }
void wvPutSTD (STD * item, U16 len, wvStream * fd) { U16 temp16 = 0; U16 i, j; int pos; int ret = 0; U16 count = 0; temp16 |= item->sti; temp16 |= item->fScratch << 12; temp16 |= item->fInvalHeight << 13; temp16 |= item->fHasUpe << 14; temp16 |= item->fMassCopy << 15; write_16ubit (fd, temp16); temp16 = 0; temp16 |= item->sgc; temp16 |= item->istdBase << 4; write_16ubit (fd, temp16); temp16 = 0; temp16 |= item->cupx; temp16 |= item->istdNext << 4; write_16ubit (fd, temp16); write_16ubit (fd, (U16) item->bchUpe); count = 8; /* add */ pos = 11; ret = 1; write_8ubit (fd, (U8) len); for (i = 0; i < len; i++) { /* if (count > 10) */ /* write_16ubit(fd, (U16)item->xstzName[i]) */ /* else */ write_8ubit (fd, (U8) item->xstzName[i]); pos++; } for (i = 0; i < item->cupx; i++) { if ((pos + 1) / 2 != pos / 2) { /* eat odd bytes */ wvStream_offset (fd, -1); /* TODO: check me */ pos++; } write_16ubit (fd, item->grupxf[i].cbUPX); pos += 2; if (item->grupxf[i].cbUPX == 0) continue; if ((item->cupx == 1) || ((item->cupx == 2) && (i == 1))) { for (j = 0; j < item->grupxf[i].cbUPX; j++) { write_8ubit (fd, item->grupxf[i].upx.chpx.grpprl[j]); pos++; } } else if ((item->cupx == 2) && (i == 0)) { write_16ubit (fd, item->grupxf[i].upx.papx.istd); pos += 2; for (j = 0; j < item->grupxf[i].cbUPX - 2; j++) { write_8ubit (fd, item->grupxf[i].upx.papx.grpprl[j]); pos++; } } else { /* something is FUBAR -- maybe try to handle it here someday */ wvError (("Something FUBAR in wbPutSTD")); } } /* eat odd bytes */ if ((pos + 1) / 2 != pos / 2) /* check me */ wvStream_offset (fd, -1); }