1303 files changed, 32187 insertions, 57138 deletions
diff --git a/debianutils/run_parts.c b/debianutils/run_parts.c index 527fae2..0bb666a 100644 --- a/debianutils/run_parts.c +++ b/debianutils/run_parts.c @@ -22,6 +22,40 @@ * report mode. As the original run-parts support only long options, I've * broken compatibility because the BusyBox policy doesn't allow them. */ +//config:config RUN_PARTS +//config: bool "run-parts" +//config: default y +//config: help +//config: run-parts is a utility designed to run all the scripts in a directory. +//config: +//config: It is useful to set up a directory like cron.daily, where you need to +//config: execute all the scripts in that directory. +//config: +//config: In this implementation of run-parts some features (such as report +//config: mode) are not implemented. +//config: +//config: Unless you know that run-parts is used in some of your scripts +//config: you can safely say N here. +//config: +//config:config FEATURE_RUN_PARTS_LONG_OPTIONS +//config: bool "Enable long options" +//config: default y +//config: depends on RUN_PARTS && LONG_OPTS +//config: help +//config: Support long options for the run-parts applet. +//config: +//config:config FEATURE_RUN_PARTS_FANCY +//config: bool "Support additional arguments" +//config: default y +//config: depends on RUN_PARTS +//config: help +//config: Support additional options: +//config: -l --list print the names of the all matching files (not +//config: limited to executables), but don't actually run them. + +//applet:IF_RUN_PARTS(APPLET_ODDNAME(run-parts, run_parts, BB_DIR_BIN, BB_SUID_DROP, run_parts)) + +//kbuild:lib-$(CONFIG_RUN_PARTS) += run_parts.o //usage:#define run_parts_trivial_usage //usage: "[-a ARG]... [-u UMASK] " @@ -55,17 +89,18 @@ //usage: "+ shutdown -h +4m" #include "libbb.h" +#include "common_bufsiz.h" struct globals { char **names; int cur; char *cmd[2 /* using 1 provokes compiler warning */]; } FIX_ALIASING; -#define G (*(struct globals*)&bb_common_bufsiz1) +#define G (*(struct globals*)bb_common_bufsiz1) #define names (G.names) #define cur (G.cur ) #define cmd (G.cmd ) -#define INIT_G() do { } while (0) +#define INIT_G() do { setup_common_bufsiz(); } while (0) enum { NUM_CMD = (COMMON_BUFSIZE - sizeof(G)) / sizeof(cmd[0]) - 1 }; @@ -146,8 +181,8 @@ int run_parts_main(int argc UNUSED_PARAM, char **argv) applet_long_options = runparts_longopts; #endif /* We require exactly one argument: the directory name */ - opt_complementary = "=1:a::"; - getopt32(argv, "a:u:", &arg_list, &umask_p); + opt_complementary = "=1"; + getopt32(argv, "a:*u:", &arg_list, &umask_p); umask(xstrtou_range(umask_p, 8, 0, 07777)); @@ -189,7 +224,7 @@ int run_parts_main(int argc UNUSED_PARAM, char **argv) if (ret < 0) bb_perror_msg("can't execute '%s'", name); else /* ret > 0 */ - bb_error_msg("%s exited with code %d", name, ret & 0xff); + bb_error_msg("%s: exit status %u", name, ret & 0xff); if (option_mask32 & OPT_e) xfunc_die(); |