diff options
Diffstat (limited to 'toys/other/help.c')
-rw-r--r-- | toys/other/help.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/toys/other/help.c b/toys/other/help.c new file mode 100644 index 00000000..5e2b6ec4 --- /dev/null +++ b/toys/other/help.c @@ -0,0 +1,48 @@ +/* vi: set sw=4 ts=4: + * + * help.c - Show help for toybox + * + * Copyright 2007 Rob Landley <rob@landley.net> + * + * Not in SUSv3, but exists as a bash builtin. + +USE_HELP(NEWTOY(help, "<1", TOYFLAG_BIN)) + +config HELP + bool "help" + default y + help + usage: help [command] + + Show usage information for toybox commands. + Run "toybox" with no arguments for a list of available commands. +*/ + + +#include "toys.h" +#include "generated/help.h" + +#undef NEWTOY +#undef OLDTOY +#define NEWTOY(name,opt,flags) help_##name "\0" +#define OLDTOY(name,oldname,opts,flags) "\xff" #oldname "\0" +static char *help_data = +#include "generated/newtoys.h" +; + +void help_main(void) +{ + struct toy_list *t = toy_find(*toys.optargs); + int i = t-toy_list; + char *s = help_data; + + if (!t) error_exit("Unknown command '%s'", *toys.optargs); + for (;;) { + while (i--) s += strlen(s) + 1; + if (*s != 255) break; + i = toy_find(++s)-toy_list; + s = help_data; + } + + fprintf(toys.exithelp ? stderr : stdout, "%s", s); +} |