Changes proposed by Denis Excoffier.
* NEWS: Fix typos.
* doc/tar.texi: Fix typos. Improve recipe for creation of binary
equivalent archives.
* src/create.c (write_extended): Use the value of the
--mtime option (if specified) as the default for exthdr.mtime.
* src/xheader.c (xheader_store): Create the header if at least
one override is supplied in --pax-option.
-GNU tar NEWS - User visible changes. 2014-07-27
+GNU tar NEWS - User visible changes. 2014-11-07
Please send GNU tar bug reports to <bug-tar@gnu.org>
\f
are set to mtimes of the corresponding archive members. This
can be overridden by the
- --pax-opion='exthdr.mtime=STRING'
+ --pax-option='exthdr.mtime=STRING'
command line option. The STRING is either number of seconds since
the Epoch or a "Time reference" (see below).
This can be overridden by the
- --pax-opion='globexthdr.mtime=STRING'
+ --pax-option='globexthdr.mtime=STRING'
command line option. The STRING is either number of seconds since
the Epoch or a "Time reference" (see below).
This keyword defines the value of the @samp{mtime} field that
is written into the ustar header blocks for the extended headers.
By default, the @samp{mtime} field is set to the modification time
-of the archive member described by that extended headers.
+of the archive member described by that extended header (or to the
+value of the @option{--mtime} option, if supplied).
@item globexthdr.name=@var{string}
This keyword allows user control over the name that is written into
--pax-option=exthdr.name=%d/PaxHeaders/%f,atime:=0
@end smallexample
+@noindent
+If you extract files from such an archive and recreate the archive
+from them, you will also need to eliminate changes due to ctime, as
+shown in examples below:
+
+@smallexample
+--pax-option=exthdr.name=%d/PaxHeaders/%f,atime:=0,ctime:=0
+@end smallexample
+
+@noindent
+or
+
+@smallexample
+--pax-option=exthdr.name=%d/PaxHeaders/%f,atime:=0,delete=ctime
+@end smallexample
+
@node Checksumming
@subsection Checksumming Problems
{
type = XHDTYPE;
p = xheader_xhdr_name (st);
- t = st->stat.st_mtime;
+ t = set_mtime_option ? mtime_option.tv_sec : st->stat.st_mtime;
}
xheader_write (type, p, t, &st->xhdr);
free (p);
t = locate_handler (keyword);
if (!t || !t->coder)
return;
- if (xheader_keyword_deleted_p (keyword)
- || xheader_keyword_override_p (keyword))
+ if (xheader_keyword_deleted_p (keyword))
return;
xheader_init (&st->xhdr);
- t->coder (st, keyword, &st->xhdr, data);
+ if (!xheader_keyword_override_p (keyword))
+ t->coder (st, keyword, &st->xhdr, data);
}
void