summaryrefslogtreecommitdiffstats
path: root/sbin
diff options
context:
space:
mode:
authordillon <dillon@FreeBSD.org>2001-10-28 20:01:38 +0000
committerdillon <dillon@FreeBSD.org>2001-10-28 20:01:38 +0000
commit41f4e0eb175e0e1ec2c7fa0af905e97ed76996c7 (patch)
tree2aac20490200e00aba6e36dc6eaec794b658377d /sbin
parent5b521f3c4f8da9d35e865fb9daa7a51e4fa00adb (diff)
downloadFreeBSD-src-41f4e0eb175e0e1ec2c7fa0af905e97ed76996c7.zip
FreeBSD-src-41f4e0eb175e0e1ec2c7fa0af905e97ed76996c7.tar.gz
Make the protocol/dumprestore.h header match restore's idea of the dump
header for the case where sizeof(time_t) != sizeof(int). dumprestore.h was embedding time_t when it should have been embedding int32_t. Use time_to_time32() and time32_to_time() to convert between the protocoll/file-format time and time_t.
Diffstat (limited to 'sbin')
-rw-r--r--sbin/dump/itime.c16
-rw-r--r--sbin/dump/main.c23
-rw-r--r--sbin/restore/tape.c22
3 files changed, 41 insertions, 20 deletions
diff --git a/sbin/dump/itime.c b/sbin/dump/itime.c
index c1824c2..593edee 100644
--- a/sbin/dump/itime.c
+++ b/sbin/dump/itime.c
@@ -162,9 +162,9 @@ getdumptime()
continue;
if (ddp->dd_level >= level)
continue;
- if (ddp->dd_ddate <= spcl.c_ddate)
+ if (ddp->dd_ddate <= time32_to_time(spcl.c_ddate))
continue;
- spcl.c_ddate = ddp->dd_ddate;
+ spcl.c_ddate = time_to_time32(ddp->dd_ddate);
lastlevel = ddp->dd_level;
}
}
@@ -177,6 +177,7 @@ putdumptime()
register int i;
int fd;
char *fname;
+ char *tmsg;
if(uflag == 0)
return;
@@ -211,7 +212,7 @@ putdumptime()
found:
(void) strncpy(dtwalk->dd_name, fname, sizeof (dtwalk->dd_name));
dtwalk->dd_level = level;
- dtwalk->dd_ddate = spcl.c_date;
+ dtwalk->dd_ddate = time32_to_time(spcl.c_date);
ITITERATE(i, dtwalk) {
dumprecout(df, dtwalk);
@@ -221,8 +222,13 @@ putdumptime()
if (ftruncate(fd, ftell(df)))
quit("ftruncate (%s): %s\n", dumpdates, strerror(errno));
(void) fclose(df);
- msg("level %c dump on %s", level,
- spcl.c_date == 0 ? "the epoch\n" : ctime(&spcl.c_date));
+ if (spcl.c_date == 0) {
+ tmsg = "the epoch\n";
+ } else {
+ time_t t = time32_to_time(spcl.c_date);
+ tmsg = ctime(&t);
+ }
+ msg("level %c dump on %s", level, tmsg);
}
static void
diff --git a/sbin/dump/main.c b/sbin/dump/main.c
index be639b7..0e3b3f6 100644
--- a/sbin/dump/main.c
+++ b/sbin/dump/main.c
@@ -105,9 +105,10 @@ main(argc, argv)
register int ch;
int i, anydirskipped, bflag = 0, Tflag = 0, honorlevel = 1;
ino_t maxino;
+ char *tmsg;
+ time_t t;
- spcl.c_date = 0;
- (void)time((time_t *)&spcl.c_date);
+ spcl.c_date = time_to_time32(time(NULL));
tsize = 0; /* Default later, based on 'c' option for cart tapes */
if ((tape = getenv("TAPE")) == NULL)
@@ -313,10 +314,20 @@ main(argc, argv)
if (!Tflag)
getdumptime(); /* /etc/dumpdates snarfed */
- msg("Date of this level %c dump: %s", level,
- spcl.c_date == 0 ? "the epoch\n" : ctime(&spcl.c_date));
- msg("Date of last level %c dump: %s", lastlevel,
- spcl.c_ddate == 0 ? "the epoch\n" : ctime(&spcl.c_ddate));
+ if (spcl.c_date == 0) {
+ tmsg = "the epoch\n";
+ } else {
+ time_t t = time32_to_time(spcl.c_date);
+ tmsg = ctime(&t);
+ }
+ msg("Date of this level %c dump: %s", level, tmsg);
+ if (spcl.c_ddate == 0) {
+ tmsg = "the epoch\n";
+ } else {
+ time_t t = time32_to_time(spcl.c_ddate);
+ tmsg = ctime(&t);
+ }
+ msg("Date of last level %c dump: %s", lastlevel, tmsg);
msg("Dumping %s ", disk);
if (dt != NULL)
msgtail("(%s) ", dt->fs_file);
diff --git a/sbin/restore/tape.c b/sbin/restore/tape.c
index 5b8129d..9be7d43 100644
--- a/sbin/restore/tape.c
+++ b/sbin/restore/tape.c
@@ -232,8 +232,8 @@ setup()
}
if (vflag || command == 't')
printdumpinfo();
- dumptime = spcl.c_ddate;
- dumpdate = spcl.c_date;
+ dumptime = time32_to_time(spcl.c_ddate);
+ dumpdate = time32_to_time(spcl.c_date);
if (stat(".", &stbuf) < 0) {
fprintf(stderr, "cannot stat .: %s\n", strerror(errno));
done(1);
@@ -404,9 +404,10 @@ gethdr:
volno = 0;
goto again;
}
- if (tmpbuf.c_date != dumpdate || tmpbuf.c_ddate != dumptime) {
- fprintf(stderr, "Wrong dump date\n\tgot: %s",
- ctime(&tmpbuf.c_date));
+ if (time32_to_time(tmpbuf.c_date) != dumpdate ||
+ time32_to_time(tmpbuf.c_ddate) != dumptime) {
+ time_t t = time32_to_time(tmpbuf.c_date);
+ fprintf(stderr, "Wrong dump date\n\tgot: %s", ctime(&t));
fprintf(stderr, "\twanted: %s", ctime(&dumpdate));
volno = 0;
goto again;
@@ -508,9 +509,12 @@ setdumpnum()
void
printdumpinfo()
{
- fprintf(stdout, "Dump date: %s", ctime(&spcl.c_date));
+ time_t t;
+ t = time32_to_time(spcl.c_date);
+ fprintf(stdout, "Dump date: %s", ctime(&t));
+ t = time32_to_time(spcl.c_ddate);
fprintf(stdout, "Dumped from: %s",
- (spcl.c_ddate == 0) ? "the epoch\n" : ctime(&spcl.c_ddate));
+ (spcl.c_ddate == 0) ? "the epoch\n" : ctime(&t));
if (spcl.c_host[0] == '\0')
return;
fprintf(stderr, "Level %ld dump of %s on %s:%s\n",
@@ -1227,7 +1231,7 @@ findinode(header)
if (header->c_magic != NFS_MAGIC) {
skipcnt++;
while (gethead(header) == FAIL ||
- header->c_date != dumpdate)
+ time32_to_time(header->c_date) != dumpdate)
skipcnt++;
}
switch (header->c_type) {
@@ -1240,7 +1244,7 @@ findinode(header)
if (header->c_addr[i])
readtape(buf);
while (gethead(header) == FAIL ||
- header->c_date != dumpdate)
+ time32_to_time(header->c_date) != dumpdate)
skipcnt++;
break;
OpenPOWER on IntegriCloud