Add the capability for dump to print timestamps on all informational
messages.
This commit is contained in:
parent
eefd77845d
commit
a152a6a92a
@ -1,4 +1,4 @@
|
||||
.\" $NetBSD: dump.8,v 1.38 2001/08/14 06:51:36 lukem Exp $
|
||||
.\" $NetBSD: dump.8,v 1.39 2001/10/15 13:25:33 blymn Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 1980, 1991, 1993
|
||||
.\" Regents of the University of California.
|
||||
@ -43,7 +43,7 @@
|
||||
.Nd file system backup
|
||||
.Sh SYNOPSIS
|
||||
.Nm ""
|
||||
.Op Fl 0123456789ceFnSu
|
||||
.Op Fl 0123456789ceFnStu
|
||||
.Op Fl B Ar records
|
||||
.Op Fl b Ar blocksize
|
||||
.Op Fl d Ar density
|
||||
@ -227,6 +227,12 @@ The default tape length is 2300 feet.
|
||||
.It Fl S
|
||||
Display an estimate of the backup size and the number of tapes
|
||||
required, and exit without actually performing the dump.
|
||||
.It Fl t
|
||||
All informational log messages printed by
|
||||
.Nm
|
||||
will have the time prepended to them. Also, the completion time
|
||||
interval estimations will have the estimated time at which the dump
|
||||
will complete printed at the end of the line.
|
||||
.It Fl T Ar date
|
||||
Use the specified date as the starting time for the dump
|
||||
instead of the time determined from looking in
|
||||
@ -419,6 +425,24 @@ rather than
|
||||
to invoke
|
||||
.Xr rmt 8
|
||||
on the remote machine.
|
||||
.It Ev TIMEFORMAT
|
||||
can be used to control the format of the timestamps produced by the
|
||||
.Fl t
|
||||
option.
|
||||
.Ev TIMEFORMAT
|
||||
is a string containing embedded formatting commands for
|
||||
.Xr strftime 3 .
|
||||
The total formatted string is limited to about 80 characters, if this
|
||||
limit is exceeded then
|
||||
.Qo
|
||||
ERROR: TIMEFORMAT too long, reverting to default
|
||||
.Qc
|
||||
will be printed and the time format will revert to the default one. If
|
||||
.Ev TIMEFORMAT
|
||||
is not set then the format string defaults to
|
||||
.Qo
|
||||
%T %Z
|
||||
.Qc
|
||||
.El
|
||||
.Sh FILES
|
||||
.Bl -tag -width /etc/dumpdates -compact
|
||||
@ -444,7 +468,8 @@ to find group
|
||||
.Xr fstab 5 ,
|
||||
.Xr restore 8 ,
|
||||
.Xr rmt 8 ,
|
||||
.Xr st 4
|
||||
.Xr st 4 ,
|
||||
.Xr environ 7
|
||||
.Sh DIAGNOSTICS
|
||||
Many, and verbose.
|
||||
.Pp
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: dump.h,v 1.28 2001/08/14 05:44:44 lukem Exp $ */
|
||||
/* $NetBSD: dump.h,v 1.29 2001/10/15 13:25:34 blymn Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1980, 1993
|
||||
@ -111,6 +111,7 @@ int nonodump; /* if set, do not honor UF_NODUMP user flags */
|
||||
|
||||
extern int density; /* density in 0.1" units */
|
||||
extern int notify; /* notify operator flag */
|
||||
extern int timestamp; /* timestamp messages */
|
||||
extern int blockswritten; /* number of blocks written on current tape */
|
||||
extern int tapeno; /* current tape number */
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: main.c,v 1.38 2001/08/14 06:51:37 lukem Exp $ */
|
||||
/* $NetBSD: main.c,v 1.39 2001/10/15 13:25:34 blymn Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1980, 1991, 1993, 1994
|
||||
@ -43,7 +43,7 @@ __COPYRIGHT("@(#) Copyright (c) 1980, 1991, 1993, 1994\n\
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)main.c 8.6 (Berkeley) 5/1/95";
|
||||
#else
|
||||
__RCSID("$NetBSD: main.c,v 1.38 2001/08/14 06:51:37 lukem Exp $");
|
||||
__RCSID("$NetBSD: main.c,v 1.39 2001/10/15 13:25:34 blymn Exp $");
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
|
||||
@ -81,6 +81,7 @@ __RCSID("$NetBSD: main.c,v 1.38 2001/08/14 06:51:37 lukem Exp $");
|
||||
#include "pathnames.h"
|
||||
|
||||
gid_t egid; /* Retain tty privs for notification */
|
||||
int timestamp; /* print message timestamps */
|
||||
int notify; /* notify operator flag */
|
||||
int blockswritten; /* number of blocks written on current tape */
|
||||
int tapeno; /* current tape number */
|
||||
@ -92,6 +93,8 @@ long blocksperfile; /* output blocks per file */
|
||||
char *host; /* remote host (if any) */
|
||||
int readcache = -1; /* read cache size (in readblksize blks) */
|
||||
int readblksize = 32 * 1024; /* read block size */
|
||||
char default_time_string[] = "%T %Z"; /* default timestamp string */
|
||||
char *time_string = default_time_string; /* timestamp string */
|
||||
|
||||
int main(int, char *[]);
|
||||
static long numarg(char *, long, long);
|
||||
@ -115,10 +118,14 @@ main(int argc, char *argv[])
|
||||
char *mountpoint;
|
||||
int just_estimate = 0;
|
||||
char labelstr[LBLSIZE];
|
||||
|
||||
char *new_time_format;
|
||||
|
||||
spcl.c_date = 0;
|
||||
(void)time((time_t *)&spcl.c_date);
|
||||
|
||||
tzset(); /* set up timezone for strftime */
|
||||
if ((new_time_format = getenv("TIMEFORMAT")) != NULL)
|
||||
time_string = new_time_format;
|
||||
|
||||
/* Save setgid bit for use later */
|
||||
egid = getegid();
|
||||
setegid(getgid());
|
||||
@ -132,13 +139,14 @@ main(int argc, char *argv[])
|
||||
if (TP_BSIZE / DEV_BSIZE == 0 || TP_BSIZE % DEV_BSIZE != 0)
|
||||
quit("TP_BSIZE must be a multiple of DEV_BSIZE\n");
|
||||
level = '0';
|
||||
|
||||
timestamp = 0;
|
||||
|
||||
if (argc < 2)
|
||||
usage();
|
||||
|
||||
obsolete(&argc, &argv);
|
||||
while ((ch = getopt(argc, argv,
|
||||
"0123456789B:b:cd:eFf:h:k:L:nr:s:ST:uWw")) != -1)
|
||||
"0123456789B:b:cd:eFf:h:k:L:nr:s:StT:uWw")) != -1)
|
||||
switch (ch) {
|
||||
/* dump level */
|
||||
case '0': case '1': case '2': case '3': case '4':
|
||||
@ -217,6 +225,10 @@ main(int argc, char *argv[])
|
||||
just_estimate = 1;
|
||||
break;
|
||||
|
||||
case 't':
|
||||
timestamp = 1;
|
||||
break;
|
||||
|
||||
case 'T': /* time of last dump */
|
||||
spcl.c_ddate = unctime(optarg);
|
||||
if (spcl.c_ddate < 0) {
|
||||
@ -595,7 +607,7 @@ usage(void)
|
||||
{
|
||||
|
||||
(void)fprintf(stderr, "%s\n%s\n%s\n%s\n",
|
||||
"usage: dump [-0123456789ceFnu] [-B records] [-b blocksize] [-d density]",
|
||||
"usage: dump [-0123456789ceFntu] [-B records] [-b blocksize] [-d density]",
|
||||
" [-f file] [-h level] [-k read block size] [-L label]",
|
||||
" [-r read cache size] [-s feet] [-T date] file system",
|
||||
" dump [-W | -w]");
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: optr.c,v 1.18 2001/08/08 16:49:54 david Exp $ */
|
||||
/* $NetBSD: optr.c,v 1.19 2001/10/15 13:25:34 blymn Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1980, 1988, 1993
|
||||
@ -38,7 +38,7 @@
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)optr.c 8.2 (Berkeley) 1/6/94";
|
||||
#else
|
||||
__RCSID("$NetBSD: optr.c,v 1.18 2001/08/08 16:49:54 david Exp $");
|
||||
__RCSID("$NetBSD: optr.c,v 1.19 2001/10/15 13:25:34 blymn Exp $");
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
|
||||
@ -69,6 +69,10 @@ struct fstab *allocfsent(struct fstab *);
|
||||
int datesort(const void *, const void *);
|
||||
static void sendmes(char *, char *);
|
||||
extern gid_t egid;
|
||||
extern char *time_string;
|
||||
extern char default_time_string[];
|
||||
|
||||
static void do_timestamp(time_t time, char *msg);
|
||||
|
||||
/*
|
||||
* Query the operator; This previously-fascist piece of code
|
||||
@ -304,6 +308,29 @@ DUMP: NEEDS ATTENTION: ",
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* print out the timestamp string to stderr.
|
||||
*/
|
||||
#define STAMP_LENGTH 80
|
||||
|
||||
static void
|
||||
do_timestamp(time_t time, char *msg)
|
||||
{
|
||||
struct tm tm_time;
|
||||
char then[STAMP_LENGTH + 1];
|
||||
|
||||
(void) localtime_r(&time, &tm_time);
|
||||
if (strftime(then, STAMP_LENGTH, time_string, &tm_time) == 0) {
|
||||
time_string = default_time_string;
|
||||
strftime(then, STAMP_LENGTH, time_string, &tm_time);
|
||||
fprintf(stderr,
|
||||
"DUMP: ERROR: TIMEFORMAT too long, reverting to default\n");
|
||||
}
|
||||
|
||||
fprintf(stderr, msg, then);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* print out an estimate of the amount of time left to do the dump
|
||||
*/
|
||||
@ -323,18 +350,31 @@ timeest(void)
|
||||
deltat = tstart_writing - tnow +
|
||||
(1.0 * (tnow - tstart_writing))
|
||||
/ blockswritten * tapesize;
|
||||
msg("%3.2f%% done, finished in %ld:%02ld\n",
|
||||
|
||||
msg("%3.2f%% done, finished in %ld:%02ld",
|
||||
(blockswritten * 100.0) / tapesize,
|
||||
(long)(deltat / 3600), (long)((deltat % 3600) / 60));
|
||||
|
||||
if (timestamp == 1)
|
||||
do_timestamp(tnow + deltat, " (at %s)");
|
||||
|
||||
fprintf(stderr, "\n");
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
msg(const char *fmt, ...)
|
||||
{
|
||||
time_t tnow;
|
||||
va_list ap;
|
||||
|
||||
(void) fprintf(stderr," DUMP: ");
|
||||
fprintf(stderr, " ");
|
||||
if (timestamp == 1) {
|
||||
(void) time((time_t *) &tnow);
|
||||
do_timestamp(tnow, "[%s] ");
|
||||
}
|
||||
|
||||
(void) fprintf(stderr,"DUMP: ");
|
||||
#ifdef TDEBUG
|
||||
(void) fprintf(stderr, "pid=%d ", getpid());
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user