diff options
Diffstat (limited to 'Zend/zend_ini_scanner.l')
-rw-r--r-- | Zend/zend_ini_scanner.l | 94 |
1 files changed, 44 insertions, 50 deletions
diff --git a/Zend/zend_ini_scanner.l b/Zend/zend_ini_scanner.l index 9cf8b4fe0a..8cc7266ebb 100644 --- a/Zend/zend_ini_scanner.l +++ b/Zend/zend_ini_scanner.l @@ -29,6 +29,10 @@ #include <zend_ini_parser.h> #include "zend_ini_scanner.h" +#ifdef YYDEBUG +#undef YYDEBUG +#endif + #if 0 # define YYDEBUG(s, c) printf("state: %d char: %c\n", s, c) #else @@ -132,11 +136,9 @@ ZEND_API zend_ini_scanner_globals ini_scanner_globals; /* Eat trailing whitespace */ #define EAT_TRAILING_WHITESPACE() EAT_TRAILING_WHITESPACE_EX('X') -#define zend_ini_copy_value(retval, str, len) { \ - Z_STRVAL_P(retval) = zend_strndup(str, len); \ - Z_STRLEN_P(retval) = len; \ - Z_TYPE_P(retval) = IS_STRING; \ -} +#define zend_ini_copy_value(retval, str, len) \ + ZVAL_NEW_STR(retval, zend_string_init(str, len, 1)) + #define RETURN_TOKEN(type, str, len) { \ if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED) { \ @@ -151,7 +153,7 @@ static inline int convert_to_number(zval *retval, const char *str, const int str { zend_uchar type; int overflow; - long lval; + zend_long lval; double dval; if ((type = is_numeric_string_ex(str, str_len, &lval, &dval, 0, &overflow)) != 0) { @@ -189,23 +191,22 @@ static void zend_ini_copy_typed_value(zval *retval, const int type, const char * } } -static void _yy_push_state(int new_state TSRMLS_DC) +static void _yy_push_state(int new_state) { - zend_stack_push(&SCNG(state_stack), (void *) &YYGETCONDITION(), sizeof(int)); + zend_stack_push(&SCNG(state_stack), (void *) &YYGETCONDITION()); YYSETCONDITION(new_state); } #define yy_push_state(state_and_tsrm) _yy_push_state(yyc##state_and_tsrm) -static void yy_pop_state(TSRMLS_D) +static void yy_pop_state(void) { - int *stack_state; - zend_stack_top(&SCNG(state_stack), (void **) &stack_state); + int *stack_state = zend_stack_top(&SCNG(state_stack)); YYSETCONDITION(*stack_state); zend_stack_del_top(&SCNG(state_stack)); } -static void yy_scan_buffer(char *str, unsigned int len TSRMLS_DC) +static void yy_scan_buffer(char *str, unsigned int len) { YYCURSOR = (YYCTYPE*)str; SCNG(yy_start) = YYCURSOR; @@ -216,7 +217,7 @@ static void yy_scan_buffer(char *str, unsigned int len TSRMLS_DC) /* {{{ init_ini_scanner() */ -static int init_ini_scanner(int scanner_mode, zend_file_handle *fh TSRMLS_DC) +static int init_ini_scanner(int scanner_mode, zend_file_handle *fh) { /* Sanity check */ if (scanner_mode != ZEND_INI_SCANNER_NORMAL && scanner_mode != ZEND_INI_SCANNER_RAW && scanner_mode != ZEND_INI_SCANNER_TYPED) { @@ -234,7 +235,7 @@ static int init_ini_scanner(int scanner_mode, zend_file_handle *fh TSRMLS_DC) ini_filename = NULL; } - zend_stack_init(&SCNG(state_stack)); + zend_stack_init(&SCNG(state_stack), sizeof(int)); BEGIN(INITIAL); return SUCCESS; @@ -243,7 +244,7 @@ static int init_ini_scanner(int scanner_mode, zend_file_handle *fh TSRMLS_DC) /* {{{ shutdown_ini_scanner() */ -void shutdown_ini_scanner(TSRMLS_D) +void shutdown_ini_scanner(void) { zend_stack_destroy(&SCNG(state_stack)); if (ini_filename) { @@ -254,7 +255,7 @@ void shutdown_ini_scanner(TSRMLS_D) /* {{{ zend_ini_scanner_get_lineno() */ -int zend_ini_scanner_get_lineno(TSRMLS_D) +int zend_ini_scanner_get_lineno(void) { return SCNG(lineno); } @@ -262,7 +263,7 @@ int zend_ini_scanner_get_lineno(TSRMLS_D) /* {{{ zend_ini_scanner_get_filename() */ -char *zend_ini_scanner_get_filename(TSRMLS_D) +char *zend_ini_scanner_get_filename(void) { return ini_filename ? ini_filename : "Unknown"; } @@ -270,21 +271,21 @@ char *zend_ini_scanner_get_filename(TSRMLS_D) /* {{{ zend_ini_open_file_for_scanning() */ -int zend_ini_open_file_for_scanning(zend_file_handle *fh, int scanner_mode TSRMLS_DC) +int zend_ini_open_file_for_scanning(zend_file_handle *fh, int scanner_mode) { char *buf; size_t size; - if (zend_stream_fixup(fh, &buf, &size TSRMLS_CC) == FAILURE) { + if (zend_stream_fixup(fh, &buf, &size) == FAILURE) { return FAILURE; } - if (init_ini_scanner(scanner_mode, fh TSRMLS_CC) == FAILURE) { - zend_file_handle_dtor(fh TSRMLS_CC); + if (init_ini_scanner(scanner_mode, fh) == FAILURE) { + zend_file_handle_dtor(fh); return FAILURE; } - yy_scan_buffer(buf, size TSRMLS_CC); + yy_scan_buffer(buf, (unsigned int)size); return SUCCESS; } @@ -292,15 +293,15 @@ int zend_ini_open_file_for_scanning(zend_file_handle *fh, int scanner_mode TSRML /* {{{ zend_ini_prepare_string_for_scanning() */ -int zend_ini_prepare_string_for_scanning(char *str, int scanner_mode TSRMLS_DC) +int zend_ini_prepare_string_for_scanning(char *str, int scanner_mode) { - int len = strlen(str); + int len = (int)strlen(str); - if (init_ini_scanner(scanner_mode, NULL TSRMLS_CC) == FAILURE) { + if (init_ini_scanner(scanner_mode, NULL) == FAILURE) { return FAILURE; } - yy_scan_buffer(str, len TSRMLS_CC); + yy_scan_buffer(str, len); return SUCCESS; } @@ -308,7 +309,7 @@ int zend_ini_prepare_string_for_scanning(char *str, int scanner_mode TSRMLS_DC) /* {{{ zend_ini_escape_string() */ -static void zend_ini_escape_string(zval *lval, char *str, int len, char quote_type TSRMLS_DC) +static void zend_ini_escape_string(zval *lval, char *str, int len, char quote_type) { register char *s, *t; char *end; @@ -355,7 +356,7 @@ static void zend_ini_escape_string(zval *lval, char *str, int len, char quote_ty } /* }}} */ -int ini_lex(zval *ini_lval TSRMLS_DC) +int ini_lex(zval *ini_lval) { restart: SCNG(yy_text) = YYCURSOR; @@ -405,9 +406,9 @@ SECTION_VALUE_CHARS ([^$\n\r;"'\]\\]|("\\"{ANY_CHAR})|{LITERAL_DOLLAR}) <INITIAL>"[" { /* Section start */ /* Enter section data lookup state */ if (SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW) { - yy_push_state(ST_SECTION_RAW TSRMLS_CC); + yy_push_state(ST_SECTION_RAW); } else { - yy_push_state(ST_SECTION_VALUE TSRMLS_CC); + yy_push_state(ST_SECTION_VALUE); } return TC_SECTION; } @@ -430,12 +431,12 @@ SECTION_VALUE_CHARS ([^$\n\r;"'\]\\]|("\\"{ANY_CHAR})|{LITERAL_DOLLAR}) <INITIAL>{LABEL}"["{TABS_AND_SPACES}* { /* Start of option with offset */ /* Eat leading whitespace */ EAT_LEADING_WHITESPACE(); - + /* Eat trailing whitespace and [ */ EAT_TRAILING_WHITESPACE_EX('['); /* Enter offset lookup state */ - yy_push_state(ST_OFFSET TSRMLS_CC); + yy_push_state(ST_OFFSET); RETURN_TOKEN(TC_OFFSET, yytext, yyleng); } @@ -446,7 +447,7 @@ SECTION_VALUE_CHARS ([^$\n\r;"'\]\\]|("\\"{ANY_CHAR})|{LITERAL_DOLLAR}) } <ST_DOUBLE_QUOTES,ST_SECTION_VALUE,ST_VALUE,ST_OFFSET>{DOLLAR_CURLY} { /* Variable start */ - yy_push_state(ST_VARNAME TSRMLS_CC); + yy_push_state(ST_VARNAME); return TC_DOLLAR_CURLY; } @@ -461,7 +462,7 @@ SECTION_VALUE_CHARS ([^$\n\r;"'\]\\]|("\\"{ANY_CHAR})|{LITERAL_DOLLAR}) } <ST_VARNAME>"}" { /* Variable end */ - yy_pop_state(TSRMLS_C); + yy_pop_state(); return '}'; } @@ -489,15 +490,15 @@ SECTION_VALUE_CHARS ([^$\n\r;"'\]\\]|("\\"{ANY_CHAR})|{LITERAL_DOLLAR}) <INITIAL>{TABS_AND_SPACES}*[=]{TABS_AND_SPACES}* { /* Start option value */ if (SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW) { - yy_push_state(ST_RAW TSRMLS_CC); + yy_push_state(ST_RAW); } else { - yy_push_state(ST_VALUE TSRMLS_CC); + yy_push_state(ST_VALUE); } return '='; } <ST_RAW>{RAW_VALUE_CHARS} { /* Raw value, only used when SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW. */ - char *sc = NULL; + unsigned char *sc = NULL; while (YYCURSOR < YYLIMIT) { switch (*YYCURSOR) { case '\n': @@ -574,12 +575,12 @@ end_raw_value_chars: } <ST_SECTION_VALUE,ST_VALUE,ST_OFFSET>{TABS_AND_SPACES}*["] { /* Double quoted '"' string start */ - yy_push_state(ST_DOUBLE_QUOTES TSRMLS_CC); + yy_push_state(ST_DOUBLE_QUOTES); return '"'; } <ST_DOUBLE_QUOTES>["]{TABS_AND_SPACES}* { /* Double quoted '"' string ends */ - yy_pop_state(TSRMLS_C); + yy_pop_state(); return '"'; } @@ -587,7 +588,7 @@ end_raw_value_chars: if (YYCURSOR > YYLIMIT) { return 0; } - + while (YYCURSOR < YYLIMIT) { switch (*YYCURSOR++) { case '"': @@ -608,14 +609,14 @@ end_raw_value_chars: default: continue; } - + YYCURSOR--; break; } yyleng = YYCURSOR - SCNG(yy_text); - - zend_ini_escape_string(ini_lval, yytext, yyleng, '"' TSRMLS_CC); + + zend_ini_escape_string(ini_lval, yytext, yyleng, '"'); return TC_QUOTED_STRING; } @@ -639,13 +640,6 @@ end_raw_value_chars: return END_OF_LINE; } -<INITIAL>{TABS_AND_SPACES}*[#][^\r\n]*{NEWLINE} { /* #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; -} - <ST_VALUE,ST_RAW>[^] { /* End of option value (if EOF is reached before EOL */ BEGIN(INITIAL); return END_OF_LINE; |