Annotation of 3BSD/cmd/troff/n5.c, revision 1.1

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

unix.superglobalmegacorp.com

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