Annotation of researchv10no/cmd/troff/ni.c, revision 1.1.1.1

1.1       root        1: #include <stdio.h>
                      2: #include "tdef.h"
                      3: #include "fns.h"
                      4: #include "ext.h"
                      5: 
                      6: char   termtab[NS];    /* term type added in ptinit() */
                      7: char   fontdir[NS];    /* added in casefp; not used by nroff */
                      8: char   devname[20];    /* default output device */
                      9: 
                     10: Numtab numtab[NN] = {
                     11:        { PAIR('%', 0) },
                     12:        { PAIR('n', 'l') },
                     13:        { PAIR('y', 'r') },
                     14:        { PAIR('h', 'p') },
                     15:        { PAIR('c', 't') },
                     16:        { PAIR('d', 'n') },
                     17:        { PAIR('m', 'o') },
                     18:        { PAIR('d', 'y') },
                     19:        { PAIR('d', 'w') },
                     20:        { PAIR('l', 'n') },
                     21:        { PAIR('d', 'l') },
                     22:        { PAIR('s', 't') },
                     23:        { PAIR('s', 'b') },
                     24:        { PAIR('c', '.') },
                     25:        { PAIR('$', '$') },
                     26: };
                     27: 
                     28: 
                     29: int    pto = 10000;
                     30: int    pfrom = 1;
                     31: int    print = 1;
                     32: char   nextf[NS] = TMACDIR;
                     33: char   mfiles[NMF][NS];
                     34: int    nmfi = 0;
                     35: int    oldbits = -1;
                     36: int    init = 1;
                     37: int    fc = IMP;       /* field character */
                     38: int    eschar = '\\';
                     39: int    pl;
                     40: int    po;
                     41: FILE   *ptid = stdout;
                     42: 
                     43: int    dfact = 1;
                     44: int    dfactd = 1;
                     45: int    res = 1;
                     46: int    smnt = 0;       /* beginning of special fonts */
                     47: int    ascii = 0;      /* ascii normally off for troff, on for nroff;  -a turns on */
                     48: int    lg;
                     49: int    pnlist[NPN] = { -1 };
                     50: 
                     51: 
                     52: int    *pnp = pnlist;
                     53: int    npn = 1;
                     54: int    npnflg = 1;
                     55: int    dpn = -1;
                     56: int    totout = 1;
                     57: int    ulfont = ULFONT;
                     58: int    tabch = TAB;
                     59: int    ldrch = LEADER;
                     60: 
                     61: 
                     62: #define        C(a,b)  {a, 0, b, 0}
                     63: Contab contab[NM] = {
                     64:        C(PAIR('d', 's'), caseds),
                     65:        C(PAIR('a', 's'), caseas),
                     66:        C(PAIR('s', 'p'), casesp),
                     67:        C(PAIR('f', 't'), caseft),
                     68:        C(PAIR('p', 's'), caseps),
                     69:        C(PAIR('v', 's'), casevs),
                     70:        C(PAIR('n', 'r'), casenr),
                     71:        C(PAIR('i', 'f'), caseif),
                     72:        C(PAIR('i', 'e'), caseie),
                     73:        C(PAIR('e', 'l'), caseel),
                     74:        C(PAIR('p', 'o'), casepo),
                     75:        C(PAIR('t', 'l'), casetl),
                     76:        C(PAIR('t', 'm'), casetm),
                     77:        C(PAIR('b', 'p'), casebp),
                     78:        C(PAIR('c', 'h'), casech),
                     79:        C(PAIR('p', 'n'), casepn),
                     80:        C(PAIR('b', 'r'), tbreak),
                     81:        C(PAIR('t', 'i'), caseti),
                     82:        C(PAIR('n', 'e'), casene),
                     83:        C(PAIR('n', 'f'), casenf),
                     84:        C(PAIR('c', 'e'), casece),
                     85:        C(PAIR('f', 'i'), casefi),
                     86:        C(PAIR('i', 'n'), casein),
                     87:        C(PAIR('l', 'l'), casell),
                     88:        C(PAIR('n', 's'), casens),
                     89:        C(PAIR('m', 'k'), casemk),
                     90:        C(PAIR('r', 't'), casert),
                     91:        C(PAIR('a', 'm'), caseam),
                     92:        C(PAIR('d', 'e'), casede),
                     93:        C(PAIR('d', 'i'), casedi),
                     94:        C(PAIR('d', 'a'), caseda),
                     95:        C(PAIR('w', 'h'), casewh),
                     96:        C(PAIR('d', 't'), casedt),
                     97:        C(PAIR('i', 't'), caseit),
                     98:        C(PAIR('r', 'm'), caserm),
                     99:        C(PAIR('r', 'r'), caserr),
                    100:        C(PAIR('r', 'n'), casern),
                    101:        C(PAIR('a', 'd'), casead),
                    102:        C(PAIR('r', 's'), casers),
                    103:        C(PAIR('n', 'a'), casena),
                    104:        C(PAIR('p', 'l'), casepl),
                    105:        C(PAIR('t', 'a'), caseta),
                    106:        C(PAIR('t', 'r'), casetr),
                    107:        C(PAIR('u', 'l'), caseul),
                    108:        C(PAIR('c', 'u'), casecu),
                    109:        C(PAIR('l', 't'), caselt),
                    110:        C(PAIR('n', 'x'), casenx),
                    111:        C(PAIR('s', 'o'), caseso),
                    112:        C(PAIR('i', 'g'), caseig),
                    113:        C(PAIR('t', 'c'), casetc),
                    114:        C(PAIR('f', 'c'), casefc),
                    115:        C(PAIR('e', 'c'), caseec),
                    116:        C(PAIR('e', 'o'), caseeo),
                    117:        C(PAIR('l', 'c'), caselc),
                    118:        C(PAIR('e', 'v'), caseev),
                    119:        C(PAIR('r', 'd'), caserd),
                    120:        C(PAIR('a', 'b'), caseab),
                    121:        C(PAIR('f', 'l'), casefl),
                    122:        C(PAIR('e', 'x'), caseex),
                    123:        C(PAIR('s', 's'), casess),
                    124:        C(PAIR('f', 'p'), casefp),
                    125:        C(PAIR('c', 's'), casecs),
                    126:        C(PAIR('b', 'd'), casebd),
                    127:        C(PAIR('l', 'g'), caselg),
                    128:        C(PAIR('h', 'c'), casehc),
                    129:        C(PAIR('h', 'y'), casehy),
                    130:        C(PAIR('n', 'h'), casenh),
                    131:        C(PAIR('n', 'm'), casenm),
                    132:        C(PAIR('n', 'n'), casenn),
                    133:        C(PAIR('s', 'v'), casesv),
                    134:        C(PAIR('o', 's'), caseos),
                    135:        C(PAIR('l', 's'), casels),
                    136:        C(PAIR('c', 'c'), casecc),
                    137:        C(PAIR('c', '2'), casec2),
                    138:        C(PAIR('e', 'm'), caseem),
                    139:        C(PAIR('a', 'f'), caseaf),
                    140:        C(PAIR('h', 'a'), caseha),
                    141:        C(PAIR('h', 'w'), casehw),
                    142:        C(PAIR('m', 'c'), casemc),
                    143:        C(PAIR('p', 'm'), casepm),
                    144:        C(PAIR('p', 'i'), casepi),
                    145:        C(PAIR('u', 'f'), caseuf),
                    146:        C(PAIR('p', 'c'), casepc),
                    147:        C(PAIR('h', 't'), caseht),
                    148:        C(PAIR('c', 'f'), casecf),
                    149:        C(PAIR('s', 'y'), casesy),
                    150:        C(PAIR('l', 'f'), caself),
                    151:        C(PAIR('p', 't'), casept),
                    152: };
                    153: 
                    154: 
                    155: Tchar oline[OLNSIZE];
                    156: 
                    157: /*
                    158:  * troff environment block
                    159:  */
                    160: 
                    161: Env env[NEV] = { {     /* this sets up env[0] */
                    162: /* int ics      */     0,      /* insertion character space, set by .mc */
                    163: /* int sps      */     0,
                    164: /* int spacesz  */     0,
                    165: /* int lss      */     0,
                    166: /* int lss1     */     0,
                    167: /* int ll       */     0,
                    168: /* int ll1      */     0,
                    169: /* int lt       */     0,
                    170: /* int lt1      */     0,
                    171: /* Tchar ic     */     0,      /* insertion character (= margin character) */
                    172: /* int icf      */     0,      /* insertion character flag */
                    173: /* Tchar chbits         */     0,      /* size+font bits for current character */
                    174: /* Tchar spbits         */     0,
                    175: /* Tchar nmbits         */     0,      /* size+font bits for number from .nm */
                    176: /* int apts     */     PS,     /* actual point size -- as requested by user */
                    177: /* int apts1    */     PS,     /* need not match an existent size */
                    178: /* int pts      */     PS,     /* hence, this is the size that really exists */
                    179: /* int pts1     */     PS,
                    180: /* int font     */     FT,
                    181: /* int font1    */     FT,
                    182: /* int ls       */     1,
                    183: /* int ls1      */     1,
                    184: /* int ad       */     1,
                    185: /* int nms      */     1,      /* .nm multiplier */
                    186: /* int ndf      */     1,      /* .nm separator */
                    187: /* int nmwid    */     3,      /* max width of .nm numbers */
                    188: /* int fi       */     1,
                    189: /* int cc       */     '.',
                    190: /* int c2       */     '\'',
                    191: /* int ohc      */     OHC,
                    192: /* int tdelim   */     IMP,
                    193: /* int hyf      */     1,
                    194: /* int hyoff    */     0,
                    195: /* int hyphalg  */     HYPHALG,
                    196: /* int un1      */     -1,
                    197: /* int tabc     */     0,
                    198: /* int dotc     */     '.',
                    199: /* int adsp     */     0,      /* add this much space to each padding point */
                    200: /* int adrem    */     0,      /* excess space to add until it runs out */
                    201: /* int lastl    */     0,      /* last text on current output line */
                    202: /* int nel      */     0,      /* how much space left on current output line */
                    203: /* int admod    */     0,      /* adjust mode */
                    204: /* Tchar *wordp         */     0,
                    205: /* int spflg    */     0,      /* probably to indicate space after punctuation needed */
                    206: /* Tchar *linep         */     0,
                    207: /* Tchar *wdend         */     0,
                    208: /* Tchar *wdstart */   0,
                    209: /* int wne      */     0,
                    210: /* int ne       */     0,      /* how much space taken on current output line */
                    211: /* int nc       */     0,      /* #characters (incl blank) on output line */
                    212: /* int nb       */     0,
                    213: /* int lnmod    */     0,      /* line number mode, set by .nm */
                    214: /* int nwd      */     0,      /* number of words on current output line */
                    215: /* int nn       */     0,      /* from .nn command */
                    216: /* int ni       */     0,      /* indent of .nm numbers, probably */
                    217: /* int ul       */     0,
                    218: /* int cu       */     0,
                    219: /* int ce       */     0,
                    220: /* int in       */     0,      /* indent and previous value */
                    221: /* int in1      */     0,
                    222: /* int un       */     0,      /* unindent of left margin in some way */
                    223: /* int wch      */     0,
                    224: /* int pendt    */     0,
                    225: /* Tchar *pendw         */     (Tchar *)0,
                    226: /* int pendnf   */     0,
                    227: /* int spread   */     0,
                    228: /* int it       */     0,      /* input trap count */
                    229: /* int itmac    */     0,
                    230: /* int lnsize   */     LNSIZE,
                    231: } };
                    232: 
                    233: Env    *envp   = env;  /* start off in env 0 */
                    234: 
                    235: 
                    236: 
                    237: Stack  *frame, *stk, *ejl;
                    238: Stack  *nxf;
                    239: 
                    240: int    pipeflg;
                    241: int    hflg;   /* used in nroff only */
                    242: int    eqflg;  /* used in nroff only */
                    243: 
                    244: int    xpts;
                    245: int    ppts;
                    246: int    pfont;
                    247: int    mpts;
                    248: int    mfont;
                    249: int    cs;
                    250: int    ccs;
                    251: int    bd;
                    252: 
                    253: int    stdi;
                    254: int    quiet;
                    255: int    stop;
                    256: char   ibuf[IBUFSZ];
                    257: char   xbuf[IBUFSZ];
                    258: char   *ibufp;
                    259: char   *xbufp;
                    260: char   *eibuf;
                    261: char   *xeibuf;
                    262: Tchar  pbbuf[NC];              /* pushback buffer for arguments, \n, etc. */
                    263: Tchar  *pbp = pbbuf;           /* next free slot in pbbuf */
                    264: Tchar  *lastpbp = pbbuf;       /* pbp in previous stack frame */
                    265: int    nx;
                    266: int    mflg;
                    267: Tchar  ch = 0;
                    268: int    ibf;
                    269: int    ifi;
                    270: int    iflg;
                    271: int    rargc;
                    272: char   **argp;
                    273: ushort trtab[NTRTAB];
                    274: int    lgf;
                    275: int    copyf;
                    276: Offset ip;
                    277: int    nlflg;
                    278: int    donef;
                    279: int    nflush;
                    280: int    nfo;
                    281: int    padc;
                    282: int    raw;
                    283: int    flss;
                    284: int    nonumb;
                    285: int    trap;
                    286: int    tflg;
                    287: int    ejf;
                    288: int    dilev;
                    289: Offset offset;
                    290: int    em;
                    291: int    ds;
                    292: Offset woff;
                    293: int    app;
                    294: int    ndone;
                    295: int    lead;
                    296: int    ralss;
                    297: Offset nextb;
                    298: Tchar  nrbits;
                    299: int    nform;
                    300: int    oldmn;
                    301: int    newmn;
                    302: int    macerr;
                    303: Offset apptr;
                    304: int    diflg;
                    305: int    evi;
                    306: int    vflag;
                    307: int    noscale;
                    308: int    po1;
                    309: int    nlist[NTRAP];
                    310: int    mlist[NTRAP];
                    311: int    evlist[EVLSZ];
                    312: int    ev;
                    313: int    tty;
                    314: int    sfont   = FT;   /* appears to be "standard" font; used by .ul */
                    315: int    sv;
                    316: int    esc;
                    317: int    widthp;
                    318: int    xfont;
                    319: int    setwdf;
                    320: int    over;
                    321: int    nhyp;
                    322: Tchar  **hyp;
                    323: Tchar  *olinep;
                    324: int    dotT;
                    325: char   *unlkp;
                    326: Wcache widcache[NWIDCACHE];
                    327: Diver  d[NDI];
                    328: Diver  *dip;
                    329: 
                    330: 
                    331: int    c_hyphen;
                    332: int    c_emdash;
                    333: int    c_rule;
                    334: int    c_minus;
                    335: int    c_fi;
                    336: int    c_fl;
                    337: int    c_ff;
                    338: int    c_ffi;
                    339: int    c_ffl;
                    340: int    c_acute;
                    341: int    c_grave;
                    342: int    c_under;
                    343: int    c_rooten;
                    344: int    c_boxrule;
                    345: int    c_lefthand;
                    346: int    c_dagger;
                    347: int    c_isalnum;
                    348: 
                    349: Spnames        spnames[] =
                    350: {
                    351:        &c_hyphen,      "hy",
                    352:        &c_emdash,      "em",
                    353:        &c_rule,        "ru",
                    354:        &c_minus,       "\\-",
                    355:        &c_fi,          "fi",
                    356:        &c_fl,          "fl",
                    357:        &c_ff,          "ff",
                    358:        &c_ffi,         "Fi",
                    359:        &c_ffl,         "Fl",
                    360:        &c_acute,       "aa",
                    361:        &c_grave,       "ga",
                    362:        &c_under,       "ul",
                    363:        &c_rooten,      "rn",
                    364:        &c_boxrule,     "br",
                    365:        &c_lefthand,    "lh",
                    366:        &c_dagger,      "dg",   /* not in nroff?? */
                    367:        &c_isalnum,     "__",
                    368:        0, 0
                    369: };
                    370: 
                    371: 
                    372: Tchar  (*hmot)(void);
                    373: Tchar  (*makem)(int i);
                    374: Tchar  (*setabs)(void);
                    375: Tchar  (*setch)(int c);
                    376: Tchar  (*sethl)(int k);
                    377: Tchar  (*setht)(void);
                    378: Tchar  (*setslant)(void);
                    379: Tchar  (*vmot)(void);
                    380: Tchar  (*xlss)(void);
                    381: int    (*findft)(int i);
                    382: int    (*width)(Tchar j);
                    383: void   (*mchbits)(void);
                    384: void   (*ptlead)(void);
                    385: void   (*ptout)(Tchar i);
                    386: void   (*ptpause)(void);
                    387: void   (*setfont)(int a);
                    388: void   (*setps)(void);
                    389: void   (*setwd)(void);

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.