Add a verbose mode to show what files are being copied.
Idea taken from obrien. Reviewed by: obrien
This commit is contained in:
parent
1713064734
commit
4506e9078e
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=50381
@ -33,7 +33,7 @@
|
||||
.\" SUCH DAMAGE.
|
||||
.\"
|
||||
.\" @(#)cp.1 8.3 (Berkeley) 4/18/94
|
||||
.\" $Id: cp.1,v 1.11 1998/10/13 08:52:29 jkoshy Exp $
|
||||
.\" $Id: cp.1,v 1.12 1999/05/08 10:19:25 kris Exp $
|
||||
.\"
|
||||
.Dd April 18, 1994
|
||||
.Dt CP 1
|
||||
@ -49,6 +49,7 @@
|
||||
.Oc
|
||||
.Op Fl f | i
|
||||
.Op Fl p
|
||||
.Op Fl v
|
||||
.Ar source_file target_file
|
||||
.Nm cp
|
||||
.Oo
|
||||
@ -57,6 +58,7 @@
|
||||
.Oc
|
||||
.Op Fl f | i
|
||||
.Op Fl p
|
||||
.Op Fl v
|
||||
.Ar source_file ... target_directory
|
||||
.Sh DESCRIPTION
|
||||
In the first synopsis form, the
|
||||
@ -145,6 +147,10 @@ If the source file has both its set user ID and set group ID bits on,
|
||||
and either the user ID or group ID cannot be preserved, neither
|
||||
the set user ID nor set group ID bits are preserved in the copy's
|
||||
permissions.
|
||||
.It Fl v
|
||||
Cause
|
||||
.Nm
|
||||
to be verbose, showing files as they are copied.
|
||||
.El
|
||||
.Pp
|
||||
For each destination file that already exists, its contents are
|
||||
|
12
bin/cp/cp.c
12
bin/cp/cp.c
@ -45,7 +45,7 @@ static char const copyright[] =
|
||||
static char sccsid[] = "@(#)cp.c 8.2 (Berkeley) 4/1/94";
|
||||
#endif
|
||||
static const char rcsid[] =
|
||||
"$Id: cp.c,v 1.19 1999/05/08 10:19:27 kris Exp $";
|
||||
"$Id: cp.c,v 1.20 1999/07/10 05:46:44 kris Exp $";
|
||||
#endif /* not lint */
|
||||
|
||||
/*
|
||||
@ -69,6 +69,7 @@ static const char rcsid[] =
|
||||
#include <err.h>
|
||||
#include <errno.h>
|
||||
#include <fts.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
@ -82,7 +83,7 @@ static const char rcsid[] =
|
||||
PATH_T to = { to.p_path, "", "" };
|
||||
|
||||
uid_t myuid;
|
||||
int Rflag, iflag, pflag, rflag, fflag;
|
||||
int Rflag, iflag, pflag, rflag, fflag, vflag;
|
||||
int myumask;
|
||||
|
||||
enum op { FILE_TO_FILE, FILE_TO_DIR, DIR_TO_DNE };
|
||||
@ -101,7 +102,7 @@ main(argc, argv)
|
||||
char *target;
|
||||
|
||||
Hflag = Lflag = Pflag = 0;
|
||||
while ((ch = getopt(argc, argv, "HLPRfipr")) != -1)
|
||||
while ((ch = getopt(argc, argv, "HLPRfiprv")) != -1)
|
||||
switch (ch) {
|
||||
case 'H':
|
||||
Hflag = 1;
|
||||
@ -132,6 +133,9 @@ main(argc, argv)
|
||||
case 'r':
|
||||
rflag = 1;
|
||||
break;
|
||||
case 'v':
|
||||
vflag = 1;
|
||||
break;
|
||||
default:
|
||||
usage();
|
||||
break;
|
||||
@ -374,6 +378,8 @@ copy(argv, type, fts_options)
|
||||
if (mkdir(to.p_path,
|
||||
curr->fts_statp->st_mode | S_IRWXU) < 0)
|
||||
err(1, "%s", to.p_path);
|
||||
if (vflag)
|
||||
printf("%s -> %s\n", curr->fts_path, to.p_path);
|
||||
} else if (!S_ISDIR(to_stat.st_mode)) {
|
||||
errno = ENOTDIR;
|
||||
err(1, "%s", to.p_path);
|
||||
|
@ -31,7 +31,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)extern.h 8.2 (Berkeley) 4/1/94
|
||||
* $Id$
|
||||
* $Id: extern.h,v 1.7 1997/02/22 14:01:33 peter Exp $
|
||||
*/
|
||||
|
||||
typedef struct {
|
||||
@ -42,7 +42,7 @@ typedef struct {
|
||||
|
||||
extern PATH_T to;
|
||||
extern uid_t myuid;
|
||||
extern int iflag, pflag, fflag, myumask;
|
||||
extern int iflag, pflag, fflag, vflag, myumask;
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
|
@ -36,7 +36,7 @@
|
||||
static char sccsid[] = "@(#)utils.c 8.3 (Berkeley) 4/1/94";
|
||||
#endif
|
||||
static const char rcsid[] =
|
||||
"$Id: utils.c,v 1.22 1999/04/25 21:13:32 imp Exp $";
|
||||
"$Id: utils.c,v 1.23 1999/05/08 10:19:29 kris Exp $";
|
||||
#endif /* not lint */
|
||||
|
||||
#include <sys/param.h>
|
||||
@ -118,6 +118,9 @@ copy_file(entp, dne)
|
||||
|
||||
rval = 0;
|
||||
|
||||
if (vflag)
|
||||
printf("%s -> %s\n",entp->fts_path, to.p_path);
|
||||
|
||||
/*
|
||||
* Mmap and write if less than 8M (the limit is so we don't totally
|
||||
* trash memory on big files. This is really a minor hack, but it
|
||||
@ -321,7 +324,7 @@ void
|
||||
usage()
|
||||
{
|
||||
(void)fprintf(stderr, "%s\n%s\n",
|
||||
"usage: cp [-R [-H | -L | -P]] [-f | -i] [-p] src target",
|
||||
" cp [-R [-H | -L | -P]] [-f | -i] [-p] src1 ... srcN directory");
|
||||
"usage: cp [-R [-H | -L | -P]] [-f | -i] [-p] [-v] src target",
|
||||
" cp [-R [-H | -L | -P]] [-f | -i] [-p] [-v] src1 ... srcN directory");
|
||||
exit(1);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user