-GNU tar NEWS - User visible changes. 2009-03-04
+GNU tar NEWS - User visible changes. 2009-03-05
Please send GNU tar bug reports to <bug-tar@gnu.org>
\f
-version 1.21.90 (CVS)
+version 1.22 - Sergey Poznyakoff, 2009-03-05
* Support for xz compression
-Tar uses xz for compression if at least one of the following
-conditions is met:
+Tar uses xz for compression if one of the following conditions is met:
1. The option --xz or -J (see below) is used.
2. The xz binary is set as compressor using --use-compress-program option.
3. The file name of the archive being created ends in `.xz' and
auto-compress option (-a) is used.
-Xz is used for decompression if at least one of the following
-conditions is met:
+Xz is used for decompression if one of the following conditions is met:
1. The option --xz or -J is used.
2. The xz binary is set as compressor using --use-compress-program option.
3. The file is recognized as xz compressed stream data.
-* Short option -J
-
-The decision to assign -J option was taken just before the XZ format
-has been officially declared stable. Now, that stable xz tools are
-available, the -J option is re-assigned as a short equivalent of --xz.
+* Short option -J reassigned as a short equivalent of --xz
* New option -I
# Configure template for GNU tar. -*- autoconf -*-
# Copyright (C) 1991, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.
-AC_INIT([GNU tar], [1.21.90], [bug-tar@gnu.org])
+AC_INIT([GNU tar], [1.22], [bug-tar@gnu.org])
AC_CONFIG_SRCDIR([src/tar.c])
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_HEADERS([config.h:config.hin])
from archives.
Copyright @copyright{} 1992, 1994, 1995, 1996, 1997, 1999, 2000, 2001,
-2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
savedir.h
setenv.c
setenv.h
+size_max.h
sleep.c
snprintf.c
stat-macros.h
/* Buffer management for tar.
Copyright (C) 1988, 1992, 1993, 1994, 1996, 1997, 1999, 2000, 2001,
- 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+ 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
Written by John Gilmore, on 1985-08-25.
free (p);
}
+#define PD_VERBOSE 0x10
+#define PD_FORCE_CHILDREN 0x20
+#define PD_CHILDREN(f) ((f) & 3)
+
static struct directory *
procdir (char *name_buffer, struct stat *stat_data,
dev_t device,
- enum children children,
- bool verbose,
+ int flag,
char *entry)
{
struct directory *directory;
{
if (strcmp (d->name, name_buffer))
{
- if (verbose)
+ if (flag & PD_VERBOSE)
WARN ((0, 0, _("%s: Directory has been renamed from %s"),
quotearg_colon (name_buffer),
quote_n (1, d->name)));
else
{
DIR_SET_FLAG (directory, DIRF_NEW);
- if (verbose)
+ if (flag & PD_VERBOSE)
WARN ((0, 0, _("%s: Directory is new"),
quotearg_colon (name_buffer)));
directory->children =
/* ... except if it was explicitely given in the command line */
&& !is_individual_file (name_buffer))
directory->children = NO_CHILDREN;
- else if (children == ALL_CHILDREN)
- directory->children = ALL_CHILDREN;
-
+ else if (flag & PD_FORCE_CHILDREN)
+ {
+ directory->children = PD_CHILDREN(flag);
+ if (directory->children == NO_CHILDREN)
+ *entry = 'N';
+ }
+
DIR_SET_FLAG (directory, DIRF_INIT);
- {
- const char *tag_file_name;
-
- switch (check_exclusion_tags (name_buffer, &tag_file_name))
- {
- case exclusion_tag_all:
- /* This warning can be duplicated by code in dump_file0, but only
- in case when the topmost directory being archived contains
- an exclusion tag. */
- exclusion_tag_warning (name_buffer, tag_file_name,
- _("directory not dumped"));
- if (entry)
- *entry = 'N';
- directory->children = NO_CHILDREN;
- break;
-
- case exclusion_tag_contents:
- exclusion_tag_warning (name_buffer, tag_file_name,
- _("contents not dumped"));
- directory->children = NO_CHILDREN;
- break;
+ if (directory->children != NO_CHILDREN)
+ {
+ const char *tag_file_name;
- case exclusion_tag_under:
- exclusion_tag_warning (name_buffer, tag_file_name,
- _("contents not dumped"));
- directory->tagfile = tag_file_name;
- break;
+ switch (check_exclusion_tags (name_buffer, &tag_file_name))
+ {
+ case exclusion_tag_all:
+ /* This warning can be duplicated by code in dump_file0, but only
+ in case when the topmost directory being archived contains
+ an exclusion tag. */
+ exclusion_tag_warning (name_buffer, tag_file_name,
+ _("directory not dumped"));
+ if (entry)
+ *entry = 'N';
+ directory->children = NO_CHILDREN;
+ break;
- case exclusion_tag_none:
- break;
- }
- }
+ case exclusion_tag_contents:
+ exclusion_tag_warning (name_buffer, tag_file_name,
+ _("contents not dumped"));
+ directory->children = NO_CHILDREN;
+ break;
+
+ case exclusion_tag_under:
+ exclusion_tag_warning (name_buffer, tag_file_name,
+ _("contents not dumped"));
+ directory->tagfile = tag_file_name;
+ break;
+
+ case exclusion_tag_none:
+ break;
+ }
+ }
return directory;
}
size_t name_length; /* used length in name_buffer */
struct stat stat_data;
struct directory *directory;
-
+
if (! dirp)
savedir_error (dir);
return NULL;
}
- directory = procdir (name_buffer, &stat_data, device, NO_CHILDREN, false,
- NULL);
+ directory = procdir (name_buffer, &stat_data, device, 0, NULL);
if (dirp && directory->children != NO_CHILDREN)
{
if (S_ISDIR (stat_data.st_mode))
{
+ int pd_flag = (verbose_option ? PD_VERBOSE : 0);
+ if (!recursion_option)
+ pd_flag |= PD_FORCE_CHILDREN | NO_CHILDREN;
+ else if (directory->children == ALL_CHILDREN)
+ pd_flag |= PD_FORCE_CHILDREN | ALL_CHILDREN;
*entry = 'D';
- procdir (name_buffer, &stat_data, device,
- directory->children,
- verbose_option, entry);
+ procdir (name_buffer, &stat_data, device, pd_flag, entry);
}
else if (one_file_system_option && device != stat_data.st_dev)
/* This file is part of GNU tar.
- Copyright (C) 2007 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009 Free Software Foundation, Inc.
Written by Sergey Poznyakoff.
/* A tar (tape archiver) program.
Copyright (C) 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1999, 2000,
- 2001, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+ 2001, 2003, 2004, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
Written by John Gilmore, starting 1985-08-25.