pg->exec = NULL;
pg->exec_len = 0;
pg->buffer = NULL;
+ pg->last_was_newline = 1;
pg->ops = NULL;
pg->vmret = 0;
pg->bp_count = 0;
# include "TSRM.h"
#endif
-#ifdef HAVE_LIBREADLINE
+#ifdef LIBREADLINE
# include <readline/readline.h>
# include <readline/history.h>
#endif
char *prompt[2]; /* prompt */
const phpdbg_color_t *colors[PHPDBG_COLORS]; /* colors */
char *buffer; /* buffer */
+ zend_bool last_was_newline; /* check if we don't need to output a newline upon next phpdbg_error or phpdbg_notice */
zend_ulong flags; /* phpdbg flags */
ZEND_END_MODULE_GLOBALS(phpdbg) /* }}} */
if (!phpdbg_write("%s", phpdbg_get_prompt(TSRMLS_C))) {
goto disconnect;
}
+ PHPDBG_G(last_was_newline) = 1;
}
/* note: EOF is ignored */
if (fgets(buf, PHPDBG_MAX_CMD, PHPDBG_G(io)[PHPDBG_STDIN])) {
cmd = buf;
} else goto disconnect;
- } else cmd = readline(phpdbg_get_prompt(TSRMLS_C));
+ } else {
+ cmd = readline(phpdbg_get_prompt(TSRMLS_C));
+ PHPDBG_G(last_was_newline) = 1;
+ }
if (!cmd) {
goto readline;
switch (type) {
case P_ERROR:
+ if (!PHPDBG_G(last_was_newline)) {
+ fprintf(fp, "\n");
+ PHPDBG_G(last_was_newline) = 1;
+ }
if (PHPDBG_G(flags) & PHPDBG_IS_COLOURED) {
rc = fprintf(fp,
"\033[%sm[%s]\033[0m\n",
break;
case P_NOTICE:
+ if (!PHPDBG_G(last_was_newline)) {
+ fprintf(fp, "\n");
+ PHPDBG_G(last_was_newline) = 1;
+ }
if (PHPDBG_G(flags) & PHPDBG_IS_COLOURED) {
rc = fprintf(fp,
"\033[%sm[%s]\033[0m\n",
} else {
rc = fprintf(fp, "\n");
}
+ PHPDBG_G(last_was_newline) = 1;
} break;
case P_WRITE:
if (buffer) {
rc = fprintf(fp, "%s", buffer);
+ PHPDBG_G(last_was_newline) = buffer[strlen(buffer) - 1] == '\n';
}
break;