mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
Merge branch 'PHP-7.0' into PHP-7.1
This commit is contained in:
commit
f58cf8b24d
9 changed files with 326 additions and 292 deletions
|
@ -866,7 +866,7 @@ static void php_sapi_phpdbg_log_message(char *message, int syslog_type_int) /* {
|
|||
}
|
||||
|
||||
do {
|
||||
switch (phpdbg_interactive(1)) {
|
||||
switch (phpdbg_interactive(1, NULL)) {
|
||||
case PHPDBG_LEAVE:
|
||||
case PHPDBG_FINISH:
|
||||
case PHPDBG_UNTIL:
|
||||
|
@ -972,7 +972,7 @@ static inline void php_sapi_phpdbg_flush(void *context) /* {{{ */
|
|||
} /* }}} */
|
||||
|
||||
/* copied from sapi/cli/php_cli.c cli_register_file_handles */
|
||||
static void phpdbg_register_file_handles(void) /* {{{ */
|
||||
void phpdbg_register_file_handles(void) /* {{{ */
|
||||
{
|
||||
zval zin, zout, zerr;
|
||||
php_stream *s_in, *s_out, *s_err;
|
||||
|
@ -1004,18 +1004,21 @@ static void phpdbg_register_file_handles(void) /* {{{ */
|
|||
ic.flags = CONST_CS;
|
||||
ic.name = zend_string_init(ZEND_STRL("STDIN"), 0);
|
||||
ic.module_number = 0;
|
||||
zend_hash_del(EG(zend_constants), ic.name);
|
||||
zend_register_constant(&ic);
|
||||
|
||||
oc.value = zout;
|
||||
oc.flags = CONST_CS;
|
||||
oc.name = zend_string_init(ZEND_STRL("STDOUT"), 0);
|
||||
oc.module_number = 0;
|
||||
zend_hash_del(EG(zend_constants), oc.name);
|
||||
zend_register_constant(&oc);
|
||||
|
||||
ec.value = zerr;
|
||||
ec.flags = CONST_CS;
|
||||
ec.name = zend_string_init(ZEND_STRL("STDERR"), 0);
|
||||
ec.module_number = 0;
|
||||
zend_hash_del(EG(zend_constants), ec.name);
|
||||
zend_register_constant(&ec);
|
||||
}
|
||||
/* }}} */
|
||||
|
@ -1344,6 +1347,7 @@ int main(int argc, char **argv) /* {{{ */
|
|||
zend_bool ini_ignore;
|
||||
char *ini_override;
|
||||
char *exec = NULL;
|
||||
char *first_command = NULL;
|
||||
char *init_file;
|
||||
size_t init_file_len;
|
||||
zend_bool init_file_default;
|
||||
|
@ -1813,7 +1817,6 @@ phpdbg_main:
|
|||
/* set default prompt */
|
||||
phpdbg_set_prompt(PHPDBG_DEFAULT_PROMPT);
|
||||
|
||||
/* refactor to preserve run commands on force run command */
|
||||
{
|
||||
php_stream_wrapper *wrapper = zend_hash_str_find_ptr(php_stream_get_url_stream_wrappers_hash(), ZEND_STRL("php"));
|
||||
PHPDBG_G(orig_url_wrap_php) = wrapper->wops->stream_opener;
|
||||
|
@ -1899,7 +1902,11 @@ phpdbg_interact:
|
|||
PHPDBG_G(flags) |= PHPDBG_IS_INTERACTIVE;
|
||||
}
|
||||
zend_try {
|
||||
PHPDBG_COMMAND_HANDLER(run)(NULL);
|
||||
if (first_command) {
|
||||
phpdbg_interactive(1, estrdup(first_command));
|
||||
} else {
|
||||
PHPDBG_COMMAND_HANDLER(run)(NULL);
|
||||
}
|
||||
} zend_end_try();
|
||||
if (quit_immediately) {
|
||||
/* if -r is on the command line more than once just quit */
|
||||
|
@ -1910,7 +1917,7 @@ phpdbg_interact:
|
|||
}
|
||||
|
||||
CG(unclean_shutdown) = 0;
|
||||
phpdbg_interactive(1);
|
||||
phpdbg_interactive(1, NULL);
|
||||
} zend_catch {
|
||||
if ((PHPDBG_G(flags) & PHPDBG_IS_CLEANING)) {
|
||||
char *bp_tmp_str;
|
||||
|
@ -1968,6 +1975,11 @@ phpdbg_out:
|
|||
phpdbg_out:
|
||||
#endif
|
||||
|
||||
if (first_command) {
|
||||
free(first_command);
|
||||
first_command = NULL;
|
||||
}
|
||||
|
||||
if (cleaning <= 0) {
|
||||
PHPDBG_G(flags) &= ~PHPDBG_IS_CLEANING;
|
||||
cleaning = -1;
|
||||
|
@ -2023,6 +2035,7 @@ phpdbg_out:
|
|||
settings->input_buflen = PHPDBG_G(input_buflen);
|
||||
memcpy(settings->input_buffer, PHPDBG_G(input_buffer), settings->input_buflen);
|
||||
settings->flags = PHPDBG_G(flags) & PHPDBG_PRESERVE_FLAGS_MASK;
|
||||
first_command = PHPDBG_G(cur_command);
|
||||
} else {
|
||||
if (PHPDBG_G(prompt)[0]) {
|
||||
free(PHPDBG_G(prompt)[0]);
|
||||
|
@ -2030,6 +2043,9 @@ phpdbg_out:
|
|||
if (PHPDBG_G(prompt)[1]) {
|
||||
free(PHPDBG_G(prompt)[1]);
|
||||
}
|
||||
if (PHPDBG_G(cur_command)) {
|
||||
free(PHPDBG_G(cur_command));
|
||||
}
|
||||
}
|
||||
|
||||
if (exit_status == 0) {
|
||||
|
|
|
@ -235,6 +235,8 @@ int phpdbg_do_parse(phpdbg_param_t *stack, char *input);
|
|||
}
|
||||
|
||||
|
||||
void phpdbg_register_file_handles(void);
|
||||
|
||||
/* {{{ structs */
|
||||
ZEND_BEGIN_MODULE_GLOBALS(phpdbg)
|
||||
HashTable bp[PHPDBG_BREAK_TABLES]; /* break points */
|
||||
|
@ -245,6 +247,7 @@ ZEND_BEGIN_MODULE_GLOBALS(phpdbg)
|
|||
phpdbg_frame_t frame; /* frame */
|
||||
uint32_t last_line; /* last executed line */
|
||||
|
||||
char *cur_command; /* current command */
|
||||
phpdbg_lexer_data lexer; /* lexer data */
|
||||
phpdbg_param_t *parser_stack; /* param stack during lexer / parser phase */
|
||||
|
||||
|
|
|
@ -1659,7 +1659,7 @@ yyc_RAW:
|
|||
232, 236, 0, 232, 232, 236, 232, 232,
|
||||
232, 232, 232, 232, 232, 232, 232, 232,
|
||||
232, 232, 232, 232, 232, 232, 232, 232,
|
||||
236, 232, 32, 224, 232, 232, 232, 64,
|
||||
236, 232, 32, 224, 232, 232, 232, 128,
|
||||
232, 232, 232, 232, 232, 232, 232, 232,
|
||||
232, 232, 232, 232, 232, 232, 232, 232,
|
||||
232, 232, 232, 232, 232, 232, 232, 232,
|
||||
|
@ -1793,23 +1793,27 @@ yy179:
|
|||
YYFILL(1);
|
||||
yych = *YYCURSOR;
|
||||
YYDEBUG(180, *YYCURSOR);
|
||||
if (yybm[0+yych] & 8) {
|
||||
if (yybm[0+yych] & 16) {
|
||||
goto yy179;
|
||||
}
|
||||
if (yych <= '!') {
|
||||
if (yych <= 0x00) goto yy172;
|
||||
if (yych == '\n') goto yy172;
|
||||
goto yy177;
|
||||
} else {
|
||||
if (yych <= '"') goto yy211;
|
||||
if (yych == '\'') goto yy193;
|
||||
goto yy177;
|
||||
}
|
||||
if (yych <= '\n') goto yy172;
|
||||
if (yych <= '"') goto yy190;
|
||||
if (yych <= '#') goto yy172;
|
||||
if (yych <= '\'') goto yy191;
|
||||
goto yy179;
|
||||
yy181:
|
||||
YYDEBUG(181, *YYCURSOR);
|
||||
++YYCURSOR;
|
||||
YYFILL(1);
|
||||
yych = *YYCURSOR;
|
||||
if (yybm[0+yych] & 64) {
|
||||
goto yy187;
|
||||
if (yybm[0+yych] & 128) {
|
||||
goto yy207;
|
||||
}
|
||||
if (yych >= '#') goto yy189;
|
||||
if (yych >= '#') goto yy209;
|
||||
yy182:
|
||||
YYDEBUG(182, *YYCURSOR);
|
||||
YYCURSOR = YYMARKER;
|
||||
|
@ -1840,206 +1844,163 @@ yy186:
|
|||
++YYCURSOR;
|
||||
YYFILL(1);
|
||||
yych = *YYCURSOR;
|
||||
if (yych == '\'') goto yy184;
|
||||
if (yych == '\\') goto yy184;
|
||||
goto yy182;
|
||||
yy187:
|
||||
YYDEBUG(187, *YYCURSOR);
|
||||
++YYCURSOR;
|
||||
YYFILL(1);
|
||||
yych = *YYCURSOR;
|
||||
YYDEBUG(188, *YYCURSOR);
|
||||
if (yybm[0+yych] & 64) {
|
||||
goto yy187;
|
||||
if (yybm[0+yych] & 32) {
|
||||
goto yy184;
|
||||
}
|
||||
if (yych <= '\n') goto yy182;
|
||||
if (yych <= '"') goto yy177;
|
||||
yy189:
|
||||
if (yych >= '(') goto yy186;
|
||||
yy188:
|
||||
YYDEBUG(188, *YYCURSOR);
|
||||
yyaccept = 0;
|
||||
YYMARKER = ++YYCURSOR;
|
||||
YYFILL(1);
|
||||
yych = *YYCURSOR;
|
||||
YYDEBUG(189, *YYCURSOR);
|
||||
++YYCURSOR;
|
||||
YYFILL(1);
|
||||
yych = *YYCURSOR;
|
||||
if (yych == '"') goto yy187;
|
||||
if (yych == '\\') goto yy187;
|
||||
goto yy182;
|
||||
yy190:
|
||||
YYDEBUG(190, *YYCURSOR);
|
||||
yyaccept = 0;
|
||||
YYMARKER = ++YYCURSOR;
|
||||
YYFILL(1);
|
||||
yych = *YYCURSOR;
|
||||
if (yych <= '"') {
|
||||
if (yych <= '\t') {
|
||||
if (yych <= 0x00) goto yy172;
|
||||
goto yy205;
|
||||
goto yy188;
|
||||
} else {
|
||||
if (yych <= '\n') goto yy172;
|
||||
if (yych <= '!') goto yy205;
|
||||
goto yy181;
|
||||
}
|
||||
} else {
|
||||
if (yych <= '\'') {
|
||||
if (yych <= '#') goto yy187;
|
||||
if (yych <= '&') goto yy205;
|
||||
goto yy207;
|
||||
} else {
|
||||
if (yych == '\\') goto yy208;
|
||||
goto yy205;
|
||||
}
|
||||
}
|
||||
yy191:
|
||||
YYDEBUG(191, *YYCURSOR);
|
||||
yyaccept = 0;
|
||||
YYMARKER = ++YYCURSOR;
|
||||
YYFILL(1);
|
||||
yych = *YYCURSOR;
|
||||
if (yych <= '"') {
|
||||
if (yych <= '\t') {
|
||||
if (yych <= 0x00) goto yy172;
|
||||
} else {
|
||||
if (yych <= '\n') goto yy172;
|
||||
if (yych >= '"') goto yy194;
|
||||
if (yych <= '!') goto yy188;
|
||||
goto yy192;
|
||||
}
|
||||
} else {
|
||||
if (yych <= '\'') {
|
||||
if (yych <= '#') goto yy184;
|
||||
if (yych >= '\'') goto yy183;
|
||||
if (yych <= '&') goto yy188;
|
||||
goto yy193;
|
||||
} else {
|
||||
if (yych == '\\') goto yy195;
|
||||
if (yych != '\\') goto yy188;
|
||||
}
|
||||
}
|
||||
yy190:
|
||||
YYDEBUG(190, *YYCURSOR);
|
||||
++YYCURSOR;
|
||||
YYFILL(1);
|
||||
yych = *YYCURSOR;
|
||||
YYDEBUG(191, *YYCURSOR);
|
||||
if (yych <= '!') {
|
||||
if (yych <= 0x00) goto yy172;
|
||||
if (yych == '\n') goto yy172;
|
||||
goto yy188;
|
||||
} else {
|
||||
if (yych <= '"') goto yy203;
|
||||
if (yych == '\\') goto yy190;
|
||||
goto yy188;
|
||||
}
|
||||
yy192:
|
||||
YYDEBUG(192, *YYCURSOR);
|
||||
++YYCURSOR;
|
||||
YYFILL(1);
|
||||
yych = *YYCURSOR;
|
||||
if (yybm[0+yych] & 64) {
|
||||
goto yy196;
|
||||
}
|
||||
if (yych <= '\n') goto yy182;
|
||||
if (yych <= '"') goto yy184;
|
||||
if (yych <= '\'') goto yy194;
|
||||
goto yy198;
|
||||
yy193:
|
||||
YYDEBUG(193, *YYCURSOR);
|
||||
yyaccept = 0;
|
||||
YYMARKER = ++YYCURSOR;
|
||||
YYFILL(1);
|
||||
yych = *YYCURSOR;
|
||||
YYDEBUG(193, *YYCURSOR);
|
||||
if (yych <= '"') {
|
||||
if (yych <= '\t') {
|
||||
if (yych <= 0x00) goto yy172;
|
||||
goto yy192;
|
||||
goto yy188;
|
||||
} else {
|
||||
if (yych <= '\n') goto yy172;
|
||||
if (yych <= '!') goto yy192;
|
||||
if (yych <= '!') goto yy188;
|
||||
goto yy192;
|
||||
}
|
||||
} else {
|
||||
if (yych <= '\'') {
|
||||
if (yych <= '#') goto yy184;
|
||||
if (yych <= '&') goto yy192;
|
||||
goto yy191;
|
||||
if (yych <= '&') goto yy188;
|
||||
goto yy183;
|
||||
} else {
|
||||
if (yych == '\\') goto yy195;
|
||||
goto yy192;
|
||||
if (yych == '\\') goto yy190;
|
||||
goto yy188;
|
||||
}
|
||||
}
|
||||
yy194:
|
||||
YYDEBUG(194, *YYCURSOR);
|
||||
yyaccept = 0;
|
||||
YYMARKER = ++YYCURSOR;
|
||||
YYFILL(1);
|
||||
yych = *YYCURSOR;
|
||||
YYDEBUG(195, *YYCURSOR);
|
||||
if (yych <= '"') {
|
||||
if (yych <= '\t') {
|
||||
if (yych <= 0x00) goto yy172;
|
||||
goto yy194;
|
||||
} else {
|
||||
if (yych <= '\n') goto yy172;
|
||||
if (yych <= '!') goto yy194;
|
||||
goto yy211;
|
||||
}
|
||||
} else {
|
||||
if (yych <= '\'') {
|
||||
if (yych <= '#') goto yy207;
|
||||
if (yych <= '&') goto yy194;
|
||||
goto yy206;
|
||||
} else {
|
||||
if (yych == '\\') goto yy212;
|
||||
goto yy194;
|
||||
}
|
||||
}
|
||||
yy196:
|
||||
YYDEBUG(196, *YYCURSOR);
|
||||
++YYCURSOR;
|
||||
YYFILL(1);
|
||||
yych = *YYCURSOR;
|
||||
if (yybm[0+yych] & 128) {
|
||||
goto yy200;
|
||||
YYDEBUG(197, *YYCURSOR);
|
||||
if (yybm[0+yych] & 64) {
|
||||
goto yy196;
|
||||
}
|
||||
if (yych <= '\n') goto yy182;
|
||||
if (yych <= '"') goto yy184;
|
||||
if (yych <= '\'') goto yy205;
|
||||
goto yy210;
|
||||
yy195:
|
||||
YYDEBUG(195, *YYCURSOR);
|
||||
++YYCURSOR;
|
||||
YYFILL(1);
|
||||
yych = *YYCURSOR;
|
||||
if (yybm[0+yych] & 8) {
|
||||
goto yy177;
|
||||
}
|
||||
if (yych <= '\n') goto yy172;
|
||||
if (yych <= '"') goto yy190;
|
||||
if (yych <= '#') goto yy172;
|
||||
if (yych <= '\'') goto yy192;
|
||||
YYDEBUG(196, *YYCURSOR);
|
||||
yyaccept = 0;
|
||||
YYMARKER = ++YYCURSOR;
|
||||
YYFILL(1);
|
||||
yych = *YYCURSOR;
|
||||
if (yych <= '"') {
|
||||
if (yych <= '\t') {
|
||||
if (yych <= 0x00) goto yy172;
|
||||
goto yy192;
|
||||
} else {
|
||||
if (yych <= '\n') goto yy172;
|
||||
if (yych <= '!') goto yy192;
|
||||
}
|
||||
} else {
|
||||
if (yych <= '\'') {
|
||||
if (yych <= '#') goto yy184;
|
||||
if (yych <= '&') goto yy192;
|
||||
goto yy191;
|
||||
} else {
|
||||
if (yych == '\\') goto yy195;
|
||||
goto yy192;
|
||||
}
|
||||
}
|
||||
yy197:
|
||||
YYDEBUG(197, *YYCURSOR);
|
||||
yyaccept = 0;
|
||||
YYMARKER = ++YYCURSOR;
|
||||
YYFILL(1);
|
||||
yych = *YYCURSOR;
|
||||
if (yych <= '"') {
|
||||
if (yych <= '\t') {
|
||||
if (yych <= 0x00) goto yy172;
|
||||
} else {
|
||||
if (yych <= '\n') goto yy172;
|
||||
if (yych >= '"') goto yy194;
|
||||
}
|
||||
} else {
|
||||
if (yych <= '\'') {
|
||||
if (yych <= '#') goto yy200;
|
||||
if (yych >= '\'') goto yy202;
|
||||
} else {
|
||||
if (yych == '\\') goto yy203;
|
||||
}
|
||||
}
|
||||
if (yych <= '"') goto yy188;
|
||||
if (yych <= '\'') goto yy194;
|
||||
yy198:
|
||||
YYDEBUG(198, *YYCURSOR);
|
||||
yyaccept = 0;
|
||||
YYMARKER = ++YYCURSOR;
|
||||
++YYCURSOR;
|
||||
YYFILL(1);
|
||||
yych = *YYCURSOR;
|
||||
YYDEBUG(199, *YYCURSOR);
|
||||
if (yych <= '"') {
|
||||
if (yych <= '\t') {
|
||||
if (yych <= 0x00) goto yy172;
|
||||
goto yy198;
|
||||
} else {
|
||||
if (yych <= '\n') goto yy172;
|
||||
if (yych <= '!') goto yy198;
|
||||
goto yy197;
|
||||
}
|
||||
} else {
|
||||
if (yych <= '\'') {
|
||||
if (yych <= '#') goto yy200;
|
||||
if (yych <= '&') goto yy198;
|
||||
goto yy202;
|
||||
} else {
|
||||
if (yych == '\\') goto yy203;
|
||||
goto yy198;
|
||||
}
|
||||
if (yybm[0+yych] & 64) {
|
||||
goto yy196;
|
||||
}
|
||||
if (yych <= '\n') goto yy182;
|
||||
if (yych >= '(') goto yy198;
|
||||
yy200:
|
||||
YYDEBUG(200, *YYCURSOR);
|
||||
++YYCURSOR;
|
||||
yyaccept = 0;
|
||||
YYMARKER = ++YYCURSOR;
|
||||
YYFILL(1);
|
||||
yych = *YYCURSOR;
|
||||
YYDEBUG(201, *YYCURSOR);
|
||||
if (yybm[0+yych] & 128) {
|
||||
goto yy200;
|
||||
if (yych <= '"') {
|
||||
if (yych <= '\t') {
|
||||
if (yych <= 0x00) goto yy172;
|
||||
goto yy200;
|
||||
} else {
|
||||
if (yych <= '\n') goto yy172;
|
||||
if (yych <= '!') goto yy200;
|
||||
goto yy203;
|
||||
}
|
||||
} else {
|
||||
if (yych <= '\'') {
|
||||
if (yych <= '#') goto yy196;
|
||||
if (yych <= '&') goto yy200;
|
||||
} else {
|
||||
if (yych == '\\') goto yy204;
|
||||
goto yy200;
|
||||
}
|
||||
}
|
||||
if (yych <= '\n') goto yy182;
|
||||
if (yych <= '"') goto yy192;
|
||||
if (yych <= '\'') goto yy205;
|
||||
goto yy210;
|
||||
yy202:
|
||||
YYDEBUG(202, *YYCURSOR);
|
||||
yyaccept = 0;
|
||||
|
@ -2049,107 +2010,95 @@ yy202:
|
|||
if (yych <= '"') {
|
||||
if (yych <= '\t') {
|
||||
if (yych <= 0x00) goto yy172;
|
||||
goto yy198;
|
||||
goto yy200;
|
||||
} else {
|
||||
if (yych <= '\n') goto yy172;
|
||||
if (yych <= '!') goto yy198;
|
||||
goto yy197;
|
||||
if (yych <= '!') goto yy200;
|
||||
}
|
||||
} else {
|
||||
if (yych <= '\'') {
|
||||
if (yych <= '#') goto yy200;
|
||||
if (yych <= '&') goto yy198;
|
||||
goto yy207;
|
||||
if (yych <= '#') goto yy196;
|
||||
if (yych <= '&') goto yy200;
|
||||
goto yy206;
|
||||
} else {
|
||||
if (yych != '\\') goto yy198;
|
||||
if (yych == '\\') goto yy204;
|
||||
goto yy200;
|
||||
}
|
||||
}
|
||||
yy203:
|
||||
YYDEBUG(203, *YYCURSOR);
|
||||
yyaccept = 0;
|
||||
YYMARKER = ++YYCURSOR;
|
||||
YYFILL(1);
|
||||
yych = *YYCURSOR;
|
||||
if (yych <= '"') {
|
||||
if (yych <= '\t') {
|
||||
if (yych <= 0x00) goto yy172;
|
||||
goto yy200;
|
||||
} else {
|
||||
if (yych <= '\n') goto yy172;
|
||||
if (yych <= '!') goto yy200;
|
||||
goto yy192;
|
||||
}
|
||||
} else {
|
||||
if (yych <= '\'') {
|
||||
if (yych <= '#') goto yy196;
|
||||
if (yych <= '&') goto yy200;
|
||||
goto yy202;
|
||||
} else {
|
||||
if (yych != '\\') goto yy200;
|
||||
}
|
||||
}
|
||||
yy204:
|
||||
YYDEBUG(204, *YYCURSOR);
|
||||
++YYCURSOR;
|
||||
YYFILL(1);
|
||||
yych = *YYCURSOR;
|
||||
if (yybm[0+yych] & 8) {
|
||||
goto yy177;
|
||||
}
|
||||
if (yych <= '\n') goto yy172;
|
||||
if (yych <= '"') goto yy205;
|
||||
if (yych <= '#') goto yy172;
|
||||
if (yych <= '\'') goto yy192;
|
||||
YYDEBUG(204, *YYCURSOR);
|
||||
yyaccept = 0;
|
||||
YYMARKER = ++YYCURSOR;
|
||||
YYFILL(1);
|
||||
yych = *YYCURSOR;
|
||||
if (yych <= '"') {
|
||||
if (yych <= '\t') {
|
||||
if (yych <= 0x00) goto yy172;
|
||||
goto yy198;
|
||||
} else {
|
||||
if (yych <= '\n') goto yy172;
|
||||
if (yych <= '!') goto yy198;
|
||||
goto yy197;
|
||||
}
|
||||
} else {
|
||||
if (yych <= '\'') {
|
||||
if (yych <= '#') goto yy200;
|
||||
if (yych <= '&') goto yy198;
|
||||
goto yy202;
|
||||
} else {
|
||||
if (yych == '\\') goto yy203;
|
||||
goto yy198;
|
||||
}
|
||||
}
|
||||
yy205:
|
||||
YYDEBUG(205, *YYCURSOR);
|
||||
yyaccept = 0;
|
||||
YYMARKER = ++YYCURSOR;
|
||||
if (yych <= '\n') {
|
||||
if (yych <= 0x00) goto yy172;
|
||||
if (yych <= '\t') goto yy200;
|
||||
goto yy172;
|
||||
} else {
|
||||
if (yych == '\\') goto yy204;
|
||||
goto yy200;
|
||||
}
|
||||
yy206:
|
||||
YYDEBUG(206, *YYCURSOR);
|
||||
++YYCURSOR;
|
||||
YYFILL(1);
|
||||
yych = *YYCURSOR;
|
||||
YYDEBUG(206, *YYCURSOR);
|
||||
if (yych <= '"') {
|
||||
if (yych <= '\t') {
|
||||
if (yych <= 0x00) goto yy172;
|
||||
goto yy205;
|
||||
} else {
|
||||
if (yych <= '\n') goto yy172;
|
||||
if (yych <= '!') goto yy205;
|
||||
goto yy190;
|
||||
}
|
||||
} else {
|
||||
if (yych <= '\'') {
|
||||
if (yych <= '#') goto yy187;
|
||||
if (yych <= '&') goto yy205;
|
||||
} else {
|
||||
if (yych == '\\') goto yy208;
|
||||
goto yy205;
|
||||
}
|
||||
if (yybm[0+yych] & 64) {
|
||||
goto yy196;
|
||||
}
|
||||
if (yych <= '\n') goto yy182;
|
||||
if (yych <= '"') goto yy188;
|
||||
if (yych >= '(') goto yy198;
|
||||
yy207:
|
||||
YYDEBUG(207, *YYCURSOR);
|
||||
++YYCURSOR;
|
||||
YYFILL(1);
|
||||
yych = *YYCURSOR;
|
||||
YYDEBUG(208, *YYCURSOR);
|
||||
if (yybm[0+yych] & 128) {
|
||||
goto yy200;
|
||||
goto yy207;
|
||||
}
|
||||
if (yych <= '\n') goto yy182;
|
||||
if (yych <= '"') goto yy192;
|
||||
if (yych <= '\'') goto yy187;
|
||||
goto yy210;
|
||||
yy208:
|
||||
YYDEBUG(208, *YYCURSOR);
|
||||
if (yych <= '"') goto yy177;
|
||||
yy209:
|
||||
YYDEBUG(209, *YYCURSOR);
|
||||
++YYCURSOR;
|
||||
YYFILL(1);
|
||||
yych = *YYCURSOR;
|
||||
if (yybm[0+yych] & 8) {
|
||||
goto yy177;
|
||||
YYDEBUG(210, *YYCURSOR);
|
||||
if (yybm[0+yych] & 128) {
|
||||
goto yy207;
|
||||
}
|
||||
if (yych <= '\n') goto yy172;
|
||||
if (yych <= '"') goto yy205;
|
||||
if (yych <= '#') goto yy172;
|
||||
if (yych <= '\'') goto yy191;
|
||||
YYDEBUG(209, *YYCURSOR);
|
||||
if (yych <= '\n') goto yy182;
|
||||
if (yych <= '"') goto yy194;
|
||||
goto yy209;
|
||||
yy211:
|
||||
YYDEBUG(211, *YYCURSOR);
|
||||
yyaccept = 0;
|
||||
YYMARKER = ++YYCURSOR;
|
||||
YYFILL(1);
|
||||
|
@ -2157,34 +2106,35 @@ yy208:
|
|||
if (yych <= '"') {
|
||||
if (yych <= '\t') {
|
||||
if (yych <= 0x00) goto yy172;
|
||||
goto yy205;
|
||||
goto yy194;
|
||||
} else {
|
||||
if (yych <= '\n') goto yy172;
|
||||
if (yych <= '!') goto yy205;
|
||||
goto yy190;
|
||||
if (yych <= '!') goto yy194;
|
||||
goto yy181;
|
||||
}
|
||||
} else {
|
||||
if (yych <= '\'') {
|
||||
if (yych <= '#') goto yy187;
|
||||
if (yych <= '&') goto yy205;
|
||||
goto yy202;
|
||||
if (yych <= '#') goto yy207;
|
||||
if (yych <= '&') goto yy194;
|
||||
goto yy206;
|
||||
} else {
|
||||
if (yych == '\\') goto yy208;
|
||||
goto yy205;
|
||||
if (yych != '\\') goto yy194;
|
||||
}
|
||||
}
|
||||
yy210:
|
||||
YYDEBUG(210, *YYCURSOR);
|
||||
yy212:
|
||||
YYDEBUG(212, *YYCURSOR);
|
||||
++YYCURSOR;
|
||||
YYFILL(1);
|
||||
yych = *YYCURSOR;
|
||||
YYDEBUG(213, *YYCURSOR);
|
||||
if (yych <= '&') {
|
||||
if (yych == '"') goto yy187;
|
||||
goto yy182;
|
||||
if (yych <= 0x00) goto yy172;
|
||||
if (yych == '\n') goto yy172;
|
||||
goto yy194;
|
||||
} else {
|
||||
if (yych <= '\'') goto yy184;
|
||||
if (yych == '\\') goto yy200;
|
||||
goto yy182;
|
||||
if (yych <= '\'') goto yy202;
|
||||
if (yych == '\\') goto yy212;
|
||||
goto yy194;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -82,7 +82,7 @@ ID [^ \r\n\t:#\000]+
|
|||
GENERIC_ID ([^ \r\n\t:#\000"']|":\\")+|["]([^\n\000"\\]|"\\\\"|"\\"["])+["]|[']([^\n\000'\\]|"\\\\"|"\\"['])+[']
|
||||
ADDR [0][x][a-fA-F0-9]+
|
||||
OPCODE (ZEND_|zend_)([A-Za-z])+
|
||||
INPUT ([^\n\000#"']|"\\"["']|["]([^\n\000"\\]|"\\\\"|"\\"["])+["]|[']([^\n\000'\\]|"\\\\"|"\\"['])+['])+
|
||||
INPUT ("\\"[#"']|["]("\\\\"|"\\"["]|[^\n\000"])+["]|[']("\\"[']|"\\\\"|[^\n\000'])+[']|[^\n\000#"'])+
|
||||
|
||||
<!*> := yyleng = (size_t) YYCURSOR - (size_t) yytext;
|
||||
|
||||
|
|
|
@ -70,7 +70,7 @@
|
|||
|
||||
/* Copy the first part of user declarations. */
|
||||
/* Line 371 of yacc.c */
|
||||
#line 1 "sapi/phpdbg/phpdbg_parser.y"
|
||||
#line 1 "/Users/Bob/php-src-X/sapi/phpdbg/phpdbg_parser.y"
|
||||
|
||||
|
||||
/*
|
||||
|
@ -134,7 +134,7 @@ extern int phpdbg_debug;
|
|||
#endif
|
||||
/* "%code requires" blocks. */
|
||||
/* Line 387 of yacc.c */
|
||||
#line 36 "sapi/phpdbg/phpdbg_parser.y"
|
||||
#line 36 "/Users/Bob/php-src-X/sapi/phpdbg/phpdbg_parser.y"
|
||||
|
||||
#include "phpdbg.h"
|
||||
#ifndef YY_TYPEDEF_YY_SCANNER_T
|
||||
|
@ -1469,49 +1469,49 @@ yyreduce:
|
|||
{
|
||||
case 2:
|
||||
/* Line 1802 of yacc.c */
|
||||
#line 71 "sapi/phpdbg/phpdbg_parser.y"
|
||||
#line 71 "/Users/Bob/php-src-X/sapi/phpdbg/phpdbg_parser.y"
|
||||
{ (yyval) = (yyvsp[(1) - (1)]); }
|
||||
break;
|
||||
|
||||
case 3:
|
||||
/* Line 1802 of yacc.c */
|
||||
#line 72 "sapi/phpdbg/phpdbg_parser.y"
|
||||
#line 72 "/Users/Bob/php-src-X/sapi/phpdbg/phpdbg_parser.y"
|
||||
{ phpdbg_stack_separate((yyvsp[(1) - (3)]).top); (yyval) = (yyvsp[(3) - (3)]); }
|
||||
break;
|
||||
|
||||
case 5:
|
||||
/* Line 1802 of yacc.c */
|
||||
#line 77 "sapi/phpdbg/phpdbg_parser.y"
|
||||
#line 77 "/Users/Bob/php-src-X/sapi/phpdbg/phpdbg_parser.y"
|
||||
{ (yyval).top = PHPDBG_G(parser_stack)->top; }
|
||||
break;
|
||||
|
||||
case 6:
|
||||
/* Line 1802 of yacc.c */
|
||||
#line 78 "sapi/phpdbg/phpdbg_parser.y"
|
||||
#line 78 "/Users/Bob/php-src-X/sapi/phpdbg/phpdbg_parser.y"
|
||||
{ phpdbg_stack_push(PHPDBG_G(parser_stack), &(yyvsp[(1) - (1)])); (yyval).top = PHPDBG_G(parser_stack)->top; }
|
||||
break;
|
||||
|
||||
case 7:
|
||||
/* Line 1802 of yacc.c */
|
||||
#line 82 "sapi/phpdbg/phpdbg_parser.y"
|
||||
#line 82 "/Users/Bob/php-src-X/sapi/phpdbg/phpdbg_parser.y"
|
||||
{ phpdbg_stack_push(PHPDBG_G(parser_stack), &(yyvsp[(1) - (1)])); (yyval).top = PHPDBG_G(parser_stack)->top; }
|
||||
break;
|
||||
|
||||
case 8:
|
||||
/* Line 1802 of yacc.c */
|
||||
#line 83 "sapi/phpdbg/phpdbg_parser.y"
|
||||
#line 83 "/Users/Bob/php-src-X/sapi/phpdbg/phpdbg_parser.y"
|
||||
{ phpdbg_stack_push(PHPDBG_G(parser_stack), &(yyvsp[(2) - (2)])); (yyval).top = PHPDBG_G(parser_stack)->top; }
|
||||
break;
|
||||
|
||||
case 9:
|
||||
/* Line 1802 of yacc.c */
|
||||
#line 84 "sapi/phpdbg/phpdbg_parser.y"
|
||||
#line 84 "/Users/Bob/php-src-X/sapi/phpdbg/phpdbg_parser.y"
|
||||
{ (yyval) = (yyvsp[(1) - (2)]); }
|
||||
break;
|
||||
|
||||
case 10:
|
||||
/* Line 1802 of yacc.c */
|
||||
#line 88 "sapi/phpdbg/phpdbg_parser.y"
|
||||
#line 88 "/Users/Bob/php-src-X/sapi/phpdbg/phpdbg_parser.y"
|
||||
{
|
||||
(yyval).type = FILE_PARAM;
|
||||
(yyval).file.name = (yyvsp[(2) - (3)]).str;
|
||||
|
@ -1521,7 +1521,7 @@ yyreduce:
|
|||
|
||||
case 11:
|
||||
/* Line 1802 of yacc.c */
|
||||
#line 93 "sapi/phpdbg/phpdbg_parser.y"
|
||||
#line 93 "/Users/Bob/php-src-X/sapi/phpdbg/phpdbg_parser.y"
|
||||
{
|
||||
(yyval).type = NUMERIC_FILE_PARAM;
|
||||
(yyval).file.name = (yyvsp[(1) - (4)]).str;
|
||||
|
@ -1531,7 +1531,7 @@ yyreduce:
|
|||
|
||||
case 12:
|
||||
/* Line 1802 of yacc.c */
|
||||
#line 98 "sapi/phpdbg/phpdbg_parser.y"
|
||||
#line 98 "/Users/Bob/php-src-X/sapi/phpdbg/phpdbg_parser.y"
|
||||
{
|
||||
(yyval).type = FILE_PARAM;
|
||||
(yyval).file.name = malloc((yyvsp[(1) - (4)]).len + (yyvsp[(2) - (4)]).len + 1);
|
||||
|
@ -1546,7 +1546,7 @@ yyreduce:
|
|||
|
||||
case 13:
|
||||
/* Line 1802 of yacc.c */
|
||||
#line 108 "sapi/phpdbg/phpdbg_parser.y"
|
||||
#line 108 "/Users/Bob/php-src-X/sapi/phpdbg/phpdbg_parser.y"
|
||||
{
|
||||
(yyval).type = NUMERIC_FILE_PARAM;
|
||||
(yyval).file.name = malloc((yyvsp[(1) - (5)]).len + (yyvsp[(2) - (5)]).len + 1);
|
||||
|
@ -1561,7 +1561,7 @@ yyreduce:
|
|||
|
||||
case 14:
|
||||
/* Line 1802 of yacc.c */
|
||||
#line 118 "sapi/phpdbg/phpdbg_parser.y"
|
||||
#line 118 "/Users/Bob/php-src-X/sapi/phpdbg/phpdbg_parser.y"
|
||||
{
|
||||
(yyval).type = METHOD_PARAM;
|
||||
(yyval).method.class = (yyvsp[(1) - (3)]).str;
|
||||
|
@ -1571,7 +1571,7 @@ yyreduce:
|
|||
|
||||
case 15:
|
||||
/* Line 1802 of yacc.c */
|
||||
#line 123 "sapi/phpdbg/phpdbg_parser.y"
|
||||
#line 123 "/Users/Bob/php-src-X/sapi/phpdbg/phpdbg_parser.y"
|
||||
{
|
||||
(yyval).type = NUMERIC_METHOD_PARAM;
|
||||
(yyval).method.class = (yyvsp[(1) - (5)]).str;
|
||||
|
@ -1582,7 +1582,7 @@ yyreduce:
|
|||
|
||||
case 16:
|
||||
/* Line 1802 of yacc.c */
|
||||
#line 129 "sapi/phpdbg/phpdbg_parser.y"
|
||||
#line 129 "/Users/Bob/php-src-X/sapi/phpdbg/phpdbg_parser.y"
|
||||
{
|
||||
(yyval).type = NUMERIC_FUNCTION_PARAM;
|
||||
(yyval).str = (yyvsp[(1) - (3)]).str;
|
||||
|
@ -1593,7 +1593,7 @@ yyreduce:
|
|||
|
||||
case 17:
|
||||
/* Line 1802 of yacc.c */
|
||||
#line 135 "sapi/phpdbg/phpdbg_parser.y"
|
||||
#line 135 "/Users/Bob/php-src-X/sapi/phpdbg/phpdbg_parser.y"
|
||||
{
|
||||
(yyval).type = COND_PARAM;
|
||||
(yyval).str = (yyvsp[(2) - (2)]).str;
|
||||
|
@ -1603,55 +1603,55 @@ yyreduce:
|
|||
|
||||
case 18:
|
||||
/* Line 1802 of yacc.c */
|
||||
#line 140 "sapi/phpdbg/phpdbg_parser.y"
|
||||
#line 140 "/Users/Bob/php-src-X/sapi/phpdbg/phpdbg_parser.y"
|
||||
{ (yyval) = (yyvsp[(1) - (1)]); }
|
||||
break;
|
||||
|
||||
case 19:
|
||||
/* Line 1802 of yacc.c */
|
||||
#line 141 "sapi/phpdbg/phpdbg_parser.y"
|
||||
#line 141 "/Users/Bob/php-src-X/sapi/phpdbg/phpdbg_parser.y"
|
||||
{ (yyval) = (yyvsp[(1) - (1)]); }
|
||||
break;
|
||||
|
||||
case 20:
|
||||
/* Line 1802 of yacc.c */
|
||||
#line 142 "sapi/phpdbg/phpdbg_parser.y"
|
||||
#line 142 "/Users/Bob/php-src-X/sapi/phpdbg/phpdbg_parser.y"
|
||||
{ (yyval) = (yyvsp[(1) - (1)]); }
|
||||
break;
|
||||
|
||||
case 21:
|
||||
/* Line 1802 of yacc.c */
|
||||
#line 143 "sapi/phpdbg/phpdbg_parser.y"
|
||||
#line 143 "/Users/Bob/php-src-X/sapi/phpdbg/phpdbg_parser.y"
|
||||
{ (yyval) = (yyvsp[(1) - (1)]); }
|
||||
break;
|
||||
|
||||
case 22:
|
||||
/* Line 1802 of yacc.c */
|
||||
#line 144 "sapi/phpdbg/phpdbg_parser.y"
|
||||
#line 144 "/Users/Bob/php-src-X/sapi/phpdbg/phpdbg_parser.y"
|
||||
{ (yyval) = (yyvsp[(1) - (1)]); }
|
||||
break;
|
||||
|
||||
case 23:
|
||||
/* Line 1802 of yacc.c */
|
||||
#line 145 "sapi/phpdbg/phpdbg_parser.y"
|
||||
#line 145 "/Users/Bob/php-src-X/sapi/phpdbg/phpdbg_parser.y"
|
||||
{ (yyval) = (yyvsp[(1) - (1)]); }
|
||||
break;
|
||||
|
||||
case 24:
|
||||
/* Line 1802 of yacc.c */
|
||||
#line 146 "sapi/phpdbg/phpdbg_parser.y"
|
||||
#line 146 "/Users/Bob/php-src-X/sapi/phpdbg/phpdbg_parser.y"
|
||||
{ (yyval) = (yyvsp[(1) - (1)]); }
|
||||
break;
|
||||
|
||||
case 25:
|
||||
/* Line 1802 of yacc.c */
|
||||
#line 150 "sapi/phpdbg/phpdbg_parser.y"
|
||||
#line 150 "/Users/Bob/php-src-X/sapi/phpdbg/phpdbg_parser.y"
|
||||
{ PHPDBG_G(req_id) = (yyvsp[(1) - (1)]).num; }
|
||||
break;
|
||||
|
||||
case 27:
|
||||
/* Line 1802 of yacc.c */
|
||||
#line 155 "sapi/phpdbg/phpdbg_parser.y"
|
||||
#line 155 "/Users/Bob/php-src-X/sapi/phpdbg/phpdbg_parser.y"
|
||||
{
|
||||
(yyval).type = EVAL_PARAM;
|
||||
(yyval).str = (yyvsp[(3) - (3)]).str;
|
||||
|
@ -1661,7 +1661,7 @@ yyreduce:
|
|||
|
||||
case 28:
|
||||
/* Line 1802 of yacc.c */
|
||||
#line 160 "sapi/phpdbg/phpdbg_parser.y"
|
||||
#line 160 "/Users/Bob/php-src-X/sapi/phpdbg/phpdbg_parser.y"
|
||||
{
|
||||
(yyval).type = SHELL_PARAM;
|
||||
(yyval).str = (yyvsp[(3) - (3)]).str;
|
||||
|
@ -1671,7 +1671,7 @@ yyreduce:
|
|||
|
||||
case 29:
|
||||
/* Line 1802 of yacc.c */
|
||||
#line 165 "sapi/phpdbg/phpdbg_parser.y"
|
||||
#line 165 "/Users/Bob/php-src-X/sapi/phpdbg/phpdbg_parser.y"
|
||||
{
|
||||
(yyval).type = RUN_PARAM;
|
||||
(yyval).len = 0;
|
||||
|
@ -1680,7 +1680,7 @@ yyreduce:
|
|||
|
||||
case 30:
|
||||
/* Line 1802 of yacc.c */
|
||||
#line 169 "sapi/phpdbg/phpdbg_parser.y"
|
||||
#line 169 "/Users/Bob/php-src-X/sapi/phpdbg/phpdbg_parser.y"
|
||||
{
|
||||
(yyval).type = RUN_PARAM;
|
||||
(yyval).str = (yyvsp[(3) - (3)]).str;
|
||||
|
@ -1922,7 +1922,7 @@ yyreturn:
|
|||
|
||||
|
||||
/* Line 2050 of yacc.c */
|
||||
#line 176 "sapi/phpdbg/phpdbg_parser.y"
|
||||
#line 176 "/Users/Bob/php-src-X/sapi/phpdbg/phpdbg_parser.y"
|
||||
|
||||
|
||||
static int yyerror(const char *msg) {
|
||||
|
@ -1944,6 +1944,11 @@ int phpdbg_do_parse(phpdbg_param_t *stack, char *input) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
if (PHPDBG_G(cur_command)) {
|
||||
free(PHPDBG_G(cur_command));
|
||||
}
|
||||
PHPDBG_G(cur_command) = strdup(input);
|
||||
|
||||
phpdbg_init_lexer(stack, input);
|
||||
|
||||
return yyparse();
|
||||
|
|
|
@ -194,6 +194,11 @@ int phpdbg_do_parse(phpdbg_param_t *stack, char *input) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
if (PHPDBG_G(cur_command)) {
|
||||
free(PHPDBG_G(cur_command));
|
||||
}
|
||||
PHPDBG_G(cur_command) = strdup(input);
|
||||
|
||||
phpdbg_init_lexer(stack, input);
|
||||
|
||||
return yyparse();
|
||||
|
|
|
@ -384,7 +384,7 @@ void phpdbg_init(char *init_file, size_t init_file_len, zend_bool use_default) /
|
|||
}
|
||||
/* }}} */
|
||||
|
||||
void phpdbg_clean(zend_bool full) /* {{{ */
|
||||
void phpdbg_clean(zend_bool full, zend_bool resubmit) /* {{{ */
|
||||
{
|
||||
/* this is implicitly required */
|
||||
if (PHPDBG_G(ops)) {
|
||||
|
@ -393,6 +393,11 @@ void phpdbg_clean(zend_bool full) /* {{{ */
|
|||
PHPDBG_G(ops) = NULL;
|
||||
}
|
||||
|
||||
if (!resubmit && PHPDBG_G(cur_command)) {
|
||||
free(PHPDBG_G(cur_command));
|
||||
PHPDBG_G(cur_command) = NULL;
|
||||
}
|
||||
|
||||
if (full) {
|
||||
PHPDBG_G(flags) |= PHPDBG_IS_CLEANING;
|
||||
}
|
||||
|
@ -423,7 +428,7 @@ PHPDBG_COMMAND(exec) /* {{{ */
|
|||
|
||||
if (PHPDBG_G(ops)) {
|
||||
phpdbg_notice("exec", "type=\"unsetops\"", "Destroying compiled opcodes");
|
||||
phpdbg_clean(0);
|
||||
phpdbg_clean(0, 0);
|
||||
}
|
||||
|
||||
PHPDBG_G(exec) = res;
|
||||
|
@ -437,7 +442,7 @@ PHPDBG_COMMAND(exec) /* {{{ */
|
|||
phpdbg_notice("exec", "type=\"set\" context=\"%s\"", "Set execution context: %s", PHPDBG_G(exec));
|
||||
|
||||
if (PHPDBG_G(in_execution)) {
|
||||
phpdbg_clean(1);
|
||||
phpdbg_clean(1, 0);
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
|
@ -675,7 +680,7 @@ PHPDBG_COMMAND(run) /* {{{ */
|
|||
if (PHPDBG_G(in_execution)) {
|
||||
if (phpdbg_ask_user_permission("Do you really want to restart execution?") == SUCCESS) {
|
||||
phpdbg_startup_run++;
|
||||
phpdbg_clean(1);
|
||||
phpdbg_clean(1, 1);
|
||||
}
|
||||
return SUCCESS;
|
||||
}
|
||||
|
@ -729,6 +734,7 @@ PHPDBG_COMMAND(run) /* {{{ */
|
|||
goto free_cmd;
|
||||
}
|
||||
efree(buf);
|
||||
phpdbg_register_file_handles();
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -743,7 +749,7 @@ PHPDBG_COMMAND(run) /* {{{ */
|
|||
p++;
|
||||
}
|
||||
while (*p && *p != sep) {
|
||||
if (*p == '\\' && (p[1] == sep || p[1] == '\\')) {
|
||||
if (*p == '\\' && (p[1] == sep || p[1] == '\\' || (p[1] == '#' && sep == ' '))) {
|
||||
p++;
|
||||
}
|
||||
*(q++) = *(p++);
|
||||
|
@ -832,7 +838,7 @@ free_cmd:
|
|||
|
||||
PHPDBG_G(flags) &= ~PHPDBG_IS_RUNNING;
|
||||
|
||||
phpdbg_clean(1);
|
||||
phpdbg_clean(1, 0);
|
||||
} else {
|
||||
phpdbg_error("inactive", "type=\"nocontext\"", "Nothing to execute!");
|
||||
}
|
||||
|
@ -1384,7 +1390,7 @@ PHPDBG_COMMAND(clean) /* {{{ */
|
|||
phpdbg_writeln("clean", "constants=\"%d\"", "Constants %d", zend_hash_num_elements(EG(zend_constants)));
|
||||
phpdbg_writeln("clean", "includes=\"%d\"", "Includes %d", zend_hash_num_elements(&EG(included_files)));
|
||||
|
||||
phpdbg_clean(1);
|
||||
phpdbg_clean(1, 0);
|
||||
|
||||
phpdbg_xml("</cleaninfo>");
|
||||
|
||||
|
@ -1451,10 +1457,9 @@ PHPDBG_COMMAND(watch) /* {{{ */
|
|||
return SUCCESS;
|
||||
} /* }}} */
|
||||
|
||||
int phpdbg_interactive(zend_bool allow_async_unsafe) /* {{{ */
|
||||
int phpdbg_interactive(zend_bool allow_async_unsafe, char *input) /* {{{ */
|
||||
{
|
||||
int ret = SUCCESS;
|
||||
char *input = NULL;
|
||||
phpdbg_param_t stack;
|
||||
|
||||
PHPDBG_G(flags) |= PHPDBG_IS_INTERACTIVE;
|
||||
|
@ -1464,7 +1469,7 @@ int phpdbg_interactive(zend_bool allow_async_unsafe) /* {{{ */
|
|||
zend_bailout();
|
||||
}
|
||||
|
||||
if (!(input = phpdbg_read_input(NULL))) {
|
||||
if (!input && !(input = phpdbg_read_input(NULL))) {
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -1554,7 +1559,7 @@ int phpdbg_interactive(zend_bool allow_async_unsafe) /* {{{ */
|
|||
efree(file); \
|
||||
} \
|
||||
\
|
||||
switch (phpdbg_interactive(allow_async_unsafe)) { \
|
||||
switch (phpdbg_interactive(allow_async_unsafe, NULL)) { \
|
||||
zval zv; \
|
||||
case PHPDBG_LEAVE: \
|
||||
case PHPDBG_FINISH: \
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
void phpdbg_string_init(char *buffer);
|
||||
void phpdbg_init(char *init_file, size_t init_file_len, zend_bool use_default);
|
||||
void phpdbg_try_file_init(char *init_file, size_t init_file_len, zend_bool free_init);
|
||||
int phpdbg_interactive(zend_bool allow_async_unsafe);
|
||||
int phpdbg_interactive(zend_bool allow_async_unsafe, char *input);
|
||||
int phpdbg_compile(void);
|
||||
void phpdbg_force_interruption(void);
|
||||
/* }}} */
|
||||
|
|
50
sapi/phpdbg/tests/run_002.phpt
Normal file
50
sapi/phpdbg/tests/run_002.phpt
Normal file
|
@ -0,0 +1,50 @@
|
|||
--TEST--
|
||||
Stdin and escaped args being passed to run command
|
||||
--CLEAN--
|
||||
<?php
|
||||
@unlink("run_002_tmp.fixture");
|
||||
?>
|
||||
--PHPDBG--
|
||||
ev file_put_contents("run_002_tmp.fixture", "stdin\ndata")
|
||||
b 6
|
||||
r <run_002_tmp.fixture
|
||||
r arg1 '_ \' arg2 "' < run_002_tmp.fixture
|
||||
y
|
||||
c
|
||||
q
|
||||
--EXPECTF--
|
||||
[Successful compilation of %s]
|
||||
prompt> 10
|
||||
prompt> [Breakpoint #0 added at %s:6]
|
||||
prompt> array(1) {
|
||||
[0]=>
|
||||
string(%d) "%s"
|
||||
}
|
||||
string(10) "stdin
|
||||
data"
|
||||
[Breakpoint #0 at %s:6, hits: 1]
|
||||
>00006: echo "ok\n";
|
||||
00007:
|
||||
prompt> Do you really want to restart execution? (type y or n): array(3) {
|
||||
[0]=>
|
||||
string(%d) "%s"
|
||||
[1]=>
|
||||
string(4) "arg1"
|
||||
[2]=>
|
||||
string(10) "_ ' arg2 ""
|
||||
}
|
||||
string(10) "stdin
|
||||
data"
|
||||
[Breakpoint #0 at %s:6, hits: 1]
|
||||
>00006: echo "ok\n";
|
||||
00007:
|
||||
prompt> ok
|
||||
[Script ended normally]
|
||||
prompt>
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
var_dump($argv);
|
||||
var_dump(stream_get_contents(STDIN));
|
||||
|
||||
echo "ok\n";
|
Loading…
Add table
Add a link
Reference in a new issue