aboutsummaryrefslogtreecommitdiff
path: root/applets
diff options
context:
space:
mode:
authorMatt Kraai <kraai@debian.org>2001-08-27 17:19:38 +0000
committerMatt Kraai <kraai@debian.org>2001-08-27 17:19:38 +0000
commitab3d839ef455739f8a52e7e44f8f3eed158e2acf (patch)
tree0791b8d54838eab9d07f749c247dbefa69374835 /applets
parent861e624e15a0f587d9507d7387541e6cdbad565c (diff)
downloadbusybox-ab3d839ef455739f8a52e7e44f8f3eed158e2acf.tar.gz
Add support for `busybox --help APPLET' by Vladimir Oleynik.
Diffstat (limited to 'applets')
-rw-r--r--applets/applets.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/applets/applets.c b/applets/applets.c
index ffa806ebc..f3e56a9f3 100644
--- a/applets/applets.c
+++ b/applets/applets.c
@@ -45,13 +45,6 @@ extern void show_usage(void)
const char *format_string;
const char *usage_string = usage_messages;
int i;
- /* From busybox.c */
- extern int been_there_done_that;
-
- if (strcmp(applet_using->name, "busybox")==0) {
- been_there_done_that=1;
- busybox_main(0, NULL);
- }
for (i = applet_using - applets; i > 0; ) {
if (!*usage_string++) {
@@ -85,13 +78,23 @@ struct BB_applet *find_applet_by_name(const char *name)
void run_applet_by_name(const char *name, int argc, char **argv)
{
static int recurse_level = 0;
+ extern int been_there_done_that; /* From busybox.c */
recurse_level++;
/* Do a binary search to find the applet entry given the name. */
if ((applet_using = find_applet_by_name(name)) != NULL) {
applet_name = applet_using->name;
if (argv[1] && strcmp(argv[1], "--help") == 0) {
- show_usage();
+ if (strcmp(applet_using->name, "busybox")==0) {
+ if(argv[2])
+ applet_using = find_applet_by_name(argv[2]);
+ else
+ applet_using = NULL;
+ }
+ if(applet_using)
+ show_usage();
+ been_there_done_that=1;
+ busybox_main(0, NULL);
}
exit((*(applet_using->main)) (argc, argv));
}