jmp_buf cmd_jbuf;
+static int cmd_tbl_item_count(cmd_tbl_t *p)
+{
+ int count = 0;
+
+ while (p->name != NULL) {
+ if (p->subcmd) {
+ cmd_tbl_t *sub = p->subcmd;
+ while (sub->name != NULL) {
+ if (sub->flags & CTBL_SUBCMDAUTO)
+ count++;
+ sub++;
+ }
+ }
+ if ((p->flags & CTBL_SUBCMDAUTO) == 0)
+ count++;
+ p++;
+ }
+ return count;
+}
+
+static cmd_tbl_t *get_cmd_tbl_base(cmd_tbl_t *cmdtp)
+{
+ cmd_tbl_t *p = cmdtp;
+
+ while (p->name != NULL)
+ ++p;
+
+ return p->subcmd;
+}
+
+static void print_name_prefix(cmd_tbl_t *p)
+{
+ cmd_tbl_t *tbl_start = get_cmd_tbl_base(p);
+ cmd_tbl_t *top;
+
+ if (tbl_start == cmd_tbl)
+ top = NULL;
+ else {
+ top = cmd_tbl;
+ while (top->subcmd != tbl_start)
+ ++top;
+ }
+
+ if (top && (p->flags & CTBL_SUBCMDAUTO) == 0) {
+ printf_P(PSTR("%S "), top->name);
+ }
+}
+
static void print_usage_line(cmd_tbl_t *p, int width)
{
width -= strlen_P(p->name);
if (width < 0)
width = 0;
+ print_name_prefix(p);
my_puts_P(p->name);
print_blanks(width);
my_puts_P(PSTR(" - "));
puts_P(p->usage);
}
-int strcmp_PP(const FLASH char *s1, const FLASH char *s2)
+static int strcmp_PP(const FLASH char *s1, const FLASH char *s2)
{
unsigned char c1, c2;
return c1 - c2;
}
-int cmpstring_PP(const void *p1, const void *p2)
+static int cmpstring_PP(const void *p1, const void *p2)
{
return strcmp_PP((*(const FLASH cmd_tbl_t **) p1)->name,
(*(const FLASH cmd_tbl_t **) p2)->name);
/****************************************************************************/
-int cmd_tbl_item_count(cmd_tbl_t *p)
-{
- int count = 0;
-
- while (p->name != NULL) {
- if (p->subcmd) {
- cmd_tbl_t *sub = p->subcmd;
- while (sub->name != NULL) {
- if (sub->flags & CTBL_SUBCMDAUTO)
- count++;
- sub++;
- }
- }
- if ((p->flags & CTBL_SUBCMDAUTO) == 0)
- count++;
- p++;
- }
- return count;
-}
-
-
-cmd_tbl_t *get_cmd_tbl_base(cmd_tbl_t *cmdtp)
-{
- cmd_tbl_t *p = cmdtp;
-
- while (p->name != NULL)
- ++p;
-
- return p->subcmd;
-}
-
/*
* find command table entry for a command
*/
-cmd_tbl_t *find_cmd (const char *cmd, cmd_tbl_t *table)
+static cmd_tbl_t *find_cmd (const char *cmd, cmd_tbl_t *table)
{
if (!cmd)
return NULL;
print_usage_line(cmdtp, 0);
#ifdef CONFIG_SYS_LONGHELP
my_puts_P(PSTR("Usage:\n"));
+ print_name_prefix(cmdtp);
my_puts_P(cmdtp->name);
my_puts_P(PSTR(" "));