diff --git a/usr.sbin/mtree/create.c b/usr.sbin/mtree/create.c index f1b0313a746d..eee5037c2665 100644 --- a/usr.sbin/mtree/create.c +++ b/usr.sbin/mtree/create.c @@ -212,7 +212,7 @@ statf(int indent, FTSENT *p) output(indent, &offset, "size=%jd", (intmax_t)p->fts_statp->st_size); if (keys & F_TIME) - output(indent, &offset, "time=%ld.%ld", + output(indent, &offset, "time=%ld.%09ld", (long)p->fts_statp->st_mtimespec.tv_sec, p->fts_statp->st_mtimespec.tv_nsec); if (keys & F_CKSUM && S_ISREG(p->fts_statp->st_mode)) { diff --git a/usr.sbin/mtree/mtree.5 b/usr.sbin/mtree/mtree.5 index db5494306927..375cc7899690 100644 --- a/usr.sbin/mtree/mtree.5 +++ b/usr.sbin/mtree/mtree.5 @@ -200,7 +200,9 @@ The size, in bytes, of the file. .It Cm link The file the symbolic link is expected to reference. .It Cm time -The last modification time of the file. +The last modification time of the file, in seconds and nanoseconds. +The value should include a period character and exactly nine digits +after the period. .It Cm type The type of the file; may be set to any one of the following: .Pp diff --git a/usr.sbin/mtree/mtree.8 b/usr.sbin/mtree/mtree.8 index 439eaab525ab..f0a93ed8cdad 100644 --- a/usr.sbin/mtree/mtree.8 +++ b/usr.sbin/mtree/mtree.8 @@ -233,7 +233,9 @@ The size, in bytes, of the file. .It Cm link The file the symbolic link is expected to reference. .It Cm time -The last modification time of the file. +The last modification time of the file, in seconds and nanoseconds. +The value should include a period character and exactly nine digits +after the period. .It Cm type The type of the file; may be set to any one of the following: .Pp diff --git a/usr.sbin/mtree/spec.c b/usr.sbin/mtree/spec.c index f2e7647a9a01..c7c6460de214 100644 --- a/usr.sbin/mtree/spec.c +++ b/usr.sbin/mtree/spec.c @@ -255,6 +255,8 @@ set(char *t, NODE *ip) case F_TIME: ip->st_mtimespec.tv_sec = strtoul(val, &ep, 10); if (*ep == '.') { + /* Note: we require exactly nine + * digits after the decimal point. */ val = ep + 1; ip->st_mtimespec.tv_nsec = strtoul(val, &ep, 10);