[git commit] fix a thinko in lineedit completion code

Denys Vlasenko vda.linux at googlemail.com
Thu Jul 16 12:14:34 UTC 2009


commit: http://git.busybox.net/busybox/commit/?id=5c2e81bb67750fa36e7901182e979cfdf8f5cc41
branch: http://git.busybox.net/busybox/commit/?id=refs/heads/master


Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 include/libbb.h  |    5 +++--
 libbb/lineedit.c |   14 +++++++-------
 2 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/include/libbb.h b/include/libbb.h
index 422670f..50b8841 100644
--- a/include/libbb.h
+++ b/include/libbb.h
@@ -1246,8 +1246,9 @@ enum {
 	FOR_SHELL = DO_HISTORY | SAVE_HISTORY | TAB_COMPLETION | USERNAME_COMPLETION,
 };
 line_input_t *new_line_input_t(int flags) FAST_FUNC;
-/* so far static: void free_line_input_t(line_input_t *n) FAST_FUNC; */
-/* Returns:
+/* So far static: void free_line_input_t(line_input_t *n) FAST_FUNC; */
+/* maxsize must be >= 2.
+ * Returns:
  * -1 on read errors or EOF, or on bare Ctrl-D,
  * 0  on ctrl-C (the line entered is still returned in 'command'),
  * >0 length of input string, including terminating '\n'
diff --git a/libbb/lineedit.c b/libbb/lineedit.c
index cb675f2..a3d9395 100644
--- a/libbb/lineedit.c
+++ b/libbb/lineedit.c
@@ -692,13 +692,12 @@ static void exe_n_cwd_tab_completion(char *command, int type)
 
 #define int_buf (S.find_match__int_buf)
 #define pos_buf (S.find_match__pos_buf)
-
+/* is must be <= in */
 static void collapse_pos(int is, int in)
 {
-	memmove(int_buf+is, int_buf+in, (MAX_LINELEN+1 - is - in) * sizeof(int_buf[0]));
-	memmove(pos_buf+is, pos_buf+in, (MAX_LINELEN+1 - is - in) * sizeof(pos_buf[0]));
+	memmove(int_buf+is, int_buf+in, (MAX_LINELEN+1-in)*sizeof(int_buf[0]));
+	memmove(pos_buf+is, pos_buf+in, (MAX_LINELEN+1-in)*sizeof(pos_buf[0]));
 }
-
 static NOINLINE int find_match(char *matchBuf, int *len_with_quotes)
 {
 	int i, j;
@@ -866,9 +865,9 @@ static NOINLINE int find_match(char *matchBuf, int *len_with_quotes)
 	*len_with_quotes = j ? j - pos_buf[0] : 0;
 
 	return command_mode;
+}
 #undef int_buf
 #undef pos_buf
-}
 
 /*
  * display by column (original idea from ls applet,
@@ -917,7 +916,7 @@ static char *add_quote_for_spec_chars(char *found)
 	char *s = xzalloc((strlen(found) + 1) * 2);
 
 	while (*found) {
-		if (strchr(" `\"#$%^&*()=+{}[]:;\'|\\<>", *found))
+		if (strchr(" `\"#$%^&*()=+{}[]:;'|\\<>", *found))
 			s[l++] = '\\';
 		s[l++] = *found++;
 	}
@@ -1642,7 +1641,8 @@ static int lineedit_read_key(char *read_key_buffer)
 #undef CTRL
 #define CTRL(a) ((a) & ~0x40)
 
-/* Returns:
+/* maxsize must be >= 2.
+ * Returns:
  * -1 on read errors or EOF, or on bare Ctrl-D,
  * 0  on ctrl-C (the line entered is still returned in 'command'),
  * >0 length of input string, including terminating '\n'
-- 
1.6.3.3


More information about the busybox-cvs mailing list