From 762be4f2bd696b3fcc381da7d78fcdd4114215ec Mon Sep 17 00:00:00 2001 From: Sergey Poznyakoff Date: Thu, 25 Feb 2010 10:34:29 +0200 Subject: [PATCH] Supply more information to the --to-command script. * src/system.c (stat_to_env): Pass information about the current volume in variables TAR_ARCHIVE, TAR_VOLUME, TAR_BLOCKING_FACTOR, TAR_FORMAT. * doc/tar.texi: Document new environment variables. * NEWS: Likewise. * configure.ac: Version number 1.22.91. --- NEWS | 15 +++++++++++++-- configure.ac | 2 +- doc/tar.texi | 25 ++++++++++++++++++++++++- src/system.c | 6 ++++++ 4 files changed, 44 insertions(+), 4 deletions(-) diff --git a/NEWS b/NEWS index a6b55cb..5705bd7 100644 --- a/NEWS +++ b/NEWS @@ -1,8 +1,8 @@ -GNU tar NEWS - User visible changes. 2010-01-26 +GNU tar NEWS - User visible changes. 2010-02-25 Please send GNU tar bug reports to -version 1.22.90 (Git) +version 1.22.91 (Git) * Record size autodetection @@ -86,6 +86,17 @@ chapter 7, "Date input formats", of the Tar manual, or as a name of an existing file, starting with `/' or `.'. In the latter case, the value is replaced with the modification time of that file. +* Environment of --to-command script. + +The environment passed to the --to-command script is extended with +the following variables: + + TAR_VERSION GNU tar version number + TAR_ARCHIVE The name of the archive + TAR_VOLUME Ordinal number of the volume + TAR_FORMAT Format of the archive + TAR_BLOCKING_FACTOR Current blocking factor + * Bugfixes ** Fix handling of hard link targets by -c --transform. ** Fix hard links recognition with -c --remove-files. diff --git a/configure.ac b/configure.ac index 382e4d8..2276b33 100644 --- a/configure.ac +++ b/configure.ac @@ -19,7 +19,7 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. -AC_INIT([GNU tar], [1.22.90], [bug-tar@gnu.org]) +AC_INIT([GNU tar], [1.22.91], [bug-tar@gnu.org]) AC_CONFIG_SRCDIR([src/tar.c]) AC_CONFIG_AUX_DIR([build-aux]) AC_CONFIG_HEADERS([config.h]) diff --git a/doc/tar.texi b/doc/tar.texi index 9a8b171..abc81df 100644 --- a/doc/tar.texi +++ b/doc/tar.texi @@ -5430,9 +5430,32 @@ UID of the file owner. GID of the file owner. @end table -In addition to these variables, @env{TAR_VERSION} contains the +Additionally, the following variables contain information about +tar mode and the archive being processed: + +@table @env +@vrindex TAR_VERSION, to-command environment +@item TAR_VERSION @GNUTAR{} version number. +@vrindex TAR_ARCHIVE, to-command environment +@item TAR_ARCHIVE +The name of the archive @command{tar} is processing. + +@vrindex TAR_BLOCKING_FACTOR, to-command environment +@item TAR_BLOCKING_FACTOR +Current blocking factor (@pxref{Blocking}. + +@vrindex TAR_VOLUME, to-command environment +@item TAR_VOLUME +Ordinal number of the volume @command{tar} is processing. + +@vrindex TAR_FORMAT, to-command environment +@item TAR_FORMAT +Format of the archive being processed. @xref{Formats}, for a complete +list of archive format names. +@end table + If @var{command} exits with a non-0 status, @command{tar} will print an error message similar to the following: diff --git a/src/system.c b/src/system.c index ea88496..d646822 100644 --- a/src/system.c +++ b/src/system.c @@ -629,6 +629,12 @@ static void stat_to_env (char *name, char type, struct tar_stat_info *st) { str_to_env ("TAR_VERSION", PACKAGE_VERSION); + str_to_env ("TAR_ARCHIVE", *archive_name_cursor); + dec_to_env ("TAR_VOLUME", archive_name_cursor - archive_name_array + 1); + dec_to_env ("TAR_BLOCKING_FACTOR", blocking_factor); + str_to_env ("TAR_FORMAT", + archive_format_string (current_format == DEFAULT_FORMAT ? + archive_format : current_format)); chr_to_env ("TAR_FILETYPE", type); oct_to_env ("TAR_MODE", st->stat.st_mode); str_to_env ("TAR_FILENAME", name); -- 2.44.0