aboutsummaryrefslogtreecommitdiff
path: root/lib/help.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/help.c')
-rw-r--r--lib/help.c33
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