summaryrefslogtreecommitdiff
path: root/Zend/flex.skl
diff options
context:
space:
mode:
Diffstat (limited to 'Zend/flex.skl')
-rw-r--r--Zend/flex.skl39
1 files changed, 17 insertions, 22 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;
%*
}