Annotation of researchv10no/cmd/troff/ancient.nroff/n5.c, revision 1.1.1.1

1.1       root        1: #include "tdef.hd"
                      2: #ifdef unix
                      3: #include <sgtty.h>
                      4: #endif
                      5: #include "strs.hd"
                      6: 
                      7: /*
                      8: troff5.c
                      9: 
                     10: misc processing requests
                     11: */
                     12: 
                     13: extern struct s *frame;
                     14: extern struct tmpfaddr offset, ip;
                     15: extern struct d d[NDI], *dip;
                     16: #ifndef INCORE
                     17: extern struct envblock eblock;
                     18: #else
                     19: extern struct envblock eblock[NEV];
                     20: extern int ev;
                     21: extern int maclev;
                     22: #endif
                     23: extern struct datablock dblock;
                     24: 
                     25: extern int ch_CMASK;
                     26: extern long atoi0();
                     27: extern int dilev;
                     28: extern int ascii;
                     29: extern int nonumb;
                     30: extern int po;
                     31: extern int po1;
                     32: extern int lgf;
                     33: extern int pl;
                     34: extern int npn;
                     35: extern int npnflg;
                     36: extern int copyf;
                     37: extern char newf[];
                     38: extern int trap;
                     39: extern int em;
                     40: extern int evlist[EVLSZ];
                     41: extern int evi;
                     42: extern int ibf;
                     43: extern int ev;
                     44: extern int ch;
                     45: extern int nflush;
                     46: extern int tty;
                     47: extern struct sgttyb ttys;
                     48: extern int quiet;
                     49: extern int iflg;
                     50: extern int eschar;
                     51: extern int sfont;
                     52: extern int fontlab[];
                     53: extern int noscale;
                     54: extern int sv;
                     55: extern int esc;
                     56: extern int nlflg;
                     57: extern int ulfont;
                     58: extern int ulbit;
                     59: extern int error;
                     60: int Hipb = -1;         /* Hold ip.b for cu test in gettch - set by caseul */
                     61: int iflist[NIF];
                     62: int ifx;
                     63: casead(){
                     64: 
                     65:        ad = 1;
                     66:        /*leave admod alone*/
                     67:        if(skip())return;
                     68:        getch();
                     69:        switch (ch_CMASK)       {
                     70:                case 'r':       /*right adj, left ragged*/
                     71:                        admod = 2;
                     72:                        break;
                     73:                case 'l':       /*left adj, right ragged*/
                     74:                        admod = ad = 0; /*same as casena*/
                     75:                        break;
                     76:                case 'c':       /*centered adj*/
                     77:                        admod = 1;
                     78:                        break;
                     79:                case 'b': case 'n':
                     80:                        admod = 0;
                     81:                        break;
                     82:                case '0': case '2': case '4':
                     83:                        ad = 0;
                     84:                case '1': case '3': case '5':
                     85:                        admod = (ch_CMASK - '0')/2;
                     86:        }
                     87: }
                     88: casena(){
                     89:        ad = 0;
                     90: }
                     91: casefi(){
                     92:        tbreak();
                     93:        fi++;
                     94:        pendnf = 0;
                     95:        lnsize = LNSIZE;
                     96: }
                     97: casenf(){
                     98:        tbreak();
                     99:        fi = 0;
                    100: }
                    101: casers(){
                    102:        dip->nls = 0;
                    103: }
                    104: casens(){
                    105:        dip->nls++;
                    106: }
                    107: chget(c)
                    108: int c;
                    109: {
                    110:        register i;
                    111: 
                    112:        if(skip()) return (c);
                    113:        if (((i = getch()) & MOT) ||
                    114:          (ch_CMASK == ' ') ||
                    115:          (ch_CMASK == '\n')){
                    116:                ch = i;
                    117:                return(c);
                    118:        }else return(i & BMASK);
                    119: }
                    120: casecc(){
                    121:        cc = chget('.');
                    122: }
                    123: casec2(){
                    124:        c2 = chget('\'');
                    125: }
                    126: casehc(){
                    127:        ohc = chget(OHC);
                    128: }
                    129: casetc(){
                    130:        tabc = chget(0);
                    131: }
                    132: caselc(){
                    133:        dotc = chget(0);
                    134: }
                    135: casehy(){
                    136:        register i;
                    137: 
                    138:        hyf = 1;
                    139:        if(skip())return;
                    140:        noscale++;
                    141:        i = atoi();
                    142:        noscale = 0;
                    143:        if(nonumb)return;
                    144:        hyf = max(i,0);
                    145: }
                    146: casenh(){
                    147:        hyf = 0;
                    148: }
                    149: max(aa,bb)
                    150: int aa,bb;
                    151: {
                    152:        if(aa>bb)return(aa);
                    153:        else return(bb);
                    154: }
                    155: casece(){
                    156:        register i;
                    157: 
                    158:        noscale++;
                    159:        skip();
                    160:        i = max(atoi(),0);
                    161:        if(nonumb)i = 1;
                    162:        tbreak();
                    163:        ce = i;
                    164:        noscale = 0;
                    165: }
                    166: casein(){
                    167:        register i;
                    168: 
                    169:        if(skip())i = in1;
                    170:        else i = max(hnumb(&in),0);
                    171:        tbreak();
                    172:        in1 = in;
                    173:        in = i;
                    174:        if(!nc){
                    175:                un = in;
                    176:                setnel();
                    177:        }
                    178: }
                    179: casell(){
                    180:        register i;
                    181: 
                    182:        if(skip())i = ll1;
                    183:        else i = max(hnumb(&ll),INCH/10);
                    184:        ll1 = ll;
                    185:        ll = i;
                    186:        setnel();
                    187: }
                    188: caselt(){
                    189:        register i;
                    190: 
                    191:        if(skip())i = lt1;
                    192:        else i = max(hnumb(&lt),0);
                    193:        lt1 = lt;
                    194:        lt = i;
                    195: }
                    196: caseti(){
                    197:        register i;
                    198: 
                    199:        if(skip())return;
                    200:        i = max(hnumb(&in),0);
                    201:        tbreak();
                    202:        un1 = i;
                    203:        setnel();
                    204: }
                    205: casels(){
                    206:        register i;
                    207: 
                    208:        noscale++;
                    209:        if(skip())i = ls1;
                    210:        else i = max(inumb(&ls),1);
                    211:        ls1 = ls;
                    212:        ls = i;
                    213:        noscale = 0;
                    214: }
                    215: casepo(){
                    216:        register i;
                    217: 
                    218:        if(skip())i = po1;
                    219:        else i = max(hnumb(&po),0);
                    220:        po1 = po;
                    221:        po = i;
                    222: #ifndef NROFF
                    223:        if(!ascii)esc += po - po1;
                    224: #endif
                    225: }
                    226: casepl(){
                    227:        register i;
                    228: 
                    229:        skip();
                    230:        if((i = vnumb(&pl)) == 0)pl = 11 * INCH; /*11in*/
                    231:                else pl = i;
                    232:        if(v_nl > pl)v_nl = pl;
                    233: }
                    234: casewh(){
                    235:        register i, j, k;
                    236: 
                    237:        lgf++;
                    238:        skip();
                    239:        i = vnumb((int *)0);
                    240:        if(nonumb)return;
                    241:        skip();
                    242:        j = getrq();
                    243:        if((k=findn(i)) != NTRAP){
                    244:                mlist[k] = j;
                    245:                return;
                    246:        }
                    247:        for(k=0; k<NTRAP; k++)if(mlist[k] == 0)break;
                    248:        if(k == NTRAP){
                    249:                prstrfl("Cannot plant trap.\n");
                    250:                return;
                    251:        }
                    252:        mlist[k] = j;
                    253:        nlist[k] = i;
                    254: }
                    255: casech(){
                    256:        register i, j, k;
                    257: 
                    258:        lgf++;
                    259:        skip();
                    260:        if(!(j=getrq()))return;
                    261:                else for(k=0; k<NTRAP; k++)if(mlist[k] == j)break;
                    262:        if(k == NTRAP)return;
                    263:        skip();
                    264:        i = vnumb((int *)0);
                    265:        if(nonumb)mlist[k] = 0;
                    266:        nlist[k] = i;
                    267: }
                    268: findn(i)
                    269: int i;
                    270: {
                    271:        register k;
                    272: 
                    273:        for(k=0; k<NTRAP; k++)
                    274:                if((nlist[k] == i) && (mlist[k] != 0))break;
                    275:        return(k);
                    276: }
                    277: casepn(){
                    278:        register i;
                    279: 
                    280:        skip();
                    281:        noscale++;
                    282:        i = max(inumb(&v_pn),0);
                    283:        noscale = 0;
                    284:        if(!nonumb){
                    285:                npn = i;
                    286:                npnflg++;
                    287:        }
                    288: }
                    289: casebp(){
                    290:        register i;
                    291:        register struct s *savframe;
                    292: 
                    293:        if (dilev > 0) return;
                    294: #ifndef INCORE
                    295:        savframe = frame;
                    296: #else
                    297:        savframe = (struct s *)maclev;
                    298: #endif
                    299:        skip();
                    300:        if((i = inumb(&v_pn)) < 0)i = 0;
                    301:        tbreak();
                    302:        if(!nonumb){
                    303:                npn = i;
                    304:                npnflg++;
                    305:        }else if(dip->nls)return;
                    306:        eject(savframe);
                    307: }
                    308: casetm(x) int x;{
                    309:        register i;
                    310:        char tmbuf[NTM];
                    311: 
                    312:        lgf++;
                    313:        copyf++;
                    314:        if(skip() && x)prstrfl("User Abort.");
                    315:        for(i=0; i<NTM-2;)if((tmbuf[i++]=getch()) == '\n')break;
                    316:        if(i == NTM-2)tmbuf[i++] = '\n';
                    317:        tmbuf[i] = 0;
                    318:        aprstrfl(tmbuf);
                    319:        copyf--;
                    320: }
                    321: casesp(a)
                    322: int a;
                    323: {
                    324:        register i, j, savlss;
                    325: 
                    326:        tbreak();
                    327:        if(dip->nls || trap)return;
                    328:        i = findt1();
                    329:        if(!a){
                    330:                skip();
                    331:                j = vnumb((int *)0);
                    332:                if(nonumb)j = lss;
                    333:        }else j = a;
                    334:        if(j == 0)return;
                    335:        if(i < j)j = i;
                    336:        savlss = lss;
                    337:        if (dilev > 0) i = dip->dnl; else i = v_nl;
                    338:        if((i + j) < 0)j = -i;
                    339:        lss = j;
                    340:        newline(0);
                    341:        lss = savlss;
                    342: }
                    343: casert(){
                    344:        register a, *p;
                    345: 
                    346:        skip();
                    347:        if (dilev > 0) p = &dip->dnl; else p = &v_nl;
                    348:        a = vnumb(p);
                    349:        if(nonumb)a = dip->mkline;
                    350:        if((a < 0) || (a >= *p))return;
                    351:        nb++;
                    352:        casesp(a - *p);
                    353: }
                    354: caseem(){
                    355:        lgf++;
                    356:        skip();
                    357:        em = getrq();
                    358: }
                    359: casefl(){
                    360:        tbreak();
                    361:        flusho();
                    362: }
                    363: caseev(){
                    364:        register nxev;
                    365: 
                    366:        if(skip()){
                    367: e0:
                    368:                if(evi == 0)return;
                    369:                nxev =  evlist[--evi];
                    370:        } else {
                    371:                noscale++;
                    372:                nxev = atoi();
                    373:                noscale = 0;
                    374:                if(nonumb)goto e0;
                    375:                flushi();
                    376:                if((nxev >= NEV) || (nxev < 0) || (evi >= EVLSZ)){
                    377:                        prstrfl("Cannot do ev_\n");
                    378:                        if(error)done2(040);else edone(040);
                    379:                        return; }
                    380:                evlist[evi++] = ev;     }
                    381:        if(ev == nxev)return;
                    382: #ifndef INCORE
                    383:        lseek(ibf, (long)(ev*sizeof(struct envblock)), 0);
                    384:        write(ibf,(char *)&eblock, sizeof(struct envblock));
                    385:        lseek(ibf, (long)(nxev*sizeof(struct envblock)), 0);
                    386:        read(ibf,(char *)&eblock, sizeof(struct envblock));
                    387: #endif
                    388:        ev = nxev;
                    389: }
                    390: caseel(){
                    391:        if(--ifx < 0){
                    392:                ifx = 0;
                    393:                iflist[0] = 0;
                    394:        }
                    395:        caseif(2);
                    396: }
                    397: caseie(){
                    398:        if(ifx >= NIF){
                    399:                prstr("if-else overflow.\n");
                    400:                ifx = 0;
                    401:                edone(040);
                    402:        }
                    403:        caseif(1);
                    404:        ifx++;
                    405: }
                    406: caseif(x)
                    407: int x;
                    408: {
                    409:        register i, notflag, true;
                    410: 
                    411:        if(x == 2){
                    412:                notflag = 0;
                    413:                true = iflist[ifx];
                    414:                goto i1;
                    415:        }
                    416:        true = 0;
                    417:        skip();
                    418:        if ((ch = getch()) && (notflag = (ch_CMASK == '!')))
                    419:                ch = 0;
                    420:        i = atoi();
                    421:        if(!nonumb){
                    422:                if(i > 0)true++;
                    423:                goto i1;
                    424:        }
                    425:        i = getch();
                    426:        switch (ch_CMASK)       {
                    427:                case 'e':
                    428:                        if(!(v_pn & 01))true++;
                    429:                        break;
                    430:                case 'o':
                    431:                        if(v_pn & 01)true++;
                    432:                        break;
                    433: #ifdef NROFF
                    434:                case 'n':
                    435:                        true++;
                    436:                case 't':
                    437: #endif
                    438: #ifndef NROFF
                    439:                case 't':
                    440:                        true++;
                    441:                case 'n':
                    442: #endif
                    443:                case ' ':
                    444:                        break;
                    445:                default:
                    446:                        true = cmpstr(i);
                    447:        }
                    448: i1:
                    449:        true ^= notflag;
                    450:        if(x == 1)iflist[ifx] = !true;
                    451:        if(true){
                    452:                do
                    453:                    do { v_hp = 0;  i = getch(); }
                    454:                    while (ch_CMASK == ' ');
                    455:                while (ch_CMASK == LEFT);
                    456:                ch = i;
                    457:                nflush++;       }
                    458:        else {
                    459:                copyf++;
                    460:                eatblk(0);
                    461:                copyf--;        }
                    462: }
                    463: eatblk(inblk)
                    464: int inblk;
                    465: {      register int cnt, i;
                    466: 
                    467:        cnt = 0;
                    468:        do    {
                    469:                if (ch) {
                    470:                        i = ch & CMASK;
                    471:                        ch = 0; }
                    472:                    else
                    473:                        i = getch0() & CMASK;
                    474:                if (i == ESC) cnt++;
                    475:                   else { if (cnt == 1)
                    476:                             switch (i) {
                    477:                                case '{':  i = LEFT; break;
                    478:                                case '}':  i = RIGHT; break;
                    479:                                case '\n': i = 'x'; break;
                    480:                                default:   break;       }
                    481:                          cnt = 0;      }
                    482:                if (i == LEFT) eatblk(1);       }
                    483:            while ((!inblk && (i != '\n')) || (inblk && (i != RIGHT)));
                    484: 
                    485:        if (i == '\n') nlflg++;
                    486: }
                    487: cmpstr(delim)
                    488: int delim;
                    489: {
                    490:        register i;
                    491:        struct tmpfaddr p;
                    492:        extern filep alloc();
                    493:        struct tmpfaddr begin;
                    494:        int cnt, k;
                    495:        int savapts, savapts1, savfont, savfont1,
                    496:                savpts, savpts1;
                    497:        int smacbcnt;
                    498:        extern int macbcnt;
                    499: 
                    500:        if(delim & MOT)return(0);
                    501:        delim &= CMASK;
                    502:        if (dilev > 0) wbfl();
                    503:        if((offset.b = begin.b = alloc()) == (filep)0)return(0);
                    504:        offset.o = begin.o = 0;
                    505:        cnt = 0;
                    506:        v_hp = 0;
                    507:        savapts = apts;
                    508:        savapts1 = apts1;
                    509:        savfont = font;
                    510:        savfont1 = font1;
                    511:        savpts = pts;
                    512:        savpts1 = pts1;
                    513:        while ((i = getch()) && (ch_CMASK != delim) && (ch_CMASK != '\n')) {
                    514:                wbf(i);
                    515:                cnt++;  }
                    516:        wbt(0);
                    517:        k = !cnt;
                    518:        if(nlflg)goto rtn;
                    519:        cptmpfaddr(p,begin);
                    520:        ch = getch();           /* force first read */
                    521:        smacbcnt = macbcnt;
                    522:        macbcnt = 0;
                    523:        apts = savapts;
                    524:        apts1 = savapts1;
                    525:        font = savfont;
                    526:        font1 = savfont1;
                    527:        pts = savpts;
                    528:        pts1 = savpts1;
                    529:        mchbits();
                    530:        v_hp = 0;
                    531:        while ((i = getch()) && (ch_CMASK != delim) && (ch_CMASK != '\n')) {
                    532:                if(rbf0(&p) != i){
                    533:                        eat(delim);
                    534:                        k = 0;
                    535:                        break;
                    536:                }
                    537:                incoff(p);
                    538:                k = !(--cnt);
                    539:        }
                    540:        macbcnt = smacbcnt;
                    541: rtn:
                    542:        apts = savapts;
                    543:        apts1 = savapts1;
                    544:        font = savfont;
                    545:        font1 = savfont1;
                    546:        pts = savpts;
                    547:        pts1 = savpts1;
                    548:        mchbits();
                    549:        cptmpfaddr(offset,dip->op);
                    550:        ffree(begin.b);
                    551:        return(k);
                    552: }
                    553: caserd(){
                    554: 
                    555:        lgf++;
                    556:        skip();
                    557:        getname();
                    558:        if(!iflg){
                    559:                if(quiet){
                    560: #ifdef unix
                    561:                        ttys.sg_flags &= ~ECHO;
                    562:                        stty(0, &ttys);
                    563: #endif
                    564:                        aprstrfl("\007"); /*bell*/
                    565:                }else{
                    566:                        if(newf[0]){
                    567:                                prstr(newf);
                    568:                                prstr(":");
                    569:                        }else{
                    570:                                aprstr("\007"); /*bell*/
                    571:                        }
                    572:                }
                    573:        }
                    574:        collect();
                    575:        tty++;
                    576:        pushi((filep)-1);
                    577: }
                    578: rdtty(){
                    579:        char onechar;
                    580: 
                    581:        onechar = 0;
                    582: #ifdef unix
                    583:        if(read(0, &onechar, 1) == 1){
                    584: #endif
                    585: #ifdef tso
                    586:        if (fread((char *)&onechar,1,1,stdin) == 1)     {
                    587: #endif
                    588:                if(onechar == '\n')tty++;
                    589:                        else tty = 1;
                    590:                if(tty != 3)return(onechar);
                    591:        }
                    592:        popi();
                    593:        tty = 0;
                    594:        if(quiet){
                    595: #ifdef unix
                    596:                ttys.sg_flags |= ECHO;
                    597:                stty(0, &ttys);
                    598: #endif
                    599:        }
                    600:        return(0);
                    601: }
                    602: caseec(){
                    603:        eschar = chget('\\');
                    604: }
                    605: caseeo(){
                    606:        eschar = 0;
                    607: }
                    608: caseta(){
                    609:        register i;
                    610:        int j;
                    611: 
                    612:        tabtab[0] = nonumb = 0;
                    613:        for(i=0; ((i < (NTAB-1)) && !nonumb); i++){
                    614:                if(skip())break;
                    615:                j = tabtab[max(i-1,0)] & TMASK;
                    616:                tabtab[i] = max(hnumb(&j),0) & TMASK;
                    617:                if(!nonumb) switch(ch & CMASK){
                    618:                        case 'C':
                    619:                                tabtab[i] |= CTAB;
                    620:                                break;
                    621:                        case 'R':
                    622:                                tabtab[i] |= RTAB;
                    623:                                break;
                    624:                        default: /*includes L*/
                    625:                                break;
                    626:                        }
                    627:                nonumb = ch = 0;
                    628:        }
                    629:        tabtab[i] = 0;
                    630: }
                    631: casene(){
                    632:        register i, j;
                    633: 
                    634:        skip();
                    635:        i = vnumb((int *)0);
                    636:        if(nonumb)i = lss;
                    637:        if(i > (j = findt1())){
                    638:                i = lss;
                    639:                lss = j;
                    640:                dip->nls = 0;
                    641:                newline(0);
                    642:                lss = i;
                    643:        }
                    644: }
                    645: casetr(){
                    646:        register i;
                    647: 
                    648:        lgf++;
                    649:        skip();
                    650:        while (getch() && ((i = ch_CMASK) != '\n')) {
                    651:                if ((ch_CMASK & MOT) || (getch() & MOT)) return;
                    652:                if (ch_CMASK == '\n') ch_CMASK = ' ';
                    653:                trtab[i] = ch_CMASK;
                    654:        }
                    655: }
                    656: casecu(){
                    657:        cu++;
                    658:        caseul();
                    659: }
                    660: caseul(){
                    661:        register i;
                    662: 
                    663:        noscale++;
                    664:        if(skip())i = 1;
                    665:        else i = atoi();
                    666:        if (cu) Hipb = ip.b;    /* save ip.b for test in gettch */
                    667:            else Hipb = -2;     /* ul - for gettch */
                    668:        if(ul && (i == 0)){
                    669:                font = sfont;
                    670:                ul = cu = 0;
                    671:        }
                    672:        if(i){
                    673:                if(!ul){
                    674:                        sfont = font;
                    675:                        font = ulfont;
                    676:                }
                    677:                ul = i; }
                    678:            else cu = 0;
                    679:        noscale = 0;
                    680:        mchbits();
                    681: }
                    682: caseuf(){
                    683:        register i, j;
                    684: 
                    685:        if(skip() || !(i = getrq()) || (i == 'S') ||
                    686:                ((j = find(i,fontlab))  == -1))
                    687:                        ulfont = 1; /*default position 2*/
                    688:        else ulfont = j;
                    689: #ifdef NROFF
                    690:        if(ulfont == 0)ulfont = 1;
                    691: #endif
                    692:        ulbit = ulfont<<9;
                    693: }
                    694: caseit(){
                    695:        register i;
                    696: 
                    697:        lgf++;
                    698:        it = itmac = 0;
                    699:        noscale++;
                    700:        skip();
                    701:        i = atoi();
                    702:        skip();
                    703:        if(!nonumb && (itmac = getrq()))it = i;
                    704:        noscale = 0;
                    705: }
                    706: casemc(){
                    707:        register i;
                    708: 
                    709:        if(icf > 1)ic = 0;
                    710:        icf = 0;
                    711:        if(skip())return;
                    712:        ic = getch();
                    713:        icf = 1;
                    714:        skip();
                    715:        i = max(hnumb((int *)0),0);
                    716:        if(!nonumb)ics = i;
                    717: }
                    718: casemk(){
                    719:        register i, j;
                    720: 
                    721:        if (dilev > 0) j = dip->dnl; else j = v_nl;
                    722:        if(skip()){
                    723:                dip->mkline = j;
                    724:                return;
                    725:        }
                    726:        if((i = getrq()) == 0)return;
                    727:        vlist[findr(i)] = j;
                    728: }
                    729: casesv(){
                    730:        register i;
                    731: 
                    732:        skip();
                    733:        if((i = vnumb((int *)0)) < 0)return;
                    734:        if(nonumb)i = 1;
                    735:        sv += i;
                    736:        caseos();
                    737: }
                    738: caseos(){
                    739:        register savlss;
                    740: 
                    741:        if(sv <= findt1()){
                    742:                savlss = lss;
                    743:                lss = sv;
                    744:                newline(0);
                    745:                lss = savlss;
                    746:                sv = 0;
                    747:        }
                    748: }
                    749: casenm(){
                    750:        register i;
                    751: 
                    752:        lnmod = nn = 0;
                    753:        if(skip())return;
                    754:        lnmod++;
                    755:        noscale++;
                    756:        i = inumb(&v_ln);
                    757:        if(!nonumb)v_ln = max(i,0);
                    758:        getnm(&ndf,1);
                    759:        getnm(&nms,0);
                    760:        getnm(&ni,0);
                    761:        noscale = 0;
                    762:        nmbits = chbits;
                    763: }
                    764: getnm(p,min)
                    765: int *p, min;
                    766: {
                    767:        register i;
                    768: 
                    769:        eat(' ');
                    770:        if(skip())return;
                    771:        i = atoi();
                    772:        if(nonumb)return;
                    773:        *p = max(i,min);
                    774: }
                    775: casenn(){
                    776:        noscale++;
                    777:        skip();
                    778:        nn = max(atoi(),1);
                    779:        noscale = 0;
                    780: }
                    781: caseab(){
                    782:        casetm(1);
                    783:        done2(0);
                    784: }

unix.superglobalmegacorp.com

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