Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/src/console/kconsole.c

    raca4a04 r9d58539  
    4343#include <console/chardev.h>
    4444#include <console/cmd.h>
    45 #include <console/prompt.h>
    4645#include <print.h>
    4746#include <panic.h>
     
    202201 *
    203202 */
    204 NO_TRACE static int cmdtab_compl(char *input, size_t size, indev_t * indev)
     203NO_TRACE static int cmdtab_compl(char *input, size_t size)
    205204{
    206205        const char *name = input;
    207206       
    208207        size_t found = 0;
    209         /* Maximum Match Length : Length of longest matching common substring in
    210            case more than one match is found */
    211         size_t max_match_len = size;
    212         size_t max_match_len_tmp = size;
    213         size_t input_len = str_length(input);
    214208        link_t *pos = NULL;
    215209        const char *hint;
    216210        char *output = malloc(MAX_CMDLINE, 0);
    217         size_t hints_to_show = MAX_TAB_HINTS - 1;
    218         size_t total_hints_shown = 0;
    219         bool continue_showing_hints = true;
    220211       
    221212        output[0] = 0;
     
    227218                pos = pos->next;
    228219                found++;
    229         }
    230        
    231         /* If possible completions are more than MAX_TAB_HINTS, ask user whether to display them or not. */
    232         if (found > MAX_TAB_HINTS) {
    233                 printf("\n");
    234                 continue_showing_hints = console_prompt_display_all_hints(indev, found);
    235220        }
    236221       
     
    240225                while (cmdtab_search_one(name, &pos)) {
    241226                        cmd_info_t *hlp = list_get_instance(pos, cmd_info_t, link);
    242 
    243                         if (continue_showing_hints) {
    244                                 printf("%s (%s)\n", hlp->name, hlp->description);
    245                                 --hints_to_show;
    246                                 ++total_hints_shown;
    247 
    248                                 if (hints_to_show == 0 && total_hints_shown != found) { /* Time to ask user to continue */
    249                                         continue_showing_hints = console_prompt_more_hints(indev, &hints_to_show);
    250                                 }
    251                         }
    252 
     227                        printf("%s (%s)\n", hlp->name, hlp->description);
    253228                        pos = pos->next;
    254                         for(max_match_len_tmp = 0; output[max_match_len_tmp] == hlp->name[input_len + max_match_len_tmp]
    255                                         && max_match_len_tmp < max_match_len; ++max_match_len_tmp);
    256                         max_match_len = max_match_len_tmp;
    257                 }
    258                 /* keep only the characters common in all completions */
    259                 output[max_match_len] = 0;
     229                }
    260230        }
    261231       
     
    324294                        if (beg == 0) {
    325295                                /* Command completion */
    326                                 found = cmdtab_compl(tmp, STR_BOUNDS(MAX_CMDLINE), indev);
     296                                found = cmdtab_compl(tmp, STR_BOUNDS(MAX_CMDLINE));
    327297                        } else {
    328298                                /* Symbol completion */
    329                                 found = symtab_compl(tmp, STR_BOUNDS(MAX_CMDLINE), indev);
     299                                found = symtab_compl(tmp, STR_BOUNDS(MAX_CMDLINE));
    330300                        }
    331301                       
    332302                        if (found == 0)
    333303                                continue;
    334 
    335                         /* We have hints, may be many. In case of more than one hint,
    336                            tmp will contain the common prefix. */
     304                       
     305                        if (found > 1) {
     306                                /* No unique hint, list was printed */
     307                                printf("%s> ", prompt);
     308                                printf("%ls", current);
     309                                print_cc('\b', wstr_length(current) - position);
     310                                continue;
     311                        }
     312                       
     313                        /* We have a hint */
     314                       
    337315                        size_t off = 0;
    338316                        size_t i = 0;
     
    342320                                i++;
    343321                        }
    344                        
    345                         if (found > 1) {
    346                                 /* No unique hint, list was printed */
    347                                 printf("%s> ", prompt);
    348                                 printf("%ls", current);
    349                                 position += str_length(tmp);
    350                                 print_cc('\b', wstr_length(current) - position);
    351                                 continue;
    352                         }
    353                        
    354                         /* We have a hint */
    355322                       
    356323                        printf("%ls", current + position);
     
    573540/** Parse command line.
    574541 *
    575  * @param cmdline Command line as read from input device.
     542 * @param cmdline Command line as read from input device. 
    576543 * @param size    Size (in bytes) of the string.
    577544 *
Note: See TracChangeset for help on using the changeset viewer.