diff options
| author | Kirk McKusick <mckusick@FreeBSD.org> | 2002-07-17 02:03:19 +0000 |
|---|---|---|
| committer | Kirk McKusick <mckusick@FreeBSD.org> | 2002-07-17 02:03:19 +0000 |
| commit | fb36a3d8472e3b7c446b5501635ec34eb1ebaa00 (patch) | |
| tree | 5b5d1d91499a541486f56f84b49c10edeafd66b2 /sbin | |
| parent | a1dc2096387101165d53fe98677d3e4e1d0557ad (diff) | |
Notes
Diffstat (limited to 'sbin')
| -rw-r--r-- | sbin/dump/traverse.c | 8 | ||||
| -rw-r--r-- | sbin/restore/dirs.c | 18 | ||||
| -rw-r--r-- | sbin/restore/restore.h | 2 | ||||
| -rw-r--r-- | sbin/restore/tape.c | 28 |
4 files changed, 37 insertions, 19 deletions
diff --git a/sbin/dump/traverse.c b/sbin/dump/traverse.c index 733ac265c0ec4..4cbce6ecfc69a 100644 --- a/sbin/dump/traverse.c +++ b/sbin/dump/traverse.c @@ -407,8 +407,8 @@ dumpino(union dinode *dp, ino_t ino) spcl.c_atimensec = dp->dp1.di_atimensec; spcl.c_mtime = _time32_to_time(dp->dp1.di_mtime); spcl.c_mtimensec = dp->dp1.di_mtimensec; - spcl.c_createtime = 0; - spcl.c_createtimensec = 0; + spcl.c_birthtime = 0; + spcl.c_birthtimensec = 0; spcl.c_rdev = dp->dp1.di_rdev; spcl.c_file_flags = dp->dp1.di_flags; spcl.c_uid = dp->dp1.di_uid; @@ -420,8 +420,8 @@ dumpino(union dinode *dp, ino_t ino) spcl.c_atimensec = dp->dp2.di_atimensec; spcl.c_mtime = _time64_to_time(dp->dp2.di_mtime); spcl.c_mtimensec = dp->dp2.di_mtimensec; - spcl.c_createtime = _time64_to_time(dp->dp2.di_createtime); - spcl.c_createtimensec = dp->dp2.di_creatensec; + spcl.c_birthtime = _time64_to_time(dp->dp2.di_birthtime); + spcl.c_birthtimensec = dp->dp2.di_birthnsec; spcl.c_rdev = dp->dp2.di_rdev; spcl.c_file_flags = dp->dp2.di_flags; spcl.c_uid = dp->dp2.di_uid; diff --git a/sbin/restore/dirs.c b/sbin/restore/dirs.c index 323e9ff6bc1a9..dba5738036842 100644 --- a/sbin/restore/dirs.c +++ b/sbin/restore/dirs.c @@ -82,7 +82,8 @@ static struct inotab *inotab[HASHSIZE]; */ struct modeinfo { ino_t ino; - struct timeval timep[2]; + struct timeval ctimep[2]; + struct timeval mtimep[2]; mode_t mode; uid_t uid; gid_t gid; @@ -597,7 +598,8 @@ setdirmodes(int flags) if (!Nflag) { (void) chown(cp, node.uid, node.gid); (void) chmod(cp, node.mode); - utimes(cp, node.timep); + utimes(cp, node.ctimep); + utimes(cp, node.mtimep); (void) chflags(cp, node.flags); } ep->e_flags &= ~NEW; @@ -685,10 +687,14 @@ allocinotab(struct context *ctxp, long seekpt) if (mf == NULL) return (itp); node.ino = ctxp->ino; - node.timep[0].tv_sec = ctxp->atime_sec; - node.timep[0].tv_usec = ctxp->atime_nsec / 1000; - node.timep[1].tv_sec = ctxp->mtime_sec; - node.timep[1].tv_usec = ctxp->mtime_nsec / 1000; + node.mtimep[0].tv_sec = ctxp->atime_sec; + node.mtimep[0].tv_usec = ctxp->atime_nsec / 1000; + node.mtimep[1].tv_sec = ctxp->mtime_sec; + node.mtimep[1].tv_usec = ctxp->mtime_nsec / 1000; + node.ctimep[0].tv_sec = ctxp->atime_sec; + node.ctimep[0].tv_usec = ctxp->atime_nsec / 1000; + node.ctimep[1].tv_sec = ctxp->birthtime_sec; + node.ctimep[1].tv_usec = ctxp->birthtime_nsec / 1000; node.mode = ctxp->mode; node.flags = ctxp->file_flags; node.uid = ctxp->uid; diff --git a/sbin/restore/restore.h b/sbin/restore/restore.h index cb10d8169e5c9..6aff827dfc803 100644 --- a/sbin/restore/restore.h +++ b/sbin/restore/restore.h @@ -113,8 +113,10 @@ struct context { int rdev; /* device number of file */ time_t atime_sec; /* access time seconds */ time_t mtime_sec; /* modified time seconds */ + time_t birthtime_sec; /* creation time seconds */ int atime_nsec; /* access time nanoseconds */ int mtime_nsec; /* modified time nanoseconds */ + int birthtime_nsec; /* creation time nanoseconds */ off_t size; /* size of file */ char *name; /* name of file */ } curfile; diff --git a/sbin/restore/tape.c b/sbin/restore/tape.c index 2b2ab916c470b..1392f59e8a049 100644 --- a/sbin/restore/tape.c +++ b/sbin/restore/tape.c @@ -521,15 +521,19 @@ extractfile(char *name) { int flags; mode_t mode; - struct timeval timep[2]; + struct timeval mtimep[2], ctimep[2]; struct entry *ep; curfile.name = name; curfile.action = USING; - timep[0].tv_sec = curfile.atime_sec; - timep[0].tv_usec = curfile.atime_nsec / 1000; - timep[1].tv_sec = curfile.mtime_sec; - timep[1].tv_usec = curfile.mtime_nsec / 1000; + mtimep[0].tv_sec = curfile.atime_sec; + mtimep[0].tv_usec = curfile.atime_nsec / 1000; + mtimep[1].tv_sec = curfile.mtime_sec; + mtimep[1].tv_usec = curfile.mtime_nsec / 1000; + ctimep[0].tv_sec = curfile.atime_sec; + ctimep[0].tv_usec = curfile.atime_nsec / 1000; + ctimep[1].tv_sec = curfile.birthtime_sec; + ctimep[1].tv_usec = curfile.birthtime_nsec / 1000; mode = curfile.mode; flags = curfile.file_flags; switch (mode & IFMT) { @@ -567,7 +571,8 @@ extractfile(char *name) if (linkit(lnkbuf, name, SYMLINK) == GOOD) { (void) lchown(name, curfile.uid, curfile.gid); (void) lchmod(name, mode); - (void) lutimes(name, timep); + (void) lutimes(name, ctimep); + (void) lutimes(name, mtimep); return (GOOD); } return (FAIL); @@ -588,7 +593,8 @@ extractfile(char *name) } (void) chown(name, curfile.uid, curfile.gid); (void) chmod(name, mode); - (void) utimes(name, timep); + (void) utimes(name, ctimep); + (void) utimes(name, mtimep); (void) chflags(name, flags); skipfile(); return (GOOD); @@ -610,7 +616,8 @@ extractfile(char *name) } (void) chown(name, curfile.uid, curfile.gid); (void) chmod(name, mode); - (void) utimes(name, timep); + (void) utimes(name, ctimep); + (void) utimes(name, mtimep); (void) chflags(name, flags); skipfile(); return (GOOD); @@ -634,7 +641,8 @@ extractfile(char *name) (void) fchmod(ofile, mode); getfile(xtrfile, xtrskip); (void) close(ofile); - utimes(name, timep); + (void) utimes(name, ctimep); + (void) utimes(name, mtimep); (void) chflags(name, flags); return (GOOD); } @@ -1174,6 +1182,8 @@ findinode(struct s_spcl *header) curfile.atime_nsec = header->c_atimensec; curfile.mtime_sec = header->c_mtime; curfile.mtime_nsec = header->c_mtimensec; + curfile.birthtime_sec = header->c_birthtime; + curfile.birthtime_nsec = header->c_birthtimensec; curfile.size = header->c_size; curfile.ino = header->c_inumber; break; |
