Annotation of 40BSD/cmd/troff/n5.c, revision 1.1.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.