Hi all,

This patch adds a -v option to mv(1) for more verbose output.

        $ touch a
        $ mv -v a b
        'a' -> 'b'
        $ mkdir c
        $ mv -v b c
        'b' -> 'c/b'
    $ mv -v c d
    'e' -> 'd'

And here is an example of the output of the situation mentioned in the
'caveats' section in the manpage:

        $ touch f g; mkdir -p d/f
        $ mv -v f g d
        mv: rename f to d/f: Is a directory
        'g' -> 'd/g'
        $ echo $?
        1

Kind regards,

Job

diff --git bin/mv/mv.1 bin/mv/mv.1
index cb6c9d92673..fc8e642017e 100644
--- bin/mv/mv.1
+++ bin/mv/mv.1
@@ -103,6 +103,8 @@ The
 option overrides any previous
 .Fl f
 options.
+.It Fl v
+Explain what is being done.
 .El
 .Pp
 The
diff --git bin/mv/mv.c bin/mv/mv.c
index 003aca59e87..fa8654b50e4 100644
--- bin/mv/mv.c
+++ bin/mv/mv.c
@@ -51,7 +51,7 @@
 
 extern char *__progname;
 
-int fflg, iflg;
+int fflg, iflg, vflg;
 int stdin_ok;
 
 extern int cpmain(int argc, char **argv);
@@ -71,7 +71,7 @@ main(int argc, char *argv[])
        int ch;
        char path[PATH_MAX];
 
-       while ((ch = getopt(argc, argv, "if")) != -1)
+       while ((ch = getopt(argc, argv, "ifv")) != -1)
                switch (ch) {
                case 'i':
                        fflg = 0;
@@ -81,6 +81,9 @@ main(int argc, char *argv[])
                        iflg = 0;
                        fflg = 1;
                        break;
+               case 'v':
+                       vflg = 1;
+                       break;
                default:
                        usage();
                }
@@ -208,8 +211,11 @@ do_move(char *from, char *to)
         *      message to standard error, and do nothing more with the
         *      current source file...
         */
-       if (!rename(from, to))
+       if (!rename(from, to)) {
+               if (vflg)
+                       (void)fprintf(stdout, "'%s' -> '%s'\n", from, to);
                return (0);
+       }
 
        if (errno != EXDEV) {
                warn("rename %s to %s", from, to);
@@ -339,6 +345,10 @@ err:               if (unlink(to))
                warn("%s: remove", from);
                return (1);
        }
+
+       if (vflg)
+               (void)fprintf(stdout, "'%s' -> '%s'\n", from, to);
+
        return (0);
 }
 
@@ -362,14 +372,17 @@ mvcopy(char *from, char *to)
                _exit(1);
        }
 
+       if (vflg)
+               (void)fprintf(stdout, "'%s' -> '%s'\n", from, to);
+
        return (0);
 }
 
 void
 usage(void)
 {
-       (void)fprintf(stderr, "usage: %s [-fi] source target\n", __progname);
-       (void)fprintf(stderr, "       %s [-fi] source ... directory\n",
+       (void)fprintf(stderr, "usage: %s [-fiv] source target\n", __progname);
+       (void)fprintf(stderr, "       %s [-fiv] source ... directory\n",
            __progname);
        exit(1);
 }

Reply via email to