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: }
Last modified: 1986-04-17
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 584
Valid CSS Valid XHTML 1.0 Strict