X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=tests%2Fappend02.at;h=7b8e07d3b527bd7c5e3e89bb2a997370d5ae8f0d;hb=2947023d277cb0a787c73721d6190a75444cd65f;hp=91625eff212ad40625eef8c317b21749ddd3e188;hpb=9fd9a0913d472912063215483e7ebc98a1f8c103;p=chaz%2Ftar diff --git a/tests/append02.at b/tests/append02.at index 91625ef..7b8e07d 100644 --- a/tests/append02.at +++ b/tests/append02.at @@ -1,11 +1,11 @@ # Process this file with autom4te to create testsuite. -*- Autotest -*- # Test suite for GNU tar. -# Copyright (C) 2006 Free Software Foundation, Inc. +# Copyright (C) 2006, 2007, 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 2, or (at your option) +# 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, @@ -26,13 +26,27 @@ # tar rf archive file1 # tar rt archive file2 # -# produced different archives (GNU format is assumed). Namely, in the -# second case the mode field of all members, except the first, was truncated -# to lower 3 octets (& 0777). +# produced different archives (GNU format is assumed). It was reported +# by TAMUKI Shoichi on 2006-07-21 [1]. +# +# The bug was due to tar being unable to discern between GNU and OLDGNU +# formats and always assuming the latter. The main difference between +# the two is that OLDGNU preserves all bits in the mode field, whereas +# GNU format keeps only the lower 9 ones (mode & 0777). +# +# This was fixed on 2006-07-24 (commit f4e4adea80a) by making tar truncate +# the mode field even in OLDGNU format. Obviously, the fix broke the +# format backward compatibility, but it went unnoticed until 2009-10-03 +# (after all, the OLDGNU format is not in much use nowadays), when +# Igor Zhbanov reported it [2]. +# +# The final fix was applied on 2009-10-04. # # References: -# <200607210526.AA03440@tamuki.linet.gr.jp> -# http://lists.gnu.org/archive/html/bug-tar/2006-07/msg00029.html +# [1] <200607210526.AA03440@tamuki.linet.gr.jp> +# http://lists.gnu.org/archive/html/bug-tar/2006-07/msg00029.html +# [2] +# http://lists.gnu.org/archive/html/bug-tar/2009-10/msg00006.html # The test case below verifies that the equivalent create and append commands # produce binary equivalent archives for all formats. @@ -44,19 +58,22 @@ AT_TAR_CHECK([ genfile --file file1 genfile --file file2 +# Make sure file timestamps in the archive will not differ +MTIME="--mtime=@0" + # For PAX archives, we need to make sure extended header names are -# reproducible. +# reproducible and that their contents won't change with time if test $[]TEST_TAR_FORMAT = posix; then - TAR_OPTIONS="$TAR_OPTIONS --pax-option=exthdr.name=%d/PaxHeaders/%f" + TAR_OPTIONS="$TAR_OPTIONS --pax-option=exthdr.name=%d/PaxHeaders/%f,delete=mtime,delete=atime,delete=ctime" fi echo Creating archive.1 -tar cf archive.1 file1 file2 +tar $MTIME -cf archive.1 file1 file2 echo Creating archive.2 -tar cfT archive.2 /dev/null -tar rf archive.2 file1 -tar rf archive.2 file2 +tar $MTIME -cf archive.2 -T /dev/null +tar $MTIME -rf archive.2 file1 +tar $MTIME -rf archive.2 file2 echo Comparing archives cmp archive.1 archive.2