mirror of
https://github.com/php/php-src.git
synced 2026-03-30 04:02:19 +02:00
buffer input to repeat commands
This commit is contained in:
8
phpdbg.c
8
phpdbg.c
@@ -61,16 +61,15 @@ static inline void php_phpdbg_globals_ctor(zend_phpdbg_globals *pg) /* {{{ */
|
||||
|
||||
pg->exec = NULL;
|
||||
pg->exec_len = 0;
|
||||
pg->buffer = NULL;
|
||||
pg->ops = NULL;
|
||||
pg->vmret = 0;
|
||||
pg->bp_count = 0;
|
||||
pg->lcmd = NULL;
|
||||
pg->flags = PHPDBG_DEFAULT_FLAGS;
|
||||
pg->oplog = NULL;
|
||||
pg->io[PHPDBG_STDIN] = NULL;
|
||||
pg->io[PHPDBG_STDOUT] = NULL;
|
||||
pg->io[PHPDBG_STDERR] = NULL;
|
||||
memset(&pg->lparam, 0, sizeof(phpdbg_param_t));
|
||||
pg->frame.num = 0;
|
||||
} /* }}} */
|
||||
|
||||
@@ -184,6 +183,11 @@ static PHP_RSHUTDOWN_FUNCTION(phpdbg) /* {{{ */
|
||||
zend_hash_destroy(&PHPDBG_G(watchpoints));
|
||||
zend_llist_destroy(&PHPDBG_G(watchlist_mem));
|
||||
|
||||
if (PHPDBG_G(buffer)) {
|
||||
efree(PHPDBG_G(buffer));
|
||||
PHPDBG_G(buffer) = NULL;
|
||||
}
|
||||
|
||||
if (PHPDBG_G(exec)) {
|
||||
efree(PHPDBG_G(exec));
|
||||
PHPDBG_G(exec) = NULL;
|
||||
|
||||
4
phpdbg.h
4
phpdbg.h
@@ -199,9 +199,7 @@ ZEND_BEGIN_MODULE_GLOBALS(phpdbg)
|
||||
|
||||
char *prompt[2]; /* prompt */
|
||||
const phpdbg_color_t *colors[PHPDBG_COLORS]; /* colors */
|
||||
|
||||
phpdbg_command_t *lcmd; /* last command */
|
||||
phpdbg_param_t lparam; /* last param */
|
||||
char *buffer; /* buffer */
|
||||
|
||||
zend_ulong flags; /* phpdbg flags */
|
||||
ZEND_END_MODULE_GLOBALS(phpdbg) /* }}} */
|
||||
|
||||
21
phpdbg_cmd.c
21
phpdbg_cmd.c
@@ -858,6 +858,27 @@ readline:
|
||||
#endif
|
||||
}
|
||||
|
||||
if (buffer && isspace(*buffer)) {
|
||||
char *trimmed = buffer;
|
||||
while (isspace(*trimmed))
|
||||
trimmed++;
|
||||
|
||||
trimmed = estrdup(trimmed);
|
||||
efree(buffer);
|
||||
buffer = trimmed;
|
||||
}
|
||||
|
||||
if (buffer && strlen(buffer)) {
|
||||
if (PHPDBG_G(buffer)) {
|
||||
efree(PHPDBG_G(buffer));
|
||||
}
|
||||
PHPDBG_G(buffer) = estrdup(buffer);
|
||||
} else {
|
||||
if (PHPDBG_G(buffer)) {
|
||||
buffer = estrdup(PHPDBG_G(buffer));
|
||||
}
|
||||
}
|
||||
|
||||
return buffer;
|
||||
} /* }}} */
|
||||
|
||||
|
||||
@@ -1028,13 +1028,13 @@ int phpdbg_interactive(TSRMLS_D) /* {{{ */
|
||||
if (yyparse(&stack, scanner) <= 0) {
|
||||
switch (ret = phpdbg_stack_execute(&stack, &why TSRMLS_CC)) {
|
||||
case FAILURE:
|
||||
// if (!(PHPDBG_G(flags) & PHPDBG_IS_QUITTING)) {
|
||||
if (!(PHPDBG_G(flags) & PHPDBG_IS_QUITTING)) {
|
||||
if (phpdbg_call_register(&stack TSRMLS_CC) == FAILURE) {
|
||||
if (why) {
|
||||
phpdbg_error("%s", why);
|
||||
}
|
||||
}
|
||||
// }
|
||||
}
|
||||
|
||||
if (why) {
|
||||
free(why);
|
||||
@@ -1066,17 +1066,6 @@ int phpdbg_interactive(TSRMLS_D) /* {{{ */
|
||||
phpdbg_destroy_input(&input TSRMLS_CC);
|
||||
|
||||
} while ((input = phpdbg_read_input(NULL TSRMLS_CC)));
|
||||
|
||||
if (!input)
|
||||
goto last;
|
||||
|
||||
} else {
|
||||
last:
|
||||
if (PHPDBG_G(lcmd)) {
|
||||
ret = PHPDBG_G(lcmd)->handler(
|
||||
&PHPDBG_G(lparam) TSRMLS_CC);
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
||||
out:
|
||||
|
||||
Reference in New Issue
Block a user