DataMuseum.dk

Presents historical artifacts from the history of:

Commodore CBM-900

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Commodore CBM-900

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦1eb1d5d58⟧

    Length: 9487 (0x250f)
    Notes: UNIX file
    Names: »deroff.c«

Derivation

└─⟦f27320a65⟧ Bits:30001972 Commodore 900 hard disk image with partial source code
    └─⟦f4b8d8c84⟧ UNIX V7 Filesystem
        └─ ⟦this⟧ »cmd/deroff.c« 

Hex Dump

0x0000…0020 2f 2a 0a 20 2a 20 53 74 72 69 70 20 6e 72 6f 66 66 2f 74 72 6f 66 66 20 63 6f 6e 74 72 6f 6c 20   ┆/*  * Strip nroff/troff control ┆
0x0020…0040 6c 69 6e 65 73 20 61 6e 64 20 65 71 6e 0a 20 2a 20 61 6e 64 20 74 62 6c 20 73 65 71 75 65 6e 63   ┆lines and eqn  * and tbl sequenc┆
0x0040…0060 65 73 20 66 72 6f 6d 20 69 6e 70 75 74 2e 0a 20 2a 20 41 6c 73 6f 2c 20 6f 70 74 69 6f 6e 61 6c   ┆es from input.  * Also, optional┆
0x0060…0080 6c 79 2c 20 70 72 6f 64 75 63 65 20 74 68 65 0a 20 2a 20 6f 75 74 70 75 74 20 61 73 20 61 20 73   ┆ly, produce the  * output as a s┆
0x0080…00a0 65 74 20 6f 66 20 77 6f 72 64 73 2e 0a 20 2a 2f 0a 0a 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 69   ┆et of words.  */  #include <stdi┆
0x00a0…00c0 6f 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 63 74 79 70 65 2e 68 3e 0a 0a 23 64 65 66 69 6e 65   ┆o.h> #include <ctype.h>  #define┆
0x00c0…00e0 09 4e 4c 49 4e 45 09 35 30 30 09 09 2f 2a 20 49 6e 70 75 74 20 6c 69 6e 65 20 6c 65 6e 67 74 68   ┆ NLINE 500  /* Input line length┆
0x00e0…0100 20 2a 2f 0a 23 64 65 66 69 6e 65 09 4e 46 4e 45 53 54 09 31 35 09 09 2f 2a 20 44 65 70 74 68 20   ┆ */ #define NFNEST 15  /* Depth ┆
0x0100…0120 6f 66 20 2e 73 6f 20 66 69 6c 65 20 6e 65 73 74 69 6e 67 20 2a 2f 0a 0a 46 49 4c 45 09 2a 6f 66   ┆of .so file nesting */  FILE *of┆
0x0120…0140 69 6c 65 73 5b 4e 46 4e 45 53 54 5d 3b 0a 46 49 4c 45 09 2a 2a 6f 66 70 70 20 3d 20 26 6f 66 69   ┆iles[NFNEST]; FILE **ofpp = &ofi┆
0x0140…0160 6c 65 73 5b 30 5d 3b 0a 63 68 61 72 09 2a 2a 66 6c 69 73 74 3b 09 09 2f 2a 20 6c 69 73 74 20 6f   ┆les[0]; char **flist;  /* list o┆
0x0160…0180 66 20 66 69 6c 65 73 20 74 6f 20 6f 70 65 6e 20 2a 2f 0a 0a 74 79 70 65 64 65 66 09 73 74 72 75   ┆f files to open */  typedef stru┆
0x0180…01a0 63 74 09 46 4e 41 4d 45 20 7b 0a 09 73 74 72 75 63 74 09 46 4e 41 4d 45 09 2a 66 6e 5f 6e 65 78   ┆ct FNAME {  struct FNAME *fn_nex┆
0x01a0…01c0 74 3b 0a 09 63 68 61 72 09 66 6e 5f 6e 61 6d 65 5b 5d 3b 0a 7d 09 46 4e 41 4d 45 3b 0a 0a 46 4e   ┆t;  char fn_name[]; } FNAME;  FN┆
0x01c0…01e0 41 4d 45 09 2a 66 6e 61 6d 65 73 3b 0a 0a 63 68 61 72 09 6c 69 6e 65 5b 4e 4c 49 4e 45 5d 3b 0a   ┆AME *fnames;  char line[NLINE]; ┆
0x01e0…0200 0a 69 6e 74 09 64 65 6c 69 6d 31 20 3d 20 45 4f 46 3b 09 09 2f 2a 20 53 74 61 72 74 20 65 6d 62   ┆ int delim1 = EOF;  /* Start emb┆
0x0200…0220 65 64 64 65 64 20 65 71 6e 20 2a 2f 0a 69 6e 74 09 64 65 6c 69 6d 32 20 3d 20 45 4f 46 3b 09 09   ┆edded eqn */ int delim2 = EOF;  ┆
0x0220…0240 2f 2a 20 45 6e 64 20 65 6d 62 65 64 64 20 65 71 6e 20 2a 2f 0a 69 6e 74 09 73 6b 69 70 63 6e 74   ┆/* End embedd eqn */ int skipcnt┆
0x0240…0260 3b 09 09 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20 6c 69 6e 65 73 20 74 6f 20 73 6b 69 70 20 2a 2f   ┆;  /* Number of lines to skip */┆
0x0260…0280 0a 69 6e 74 09 73 6b 69 70 74 69 74 6c 65 3b 09 09 2f 2a 20 53 6b 69 70 20 74 69 74 6c 65 20 74   ┆ int skiptitle;  /* Skip title t┆
0x0280…02a0 65 78 74 20 28 75 6e 74 69 6c 20 6e 65 78 74 20 6e 72 6f 66 66 20 63 6f 6d 6d 61 6e 64 29 20 2a   ┆ext (until next nroff command) *┆
0x02a0…02c0 2f 0a 69 6e 74 09 73 66 6c 61 67 3b 09 09 09 2f 2a 20 44 69 76 69 64 65 20 69 6e 74 6f 20 73 65   ┆/ int sflag;   /* Divide into se┆
0x02c0…02e0 6e 74 65 6e 63 65 73 20 2a 2f 0a 69 6e 74 09 77 66 6c 61 67 3b 09 09 09 2f 2a 20 44 69 76 69 64   ┆ntences */ int wflag;   /* Divid┆
0x02e0…0300 65 20 6f 75 74 70 75 74 20 69 6e 74 6f 20 77 6f 72 64 73 20 2a 2f 0a 69 6e 74 09 78 66 6c 61 67   ┆e output into words */ int xflag┆
0x0300…0320 3b 09 09 09 2f 2a 20 45 78 74 72 61 20 6b 6e 6f 77 6c 65 64 67 65 20 6f 66 20 6d 61 63 72 6f 73   ┆;   /* Extra knowledge of macros┆
0x0320…0340 20 28 73 74 79 6c 65 2f 64 69 63 74 69 6f 6e 29 20 2a 2f 0a 0a 69 6e 74 09 69 6e 65 71 6e 3b 09   ┆ (style/diction) */  int ineqn; ┆
0x0340…0360 09 09 2f 2a 20 49 6e 73 69 64 65 20 65 6d 62 65 64 64 65 64 20 65 71 6e 20 65 73 63 61 70 65 20   ┆  /* Inside embedded eqn escape ┆
0x0360…0380 2a 2f 0a 46 49 4c 45 09 2a 64 6f 70 65 6e 28 29 3b 0a 63 68 61 72 09 2a 64 67 65 74 73 28 29 3b   ┆*/ FILE *dopen(); char *dgets();┆
0x0380…03a0 0a 0a 6d 61 69 6e 28 61 72 67 63 2c 20 61 72 67 76 29 0a 69 6e 74 20 61 72 67 63 3b 0a 63 68 61   ┆  main(argc, argv) int argc; cha┆
0x03a0…03c0 72 20 2a 61 72 67 76 5b 5d 3b 0a 7b 0a 09 72 65 67 69 73 74 65 72 20 63 68 61 72 20 2a 61 70 3b   ┆r *argv[]; {  register char *ap;┆
0x03c0…03e0 0a 0a 09 77 68 69 6c 65 20 28 61 72 67 63 3e 31 20 26 26 20 2a 61 72 67 76 5b 31 5d 3d 3d 27 2d   ┆   while (argc>1 && *argv[1]=='-┆
0x03e0…0400 27 29 20 7b 0a 09 09 66 6f 72 20 28 61 70 20 3d 20 26 61 72 67 76 5b 31 5d 5b 31 5d 3b 20 2a 61   ┆') {   for (ap = &argv[1][1]; *a┆
0x0400…0420 70 21 3d 27 5c 30 27 3b 20 61 70 2b 2b 29 0a 09 09 09 73 77 69 74 63 68 20 28 2a 61 70 29 20 7b   ┆p!='\0'; ap++)    switch (*ap) {┆
0x0420…0440 0a 09 09 09 63 61 73 65 20 27 73 27 3a 0a 09 09 09 09 73 66 6c 61 67 20 3d 20 31 3b 0a 09 09 09   ┆    case 's':     sflag = 1;    ┆
0x0440…0460 09 62 72 65 61 6b 3b 0a 0a 09 09 09 63 61 73 65 20 27 77 27 3a 0a 09 09 09 09 77 66 6c 61 67 20   ┆ break;     case 'w':     wflag ┆
0x0460…0480 3d 20 31 3b 0a 09 09 09 09 62 72 65 61 6b 3b 0a 0a 09 09 09 63 61 73 65 20 27 78 27 3a 0a 09 09   ┆= 1;     break;     case 'x':   ┆
0x0480…04a0 09 09 78 66 6c 61 67 20 3d 20 31 3b 0a 09 09 09 09 62 72 65 61 6b 3b 0a 0a 09 09 09 64 65 66 61   ┆  xflag = 1;     break;     defa┆
0x04a0…04c0 75 6c 74 3a 0a 09 09 09 09 75 73 61 67 65 28 29 3b 0a 09 09 09 7d 0a 09 09 61 72 67 76 2b 2b 3b   ┆ult:     usage();    }   argv++;┆
0x04c0…04e0 0a 09 09 61 72 67 63 2d 2d 3b 0a 09 7d 0a 09 69 66 20 28 61 72 67 63 20 3c 20 32 29 0a 09 09 6f   ┆   argc--;  }  if (argc < 2)   o┆
0x04e0…0500 66 69 6c 65 73 5b 30 5d 20 3d 20 73 74 64 69 6e 3b 0a 09 66 6c 69 73 74 20 3d 20 26 61 72 67 76   ┆files[0] = stdin;  flist = &argv┆
0x0500…0520 5b 31 5d 3b 0a 09 65 78 69 74 20 28 64 65 72 6f 66 66 28 29 29 3b 0a 7d 0a 0a 2f 2a 0a 20 2a 20   ┆[1];  exit (deroff()); }  /*  * ┆
0x0520…0540 52 65 61 64 20 75 6e 74 69 6c 20 65 6e 64 2d 6f 66 2d 66 69 6c 65 0a 20 2a 20 61 6e 64 20 70 72   ┆Read until end-of-file  * and pr┆
0x0540…0560 6f 63 65 73 73 20 74 68 65 20 73 70 65 63 69 61 6c 20 6e 72 6f 66 66 2f 74 72 6f 66 66 2f 65 71   ┆ocess the special nroff/troff/eq┆
0x0560…0580 6e 2f 74 62 6c 0a 20 2a 20 6c 69 6e 65 73 20 69 6e 20 74 68 65 20 66 69 6c 65 2e 0a 20 2a 2f 0a   ┆n/tbl  * lines in the file.  */ ┆
0x0580…05a0 64 65 72 6f 66 66 28 29 0a 7b 0a 0a 09 77 68 69 6c 65 20 28 64 67 65 74 73 28 6c 69 6e 65 29 20   ┆deroff() {   while (dgets(line) ┆
0x05a0…05c0 21 3d 20 4e 55 4c 4c 29 20 7b 0a 09 09 69 66 20 28 21 69 6e 65 71 6e 20 26 26 20 6c 69 6e 65 5b   ┆!= NULL) {   if (!ineqn && line[┆
0x05c0…05e0 30 5d 3d 3d 27 2e 27 29 20 7b 0a 09 09 09 6e 72 6f 66 66 28 6c 69 6e 65 29 3b 0a 09 09 09 63 6f   ┆0]=='.') {    nroff(line);    co┆
0x05e0…0600 6e 74 69 6e 75 65 3b 0a 09 09 7d 0a 09 09 6f 75 74 70 75 74 28 6c 69 6e 65 29 3b 0a 09 7d 0a 7d   ┆ntinue;   }   output(line);  } }┆
0x0600…0620 0a 0a 2f 2a 0a 20 2a 20 4f 15 75 74 70 75 74 20 66 6f 72 20 74 68 61 74 20 6c 69 6e 65 20 77 68   ┆  /*  * O utput for that line wh┆
0x0620…0640 69 63 68 20 69 73 6e 27 74 20 61 6e 20 6e 72 6f 66 66 0a 20 2a 20 63 6f 6e 74 72 6f 6c 20 6c 69   ┆ich isn't an nroff  * control li┆
0x0640…0660 6e 65 2e 20 20 54 68 69 73 20 68 61 73 20 74 6f 20 6c 6f 6f 6b 20 66 6f 72 20 65 6d 62 65 64 64   ┆ne.  This has to look for embedd┆
0x0660…0680 65 64 0a 20 2a 20 65 71 6e 20 73 74 75 66 66 20 61 6e 64 20 62 61 63 6b 2d 73 6c 61 73 68 20 74   ┆ed  * eqn stuff and back-slash t┆
0x0680…06a0 72 6f 66 66 2f 6e 72 6f 66 66 20 65 73 63 61 70 65 73 2e 0a 20 2a 20 54 68 65 20 65 6d 62 65 64   ┆roff/nroff escapes.  * The embed┆
0x06a0…06c0 64 65 64 20 65 73 63 61 70 65 73 20 61 72 65 20 61 6c 6c 20 68 61 6e 64 6c 65 64 20 74 6f 20 73   ┆ded escapes are all handled to s┆
0x06c0…06e0 6f 6d 65 20 64 65 67 72 65 65 0a 20 2a 20 62 75 74 20 73 75 63 68 20 74 68 69 6e 67 73 20 61 73   ┆ome degree  * but such things as┆
0x06e0…0700 20 6e 65 73 74 65 64 20 71 75 6f 74 65 73 20 28 65 2e 67 2e 20 5c 77 20 6f 72 20 5c 68 29 0a 20   ┆ nested quotes (e.g. \w or \h)  ┆
0x0700…0720 2a 20 64 6f 20 6e 6f 74 20 71 75 69 74 65 20 77 6f 72 6b 2e 20 20 48 6f 77 65 76 65 72 2c 20 74   ┆* do not quite work.  However, t┆
0x0720…0740 68 65 73 65 20 6f 63 63 75 72 20 61 6c 6d 6f 73 74 20 6e 65 76 65 72 0a 20 2a 20 69 6e 20 74 65   ┆hese occur almost never  * in te┆
0x0740…0760 78 74 20 73 6f 20 69 74 20 73 68 6f 75 6c 64 20 62 65 20 73 75 66 66 69 63 69 65 6e 74 2e 0a 20   ┆xt so it should be sufficient.  ┆
0x0760…0780 2a 2f 0a 6f 75 74 70 75 74 28 6c 29 0a 72 65 67 69 73 74 65 72 20 63 68 61 72 20 2a 6c 3b 0a 7b   ┆*/ output(l) register char *l; {┆
0x0780…07a0 0a 09 72 65 67 69 73 74 65 72 20 69 6e 74 20 63 3b 0a 09 72 65 67 69 73 74 65 72 20 69 6e 74 20   ┆  register int c;  register int ┆
0x07a0…07c0 69 6e 77 6f 72 64 20 3d 20 30 3b 0a 09 72 65 67 69 73 74 65 72 20 69 6e 74 20 68 79 70 68 65 6e   ┆inword = 0;  register int hyphen┆
0x07c0…07e0 3b 0a 0a 09 69 66 20 28 73 6b 69 70 63 6e 74 29 20 7b 0a 09 09 73 6b 69 70 63 6e 74 2d 2d 3b 0a   ┆;   if (skipcnt) {   skipcnt--; ┆
0x07e0…0800 09 09 72 65 74 75 72 6e 3b 0a 09 7d 0a 09 69 66 20 28 73 6b 69 70 74 69 74 6c 65 29 0a 09 09 72   ┆  return;  }  if (skiptitle)   r┆
0x0800…0820 65 74 75 72 6e 3b 0a 09 77 68 69 6c 65 20 28 28 63 20 3d 20 2a 6c 2b 2b 29 20 21 3d 20 27 5c 30   ┆eturn;  while ((c = *l++) != '\0┆
0x0820…0840 27 29 20 7b 0a 09 09 69 66 20 28 69 6e 65 71 6e 29 20 7b 0a 09 09 09 69 66 20 28 63 20 3d 3d 20   ┆') {   if (ineqn) {    if (c == ┆
0x0840…0860 64 65 6c 69 6d 32 29 0a 09 09 09 09 69 6e 65 71 6e 20 3d 20 30 3b 0a 09 09 09 63 6f 6e 74 69 6e   ┆delim2)     ineqn = 0;    contin┆
0x0860…0880 75 65 3b 0a 09 09 7d 0a 09 09 69 66 20 28 63 20 3d 3d 20 64 65 6c 69 6d 31 29 20 7b 0a 09 09 09   ┆ue;   }   if (c == delim1) {    ┆
0x0880…08a0 69 6e 65 71 6e 20 3d 20 31 3b 0a 09 09 09 63 6f 6e 74 69 6e 75 65 3b 0a 09 09 7d 0a 09 09 69 66   ┆ineqn = 1;    continue;   }   if┆
0x08a0…08c0 20 28 63 20 3d 3d 20 27 5c 5c 27 29 20 7b 0a 09 09 09 69 66 20 28 28 63 20 3d 20 2a 6c 2b 2b 29   ┆ (c == '\\') {    if ((c = *l++)┆
0x08c0…08e0 20 3d 3d 20 27 5c 30 27 29 0a 09 09 09 09 62 72 65 61 6b 3b 0a 09 09 09 73 77 69 74 63 68 20 28   ┆ == '\0')     break;    switch (┆
0x08e0…0900 63 29 20 7b 0a 09 09 09 63 61 73 65 20 27 30 27 3a 09 09 2f 2a 20 64 69 67 69 74 20 77 69 64 74   ┆c) {    case '0':  /* digit widt┆
0x0900…0920 68 20 73 70 61 63 65 20 2a 2f 0a 09 09 09 63 61 73 65 20 27 7c 27 3a 09 09 2f 2a 20 4e 61 72 72   ┆h space */    case '|':  /* Narr┆
0x0920…0940 6f 77 20 73 70 61 63 65 20 2a 2f 0a 09 09 09 63 61 73 65 20 27 5e 27 3a 09 09 2f 2a 20 48 61 6c   ┆ow space */    case '^':  /* Hal┆
0x0940…0960 66 20 6e 61 72 72 6f 77 20 73 70 61 63 65 20 2a 2f 0a 09 09 09 63 61 73 65 20 27 26 27 3a 09 09   ┆f narrow space */    case '&':  ┆
0x0960…0980 2f 2a 20 4e 6f 6e 2d 70 72 69 6e 74 69 6e 67 2c 20 30 2d 77 69 64 74 68 20 63 68 61 72 20 2a 2f   ┆/* Non-printing, 0-width char */┆
0x0980…09a0 0a 09 09 09 63 61 73 65 20 27 21 27 3a 09 09 2f 2a 20 54 72 61 6e 73 70 61 72 65 6e 74 20 6c 69   ┆    case '!':  /* Transparent li┆
0x09a0…09c0 6e 65 20 69 6e 64 69 63 61 74 6f 72 20 2a 2f 0a 09 09 09 63 61 73 65 20 27 65 27 3a 09 09 2f 2a   ┆ne indicator */    case 'e':  /*┆
0x09c0…09e0 20 43 75 72 72 65 6e 74 20 65 73 63 61 70 65 20 2a 2f 0a 09 09 09 63 61 73 65 20 27 25 27 3a 09   ┆ Current escape */    case '%': ┆
0x09e0…0a00 09 2f 2a 20 4f 70 74 69 6f 6e 61 6c 20 68 79 70 68 65 6e 61 74 69 6f 6e 20 63 68 61 72 20 2a 2f   ┆ /* Optional hyphenation char */┆
0x0a00…0a20 0a 09 09 09 63 61 73 65 20 27 74 27 3a 09 09 2f 2a 20 4e 6f 6e 2d 69 6e 74 65 72 70 72 65 74 65   ┆    case 't':  /* Non-interprete┆
0x0a20…0a40 64 20 74 61 62 20 2a 2f 0a 09 09 09 63 61 73 65 20 27 75 27 3a 09 09 2f 2a 20 55 70 20 31 2f 32   ┆d tab */    case 'u':  /* Up 1/2┆
0x0a40…0a60 20 2a 2f 0a 09 09 09 63 61 73 65 20 27 64 27 3a 09 09 2f 2a 20 44 6f 77 6e 20 31 2f 32 20 2a 2f   ┆ */    case 'd':  /* Down 1/2 */┆
0x0a60…0a80 0a 09 09 09 63 61 73 65 20 27 61 27 3a 09 09 2f 2a 20 4e 6f 6e 2d 69 6e 74 65 72 70 65 74 65 64   ┆    case 'a':  /* Non-interpeted┆
0x0a80…0aa0 20 6c 65 61 64 65 72 20 2a 2f 0a 09 09 09 63 61 73 65 20 27 63 27 3a 09 09 2f 2a 20 49 6e 74 65   ┆ leader */    case 'c':  /* Inte┆
0x0aa0…0ac0 72 72 75 70 74 20 74 65 78 74 20 70 72 6f 63 65 73 73 69 6e 67 20 2a 2f 0a 09 09 09 63 61 73 65   ┆rrupt text processing */    case┆
0x0ac0…0ae0 20 27 70 27 3a 09 09 2f 2a 20 42 72 65 61 6b 20 61 6e 64 20 73 70 72 65 61 64 20 2a 2f 0a 09 09   ┆ 'p':  /* Break and spread */   ┆
0x0ae0…0b00 09 63 61 73 65 20 27 72 27 3a 09 09 2f 2a 20 52 65 72 76 65 72 73 65 20 76 65 72 74 69 63 61 6c   ┆ case 'r':  /* Rerverse vertical┆
0x0b00…0b20 20 6d 6f 74 69 6f 6e 20 2a 2f 0a 09 09 09 63 61 73 65 20 27 7b 27 3a 09 09 2f 2a 20 42 65 67 69   ┆ motion */    case '{':  /* Begi┆
0x0b20…0b40 6e 20 63 6f 6e 64 69 74 69 6f 6e 61 6c 20 2a 2f 0a 09 09 09 63 61 73 65 20 27 7d 27 3a 09 09 2f   ┆n conditional */    case '}':  /┆
0x0b40…0b60 2a 20 45 6e 64 20 63 6f 6e 64 69 74 69 6f 6e 61 6c 20 2a 2f 0a 09 09 09 09 63 20 3d 20 27 20 27   ┆* End conditional */     c = ' '┆
0x0b60…0b80 3b 0a 09 09 09 09 62 72 65 61 6b 3b 0a 0a 09 09 09 63 61 73 65 20 27 24 27 3a 09 09 2f 2a 20 61   ┆;     break;     case '$':  /* a┆
0x0b80…0ba0 72 67 75 6d 65 6e 74 20 2a 2f 0a 09 09 09 09 69 66 20 28 2a 6c 20 21 3d 20 27 5c 30 27 29 0a 09   ┆rgument */     if (*l != '\0')  ┆
0x0ba0…0bc0 09 09 09 09 6c 2b 2b 3b 0a 09 09 09 09 63 6f 6e 74 69 6e 75 65 3b 0a 0a 09 09 09 63 61 73 65 20   ┆    l++;     continue;     case ┆
0x0bc0…0be0 27 28 27 3a 09 09 2f 2a 20 43 68 61 72 20 6e 61 6d 65 64 20 60 78 78 27 20 2a 2f 0a 09 09 09 09   ┆'(':  /* Char named `xx' */     ┆
0x0be0…0c00 69 66 20 28 2a 6c 20 21 3d 20 27 5c 30 27 29 0a 09 09 09 09 09 6c 2b 2b 3b 0a 09 09 09 09 69 66   ┆if (*l != '\0')      l++;     if┆
0x0c00…0c20 20 28 2a 6c 20 21 3d 20 27 5c 30 27 29 0a 09 09 09 09 09 6c 2b 2b 3b 0a 09 09 09 09 63 20 3d 20   ┆ (*l != '\0')      l++;     c = ┆
0x0c20…0c40 27 20 27 3b 0a 09 09 09 09 62 72 65 61 6b 3b 0a 0a 09 09 09 63 61 73 65 20 27 7a 27 3a 09 09 2f   ┆' ';     break;     case 'z':  /┆
0x0c40…0c60 2a 20 5a 65 72 6f 2d 77 69 64 74 68 20 63 68 61 72 61 63 74 65 72 20 2a 2f 0a 09 09 09 09 69 66   ┆* Zero-width character */     if┆
0x0c60…0c80 20 28 2a 6c 20 21 3d 20 27 5c 30 27 29 0a 09 09 09 09 09 63 20 3d 20 2a 6c 2b 2b 3b 0a 09 09 09   ┆ (*l != '\0')      c = *l++;    ┆
0x0c80…0ca0 09 62 72 65 61 6b 3b 0a 0a 09 09 09 63 61 73 65 20 27 6b 27 3a 09 09 2f 2a 20 4d 61 72 6b 20 69   ┆ break;     case 'k':  /* Mark i┆
0x0ca0…0cc0 6e 70 75 74 20 70 6c 61 63 65 20 69 6e 20 60 78 27 20 2a 2f 0a 09 09 09 63 61 73 65 20 27 6e 27   ┆nput place in `x' */    case 'n'┆
0x0cc0…0ce0 3a 09 09 2f 2a 20 45 78 70 61 6e 64 20 72 65 67 67 69 73 74 65 72 20 78 20 2a 2f 0a 09 09 09 63   ┆:  /* Expand reggister x */    c┆
0x0ce0…0d00 61 73 65 20 27 2a 27 3a 09 09 2f 2a 20 49 6e 74 65 72 70 6f 6c 61 74 65 20 73 74 72 69 6e 67 20   ┆ase '*':  /* Interpolate string ┆
0x0d00…0d20 2a 2f 0a 09 09 09 63 61 73 65 20 27 66 27 3a 09 09 2f 2a 20 43 68 61 6e 67 65 20 66 6f 6e 74 20   ┆*/    case 'f':  /* Change font ┆
0x0d20…0d40 2a 2f 0a 09 09 09 09 69 66 20 28 2a 6c 20 21 3d 20 27 5c 30 27 29 0a 09 09 09 09 09 69 66 20 28   ┆*/     if (*l != '\0')      if (┆
0x0d40…0d60 28 63 20 3d 20 2a 6c 2b 2b 29 20 3d 3d 20 27 28 27 29 20 7b 0a 09 09 09 09 09 09 69 66 20 28 2a   ┆(c = *l++) == '(') {       if (*┆
0x0d60…0d80 6c 20 21 3d 20 27 5c 30 27 29 0a 09 09 09 09 09 09 09 6c 2b 2b 3b 0a 09 09 09 09 09 09 69 66 20   ┆l != '\0')        l++;       if ┆
0x0d80…0da0 28 2a 6c 20 21 3d 20 27 5c 30 27 29 0a 09 09 09 09 09 09 09 6c 2b 2b 3b 0a 09 09 09 09 09 7d 0a   ┆(*l != '\0')        l++;      } ┆
0x0da0…0dc0 09 09 09 09 63 6f 6e 74 69 6e 75 65 3b 0a 0a 09 09 09 63 61 73 65 20 27 73 27 3a 09 09 2f 2a 20   ┆    continue;     case 's':  /* ┆
0x0dc0…0de0 43 68 61 6e 67 65 20 70 6f 69 6e 74 20 73 69 7a 65 20 2a 2f 0a 09 09 09 09 69 66 20 28 2a 6c 20   ┆Change point size */     if (*l ┆
0x0de0…0e00 3d 3d 20 27 5c 30 27 29 0a 09 09 09 09 09 63 6f 6e 74 69 6e 75 65 3b 0a 09 09 09 09 69 66 20 28   ┆== '\0')      continue;     if (┆
0x0e00…0e20 28 63 20 3d 20 2a 6c 2b 2b 29 3d 3d 27 2d 27 20 7c 7c 20 63 3d 3d 27 2b 27 29 20 7b 0a 09 09 09   ┆(c = *l++)=='-' || c=='+') {    ┆
0x0e20…0e40 09 09 69 66 20 28 2a 6c 20 3d 3d 20 27 5c 30 27 29 0a 09 09 09 09 09 09 63 6f 6e 74 69 6e 75 65   ┆  if (*l == '\0')       continue┆
0x0e40…0e60 3b 0a 09 09 09 09 09 63 20 3d 20 2a 6c 2b 2b 3b 0a 09 09 09 09 7d 0a 09 09 09 09 77 68 69 6c 65   ┆;      c = *l++;     }     while┆
0x0e60…0e80 20 28 2a 6c 21 3d 27 5c 30 27 20 26 26 20 69 73 64 69 67 69 74 28 63 29 29 0a 09 09 09 09 09 63   ┆ (*l!='\0' && isdigit(c))      c┆
0x0e80…0ea0 20 3d 20 2a 6c 2b 2b 3b 0a 09 09 09 09 62 72 65 61 6b 3b 0a 0a 09 09 09 63 61 73 65 20 27 78 27   ┆ = *l++;     break;     case 'x'┆
0x0ea0…0ec0 3a 09 09 2f 2a 20 45 78 74 72 61 20 6c 69 6e 65 20 73 70 61 63 65 20 2a 2f 0a 09 09 09 63 61 73   ┆:  /* Extra line space */    cas┆
0x0ec0…0ee0 65 20 27 77 27 3a 09 09 2f 2a 20 57 69 64 74 68 20 66 75 6e 63 74 69 6f 6e 20 2a 2f 0a 09 09 09   ┆e 'w':  /* Width function */    ┆
0x0ee0…0f00 63 61 73 65 20 27 76 27 3a 09 09 2f 2a 20 4c 6f 63 61 6c 20 76 65 72 74 69 63 61 6c 20 6d 6f 74   ┆case 'v':  /* Local vertical mot┆
0x0f00…0f20 69 6f 6e 20 2a 2f 0a 09 09 09 63 61 73 65 20 27 6f 27 3a 09 09 2f 2a 20 4f 76 65 72 73 74 72 69   ┆ion */    case 'o':  /* Overstri┆
0x0f20…0f40 6b 65 20 66 75 6e 63 74 69 6f 6e 20 2a 2f 0a 09 09 09 63 61 73 65 20 27 4c 27 3a 09 09 2f 2a 20   ┆ke function */    case 'L':  /* ┆
0x0f40…0f60 56 65 72 74 69 63 61 6c 20 6c 69 6e 65 20 2a 2f 0a 09 09 09 63 61 73 65 20 27 6c 27 3a 09 09 2f   ┆Vertical line */    case 'l':  /┆
0x0f60…0f80 2a 20 48 6f 72 69 7a 6f 6e 74 61 6c 20 6c 69 6e 65 20 2a 2f 0a 09 09 09 63 61 73 65 20 27 68 27   ┆* Horizontal line */    case 'h'┆
0x0f80…0fa0 3a 09 09 2f 2a 20 4c 6f 63 61 6c 20 68 6f 72 69 7a 6f 6e 74 61 6c 20 6d 6f 74 69 6f 6e 20 2a 2f   ┆:  /* Local horizontal motion */┆
0x0fa0…0fc0 0a 09 09 09 63 61 73 65 20 27 62 27 3a 09 09 2f 2a 20 42 72 61 63 6b 65 74 2d 62 75 69 6c 64 65   ┆    case 'b':  /* Bracket-builde┆
0x0fc0…0fe0 72 20 2a 2f 0a 09 09 09 09 69 66 20 28 28 63 20 3d 20 2a 6c 29 20 21 3d 20 27 5c 30 27 29 0a 09   ┆r */     if ((c = *l) != '\0')  ┆
0x0fe0…1000 09 09 09 09 77 68 69 6c 65 20 28 2a 6c 21 3d 27 5c 30 27 20 26 26 20 2a 6c 21 3d 63 29 0a 09 09   ┆    while (*l!='\0' && *l!=c)   ┆
0x1000…1020 09 09 09 09 6c 2b 2b 3b 0a 09 09 09 09 63 6f 6e 74 69 6e 75 65 3b 0a 0a 09 09 09 63 61 73 65 20   ┆    l++;     continue;     case ┆
0x1020…1040 27 22 27 3a 09 09 2f 2a 20 42 65 67 69 6e 6e 69 6e 67 20 6f 66 20 63 6f 6d 6d 65 6e 74 20 2a 2f   ┆'"':  /* Beginning of comment */┆
0x1040…1060 0a 09 09 09 09 77 68 69 6c 65 20 28 2a 6c 20 21 3d 20 27 5c 30 27 29 0a 09 09 09 09 09 6c 2b 2b   ┆     while (*l != '\0')      l++┆
0x1060…1080 3b 0a 09 09 09 09 63 6f 6e 74 69 6e 75 65 3b 0a 09 09 09 7d 0a 09 09 7d 0a 09 09 69 66 20 28 77   ┆;     continue;    }   }   if (w┆
0x1080…10a0 66 6c 61 67 29 20 7b 0a 09 09 09 69 66 20 28 63 20 3d 3d 20 27 5c 6e 27 29 0a 09 09 09 09 63 6f   ┆flag) {    if (c == '\n')     co┆
0x10a0…10c0 6e 74 69 6e 75 65 3b 0a 09 09 09 69 66 20 28 21 69 6e 77 6f 72 64 29 0a 09 09 09 09 69 66 20 28   ┆ntinue;    if (!inword)     if (┆
0x10c0…10e0 69 73 61 6c 70 68 61 28 63 29 29 0a 09 09 09 09 09 69 6e 77 6f 72 64 20 3d 20 31 3b 0a 09 09 09   ┆isalpha(c))      inword = 1;    ┆
0x10e0…1100 09 65 6c 73 65 0a 09 09 09 09 09 63 6f 6e 74 69 6e 75 65 3b 0a 09 09 09 69 66 20 28 63 3d 3d 27   ┆ else      continue;    if (c=='┆
0x1100…1120 2d 27 20 26 26 20 21 68 79 70 68 65 6e 29 20 7b 0a 09 09 09 09 68 79 70 68 65 6e 20 3d 20 31 3b   ┆-' && !hyphen) {     hyphen = 1;┆
0x1120…1140 0a 09 09 09 09 63 6f 6e 74 69 6e 75 65 3b 0a 09 09 09 7d 0a 09 09 09 68 79 70 68 65 6e 20 3d 20   ┆     continue;    }    hyphen = ┆
0x1140…1160 30 3b 0a 09 09 09 69 66 20 28 63 20 3d 3d 20 27 5c 27 27 29 0a 09 09 09 09 63 6f 6e 74 69 6e 75   ┆0;    if (c == '\'')     continu┆
0x1160…1180 65 3b 0a 09 09 09 69 66 20 28 21 69 73 61 6c 70 68 61 28 63 29 20 26 26 20 21 69 73 64 69 67 69   ┆e;    if (!isalpha(c) && !isdigi┆
0x1180…11a0 74 28 63 29 29 20 7b 0a 09 09 09 09 69 6e 77 6f 72 64 20 3d 20 30 3b 0a 09 09 09 09 70 75 74 63   ┆t(c)) {     inword = 0;     putc┆
0x11a0…11c0 68 61 72 28 27 5c 6e 27 29 3b 0a 09 09 09 09 63 6f 6e 74 69 6e 75 65 3b 0a 09 09 09 7d 0a 09 09   ┆har('\n');     continue;    }   ┆
0x11c0…11e0 7d 0a 09 09 70 75 74 63 68 61 72 28 63 29 3b 0a 09 7d 0a 09 69 66 20 28 77 66 6c 61 67 20 26 26   ┆}   putchar(c);  }  if (wflag &&┆
0x11e0…1200 20 69 6e 77 6f 72 64 20 26 26 20 21 68 79 70 68 65 6e 29 0a 09 09 70 75 74 63 68 61 72 28 27 5c   ┆ inword && !hyphen)   putchar('\┆
0x1200…1220 6e 27 29 3b 0a 7d 0a 0a 2f 2a 0a 20 2a 20 50 72 6f 63 65 73 73 20 6e 72 6f 66 66 20 63 6f 6e 74   ┆n'); }  /*  * Process nroff cont┆
0x1220…1240 72 6f 6c 20 6c 69 6e 65 73 2e 0a 20 2a 20 52 65 6d 6f 76 65 20 45 51 4e 2c 20 54 42 4c 2c 20 6d   ┆rol lines.  * Remove EQN, TBL, m┆
0x1240…1260 61 63 72 6f 20 64 65 66 69 6e 74 69 6f 6e 73 2e 0a 20 2a 20 50 72 6f 63 65 73 73 20 2e 73 6f 20   ┆acro defintions.  * Process .so ┆
0x1260…1280 61 6e 64 20 2e 6e 78 20 68 65 72 65 2e 0a 20 2a 20 4f 74 68 65 72 20 6c 69 6e 65 73 20 68 61 76   ┆and .nx here.  * Other lines hav┆
0x1280…12a0 65 20 74 68 65 20 72 65 73 74 20 6f 66 20 74 68 65 20 6c 69 6e 65 20 75 73 65 64 2e 0a 20 2a 2f   ┆e the rest of the line used.  */┆
0x12a0…12c0 0a 6e 72 6f 66 66 28 6c 29 0a 72 65 67 69 73 74 65 72 20 63 68 61 72 20 2a 6c 3b 0a 7b 0a 09 73   ┆ nroff(l) register char *l; {  s┆
0x12c0…12e0 6b 69 70 74 69 74 6c 65 20 3d 20 30 3b 0a 09 69 66 20 28 6c 5b 31 5d 3d 3d 27 45 27 20 26 26 20   ┆kiptitle = 0;  if (l[1]=='E' && ┆
0x12e0…1300 6c 5b 32 5d 3d 3d 27 51 27 29 0a 09 09 65 71 6e 28 29 3b 0a 09 65 6c 73 65 20 69 66 20 28 6c 5b   ┆l[2]=='Q')   eqn();  else if (l[┆
0x1300…1320 31 5d 3d 3d 27 54 27 20 26 26 20 6c 5b 32 5d 3d 3d 27 53 27 29 0a 09 09 74 62 6c 28 29 3b 0a 09   ┆1]=='T' && l[2]=='S')   tbl();  ┆
0x1320…1340 65 6c 73 65 20 69 66 20 28 6c 5b 31 5d 3d 3d 27 46 27 20 26 26 20 6c 5b 32 5d 3d 3d 27 53 27 29   ┆else if (l[1]=='F' && l[2]=='S')┆
0x1340…1360 0a 09 09 66 6f 6f 74 6e 6f 74 65 28 29 3b 0a 09 65 6c 73 65 20 69 66 20 28 6c 5b 31 5d 3d 3d 27   ┆   footnote();  else if (l[1]=='┆
0x1360…1380 63 27 20 26 26 20 6c 5b 32 5d 3d 3d 27 65 27 29 0a 09 09 63 65 6e 74 72 65 28 6c 29 3b 0a 09 65   ┆c' && l[2]=='e')   centre(l);  e┆
0x1380…13a0 6c 73 65 20 69 66 20 28 6c 5b 31 5d 3d 3d 27 6e 27 20 26 26 20 6c 5b 32 5d 3d 3d 27 66 27 29 0a   ┆lse if (l[1]=='n' && l[2]=='f') ┆
0x13a0…13c0 09 09 6e 6f 66 69 6c 6c 28 29 3b 0a 09 65 6c 73 65 20 69 66 20 28 6c 5b 31 5d 3d 3d 27 44 27 20   ┆  nofill();  else if (l[1]=='D' ┆
0x13c0…13e0 26 26 20 6c 5b 32 5d 3d 3d 27 53 27 29 0a 09 09 64 69 73 70 6c 61 79 28 29 3b 0a 09 65 6c 73 65   ┆&& l[2]=='S')   display();  else┆
0x13e0…1400 20 69 66 20 28 6c 5b 31 5d 3d 3d 27 4b 27 20 26 26 20 28 6c 5b 32 5d 3d 3d 27 46 27 20 7c 7c 20   ┆ if (l[1]=='K' && (l[2]=='F' || ┆
0x1400…1420 6c 5b 32 5d 3d 3d 27 53 27 29 29 0a 09 09 64 69 73 70 6c 61 79 28 29 3b 0a 09 65 6c 73 65 20 69   ┆l[2]=='S'))   display();  else i┆
0x1420…1440 66 20 28 6c 5b 31 5d 3d 3d 27 54 27 20 26 26 20 6c 5b 32 5d 3d 3d 27 4c 27 29 0a 09 09 74 69 74   ┆f (l[1]=='T' && l[2]=='L')   tit┆
0x1440…1460 6c 65 73 28 29 3b 0a 09 65 6c 73 65 20 69 66 20 28 6c 5b 31 5d 3d 3d 27 41 27 20 26 26 20 28 6c   ┆les();  else if (l[1]=='A' && (l┆
0x1460…1480 5b 32 5d 3d 3d 27 49 27 20 7c 7c 20 6c 5b 32 5d 3d 3d 27 55 27 29 29 0a 09 09 74 69 74 6c 65 73   ┆[2]=='I' || l[2]=='U'))   titles┆
0x1480…14a0 28 29 3b 0a 09 65 6c 73 65 20 69 66 20 28 6c 5b 32 5d 3d 3d 27 48 27 20 26 26 20 28 6c 5b 31 5d   ┆();  else if (l[2]=='H' && (l[1]┆
0x14a0…14c0 3d 3d 27 53 27 20 7c 7c 20 6c 5b 31 5d 3d 3d 27 4e 27 29 29 0a 09 09 74 69 74 6c 65 73 28 29 3b   ┆=='S' || l[1]=='N'))   titles();┆
0x14c0…14e0 0a 09 65 6c 73 65 20 69 66 20 28 6c 5b 31 5d 3d 3d 27 6e 27 20 26 26 20 6c 5b 32 5d 3d 3d 27 78   ┆  else if (l[1]=='n' && l[2]=='x┆
0x14e0…1500 27 29 0a 09 09 69 6e 63 6c 75 64 65 28 6c 69 6e 65 2b 33 2c 20 27 6e 27 29 3b 0a 09 65 6c 73 65   ┆')   include(line+3, 'n');  else┆
0x1500…1520 20 69 66 20 28 6c 5b 31 5d 3d 3d 27 73 27 20 26 26 20 6c 5b 32 5d 3d 3d 27 6f 27 29 0a 09 09 69   ┆ if (l[1]=='s' && l[2]=='o')   i┆
0x1520…1540 6e 63 6c 75 64 65 28 6c 69 6e 65 2b 33 2c 20 27 73 27 29 3b 0a 09 65 6c 73 65 20 69 66 20 28 6c   ┆nclude(line+3, 's');  else if (l┆
0x1540…1560 5b 31 5d 3d 3d 27 64 27 20 26 26 20 6c 5b 32 5d 3d 3d 27 65 27 29 0a 09 09 6d 61 63 64 65 66 28   ┆[1]=='d' && l[2]=='e')   macdef(┆
0x1560…1580 29 3b 0a 09 65 6c 73 65 20 69 66 20 28 6c 5b 31 5d 3d 3d 27 64 27 20 26 26 20 6c 5b 32 5d 3d 3d   ┆);  else if (l[1]=='d' && l[2]==┆
0x1580…15a0 27 73 27 29 0a 09 09 72 65 74 75 72 6e 3b 0a 09 65 6c 73 65 20 7b 0a 09 09 77 68 69 6c 65 20 28   ┆'s')   return;  else {   while (┆
0x15a0…15c0 2a 6c 21 3d 27 20 27 20 26 26 20 2a 6c 21 3d 27 5c 74 27 20 26 26 20 2a 6c 21 3d 27 5c 30 27 29   ┆*l!=' ' && *l!='\t' && *l!='\0')┆
0x15c0…15e0 0a 09 09 09 6c 2b 2b 3b 0a 09 09 77 68 69 6c 65 20 28 2a 6c 3d 3d 27 20 27 20 7c 7c 20 2a 6c 3d   ┆    l++;   while (*l==' ' || *l=┆
0x15e0…1600 3d 27 5c 74 27 29 0a 09 09 09 6c 2b 2b 3b 0a 09 09 69 66 20 28 2a 6c 20 21 3d 20 27 5c 30 27 29   ┆='\t')    l++;   if (*l != '\0')┆
0x1600…1620 0a 09 09 09 6f 75 74 70 75 74 28 6c 29 3b 0a 09 7d 0a 7d 0a 0a 2f 2a 0a 20 2a 20 50 72 6f 63 65   ┆    output(l);  } }  /*  * Proce┆
0x1620…1640 73 73 20 69 6e 63 6c 75 64 65 64 20 66 69 6c 65 73 2e 0a 20 2a 20 54 68 65 20 66 69 72 73 74 20   ┆ss included files.  * The first ┆
0x1640…1660 61 72 67 75 6d 65 6e 74 20 69 73 20 74 68 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 77 68 65 72 65   ┆argument is the pointer to where┆
0x1660…1680 0a 20 2a 20 74 68 65 20 66 69 6c 65 6e 61 6d 65 20 69 73 20 28 69 74 20 6d 61 79 20 68 61 76 65   ┆  * the filename is (it may have┆
0x1680…16a0 20 6a 75 6e 6b 20 62 65 66 6f 72 65 20 61 6e 64 20 61 66 74 65 72 20 69 74 29 0a 20 2a 20 54 68   ┆ junk before and after it)  * Th┆
0x16a0…16c0 65 20 73 65 63 6f 6e 64 20 69 73 20 27 73 27 20 66 6f 72 20 2e 73 6f 20 61 6e 64 20 27 6e 27 20   ┆e second is 's' for .so and 'n' ┆
0x16c0…16e0 66 6f 72 20 2e 6e 78 2e 0a 20 2a 2f 0a 69 6e 63 6c 75 64 65 28 66 6e 2c 20 74 79 70 65 29 0a 72   ┆for .nx.  */ include(fn, type) r┆
0x16e0…1700 65 67 69 73 74 65 72 20 63 68 61 72 20 2a 66 6e 3b 0a 63 68 61 72 20 74 79 70 65 3b 0a 7b 0a 09   ┆egister char *fn; char type; {  ┆
0x1700…1720 72 65 67 69 73 74 65 72 20 69 6e 74 20 63 3b 0a 09 72 65 67 69 73 74 65 72 20 63 68 61 72 20 2a   ┆register int c;  register char *┆
0x1720…1740 65 70 3b 0a 0a 09 77 68 69 6c 65 20 28 2a 66 6e 3d 3d 27 20 27 20 7c 7c 20 2a 66 6e 3d 3d 27 5c   ┆ep;   while (*fn==' ' || *fn=='\┆
0x1740…1760 74 27 29 0a 09 09 66 6e 2b 2b 3b 0a 09 66 6f 72 20 28 65 70 20 3d 20 66 6e 3b 20 28 63 20 3d 20   ┆t')   fn++;  for (ep = fn; (c = ┆
0x1760…1780 2a 65 70 29 21 3d 27 5c 30 27 3b 20 65 70 2b 2b 29 0a 09 09 69 66 20 28 63 3d 3d 27 5c 6e 27 20   ┆*ep)!='\0'; ep++)   if (c=='\n' ┆
0x1780…17a0 7c 7c 20 63 3d 3d 27 20 27 20 7c 7c 20 63 3d 3d 27 5c 74 27 20 7c 7c 20 63 3d 3d 27 5c 5c 27 29   ┆|| c==' ' || c=='\t' || c=='\\')┆
0x17a0…17c0 0a 09 09 09 62 72 65 61 6b 3b 0a 09 2a 65 70 20 3d 20 27 5c 30 27 3b 0a 09 69 66 20 28 74 79 70   ┆    break;  *ep = '\0';  if (typ┆
0x17c0…17e0 65 20 3d 3d 20 27 73 27 29 0a 09 09 64 6f 74 73 6f 28 66 6e 29 3b 0a 09 65 6c 73 65 0a 09 09 2a   ┆e == 's')   dotso(fn);  else   *┆
0x17e0…1800 6f 66 70 70 20 3d 20 64 6f 70 65 6e 28 66 6e 29 3b 0a 7d 0a 0a 2f 2a 0a 20 2a 20 50 72 6f 63 65   ┆ofpp = dopen(fn); }  /*  * Proce┆
0x1800…1820 73 73 20 65 71 6e 20 64 69 72 65 63 74 69 76 65 73 2e 0a 20 2a 20 43 75 72 72 65 6e 74 6c 79 2c   ┆ss eqn directives.  * Currently,┆
0x1820…1840 20 74 68 69 73 20 73 69 6d 70 6c 79 20 6c 6f 6f 6b 73 20 66 6f 72 0a 20 2a 20 2e 45 4e 20 6c 69   ┆ this simply looks for  * .EN li┆
0x1840…1860 6e 65 73 20 61 73 20 74 68 65 20 74 65 72 6d 69 6e 61 74 6f 72 0a 20 2a 20 61 6e 64 20 64 65 6c   ┆nes as the terminator  * and del┆
0x1860…1880 69 6d 20 6c 69 6e 65 73 20 74 6f 20 73 65 74 20 74 68 65 20 65 71 6e 20 64 65 6c 69 6d 69 74 65   ┆im lines to set the eqn delimite┆
0x1880…18a0 72 73 2e 0a 20 2a 2f 0a 65 71 6e 28 29 0a 7b 0a 09 72 65 67 69 73 74 65 72 20 63 68 61 72 20 2a   ┆rs.  */ eqn() {  register char *┆
0x18a0…18c0 63 70 3b 0a 0a 09 77 68 69 6c 65 20 28 64 67 65 74 73 28 6c 69 6e 65 29 20 21 3d 20 4e 55 4c 4c   ┆cp;   while (dgets(line) != NULL┆
0x18c0…18e0 29 20 7b 0a 09 09 69 66 20 28 73 74 72 6e 63 6d 70 28 6c 69 6e 65 2c 20 22 2e 45 4e 22 2c 20 33   ┆) {   if (strncmp(line, ".EN", 3┆
0x18e0…1900 29 20 3d 3d 20 30 29 0a 09 09 09 62 72 65 61 6b 3b 0a 09 09 69 66 20 28 73 74 72 6e 63 6d 70 28   ┆) == 0)    break;   if (strncmp(┆
0x1900…1920 6c 69 6e 65 2c 20 22 64 65 6c 69 6d 22 2c 20 35 29 20 3d 3d 20 30 29 20 7b 0a 09 09 09 66 6f 72   ┆line, "delim", 5) == 0) {    for┆
[…truncated at 200 lines…]