Removed an assumption that 'stdin' is a constant, which it's not on Linux. (You can't use it as an initialiser when declaring a global variable.)

This commit is contained in:
dtrg 2005-06-24 22:10:24 +00:00
parent 9bc8c07deb
commit 779fe568fc

View file

@ -29,17 +29,19 @@ int yylineno = 1;
static char buf[BUF_SIZE], /* Bufer to save backc()-characters */ static char buf[BUF_SIZE], /* Bufer to save backc()-characters */
*bufptr = buf; /* Pointer to space for backc()-character */ *bufptr = buf; /* Pointer to space for backc()-character */
static FILE *infile = stdin; static FILE *infile = NULL;
static char nextc() static char nextc()
{ {
FILE* fp = infile ? infile : stdin;
if ( bufptr > buf) if ( bufptr > buf)
return( *--bufptr); return( *--bufptr);
else else
return( getc( infile)); return( getc( fp));
} }
@ -93,11 +95,12 @@ FILE *new;
*/ */
{ {
FILE* fp = infile ? infile : stdin;
char *ptr; FILE *old; char *ptr; FILE *old;
/* Clean buf[] */ /* Clean buf[] */
for ( ptr = buf; ptr < bufptr; ptr++) for ( ptr = buf; ptr < bufptr; ptr++)
if ( ungetc( *ptr, infile) == EOF && *ptr != EOF) if ( ungetc( *ptr, fp) == EOF && *ptr != EOF)
return( NULL); return( NULL);
bufptr = buf; bufptr = buf;