From 3db29ee43960a4e164244a55b0e2a4b23a112e49 Mon Sep 17 00:00:00 2001 From: Bob Weinand Date: Sun, 13 Apr 2014 00:27:46 +0200 Subject: Added support for command line arg passing "phpdbg -- arg" in shell "run arg" in phpdbg prompt --- phpdbg_prompt.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'phpdbg_prompt.c') diff --git a/phpdbg_prompt.c b/phpdbg_prompt.c index e53a5e68b1..c088535eb4 100644 --- a/phpdbg_prompt.c +++ b/phpdbg_prompt.c @@ -289,6 +289,9 @@ PHPDBG_COMMAND(exec) /* {{{ */ PHPDBG_G(exec) = res; PHPDBG_G(exec_len) = res_len; + *SG(request_info).argv = PHPDBG_G(exec); + php_hash_environment(TSRMLS_C); + phpdbg_notice("Set execution context: %s", PHPDBG_G(exec)); } else { phpdbg_notice("Execution context not changed"); @@ -579,6 +582,29 @@ PHPDBG_COMMAND(run) /* {{{ */ /* reset hit counters */ phpdbg_reset_breakpoints(TSRMLS_C); + if (param->type != EMPTY_PARAM) { + char **argv = emalloc(5 * sizeof(char *)); + int argc = 0; + int i; + char *argv_str = strtok(input->string, " "); + while (argv_str) { + if (argc >= 4 && argc == (argc & -argc)) { + argv = erealloc(argv, (argc * 2 + 1) * sizeof(char *)); + } + argv[++argc] = argv_str; + argv_str = strtok(0, " "); + argv[argc] = estrdup(argv[argc]); + } + argv[0] = SG(request_info).argv[0]; + for (i = SG(request_info).argc; --i;) { + efree(SG(request_info).argv[i]); + } + efree(SG(request_info).argv); + SG(request_info).argv = erealloc(argv, ++argc * sizeof(char *)); + SG(request_info).argc = argc; + php_hash_environment(TSRMLS_C); + } + zend_try { php_output_activate(TSRMLS_C); PHPDBG_G(flags) ^= PHPDBG_IS_INTERACTIVE; -- cgit v1.2.1