4.1cBSD/usr/src/ucb/ingres/source/parser/s_inout.c

Compare this file to the similar file:
Show the results in this format:

# include <ingres.h>
# include "scanner.h"
# include	<sccs.h>

SCCSID(@(#)s_inout.c	7.1	2/5/81)

/* TWO CHARACTER STACK FOR 'UNGETC' BACKUP */
char	Pchar[2];
int	Pctr;

/*
** GTCHAR
** If 'Lcase' is set, all upper-case alphabetics are 
** mapped into lower-case.
** The correct return is > 0; a return = 0 indicates end-of-file.
*/
gtchar()
{
	extern int	yyline;
	register char	chr;

	/* USE STACKED CHARACTERS IF POSSIBLE */
	if (Pctr)
		chr = Pchar[--Pctr];
	else
		chr = get_scan(NORMAL);

	/* UPDATE LINE COUNTER */
	if (chr == '\n')
		yyline++;

	return ((Lcase && chr >= 'A' && chr <= 'Z') ? (chr + ('a' - 'A')) : chr);
}


/*
** BACKUP
** saves the character argument in the global stack 'Pchar'
**/
backup(chr)
char	chr;
{
	extern int	yyline;

	if (Pctr == 2)
		syserr("overflow in backup()");
	Pchar[Pctr++] = chr;
	if (chr == '\n')
		yyline--;
}