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

unix.superglobalmegacorp.com

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