Annotation of 43BSD/ingres/source/parser/get_scan.c, revision 1.1.1.1

1.1       root        1: # include      <ingres.h>
                      2: # include      "scanner.h"
                      3: # include      <sccs.h>
                      4: 
                      5: SCCSID(@(#)get_scan.c  8.2     1/17/85)
                      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 & I1MASK, 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.