diff options
Diffstat (limited to 'toys/help.c')
-rw-r--r-- | toys/help.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/toys/help.c b/toys/help.c new file mode 100644 index 00000000..6af743fc --- /dev/null +++ b/toys/help.c @@ -0,0 +1,33 @@ +/* vi: set sw=4 ts=4: */ +/* + * help.c - Show help for toybox + */ + +#include "toys.h" +#include "toys/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 "toys/toylist.h" +; + +int 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'\n", *toys.optargs); + for (;;) { + while (i--) s += strlen(s) + 1; + if (*s != 255) break; + i = toy_find(++s)-toy_list; + s = help_data; + } + + printf("%s", s); + return 0; +} |