home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Professional / OS2PRO194.ISO / os2 / fileutil / cawf / cawf.h < prev    next >
Text File  |  1991-04-12  |  10KB  |  259 lines

  1. /*
  2.  *    cawf.h - definitions for cawf(1)
  3.  */
  4.  
  5. /*
  6.  *    Copyright (c) 1991 Purdue University Research Foundation,
  7.  *    West Lafayette, Indiana 47907.  All rights reserved.
  8.  *
  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.
  12.  *
  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:
  16.  *
  17.  *    1. The author is not responsible for any consequences of use of
  18.  *       this software, even if they arise from flaws in it.
  19.  *
  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.
  23.  *
  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.
  27.  *
  28.  *    4. This notice may not be removed or altered.
  29.  */
  30.  
  31. #include <stdio.h>
  32. #ifdef    STDLIB
  33. #include <stdlib.h>
  34. #endif
  35. #ifdef    UNIX
  36. #include <sys/types.h>
  37. #else
  38. #include <sys\types.h>
  39. #endif
  40. #include "regexp.h"
  41.  
  42. #ifdef  UNIX
  43. #define CAWFLIB         "/Homes/abe/src/cawf"   /* UNIX library location */
  44. #else
  45. #define CAWFLIB         "c:/bin/cawf"       /* PC-DOS library location */
  46. #endif
  47.                         /* (CAWFLIB environment
  48.                          * variable over-rides it) */
  49. #define MAXEXP          30                       /* maximum expressions
  50.                           * (and TABs) */
  51. #define MAXFILES        10            /* maximum files (including
  52.                          * *.dev, common and *.mac) */
  53. #define MAXFSTK        5            /* maximum file sttack
  54.                          * (for .so) */
  55. #define MAXHYCH        10            /* maximum hyphen characters */
  56. #define MAXLINE         256            /* maximum line length */
  57. #define MAXMACRO        100            /* maximum number of macros */
  58. #define MAXMTXT         1024            /* maximum macro text lines */
  59. #define MAXNHNR        10            /* maximum ".NH" numbers
  60.                          * (but 0 not used) */
  61. #define MAXNR        50            /* maximum number reg */
  62. #define MAXOLL        512            /* maximum output line length */
  63. #define    MAXSCH        256            /* maximum special characters */
  64. #define MAXSP        25            /* maximum stack pointer (for
  65.                          * nesting of macro calls) */
  66. #define MAXSTR        100            /* maximum ".ds" strings */
  67.  
  68. /*
  69.  * Output line adjustment modes
  70.  */
  71.  
  72. #define LEFTADJ        0
  73. #define RIGHTADJ    1
  74. #define BOTHADJ        2
  75.  
  76. /*
  77.  * Error handling codes
  78.  */
  79.  
  80. #define    FATAL        0            /* fatal error */
  81. #define    LINE        0            /* display line */
  82. #define    NOLINE        1            /* don't display line */
  83. #define WARN        1            /* warning error */
  84.  
  85. /*
  86.  * Padding directions
  87.  */
  88.  
  89. #define    PADLEFT        0            /* pad from left */
  90. #define PADRIGHT    1            /* pad from right */
  91.  
  92. /*
  93.  * Pass 3 signal codes
  94.  */
  95.  
  96. #define NOBREAK        -1
  97. #define DOBREAK        -2
  98. #define MESSAGE        -3
  99.  
  100. /*
  101.  * Macro argument types
  102.  */
  103.  
  104. #define    MANMACROS    1            /* -man */
  105. #define MSMACROS    2            /* -ms */
  106.  
  107.  
  108. struct fcode {
  109.     char nm;            /* font name character */
  110.     char status;            /* status */
  111. };
  112.  
  113. struct hytab {
  114.     char font;            /* font name character */
  115.     int len;            /* effective length */
  116.     char *str;            /* value string */
  117. };
  118.  
  119. struct macro {
  120.         char name[2];            /* macro name */
  121.         int bx;                /* beginning Macrotxt[] index */
  122.     int ct;                /* index count */
  123. };
  124.  
  125. struct nbr {
  126.     char nm[2];                     /* register name */
  127.     int val;            /* value */
  128. };
  129.  
  130. struct parms {
  131.     char nm[2];                     /* parameter name */
  132.     char *cmd;                      /* pass 3 command */
  133.     int val;                        /* current value */
  134.     int prev;                       /* previous value */
  135. };
  136.  
  137. struct rx {
  138.     char *re;            /* regular expression */
  139.     struct regexp *pat;        /* compiled pattern */
  140. };
  141.  
  142. struct scale {
  143.     char nm;            /* scale factor name */
  144.     double val;            /* value */
  145. };
  146.  
  147. struct schtab {
  148.     char nm[2];            /* character name */
  149.     int len;            /* effective length */
  150.     char *str;            /* value string */
  151. };
  152.  
  153. struct str {
  154.     char nm[2];            /* string name */
  155.     char *str;            /* string value */
  156. };
  157.  
  158. extern int Adj;                /* output line adjustment mode */
  159. extern char *Aftnxt;            /* action after next line */
  160. extern char *Args[];            /* macro arguments */
  161. extern char *Argstack[];                /* stack for Expand()'s "args[]" */
  162. extern int Backc;                       /* last word ended with '\\c' */
  163. extern int Botmarg;            /* bottom margin */
  164. extern int Centering;                   /* centering count */
  165. extern int Condstack[];                 /* stack for Expand()'s "cond" */
  166. extern char *Cont;            /* continue line append */
  167. extern int Contlen;            /* continue line append length */
  168. extern int Curmx;                     /* current macro name */
  169. extern FILE *Efs;            /* error file stream pointer */
  170. extern char *Eol;            /* end of line information */
  171. extern int Eollen;            /* end of line length */
  172. extern int Err;                         /* error flag */
  173. extern char *F;                         /* field value */
  174. extern struct fcode Fcode[];        /* font codes */
  175. extern int Fill;            /* fill status */
  176. extern char Font[];                     /* current font */
  177. extern int Fph;                /* first page header status */
  178. extern int Fsp;                         /* files stack pointer (for .so) */
  179. extern char *Ftc;                       /* center footer */
  180. extern char *Ftl;                       /* left footer */
  181. extern char *Ftr;                       /* right footer */
  182. extern char *Hdc;            /* center header */
  183. extern int Hdft;            /* header/footer status */
  184. extern char *Hdl;            /* left header */
  185. extern char *Hdr;            /* right header */
  186. extern FILE *Ifs;            /* input file stream */
  187. extern FILE *Ifs_stk[];            /* Ifs stack */
  188. extern int Ind;                         /* indentation amount */
  189. extern char *Inname;                    /* input file name */
  190. extern char *Inn_stk[];            /* Inname stack */
  191. extern struct hytab Hychar[];           /* hyphen characters */
  192. extern int LL;                /* line length */
  193. extern char Line[];                     /* input line */
  194. extern int Lockil;            /* pass 2 line number is locked
  195.                      * (processing is inside macro) */
  196. extern int Marg;                        /* macro argument - man, ms, etc. */
  197. extern struct macro Macrotab[];         /* macro table */
  198. extern int Macrostack[];                /* stack for Expand()'s "macro" */
  199. extern char *Macrotxt[];                /* macro text */
  200. extern int Mtx;                         /* macro text index */
  201. extern int Mxstack[];                   /* stack for Expand()'s "mx" */
  202. extern int Nhnr[];            /* ".NH" numbers */
  203. extern int Nhy;                         /* number of Hychar[] entries */
  204. extern int Nleftstack[];                /* stack for Expand()'s "nleft" */
  205. extern int Nmac;                        /* number of macros */
  206. extern int Nnr;                         /* number of Numb[] entries */
  207. extern int Nospmode;            /* no space mode */
  208. extern int Nparms;                      /* number of Parms[] entries */
  209. extern int NR;                          /* number of record, ala awk */
  210. extern int NR_stk[];            /* NR stack */
  211. extern int Nsch;                        /* number of Schar[] entries */
  212. extern int Nstr;                        /* number of entries in Str[] */
  213. extern int Ntabs;            /* number of TAB positions */
  214. extern struct nbr Numb[];        /* number registers */
  215. extern int Nxtln;            /* next line number */
  216. extern int Outll;            /* output line length */
  217. extern char Outln[];            /* output line */
  218. extern int Outlx;            /* output line index */
  219. extern int P2il;                        /* pass 2 input line number */
  220. extern char *P2name;                    /* pass 2 input file name */
  221. extern int P3fill;            /* pass 3 fill status */
  222. extern int Padchar[];            /* padding character locations */
  223. extern int Padfrom;            /* which end to pad from */
  224. extern int Padx;            /* Padchar[] index */
  225. extern struct parms Parms[];            /* parameter registers */
  226. extern char Pass1ln[];                  /* pass 1 output line */
  227. extern char Pass2ln[];                  /* pass 2 output line */
  228. extern struct rx Pat[];            /* compiled regexp patterns */
  229. extern int Pglen;            /* page length */
  230. extern int Pgoff;            /* page offset */
  231. extern char *Pname;                     /* program name */
  232. extern char Prevfont;                   /* previous font */
  233. extern int Ptrstack[];                  /* stack for Expand()'s "ptr" */
  234. extern struct scale Scale[];        /* scaling factors */
  235. extern double Scalen;                   /* 'n' scaling factor */
  236. extern double Scaleu;                   /* 'u' scaling factor */
  237. extern double Scalev;                   /* 'v' scaling factor */
  238. extern struct schtab Schar[];           /* special characters */
  239. extern int Sp;                /* stack pointer */
  240. extern struct str Str[];        /* ".ds" strings */
  241. extern int Sx;                /* string index */
  242. extern int Tabs[];            /* TAB positions */
  243. extern int Thispg;            /* this page number */
  244. extern int Tind;            /* temporary indentation amount */
  245. extern int Topmarg;            /* top margin */
  246. extern int Uhyph;            /* hyphen usage state */
  247. extern int Vspace;                      /* vertical (inter-text-line) spacing */
  248. extern char Word[];            /* pass 2 word buffer */
  249. extern int Wordl;                       /* effective length of Word[] */
  250. extern int Wordx;                       /* Word[] index */
  251.  
  252. char *Asmcode(), *Field(), *Findstr(), *Newstr(), *New2str();
  253. void  Error(), Macro(), Pass2(), Pass3();
  254. regexp *Rxpat();
  255.  
  256. #ifndef    STDLIB
  257. char *getenv(), *malloc(), *strchr(), *strrchr();
  258. #endif
  259.