summaryrefslogtreecommitdiff
path: root/phpdbg_prompt.c
diff options
context:
space:
mode:
authorBob Weinand <bobwei9@hotmail.com>2014-04-13 00:27:46 +0200
committerBob Weinand <bobwei9@hotmail.com>2014-04-13 00:27:46 +0200
commit3db29ee43960a4e164244a55b0e2a4b23a112e49 (patch)
treebced3b5e38fe72a6a308e93f57602eb148ee93f3 /phpdbg_prompt.c
parent86a77317630255a254888de4437a8b060efdb863 (diff)
downloadphp-git-3db29ee43960a4e164244a55b0e2a4b23a112e49.tar.gz
Added support for command line arg passing
"phpdbg -- arg" in shell "run arg" in phpdbg prompt
Diffstat (limited to 'phpdbg_prompt.c')
-rw-r--r--phpdbg_prompt.c26
1 files changed, 26 insertions, 0 deletions
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;