aboutsummaryrefslogtreecommitdiff
path: root/cmdedit.c
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2000-11-02 17:02:26 +0000
committerEric Andersen <andersen@codepoet.org>2000-11-02 17:02:26 +0000
commita75466e9819a7172ba48b06958a868022f4510a9 (patch)
tree23cd76a71ae5d5a07900eec39e1869e060a034f6 /cmdedit.c
parentef936da7c5608c8cae553216f8661764247c2819 (diff)
downloadbusybox-a75466e9819a7172ba48b06958a868022f4510a9.tar.gz
Warning cleanup from Gennady Feldman
-Erik
Diffstat (limited to 'cmdedit.c')
-rw-r--r--cmdedit.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/cmdedit.c b/cmdedit.c
index af29b059a..a59aeebb7 100644
--- a/cmdedit.c
+++ b/cmdedit.c
@@ -283,12 +283,12 @@ char** exe_n_cwd_tab_completion(char* command, int *num_matches)
return (matches);
}
-void input_tab(char* command, char* prompt, int outputFd, int *cursor, int *len)
+void input_tab(char* command, char* prompt, int outputFd, int *cursor, int *len, int lastWasTab)
{
/* Do TAB completion */
static int num_matches=0;
static char **matches = (char **) NULL;
- int pos = cursor;
+ int pos = *cursor;
if (lastWasTab == FALSE) {
@@ -303,7 +303,7 @@ void input_tab(char* command, char* prompt, int outputFd, int *cursor, int *len)
/* Make a local copy of the string -- up
* to the position of the cursor */
matchBuf = (char *) xcalloc(BUFSIZ, sizeof(char));
- strncpy(matchBuf, command, cursor);
+ strncpy(matchBuf, command, *cursor);
tmp=matchBuf;
/* skip past any command seperator tokens */
@@ -343,10 +343,10 @@ void input_tab(char* command, char* prompt, int outputFd, int *cursor, int *len)
if (matches && num_matches==1) {
/* write out the matched command */
strncpy(command+pos, matches[0]+pos, strlen(matches[0])-pos);
- len=strlen(command);
- cursor=len;
+ *len=strlen(command);
+ *cursor=*len;
xwrite(outputFd, matches[0]+pos, strlen(matches[0])-pos);
- break;
+ return;
}
} else {
/* Ok -- the last char was a TAB. Since they
@@ -372,9 +372,9 @@ void input_tab(char* command, char* prompt, int outputFd, int *cursor, int *len)
/* Rewrite the prompt */
xwrite(outputFd, prompt, strlen(prompt));
/* Rewrite the command */
- xwrite(outputFd, command, len);
+ xwrite(outputFd, command, *len);
/* Put the cursor back to where it used to be */
- for (cursor=len; cursor > pos; cursor--)
+ for (cursor=len; *cursor > pos; cursor--)
xwrite(outputFd, "\b", 1);
}
}
@@ -505,7 +505,8 @@ extern void cmdedit_read_input(char* prompt, char command[BUFSIZ])
break;
case '\t':
#ifdef BB_FEATURE_SH_TAB_COMPLETION
- input_tab(command, prompt, outputFd, &cursor, &len);
+ input_tab(command, prompt, outputFd, &cursor,
+&len, lastWasTab);
#endif
break;
case 14: