diff --git a/debianutils/run_parts.c b/debianutils/run_parts.c
index 6be83ed..916aa90 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:     "\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:
 //usage:#define run_parts_example_usage
 //usage:       "$ run-parts -a start /etc/init.d\n"
@@ -72,20 +70,15 @@
 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 @@
 	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 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 @@
 #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));
 
