cawf.h

Go to the documentation of this file.
00001 /*
00002  *      cawf.h - definitions for cawf(1)
00003  */
00004 
00005 /*
00006  *      Copyright (c) 1991 Purdue University Research Foundation,
00007  *      West Lafayette, Indiana 47907.  All rights reserved.
00008  *
00009  *      Written by Victor A. Abell <abe@mace.cc.purdue.edu>,  Purdue
00010  *      University Computing Center.  Not derived from licensed software;
00011  *      derived from awf(1) by Henry Spencer of the University of Toronto.
00012  *
00013  *      Permission is granted to anyone to use this software for any
00014  *      purpose on any computer system, and to alter it and redistribute
00015  *      it freely, subject to the following restrictions:
00016  *
00017  *      1. The author is not responsible for any consequences of use of
00018  *         this software, even if they arise from flaws in it.
00019  *
00020  *      2. The origin of this software must not be misrepresented, either
00021  *         by explicit claim or by omission.  Credits must appear in the
00022  *         documentation.
00023  *
00024  *      3. Altered versions must be plainly marked as such, and must not
00025  *         be misrepresented as being the original software.  Credits must
00026  *         appear in the documentation.
00027  *
00028  *      4. This notice may not be removed or altered.
00029  */
00030 
00031 #include <stdio.h>
00032 #ifdef  UNIX
00033 #include <sys/types.h>
00034 #else
00035 #include <sys\types.h>
00036 #endif
00037 #include "regexp.h"
00038 #include "cawflib.h"
00039 #include "proto.h"
00040 
00041 #define DEVCONFIG       "device.cf"             /* device configuration file */
00042 #define ESC             '\033'                  /* ESCape character */
00043 #define MAXEXP          30                      /* maximum expressions
00044                                                  * (and TABs) */
00045 #define MAXFSTK         5                       /* maximum file stack
00046                                                  * (for .so) */
00047 #define MAXHYCH         10                      /* maximum hyphen characters */
00048 #define MAXLINE         512                     /* maximum line length */
00049 #define MAXMACRO        100                     /* maximum number of macros */
00050 #define MAXMTXT         1024                    /* maximum macro text lines */
00051 #define MAXNHNR         10                      /* maximum ".NH" numbers
00052                                                  * (but 0 not used) */
00053 #define MAXNR           50                      /* maximum number reg */
00054 #define MAXOLL          512                     /* maximum output line length */
00055 #define MAXSCH          256                     /* maximum special characters */
00056 #define MAXSP           25                      /* maximum stack pointer (for
00057                                                  * nesting of macro calls) */
00058 #define MAXSTR          100                     /* maximum ".ds" strings */
00059 
00060 /*
00061  * Output line adjustment modes
00062  */
00063 
00064 #define LEFTADJ         0
00065 #define RIGHTADJ        1
00066 #define BOTHADJ         2
00067 
00068 /*
00069  * Error handling codes
00070  */
00071 
00072 #define FATAL           0                       /* fatal error */
00073 #define LINE            0                       /* display line */
00074 #define NOLINE          1                       /* don't display line */
00075 #define WARN            1                       /* warning error */
00076 
00077 /*
00078  * Padding directions
00079  */
00080 
00081 #define PADLEFT         0                       /* pad from left */
00082 #define PADRIGHT        1                       /* pad from right */
00083 
00084 /*
00085  * Pass 3 signal codes
00086  */
00087 
00088 #define NOBREAK         -1
00089 #define DOBREAK         -2
00090 #define MESSAGE         -3
00091 
00092 /*
00093  * Macro argument types
00094  */
00095 
00096 #define MANMACROS       1                       /* -man */
00097 #define MSMACROS        2                       /* -ms */
00098 
00099 
00100 struct fcode {
00101         unsigned char nm;               /* font name character */
00102         unsigned char status;           /* status */
00103 };
00104 
00105 struct fontstr {                        /* font control strings */
00106 
00107         unsigned char *i;               /* font initialization string */
00108         int il;                         /* length of *i */ 
00109         unsigned char *b;               /* bold */
00110         int bl;                         /* length of *bb */
00111         unsigned char *it;              /* italic */
00112         int itl;                        /* length of *itb */
00113         unsigned char *r;               /* roman string */
00114         int rl;                         /* length of *r */
00115 }; 
00116 
00117 struct hytab {
00118         unsigned char font;             /* font name character */
00119         int len;                        /* effective length */
00120         unsigned char *str;             /* value string */
00121 };
00122 
00123 struct macro {
00124         unsigned char name[2];          /* macro name */
00125         int bx;                         /* beginning Macrotxt[] index */
00126         int ct;                         /* index count */
00127 };
00128 
00129 struct nbr {
00130         unsigned char nm[2];            /* register name */
00131         int val;                        /* value */
00132 };
00133 
00134 struct parms {
00135         char nm[2];                     /* parameter name */
00136         char *cmd;                      /* pass 3 command */
00137         int val;                        /* current value */
00138         int prev;                       /* previous value */
00139 };
00140 
00141 struct rx {
00142         char *re;                       /* regular expression */
00143         struct regexp *pat;             /* compiled pattern */
00144 };
00145 
00146 struct scale {
00147         unsigned char nm;               /* scale factor name */
00148         double val;                     /* value */
00149 };
00150 
00151 struct schtab {
00152         unsigned char nm[2];            /* character name */
00153         int len;                        /* effective length */
00154         unsigned char *str;             /* value string */
00155 };
00156 
00157 struct str {
00158         unsigned char nm[2];            /* string name */
00159         unsigned char *str;             /* string value */
00160 };
00161 
00162 extern int Adj;                         /* output line adjustment mode */
00163 extern unsigned char *Aftnxt;           /* action after next line */
00164 extern unsigned char *Args[];           /* macro arguments */
00165 extern unsigned char *Argstack[];       /* stack for Expand()'s "args[]" */
00166 extern int Backc;                       /* last word ended with '\\c' */
00167 extern int Botmarg;                     /* bottom margin */
00168 extern int Centering;                   /* centering count */
00169 extern int Condstack[];                 /* stack for Expand()'s "cond" */
00170 extern unsigned char *Cont;             /* continue line append */
00171 extern int Contlen;                     /* continue line append length */
00172 extern int Curmx;                       /* current macro name */
00173 extern char *Device;                    /* output device name */
00174 extern char *Devconf;                   /* device configuration file path */
00175 extern char *Devfont;                   /* output device font */
00176 extern int Divert;                      /* diversion status */
00177 extern FILE *Efs;                       /* error file stream pointer */
00178 extern unsigned char *Eol;              /* end of line information */
00179 extern int Eollen;                      /* end of line length */
00180 extern int Err;                         /* error flag */
00181 extern unsigned char *F;                /* field value */
00182 extern struct fcode Fcode[];            /* font codes */
00183 extern int Fill;                        /* fill status */
00184 extern unsigned char Font[];            /* current font */
00185 extern int Fontctl;                     /* output font control */
00186 extern char Fontstat;                   /* output font status */
00187 extern int Fph;                         /* first page header status */
00188 extern int Fsp;                         /* files stack pointer (for .so) */
00189 extern struct fontstr Fstr;             /* font control strings */
00190 extern unsigned char *Ftc;              /* center footer */
00191 extern unsigned char *Ftl;              /* left footer */
00192 extern unsigned char *Ftr;              /* right footer */
00193 extern unsigned char *Hdc;              /* center header */
00194 extern int Hdft;                        /* header/footer status */
00195 extern unsigned char *Hdl;              /* left header */
00196 extern unsigned char *Hdr;              /* right header */
00197 extern FILE *Ifs;                       /* input file stream */
00198 extern FILE *Ifs_stk[];                 /* Ifs stack */
00199 extern int Ind;                         /* indentation amount */
00200 extern unsigned char *Inname;           /* input file name */
00201 extern unsigned char *Inn_stk[];        /* Inname stack */
00202 extern struct hytab Hychar[];           /* hyphen characters */
00203 extern int LL;                          /* line length */
00204 extern unsigned char Line[];            /* input line */
00205 extern int Lockil;                      /* pass 2 line number is locked
00206                                          * (processing is inside macro) */
00207 extern int Marg;                        /* macro argument - man, ms, etc. */
00208 extern struct macro Macrotab[];         /* macro table */
00209 extern int Macrostack[];                /* stack for Expand()'s "macro" */
00210 extern unsigned char *Macrotxt[];       /* macro text */
00211 extern int Mtx;                         /* macro text index */
00212 extern int Mxstack[];                   /* stack for Expand()'s "mx" */
00213 extern int Nhnr[];                      /* ".NH" numbers */
00214 extern int Nhy;                         /* number of Hychar[] entries */
00215 extern int Nleftstack[];                /* stack for Expand()'s "nleft" */
00216 extern int Nmac;                        /* number of macros */
00217 extern int Nnr;                         /* number of Numb[] entries */
00218 extern int Nospmode;                    /* no space mode */
00219 extern int Nparms;                      /* number of Parms[] entries */
00220 extern int NR;                          /* number of record, ala awk */
00221 extern int NR_stk[];                    /* NR stack */
00222 extern int Nsch;                        /* number of Schar[] entries */
00223 extern int Nstr;                        /* number of entries in Str[] */
00224 extern int Ntabs;                       /* number of TAB positions */
00225 extern struct nbr Numb[];               /* number registers */
00226 extern int Nxtln;                       /* next line number */
00227 extern char *optarg;                    /* getopt(3) argument pointer */
00228 extern int optind;                      /* getopt(3) index */
00229 extern int Outll;                       /* output line length */
00230 extern unsigned char Outln[];           /* output line */
00231 extern int Outlx;                       /* output line index */
00232 extern int P2il;                        /* pass 2 input line number */
00233 extern unsigned char *P2name;           /* pass 2 input file name */
00234 extern int P3fill;                      /* pass 3 fill status */
00235 extern int Padchar[];                   /* padding character locations */
00236 extern int Padfrom;                     /* which end to pad from */
00237 extern int Padx;                        /* Padchar[] index */
00238 extern struct parms Parms[];            /* parameter registers */
00239 extern unsigned char Pass1ln[];         /* pass 1 output line */
00240 extern unsigned char Pass2ln[];         /* pass 2 output line */
00241 extern struct rx Pat[];                 /* compiled regexp patterns */
00242 extern int Pglen;                       /* page length */
00243 extern int Pgoff;                       /* page offset */
00244 extern char *Pname;                     /* program name */
00245 extern unsigned char Prevfont;          /* previous font */
00246 extern int Ptrstack[];                  /* stack for Expand()'s "ptr" */
00247 extern struct scale Scale[];            /* scaling factors */
00248 extern double Scalen;                   /* 'n' scaling factor */
00249 extern double Scaleu;                   /* 'u' scaling factor */
00250 extern double Scalev;                   /* 'v' scaling factor */
00251 extern struct schtab Schar[];           /* special characters */
00252 extern int Sp;                          /* stack pointer */
00253 extern struct str Str[];                /* ".ds" strings */
00254 extern int Sx;                          /* string index */
00255 extern int Tabs[];                      /* TAB positions */
00256 extern int Thispg;                      /* this page number */
00257 extern int Tind;                        /* temporary indentation amount */
00258 extern int Topmarg;                     /* top margin */
00259 extern unsigned char *Trtbl;            /* .tr table */
00260 extern int Uhyph;                       /* hyphen usage state */
00261 extern int Vspace;                      /* vertical (inter-text-line) spacing */
00262 extern unsigned char Word[];            /* pass 2 word buffer */
00263 extern int Wordl;                       /* effective length of Word[] */
00264 extern int Wordx;                       /* Word[] index */
00265 extern int Dowarn;                      /* Enables warnings when true */

Generated on Fri Apr 14 22:56:46 2006 for minix by  doxygen 1.4.6