From c40ba0efc45d83cdcd008206bfe3515ebfa358bf Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Mon, 23 Jun 2014 10:43:03 +0200 Subject: PHP 5.6: fix phpdbg with libedit https://bugs.php.net/67499 --- php-phpdbg.patch | 120 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 php-phpdbg.patch (limited to 'php-phpdbg.patch') diff --git a/php-phpdbg.patch b/php-phpdbg.patch new file mode 100644 index 0000000..5d791ac --- /dev/null +++ b/php-phpdbg.patch @@ -0,0 +1,120 @@ +diff -up sapi/phpdbg/config.m4.old sapi/phpdbg/config.m4 +--- sapi/phpdbg/config.m4.old 2014-06-23 09:42:29.381980030 +0200 ++++ sapi/phpdbg/config.m4 2014-06-23 09:20:13.948592684 +0200 +@@ -21,7 +21,7 @@ if test "$PHP_PHPDBG" != "no"; then + 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" + +- if test "$PHP_READLINE" != "no"; then ++ if test "$PHP_READLINE" != "no" -o "$PHP_LIBEDIT" != "no"; then + PHPDBG_EXTRA_LIBS="$PHP_READLINE_LIBS" + fi + +diff -up sapi/phpdbg/phpdbg_cmd.c.old sapi/phpdbg/phpdbg_cmd.c +--- sapi/phpdbg/phpdbg_cmd.c.old 2014-06-23 09:43:13.910158686 +0200 ++++ sapi/phpdbg/phpdbg_cmd.c 2014-06-23 09:35:30.571299456 +0200 +@@ -792,7 +792,7 @@ PHPDBG_API int phpdbg_stack_execute(phpd + PHPDBG_API char* phpdbg_read_input(char *buffered TSRMLS_DC) /* {{{ */ + { + char *cmd = NULL; +-#ifndef HAVE_LIBREADLINE ++#if !defined(HAVE_LIBREADLINE) && !defined(HAVE_LIBEDIT) + char buf[PHPDBG_MAX_CMD]; + #endif + char *buffer = NULL; +@@ -811,7 +811,7 @@ disconnect: + return NULL; + } + +-#ifndef HAVE_LIBREADLINE ++#if !defined(HAVE_LIBREADLINE) && !defined(HAVE_LIBEDIT) + if (!(PHPDBG_G(flags) & PHPDBG_IS_REMOTE)) { + if (!phpdbg_write("%s", phpdbg_get_prompt(TSRMLS_C))) { + goto disconnect; +@@ -850,7 +850,7 @@ readline: + + buffer = estrdup(cmd); + +-#ifdef HAVE_LIBREADLINE ++#if defined(HAVE_LIBREADLINE) || defined(HAVE_LIBEDIT) + if (!buffered && cmd && + !(PHPDBG_G(flags) & PHPDBG_IS_REMOTE)) { + free(cmd); +diff -up sapi/phpdbg/phpdbg.h.old sapi/phpdbg/phpdbg.h +--- sapi/phpdbg/phpdbg.h.old 2014-06-23 09:42:47.364052178 +0200 ++++ sapi/phpdbg/phpdbg.h 2014-06-23 09:22:20.941107800 +0200 +@@ -64,7 +64,7 @@ + # include "TSRM.h" + #endif + +-#ifdef HAVE_LIBREADLINE ++#if defined(HAVE_LIBREADLINE) || defined(HAVE_LIBEDIT) + # include + # include + #endif +diff -up sapi/phpdbg/phpdbg_prompt.c.old sapi/phpdbg/phpdbg_prompt.c +--- sapi/phpdbg/phpdbg_prompt.c.old 2014-06-23 09:43:04.216119792 +0200 ++++ sapi/phpdbg/phpdbg_prompt.c 2014-06-23 09:32:02.850463053 +0200 +@@ -732,6 +732,11 @@ PHPDBG_COMMAND(print) /* {{{ */ + #else + phpdbg_writeln("Readline\tno"); + #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("Compiled\t%s", PHPDBG_G(ops) ? "yes" : "no"); +diff -up sapi/phpdbg/phpdbg_utils.c.old sapi/phpdbg/phpdbg_utils.c +--- sapi/phpdbg/phpdbg_utils.c.old 2014-06-23 09:43:20.690185888 +0200 ++++ sapi/phpdbg/phpdbg_utils.c 2014-06-23 09:58:37.075896488 +0200 +@@ -400,12 +400,16 @@ PHPDBG_API const char *phpdbg_get_prompt + } + + /* create cached prompt */ ++#ifdef HAVE_LIBREADLINE ++ /* TODO: libedit doesn't seems to support coloured prompt */ + if ((PHPDBG_G(flags) & PHPDBG_IS_COLOURED)) { + asprintf( + &PHPDBG_G(prompt)[1], "\033[%sm%s\033[0m ", + PHPDBG_G(colors)[PHPDBG_COLOR_PROMPT]->code, + PHPDBG_G(prompt)[0]); +- } else { ++ } else ++#endif ++ { + asprintf( + &PHPDBG_G(prompt)[1], "%s ", + PHPDBG_G(prompt)[0]); +diff -up sapi/phpdbg/phpdbg.h.orig sapi/phpdbg/phpdbg.h +--- sapi/phpdbg/phpdbg.h.orig 2014-06-23 10:10:19.674754095 +0200 ++++ sapi/phpdbg/phpdbg.h 2014-06-23 10:13:14.041460315 +0200 +@@ -64,10 +64,13 @@ + # include "TSRM.h" + #endif + +-#if defined(HAVE_LIBREADLINE) || defined(HAVE_LIBEDIT) ++#ifdef LIBREADLINE + # include + # include + #endif ++#ifdef HAVE_LIBEDIT ++# include ++#endif + + #include "phpdbg_lexer.h" + #include "phpdbg_cmd.h" +diff -up sapi/phpdbg/phpdbg_utils.c.orig sapi/phpdbg/phpdbg_utils.c +--- sapi/phpdbg/phpdbg_utils.c.orig 2014-06-23 10:10:13.224727967 +0200 ++++ sapi/phpdbg/phpdbg_utils.c 2014-06-23 10:12:41.309327759 +0200 +@@ -400,7 +400,7 @@ PHPDBG_API const char *phpdbg_get_prompt + } + + /* create cached prompt */ +-#ifdef HAVE_LIBREADLINE ++#ifndef HAVE_LIBEDIT + /* TODO: libedit doesn't seems to support coloured prompt */ + if ((PHPDBG_G(flags) & PHPDBG_IS_COLOURED)) { + asprintf( -- cgit