diff options
Diffstat (limited to 'avr/command.c')
-rw-r--r-- | avr/command.c | 36 |
1 files changed, 30 insertions, 6 deletions
diff --git a/avr/command.c b/avr/command.c index ff52757..b0d9c90 100644 --- a/avr/command.c +++ b/avr/command.c @@ -100,7 +100,7 @@ static cmd_tbl_t *get_cmd_tbl_parent(cmd_tbl_t *child) return NULL; } -static int print_name_prefix(cmd_tbl_t *p) +static int print_nameprefix(cmd_tbl_t *p) { cmd_tbl_t *top = get_cmd_tbl_parent(p); @@ -112,13 +112,22 @@ static int print_name_prefix(cmd_tbl_t *p) return width; } +static int print_prefixed_name(cmd_tbl_t *p) +{ + int len; + + len = print_nameprefix(p); + len += strlen_P(p->name); + my_puts_P(p->name); + + return len; +} + static void print_usage_line(cmd_tbl_t *p, int width) { - width -= strlen_P(p->name); - width -= print_name_prefix(p); + width -= print_prefixed_name(p); if (width < 0) width = 0; - my_puts_P(p->name); print_blanks(width); my_puts_P(PSTR(" - ")); puts_P(p->usage); @@ -414,8 +423,7 @@ command_ret_t cmd_usage(cmd_tbl_t *cmdtp) print_usage_line(cmdtp, 0); #ifdef CONFIG_SYS_LONGHELP my_puts_P(PSTR("Usage:\n")); - print_name_prefix(cmdtp); - my_puts_P(cmdtp->name); + print_prefixed_name(cmdtp); my_puts_P(PSTR(" ")); if (cmdtp->help && *cmdtp->help != '\0') @@ -686,6 +694,7 @@ int cmd_auto_complete(const FLASH char *const prompt, char *buf, int *np, int *c #endif /* CONFIG_AUTO_COMPLETE */ +static cmd_tbl_t *cmd_invocation_ptr; /** * Call a command function. This should be the only route in U-Boot to call @@ -760,6 +769,7 @@ command_ret_t cmd_process(uint_fast8_t flag, int argc, char * const argv[], /* If OK so far, then do the command */ if (!rc) { + cmd_invocation_ptr = cmdtp; rc = cmd_call(cmdtp, flag, argc, argv); *repeatable &= (cmdtp->flags & CTBL_RPT) != 0; } @@ -780,3 +790,17 @@ int cmd_process_error(cmd_tbl_t *cmdtp, int err) return 0; } + + +void cmd_error(const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + print_prefixed_name(cmd_invocation_ptr); + my_puts_P(PSTR(": ")); + vfprintf_P(stdout, fmt, ap); + va_end(ap); + putchar('\n'); + _delay_ms(20); + //command_ret = CMD_RET_FAILURE; +} |