Browse Source

Fix https://github.com/krakjoe/phpdbg/issues/91

Enable edit feature when build with libedit.

Notice: coloured prompt only enable with READLINE
pull/705/head
Remi Collet 12 years ago
parent
commit
0febafcfbe
  1. 2
      sapi/phpdbg/config.m4
  2. 2
      sapi/phpdbg/phpdbg.h
  3. 6
      sapi/phpdbg/phpdbg_cmd.c
  4. 5
      sapi/phpdbg/phpdbg_prompt.c
  5. 6
      sapi/phpdbg/phpdbg_utils.c

2
sapi/phpdbg/config.m4

@ -21,7 +21,7 @@ if test "$PHP_PHPDBG" != "no"; then
PHP_PHPDBG_CFLAGS="-D_GNU_SOURCE" PHP_PHPDBG_CFLAGS="-D_GNU_SOURCE"
PHP_PHPDBG_FILES="phpdbg.c phpdbg_parser.c phpdbg_lexer.c phpdbg_prompt.c phpdbg_help.c phpdbg_break.c phpdbg_print.c phpdbg_bp.c phpdbg_opcode.c phpdbg_list.c phpdbg_utils.c phpdbg_info.c phpdbg_cmd.c phpdbg_set.c phpdbg_frame.c phpdbg_watch.c phpdbg_btree.c" PHP_PHPDBG_FILES="phpdbg.c phpdbg_parser.c phpdbg_lexer.c phpdbg_prompt.c phpdbg_help.c phpdbg_break.c phpdbg_print.c phpdbg_bp.c phpdbg_opcode.c phpdbg_list.c phpdbg_utils.c phpdbg_info.c phpdbg_cmd.c phpdbg_set.c phpdbg_frame.c phpdbg_watch.c phpdbg_btree.c"
if test "$PHP_READLINE" != "no"; then
if test "$PHP_READLINE" != "no" -o "$PHP_LIBEDIT" != "no"; then
PHPDBG_EXTRA_LIBS="$PHP_READLINE_LIBS" PHPDBG_EXTRA_LIBS="$PHP_READLINE_LIBS"
fi fi

2
sapi/phpdbg/phpdbg.h

@ -64,7 +64,7 @@
# include "TSRM.h" # include "TSRM.h"
#endif #endif
#ifdef HAVE_LIBREADLINE
#if defined(HAVE_LIBREADLINE) || defined(HAVE_LIBEDIT)
# include <readline/readline.h> # include <readline/readline.h>
# include <readline/history.h> # include <readline/history.h>
#endif #endif

6
sapi/phpdbg/phpdbg_cmd.c

@ -792,7 +792,7 @@ PHPDBG_API int phpdbg_stack_execute(phpdbg_param_t *stack, char **why TSRMLS_DC)
PHPDBG_API char* phpdbg_read_input(char *buffered TSRMLS_DC) /* {{{ */ PHPDBG_API char* phpdbg_read_input(char *buffered TSRMLS_DC) /* {{{ */
{ {
char *cmd = NULL; char *cmd = NULL;
#ifndef HAVE_LIBREADLINE
#if !defined(HAVE_LIBREADLINE) && !defined(HAVE_LIBEDIT)
char buf[PHPDBG_MAX_CMD]; char buf[PHPDBG_MAX_CMD];
#endif #endif
char *buffer = NULL; char *buffer = NULL;
@ -811,7 +811,7 @@ disconnect:
return NULL; return NULL;
} }
#ifndef HAVE_LIBREADLINE
#if !defined(HAVE_LIBREADLINE) && !defined(HAVE_LIBEDIT)
if (!(PHPDBG_G(flags) & PHPDBG_IS_REMOTE)) { if (!(PHPDBG_G(flags) & PHPDBG_IS_REMOTE)) {
if (!phpdbg_write("%s", phpdbg_get_prompt(TSRMLS_C))) { if (!phpdbg_write("%s", phpdbg_get_prompt(TSRMLS_C))) {
goto disconnect; goto disconnect;
@ -850,7 +850,7 @@ readline:
buffer = estrdup(cmd); buffer = estrdup(cmd);
#ifdef HAVE_LIBREADLINE
#if defined(HAVE_LIBREADLINE) || defined(HAVE_LIBEDIT)
if (!buffered && cmd && if (!buffered && cmd &&
!(PHPDBG_G(flags) & PHPDBG_IS_REMOTE)) { !(PHPDBG_G(flags) & PHPDBG_IS_REMOTE)) {
free(cmd); free(cmd);

5
sapi/phpdbg/phpdbg_prompt.c

@ -732,6 +732,11 @@ PHPDBG_COMMAND(print) /* {{{ */
#else #else
phpdbg_writeln("Readline\tno"); phpdbg_writeln("Readline\tno");
#endif #endif
#ifdef HAVE_LIBEDIT
phpdbg_writeln("Libedit\t\tyes");
#else
phpdbg_writeln("Libedit\t\tno");
#endif
phpdbg_writeln("Exec\t\t%s", PHPDBG_G(exec) ? PHPDBG_G(exec) : "none"); phpdbg_writeln("Exec\t\t%s", PHPDBG_G(exec) ? PHPDBG_G(exec) : "none");
phpdbg_writeln("Compiled\t%s", PHPDBG_G(ops) ? "yes" : "no"); phpdbg_writeln("Compiled\t%s", PHPDBG_G(ops) ? "yes" : "no");

6
sapi/phpdbg/phpdbg_utils.c

@ -400,12 +400,16 @@ PHPDBG_API const char *phpdbg_get_prompt(TSRMLS_D) /* {{{ */
} }
/* create cached prompt */ /* create cached prompt */
#ifdef HAVE_LIBREADLINE
/* TODO: libedit doesn't seems to support coloured prompt */
if ((PHPDBG_G(flags) & PHPDBG_IS_COLOURED)) { if ((PHPDBG_G(flags) & PHPDBG_IS_COLOURED)) {
asprintf( asprintf(
&PHPDBG_G(prompt)[1], "\033[%sm%s\033[0m ", &PHPDBG_G(prompt)[1], "\033[%sm%s\033[0m ",
PHPDBG_G(colors)[PHPDBG_COLOR_PROMPT]->code, PHPDBG_G(colors)[PHPDBG_COLOR_PROMPT]->code,
PHPDBG_G(prompt)[0]); PHPDBG_G(prompt)[0]);
} else {
} else
#endif
{
asprintf( asprintf(
&PHPDBG_G(prompt)[1], "%s ", &PHPDBG_G(prompt)[1], "%s ",
PHPDBG_G(prompt)[0]); PHPDBG_G(prompt)[0]);

Loading…
Cancel
Save