diff options
Diffstat (limited to 'debianutils')
-rw-r--r-- | debianutils/run_parts.c | 57 |
1 files changed, 25 insertions, 32 deletions
diff --git a/debianutils/run_parts.c b/debianutils/run_parts.c index 6be83edf9..916aa90e0 100644 --- a/debianutils/run_parts.c +++ b/debianutils/run_parts.c @@ -21,26 +21,24 @@ * taken from debian-utils. I've only removed the long options and the * report mode. As the original run-parts support only long options, I've * broken compatibility because the BusyBox policy doesn't allow them. - * The supported options are: - * -t test. Print the name of the files to be executed, without - * execute them. - * -a ARG argument. Pass ARG as an argument the program executed. It can - * be repeated to pass multiple arguments. - * -u MASK umask. Set the umask of the program executed to MASK. - * -e exit as soon as a script returns with a non-zero exit code */ //usage:#define run_parts_trivial_usage -//usage: "[-t"IF_FEATURE_RUN_PARTS_FANCY("l")"] [-a ARG]... [-u MASK] [-e] DIRECTORY" +//usage: "[-a ARG]... [-u UMASK] " +//usage: IF_FEATURE_RUN_PARTS_LONG_OPTIONS("[--reverse] [--test] [-−exit−on−error] "IF_FEATURE_RUN_PARTS_FANCY("[--list] ")) +//usage: "DIRECTORY" //usage:#define run_parts_full_usage "\n\n" //usage: "Run a bunch of scripts in DIRECTORY\n" -//usage: "\n -t Dry run" +//usage: "\n -a ARG Pass ARG as argument to scripts" +//usage: "\n -u UMASK Set UMASK before running scripts" +//usage: IF_FEATURE_RUN_PARTS_LONG_OPTIONS( +//usage: "\n -−reverse Reverse execution order" +//usage: "\n --test Dry run" +//usage: "\n -−exit−on−error Exit if a script exits with non-zero" //usage: IF_FEATURE_RUN_PARTS_FANCY( -//usage: "\n -l Print names of matching files even if they are not executable" +//usage: "\n --list Print names of matching files even if they are not executable" +//usage: ) //usage: ) -//usage: "\n -a ARG Pass ARG as argument to programs" -//usage: "\n -u MASK Set umask to MASK before running programs" -//usage: "\n -e Exit as soon as a script returns with a non-zero exit code" //usage: //usage:#define run_parts_example_usage //usage: "$ run-parts -a start /etc/init.d\n" @@ -72,20 +70,15 @@ struct globals { enum { NUM_CMD = (COMMON_BUFSIZE - sizeof(G)) / sizeof(cmd[0]) - 1 }; enum { - OPT_r = (1 << 0), - OPT_a = (1 << 1), - OPT_u = (1 << 2), - OPT_t = (1 << 3), - OPT_e = (1 << 4), - OPT_l = (1 << 5) * ENABLE_FEATURE_RUN_PARTS_FANCY, + OPT_a = (1 << 0), + OPT_u = (1 << 1), + OPT_r = (1 << 2) * ENABLE_FEATURE_RUN_PARTS_LONG_OPTIONS, + OPT_t = (1 << 3) * ENABLE_FEATURE_RUN_PARTS_LONG_OPTIONS, + OPT_e = (1 << 4) * ENABLE_FEATURE_RUN_PARTS_LONG_OPTIONS, + OPT_l = (1 << 5) * ENABLE_FEATURE_RUN_PARTS_LONG_OPTIONS + * ENABLE_FEATURE_RUN_PARTS_FANCY, }; -#if ENABLE_FEATURE_RUN_PARTS_FANCY -#define list_mode (option_mask32 & OPT_l) -#else -#define list_mode 0 -#endif - /* Is this a valid filename (upper/lower alpha, digits, * underscores, and hyphens only?) */ @@ -113,7 +106,7 @@ static int FAST_FUNC act(const char *file, struct stat *statbuf, void *args UNUS if (depth == 2 && ( !(statbuf->st_mode & (S_IFREG | S_IFLNK)) || invalid_name(file) - || (!list_mode && access(file, X_OK) != 0)) + || (!(option_mask32 & OPT_l) && access(file, X_OK) != 0)) ) { return SKIP; } @@ -129,12 +122,12 @@ static int FAST_FUNC act(const char *file, struct stat *statbuf, void *args UNUS static const char runparts_longopts[] ALIGN1 = "arg\0" Required_argument "a" "umask\0" Required_argument "u" - "test\0" No_argument "t" - "exit-on-error\0" No_argument "e" -#if ENABLE_FEATURE_RUN_PARTS_FANCY - "list\0" No_argument "l" - "reverse\0" No_argument "r" //TODO: "verbose\0" No_argument "v" + "reverse\0" No_argument "\xf0" + "test\0" No_argument "\xf1" + "exit-on-error\0" No_argument "\xf2" +#if ENABLE_FEATURE_RUN_PARTS_FANCY + "list\0" No_argument "\xf3" #endif ; #endif @@ -154,7 +147,7 @@ int run_parts_main(int argc UNUSED_PARAM, char **argv) #endif /* We require exactly one argument: the directory name */ opt_complementary = "=1:a::"; - getopt32(argv, "ra:u:te"IF_FEATURE_RUN_PARTS_FANCY("l"), &arg_list, &umask_p); + getopt32(argv, "a:u:", &arg_list, &umask_p); umask(xstrtou_range(umask_p, 8, 0, 07777)); |