mirror of
https://github.com/php/php-src.git
synced 2026-03-30 20:22:36 +02:00
fix #46 ignore EOF
This commit is contained in:
10
phpdbg.c
10
phpdbg.c
@@ -1257,10 +1257,8 @@ phpdbg_interact:
|
||||
/* this must be forced */
|
||||
CG(unclean_shutdown) = 0;
|
||||
} else {
|
||||
/* local client quit console */
|
||||
CG(unclean_shutdown) = 0;
|
||||
|
||||
goto phpdbg_out;
|
||||
/* local consoles cannot disconnect, ignore EOF */
|
||||
PHPDBG_G(flags) &= ~PHPDBG_IS_DISCONNECTED;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -1275,7 +1273,7 @@ phpdbg_interact:
|
||||
|
||||
phpdbg_out:
|
||||
#ifndef _WIN32
|
||||
if (PHPDBG_G(flags) & PHPDBG_IS_DISCONNECTED) {
|
||||
if ((PHPDBG_G(flags) & PHPDBG_IS_DISCONNECTED)) {
|
||||
PHPDBG_G(flags) &= ~PHPDBG_IS_DISCONNECTED;
|
||||
goto phpdbg_interact;
|
||||
}
|
||||
@@ -1324,7 +1322,7 @@ phpdbg_out:
|
||||
if (cleaning || remote) {
|
||||
goto phpdbg_main;
|
||||
}
|
||||
|
||||
|
||||
#ifdef ZTS
|
||||
/* bugggy */
|
||||
/* tsrm_shutdown(); */
|
||||
|
||||
35
phpdbg_cmd.c
35
phpdbg_cmd.c
@@ -467,32 +467,43 @@ PHPDBG_API phpdbg_input_t *phpdbg_read_input(char *buffered TSRMLS_DC) /* {{{ */
|
||||
}
|
||||
|
||||
if (buffered == NULL) {
|
||||
#ifndef HAVE_LIBREADLINE
|
||||
char buf[PHPDBG_MAX_CMD];
|
||||
if ((!(PHPDBG_G(flags) & PHPDBG_IS_REMOTE) && !phpdbg_write(phpdbg_get_prompt(TSRMLS_C))) ||
|
||||
!fgets(buf, PHPDBG_MAX_CMD, PHPDBG_G(io)[PHPDBG_STDIN])) {
|
||||
/* the user has gone away */
|
||||
phpdbg_error("Failed to read console!");
|
||||
disconnect:
|
||||
if (0) {
|
||||
PHPDBG_G(flags) |= (PHPDBG_IS_QUITTING|PHPDBG_IS_DISCONNECTED);
|
||||
zend_bailout();
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#ifndef HAVE_LIBREADLINE
|
||||
char buf[PHPDBG_MAX_CMD];
|
||||
if (!(PHPDBG_G(flags) & PHPDBG_IS_REMOTE)) {
|
||||
if (!phpdbg_write(phpdbg_get_prompt(TSRMLS_CC))) {
|
||||
goto disconnect;
|
||||
}
|
||||
}
|
||||
|
||||
/* note: EOF is ignored */
|
||||
readline:
|
||||
if (!fgets(buf, PHPDBG_MAX_CMD, PHPDBG_G(io)[PHPDBG_STDIN])) {
|
||||
/* the user has gone away */
|
||||
if ((PHPDBG_G(flags) & PHPDBG_IS_REMOTE)) {
|
||||
goto disconnect;
|
||||
} else goto readline;
|
||||
}
|
||||
|
||||
cmd = buf;
|
||||
#else
|
||||
/* note: EOF makes readline write prompt again in local console mode */
|
||||
readline:
|
||||
if ((PHPDBG_G(flags) & PHPDBG_IS_REMOTE)) {
|
||||
char buf[PHPDBG_MAX_CMD];
|
||||
if (fgets(buf, PHPDBG_MAX_CMD, PHPDBG_G(io)[PHPDBG_STDIN])) {
|
||||
cmd = buf;
|
||||
} else cmd = NULL;
|
||||
} else goto disconnect;
|
||||
} else cmd = readline(phpdbg_get_prompt(TSRMLS_C));
|
||||
|
||||
if (!cmd) {
|
||||
/* the user has gone away */
|
||||
phpdbg_error("Failed to read console!");
|
||||
PHPDBG_G(flags) |= (PHPDBG_IS_QUITTING|PHPDBG_IS_DISCONNECTED);
|
||||
zend_bailout();
|
||||
return NULL;
|
||||
goto readline;
|
||||
}
|
||||
|
||||
if (!(PHPDBG_G(flags) & PHPDBG_IS_REMOTE)) {
|
||||
|
||||
Reference in New Issue
Block a user