mrp_list_hook_t *p, *n;
mrp_console_group_t *grp;
- if (*name == '/')
+ if (*name == '/') {
name++;
+ if (!*name)
+ return NULL;
+ }
+
if (ctx != NULL) {
mrp_list_foreach(&ctx->cmd_groups, p, n) {
grp = mrp_list_entry(p, typeof(*grp), hook);
_p += _l; \
} while (0)
+ while (*raw == '/')
+ raw++;
+
SKIP_WHITESPACE(raw);
SKIP_PREFIX(raw, grp);
SKIP_WHITESPACE(raw);
goto prompt;
}
else {
+ if (argv[0][0] == '/') {
+ grp = find_group(c->ctx, argv[0]);
+
+ if (grp != NULL) {
+ c->grp = grp;
+ goto prompt;
+ }
+ else if (argv[0][1] == '\0') {
+ c->grp = NULL;
+ c->cmd = NULL;
+ goto prompt;
+ }
+ else
+ goto unknown_command;
+ }
+
if (c->cmd == NULL) {
cmd = find_command(c->grp, argv[0], &fallback);
goto execute;
}
-
/*
* take care of commands while at the top-level
*/