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