From: Scott MacVicar Date: Wed, 24 Dec 2008 13:46:59 +0000 (+0000) Subject: Fix bug #45991 - UTF-8 BOM breaks ini parser X-Git-Tag: php-5.4.0alpha1~191^2~4758 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b80786d06653522a3ea91e5f3c077c8cede14608;p=php Fix bug #45991 - UTF-8 BOM breaks ini parser --- diff --git a/Zend/zend_ini_scanner.c b/Zend/zend_ini_scanner.c index 03e3c3f2f1..c0cebe63ca 100644 --- a/Zend/zend_ini_scanner.c +++ b/Zend/zend_ini_scanner.c @@ -1,4 +1,4 @@ -/* Generated by re2c 0.13.5 on Wed Nov 5 22:35:10 2008 */ +/* Generated by re2c 0.13.5 on Wed Dec 24 13:44:36 2008 */ #line 1 "Zend/zend_ini_scanner.l" /* +----------------------------------------------------------------------+ @@ -293,8 +293,16 @@ restart: return 0; } + /* Eat any UTF-8 BOM we find in the first 3 bytes */ + if (YYCURSOR == SCNG(yy_start) && YYCURSOR + 3 < YYLIMIT) { + if (memcmp(YYCURSOR, "\xef\xbb\xbf", 3) == 0) { + YYCURSOR += 3; + goto restart; + } + } + -#line 298 "Zend/zend_ini_scanner.c" +#line 306 "Zend/zend_ini_scanner.c" { YYCTYPE yych; unsigned int yyaccept = 0; @@ -472,11 +480,11 @@ yy2: ++YYCURSOR; YYDEBUG(3, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 489 "Zend/zend_ini_scanner.l" +#line 497 "Zend/zend_ini_scanner.l" { return 0; } -#line 480 "Zend/zend_ini_scanner.c" +#line 488 "Zend/zend_ini_scanner.c" yy4: YYDEBUG(4, *YYCURSOR); yyaccept = 0; @@ -485,24 +493,24 @@ yy4: yy5: YYDEBUG(5, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 468 "Zend/zend_ini_scanner.l" +#line 476 "Zend/zend_ini_scanner.l" { /* eat whitespace */ goto restart; } -#line 494 "Zend/zend_ini_scanner.c" +#line 502 "Zend/zend_ini_scanner.c" yy6: YYDEBUG(6, *YYCURSOR); ++YYCURSOR; yy7: YYDEBUG(7, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 473 "Zend/zend_ini_scanner.l" +#line 481 "Zend/zend_ini_scanner.l" { SCNG(lineno)++; return END_OF_LINE; } -#line 506 "Zend/zend_ini_scanner.c" +#line 514 "Zend/zend_ini_scanner.c" yy8: YYDEBUG(8, *YYCURSOR); yych = *++YYCURSOR; @@ -513,11 +521,11 @@ yy9: ++YYCURSOR; YYDEBUG(10, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 423 "Zend/zend_ini_scanner.l" +#line 431 "Zend/zend_ini_scanner.l" { /* Disallow these chars outside option values */ return yytext[0]; } -#line 521 "Zend/zend_ini_scanner.c" +#line 529 "Zend/zend_ini_scanner.c" yy11: YYDEBUG(11, *YYCURSOR); ++YYCURSOR; @@ -526,11 +534,11 @@ yy11: yy12: YYDEBUG(12, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 383 "Zend/zend_ini_scanner.l" +#line 391 "Zend/zend_ini_scanner.l" { /* Get option name */ RETURN_TOKEN(TC_LABEL, yytext, yyleng); } -#line 534 "Zend/zend_ini_scanner.c" +#line 542 "Zend/zend_ini_scanner.c" yy13: YYDEBUG(13, *YYCURSOR); yyaccept = 1; @@ -544,7 +552,7 @@ yy14: yy15: YYDEBUG(15, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 387 "Zend/zend_ini_scanner.l" +#line 395 "Zend/zend_ini_scanner.l" { /* Start option value */ if (SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW) { yy_push_state(ST_RAW TSRMLS_CC); @@ -553,7 +561,7 @@ yy15: } return '='; } -#line 557 "Zend/zend_ini_scanner.c" +#line 565 "Zend/zend_ini_scanner.c" yy16: YYDEBUG(16, *YYCURSOR); yych = *++YYCURSOR; @@ -609,7 +617,7 @@ yy21: ++YYCURSOR; YYDEBUG(22, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 321 "Zend/zend_ini_scanner.l" +#line 329 "Zend/zend_ini_scanner.l" { /* Section start */ /* Enter section data lookup state */ if (SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW) { @@ -619,7 +627,7 @@ yy21: } return TC_SECTION; } -#line 623 "Zend/zend_ini_scanner.c" +#line 631 "Zend/zend_ini_scanner.c" yy23: YYDEBUG(23, *YYCURSOR); ++YYCURSOR; @@ -649,7 +657,7 @@ yy26: } YYDEBUG(28, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 346 "Zend/zend_ini_scanner.l" +#line 354 "Zend/zend_ini_scanner.l" { /* Start of option with offset */ /* Eat trailing whitespace and [ */ EAT_TRAILING_WHITESPACE_EX('['); @@ -659,7 +667,7 @@ yy26: RETURN_TOKEN(TC_OFFSET, yytext, yyleng); } -#line 663 "Zend/zend_ini_scanner.c" +#line 671 "Zend/zend_ini_scanner.c" yy29: YYDEBUG(29, *YYCURSOR); ++YYCURSOR; @@ -671,11 +679,11 @@ yy29: yy30: YYDEBUG(30, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 375 "Zend/zend_ini_scanner.l" +#line 383 "Zend/zend_ini_scanner.l" { /* TRUE value (when used outside option value/offset this causes parse error!) */ RETURN_TOKEN(BOOL_TRUE, "1", 1); } -#line 679 "Zend/zend_ini_scanner.c" +#line 687 "Zend/zend_ini_scanner.c" yy31: YYDEBUG(31, *YYCURSOR); ++YYCURSOR; @@ -713,11 +721,11 @@ yy36: yy37: YYDEBUG(37, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 379 "Zend/zend_ini_scanner.l" +#line 387 "Zend/zend_ini_scanner.l" { /* FALSE value (when used outside option value/offset this causes parse error!)*/ RETURN_TOKEN(BOOL_FALSE, "", 0); } -#line 721 "Zend/zend_ini_scanner.c" +#line 729 "Zend/zend_ini_scanner.c" yy38: YYDEBUG(38, *YYCURSOR); ++YYCURSOR; @@ -812,13 +820,13 @@ yy51: yy52: YYDEBUG(52, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 478 "Zend/zend_ini_scanner.l" +#line 486 "Zend/zend_ini_scanner.l" { /* Comment */ BEGIN(INITIAL); SCNG(lineno)++; return END_OF_LINE; } -#line 822 "Zend/zend_ini_scanner.c" +#line 830 "Zend/zend_ini_scanner.c" yy53: YYDEBUG(53, *YYCURSOR); yych = *++YYCURSOR; @@ -912,7 +920,7 @@ yyc_ST_DOUBLE_QUOTES: yy61: YYDEBUG(61, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 450 "Zend/zend_ini_scanner.l" +#line 458 "Zend/zend_ini_scanner.l" { /* Escape double quoted string contents */ if(yyleng > 1 && yytext[yyleng-1] == '"' && yytext[yyleng-2] == '\\') { yyless(yyleng-1); @@ -921,7 +929,7 @@ yy61: zend_ini_escape_string(ini_lval, yytext, yyleng, '"' TSRMLS_CC); return TC_QUOTED_STRING; } -#line 925 "Zend/zend_ini_scanner.c" +#line 933 "Zend/zend_ini_scanner.c" yy62: YYDEBUG(62, *YYCURSOR); ++YYCURSOR; @@ -930,12 +938,12 @@ yy62: yy63: YYDEBUG(63, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 459 "Zend/zend_ini_scanner.l" +#line 467 "Zend/zend_ini_scanner.l" { /* Double quoted '"' string ends */ yy_pop_state(TSRMLS_C); return '"'; } -#line 939 "Zend/zend_ini_scanner.c" +#line 947 "Zend/zend_ini_scanner.c" yy64: YYDEBUG(64, *YYCURSOR); ++YYCURSOR; @@ -950,11 +958,11 @@ yy64: yy65: YYDEBUG(65, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 489 "Zend/zend_ini_scanner.l" +#line 497 "Zend/zend_ini_scanner.l" { return 0; } -#line 958 "Zend/zend_ini_scanner.c" +#line 966 "Zend/zend_ini_scanner.c" yy66: YYDEBUG(66, *YYCURSOR); yyaccept = 1; @@ -1070,12 +1078,12 @@ yy81: ++YYCURSOR; YYDEBUG(82, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 361 "Zend/zend_ini_scanner.l" +#line 369 "Zend/zend_ini_scanner.l" { /* Variable start */ yy_push_state(ST_VARNAME TSRMLS_CC); return TC_DOLLAR_CURLY; } -#line 1079 "Zend/zend_ini_scanner.c" +#line 1087 "Zend/zend_ini_scanner.c" yy83: YYDEBUG(83, *YYCURSOR); ++YYCURSOR; @@ -1174,11 +1182,11 @@ yy87: yy88: YYDEBUG(88, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 441 "Zend/zend_ini_scanner.l" +#line 449 "Zend/zend_ini_scanner.l" { /* Get rest as section/offset value */ RETURN_TOKEN(TC_STRING, yytext, yyleng); } -#line 1182 "Zend/zend_ini_scanner.c" +#line 1190 "Zend/zend_ini_scanner.c" yy89: YYDEBUG(89, *YYCURSOR); yyaccept = 0; @@ -1195,23 +1203,23 @@ yy90: yy91: YYDEBUG(91, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 489 "Zend/zend_ini_scanner.l" +#line 497 "Zend/zend_ini_scanner.l" { return 0; } -#line 1203 "Zend/zend_ini_scanner.c" +#line 1211 "Zend/zend_ini_scanner.c" yy92: YYDEBUG(92, *YYCURSOR); ++YYCURSOR; yy93: YYDEBUG(93, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 445 "Zend/zend_ini_scanner.l" +#line 453 "Zend/zend_ini_scanner.l" { /* Double quoted '"' string start */ yy_push_state(ST_DOUBLE_QUOTES TSRMLS_CC); return '"'; } -#line 1215 "Zend/zend_ini_scanner.c" +#line 1223 "Zend/zend_ini_scanner.c" yy94: YYDEBUG(94, *YYCURSOR); yych = *++YYCURSOR; @@ -1273,11 +1281,11 @@ yy98: yy99: YYDEBUG(99, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 419 "Zend/zend_ini_scanner.l" +#line 427 "Zend/zend_ini_scanner.l" { /* Get number option value as string */ RETURN_TOKEN(TC_NUMBER, yytext, yyleng); } -#line 1281 "Zend/zend_ini_scanner.c" +#line 1289 "Zend/zend_ini_scanner.c" yy100: YYDEBUG(100, *YYCURSOR); yyaccept = 3; @@ -1303,11 +1311,11 @@ yy100: yy101: YYDEBUG(101, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 415 "Zend/zend_ini_scanner.l" +#line 423 "Zend/zend_ini_scanner.l" { /* Get constant option value */ RETURN_TOKEN(TC_CONSTANT, yytext, yyleng); } -#line 1311 "Zend/zend_ini_scanner.c" +#line 1319 "Zend/zend_ini_scanner.c" yy102: YYDEBUG(102, *YYCURSOR); yych = *++YYCURSOR; @@ -1318,12 +1326,12 @@ yy103: yy104: YYDEBUG(104, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 356 "Zend/zend_ini_scanner.l" +#line 364 "Zend/zend_ini_scanner.l" { /* End of section or an option offset */ BEGIN(INITIAL); return ']'; } -#line 1327 "Zend/zend_ini_scanner.c" +#line 1335 "Zend/zend_ini_scanner.c" yy105: YYDEBUG(105, *YYCURSOR); yyaccept = 0; @@ -1613,7 +1621,7 @@ yy126: ++YYCURSOR; YYDEBUG(129, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 331 "Zend/zend_ini_scanner.l" +#line 339 "Zend/zend_ini_scanner.l" { /* Raw string */ /* Eat leading and trailing single quotes */ if (yytext[0] == '\'' && yytext[yyleng - 1] == '\'') { @@ -1622,18 +1630,18 @@ yy126: } RETURN_TOKEN(TC_RAW, yytext, yyleng); } -#line 1626 "Zend/zend_ini_scanner.c" +#line 1634 "Zend/zend_ini_scanner.c" yy130: YYDEBUG(130, *YYCURSOR); ++YYCURSOR; YYDEBUG(131, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 361 "Zend/zend_ini_scanner.l" +#line 369 "Zend/zend_ini_scanner.l" { /* Variable start */ yy_push_state(ST_VARNAME TSRMLS_CC); return TC_DOLLAR_CURLY; } -#line 1637 "Zend/zend_ini_scanner.c" +#line 1645 "Zend/zend_ini_scanner.c" yy132: YYDEBUG(132, *YYCURSOR); yyaccept = 0; @@ -1740,7 +1748,7 @@ yy138: yy139: YYDEBUG(139, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 396 "Zend/zend_ini_scanner.l" +#line 404 "Zend/zend_ini_scanner.l" { /* Raw value, only used when SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW. */ /* Eat leading and trailing double quotes */ if (yytext[0] == '"' && yytext[yyleng - 1] == '"') { @@ -1749,7 +1757,7 @@ yy139: } RETURN_TOKEN(TC_RAW, yytext, yyleng); } -#line 1753 "Zend/zend_ini_scanner.c" +#line 1761 "Zend/zend_ini_scanner.c" yy140: YYDEBUG(140, *YYCURSOR); yyaccept = 0; @@ -1771,13 +1779,13 @@ yy141: yy142: YYDEBUG(142, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 409 "Zend/zend_ini_scanner.l" +#line 417 "Zend/zend_ini_scanner.l" { /* End of option value */ BEGIN(INITIAL); SCNG(lineno)++; return END_OF_LINE; } -#line 1781 "Zend/zend_ini_scanner.c" +#line 1789 "Zend/zend_ini_scanner.c" yy143: YYDEBUG(143, *YYCURSOR); yych = *++YYCURSOR; @@ -1791,12 +1799,12 @@ yy144: yy145: YYDEBUG(145, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 484 "Zend/zend_ini_scanner.l" +#line 492 "Zend/zend_ini_scanner.l" { /* End of option value (if EOF is reached before EOL) */ BEGIN(INITIAL); return END_OF_LINE; } -#line 1800 "Zend/zend_ini_scanner.c" +#line 1808 "Zend/zend_ini_scanner.c" yy146: YYDEBUG(146, *YYCURSOR); yych = *++YYCURSOR; @@ -1818,13 +1826,13 @@ yy149: yy150: YYDEBUG(150, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 478 "Zend/zend_ini_scanner.l" +#line 486 "Zend/zend_ini_scanner.l" { /* Comment */ BEGIN(INITIAL); SCNG(lineno)++; return END_OF_LINE; } -#line 1828 "Zend/zend_ini_scanner.c" +#line 1836 "Zend/zend_ini_scanner.c" yy151: YYDEBUG(151, *YYCURSOR); yych = *++YYCURSOR; @@ -1926,21 +1934,21 @@ yyc_ST_SECTION_RAW: yy161: YYDEBUG(161, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 405 "Zend/zend_ini_scanner.l" +#line 413 "Zend/zend_ini_scanner.l" { /* Raw value, only used when SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW. */ RETURN_TOKEN(TC_RAW, yytext, yyleng); } -#line 1934 "Zend/zend_ini_scanner.c" +#line 1942 "Zend/zend_ini_scanner.c" yy162: YYDEBUG(162, *YYCURSOR); ++YYCURSOR; YYDEBUG(163, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 489 "Zend/zend_ini_scanner.l" +#line 497 "Zend/zend_ini_scanner.l" { return 0; } -#line 1944 "Zend/zend_ini_scanner.c" +#line 1952 "Zend/zend_ini_scanner.c" yy164: YYDEBUG(164, *YYCURSOR); ++YYCURSOR; @@ -1949,13 +1957,13 @@ yy164: yy165: YYDEBUG(165, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 340 "Zend/zend_ini_scanner.l" +#line 348 "Zend/zend_ini_scanner.l" { /* End of section */ BEGIN(INITIAL); SCNG(lineno)++; return ']'; } -#line 1959 "Zend/zend_ini_scanner.c" +#line 1967 "Zend/zend_ini_scanner.c" yy166: YYDEBUG(166, *YYCURSOR); ++YYCURSOR; @@ -2076,11 +2084,11 @@ yy174: yy175: YYDEBUG(175, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 441 "Zend/zend_ini_scanner.l" +#line 449 "Zend/zend_ini_scanner.l" { /* Get rest as section/offset value */ RETURN_TOKEN(TC_STRING, yytext, yyleng); } -#line 2084 "Zend/zend_ini_scanner.c" +#line 2092 "Zend/zend_ini_scanner.c" yy176: YYDEBUG(176, *YYCURSOR); yyaccept = 0; @@ -2099,23 +2107,23 @@ yy177: yy178: YYDEBUG(178, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 489 "Zend/zend_ini_scanner.l" +#line 497 "Zend/zend_ini_scanner.l" { return 0; } -#line 2107 "Zend/zend_ini_scanner.c" +#line 2115 "Zend/zend_ini_scanner.c" yy179: YYDEBUG(179, *YYCURSOR); ++YYCURSOR; yy180: YYDEBUG(180, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 445 "Zend/zend_ini_scanner.l" +#line 453 "Zend/zend_ini_scanner.l" { /* Double quoted '"' string start */ yy_push_state(ST_DOUBLE_QUOTES TSRMLS_CC); return '"'; } -#line 2119 "Zend/zend_ini_scanner.c" +#line 2127 "Zend/zend_ini_scanner.c" yy181: YYDEBUG(181, *YYCURSOR); yych = *++YYCURSOR; @@ -2177,11 +2185,11 @@ yy185: yy186: YYDEBUG(186, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 419 "Zend/zend_ini_scanner.l" +#line 427 "Zend/zend_ini_scanner.l" { /* Get number option value as string */ RETURN_TOKEN(TC_NUMBER, yytext, yyleng); } -#line 2185 "Zend/zend_ini_scanner.c" +#line 2193 "Zend/zend_ini_scanner.c" yy187: YYDEBUG(187, *YYCURSOR); yyaccept = 3; @@ -2207,11 +2215,11 @@ yy187: yy188: YYDEBUG(188, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 415 "Zend/zend_ini_scanner.l" +#line 423 "Zend/zend_ini_scanner.l" { /* Get constant option value */ RETURN_TOKEN(TC_CONSTANT, yytext, yyleng); } -#line 2215 "Zend/zend_ini_scanner.c" +#line 2223 "Zend/zend_ini_scanner.c" yy189: YYDEBUG(189, *YYCURSOR); yych = *++YYCURSOR; @@ -2224,13 +2232,13 @@ yy190: yy191: YYDEBUG(191, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 340 "Zend/zend_ini_scanner.l" +#line 348 "Zend/zend_ini_scanner.l" { /* End of section */ BEGIN(INITIAL); SCNG(lineno)++; return ']'; } -#line 2234 "Zend/zend_ini_scanner.c" +#line 2242 "Zend/zend_ini_scanner.c" yy192: YYDEBUG(192, *YYCURSOR); ++YYCURSOR; @@ -2542,7 +2550,7 @@ yy217: ++YYCURSOR; YYDEBUG(220, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 331 "Zend/zend_ini_scanner.l" +#line 339 "Zend/zend_ini_scanner.l" { /* Raw string */ /* Eat leading and trailing single quotes */ if (yytext[0] == '\'' && yytext[yyleng - 1] == '\'') { @@ -2551,18 +2559,18 @@ yy217: } RETURN_TOKEN(TC_RAW, yytext, yyleng); } -#line 2555 "Zend/zend_ini_scanner.c" +#line 2563 "Zend/zend_ini_scanner.c" yy221: YYDEBUG(221, *YYCURSOR); ++YYCURSOR; YYDEBUG(222, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 361 "Zend/zend_ini_scanner.l" +#line 369 "Zend/zend_ini_scanner.l" { /* Variable start */ yy_push_state(ST_VARNAME TSRMLS_CC); return TC_DOLLAR_CURLY; } -#line 2566 "Zend/zend_ini_scanner.c" +#line 2574 "Zend/zend_ini_scanner.c" yy223: YYDEBUG(223, *YYCURSOR); yyaccept = 0; @@ -2741,12 +2749,12 @@ yy228: yy229: YYDEBUG(229, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 484 "Zend/zend_ini_scanner.l" +#line 492 "Zend/zend_ini_scanner.l" { /* End of option value (if EOF is reached before EOL) */ BEGIN(INITIAL); return END_OF_LINE; } -#line 2750 "Zend/zend_ini_scanner.c" +#line 2758 "Zend/zend_ini_scanner.c" yy230: YYDEBUG(230, *YYCURSOR); yyaccept = 0; @@ -2755,11 +2763,11 @@ yy230: yy231: YYDEBUG(231, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 437 "Zend/zend_ini_scanner.l" +#line 445 "Zend/zend_ini_scanner.l" { /* Get everything else as option/offset value */ RETURN_TOKEN(TC_STRING, yytext, yyleng); } -#line 2763 "Zend/zend_ini_scanner.c" +#line 2771 "Zend/zend_ini_scanner.c" yy232: YYDEBUG(232, *YYCURSOR); yyaccept = 1; @@ -2768,24 +2776,24 @@ yy232: yy233: YYDEBUG(233, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 464 "Zend/zend_ini_scanner.l" +#line 472 "Zend/zend_ini_scanner.l" { RETURN_TOKEN(TC_WHITESPACE, yytext, yyleng); } -#line 2776 "Zend/zend_ini_scanner.c" +#line 2784 "Zend/zend_ini_scanner.c" yy234: YYDEBUG(234, *YYCURSOR); ++YYCURSOR; yy235: YYDEBUG(235, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 409 "Zend/zend_ini_scanner.l" +#line 417 "Zend/zend_ini_scanner.l" { /* End of option value */ BEGIN(INITIAL); SCNG(lineno)++; return END_OF_LINE; } -#line 2789 "Zend/zend_ini_scanner.c" +#line 2797 "Zend/zend_ini_scanner.c" yy236: YYDEBUG(236, *YYCURSOR); yych = *++YYCURSOR; @@ -2799,23 +2807,23 @@ yy237: yy238: YYDEBUG(238, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 427 "Zend/zend_ini_scanner.l" +#line 435 "Zend/zend_ini_scanner.l" { /* Boolean operators */ return yytext[0]; } -#line 2807 "Zend/zend_ini_scanner.c" +#line 2815 "Zend/zend_ini_scanner.c" yy239: YYDEBUG(239, *YYCURSOR); ++YYCURSOR; yy240: YYDEBUG(240, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 445 "Zend/zend_ini_scanner.l" +#line 453 "Zend/zend_ini_scanner.l" { /* Double quoted '"' string start */ yy_push_state(ST_DOUBLE_QUOTES TSRMLS_CC); return '"'; } -#line 2819 "Zend/zend_ini_scanner.c" +#line 2827 "Zend/zend_ini_scanner.c" yy241: YYDEBUG(241, *YYCURSOR); yych = *++YYCURSOR; @@ -2891,11 +2899,11 @@ yy245: yy246: YYDEBUG(246, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 419 "Zend/zend_ini_scanner.l" +#line 427 "Zend/zend_ini_scanner.l" { /* Get number option value as string */ RETURN_TOKEN(TC_NUMBER, yytext, yyleng); } -#line 2899 "Zend/zend_ini_scanner.c" +#line 2907 "Zend/zend_ini_scanner.c" yy247: YYDEBUG(247, *YYCURSOR); yyaccept = 2; @@ -2906,13 +2914,13 @@ yy248: ++YYCURSOR; YYDEBUG(249, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 431 "Zend/zend_ini_scanner.l" +#line 439 "Zend/zend_ini_scanner.l" { /* Make = used in option value to trigger error */ yyless(0); BEGIN(INITIAL); return END_OF_LINE; } -#line 2916 "Zend/zend_ini_scanner.c" +#line 2924 "Zend/zend_ini_scanner.c" yy250: YYDEBUG(250, *YYCURSOR); yyaccept = 4; @@ -2948,11 +2956,11 @@ yy250: yy251: YYDEBUG(251, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 415 "Zend/zend_ini_scanner.l" +#line 423 "Zend/zend_ini_scanner.l" { /* Get constant option value */ RETURN_TOKEN(TC_CONSTANT, yytext, yyleng); } -#line 2956 "Zend/zend_ini_scanner.c" +#line 2964 "Zend/zend_ini_scanner.c" yy252: YYDEBUG(252, *YYCURSOR); yyaccept = 4; @@ -3444,11 +3452,11 @@ yy267: yy268: YYDEBUG(268, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 375 "Zend/zend_ini_scanner.l" +#line 383 "Zend/zend_ini_scanner.l" { /* TRUE value (when used outside option value/offset this causes parse error!) */ RETURN_TOKEN(BOOL_TRUE, "1", 1); } -#line 3452 "Zend/zend_ini_scanner.c" +#line 3460 "Zend/zend_ini_scanner.c" yy269: YYDEBUG(269, *YYCURSOR); ++YYCURSOR; @@ -3648,11 +3656,11 @@ yy274: yy275: YYDEBUG(275, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 379 "Zend/zend_ini_scanner.l" +#line 387 "Zend/zend_ini_scanner.l" { /* FALSE value (when used outside option value/offset this causes parse error!)*/ RETURN_TOKEN(BOOL_FALSE, "", 0); } -#line 3656 "Zend/zend_ini_scanner.c" +#line 3664 "Zend/zend_ini_scanner.c" yy276: YYDEBUG(276, *YYCURSOR); ++YYCURSOR; @@ -4028,13 +4036,13 @@ yy287: yy288: YYDEBUG(288, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 478 "Zend/zend_ini_scanner.l" +#line 486 "Zend/zend_ini_scanner.l" { /* Comment */ BEGIN(INITIAL); SCNG(lineno)++; return END_OF_LINE; } -#line 4038 "Zend/zend_ini_scanner.c" +#line 4046 "Zend/zend_ini_scanner.c" yy289: YYDEBUG(289, *YYCURSOR); yych = *++YYCURSOR; @@ -4246,7 +4254,7 @@ yy298: ++YYCURSOR; YYDEBUG(301, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 331 "Zend/zend_ini_scanner.l" +#line 339 "Zend/zend_ini_scanner.l" { /* Raw string */ /* Eat leading and trailing single quotes */ if (yytext[0] == '\'' && yytext[yyleng - 1] == '\'') { @@ -4255,18 +4263,18 @@ yy298: } RETURN_TOKEN(TC_RAW, yytext, yyleng); } -#line 4259 "Zend/zend_ini_scanner.c" +#line 4267 "Zend/zend_ini_scanner.c" yy302: YYDEBUG(302, *YYCURSOR); ++YYCURSOR; YYDEBUG(303, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 361 "Zend/zend_ini_scanner.l" +#line 369 "Zend/zend_ini_scanner.l" { /* Variable start */ yy_push_state(ST_VARNAME TSRMLS_CC); return TC_DOLLAR_CURLY; } -#line 4270 "Zend/zend_ini_scanner.c" +#line 4278 "Zend/zend_ini_scanner.c" yy304: YYDEBUG(304, *YYCURSOR); ++YYCURSOR; @@ -4375,11 +4383,11 @@ yy313: ++YYCURSOR; YYDEBUG(314, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 489 "Zend/zend_ini_scanner.l" +#line 497 "Zend/zend_ini_scanner.l" { return 0; } -#line 4383 "Zend/zend_ini_scanner.c" +#line 4391 "Zend/zend_ini_scanner.c" yy315: YYDEBUG(315, *YYCURSOR); ++YYCURSOR; @@ -4388,22 +4396,22 @@ yy315: yy316: YYDEBUG(316, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 366 "Zend/zend_ini_scanner.l" +#line 374 "Zend/zend_ini_scanner.l" { /* Variable name */ RETURN_TOKEN(TC_VARNAME, yytext, yyleng); } -#line 4396 "Zend/zend_ini_scanner.c" +#line 4404 "Zend/zend_ini_scanner.c" yy317: YYDEBUG(317, *YYCURSOR); ++YYCURSOR; YYDEBUG(318, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 370 "Zend/zend_ini_scanner.l" +#line 378 "Zend/zend_ini_scanner.l" { /* Variable end */ yy_pop_state(TSRMLS_C); return '}'; } -#line 4407 "Zend/zend_ini_scanner.c" +#line 4415 "Zend/zend_ini_scanner.c" yy319: YYDEBUG(319, *YYCURSOR); ++YYCURSOR; @@ -4417,6 +4425,6 @@ yy320: goto yy316; } } -#line 493 "Zend/zend_ini_scanner.l" +#line 501 "Zend/zend_ini_scanner.l" } diff --git a/Zend/zend_ini_scanner.l b/Zend/zend_ini_scanner.l index 482d351bdc..c8b9d286de 100644 --- a/Zend/zend_ini_scanner.l +++ b/Zend/zend_ini_scanner.l @@ -291,6 +291,14 @@ restart: return 0; } + /* Eat any UTF-8 BOM we find in the first 3 bytes */ + if (YYCURSOR == SCNG(yy_start) && YYCURSOR + 3 < YYLIMIT) { + if (memcmp(YYCURSOR, "\xef\xbb\xbf", 3) == 0) { + YYCURSOR += 3; + goto restart; + } + } + /*!re2c re2c:yyfill:check = 0; LNUM [0-9]+ diff --git a/Zend/zend_ini_scanner_defs.h b/Zend/zend_ini_scanner_defs.h index f79b3b14c6..47f20c3d4d 100644 --- a/Zend/zend_ini_scanner_defs.h +++ b/Zend/zend_ini_scanner_defs.h @@ -1,4 +1,4 @@ -/* Generated by re2c 0.13.5 on Wed Nov 5 22:35:10 2008 */ +/* Generated by re2c 0.13.5 on Wed Dec 24 13:44:36 2008 */ #line 3 "Zend/zend_ini_scanner_defs.h" enum YYCONDTYPE {