> Date: Sun, 25 Jun 2017 14:06:11 +0200
> From: Job Snijders <[email protected]>
> 
> 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,

This is not something we want for OpenBSD.

> 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