diff options
author | Rob Landley <rob@landley.net> | 2013-04-14 21:43:22 -0500 |
---|---|---|
committer | Rob Landley <rob@landley.net> | 2013-04-14 21:43:22 -0500 |
commit | 36ffc5aa3e6bfcab5d628208f4f1508f9b1c2620 (patch) | |
tree | 02fa7a68fe53808c79ce72f9ba21beb0b9908214 /lib/help.c | |
parent | 26c0045a6eb061e180f58b6b4c029a5df5a2818e (diff) | |
download | toybox-36ffc5aa3e6bfcab5d628208f4f1508f9b1c2620.tar.gz |
Move guts of help command into show_help() in lib/help.c, with config TOYBOX_HELP controlling infrastructure.
Diffstat (limited to 'lib/help.c')
-rw-r--r-- | lib/help.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/lib/help.c b/lib/help.c new file mode 100644 index 00000000..f7a326a8 --- /dev/null +++ b/lib/help.c @@ -0,0 +1,33 @@ +// Function to display help text + +#include "toys.h" + +#if !CFG_TOYBOX_HELP +void show_help(char *command) {;} +#else +#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 show_help(void) +{ + int i = toys.which-toy_list; + char *s; + + for (;;) { + s = help_data; + while (i--) s += strlen(s) + 1; + // If it's an alias, restart search for real name + if (*s != 255) break; + i = toy_find(++s)-toy_list; + } + + fprintf(toys.exithelp ? stderr : stdout, "%s", s); +} +#endif |