[libvirt] [PATCH] tools: Work around ancient readline

Michal Privoznik mprivozn at redhat.com
Thu Nov 23 17:38:39 UTC 2017


My latest commit of a785186446de785d uncovered a problem we fixed
in 9eb23fe2 but then reverted in 834c5720e443. Turns out, some
systems (I'm looking at you OS X) have ancient readline with
broken header file.

Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
---

Pushed as build breaker.

 tools/vsh.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/tools/vsh.c b/tools/vsh.c
index 472438ead..e878119b9 100644
--- a/tools/vsh.c
+++ b/tools/vsh.c
@@ -2892,6 +2892,7 @@ vshReadlineInit(vshControl *ctl)
     int ret = -1;
     char *histsize_env = NULL;
     const char *histsize_str = NULL;
+    const char *break_characters = " \t\n\\`@$><=;|&{(";
 
     /* Opaque data for autocomplete callbacks. */
     autoCompleteOpaque = ctl;
@@ -2900,12 +2901,20 @@ vshReadlineInit(vshControl *ctl)
      * Work around ancient readline 4.1 (hello Mac OS X),
      * which declared it as 'char *' instead of 'const char *'.
      */
+# if defined(RL_READLINE_VERSION) && RL_READLINE_VERSION > 0x0402
     rl_readline_name = ctl->name;
+# else
+    rl_readline_name = (char *) ctl->name;
+# endif
 
     /* Tell the completer that we want a crack first. */
     rl_attempted_completion_function = vshReadlineCompletion;
 
-    rl_basic_word_break_characters = " \t\n\\`@$><=;|&{(";
+# if defined(RL_READLINE_VERSION) && RL_READLINE_VERSION > 0x0402
+    rl_basic_word_break_characters = break_characters;
+# else
+    rl_basic_word_break_characters = (char *) break_characters;
+# endif
 
     if (virAsprintf(&histsize_env, "%s_HISTSIZE", ctl->env_prefix) < 0)
         goto cleanup;
-- 
2.13.6




More information about the libvir-list mailing list