static void do_undump(ZIO* z) { while (1) { TProtoFunc* Main=luaU_undump1(z); if (Main==NULL) break; if (listing) PrintChunk(Main); } }
/* * Convert AWGS into formatted text. */ int ReformatAWGS_WP::Process(const ReformatHolder* pHolder, ReformatHolder::ReformatID id, ReformatHolder::ReformatPart part, ReformatOutput* pOutput) { const uint8_t* srcBuf = pHolder->GetSourceBuf(part); long srcLen = pHolder->GetSourceLen(part); fUseRTF = true; Chunk doc, header, footer; uint16_t val; Charset::CheckGSCharConv(); /* must at least have the doc header and globals */ if (srcLen < kMinExpectedLen) { LOGI("Too short to be AWGS"); return -1; } RTFBegin(kRTFFlagColorTable); /* * Pull interesting values out of the document header. */ val = Get16LE(srcBuf + 0); if (val != kExpectedVersion1 && val != kExpectedVersion2) { LOGI("AWGS_WP: unexpected version number (got 0x%04x, wanted 0x%04x)", val, kExpectedVersion1); DebugBreak(); } val = Get16LE(srcBuf + 2); if (val != kDocHeaderLen) { LOGI("Unexpected doc header len (got 0x%04x, wanted 0x%04x)", val, kDocHeaderLen); return -1; } /* the color table is 32 bytes at +56, should we be interested */ srcBuf += kDocHeaderLen; srcLen -= kDocHeaderLen; /* * Pull interesting values out of the WP global variables section. */ val = Get16LE(srcBuf + 0); if (val > kExpectedIntVersion) { LOGI("Unexpected internal version number (got %d, expected %d)", val, kExpectedIntVersion); return -1; } /* date/time are pascal strings */ LOGI("File saved at '%.26hs' '%.10s'", srcBuf + 6, srcBuf + 32); srcBuf += kWPGlobalsLen; srcLen -= kWPGlobalsLen; /* * Now come the three chunks, in order: main document, header, footer. */ LOGI("AWGS_WP: scanning doc"); if (!ReadChunk(&srcBuf, &srcLen, &doc)) return -1; LOGI("AWGS_WP: scanning header"); if (!ReadChunk(&srcBuf, &srcLen, &header)) return -1; LOGI("AWGS_WP: scanning footer"); if (!ReadChunk(&srcBuf, &srcLen, &footer)) return -1; if (srcLen != 0) { LOGI("AWGS NOTE: %ld bytes left in file", srcLen); } /* * Dump the chunks, starting with header and footer. */ RTFSetColor(kColorMediumBlue); RTFSetFont(kFontCourierNew); RTFSetFontSize(10); BufPrintf("<header>"); RTFSetColor(kColorNone); RTFNewPara(); PrintChunk(&header); RTFSetColor(kColorMediumBlue); RTFSetFont(kFontCourierNew); RTFSetFontSize(10); BufPrintf("</header>"); RTFSetColor(kColorNone); RTFNewPara(); RTFSetColor(kColorMediumBlue); RTFSetFont(kFontCourierNew); RTFSetFontSize(10); BufPrintf("<footer>"); RTFSetColor(kColorNone); RTFNewPara(); PrintChunk(&footer); RTFSetColor(kColorMediumBlue); RTFSetFont(kFontCourierNew); RTFSetFontSize(10); BufPrintf("</footer>"); RTFSetColor(kColorNone); RTFNewPara(); LOGI("AWGS_WP: rendering document"); PrintChunk(&doc); RTFEnd(); SetResultBuffer(pOutput, true); return 0; }
static void do_compile(ZIO* z) { TProtoFunc* Main=luaY_parser(z); if (listing) PrintChunk(Main); if (dumping) DumpChunk(Main,D); }