Warning cleanup from Gennady Feldman
authorEric Andersen <andersen@codepoet.org>
Thu, 2 Nov 2000 17:02:26 +0000 (17:02 -0000)
committerEric Andersen <andersen@codepoet.org>
Thu, 2 Nov 2000 17:02:26 +0000 (17:02 -0000)
 -Erik

cmdedit.c
shell/cmdedit.c

index af29b059aabf9e63d4a8cf8ffaa89c5a9a7c2492..a59aeebb77daf858f94cc8a9aff6da73c77023f0 100644 (file)
--- 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:
index af29b059aabf9e63d4a8cf8ffaa89c5a9a7c2492..a59aeebb77daf858f94cc8a9aff6da73c77023f0 100644 (file)
@@ -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: