-r option

This commit is contained in:
krakjoe 2013-11-20 16:19:37 +00:00
parent 53cddbca33
commit 12d969558d
3 changed files with 67 additions and 50 deletions

View file

@ -392,6 +392,7 @@ const opt_struct OPTIONS[] = { /* {{{ */
{'i', 1, "specify init"},
{'I', 0, "ignore init"},
{'O', 1, "opline log"},
{'r', 0, "run"},
{'-', 0, NULL}
}; /* }}} */
@ -450,6 +451,7 @@ int main(int argc, char **argv) /* {{{ */
char *php_optarg;
int php_optind, opt, show_banner = 1;
long cleaning = 0;
int run = 0;
#ifdef ZTS
void ***tsrm_ls;
#endif
@ -481,9 +483,13 @@ phpdbg_main:
php_optarg = NULL;
php_optind = 1;
opt = 0;
run = 0;
while ((opt = php_getopt(argc, argv, OPTIONS, &php_optarg, &php_optind, 0, 2)) != -1) {
switch (opt) {
case 'r':
run++;
break;
case 'n':
phpdbg->php_ini_ignore = 1;
break;
@ -647,6 +653,15 @@ phpdbg_main:
}
} 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() */
do {
zend_try {
@ -664,7 +679,6 @@ phpdbg_main:
} while(!(PHPDBG_G(flags) & PHPDBG_IS_QUITTING));
phpdbg_out:
if (ini_entries) {
free(ini_entries);
}

View file

@ -33,31 +33,6 @@
#include "phpdbg_prompt.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 */
static const phpdbg_command_t phpdbg_prompt_commands[] = {
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) {
case STR_PARAM: {
@ -256,7 +231,7 @@ int phpdbg_compile(TSRMLS_D) /* {{{ */
return FAILURE;
} /* }}} */
static PHPDBG_COMMAND(compile) /* {{{ */
PHPDBG_COMMAND(compile) /* {{{ */
{
if (!PHPDBG_G(exec)) {
phpdbg_error("No execution context");
@ -275,7 +250,7 @@ static PHPDBG_COMMAND(compile) /* {{{ */
return SUCCESS;
} /* }}} */
static PHPDBG_COMMAND(step) /* {{{ */
PHPDBG_COMMAND(step) /* {{{ */
{
switch (param->type) {
case EMPTY_PARAM:
@ -296,12 +271,12 @@ static PHPDBG_COMMAND(step) /* {{{ */
return SUCCESS;
} /* }}} */
static PHPDBG_COMMAND(next) /* {{{ */
PHPDBG_COMMAND(next) /* {{{ */
{
return PHPDBG_NEXT;
} /* }}} */
static PHPDBG_COMMAND(until) /* {{{ */
PHPDBG_COMMAND(until) /* {{{ */
{
if (!EG(in_execution)) {
phpdbg_error("Not executing");
@ -329,7 +304,7 @@ static PHPDBG_COMMAND(until) /* {{{ */
return PHPDBG_UNTIL;
} /* }}} */
static PHPDBG_COMMAND(finish) /* {{{ */
PHPDBG_COMMAND(finish) /* {{{ */
{
if (!EG(in_execution)) {
phpdbg_error("Not executing");
@ -362,7 +337,7 @@ static PHPDBG_COMMAND(finish) /* {{{ */
return PHPDBG_FINISH;
} /* }}} */
static PHPDBG_COMMAND(leave) /* {{{ */
PHPDBG_COMMAND(leave) /* {{{ */
{
if (!EG(in_execution)) {
phpdbg_error("Not executing");
@ -445,7 +420,7 @@ static inline void phpdbg_handle_exception(TSRMLS_D) /* }}} */
zval_dtor(&exception);
} /* }}} */
static PHPDBG_COMMAND(run) /* {{{ */
PHPDBG_COMMAND(run) /* {{{ */
{
if (EG(in_execution)) {
phpdbg_error("Cannot start another execution while one is in progress");
@ -508,7 +483,7 @@ out:
return SUCCESS;
} /* }}} */
static PHPDBG_COMMAND(eval) /* {{{ */
PHPDBG_COMMAND(eval) /* {{{ */
{
switch (param->type) {
case STR_PARAM: {
@ -554,7 +529,7 @@ static PHPDBG_COMMAND(eval) /* {{{ */
return SUCCESS;
} /* }}} */
static PHPDBG_COMMAND(back) /* {{{ */
PHPDBG_COMMAND(back) /* {{{ */
{
if (!EG(in_execution)) {
phpdbg_error("Not executing!");
@ -592,7 +567,7 @@ static PHPDBG_COMMAND(back) /* {{{ */
return SUCCESS;
} /* }}} */
static PHPDBG_COMMAND(print) /* {{{ */
PHPDBG_COMMAND(print) /* {{{ */
{
switch (param->type) {
case EMPTY_PARAM: {
@ -644,12 +619,12 @@ static PHPDBG_COMMAND(print) /* {{{ */
return SUCCESS;
} /* }}} */
static PHPDBG_COMMAND(info) /* {{{ */
PHPDBG_COMMAND(info) /* {{{ */
{
return SUCCESS;
} /* }}} */
static PHPDBG_COMMAND(break) /* {{{ */
PHPDBG_COMMAND(break) /* {{{ */
{
switch (param->type) {
case ADDR_PARAM:
@ -674,7 +649,7 @@ static PHPDBG_COMMAND(break) /* {{{ */
return SUCCESS;
} /* }}} */
static PHPDBG_COMMAND(shell) /* {{{ */
PHPDBG_COMMAND(shell) /* {{{ */
{
/* don't allow this to loop, ever ... */
switch (param->type) {
@ -710,7 +685,7 @@ static PHPDBG_COMMAND(shell) /* {{{ */
return SUCCESS;
} /* }}} */
static PHPDBG_COMMAND(register) /* {{{ */
PHPDBG_COMMAND(register) /* {{{ */
{
switch (param->type) {
case STR_PARAM: {
@ -742,7 +717,7 @@ static PHPDBG_COMMAND(register) /* {{{ */
return SUCCESS;
} /* }}} */
static PHPDBG_COMMAND(quit) /* {{{ */
PHPDBG_COMMAND(quit) /* {{{ */
{
/* don't allow this to loop, ever ... */
if (!(PHPDBG_G(flags) & PHPDBG_IS_QUITTING)) {
@ -754,7 +729,7 @@ static PHPDBG_COMMAND(quit) /* {{{ */
return SUCCESS;
} /* }}} */
static PHPDBG_COMMAND(clean) /* {{{ */
PHPDBG_COMMAND(clean) /* {{{ */
{
if (EG(in_execution)) {
phpdbg_error("Cannot clean environment while executing");
@ -773,7 +748,7 @@ static PHPDBG_COMMAND(clean) /* {{{ */
return SUCCESS;
} /* }}} */
static PHPDBG_COMMAND(clear) /* {{{ */
PHPDBG_COMMAND(clear) /* {{{ */
{
phpdbg_notice("Clearing Breakpoints");
@ -788,7 +763,7 @@ static PHPDBG_COMMAND(clear) /* {{{ */
return SUCCESS;
} /* }}} */
static PHPDBG_COMMAND(aliases) /* {{{ */
PHPDBG_COMMAND(aliases) /* {{{ */
{
const phpdbg_command_t *prompt_command = phpdbg_prompt_commands;
@ -821,7 +796,7 @@ static PHPDBG_COMMAND(aliases) /* {{{ */
return SUCCESS;
} /* }}} */
static PHPDBG_COMMAND(oplog) /* {{{ */
PHPDBG_COMMAND(oplog) /* {{{ */
{
switch (param->type) {
case EMPTY_PARAM:
@ -860,7 +835,7 @@ static PHPDBG_COMMAND(oplog) /* {{{ */
return SUCCESS;
} /* }}} */
static PHPDBG_COMMAND(help) /* {{{ */
PHPDBG_COMMAND(help) /* {{{ */
{
switch (param->type) {
case EMPTY_PARAM: {
@ -899,6 +874,9 @@ static PHPDBG_COMMAND(help) /* {{{ */
phpdbg_writeln(" -i\t-imy.init\t\tSet .phpdbginit file");
phpdbg_writeln(" -I\tN/A\t\t\tIgnore default .phpdbginit");
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();
} break;
@ -908,7 +886,7 @@ static PHPDBG_COMMAND(help) /* {{{ */
return SUCCESS;
} /* }}} */
static PHPDBG_COMMAND(quiet) /* {{{ */
PHPDBG_COMMAND(quiet) /* {{{ */
{
switch (param->type) {
case NUMERIC_PARAM: {
@ -927,7 +905,7 @@ static PHPDBG_COMMAND(quiet) /* {{{ */
return SUCCESS;
} /* }}} */
static PHPDBG_COMMAND(list) /* {{{ */
PHPDBG_COMMAND(list) /* {{{ */
{
switch (param->type) {
case NUMERIC_PARAM:

View file

@ -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);
#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 */