|
|
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);
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.