home *** CD-ROM | disk | FTP | other *** search
/ PC World 2002 September / PCWorld_2002-09_cd.bin / Software / Vyzkuste / helpdeco / HELPDECO.H < prev    next >
C/C++ Source or Header  |  1996-12-07  |  23KB  |  655 lines

  1. /* HELPDECO.H - declares functions stored external in HELPDEC1.C */
  2. #ifndef HELPDECO_H
  3. #define HELPDECO_H
  4. #include <time.h>
  5. #include <malloc.h>
  6. #include <stdio.h>
  7. #include <stdarg.h>
  8. #include <stdlib.h>
  9. #include <string.h>
  10. #include <conio.h>
  11. #include <ctype.h>
  12.  
  13. #ifdef __TURBOC__
  14. typedef struct { char a,b,c; } align;
  15. #if sizeof(align)!=3
  16. #error Compile bytealigned !
  17. #endif
  18. #else
  19. #pragma pack(1)
  20. #endif
  21.  
  22. typedef enum {FALSE,TRUE} BOOL;
  23.  
  24. typedef struct               /* structure at beginning of help file */
  25. {
  26.     long Magic;              /* 0x00035F3F */
  27.     long DirectoryStart;     /* offset of FILEHEADER of internal direcory */
  28.     long FreeChainStart;     /* offset of FILEHEADER or -1L */
  29.     long EntireFileSize;     /* size of entire help file in bytes */
  30. }
  31. HELPHEADER;
  32.  
  33. typedef struct FILEHEADER    /* structure at FileOffset of each internal file */
  34. {
  35.     long ReservedSpace;      /* reserved space in help file incl. FILEHEADER */
  36.     long UsedSpace;          /* used space in help file excl. FILEHEADER */
  37.     unsigned char FileFlags; /* normally 4 */
  38. }
  39. FILEHEADER;
  40.  
  41. typedef struct BTREEHEADER   /* structure after FILEHEADER of each Btree */
  42. {
  43.     unsigned short Magic;    /* 0x293B */
  44.     unsigned short Flags;    /* bit 0x0002 always 1, bit 0x0400 1 if direcory */
  45.     unsigned short PageSize; /* 0x0400=1k if directory, 0x0800=2k else */
  46.     unsigned char Structure[16]; /* string describing structure of data */
  47.     short MustBeZero;        /* 0 */
  48.     short PageSplits;        /* number of page splits Btree has suffered */
  49.     short RootPage;          /* page number of Btree root page */
  50.     short MustBeNegOne;      /* 0xFFFF */
  51.     short TotalPages;        /* number of Btree pages */
  52.     short NLevels;           /* number of levels of Btree */
  53.     long TotalBtreeEntries;  /* number of entries in Btree */
  54. }
  55. BTREEHEADER;
  56.  
  57. typedef struct BTREEINDEXHEADER /* structure at beginning of every index-page */
  58. {
  59.     unsigned short Unknown;  /* sorry, no ID to identify an index-page */
  60.     short NEntries;          /* number of entries in this index-page */
  61.     short PreviousPage;      /* page number of previous page */
  62. }
  63. BTREEINDEXHEADER;
  64.  
  65. typedef struct BTREENODEHEADER /* structure at beginning of every leaf-page */
  66. {
  67.     unsigned short Unknown;  /* Sorry, no ID to identify a leaf-page */
  68.     short NEntries;          /* number of entires in this leaf-page */
  69.     short PreviousPage;      /* page number of preceeding leaf-page or -1 */
  70.     short NextPage;          /* page number of next leaf-page or -1 */
  71. }
  72. BTREENODEHEADER;
  73.  
  74. typedef struct SYSTEMHEADER  /* structure at beginning of |SYSTEM file */
  75. {
  76.     unsigned short Magic;    /* 0x036C */
  77.     unsigned short Minor;    /* help file format version number */
  78.     unsigned short Major;    /* 1 */
  79.     time_t GenDate;          /* date/time the help file was generated or 0 */
  80.     unsigned short Flags;    /* tells you how the help file is compressed */
  81. }
  82. SYSTEMHEADER;
  83.  
  84. typedef struct               /* internal structure */
  85. {
  86.     FILE *File;
  87.     long SavePos;
  88.     long Remaining;
  89.     unsigned short RecordType; /* type of data in record */
  90.     unsigned short DataSize;   /* size of data */
  91.     char Data[10];
  92. }
  93. SYSTEMRECORD;
  94.  
  95. typedef struct SECWINDOW     /* structure of data following RecordType 6 */
  96. {
  97.     unsigned short Flags;    /* flags (see below) */
  98.     char Type[10];           /* type of window */
  99.     char Name[9];            /* window name */
  100.     char Caption[51];        /* caption for window */
  101.     short X;                 /* x coordinate of window (0..1000) */
  102.     short Y;                 /* y coordinate of window (0..1000) */
  103.     short Width;             /* width of window (0..1000) */
  104.     short Height;            /* height of window (0..1000) */
  105.     short Maximize;          /* maximize flag and window styles */
  106.     unsigned char Rgb[3];    /* color of scrollable region */
  107.     unsigned char Unknown1;
  108.     unsigned char RgbNsr[3]; /* color of non-scrollable region */
  109.     unsigned char Unknown2;
  110. }
  111. SECWINDOW;
  112.  
  113. typedef struct
  114. {
  115.     unsigned short Flags;    /* flags (see below) */
  116.     char Type[10];           /* type of window */
  117.     char Name[9];            /* window name */
  118.     char Caption[51];        /* caption for window */
  119.     unsigned char MoreFlags;
  120.     short X;                 /* x coordinate of window (0..1000) */
  121.     short Y;                 /* y coordinate of window (0..1000) */
  122.     short Width;             /* width of window (0..1000) */
  123.     short Height;            /* height of window (0..1000) */
  124.     short Maximize;          /* maximize flag and window styles */
  125.     unsigned char TopRgb[3];
  126.     unsigned char Unknown0;
  127.     unsigned char Unknown[25];
  128.     unsigned char Rgb[3];    /* color of scrollable region */
  129.     unsigned char Unknown1;
  130.     unsigned char RgbNsr[3]; /* color of non-scrollable region */
  131.     unsigned char Unknown2;
  132.     short X2;
  133.     short Y2;
  134.     short Width2;
  135.     short Height2;
  136.     short X3;
  137.     short Y3;
  138. }
  139. MVBWINDOW;
  140.  
  141. typedef struct               /* structure of data following RecordType 14 */
  142. {
  143.     char btreename[10];
  144.     char mapname[10];
  145.     char dataname[10];
  146.     char title[80];
  147. }
  148. KEYINDEX;
  149.  
  150. #define WSYSFLAG_TYPE           0x0001  /* Type is valid */
  151. #define WSYSFLAG_NAME           0x0002  /* Name is valid */
  152. #define WSYSFLAG_CAPTION        0x0004  /* Caption is valid */
  153. #define WSYSFLAG_X              0x0008  /* X is valid */
  154. #define WSYSFLAG_Y              0x0010  /* Y is valid */
  155. #define WSYSFLAG_WIDTH          0x0020  /* Width is valid */
  156. #define WSYSFLAG_HEIGHT         0x0040  /* Height is valid */
  157. #define WSYSFLAG_MAXIMIZE       0x0080  /* Maximize is valid */
  158. #define WSYSFLAG_RGB            0x0100  /* Rgb is valid */
  159. #define WSYSFLAG_RGBNSR         0x0200  /* RgbNsr is valid */
  160. #define WSYSFLAG_TOP            0x0400  /* On top was set in HPJ file */
  161. #define WSYSFLAG_AUTOSIZEHEIGHT 0x0800  /* Auto-Size Height */
  162.  
  163. typedef struct PHRINDEXHDR   /* structure of beginning of |PhrIndex file */
  164. {
  165.     long always4A01;              /* sometimes 0x0001 */
  166.     long entries;                 /* number of phrases */
  167.     long compressedsize;          /* size of PhrIndex file */
  168.     long phrimagesize;            /* size of decompressed PhrImage file */
  169.     long phrimagecompressedsize;  /* size of PhrImage file */
  170.     long always0;
  171.     unsigned short bits:4;
  172.     unsigned short unknown:12;
  173.     unsigned short always4A00;    /* sometimes 0x4A01, 0x4A02 */
  174. }
  175. PHRINDEXHDR;
  176.  
  177. typedef struct FONTHEADER    /* structure of beginning of |FONT file */
  178. {
  179.     unsigned short NumFacenames;       /* number of face names */
  180.     unsigned short NumDescriptors;     /* number of font descriptors */
  181.     unsigned short FacenamesOffset;    /* offset of face name array */
  182.     unsigned short DescriptorsOffset;  /* offset of descriptors array */
  183.     unsigned short NumFormats;         /* only if FacenamesOffset >= 12 */
  184.     unsigned short FormatsOffset;      /* offset of formats array */
  185.     unsigned short NumCharmaps;        /* only if FacenamesOffset >= 16 */
  186.     unsigned short CharmapsOffset;     /* offset of charmapnames array */
  187. }
  188. FONTHEADER;
  189.  
  190. typedef struct FONTDESCRIPTOR /* internal font descriptor */
  191. {
  192.     unsigned char Bold;
  193.     unsigned char Italic;
  194.     unsigned char Underline;
  195.     unsigned char StrikeOut;
  196.     unsigned char DoubleUnderline;
  197.     unsigned char SmallCaps;
  198.     unsigned char HalfPoints;
  199.     unsigned char FontFamily;
  200.     unsigned short FontName;
  201.     unsigned char textcolor;
  202.     unsigned char backcolor;
  203.     unsigned short style;
  204.     short expndtw;
  205.     signed char up;
  206. }
  207. FONTDESCRIPTOR;
  208.  
  209. typedef struct                /* non-Multimedia font descriptor */
  210. {
  211.     unsigned char Attributes; /* Font Attributes See values below */
  212.     unsigned char HalfPoints; /* PointSize * 2 */
  213.     unsigned char FontFamily; /* Font Family. See values below */
  214.     unsigned short FontName;  /* Number of font in Font List */
  215.     unsigned char FGRGB[3];   /* RGB values of foreground */
  216.     unsigned char BGRGB[3];   /* unused background RGB Values */
  217. }
  218. OLDFONT;
  219.  
  220. typedef struct NEWFONT        /* structure located at DescriptorsOffset */
  221. {
  222.     unsigned char unknown1;
  223.     short FontName;
  224.     unsigned char FGRGB[3];
  225.     unsigned char BGRGB[3];
  226.     unsigned char unknown5;
  227.     unsigned char unknown6;
  228.     unsigned char unknown7;
  229.     unsigned char unknown8;
  230.     unsigned char unknown9;
  231.     long Height;
  232.     unsigned char mostlyzero[12];
  233.     short Weight;
  234.     unsigned char unknown10;
  235.     unsigned char unknown11;
  236.     unsigned char Italic;
  237.     unsigned char Underline;
  238.     unsigned char StrikeOut;
  239.     unsigned char DoubleUnderline;
  240.     unsigned char SmallCaps;
  241.     unsigned char unknown17;
  242.     unsigned char unknown18;
  243.     unsigned char PitchAndFamily;
  244. }
  245. NEWFONT;
  246.  
  247. typedef struct
  248. {
  249.     unsigned short StyleNum;
  250.     unsigned short BasedOn;
  251.     NEWFONT font;
  252.     char unknown[35];
  253.     char StyleName[65];
  254. }
  255. NEWSTYLE;
  256.  
  257. typedef struct MVBFONT        /* structure located at DescriptorsOffset */
  258. {
  259.     short FontName;
  260.     short expndtw;
  261.     unsigned short style;
  262.     unsigned char FGRGB[3];
  263.     unsigned char BGRGB[3];
  264.     long Height;
  265.     unsigned char mostlyzero[12];
  266.     short Weight;
  267.     unsigned char unknown10;
  268.     unsigned char unknown11;
  269.     unsigned char Italic;
  270.     unsigned char Underline;
  271.     unsigned char StrikeOut;
  272.     unsigned char DoubleUnderline;
  273.     unsigned char SmallCaps;
  274.     unsigned char unknown17;
  275.     unsigned char unknown18;
  276.     unsigned char PitchAndFamily;
  277.     unsigned char unknown20;
  278.     signed char up;
  279. }
  280. MVBFONT;
  281.  
  282. typedef struct
  283. {
  284.     unsigned short StyleNum;
  285.     unsigned short BasedOn;
  286.     MVBFONT font;
  287.     char unknown[35];
  288.     char StyleName[65];
  289. }
  290. MVBSTYLE;
  291.  
  292. typedef struct
  293. {
  294.     unsigned short Magic;     /* 0x5555 */
  295.     unsigned short Size;
  296.     unsigned short Unknown1;
  297.     unsigned short Unknown2;
  298.     unsigned short Entries;
  299.     unsigned short Ligatures;
  300.     unsigned short LigLen;
  301.     unsigned short Unknown[13];
  302. }
  303. CHARMAPHEADER;
  304. /* Font Attributes */
  305. #define FONT_NORM 0x00 /* Normal */
  306. #define FONT_BOLD 0x01 /* Bold */
  307. #define FONT_ITAL 0x02 /* Italics */
  308. #define FONT_UNDR 0x04 /* Underline */
  309. #define FONT_STRK 0x08 /* Strike Through */
  310. #define FONT_DBUN 0x10 /* Dbl Underline */
  311. #define FONT_SMCP 0x20 /* Small Caps */
  312. /* Font Families */
  313. #define FAM_MODERN 0x01
  314. #define FAM_ROMAN  0x02
  315. #define FAM_SWISS  0x03
  316. #define FAM_TECH   0x03
  317. #define FAM_NIL    0x03
  318. #define FAM_SCRIPT 0x04
  319. #define FAM_DECOR  0x05
  320.  
  321. typedef struct KWMAPREC       /* structure of |xWMAP leaf-page entries */
  322. {
  323.     long FirstRec;            /* index number of first keyword on leaf page */
  324.     unsigned short PageNum;   /* page number that keywords are associated with */
  325. }
  326. KWMAPREC;
  327.  
  328. typedef long TOPICPOS;        /* TOPICPOS/DecompressSize = block number, TOPICPOS%DecompressSize = offset into decompression buffer (including sizeof(TOPICBLOCKHEADER)) */
  329.  
  330. typedef long TOPICOFFSET;     /* TOPICOFFSET/0x8000 = block number, TOPICOFFSET/0x8000 = number of characters and hotspots counting from first TOPICLINK of this block */
  331.  
  332. typedef struct                /* structure every TopicBlockSize in |TOPIC */
  333. {
  334.     TOPICPOS LastTopicLink;   /* points to last TOPICLINK in previous block */
  335.     TOPICPOS FirstTopicLink;  /* points to first TOPICLINK in this block */
  336.     TOPICPOS LastTopicHeader; /* points to TOPICLINK of last TOPICHEADER */
  337. }
  338. TOPICBLOCKHEADER;
  339.  
  340. typedef struct                /* structure pointed to by FirstTopicLink */
  341. {
  342.     long BlockSize;           /* size of this link + LinkData1 + LinkData2 */
  343.     long DataLen2;            /* length of decompressed LinkData2 */
  344.     TOPICPOS PrevBlock;
  345.     /* Windows 3.0 (HC30): number of bytes the TOPICLINK of the previous
  346.     // block is located before this TOPICLINK, that is the block size of
  347.     // the previous TOPICLINK plus eventually skipped TOPICBLOCKHEADER.
  348.     // Windows 3.1 (HC31): TOPICPOS of previous TOPICLINK */
  349.     TOPICPOS NextBlock;
  350.     /* Windows 3.0 (HC30): number of bytes the TOPICLINK of the next block
  351.     // is located behind this block, including skipped TOPICBLOCKHEADER.
  352.     // Windows 3.1 (HC31): TOPICPOS of next TOPICLINK */
  353.     long DataLen1;            /* includes size of TOPICLINK */
  354.     unsigned char RecordType; /* See below */
  355. }
  356. TOPICLINK;
  357. /* Known RecordTypes for TOPICLINK */
  358. #define TL_DISPLAY30 0x01     /* version 3.0 displayable information */
  359. #define TL_TOPICHDR  0x02     /* topic header information */
  360. #define TL_DISPLAY   0x20     /* version 3.1 displayable information */
  361. #define TL_TABLE     0x23     /* version 3.1 table */
  362.  
  363. typedef struct                /* structure of LinkData1 of RecordType 2 */
  364. {
  365.     long BlockSize;        /* size of topic, including internal topic links */
  366.     TOPICOFFSET BrowseBck; /* topic offset for prev topic in browse sequence */
  367.     TOPICOFFSET BrowseFor; /* topic offset for next topic in browse sequence */
  368.     long TopicNum;         /* topic Number */
  369.     TOPICPOS NonScroll;    /* start of non-scrolling region (topic offset) or -1 */
  370.     TOPICPOS Scroll;       /* start of scrolling region (topic offset) */
  371.     TOPICPOS NextTopic;    /* start of next type 2 record */
  372. }
  373. TOPICHEADER;
  374.  
  375. typedef struct                /* structure of LinkData1 of RecordType 2 */
  376. {
  377.     long BlockSize;
  378.     short PrevTopicNum;
  379.     short unused1;
  380.     short NextTopicNum;
  381.     short unused2;
  382. }
  383. TOPICHEADER30;
  384.  
  385. typedef struct                /* structure of |CTXOMAP file entries */
  386. {
  387.     long MapID;
  388.     long TopicOffset;
  389. }
  390. CTXOMAPREC;
  391.  
  392. typedef struct                /* structure of |CONTEXT leaf-page entry */
  393. {
  394.     long HashValue;           /* Hash value of context id */
  395.     TOPICOFFSET TopicOffset;  /* Topic offset */
  396. }
  397. CONTEXTREC;
  398.  
  399. typedef struct                /* structure of *.GRP file header */
  400. {
  401.     unsigned long Magic;      /* 0x000A3333 */
  402.     unsigned long BitmapSize;
  403.     unsigned long LastTopic;
  404.     unsigned long FirstTopic;
  405.     unsigned long TopicsUsed;
  406.     unsigned long TopicCount;
  407.     unsigned long GroupType;
  408.     unsigned long Unknown1;
  409.     unsigned long Unknown2;
  410.     unsigned long Unknown3;
  411. }
  412. GROUPHEADER;
  413.  
  414. typedef struct                /* internal use */
  415. {
  416.     GROUPHEADER GroupHeader;
  417.     char *Name;
  418.     unsigned char *Bitmap;
  419. }
  420. GROUP;
  421.  
  422. typedef struct                /* structure of STOPn.STP header */
  423. {
  424.     unsigned long Magic;      /* 0x00082222 */
  425.     unsigned short BytesUsed;
  426.     unsigned short Unused[17];
  427. }
  428. STOPHEADER;
  429.  
  430. typedef struct                /* structure of |VIOLA leaf-page entry */
  431. {
  432.     TOPICOFFSET TopicOffset;  /* topic offset */
  433.     long WindowNumber;        /* number of window assigned to topic */
  434. }
  435. VIOLAREC;
  436.  
  437. typedef struct                /* structure of |CATALOG header */
  438. {
  439.    unsigned short magic;      /* 0x1111 */
  440.    unsigned short always8;
  441.    unsigned short always4;
  442.    long entries;
  443.    unsigned char zero[30];
  444. }
  445. CATALOGHEADER;
  446.  
  447. typedef struct                /* structure of Windows Bitmap BMP file */
  448. {
  449.     unsigned short bfType;
  450.     unsigned long bfSize;
  451.     unsigned short bfReserved1;
  452.     unsigned short bfReserved2;
  453.     unsigned long bfOffBits;
  454. }
  455. BITMAPFILEHEADER;
  456.  
  457. typedef struct                /* structure of Windows Bitmap header */
  458. {
  459.     unsigned long biSize;
  460.     long biWidth;
  461.     long biHeight;
  462.     unsigned short biPlanes;
  463.     unsigned short biBitCount;
  464.     unsigned long biCompression;
  465.     unsigned long biSizeImage;
  466.     long biXPelsPerMeter;
  467.     long biYPelsPerMeter;
  468.     unsigned long biClrUsed;
  469.     unsigned long biClrImportant;
  470. }
  471. BITMAPINFOHEADER;
  472.  
  473. typedef struct tagRECT        /* Windows rectangle */
  474. {
  475.     short left;
  476.     short top;
  477.     short right;
  478.     short bottom;
  479. }
  480. RECT;
  481.  
  482. typedef struct                /* Windows Aldus placeable metafile header */
  483. {
  484.     unsigned long dwKey;
  485.     unsigned short hMF;
  486.     RECT rcBBox;
  487.     unsigned short wInch;
  488.     unsigned long dwReserved;
  489.     unsigned short wChecksum;
  490. }
  491. APMFILEHEADER;
  492.  
  493. typedef struct                /* structure of hotspot info */
  494. {
  495.     unsigned char id0,id1,id2;
  496.     unsigned short x,y,w,h;
  497.     unsigned long hash;
  498. }
  499. HOTSPOT;
  500.  
  501. typedef struct                /* structure used as buf of GetFirstPage */
  502. {
  503.     long FirstLeaf;
  504.     unsigned short PageSize;
  505.     short NextPage;
  506. }
  507. BUFFER;
  508.  
  509. typedef struct                /* internal use. 16 bit: max. 3640 */
  510. {
  511.     long StartTopic;
  512.     long NextTopic;
  513.     long PrevTopic;
  514.     short BrowseNum;
  515.     short Start;
  516.     short Count;
  517. }
  518. BROWSE;
  519.  
  520. typedef struct                /* internal use. 16 bit: max. 8191 */
  521. {
  522.     long StartTopic;
  523.     short BrowseNum;
  524.     short Start;
  525. }
  526. START;
  527.  
  528. typedef struct                /* internal use. 16 bit: max. 6553 */
  529. {
  530.     char *name;
  531.     long hash;
  532.     BOOL derived;
  533. }
  534. HASHREC;
  535.  
  536. typedef struct                /* internal use to store keyword definitions */
  537. {
  538.     BOOL KeyIndex;
  539.     char Footnote;
  540.     char *Keyword;
  541.     long TopicOffset;
  542. }
  543. KEYWORDREC;
  544.  
  545. typedef struct placerec       /* internal use to store external references */
  546. {
  547.    struct placerec *next;
  548.    char topicname[1];
  549. }
  550. PLACEREC;
  551.  
  552. typedef struct checkrec       /* internal use to store external references */
  553. {
  554.     struct checkrec *next;
  555.     enum { TOPIC, CONTEXT } type;
  556.     long hash;
  557.     char *id;
  558.     PLACEREC *here;
  559. }
  560. CHECKREC;
  561.  
  562. typedef struct fileref        /* internal use to store external references */
  563. {
  564.     struct fileref *next;
  565.     CHECKREC *check;
  566.     char filename[1];
  567. }
  568. FILEREF;
  569.  
  570. typedef struct                /* internal use */
  571. {
  572.     TOPICOFFSET TopicOffset;
  573.     TOPICOFFSET OtherTopicOffset;
  574. }
  575. ALTERNATIVE;
  576.  
  577. typedef struct mfile          /* a class would be more appropriate */
  578. {
  579.     FILE *f;
  580.     char *ptr;
  581.     char *end;
  582.     int (*get)(struct mfile *);
  583.     int (*put)(struct mfile *,char);
  584.     size_t (*read)(struct mfile *,void *,long);
  585.     long (*tell)(struct mfile *);
  586.     void (*seek)(struct mfile *,long);
  587. }
  588. MFILE;
  589.  
  590. extern void error(char *format,...);
  591. extern size_t strlcpy(char *dest,char *src,size_t len); /* limited string copy */
  592. extern void *my_malloc(long bytes); /* save malloc function */
  593. extern void *my_realloc(void *ptr,long bytes); /* save realloc function */
  594. extern char *my_strdup(char *ptr); /* save strdup function */
  595. extern size_t my_fread(void *ptr,long bytes,FILE *f); /* save fread function */
  596. extern size_t my_gets(char *ptr,size_t size,FILE *f);  /* read nul terminated string from regular file */
  597. extern void my_fclose(FILE *f); /* checks if disk is full */
  598. extern FILE *my_fopen(const char *filename,const char *mode); /* save fopen function */
  599. extern unsigned short my_getw(FILE *f); /* get 16 bit quantity */
  600. extern unsigned long getdw(FILE *f); /* get long */
  601. extern void my_putw(unsigned short w,FILE *f); /* write 16 bit quantity */
  602. extern void putdw(unsigned long x,FILE *f); /* write long to file */
  603. extern void putcdw(unsigned long x,FILE *f); /* write compressed long to file */
  604. extern void putcw(unsigned int x,FILE *f); /* write compressed word to file */
  605. extern int MemoryPut(MFILE *f,char c); /* put char to memory mapped file */
  606. extern int FilePut(MFILE *f,char c); /* put char to regular file */
  607. extern int MemoryGet(MFILE *f); /* get char from memory mapped file */
  608. extern int FileGet(MFILE *f); /* get char from regular file */
  609. extern size_t MemoryRead(MFILE *f,void *ptr,long bytes); /* read function for memory mapped file */
  610. extern size_t FileRead(MFILE *f,void *ptr,long bytes); /* read function for regular file */
  611. extern long MemoryTell(MFILE *f); /* tell for memory mapped file */
  612. extern long FileTell(MFILE *f); /* tell for regular file */
  613. extern void MemorySeek(MFILE *f,long offset); /* seek in memory mapped file */
  614. extern void FileSeek(MFILE *f,long offset); /* seek in regular file */
  615. extern MFILE *CreateMap(char *ptr,size_t size); /* assign a memory mapped file */
  616. extern MFILE *CreateVirtual(FILE *f);  /* assign a real file */
  617. extern void CloseMap(MFILE *f); /* close a MFILE */
  618. extern int GetWord(MFILE *f); /* read 16 bit value from memory mapped file or regular file */
  619. extern unsigned short GetCWord(MFILE *f); /* get compressed word from memory mapped file or regular file */
  620. extern unsigned long GetCDWord(MFILE *f); /* get compressed long from memory mapped file or regular file */
  621. extern unsigned long GetDWord(MFILE *f); /* get long from memory mapped file or regular file */
  622. extern size_t StringRead(char *ptr,size_t size,MFILE *f); /* read nul terminated string from memory mapped or regular file */
  623. extern long copy(FILE *f,long bytes,FILE *out);
  624. extern long CopyBytes(MFILE *f,long bytes,FILE *out);
  625. extern long decompress(int method,MFILE *f,long bytes,MFILE *fTarget);
  626. extern long DecompressIntoBuffer(int method,FILE *HelpFile,long bytes,char *ptr,long size);
  627. extern long DecompressIntoFile(int method,MFILE *f,long bytes,FILE *fTarget);
  628. extern void HexDump(FILE *f,long FileLength,long offset);
  629. extern void HexDumpMemory(unsigned char *bypMem,unsigned int FileLength);
  630. extern char *PrintString(char *str,unsigned int len);
  631. extern BOOL GetBit(FILE *f);
  632. extern void putrtf(FILE *rtf,char *str);
  633. extern short scanint(char **ptr); /* scan a compressed short */
  634. extern unsigned short scanword(char **ptr); /* scan a compressed unsiged short */
  635. extern long scanlong(char **ptr);  /* scan a compressed long */
  636. extern BOOL SearchFile(FILE *HelpFile,char *FileName,long *FileLength);
  637. extern short GetFirstPage(FILE *HelpFile,BUFFER *buf,long *TotalEntries);
  638. extern short GetNextPage(FILE *HelpFile,BUFFER *buf); /* walk Btree */
  639. extern SYSTEMRECORD *GetNextSystemRecord(SYSTEMRECORD *SysRec);
  640. extern SYSTEMRECORD *GetFirstSystemRecord(FILE *HelpFile);
  641. extern void ListFiles(FILE *HelpFile); /* display internal directory */
  642. extern void ListBaggage(FILE *HelpFile,FILE *hpj,BOOL before31); /* writes out [BAGGAGE] section */
  643. extern void PrintWindow(FILE *hpj,SECWINDOW *SWin);
  644. extern void PrintMVBWindow(FILE *hpj,MVBWINDOW *SWin);
  645. extern void ToMapDump(FILE *HelpFile,long FileLength);
  646. extern void GroupDump(FILE *HelpFile);
  647. extern void KWMapDump(FILE *HelpFile);
  648. extern void KWDataDump(FILE *HelpFile,long FileLength);
  649. extern void CatalogDump(FILE *HelpFile);
  650. extern void CTXOMAPDump(FILE *HelpFile);
  651. extern void LinkDump(FILE *HelpFile);
  652. extern void AnnotationDump(FILE *HelpFile,long FileLength,char *name);
  653.  
  654. #endif
  655.