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