diff options
-rw-r--r-- | coreutils/mv.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/coreutils/mv.c b/coreutils/mv.c index 87f4cd5..f127dfa 100644 --- a/coreutils/mv.c +++ b/coreutils/mv.c @@ -33,12 +33,13 @@ static const char mv_longopts[] ALIGN1 = "interactive\0" No_argument "i" "force\0" No_argument "f" "no-clobber\0" No_argument "n" + "verbose\0" No_argument "v" ; #endif -#define OPT_FILEUTILS_FORCE 1 -#define OPT_FILEUTILS_INTERACTIVE 2 -#define OPT_FILEUTILS_NOCLOBBER 4 +#define OPT_FORCE (1 << 0) +#define OPT_INTERACTIVE (1 << 1) +#define OPT_NOCLOBBER (1 << 2) int mv_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; int mv_main(int argc, char **argv) @@ -56,9 +57,11 @@ int mv_main(int argc, char **argv) #endif /* Need at least two arguments. * If more than one of -f, -i, -n is specified , only the final one - * takes effect (it unsets previous options). */ + * takes effect (it unsets previous options). + * -v is accepted but ignored. + */ opt_complementary = "-2:f-in:i-fn:n-fi"; - flags = getopt32(argv, "fin"); + flags = getopt32(argv, "finv"); argc -= optind; argv += optind; last = argv[argc - 1]; @@ -84,11 +87,11 @@ int mv_main(int argc, char **argv) DO_MOVE: if (dest_exists) { - if (flags & OPT_FILEUTILS_NOCLOBBER) + if (flags & OPT_NOCLOBBER) goto RET_0; - if (!(flags & OPT_FILEUTILS_FORCE) + if (!(flags & OPT_FORCE) && ((access(dest, W_OK) < 0 && isatty(0)) - || (flags & OPT_FILEUTILS_INTERACTIVE)) + || (flags & OPT_INTERACTIVE)) ) { if (fprintf(stderr, "mv: overwrite '%s'? ", dest) < 0) { goto RET_1; /* Ouch! fprintf failed! */ |