Removed an assumption that 'stdin' is a constant, which it's not on Linux. (You can...
authordtrg <none@none>
Fri, 24 Jun 2005 22:10:24 +0000 (22:10 +0000)
committerNick Downing <nick@ndcode.org>
Wed, 17 Apr 2019 14:15:20 +0000 (00:15 +1000)
util/ceg/EM_parser/common/scan.c

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