. Fixed bug #76801 (too many open files). (alekitto)
. Fixed bug #77800 (phpdbg segfaults on listing some conditional breakpoints).
(krakjoe)
+ . Fixed bug #77805 (phpdbg build fails when readline is shared). (krakjoe)
- Reflection:
. Fixed bug #77772 (ReflectionClass::getMethods(null) doesn't work). (Nikita)
PHP_ARG_ENABLE(phpdbg-debug, for phpdbg debug build,
[ --enable-phpdbg-debug Build phpdbg in debug mode], no, no)
+PHP_ARG_ENABLE(phpdbg-readline, for phpdbg readline support,
+[ --enable-phpdbg-readline Enable readline support in phpdbg (depends on static ext/readline)], yes, yes)
+
if test "$BUILD_PHPDBG" = "" && test "$PHP_PHPDBG" != "no"; then
AC_HEADER_TIOCGWINSZ
AC_DEFINE(HAVE_PHPDBG, 1, [ ])
PHP_PHPDBG_CFLAGS="-D_GNU_SOURCE -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1"
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 phpdbg_sigsafe.c phpdbg_wait.c phpdbg_io.c phpdbg_eol.c phpdbg_out.c"
- if test "$PHP_READLINE" != "no" -o "$PHP_LIBEDIT" != "no"; then
- PHPDBG_EXTRA_LIBS="$PHP_READLINE_LIBS"
+ AC_MSG_CHECKING([for phpdbg and readline integration])
+ if test "$PHP_PHPDBG_READLINE" = "yes"; then
+ if test "$PHP_READLINE" != "no" -o "$PHP_LIBEDIT" != "no"; then
+ AC_DEFINE(HAVE_PHPDBG_READLINE, 1, [ ])
+ PHPDBG_EXTRA_LIBS="$PHP_READLINE_LIBS"
+ AC_MSG_RESULT([ok])
+ else
+ AC_MSG_RESULT([readline is not available])
+ fi
+ else
+ AC_MSG_RESULT([disabled])
fi
PHP_SUBST(PHP_PHPDBG_CFLAGS)
#define zend_hash_str_add(...) zend_hash_str_add_tmp(__VA_ARGS__)
#endif
-#ifdef HAVE_LIBREADLINE
-# include <readline/readline.h>
-# include <readline/history.h>
-#endif
-#ifdef HAVE_LIBEDIT
-# include <editline/readline.h>
+#ifdef HAVE_PHPDBG_READLINE
+# ifdef HAVE_LIBREADLINE
+# include <readline/readline.h>
+# include <readline/history.h>
+# endif
+# ifdef HAVE_LIBEDIT
+# include <editline/readline.h>
+# endif
#endif
/* {{{ remote console headers */
}
if (buffered == NULL) {
-#define USE_LIB_STAR (defined(HAVE_LIBREADLINE) || defined(HAVE_LIBEDIT))
+#ifdef HAVE_PHPDBG_READLINE
/* note: EOF makes readline write prompt again in local console mode - and ignored if compiled without readline */
-#if USE_LIB_STAR
if ((PHPDBG_G(flags) & PHPDBG_IS_REMOTE) || !isatty(PHPDBG_G(io)[PHPDBG_STDIN].fd))
#endif
{
phpdbg_write("prompt", "", "%s", phpdbg_get_prompt());
phpdbg_consume_stdin_line(cmd = buf);
}
-#if USE_LIB_STAR
+#ifdef HAVE_PHPDBG_READLINE
else {
cmd = readline(phpdbg_get_prompt());
PHPDBG_G(last_was_newline) = 1;
buffer = estrdup(cmd);
-#if USE_LIB_STAR
+#ifdef HAVE_PHPDBG_READLINE
if (!buffered && cmd && !(PHPDBG_G(flags) & PHPDBG_IS_REMOTE) && isatty(PHPDBG_G(io)[PHPDBG_STDIN].fd)) {
free(cmd);
}
{
phpdbg_out("Execution Context Information\n\n");
phpdbg_xml("<printinfo %r>");
-#ifdef HAVE_LIBREADLINE
- phpdbg_writeln("info", "readline=\"yes\"", "Readline yes");
+#ifdef HAVE_PHPDBG_READLINE
+# ifdef HAVE_LIBREADLINE
+ phpdbg_writeln("info", "readline=\"yes\"", "Readline yes");
+# else
+ phpdbg_writeln("info", "readline=\"no\"", "Readline no");
+# endif
+# ifdef HAVE_LIBEDIT
+ phpdbg_writeln("info", "libedit=\"yes\"", "Libedit yes");
+# else
+ phpdbg_writeln("info", "libedit=\"no\"", "Libedit no");
+# endif
#else
- phpdbg_writeln("info", "readline=\"no\"", "Readline no");
-#endif
-#ifdef HAVE_LIBEDIT
- phpdbg_writeln("info", "libedit=\"yes\"", "Libedit yes");
-#else
- phpdbg_writeln("info", "libedit=\"no\"", "Libedit no");
+ phpdbg_writeln("info", "readline=\"unavailable\"", "Readline unavailable");
#endif
phpdbg_writeln("info", "context=\"%s\"", "Exec %s", PHPDBG_G(exec) ? PHPDBG_G(exec) : "none");