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

"Ilia Alshanetsky" <[email protected]>
Newsgroups gmane.comp.php.cvs.zend
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;



-- 
Zend Engine CVS Mailing List (http://cvs.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.