|
|
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.