diff --git a/applets.h b/applets.h index a2d73bc59..f21a49076 100644 --- a/applets.h +++ b/applets.h @@ -371,5 +371,5 @@ const struct BB_applet applets[] = { }; /* The -1 arises because of the {0,NULL,0,NULL} entry above. */ -#define NUM_APPLETS (sizeof (applets) / sizeof (struct BB_applet) - 1) +size_t NUM_APPLETS = (sizeof (applets) / sizeof (struct BB_applet) - 1); diff --git a/busybox.h b/busybox.h index 2bc1c997e..f0f8d5dd9 100644 --- a/busybox.h +++ b/busybox.h @@ -108,6 +108,9 @@ struct BB_applet { /* From busybox.c */ extern const struct BB_applet applets[]; +extern size_t NUM_APPLETS; + + extern int applet_name_compare(const void *x, const void *y); extern int ar_main(int argc, char **argv); diff --git a/coreutils/date.c b/coreutils/date.c index 2e99aea19..a8f0d7ced 100644 --- a/coreutils/date.c +++ b/coreutils/date.c @@ -160,26 +160,27 @@ int date_main(int argc, char **argv) /* Interpret command line args */ while ((c = getopt(argc, argv, "Rs:ud:")) != EOF) { switch (c) { - case 'R': - rfc822 = 1; - break; - case 's': - set_time = 1; - if ((date_str != NULL) || ((date_str = optarg) == NULL)) + case 'R': + rfc822 = 1; + break; + case 's': + set_time = 1; + if ((date_str != NULL) || ((date_str = optarg) == NULL)) { + usage(date_usage); + } + break; + case 'u': + utc = 1; + if (putenv("TZ=UTC0") != 0) + fatalError(memory_exhausted); + break; + case 'd': + use_arg = 1; + if ((date_str != NULL) || ((date_str = optarg) == NULL)) + usage(date_usage); + break; + default: usage(date_usage); - break; - case 'u': - utc = 1; - if (putenv("TZ=UTC0") != 0) - fatalError(memory_exhausted); - break; - case 'd': - use_arg = 1; - if ((date_str != NULL) || ((date_str = optarg) == NULL)) - usage(date_usage); - break; - default: - usage(date_usage); } } @@ -188,9 +189,13 @@ int date_main(int argc, char **argv) else if (date_str == NULL) { set_time = 1; date_str = argv[optind]; - } else { + } +#if 0 + else { + errorMsg("date_str='%s' date_fmt='%s'\n", date_str, date_fmt); usage(date_usage); } +#endif /* Now we have parsed all the information except the date format which depends on whether the clock is being set or read */ @@ -217,11 +222,15 @@ int date_main(int argc, char **argv) tm = mktime(&tm_time); if (tm < 0) fatalError(invalid_date, date_str); + if ( utc ) { + if (putenv("TZ=UTC0") != 0) + fatalError(memory_exhausted); + } /* if setting time, set it */ if (set_time) { if (stime(&tm) < 0) { - fatalError("can't set date.\n"); + perrorMsg("cannot set date"); } } } diff --git a/date.c b/date.c index 2e99aea19..a8f0d7ced 100644 --- a/date.c +++ b/date.c @@ -160,26 +160,27 @@ int date_main(int argc, char **argv) /* Interpret command line args */ while ((c = getopt(argc, argv, "Rs:ud:")) != EOF) { switch (c) { - case 'R': - rfc822 = 1; - break; - case 's': - set_time = 1; - if ((date_str != NULL) || ((date_str = optarg) == NULL)) + case 'R': + rfc822 = 1; + break; + case 's': + set_time = 1; + if ((date_str != NULL) || ((date_str = optarg) == NULL)) { + usage(date_usage); + } + break; + case 'u': + utc = 1; + if (putenv("TZ=UTC0") != 0) + fatalError(memory_exhausted); + break; + case 'd': + use_arg = 1; + if ((date_str != NULL) || ((date_str = optarg) == NULL)) + usage(date_usage); + break; + default: usage(date_usage); - break; - case 'u': - utc = 1; - if (putenv("TZ=UTC0") != 0) - fatalError(memory_exhausted); - break; - case 'd': - use_arg = 1; - if ((date_str != NULL) || ((date_str = optarg) == NULL)) - usage(date_usage); - break; - default: - usage(date_usage); } } @@ -188,9 +189,13 @@ int date_main(int argc, char **argv) else if (date_str == NULL) { set_time = 1; date_str = argv[optind]; - } else { + } +#if 0 + else { + errorMsg("date_str='%s' date_fmt='%s'\n", date_str, date_fmt); usage(date_usage); } +#endif /* Now we have parsed all the information except the date format which depends on whether the clock is being set or read */ @@ -217,11 +222,15 @@ int date_main(int argc, char **argv) tm = mktime(&tm_time); if (tm < 0) fatalError(invalid_date, date_str); + if ( utc ) { + if (putenv("TZ=UTC0") != 0) + fatalError(memory_exhausted); + } /* if setting time, set it */ if (set_time) { if (stime(&tm) < 0) { - fatalError("can't set date.\n"); + perrorMsg("cannot set date"); } } } diff --git a/include/applets.h b/include/applets.h index a2d73bc59..f21a49076 100644 --- a/include/applets.h +++ b/include/applets.h @@ -371,5 +371,5 @@ const struct BB_applet applets[] = { }; /* The -1 arises because of the {0,NULL,0,NULL} entry above. */ -#define NUM_APPLETS (sizeof (applets) / sizeof (struct BB_applet) - 1) +size_t NUM_APPLETS = (sizeof (applets) / sizeof (struct BB_applet) - 1); diff --git a/include/busybox.h b/include/busybox.h index 2bc1c997e..f0f8d5dd9 100644 --- a/include/busybox.h +++ b/include/busybox.h @@ -108,6 +108,9 @@ struct BB_applet { /* From busybox.c */ extern const struct BB_applet applets[]; +extern size_t NUM_APPLETS; + + extern int applet_name_compare(const void *x, const void *y); extern int ar_main(int argc, char **argv); diff --git a/lash.c b/lash.c index 1e0803f77..7f5b90602 100644 --- a/lash.c +++ b/lash.c @@ -1152,7 +1152,7 @@ static int runCommand(struct job *newJob, struct jobSet *jobList, int inBg, int int pipefds[2]; /* pipefd[0] is for reading */ struct builtInCommand *x; #ifdef BB_FEATURE_SH_STANDALONE_SHELL - struct BB_applet search_applet, *applet = applets; + struct BB_applet search_applet, *applet; #endif nextin = 0, nextout = 1; diff --git a/sh.c b/sh.c index 1e0803f77..7f5b90602 100644 --- a/sh.c +++ b/sh.c @@ -1152,7 +1152,7 @@ static int runCommand(struct job *newJob, struct jobSet *jobList, int inBg, int int pipefds[2]; /* pipefd[0] is for reading */ struct builtInCommand *x; #ifdef BB_FEATURE_SH_STANDALONE_SHELL - struct BB_applet search_applet, *applet = applets; + struct BB_applet search_applet, *applet; #endif nextin = 0, nextout = 1; diff --git a/shell/lash.c b/shell/lash.c index 1e0803f77..7f5b90602 100644 --- a/shell/lash.c +++ b/shell/lash.c @@ -1152,7 +1152,7 @@ static int runCommand(struct job *newJob, struct jobSet *jobList, int inBg, int int pipefds[2]; /* pipefd[0] is for reading */ struct builtInCommand *x; #ifdef BB_FEATURE_SH_STANDALONE_SHELL - struct BB_applet search_applet, *applet = applets; + struct BB_applet search_applet, *applet; #endif nextin = 0, nextout = 1;