Page MenuHomeFreeBSD

D57526.id179572.diff
No OneTemporary

D57526.id179572.diff

diff --git a/sys/fs/cd9660/cd9660_node.h b/sys/fs/cd9660/cd9660_node.h
--- a/sys/fs/cd9660/cd9660_node.h
+++ b/sys/fs/cd9660/cd9660_node.h
@@ -47,6 +47,7 @@
struct timespec iso_atime; /* time of last access */
struct timespec iso_mtime; /* time of last modification */
struct timespec iso_ctime; /* time file changed */
+ struct timespec iso_birthtime; /* time file created */
u_short iso_mode; /* files access mode and type */
uid_t iso_uid; /* owner user id */
gid_t iso_gid; /* owner group id */
diff --git a/sys/fs/cd9660/cd9660_node.c b/sys/fs/cd9660/cd9660_node.c
--- a/sys/fs/cd9660/cd9660_node.c
+++ b/sys/fs/cd9660/cd9660_node.c
@@ -177,8 +177,11 @@
if (ftype != ISO_FTYPE_HIGH_SIERRA
&& isonum_711(ap->version) == 1) {
+ cd9660_tstamp_conv17(ap->ctime,
+ &inop->inode.iso_birthtime);
if (!cd9660_tstamp_conv17(ap->ftime,&inop->inode.iso_atime))
- cd9660_tstamp_conv17(ap->ctime,&inop->inode.iso_atime);
+ inop->inode.iso_atime =
+ inop->inode.iso_birthtime;
if (!cd9660_tstamp_conv17(ap->ctime,&inop->inode.iso_ctime))
inop->inode.iso_ctime = inop->inode.iso_atime;
if (!cd9660_tstamp_conv17(ap->mtime,&inop->inode.iso_mtime))
@@ -190,6 +193,7 @@
cd9660_tstamp_conv7(isodir->date,&inop->inode.iso_ctime,ftype);
inop->inode.iso_atime = inop->inode.iso_ctime;
inop->inode.iso_mtime = inop->inode.iso_ctime;
+ inop->inode.iso_birthtime = inop->inode.iso_ctime;
}
if (bp2)
brelse(bp2);
diff --git a/sys/fs/cd9660/cd9660_rrip.c b/sys/fs/cd9660/cd9660_rrip.c
--- a/sys/fs/cd9660/cd9660_rrip.c
+++ b/sys/fs/cd9660/cd9660_rrip.c
@@ -376,14 +376,20 @@
/* Check a format of time stamp (7bytes/17bytes) */
if (!(*p->flags & ISO_SUSP_TSTAMP_FORM17)) {
if (*p->flags & ISO_SUSP_TSTAMP_CREAT) {
+ cd9660_tstamp_conv7(ptime,
+ &ana->inop->inode.iso_birthtime, ISO_FTYPE_RRIP);
ptime += 7;
+ } else {
+ memset(&ana->inop->inode.iso_birthtime, 0,
+ sizeof(struct timespec));
}
if (*p->flags & ISO_SUSP_TSTAMP_MODIFY) {
cd9660_tstamp_conv7(ptime, &ana->inop->inode.iso_mtime,
ISO_FTYPE_RRIP);
ptime += 7;
} else {
- memset(&ana->inop->inode.iso_mtime, 0, sizeof(struct timespec));
+ ana->inop->inode.iso_mtime =
+ ana->inop->inode.iso_birthtime;
}
if (*p->flags & ISO_SUSP_TSTAMP_ACCESS) {
cd9660_tstamp_conv7(ptime, &ana->inop->inode.iso_atime,
@@ -400,13 +406,19 @@
}
} else {
if (*p->flags & ISO_SUSP_TSTAMP_CREAT) {
+ cd9660_tstamp_conv17(ptime,
+ &ana->inop->inode.iso_birthtime);
ptime += 17;
+ } else {
+ memset(&ana->inop->inode.iso_birthtime, 0,
+ sizeof(struct timespec));
}
if (*p->flags & ISO_SUSP_TSTAMP_MODIFY) {
cd9660_tstamp_conv17(ptime, &ana->inop->inode.iso_mtime);
ptime += 17;
} else {
- memset(&ana->inop->inode.iso_mtime, 0, sizeof(struct timespec));
+ ana->inop->inode.iso_mtime =
+ ana->inop->inode.iso_birthtime;
}
if (*p->flags & ISO_SUSP_TSTAMP_ACCESS) {
cd9660_tstamp_conv17(ptime, &ana->inop->inode.iso_atime);
diff --git a/sys/fs/cd9660/cd9660_vnops.c b/sys/fs/cd9660/cd9660_vnops.c
--- a/sys/fs/cd9660/cd9660_vnops.c
+++ b/sys/fs/cd9660/cd9660_vnops.c
@@ -191,6 +191,7 @@
vap->va_atime = ip->inode.iso_atime;
vap->va_mtime = ip->inode.iso_mtime;
vap->va_ctime = ip->inode.iso_ctime;
+ vap->va_birthtime = ip->inode.iso_birthtime;
vap->va_rdev = VN_ISDEV(vp) ? ip->inode.iso_rdev : NODEV;
vap->va_size = ip->i_size;

File Metadata

Mime Type
text/plain
Expires
Mon, Aug 3, 2:49 AM (6 s ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
35885281
Default Alt Text
D57526.id179572.diff (3 KB)

Event Timeline