diff options
Diffstat (limited to '')
-rw-r--r-- | src/commands/mv.c | 18 |
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); |