summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2002-12-30 16:25:41 (GMT)
committerGuido van Rossum <guido@python.org>2002-12-30 16:25:41 (GMT)
commitfaf5e4d48f9d8cb78a35e71c560dda8d1d2d7115 (patch)
treea89a21dd868d8025845cb9bd92f984b37f9bf58a
parent1fb22bb24fd395a12a225b2418ea8d22d5b37610 (diff)
downloadcpython-faf5e4d48f9d8cb78a35e71c560dda8d1d2d7115.zip
cpython-faf5e4d48f9d8cb78a35e71c560dda8d1d2d7115.tar.gz
cpython-faf5e4d48f9d8cb78a35e71c560dda8d1d2d7115.tar.bz2
Patch 659834 by Magnus Lie Hetland:
Check for readline 2.2 features. This should make it possible to compile readline.c again with GNU readline versions 2.0 or 2.1; this ability was removed in readline.c rev. 2.49. Apparently the older versions are still in widespread deployment on older Solaris installations. With an older readline, completion behavior is subtly different (a space is always added).
-rw-r--r--Modules/readline.c4
-rwxr-xr-xconfigure56
-rw-r--r--configure.in11
-rw-r--r--pyconfig.h.in3
4 files changed, 71 insertions, 3 deletions
diff --git a/Modules/readline.c b/Modules/readline.c
index 462d52f..a4bfc62 100644
--- a/Modules/readline.c
+++ b/Modules/readline.c
@@ -574,7 +574,9 @@ setup_readline(void)
rl_completer_word_break_characters =
strdup(" \t\n`~!@#$%^&*()-=+[{]}\\|;:'\",<>/?");
/* All nonalphanums except '.' */
+#ifdef HAVE_RL_COMPLETION_APPEND_CHARACTER
rl_completion_append_character ='\0';
+#endif
begidx = PyInt_FromLong(0L);
endidx = PyInt_FromLong(0L);
@@ -626,7 +628,9 @@ call_readline(FILE *sys_stdin, FILE *sys_stdout, char *prompt)
if (sys_stdin != rl_instream || sys_stdout != rl_outstream) {
rl_instream = sys_stdin;
rl_outstream = sys_stdout;
+#ifdef HAVE_RL_COMPLETION_APPEND_CHARACTER
rl_prep_terminal (1);
+#endif
}
p = readline(prompt);
diff --git a/configure b/configure
index 207eddf..5495840 100755
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
#! /bin/sh
-# From configure.in Revision: 1.378 .
+# From configure.in Revision: 1.380 .
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.53 for python 2.3.
#
@@ -908,7 +908,7 @@ esac
# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
# absolute.
ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
-ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
+ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd`
ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
@@ -16228,6 +16228,56 @@ _ACEOF
fi
+# check for readline 2.2
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+#include <readline/readline.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ egrep -v '^ *\+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ have_readline=yes
+else
+ echo "$as_me: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ have_readline=no
+fi
+rm -f conftest.err conftest.$ac_ext
+if test $have_readline = yes
+then
+ cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+#include <readline/readline.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ egrep "extern int rl_completion_append_character;" >/dev/null 2>&1; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_RL_COMPLETION_APPEND_CHARACTER 1
+_ACEOF
+
+fi
+rm -f conftest*
+
+fi
+
# check for readline 4.0
echo "$as_me:$LINENO: checking for rl_pre_input_hook in -lreadline" >&5
echo $ECHO_N "checking for rl_pre_input_hook in -lreadline... $ECHO_C" >&6
@@ -17418,7 +17468,7 @@ esac
# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
# absolute.
ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
-ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
+ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd`
ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
diff --git a/configure.in b/configure.in
index b4bbdb6..4869dd1 100644
--- a/configure.in
+++ b/configure.in
@@ -2381,6 +2381,17 @@ then
[Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
fi
+# check for readline 2.2
+AC_TRY_CPP([#include <readline/readline.h>],
+have_readline=yes, have_readline=no)
+if test $have_readline = yes
+then
+ AC_EGREP_HEADER([extern int rl_completion_append_character;],
+ [readline/readline.h],
+ AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
+ [Define if you have readline 2.2]), )
+fi
+
# check for readline 4.0
AC_CHECK_LIB(readline, rl_pre_input_hook,
AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
diff --git a/pyconfig.h.in b/pyconfig.h.in
index dd52efb..922147e 100644
--- a/pyconfig.h.in
+++ b/pyconfig.h.in
@@ -333,6 +333,9 @@
/* Define to 1 if you have the `readlink' function. */
#undef HAVE_READLINK
+/* Define if you have readline 2.2 */
+#undef HAVE_RL_COMPLETION_APPEND_CHARACTER
+
/* Define if you have readline 4.2 */
#undef HAVE_RL_COMPLETION_MATCHES