summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Zend/flex.skl39
-rw-r--r--Zend/zend_language_scanner.l2
2 files changed, 17 insertions, 24 deletions
diff --git a/Zend/flex.skl b/Zend/flex.skl
index 50be07a40f..fb60c3ec9f 100644
--- a/Zend/flex.skl
+++ b/Zend/flex.skl
@@ -693,34 +693,29 @@ void yyFlexLexer::switch_streams( istream* new_in, ostream* new_out )
yyout = new_out;
}
-#ifdef YY_INTERACTIVE
-int yyFlexLexer::LexerInput( char* buf, int /* max_size */ )
-#else
int yyFlexLexer::LexerInput( char* buf, int max_size )
-#endif
{
- if ( yyin->eof() || yyin->fail() )
- return 0;
+ if ( yyin->eof() || yyin->fail() )
+ return 0;
-#ifdef YY_INTERACTIVE
- yyin->get( buf[0] );
+ if (yy_current_buffer->yy_is_interactive) {
+ yyin->get( buf[0] );
- if ( yyin->eof() )
- return 0;
-
- if ( yyin->bad() )
- return -1;
+ if ( yyin->eof() )
+ return 0;
- return 1;
+ if ( yyin->bad() )
+ return -1;
-#else
- (void) yyin->read( buf, max_size );
+ return 1;
+ } else {
+ (void) yyin->read( buf, max_size );
- if ( yyin->bad() )
- return -1;
- else
- return yyin->gcount();
-#endif
+ if ( yyin->bad() )
+ return -1;
+ else
+ return yyin->gcount();
+ }
}
void yyFlexLexer::LexerOutput( const char* buf, int size )
@@ -1213,7 +1208,7 @@ void yyFlexLexer::yy_init_buffer( YY_BUFFER_STATE b, istream* file )
#endif
#endif
%+
- b->yy_is_interactive = 0;
+ b->yy_is_interactive = (file == (istream *) &cin) ? 1 : 0;
%*
}
diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l
index 71e63d1820..9b19423fc2 100644
--- a/Zend/zend_language_scanner.l
+++ b/Zend/zend_language_scanner.l
@@ -78,8 +78,6 @@
#define YY_DECL int lex_scan(zval *zendlval TSRMLS_DC)
#endif
-#define YY_INTERACTIVE
-
#define ECHO { ZEND_WRITE( yytext, yyleng ); }
#ifdef ZTS