]> granicus.if.org Git - php/commitdiff
Make the C++ scanner support interactive input
authorZeev Suraski <zeev@php.net>
Wed, 28 Apr 1999 23:18:57 +0000 (23:18 +0000)
committerZeev Suraski <zeev@php.net>
Wed, 28 Apr 1999 23:18:57 +0000 (23:18 +0000)
Zend/zend-scanner.l

index aa50dd62e43bd49442c0f4f4166043cefe248daf..ce76c75e5043f8403f97048af6b1df7a8afdde19 100644 (file)
@@ -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);