Version 1.22

This commit is contained in:
Sergey Poznyakoff
2009-03-05 07:22:56 +00:00
parent 29887e47d3
commit 5fa60b8d43
8 changed files with 65 additions and 60 deletions

16
NEWS
View File

@@ -1,31 +1,25 @@
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>
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

View File

@@ -1,7 +1,7 @@
# 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
@@ -18,7 +18,7 @@
# 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])

View File

@@ -35,7 +35,7 @@ This manual is for @acronym{GNU} @command{tar} (version
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

View File

@@ -188,6 +188,7 @@ savedir.c
savedir.h
setenv.c
setenv.h
size_max.h
sleep.c
snprintf.c
stat-macros.h

View File

@@ -1,7 +1,7 @@
/* 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.

View File

@@ -407,11 +407,14 @@ update_parent_directory (const char *name)
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;
@@ -485,7 +488,7 @@ procdir (char *name_buffer, struct stat *stat_data,
{
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)));
@@ -498,7 +501,7 @@ procdir (char *name_buffer, struct stat *stat_data,
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 =
@@ -517,43 +520,48 @@ procdir (char *name_buffer, struct stat *stat_data,
/* ... 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;
if (directory->children != NO_CHILDREN)
{
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;
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;
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;
}
}
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;
}
@@ -645,7 +653,7 @@ scan_directory (char *dir, dev_t device)
size_t name_length; /* used length in name_buffer */
struct stat stat_data;
struct directory *directory;
if (! dirp)
savedir_error (dir);
@@ -667,8 +675,7 @@ scan_directory (char *dir, dev_t device)
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)
{
@@ -707,10 +714,13 @@ scan_directory (char *dir, dev_t device)
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)

View File

@@ -1,5 +1,5 @@
/* 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.

View File

@@ -1,7 +1,7 @@
/* 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.