|
|
1.1 ! root 1: /* ! 2: * roff.h ! 3: * Nroff/Troff. ! 4: * Header file. ! 5: */ ! 6: ! 7: #include <stdio.h> ! 8: #include "code.h" ! 9: #include "codebug.h" ! 10: #include "div.h" ! 11: #include "env.h" ! 12: #include "escapes.h" ! 13: #include "fonts.h" ! 14: #include "hyphen.h" ! 15: #include "reg.h" ! 16: #include "request.h" ! 17: #include "str.h" ! 18: ! 19: #define VERSION "4.0.5" ! 20: ! 21: /* Buffer sizes. */ ! 22: #define ABFSIZE 256 /* Size of argument buffer */ ! 23: #define ASCSIZE 128 /* Size of ASCII character set */ ! 24: #define CBFSIZE 128 /* Size of char buffer */ ! 25: #ifdef GEMDOS ! 26: #define DBFSIZE 128 /* Size of disk buffer */ ! 27: #else ! 28: #define DBFSIZE 128 /* Size of disk buffer */ ! 29: #endif ! 30: #define MSCSIZE 256 /* Size of miscellaneous buffer */ ! 31: ! 32: /* Types of justification. */ ! 33: #define NJUS 0 /* None (marks end of table) */ ! 34: #define LJUS 1 /* Left justification */ ! 35: #define CJUS 2 /* Centre justification */ ! 36: #define RJUS 3 /* Right justification */ ! 37: #define FJUS 4 /* Filled justification */ ! 38: ! 39: /* ! 40: * Unit measures. ! 41: * These use constants defined as globals in tty.c (nroff) or output.c (troff). ! 42: * The values are different for nroff and troff, ! 43: * but the same unlinked object works for both. ! 44: * Changing these to different manifest constants with a conditional ! 45: * compilation switch would require different unlinked objects. ! 46: */ ! 47: #define SMCENT ((long) 50*sinmul) /* Centimetre (mul) */ ! 48: #define SDCENT ((long) 127*sindiv) /* Centimetre (div) */ ! 49: #define SMEMSP ((long) psz*semmul) /* Em space (mul) */ ! 50: #define SDEMSP ((long) semdiv) /* Em space (div) */ ! 51: #define SMENSP ((long) psz*senmul) /* En space (mul) */ ! 52: #define SDENSP ((long) sendiv) /* En space (div) */ ! 53: #define SMHRES ((long) shrmul) /* Horizontal resolution (mul) */ ! 54: #define SDHRES ((long) shrdiv) /* Horizontal resolution (div) */ ! 55: #define SMINCH ((long) sinmul) /* Inch (mul) */ ! 56: #define SDINCH ((long) sindiv) /* Inch (div) */ ! 57: #define SMNARS ((long) psz*snrmul) /* Narrow space (mul) */ ! 58: #define SDNARS ((long) snrdiv) /* Narrow space (div) */ ! 59: #define SMPICA ((long) sinmul) /* Pica (mul) */ ! 60: #define SDPICA ((long) 6*sindiv) /* Pica (div) */ ! 61: #define SMPOIN ((long) sinmul) /* Point (mul) */ ! 62: #define SDPOIN ((long) 72*sindiv) /* Point (div) */ ! 63: #define SMUNIT ((long) 1) /* Unit (mul) */ ! 64: #define SDUNIT ((long) 1) /* Unit (div) */ ! 65: #define SMVEMS ((long) psz) /* Vertical em space (mul) */ ! 66: #define SDVEMS ((long) 1) /* Vertical em space (div) */ ! 67: #define SMVLSP ((long) vls) /* Line space (mul) */ ! 68: #define SDVLSP ((long) 1) /* Line space (div) */ ! 69: #define SMVRES ((long) svrmul) /* Vertical resolution (mul) */ ! 70: #define SDVRES ((long) svrdiv) /* Vertical resolution (div) */ ! 71: ! 72: /* Miscellaneous. */ ! 73: #define NROFF 1 /* Program is nroff */ ! 74: #define TROFF 2 /* Program is troff */ ! 75: #define IESTACKSIZE 20 /* .ie stack size */ ! 76: #define INFINITY 32767 ! 77: ! 78: /* Kludge to avoid hanging PostScript printer on very large files. */ ! 79: #define ZKLUDGE 1 /* Include Zflag kludge */ ! 80: #if ZKLUDGE ! 81: #define ZPAGES 25 /* Default Zflag value */ ! 82: #endif ! 83: ! 84: /* System-dependent directory and file names. */ ! 85: #ifdef MSDOS ! 86: /* MSDOS */ ! 87: #define LIBDIR "\\usr\\lib\\roff\\" /* Configuration directory */ ! 88: #define NRDIR "nroff\\" /* nroff subdirectory */ ! 89: #define POST_L "_post_land" /* Landscape postfix filename */ ! 90: #define POST_P "_post" /* Portrait postfix filename */ ! 91: #define PRE_L "_pre_land" /* Landscape prefix filename */ ! 92: #define PRE_P "_pre" /* Portrait prefix filename */ ! 93: #define TMACDIR "\\usr\\lib\\" /* Macro library directory */ ! 94: #define TMACFMT "%s.tmc" /* Macro filename format */ ! 95: #define TMPLATE "roffX.tmp" /* Temp file template */ ! 96: #define TPCLDIR "troff_pcl\\" /* PCL troff subdirectory */ ! 97: #define TPSDIR "troff_ps\\" /* PS troff subdirectory */ ! 98: #else ! 99: #ifdef GEMDOS ! 100: /* GEMDOS */ ! 101: #define TMACDIR "\\bin\\" ! 102: #define TMACFMT "%s.tmc" ! 103: #else ! 104: /* COHERENT */ ! 105: #define LIBDIR "/usr/lib/roff/" /* Configuration directory */ ! 106: #define NRDIR "nroff/" /* nroff subdirectory */ ! 107: #define POST_L ".post_land" /* Landscape postfix filename */ ! 108: #define POST_P ".post" /* Portrait postfix filename */ ! 109: #define PRE_L ".pre_land" /* Landscape prefix filename */ ! 110: #define PRE_P ".pre" /* Portrait prefix filename */ ! 111: #define TMACDIR "/usr/lib/" /* Macro library directory */ ! 112: #define TMACFMT "tmac.%s" /* Macro filename format */ ! 113: #define TMPLATE "/tmp/rofXXXXXX" /* Temp file template */ ! 114: #define TPCLDIR "troff_pcl/" /* PCL troff subdirectory */ ! 115: #define TPSDIR "troff_ps/" /* PS troff subdirectory */ ! 116: #endif ! 117: #endif ! 118: ! 119: /* Roman numeral table. */ ! 120: typedef struct { ! 121: char o_digit; /* Offset for digit */ ! 122: char o_state; /* Next state */ ! 123: } ROM; ! 124: ! 125: /* Special characters. */ ! 126: typedef struct special { ! 127: struct special *spc_link; /* Link to next */ ! 128: char spc_name[2]; /* Name */ ! 129: char *spc_val; /* Value */ ! 130: } SPECIAL; ! 131: ! 132: /* ! 133: * Device dependent variables, ! 134: * defined in tty.c (nroff) or output.c (troff). ! 135: */ ! 136: extern int ntroff; /* Program type */ ! 137: extern long semmul; /* Multiplier for em space */ ! 138: extern long semdiv; /* Divisor for em space */ ! 139: extern long senmul; /* Multiplier for en space */ ! 140: extern long sendiv; /* Divisor for en space */ ! 141: extern long shrmul; /* Horizontal resolution (mul) */ ! 142: extern long shrdiv; /* Horizontal resolution (div) */ ! 143: extern long sinmul; /* Multiplier for inch */ ! 144: extern long sindiv; /* Divisor for inch */ ! 145: extern long snrmul; /* Narrow space (mul) */ ! 146: extern long snrdiv; /* Narrow space (div) */ ! 147: extern long svrmul; /* Vertical resolution (mul) */ ! 148: extern long svrdiv; /* Vertical resolution (div) */ ! 149: ! 150: /* Global variables, defined in extern.c. */ ! 151: extern int A_reg; /* .A register */ ! 152: extern int a_reg; /* .a register */ ! 153: extern char *argv0; /* "nroff" or "troff" */ ! 154: extern int bracelevel; /* Level of \{ \} nesting */ ! 155: extern int byeflag; /* True when exiting */ ! 156: extern int dbglvl; /* Debug level */ ! 157: extern int dflag; /* Debug flag */ ! 158: extern char diskbuf[DBFSIZE]; /* Disk buffer for temp file */ ! 159: extern char endtrap[2]; /* End macro name */ ! 160: extern char esc; /* Escape character */ ! 161: extern int escflag; /* Last character was escaped */ ! 162: extern int iestack[IESTACKSIZE]; /* .ie condition stack */ ! 163: extern int iestackx; /* .ie condition stack index */ ! 164: extern int infalse; /* True in false conditional */ ! 165: extern int lflag; /* Landscape mode */ ! 166: extern char miscbuf[MSCSIZE]; /* Miscellaneous buffer */ ! 167: extern int nbrflag; /* Don't allow command to break */ ! 168: extern unsigned npn; /* Next page number */ ! 169: extern int n_reg; /* .n register */ ! 170: extern int oldbracelevel; /* Old level of \{ \} nesting */ ! 171: extern int oldpof; /* Old page offset */ ! 172: extern unsigned pct; /* Page counter */ ! 173: extern int pflag; /* Generate PostScript output */ ! 174: extern unsigned pgl; /* Page length */ ! 175: extern int pof; /* Page offset */ ! 176: extern SPECIAL *spc_list; /* Special characters */ ! 177: extern int svs; /* Saved space */ ! 178: extern FILE *tmp; /* Temp file pointer */ ! 179: extern unsigned long tmpseek; /* Pointer into temp file */ ! 180: extern int T_reg; /* .T register */ ! 181: extern int varsp; /* Variable spacing */ ! 182: extern int xflag; /* Suppress page eject on exit */ ! 183: #if ZKLUDGE ! 184: extern int Zflag; /* PS save/restore kludge */ ! 185: #endif ! 186: ! 187: /* Global tables, defined in tables.c. */ ! 188: extern char esctab[]; ! 189: extern char *mapfont[]; ! 190: extern REQ reqtab[]; ! 191: extern ROM romtab[]; ! 192: extern char trantab[]; ! 193: ! 194: /* Functions. */ ! 195: extern STR *allstr(); ! 196: extern char *duplstr(); ! 197: extern REG *findreg(); ! 198: extern void font_display(); ! 199: extern REG *getnreg(); ! 200: extern REG *makereg(); ! 201: extern char *nalloc(); ! 202: extern char *nextarg(); ! 203: extern void resetdev(); ! 204: extern SPECIAL *spc_find(); ! 205: ! 206: /* Library functions. */ ! 207: extern char *index(); ! 208: extern void free(); ! 209: extern long lseek(); ! 210: extern char *malloc(); ! 211: extern char *realloc(); ! 212: extern char *strcpy(); ! 213: ! 214: /* end of roff.h */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.