]> xenbits.xensource.com Git - libvirt.git/commitdiff
tools: Work around ancient readline
authorMichal Privoznik <mprivozn@redhat.com>
Thu, 23 Nov 2017 17:00:33 +0000 (18:00 +0100)
committerMichal Privoznik <mprivozn@redhat.com>
Thu, 23 Nov 2017 17:37:17 +0000 (18:37 +0100)
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@redhat.com>
tools/vsh.c

index 472438ead043291d6bf032374b7c281169ac9e6b..e878119b988f70c324af170f2cd8936d00c4fae0 100644 (file)
@@ -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;