diff options
author | Zeev Suraski <zeev@php.net> | 1999-04-28 23:18:57 +0000 |
---|---|---|
committer | Zeev Suraski <zeev@php.net> | 1999-04-28 23:18:57 +0000 |
commit | d90ea1a1365200356febd45f07702e58c2040ac5 (patch) | |
tree | 8ff764a03d252b7178ae45d82ccd44164d3992b3 | |
parent | e22a1a08a5457448cbf3e6b37d6b79aefeaf0be5 (diff) | |
download | php-git-d90ea1a1365200356febd45f07702e58c2040ac5.tar.gz |
Make the C++ scanner support interactive input
-rw-r--r-- | Zend/zend-scanner.l | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/Zend/zend-scanner.l b/Zend/zend-scanner.l index aa50dd62e4..ce76c75e50 100644 --- a/Zend/zend-scanner.l +++ b/Zend/zend-scanner.l @@ -170,8 +170,24 @@ ZEND_API inline int open_file_for_scanning(zend_file_handle *file_handle CLS_DC) yyin = tmp; yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE)); BEGIN(INITIAL); - #else - ifstream *input_file = new ifstream(file_handle->filename); +#else + ifstream *input_file; + + switch (file_handle->type) { + case ZEND_HANDLE_FD: + input_file = new ifstream(file_handle->handle.fd); + break; + case ZEND_HANDLE_FILENAME: + input_file = new ifstream(file_handle->filename); + break; + case ZEND_HANDLE_FP: + if (file_handle->handle.fp==stdin) { + input_file = (ifstream *) &cin; + } else { + input_file = new ifstream(file_handle->filename); + } + break; + } CG(ZFL) = new ZendFlexLexer; CG(ZFL)->switch_streams(input_file, &cout); |