Annotation of researchv8dc/cmd/qed/glob.c, revision 1.1.1.1

1.1       root        1: /*% cc -c -O %
                      2:  */
                      3: #include "vars.h"
                      4: #define        ALWAYS  2
                      5: #define GBSIZE 256
                      6: until(nfl, n)
                      7: {
                      8:        register c, type;
                      9:        char ubuf[GBSIZE];
                     10: 
                     11:        c = getchar();
                     12:        type=posn(c, "ft ");
                     13:        if(type < 0){
                     14:                if(nfl==0)
                     15:                        error('x');
                     16:                ungetchar(c);
                     17:        }
                     18:        getglob(ubuf);
                     19:        settruth(FALSE);
                     20:        if(nfl && n<=0)
                     21:                return; /* do it zero times */
                     22:        do ; while (exglob(ubuf, ubuf) &&
                     23:                   !((nfl && --n==0) || 
                     24:                     (type != ALWAYS && type == truth())));
                     25: }
                     26: global(k)
                     27: {
                     28:        register int *a1;
                     29:        char globuf[GBSIZE];
                     30:        struct buffer *startbuf;
                     31: 
                     32:        if(gflag++)
                     33:                error('g');
                     34:        setall();
                     35:        if(nextchar() == '\n')
                     36:                error('x');
                     37:        compile(getchar());
                     38:        getglob(globuf);
                     39:        for (a1=zero; ++a1<=dol;) {
                     40:                *a1 &= ~01;
                     41:                if (a1>=addr1 && a1<=addr2 && execute(a1)==k)
                     42:                        *a1 |= 01;
                     43:        }
                     44:        startbuf = curbuf;
                     45:        for (a1=zero; ++a1<=dol; ) {
                     46:                if (*a1 & 01) {
                     47:                        *a1 &= ~01;
                     48:                        dot = a1;
                     49:                        if (!exglob(globuf, "p"))
                     50:                                break;
                     51:                        chngbuf(startbuf-buffer);
                     52:                        a1 = zero;
                     53:                }
                     54:        }
                     55:        chngbuf(startbuf-buffer);
                     56:        gflag=FALSE;
                     57: }
                     58: 
                     59: globuf(k)
                     60: {
                     61:        register struct buffer *bp;
                     62:        char globbuf[GBSIZE];
                     63: 
                     64:        if (biggflag++)
                     65:                error('G');
                     66:        if (nextchar() =='\n')
                     67:                error('x');
                     68:        compile(getchar());
                     69:        getglob(globbuf);
                     70:        for (bp=buffer; bp < &buffer[NBUFS]; bp++)
                     71:                bp->gmark = FALSE;
                     72:        ncom('G');      /* mark interesting buffers */
                     73:        for (bp=buffer; bp < &buffer[NBUFS]; bp++)
                     74:                if (bp->gmark == k) {
                     75:                        chngbuf(bp-buffer);
                     76:                        if (!exglob(globbuf, "f\n"))
                     77:                                break;
                     78:                }
                     79:        biggflag = FALSE;
                     80: }
                     81: 
                     82: getglob(globuf)
                     83:        char globuf[];
                     84: {
                     85:        register char *gp;
                     86:        register c;
                     87:        int getchar();
                     88:        gp = globuf;
                     89:        while ((c = getquote("\n", getchar)) != '\n') {
                     90:                if (c==EOF)
                     91:                        error('x');
                     92:                *gp++ = c & 0177;
                     93:                if (gp >= &globuf[GBSIZE-2])
                     94:                        error('l');
                     95:        }
                     96:        *gp++ = '\n';
                     97:        *gp++ = 0;
                     98: }
                     99: 
                    100: exglob(cmd, dflt)
                    101:        char *cmd, *dflt;
                    102: {
                    103:        register int nesting;
                    104: 
                    105:        pushinp(GLOB, eqstr(cmd,"\n")? dflt : cmd, FALSE);
                    106:        nesting = ++nestlevel;
                    107:        commands();
                    108:        if (nesting!=nestlevel)
                    109:                return(FALSE);
                    110:        nestlevel--;
                    111:        return(TRUE);
                    112: }

unix.superglobalmegacorp.com

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