diff -r f345bda72bc4 -r 43e37759235e Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/wordmac_8c_source.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/wordmac_8c_source.html Tue Mar 30 16:16:55 2010 +0100 @@ -0,0 +1,124 @@ + + + + +TB9.2 Example Applications: examples/PIPS/antiword/src/wordmac.c Source File + + + + + +

examples/PIPS/antiword/src/wordmac.c

00001 /*
+00002  * wordmac.c
+00003  * Copyright (C) 2002-2004 A.J. van Os; Released under GNU GPL
+00004  *
+00005  * Description:
+00006  * Deal with the MAC internals of a MS Word file
+00007  */
+00008 
+00009 #include "antiword.h"
+00010 
+00011 
+00012 /*
+00013  * bGetDocumentText - make a list of the text blocks of a Word document
+00014  *
+00015  * Return TRUE when succesful, otherwise FALSE
+00016  */
+00017 static BOOL
+00018 bGetDocumentText(FILE *pFile, const UCHAR *aucHeader)
+00019 {
+00020         text_block_type tTextBlock;
+00021         ULONG   ulBeginOfText, ulEndOfText;
+00022         ULONG   ulTextLen;
+00023         UCHAR   ucDocStatus;
+00024         BOOL    bFastSaved;
+00025 
+00026         fail(pFile == NULL);
+00027         fail(aucHeader == NULL);
+00028 
+00029         DBG_MSG("bGetDocumentText");
+00030 
+00031         NO_DBG_PRINT_BLOCK(aucHeader, 0x20);
+00032 
+00033         /* Get the status flags from the header */
+00034         ucDocStatus = ucGetByte(0x0a, aucHeader);
+00035         DBG_HEX(ucDocStatus);
+00036         bFastSaved = (ucDocStatus & BIT(5)) != 0;
+00037         DBG_MSG_C(bFastSaved, "This document is Fast Saved");
+00038         if (bFastSaved) {
+00039                 werr(0, "MacWord: fast saved documents are not supported yet");
+00040                 return FALSE;
+00041         }
+00042 
+00043         /* Get length information */
+00044         ulBeginOfText = ulGetLongBE(0x14, aucHeader);
+00045         DBG_HEX(ulBeginOfText);
+00046         ulEndOfText = ulGetLongBE(0x18, aucHeader);
+00047         DBG_HEX(ulEndOfText);
+00048         ulTextLen = ulEndOfText - ulBeginOfText;
+00049         DBG_DEC(ulTextLen);
+00050         tTextBlock.ulFileOffset = ulBeginOfText;
+00051         tTextBlock.ulCharPos = ulBeginOfText;
+00052         tTextBlock.ulLength = ulTextLen;
+00053         tTextBlock.bUsesUnicode = FALSE;
+00054         tTextBlock.usPropMod = IGNORE_PROPMOD;
+00055         if (!bAdd2TextBlockList(&tTextBlock)) {
+00056                 DBG_HEX(tTextBlock.ulFileOffset);
+00057                 DBG_HEX(tTextBlock.ulCharPos);
+00058                 DBG_DEC(tTextBlock.ulLength);
+00059                 DBG_DEC(tTextBlock.bUsesUnicode);
+00060                 DBG_DEC(tTextBlock.usPropMod);
+00061                 return FALSE;
+00062         }
+00063         return TRUE;
+00064 } /* end of bGetDocumentText */
+00065 
+00066 /*
+00067  * iInitDocumentMAC - initialize an MAC document
+00068  *
+00069  * Returns the version of Word that made the document or -1
+00070  */
+00071 int
+00072 iInitDocumentMAC(FILE *pFile, long lFilesize)
+00073 {
+00074         int     iWordVersion;
+00075         BOOL    bSuccess;
+00076         USHORT  usIdent;
+00077         UCHAR   aucHeader[256];
+00078 
+00079         fail(pFile == NULL);
+00080 
+00081         if (lFilesize < 256) {
+00082                 return -1;
+00083         }
+00084 
+00085         /* Read the headerblock */
+00086         if (!bReadBytes(aucHeader, 256, 0x00, pFile)) {
+00087                 return -1;
+00088         }
+00089         /* Get the "magic number" from the header */
+00090         usIdent = usGetWord(0x00, aucHeader);
+00091         DBG_HEX(usIdent);
+00092         fail(usIdent != 0x37fe);        /* MacWord 4 and 5 */
+00093         iWordVersion = iGetVersionNumber(aucHeader);
+00094         if (iWordVersion != 4 && iWordVersion != 5) {
+00095                 werr(0, "This file is not from ''Mac Word 4 or 5'.");
+00096                 return -1;
+00097         }
+00098         bSuccess = bGetDocumentText(pFile, aucHeader);
+00099         if (bSuccess) {
+00100                 vGetPropertyInfo(pFile, NULL,
+00101                                 NULL, 0, NULL, 0,
+00102                                 aucHeader, iWordVersion);
+00103                 vSetDefaultTabWidth(pFile, NULL,
+00104                                 NULL, 0, NULL, 0,
+00105                                 aucHeader, iWordVersion);
+00106         }
+00107         return bSuccess ? iWordVersion : -1;
+00108 } /* end of iInitDocumentMAC */
+
+
Generated by  + +doxygen 1.6.2
+ +