int nsh_execapp(FAR struct nsh_vtbl_s *vtbl, FAR const char *cmd, FAR char *argv[]) { #ifndef CONFIG_APPS_BINDIR FAR const char * name; #endif int ret = OK; /* Try to find command within pre-built application list. */ ret = exec_namedapp(cmd, argv); if (ret < 0) { int err = -errno; #ifndef CONFIG_APPS_BINDIR int i; /* On failure, list the set of available built-in commands */ nsh_output(vtbl, "Builtin Apps: "); for (i = 0; (name = namedapp_getname(i)) != NULL; i++) { nsh_output(vtbl, "%s ", name); } nsh_output(vtbl, "\nand type 'help' for more NSH commands.\n\n"); /* If the failing command was '?', then do not report an error */ if (strcmp(cmd, "?") != 0) { return err; } return OK; #else return err; #endif } #ifdef CONFIG_SCHED_WAITPID if (vtbl->np.np_bg == false) { waitpid(ret, NULL, 0); } else #endif { struct sched_param param; sched_getparam(0, ¶m); nsh_output(vtbl, "%s [%d:%d]\n", cmd, ret, param.sched_priority); } return OK; }
static inline void help_builtins(FAR struct nsh_vtbl_s *vtbl) { #ifdef CONFIG_NSH_BUILTIN_APPS FAR const char *name; int i; /* List the set of available built-in commands */ nsh_output(vtbl, "\nBuiltin Apps:\n"); for (i = 0; (name = namedapp_getname(i)) != NULL; i++) { nsh_output(vtbl, " %s\n", name); } #endif }
static int cmd_help(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv) { const struct cmdmap_s *ptr; #ifdef CONFIG_NSH_BUILTIN_APPS FAR const char * name; int i; #endif nsh_output(vtbl, "NSH command forms:\n"); #ifndef CONFIG_NSH_DISABLEBG nsh_output(vtbl, " [nice [-d <niceness>>]] <cmd> [> <file>|>> <file>] [&]\n"); #else nsh_output(vtbl, " <cmd> [> <file>|>> <file>]\n"); #endif #ifndef CONFIG_NSH_DISABLESCRIPT nsh_output(vtbl, "OR\n"); nsh_output(vtbl, " if <cmd>\n"); nsh_output(vtbl, " then\n"); nsh_output(vtbl, " [sequence of <cmd>]\n"); nsh_output(vtbl, " else\n"); nsh_output(vtbl, " [sequence of <cmd>]\n"); nsh_output(vtbl, " fi\n"); #endif nsh_output(vtbl, "Where <cmd> is one of:\n"); for (ptr = g_cmdmap; ptr->cmd; ptr++) { if (ptr->usage) { nsh_output(vtbl, " %s %s\n", ptr->cmd, ptr->usage); } else { nsh_output(vtbl, " %s\n", ptr->cmd); } } /* List the set of available built-in commands */ #ifdef CONFIG_NSH_BUILTIN_APPS nsh_output(vtbl, "\nBuiltin Apps:\n"); for (i = 0; (name = namedapp_getname(i)) != NULL; i++) { nsh_output(vtbl, " %s\n", name); } #endif return OK; }