summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/configure.in7
-rw-r--r--source3/lib/readline.c4
2 files changed, 10 insertions, 1 deletions
diff --git a/source3/configure.in b/source3/configure.in
index 9bc71058fc..314582c449 100644
--- a/source3/configure.in
+++ b/source3/configure.in
@@ -1183,6 +1183,13 @@ AC_CHECK_LIB(readline, rl_completion_matches,
[],
[$TERMLIBS])
+# not all readline libs have rl_event_hook or history_list
+AC_CHECK_DECLS(rl_event_hook, [], [], [#include <readline/readline.h>])
+AC_CHECK_LIB(readline, history_list,
+ [AC_DEFINE(HAVE_HISTORY_LIST, 1, [Do we have history_list?])],
+ [],
+ [$TERMLIBS])
+
# The following test taken from the cvs sources
# If we can't find connect, try looking in -lsocket, -lnsl, and -linet.
# The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has
diff --git a/source3/lib/readline.c b/source3/lib/readline.c
index 1f599dc0a7..24d16ea34f 100644
--- a/source3/lib/readline.c
+++ b/source3/lib/readline.c
@@ -113,8 +113,10 @@ char *smb_readline(const char *prompt, void (*callback)(void),
rl_attempted_completion_function = RL_COMPLETION_CAST completion_fn;
}
+#if HAVE_DECL_RL_EVENT_HOOK
if (callback)
rl_event_hook = (Function *)callback;
+#endif
ret = readline(prompt);
if (ret && *ret)
add_history(ret);
@@ -154,7 +156,7 @@ history
****************************************************************************/
int cmd_history(void)
{
-#if defined(HAVE_LIBREADLINE)
+#if defined(HAVE_LIBREADLINE) && defined(HAVE_HISTORY_LIST)
HIST_ENTRY **hlist;
int i;