From: Paul Jakma <paul.ja...@hpe.com> --- lib/vty.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-)
diff --git a/lib/vty.c b/lib/vty.c index 7ba277f..2c5911a 100644 --- a/lib/vty.c +++ b/lib/vty.c @@ -1340,8 +1340,9 @@ vty_execute (struct vty *vty) #define CONTROL(X) ((X) - '@') #define VTY_NORMAL 0 -#define VTY_PRE_ESCAPE 1 -#define VTY_ESCAPE 2 +#define VTY_PRE_ESCAPE 1 /* Esc seen */ +#define VTY_ESCAPE 2 /* ANSI terminal escape (Esc-[) seen */ +#define VTY_ESC_LITERAL 3 /* Escape next char as literal */ /* Escape character command map. */ static void @@ -1469,7 +1470,14 @@ vty_read (struct thread *thread) vty_escape_map (buf[i], vty); continue; } - + + if (vty->escape == VTY_ESC_LITERAL) + { + vty_self_insert (vty, buf[i]); + vty->escape = VTY_NORMAL; + continue; + } + /* Pre-escape status. */ if (vty->escape == VTY_PRE_ESCAPE) { @@ -1495,6 +1503,10 @@ vty_read (struct thread *thread) vty_backward_kill_word (vty); vty->escape = VTY_NORMAL; break; + case '?': + vty_self_insert (vty, buf[i]); + vty->escape = VTY_NORMAL; + break; default: vty->escape = VTY_NORMAL; break; @@ -1541,6 +1553,9 @@ vty_read (struct thread *thread) case CONTROL('U'): vty_kill_line_from_beginning (vty); break; + case CONTROL('V'): + vty->escape = VTY_ESC_LITERAL; + break; case CONTROL('W'): vty_backward_kill_word (vty); break; -- 2.7.4 _______________________________________________ Quagga-dev mailing list Quagga-dev@lists.quagga.net https://lists.quagga.net/mailman/listinfo/quagga-dev