mirror of
https://github.com/php/php-src.git
synced 2025-08-19 08:49:28 +02:00
-r option
This commit is contained in:
parent
53cddbca33
commit
12d969558d
3 changed files with 67 additions and 50 deletions
18
phpdbg.c
18
phpdbg.c
|
@ -392,6 +392,7 @@ const opt_struct OPTIONS[] = { /* {{{ */
|
||||||
{'i', 1, "specify init"},
|
{'i', 1, "specify init"},
|
||||||
{'I', 0, "ignore init"},
|
{'I', 0, "ignore init"},
|
||||||
{'O', 1, "opline log"},
|
{'O', 1, "opline log"},
|
||||||
|
{'r', 0, "run"},
|
||||||
{'-', 0, NULL}
|
{'-', 0, NULL}
|
||||||
}; /* }}} */
|
}; /* }}} */
|
||||||
|
|
||||||
|
@ -450,6 +451,7 @@ int main(int argc, char **argv) /* {{{ */
|
||||||
char *php_optarg;
|
char *php_optarg;
|
||||||
int php_optind, opt, show_banner = 1;
|
int php_optind, opt, show_banner = 1;
|
||||||
long cleaning = 0;
|
long cleaning = 0;
|
||||||
|
int run = 0;
|
||||||
#ifdef ZTS
|
#ifdef ZTS
|
||||||
void ***tsrm_ls;
|
void ***tsrm_ls;
|
||||||
#endif
|
#endif
|
||||||
|
@ -481,9 +483,13 @@ phpdbg_main:
|
||||||
php_optarg = NULL;
|
php_optarg = NULL;
|
||||||
php_optind = 1;
|
php_optind = 1;
|
||||||
opt = 0;
|
opt = 0;
|
||||||
|
run = 0;
|
||||||
|
|
||||||
while ((opt = php_getopt(argc, argv, OPTIONS, &php_optarg, &php_optind, 0, 2)) != -1) {
|
while ((opt = php_getopt(argc, argv, OPTIONS, &php_optarg, &php_optind, 0, 2)) != -1) {
|
||||||
switch (opt) {
|
switch (opt) {
|
||||||
|
case 'r':
|
||||||
|
run++;
|
||||||
|
break;
|
||||||
case 'n':
|
case 'n':
|
||||||
phpdbg->php_ini_ignore = 1;
|
phpdbg->php_ini_ignore = 1;
|
||||||
break;
|
break;
|
||||||
|
@ -646,6 +652,15 @@ phpdbg_main:
|
||||||
goto phpdbg_out;
|
goto phpdbg_out;
|
||||||
}
|
}
|
||||||
} zend_end_try();
|
} zend_end_try();
|
||||||
|
|
||||||
|
if (run) {
|
||||||
|
/* no need to try{}, run does it ... */
|
||||||
|
PHPDBG_COMMAND_HANDLER(run)(NULL, NULL TSRMLS_CC);
|
||||||
|
if (run > 1) {
|
||||||
|
/* if -r is on the command line more than once just quit */
|
||||||
|
goto phpdbg_out;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* phpdbg main() */
|
/* phpdbg main() */
|
||||||
do {
|
do {
|
||||||
|
@ -664,7 +679,6 @@ phpdbg_main:
|
||||||
} while(!(PHPDBG_G(flags) & PHPDBG_IS_QUITTING));
|
} while(!(PHPDBG_G(flags) & PHPDBG_IS_QUITTING));
|
||||||
|
|
||||||
phpdbg_out:
|
phpdbg_out:
|
||||||
|
|
||||||
if (ini_entries) {
|
if (ini_entries) {
|
||||||
free(ini_entries);
|
free(ini_entries);
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,31 +33,6 @@
|
||||||
#include "phpdbg_prompt.h"
|
#include "phpdbg_prompt.h"
|
||||||
#include "phpdbg_cmd.h"
|
#include "phpdbg_cmd.h"
|
||||||
|
|
||||||
/* {{{ forward declarations */
|
|
||||||
static PHPDBG_COMMAND(exec);
|
|
||||||
static PHPDBG_COMMAND(compile);
|
|
||||||
static PHPDBG_COMMAND(step);
|
|
||||||
static PHPDBG_COMMAND(next);
|
|
||||||
static PHPDBG_COMMAND(run);
|
|
||||||
static PHPDBG_COMMAND(eval);
|
|
||||||
static PHPDBG_COMMAND(until);
|
|
||||||
static PHPDBG_COMMAND(finish);
|
|
||||||
static PHPDBG_COMMAND(leave);
|
|
||||||
static PHPDBG_COMMAND(print);
|
|
||||||
static PHPDBG_COMMAND(break);
|
|
||||||
static PHPDBG_COMMAND(back);
|
|
||||||
static PHPDBG_COMMAND(list);
|
|
||||||
static PHPDBG_COMMAND(info);
|
|
||||||
static PHPDBG_COMMAND(clean);
|
|
||||||
static PHPDBG_COMMAND(clear);
|
|
||||||
static PHPDBG_COMMAND(help);
|
|
||||||
static PHPDBG_COMMAND(quiet);
|
|
||||||
static PHPDBG_COMMAND(aliases);
|
|
||||||
static PHPDBG_COMMAND(shell);
|
|
||||||
static PHPDBG_COMMAND(oplog);
|
|
||||||
static PHPDBG_COMMAND(register);
|
|
||||||
static PHPDBG_COMMAND(quit); /* }}} */
|
|
||||||
|
|
||||||
/* {{{ command declarations */
|
/* {{{ command declarations */
|
||||||
static const phpdbg_command_t phpdbg_prompt_commands[] = {
|
static const phpdbg_command_t phpdbg_prompt_commands[] = {
|
||||||
PHPDBG_COMMAND_D(exec, "set execution context", 'e', NULL, 1),
|
PHPDBG_COMMAND_D(exec, "set execution context", 'e', NULL, 1),
|
||||||
|
@ -186,7 +161,7 @@ next_line:
|
||||||
}
|
}
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
static PHPDBG_COMMAND(exec) /* {{{ */
|
PHPDBG_COMMAND(exec) /* {{{ */
|
||||||
{
|
{
|
||||||
switch (param->type) {
|
switch (param->type) {
|
||||||
case STR_PARAM: {
|
case STR_PARAM: {
|
||||||
|
@ -256,7 +231,7 @@ int phpdbg_compile(TSRMLS_D) /* {{{ */
|
||||||
return FAILURE;
|
return FAILURE;
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
static PHPDBG_COMMAND(compile) /* {{{ */
|
PHPDBG_COMMAND(compile) /* {{{ */
|
||||||
{
|
{
|
||||||
if (!PHPDBG_G(exec)) {
|
if (!PHPDBG_G(exec)) {
|
||||||
phpdbg_error("No execution context");
|
phpdbg_error("No execution context");
|
||||||
|
@ -275,7 +250,7 @@ static PHPDBG_COMMAND(compile) /* {{{ */
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
static PHPDBG_COMMAND(step) /* {{{ */
|
PHPDBG_COMMAND(step) /* {{{ */
|
||||||
{
|
{
|
||||||
switch (param->type) {
|
switch (param->type) {
|
||||||
case EMPTY_PARAM:
|
case EMPTY_PARAM:
|
||||||
|
@ -296,12 +271,12 @@ static PHPDBG_COMMAND(step) /* {{{ */
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
static PHPDBG_COMMAND(next) /* {{{ */
|
PHPDBG_COMMAND(next) /* {{{ */
|
||||||
{
|
{
|
||||||
return PHPDBG_NEXT;
|
return PHPDBG_NEXT;
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
static PHPDBG_COMMAND(until) /* {{{ */
|
PHPDBG_COMMAND(until) /* {{{ */
|
||||||
{
|
{
|
||||||
if (!EG(in_execution)) {
|
if (!EG(in_execution)) {
|
||||||
phpdbg_error("Not executing");
|
phpdbg_error("Not executing");
|
||||||
|
@ -329,7 +304,7 @@ static PHPDBG_COMMAND(until) /* {{{ */
|
||||||
return PHPDBG_UNTIL;
|
return PHPDBG_UNTIL;
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
static PHPDBG_COMMAND(finish) /* {{{ */
|
PHPDBG_COMMAND(finish) /* {{{ */
|
||||||
{
|
{
|
||||||
if (!EG(in_execution)) {
|
if (!EG(in_execution)) {
|
||||||
phpdbg_error("Not executing");
|
phpdbg_error("Not executing");
|
||||||
|
@ -362,7 +337,7 @@ static PHPDBG_COMMAND(finish) /* {{{ */
|
||||||
return PHPDBG_FINISH;
|
return PHPDBG_FINISH;
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
static PHPDBG_COMMAND(leave) /* {{{ */
|
PHPDBG_COMMAND(leave) /* {{{ */
|
||||||
{
|
{
|
||||||
if (!EG(in_execution)) {
|
if (!EG(in_execution)) {
|
||||||
phpdbg_error("Not executing");
|
phpdbg_error("Not executing");
|
||||||
|
@ -445,7 +420,7 @@ static inline void phpdbg_handle_exception(TSRMLS_D) /* }}} */
|
||||||
zval_dtor(&exception);
|
zval_dtor(&exception);
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
static PHPDBG_COMMAND(run) /* {{{ */
|
PHPDBG_COMMAND(run) /* {{{ */
|
||||||
{
|
{
|
||||||
if (EG(in_execution)) {
|
if (EG(in_execution)) {
|
||||||
phpdbg_error("Cannot start another execution while one is in progress");
|
phpdbg_error("Cannot start another execution while one is in progress");
|
||||||
|
@ -508,7 +483,7 @@ out:
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
static PHPDBG_COMMAND(eval) /* {{{ */
|
PHPDBG_COMMAND(eval) /* {{{ */
|
||||||
{
|
{
|
||||||
switch (param->type) {
|
switch (param->type) {
|
||||||
case STR_PARAM: {
|
case STR_PARAM: {
|
||||||
|
@ -554,7 +529,7 @@ static PHPDBG_COMMAND(eval) /* {{{ */
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
static PHPDBG_COMMAND(back) /* {{{ */
|
PHPDBG_COMMAND(back) /* {{{ */
|
||||||
{
|
{
|
||||||
if (!EG(in_execution)) {
|
if (!EG(in_execution)) {
|
||||||
phpdbg_error("Not executing!");
|
phpdbg_error("Not executing!");
|
||||||
|
@ -592,7 +567,7 @@ static PHPDBG_COMMAND(back) /* {{{ */
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
static PHPDBG_COMMAND(print) /* {{{ */
|
PHPDBG_COMMAND(print) /* {{{ */
|
||||||
{
|
{
|
||||||
switch (param->type) {
|
switch (param->type) {
|
||||||
case EMPTY_PARAM: {
|
case EMPTY_PARAM: {
|
||||||
|
@ -644,12 +619,12 @@ static PHPDBG_COMMAND(print) /* {{{ */
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
static PHPDBG_COMMAND(info) /* {{{ */
|
PHPDBG_COMMAND(info) /* {{{ */
|
||||||
{
|
{
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
static PHPDBG_COMMAND(break) /* {{{ */
|
PHPDBG_COMMAND(break) /* {{{ */
|
||||||
{
|
{
|
||||||
switch (param->type) {
|
switch (param->type) {
|
||||||
case ADDR_PARAM:
|
case ADDR_PARAM:
|
||||||
|
@ -674,7 +649,7 @@ static PHPDBG_COMMAND(break) /* {{{ */
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
static PHPDBG_COMMAND(shell) /* {{{ */
|
PHPDBG_COMMAND(shell) /* {{{ */
|
||||||
{
|
{
|
||||||
/* don't allow this to loop, ever ... */
|
/* don't allow this to loop, ever ... */
|
||||||
switch (param->type) {
|
switch (param->type) {
|
||||||
|
@ -710,7 +685,7 @@ static PHPDBG_COMMAND(shell) /* {{{ */
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
static PHPDBG_COMMAND(register) /* {{{ */
|
PHPDBG_COMMAND(register) /* {{{ */
|
||||||
{
|
{
|
||||||
switch (param->type) {
|
switch (param->type) {
|
||||||
case STR_PARAM: {
|
case STR_PARAM: {
|
||||||
|
@ -742,7 +717,7 @@ static PHPDBG_COMMAND(register) /* {{{ */
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
static PHPDBG_COMMAND(quit) /* {{{ */
|
PHPDBG_COMMAND(quit) /* {{{ */
|
||||||
{
|
{
|
||||||
/* don't allow this to loop, ever ... */
|
/* don't allow this to loop, ever ... */
|
||||||
if (!(PHPDBG_G(flags) & PHPDBG_IS_QUITTING)) {
|
if (!(PHPDBG_G(flags) & PHPDBG_IS_QUITTING)) {
|
||||||
|
@ -754,7 +729,7 @@ static PHPDBG_COMMAND(quit) /* {{{ */
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
static PHPDBG_COMMAND(clean) /* {{{ */
|
PHPDBG_COMMAND(clean) /* {{{ */
|
||||||
{
|
{
|
||||||
if (EG(in_execution)) {
|
if (EG(in_execution)) {
|
||||||
phpdbg_error("Cannot clean environment while executing");
|
phpdbg_error("Cannot clean environment while executing");
|
||||||
|
@ -773,7 +748,7 @@ static PHPDBG_COMMAND(clean) /* {{{ */
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
static PHPDBG_COMMAND(clear) /* {{{ */
|
PHPDBG_COMMAND(clear) /* {{{ */
|
||||||
{
|
{
|
||||||
phpdbg_notice("Clearing Breakpoints");
|
phpdbg_notice("Clearing Breakpoints");
|
||||||
|
|
||||||
|
@ -788,7 +763,7 @@ static PHPDBG_COMMAND(clear) /* {{{ */
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
static PHPDBG_COMMAND(aliases) /* {{{ */
|
PHPDBG_COMMAND(aliases) /* {{{ */
|
||||||
{
|
{
|
||||||
const phpdbg_command_t *prompt_command = phpdbg_prompt_commands;
|
const phpdbg_command_t *prompt_command = phpdbg_prompt_commands;
|
||||||
|
|
||||||
|
@ -821,7 +796,7 @@ static PHPDBG_COMMAND(aliases) /* {{{ */
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
static PHPDBG_COMMAND(oplog) /* {{{ */
|
PHPDBG_COMMAND(oplog) /* {{{ */
|
||||||
{
|
{
|
||||||
switch (param->type) {
|
switch (param->type) {
|
||||||
case EMPTY_PARAM:
|
case EMPTY_PARAM:
|
||||||
|
@ -860,7 +835,7 @@ static PHPDBG_COMMAND(oplog) /* {{{ */
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
static PHPDBG_COMMAND(help) /* {{{ */
|
PHPDBG_COMMAND(help) /* {{{ */
|
||||||
{
|
{
|
||||||
switch (param->type) {
|
switch (param->type) {
|
||||||
case EMPTY_PARAM: {
|
case EMPTY_PARAM: {
|
||||||
|
@ -899,6 +874,9 @@ static PHPDBG_COMMAND(help) /* {{{ */
|
||||||
phpdbg_writeln(" -i\t-imy.init\t\tSet .phpdbginit file");
|
phpdbg_writeln(" -i\t-imy.init\t\tSet .phpdbginit file");
|
||||||
phpdbg_writeln(" -I\tN/A\t\t\tIgnore default .phpdbginit");
|
phpdbg_writeln(" -I\tN/A\t\t\tIgnore default .phpdbginit");
|
||||||
phpdbg_writeln(" -O\t-Omy.oplog\t\tSets oplog output file");
|
phpdbg_writeln(" -O\t-Omy.oplog\t\tSets oplog output file");
|
||||||
|
phpdbg_writeln(" -r\tN/A\t\t\tRun execution context");
|
||||||
|
phpdbg_notice(
|
||||||
|
"Note: passing -rr will cause phpdbg to quit after execution");
|
||||||
phpdbg_help_footer();
|
phpdbg_help_footer();
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
|
@ -908,7 +886,7 @@ static PHPDBG_COMMAND(help) /* {{{ */
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
static PHPDBG_COMMAND(quiet) /* {{{ */
|
PHPDBG_COMMAND(quiet) /* {{{ */
|
||||||
{
|
{
|
||||||
switch (param->type) {
|
switch (param->type) {
|
||||||
case NUMERIC_PARAM: {
|
case NUMERIC_PARAM: {
|
||||||
|
@ -927,7 +905,7 @@ static PHPDBG_COMMAND(quiet) /* {{{ */
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
static PHPDBG_COMMAND(list) /* {{{ */
|
PHPDBG_COMMAND(list) /* {{{ */
|
||||||
{
|
{
|
||||||
switch (param->type) {
|
switch (param->type) {
|
||||||
case NUMERIC_PARAM:
|
case NUMERIC_PARAM:
|
||||||
|
|
|
@ -35,4 +35,29 @@ void phpdbg_execute_ex(zend_execute_data *execute_data TSRMLS_DC);
|
||||||
void phpdbg_execute_ex(zend_op_array *op_array TSRMLS_DC);
|
void phpdbg_execute_ex(zend_op_array *op_array TSRMLS_DC);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* {{{ */
|
||||||
|
PHPDBG_COMMAND(exec);
|
||||||
|
PHPDBG_COMMAND(compile);
|
||||||
|
PHPDBG_COMMAND(step);
|
||||||
|
PHPDBG_COMMAND(next);
|
||||||
|
PHPDBG_COMMAND(run);
|
||||||
|
PHPDBG_COMMAND(eval);
|
||||||
|
PHPDBG_COMMAND(until);
|
||||||
|
PHPDBG_COMMAND(finish);
|
||||||
|
PHPDBG_COMMAND(leave);
|
||||||
|
PHPDBG_COMMAND(print);
|
||||||
|
PHPDBG_COMMAND(break);
|
||||||
|
PHPDBG_COMMAND(back);
|
||||||
|
PHPDBG_COMMAND(list);
|
||||||
|
PHPDBG_COMMAND(info);
|
||||||
|
PHPDBG_COMMAND(clean);
|
||||||
|
PHPDBG_COMMAND(clear);
|
||||||
|
PHPDBG_COMMAND(help);
|
||||||
|
PHPDBG_COMMAND(quiet);
|
||||||
|
PHPDBG_COMMAND(aliases);
|
||||||
|
PHPDBG_COMMAND(shell);
|
||||||
|
PHPDBG_COMMAND(oplog);
|
||||||
|
PHPDBG_COMMAND(register);
|
||||||
|
PHPDBG_COMMAND(quit); /* }}} */
|
||||||
|
|
||||||
#endif /* PHPDBG_PROMPT_H */
|
#endif /* PHPDBG_PROMPT_H */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue