files.
++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;
}
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;
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]+
-/* 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,
#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;
*/
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;
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;
}
/* }}} */