cvs: ZendEngine2 / zend_language_scanner.c zend_language_scanner.l zend_language_scanner_defs.h zend_stream.c php-src/sapi/cli php_cli.c
[email protected] ("Ilia Alshanetsky") Fri, 09 Jan 2009 17:20:57 -0000
| Newsgroups | php.zend-engine.cvs |
|---|---|
| Message-ID | <cvsiliaa1231521657@cvsserver> |
iliaa Fri Jan 9 17:20:57 2009 UTC
Modified files:
/php-src/sapi/cli php_cli.c
/ZendEngine2 zend_language_scanner.l zend_stream.c
zend_language_scanner_defs.h zend_language_scanner.c
Log:
Corrected fix for bug #46844 to only trigger on the 1st line of CLI opened
files.
http://cvs.php.net/viewvc.cgi/php-src/sapi/cli/php_cli.c?r1=1.204&r2=1.205&diff_format=u
Index: php-src/sapi/cli/php_cli.c
diff -u php-src/sapi/cli/php_cli.c:1.204 php-src/sapi/cli/php_cli.c:1.205
--- php-src/sapi/cli/php_cli.c:1.204 Fri Jan 2 13:14:17 2009
+++ php-src/sapi/cli/php_cli.c Fri Jan 9 17:20:56 2009
@@ -20,7 +20,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_cli.c,v 1.204 2009/01/02 13:14:17 helly Exp $ */
+/* $Id: php_cli.c,v 1.205 2009/01/09 17:20:56 iliaa Exp $ */
#include "php.h"
#include "php_globals.h"
@@ -574,6 +574,8 @@
*/
static int cli_seek_file_begin(zend_file_handle *file_handle, char *script_file, int *lineno TSRMLS_DC)
{
+ char c;
+
*lineno = 1;
file_handle->type = ZEND_HANDLE_FP;
@@ -584,6 +586,25 @@
return FAILURE;
}
file_handle->filename = script_file;
+
+ /* #!php support */
+ c = fgetc(file_handle->handle.fp);
+ if (c == '#' && (c = fgetc(file_handle->handle.fp)) == '!') {
+ while (c != '\n' && c != '\r' && c != EOF) {
+ c = fgetc(file_handle->handle.fp); /* skip to end of line */
+ }
+ /* handle situations where line is terminated by \r\n */
+ if (c == '\r') {
+ if (fgetc(file_handle->handle.fp) != '\n') {
+ long pos = ftell(file_handle->handle.fp);
+ fseek(file_handle->handle.fp, pos - 1, SEEK_SET);
+ }
+ }
+ *lineno = 2;
+ } else {
+ rewind(file_handle->handle.fp);
+ }
+
return SUCCESS;
}
/* }}} */
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_language_scanner.l?r1=1.199&r2=1.200&diff_format=u
Index: ZendEngine2/zend_language_scanner.l
diff -u ZendEngine2/zend_language_scanner.l:1.199 ZendEngine2/zend_language_scanner.l:1.200
--- ZendEngine2/zend_language_scanner.l:1.199 Thu Jan 1 20:19:39 2009
+++ ZendEngine2/zend_language_scanner.l Fri Jan 9 17:20:56 2009
@@ -21,7 +21,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_language_scanner.l,v 1.199 2009/01/01 20:19:39 iliaa Exp $ */
+/* $Id: zend_language_scanner.l,v 1.200 2009/01/09 17:20:56 iliaa Exp $ */
#if 0
# define YYDEBUG(s, c) printf("state: %d char: %c\n", s, c)
@@ -1336,27 +1336,6 @@
return 0;
}
- /* ignore first line when it's started with a #! */
- if (YYCURSOR == SCNG(yy_start) && *YYCURSOR == '#' && *(YYCURSOR + 1) == '!') {
- while (++YYCURSOR < YYLIMIT) {
- if (*YYCURSOR == '\n') {
- ++YYCURSOR;
- CG(zend_lineno)++;
- goto restart;
- }
-
- if (*YYCURSOR == '\r') {
- if (++YYCURSOR < YYLIMIT && *YYCURSOR == '\n') { /* match \r\n as single newline */
- ++YYCURSOR;
- }
- CG(zend_lineno)++;
- goto restart;
- }
- }
-
- return 0; /* EOF */
- }
-
/*!re2c
re2c:yyfill:check = 0;
LNUM [0-9]+
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_stream.c?r1=1.24&r2=1.25&diff_format=u
Index: ZendEngine2/zend_stream.c
diff -u ZendEngine2/zend_stream.c:1.24 ZendEngine2/zend_stream.c:1.25
--- ZendEngine2/zend_stream.c:1.24 Wed Dec 31 11:12:29 2008
+++ ZendEngine2/zend_stream.c Fri Jan 9 17:20:56 2009
@@ -19,7 +19,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_stream.c,v 1.24 2008/12/31 11:12:29 sebastian Exp $ */
+/* $Id: zend_stream.c,v 1.25 2009/01/09 17:20:56 iliaa Exp $ */
#include "zend.h"
@@ -219,7 +219,7 @@
#if HAVE_MMAP
if (file_handle->handle.fp) {
/* *buf[size] is zeroed automatically by the kernel */
- *buf = mmap(0, size + ZEND_MMAP_AHEAD, PROT_READ, MAP_PRIVATE, fileno(file_handle->handle.fp), 0);
+ *buf = mmap(0, size + ZEND_MMAP_AHEAD, PROT_READ, MAP_PRIVATE, fileno(file_handle->handle.fp), ftell(file_handle->handle.fp));
if (*buf != MAP_FAILED) {
file_handle->handle.stream.mmap.len = size;
file_handle->handle.stream.mmap.map = *buf;
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_language_scanner_defs.h?r1=1.12&r2=1.13&diff_format=u
Index: ZendEngine2/zend_language_scanner_defs.h
diff -u ZendEngine2/zend_language_scanner_defs.h:1.12 ZendEngine2/zend_language_scanner_defs.h:1.13
--- ZendEngine2/zend_language_scanner_defs.h:1.12 Thu Dec 4 20:12:29 2008
+++ ZendEngine2/zend_language_scanner_defs.h Fri Jan 9 17:20:56 2009
@@ -1,5 +1,5 @@
-/* Generated by re2c 0.13.5 on Tue Dec 2 17:02:52 2008 */
-#line 3 "Zend/zend_language_scanner_defs.h"
+/* Generated by re2c 0.13.5 on Fri Jan 9 12:18:37 2009 */
+#line 3 "./zend_language_scanner_defs.h"
enum YYCONDTYPE {
yycST_IN_SCRIPTING,
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_language_scanner.c?r1=1.20&r2=1.21&diff_format=u
Index: ZendEngine2/zend_language_scanner.c
diff -u ZendEngine2/zend_language_scanner.c:1.20 ZendEngine2/zend_language_scanner.c:1.21
--- ZendEngine2/zend_language_scanner.c:1.20 Thu Jan 1 20:19:39 2009
+++ ZendEngine2/zend_language_scanner.c Fri Jan 9 17:20:57 2009
@@ -23,7 +23,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_language_scanner.c,v 1.20 2009/01/01 20:19:39 iliaa Exp $ */
+/* $Id: zend_language_scanner.c,v 1.21 2009/01/09 17:20:57 iliaa Exp $ */
#if 0
# define YYDEBUG(s, c) printf("state: %d char: %c\n", s, c)
@@ -6474,7 +6474,7 @@
++YYCURSOR;
YYDEBUG(556, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1641 "Zend/zend_language_scanner.l"
+#line 1620 "Zend/zend_language_scanner.l"
{
return T_UNICODE_CAST;
}
@@ -8614,7 +8614,7 @@
yy888:
YYDEBUG(888, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1580 "Zend/zend_language_scanner.l"
+#line 1559 "Zend/zend_language_scanner.l"
{
Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */
Z_STRLEN_P(zendlval) = yyleng;