From: Felipe Pena Date: Sun, 10 Nov 2013 17:51:20 +0000 (-0200) Subject: - Fix conflict X-Git-Tag: php-5.6.0alpha1~110^2~523^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=22f0ff6c12c4bedb25e8266e37afe3de381f9e56;p=php - Fix conflict --- 22f0ff6c12c4bedb25e8266e37afe3de381f9e56 diff --cc phpdbg.c index a0419f313e,4537750389..48b5728d77 --- a/phpdbg.c +++ b/phpdbg.c @@@ -48,16 -49,16 +49,16 @@@ static void php_phpdbg_destroy_break(vo static PHP_RINIT_FUNCTION(phpdbg) /* {{{ */ { -- zend_hash_init(&PHPDBG_G(break_files), 8, NULL, php_phpdbg_destroy_break, 0); -- zend_hash_init(&PHPDBG_G(break_symbols), 8, NULL, php_phpdbg_destroy_break, 0); ++ zend_hash_init(&PHPDBG_G(bp_files), 8, NULL, php_phpdbg_destroy_break, 0); ++ zend_hash_init(&PHPDBG_G(bp_symbols), 8, NULL, php_phpdbg_destroy_break, 0); return SUCCESS; } /* }}} */ static PHP_RSHUTDOWN_FUNCTION(phpdbg) /* {{{ */ { -- zend_hash_destroy(&PHPDBG_G(break_files)); -- zend_hash_destroy(&PHPDBG_G(break_symbols)); ++ zend_hash_destroy(&PHPDBG_G(bp_files)); ++ zend_hash_destroy(&PHPDBG_G(bp_symbols)); if (PHPDBG_G(exec)) { efree(PHPDBG_G(exec)); @@@ -128,6 -148,14 +148,14 @@@ void phpdbg_ini_defaults(HashTable *con int main(int argc, char **argv) /* {{{ */ { sapi_module_struct *phpdbg = &phpdbg_sapi_module; + char *ini_file = NULL; + char *ini_entries = NULL; + int ini_entries_len = 0; + char *ini_path_override = NULL; + char *php_optarg = NULL; + int php_optind = 0; + int opt; - ++ #ifdef ZTS void ***tsrm_ls; tsrm_startup(1, 1, 0, NULL); @@@ -142,10 -170,59 +170,59 @@@ setmode(_fileno(stderr), O_BINARY); /* make the stdio mode be binary */ #endif - phpdbg->executable_location = argv[0]; + while ((opt = php_getopt(argc, argv, OPTIONS, &php_optarg, &php_optind, 1, 1)) != -1) { + switch (opt) { - case 'c': ++ case 'c': + if (ini_path_override) { + free(ini_path_override); + } + ini_path_override = strdup(php_optarg); + break; + case 'd': { + int len = strlen(php_optarg); + char *val; - ++ + if ((val = strchr(php_optarg, '='))) { + val++; + if (!isalnum(*val) && *val != '"' && *val != '\'' && *val != '\0') { + ini_entries = realloc(ini_entries, ini_entries_len + len + sizeof("\"\"\n\0")); + memcpy(ini_entries + ini_entries_len, php_optarg, (val - php_optarg)); + ini_entries_len += (val - php_optarg); + memcpy(ini_entries + ini_entries_len, "\"", 1); + ini_entries_len++; + memcpy(ini_entries + ini_entries_len, val, len - (val - php_optarg)); + ini_entries_len += len - (val - php_optarg); + memcpy(ini_entries + ini_entries_len, "\"\n\0", sizeof("\"\n\0")); + ini_entries_len += sizeof("\n\0\"") - 2; + } else { + ini_entries = realloc(ini_entries, ini_entries_len + len + sizeof("\n\0")); + memcpy(ini_entries + ini_entries_len, php_optarg, len); + memcpy(ini_entries + ini_entries_len + len, "\n\0", sizeof("\n\0")); + ini_entries_len += len + sizeof("\n\0") - 2; + } + } else { + ini_entries = realloc(ini_entries, ini_entries_len + len + sizeof("=1\n\0")); + memcpy(ini_entries + ini_entries_len, php_optarg, len); + memcpy(ini_entries + ini_entries_len + len, "=1\n\0", sizeof("=1\n\0")); + ini_entries_len += len + sizeof("=1\n\0") - 2; + } + } break; + } + } - ++ + phpdbg->ini_defaults = phpdbg_ini_defaults; + phpdbg->php_ini_path_override = ini_path_override; + phpdbg->phpinfo_as_text = 1; + phpdbg->php_ini_ignore_cwd = 1; - + sapi_startup(phpdbg); + phpdbg->executable_location = argv[0]; + phpdbg->phpinfo_as_text = 1; + phpdbg->php_ini_ignore_cwd = 0; + phpdbg->php_ini_ignore = 0; + phpdbg->ini_entries = ini_entries; - ++ if (phpdbg->startup(phpdbg) == SUCCESS) { zend_activate(TSRMLS_C); @@@ -164,7 -241,15 +241,15 @@@ zend_try { phpdbg_interactive(argc, argv TSRMLS_CC); } zend_end_try(); - + + if (ini_file) { + pefree(ini_file, 1); + } - ++ + if (ini_entries) { + free(ini_entries); + } + if (PG(modules_activated)) { zend_try { zend_deactivate_modules(TSRMLS_C); diff --cc phpdbg.h index 68c987a429,087323009e..427d22aa96 --- a/phpdbg.h +++ b/phpdbg.h @@@ -46,10 -47,10 +47,11 @@@ ZEND_BEGIN_MODULE_GLOBALS(phpdbg size_t exec_len; /* size of exec */ zend_op_array *ops; /* op_array */ zval *retval; /* return value */ - zend_bool stepping; /* stepping */ + int stepping; /* stepping */ int vmret; /* return from last opcode handler execution */ zend_bool has_file_bp; /* file-based breakpoint has been set */ + zend_bool has_sym_bp; /* symbol-based breakpoint has been set */ + zend_bool quitting; /* quitting flag */ ZEND_END_MODULE_GLOBALS(phpdbg) #include "phpdbg_prompt.h" diff --cc test.php index 0a10de16a9,e907c3b6bf..d67540e1ed --- a/test.php +++ b/test.php @@@ -1,8 -1,7 +1,9 @@@