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

index 03e3c3f2f1de2ec8f452d7cb6714da17513a7e04..c0cebe63cabab1a3aabd1a2707aab5ce71fbf2d7 100644 (file)
@@ -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"
 
 }
index 482d351bdcd220b141c2d3db3fbe61f3ff3bbf27..c8b9d286de05c96f543eb097a803020d9b66d91c 100644 (file)
@@ -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]+
index f79b3b14c6c4e84da6c3b81c4e15bc9dd26c17da..47f20c3d4d89aba0a2e86dfcc4b7edc0d38a75d8 100644 (file)
@@ -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 {