From 23d1cead89190823609cfd9ce1112237bd310843 Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Sun, 2 Mar 2008 17:23:10 +0100 Subject: readline: Fix a bug when tab completion is used in the middle of the line. --- lib/readline.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'lib') diff --git a/lib/readline.c b/lib/readline.c index 1bdfe61b9d..503f4efaea 100644 --- a/lib/readline.c +++ b/lib/readline.c @@ -201,17 +201,25 @@ int readline(const char *prompt, char *buf, int len) switch (ichar) { case '\t': #ifdef CONFIG_AUTO_COMPLETE + buf[eol_num] = 0; tmp = buf[num]; + buf[num] = 0; reprint = complete(buf, &completestr); - if (reprint) + buf[num] = tmp; + + if (reprint) { printf("%s%s", prompt, buf); + if (tmp) + for (i = 0; i < eol_num - num; i++) + getcmd_putch(CTL_BACKSPACE); + } + i = 0; while (completestr[i]) - cread_add_char(completestr[i++], insert, &num, &eol_num, buf, len); - - buf[num] = tmp; + cread_add_char(completestr[i++], insert, &num, + &eol_num, buf, len); #endif break; -- cgit v1.2.3