summaryrefslogtreecommitdiff
path: root/src/commands/mv.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/commands/mv.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/commands/mv.c b/src/commands/mv.c
index f3e759a..d203607 100644
--- a/src/commands/mv.c
+++ b/src/commands/mv.c
@@ -38,18 +38,24 @@ static int short_arg(char c, char* next) {
}
static void mv_dir(bool exists) {
+
+ char c;
+
if (exists && flags.dont_overwrite) {
if (flags.verbose) output("skipping '%s'; overwrise is false", get_path_buffer_2());
return;
}
+
if (exists && flags.prompt) {
fprintf(stderr, "overwrite '%s'? ", get_path_buffer_2());
fflush(stderr);
- char c = getchar();
+
+ c = getchar();
if (c != 'y' && c != 'Y') {
if (flags.verbose) output("skipping...");
return;
}
+
}
if (rename(get_path_buffer(), get_path_buffer_2()) < 0) {
@@ -61,12 +67,15 @@ static void mv_dir(bool exists) {
COMMAND(mv) {
+ int start, dest, i;
+ struct stat s;
+
flags.refuse_if_dir = false;
flags.dont_overwrite = false;
flags.prompt = false;
flags.verbose = false;
- int start = parse_args(argc, argv, help, short_arg, NULL);
+ start = parse_args(argc, argv, help, short_arg, NULL);
if (argc - start < 2) {
global_help(help);
@@ -74,8 +83,7 @@ COMMAND(mv) {
push_path_buffer_2(argv[argc-1]);
- bool dest = true;
- struct stat s;
+ dest = true;
if (lstat(get_path_buffer_2(), &s) < 0 && argc - start > 2) {
dest = false;
error("cannot stat '%s': %s", get_path_buffer_2(), strerror(errno));
@@ -97,7 +105,7 @@ COMMAND(mv) {
error("target '%s': Is Not A Directory", get_path_buffer_2());
}
- for (int i = start; i < argc - 1; i++) {
+ for (i = start; i < argc - 1; i++) {
int save = push_path_buffer(argv[i]);
bool exists = lstat(get_path_buffer(), &s) >= 0;
mv_dir(exists);