aboutsummaryrefslogtreecommitdiff
path: root/coreutils/mv.c
diff options
context:
space:
mode:
Diffstat (limited to 'coreutils/mv.c')
-rw-r--r--coreutils/mv.c38
1 files changed, 12 insertions, 26 deletions
diff --git a/coreutils/mv.c b/coreutils/mv.c
index 147dd3bb2..7f6e9fef5 100644
--- a/coreutils/mv.c
+++ b/coreutils/mv.c
@@ -16,11 +16,6 @@
16//config: default y 16//config: default y
17//config: help 17//config: help
18//config: mv is used to move or rename files or directories. 18//config: mv is used to move or rename files or directories.
19//config:
20//config:config FEATURE_MV_LONG_OPTIONS
21//config: bool "Enable long options"
22//config: default y
23//config: depends on MV && LONG_OPTS
24 19
25//applet:IF_MV(APPLET(mv, BB_DIR_BIN, BB_SUID_DROP)) 20//applet:IF_MV(APPLET(mv, BB_DIR_BIN, BB_SUID_DROP))
26 21
@@ -41,23 +36,6 @@
41#include "libbb.h" 36#include "libbb.h"
42#include "libcoreutils/coreutils.h" 37#include "libcoreutils/coreutils.h"
43 38
44#if ENABLE_FEATURE_MV_LONG_OPTIONS
45static const char mv_longopts[] ALIGN1 =
46 "interactive\0" No_argument "i"
47 "force\0" No_argument "f"
48 "no-clobber\0" No_argument "n"
49 IF_FEATURE_VERBOSE(
50 "verbose\0" No_argument "v"
51 )
52 ;
53#endif
54
55#define OPT_FORCE (1 << 0)
56#define OPT_INTERACTIVE (1 << 1)
57#define OPT_NOCLOBBER (1 << 2)
58#define OPT_VERBOSE ((1 << 3) * ENABLE_FEATURE_VERBOSE)
59
60
61int mv_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; 39int mv_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
62int mv_main(int argc, char **argv) 40int mv_main(int argc, char **argv)
63{ 41{
@@ -69,15 +47,23 @@ int mv_main(int argc, char **argv)
69 int status = 0; 47 int status = 0;
70 int copy_flag = 0; 48 int copy_flag = 0;
71 49
72#if ENABLE_FEATURE_MV_LONG_OPTIONS 50#define OPT_FORCE (1 << 0)
73 applet_long_options = mv_longopts; 51#define OPT_INTERACTIVE (1 << 1)
74#endif 52#define OPT_NOCLOBBER (1 << 2)
53#define OPT_VERBOSE ((1 << 3) * ENABLE_FEATURE_VERBOSE)
75 /* Need at least two arguments. 54 /* Need at least two arguments.
76 * If more than one of -f, -i, -n is specified , only the final one 55 * If more than one of -f, -i, -n is specified , only the final one
77 * takes effect (it unsets previous options). 56 * takes effect (it unsets previous options).
78 */ 57 */
79 opt_complementary = "-2:f-in:i-fn:n-fi"; 58 opt_complementary = "-2:f-in:i-fn:n-fi";
80 flags = getopt32(argv, "finv"); 59 flags = getopt32long(argv, "finv",
60 "interactive\0" No_argument "i"
61 "force\0" No_argument "f"
62 "no-clobber\0" No_argument "n"
63 IF_FEATURE_VERBOSE(
64 "verbose\0" No_argument "v"
65 )
66 );
81 argc -= optind; 67 argc -= optind;
82 argv += optind; 68 argv += optind;
83 last = argv[argc - 1]; 69 last = argv[argc - 1];