Annotation of 43BSDTahoe/usr.bin/roff/common_source/n5.c, revision 1.1.1.1

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

unix.superglobalmegacorp.com

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