Subversion Repositories planix.SVN

Rev

Rev 2 | Blame | Compare with Previous | Last modification | View Log | RSS feed

#include <stdio.h>
#include "tdef.h"
#include "fns.h"
#include "ext.h"

char    termtab[NS];    /* term type added in ptinit() */
char    fontdir[NS];    /* added in casefp; not used by nroff */
char    devname[20];    /* default output device */

Numtab numtab[NN] = {
        { PAIR('%', 0) },
        { PAIR('n', 'l') },
        { PAIR('y', 'r') },
        { PAIR('h', 'p') },
        { PAIR('c', 't') },
        { PAIR('d', 'n') },
        { PAIR('m', 'o') },
        { PAIR('d', 'y') },
        { PAIR('d', 'w') },
        { PAIR('l', 'n') },
        { PAIR('d', 'l') },
        { PAIR('s', 't') },
        { PAIR('s', 'b') },
        { PAIR('c', '.') },
        { PAIR('$', '$') },
};


int     alphabet        = 256;  /* latin-1 */
int     pto     = 10000;
int     pfrom   = 1;
int     print   = 1;
char    nextf[NS]       = TMACDIR;
char    mfiles[NMF][NS];
int     nmfi    = 0;
int     oldbits = -1;
int     init    = 1;
int     fc      = IMP;  /* field character */
int     eschar  = '\\';
int     pl;
int     po;
FILE    *ptid   = stdout;

int     dfact   = 1;
int     dfactd  = 1;
int     res     = 1;
int     smnt    = 0;    /* beginning of special fonts */
int     ascii   = 0;    /* ascii normally off for troff, on for nroff;  -a turns on */
int     lg;
int     pnlist[NPN] = { -1 };


int     *pnp    = pnlist;
int     npn     = 1;
int     npnflg  =  1;
int     dpn     =  -1;
int     totout  =  1;
int     ulfont  =  ULFONT;
int     tabch   =  TAB;
int     ldrch   =  LEADER;


Contab contab[NM] = {
        C(PAIR('d', 's'), caseds),
        C(PAIR('a', 's'), caseas),
        C(PAIR('s', 'p'), casesp),
        C(PAIR('f', 't'), caseft),
        C(PAIR('p', 's'), caseps),
        C(PAIR('v', 's'), casevs),
        C(PAIR('n', 'r'), casenr),
        C(PAIR('i', 'f'), caseif),
        C(PAIR('i', 'e'), caseie),
        C(PAIR('e', 'l'), caseel),
        C(PAIR('p', 'o'), casepo),
        C(PAIR('t', 'l'), casetl),
        C(PAIR('t', 'm'), casetm),
        C(PAIR('f', 'm'), casefm),
        C(PAIR('b', 'p'), casebp),
        C(PAIR('c', 'h'), casech),
        C(PAIR('p', 'n'), casepn),
        C(PAIR('b', 'r'), tbreak),
        C(PAIR('t', 'i'), caseti),
        C(PAIR('n', 'e'), casene),
        C(PAIR('n', 'f'), casenf),
        C(PAIR('c', 'e'), casece),
        C(PAIR('f', 'i'), casefi),
        C(PAIR('i', 'n'), casein),
        C(PAIR('l', 'l'), casell),
        C(PAIR('n', 's'), casens),
        C(PAIR('m', 'k'), casemk),
        C(PAIR('r', 't'), casert),
        C(PAIR('a', 'm'), caseam),
        C(PAIR('d', 'e'), casede),
        C(PAIR('d', 'i'), casedi),
        C(PAIR('d', 'a'), caseda),
        C(PAIR('w', 'h'), casewh),
        C(PAIR('d', 't'), casedt),
        C(PAIR('i', 't'), caseit),
        C(PAIR('r', 'm'), caserm),
        C(PAIR('r', 'r'), caserr),
        C(PAIR('r', 'n'), casern),
        C(PAIR('a', 'd'), casead),
        C(PAIR('r', 's'), casers),
        C(PAIR('n', 'a'), casena),
        C(PAIR('p', 'l'), casepl),
        C(PAIR('t', 'a'), caseta),
        C(PAIR('t', 'r'), casetr),
        C(PAIR('u', 'l'), caseul),
        C(PAIR('c', 'u'), casecu),
        C(PAIR('l', 't'), caselt),
        C(PAIR('n', 'x'), casenx),
        C(PAIR('s', 'o'), caseso),
        C(PAIR('i', 'g'), caseig),
        C(PAIR('t', 'c'), casetc),
        C(PAIR('f', 'c'), casefc),
        C(PAIR('e', 'c'), caseec),
        C(PAIR('e', 'o'), caseeo),
        C(PAIR('l', 'c'), caselc),
        C(PAIR('e', 'v'), caseev),
        C(PAIR('r', 'd'), caserd),
        C(PAIR('a', 'b'), caseab),
        C(PAIR('f', 'l'), casefl),
        C(PAIR('e', 'x'), caseex),
        C(PAIR('s', 's'), casess),
        C(PAIR('f', 'p'), casefp),
        C(PAIR('c', 's'), casecs),
        C(PAIR('b', 'd'), casebd),
        C(PAIR('l', 'g'), caselg),
        C(PAIR('h', 'c'), casehc),
        C(PAIR('h', 'y'), casehy),
        C(PAIR('n', 'h'), casenh),
        C(PAIR('n', 'm'), casenm),
        C(PAIR('n', 'n'), casenn),
        C(PAIR('s', 'v'), casesv),
        C(PAIR('o', 's'), caseos),
        C(PAIR('l', 's'), casels),
        C(PAIR('c', 'c'), casecc),
        C(PAIR('c', '2'), casec2),
        C(PAIR('e', 'm'), caseem),
        C(PAIR('a', 'f'), caseaf),
        C(PAIR('h', 'a'), caseha),
        C(PAIR('h', 'w'), casehw),
        C(PAIR('m', 'c'), casemc),
        C(PAIR('p', 'm'), casepm),
        C(PAIR('p', 'i'), casepi),
        C(PAIR('u', 'f'), caseuf),
        C(PAIR('p', 'c'), casepc),
        C(PAIR('h', 't'), caseht),
        C(PAIR('c', 'f'), casecf),
        C(PAIR('s', 'y'), casesy),
        C(PAIR('l', 'f'), caself),
        C(PAIR('p', 't'), casept),
        C(PAIR('g', 'd'), casegd),
};


Tbuf _oline;

/*
 * troff environment block
 */

Env env[NEV] = { {      /* this sets up env[0] */
/* int  ics      */     0,      /* insertion character space, set by .mc */
/* int  sps      */     0,
/* int  spacesz  */     0,
/* int  lss      */     0,
/* int  lss1     */     0,
/* int  ll       */     0,
/* int  ll1      */     0,
/* int  lt       */     0,
/* int  lt1      */     0,
/* Tchar ic      */     0,      /* insertion character (= margin character) */
/* int  icf      */     0,      /* insertion character flag */
/* Tchar chbits  */     0,      /* size+font bits for current character */
/* Tchar spbits  */     0,
/* Tchar nmbits  */     0,      /* size+font bits for number from .nm */
/* int  apts     */     PS,     /* actual point size -- as requested by user */
/* int  apts1    */     PS,     /* need not match an existent size */
/* int  pts      */     PS,     /* hence, this is the size that really exists */
/* int  pts1     */     PS,
/* int  font     */     FT,
/* int  font1    */     FT,
/* int  ls       */     1,
/* int  ls1      */     1,
/* int  ad       */     1,
/* int  nms      */     1,      /* .nm multiplier */
/* int  ndf      */     1,      /* .nm separator */
/* int  nmwid    */     3,      /* max width of .nm numbers */
/* int  fi       */     1,
/* int  cc       */     '.',
/* int  c2       */     '\'',
/* int  ohc      */     OHC,
/* int  tdelim   */     IMP,
/* int  hyf      */     1,
/* int  hyoff    */     0,
/* int  hyphalg  */     HYPHALG,
/* int  un1      */     -1,
/* int  tabc     */     0,
/* int  dotc     */     '.',
/* int  adsp     */     0,      /* add this much space to each padding point */
/* int  adrem    */     0,      /* excess space to add until it runs out */
/* int  lastl    */     0,      /* last text on current output line */
/* int  nel      */     0,      /* how much space left on current output line */
/* int  admod    */     0,      /* adjust mode */
/* Tchar *wordp  */     0,
/* int  spflg    */     0,      /* probably to indicate space after punctuation needed */
/* Tchar *linep  */     0,
/* Tchar *wdend  */     0,
/* Tchar *wdstart */    0,
/* int  wne      */     0,
/* int  ne       */     0,      /* how much space taken on current output line */
/* int  nc       */     0,      /* #characters (incl blank) on output line */
/* int  nb       */     0,
/* int  lnmod    */     0,      /* line number mode, set by .nm */
/* int  nwd      */     0,      /* number of words on current output line */
/* int  nn       */     0,      /* from .nn command */
/* int  ni       */     0,      /* indent of .nm numbers, probably */
/* int  ul       */     0,
/* int  cu       */     0,
/* int  ce       */     0,
/* int  in       */     0,      /* indent and previous value */
/* int  in1      */     0,
/* int  un       */     0,      /* unindent of left margin in some way */
/* int  wch      */     0,
/* int  pendt    */     0,
/* Tchar *pendw  */     (Tchar *)0,
/* int  pendnf   */     0,
/* int  spread   */     0,
/* int  it       */     0,      /* input trap count */
/* int  itmac    */     0,
} };

Env     *envp   = env;  /* start off in env 0 */

Numerr  numerr;

Stack   *frame, *stk, *ejl;
Stack   *nxf;

int     pipeflg;
int     hflg;   /* used in nroff only */
int     eqflg;  /* used in nroff only */

int     xpts;
int     ppts;
int     pfont;
int     mpts;
int     mfont;
int     cs;
int     ccs;
int     bd;

int     stdi;
int     quiet;
int     stop;
char    ibuf[IBUFSZ];
char    xbuf[IBUFSZ];
char    *ibufp;
char    *xbufp;
char    *eibuf;
char    *xeibuf;
Tchar   pbbuf[NC];              /* pushback buffer for arguments, \n, etc. */
Tchar   *pbp = pbbuf;           /* next free slot in pbbuf */
Tchar   *lastpbp = pbbuf;       /* pbp in previous stack frame */
int     nx;
int     mflg;
Tchar   ch = 0;
int     ibf;
int     ifi;
int     iflg;
int     rargc;
char    **argp;
Ushort  trtab[NTRTAB];
int     lgf;
int     copyf;
Offset  ip;
int     nlflg;
int     donef;
int     nflush;
int     nfo;
int     padc;
int     raw;
int     flss;
int     nonumb;
int     trap;
int     tflg;
int     ejf;
int     dilev;
Offset  offset;
int     em;
int     ds;
Offset  woff;
int     app;
int     ndone;
int     lead;
int     ralss;
Offset  nextb;
Tchar   nrbits;
int     nform;
int     oldmn;
int     newmn;
int     macerr;
Offset  apptr;
int     diflg;
int     evi;
int     vflag;
int     noscale;
int     po1;
int     nlist[NTRAP];
int     mlist[NTRAP];
int     evlist[EVLSZ];
int     ev;
int     tty;
int     sfont   = FT;   /* appears to be "standard" font; used by .ul */
int     sv;
int     esc;
int     widthp;
int     xfont;
int     setwdf;
int     over;
int     nhyp;
Tchar   **hyp;
Tchar   *olinep;
int     dotT;
char    *unlkp;
Wcache  widcache[NWIDCACHE];
Diver   d[NDI];
Diver   *dip;

int     c_hyphen;
int     c_emdash;
int     c_rule;
int     c_minus;
int     c_fi;
int     c_fl;
int     c_ff;
int     c_ffi;
int     c_ffl;
int     c_acute;
int     c_grave;
int     c_under;
int     c_rooten;
int     c_boxrule;
int     c_lefthand;
int     c_dagger;
int     c_isalnum;

Spnames spnames[] =
{
        &c_hyphen,      "hy",
        &c_emdash,      "em",
        &c_rule,        "ru",
        &c_minus,       "\\-",
        &c_fi,          "fi",
        &c_fl,          "fl",
        &c_ff,          "ff",
        &c_ffi,         "Fi",
        &c_ffl,         "Fl",
        &c_acute,       "aa",
        &c_grave,       "ga",
        &c_under,       "ul",
        &c_rooten,      "rn",
        &c_boxrule,     "br",
        &c_lefthand,    "lh",
        &c_dagger,      "dg",   /* not in nroff?? */
        &c_isalnum,     "__",
        0, 0
};


Tchar   (*hmot)(void);
Tchar   (*makem)(int i);
Tchar   (*setabs)(void);
Tchar   (*setch)(int c);
Tchar   (*sethl)(int k);
Tchar   (*setht)(void);
Tchar   (*setslant)(void);
Tchar   (*vmot)(void);
Tchar   (*xlss)(void);
int     (*findft)(int i);
int     (*width)(Tchar j);
void    (*mchbits)(void);
void    (*ptlead)(void);
void    (*ptout)(Tchar i);
void    (*ptpause)(void);
void    (*setfont)(int a);
void    (*setps)(void);
void    (*setwd)(void);