summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZeev Suraski <zeev@php.net>1999-04-28 23:18:57 +0000
committerZeev Suraski <zeev@php.net>1999-04-28 23:18:57 +0000
commitd90ea1a1365200356febd45f07702e58c2040ac5 (patch)
tree8ff764a03d252b7178ae45d82ccd44164d3992b3
parente22a1a08a5457448cbf3e6b37d6b79aefeaf0be5 (diff)
downloadphp-git-d90ea1a1365200356febd45f07702e58c2040ac5.tar.gz
Make the C++ scanner support interactive input
-rw-r--r--Zend/zend-scanner.l20
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);