minor fixes for safecopy & safemap tests
[minix.git] / commands / cawf / cawf.h
blob3e3851838f8d9682c7d83f28f329b571abbf3b29
1 /*
2 * cawf.h - definitions for cawf(1)
3 */
5 /*
6 * Copyright (c) 1991 Purdue University Research Foundation,
7 * West Lafayette, Indiana 47907. All rights reserved.
9 * Written by Victor A. Abell <abe@mace.cc.purdue.edu>, Purdue
10 * University Computing Center. Not derived from licensed software;
11 * derived from awf(1) by Henry Spencer of the University of Toronto.
13 * Permission is granted to anyone to use this software for any
14 * purpose on any computer system, and to alter it and redistribute
15 * it freely, subject to the following restrictions:
17 * 1. The author is not responsible for any consequences of use of
18 * this software, even if they arise from flaws in it.
20 * 2. The origin of this software must not be misrepresented, either
21 * by explicit claim or by omission. Credits must appear in the
22 * documentation.
24 * 3. Altered versions must be plainly marked as such, and must not
25 * be misrepresented as being the original software. Credits must
26 * appear in the documentation.
28 * 4. This notice may not be removed or altered.
31 #include <stdio.h>
32 #ifdef UNIX
33 #include <sys/types.h>
34 #else
35 #include <sys\types.h>
36 #endif
37 #include "regexp.h"
38 #include "cawflib.h"
39 #include "proto.h"
41 #define DEVCONFIG "device.cf" /* device configuration file */
42 #define ESC '\033' /* ESCape character */
43 #define MAXEXP 30 /* maximum expressions
44 * (and TABs) */
45 #define MAXFSTK 5 /* maximum file stack
46 * (for .so) */
47 #define MAXHYCH 10 /* maximum hyphen characters */
48 #define MAXLINE 512 /* maximum line length */
49 #define MAXMACRO 100 /* maximum number of macros */
50 #define MAXMTXT 1024 /* maximum macro text lines */
51 #define MAXNHNR 10 /* maximum ".NH" numbers
52 * (but 0 not used) */
53 #define MAXNR 50 /* maximum number reg */
54 #define MAXOLL 512 /* maximum output line length */
55 #define MAXSCH 256 /* maximum special characters */
56 #define MAXSP 25 /* maximum stack pointer (for
57 * nesting of macro calls) */
58 #define MAXSTR 100 /* maximum ".ds" strings */
61 * Output line adjustment modes
64 #define LEFTADJ 0
65 #define RIGHTADJ 1
66 #define BOTHADJ 2
69 * Error handling codes
72 #define FATAL 0 /* fatal error */
73 #define LINE 0 /* display line */
74 #define NOLINE 1 /* don't display line */
75 #define WARN 1 /* warning error */
78 * Padding directions
81 #define PADLEFT 0 /* pad from left */
82 #define PADRIGHT 1 /* pad from right */
85 * Pass 3 signal codes
88 #define NOBREAK -1
89 #define DOBREAK -2
90 #define MESSAGE -3
93 * Macro argument types
96 #define MANMACROS 1 /* -man */
97 #define MSMACROS 2 /* -ms */
100 struct fcode {
101 unsigned char nm; /* font name character */
102 unsigned char status; /* status */
105 struct fontstr { /* font control strings */
107 unsigned char *i; /* font initialization string */
108 int il; /* length of *i */
109 unsigned char *b; /* bold */
110 int bl; /* length of *bb */
111 unsigned char *it; /* italic */
112 int itl; /* length of *itb */
113 unsigned char *r; /* roman string */
114 int rl; /* length of *r */
117 struct hytab {
118 unsigned char font; /* font name character */
119 int len; /* effective length */
120 unsigned char *str; /* value string */
123 struct macro {
124 unsigned char name[2]; /* macro name */
125 int bx; /* beginning Macrotxt[] index */
126 int ct; /* index count */
129 struct nbr {
130 unsigned char nm[2]; /* register name */
131 int val; /* value */
134 struct parms {
135 char nm[2]; /* parameter name */
136 char *cmd; /* pass 3 command */
137 int val; /* current value */
138 int prev; /* previous value */
141 struct rx {
142 char *re; /* regular expression */
143 struct regexp *pat; /* compiled pattern */
146 struct scale {
147 unsigned char nm; /* scale factor name */
148 double val; /* value */
151 struct schtab {
152 unsigned char nm[2]; /* character name */
153 int len; /* effective length */
154 unsigned char *str; /* value string */
157 struct str {
158 unsigned char nm[2]; /* string name */
159 unsigned char *str; /* string value */
162 extern int Adj; /* output line adjustment mode */
163 extern unsigned char *Aftnxt; /* action after next line */
164 extern unsigned char *Args[]; /* macro arguments */
165 extern unsigned char *Argstack[]; /* stack for Expand()'s "args[]" */
166 extern int Backc; /* last word ended with '\\c' */
167 extern int Botmarg; /* bottom margin */
168 extern int Centering; /* centering count */
169 extern int Condstack[]; /* stack for Expand()'s "cond" */
170 extern unsigned char *Cont; /* continue line append */
171 extern int Contlen; /* continue line append length */
172 extern int Curmx; /* current macro name */
173 extern char *Device; /* output device name */
174 extern char *Devconf; /* device configuration file path */
175 extern char *Devfont; /* output device font */
176 extern int Divert; /* diversion status */
177 extern FILE *Efs; /* error file stream pointer */
178 extern unsigned char *Eol; /* end of line information */
179 extern int Eollen; /* end of line length */
180 extern int Err; /* error flag */
181 extern unsigned char *F; /* field value */
182 extern struct fcode Fcode[]; /* font codes */
183 extern int Fill; /* fill status */
184 extern unsigned char Font[]; /* current font */
185 extern int Fontctl; /* output font control */
186 extern char Fontstat; /* output font status */
187 extern int Fph; /* first page header status */
188 extern int Fsp; /* files stack pointer (for .so) */
189 extern struct fontstr Fstr; /* font control strings */
190 extern unsigned char *Ftc; /* center footer */
191 extern unsigned char *Ftl; /* left footer */
192 extern unsigned char *Ftr; /* right footer */
193 extern unsigned char *Hdc; /* center header */
194 extern int Hdft; /* header/footer status */
195 extern unsigned char *Hdl; /* left header */
196 extern unsigned char *Hdr; /* right header */
197 extern FILE *Ifs; /* input file stream */
198 extern FILE *Ifs_stk[]; /* Ifs stack */
199 extern int Ind; /* indentation amount */
200 extern unsigned char *Inname; /* input file name */
201 extern unsigned char *Inn_stk[]; /* Inname stack */
202 extern struct hytab Hychar[]; /* hyphen characters */
203 extern int LL; /* line length */
204 extern unsigned char Line[]; /* input line */
205 extern int Lockil; /* pass 2 line number is locked
206 * (processing is inside macro) */
207 extern int Marg; /* macro argument - man, ms, etc. */
208 extern struct macro Macrotab[]; /* macro table */
209 extern int Macrostack[]; /* stack for Expand()'s "macro" */
210 extern unsigned char *Macrotxt[]; /* macro text */
211 extern int Mtx; /* macro text index */
212 extern int Mxstack[]; /* stack for Expand()'s "mx" */
213 extern int Nhnr[]; /* ".NH" numbers */
214 extern int Nhy; /* number of Hychar[] entries */
215 extern int Nleftstack[]; /* stack for Expand()'s "nleft" */
216 extern int Nmac; /* number of macros */
217 extern int Nnr; /* number of Numb[] entries */
218 extern int Nospmode; /* no space mode */
219 extern int Nparms; /* number of Parms[] entries */
220 extern int NR; /* number of record, ala awk */
221 extern int NR_stk[]; /* NR stack */
222 extern int Nsch; /* number of Schar[] entries */
223 extern int Nstr; /* number of entries in Str[] */
224 extern int Ntabs; /* number of TAB positions */
225 extern struct nbr Numb[]; /* number registers */
226 extern int Nxtln; /* next line number */
227 extern char *optarg; /* getopt(3) argument pointer */
228 extern int optind; /* getopt(3) index */
229 extern int Outll; /* output line length */
230 extern unsigned char Outln[]; /* output line */
231 extern int Outlx; /* output line index */
232 extern int P2il; /* pass 2 input line number */
233 extern unsigned char *P2name; /* pass 2 input file name */
234 extern int P3fill; /* pass 3 fill status */
235 extern int Padchar[]; /* padding character locations */
236 extern int Padfrom; /* which end to pad from */
237 extern int Padx; /* Padchar[] index */
238 extern struct parms Parms[]; /* parameter registers */
239 extern unsigned char Pass1ln[]; /* pass 1 output line */
240 extern unsigned char Pass2ln[]; /* pass 2 output line */
241 extern struct rx Pat[]; /* compiled regexp patterns */
242 extern int Pglen; /* page length */
243 extern int Pgoff; /* page offset */
244 extern char *Pname; /* program name */
245 extern unsigned char Prevfont; /* previous font */
246 extern int Ptrstack[]; /* stack for Expand()'s "ptr" */
247 extern struct scale Scale[]; /* scaling factors */
248 extern double Scalen; /* 'n' scaling factor */
249 extern double Scaleu; /* 'u' scaling factor */
250 extern double Scalev; /* 'v' scaling factor */
251 extern struct schtab Schar[]; /* special characters */
252 extern int Sp; /* stack pointer */
253 extern struct str Str[]; /* ".ds" strings */
254 extern int Sx; /* string index */
255 extern int Tabs[]; /* TAB positions */
256 extern int Thispg; /* this page number */
257 extern int Tind; /* temporary indentation amount */
258 extern int Topmarg; /* top margin */
259 extern unsigned char *Trtbl; /* .tr table */
260 extern int Uhyph; /* hyphen usage state */
261 extern int Vspace; /* vertical (inter-text-line) spacing */
262 extern unsigned char Word[]; /* pass 2 word buffer */
263 extern int Wordl; /* effective length of Word[] */
264 extern int Wordx; /* Word[] index */
265 extern int Dowarn; /* Enables warnings when true */