diff options
author | Eric Andersen <andersen@codepoet.org> | 2001-05-31 17:15:57 +0000 |
---|---|---|
committer | Eric Andersen <andersen@codepoet.org> | 2001-05-31 17:15:57 +0000 |
commit | 4f990533e35b75a89f6ec86d9835e97ea5aafaa0 (patch) | |
tree | 0c55989a98164cf06555576e6bc8f4b7576644bd | |
parent | f12cc4ee68ec33a77576e582b48705730fcde359 (diff) | |
download | busybox-4f990533e35b75a89f6ec86d9835e97ea5aafaa0.tar.gz |
Patch from Vladimir to fix up autocompletion on a files/dirs with spaces in
them in the presence of a quoting. Also revert my signal handling patch,
which seems to not solve the problem I thought it solved.
-rw-r--r-- | cmdedit.c | 17 | ||||
-rw-r--r-- | shell/cmdedit.c | 17 |
2 files changed, 8 insertions, 26 deletions
@@ -571,7 +571,6 @@ extern void cmdedit_init(void) atexit(cmdedit_reset_term); /* be sure to do this only once */ } -#if 0 if ((handlers_sets & SET_TERM_HANDLERS) == 0) { signal(SIGKILL, clean_up_and_die); signal(SIGINT, clean_up_and_die); @@ -579,8 +578,6 @@ extern void cmdedit_init(void) signal(SIGTERM, clean_up_and_die); handlers_sets |= SET_TERM_HANDLERS; } -#endif - } #ifdef BB_FEATURE_COMMAND_TAB_COMPLETION @@ -983,17 +980,14 @@ static int find_match(char *matchBuf, int *len_with_quotes) || (int_buf[i + 1] & ~QUOT) == '~')) { i++; } - if (i) { - collapse_pos(0, i); - } /* set only match and destroy quotes */ j = 0; - for (i = 0; pos_buf[i] >= 0; i++) { - matchBuf[i] = matchBuf[pos_buf[i]]; + for (c = 0; pos_buf[i] >= 0; i++) { + matchBuf[c++] = matchBuf[pos_buf[i]]; j = pos_buf[i] + 1; } - matchBuf[i] = 0; + matchBuf[c] = 0; /* old lenght matchBuf with quotes symbols */ *len_with_quotes = j ? j - pos_buf[0] : 0; @@ -1097,8 +1091,7 @@ static void input_tab(int *lastWasTab) /* new len */ len = strlen(command_ps); /* write out the matched command */ - input_end(); - input_backward(cursor - recalc_pos); + redraw(cmdedit_y, len - recalc_pos); } if (tmp != matches[0]) free(tmp); @@ -1489,7 +1482,6 @@ prepare_to_die: extern void cmdedit_terminate(void) { cmdedit_reset_term(); -#if 0 if ((handlers_sets & SET_TERM_HANDLERS) != 0) { signal(SIGKILL, SIG_DFL); signal(SIGINT, SIG_DFL); @@ -1498,7 +1490,6 @@ extern void cmdedit_terminate(void) signal(SIGWINCH, SIG_DFL); handlers_sets &= ~SET_TERM_HANDLERS; } -#endif } #endif /* BB_FEATURE_COMMAND_EDITING */ diff --git a/shell/cmdedit.c b/shell/cmdedit.c index a87723139..a2b238603 100644 --- a/shell/cmdedit.c +++ b/shell/cmdedit.c @@ -571,7 +571,6 @@ extern void cmdedit_init(void) atexit(cmdedit_reset_term); /* be sure to do this only once */ } -#if 0 if ((handlers_sets & SET_TERM_HANDLERS) == 0) { signal(SIGKILL, clean_up_and_die); signal(SIGINT, clean_up_and_die); @@ -579,8 +578,6 @@ extern void cmdedit_init(void) signal(SIGTERM, clean_up_and_die); handlers_sets |= SET_TERM_HANDLERS; } -#endif - } #ifdef BB_FEATURE_COMMAND_TAB_COMPLETION @@ -983,17 +980,14 @@ static int find_match(char *matchBuf, int *len_with_quotes) || (int_buf[i + 1] & ~QUOT) == '~')) { i++; } - if (i) { - collapse_pos(0, i); - } /* set only match and destroy quotes */ j = 0; - for (i = 0; pos_buf[i] >= 0; i++) { - matchBuf[i] = matchBuf[pos_buf[i]]; + for (c = 0; pos_buf[i] >= 0; i++) { + matchBuf[c++] = matchBuf[pos_buf[i]]; j = pos_buf[i] + 1; } - matchBuf[i] = 0; + matchBuf[c] = 0; /* old lenght matchBuf with quotes symbols */ *len_with_quotes = j ? j - pos_buf[0] : 0; @@ -1097,8 +1091,7 @@ static void input_tab(int *lastWasTab) /* new len */ len = strlen(command_ps); /* write out the matched command */ - input_end(); - input_backward(cursor - recalc_pos); + redraw(cmdedit_y, len - recalc_pos); } if (tmp != matches[0]) free(tmp); @@ -1489,7 +1482,6 @@ prepare_to_die: extern void cmdedit_terminate(void) { cmdedit_reset_term(); -#if 0 if ((handlers_sets & SET_TERM_HANDLERS) != 0) { signal(SIGKILL, SIG_DFL); signal(SIGINT, SIG_DFL); @@ -1498,7 +1490,6 @@ extern void cmdedit_terminate(void) signal(SIGWINCH, SIG_DFL); handlers_sets &= ~SET_TERM_HANDLERS; } -#endif } #endif /* BB_FEATURE_COMMAND_EDITING */ |