From 80ac7dc18145baa04a05eee3a69d325087cb9472 Mon Sep 17 00:00:00 2001 From: Ondrej Zajicek Date: Thu, 12 Feb 2009 13:41:34 +0100 Subject: [PATCH] Do not use ? for client-side help when in new BGP path syntax --- client/client.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/client/client.c b/client/client.c index ce9bdb64..6e465bce 100644 --- a/client/client.c +++ b/client/client.c @@ -168,20 +168,24 @@ input_complete(int arg UNUSED, int key UNUSED) static int input_help(int arg, int key UNUSED) { - int i = 0; + int i, in_string, in_path; if (arg != 1) return rl_insert(arg, '?'); - while (i < rl_point) + + in_string = in_path = 0; + for (i = 0; i < rl_point; i++) { - if (rl_line_buffer[i++] == '"') - do - { - if (i >= rl_point) /* `?' inside quoted string -> insert */ - return rl_insert(1, '?'); - } - while (rl_line_buffer[i++] != '"'); + if (rl_line_buffer[i] == '"') + in_string = ! in_string; + else if ((rl_line_buffer[i] == '|') && (! in_string)) + in_path = ! in_path; } + + /* `?' inside string or path -> insert */ + if (in_string || in_path) + return rl_insert(1, '?'); + rl_begin_undo_group(); /* HACK: We want to display `?' at point position */ rl_insert_text("?"); rl_redisplay();