aboutsummaryrefslogtreecommitdiffstats
path: root/main/quagga/0001-vtysh-don-t-append-superflous-spaces-BZ-750.patch
blob: 610e96aacb100e96c074ab5a5192ef915bb3c466 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
From 67e7a2127c05a8c7dfddd7ffc6378edf6b666d55 Mon Sep 17 00:00:00 2001
From: Christian Franke <chris@opensourcerouting.org>
Date: Mon, 4 Mar 2013 09:23:30 +0000
Subject: [PATCH] vtysh: don't append superflous spaces (BZ#750)

rl_completion_append_character is reset to space every time the completion
function is entered. So we would have to set it to '\0' every time
new_completion() is called. We can make this conditional and avoid using
rl_pending_input.

This code path is most relevant when there are multiple completion
matches with the same prefix, e.g. in router bgp context: "neighbor 1.2.3.4
pa"<ssive|ssword> would have been completed to "neighbor 1.2.3.4 pass "
instead of "neighbor 1.2.3.4 pass".

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
---
 vtysh/vtysh.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/vtysh/vtysh.c b/vtysh/vtysh.c
index e3709e0..c575902 100644
--- a/vtysh/vtysh.c
+++ b/vtysh/vtysh.c
@@ -677,8 +677,9 @@ new_completion (char *text, int start, int end)
   if (matches)
     {
       rl_point = rl_end;
-      if (complete_status == CMD_COMPLETE_FULL_MATCH)
-	rl_pending_input = ' ';
+      if (complete_status != CMD_COMPLETE_FULL_MATCH)
+        /* only append a space on full match */
+        rl_completion_append_character = '\0';
     }
 
   return matches;
@@ -2214,9 +2215,6 @@ vtysh_readline_init (void)
   rl_bind_key ('?', (Function *) vtysh_rl_describe);
   rl_completion_entry_function = vtysh_completion_entry_function;
   rl_attempted_completion_function = (CPPFunction *)new_completion;
-  /* do not append space after completion. It will be appended
-   * in new_completion() function explicitly. */
-  rl_completion_append_character = '\0';
 }
 
 char *
-- 
1.9.2