]> granicus.if.org Git - php/commitdiff
MFH Fix bug #45991 - UTF-8 BOM breaks ini parser
authorScott MacVicar <scottmac@php.net>
Wed, 24 Dec 2008 13:49:31 +0000 (13:49 +0000)
committerScott MacVicar <scottmac@php.net>
Wed, 24 Dec 2008 13:49:31 +0000 (13:49 +0000)
Zend/zend_ini_scanner.c
Zend/zend_ini_scanner.l
Zend/zend_ini_scanner_defs.h

index cdfb6436326a42847c50a59d5b7c9e39d06bc240..f6ac761f0f089c87a4e84ec655b170e4194823a0 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.5 on Wed Nov  5 22:35:51 2008 */
+/* Generated by re2c 0.13.5 on Wed Dec 24 13:47:34 2008 */
 #line 1 "Zend/zend_ini_scanner.l"
 /*
    +----------------------------------------------------------------------+
@@ -293,8 +293,15 @@ 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 305 "Zend/zend_ini_scanner.c"
 {
        YYCTYPE yych;
        unsigned int yyaccept = 0;
@@ -473,11 +480,11 @@ yy2:
                ++YYCURSOR;
                YYDEBUG(3, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 495 "Zend/zend_ini_scanner.l"
+#line 502 "Zend/zend_ini_scanner.l"
                {
        return 0;
 }
-#line 481 "Zend/zend_ini_scanner.c"
+#line 488 "Zend/zend_ini_scanner.c"
 yy4:
                YYDEBUG(4, *YYCURSOR);
                yyaccept = 0;
@@ -486,24 +493,24 @@ yy4:
 yy5:
                YYDEBUG(5, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 467 "Zend/zend_ini_scanner.l"
+#line 474 "Zend/zend_ini_scanner.l"
                {
        /* eat whitespace */
        goto restart;
 }
-#line 495 "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 472 "Zend/zend_ini_scanner.l"
+#line 479 "Zend/zend_ini_scanner.l"
                {
        SCNG(lineno)++;
        return END_OF_LINE;
 }
-#line 507 "Zend/zend_ini_scanner.c"
+#line 514 "Zend/zend_ini_scanner.c"
 yy8:
                YYDEBUG(8, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -514,11 +521,11 @@ yy9:
                ++YYCURSOR;
                YYDEBUG(10, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 422 "Zend/zend_ini_scanner.l"
+#line 429 "Zend/zend_ini_scanner.l"
                { /* Disallow these chars outside option values */
        return yytext[0];
 }
-#line 522 "Zend/zend_ini_scanner.c"
+#line 529 "Zend/zend_ini_scanner.c"
 yy11:
                YYDEBUG(11, *YYCURSOR);
                yyaccept = 1;
@@ -532,11 +539,11 @@ yy12:
 yy13:
                YYDEBUG(13, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 382 "Zend/zend_ini_scanner.l"
+#line 389 "Zend/zend_ini_scanner.l"
                { /* Get option name */
        RETURN_TOKEN(TC_LABEL, yytext, yyleng);
 }
-#line 540 "Zend/zend_ini_scanner.c"
+#line 547 "Zend/zend_ini_scanner.c"
 yy14:
                YYDEBUG(14, *YYCURSOR);
                yyaccept = 1;
@@ -550,7 +557,7 @@ yy15:
 yy16:
                YYDEBUG(16, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 386 "Zend/zend_ini_scanner.l"
+#line 393 "Zend/zend_ini_scanner.l"
                { /* Start option value */
        if (SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW) {
                yy_push_state(ST_RAW TSRMLS_CC);
@@ -559,7 +566,7 @@ yy16:
        }
        return '=';
 }
-#line 563 "Zend/zend_ini_scanner.c"
+#line 570 "Zend/zend_ini_scanner.c"
 yy17:
                YYDEBUG(17, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -615,7 +622,7 @@ yy22:
                ++YYCURSOR;
                YYDEBUG(23, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 320 "Zend/zend_ini_scanner.l"
+#line 327 "Zend/zend_ini_scanner.l"
                { /* Section start */
        /* Enter section data lookup state */
        if (SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW) {
@@ -625,7 +632,7 @@ yy22:
        }
        return TC_SECTION;
 }
-#line 629 "Zend/zend_ini_scanner.c"
+#line 636 "Zend/zend_ini_scanner.c"
 yy24:
                YYDEBUG(24, *YYCURSOR);
                ++YYCURSOR;
@@ -655,7 +662,7 @@ yy27:
                }
                YYDEBUG(29, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 345 "Zend/zend_ini_scanner.l"
+#line 352 "Zend/zend_ini_scanner.l"
                { /* Start of option with offset */
        /* Eat trailing whitespace and [ */
        EAT_TRAILING_WHITESPACE_EX('[');
@@ -665,7 +672,7 @@ yy27:
 
        RETURN_TOKEN(TC_OFFSET, yytext, yyleng);
 }
-#line 669 "Zend/zend_ini_scanner.c"
+#line 676 "Zend/zend_ini_scanner.c"
 yy30:
                YYDEBUG(30, *YYCURSOR);
                ++YYCURSOR;
@@ -677,11 +684,11 @@ yy30:
 yy31:
                YYDEBUG(31, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 374 "Zend/zend_ini_scanner.l"
+#line 381 "Zend/zend_ini_scanner.l"
                { /* TRUE value (when used outside option value/offset this causes parse error!) */
        RETURN_TOKEN(BOOL_TRUE, "1", 1);
 }
-#line 685 "Zend/zend_ini_scanner.c"
+#line 692 "Zend/zend_ini_scanner.c"
 yy32:
                YYDEBUG(32, *YYCURSOR);
                ++YYCURSOR;
@@ -719,11 +726,11 @@ yy37:
 yy38:
                YYDEBUG(38, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 378 "Zend/zend_ini_scanner.l"
+#line 385 "Zend/zend_ini_scanner.l"
                { /* FALSE value (when used outside option value/offset this causes parse error!)*/
        RETURN_TOKEN(BOOL_FALSE, "", 0);
 }
-#line 727 "Zend/zend_ini_scanner.c"
+#line 734 "Zend/zend_ini_scanner.c"
 yy39:
                YYDEBUG(39, *YYCURSOR);
                ++YYCURSOR;
@@ -818,13 +825,13 @@ yy52:
 yy53:
                YYDEBUG(53, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 477 "Zend/zend_ini_scanner.l"
+#line 484 "Zend/zend_ini_scanner.l"
                { /* Comment */
        BEGIN(INITIAL);
        SCNG(lineno)++;
        return END_OF_LINE;
 }
-#line 828 "Zend/zend_ini_scanner.c"
+#line 835 "Zend/zend_ini_scanner.c"
 yy54:
                YYDEBUG(54, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -846,14 +853,14 @@ yy57:
 yy58:
                YYDEBUG(58, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 483 "Zend/zend_ini_scanner.l"
+#line 490 "Zend/zend_ini_scanner.l"
                { /* #Comment */
        zend_error(E_DEPRECATED, "Comments starting with '#' are deprecated in %s on line %d", zend_ini_scanner_get_filename(TSRMLS_C), SCNG(lineno));
        BEGIN(INITIAL);
        SCNG(lineno)++;
        return END_OF_LINE;
 }
-#line 857 "Zend/zend_ini_scanner.c"
+#line 864 "Zend/zend_ini_scanner.c"
 yy59:
                YYDEBUG(59, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -950,7 +957,7 @@ yyc_ST_DOUBLE_QUOTES:
 yy67:
                YYDEBUG(67, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 449 "Zend/zend_ini_scanner.l"
+#line 456 "Zend/zend_ini_scanner.l"
                { /* Escape double quoted string contents */
        if(yyleng > 1 && yytext[yyleng-1] == '"' && yytext[yyleng-2] == '\\') {
                yyless(yyleng-1);
@@ -959,7 +966,7 @@ yy67:
        zend_ini_escape_string(ini_lval, yytext, yyleng, '"' TSRMLS_CC);
        return TC_QUOTED_STRING;
 }
-#line 963 "Zend/zend_ini_scanner.c"
+#line 970 "Zend/zend_ini_scanner.c"
 yy68:
                YYDEBUG(68, *YYCURSOR);
                ++YYCURSOR;
@@ -968,12 +975,12 @@ yy68:
 yy69:
                YYDEBUG(69, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 458 "Zend/zend_ini_scanner.l"
+#line 465 "Zend/zend_ini_scanner.l"
                { /* Double quoted '"' string ends */
        yy_pop_state(TSRMLS_C);
        return '"';
 }
-#line 977 "Zend/zend_ini_scanner.c"
+#line 984 "Zend/zend_ini_scanner.c"
 yy70:
                YYDEBUG(70, *YYCURSOR);
                ++YYCURSOR;
@@ -988,11 +995,11 @@ yy70:
 yy71:
                YYDEBUG(71, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 495 "Zend/zend_ini_scanner.l"
+#line 502 "Zend/zend_ini_scanner.l"
                {
        return 0;
 }
-#line 996 "Zend/zend_ini_scanner.c"
+#line 1003 "Zend/zend_ini_scanner.c"
 yy72:
                YYDEBUG(72, *YYCURSOR);
                yyaccept = 1;
@@ -1108,12 +1115,12 @@ yy87:
                ++YYCURSOR;
                YYDEBUG(88, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 360 "Zend/zend_ini_scanner.l"
+#line 367 "Zend/zend_ini_scanner.l"
                { /* Variable start */
        yy_push_state(ST_VARNAME TSRMLS_CC);
        return TC_DOLLAR_CURLY;
 }
-#line 1117 "Zend/zend_ini_scanner.c"
+#line 1124 "Zend/zend_ini_scanner.c"
 yy89:
                YYDEBUG(89, *YYCURSOR);
                ++YYCURSOR;
@@ -1212,11 +1219,11 @@ yy93:
 yy94:
                YYDEBUG(94, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 440 "Zend/zend_ini_scanner.l"
+#line 447 "Zend/zend_ini_scanner.l"
                { /* Get rest as section/offset value */
        RETURN_TOKEN(TC_STRING, yytext, yyleng);
 }
-#line 1220 "Zend/zend_ini_scanner.c"
+#line 1227 "Zend/zend_ini_scanner.c"
 yy95:
                YYDEBUG(95, *YYCURSOR);
                yyaccept = 0;
@@ -1233,23 +1240,23 @@ yy96:
 yy97:
                YYDEBUG(97, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 495 "Zend/zend_ini_scanner.l"
+#line 502 "Zend/zend_ini_scanner.l"
                {
        return 0;
 }
-#line 1241 "Zend/zend_ini_scanner.c"
+#line 1248 "Zend/zend_ini_scanner.c"
 yy98:
                YYDEBUG(98, *YYCURSOR);
                ++YYCURSOR;
 yy99:
                YYDEBUG(99, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 444 "Zend/zend_ini_scanner.l"
+#line 451 "Zend/zend_ini_scanner.l"
                { /* Double quoted '"' string start */
        yy_push_state(ST_DOUBLE_QUOTES TSRMLS_CC);
        return '"';
 }
-#line 1253 "Zend/zend_ini_scanner.c"
+#line 1260 "Zend/zend_ini_scanner.c"
 yy100:
                YYDEBUG(100, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1311,11 +1318,11 @@ yy104:
 yy105:
                YYDEBUG(105, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 418 "Zend/zend_ini_scanner.l"
+#line 425 "Zend/zend_ini_scanner.l"
                { /* Get number option value as string */
        RETURN_TOKEN(TC_NUMBER, yytext, yyleng);
 }
-#line 1319 "Zend/zend_ini_scanner.c"
+#line 1326 "Zend/zend_ini_scanner.c"
 yy106:
                YYDEBUG(106, *YYCURSOR);
                yyaccept = 3;
@@ -1341,11 +1348,11 @@ yy106:
 yy107:
                YYDEBUG(107, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 414 "Zend/zend_ini_scanner.l"
+#line 421 "Zend/zend_ini_scanner.l"
                { /* Get constant option value */
        RETURN_TOKEN(TC_CONSTANT, yytext, yyleng);
 }
-#line 1349 "Zend/zend_ini_scanner.c"
+#line 1356 "Zend/zend_ini_scanner.c"
 yy108:
                YYDEBUG(108, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1356,12 +1363,12 @@ yy109:
 yy110:
                YYDEBUG(110, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 355 "Zend/zend_ini_scanner.l"
+#line 362 "Zend/zend_ini_scanner.l"
                { /* End of section or an option offset */
        BEGIN(INITIAL);
        return ']';
 }
-#line 1365 "Zend/zend_ini_scanner.c"
+#line 1372 "Zend/zend_ini_scanner.c"
 yy111:
                YYDEBUG(111, *YYCURSOR);
                yyaccept = 0;
@@ -1651,7 +1658,7 @@ yy132:
                ++YYCURSOR;
                YYDEBUG(135, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 330 "Zend/zend_ini_scanner.l"
+#line 337 "Zend/zend_ini_scanner.l"
                { /* Raw string */
        /* Eat leading and trailing single quotes */
        if (yytext[0] == '\'' && yytext[yyleng - 1] == '\'') {
@@ -1660,18 +1667,18 @@ yy132:
        }
        RETURN_TOKEN(TC_RAW, yytext, yyleng);
 }
-#line 1664 "Zend/zend_ini_scanner.c"
+#line 1671 "Zend/zend_ini_scanner.c"
 yy136:
                YYDEBUG(136, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(137, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 360 "Zend/zend_ini_scanner.l"
+#line 367 "Zend/zend_ini_scanner.l"
                { /* Variable start */
        yy_push_state(ST_VARNAME TSRMLS_CC);
        return TC_DOLLAR_CURLY;
 }
-#line 1675 "Zend/zend_ini_scanner.c"
+#line 1682 "Zend/zend_ini_scanner.c"
 yy138:
                YYDEBUG(138, *YYCURSOR);
                yyaccept = 0;
@@ -1778,7 +1785,7 @@ yy144:
 yy145:
                YYDEBUG(145, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 395 "Zend/zend_ini_scanner.l"
+#line 402 "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] == '"') {
@@ -1787,7 +1794,7 @@ yy145:
        }
        RETURN_TOKEN(TC_RAW, yytext, yyleng);
 }
-#line 1791 "Zend/zend_ini_scanner.c"
+#line 1798 "Zend/zend_ini_scanner.c"
 yy146:
                YYDEBUG(146, *YYCURSOR);
                yyaccept = 0;
@@ -1809,13 +1816,13 @@ yy147:
 yy148:
                YYDEBUG(148, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 408 "Zend/zend_ini_scanner.l"
+#line 415 "Zend/zend_ini_scanner.l"
                { /* End of option value */
        BEGIN(INITIAL);
        SCNG(lineno)++;
        return END_OF_LINE;
 }
-#line 1819 "Zend/zend_ini_scanner.c"
+#line 1826 "Zend/zend_ini_scanner.c"
 yy149:
                YYDEBUG(149, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1829,12 +1836,12 @@ yy150:
 yy151:
                YYDEBUG(151, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 490 "Zend/zend_ini_scanner.l"
+#line 497 "Zend/zend_ini_scanner.l"
                { /* End of option value (if EOF is reached before EOL */
        BEGIN(INITIAL);
        return END_OF_LINE;
 }
-#line 1838 "Zend/zend_ini_scanner.c"
+#line 1845 "Zend/zend_ini_scanner.c"
 yy152:
                YYDEBUG(152, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1856,13 +1863,13 @@ yy155:
 yy156:
                YYDEBUG(156, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 477 "Zend/zend_ini_scanner.l"
+#line 484 "Zend/zend_ini_scanner.l"
                { /* Comment */
        BEGIN(INITIAL);
        SCNG(lineno)++;
        return END_OF_LINE;
 }
-#line 1866 "Zend/zend_ini_scanner.c"
+#line 1873 "Zend/zend_ini_scanner.c"
 yy157:
                YYDEBUG(157, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1964,21 +1971,21 @@ yyc_ST_SECTION_RAW:
 yy167:
                YYDEBUG(167, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 404 "Zend/zend_ini_scanner.l"
+#line 411 "Zend/zend_ini_scanner.l"
                { /* Raw value, only used when SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW. */
        RETURN_TOKEN(TC_RAW, yytext, yyleng);
 }
-#line 1972 "Zend/zend_ini_scanner.c"
+#line 1979 "Zend/zend_ini_scanner.c"
 yy168:
                YYDEBUG(168, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(169, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 495 "Zend/zend_ini_scanner.l"
+#line 502 "Zend/zend_ini_scanner.l"
                {
        return 0;
 }
-#line 1982 "Zend/zend_ini_scanner.c"
+#line 1989 "Zend/zend_ini_scanner.c"
 yy170:
                YYDEBUG(170, *YYCURSOR);
                ++YYCURSOR;
@@ -1987,13 +1994,13 @@ yy170:
 yy171:
                YYDEBUG(171, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 339 "Zend/zend_ini_scanner.l"
+#line 346 "Zend/zend_ini_scanner.l"
                { /* End of section */
        BEGIN(INITIAL);
        SCNG(lineno)++;
        return ']';
 }
-#line 1997 "Zend/zend_ini_scanner.c"
+#line 2004 "Zend/zend_ini_scanner.c"
 yy172:
                YYDEBUG(172, *YYCURSOR);
                ++YYCURSOR;
@@ -2114,11 +2121,11 @@ yy180:
 yy181:
                YYDEBUG(181, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 440 "Zend/zend_ini_scanner.l"
+#line 447 "Zend/zend_ini_scanner.l"
                { /* Get rest as section/offset value */
        RETURN_TOKEN(TC_STRING, yytext, yyleng);
 }
-#line 2122 "Zend/zend_ini_scanner.c"
+#line 2129 "Zend/zend_ini_scanner.c"
 yy182:
                YYDEBUG(182, *YYCURSOR);
                yyaccept = 0;
@@ -2137,23 +2144,23 @@ yy183:
 yy184:
                YYDEBUG(184, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 495 "Zend/zend_ini_scanner.l"
+#line 502 "Zend/zend_ini_scanner.l"
                {
        return 0;
 }
-#line 2145 "Zend/zend_ini_scanner.c"
+#line 2152 "Zend/zend_ini_scanner.c"
 yy185:
                YYDEBUG(185, *YYCURSOR);
                ++YYCURSOR;
 yy186:
                YYDEBUG(186, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 444 "Zend/zend_ini_scanner.l"
+#line 451 "Zend/zend_ini_scanner.l"
                { /* Double quoted '"' string start */
        yy_push_state(ST_DOUBLE_QUOTES TSRMLS_CC);
        return '"';
 }
-#line 2157 "Zend/zend_ini_scanner.c"
+#line 2164 "Zend/zend_ini_scanner.c"
 yy187:
                YYDEBUG(187, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -2215,11 +2222,11 @@ yy191:
 yy192:
                YYDEBUG(192, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 418 "Zend/zend_ini_scanner.l"
+#line 425 "Zend/zend_ini_scanner.l"
                { /* Get number option value as string */
        RETURN_TOKEN(TC_NUMBER, yytext, yyleng);
 }
-#line 2223 "Zend/zend_ini_scanner.c"
+#line 2230 "Zend/zend_ini_scanner.c"
 yy193:
                YYDEBUG(193, *YYCURSOR);
                yyaccept = 3;
@@ -2245,11 +2252,11 @@ yy193:
 yy194:
                YYDEBUG(194, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 414 "Zend/zend_ini_scanner.l"
+#line 421 "Zend/zend_ini_scanner.l"
                { /* Get constant option value */
        RETURN_TOKEN(TC_CONSTANT, yytext, yyleng);
 }
-#line 2253 "Zend/zend_ini_scanner.c"
+#line 2260 "Zend/zend_ini_scanner.c"
 yy195:
                YYDEBUG(195, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -2262,13 +2269,13 @@ yy196:
 yy197:
                YYDEBUG(197, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 339 "Zend/zend_ini_scanner.l"
+#line 346 "Zend/zend_ini_scanner.l"
                { /* End of section */
        BEGIN(INITIAL);
        SCNG(lineno)++;
        return ']';
 }
-#line 2272 "Zend/zend_ini_scanner.c"
+#line 2279 "Zend/zend_ini_scanner.c"
 yy198:
                YYDEBUG(198, *YYCURSOR);
                ++YYCURSOR;
@@ -2580,7 +2587,7 @@ yy223:
                ++YYCURSOR;
                YYDEBUG(226, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 330 "Zend/zend_ini_scanner.l"
+#line 337 "Zend/zend_ini_scanner.l"
                { /* Raw string */
        /* Eat leading and trailing single quotes */
        if (yytext[0] == '\'' && yytext[yyleng - 1] == '\'') {
@@ -2589,18 +2596,18 @@ yy223:
        }
        RETURN_TOKEN(TC_RAW, yytext, yyleng);
 }
-#line 2593 "Zend/zend_ini_scanner.c"
+#line 2600 "Zend/zend_ini_scanner.c"
 yy227:
                YYDEBUG(227, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(228, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 360 "Zend/zend_ini_scanner.l"
+#line 367 "Zend/zend_ini_scanner.l"
                { /* Variable start */
        yy_push_state(ST_VARNAME TSRMLS_CC);
        return TC_DOLLAR_CURLY;
 }
-#line 2604 "Zend/zend_ini_scanner.c"
+#line 2611 "Zend/zend_ini_scanner.c"
 yy229:
                YYDEBUG(229, *YYCURSOR);
                yyaccept = 0;
@@ -2779,12 +2786,12 @@ yy234:
 yy235:
                YYDEBUG(235, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 490 "Zend/zend_ini_scanner.l"
+#line 497 "Zend/zend_ini_scanner.l"
                { /* End of option value (if EOF is reached before EOL */
        BEGIN(INITIAL);
        return END_OF_LINE;
 }
-#line 2788 "Zend/zend_ini_scanner.c"
+#line 2795 "Zend/zend_ini_scanner.c"
 yy236:
                YYDEBUG(236, *YYCURSOR);
                yyaccept = 0;
@@ -2793,11 +2800,11 @@ yy236:
 yy237:
                YYDEBUG(237, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 436 "Zend/zend_ini_scanner.l"
+#line 443 "Zend/zend_ini_scanner.l"
                { /* Get everything else as option/offset value */
        RETURN_TOKEN(TC_STRING, yytext, yyleng);
 }
-#line 2801 "Zend/zend_ini_scanner.c"
+#line 2808 "Zend/zend_ini_scanner.c"
 yy238:
                YYDEBUG(238, *YYCURSOR);
                yyaccept = 1;
@@ -2806,24 +2813,24 @@ yy238:
 yy239:
                YYDEBUG(239, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 463 "Zend/zend_ini_scanner.l"
+#line 470 "Zend/zend_ini_scanner.l"
                {
        RETURN_TOKEN(TC_WHITESPACE, yytext, yyleng);
 }
-#line 2814 "Zend/zend_ini_scanner.c"
+#line 2821 "Zend/zend_ini_scanner.c"
 yy240:
                YYDEBUG(240, *YYCURSOR);
                ++YYCURSOR;
 yy241:
                YYDEBUG(241, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 408 "Zend/zend_ini_scanner.l"
+#line 415 "Zend/zend_ini_scanner.l"
                { /* End of option value */
        BEGIN(INITIAL);
        SCNG(lineno)++;
        return END_OF_LINE;
 }
-#line 2827 "Zend/zend_ini_scanner.c"
+#line 2834 "Zend/zend_ini_scanner.c"
 yy242:
                YYDEBUG(242, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -2837,23 +2844,23 @@ yy243:
 yy244:
                YYDEBUG(244, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 426 "Zend/zend_ini_scanner.l"
+#line 433 "Zend/zend_ini_scanner.l"
                { /* Boolean operators */
        return yytext[0];
 }
-#line 2845 "Zend/zend_ini_scanner.c"
+#line 2852 "Zend/zend_ini_scanner.c"
 yy245:
                YYDEBUG(245, *YYCURSOR);
                ++YYCURSOR;
 yy246:
                YYDEBUG(246, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 444 "Zend/zend_ini_scanner.l"
+#line 451 "Zend/zend_ini_scanner.l"
                { /* Double quoted '"' string start */
        yy_push_state(ST_DOUBLE_QUOTES TSRMLS_CC);
        return '"';
 }
-#line 2857 "Zend/zend_ini_scanner.c"
+#line 2864 "Zend/zend_ini_scanner.c"
 yy247:
                YYDEBUG(247, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -2929,11 +2936,11 @@ yy251:
 yy252:
                YYDEBUG(252, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 418 "Zend/zend_ini_scanner.l"
+#line 425 "Zend/zend_ini_scanner.l"
                { /* Get number option value as string */
        RETURN_TOKEN(TC_NUMBER, yytext, yyleng);
 }
-#line 2937 "Zend/zend_ini_scanner.c"
+#line 2944 "Zend/zend_ini_scanner.c"
 yy253:
                YYDEBUG(253, *YYCURSOR);
                yyaccept = 2;
@@ -2944,13 +2951,13 @@ yy254:
                ++YYCURSOR;
                YYDEBUG(255, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 430 "Zend/zend_ini_scanner.l"
+#line 437 "Zend/zend_ini_scanner.l"
                { /* Make = used in option value to trigger error */
        yyless(0);
        BEGIN(INITIAL);
        return END_OF_LINE;
 }
-#line 2954 "Zend/zend_ini_scanner.c"
+#line 2961 "Zend/zend_ini_scanner.c"
 yy256:
                YYDEBUG(256, *YYCURSOR);
                yyaccept = 4;
@@ -2986,11 +2993,11 @@ yy256:
 yy257:
                YYDEBUG(257, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 414 "Zend/zend_ini_scanner.l"
+#line 421 "Zend/zend_ini_scanner.l"
                { /* Get constant option value */
        RETURN_TOKEN(TC_CONSTANT, yytext, yyleng);
 }
-#line 2994 "Zend/zend_ini_scanner.c"
+#line 3001 "Zend/zend_ini_scanner.c"
 yy258:
                YYDEBUG(258, *YYCURSOR);
                yyaccept = 4;
@@ -3482,11 +3489,11 @@ yy273:
 yy274:
                YYDEBUG(274, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 374 "Zend/zend_ini_scanner.l"
+#line 381 "Zend/zend_ini_scanner.l"
                { /* TRUE value (when used outside option value/offset this causes parse error!) */
        RETURN_TOKEN(BOOL_TRUE, "1", 1);
 }
-#line 3490 "Zend/zend_ini_scanner.c"
+#line 3497 "Zend/zend_ini_scanner.c"
 yy275:
                YYDEBUG(275, *YYCURSOR);
                ++YYCURSOR;
@@ -3686,11 +3693,11 @@ yy280:
 yy281:
                YYDEBUG(281, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 378 "Zend/zend_ini_scanner.l"
+#line 385 "Zend/zend_ini_scanner.l"
                { /* FALSE value (when used outside option value/offset this causes parse error!)*/
        RETURN_TOKEN(BOOL_FALSE, "", 0);
 }
-#line 3694 "Zend/zend_ini_scanner.c"
+#line 3701 "Zend/zend_ini_scanner.c"
 yy282:
                YYDEBUG(282, *YYCURSOR);
                ++YYCURSOR;
@@ -4066,13 +4073,13 @@ yy293:
 yy294:
                YYDEBUG(294, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 477 "Zend/zend_ini_scanner.l"
+#line 484 "Zend/zend_ini_scanner.l"
                { /* Comment */
        BEGIN(INITIAL);
        SCNG(lineno)++;
        return END_OF_LINE;
 }
-#line 4076 "Zend/zend_ini_scanner.c"
+#line 4083 "Zend/zend_ini_scanner.c"
 yy295:
                YYDEBUG(295, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4284,7 +4291,7 @@ yy304:
                ++YYCURSOR;
                YYDEBUG(307, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 330 "Zend/zend_ini_scanner.l"
+#line 337 "Zend/zend_ini_scanner.l"
                { /* Raw string */
        /* Eat leading and trailing single quotes */
        if (yytext[0] == '\'' && yytext[yyleng - 1] == '\'') {
@@ -4293,18 +4300,18 @@ yy304:
        }
        RETURN_TOKEN(TC_RAW, yytext, yyleng);
 }
-#line 4297 "Zend/zend_ini_scanner.c"
+#line 4304 "Zend/zend_ini_scanner.c"
 yy308:
                YYDEBUG(308, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(309, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 360 "Zend/zend_ini_scanner.l"
+#line 367 "Zend/zend_ini_scanner.l"
                { /* Variable start */
        yy_push_state(ST_VARNAME TSRMLS_CC);
        return TC_DOLLAR_CURLY;
 }
-#line 4308 "Zend/zend_ini_scanner.c"
+#line 4315 "Zend/zend_ini_scanner.c"
 yy310:
                YYDEBUG(310, *YYCURSOR);
                ++YYCURSOR;
@@ -4413,11 +4420,11 @@ yy319:
                ++YYCURSOR;
                YYDEBUG(320, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 495 "Zend/zend_ini_scanner.l"
+#line 502 "Zend/zend_ini_scanner.l"
                {
        return 0;
 }
-#line 4421 "Zend/zend_ini_scanner.c"
+#line 4428 "Zend/zend_ini_scanner.c"
 yy321:
                YYDEBUG(321, *YYCURSOR);
                ++YYCURSOR;
@@ -4426,22 +4433,22 @@ yy321:
 yy322:
                YYDEBUG(322, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 365 "Zend/zend_ini_scanner.l"
+#line 372 "Zend/zend_ini_scanner.l"
                { /* Variable name */
        RETURN_TOKEN(TC_VARNAME, yytext, yyleng);
 }
-#line 4434 "Zend/zend_ini_scanner.c"
+#line 4441 "Zend/zend_ini_scanner.c"
 yy323:
                YYDEBUG(323, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(324, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 369 "Zend/zend_ini_scanner.l"
+#line 376 "Zend/zend_ini_scanner.l"
                { /* Variable end */
        yy_pop_state(TSRMLS_C);
        return '}';
 }
-#line 4445 "Zend/zend_ini_scanner.c"
+#line 4452 "Zend/zend_ini_scanner.c"
 yy325:
                YYDEBUG(325, *YYCURSOR);
                ++YYCURSOR;
@@ -4455,6 +4462,6 @@ yy326:
                goto yy322;
        }
 }
-#line 499 "Zend/zend_ini_scanner.l"
+#line 506 "Zend/zend_ini_scanner.l"
 
 }
index 4782383030e59bf588557c79cde7587efbf8545c..f0afc281052ae23180f7289b009beee4c97b887a 100644 (file)
@@ -291,6 +291,13 @@ 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]+
index 97d3a07b4474f8ee4b3ef91c73dda2137251d206..45d22f2be2118fdabca94fc5c271c38d879a455a 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.5 on Wed Nov  5 22:35:51 2008 */
+/* Generated by re2c 0.13.5 on Wed Dec 24 13:47:34 2008 */
 #line 3 "Zend/zend_ini_scanner_defs.h"
 
 enum YYCONDTYPE {