|
|
1.1 ! root 1: #include "tdef.h" ! 2: #include <sgtty.h> ! 3: extern ! 4: #include "d.h" ! 5: extern ! 6: #include "v.h" ! 7: #include "s.h" ! 8: ! 9: /* ! 10: troff5.c ! 11: ! 12: misc processing requests ! 13: */ ! 14: ! 15: #include "ext.h" ! 16: int iflist[NIF]; ! 17: int ifx; ! 18: ! 19: casead() ! 20: { ! 21: register i; ! 22: ! 23: ad = 1; ! 24: /*leave admod alone*/ ! 25: if (skip()) ! 26: return; ! 27: switch (i = cbits(getch())) { ! 28: case 'r': /*right adj, left ragged*/ ! 29: admod = 2; ! 30: break; ! 31: case 'l': /*left adj, right ragged*/ ! 32: admod = ad = 0; /*same as casena*/ ! 33: break; ! 34: case 'c': /*centered adj*/ ! 35: admod = 1; ! 36: break; ! 37: case 'b': ! 38: case 'n': ! 39: admod = 0; ! 40: break; ! 41: case '0': ! 42: case '2': ! 43: case '4': ! 44: ad = 0; ! 45: case '1': ! 46: case '3': ! 47: case '5': ! 48: admod = (i - '0') / 2; ! 49: } ! 50: } ! 51: ! 52: ! 53: casena() ! 54: { ! 55: ad = 0; ! 56: } ! 57: ! 58: ! 59: casefi() ! 60: { ! 61: tbreak(); ! 62: fi++; ! 63: pendnf = 0; ! 64: lnsize = LNSIZE; ! 65: } ! 66: ! 67: ! 68: casenf() ! 69: { ! 70: tbreak(); ! 71: fi = 0; ! 72: /* can't do while oline is only LNSIZE ! 73: lnsize = LNSIZE + WDSIZE; ! 74: */ ! 75: } ! 76: ! 77: ! 78: casers() ! 79: { ! 80: dip->nls = 0; ! 81: } ! 82: ! 83: ! 84: casens() ! 85: { ! 86: dip->nls++; ! 87: } ! 88: ! 89: ! 90: chget(c) ! 91: int c; ! 92: { ! 93: tchar i; ! 94: ! 95: if (skip() || ismot(i = getch()) || cbits(i) == ' ' || cbits(i) == '\n') { ! 96: ch = i; ! 97: return(c); ! 98: } else ! 99: return(i & BMASK); ! 100: } ! 101: ! 102: ! 103: casecc() ! 104: { ! 105: cc = chget('.'); ! 106: } ! 107: ! 108: ! 109: casec2() ! 110: { ! 111: c2 = chget('\''); ! 112: } ! 113: ! 114: ! 115: casehc() ! 116: { ! 117: ohc = chget(OHC); ! 118: } ! 119: ! 120: ! 121: casetc() ! 122: { ! 123: tabc = chget(0); ! 124: } ! 125: ! 126: ! 127: caselc() ! 128: { ! 129: dotc = chget(0); ! 130: } ! 131: ! 132: ! 133: casehy() ! 134: { ! 135: register i; ! 136: ! 137: hyf = 1; ! 138: if (skip()) ! 139: return; ! 140: noscale++; ! 141: i = atoi(); ! 142: noscale = 0; ! 143: if (nonumb) ! 144: return; ! 145: hyf = max(i, 0); ! 146: } ! 147: ! 148: ! 149: casenh() ! 150: { ! 151: hyf = 0; ! 152: } ! 153: ! 154: ! 155: max(aa, bb) ! 156: int aa, bb; ! 157: { ! 158: if (aa > bb) ! 159: return(aa); ! 160: else ! 161: return(bb); ! 162: } ! 163: ! 164: ! 165: casece() ! 166: { ! 167: register i; ! 168: ! 169: noscale++; ! 170: skip(); ! 171: i = max(atoi(), 0); ! 172: if (nonumb) ! 173: i = 1; ! 174: tbreak(); ! 175: ce = i; ! 176: noscale = 0; ! 177: } ! 178: ! 179: ! 180: casein() ! 181: { ! 182: register i; ! 183: ! 184: if (skip()) ! 185: i = in1; ! 186: else ! 187: i = max(hnumb(&in), 0); ! 188: tbreak(); ! 189: in1 = in; ! 190: in = i; ! 191: if (!nc) { ! 192: un = in; ! 193: setnel(); ! 194: } ! 195: } ! 196: ! 197: ! 198: casell() ! 199: { ! 200: register i; ! 201: ! 202: if (skip()) ! 203: i = ll1; ! 204: else ! 205: i = max(hnumb(&ll), INCH / 10); ! 206: ll1 = ll; ! 207: ll = i; ! 208: setnel(); ! 209: } ! 210: ! 211: ! 212: caselt() ! 213: { ! 214: register i; ! 215: ! 216: if (skip()) ! 217: i = lt1; ! 218: else ! 219: i = max(hnumb(<), 0); ! 220: lt1 = lt; ! 221: lt = i; ! 222: } ! 223: ! 224: ! 225: caseti() ! 226: { ! 227: register i; ! 228: ! 229: if (skip()) ! 230: return; ! 231: i = max(hnumb(&in), 0); ! 232: tbreak(); ! 233: un1 = i; ! 234: setnel(); ! 235: } ! 236: ! 237: ! 238: casels() ! 239: { ! 240: register i; ! 241: ! 242: noscale++; ! 243: if (skip()) ! 244: i = ls1; ! 245: else ! 246: i = max(inumb(&ls), 1); ! 247: ls1 = ls; ! 248: ls = i; ! 249: noscale = 0; ! 250: } ! 251: ! 252: ! 253: casepo() ! 254: { ! 255: register i; ! 256: ! 257: if (skip()) ! 258: i = po1; ! 259: else ! 260: i = max(hnumb(&po), 0); ! 261: po1 = po; ! 262: po = i; ! 263: #ifndef NROFF ! 264: if (!ascii) ! 265: esc += po - po1; ! 266: #endif ! 267: } ! 268: ! 269: ! 270: casepl() ! 271: { ! 272: register i; ! 273: ! 274: skip(); ! 275: if ((i = vnumb(&pl)) == 0) ! 276: pl = 11 * INCH; /*11in*/ ! 277: else ! 278: pl = i; ! 279: if (v.nl > pl) ! 280: v.nl = pl; ! 281: } ! 282: ! 283: ! 284: casewh() ! 285: { ! 286: register i, j, k; ! 287: ! 288: lgf++; ! 289: skip(); ! 290: i = vnumb((int *)0); ! 291: if (nonumb) ! 292: return; ! 293: skip(); ! 294: j = getrq(); ! 295: if ((k = findn(i)) != NTRAP) { ! 296: mlist[k] = j; ! 297: return; ! 298: } ! 299: for (k = 0; k < NTRAP; k++) ! 300: if (mlist[k] == 0) ! 301: break; ! 302: if (k == NTRAP) { ! 303: flusho(); ! 304: fprintf(stderr, "troff: cannot plant trap.\n"); ! 305: return; ! 306: } ! 307: mlist[k] = j; ! 308: nlist[k] = i; ! 309: } ! 310: ! 311: ! 312: casech() ! 313: { ! 314: register i, j, k; ! 315: ! 316: lgf++; ! 317: skip(); ! 318: if (!(j = getrq())) ! 319: return; ! 320: else ! 321: for (k = 0; k < NTRAP; k++) ! 322: if (mlist[k] == j) ! 323: break; ! 324: if (k == NTRAP) ! 325: return; ! 326: skip(); ! 327: i = vnumb((int *)0); ! 328: if (nonumb) ! 329: mlist[k] = 0; ! 330: nlist[k] = i; ! 331: } ! 332: ! 333: ! 334: findn(i) ! 335: int i; ! 336: { ! 337: register k; ! 338: ! 339: for (k = 0; k < NTRAP; k++) ! 340: if ((nlist[k] == i) && (mlist[k] != 0)) ! 341: break; ! 342: return(k); ! 343: } ! 344: ! 345: ! 346: casepn() ! 347: { ! 348: register i; ! 349: ! 350: skip(); ! 351: noscale++; ! 352: i = max(inumb(&v.pn), 0); ! 353: noscale = 0; ! 354: if (!nonumb) { ! 355: npn = i; ! 356: npnflg++; ! 357: } ! 358: } ! 359: ! 360: ! 361: casebp() ! 362: { ! 363: register i; ! 364: register struct s *savframe; ! 365: ! 366: if (dip != d) ! 367: return; ! 368: savframe = frame; ! 369: skip(); ! 370: if ((i = inumb(&v.pn)) < 0) ! 371: i = 0; ! 372: tbreak(); ! 373: if (!nonumb) { ! 374: npn = i; ! 375: npnflg++; ! 376: } else if (dip->nls) ! 377: return; ! 378: eject(savframe); ! 379: } ! 380: ! 381: ! 382: casetm(x) ! 383: int x; ! 384: { ! 385: register i; ! 386: char tmbuf[NTM]; ! 387: ! 388: lgf++; ! 389: copyf++; ! 390: if (skip() && x) ! 391: fprintf(stderr, "troff: user Abort."); ! 392: for (i = 0; i < NTM - 2; ) ! 393: if ((tmbuf[i++] = getch()) == '\n') ! 394: break; ! 395: if (i == NTM - 2) ! 396: tmbuf[i++] = '\n'; ! 397: tmbuf[i] = 0; ! 398: flusho(); ! 399: fprintf(stderr, "%s", tmbuf); ! 400: copyf--; ! 401: } ! 402: ! 403: ! 404: casesp(a) ! 405: int a; ! 406: { ! 407: register i, j, savlss; ! 408: ! 409: tbreak(); ! 410: if (dip->nls || trap) ! 411: return; ! 412: i = findt1(); ! 413: if (!a) { ! 414: skip(); ! 415: j = vnumb((int *)0); ! 416: if (nonumb) ! 417: j = lss; ! 418: } else ! 419: j = a; ! 420: if (j == 0) ! 421: return; ! 422: if (i < j) ! 423: j = i; ! 424: savlss = lss; ! 425: if (dip != d) ! 426: i = dip->dnl; ! 427: else ! 428: i = v.nl; ! 429: if ((i + j) < 0) ! 430: j = -i; ! 431: lss = j; ! 432: newline(0); ! 433: lss = savlss; ! 434: } ! 435: ! 436: ! 437: casert() ! 438: { ! 439: register a, *p; ! 440: ! 441: skip(); ! 442: if (dip != d) ! 443: p = &dip->dnl; ! 444: else ! 445: p = &v.nl; ! 446: a = vnumb(p); ! 447: if (nonumb) ! 448: a = dip->mkline; ! 449: if ((a < 0) || (a >= *p)) ! 450: return; ! 451: nb++; ! 452: casesp(a - *p); ! 453: } ! 454: ! 455: ! 456: caseem() ! 457: { ! 458: lgf++; ! 459: skip(); ! 460: em = getrq(); ! 461: } ! 462: ! 463: ! 464: casefl() ! 465: { ! 466: tbreak(); ! 467: flusho(); ! 468: } ! 469: ! 470: ! 471: caseev() ! 472: { ! 473: register nxev; ! 474: extern int block; ! 475: ! 476: if (skip()) { ! 477: e0: ! 478: if (evi == 0) ! 479: return; ! 480: nxev = evlist[--evi]; ! 481: goto e1; ! 482: } ! 483: noscale++; ! 484: nxev = atoi(); ! 485: noscale = 0; ! 486: if (nonumb) ! 487: goto e0; ! 488: flushi(); ! 489: if ((nxev >= NEV) || (nxev < 0) || (evi >= EVLSZ)) { ! 490: flusho(); ! 491: fprintf(stderr, "troff: cannot do ev.\n"); ! 492: if (error) ! 493: done2(040); ! 494: else ! 495: edone(040); ! 496: return; ! 497: } ! 498: evlist[evi++] = ev; ! 499: e1: ! 500: if (ev == nxev) ! 501: return; ! 502: lseek(ibf, (long)(ev * EVS), 0); ! 503: write(ibf, (char *) & block, EVS); ! 504: lseek(ibf, (long)(nxev * EVS), 0); ! 505: read(ibf, (char *) & block, EVS); ! 506: ev = nxev; ! 507: } ! 508: ! 509: ! 510: caseel() ! 511: { ! 512: if (--ifx < 0) { ! 513: ifx = 0; ! 514: iflist[0] = 0; ! 515: } ! 516: caseif(2); ! 517: } ! 518: ! 519: ! 520: caseie() ! 521: { ! 522: if (ifx >= NIF) { ! 523: fprintf(stderr, "troff: if-else overflow.\n"); ! 524: ifx = 0; ! 525: edone(040); ! 526: } ! 527: caseif(1); ! 528: ifx++; ! 529: } ! 530: ! 531: ! 532: caseif(x) ! 533: int x; ! 534: { ! 535: extern int falsef; ! 536: register j, notflag, true; ! 537: tchar i; ! 538: ! 539: if (x == 2) { ! 540: notflag = 0; ! 541: true = iflist[ifx]; ! 542: goto i1; ! 543: } ! 544: true = 0; ! 545: skip(); ! 546: if ((cbits(i = getch())) == '!') { ! 547: notflag = 1; ! 548: } else { ! 549: notflag = 0; ! 550: ch = i; ! 551: } ! 552: i = atoi(); ! 553: if (!nonumb) { ! 554: if (i > 0) ! 555: true++; ! 556: goto i1; ! 557: } ! 558: i = getch(); ! 559: switch (j = cbits(i)) { ! 560: case 'e': ! 561: if (!(v.pn & 01)) ! 562: true++; ! 563: break; ! 564: case 'o': ! 565: if (v.pn & 01) ! 566: true++; ! 567: break; ! 568: #ifdef NROFF ! 569: case 'n': ! 570: true++; ! 571: case 't': ! 572: #endif ! 573: #ifndef NROFF ! 574: case 't': ! 575: true++; ! 576: case 'n': ! 577: #endif ! 578: case ' ': ! 579: break; ! 580: default: ! 581: true = cmpstr(i); ! 582: } ! 583: i1: ! 584: true ^= notflag; ! 585: if (x == 1) ! 586: iflist[ifx] = !true; ! 587: if (true) { ! 588: i2: ! 589: do { ! 590: v.hp = 0; ! 591: pinchar = inchar; /* XXX */ ! 592: } while ((cbits(i = getch())) == ' '); ! 593: if (cbits(i) == LEFT) ! 594: goto i2; ! 595: ch = i; ! 596: nflush++; ! 597: } else { ! 598: copyf++; ! 599: falsef++; ! 600: if (eat(LEFT) == LEFT) { ! 601: while (eatblk(RIGHT, LEFT) != RIGHT) ! 602: nlflg = 0; ! 603: } ! 604: copyf--; ! 605: falsef--; ! 606: } ! 607: } ! 608: ! 609: eat0(c) ! 610: int c; ! 611: { ! 612: register i; ! 613: ! 614: while ((i = cbits(getch0())) != c && (i != '\n')) ! 615: ; ! 616: return(i); ! 617: } ! 618: ! 619: eatblk(right, left) ! 620: int right, left; ! 621: { ! 622: register i; ! 623: ! 624: e0: ! 625: while ((i = cbits(getch())) != right && i != left && i != '\n') ! 626: ; ! 627: if (i == left) { ! 628: while ((i = eatblk(right, left)) != right) ! 629: nlflg = 0; ! 630: goto e0; ! 631: } ! 632: return(i); ! 633: } ! 634: ! 635: ! 636: cmpstr(c) ! 637: tchar c; ! 638: { ! 639: register j, delim; ! 640: tchar i; ! 641: register filep p; ! 642: extern filep alloc(); ! 643: extern filep incoff(); ! 644: filep begin; ! 645: int cnt, k; ! 646: int savapts, savapts1, savfont, savfont1, ! 647: savpts, savpts1; ! 648: ! 649: if (ismot(c)) ! 650: return(0); ! 651: delim = cbits(c); ! 652: if (dip != d) ! 653: wbfl(); ! 654: if ((offset = begin = alloc()) == (filep)0) ! 655: return(0); ! 656: cnt = 0; ! 657: v.hp = 0; ! 658: pinchar = inchar; /* XXX */ ! 659: savapts = apts; ! 660: savapts1 = apts1; ! 661: savfont = font; ! 662: savfont1 = font1; ! 663: savpts = pts; ! 664: savpts1 = pts1; ! 665: while ((j = cbits(i = getch())) != delim && j != '\n') { ! 666: wbf(i); ! 667: cnt++; ! 668: } ! 669: wbt((tchar)0); ! 670: k = !cnt; ! 671: if (nlflg) ! 672: goto rtn; ! 673: p = begin; ! 674: apts = savapts; ! 675: apts1 = savapts1; ! 676: font = savfont; ! 677: font1 = savfont1; ! 678: pts = savpts; ! 679: pts1 = savpts1; ! 680: mchbits(); ! 681: v.hp = 0; ! 682: pinchar = inchar; /* XXX */ ! 683: while ((j = cbits(i = getch())) != delim && j != '\n') { ! 684: if (rbf0(p) != i) { ! 685: eat(delim); ! 686: k = 0; ! 687: break; ! 688: } ! 689: p = incoff(p); ! 690: k = !(--cnt); ! 691: } ! 692: rtn: ! 693: apts = savapts; ! 694: apts1 = savapts1; ! 695: font = savfont; ! 696: font1 = savfont1; ! 697: pts = savpts; ! 698: pts1 = savpts1; ! 699: mchbits(); ! 700: offset = dip->op; ! 701: ffree(begin); ! 702: return(k); ! 703: } ! 704: ! 705: ! 706: caserd() ! 707: { ! 708: ! 709: lgf++; ! 710: skip(); ! 711: getname(); ! 712: if (!iflg) { ! 713: if (quiet) { ! 714: ttys.sg_flags &= ~ECHO; ! 715: stty(0, &ttys); ! 716: flusho(); ! 717: fprintf(stderr, "\007"); /*bell*/ ! 718: } else { ! 719: if (nextf[0]) { ! 720: fprintf(stderr, "%s:", nextf); ! 721: } else { ! 722: fprintf(stderr, "\007"); /*bell*/ ! 723: } ! 724: } ! 725: } ! 726: collect(); ! 727: tty++; ! 728: pushi((filep) - 1); ! 729: } ! 730: ! 731: ! 732: rdtty() ! 733: { ! 734: char onechar; ! 735: ! 736: onechar = 0; ! 737: if (read(0, &onechar, 1) == 1) { ! 738: if (onechar == '\n') ! 739: tty++; ! 740: else ! 741: tty = 1; ! 742: if (tty != 3) ! 743: return(onechar); ! 744: } ! 745: popi(); ! 746: tty = 0; ! 747: if (quiet) { ! 748: ttys.sg_flags |= ECHO; ! 749: stty(0, &ttys); ! 750: } ! 751: return(0); ! 752: } ! 753: ! 754: ! 755: caseec() ! 756: { ! 757: eschar = chget('\\'); ! 758: } ! 759: ! 760: ! 761: caseeo() ! 762: { ! 763: eschar = 0; ! 764: } ! 765: ! 766: ! 767: caseta() ! 768: { ! 769: register i; ! 770: ! 771: tabtab[0] = nonumb = 0; ! 772: for (i = 0; ((i < (NTAB - 1)) && !nonumb); i++) { ! 773: if (skip()) ! 774: break; ! 775: tabtab[i] = max(hnumb(&tabtab[max(i-1,0)]), 0) & TMASK; ! 776: if (!nonumb) ! 777: switch (cbits(ch)) { ! 778: case 'C': ! 779: tabtab[i] |= CTAB; ! 780: break; ! 781: case 'R': ! 782: tabtab[i] |= RTAB; ! 783: break; ! 784: default: /*includes L*/ ! 785: break; ! 786: } ! 787: nonumb = ch = 0; ! 788: } ! 789: tabtab[i] = 0; ! 790: } ! 791: ! 792: ! 793: casene() ! 794: { ! 795: register i, j; ! 796: ! 797: skip(); ! 798: i = vnumb((int *)0); ! 799: if (nonumb) ! 800: i = lss; ! 801: if (i > (j = findt1())) { ! 802: i = lss; ! 803: lss = j; ! 804: dip->nls = 0; ! 805: newline(0); ! 806: lss = i; ! 807: } ! 808: } ! 809: ! 810: ! 811: casetr() ! 812: { ! 813: register i, j; ! 814: tchar k; ! 815: ! 816: lgf++; ! 817: skip(); ! 818: while ((i = cbits(k=getch())) != '\n') { ! 819: if (ismot(k)) ! 820: return; ! 821: if (ismot(k = getch())) ! 822: return; ! 823: if ((j = cbits(k)) == '\n') ! 824: j = ' '; ! 825: trtab[i] = j; ! 826: } ! 827: } ! 828: ! 829: ! 830: casecu() ! 831: { ! 832: cu++; ! 833: caseul(); ! 834: } ! 835: ! 836: ! 837: caseul() ! 838: { ! 839: register i; ! 840: ! 841: noscale++; ! 842: if (skip()) ! 843: i = 1; ! 844: else ! 845: i = atoi(); ! 846: if (ul && (i == 0)) { ! 847: font = sfont; ! 848: ul = cu = 0; ! 849: } ! 850: if (i) { ! 851: if (!ul) { ! 852: sfont = font; ! 853: font = ulfont; ! 854: } ! 855: ul = i; ! 856: } ! 857: noscale = 0; ! 858: mchbits(); ! 859: } ! 860: ! 861: ! 862: caseuf() ! 863: { ! 864: register i, j; ! 865: ! 866: if (skip() || !(i = getrq()) || i == 'S' || (j = findft(i)) == -1) ! 867: ulfont = FT + 1; /*default position 2*/ ! 868: else ! 869: ulfont = j; ! 870: #ifdef NROFF ! 871: if (ulfont == 1) ! 872: ulfont = 2; ! 873: #endif ! 874: ulbit = ulfont << 9; /* certain to fail in tchar version */ ! 875: } ! 876: ! 877: ! 878: caseit() ! 879: { ! 880: register i; ! 881: ! 882: lgf++; ! 883: it = itmac = 0; ! 884: noscale++; ! 885: skip(); ! 886: i = atoi(); ! 887: skip(); ! 888: if (!nonumb && (itmac = getrq())) ! 889: it = i; ! 890: noscale = 0; ! 891: } ! 892: ! 893: ! 894: casemc() ! 895: { ! 896: register i; ! 897: ! 898: if (icf > 1) ! 899: ic = 0; ! 900: icf = 0; ! 901: if (skip()) ! 902: return; ! 903: ic = getch(); ! 904: icf = 1; ! 905: skip(); ! 906: i = max(hnumb((int *)0), 0); ! 907: if (!nonumb) ! 908: ics = i; ! 909: } ! 910: ! 911: ! 912: casemk() ! 913: { ! 914: register i, j; ! 915: ! 916: if (dip != d) ! 917: j = dip->dnl; ! 918: else ! 919: j = v.nl; ! 920: if (skip()) { ! 921: dip->mkline = j; ! 922: return; ! 923: } ! 924: if ((i = getrq()) == 0) ! 925: return; ! 926: vlist[findr(i)] = j; ! 927: } ! 928: ! 929: ! 930: casesv() ! 931: { ! 932: register i; ! 933: ! 934: skip(); ! 935: if ((i = vnumb((int *)0)) < 0) ! 936: return; ! 937: if (nonumb) ! 938: i = 1; ! 939: sv += i; ! 940: caseos(); ! 941: } ! 942: ! 943: ! 944: caseos() ! 945: { ! 946: register savlss; ! 947: ! 948: if (sv <= findt1()) { ! 949: savlss = lss; ! 950: lss = sv; ! 951: newline(0); ! 952: lss = savlss; ! 953: sv = 0; ! 954: } ! 955: } ! 956: ! 957: ! 958: casenm() ! 959: { ! 960: register i; ! 961: ! 962: lnmod = nn = 0; ! 963: if (skip()) ! 964: return; ! 965: lnmod++; ! 966: noscale++; ! 967: i = inumb(&v.ln); ! 968: if (!nonumb) ! 969: v.ln = max(i, 0); ! 970: getnm(&ndf, 1); ! 971: getnm(&nms, 0); ! 972: getnm(&ni, 0); ! 973: noscale = 0; ! 974: nmbits = chbits; ! 975: } ! 976: ! 977: ! 978: getnm(p, min) ! 979: int *p, min; ! 980: { ! 981: register i; ! 982: ! 983: eat(' '); ! 984: if (skip()) ! 985: return; ! 986: i = atoi(); ! 987: if (nonumb) ! 988: return; ! 989: *p = max(i, min); ! 990: } ! 991: ! 992: ! 993: casenn() ! 994: { ! 995: noscale++; ! 996: skip(); ! 997: nn = max(atoi(), 1); ! 998: noscale = 0; ! 999: } ! 1000: ! 1001: ! 1002: caseab() ! 1003: { ! 1004: casetm(1); ! 1005: done2(0); ! 1006: } ! 1007: ! 1008:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.