[BACK]Return to keymap.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / mg

Diff for /src/usr.bin/mg/keymap.c between version 1.6 and 1.7

version 1.6, 2001/05/23 16:14:00 version 1.7, 2001/05/23 16:26:39
Line 902 
Line 902 
 }  }
   
 /*  /*
  * complete function name  
  */  
 int  
 complete_function(fname, c)  
         char *fname;  
         int   c;  
 {  
         int     i, j, k, l, oj;  
   
         i = name_fent(fname, TRUE);  
         for (j = 0; (l = fname[j]) && functnames[i].n_name[j] == l; j++) {  
         }  
         if (fname[j] != '\0') {  
                 if (++i >= NFUNCT)  
                         /* no match */  
                         return -2;  
                 for (j = 0; (l = fname[j]) && functnames[i].n_name[j] == l;  
                     j++);  
                 if (fname[j] != '\0')  
                         /* no match */  
                         return -2;  
         }  
         if (c == CCHR('M') && functnames[i].n_name[j] == '\0')  
                 return -1;  
         /* find last match */  
         for (k = i + 1; k < NFUNCT; k++) {  
                 for (l = 0; functnames[k].n_name[l] == fname[l]; l++);  
                 if (l < j)  
                         break;  
         }  
         k--;  
         oj = j;  
   
         if (k > i) {  
                 /* multiple matches */  
                 while ((l = functnames[i].n_name[j]) ==  
                     functnames[k].n_name[j]) {  
                         fname[j++] = l;  
                         if (l == '-' && c == ' ')  
                                 break;  
                 }  
                 if (j == oj)  
                         /* ambiguous */  
                         return -3;  
         } else {  
                 /* single match */  
                 while ((l = functnames[i].n_name[j])) {  
                         fname[j++] = l;  
                         if (l == '-' && c == ' ')  
                                 break;  
                 }  
         }  
         fname[j] = '\0';  
         return j - oj;  
 }  
   
 /*  
  * list possible function name completions.   * list possible function name completions.
  */   */
 LIST *  LIST *

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.7