diff options
| author | Johannes Schlüter <johannes@php.net> | 2014-01-18 13:52:27 +0100 | 
|---|---|---|
| committer | Johannes Schlüter <johannes@php.net> | 2014-01-18 13:52:27 +0100 | 
| commit | 8ff4d61f0864fbca7b2905f14de76fd400d9b3df (patch) | |
| tree | 0b7513b2b81fe50e76522365d55297a53955fe72 /sapi/phpdbg/phpdbg_cmd.c | |
| parent | 43a8f4f81439455d22471822bfa5f61708a2dc17 (diff) | |
| parent | c205a6f3de9d8923c2be6e16b1edc332981313a3 (diff) | |
| download | php-git-8ff4d61f0864fbca7b2905f14de76fd400d9b3df.tar.gz | |
Merge branch 'phpdbg' into PHP-5.6
Diffstat (limited to 'sapi/phpdbg/phpdbg_cmd.c')
| -rw-r--r-- | sapi/phpdbg/phpdbg_cmd.c | 35 | 
1 files changed, 23 insertions, 12 deletions
| diff --git a/sapi/phpdbg/phpdbg_cmd.c b/sapi/phpdbg/phpdbg_cmd.c index 36a9d26dc2..29424d00fe 100644 --- a/sapi/phpdbg/phpdbg_cmd.c +++ b/sapi/phpdbg/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_C))) { +					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)) { | 
