196 lines
6.7 KiB
C
196 lines
6.7 KiB
C
/*************************************************************************
|
|
**
|
|
** helpmake.h - misc definitions common to helpmake
|
|
**
|
|
** Copyright <C> 1987, Microsoft Corporation
|
|
**
|
|
** Revision History:
|
|
**
|
|
** 31-Jul-1990 ln csVal takes a param.
|
|
** 04-Jul-1990 JCK Add F_LOCALCONTEXT to allow escaped @
|
|
** 28-Oct-1988 ln Add parameter to rlCompress
|
|
** 12-Aug-1988 ln Add COLMAX, local context routines & pass1a
|
|
** [] 18-Dec-1987 LN Created
|
|
**
|
|
*************************************************************************/
|
|
|
|
/************************************************************************
|
|
**
|
|
** Includes required for subsequent definitions in this file.
|
|
*/
|
|
#include "help.h" // structires & constants
|
|
#include "helpfile.h" // help file structure
|
|
#include "helpsys.h" // misc commn defs
|
|
#include "hmmsg.h" // error message numbers
|
|
#include "farutil.h" // far memory utils
|
|
#include "vm.h" // virtual memory management
|
|
|
|
/*************************************************************************
|
|
**
|
|
** definitions
|
|
**
|
|
*/
|
|
#define TRUE 1
|
|
#define FALSE 0
|
|
|
|
#define ASTACKSIZE 50 // size of attribute stack
|
|
#define BUFSIZE 512 // size of line buffers
|
|
#define CBFBUF 64000 // size of far buffer(s)
|
|
#define CBIOBUF 16000 // file buffer size (60k)
|
|
#define CBRTFMAX 40 // max length of RTF keyword
|
|
#define CBSZCONTEXT 60000 // context string buffer size
|
|
#define CCONTEXTMAX 10000 // max number of contexts
|
|
#define CTOPICSMAX 10000 // max number of topics
|
|
#define COLMAX 250 // max column we can run into
|
|
#define FBUFSIZE 2048 // size of buffers used
|
|
#define MAXBACKC 128 // max number of back-up characters
|
|
|
|
#define F_RTF 1 // RTF file type
|
|
#define F_QH 2 // QuickHelp format
|
|
#define F_MINASCII 3 // minimal ascii
|
|
#define F_MAX 3 // maximum
|
|
|
|
#define F_LOCALCONTEXT 0xff // marker for local context
|
|
|
|
#define CMP_RUNLENGTH 0x01 // runlength encoding
|
|
#define CMP_KEYWORD 0x02 // base keyword encoding
|
|
#define CMP_KEYWORD2 0x04 // "agressive" keyword
|
|
#define CMP_HUFFMAN 0x08 // huffman encoding
|
|
#define CMP_MAX 0x0f // maximum
|
|
|
|
/*
|
|
** formatting tokens. Embedded in non-rtf text, and converter from (longer)
|
|
** rtf equivalents by the RTF stripper.
|
|
*/
|
|
#define FM_ANCHOR 'a' | 0xff00 // anchor cross reference
|
|
#define FM_PLAIN 'p' | 0xff00 // plain text
|
|
#define FM_BOLD 'b' | 0xff00 // bold text
|
|
#define FM_ITALIC 'i' | 0xff00 // italic
|
|
#define FM_HIDDEN 'v' | 0xff00 // hidden text
|
|
#define FM_UNDERLINE 'u' | 0xff00 // underline
|
|
#define FM_DEFAULT 'd' | 0xff00 // paragraph defaults
|
|
#define FM_FINDENT 'f' | 0xff00 // first line indent
|
|
#define FM_LINDENT 'l' | 0xff00 // paragraph left indent
|
|
#define FM_TAB 't' | 0xff00 // tab character
|
|
#define FM_LINE 'n' | 0xff00 // exlicit line break
|
|
#define FM_BLOCKBEG '{' | 0xff00 // block begin
|
|
#define FM_BLOCKEND '}' | 0xff00 // block begin
|
|
|
|
typedef char buffer[256]; // line buffer
|
|
typedef char f; // boolean
|
|
|
|
struct kwi { // keyword info structure
|
|
char far *fpszKw; // pointer to the actual keyword
|
|
int cbKw; // length of keyword
|
|
ushort cKwInst; // count of keyword instances
|
|
ushort cKwSpInst; // count of keyword-space instances
|
|
int savings; // computed savings for this word
|
|
};
|
|
|
|
/*
|
|
** transitem
|
|
** dotcommand translation item
|
|
*/
|
|
struct transitem {
|
|
char *pdotcmd; // original dot command
|
|
int cbdotcmd; // length of said dot command
|
|
char *pnewcmd; // replacement command
|
|
char cbnewcmd; // length of said new cmd
|
|
};
|
|
|
|
// context string
|
|
// context string item in a linked list
|
|
//
|
|
typedef struct _cshdr {
|
|
va vaNext; // next item in list or NULL
|
|
va vaTopic; // va of topic
|
|
uchar cbszCs; // length of context string + null
|
|
} cshdr;
|
|
|
|
typedef struct _cs {
|
|
cshdr cshdr; // header info
|
|
buffer szCs; // context string + terminating null
|
|
} cs;
|
|
|
|
/*
|
|
** verbosity level definitions.
|
|
*/
|
|
#define V_BANNER (verbose >= 1) // (default) print banner
|
|
#define V_PASSES (verbose >= 2) // print pass names
|
|
#define V_CONTEXTS (verbose >= 3) // print contexts on 1st pass
|
|
#define V_CONTEXTS2 (verbose >= 4) // print contexts on each pass
|
|
#define V_STEPS (verbose >= 5) // print intermediate steps
|
|
#define V_STATS (verbose >= 6) // print statistics
|
|
#define V_DSTATS (verbose >= 10) // print debug statistics
|
|
#define V_ARGS (verbose >= 20) // print prog arguments
|
|
#define V_KEYWORD (verbose >= 30) // print keyword table
|
|
#define V_HUFFMAN (verbose >= 40) // print huffman table
|
|
|
|
/************************************************************************
|
|
**
|
|
** HelpMake function forward definitions
|
|
*/
|
|
void pascal AddContextString (char *);
|
|
va pascal AddKw (uchar far *);
|
|
void pascal addXref (uchar *, uchar *, ushort, ushort);
|
|
void pascal BackUp (int);
|
|
void pascal BackUpToken (int);
|
|
uchar * pascal basename (uchar *);
|
|
void pascal ContextVA (va);
|
|
ushort pascal counttab (struct hnode *, int, ulong);
|
|
void pascal decode (int, char **, int, f);
|
|
int pascal DofarWrite (int, uchar far *, int);
|
|
void pascal DumpRtf (uchar far *, nc, int, f);
|
|
void pascal encode (int, char **, int);
|
|
f pascal fControlLine (void);
|
|
va pascal FindKw (uchar far *, f);
|
|
int pascal getcProc (void);
|
|
int pascal getcQH (void);
|
|
int pascal getcRTF (void);
|
|
void pascal help ();
|
|
void pascal hmerror (ushort, uchar *, ulong);
|
|
f pascal hmmsg (ushort);
|
|
int hnodecomp (struct hnode **, struct hnode **);
|
|
void pascal HuffBuild (void);
|
|
void pascal HuffCompress (uchar far *, uchar far *);
|
|
ushort pascal HuffDump (void);
|
|
void pascal HuffInit (void);
|
|
void pascal HuffFreq (uchar far *, ushort);
|
|
void pascal HuffStats (void);
|
|
uchar * pascal getFarMsg (ushort, uchar *);
|
|
void pascal InitOutput (int);
|
|
void pascal kwAnal (uchar far *, int);
|
|
void pascal kwCompress (uchar far *);
|
|
f pascal kwSepar (char);
|
|
mh pascal LoadPortion (int, mh);
|
|
ushort pascal LocalContext (uchar *, ushort);
|
|
void pascal LocalContextFix (uchar far *);
|
|
ushort pascal MapLocalContext (ushort);
|
|
int pascal NextChar (void);
|
|
char * pascal NextContext (f);
|
|
uchar * pascal NextLine (void);
|
|
long pascal NextNum (void);
|
|
void pascal parserefs (uchar *, uchar *);
|
|
void pascal pass1 (int, char **);
|
|
void pascal pass1a (void);
|
|
void pascal pass2 (void);
|
|
void pascal pass3 (void);
|
|
void pascal passfa (void);
|
|
void pascal passfb (int);
|
|
uchar pascal PopAttr (void);
|
|
f pascal procRTF (char *, char *);
|
|
void pascal PushAttr (uchar);
|
|
void pascal rlCompress (uchar far *, ushort);
|
|
int pascal SkipDest (int,char **);
|
|
void pascal SkipSpace (void);
|
|
void pascal SkipVal (char **);
|
|
void pascal SortKw (void);
|
|
void pascal split (int, char **);
|
|
uchar * pascal trim (uchar *, f);
|
|
|
|
#ifdef DEBUG
|
|
void pascal csVal (va);
|
|
#else
|
|
#define csVal(x)
|
|
#endif
|