diff options
Diffstat (limited to 'coreutils/rmdir.c')
-rw-r--r-- | coreutils/rmdir.c | 27 |
1 files changed, 6 insertions, 21 deletions
diff --git a/coreutils/rmdir.c b/coreutils/rmdir.c index c04ce78f8..955740494 100644 --- a/coreutils/rmdir.c +++ b/coreutils/rmdir.c | |||
@@ -11,14 +11,6 @@ | |||
11 | //config: default y | 11 | //config: default y |
12 | //config: help | 12 | //config: help |
13 | //config: rmdir is used to remove empty directories. | 13 | //config: rmdir is used to remove empty directories. |
14 | //config: | ||
15 | //config:config FEATURE_RMDIR_LONG_OPTIONS | ||
16 | //config: bool "Enable long options" | ||
17 | //config: default y | ||
18 | //config: depends on RMDIR && LONG_OPTS | ||
19 | //config: help | ||
20 | //config: Support long options for the rmdir applet, including | ||
21 | //config: --ignore-fail-on-non-empty for compatibility with GNU rmdir. | ||
22 | 14 | ||
23 | //applet:IF_RMDIR(APPLET_NOFORK(rmdir, rmdir, BB_DIR_BIN, BB_SUID_DROP, rmdir)) | 15 | //applet:IF_RMDIR(APPLET_NOFORK(rmdir, rmdir, BB_DIR_BIN, BB_SUID_DROP, rmdir)) |
24 | 16 | ||
@@ -31,12 +23,9 @@ | |||
31 | //usage: "[OPTIONS] DIRECTORY..." | 23 | //usage: "[OPTIONS] DIRECTORY..." |
32 | //usage:#define rmdir_full_usage "\n\n" | 24 | //usage:#define rmdir_full_usage "\n\n" |
33 | //usage: "Remove DIRECTORY if it is empty\n" | 25 | //usage: "Remove DIRECTORY if it is empty\n" |
34 | //usage: IF_FEATURE_RMDIR_LONG_OPTIONS( | ||
35 | //usage: "\n -p|--parents Include parents" | ||
36 | //usage: "\n --ignore-fail-on-non-empty" | ||
37 | //usage: ) | ||
38 | //usage: IF_NOT_FEATURE_RMDIR_LONG_OPTIONS( | ||
39 | //usage: "\n -p Include parents" | 26 | //usage: "\n -p Include parents" |
27 | //usage: IF_LONG_OPTS( | ||
28 | //usage: "\n --ignore-fail-on-non-empty" | ||
40 | //usage: ) | 29 | //usage: ) |
41 | //usage: | 30 | //usage: |
42 | //usage:#define rmdir_example_usage | 31 | //usage:#define rmdir_example_usage |
@@ -49,7 +38,7 @@ | |||
49 | 38 | ||
50 | #define PARENTS (1 << 0) | 39 | #define PARENTS (1 << 0) |
51 | #define VERBOSE ((1 << 1) * ENABLE_FEATURE_VERBOSE) | 40 | #define VERBOSE ((1 << 1) * ENABLE_FEATURE_VERBOSE) |
52 | #define IGNORE_NON_EMPTY (1 << 2) | 41 | #define IGNORE_NON_EMPTY ((1 << 2) * ENABLE_LONG_OPTS) |
53 | 42 | ||
54 | int rmdir_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; | 43 | int rmdir_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; |
55 | int rmdir_main(int argc UNUSED_PARAM, char **argv) | 44 | int rmdir_main(int argc UNUSED_PARAM, char **argv) |
@@ -58,8 +47,7 @@ int rmdir_main(int argc UNUSED_PARAM, char **argv) | |||
58 | int flags; | 47 | int flags; |
59 | char *path; | 48 | char *path; |
60 | 49 | ||
61 | #if ENABLE_FEATURE_RMDIR_LONG_OPTIONS | 50 | flags = getopt32long(argv, "pv", |
62 | static const char rmdir_longopts[] ALIGN1 = | ||
63 | "parents\0" No_argument "p" | 51 | "parents\0" No_argument "p" |
64 | /* Debian etch: many packages fail to be purged or installed | 52 | /* Debian etch: many packages fail to be purged or installed |
65 | * because they desperately want this option: */ | 53 | * because they desperately want this option: */ |
@@ -67,10 +55,7 @@ int rmdir_main(int argc UNUSED_PARAM, char **argv) | |||
67 | IF_FEATURE_VERBOSE( | 55 | IF_FEATURE_VERBOSE( |
68 | "verbose\0" No_argument "v" | 56 | "verbose\0" No_argument "v" |
69 | ) | 57 | ) |
70 | ; | 58 | ); |
71 | applet_long_options = rmdir_longopts; | ||
72 | #endif | ||
73 | flags = getopt32(argv, "pv"); | ||
74 | argv += optind; | 59 | argv += optind; |
75 | 60 | ||
76 | if (!*argv) { | 61 | if (!*argv) { |
@@ -86,7 +71,7 @@ int rmdir_main(int argc UNUSED_PARAM, char **argv) | |||
86 | } | 71 | } |
87 | 72 | ||
88 | if (rmdir(path) < 0) { | 73 | if (rmdir(path) < 0) { |
89 | #if ENABLE_FEATURE_RMDIR_LONG_OPTIONS | 74 | #if ENABLE_LONG_OPTS |
90 | if ((flags & IGNORE_NON_EMPTY) && errno == ENOTEMPTY) | 75 | if ((flags & IGNORE_NON_EMPTY) && errno == ENOTEMPTY) |
91 | break; | 76 | break; |
92 | #endif | 77 | #endif |