Annotation of 42BSD/ingres/source/parser/get_scan.c, revision 1.1

1.1     ! root        1: # include      <ingres.h>
        !             2: # include      "scanner.h"
        !             3: # include      <sccs.h>
        !             4: 
        !             5: SCCSID(@(#)get_scan.c  7.2     5/4/83)
        !             6: 
        !             7: /*
        !             8: ** GET_SCAN -- gets characters from monitor
        !             9: **
        !            10: **     Parameters:
        !            11: **             mode --
        !            12: **                 modes are:
        !            13: **                     NORMAL = read normally
        !            14: **                     PRIME = prime the pipe
        !            15: **                     SYNC = sync (or flush) the pipe
        !            16: **
        !            17: **     Returns:
        !            18: **             character or '\0' on eof
        !            19: **
        !            20: **     Trace Flags:
        !            21: **             Getscan ~~ 54.0
        !            22: */
        !            23: 
        !            24: get_scan(mode)
        !            25: int    mode;
        !            26: {
        !            27:        extern int              yyline;
        !            28:        register int            ctr;
        !            29:        char                    c;
        !            30: 
        !            31:        extern int              Pctr;           /* vble for backup stack in scanner */
        !            32:        extern char             Pchar[2];
        !            33: # ifdef        xPTR3
        !            34:        tTfp(54, 0, "get_scan: mode %d ", mode);
        !            35: # endif
        !            36: 
        !            37:        switch (mode)
        !            38:        {
        !            39:            case NORMAL:
        !            40:                if (Pctr)
        !            41:                {
        !            42:                        c = Pchar[--Pctr];
        !            43:                        ctr = 1;
        !            44:                }
        !            45:                else
        !            46:                        ctr = readmon(&c, 1);
        !            47:                if (c == '\n')
        !            48:                        yyline++;
        !            49:                c = ((Lcase && c >= 'A' && c <= 'Z') ? (c + ('a' - 'A')) : c);
        !            50:                break;
        !            51: 
        !            52:            case PRIME:
        !            53:                Pctr = 0;
        !            54:                ctr = 0;
        !            55:                break;
        !            56: 
        !            57:            case SYNC:                          /* flush pipe */
        !            58:                while (readmon(&c, 1) > 0);
        !            59:                ctr = 0;
        !            60:                break;
        !            61: 
        !            62:            default:
        !            63:                syserr("bad arg '%d' in get_scan", mode);
        !            64:        }
        !            65: 
        !            66: # ifdef        xPTR3
        !            67:        tTfp(54, 1, " ctr %d: '%c' (0%o).\n", ctr & 0377, c, c);
        !            68: # endif
        !            69: 
        !            70:        return (ctr ? c : 0);
        !            71: }

unix.superglobalmegacorp.com

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