Add the -n option, which automatically answers "no" to the overwrite question.

This commit is contained in:
David E. O'Brien 2002-03-22 07:45:36 +00:00
parent 98b28ee5b4
commit dce742c573
2 changed files with 27 additions and 6 deletions

View File

@ -43,7 +43,7 @@
.Nd move files
.Sh SYNOPSIS
.Nm
.Op Fl f | Fl i
.Op Fl f | Fl i | Fl n
.Op Fl v
.Ar source target
.Nm
@ -81,6 +81,8 @@ path.
.Fl f
option overrides any previous
.Fl i
or
.Fl n
options.)
.It Fl i
Cause
@ -96,6 +98,17 @@ the move is attempted.
.Fl i
option overrides any previous
.Fl f
or
.Fl n
options.)
.It Fl n
Do not overwriting an existing file.
(The
.Fl n
option overrides any previous
.Fl f
or
.Fl i
options.)
.It Fl v
Cause

View File

@ -68,7 +68,7 @@ static const char rcsid[] =
#include "pathnames.h"
int fflg, iflg, vflg;
int fflg, iflg, nflg, vflg;
int copy(char *, char *);
int do_move(char *, char *);
@ -85,15 +85,19 @@ main(int argc, char *argv[])
int ch;
char path[PATH_MAX];
while ((ch = getopt(argc, argv, "fiv")) != -1)
while ((ch = getopt(argc, argv, "finv")) != -1)
switch (ch) {
case 'i':
iflg = 1;
fflg = 0;
fflg = nflg = 0;
break;
case 'f':
fflg = 1;
iflg = 0;
iflg = nflg = 0;
break;
case 'n':
nflg = 1;
fflg = iflg = 0;
break;
case 'v':
vflg = 1;
@ -172,7 +176,11 @@ do_move(char *from, char *to)
#define YESNO "(y/n [n]) "
ask = 0;
if (iflg) {
if (nflg) {
if (vflg)
printf("%s not overwritten\n", to);
return (0);
} else if (iflg) {
(void)fprintf(stderr, "overwrite %s? %s", to, YESNO);
ask = 1;
} else if (access(to, W_OK) && !stat(to, &sb)) {