Honor the pax-option overrides when creating archive.
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.
This commit is contained in:
6
NEWS
6
NEWS
@@ -1,4 +1,4 @@
|
||||
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>
|
||||
|
||||
|
||||
@@ -369,7 +369,7 @@ Modification times in ustar header blocks of extended headers
|
||||
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).
|
||||
@@ -379,7 +379,7 @@ headers are set to the time when tar was invoked.
|
||||
|
||||
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).
|
||||
|
||||
19
doc/tar.texi
19
doc/tar.texi
@@ -9930,7 +9930,8 @@ will use the following default value:
|
||||
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
|
||||
@@ -10023,6 +10024,22 @@ same contents:
|
||||
--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
|
||||
|
||||
|
||||
@@ -706,7 +706,7 @@ write_extended (bool global, struct tar_stat_info *st, union block *old_header)
|
||||
{
|
||||
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);
|
||||
|
||||
@@ -813,11 +813,11 @@ xheader_store (char const *keyword, struct tar_stat_info *st,
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user