Files
tar/tests/remfiles03.at
Sergey Poznyakoff c1d3d13493 Fix --remove-files.
Tar --remove-files relied on canonicalize_file_name,
which replaces symlinks in file name components with
the directories they point to. Due to this, tar
effectively ignored existence of symbolic links and
was unable to remove a directory that contained any
(Alexander Kozlov <akozlov@nada.kth.se>, 2010-03-15).

* gnulib.modules: Remove canonicalize.
* src/misc.c (normalize_filename): Rewrite
from scratch. The function operates only on
its input string, it makes no attempt to test
components for existence or to resolve symbolic
links.
* tests/Makefile.am (TESTSUITE_AT): Add remfiles03.at.
* tests/testsuite.at: Likewise.
* tests/remfiles03.at: New test case.
* NEWS: Update.
2010-03-17 11:52:40 +02:00

46 lines
1.4 KiB
Plaintext

# Process this file with autom4te to create testsuite. -*- Autotest -*-
# Test suite for GNU tar.
# Copyright (C) 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
# the Free Software Foundation; either version 3, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.
# Description: Called with --remove-files, tar 1.23 failed
# to remove a directory if it contained symlinks to another files
# within that directory.
# Reported-by: Alexander Kozlov <akozlov@nada.kth.se>
# References: http://lists.gnu.org/archive/html/bug-tar/2010-03/msg00028.html
# <Pine.SOC.4.64.1003150951060.28948@faun.nada.kth.se>
AT_SETUP([remove-files with symbolic links])
AT_KEYWORDS([create remove-files remfiles03])
AT_CHECK([
mkdir a
mkdir a/b
ln -s b a/c || AT_SKIP_TEST
tar --remove-files -cf a.tar a
genfile --stat a
],
[0],
[],
[genfile: stat(a) failed: No such file or directory
])
AT_CLEANUP