@@ -467,32 +467,43 @@ PHPDBG_API phpdbg_input_t *phpdbg_read_input(char *buffered TSRMLS_DC) /* {{{ */
467
467
}
468
468
469
469
if (buffered == NULL ) {
470
- #ifndef HAVE_LIBREADLINE
471
- char buf [PHPDBG_MAX_CMD ];
472
- if ((!(PHPDBG_G (flags ) & PHPDBG_IS_REMOTE ) && !phpdbg_write (phpdbg_get_prompt (TSRMLS_C ))) ||
473
- !fgets (buf , PHPDBG_MAX_CMD , PHPDBG_G (io )[PHPDBG_STDIN ])) {
474
- /* the user has gone away */
475
- phpdbg_error ("Failed to read console!" );
470
+ disconnect :
471
+ if (0 ) {
476
472
PHPDBG_G (flags ) |= (PHPDBG_IS_QUITTING |PHPDBG_IS_DISCONNECTED );
477
473
zend_bailout ();
478
474
return NULL ;
479
475
}
480
476
477
+ #ifndef HAVE_LIBREADLINE
478
+ char buf [PHPDBG_MAX_CMD ];
479
+ if (!(PHPDBG_G (flags ) & PHPDBG_IS_REMOTE )) {
480
+ if (!phpdbg_write (phpdbg_get_prompt (TSRMLS_CC ))) {
481
+ goto disconnect ;
482
+ }
483
+ }
484
+
485
+ /* note: EOF is ignored */
486
+ readline :
487
+ if (!fgets (buf , PHPDBG_MAX_CMD , PHPDBG_G (io )[PHPDBG_STDIN ])) {
488
+ /* the user has gone away */
489
+ if ((PHPDBG_G (flags ) & PHPDBG_IS_REMOTE )) {
490
+ goto disconnect ;
491
+ } else goto readline ;
492
+ }
493
+
481
494
cmd = buf ;
482
495
#else
496
+ /* note: EOF makes readline write prompt again in local console mode */
497
+ readline :
483
498
if ((PHPDBG_G (flags ) & PHPDBG_IS_REMOTE )) {
484
499
char buf [PHPDBG_MAX_CMD ];
485
500
if (fgets (buf , PHPDBG_MAX_CMD , PHPDBG_G (io )[PHPDBG_STDIN ])) {
486
501
cmd = buf ;
487
- } else cmd = NULL ;
502
+ } else goto disconnect ;
488
503
} else cmd = readline (phpdbg_get_prompt (TSRMLS_C ));
489
504
490
505
if (!cmd ) {
491
- /* the user has gone away */
492
- phpdbg_error ("Failed to read console!" );
493
- PHPDBG_G (flags ) |= (PHPDBG_IS_QUITTING |PHPDBG_IS_DISCONNECTED );
494
- zend_bailout ();
495
- return NULL ;
506
+ goto readline ;
496
507
}
497
508
498
509
if (!(PHPDBG_G (flags ) & PHPDBG_IS_REMOTE )) {
0 commit comments