Ignore:
File:
1 edited

Legend:

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

    ra7199c2 r4ce914d4  
    160160
    161161/** Print count times a character */
    162 NO_TRACE static void print_cc(wchar_t ch, size_t count)
     162static void print_cc(wchar_t ch, size_t count)
    163163{
    164164        size_t i;
     
    168168
    169169/** Try to find a command beginning with prefix */
    170 NO_TRACE static const char *cmdtab_search_one(const char *name,
    171     link_t **startpos)
     170static const char *cmdtab_search_one(const char *name, link_t **startpos)
    172171{
    173172        size_t namelen = str_length(name);
     
    203202 *
    204203 */
    205 NO_TRACE static int cmdtab_compl(char *input, size_t size)
     204static int cmdtab_compl(char *input, size_t size)
    206205{
    207206        const char *name = input;
     
    210209        link_t *pos = NULL;
    211210        const char *hint;
    212         char *output = malloc(MAX_CMDLINE, 0);
     211        char output[MAX_CMDLINE];
    213212       
    214213        output[0] = 0;
     
    235234                str_cpy(input, size, output);
    236235       
    237         free(output);
    238236        return found;
    239237}
    240238
    241 NO_TRACE static wchar_t *clever_readline(const char *prompt, indev_t *indev)
     239static wchar_t *clever_readline(const char *prompt, indev_t *indev)
    242240{
    243241        printf("%s> ", prompt);
     
    246244        wchar_t *current = history[history_pos];
    247245        current[0] = 0;
    248         char *tmp = malloc(STR_BOUNDS(MAX_CMDLINE), 0);
    249246       
    250247        while (true) {
     
    291288                                beg++;
    292289                       
     290                        char tmp[STR_BOUNDS(MAX_CMDLINE)];
    293291                        wstr_to_str(tmp, position - beg + 1, current + beg);
    294292                       
     
    416414        }
    417415       
    418         free(tmp);
    419416        return current;
    420417}
     
    425422}
    426423
    427 NO_TRACE static bool parse_int_arg(const char *text, size_t len,
    428     unative_t *result)
     424static bool parse_int_arg(const char *text, size_t len, unative_t *result)
    429425{
    430426        bool isaddr = false;
     
    511507 *
    512508 */
    513 NO_TRACE static bool parse_argument(const char *cmdline, size_t size,
    514     size_t *start, size_t *end)
     509static bool parse_argument(const char *cmdline, size_t size, size_t *start, size_t *end)
    515510{
    516511        ASSERT(start != NULL);
     
    548543 *
    549544 */
    550 NO_TRACE static cmd_info_t *parse_cmdline(const char *cmdline, size_t size)
     545static cmd_info_t *parse_cmdline(const char *cmdline, size_t size)
    551546{
    552547        size_t start = 0;
     
    595590        size_t i;
    596591        for (i = 0; i < cmd->argc; i++) {
    597                 char *buf;
    598                
    599592                start = end;
    600593                if (!parse_argument(cmdline, size, &start, &end)) {
    601                         if (cmd->argv[i].type == ARG_TYPE_STRING_OPTIONAL) {
    602                                 buf = (char *) cmd->argv[i].buffer;
    603                                 str_cpy(buf, cmd->argv[i].len, "");
    604                                 continue;
    605                         }
    606                        
    607594                        printf("Too few arguments.\n");
    608595                        spinlock_unlock(&cmd->lock);
     
    610597                }
    611598               
     599                char *buf;
    612600                switch (cmd->argv[i].type) {
    613601                case ARG_TYPE_STRING:
    614                 case ARG_TYPE_STRING_OPTIONAL:
    615602                        buf = (char *) cmd->argv[i].buffer;
    616603                        str_ncpy(buf, cmd->argv[i].len, cmdline + start,
     
    632619                                        cmd->argv[i].vartype = ARG_TYPE_STRING;
    633620                                } else {
    634                                         printf("Wrong syntax.\n");
     621                                        printf("Wrong synxtax.\n");
    635622                                        error = true;
    636623                                }
     
    690677                printf("Type \"exit\" to leave the console.\n");
    691678       
    692         char *cmdline = malloc(STR_BOUNDS(MAX_CMDLINE), 0);
    693679        while (true) {
    694680                wchar_t *tmp = clever_readline((char *) prompt, stdin);
     
    697683                        continue;
    698684               
     685                char cmdline[STR_BOUNDS(MAX_CMDLINE)];
    699686                wstr_to_str(cmdline, STR_BOUNDS(MAX_CMDLINE), tmp);
    700687               
     
    708695                (void) cmd_info->func(cmd_info->argv);
    709696        }
    710         free(cmdline);
    711697}
    712698
Note: See TracChangeset for help on using the changeset viewer.