]> git.cworth.org Git - tar/blobdiff - tests/testsuite
Imported Upstream version 1.24
[tar] / tests / testsuite
index f846810c31dddc8043d025c5ffcfa4e7e28255d1..c2242601658387ef7e666de2a1d5c9af64c54037 100755 (executable)
@@ -621,11 +621,11 @@ at_change_dir=false
 # List of the tested programs.
 at_tested='tar'
 # List of the all the test groups.
-at_groups_all=' 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98'
+at_groups_all=' 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115'
 # As many question marks as there are digits in the last test group number.
 # Used to normalize the test group numbers so that `ls' lists them in
 # numerical order.
-at_format='??'
+at_format='???'
 # Description of all the test groups.
 at_help_all="1;version.at:19;tar version;;
 2;pipe.at:30;decompressing from stdin;pipe;
@@ -639,92 +639,109 @@ at_help_all="1;version.at:19;tar version;;
 10;append01.at:29;appending files with long names;append append01;
 11;append02.at:54;append vs. create;append append02 append-gnu;
 12;xform-h.at:30;transforming hard links on create;transform xform xform-h;
-13;exclude.at:23;exclude;exclude;
-14;exclude01.at:17;exclude wildcards;exclude exclude01;
-15;exclude02.at:17;exclude: anchoring;exclude exclude02;
-16;exclude03.at:17;exclude: wildcards match slash;exclude exclude03;
-17;exclude04.at:17;exclude: case insensitive;exclude exclude04;
-18;exclude05.at:19;exclude: lots of excludes;exclude exclude05;
-19;delete01.at:23;deleting a member after a big one;delete delete01;
-20;delete02.at:23;deleting a member from stdin archive;delete delete02;
-21;delete03.at:21;deleting members with long names;delete delete03;
-22;delete04.at:23;deleting a large last member;delete delete04;
-23;delete05.at:27;deleting non-existing member;delete delete05;
-24;extrac01.at:23;extract over an existing directory;extract extract01;
-25;extrac02.at:23;extracting symlinks over an existing file;extract extract02 symlink;
-26;extrac03.at:23;extraction loops;extract extract03;
-27;extrac04.at:23;extract + fnmatch;extract extract04 fnmatch;
-28;extrac05.at:30;extracting selected members from pax;extract extract05;
-29;extrac06.at:33;mode of extracted directories;extract extract06 directory mode;
-30;extrac07.at:27;extracting symlinks to a read-only dir;extract extract07 read-only symlink;
-31;extrac08.at:33;restoring mode on existing directory;extract extrac08;
-32;label01.at:19;single-volume label;label label01;
-33;label02.at:19;multi-volume label;label label02 multi-label multivolume multiv;
-34;backup01.at:33;extracting existing dir with --backup;extract backup backup01;
-35;gzip.at:23;gzip;gzip;
-36;incremental.at:23;incremental;incremental incr00;
-37;incr01.at:27;restore broken symlinks from incremental;incremental incr01;
-38;incr02.at:32;restoring timestamps from incremental;incremental timestamp restore incr02;
-39;listed01.at:26;--listed for individual files;listed incremental listed01;
-40;listed02.at:28;working --listed;listed incremental listed02;
-41;incr03.at:28;renamed files in incrementals;incremental incr03 rename;
-42;incr04.at:29;proper icontents initialization;incremental incr04 icontents;
-43;incr05.at:19;incremental dumps with -C;incremental incr05;
-44;incr06.at:19;incremental dumps of nested directories;incremental incr06;
-45;filerem01.at:34;file removed as we read it (ca. 22 seconds);create incremental filechange filerem filerem01;
-46;filerem02.at:24;toplevel file removed (ca. 24 seconds);create incremental filechange filerem filerem02;
-47;rename01.at:24;renamed dirs in incrementals;incremental rename rename01;
-48;rename02.at:24;move between hierarchies;incremental rename rename02;
-49;rename03.at:23;cyclic renames;incremental rename rename03 cyclic-rename;
-50;rename04.at:27;renamed directory containing subdirectories;incremental rename04 rename;
-51;rename05.at:24;renamed subdirectories;incremental rename05 rename;
-52;chtype.at:27;changed file types in incrementals;incremental chtype;
-53;ignfail.at:23;ignfail;ignfail;
-54;link01.at:33;link count gt 2;hardlinks link01;
-55;link02.at:32;preserve hard links with --remove-files;hardlinks link02;
-56;link03.at:24;working -l with --remove-files;hardlinks link03;
-57;longv7.at:24;long names in V7 archives;longname longv7;
-58;long01.at:28;long file names divisible by block size;longname long512;
-59;lustar01.at:21;ustar: unsplittable file name;longname ustar lustar01;
-60;lustar02.at:21;ustar: unsplittable path name;longname ustar lustar02;
-61;lustar03.at:21;ustar: splitting long names;longname ustar lustar03;
-62;multiv01.at:23;multivolume dumps from pipes;multivolume multiv multiv01;
-63;multiv02.at:28;skipping a straddling member;multivolume multiv multiv02;
-64;multiv03.at:30;MV archive & long filenames;multivolume multiv multiv03;
-65;multiv04.at:36;split directory members in a MV archive;multivolume multiv incremental multiv04;
-66;multiv05.at:26;Restoring after an out of sync volume;multivolume multiv multiv05 sync;
-67;multiv06.at:27;Multivolumes with L=record_size;multivolume multiv multiv06;
-68;multiv07.at:26;volumes split at an extended header;multivolume multiv multiv07 xsplit;
-69;old.at:23;old archives;old;
-70;recurse.at:21;recurse;recurse;
-71;same-order01.at:26;working -C with --same-order;same-order same-order01;
-72;same-order02.at:25;multiple -C options;same-order same-order02;
-73;shortrec.at:25;short records;shortrec;
-74;sparse01.at:21;sparse files;sparse sparse01;
-75;sparse02.at:21;extracting sparse file over a pipe;sparse sparse02;
-76;sparse03.at:21;storing sparse files > 8G;sparse sparse03;
-77;sparsemv.at:21;sparse files in MV archives;sparse multiv sparsemv;
-78;spmvp00.at:21;sparse files in PAX MV archives, v.0.0;sparse multiv sparsemvp sparsemvp00;
-79;spmvp01.at:21;sparse files in PAX MV archives, v.0.1;sparse multiv sparsemvp sparsemvp01;
-80;spmvp10.at:21;sparse files in PAX MV archives, v.1.0;sparse multiv sparsemvp sparsemvp10;
-81;update.at:28;update unchanged directories;update update00;
-82;update01.at:29;update directories;update update01;
-83;update02.at:26;update changed files;update update02;
-84;volume.at:23;volume;volume volcheck;
-85;volsize.at:29;volume header size;volume volsize;
-86;comprec.at:21;compressed format recognition;comprec;
-87;shortfile.at:26;short input files;shortfile shortfile0;
-88;shortupd.at:29;updating short archives;shortfile shortfile1 shortupd;
-89;truncate.at:29;truncate;truncate filechange;
-90;grow.at:24;grow;grow filechange;
-91;remfiles01.at:28;remove-files with compression;create remove-files remfiles01 gzip;
-92;remfiles02.at:28;remove-files with compression: grand-child;create remove-files remfiles02 gzip;
-93;gtarfail.at:21;gtarfail;star gtarfail;
-94;gtarfail2.at:21;gtarfail2;star gtarfail2;
-95;multi-fail.at:21;multi-fail;star multivolume multiv multi-fail;
-96;ustar-big-2g.at:21;ustar-big-2g;star ustar-big-2g;
-97;ustar-big-8g.at:21;ustar-big-8g;star ustar-big-8g;
-98;pax-big-10g.at:21;pax-big-10g;star pax-big-10g;
+13;xform01.at:26;transformations and GNU volume labels;transform xform xform01 volume;
+14;exclude.at:23;exclude;exclude;
+15;exclude01.at:17;exclude wildcards;exclude exclude01;
+16;exclude02.at:17;exclude: anchoring;exclude exclude02;
+17;exclude03.at:17;exclude: wildcards match slash;exclude exclude03;
+18;exclude04.at:17;exclude: case insensitive;exclude exclude04;
+19;exclude05.at:19;exclude: lots of excludes;exclude exclude05;
+20;exclude06.at:24;exclude: long files in pax archives;exclude exclude06;
+21;delete01.at:23;deleting a member after a big one;delete delete01;
+22;delete02.at:23;deleting a member from stdin archive;delete delete02;
+23;delete03.at:21;deleting members with long names;delete delete03;
+24;delete04.at:23;deleting a large last member;delete delete04;
+25;delete05.at:27;deleting non-existing member;delete delete05;
+26;extrac01.at:23;extract over an existing directory;extract extract01;
+27;extrac02.at:23;extracting symlinks over an existing file;extract extract02 symlink;
+28;extrac03.at:23;extraction loops;extract extract03;
+29;extrac04.at:23;extract + fnmatch;extract extract04 fnmatch;
+30;extrac05.at:30;extracting selected members from pax;extract extract05;
+31;extrac06.at:33;mode of extracted directories;extract extract06 directory mode;
+32;extrac07.at:27;extracting symlinks to a read-only dir;extract extract07 read-only symlink;
+33;extrac08.at:33;restoring mode on existing directory;extract extrac08;
+34;extrac09.at:22;no need to save dir with unreadable . and ..;extract extrac09;
+35;extrac10.at:27;-C and delayed setting of metadata;extract extrac10;
+36;extrac11.at:23;scarce file descriptors;extract extrac11;
+37;extrac12.at:23;extract dot permissions;extract extrac12;
+38;extrac13.at:24;extract over symlinks;extract extrac13;
+39;extrac14.at:23;extract -C symlink;extract extrac14;
+40;extrac15.at:23;extract parent mkdir failure;extract extrac15;
+41;label01.at:19;single-volume label;label label01;
+42;label02.at:19;multi-volume label;label label02 multi-label multivolume multiv;
+43;label03.at:25;test-label option;label label03 test-label;
+44;label04.at:25;label with non-create option;label label04;
+45;label05.at:22;label with non-create option;label label05;
+46;backup01.at:33;extracting existing dir with --backup;extract backup backup01;
+47;gzip.at:23;gzip;gzip;
+48;incremental.at:23;incremental;incremental incr00;
+49;incr01.at:27;restore broken symlinks from incremental;incremental incr01;
+50;incr02.at:32;restoring timestamps from incremental;incremental timestamp restore incr02;
+51;listed01.at:26;--listed for individual files;listed incremental listed01;
+52;listed02.at:28;working --listed;listed incremental listed02;
+53;listed03.at:22;incremental dump when the parent directory is unreadable;listed incremental listed03;
+54;incr03.at:28;renamed files in incrementals;incremental incr03 rename;
+55;incr04.at:29;proper icontents initialization;incremental incr04 icontents;
+56;incr05.at:19;incremental dumps with -C;incremental incr05;
+57;incr06.at:19;incremental dumps of nested directories;incremental incr06;
+58;filerem01.at:34;file removed as we read it (ca. 22 seconds);create incremental filechange filerem filerem01;
+59;filerem02.at:24;toplevel file removed (ca. 24 seconds);create incremental filechange filerem filerem02;
+60;rename01.at:24;renamed dirs in incrementals;incremental rename rename01;
+61;rename02.at:24;move between hierarchies;incremental rename rename02;
+62;rename03.at:23;cyclic renames;incremental rename rename03 cyclic-rename;
+63;rename04.at:27;renamed directory containing subdirectories;incremental rename04 rename;
+64;rename05.at:24;renamed subdirectories;incremental rename05 rename;
+65;chtype.at:27;changed file types in incrementals;incremental chtype;
+66;ignfail.at:23;ignfail;ignfail;
+67;link01.at:33;link count gt 2;hardlinks link01;
+68;link02.at:32;preserve hard links with --remove-files;hardlinks link02;
+69;link03.at:24;working -l with --remove-files;hardlinks link03;
+70;link04.at:29;link count is 1 but multiple occurrences;hardlinks link04;
+71;longv7.at:24;long names in V7 archives;longname longv7;
+72;long01.at:28;long file names divisible by block size;longname long512;
+73;lustar01.at:21;ustar: unsplittable file name;longname ustar lustar01;
+74;lustar02.at:21;ustar: unsplittable path name;longname ustar lustar02;
+75;lustar03.at:21;ustar: splitting long names;longname ustar lustar03;
+76;multiv01.at:23;multivolume dumps from pipes;multivolume multiv multiv01;
+77;multiv02.at:28;skipping a straddling member;multivolume multiv multiv02;
+78;multiv03.at:30;MV archive & long filenames;multivolume multiv multiv03;
+79;multiv04.at:36;split directory members in a MV archive;multivolume multiv incremental multiv04;
+80;multiv05.at:26;Restoring after an out of sync volume;multivolume multiv multiv05 sync;
+81;multiv06.at:27;Multivolumes with L=record_size;multivolume multiv multiv06;
+82;multiv07.at:26;volumes split at an extended header;multivolume multiv multiv07 xsplit;
+83;multiv08.at:23;multivolume header creation;multivolume multiv multiv08;
+84;old.at:23;old archives;old;
+85;recurse.at:21;recurse;recurse;
+86;same-order01.at:26;working -C with --same-order;same-order same-order01;
+87;same-order02.at:25;multiple -C options;same-order same-order02;
+88;shortrec.at:25;short records;shortrec;
+89;sparse01.at:21;sparse files;sparse sparse01;
+90;sparse02.at:21;extracting sparse file over a pipe;sparse sparse02;
+91;sparse03.at:21;storing sparse files > 8G;sparse sparse03;
+92;sparsemv.at:21;sparse files in MV archives;sparse multiv sparsemv;
+93;spmvp00.at:21;sparse files in PAX MV archives, v.0.0;sparse multivolume multiv sparsemvp sparsemvp00;
+94;spmvp01.at:21;sparse files in PAX MV archives, v.0.1;sparse multiv sparsemvp sparsemvp01;
+95;spmvp10.at:21;sparse files in PAX MV archives, v.1.0;sparse multivolume multiv sparsemvp sparsemvp10;
+96;update.at:28;update unchanged directories;update update00;
+97;update01.at:29;update directories;update update01;
+98;update02.at:26;update changed files;update update02;
+99;volume.at:23;volume;volume volcheck;
+100;volsize.at:29;volume header size;volume volsize;
+101;comprec.at:21;compressed format recognition;comprec;
+102;shortfile.at:26;short input files;shortfile shortfile0;
+103;shortupd.at:29;updating short archives;shortfile shortfile1 shortupd;
+104;truncate.at:29;truncate;truncate filechange;
+105;grow.at:24;grow;grow filechange;
+106;remfiles01.at:28;remove-files with compression;create remove-files remfiles01 gzip;
+107;remfiles02.at:28;remove-files with compression: grand-child;create remove-files remfiles02 gzip;
+108;remfiles03.at:28;remove-files with symbolic links;create remove-files remfiles03;
+109;sigpipe.at:19;sigpipe handling;sigpipe;
+110;gtarfail.at:21;gtarfail;star gtarfail;
+111;gtarfail2.at:21;gtarfail2;star gtarfail2;
+112;multi-fail.at:21;multi-fail;star multivolume multiv multi-fail;
+113;ustar-big-2g.at:21;ustar-big-2g;star ustar-big-2g;
+114;ustar-big-8g.at:21;ustar-big-8g;star ustar-big-8g;
+115;pax-big-10g.at:21;pax-big-10g;star pax-big-10g;
 "
 
 # at_func_validate_ranges [NAME...]
@@ -736,7 +753,7 @@ at_func_validate_ranges ()
   for at_grp
   do
     eval at_value=\$$at_grp
-    if test $at_value -lt 1 || test $at_value -gt 98; then
+    if test $at_value -lt 1 || test $at_value -gt 115; then
       $as_echo "invalid test group: $at_value" >&2
       exit 1
     fi
@@ -973,7 +990,7 @@ fi
 # List of tests.
 if $at_list_p; then
   cat <<_ATEOF || at_write_fail=1
-GNU tar 1.23 test suite test groups:
+GNU tar 1.24 test suite test groups:
 
  NUM: FILE-NAME:LINE     TEST-GROUP-NAME
       KEYWORDS
@@ -1002,7 +1019,7 @@ _ATEOF
   exit $at_write_fail
 fi
 if $at_version_p; then
-  $as_echo "$as_me (GNU tar 1.23)" &&
+  $as_echo "$as_me (GNU tar 1.24)" &&
   cat <<\_ACEOF || at_write_fail=1
 
 Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
@@ -1185,13 +1202,13 @@ exec 5>>"$at_suite_log"
 # Banners and logs.
 cat <<\_ASBOX
 ## ------------------------ ##
-## GNU tar 1.23 test suite. ##
+## GNU tar 1.24 test suite. ##
 ## ------------------------ ##
 _ASBOX
 {
   cat <<\_ASBOX
 ## ------------------------ ##
-## GNU tar 1.23 test suite. ##
+## GNU tar 1.24 test suite. ##
 ## ------------------------ ##
 _ASBOX
   echo
@@ -1923,7 +1940,7 @@ _ASBOX
   $as_echo "Please send \`${at_testdir+${at_testdir}/}$as_me.log' and all information you think might help:
 
    To: <bug-tar@gnu.org>
-   Subject: [GNU tar 1.23] $as_me: $at_fail_list${at_fail_list:+ failed${at_xpass_list:+, }}$at_xpass_list${at_xpass_list:+ passed unexpectedly}
+   Subject: [GNU tar 1.24] $as_me: $at_fail_list${at_fail_list:+ failed${at_xpass_list:+, }}$at_xpass_list${at_xpass_list:+ passed unexpectedly}
 "
   if test $at_debug_p = false; then
     echo
@@ -1965,7 +1982,7 @@ fi
 at_status=$?
 at_failed=false
 at_func_diff_devnull "$at_stderr" || at_failed=:
-echo >>"$at_stdout"; $as_echo "tar (GNU tar) 1.23
+echo >>"$at_stdout"; $as_echo "tar (GNU tar) 1.24
 " | \
   $at_diff - "$at_stdout" || at_failed=:
 at_func_check_status 0 $at_status "$at_srcdir/version.at:21"
@@ -2026,7 +2043,7 @@ genfile --length 10240 --pattern zeros --file directory/file1
 genfile --length 13 --file directory/file2
 tar cf archive directory
 mv directory orig
-cat archive | tar xfv - | sort
+cat archive | tar xfv - --warning=no-timestamp | sort
 echo \"separator\"
 cmp orig/file1 directory/file1
 echo \"separator\"
@@ -2053,7 +2070,7 @@ genfile --length 10240 --pattern zeros --file directory/file1
 genfile --length 13 --file directory/file2
 tar cf archive directory
 mv directory orig
-cat archive | tar xfv - | sort
+cat archive | tar xfv - --warning=no-timestamp | sort
 echo "separator"
 cmp orig/file1 directory/file1
 echo "separator"
@@ -2078,7 +2095,7 @@ genfile --length 10240 --pattern zeros --file directory/file1
 genfile --length 13 --file directory/file2
 tar cf archive directory
 mv directory orig
-cat archive | tar xfv - | sort
+cat archive | tar xfv - --warning=no-timestamp | sort
 echo "separator"
 cmp orig/file1 directory/file1
 echo "separator"
@@ -2118,7 +2135,7 @@ genfile --length 10240 --pattern zeros --file directory/file1
 genfile --length 13 --file directory/file2
 tar cf archive directory
 mv directory orig
-cat archive | tar xfv - | sort
+cat archive | tar xfv - --warning=no-timestamp | sort
 echo \"separator\"
 cmp orig/file1 directory/file1
 echo \"separator\"
@@ -2145,7 +2162,7 @@ genfile --length 10240 --pattern zeros --file directory/file1
 genfile --length 13 --file directory/file2
 tar cf archive directory
 mv directory orig
-cat archive | tar xfv - | sort
+cat archive | tar xfv - --warning=no-timestamp | sort
 echo "separator"
 cmp orig/file1 directory/file1
 echo "separator"
@@ -2170,7 +2187,7 @@ genfile --length 10240 --pattern zeros --file directory/file1
 genfile --length 13 --file directory/file2
 tar cf archive directory
 mv directory orig
-cat archive | tar xfv - | sort
+cat archive | tar xfv - --warning=no-timestamp | sort
 echo "separator"
 cmp orig/file1 directory/file1
 echo "separator"
@@ -2210,7 +2227,7 @@ genfile --length 10240 --pattern zeros --file directory/file1
 genfile --length 13 --file directory/file2
 tar cf archive directory
 mv directory orig
-cat archive | tar xfv - | sort
+cat archive | tar xfv - --warning=no-timestamp | sort
 echo \"separator\"
 cmp orig/file1 directory/file1
 echo \"separator\"
@@ -2237,7 +2254,7 @@ genfile --length 10240 --pattern zeros --file directory/file1
 genfile --length 13 --file directory/file2
 tar cf archive directory
 mv directory orig
-cat archive | tar xfv - | sort
+cat archive | tar xfv - --warning=no-timestamp | sort
 echo "separator"
 cmp orig/file1 directory/file1
 echo "separator"
@@ -2262,7 +2279,7 @@ genfile --length 10240 --pattern zeros --file directory/file1
 genfile --length 13 --file directory/file2
 tar cf archive directory
 mv directory orig
-cat archive | tar xfv - | sort
+cat archive | tar xfv - --warning=no-timestamp | sort
 echo "separator"
 cmp orig/file1 directory/file1
 echo "separator"
@@ -2302,7 +2319,7 @@ genfile --length 10240 --pattern zeros --file directory/file1
 genfile --length 13 --file directory/file2
 tar cf archive directory
 mv directory orig
-cat archive | tar xfv - | sort
+cat archive | tar xfv - --warning=no-timestamp | sort
 echo \"separator\"
 cmp orig/file1 directory/file1
 echo \"separator\"
@@ -2329,7 +2346,7 @@ genfile --length 10240 --pattern zeros --file directory/file1
 genfile --length 13 --file directory/file2
 tar cf archive directory
 mv directory orig
-cat archive | tar xfv - | sort
+cat archive | tar xfv - --warning=no-timestamp | sort
 echo "separator"
 cmp orig/file1 directory/file1
 echo "separator"
@@ -2354,7 +2371,7 @@ genfile --length 10240 --pattern zeros --file directory/file1
 genfile --length 13 --file directory/file2
 tar cf archive directory
 mv directory orig
-cat archive | tar xfv - | sort
+cat archive | tar xfv - --warning=no-timestamp | sort
 echo "separator"
 cmp orig/file1 directory/file1
 echo "separator"
@@ -2394,7 +2411,7 @@ genfile --length 10240 --pattern zeros --file directory/file1
 genfile --length 13 --file directory/file2
 tar cf archive directory
 mv directory orig
-cat archive | tar xfv - | sort
+cat archive | tar xfv - --warning=no-timestamp | sort
 echo \"separator\"
 cmp orig/file1 directory/file1
 echo \"separator\"
@@ -2421,7 +2438,7 @@ genfile --length 10240 --pattern zeros --file directory/file1
 genfile --length 13 --file directory/file2
 tar cf archive directory
 mv directory orig
-cat archive | tar xfv - | sort
+cat archive | tar xfv - --warning=no-timestamp | sort
 echo "separator"
 cmp orig/file1 directory/file1
 echo "separator"
@@ -2446,7 +2463,7 @@ genfile --length 10240 --pattern zeros --file directory/file1
 genfile --length 13 --file directory/file2
 tar cf archive directory
 mv directory orig
-cat archive | tar xfv - | sort
+cat archive | tar xfv - --warning=no-timestamp | sort
 echo "separator"
 cmp orig/file1 directory/file1
 echo "separator"
@@ -5388,21 +5405,106 @@ $at_traceon; }
 
 
 
+
+
   $at_traceoff
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
 #AT_STOP_12
 #AT_START_13
-# 13. exclude.at:23: exclude
+# 13. xform01.at:26: transformations and GNU volume labels
+at_setup_line='xform01.at:26'
+at_desc="transformations and GNU volume labels"
+$at_quiet $as_echo_n " 13: $at_desc          "
+at_xfail=no
+      test -f $XFAILFILE && at_xfail=yes
+echo "#                             -*- compilation -*-" >> "$at_group_log"
+(
+  $as_echo "13. xform01.at:26: testing ..."
+  $at_traceon
+
+
+
+
+
+  { $at_traceoff
+$as_echo "$at_srcdir/xform01.at:29:
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H gnu\"
+export TAR_OPTIONS
+rm -rf *
+
+genfile --file file
+tar -cf archive.tar -V /label/ file
+tar tf archive.tar
+)"
+echo xform01.at:29 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+genfile --file file
+tar -cf archive.tar -V /label/ file
+tar tf archive.tar
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+genfile --file file
+tar -cf archive.tar -V /label/ file
+tar tf archive.tar
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+at_func_diff_devnull "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "/label/
+file
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/xform01.at:29"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+
+
+
+  $at_traceoff
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 | eval $at_tee_pipe
+at_status=`cat "$at_status_file"`
+#AT_STOP_13
+#AT_START_14
+# 14. exclude.at:23: exclude
 at_setup_line='exclude.at:23'
 at_desc="exclude"
-$at_quiet $as_echo_n " 13: $at_desc                                        "
+$at_quiet $as_echo_n " 14: $at_desc                                        "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "13. exclude.at:23: testing ..."
+  $as_echo "14. exclude.at:23: testing ..."
   $at_traceon
 
 
@@ -5659,17 +5761,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_13
-#AT_START_14
-# 14. exclude01.at:17: exclude wildcards
+#AT_STOP_14
+#AT_START_15
+# 15. exclude01.at:17: exclude wildcards
 at_setup_line='exclude01.at:17'
 at_desc="exclude wildcards"
-$at_quiet $as_echo_n " 14: $at_desc                              "
+$at_quiet $as_echo_n " 15: $at_desc                              "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "14. exclude01.at:17: testing ..."
+  $as_echo "15. exclude01.at:17: testing ..."
   $at_traceon
 
 
@@ -6493,17 +6595,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_14
-#AT_START_15
-# 15. exclude02.at:17: exclude: anchoring
+#AT_STOP_15
+#AT_START_16
+# 16. exclude02.at:17: exclude: anchoring
 at_setup_line='exclude02.at:17'
 at_desc="exclude: anchoring"
-$at_quiet $as_echo_n " 15: $at_desc                             "
+$at_quiet $as_echo_n " 16: $at_desc                             "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "15. exclude02.at:17: testing ..."
+  $as_echo "16. exclude02.at:17: testing ..."
   $at_traceon
 
 
@@ -7407,17 +7509,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_15
-#AT_START_16
-# 16. exclude03.at:17: exclude: wildcards match slash
+#AT_STOP_16
+#AT_START_17
+# 17. exclude03.at:17: exclude: wildcards match slash
 at_setup_line='exclude03.at:17'
 at_desc="exclude: wildcards match slash"
-$at_quiet $as_echo_n " 16: $at_desc                 "
+$at_quiet $as_echo_n " 17: $at_desc                 "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "16. exclude03.at:17: testing ..."
+  $as_echo "17. exclude03.at:17: testing ..."
   $at_traceon
 
 
@@ -8261,17 +8363,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_16
-#AT_START_17
-# 17. exclude04.at:17: exclude: case insensitive
+#AT_STOP_17
+#AT_START_18
+# 18. exclude04.at:17: exclude: case insensitive
 at_setup_line='exclude04.at:17'
 at_desc="exclude: case insensitive"
-$at_quiet $as_echo_n " 17: $at_desc                      "
+$at_quiet $as_echo_n " 18: $at_desc                      "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "17. exclude04.at:17: testing ..."
+  $as_echo "18. exclude04.at:17: testing ..."
   $at_traceon
 
 
@@ -9145,17 +9247,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_17
-#AT_START_18
-# 18. exclude05.at:19: exclude: lots of excludes
+#AT_STOP_18
+#AT_START_19
+# 19. exclude05.at:19: exclude: lots of excludes
 at_setup_line='exclude05.at:19'
 at_desc="exclude: lots of excludes"
-$at_quiet $as_echo_n " 18: $at_desc                      "
+$at_quiet $as_echo_n " 19: $at_desc                      "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "18. exclude05.at:19: testing ..."
+  $as_echo "19. exclude05.at:19: testing ..."
   $at_traceon
 
 
@@ -9829,17 +9931,119 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_18
-#AT_START_19
-# 19. delete01.at:23: deleting a member after a big one
+#AT_STOP_19
+#AT_START_20
+# 20. exclude06.at:24: exclude: long files in pax archives
+at_setup_line='exclude06.at:24'
+at_desc="exclude: long files in pax archives"
+$at_quiet $as_echo_n " 20: $at_desc            "
+at_xfail=no
+      test -f $XFAILFILE && at_xfail=yes
+echo "#                             -*- compilation -*-" >> "$at_group_log"
+(
+  $as_echo "20. exclude06.at:24: testing ..."
+  $at_traceon
+
+
+
+
+
+
+
+  { $at_traceoff
+$as_echo "$at_srcdir/exclude06.at:29:
+mkdir pax
+(cd pax
+TEST_TAR_FORMAT=pax
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H pax\"
+export TAR_OPTIONS
+rm -rf *
+
+
+install-sh -d one/two/three/four/five/six/seven/eight/nine/ten/eleven/twelve/thirteen/fourteen/fifteen/sixteen/seventeen >/dev/null  || exit 77
+genfile --length 20 -f one/two/three/four/five/six/seven/eight/nine/ten/eleven/twelve/thirteen/fourteen/fifteen/sixteen/seventeen/1.txt
+genfile --length 20 -f one/two/three/four/five/six/seven/eight/nine/ten/eleven/twelve/thirteen/fourteen/fifteen/sixteen/seventeen/1.c
+
+tar cf archive.tar one/two/three/four/five/six/seven/eight/nine/ten/eleven/twelve/thirteen/fourteen/fifteen/sixteen/seventeen
+mkdir out
+tar -C out -xf archive.tar --exclude='*.txt' --warning=no-timestamp
+find out -type f
+)"
+echo exclude06.at:29 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir pax
+(cd pax
+TEST_TAR_FORMAT=pax
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H pax"
+export TAR_OPTIONS
+rm -rf *
+
+
+install-sh -d one/two/three/four/five/six/seven/eight/nine/ten/eleven/twelve/thirteen/fourteen/fifteen/sixteen/seventeen >/dev/null  || exit 77
+genfile --length 20 -f one/two/three/four/five/six/seven/eight/nine/ten/eleven/twelve/thirteen/fourteen/fifteen/sixteen/seventeen/1.txt
+genfile --length 20 -f one/two/three/four/five/six/seven/eight/nine/ten/eleven/twelve/thirteen/fourteen/fifteen/sixteen/seventeen/1.c
+
+tar cf archive.tar one/two/three/four/five/six/seven/eight/nine/ten/eleven/twelve/thirteen/fourteen/fifteen/sixteen/seventeen
+mkdir out
+tar -C out -xf archive.tar --exclude='*.txt' --warning=no-timestamp
+find out -type f
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir pax
+(cd pax
+TEST_TAR_FORMAT=pax
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H pax"
+export TAR_OPTIONS
+rm -rf *
+
+
+install-sh -d one/two/three/four/five/six/seven/eight/nine/ten/eleven/twelve/thirteen/fourteen/fifteen/sixteen/seventeen >/dev/null  || exit 77
+genfile --length 20 -f one/two/three/four/five/six/seven/eight/nine/ten/eleven/twelve/thirteen/fourteen/fifteen/sixteen/seventeen/1.txt
+genfile --length 20 -f one/two/three/four/five/six/seven/eight/nine/ten/eleven/twelve/thirteen/fourteen/fifteen/sixteen/seventeen/1.c
+
+tar cf archive.tar one/two/three/four/five/six/seven/eight/nine/ten/eleven/twelve/thirteen/fourteen/fifteen/sixteen/seventeen
+mkdir out
+tar -C out -xf archive.tar --exclude='*.txt' --warning=no-timestamp
+find out -type f
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+at_func_diff_devnull "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "out/one/two/three/four/five/six/seven/eight/nine/ten/eleven/twelve/thirteen/fourteen/fifteen/sixteen/seventeen/1.c
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/exclude06.at:29"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+
+
+
+  $at_traceoff
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 | eval $at_tee_pipe
+at_status=`cat "$at_status_file"`
+#AT_STOP_20
+#AT_START_21
+# 21. delete01.at:23: deleting a member after a big one
 at_setup_line='delete01.at:23'
 at_desc="deleting a member after a big one"
-$at_quiet $as_echo_n " 19: $at_desc              "
+$at_quiet $as_echo_n " 21: $at_desc              "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "19. delete01.at:23: testing ..."
+  $as_echo "21. delete01.at:23: testing ..."
   $at_traceon
 
 
@@ -10158,17 +10362,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_19
-#AT_START_20
-# 20. delete02.at:23: deleting a member from stdin archive
+#AT_STOP_21
+#AT_START_22
+# 22. delete02.at:23: deleting a member from stdin archive
 at_setup_line='delete02.at:23'
 at_desc="deleting a member from stdin archive"
-$at_quiet $as_echo_n " 20: $at_desc           "
+$at_quiet $as_echo_n " 22: $at_desc           "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "20. delete02.at:23: testing ..."
+  $as_echo "22. delete02.at:23: testing ..."
   $at_traceon
 
 
@@ -10557,17 +10761,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_20
-#AT_START_21
-# 21. delete03.at:21: deleting members with long names
+#AT_STOP_22
+#AT_START_23
+# 23. delete03.at:21: deleting members with long names
 at_setup_line='delete03.at:21'
 at_desc="deleting members with long names"
-$at_quiet $as_echo_n " 21: $at_desc               "
+$at_quiet $as_echo_n " 23: $at_desc               "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "21. delete03.at:21: testing ..."
+  $as_echo "23. delete03.at:21: testing ..."
   $at_traceon
 
 
@@ -10832,17 +11036,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_21
-#AT_START_22
-# 22. delete04.at:23: deleting a large last member
+#AT_STOP_23
+#AT_START_24
+# 24. delete04.at:23: deleting a large last member
 at_setup_line='delete04.at:23'
 at_desc="deleting a large last member"
-$at_quiet $as_echo_n " 22: $at_desc                   "
+$at_quiet $as_echo_n " 24: $at_desc                   "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "22. delete04.at:23: testing ..."
+  $as_echo "24. delete04.at:23: testing ..."
   $at_traceon
 
 
@@ -11336,17 +11540,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_22
-#AT_START_23
-# 23. delete05.at:27: deleting non-existing member
+#AT_STOP_24
+#AT_START_25
+# 25. delete05.at:27: deleting non-existing member
 at_setup_line='delete05.at:27'
 at_desc="deleting non-existing member"
-$at_quiet $as_echo_n " 23: $at_desc                   "
+$at_quiet $as_echo_n " 25: $at_desc                   "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "23. delete05.at:27: testing ..."
+  $as_echo "25. delete05.at:27: testing ..."
   $at_traceon
 
 
@@ -11745,17 +11949,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_23
-#AT_START_24
-# 24. extrac01.at:23: extract over an existing directory
+#AT_STOP_25
+#AT_START_26
+# 26. extrac01.at:23: extract over an existing directory
 at_setup_line='extrac01.at:23'
 at_desc="extract over an existing directory"
-$at_quiet $as_echo_n " 24: $at_desc             "
+$at_quiet $as_echo_n " 26: $at_desc             "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "24. extrac01.at:23: testing ..."
+  $as_echo "26. extrac01.at:23: testing ..."
   $at_traceon
 
 
@@ -11775,7 +11979,7 @@ rm -rf *
 mkdir directory
 touch directory/file
 tar cf archive directory || exit 1
-tar xf archive || exit 1
+tar xf archive --warning=no-timestamp || exit 1
 )"
 echo extrac01.at:26 >"$at_check_line_file"
 
@@ -11793,7 +11997,7 @@ rm -rf *
 mkdir directory
 touch directory/file
 tar cf archive directory || exit 1
-tar xf archive || exit 1
+tar xf archive --warning=no-timestamp || exit 1
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -11809,7 +12013,7 @@ rm -rf *
 mkdir directory
 touch directory/file
 tar cf archive directory || exit 1
-tar xf archive || exit 1
+tar xf archive --warning=no-timestamp || exit 1
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
@@ -11834,7 +12038,7 @@ rm -rf *
 mkdir directory
 touch directory/file
 tar cf archive directory || exit 1
-tar xf archive || exit 1
+tar xf archive --warning=no-timestamp || exit 1
 )"
 echo extrac01.at:26 >"$at_check_line_file"
 
@@ -11852,7 +12056,7 @@ rm -rf *
 mkdir directory
 touch directory/file
 tar cf archive directory || exit 1
-tar xf archive || exit 1
+tar xf archive --warning=no-timestamp || exit 1
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -11868,7 +12072,7 @@ rm -rf *
 mkdir directory
 touch directory/file
 tar cf archive directory || exit 1
-tar xf archive || exit 1
+tar xf archive --warning=no-timestamp || exit 1
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
@@ -11893,7 +12097,7 @@ rm -rf *
 mkdir directory
 touch directory/file
 tar cf archive directory || exit 1
-tar xf archive || exit 1
+tar xf archive --warning=no-timestamp || exit 1
 )"
 echo extrac01.at:26 >"$at_check_line_file"
 
@@ -11911,7 +12115,7 @@ rm -rf *
 mkdir directory
 touch directory/file
 tar cf archive directory || exit 1
-tar xf archive || exit 1
+tar xf archive --warning=no-timestamp || exit 1
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -11927,7 +12131,7 @@ rm -rf *
 mkdir directory
 touch directory/file
 tar cf archive directory || exit 1
-tar xf archive || exit 1
+tar xf archive --warning=no-timestamp || exit 1
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
@@ -11952,7 +12156,7 @@ rm -rf *
 mkdir directory
 touch directory/file
 tar cf archive directory || exit 1
-tar xf archive || exit 1
+tar xf archive --warning=no-timestamp || exit 1
 )"
 echo extrac01.at:26 >"$at_check_line_file"
 
@@ -11970,7 +12174,7 @@ rm -rf *
 mkdir directory
 touch directory/file
 tar cf archive directory || exit 1
-tar xf archive || exit 1
+tar xf archive --warning=no-timestamp || exit 1
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -11986,7 +12190,7 @@ rm -rf *
 mkdir directory
 touch directory/file
 tar cf archive directory || exit 1
-tar xf archive || exit 1
+tar xf archive --warning=no-timestamp || exit 1
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
@@ -12011,7 +12215,7 @@ rm -rf *
 mkdir directory
 touch directory/file
 tar cf archive directory || exit 1
-tar xf archive || exit 1
+tar xf archive --warning=no-timestamp || exit 1
 )"
 echo extrac01.at:26 >"$at_check_line_file"
 
@@ -12029,7 +12233,7 @@ rm -rf *
 mkdir directory
 touch directory/file
 tar cf archive directory || exit 1
-tar xf archive || exit 1
+tar xf archive --warning=no-timestamp || exit 1
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -12045,7 +12249,7 @@ rm -rf *
 mkdir directory
 touch directory/file
 tar cf archive directory || exit 1
-tar xf archive || exit 1
+tar xf archive --warning=no-timestamp || exit 1
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
@@ -12064,17 +12268,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_24
-#AT_START_25
-# 25. extrac02.at:23: extracting symlinks over an existing file
+#AT_STOP_26
+#AT_START_27
+# 27. extrac02.at:23: extracting symlinks over an existing file
 at_setup_line='extrac02.at:23'
 at_desc="extracting symlinks over an existing file"
-$at_quiet $as_echo_n " 25: $at_desc      "
+$at_quiet $as_echo_n " 27: $at_desc      "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "25. extrac02.at:23: testing ..."
+  $as_echo "27. extrac02.at:23: testing ..."
   $at_traceon
 
 
@@ -12415,17 +12619,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_25
-#AT_START_26
-# 26. extrac03.at:23: extraction loops
+#AT_STOP_27
+#AT_START_28
+# 28. extrac03.at:23: extraction loops
 at_setup_line='extrac03.at:23'
 at_desc="extraction loops"
-$at_quiet $as_echo_n " 26: $at_desc                               "
+$at_quiet $as_echo_n " 28: $at_desc                               "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "26. extrac03.at:23: testing ..."
+  $as_echo "28. extrac03.at:23: testing ..."
   $at_traceon
 
 
@@ -12445,7 +12649,7 @@ rm -rf *
 mkdir directory
 tar -cPvf archive directory/../directory
 echo separator
-tar -xPvf archive)"
+tar -xPvf archive --warning=no-timestamp)"
 echo extrac03.at:26 >"$at_check_line_file"
 
 if { echo 'Not enabling shell tracing (command contains an embedded newline)'
@@ -12462,7 +12666,7 @@ rm -rf *
 mkdir directory
 tar -cPvf archive directory/../directory
 echo separator
-tar -xPvf archive) ) >"$at_stdout" 2>"$at_stder1"
+tar -xPvf archive --warning=no-timestamp) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
   ( :;
@@ -12477,7 +12681,7 @@ rm -rf *
 mkdir directory
 tar -cPvf archive directory/../directory
 echo separator
-tar -xPvf archive) ) >"$at_stdout" 2>"$at_stderr"
+tar -xPvf archive --warning=no-timestamp) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
 at_failed=false
@@ -12505,7 +12709,7 @@ rm -rf *
 mkdir directory
 tar -cPvf archive directory/../directory
 echo separator
-tar -xPvf archive)"
+tar -xPvf archive --warning=no-timestamp)"
 echo extrac03.at:26 >"$at_check_line_file"
 
 if { echo 'Not enabling shell tracing (command contains an embedded newline)'
@@ -12522,7 +12726,7 @@ rm -rf *
 mkdir directory
 tar -cPvf archive directory/../directory
 echo separator
-tar -xPvf archive) ) >"$at_stdout" 2>"$at_stder1"
+tar -xPvf archive --warning=no-timestamp) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
   ( :;
@@ -12537,7 +12741,7 @@ rm -rf *
 mkdir directory
 tar -cPvf archive directory/../directory
 echo separator
-tar -xPvf archive) ) >"$at_stdout" 2>"$at_stderr"
+tar -xPvf archive --warning=no-timestamp) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
 at_failed=false
@@ -12565,7 +12769,7 @@ rm -rf *
 mkdir directory
 tar -cPvf archive directory/../directory
 echo separator
-tar -xPvf archive)"
+tar -xPvf archive --warning=no-timestamp)"
 echo extrac03.at:26 >"$at_check_line_file"
 
 if { echo 'Not enabling shell tracing (command contains an embedded newline)'
@@ -12582,7 +12786,7 @@ rm -rf *
 mkdir directory
 tar -cPvf archive directory/../directory
 echo separator
-tar -xPvf archive) ) >"$at_stdout" 2>"$at_stder1"
+tar -xPvf archive --warning=no-timestamp) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
   ( :;
@@ -12597,7 +12801,7 @@ rm -rf *
 mkdir directory
 tar -cPvf archive directory/../directory
 echo separator
-tar -xPvf archive) ) >"$at_stdout" 2>"$at_stderr"
+tar -xPvf archive --warning=no-timestamp) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
 at_failed=false
@@ -12625,7 +12829,7 @@ rm -rf *
 mkdir directory
 tar -cPvf archive directory/../directory
 echo separator
-tar -xPvf archive)"
+tar -xPvf archive --warning=no-timestamp)"
 echo extrac03.at:26 >"$at_check_line_file"
 
 if { echo 'Not enabling shell tracing (command contains an embedded newline)'
@@ -12642,7 +12846,7 @@ rm -rf *
 mkdir directory
 tar -cPvf archive directory/../directory
 echo separator
-tar -xPvf archive) ) >"$at_stdout" 2>"$at_stder1"
+tar -xPvf archive --warning=no-timestamp) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
   ( :;
@@ -12657,7 +12861,7 @@ rm -rf *
 mkdir directory
 tar -cPvf archive directory/../directory
 echo separator
-tar -xPvf archive) ) >"$at_stdout" 2>"$at_stderr"
+tar -xPvf archive --warning=no-timestamp) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
 at_failed=false
@@ -12685,7 +12889,7 @@ rm -rf *
 mkdir directory
 tar -cPvf archive directory/../directory
 echo separator
-tar -xPvf archive)"
+tar -xPvf archive --warning=no-timestamp)"
 echo extrac03.at:26 >"$at_check_line_file"
 
 if { echo 'Not enabling shell tracing (command contains an embedded newline)'
@@ -12702,7 +12906,7 @@ rm -rf *
 mkdir directory
 tar -cPvf archive directory/../directory
 echo separator
-tar -xPvf archive) ) >"$at_stdout" 2>"$at_stder1"
+tar -xPvf archive --warning=no-timestamp) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
   ( :;
@@ -12717,7 +12921,7 @@ rm -rf *
 mkdir directory
 tar -cPvf archive directory/../directory
 echo separator
-tar -xPvf archive) ) >"$at_stdout" 2>"$at_stderr"
+tar -xPvf archive --warning=no-timestamp) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
 at_failed=false
@@ -12739,17 +12943,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_26
-#AT_START_27
-# 27. extrac04.at:23: extract + fnmatch
+#AT_STOP_28
+#AT_START_29
+# 29. extrac04.at:23: extract + fnmatch
 at_setup_line='extrac04.at:23'
 at_desc="extract + fnmatch"
-$at_quiet $as_echo_n " 27: $at_desc                              "
+$at_quiet $as_echo_n " 29: $at_desc                              "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "27. extrac04.at:23: testing ..."
+  $as_echo "29. extrac04.at:23: testing ..."
   $at_traceon
 
 
@@ -13243,17 +13447,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_27
-#AT_START_28
-# 28. extrac05.at:30: extracting selected members from pax
+#AT_STOP_29
+#AT_START_30
+# 30. extrac05.at:30: extracting selected members from pax
 at_setup_line='extrac05.at:30'
 at_desc="extracting selected members from pax"
-$at_quiet $as_echo_n " 28: $at_desc           "
+$at_quiet $as_echo_n " 30: $at_desc           "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "28. extrac05.at:30: testing ..."
+  $as_echo "30. extrac05.at:30: testing ..."
   $at_traceon
 
 
@@ -13287,7 +13491,7 @@ tar cf archive jeden dwa trzy cztery || exit 1
 mkdir dir
 cd dir
 
-tar xvfT ../archive ../../list || exit 1
+tar xvfT ../archive ../../list --warning=no-timestamp || exit 1
 
 cd ..
 )"
@@ -13315,7 +13519,7 @@ tar cf archive jeden dwa trzy cztery || exit 1
 mkdir dir
 cd dir
 
-tar xvfT ../archive ../../list || exit 1
+tar xvfT ../archive ../../list --warning=no-timestamp || exit 1
 
 cd ..
 ) ) >"$at_stdout" 2>"$at_stder1"
@@ -13341,7 +13545,7 @@ tar cf archive jeden dwa trzy cztery || exit 1
 mkdir dir
 cd dir
 
-tar xvfT ../archive ../../list || exit 1
+tar xvfT ../archive ../../list --warning=no-timestamp || exit 1
 
 cd ..
 ) ) >"$at_stdout" 2>"$at_stderr"
@@ -13365,17 +13569,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_28
-#AT_START_29
-# 29. extrac06.at:33: mode of extracted directories
+#AT_STOP_30
+#AT_START_31
+# 31. extrac06.at:33: mode of extracted directories
 at_setup_line='extrac06.at:33'
 at_desc="mode of extracted directories"
-$at_quiet $as_echo_n " 29: $at_desc                  "
+$at_quiet $as_echo_n " 31: $at_desc                  "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "29. extrac06.at:33: testing ..."
+  $as_echo "31. extrac06.at:33: testing ..."
   $at_traceon
 
 
@@ -13412,10 +13616,10 @@ chmod 755 directory
 genfile --stat=mode:777 directory
 
 # ... and attempt to restore it twice
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
 # After both restores, the directory mode should be 755
@@ -13453,10 +13657,10 @@ chmod 755 directory
 genfile --stat=mode:777 directory
 
 # ... and attempt to restore it twice
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
 # After both restores, the directory mode should be 755
@@ -13492,10 +13696,10 @@ chmod 755 directory
 genfile --stat=mode:777 directory
 
 # ... and attempt to restore it twice
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
 # After both restores, the directory mode should be 755
@@ -13545,10 +13749,10 @@ chmod 755 directory
 genfile --stat=mode:777 directory
 
 # ... and attempt to restore it twice
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
 # After both restores, the directory mode should be 755
@@ -13586,10 +13790,10 @@ chmod 755 directory
 genfile --stat=mode:777 directory
 
 # ... and attempt to restore it twice
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
 # After both restores, the directory mode should be 755
@@ -13625,10 +13829,10 @@ chmod 755 directory
 genfile --stat=mode:777 directory
 
 # ... and attempt to restore it twice
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
 # After both restores, the directory mode should be 755
@@ -13678,10 +13882,10 @@ chmod 755 directory
 genfile --stat=mode:777 directory
 
 # ... and attempt to restore it twice
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
 # After both restores, the directory mode should be 755
@@ -13719,10 +13923,10 @@ chmod 755 directory
 genfile --stat=mode:777 directory
 
 # ... and attempt to restore it twice
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
 # After both restores, the directory mode should be 755
@@ -13758,10 +13962,10 @@ chmod 755 directory
 genfile --stat=mode:777 directory
 
 # ... and attempt to restore it twice
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
 # After both restores, the directory mode should be 755
@@ -13811,10 +14015,10 @@ chmod 755 directory
 genfile --stat=mode:777 directory
 
 # ... and attempt to restore it twice
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
 # After both restores, the directory mode should be 755
@@ -13852,10 +14056,10 @@ chmod 755 directory
 genfile --stat=mode:777 directory
 
 # ... and attempt to restore it twice
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
 # After both restores, the directory mode should be 755
@@ -13891,10 +14095,10 @@ chmod 755 directory
 genfile --stat=mode:777 directory
 
 # ... and attempt to restore it twice
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
 # After both restores, the directory mode should be 755
@@ -13944,10 +14148,10 @@ chmod 755 directory
 genfile --stat=mode:777 directory
 
 # ... and attempt to restore it twice
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
 # After both restores, the directory mode should be 755
@@ -13985,10 +14189,10 @@ chmod 755 directory
 genfile --stat=mode:777 directory
 
 # ... and attempt to restore it twice
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
 # After both restores, the directory mode should be 755
@@ -14024,10 +14228,10 @@ chmod 755 directory
 genfile --stat=mode:777 directory
 
 # ... and attempt to restore it twice
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
-tar xf arc directory
+tar xf arc directory --warning=no-timestamp
 genfile --stat=mode:777 directory
 
 # After both restores, the directory mode should be 755
@@ -14054,17 +14258,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_29
-#AT_START_30
-# 30. extrac07.at:27: extracting symlinks to a read-only dir
+#AT_STOP_31
+#AT_START_32
+# 32. extrac07.at:27: extracting symlinks to a read-only dir
 at_setup_line='extrac07.at:27'
 at_desc="extracting symlinks to a read-only dir"
-$at_quiet $as_echo_n " 30: $at_desc         "
+$at_quiet $as_echo_n " 32: $at_desc         "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "30. extrac07.at:27: testing ..."
+  $as_echo "32. extrac07.at:27: testing ..."
   $at_traceon
 
 
@@ -14073,21 +14277,30 @@ echo "#                             -*- compilation -*-" >> "$at_group_log"
 
   { $at_traceoff
 $as_echo "$at_srcdir/extrac07.at:30:
-mkdir v7
-(cd v7
-TEST_TAR_FORMAT=v7
+mkdir ustar
+(cd ustar
+TEST_TAR_FORMAT=ustar
 export TEST_TAR_FORMAT
-TAR_OPTIONS=\"-H v7\"
+TAR_OPTIONS=\"-H ustar\"
 export TAR_OPTIONS
 rm -rf *
 
+
+echo "test" > $$
+chmod 0 $$
+cat $$ > /dev/null 2>&1
+result=$?
+rm -f $$
+test $result -eq 0 && exit 77
+
+
 echo Prepare the directory
 mkdir dir
 genfile -f foo
 cd dir
 ln -s ../foo .
 cd ..
-chmod -w dir
+chmod a-w dir
 
 echo Create the archive
 tar cf archive dir || exit 1
@@ -14103,21 +14316,30 @@ echo extrac07.at:30 >"$at_check_line_file"
 if { echo 'Not enabling shell tracing (command contains an embedded newline)'
    false; }; then
   ( $at_traceon;
-mkdir v7
-(cd v7
-TEST_TAR_FORMAT=v7
+mkdir ustar
+(cd ustar
+TEST_TAR_FORMAT=ustar
 export TEST_TAR_FORMAT
-TAR_OPTIONS="-H v7"
+TAR_OPTIONS="-H ustar"
 export TAR_OPTIONS
 rm -rf *
 
+
+echo "test" > $$
+chmod 0 $$
+cat $$ > /dev/null 2>&1
+result=$?
+rm -f $$
+test $result -eq 0 && exit 77
+
+
 echo Prepare the directory
 mkdir dir
 genfile -f foo
 cd dir
 ln -s ../foo .
 cd ..
-chmod -w dir
+chmod a-w dir
 
 echo Create the archive
 tar cf archive dir || exit 1
@@ -14131,21 +14353,30 @@ tar -C out -xvf archive
   at_func_filter_trace $?
 else
   ( :;
-mkdir v7
-(cd v7
-TEST_TAR_FORMAT=v7
+mkdir ustar
+(cd ustar
+TEST_TAR_FORMAT=ustar
 export TEST_TAR_FORMAT
-TAR_OPTIONS="-H v7"
+TAR_OPTIONS="-H ustar"
 export TAR_OPTIONS
 rm -rf *
 
+
+echo "test" > $$
+chmod 0 $$
+cat $$ > /dev/null 2>&1
+result=$?
+rm -f $$
+test $result -eq 0 && exit 77
+
+
 echo Prepare the directory
 mkdir dir
 genfile -f foo
 cd dir
 ln -s ../foo .
 cd ..
-chmod -w dir
+chmod a-w dir
 
 echo Create the archive
 tar cf archive dir || exit 1
@@ -14168,435 +14399,6 @@ dir/foo
 " | \
   $at_diff - "$at_stdout" || at_failed=:
 at_func_check_status 0 $at_status "$at_srcdir/extrac07.at:30"
-if $at_failed; then
-  :
-else
-  ustar
-fi
-
-$at_failed && at_func_log_failure
-$at_traceon; }
-
-              { $at_traceoff
-$as_echo "$at_srcdir/extrac07.at:30:
-mkdir oldgnu
-(cd oldgnu
-TEST_TAR_FORMAT=oldgnu
-export TEST_TAR_FORMAT
-TAR_OPTIONS=\"-H oldgnu\"
-export TAR_OPTIONS
-rm -rf *
-
-echo Prepare the directory
-mkdir dir
-genfile -f foo
-cd dir
-ln -s ../foo .
-cd ..
-chmod -w dir
-
-echo Create the archive
-tar cf archive dir || exit 1
-
-chmod +w dir
-
-echo Extract
-mkdir out
-tar -C out -xvf archive
-)"
-echo extrac07.at:30 >"$at_check_line_file"
-
-if { echo 'Not enabling shell tracing (command contains an embedded newline)'
-   false; }; then
-  ( $at_traceon;
-mkdir oldgnu
-(cd oldgnu
-TEST_TAR_FORMAT=oldgnu
-export TEST_TAR_FORMAT
-TAR_OPTIONS="-H oldgnu"
-export TAR_OPTIONS
-rm -rf *
-
-echo Prepare the directory
-mkdir dir
-genfile -f foo
-cd dir
-ln -s ../foo .
-cd ..
-chmod -w dir
-
-echo Create the archive
-tar cf archive dir || exit 1
-
-chmod +w dir
-
-echo Extract
-mkdir out
-tar -C out -xvf archive
-) ) >"$at_stdout" 2>"$at_stder1"
-  at_func_filter_trace $?
-else
-  ( :;
-mkdir oldgnu
-(cd oldgnu
-TEST_TAR_FORMAT=oldgnu
-export TEST_TAR_FORMAT
-TAR_OPTIONS="-H oldgnu"
-export TAR_OPTIONS
-rm -rf *
-
-echo Prepare the directory
-mkdir dir
-genfile -f foo
-cd dir
-ln -s ../foo .
-cd ..
-chmod -w dir
-
-echo Create the archive
-tar cf archive dir || exit 1
-
-chmod +w dir
-
-echo Extract
-mkdir out
-tar -C out -xvf archive
-) ) >"$at_stdout" 2>"$at_stderr"
-fi
-at_status=$?
-at_failed=false
-at_func_diff_devnull "$at_stderr" || at_failed=:
-echo >>"$at_stdout"; $as_echo "Prepare the directory
-Create the archive
-Extract
-dir/
-dir/foo
-" | \
-  $at_diff - "$at_stdout" || at_failed=:
-at_func_check_status 0 $at_status "$at_srcdir/extrac07.at:30"
-if $at_failed; then
-  :
-else
-  ustar
-fi
-
-$at_failed && at_func_log_failure
-$at_traceon; }
-
-              { $at_traceoff
-$as_echo "$at_srcdir/extrac07.at:30:
-mkdir ustar
-(cd ustar
-TEST_TAR_FORMAT=ustar
-export TEST_TAR_FORMAT
-TAR_OPTIONS=\"-H ustar\"
-export TAR_OPTIONS
-rm -rf *
-
-echo Prepare the directory
-mkdir dir
-genfile -f foo
-cd dir
-ln -s ../foo .
-cd ..
-chmod -w dir
-
-echo Create the archive
-tar cf archive dir || exit 1
-
-chmod +w dir
-
-echo Extract
-mkdir out
-tar -C out -xvf archive
-)"
-echo extrac07.at:30 >"$at_check_line_file"
-
-if { echo 'Not enabling shell tracing (command contains an embedded newline)'
-   false; }; then
-  ( $at_traceon;
-mkdir ustar
-(cd ustar
-TEST_TAR_FORMAT=ustar
-export TEST_TAR_FORMAT
-TAR_OPTIONS="-H ustar"
-export TAR_OPTIONS
-rm -rf *
-
-echo Prepare the directory
-mkdir dir
-genfile -f foo
-cd dir
-ln -s ../foo .
-cd ..
-chmod -w dir
-
-echo Create the archive
-tar cf archive dir || exit 1
-
-chmod +w dir
-
-echo Extract
-mkdir out
-tar -C out -xvf archive
-) ) >"$at_stdout" 2>"$at_stder1"
-  at_func_filter_trace $?
-else
-  ( :;
-mkdir ustar
-(cd ustar
-TEST_TAR_FORMAT=ustar
-export TEST_TAR_FORMAT
-TAR_OPTIONS="-H ustar"
-export TAR_OPTIONS
-rm -rf *
-
-echo Prepare the directory
-mkdir dir
-genfile -f foo
-cd dir
-ln -s ../foo .
-cd ..
-chmod -w dir
-
-echo Create the archive
-tar cf archive dir || exit 1
-
-chmod +w dir
-
-echo Extract
-mkdir out
-tar -C out -xvf archive
-) ) >"$at_stdout" 2>"$at_stderr"
-fi
-at_status=$?
-at_failed=false
-at_func_diff_devnull "$at_stderr" || at_failed=:
-echo >>"$at_stdout"; $as_echo "Prepare the directory
-Create the archive
-Extract
-dir/
-dir/foo
-" | \
-  $at_diff - "$at_stdout" || at_failed=:
-at_func_check_status 0 $at_status "$at_srcdir/extrac07.at:30"
-if $at_failed; then
-  :
-else
-  ustar
-fi
-
-$at_failed && at_func_log_failure
-$at_traceon; }
-
-              { $at_traceoff
-$as_echo "$at_srcdir/extrac07.at:30:
-mkdir posix
-(cd posix
-TEST_TAR_FORMAT=posix
-export TEST_TAR_FORMAT
-TAR_OPTIONS=\"-H posix\"
-export TAR_OPTIONS
-rm -rf *
-
-echo Prepare the directory
-mkdir dir
-genfile -f foo
-cd dir
-ln -s ../foo .
-cd ..
-chmod -w dir
-
-echo Create the archive
-tar cf archive dir || exit 1
-
-chmod +w dir
-
-echo Extract
-mkdir out
-tar -C out -xvf archive
-)"
-echo extrac07.at:30 >"$at_check_line_file"
-
-if { echo 'Not enabling shell tracing (command contains an embedded newline)'
-   false; }; then
-  ( $at_traceon;
-mkdir posix
-(cd posix
-TEST_TAR_FORMAT=posix
-export TEST_TAR_FORMAT
-TAR_OPTIONS="-H posix"
-export TAR_OPTIONS
-rm -rf *
-
-echo Prepare the directory
-mkdir dir
-genfile -f foo
-cd dir
-ln -s ../foo .
-cd ..
-chmod -w dir
-
-echo Create the archive
-tar cf archive dir || exit 1
-
-chmod +w dir
-
-echo Extract
-mkdir out
-tar -C out -xvf archive
-) ) >"$at_stdout" 2>"$at_stder1"
-  at_func_filter_trace $?
-else
-  ( :;
-mkdir posix
-(cd posix
-TEST_TAR_FORMAT=posix
-export TEST_TAR_FORMAT
-TAR_OPTIONS="-H posix"
-export TAR_OPTIONS
-rm -rf *
-
-echo Prepare the directory
-mkdir dir
-genfile -f foo
-cd dir
-ln -s ../foo .
-cd ..
-chmod -w dir
-
-echo Create the archive
-tar cf archive dir || exit 1
-
-chmod +w dir
-
-echo Extract
-mkdir out
-tar -C out -xvf archive
-) ) >"$at_stdout" 2>"$at_stderr"
-fi
-at_status=$?
-at_failed=false
-at_func_diff_devnull "$at_stderr" || at_failed=:
-echo >>"$at_stdout"; $as_echo "Prepare the directory
-Create the archive
-Extract
-dir/
-dir/foo
-" | \
-  $at_diff - "$at_stdout" || at_failed=:
-at_func_check_status 0 $at_status "$at_srcdir/extrac07.at:30"
-if $at_failed; then
-  :
-else
-  ustar
-fi
-
-$at_failed && at_func_log_failure
-$at_traceon; }
-
-              { $at_traceoff
-$as_echo "$at_srcdir/extrac07.at:30:
-mkdir gnu
-(cd gnu
-TEST_TAR_FORMAT=gnu
-export TEST_TAR_FORMAT
-TAR_OPTIONS=\"-H gnu\"
-export TAR_OPTIONS
-rm -rf *
-
-echo Prepare the directory
-mkdir dir
-genfile -f foo
-cd dir
-ln -s ../foo .
-cd ..
-chmod -w dir
-
-echo Create the archive
-tar cf archive dir || exit 1
-
-chmod +w dir
-
-echo Extract
-mkdir out
-tar -C out -xvf archive
-)"
-echo extrac07.at:30 >"$at_check_line_file"
-
-if { echo 'Not enabling shell tracing (command contains an embedded newline)'
-   false; }; then
-  ( $at_traceon;
-mkdir gnu
-(cd gnu
-TEST_TAR_FORMAT=gnu
-export TEST_TAR_FORMAT
-TAR_OPTIONS="-H gnu"
-export TAR_OPTIONS
-rm -rf *
-
-echo Prepare the directory
-mkdir dir
-genfile -f foo
-cd dir
-ln -s ../foo .
-cd ..
-chmod -w dir
-
-echo Create the archive
-tar cf archive dir || exit 1
-
-chmod +w dir
-
-echo Extract
-mkdir out
-tar -C out -xvf archive
-) ) >"$at_stdout" 2>"$at_stder1"
-  at_func_filter_trace $?
-else
-  ( :;
-mkdir gnu
-(cd gnu
-TEST_TAR_FORMAT=gnu
-export TEST_TAR_FORMAT
-TAR_OPTIONS="-H gnu"
-export TAR_OPTIONS
-rm -rf *
-
-echo Prepare the directory
-mkdir dir
-genfile -f foo
-cd dir
-ln -s ../foo .
-cd ..
-chmod -w dir
-
-echo Create the archive
-tar cf archive dir || exit 1
-
-chmod +w dir
-
-echo Extract
-mkdir out
-tar -C out -xvf archive
-) ) >"$at_stdout" 2>"$at_stderr"
-fi
-at_status=$?
-at_failed=false
-at_func_diff_devnull "$at_stderr" || at_failed=:
-echo >>"$at_stdout"; $as_echo "Prepare the directory
-Create the archive
-Extract
-dir/
-dir/foo
-" | \
-  $at_diff - "$at_stdout" || at_failed=:
-at_func_check_status 0 $at_status "$at_srcdir/extrac07.at:30"
-if $at_failed; then
-  :
-else
-  ustar
-fi
 
 $at_failed && at_func_log_failure
 $at_traceon; }
@@ -14608,17 +14410,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_30
-#AT_START_31
-# 31. extrac08.at:33: restoring mode on existing directory
+#AT_STOP_32
+#AT_START_33
+# 33. extrac08.at:33: restoring mode on existing directory
 at_setup_line='extrac08.at:33'
 at_desc="restoring mode on existing directory"
-$at_quiet $as_echo_n " 31: $at_desc           "
+$at_quiet $as_echo_n " 33: $at_desc           "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "31. extrac08.at:33: testing ..."
+  $as_echo "33. extrac08.at:33: testing ..."
   $at_traceon
 
 
@@ -14641,7 +14443,7 @@ chmod 755 dir
 echo bla > dir/file
 tar cf test.tar dir
 chmod 700 dir
-tar xfv test.tar
+tar xfv test.tar --warning=no-timestamp
 genfile --stat=mode.777 dir
 )"
 echo extrac08.at:36 >"$at_check_line_file"
@@ -14663,7 +14465,7 @@ chmod 755 dir
 echo bla > dir/file
 tar cf test.tar dir
 chmod 700 dir
-tar xfv test.tar
+tar xfv test.tar --warning=no-timestamp
 genfile --stat=mode.777 dir
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
@@ -14683,7 +14485,7 @@ chmod 755 dir
 echo bla > dir/file
 tar cf test.tar dir
 chmod 700 dir
-tar xfv test.tar
+tar xfv test.tar --warning=no-timestamp
 genfile --stat=mode.777 dir
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
@@ -14716,7 +14518,7 @@ chmod 755 dir
 echo bla > dir/file
 tar cf test.tar dir
 chmod 700 dir
-tar xfv test.tar
+tar xfv test.tar --warning=no-timestamp
 genfile --stat=mode.777 dir
 )"
 echo extrac08.at:36 >"$at_check_line_file"
@@ -14738,7 +14540,7 @@ chmod 755 dir
 echo bla > dir/file
 tar cf test.tar dir
 chmod 700 dir
-tar xfv test.tar
+tar xfv test.tar --warning=no-timestamp
 genfile --stat=mode.777 dir
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
@@ -14758,7 +14560,7 @@ chmod 755 dir
 echo bla > dir/file
 tar cf test.tar dir
 chmod 700 dir
-tar xfv test.tar
+tar xfv test.tar --warning=no-timestamp
 genfile --stat=mode.777 dir
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
@@ -14791,7 +14593,7 @@ chmod 755 dir
 echo bla > dir/file
 tar cf test.tar dir
 chmod 700 dir
-tar xfv test.tar
+tar xfv test.tar --warning=no-timestamp
 genfile --stat=mode.777 dir
 )"
 echo extrac08.at:36 >"$at_check_line_file"
@@ -14813,7 +14615,7 @@ chmod 755 dir
 echo bla > dir/file
 tar cf test.tar dir
 chmod 700 dir
-tar xfv test.tar
+tar xfv test.tar --warning=no-timestamp
 genfile --stat=mode.777 dir
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
@@ -14833,7 +14635,7 @@ chmod 755 dir
 echo bla > dir/file
 tar cf test.tar dir
 chmod 700 dir
-tar xfv test.tar
+tar xfv test.tar --warning=no-timestamp
 genfile --stat=mode.777 dir
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
@@ -14866,7 +14668,7 @@ chmod 755 dir
 echo bla > dir/file
 tar cf test.tar dir
 chmod 700 dir
-tar xfv test.tar
+tar xfv test.tar --warning=no-timestamp
 genfile --stat=mode.777 dir
 )"
 echo extrac08.at:36 >"$at_check_line_file"
@@ -14888,7 +14690,7 @@ chmod 755 dir
 echo bla > dir/file
 tar cf test.tar dir
 chmod 700 dir
-tar xfv test.tar
+tar xfv test.tar --warning=no-timestamp
 genfile --stat=mode.777 dir
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
@@ -14908,7 +14710,7 @@ chmod 755 dir
 echo bla > dir/file
 tar cf test.tar dir
 chmod 700 dir
-tar xfv test.tar
+tar xfv test.tar --warning=no-timestamp
 genfile --stat=mode.777 dir
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
@@ -14941,7 +14743,7 @@ chmod 755 dir
 echo bla > dir/file
 tar cf test.tar dir
 chmod 700 dir
-tar xfv test.tar
+tar xfv test.tar --warning=no-timestamp
 genfile --stat=mode.777 dir
 )"
 echo extrac08.at:36 >"$at_check_line_file"
@@ -14963,7 +14765,7 @@ chmod 755 dir
 echo bla > dir/file
 tar cf test.tar dir
 chmod 700 dir
-tar xfv test.tar
+tar xfv test.tar --warning=no-timestamp
 genfile --stat=mode.777 dir
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
@@ -14983,7 +14785,7 @@ chmod 755 dir
 echo bla > dir/file
 tar cf test.tar dir
 chmod 700 dir
-tar xfv test.tar
+tar xfv test.tar --warning=no-timestamp
 genfile --stat=mode.777 dir
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
@@ -15007,17 +14809,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_31
-#AT_START_32
-# 32. label01.at:19: single-volume label
-at_setup_line='label01.at:19'
-at_desc="single-volume label"
-$at_quiet $as_echo_n " 32: $at_desc                            "
+#AT_STOP_33
+#AT_START_34
+# 34. extrac09.at:22: no need to save dir with unreadable . and ..
+at_setup_line='extrac09.at:22'
+at_desc="no need to save dir with unreadable . and .."
+$at_quiet $as_echo_n " 34: $at_desc   "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "32. label01.at:19: testing ..."
+  $as_echo "34. extrac09.at:22: testing ..."
   $at_traceon
 
 
@@ -15025,7 +14827,7 @@ echo "#                             -*- compilation -*-" >> "$at_group_log"
 
 
   { $at_traceoff
-$as_echo "$at_srcdir/label01.at:22:
+$as_echo "$at_srcdir/extrac09.at:25:
 mkdir gnu
 (cd gnu
 TEST_TAR_FORMAT=gnu
@@ -15034,12 +14836,31 @@ TAR_OPTIONS=\"-H gnu\"
 export TAR_OPTIONS
 rm -rf *
 
-genfile --file foo
-genfile --file bar
-tar -cf archive --label=Test foo bar
-tar tf archive
+
+echo "test" > $$
+chmod 0 $$
+cat $$ > /dev/null 2>&1
+result=$?
+rm -f $$
+test $result -eq 0 && exit 77
+
+
+mkdir dir
+mkdir dir/sub
+mkdir dir/sub/extract
+genfile --file dir/sub/f
+cd dir/sub
+
+tar -cf archive.tar f
+
+chmod a-r . ..
+tar -xvf archive.tar -C extract f
+status=\$?
+chmod a+r . ..
+cmp f extract/f || status=\$?
+exit \$status
 )"
-echo label01.at:22 >"$at_check_line_file"
+echo extrac09.at:25 >"$at_check_line_file"
 
 if { echo 'Not enabling shell tracing (command contains an embedded newline)'
    false; }; then
@@ -15052,10 +14873,29 @@ TAR_OPTIONS="-H gnu"
 export TAR_OPTIONS
 rm -rf *
 
-genfile --file foo
-genfile --file bar
-tar -cf archive --label=Test foo bar
-tar tf archive
+
+echo "test" > $$
+chmod 0 $$
+cat $$ > /dev/null 2>&1
+result=$?
+rm -f $$
+test $result -eq 0 && exit 77
+
+
+mkdir dir
+mkdir dir/sub
+mkdir dir/sub/extract
+genfile --file dir/sub/f
+cd dir/sub
+
+tar -cf archive.tar f
+
+chmod a-r . ..
+tar -xvf archive.tar -C extract f
+status=$?
+chmod a+r . ..
+cmp f extract/f || status=$?
+exit $status
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -15068,32 +14908,896 @@ TAR_OPTIONS="-H gnu"
 export TAR_OPTIONS
 rm -rf *
 
-genfile --file foo
-genfile --file bar
-tar -cf archive --label=Test foo bar
-tar tf archive
+
+echo "test" > $$
+chmod 0 $$
+cat $$ > /dev/null 2>&1
+result=$?
+rm -f $$
+test $result -eq 0 && exit 77
+
+
+mkdir dir
+mkdir dir/sub
+mkdir dir/sub/extract
+genfile --file dir/sub/f
+cd dir/sub
+
+tar -cf archive.tar f
+
+chmod a-r . ..
+tar -xvf archive.tar -C extract f
+status=$?
+chmod a+r . ..
+cmp f extract/f || status=$?
+exit $status
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
 at_failed=false
 at_func_diff_devnull "$at_stderr" || at_failed=:
-echo >>"$at_stdout"; $as_echo "Test
-foo
-bar
+echo >>"$at_stdout"; $as_echo "f
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_func_check_status 0 $at_status "$at_srcdir/label01.at:22"
+at_func_check_status 0 $at_status "$at_srcdir/extrac09.at:25"
 
 $at_failed && at_func_log_failure
 $at_traceon; }
 
-              { $at_traceoff
-$as_echo "$at_srcdir/label01.at:22:
-mkdir oldgnu
-(cd oldgnu
-TEST_TAR_FORMAT=oldgnu
+
+
+
+  $at_traceoff
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 | eval $at_tee_pipe
+at_status=`cat "$at_status_file"`
+#AT_STOP_34
+#AT_START_35
+# 35. extrac10.at:27: -C and delayed setting of metadata
+at_setup_line='extrac10.at:27'
+at_desc="-C and delayed setting of metadata"
+$at_quiet $as_echo_n " 35: $at_desc             "
+at_xfail=no
+      test -f $XFAILFILE && at_xfail=yes
+echo "#                             -*- compilation -*-" >> "$at_group_log"
+(
+  $as_echo "35. extrac10.at:27: testing ..."
+  $at_traceon
+
+
+
+
+
+  { $at_traceoff
+$as_echo "$at_srcdir/extrac10.at:30:
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
 export TEST_TAR_FORMAT
-TAR_OPTIONS=\"-H oldgnu\"
+TAR_OPTIONS=\"-H gnu\"
+export TAR_OPTIONS
+rm -rf *
+
+mkdir d x x/y
+echo foo >d/d1
+echo bar >e
+
+tar -cf archive.tar d e &&
+tar -xf archive.tar -C x d -C y e &&
+diff -r d x/d &&
+diff e x/y/e
+)"
+echo extrac10.at:30 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+mkdir d x x/y
+echo foo >d/d1
+echo bar >e
+
+tar -cf archive.tar d e &&
+tar -xf archive.tar -C x d -C y e &&
+diff -r d x/d &&
+diff e x/y/e
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+mkdir d x x/y
+echo foo >d/d1
+echo bar >e
+
+tar -cf archive.tar d e &&
+tar -xf archive.tar -C x d -C y e &&
+diff -r d x/d &&
+diff e x/y/e
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+at_func_diff_devnull "$at_stderr" || at_failed=:
+at_func_diff_devnull "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/extrac10.at:30"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+
+
+
+  $at_traceoff
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 | eval $at_tee_pipe
+at_status=`cat "$at_status_file"`
+#AT_STOP_35
+#AT_START_36
+# 36. extrac11.at:23: scarce file descriptors
+at_setup_line='extrac11.at:23'
+at_desc="scarce file descriptors"
+$at_quiet $as_echo_n " 36: $at_desc                        "
+at_xfail=no
+      test -f $XFAILFILE && at_xfail=yes
+echo "#                             -*- compilation -*-" >> "$at_group_log"
+(
+  $as_echo "36. extrac11.at:23: testing ..."
+  $at_traceon
+
+
+
+
+
+  { $at_traceoff
+$as_echo "$at_srcdir/extrac11.at:26:
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H gnu\"
+export TAR_OPTIONS
+rm -rf *
+
+dirs='a
+      a/b
+      a/b/c
+      a/b/c/d
+      a/b/c/d/e
+      a/b/c/d/e/f
+      a/b/c/d/e/f/g
+      a/b/c/d/e/f/g/h
+      a/b/c/d/e/f/g/h/i
+      a/b/c/d/e/f/g/h/i/j
+      a/b/c/d/e/f/g/h/i/j/k
+'
+files=
+mkdir \$dirs dest1 dest2 dest3 || exit
+for dir in \$dirs; do
+  for file in X Y Z; do
+    echo \$file >\$dir/\$file || exit
+    files=\"\$files \$file\"
+  done
+done
+
+# Check that \"ulimit\" itself works.
+((ulimit -n 100 &&
+  tar -cf archive1.tar a 3<&- 4<&- 5<&- 6<&- 7<&- 8<&- 9<&- &&
+  tar -xf archive1.tar -C dest1 a 3<&- 4<&- 5<&- 6<&- 7<&- 8<&- 9<&-
+ ) &&
+ diff -r a dest1/a
+) >/dev/null 2>&1 ||
+   exit 77
+
+# Another test that \"ulimit\" itself works:
+# tar should fail when completely starved of file descriptors.
+((ulimit -n 4 &&
+  tar -cf archive2.tar a 3<&- 4<&- 5<&- 6<&- 7<&- 8<&- 9<&- &&
+  tar -xf archive2.tar -C dest2 a 3<&- 4<&- 5<&- 6<&- 7<&- 8<&- 9<&-
+ ) &&
+ diff -r a dest2/a
+) >/dev/null 2>&1 &&
+   exit 77
+
+# Tar should work when there are few, but enough, file descriptors.
+((ulimit -n 10 &&
+  tar -cf archive3.tar a 3<&- 4<&- 5<&- 6<&- 7<&- 8<&- 9<&- &&
+  tar -xf archive3.tar -C dest3 a 3<&- 4<&- 5<&- 6<&- 7<&- 8<&- 9<&-
+ ) &&
+ diff -r a dest3/a >/dev/null 2>&1
+) || { diff -r a dest3/a; exit 1; }
+)"
+echo extrac11.at:26 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+dirs='a
+      a/b
+      a/b/c
+      a/b/c/d
+      a/b/c/d/e
+      a/b/c/d/e/f
+      a/b/c/d/e/f/g
+      a/b/c/d/e/f/g/h
+      a/b/c/d/e/f/g/h/i
+      a/b/c/d/e/f/g/h/i/j
+      a/b/c/d/e/f/g/h/i/j/k
+'
+files=
+mkdir $dirs dest1 dest2 dest3 || exit
+for dir in $dirs; do
+  for file in X Y Z; do
+    echo $file >$dir/$file || exit
+    files="$files $file"
+  done
+done
+
+# Check that "ulimit" itself works.
+((ulimit -n 100 &&
+  tar -cf archive1.tar a 3<&- 4<&- 5<&- 6<&- 7<&- 8<&- 9<&- &&
+  tar -xf archive1.tar -C dest1 a 3<&- 4<&- 5<&- 6<&- 7<&- 8<&- 9<&-
+ ) &&
+ diff -r a dest1/a
+) >/dev/null 2>&1 ||
+   exit 77
+
+# Another test that "ulimit" itself works:
+# tar should fail when completely starved of file descriptors.
+((ulimit -n 4 &&
+  tar -cf archive2.tar a 3<&- 4<&- 5<&- 6<&- 7<&- 8<&- 9<&- &&
+  tar -xf archive2.tar -C dest2 a 3<&- 4<&- 5<&- 6<&- 7<&- 8<&- 9<&-
+ ) &&
+ diff -r a dest2/a
+) >/dev/null 2>&1 &&
+   exit 77
+
+# Tar should work when there are few, but enough, file descriptors.
+((ulimit -n 10 &&
+  tar -cf archive3.tar a 3<&- 4<&- 5<&- 6<&- 7<&- 8<&- 9<&- &&
+  tar -xf archive3.tar -C dest3 a 3<&- 4<&- 5<&- 6<&- 7<&- 8<&- 9<&-
+ ) &&
+ diff -r a dest3/a >/dev/null 2>&1
+) || { diff -r a dest3/a; exit 1; }
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+dirs='a
+      a/b
+      a/b/c
+      a/b/c/d
+      a/b/c/d/e
+      a/b/c/d/e/f
+      a/b/c/d/e/f/g
+      a/b/c/d/e/f/g/h
+      a/b/c/d/e/f/g/h/i
+      a/b/c/d/e/f/g/h/i/j
+      a/b/c/d/e/f/g/h/i/j/k
+'
+files=
+mkdir $dirs dest1 dest2 dest3 || exit
+for dir in $dirs; do
+  for file in X Y Z; do
+    echo $file >$dir/$file || exit
+    files="$files $file"
+  done
+done
+
+# Check that "ulimit" itself works.
+((ulimit -n 100 &&
+  tar -cf archive1.tar a 3<&- 4<&- 5<&- 6<&- 7<&- 8<&- 9<&- &&
+  tar -xf archive1.tar -C dest1 a 3<&- 4<&- 5<&- 6<&- 7<&- 8<&- 9<&-
+ ) &&
+ diff -r a dest1/a
+) >/dev/null 2>&1 ||
+   exit 77
+
+# Another test that "ulimit" itself works:
+# tar should fail when completely starved of file descriptors.
+((ulimit -n 4 &&
+  tar -cf archive2.tar a 3<&- 4<&- 5<&- 6<&- 7<&- 8<&- 9<&- &&
+  tar -xf archive2.tar -C dest2 a 3<&- 4<&- 5<&- 6<&- 7<&- 8<&- 9<&-
+ ) &&
+ diff -r a dest2/a
+) >/dev/null 2>&1 &&
+   exit 77
+
+# Tar should work when there are few, but enough, file descriptors.
+((ulimit -n 10 &&
+  tar -cf archive3.tar a 3<&- 4<&- 5<&- 6<&- 7<&- 8<&- 9<&- &&
+  tar -xf archive3.tar -C dest3 a 3<&- 4<&- 5<&- 6<&- 7<&- 8<&- 9<&-
+ ) &&
+ diff -r a dest3/a >/dev/null 2>&1
+) || { diff -r a dest3/a; exit 1; }
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+at_func_diff_devnull "$at_stderr" || at_failed=:
+at_func_diff_devnull "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/extrac11.at:26"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+
+
+
+  $at_traceoff
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 | eval $at_tee_pipe
+at_status=`cat "$at_status_file"`
+#AT_STOP_36
+#AT_START_37
+# 37. extrac12.at:23: extract dot permissions
+at_setup_line='extrac12.at:23'
+at_desc="extract dot permissions"
+$at_quiet $as_echo_n " 37: $at_desc                        "
+at_xfail=no
+      test -f $XFAILFILE && at_xfail=yes
+echo "#                             -*- compilation -*-" >> "$at_group_log"
+(
+  $as_echo "37. extrac12.at:23: testing ..."
+  $at_traceon
+
+
+
+
+
+  { $at_traceoff
+$as_echo "$at_srcdir/extrac12.at:26:
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H gnu\"
+export TAR_OPTIONS
+rm -rf *
+
+mkdir src dst
+echo file1 >src/file1
+echo file2 >src/file2
+chmod a-w src
+
+tar --no-recursion -cf archive.tar -C src . ./file1 file2 &&
+tar -xf archive.tar -C dst &&
+cmp src/file1 dst/file1 &&
+cmp src/file2 dst/file2
+)"
+echo extrac12.at:26 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+mkdir src dst
+echo file1 >src/file1
+echo file2 >src/file2
+chmod a-w src
+
+tar --no-recursion -cf archive.tar -C src . ./file1 file2 &&
+tar -xf archive.tar -C dst &&
+cmp src/file1 dst/file1 &&
+cmp src/file2 dst/file2
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+mkdir src dst
+echo file1 >src/file1
+echo file2 >src/file2
+chmod a-w src
+
+tar --no-recursion -cf archive.tar -C src . ./file1 file2 &&
+tar -xf archive.tar -C dst &&
+cmp src/file1 dst/file1 &&
+cmp src/file2 dst/file2
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+at_func_diff_devnull "$at_stderr" || at_failed=:
+at_func_diff_devnull "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/extrac12.at:26"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+
+
+
+  $at_traceoff
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 | eval $at_tee_pipe
+at_status=`cat "$at_status_file"`
+#AT_STOP_37
+#AT_START_38
+# 38. extrac13.at:24: extract over symlinks
+at_setup_line='extrac13.at:24'
+at_desc="extract over symlinks"
+$at_quiet $as_echo_n " 38: $at_desc                          "
+at_xfail=no
+      test -f $XFAILFILE && at_xfail=yes
+echo "#                             -*- compilation -*-" >> "$at_group_log"
+(
+  $as_echo "38. extrac13.at:24: testing ..."
+  $at_traceon
+
+
+
+
+
+  { $at_traceoff
+$as_echo "$at_srcdir/extrac13.at:27:
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H gnu\"
+export TAR_OPTIONS
+rm -rf *
+
+mkdir src dst1 dst2 dst3
+echo file1 >src/file1
+ln -s target1 dst1/file1
+echo target1 >dst1/target1
+echo target1 >target1
+
+tar -cf archive.tar -C src . &&
+tar -xf archive.tar -C dst1 --warning=no-timestamp &&
+diff -c src/file1 dst1/file1 &&
+diff -c target1 dst1/target1
+
+ln -s target1 dst2/file1
+echo target1 >dst2/target1
+tar --overwrite -xf archive.tar -C dst2 --warning=no-timestamp &&
+diff -c src/file1 dst2/file1 &&
+diff -c target1 dst2/target1
+
+ln -s target1 dst3/file1
+echo target1 >dst3/target1
+tar --overwrite -xhf archive.tar -C dst3 --warning=no-timestamp &&
+diff -c src/file1 dst3/file1 &&
+diff -c src/file1 dst3/target1
+)"
+echo extrac13.at:27 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+mkdir src dst1 dst2 dst3
+echo file1 >src/file1
+ln -s target1 dst1/file1
+echo target1 >dst1/target1
+echo target1 >target1
+
+tar -cf archive.tar -C src . &&
+tar -xf archive.tar -C dst1 --warning=no-timestamp &&
+diff -c src/file1 dst1/file1 &&
+diff -c target1 dst1/target1
+
+ln -s target1 dst2/file1
+echo target1 >dst2/target1
+tar --overwrite -xf archive.tar -C dst2 --warning=no-timestamp &&
+diff -c src/file1 dst2/file1 &&
+diff -c target1 dst2/target1
+
+ln -s target1 dst3/file1
+echo target1 >dst3/target1
+tar --overwrite -xhf archive.tar -C dst3 --warning=no-timestamp &&
+diff -c src/file1 dst3/file1 &&
+diff -c src/file1 dst3/target1
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+mkdir src dst1 dst2 dst3
+echo file1 >src/file1
+ln -s target1 dst1/file1
+echo target1 >dst1/target1
+echo target1 >target1
+
+tar -cf archive.tar -C src . &&
+tar -xf archive.tar -C dst1 --warning=no-timestamp &&
+diff -c src/file1 dst1/file1 &&
+diff -c target1 dst1/target1
+
+ln -s target1 dst2/file1
+echo target1 >dst2/target1
+tar --overwrite -xf archive.tar -C dst2 --warning=no-timestamp &&
+diff -c src/file1 dst2/file1 &&
+diff -c target1 dst2/target1
+
+ln -s target1 dst3/file1
+echo target1 >dst3/target1
+tar --overwrite -xhf archive.tar -C dst3 --warning=no-timestamp &&
+diff -c src/file1 dst3/file1 &&
+diff -c src/file1 dst3/target1
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+at_func_diff_devnull "$at_stderr" || at_failed=:
+at_func_diff_devnull "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/extrac13.at:27"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+
+
+
+  $at_traceoff
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 | eval $at_tee_pipe
+at_status=`cat "$at_status_file"`
+#AT_STOP_38
+#AT_START_39
+# 39. extrac14.at:23: extract -C symlink
+at_setup_line='extrac14.at:23'
+at_desc="extract -C symlink"
+$at_quiet $as_echo_n " 39: $at_desc                             "
+at_xfail=no
+      test -f $XFAILFILE && at_xfail=yes
+echo "#                             -*- compilation -*-" >> "$at_group_log"
+(
+  $as_echo "39. extrac14.at:23: testing ..."
+  $at_traceon
+
+
+
+
+
+  { $at_traceoff
+$as_echo "$at_srcdir/extrac14.at:26:
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H gnu\"
+export TAR_OPTIONS
+rm -rf *
+
+mkdir dest
+ln -s dest symlink
+echo foo >foo
+tar -cf archive.tar foo &&
+tar -xf archive.tar -C symlink --warning=no-timestamp &&
+cmp foo dest/foo
+)"
+echo extrac14.at:26 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+mkdir dest
+ln -s dest symlink
+echo foo >foo
+tar -cf archive.tar foo &&
+tar -xf archive.tar -C symlink --warning=no-timestamp &&
+cmp foo dest/foo
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+mkdir dest
+ln -s dest symlink
+echo foo >foo
+tar -cf archive.tar foo &&
+tar -xf archive.tar -C symlink --warning=no-timestamp &&
+cmp foo dest/foo
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+at_func_diff_devnull "$at_stderr" || at_failed=:
+at_func_diff_devnull "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/extrac14.at:26"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+
+
+
+  $at_traceoff
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 | eval $at_tee_pipe
+at_status=`cat "$at_status_file"`
+#AT_STOP_39
+#AT_START_40
+# 40. extrac15.at:23: extract parent mkdir failure
+at_setup_line='extrac15.at:23'
+at_desc="extract parent mkdir failure"
+$at_quiet $as_echo_n " 40: $at_desc                   "
+at_xfail=no
+      test -f $XFAILFILE && at_xfail=yes
+echo "#                             -*- compilation -*-" >> "$at_group_log"
+(
+  $as_echo "40. extrac15.at:23: testing ..."
+  $at_traceon
+
+
+
+
+
+  { $at_traceoff
+$as_echo "$at_srcdir/extrac15.at:26:
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H gnu\"
+export TAR_OPTIONS
+rm -rf *
+
+
+echo "test" > $$
+chmod 0 $$
+cat $$ > /dev/null 2>&1
+result=$?
+rm -f $$
+test $result -eq 0 && exit 77
+
+
+mkdir src src/a src/a/b dest dest/a
+touch src/a/b/c
+chmod a-w dest/a
+
+tar -cf archive.tar -C src a/b/c &&
+if tar -xf archive.tar -C dest a/b/c
+then (exit 1)
+else (exit 0)
+fi
+)"
+echo extrac15.at:26 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+
+echo "test" > $$
+chmod 0 $$
+cat $$ > /dev/null 2>&1
+result=$?
+rm -f $$
+test $result -eq 0 && exit 77
+
+
+mkdir src src/a src/a/b dest dest/a
+touch src/a/b/c
+chmod a-w dest/a
+
+tar -cf archive.tar -C src a/b/c &&
+if tar -xf archive.tar -C dest a/b/c
+then (exit 1)
+else (exit 0)
+fi
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+
+echo "test" > $$
+chmod 0 $$
+cat $$ > /dev/null 2>&1
+result=$?
+rm -f $$
+test $result -eq 0 && exit 77
+
+
+mkdir src src/a src/a/b dest dest/a
+touch src/a/b/c
+chmod a-w dest/a
+
+tar -cf archive.tar -C src a/b/c &&
+if tar -xf archive.tar -C dest a/b/c
+then (exit 1)
+else (exit 0)
+fi
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+echo >>"$at_stderr"; $as_echo "tar: a/b: Cannot mkdir: Permission denied
+tar: a/b/c: Cannot open: No such file or directory
+tar: Exiting with failure status due to previous errors
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+at_func_diff_devnull "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/extrac15.at:26"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+
+
+
+  $at_traceoff
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 | eval $at_tee_pipe
+at_status=`cat "$at_status_file"`
+#AT_STOP_40
+#AT_START_41
+# 41. label01.at:19: single-volume label
+at_setup_line='label01.at:19'
+at_desc="single-volume label"
+$at_quiet $as_echo_n " 41: $at_desc                            "
+at_xfail=no
+      test -f $XFAILFILE && at_xfail=yes
+echo "#                             -*- compilation -*-" >> "$at_group_log"
+(
+  $as_echo "41. label01.at:19: testing ..."
+  $at_traceon
+
+
+
+
+
+  { $at_traceoff
+$as_echo "$at_srcdir/label01.at:22:
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H gnu\"
+export TAR_OPTIONS
+rm -rf *
+
+genfile --file foo
+genfile --file bar
+tar -cf archive --label=Test foo bar
+tar tf archive
+)"
+echo label01.at:22 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+genfile --file foo
+genfile --file bar
+tar -cf archive --label=Test foo bar
+tar tf archive
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+genfile --file foo
+genfile --file bar
+tar -cf archive --label=Test foo bar
+tar tf archive
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+at_func_diff_devnull "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "Test
+foo
+bar
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/label01.at:22"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+              { $at_traceoff
+$as_echo "$at_srcdir/label01.at:22:
+mkdir oldgnu
+(cd oldgnu
+TEST_TAR_FORMAT=oldgnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H oldgnu\"
 export TAR_OPTIONS
 rm -rf *
 
@@ -15220,17 +15924,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_32
-#AT_START_33
-# 33. label02.at:19: multi-volume label
+#AT_STOP_41
+#AT_START_42
+# 42. label02.at:19: multi-volume label
 at_setup_line='label02.at:19'
 at_desc="multi-volume label"
-$at_quiet $as_echo_n " 33: $at_desc                             "
+$at_quiet $as_echo_n " 42: $at_desc                             "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "33. label02.at:19: testing ..."
+  $as_echo "42. label02.at:19: testing ..."
   $at_traceon
 
 
@@ -15308,7 +16012,317 @@ $at_failed && at_func_log_failure
 $at_traceon; }
 
               { $at_traceoff
-$as_echo "$at_srcdir/label02.at:22:
+$as_echo "$at_srcdir/label02.at:22:
+mkdir oldgnu
+(cd oldgnu
+TEST_TAR_FORMAT=oldgnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H oldgnu\"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --length 0 --file foo
+genfile --length 12288 --file bar
+genfile --length 12288 --file baz
+tar --label=Test -cM -L10 -f 1.tar -f 2.tar -f 3.tar -f 4.tar foo bar baz
+tar -Mt -f 1.tar -f 2.tar -f 3.tar -f 4.tar
+)"
+echo label02.at:22 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir oldgnu
+(cd oldgnu
+TEST_TAR_FORMAT=oldgnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H oldgnu"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --length 0 --file foo
+genfile --length 12288 --file bar
+genfile --length 12288 --file baz
+tar --label=Test -cM -L10 -f 1.tar -f 2.tar -f 3.tar -f 4.tar foo bar baz
+tar -Mt -f 1.tar -f 2.tar -f 3.tar -f 4.tar
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir oldgnu
+(cd oldgnu
+TEST_TAR_FORMAT=oldgnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H oldgnu"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --length 0 --file foo
+genfile --length 12288 --file bar
+genfile --length 12288 --file baz
+tar --label=Test -cM -L10 -f 1.tar -f 2.tar -f 3.tar -f 4.tar foo bar baz
+tar -Mt -f 1.tar -f 2.tar -f 3.tar -f 4.tar
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+at_func_diff_devnull "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "Test Volume 1
+foo
+bar
+baz
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/label02.at:22"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+              { $at_traceoff
+$as_echo "$at_srcdir/label02.at:22:
+mkdir posix
+(cd posix
+TEST_TAR_FORMAT=posix
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H posix\"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --length 0 --file foo
+genfile --length 12288 --file bar
+genfile --length 12288 --file baz
+tar --label=Test -cM -L10 -f 1.tar -f 2.tar -f 3.tar -f 4.tar foo bar baz
+tar -Mt -f 1.tar -f 2.tar -f 3.tar -f 4.tar
+)"
+echo label02.at:22 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir posix
+(cd posix
+TEST_TAR_FORMAT=posix
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H posix"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --length 0 --file foo
+genfile --length 12288 --file bar
+genfile --length 12288 --file baz
+tar --label=Test -cM -L10 -f 1.tar -f 2.tar -f 3.tar -f 4.tar foo bar baz
+tar -Mt -f 1.tar -f 2.tar -f 3.tar -f 4.tar
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir posix
+(cd posix
+TEST_TAR_FORMAT=posix
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H posix"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --length 0 --file foo
+genfile --length 12288 --file bar
+genfile --length 12288 --file baz
+tar --label=Test -cM -L10 -f 1.tar -f 2.tar -f 3.tar -f 4.tar foo bar baz
+tar -Mt -f 1.tar -f 2.tar -f 3.tar -f 4.tar
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+at_func_diff_devnull "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "Test Volume 1
+foo
+bar
+baz
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/label02.at:22"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+
+
+
+  $at_traceoff
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 | eval $at_tee_pipe
+at_status=`cat "$at_status_file"`
+#AT_STOP_42
+#AT_START_43
+# 43. label03.at:25: test-label option
+at_setup_line='label03.at:25'
+at_desc="test-label option"
+$at_quiet $as_echo_n " 43: $at_desc                              "
+at_xfail=no
+      test -f $XFAILFILE && at_xfail=yes
+echo "#                             -*- compilation -*-" >> "$at_group_log"
+(
+  $as_echo "43. label03.at:25: testing ..."
+  $at_traceon
+
+
+
+
+
+  { $at_traceoff
+$as_echo "$at_srcdir/label03.at:28:
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H gnu\"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --file file
+tar -c --label='iamalabel' --file iamanarchive file
+tar -c --file unlabeled.tar file
+decho \"# Display label\"
+tar --test-label --file=iamanarchive; echo \$?
+decho \"# Display label: unlabeled\"
+tar --test-label --file=unlabeled.tar; echo \$?
+decho \"# Test label: success\"
+tar --test-label --file=iamanarchive 'iamalabel'; echo \$?
+decho \"# Test label: failure\"
+tar --test-label --file=iamanarchive 'amalabel'; echo \$?
+decho \"# Test label: unlabeled\"
+tar --test-label --file=unlabeled.tar 'amalabel'; echo \$?
+decho \"# Test label, verbose: success\"
+tar --test-label --verbose --file=iamanarchive 'iamalabel'; echo \$?
+decho \"# Test label, verbose: failure\"
+tar --test-label --verbose --file=iamanarchive 'amalabel'; echo \$?
+decho \"# Test label: multiple arguments\"
+tar --test-label --file=iamanarchive a iamalabel b; echo \$?
+decho \"# Test label: wildcards\"
+tar --test-label --file=iamanarchive --wildcards '*label'; echo \$?
+)"
+echo label03.at:28 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --file file
+tar -c --label='iamalabel' --file iamanarchive file
+tar -c --file unlabeled.tar file
+decho "# Display label"
+tar --test-label --file=iamanarchive; echo $?
+decho "# Display label: unlabeled"
+tar --test-label --file=unlabeled.tar; echo $?
+decho "# Test label: success"
+tar --test-label --file=iamanarchive 'iamalabel'; echo $?
+decho "# Test label: failure"
+tar --test-label --file=iamanarchive 'amalabel'; echo $?
+decho "# Test label: unlabeled"
+tar --test-label --file=unlabeled.tar 'amalabel'; echo $?
+decho "# Test label, verbose: success"
+tar --test-label --verbose --file=iamanarchive 'iamalabel'; echo $?
+decho "# Test label, verbose: failure"
+tar --test-label --verbose --file=iamanarchive 'amalabel'; echo $?
+decho "# Test label: multiple arguments"
+tar --test-label --file=iamanarchive a iamalabel b; echo $?
+decho "# Test label: wildcards"
+tar --test-label --file=iamanarchive --wildcards '*label'; echo $?
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --file file
+tar -c --label='iamalabel' --file iamanarchive file
+tar -c --file unlabeled.tar file
+decho "# Display label"
+tar --test-label --file=iamanarchive; echo $?
+decho "# Display label: unlabeled"
+tar --test-label --file=unlabeled.tar; echo $?
+decho "# Test label: success"
+tar --test-label --file=iamanarchive 'iamalabel'; echo $?
+decho "# Test label: failure"
+tar --test-label --file=iamanarchive 'amalabel'; echo $?
+decho "# Test label: unlabeled"
+tar --test-label --file=unlabeled.tar 'amalabel'; echo $?
+decho "# Test label, verbose: success"
+tar --test-label --verbose --file=iamanarchive 'iamalabel'; echo $?
+decho "# Test label, verbose: failure"
+tar --test-label --verbose --file=iamanarchive 'amalabel'; echo $?
+decho "# Test label: multiple arguments"
+tar --test-label --file=iamanarchive a iamalabel b; echo $?
+decho "# Test label: wildcards"
+tar --test-label --file=iamanarchive --wildcards '*label'; echo $?
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+echo >>"$at_stderr"; $as_echo "# Display label
+# Display label: unlabeled
+# Test label: success
+# Test label: failure
+# Test label: unlabeled
+# Test label, verbose: success
+# Test label, verbose: failure
+tar: Archive label mismatch
+# Test label: multiple arguments
+# Test label: wildcards
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "# Display label
+iamalabel
+0
+# Display label: unlabeled
+0
+# Test label: success
+0
+# Test label: failure
+1
+# Test label: unlabeled
+1
+# Test label, verbose: success
+iamalabel
+0
+# Test label, verbose: failure
+iamalabel
+1
+# Test label: multiple arguments
+0
+# Test label: wildcards
+0
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/label03.at:28"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+              { $at_traceoff
+$as_echo "$at_srcdir/label03.at:28:
 mkdir oldgnu
 (cd oldgnu
 TEST_TAR_FORMAT=oldgnu
@@ -15318,13 +16332,413 @@ export TAR_OPTIONS
 rm -rf *
 
 exec <&-
-genfile --length 0 --file foo
-genfile --length 12288 --file bar
-genfile --length 12288 --file baz
-tar --label=Test -cM -L10 -f 1.tar -f 2.tar -f 3.tar -f 4.tar foo bar baz
-tar -Mt -f 1.tar -f 2.tar -f 3.tar -f 4.tar
+genfile --file file
+tar -c --label='iamalabel' --file iamanarchive file
+tar -c --file unlabeled.tar file
+decho \"# Display label\"
+tar --test-label --file=iamanarchive; echo \$?
+decho \"# Display label: unlabeled\"
+tar --test-label --file=unlabeled.tar; echo \$?
+decho \"# Test label: success\"
+tar --test-label --file=iamanarchive 'iamalabel'; echo \$?
+decho \"# Test label: failure\"
+tar --test-label --file=iamanarchive 'amalabel'; echo \$?
+decho \"# Test label: unlabeled\"
+tar --test-label --file=unlabeled.tar 'amalabel'; echo \$?
+decho \"# Test label, verbose: success\"
+tar --test-label --verbose --file=iamanarchive 'iamalabel'; echo \$?
+decho \"# Test label, verbose: failure\"
+tar --test-label --verbose --file=iamanarchive 'amalabel'; echo \$?
+decho \"# Test label: multiple arguments\"
+tar --test-label --file=iamanarchive a iamalabel b; echo \$?
+decho \"# Test label: wildcards\"
+tar --test-label --file=iamanarchive --wildcards '*label'; echo \$?
+)"
+echo label03.at:28 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir oldgnu
+(cd oldgnu
+TEST_TAR_FORMAT=oldgnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H oldgnu"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --file file
+tar -c --label='iamalabel' --file iamanarchive file
+tar -c --file unlabeled.tar file
+decho "# Display label"
+tar --test-label --file=iamanarchive; echo $?
+decho "# Display label: unlabeled"
+tar --test-label --file=unlabeled.tar; echo $?
+decho "# Test label: success"
+tar --test-label --file=iamanarchive 'iamalabel'; echo $?
+decho "# Test label: failure"
+tar --test-label --file=iamanarchive 'amalabel'; echo $?
+decho "# Test label: unlabeled"
+tar --test-label --file=unlabeled.tar 'amalabel'; echo $?
+decho "# Test label, verbose: success"
+tar --test-label --verbose --file=iamanarchive 'iamalabel'; echo $?
+decho "# Test label, verbose: failure"
+tar --test-label --verbose --file=iamanarchive 'amalabel'; echo $?
+decho "# Test label: multiple arguments"
+tar --test-label --file=iamanarchive a iamalabel b; echo $?
+decho "# Test label: wildcards"
+tar --test-label --file=iamanarchive --wildcards '*label'; echo $?
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir oldgnu
+(cd oldgnu
+TEST_TAR_FORMAT=oldgnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H oldgnu"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --file file
+tar -c --label='iamalabel' --file iamanarchive file
+tar -c --file unlabeled.tar file
+decho "# Display label"
+tar --test-label --file=iamanarchive; echo $?
+decho "# Display label: unlabeled"
+tar --test-label --file=unlabeled.tar; echo $?
+decho "# Test label: success"
+tar --test-label --file=iamanarchive 'iamalabel'; echo $?
+decho "# Test label: failure"
+tar --test-label --file=iamanarchive 'amalabel'; echo $?
+decho "# Test label: unlabeled"
+tar --test-label --file=unlabeled.tar 'amalabel'; echo $?
+decho "# Test label, verbose: success"
+tar --test-label --verbose --file=iamanarchive 'iamalabel'; echo $?
+decho "# Test label, verbose: failure"
+tar --test-label --verbose --file=iamanarchive 'amalabel'; echo $?
+decho "# Test label: multiple arguments"
+tar --test-label --file=iamanarchive a iamalabel b; echo $?
+decho "# Test label: wildcards"
+tar --test-label --file=iamanarchive --wildcards '*label'; echo $?
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+echo >>"$at_stderr"; $as_echo "# Display label
+# Display label: unlabeled
+# Test label: success
+# Test label: failure
+# Test label: unlabeled
+# Test label, verbose: success
+# Test label, verbose: failure
+tar: Archive label mismatch
+# Test label: multiple arguments
+# Test label: wildcards
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "# Display label
+iamalabel
+0
+# Display label: unlabeled
+0
+# Test label: success
+0
+# Test label: failure
+1
+# Test label: unlabeled
+1
+# Test label, verbose: success
+iamalabel
+0
+# Test label, verbose: failure
+iamalabel
+1
+# Test label: multiple arguments
+0
+# Test label: wildcards
+0
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/label03.at:28"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+              { $at_traceoff
+$as_echo "$at_srcdir/label03.at:28:
+mkdir posix
+(cd posix
+TEST_TAR_FORMAT=posix
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H posix\"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --file file
+tar -c --label='iamalabel' --file iamanarchive file
+tar -c --file unlabeled.tar file
+decho \"# Display label\"
+tar --test-label --file=iamanarchive; echo \$?
+decho \"# Display label: unlabeled\"
+tar --test-label --file=unlabeled.tar; echo \$?
+decho \"# Test label: success\"
+tar --test-label --file=iamanarchive 'iamalabel'; echo \$?
+decho \"# Test label: failure\"
+tar --test-label --file=iamanarchive 'amalabel'; echo \$?
+decho \"# Test label: unlabeled\"
+tar --test-label --file=unlabeled.tar 'amalabel'; echo \$?
+decho \"# Test label, verbose: success\"
+tar --test-label --verbose --file=iamanarchive 'iamalabel'; echo \$?
+decho \"# Test label, verbose: failure\"
+tar --test-label --verbose --file=iamanarchive 'amalabel'; echo \$?
+decho \"# Test label: multiple arguments\"
+tar --test-label --file=iamanarchive a iamalabel b; echo \$?
+decho \"# Test label: wildcards\"
+tar --test-label --file=iamanarchive --wildcards '*label'; echo \$?
+)"
+echo label03.at:28 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir posix
+(cd posix
+TEST_TAR_FORMAT=posix
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H posix"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --file file
+tar -c --label='iamalabel' --file iamanarchive file
+tar -c --file unlabeled.tar file
+decho "# Display label"
+tar --test-label --file=iamanarchive; echo $?
+decho "# Display label: unlabeled"
+tar --test-label --file=unlabeled.tar; echo $?
+decho "# Test label: success"
+tar --test-label --file=iamanarchive 'iamalabel'; echo $?
+decho "# Test label: failure"
+tar --test-label --file=iamanarchive 'amalabel'; echo $?
+decho "# Test label: unlabeled"
+tar --test-label --file=unlabeled.tar 'amalabel'; echo $?
+decho "# Test label, verbose: success"
+tar --test-label --verbose --file=iamanarchive 'iamalabel'; echo $?
+decho "# Test label, verbose: failure"
+tar --test-label --verbose --file=iamanarchive 'amalabel'; echo $?
+decho "# Test label: multiple arguments"
+tar --test-label --file=iamanarchive a iamalabel b; echo $?
+decho "# Test label: wildcards"
+tar --test-label --file=iamanarchive --wildcards '*label'; echo $?
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir posix
+(cd posix
+TEST_TAR_FORMAT=posix
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H posix"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --file file
+tar -c --label='iamalabel' --file iamanarchive file
+tar -c --file unlabeled.tar file
+decho "# Display label"
+tar --test-label --file=iamanarchive; echo $?
+decho "# Display label: unlabeled"
+tar --test-label --file=unlabeled.tar; echo $?
+decho "# Test label: success"
+tar --test-label --file=iamanarchive 'iamalabel'; echo $?
+decho "# Test label: failure"
+tar --test-label --file=iamanarchive 'amalabel'; echo $?
+decho "# Test label: unlabeled"
+tar --test-label --file=unlabeled.tar 'amalabel'; echo $?
+decho "# Test label, verbose: success"
+tar --test-label --verbose --file=iamanarchive 'iamalabel'; echo $?
+decho "# Test label, verbose: failure"
+tar --test-label --verbose --file=iamanarchive 'amalabel'; echo $?
+decho "# Test label: multiple arguments"
+tar --test-label --file=iamanarchive a iamalabel b; echo $?
+decho "# Test label: wildcards"
+tar --test-label --file=iamanarchive --wildcards '*label'; echo $?
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+echo >>"$at_stderr"; $as_echo "# Display label
+# Display label: unlabeled
+# Test label: success
+# Test label: failure
+# Test label: unlabeled
+# Test label, verbose: success
+# Test label, verbose: failure
+tar: Archive label mismatch
+# Test label: multiple arguments
+# Test label: wildcards
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "# Display label
+iamalabel
+0
+# Display label: unlabeled
+0
+# Test label: success
+0
+# Test label: failure
+1
+# Test label: unlabeled
+1
+# Test label, verbose: success
+iamalabel
+0
+# Test label, verbose: failure
+iamalabel
+1
+# Test label: multiple arguments
+0
+# Test label: wildcards
+0
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/label03.at:28"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+
+
+
+  $at_traceoff
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 | eval $at_tee_pipe
+at_status=`cat "$at_status_file"`
+#AT_STOP_43
+#AT_START_44
+# 44. label04.at:25: label with non-create option
+at_setup_line='label04.at:25'
+at_desc="label with non-create option"
+$at_quiet $as_echo_n " 44: $at_desc                   "
+at_xfail=no
+      test -f $XFAILFILE && at_xfail=yes
+echo "#                             -*- compilation -*-" >> "$at_group_log"
+(
+  $as_echo "44. label04.at:25: testing ..."
+  $at_traceon
+
+
+
+
+
+  { $at_traceoff
+$as_echo "$at_srcdir/label04.at:28:
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H gnu\"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --file file
+decho \"# Create volume\"
+tar -c -f archive --label='New volume' file
+decho \"# Update: wrong label\"
+tar -rf archive --label='My volume' file; echo \$?
+decho \"# Update: right label\"
+tar -rf archive --label='New volume' file
 )"
-echo label02.at:22 >"$at_check_line_file"
+echo label04.at:28 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --file file
+decho "# Create volume"
+tar -c -f archive --label='New volume' file
+decho "# Update: wrong label"
+tar -rf archive --label='My volume' file; echo $?
+decho "# Update: right label"
+tar -rf archive --label='New volume' file
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --file file
+decho "# Create volume"
+tar -c -f archive --label='New volume' file
+decho "# Update: wrong label"
+tar -rf archive --label='My volume' file; echo $?
+decho "# Update: right label"
+tar -rf archive --label='New volume' file
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+echo >>"$at_stderr"; $as_echo "# Create volume
+# Update: wrong label
+tar: Volume \`New volume' does not match \`My volume'
+tar: Error is not recoverable: exiting now
+# Update: right label
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "# Create volume
+# Update: wrong label
+2
+# Update: right label
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/label04.at:28"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+              { $at_traceoff
+$as_echo "$at_srcdir/label04.at:28:
+mkdir oldgnu
+(cd oldgnu
+TEST_TAR_FORMAT=oldgnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H oldgnu\"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --file file
+decho \"# Create volume\"
+tar -c -f archive --label='New volume' file
+decho \"# Update: wrong label\"
+tar -rf archive --label='My volume' file; echo \$?
+decho \"# Update: right label\"
+tar -rf archive --label='New volume' file
+)"
+echo label04.at:28 >"$at_check_line_file"
 
 if { echo 'Not enabling shell tracing (command contains an embedded newline)'
    false; }; then
@@ -15338,11 +16752,13 @@ export TAR_OPTIONS
 rm -rf *
 
 exec <&-
-genfile --length 0 --file foo
-genfile --length 12288 --file bar
-genfile --length 12288 --file baz
-tar --label=Test -cM -L10 -f 1.tar -f 2.tar -f 3.tar -f 4.tar foo bar baz
-tar -Mt -f 1.tar -f 2.tar -f 3.tar -f 4.tar
+genfile --file file
+decho "# Create volume"
+tar -c -f archive --label='New volume' file
+decho "# Update: wrong label"
+tar -rf archive --label='My volume' file; echo $?
+decho "# Update: right label"
+tar -rf archive --label='New volume' file
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -15356,29 +16772,37 @@ export TAR_OPTIONS
 rm -rf *
 
 exec <&-
-genfile --length 0 --file foo
-genfile --length 12288 --file bar
-genfile --length 12288 --file baz
-tar --label=Test -cM -L10 -f 1.tar -f 2.tar -f 3.tar -f 4.tar foo bar baz
-tar -Mt -f 1.tar -f 2.tar -f 3.tar -f 4.tar
+genfile --file file
+decho "# Create volume"
+tar -c -f archive --label='New volume' file
+decho "# Update: wrong label"
+tar -rf archive --label='My volume' file; echo $?
+decho "# Update: right label"
+tar -rf archive --label='New volume' file
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
 at_failed=false
-at_func_diff_devnull "$at_stderr" || at_failed=:
-echo >>"$at_stdout"; $as_echo "Test Volume 1
-foo
-bar
-baz
+echo >>"$at_stderr"; $as_echo "# Create volume
+# Update: wrong label
+tar: Volume \`New volume' does not match \`My volume'
+tar: Error is not recoverable: exiting now
+# Update: right label
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "# Create volume
+# Update: wrong label
+2
+# Update: right label
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_func_check_status 0 $at_status "$at_srcdir/label02.at:22"
+at_func_check_status 0 $at_status "$at_srcdir/label04.at:28"
 
 $at_failed && at_func_log_failure
 $at_traceon; }
 
               { $at_traceoff
-$as_echo "$at_srcdir/label02.at:22:
+$as_echo "$at_srcdir/label04.at:28:
 mkdir posix
 (cd posix
 TEST_TAR_FORMAT=posix
@@ -15388,13 +16812,15 @@ export TAR_OPTIONS
 rm -rf *
 
 exec <&-
-genfile --length 0 --file foo
-genfile --length 12288 --file bar
-genfile --length 12288 --file baz
-tar --label=Test -cM -L10 -f 1.tar -f 2.tar -f 3.tar -f 4.tar foo bar baz
-tar -Mt -f 1.tar -f 2.tar -f 3.tar -f 4.tar
+genfile --file file
+decho \"# Create volume\"
+tar -c -f archive --label='New volume' file
+decho \"# Update: wrong label\"
+tar -rf archive --label='My volume' file; echo \$?
+decho \"# Update: right label\"
+tar -rf archive --label='New volume' file
 )"
-echo label02.at:22 >"$at_check_line_file"
+echo label04.at:28 >"$at_check_line_file"
 
 if { echo 'Not enabling shell tracing (command contains an embedded newline)'
    false; }; then
@@ -15408,11 +16834,13 @@ export TAR_OPTIONS
 rm -rf *
 
 exec <&-
-genfile --length 0 --file foo
-genfile --length 12288 --file bar
-genfile --length 12288 --file baz
-tar --label=Test -cM -L10 -f 1.tar -f 2.tar -f 3.tar -f 4.tar foo bar baz
-tar -Mt -f 1.tar -f 2.tar -f 3.tar -f 4.tar
+genfile --file file
+decho "# Create volume"
+tar -c -f archive --label='New volume' file
+decho "# Update: wrong label"
+tar -rf archive --label='My volume' file; echo $?
+decho "# Update: right label"
+tar -rf archive --label='New volume' file
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -15426,23 +16854,31 @@ export TAR_OPTIONS
 rm -rf *
 
 exec <&-
-genfile --length 0 --file foo
-genfile --length 12288 --file bar
-genfile --length 12288 --file baz
-tar --label=Test -cM -L10 -f 1.tar -f 2.tar -f 3.tar -f 4.tar foo bar baz
-tar -Mt -f 1.tar -f 2.tar -f 3.tar -f 4.tar
+genfile --file file
+decho "# Create volume"
+tar -c -f archive --label='New volume' file
+decho "# Update: wrong label"
+tar -rf archive --label='My volume' file; echo $?
+decho "# Update: right label"
+tar -rf archive --label='New volume' file
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
 at_failed=false
-at_func_diff_devnull "$at_stderr" || at_failed=:
-echo >>"$at_stdout"; $as_echo "Test Volume 1
-foo
-bar
-baz
+echo >>"$at_stderr"; $as_echo "# Create volume
+# Update: wrong label
+tar: Volume \`New volume' does not match \`My volume'
+tar: Error is not recoverable: exiting now
+# Update: right label
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "# Create volume
+# Update: wrong label
+2
+# Update: right label
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_func_check_status 0 $at_status "$at_srcdir/label02.at:22"
+at_func_check_status 0 $at_status "$at_srcdir/label04.at:28"
 
 $at_failed && at_func_log_failure
 $at_traceon; }
@@ -15454,17 +16890,287 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_33
-#AT_START_34
-# 34. backup01.at:33: extracting existing dir with --backup
+#AT_STOP_44
+#AT_START_45
+# 45. label05.at:22: label with non-create option
+at_setup_line='label05.at:22'
+at_desc="label with non-create option"
+$at_quiet $as_echo_n " 45: $at_desc                   "
+at_xfail=no
+      test -f $XFAILFILE && at_xfail=yes
+echo "#                             -*- compilation -*-" >> "$at_group_log"
+(
+  $as_echo "45. label05.at:22: testing ..."
+  $at_traceon
+
+
+
+
+
+  { $at_traceoff
+$as_echo "$at_srcdir/label05.at:25:
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H gnu\"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --file file
+decho \"# Create volume\"
+tar -c -f archive file
+decho \"# Update: wrong label\"
+tar -rf archive --label='My volume' file; echo \$?
+decho \"# Update: right label\"
+tar -rf archive file
+)"
+echo label05.at:25 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --file file
+decho "# Create volume"
+tar -c -f archive file
+decho "# Update: wrong label"
+tar -rf archive --label='My volume' file; echo $?
+decho "# Update: right label"
+tar -rf archive file
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --file file
+decho "# Create volume"
+tar -c -f archive file
+decho "# Update: wrong label"
+tar -rf archive --label='My volume' file; echo $?
+decho "# Update: right label"
+tar -rf archive file
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+echo >>"$at_stderr"; $as_echo "# Create volume
+# Update: wrong label
+tar: Archive not labeled to match \`My volume'
+tar: Error is not recoverable: exiting now
+# Update: right label
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "# Create volume
+# Update: wrong label
+2
+# Update: right label
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/label05.at:25"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+              { $at_traceoff
+$as_echo "$at_srcdir/label05.at:25:
+mkdir oldgnu
+(cd oldgnu
+TEST_TAR_FORMAT=oldgnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H oldgnu\"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --file file
+decho \"# Create volume\"
+tar -c -f archive file
+decho \"# Update: wrong label\"
+tar -rf archive --label='My volume' file; echo \$?
+decho \"# Update: right label\"
+tar -rf archive file
+)"
+echo label05.at:25 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir oldgnu
+(cd oldgnu
+TEST_TAR_FORMAT=oldgnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H oldgnu"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --file file
+decho "# Create volume"
+tar -c -f archive file
+decho "# Update: wrong label"
+tar -rf archive --label='My volume' file; echo $?
+decho "# Update: right label"
+tar -rf archive file
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir oldgnu
+(cd oldgnu
+TEST_TAR_FORMAT=oldgnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H oldgnu"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --file file
+decho "# Create volume"
+tar -c -f archive file
+decho "# Update: wrong label"
+tar -rf archive --label='My volume' file; echo $?
+decho "# Update: right label"
+tar -rf archive file
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+echo >>"$at_stderr"; $as_echo "# Create volume
+# Update: wrong label
+tar: Archive not labeled to match \`My volume'
+tar: Error is not recoverable: exiting now
+# Update: right label
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "# Create volume
+# Update: wrong label
+2
+# Update: right label
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/label05.at:25"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+              { $at_traceoff
+$as_echo "$at_srcdir/label05.at:25:
+mkdir posix
+(cd posix
+TEST_TAR_FORMAT=posix
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H posix\"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --file file
+decho \"# Create volume\"
+tar -c -f archive file
+decho \"# Update: wrong label\"
+tar -rf archive --label='My volume' file; echo \$?
+decho \"# Update: right label\"
+tar -rf archive file
+)"
+echo label05.at:25 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir posix
+(cd posix
+TEST_TAR_FORMAT=posix
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H posix"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --file file
+decho "# Create volume"
+tar -c -f archive file
+decho "# Update: wrong label"
+tar -rf archive --label='My volume' file; echo $?
+decho "# Update: right label"
+tar -rf archive file
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir posix
+(cd posix
+TEST_TAR_FORMAT=posix
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H posix"
+export TAR_OPTIONS
+rm -rf *
+
+exec <&-
+genfile --file file
+decho "# Create volume"
+tar -c -f archive file
+decho "# Update: wrong label"
+tar -rf archive --label='My volume' file; echo $?
+decho "# Update: right label"
+tar -rf archive file
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+echo >>"$at_stderr"; $as_echo "# Create volume
+# Update: wrong label
+tar: Archive not labeled to match \`My volume'
+tar: Error is not recoverable: exiting now
+# Update: right label
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "# Create volume
+# Update: wrong label
+2
+# Update: right label
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/label05.at:25"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+
+
+
+  $at_traceoff
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 | eval $at_tee_pipe
+at_status=`cat "$at_status_file"`
+#AT_STOP_45
+#AT_START_46
+# 46. backup01.at:33: extracting existing dir with --backup
 at_setup_line='backup01.at:33'
 at_desc="extracting existing dir with --backup"
-$at_quiet $as_echo_n " 34: $at_desc          "
+$at_quiet $as_echo_n " 46: $at_desc          "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "34. backup01.at:33: testing ..."
+  $as_echo "46. backup01.at:33: testing ..."
   $at_traceon
 
 
@@ -15484,7 +17190,7 @@ rm -rf *
 mkdir dir1 dir2
 echo bla > dir1/file1
 tar cf test.tar dir1 dir2
-tar xfv test.tar --backup
+tar xfv test.tar --backup --warning=no-timestamp
 )"
 echo backup01.at:36 >"$at_check_line_file"
 
@@ -15502,7 +17208,7 @@ rm -rf *
 mkdir dir1 dir2
 echo bla > dir1/file1
 tar cf test.tar dir1 dir2
-tar xfv test.tar --backup
+tar xfv test.tar --backup --warning=no-timestamp
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -15518,7 +17224,7 @@ rm -rf *
 mkdir dir1 dir2
 echo bla > dir1/file1
 tar cf test.tar dir1 dir2
-tar xfv test.tar --backup
+tar xfv test.tar --backup --warning=no-timestamp
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
@@ -15548,7 +17254,7 @@ rm -rf *
 mkdir dir1 dir2
 echo bla > dir1/file1
 tar cf test.tar dir1 dir2
-tar xfv test.tar --backup
+tar xfv test.tar --backup --warning=no-timestamp
 )"
 echo backup01.at:36 >"$at_check_line_file"
 
@@ -15566,7 +17272,7 @@ rm -rf *
 mkdir dir1 dir2
 echo bla > dir1/file1
 tar cf test.tar dir1 dir2
-tar xfv test.tar --backup
+tar xfv test.tar --backup --warning=no-timestamp
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -15582,7 +17288,7 @@ rm -rf *
 mkdir dir1 dir2
 echo bla > dir1/file1
 tar cf test.tar dir1 dir2
-tar xfv test.tar --backup
+tar xfv test.tar --backup --warning=no-timestamp
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
@@ -15612,7 +17318,7 @@ rm -rf *
 mkdir dir1 dir2
 echo bla > dir1/file1
 tar cf test.tar dir1 dir2
-tar xfv test.tar --backup
+tar xfv test.tar --backup --warning=no-timestamp
 )"
 echo backup01.at:36 >"$at_check_line_file"
 
@@ -15630,7 +17336,7 @@ rm -rf *
 mkdir dir1 dir2
 echo bla > dir1/file1
 tar cf test.tar dir1 dir2
-tar xfv test.tar --backup
+tar xfv test.tar --backup --warning=no-timestamp
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -15646,7 +17352,7 @@ rm -rf *
 mkdir dir1 dir2
 echo bla > dir1/file1
 tar cf test.tar dir1 dir2
-tar xfv test.tar --backup
+tar xfv test.tar --backup --warning=no-timestamp
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
@@ -15676,7 +17382,7 @@ rm -rf *
 mkdir dir1 dir2
 echo bla > dir1/file1
 tar cf test.tar dir1 dir2
-tar xfv test.tar --backup
+tar xfv test.tar --backup --warning=no-timestamp
 )"
 echo backup01.at:36 >"$at_check_line_file"
 
@@ -15694,7 +17400,7 @@ rm -rf *
 mkdir dir1 dir2
 echo bla > dir1/file1
 tar cf test.tar dir1 dir2
-tar xfv test.tar --backup
+tar xfv test.tar --backup --warning=no-timestamp
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -15710,7 +17416,7 @@ rm -rf *
 mkdir dir1 dir2
 echo bla > dir1/file1
 tar cf test.tar dir1 dir2
-tar xfv test.tar --backup
+tar xfv test.tar --backup --warning=no-timestamp
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
@@ -15740,7 +17446,7 @@ rm -rf *
 mkdir dir1 dir2
 echo bla > dir1/file1
 tar cf test.tar dir1 dir2
-tar xfv test.tar --backup
+tar xfv test.tar --backup --warning=no-timestamp
 )"
 echo backup01.at:36 >"$at_check_line_file"
 
@@ -15758,7 +17464,7 @@ rm -rf *
 mkdir dir1 dir2
 echo bla > dir1/file1
 tar cf test.tar dir1 dir2
-tar xfv test.tar --backup
+tar xfv test.tar --backup --warning=no-timestamp
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -15774,7 +17480,7 @@ rm -rf *
 mkdir dir1 dir2
 echo bla > dir1/file1
 tar cf test.tar dir1 dir2
-tar xfv test.tar --backup
+tar xfv test.tar --backup --warning=no-timestamp
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
@@ -15798,16 +17504,16 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_34
-#AT_START_35
-# 35. gzip.at:23: gzip
+#AT_STOP_46
+#AT_START_47
+# 47. gzip.at:23: gzip
 at_setup_line='gzip.at:23'
 at_desc="gzip"
-$at_quiet $as_echo_n " 35: $at_desc                                           "
+$at_quiet $as_echo_n " 47: $at_desc                                           "
 at_xfail=no
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "35. gzip.at:23: testing ..."
+  $as_echo "47. gzip.at:23: testing ..."
   $at_traceon
 
 
@@ -15819,7 +17525,10 @@ $as_echo "$at_srcdir/gzip.at:28:
 
 cat /dev/null | gzip - > /dev/null 2>&1 || exit 77
 
-tar xfvz /dev/null
+tar xfvz /dev/null 2>err
+RC=\$?
+sed -n '/^tar:/p' err >&2
+exit \$RC
 "
 echo gzip.at:28 >"$at_check_line_file"
 
@@ -15829,7 +17538,10 @@ if { echo 'Not enabling shell tracing (command contains an embedded newline)'
 
 cat /dev/null | gzip - > /dev/null 2>&1 || exit 77
 
-tar xfvz /dev/null
+tar xfvz /dev/null 2>err
+RC=$?
+sed -n '/^tar:/p' err >&2
+exit $RC
  ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -15837,14 +17549,15 @@ else
 
 cat /dev/null | gzip - > /dev/null 2>&1 || exit 77
 
-tar xfvz /dev/null
+tar xfvz /dev/null 2>err
+RC=$?
+sed -n '/^tar:/p' err >&2
+exit $RC
  ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
 at_failed=false
-echo >>"$at_stderr"; $as_echo "
-gzip: stdin: unexpected end of file
-tar: Child returned status 1
+echo >>"$at_stderr"; $as_echo "tar: Child returned status 1
 tar: Error is not recoverable: exiting now
 " | \
   $at_diff - "$at_stderr" || at_failed=:
@@ -15859,17 +17572,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_35
-#AT_START_36
-# 36. incremental.at:23: incremental
+#AT_STOP_47
+#AT_START_48
+# 48. incremental.at:23: incremental
 at_setup_line='incremental.at:23'
 at_desc="incremental"
-$at_quiet $as_echo_n " 36: $at_desc                                    "
+$at_quiet $as_echo_n " 48: $at_desc                                    "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "36. incremental.at:23: testing ..."
+  $as_echo "48. incremental.at:23: testing ..."
   $at_traceon
 
 
@@ -16273,17 +17986,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_36
-#AT_START_37
-# 37. incr01.at:27: restore broken symlinks from incremental
+#AT_STOP_48
+#AT_START_49
+# 49. incr01.at:27: restore broken symlinks from incremental
 at_setup_line='incr01.at:27'
 at_desc="restore broken symlinks from incremental"
-$at_quiet $as_echo_n " 37: $at_desc       "
+$at_quiet $as_echo_n " 49: $at_desc       "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "37. incr01.at:27: testing ..."
+  $as_echo "49. incr01.at:27: testing ..."
   $at_traceon
 
 
@@ -16309,9 +18022,9 @@ tar -cf archive.1 -g db directory
 
 mv directory orig
 
-tar xvfg archive.0 /dev/null
+tar xvfg archive.0 /dev/null --warning=no-timestamp
 echo separator
-tar xvfg archive.1 /dev/null
+tar xvfg archive.1 /dev/null --warning=no-timestamp
 )"
 echo incr01.at:30 >"$at_check_line_file"
 
@@ -16335,9 +18048,9 @@ tar -cf archive.1 -g db directory
 
 mv directory orig
 
-tar xvfg archive.0 /dev/null
+tar xvfg archive.0 /dev/null --warning=no-timestamp
 echo separator
-tar xvfg archive.1 /dev/null
+tar xvfg archive.1 /dev/null --warning=no-timestamp
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -16359,9 +18072,9 @@ tar -cf archive.1 -g db directory
 
 mv directory orig
 
-tar xvfg archive.0 /dev/null
+tar xvfg archive.0 /dev/null --warning=no-timestamp
 echo separator
-tar xvfg archive.1 /dev/null
+tar xvfg archive.1 /dev/null --warning=no-timestamp
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
@@ -16398,9 +18111,9 @@ tar -cf archive.1 -g db directory
 
 mv directory orig
 
-tar xvfg archive.0 /dev/null
+tar xvfg archive.0 /dev/null --warning=no-timestamp
 echo separator
-tar xvfg archive.1 /dev/null
+tar xvfg archive.1 /dev/null --warning=no-timestamp
 )"
 echo incr01.at:30 >"$at_check_line_file"
 
@@ -16424,9 +18137,9 @@ tar -cf archive.1 -g db directory
 
 mv directory orig
 
-tar xvfg archive.0 /dev/null
+tar xvfg archive.0 /dev/null --warning=no-timestamp
 echo separator
-tar xvfg archive.1 /dev/null
+tar xvfg archive.1 /dev/null --warning=no-timestamp
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -16448,9 +18161,9 @@ tar -cf archive.1 -g db directory
 
 mv directory orig
 
-tar xvfg archive.0 /dev/null
+tar xvfg archive.0 /dev/null --warning=no-timestamp
 echo separator
-tar xvfg archive.1 /dev/null
+tar xvfg archive.1 /dev/null --warning=no-timestamp
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
@@ -16487,9 +18200,9 @@ tar -cf archive.1 -g db directory
 
 mv directory orig
 
-tar xvfg archive.0 /dev/null
+tar xvfg archive.0 /dev/null --warning=no-timestamp
 echo separator
-tar xvfg archive.1 /dev/null
+tar xvfg archive.1 /dev/null --warning=no-timestamp
 )"
 echo incr01.at:30 >"$at_check_line_file"
 
@@ -16513,9 +18226,9 @@ tar -cf archive.1 -g db directory
 
 mv directory orig
 
-tar xvfg archive.0 /dev/null
+tar xvfg archive.0 /dev/null --warning=no-timestamp
 echo separator
-tar xvfg archive.1 /dev/null
+tar xvfg archive.1 /dev/null --warning=no-timestamp
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -16537,9 +18250,9 @@ tar -cf archive.1 -g db directory
 
 mv directory orig
 
-tar xvfg archive.0 /dev/null
+tar xvfg archive.0 /dev/null --warning=no-timestamp
 echo separator
-tar xvfg archive.1 /dev/null
+tar xvfg archive.1 /dev/null --warning=no-timestamp
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
@@ -16564,17 +18277,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_37
-#AT_START_38
-# 38. incr02.at:32: restoring timestamps from incremental
+#AT_STOP_49
+#AT_START_50
+# 50. incr02.at:32: restoring timestamps from incremental
 at_setup_line='incr02.at:32'
 at_desc="restoring timestamps from incremental"
-$at_quiet $as_echo_n " 38: $at_desc          "
+$at_quiet $as_echo_n " 50: $at_desc          "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "38. incr02.at:32: testing ..."
+  $as_echo "50. incr02.at:32: testing ..."
   $at_traceon
 
 
@@ -17044,17 +18757,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_38
-#AT_START_39
-# 39. listed01.at:26: --listed for individual files
+#AT_STOP_50
+#AT_START_51
+# 51. listed01.at:26: --listed for individual files
 at_setup_line='listed01.at:26'
 at_desc="--listed for individual files"
-$at_quiet $as_echo_n " 39: $at_desc                  "
+$at_quiet $as_echo_n " 51: $at_desc                  "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "39. listed01.at:26: testing ..."
+  $as_echo "51. listed01.at:26: testing ..."
   $at_traceon
 
 
@@ -17314,17 +19027,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_39
-#AT_START_40
-# 40. listed02.at:28: working --listed
+#AT_STOP_51
+#AT_START_52
+# 52. listed02.at:28: working --listed
 at_setup_line='listed02.at:28'
 at_desc="working --listed"
-$at_quiet $as_echo_n " 40: $at_desc                               "
+$at_quiet $as_echo_n " 52: $at_desc                               "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "40. listed02.at:28: testing ..."
+  $as_echo "52. listed02.at:28: testing ..."
   $at_traceon
 
 
@@ -17617,288 +19330,424 @@ at_func_check_status 0 $at_status "$at_srcdir/listed02.at:31"
 $at_failed && at_func_log_failure
 $at_traceon; }
 
-              { $at_traceoff
-$as_echo "$at_srcdir/listed02.at:31:
-mkdir oldgnu
-(cd oldgnu
-TEST_TAR_FORMAT=oldgnu
-export TEST_TAR_FORMAT
-TAR_OPTIONS=\"-H oldgnu\"
-export TAR_OPTIONS
-rm -rf *
-
+              { $at_traceoff
+$as_echo "$at_srcdir/listed02.at:31:
+mkdir oldgnu
+(cd oldgnu
+TEST_TAR_FORMAT=oldgnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H oldgnu\"
+export TAR_OPTIONS
+rm -rf *
+
+
+test -z "`sort < /dev/null 2>&1`" || exit 77
+
+echo Create directories
+
+mkdir tart
+sleep 1
+mkdir tart/c0
+sleep 1
+mkdir tart/c1
+sleep 1
+
+for file in tart/a1 tart/b1 tart/c0/cq1 tart/c0/cq2 tart/c1/ca1 tart/c1/ca2
+do
+  echo File \$file > \$file
+  sleep 1
+done
+
+sleep 1
+echo Creating main archive
+echo >&2 \"Creating main archive\"
+tar -c -v --listed-incremental=tart.incr1 -f archive.1 tart 2> err || exit 1
+
+# The above prints two lines to stderr announcing the new directories c0 and c1.
+# Ensure that they appear in this script's stderr in sorted order.
+sort err 1>&2; rm -f err
+
+sleep 1
+echo Modifying filesystem
+rm tart/a1
+
+mv tart/b1 tart/b2
+mv tart/c1 tart/c2
+touch tart/c2/ca3
+
+echo Directory contents
+find tart -print | sort 2>/dev/null
+
+sleep 1
+echo Creating incremental archive
+echo >&2 \"Creating incremental archive\"
+cp -p tart.incr1 tart.incr2
+tar -c -v --listed-incremental=tart.incr2 -f archive.2 tart || exit 1
+
+sleep 1
+
+rm -rf tart/*
+echo Extracting main archive
+echo >&2 \"Extracting main archive\"
+tar -x -v --listed-incremental=tart.incr1 -f archive.1 || exit 1
+echo Extracting incremental archive
+# This command should produce three messages about deletion
+# of the existing files, that may appear in any order. Piping
+# to sort makes sure we don't depend on any particular ordering.
+tar -x -v --listed-incremental=tart.incr2 -f archive.2 | sort 2>/dev/null
+
+echo Final files:
+find tart -print | sort 2>/dev/null
+)"
+echo listed02.at:31 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir oldgnu
+(cd oldgnu
+TEST_TAR_FORMAT=oldgnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H oldgnu"
+export TAR_OPTIONS
+rm -rf *
+
+
+test -z "`sort < /dev/null 2>&1`" || exit 77
+
+echo Create directories
+
+mkdir tart
+sleep 1
+mkdir tart/c0
+sleep 1
+mkdir tart/c1
+sleep 1
+
+for file in tart/a1 tart/b1 tart/c0/cq1 tart/c0/cq2 tart/c1/ca1 tart/c1/ca2
+do
+  echo File $file > $file
+  sleep 1
+done
+
+sleep 1
+echo Creating main archive
+echo >&2 "Creating main archive"
+tar -c -v --listed-incremental=tart.incr1 -f archive.1 tart 2> err || exit 1
+
+# The above prints two lines to stderr announcing the new directories c0 and c1.
+# Ensure that they appear in this script's stderr in sorted order.
+sort err 1>&2; rm -f err
+
+sleep 1
+echo Modifying filesystem
+rm tart/a1
+
+mv tart/b1 tart/b2
+mv tart/c1 tart/c2
+touch tart/c2/ca3
+
+echo Directory contents
+find tart -print | sort 2>/dev/null
+
+sleep 1
+echo Creating incremental archive
+echo >&2 "Creating incremental archive"
+cp -p tart.incr1 tart.incr2
+tar -c -v --listed-incremental=tart.incr2 -f archive.2 tart || exit 1
+
+sleep 1
+
+rm -rf tart/*
+echo Extracting main archive
+echo >&2 "Extracting main archive"
+tar -x -v --listed-incremental=tart.incr1 -f archive.1 || exit 1
+echo Extracting incremental archive
+# This command should produce three messages about deletion
+# of the existing files, that may appear in any order. Piping
+# to sort makes sure we don't depend on any particular ordering.
+tar -x -v --listed-incremental=tart.incr2 -f archive.2 | sort 2>/dev/null
+
+echo Final files:
+find tart -print | sort 2>/dev/null
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir oldgnu
+(cd oldgnu
+TEST_TAR_FORMAT=oldgnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H oldgnu"
+export TAR_OPTIONS
+rm -rf *
+
+
+test -z "`sort < /dev/null 2>&1`" || exit 77
+
+echo Create directories
+
+mkdir tart
+sleep 1
+mkdir tart/c0
+sleep 1
+mkdir tart/c1
+sleep 1
+
+for file in tart/a1 tart/b1 tart/c0/cq1 tart/c0/cq2 tart/c1/ca1 tart/c1/ca2
+do
+  echo File $file > $file
+  sleep 1
+done
+
+sleep 1
+echo Creating main archive
+echo >&2 "Creating main archive"
+tar -c -v --listed-incremental=tart.incr1 -f archive.1 tart 2> err || exit 1
+
+# The above prints two lines to stderr announcing the new directories c0 and c1.
+# Ensure that they appear in this script's stderr in sorted order.
+sort err 1>&2; rm -f err
+
+sleep 1
+echo Modifying filesystem
+rm tart/a1
+
+mv tart/b1 tart/b2
+mv tart/c1 tart/c2
+touch tart/c2/ca3
+
+echo Directory contents
+find tart -print | sort 2>/dev/null
+
+sleep 1
+echo Creating incremental archive
+echo >&2 "Creating incremental archive"
+cp -p tart.incr1 tart.incr2
+tar -c -v --listed-incremental=tart.incr2 -f archive.2 tart || exit 1
+
+sleep 1
+
+rm -rf tart/*
+echo Extracting main archive
+echo >&2 "Extracting main archive"
+tar -x -v --listed-incremental=tart.incr1 -f archive.1 || exit 1
+echo Extracting incremental archive
+# This command should produce three messages about deletion
+# of the existing files, that may appear in any order. Piping
+# to sort makes sure we don't depend on any particular ordering.
+tar -x -v --listed-incremental=tart.incr2 -f archive.2 | sort 2>/dev/null
+
+echo Final files:
+find tart -print | sort 2>/dev/null
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+echo >>"$at_stderr"; $as_echo "Creating main archive
+tar: tart/c0: Directory is new
+tar: tart/c1: Directory is new
+tar: tart: Directory is new
+Creating incremental archive
+tar: tart/c2: Directory has been renamed from \`tart/c1'
+Extracting main archive
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "Create directories
+Creating main archive
+tart/
+tart/c0/
+tart/c1/
+tart/a1
+tart/b1
+tart/c0/cq1
+tart/c0/cq2
+tart/c1/ca1
+tart/c1/ca2
+Modifying filesystem
+Directory contents
+tart
+tart/b2
+tart/c0
+tart/c0/cq1
+tart/c0/cq2
+tart/c2
+tart/c2/ca1
+tart/c2/ca2
+tart/c2/ca3
+Creating incremental archive
+tart/
+tart/c0/
+tart/c2/
+tart/b2
+tart/c2/ca3
+Extracting main archive
+tart/
+tart/c0/
+tart/c1/
+tart/a1
+tart/b1
+tart/c0/cq1
+tart/c0/cq2
+tart/c1/ca1
+tart/c1/ca2
+Extracting incremental archive
+tar: Deleting \`tart/a1'
+tar: Deleting \`tart/b1'
+tart/
+tart/b2
+tart/c0/
+tart/c2/
+tart/c2/ca3
+Final files:
+tart
+tart/b2
+tart/c0
+tart/c0/cq1
+tart/c0/cq2
+tart/c2
+tart/c2/ca1
+tart/c2/ca2
+tart/c2/ca3
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/listed02.at:31"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
 
-test -z "`sort < /dev/null 2>&1`" || exit 77
 
-echo Create directories
 
-mkdir tart
-sleep 1
-mkdir tart/c0
-sleep 1
-mkdir tart/c1
-sleep 1
+  $at_traceoff
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 | eval $at_tee_pipe
+at_status=`cat "$at_status_file"`
+#AT_STOP_52
+#AT_START_53
+# 53. listed03.at:22: incremental dump when the parent directory is unreadable
+at_setup_line='listed03.at:22'
+at_desc="incremental dump when the parent directory is unreadable"
+$at_quiet $as_echo_n " 53: $at_desc"
+at_xfail=no
+      test -f $XFAILFILE && at_xfail=yes
+echo "#                             -*- compilation -*-" >> "$at_group_log"
+(
+  $as_echo "53. listed03.at:22: testing ..."
+  $at_traceon
 
-for file in tart/a1 tart/b1 tart/c0/cq1 tart/c0/cq2 tart/c1/ca1 tart/c1/ca2
-do
-  echo File \$file > \$file
-  sleep 1
-done
 
-sleep 1
-echo Creating main archive
-echo >&2 \"Creating main archive\"
-tar -c -v --listed-incremental=tart.incr1 -f archive.1 tart 2> err || exit 1
 
-# The above prints two lines to stderr announcing the new directories c0 and c1.
-# Ensure that they appear in this script's stderr in sorted order.
-sort err 1>&2; rm -f err
 
-sleep 1
-echo Modifying filesystem
-rm tart/a1
 
-mv tart/b1 tart/b2
-mv tart/c1 tart/c2
-touch tart/c2/ca3
+  { $at_traceoff
+$as_echo "$at_srcdir/listed03.at:25:
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H gnu\"
+export TAR_OPTIONS
+rm -rf *
 
-echo Directory contents
-find tart -print | sort 2>/dev/null
 
-sleep 1
-echo Creating incremental archive
-echo >&2 \"Creating incremental archive\"
-cp -p tart.incr1 tart.incr2
-tar -c -v --listed-incremental=tart.incr2 -f archive.2 tart || exit 1
+echo "test" > $$
+chmod 0 $$
+cat $$ > /dev/null 2>&1
+result=$?
+rm -f $$
+test $result -eq 0 && exit 77
 
-sleep 1
 
-rm -rf tart/*
-echo Extracting main archive
-echo >&2 \"Extracting main archive\"
-tar -x -v --listed-incremental=tart.incr1 -f archive.1 || exit 1
-echo Extracting incremental archive
-# This command should produce three messages about deletion
-# of the existing files, that may appear in any order. Piping
-# to sort makes sure we don't depend on any particular ordering.
-tar -x -v --listed-incremental=tart.incr2 -f archive.2 | sort 2>/dev/null
+mkdir dir
+mkdir dir/sub
+mkdir dir/sub/a
+genfile --file dir/sub/a/file
+cd dir/sub
 
-echo Final files:
-find tart -print | sort 2>/dev/null
+chmod a-r ..
+tar -c -f archive.tar --listed-incremental=db.1 -v a
+status=\$?
+chmod a+r ..
+exit \$status
 )"
-echo listed02.at:31 >"$at_check_line_file"
+echo listed03.at:25 >"$at_check_line_file"
 
 if { echo 'Not enabling shell tracing (command contains an embedded newline)'
    false; }; then
   ( $at_traceon;
-mkdir oldgnu
-(cd oldgnu
-TEST_TAR_FORMAT=oldgnu
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
 export TEST_TAR_FORMAT
-TAR_OPTIONS="-H oldgnu"
+TAR_OPTIONS="-H gnu"
 export TAR_OPTIONS
 rm -rf *
 
 
-test -z "`sort < /dev/null 2>&1`" || exit 77
-
-echo Create directories
-
-mkdir tart
-sleep 1
-mkdir tart/c0
-sleep 1
-mkdir tart/c1
-sleep 1
-
-for file in tart/a1 tart/b1 tart/c0/cq1 tart/c0/cq2 tart/c1/ca1 tart/c1/ca2
-do
-  echo File $file > $file
-  sleep 1
-done
-
-sleep 1
-echo Creating main archive
-echo >&2 "Creating main archive"
-tar -c -v --listed-incremental=tart.incr1 -f archive.1 tart 2> err || exit 1
-
-# The above prints two lines to stderr announcing the new directories c0 and c1.
-# Ensure that they appear in this script's stderr in sorted order.
-sort err 1>&2; rm -f err
-
-sleep 1
-echo Modifying filesystem
-rm tart/a1
-
-mv tart/b1 tart/b2
-mv tart/c1 tart/c2
-touch tart/c2/ca3
-
-echo Directory contents
-find tart -print | sort 2>/dev/null
-
-sleep 1
-echo Creating incremental archive
-echo >&2 "Creating incremental archive"
-cp -p tart.incr1 tart.incr2
-tar -c -v --listed-incremental=tart.incr2 -f archive.2 tart || exit 1
+echo "test" > $$
+chmod 0 $$
+cat $$ > /dev/null 2>&1
+result=$?
+rm -f $$
+test $result -eq 0 && exit 77
 
-sleep 1
 
-rm -rf tart/*
-echo Extracting main archive
-echo >&2 "Extracting main archive"
-tar -x -v --listed-incremental=tart.incr1 -f archive.1 || exit 1
-echo Extracting incremental archive
-# This command should produce three messages about deletion
-# of the existing files, that may appear in any order. Piping
-# to sort makes sure we don't depend on any particular ordering.
-tar -x -v --listed-incremental=tart.incr2 -f archive.2 | sort 2>/dev/null
+mkdir dir
+mkdir dir/sub
+mkdir dir/sub/a
+genfile --file dir/sub/a/file
+cd dir/sub
 
-echo Final files:
-find tart -print | sort 2>/dev/null
+chmod a-r ..
+tar -c -f archive.tar --listed-incremental=db.1 -v a
+status=$?
+chmod a+r ..
+exit $status
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
   ( :;
-mkdir oldgnu
-(cd oldgnu
-TEST_TAR_FORMAT=oldgnu
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
 export TEST_TAR_FORMAT
-TAR_OPTIONS="-H oldgnu"
+TAR_OPTIONS="-H gnu"
 export TAR_OPTIONS
 rm -rf *
 
 
-test -z "`sort < /dev/null 2>&1`" || exit 77
-
-echo Create directories
-
-mkdir tart
-sleep 1
-mkdir tart/c0
-sleep 1
-mkdir tart/c1
-sleep 1
-
-for file in tart/a1 tart/b1 tart/c0/cq1 tart/c0/cq2 tart/c1/ca1 tart/c1/ca2
-do
-  echo File $file > $file
-  sleep 1
-done
-
-sleep 1
-echo Creating main archive
-echo >&2 "Creating main archive"
-tar -c -v --listed-incremental=tart.incr1 -f archive.1 tart 2> err || exit 1
-
-# The above prints two lines to stderr announcing the new directories c0 and c1.
-# Ensure that they appear in this script's stderr in sorted order.
-sort err 1>&2; rm -f err
-
-sleep 1
-echo Modifying filesystem
-rm tart/a1
-
-mv tart/b1 tart/b2
-mv tart/c1 tart/c2
-touch tart/c2/ca3
-
-echo Directory contents
-find tart -print | sort 2>/dev/null
-
-sleep 1
-echo Creating incremental archive
-echo >&2 "Creating incremental archive"
-cp -p tart.incr1 tart.incr2
-tar -c -v --listed-incremental=tart.incr2 -f archive.2 tart || exit 1
+echo "test" > $$
+chmod 0 $$
+cat $$ > /dev/null 2>&1
+result=$?
+rm -f $$
+test $result -eq 0 && exit 77
 
-sleep 1
 
-rm -rf tart/*
-echo Extracting main archive
-echo >&2 "Extracting main archive"
-tar -x -v --listed-incremental=tart.incr1 -f archive.1 || exit 1
-echo Extracting incremental archive
-# This command should produce three messages about deletion
-# of the existing files, that may appear in any order. Piping
-# to sort makes sure we don't depend on any particular ordering.
-tar -x -v --listed-incremental=tart.incr2 -f archive.2 | sort 2>/dev/null
+mkdir dir
+mkdir dir/sub
+mkdir dir/sub/a
+genfile --file dir/sub/a/file
+cd dir/sub
 
-echo Final files:
-find tart -print | sort 2>/dev/null
+chmod a-r ..
+tar -c -f archive.tar --listed-incremental=db.1 -v a
+status=$?
+chmod a+r ..
+exit $status
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
 at_failed=false
-echo >>"$at_stderr"; $as_echo "Creating main archive
-tar: tart/c0: Directory is new
-tar: tart/c1: Directory is new
-tar: tart: Directory is new
-Creating incremental archive
-tar: tart/c2: Directory has been renamed from \`tart/c1'
-Extracting main archive
+echo >>"$at_stderr"; $as_echo "tar: a: Directory is new
 " | \
   $at_diff - "$at_stderr" || at_failed=:
-echo >>"$at_stdout"; $as_echo "Create directories
-Creating main archive
-tart/
-tart/c0/
-tart/c1/
-tart/a1
-tart/b1
-tart/c0/cq1
-tart/c0/cq2
-tart/c1/ca1
-tart/c1/ca2
-Modifying filesystem
-Directory contents
-tart
-tart/b2
-tart/c0
-tart/c0/cq1
-tart/c0/cq2
-tart/c2
-tart/c2/ca1
-tart/c2/ca2
-tart/c2/ca3
-Creating incremental archive
-tart/
-tart/c0/
-tart/c2/
-tart/b2
-tart/c2/ca3
-Extracting main archive
-tart/
-tart/c0/
-tart/c1/
-tart/a1
-tart/b1
-tart/c0/cq1
-tart/c0/cq2
-tart/c1/ca1
-tart/c1/ca2
-Extracting incremental archive
-tar: Deleting \`tart/a1'
-tar: Deleting \`tart/b1'
-tart/
-tart/b2
-tart/c0/
-tart/c2/
-tart/c2/ca3
-Final files:
-tart
-tart/b2
-tart/c0
-tart/c0/cq1
-tart/c0/cq2
-tart/c2
-tart/c2/ca1
-tart/c2/ca2
-tart/c2/ca3
+echo >>"$at_stdout"; $as_echo "a/
+a/file
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_func_check_status 0 $at_status "$at_srcdir/listed02.at:31"
+at_func_check_status 0 $at_status "$at_srcdir/listed03.at:25"
 
 $at_failed && at_func_log_failure
 $at_traceon; }
@@ -17910,17 +19759,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_40
-#AT_START_41
-# 41. incr03.at:28: renamed files in incrementals
+#AT_STOP_53
+#AT_START_54
+# 54. incr03.at:28: renamed files in incrementals
 at_setup_line='incr03.at:28'
 at_desc="renamed files in incrementals"
-$at_quiet $as_echo_n " 41: $at_desc                  "
+$at_quiet $as_echo_n " 54: $at_desc                  "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "41. incr03.at:28: testing ..."
+  $as_echo "54. incr03.at:28: testing ..."
   $at_traceon
 
 
@@ -17960,11 +19809,11 @@ echo Listing of archive.2
 tar -tf archive.2 | sort
 
 echo Directory after first restore
-tar -xf archive.1 -g db
+tar -xf archive.1 -g db --warning=no-timestamp
 find directory | sort
 
 echo Directory after second restore
-tar -xf archive.2 -g db
+tar -xf archive.2 -g db --warning=no-timestamp
 find directory | sort
 )"
 echo incr03.at:31 >"$at_check_line_file"
@@ -18003,11 +19852,11 @@ echo Listing of archive.2
 tar -tf archive.2 | sort
 
 echo Directory after first restore
-tar -xf archive.1 -g db
+tar -xf archive.1 -g db --warning=no-timestamp
 find directory | sort
 
 echo Directory after second restore
-tar -xf archive.2 -g db
+tar -xf archive.2 -g db --warning=no-timestamp
 find directory | sort
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
@@ -18044,11 +19893,11 @@ echo Listing of archive.2
 tar -tf archive.2 | sort
 
 echo Directory after first restore
-tar -xf archive.1 -g db
+tar -xf archive.1 -g db --warning=no-timestamp
 find directory | sort
 
 echo Directory after second restore
-tar -xf archive.2 -g db
+tar -xf archive.2 -g db --warning=no-timestamp
 find directory | sort
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
@@ -18110,11 +19959,11 @@ echo Listing of archive.2
 tar -tf archive.2 | sort
 
 echo Directory after first restore
-tar -xf archive.1 -g db
+tar -xf archive.1 -g db --warning=no-timestamp
 find directory | sort
 
 echo Directory after second restore
-tar -xf archive.2 -g db
+tar -xf archive.2 -g db --warning=no-timestamp
 find directory | sort
 )"
 echo incr03.at:31 >"$at_check_line_file"
@@ -18153,11 +20002,11 @@ echo Listing of archive.2
 tar -tf archive.2 | sort
 
 echo Directory after first restore
-tar -xf archive.1 -g db
+tar -xf archive.1 -g db --warning=no-timestamp
 find directory | sort
 
 echo Directory after second restore
-tar -xf archive.2 -g db
+tar -xf archive.2 -g db --warning=no-timestamp
 find directory | sort
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
@@ -18194,11 +20043,11 @@ echo Listing of archive.2
 tar -tf archive.2 | sort
 
 echo Directory after first restore
-tar -xf archive.1 -g db
+tar -xf archive.1 -g db --warning=no-timestamp
 find directory | sort
 
 echo Directory after second restore
-tar -xf archive.2 -g db
+tar -xf archive.2 -g db --warning=no-timestamp
 find directory | sort
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
@@ -18260,11 +20109,11 @@ echo Listing of archive.2
 tar -tf archive.2 | sort
 
 echo Directory after first restore
-tar -xf archive.1 -g db
+tar -xf archive.1 -g db --warning=no-timestamp
 find directory | sort
 
 echo Directory after second restore
-tar -xf archive.2 -g db
+tar -xf archive.2 -g db --warning=no-timestamp
 find directory | sort
 )"
 echo incr03.at:31 >"$at_check_line_file"
@@ -18303,11 +20152,11 @@ echo Listing of archive.2
 tar -tf archive.2 | sort
 
 echo Directory after first restore
-tar -xf archive.1 -g db
+tar -xf archive.1 -g db --warning=no-timestamp
 find directory | sort
 
 echo Directory after second restore
-tar -xf archive.2 -g db
+tar -xf archive.2 -g db --warning=no-timestamp
 find directory | sort
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
@@ -18344,11 +20193,11 @@ echo Listing of archive.2
 tar -tf archive.2 | sort
 
 echo Directory after first restore
-tar -xf archive.1 -g db
+tar -xf archive.1 -g db --warning=no-timestamp
 find directory | sort
 
 echo Directory after second restore
-tar -xf archive.2 -g db
+tar -xf archive.2 -g db --warning=no-timestamp
 find directory | sort
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
@@ -18384,17 +20233,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_41
-#AT_START_42
-# 42. incr04.at:29: proper icontents initialization
+#AT_STOP_54
+#AT_START_55
+# 55. incr04.at:29: proper icontents initialization
 at_setup_line='incr04.at:29'
 at_desc="proper icontents initialization"
-$at_quiet $as_echo_n " 42: $at_desc                "
+$at_quiet $as_echo_n " 55: $at_desc                "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "42. incr04.at:29: testing ..."
+  $as_echo "55. incr04.at:29: testing ..."
   $at_traceon
 
 
@@ -19136,17 +20985,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_42
-#AT_START_43
-# 43. incr05.at:19: incremental dumps with -C
+#AT_STOP_55
+#AT_START_56
+# 56. incr05.at:19: incremental dumps with -C
 at_setup_line='incr05.at:19'
 at_desc="incremental dumps with -C"
-$at_quiet $as_echo_n " 43: $at_desc                      "
+$at_quiet $as_echo_n " 56: $at_desc                      "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "43. incr05.at:19: testing ..."
+  $as_echo "56. incr05.at:19: testing ..."
   $at_traceon
 
 
@@ -19430,17 +21279,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_43
-#AT_START_44
-# 44. incr06.at:19: incremental dumps of nested directories
+#AT_STOP_56
+#AT_START_57
+# 57. incr06.at:19: incremental dumps of nested directories
 at_setup_line='incr06.at:19'
 at_desc="incremental dumps of nested directories"
-$at_quiet $as_echo_n " 44: $at_desc        "
+$at_quiet $as_echo_n " 57: $at_desc        "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "44. incr06.at:19: testing ..."
+  $as_echo "57. incr06.at:19: testing ..."
   $at_traceon
 
 
@@ -19868,17 +21717,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_44
-#AT_START_45
-# 45. filerem01.at:34: file removed as we read it (ca. 22 seconds)
+#AT_STOP_57
+#AT_START_58
+# 58. filerem01.at:34: file removed as we read it (ca. 22 seconds)
 at_setup_line='filerem01.at:34'
 at_desc="file removed as we read it (ca. 22 seconds)"
-$at_quiet $as_echo_n " 45: $at_desc    "
+$at_quiet $as_echo_n " 58: $at_desc    "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "45. filerem01.at:34: testing ..."
+  $as_echo "58. filerem01.at:34: testing ..."
   $at_traceon
 
 
@@ -20093,17 +21942,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_45
-#AT_START_46
-# 46. filerem02.at:24: toplevel file removed (ca. 24 seconds)
+#AT_STOP_58
+#AT_START_59
+# 59. filerem02.at:24: toplevel file removed (ca. 24 seconds)
 at_setup_line='filerem02.at:24'
 at_desc="toplevel file removed (ca. 24 seconds)"
-$at_quiet $as_echo_n " 46: $at_desc         "
+$at_quiet $as_echo_n " 59: $at_desc         "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "46. filerem02.at:24: testing ..."
+  $as_echo "59. filerem02.at:24: testing ..."
   $at_traceon
 
 
@@ -20183,11 +22032,7 @@ genfile --run --checkpoint=3 --exec 'rm -rf dir2' -- \
 fi
 at_status=$?
 at_failed=false
-echo >>"$at_stderr"; $as_echo "tar: dir2: Cannot stat: No such file or directory
-tar: dir2/file1: File removed before we read it
-tar: Exiting with failure status due to previous errors
-" | \
-  $at_diff - "$at_stderr" || at_failed=:
+echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
 at_func_check_status 2 $at_status "$at_srcdir/filerem02.at:27"
 
@@ -20267,11 +22112,7 @@ genfile --run --checkpoint=3 --exec 'rm -rf dir2' -- \
 fi
 at_status=$?
 at_failed=false
-echo >>"$at_stderr"; $as_echo "tar: dir2: Cannot stat: No such file or directory
-tar: dir2/file1: File removed before we read it
-tar: Exiting with failure status due to previous errors
-" | \
-  $at_diff - "$at_stderr" || at_failed=:
+echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
 at_func_check_status 2 $at_status "$at_srcdir/filerem02.at:27"
 
@@ -20281,23 +22122,26 @@ $at_traceon; }
 
 
 
+# Ignore stdout and stderr because their contents depend on
+# the file system implementation.
+
 # Timing information: see filerem01.at
 
   $at_traceoff
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_46
-#AT_START_47
-# 47. rename01.at:24: renamed dirs in incrementals
+#AT_STOP_59
+#AT_START_60
+# 60. rename01.at:24: renamed dirs in incrementals
 at_setup_line='rename01.at:24'
 at_desc="renamed dirs in incrementals"
-$at_quiet $as_echo_n " 47: $at_desc                   "
+$at_quiet $as_echo_n " 60: $at_desc                   "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "47. rename01.at:24: testing ..."
+  $as_echo "60. rename01.at:24: testing ..."
   $at_traceon
 
 
@@ -20806,17 +22650,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_47
-#AT_START_48
-# 48. rename02.at:24: move between hierarchies
+#AT_STOP_60
+#AT_START_61
+# 61. rename02.at:24: move between hierarchies
 at_setup_line='rename02.at:24'
 at_desc="move between hierarchies"
-$at_quiet $as_echo_n " 48: $at_desc                       "
+$at_quiet $as_echo_n " 61: $at_desc                       "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "48. rename02.at:24: testing ..."
+  $as_echo "61. rename02.at:24: testing ..."
   $at_traceon
 
 
@@ -20856,14 +22700,14 @@ tar -g incr -cf arch.2 -v foo
 
 mv foo old
 
-tar xfg arch.1 /dev/null 2>tmperr
+tar xfg arch.1 /dev/null --warning=no-timestamp 2>tmperr
 sort tmperr >&2
 
 echo \"Begin directory listing 1\"
 find foo | sort
 echo \"End directory listing 1\"
 
-tar xfgv arch.2 /dev/null
+tar xfgv arch.2 /dev/null --warning=no-timestamp
 echo Begin directory listing 2
 find foo | sort
 echo End directory listing 2
@@ -20904,14 +22748,14 @@ tar -g incr -cf arch.2 -v foo
 
 mv foo old
 
-tar xfg arch.1 /dev/null 2>tmperr
+tar xfg arch.1 /dev/null --warning=no-timestamp 2>tmperr
 sort tmperr >&2
 
 echo "Begin directory listing 1"
 find foo | sort
 echo "End directory listing 1"
 
-tar xfgv arch.2 /dev/null
+tar xfgv arch.2 /dev/null --warning=no-timestamp
 echo Begin directory listing 2
 find foo | sort
 echo End directory listing 2
@@ -20950,14 +22794,14 @@ tar -g incr -cf arch.2 -v foo
 
 mv foo old
 
-tar xfg arch.1 /dev/null 2>tmperr
+tar xfg arch.1 /dev/null --warning=no-timestamp 2>tmperr
 sort tmperr >&2
 
 echo "Begin directory listing 1"
 find foo | sort
 echo "End directory listing 1"
 
-tar xfgv arch.2 /dev/null
+tar xfgv arch.2 /dev/null --warning=no-timestamp
 echo Begin directory listing 2
 find foo | sort
 echo End directory listing 2
@@ -21044,14 +22888,14 @@ tar -g incr -cf arch.2 -v foo
 
 mv foo old
 
-tar xfg arch.1 /dev/null 2>tmperr
+tar xfg arch.1 /dev/null --warning=no-timestamp 2>tmperr
 sort tmperr >&2
 
 echo \"Begin directory listing 1\"
 find foo | sort
 echo \"End directory listing 1\"
 
-tar xfgv arch.2 /dev/null
+tar xfgv arch.2 /dev/null --warning=no-timestamp
 echo Begin directory listing 2
 find foo | sort
 echo End directory listing 2
@@ -21092,14 +22936,14 @@ tar -g incr -cf arch.2 -v foo
 
 mv foo old
 
-tar xfg arch.1 /dev/null 2>tmperr
+tar xfg arch.1 /dev/null --warning=no-timestamp 2>tmperr
 sort tmperr >&2
 
 echo "Begin directory listing 1"
 find foo | sort
 echo "End directory listing 1"
 
-tar xfgv arch.2 /dev/null
+tar xfgv arch.2 /dev/null --warning=no-timestamp
 echo Begin directory listing 2
 find foo | sort
 echo End directory listing 2
@@ -21138,14 +22982,14 @@ tar -g incr -cf arch.2 -v foo
 
 mv foo old
 
-tar xfg arch.1 /dev/null 2>tmperr
+tar xfg arch.1 /dev/null --warning=no-timestamp 2>tmperr
 sort tmperr >&2
 
 echo "Begin directory listing 1"
 find foo | sort
 echo "End directory listing 1"
 
-tar xfgv arch.2 /dev/null
+tar xfgv arch.2 /dev/null --warning=no-timestamp
 echo Begin directory listing 2
 find foo | sort
 echo End directory listing 2
@@ -21232,14 +23076,14 @@ tar -g incr -cf arch.2 -v foo
 
 mv foo old
 
-tar xfg arch.1 /dev/null 2>tmperr
+tar xfg arch.1 /dev/null --warning=no-timestamp 2>tmperr
 sort tmperr >&2
 
 echo \"Begin directory listing 1\"
 find foo | sort
 echo \"End directory listing 1\"
 
-tar xfgv arch.2 /dev/null
+tar xfgv arch.2 /dev/null --warning=no-timestamp
 echo Begin directory listing 2
 find foo | sort
 echo End directory listing 2
@@ -21280,14 +23124,14 @@ tar -g incr -cf arch.2 -v foo
 
 mv foo old
 
-tar xfg arch.1 /dev/null 2>tmperr
+tar xfg arch.1 /dev/null --warning=no-timestamp 2>tmperr
 sort tmperr >&2
 
 echo "Begin directory listing 1"
 find foo | sort
 echo "End directory listing 1"
 
-tar xfgv arch.2 /dev/null
+tar xfgv arch.2 /dev/null --warning=no-timestamp
 echo Begin directory listing 2
 find foo | sort
 echo End directory listing 2
@@ -21326,14 +23170,14 @@ tar -g incr -cf arch.2 -v foo
 
 mv foo old
 
-tar xfg arch.1 /dev/null 2>tmperr
+tar xfg arch.1 /dev/null --warning=no-timestamp 2>tmperr
 sort tmperr >&2
 
 echo "Begin directory listing 1"
 find foo | sort
 echo "End directory listing 1"
 
-tar xfgv arch.2 /dev/null
+tar xfgv arch.2 /dev/null --warning=no-timestamp
 echo Begin directory listing 2
 find foo | sort
 echo End directory listing 2
@@ -21394,17 +23238,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_48
-#AT_START_49
-# 49. rename03.at:23: cyclic renames
+#AT_STOP_61
+#AT_START_62
+# 62. rename03.at:23: cyclic renames
 at_setup_line='rename03.at:23'
 at_desc="cyclic renames"
-$at_quiet $as_echo_n " 49: $at_desc                                 "
+$at_quiet $as_echo_n " 62: $at_desc                                 "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "49. rename03.at:23: testing ..."
+  $as_echo "62. rename03.at:23: testing ..."
   $at_traceon
 
 
@@ -21457,13 +23301,13 @@ echo \"Second dump\" >&2
 tar -g incr -cf arch.2 -v foo 2>tmperr
 sort tmperr >&2
 
-tar xfg arch.1 /dev/null
+tar xfg arch.1 /dev/null --warning=no-timestamp
 
 echo \"Begin directory listing 1\"
 find foo | sort
 echo \"End directory listing 1\"
 
-tar xfgv arch.2 /dev/null
+tar xfgv arch.2 /dev/null --warning=no-timestamp
 echo Begin directory listing 2
 find foo | sort
 echo End directory listing 2
@@ -21517,13 +23361,13 @@ echo "Second dump" >&2
 tar -g incr -cf arch.2 -v foo 2>tmperr
 sort tmperr >&2
 
-tar xfg arch.1 /dev/null
+tar xfg arch.1 /dev/null --warning=no-timestamp
 
 echo "Begin directory listing 1"
 find foo | sort
 echo "End directory listing 1"
 
-tar xfgv arch.2 /dev/null
+tar xfgv arch.2 /dev/null --warning=no-timestamp
 echo Begin directory listing 2
 find foo | sort
 echo End directory listing 2
@@ -21575,13 +23419,13 @@ echo "Second dump" >&2
 tar -g incr -cf arch.2 -v foo 2>tmperr
 sort tmperr >&2
 
-tar xfg arch.1 /dev/null
+tar xfg arch.1 /dev/null --warning=no-timestamp
 
 echo "Begin directory listing 1"
 find foo | sort
 echo "End directory listing 1"
 
-tar xfgv arch.2 /dev/null
+tar xfgv arch.2 /dev/null --warning=no-timestamp
 echo Begin directory listing 2
 find foo | sort
 echo End directory listing 2
@@ -21694,13 +23538,13 @@ echo \"Second dump\" >&2
 tar -g incr -cf arch.2 -v foo 2>tmperr
 sort tmperr >&2
 
-tar xfg arch.1 /dev/null
+tar xfg arch.1 /dev/null --warning=no-timestamp
 
 echo \"Begin directory listing 1\"
 find foo | sort
 echo \"End directory listing 1\"
 
-tar xfgv arch.2 /dev/null
+tar xfgv arch.2 /dev/null --warning=no-timestamp
 echo Begin directory listing 2
 find foo | sort
 echo End directory listing 2
@@ -21754,13 +23598,13 @@ echo "Second dump" >&2
 tar -g incr -cf arch.2 -v foo 2>tmperr
 sort tmperr >&2
 
-tar xfg arch.1 /dev/null
+tar xfg arch.1 /dev/null --warning=no-timestamp
 
 echo "Begin directory listing 1"
 find foo | sort
 echo "End directory listing 1"
 
-tar xfgv arch.2 /dev/null
+tar xfgv arch.2 /dev/null --warning=no-timestamp
 echo Begin directory listing 2
 find foo | sort
 echo End directory listing 2
@@ -21812,13 +23656,13 @@ echo "Second dump" >&2
 tar -g incr -cf arch.2 -v foo 2>tmperr
 sort tmperr >&2
 
-tar xfg arch.1 /dev/null
+tar xfg arch.1 /dev/null --warning=no-timestamp
 
 echo "Begin directory listing 1"
 find foo | sort
 echo "End directory listing 1"
 
-tar xfgv arch.2 /dev/null
+tar xfgv arch.2 /dev/null --warning=no-timestamp
 echo Begin directory listing 2
 find foo | sort
 echo End directory listing 2
@@ -21931,13 +23775,13 @@ echo \"Second dump\" >&2
 tar -g incr -cf arch.2 -v foo 2>tmperr
 sort tmperr >&2
 
-tar xfg arch.1 /dev/null
+tar xfg arch.1 /dev/null --warning=no-timestamp
 
 echo \"Begin directory listing 1\"
 find foo | sort
 echo \"End directory listing 1\"
 
-tar xfgv arch.2 /dev/null
+tar xfgv arch.2 /dev/null --warning=no-timestamp
 echo Begin directory listing 2
 find foo | sort
 echo End directory listing 2
@@ -21991,13 +23835,13 @@ echo "Second dump" >&2
 tar -g incr -cf arch.2 -v foo 2>tmperr
 sort tmperr >&2
 
-tar xfg arch.1 /dev/null
+tar xfg arch.1 /dev/null --warning=no-timestamp
 
 echo "Begin directory listing 1"
 find foo | sort
 echo "End directory listing 1"
 
-tar xfgv arch.2 /dev/null
+tar xfgv arch.2 /dev/null --warning=no-timestamp
 echo Begin directory listing 2
 find foo | sort
 echo End directory listing 2
@@ -22049,13 +23893,13 @@ echo "Second dump" >&2
 tar -g incr -cf arch.2 -v foo 2>tmperr
 sort tmperr >&2
 
-tar xfg arch.1 /dev/null
+tar xfg arch.1 /dev/null --warning=no-timestamp
 
 echo "Begin directory listing 1"
 find foo | sort
 echo "End directory listing 1"
 
-tar xfgv arch.2 /dev/null
+tar xfgv arch.2 /dev/null --warning=no-timestamp
 echo Begin directory listing 2
 find foo | sort
 echo End directory listing 2
@@ -22129,17 +23973,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_49
-#AT_START_50
-# 50. rename04.at:27: renamed directory containing subdirectories
+#AT_STOP_62
+#AT_START_63
+# 63. rename04.at:27: renamed directory containing subdirectories
 at_setup_line='rename04.at:27'
 at_desc="renamed directory containing subdirectories"
-$at_quiet $as_echo_n " 50: $at_desc    "
+$at_quiet $as_echo_n " 63: $at_desc    "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "50. rename04.at:27: testing ..."
+  $as_echo "63. rename04.at:27: testing ..."
   $at_traceon
 
 
@@ -22603,17 +24447,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_50
-#AT_START_51
-# 51. rename05.at:24: renamed subdirectories
+#AT_STOP_63
+#AT_START_64
+# 64. rename05.at:24: renamed subdirectories
 at_setup_line='rename05.at:24'
 at_desc="renamed subdirectories"
-$at_quiet $as_echo_n " 51: $at_desc                         "
+$at_quiet $as_echo_n " 64: $at_desc                         "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "51. rename05.at:24: testing ..."
+  $as_echo "64. rename05.at:24: testing ..."
   $at_traceon
 
 
@@ -22653,11 +24497,11 @@ tar -cf archive.2 -g db.2 dir
 mv dir orig
 
 decho First restore
-tar -xf archive.1 -g db.1
+tar -xf archive.1 -g db.1 --warning=no-timestamp
 find directory | sort
 
 decho Second restore
-tar -xf archive.2 -g db.2
+tar -xf archive.2 -g db.2 --warning=no-timestamp
 find dir | sort
 )"
 echo rename05.at:27 >"$at_check_line_file"
@@ -22696,11 +24540,11 @@ tar -cf archive.2 -g db.2 dir
 mv dir orig
 
 decho First restore
-tar -xf archive.1 -g db.1
+tar -xf archive.1 -g db.1 --warning=no-timestamp
 find directory | sort
 
 decho Second restore
-tar -xf archive.2 -g db.2
+tar -xf archive.2 -g db.2 --warning=no-timestamp
 find dir | sort
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
@@ -22737,11 +24581,11 @@ tar -cf archive.2 -g db.2 dir
 mv dir orig
 
 decho First restore
-tar -xf archive.1 -g db.1
+tar -xf archive.1 -g db.1 --warning=no-timestamp
 find directory | sort
 
 decho Second restore
-tar -xf archive.2 -g db.2
+tar -xf archive.2 -g db.2 --warning=no-timestamp
 find dir | sort
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
@@ -22806,11 +24650,11 @@ tar -cf archive.2 -g db.2 dir
 mv dir orig
 
 decho First restore
-tar -xf archive.1 -g db.1
+tar -xf archive.1 -g db.1 --warning=no-timestamp
 find directory | sort
 
 decho Second restore
-tar -xf archive.2 -g db.2
+tar -xf archive.2 -g db.2 --warning=no-timestamp
 find dir | sort
 )"
 echo rename05.at:27 >"$at_check_line_file"
@@ -22849,11 +24693,11 @@ tar -cf archive.2 -g db.2 dir
 mv dir orig
 
 decho First restore
-tar -xf archive.1 -g db.1
+tar -xf archive.1 -g db.1 --warning=no-timestamp
 find directory | sort
 
 decho Second restore
-tar -xf archive.2 -g db.2
+tar -xf archive.2 -g db.2 --warning=no-timestamp
 find dir | sort
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
@@ -22890,11 +24734,11 @@ tar -cf archive.2 -g db.2 dir
 mv dir orig
 
 decho First restore
-tar -xf archive.1 -g db.1
+tar -xf archive.1 -g db.1 --warning=no-timestamp
 find directory | sort
 
 decho Second restore
-tar -xf archive.2 -g db.2
+tar -xf archive.2 -g db.2 --warning=no-timestamp
 find dir | sort
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
@@ -22959,11 +24803,11 @@ tar -cf archive.2 -g db.2 dir
 mv dir orig
 
 decho First restore
-tar -xf archive.1 -g db.1
+tar -xf archive.1 -g db.1 --warning=no-timestamp
 find directory | sort
 
 decho Second restore
-tar -xf archive.2 -g db.2
+tar -xf archive.2 -g db.2 --warning=no-timestamp
 find dir | sort
 )"
 echo rename05.at:27 >"$at_check_line_file"
@@ -23002,11 +24846,11 @@ tar -cf archive.2 -g db.2 dir
 mv dir orig
 
 decho First restore
-tar -xf archive.1 -g db.1
+tar -xf archive.1 -g db.1 --warning=no-timestamp
 find directory | sort
 
 decho Second restore
-tar -xf archive.2 -g db.2
+tar -xf archive.2 -g db.2 --warning=no-timestamp
 find dir | sort
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
@@ -23043,11 +24887,11 @@ tar -cf archive.2 -g db.2 dir
 mv dir orig
 
 decho First restore
-tar -xf archive.1 -g db.1
+tar -xf archive.1 -g db.1 --warning=no-timestamp
 find directory | sort
 
 decho Second restore
-tar -xf archive.2 -g db.2
+tar -xf archive.2 -g db.2 --warning=no-timestamp
 find dir | sort
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
@@ -23086,17 +24930,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_51
-#AT_START_52
-# 52. chtype.at:27: changed file types in incrementals
+#AT_STOP_64
+#AT_START_65
+# 65. chtype.at:27: changed file types in incrementals
 at_setup_line='chtype.at:27'
 at_desc="changed file types in incrementals"
-$at_quiet $as_echo_n " 52: $at_desc             "
+$at_quiet $as_echo_n " 65: $at_desc             "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "52. chtype.at:27: testing ..."
+  $as_echo "65. chtype.at:27: testing ..."
   $at_traceon
 
 
@@ -23139,9 +24983,9 @@ tar --create --file=archive.2 --listed-incremental=db.2 directory
 rm -r directory
 
 echo Restore archive.1
-tar -xf archive.1 --listed-incremental=/dev/null
+tar -xf archive.1 --listed-incremental=/dev/null --warning=no-timestamp
 echo Restore archive.2
-tar -xf archive.2 --listed-incremental=/dev/null
+tar -xf archive.2 --listed-incremental=/dev/null --warning=no-timestamp
 find directory | sort
 )"
 echo chtype.at:30 >"$at_check_line_file"
@@ -23183,9 +25027,9 @@ tar --create --file=archive.2 --listed-incremental=db.2 directory
 rm -r directory
 
 echo Restore archive.1
-tar -xf archive.1 --listed-incremental=/dev/null
+tar -xf archive.1 --listed-incremental=/dev/null --warning=no-timestamp
 echo Restore archive.2
-tar -xf archive.2 --listed-incremental=/dev/null
+tar -xf archive.2 --listed-incremental=/dev/null --warning=no-timestamp
 find directory | sort
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
@@ -23225,9 +25069,9 @@ tar --create --file=archive.2 --listed-incremental=db.2 directory
 rm -r directory
 
 echo Restore archive.1
-tar -xf archive.1 --listed-incremental=/dev/null
+tar -xf archive.1 --listed-incremental=/dev/null --warning=no-timestamp
 echo Restore archive.2
-tar -xf archive.2 --listed-incremental=/dev/null
+tar -xf archive.2 --listed-incremental=/dev/null --warning=no-timestamp
 find directory | sort
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
@@ -23286,9 +25130,9 @@ tar --create --file=archive.2 --listed-incremental=db.2 directory
 rm -r directory
 
 echo Restore archive.1
-tar -xf archive.1 --listed-incremental=/dev/null
+tar -xf archive.1 --listed-incremental=/dev/null --warning=no-timestamp
 echo Restore archive.2
-tar -xf archive.2 --listed-incremental=/dev/null
+tar -xf archive.2 --listed-incremental=/dev/null --warning=no-timestamp
 find directory | sort
 )"
 echo chtype.at:30 >"$at_check_line_file"
@@ -23330,9 +25174,9 @@ tar --create --file=archive.2 --listed-incremental=db.2 directory
 rm -r directory
 
 echo Restore archive.1
-tar -xf archive.1 --listed-incremental=/dev/null
+tar -xf archive.1 --listed-incremental=/dev/null --warning=no-timestamp
 echo Restore archive.2
-tar -xf archive.2 --listed-incremental=/dev/null
+tar -xf archive.2 --listed-incremental=/dev/null --warning=no-timestamp
 find directory | sort
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
@@ -23372,9 +25216,9 @@ tar --create --file=archive.2 --listed-incremental=db.2 directory
 rm -r directory
 
 echo Restore archive.1
-tar -xf archive.1 --listed-incremental=/dev/null
+tar -xf archive.1 --listed-incremental=/dev/null --warning=no-timestamp
 echo Restore archive.2
-tar -xf archive.2 --listed-incremental=/dev/null
+tar -xf archive.2 --listed-incremental=/dev/null --warning=no-timestamp
 find directory | sort
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
@@ -23433,9 +25277,9 @@ tar --create --file=archive.2 --listed-incremental=db.2 directory
 rm -r directory
 
 echo Restore archive.1
-tar -xf archive.1 --listed-incremental=/dev/null
+tar -xf archive.1 --listed-incremental=/dev/null --warning=no-timestamp
 echo Restore archive.2
-tar -xf archive.2 --listed-incremental=/dev/null
+tar -xf archive.2 --listed-incremental=/dev/null --warning=no-timestamp
 find directory | sort
 )"
 echo chtype.at:30 >"$at_check_line_file"
@@ -23477,9 +25321,9 @@ tar --create --file=archive.2 --listed-incremental=db.2 directory
 rm -r directory
 
 echo Restore archive.1
-tar -xf archive.1 --listed-incremental=/dev/null
+tar -xf archive.1 --listed-incremental=/dev/null --warning=no-timestamp
 echo Restore archive.2
-tar -xf archive.2 --listed-incremental=/dev/null
+tar -xf archive.2 --listed-incremental=/dev/null --warning=no-timestamp
 find directory | sort
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
@@ -23519,9 +25363,9 @@ tar --create --file=archive.2 --listed-incremental=db.2 directory
 rm -r directory
 
 echo Restore archive.1
-tar -xf archive.1 --listed-incremental=/dev/null
+tar -xf archive.1 --listed-incremental=/dev/null --warning=no-timestamp
 echo Restore archive.2
-tar -xf archive.2 --listed-incremental=/dev/null
+tar -xf archive.2 --listed-incremental=/dev/null --warning=no-timestamp
 find directory | sort
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
@@ -23551,17 +25395,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_52
-#AT_START_53
-# 53. ignfail.at:23: ignfail
+#AT_STOP_65
+#AT_START_66
+# 66. ignfail.at:23: ignfail
 at_setup_line='ignfail.at:23'
 at_desc="ignfail"
-$at_quiet $as_echo_n " 53: $at_desc                                        "
+$at_quiet $as_echo_n " 66: $at_desc                                        "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "53. ignfail.at:23: testing ..."
+  $as_echo "66. ignfail.at:23: testing ..."
   $at_traceon
 
 
@@ -24480,17 +26324,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_53
-#AT_START_54
-# 54. link01.at:33: link count gt 2
+#AT_STOP_66
+#AT_START_67
+# 67. link01.at:33: link count gt 2
 at_setup_line='link01.at:33'
 at_desc="link count gt 2"
-$at_quiet $as_echo_n " 54: $at_desc                                "
+$at_quiet $as_echo_n " 67: $at_desc                                "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "54. link01.at:33: testing ..."
+  $as_echo "67. link01.at:33: testing ..."
   $at_traceon
 
 
@@ -24517,7 +26361,7 @@ ln directory/test1/test.txt directory/test2/test.txt || exit 77
 tar cf archive directory/test1/test.txt directory/test1/test.txt
 
 rm -r directory
-tar xf archive
+tar xf archive --warning=no-timestamp
 
 ls directory/test1
 )"
@@ -24544,7 +26388,7 @@ ln directory/test1/test.txt directory/test2/test.txt || exit 77
 tar cf archive directory/test1/test.txt directory/test1/test.txt
 
 rm -r directory
-tar xf archive
+tar xf archive --warning=no-timestamp
 
 ls directory/test1
 ) ) >"$at_stdout" 2>"$at_stder1"
@@ -24569,7 +26413,7 @@ ln directory/test1/test.txt directory/test2/test.txt || exit 77
 tar cf archive directory/test1/test.txt directory/test1/test.txt
 
 rm -r directory
-tar xf archive
+tar xf archive --warning=no-timestamp
 
 ls directory/test1
 ) ) >"$at_stdout" 2>"$at_stderr"
@@ -24605,7 +26449,7 @@ ln directory/test1/test.txt directory/test2/test.txt || exit 77
 tar cf archive directory/test1/test.txt directory/test1/test.txt
 
 rm -r directory
-tar xf archive
+tar xf archive --warning=no-timestamp
 
 ls directory/test1
 )"
@@ -24632,7 +26476,7 @@ ln directory/test1/test.txt directory/test2/test.txt || exit 77
 tar cf archive directory/test1/test.txt directory/test1/test.txt
 
 rm -r directory
-tar xf archive
+tar xf archive --warning=no-timestamp
 
 ls directory/test1
 ) ) >"$at_stdout" 2>"$at_stder1"
@@ -24657,7 +26501,7 @@ ln directory/test1/test.txt directory/test2/test.txt || exit 77
 tar cf archive directory/test1/test.txt directory/test1/test.txt
 
 rm -r directory
-tar xf archive
+tar xf archive --warning=no-timestamp
 
 ls directory/test1
 ) ) >"$at_stdout" 2>"$at_stderr"
@@ -24693,7 +26537,7 @@ ln directory/test1/test.txt directory/test2/test.txt || exit 77
 tar cf archive directory/test1/test.txt directory/test1/test.txt
 
 rm -r directory
-tar xf archive
+tar xf archive --warning=no-timestamp
 
 ls directory/test1
 )"
@@ -24720,7 +26564,7 @@ ln directory/test1/test.txt directory/test2/test.txt || exit 77
 tar cf archive directory/test1/test.txt directory/test1/test.txt
 
 rm -r directory
-tar xf archive
+tar xf archive --warning=no-timestamp
 
 ls directory/test1
 ) ) >"$at_stdout" 2>"$at_stder1"
@@ -24745,7 +26589,7 @@ ln directory/test1/test.txt directory/test2/test.txt || exit 77
 tar cf archive directory/test1/test.txt directory/test1/test.txt
 
 rm -r directory
-tar xf archive
+tar xf archive --warning=no-timestamp
 
 ls directory/test1
 ) ) >"$at_stdout" 2>"$at_stderr"
@@ -24781,7 +26625,7 @@ ln directory/test1/test.txt directory/test2/test.txt || exit 77
 tar cf archive directory/test1/test.txt directory/test1/test.txt
 
 rm -r directory
-tar xf archive
+tar xf archive --warning=no-timestamp
 
 ls directory/test1
 )"
@@ -24808,7 +26652,7 @@ ln directory/test1/test.txt directory/test2/test.txt || exit 77
 tar cf archive directory/test1/test.txt directory/test1/test.txt
 
 rm -r directory
-tar xf archive
+tar xf archive --warning=no-timestamp
 
 ls directory/test1
 ) ) >"$at_stdout" 2>"$at_stder1"
@@ -24833,7 +26677,7 @@ ln directory/test1/test.txt directory/test2/test.txt || exit 77
 tar cf archive directory/test1/test.txt directory/test1/test.txt
 
 rm -r directory
-tar xf archive
+tar xf archive --warning=no-timestamp
 
 ls directory/test1
 ) ) >"$at_stdout" 2>"$at_stderr"
@@ -24869,7 +26713,7 @@ ln directory/test1/test.txt directory/test2/test.txt || exit 77
 tar cf archive directory/test1/test.txt directory/test1/test.txt
 
 rm -r directory
-tar xf archive
+tar xf archive --warning=no-timestamp
 
 ls directory/test1
 )"
@@ -24896,7 +26740,7 @@ ln directory/test1/test.txt directory/test2/test.txt || exit 77
 tar cf archive directory/test1/test.txt directory/test1/test.txt
 
 rm -r directory
-tar xf archive
+tar xf archive --warning=no-timestamp
 
 ls directory/test1
 ) ) >"$at_stdout" 2>"$at_stder1"
@@ -24921,7 +26765,7 @@ ln directory/test1/test.txt directory/test2/test.txt || exit 77
 tar cf archive directory/test1/test.txt directory/test1/test.txt
 
 rm -r directory
-tar xf archive
+tar xf archive --warning=no-timestamp
 
 ls directory/test1
 ) ) >"$at_stdout" 2>"$at_stderr"
@@ -24944,17 +26788,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_54
-#AT_START_55
-# 55. link02.at:32: preserve hard links with --remove-files
+#AT_STOP_67
+#AT_START_68
+# 68. link02.at:32: preserve hard links with --remove-files
 at_setup_line='link02.at:32'
 at_desc="preserve hard links with --remove-files"
-$at_quiet $as_echo_n " 55: $at_desc        "
+$at_quiet $as_echo_n " 68: $at_desc        "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "55. link02.at:32: testing ..."
+  $as_echo "68. link02.at:32: testing ..."
   $at_traceon
 
 
@@ -24972,9 +26816,9 @@ export TAR_OPTIONS
 rm -rf *
 
 genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+ln file1 file2
+ln file2 file3
+ln file3 file4
 tar -c -f archive --remove-files file1 file2 file3 file4
 tar tfv archive | sed -n 's/.*file[2-4] link to //p'
 )"
@@ -24992,9 +26836,9 @@ export TAR_OPTIONS
 rm -rf *
 
 genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+ln file1 file2
+ln file2 file3
+ln file3 file4
 tar -c -f archive --remove-files file1 file2 file3 file4
 tar tfv archive | sed -n 's/.*file[2-4] link to //p'
 ) ) >"$at_stdout" 2>"$at_stder1"
@@ -25010,9 +26854,9 @@ export TAR_OPTIONS
 rm -rf *
 
 genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+ln file1 file2
+ln file2 file3
+ln file3 file4
 tar -c -f archive --remove-files file1 file2 file3 file4
 tar tfv archive | sed -n 's/.*file[2-4] link to //p'
 ) ) >"$at_stdout" 2>"$at_stderr"
@@ -25041,9 +26885,9 @@ export TAR_OPTIONS
 rm -rf *
 
 genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+ln file1 file2
+ln file2 file3
+ln file3 file4
 tar -c -f archive --remove-files file1 file2 file3 file4
 tar tfv archive | sed -n 's/.*file[2-4] link to //p'
 )"
@@ -25061,9 +26905,9 @@ export TAR_OPTIONS
 rm -rf *
 
 genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+ln file1 file2
+ln file2 file3
+ln file3 file4
 tar -c -f archive --remove-files file1 file2 file3 file4
 tar tfv archive | sed -n 's/.*file[2-4] link to //p'
 ) ) >"$at_stdout" 2>"$at_stder1"
@@ -25079,9 +26923,9 @@ export TAR_OPTIONS
 rm -rf *
 
 genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+ln file1 file2
+ln file2 file3
+ln file3 file4
 tar -c -f archive --remove-files file1 file2 file3 file4
 tar tfv archive | sed -n 's/.*file[2-4] link to //p'
 ) ) >"$at_stdout" 2>"$at_stderr"
@@ -25110,9 +26954,9 @@ export TAR_OPTIONS
 rm -rf *
 
 genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+ln file1 file2
+ln file2 file3
+ln file3 file4
 tar -c -f archive --remove-files file1 file2 file3 file4
 tar tfv archive | sed -n 's/.*file[2-4] link to //p'
 )"
@@ -25130,9 +26974,9 @@ export TAR_OPTIONS
 rm -rf *
 
 genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+ln file1 file2
+ln file2 file3
+ln file3 file4
 tar -c -f archive --remove-files file1 file2 file3 file4
 tar tfv archive | sed -n 's/.*file[2-4] link to //p'
 ) ) >"$at_stdout" 2>"$at_stder1"
@@ -25148,9 +26992,9 @@ export TAR_OPTIONS
 rm -rf *
 
 genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+ln file1 file2
+ln file2 file3
+ln file3 file4
 tar -c -f archive --remove-files file1 file2 file3 file4
 tar tfv archive | sed -n 's/.*file[2-4] link to //p'
 ) ) >"$at_stdout" 2>"$at_stderr"
@@ -25179,9 +27023,9 @@ export TAR_OPTIONS
 rm -rf *
 
 genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+ln file1 file2
+ln file2 file3
+ln file3 file4
 tar -c -f archive --remove-files file1 file2 file3 file4
 tar tfv archive | sed -n 's/.*file[2-4] link to //p'
 )"
@@ -25199,9 +27043,9 @@ export TAR_OPTIONS
 rm -rf *
 
 genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+ln file1 file2
+ln file2 file3
+ln file3 file4
 tar -c -f archive --remove-files file1 file2 file3 file4
 tar tfv archive | sed -n 's/.*file[2-4] link to //p'
 ) ) >"$at_stdout" 2>"$at_stder1"
@@ -25217,9 +27061,9 @@ export TAR_OPTIONS
 rm -rf *
 
 genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+ln file1 file2
+ln file2 file3
+ln file3 file4
 tar -c -f archive --remove-files file1 file2 file3 file4
 tar tfv archive | sed -n 's/.*file[2-4] link to //p'
 ) ) >"$at_stdout" 2>"$at_stderr"
@@ -25248,9 +27092,9 @@ export TAR_OPTIONS
 rm -rf *
 
 genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+ln file1 file2
+ln file2 file3
+ln file3 file4
 tar -c -f archive --remove-files file1 file2 file3 file4
 tar tfv archive | sed -n 's/.*file[2-4] link to //p'
 )"
@@ -25268,9 +27112,9 @@ export TAR_OPTIONS
 rm -rf *
 
 genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+ln file1 file2
+ln file2 file3
+ln file3 file4
 tar -c -f archive --remove-files file1 file2 file3 file4
 tar tfv archive | sed -n 's/.*file[2-4] link to //p'
 ) ) >"$at_stdout" 2>"$at_stder1"
@@ -25286,9 +27130,9 @@ export TAR_OPTIONS
 rm -rf *
 
 genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+ln file1 file2
+ln file2 file3
+ln file3 file4
 tar -c -f archive --remove-files file1 file2 file3 file4
 tar tfv archive | sed -n 's/.*file[2-4] link to //p'
 ) ) >"$at_stdout" 2>"$at_stderr"
@@ -25313,17 +27157,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_55
-#AT_START_56
-# 56. link03.at:24: working -l with --remove-files
+#AT_STOP_68
+#AT_START_69
+# 69. link03.at:24: working -l with --remove-files
 at_setup_line='link03.at:24'
 at_desc="working -l with --remove-files"
-$at_quiet $as_echo_n " 56: $at_desc                 "
+$at_quiet $as_echo_n " 69: $at_desc                 "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "56. link03.at:24: testing ..."
+  $as_echo "69. link03.at:24: testing ..."
   $at_traceon
 
 
@@ -25344,17 +27188,17 @@ rm -rf *
 
 
 genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+ln file1 file2
+ln file2 file3
+ln file3 file4
 
 echo archive.1
 tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
 
 genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+ln file1 file2
+ln file2 file3
+ln file3 file4
 
 echo archive.2
 tar -c -f archive.2 -l --remove-files file1 file2 file3
@@ -25376,17 +27220,17 @@ rm -rf *
 
 
 genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+ln file1 file2
+ln file2 file3
+ln file3 file4
 
 echo archive.1
 tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
 
 genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+ln file1 file2
+ln file2 file3
+ln file3 file4
 
 echo archive.2
 tar -c -f archive.2 -l --remove-files file1 file2 file3
@@ -25406,17 +27250,453 @@ rm -rf *
 
 
 genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.1
+tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.2
+tar -c -f archive.2 -l --remove-files file1 file2 file3
+echo testing archive.2
+tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+echo >>"$at_stderr"; $as_echo "tar: Missing links to \`file1'.
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "archive.1
+archive.2
+testing archive.2
+file1
+file1
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/link03.at:34"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+              { $at_traceoff
+$as_echo "$at_srcdir/link03.at:34:
+mkdir oldgnu
+(cd oldgnu
+TEST_TAR_FORMAT=oldgnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H oldgnu\"
+export TAR_OPTIONS
+rm -rf *
+
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.1
+tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.2
+tar -c -f archive.2 -l --remove-files file1 file2 file3
+echo testing archive.2
+tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+)"
+echo link03.at:34 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir oldgnu
+(cd oldgnu
+TEST_TAR_FORMAT=oldgnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H oldgnu"
+export TAR_OPTIONS
+rm -rf *
+
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.1
+tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.2
+tar -c -f archive.2 -l --remove-files file1 file2 file3
+echo testing archive.2
+tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir oldgnu
+(cd oldgnu
+TEST_TAR_FORMAT=oldgnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H oldgnu"
+export TAR_OPTIONS
+rm -rf *
+
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.1
+tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.2
+tar -c -f archive.2 -l --remove-files file1 file2 file3
+echo testing archive.2
+tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+echo >>"$at_stderr"; $as_echo "tar: Missing links to \`file1'.
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "archive.1
+archive.2
+testing archive.2
+file1
+file1
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/link03.at:34"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+              { $at_traceoff
+$as_echo "$at_srcdir/link03.at:34:
+mkdir ustar
+(cd ustar
+TEST_TAR_FORMAT=ustar
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H ustar\"
+export TAR_OPTIONS
+rm -rf *
+
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.1
+tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.2
+tar -c -f archive.2 -l --remove-files file1 file2 file3
+echo testing archive.2
+tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+)"
+echo link03.at:34 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir ustar
+(cd ustar
+TEST_TAR_FORMAT=ustar
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H ustar"
+export TAR_OPTIONS
+rm -rf *
+
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.1
+tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.2
+tar -c -f archive.2 -l --remove-files file1 file2 file3
+echo testing archive.2
+tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir ustar
+(cd ustar
+TEST_TAR_FORMAT=ustar
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H ustar"
+export TAR_OPTIONS
+rm -rf *
+
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.1
+tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.2
+tar -c -f archive.2 -l --remove-files file1 file2 file3
+echo testing archive.2
+tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+echo >>"$at_stderr"; $as_echo "tar: Missing links to \`file1'.
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "archive.1
+archive.2
+testing archive.2
+file1
+file1
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/link03.at:34"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+              { $at_traceoff
+$as_echo "$at_srcdir/link03.at:34:
+mkdir posix
+(cd posix
+TEST_TAR_FORMAT=posix
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H posix\"
+export TAR_OPTIONS
+rm -rf *
+
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.1
+tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.2
+tar -c -f archive.2 -l --remove-files file1 file2 file3
+echo testing archive.2
+tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+)"
+echo link03.at:34 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir posix
+(cd posix
+TEST_TAR_FORMAT=posix
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H posix"
+export TAR_OPTIONS
+rm -rf *
+
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.1
+tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.2
+tar -c -f archive.2 -l --remove-files file1 file2 file3
+echo testing archive.2
+tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir posix
+(cd posix
+TEST_TAR_FORMAT=posix
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H posix"
+export TAR_OPTIONS
+rm -rf *
+
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.1
+tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.2
+tar -c -f archive.2 -l --remove-files file1 file2 file3
+echo testing archive.2
+tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+echo >>"$at_stderr"; $as_echo "tar: Missing links to \`file1'.
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "archive.1
+archive.2
+testing archive.2
+file1
+file1
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/link03.at:34"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+              { $at_traceoff
+$as_echo "$at_srcdir/link03.at:34:
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H gnu\"
+export TAR_OPTIONS
+rm -rf *
+
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.1
+tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.2
+tar -c -f archive.2 -l --remove-files file1 file2 file3
+echo testing archive.2
+tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+)"
+echo link03.at:34 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.1
+tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
+
+echo archive.2
+tar -c -f archive.2 -l --remove-files file1 file2 file3
+echo testing archive.2
+tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+
+genfile -l 64 -f file1
+ln file1 file2
+ln file2 file3
+ln file3 file4
 
 echo archive.1
 tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
 
 genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+ln file1 file2
+ln file2 file3
+ln file3 file4
 
 echo archive.2
 tar -c -f archive.2 -l --remove-files file1 file2 file3
@@ -25438,11 +27718,144 @@ file1
   $at_diff - "$at_stdout" || at_failed=:
 at_func_check_status 0 $at_status "$at_srcdir/link03.at:34"
 
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+
+
+
+  $at_traceoff
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 | eval $at_tee_pipe
+at_status=`cat "$at_status_file"`
+#AT_STOP_69
+#AT_START_70
+# 70. link04.at:29: link count is 1 but multiple occurrences
+at_setup_line='link04.at:29'
+at_desc="link count is 1 but multiple occurrences"
+$at_quiet $as_echo_n " 70: $at_desc       "
+at_xfail=no
+      test -f $XFAILFILE && at_xfail=yes
+echo "#                             -*- compilation -*-" >> "$at_group_log"
+(
+  $as_echo "70. link04.at:29: testing ..."
+  $at_traceon
+
+
+
+
+
+  { $at_traceoff
+$as_echo "$at_srcdir/link04.at:32:
+mkdir v7
+(cd v7
+TEST_TAR_FORMAT=v7
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H v7\"
+export TAR_OPTIONS
+rm -rf *
+
+mkdir dir
+echo TEST > dir/file
+ln -s file dir/symlink || exit 77
+
+tar cf archive dir dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+' | sort
+
+echo ==
+
+tar chf archive dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+  s,file,FOO,g
+  s,symlink,FOO,g
+' | sort
+)"
+echo link04.at:32 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir v7
+(cd v7
+TEST_TAR_FORMAT=v7
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H v7"
+export TAR_OPTIONS
+rm -rf *
+
+mkdir dir
+echo TEST > dir/file
+ln -s file dir/symlink || exit 77
+
+tar cf archive dir dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+' | sort
+
+echo ==
+
+tar chf archive dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+  s,file,FOO,g
+  s,symlink,FOO,g
+' | sort
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir v7
+(cd v7
+TEST_TAR_FORMAT=v7
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H v7"
+export TAR_OPTIONS
+rm -rf *
+
+mkdir dir
+echo TEST > dir/file
+ln -s file dir/symlink || exit 77
+
+tar cf archive dir dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+' | sort
+
+echo ==
+
+tar chf archive dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+  s,file,FOO,g
+  s,symlink,FOO,g
+' | sort
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+at_func_diff_devnull "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "dir/
+dir/
+dir/file
+dir/file link to dir/file
+dir/symlink -> file
+dir/symlink link to dir/symlink
+==
+dir/
+dir/FOO
+dir/FOO link to dir/FOO
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/link04.at:32"
+
 $at_failed && at_func_log_failure
 $at_traceon; }
 
               { $at_traceoff
-$as_echo "$at_srcdir/link03.at:34:
+$as_echo "$at_srcdir/link04.at:32:
 mkdir oldgnu
 (cd oldgnu
 TEST_TAR_FORMAT=oldgnu
@@ -25451,26 +27864,25 @@ TAR_OPTIONS=\"-H oldgnu\"
 export TAR_OPTIONS
 rm -rf *
 
+mkdir dir
+echo TEST > dir/file
+ln -s file dir/symlink || exit 77
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
-
-echo archive.1
-tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+tar cf archive dir dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+' | sort
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+echo ==
 
-echo archive.2
-tar -c -f archive.2 -l --remove-files file1 file2 file3
-echo testing archive.2
-tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+tar chf archive dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+  s,file,FOO,g
+  s,symlink,FOO,g
+' | sort
 )"
-echo link03.at:34 >"$at_check_line_file"
+echo link04.at:32 >"$at_check_line_file"
 
 if { echo 'Not enabling shell tracing (command contains an embedded newline)'
    false; }; then
@@ -25483,24 +27895,23 @@ TAR_OPTIONS="-H oldgnu"
 export TAR_OPTIONS
 rm -rf *
 
+mkdir dir
+echo TEST > dir/file
+ln -s file dir/symlink || exit 77
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
-
-echo archive.1
-tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+tar cf archive dir dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+' | sort
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+echo ==
 
-echo archive.2
-tar -c -f archive.2 -l --remove-files file1 file2 file3
-echo testing archive.2
-tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+tar chf archive dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+  s,file,FOO,g
+  s,symlink,FOO,g
+' | sort
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -25513,45 +27924,47 @@ TAR_OPTIONS="-H oldgnu"
 export TAR_OPTIONS
 rm -rf *
 
+mkdir dir
+echo TEST > dir/file
+ln -s file dir/symlink || exit 77
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
-
-echo archive.1
-tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+tar cf archive dir dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+' | sort
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+echo ==
 
-echo archive.2
-tar -c -f archive.2 -l --remove-files file1 file2 file3
-echo testing archive.2
-tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+tar chf archive dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+  s,file,FOO,g
+  s,symlink,FOO,g
+' | sort
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
 at_failed=false
-echo >>"$at_stderr"; $as_echo "tar: Missing links to \`file1'.
-" | \
-  $at_diff - "$at_stderr" || at_failed=:
-echo >>"$at_stdout"; $as_echo "archive.1
-archive.2
-testing archive.2
-file1
-file1
+at_func_diff_devnull "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "dir/
+dir/
+dir/file
+dir/file link to dir/file
+dir/symlink -> file
+dir/symlink link to dir/symlink
+==
+dir/
+dir/FOO
+dir/FOO link to dir/FOO
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_func_check_status 0 $at_status "$at_srcdir/link03.at:34"
+at_func_check_status 0 $at_status "$at_srcdir/link04.at:32"
 
 $at_failed && at_func_log_failure
 $at_traceon; }
 
               { $at_traceoff
-$as_echo "$at_srcdir/link03.at:34:
+$as_echo "$at_srcdir/link04.at:32:
 mkdir ustar
 (cd ustar
 TEST_TAR_FORMAT=ustar
@@ -25560,26 +27973,25 @@ TAR_OPTIONS=\"-H ustar\"
 export TAR_OPTIONS
 rm -rf *
 
+mkdir dir
+echo TEST > dir/file
+ln -s file dir/symlink || exit 77
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
-
-echo archive.1
-tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+tar cf archive dir dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+' | sort
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+echo ==
 
-echo archive.2
-tar -c -f archive.2 -l --remove-files file1 file2 file3
-echo testing archive.2
-tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+tar chf archive dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+  s,file,FOO,g
+  s,symlink,FOO,g
+' | sort
 )"
-echo link03.at:34 >"$at_check_line_file"
+echo link04.at:32 >"$at_check_line_file"
 
 if { echo 'Not enabling shell tracing (command contains an embedded newline)'
    false; }; then
@@ -25592,24 +28004,23 @@ TAR_OPTIONS="-H ustar"
 export TAR_OPTIONS
 rm -rf *
 
+mkdir dir
+echo TEST > dir/file
+ln -s file dir/symlink || exit 77
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
-
-echo archive.1
-tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+tar cf archive dir dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+' | sort
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+echo ==
 
-echo archive.2
-tar -c -f archive.2 -l --remove-files file1 file2 file3
-echo testing archive.2
-tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+tar chf archive dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+  s,file,FOO,g
+  s,symlink,FOO,g
+' | sort
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -25622,45 +28033,47 @@ TAR_OPTIONS="-H ustar"
 export TAR_OPTIONS
 rm -rf *
 
+mkdir dir
+echo TEST > dir/file
+ln -s file dir/symlink || exit 77
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+tar cf archive dir dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+' | sort
 
-echo archive.1
-tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+echo ==
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
-
-echo archive.2
-tar -c -f archive.2 -l --remove-files file1 file2 file3
-echo testing archive.2
-tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+tar chf archive dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+  s,file,FOO,g
+  s,symlink,FOO,g
+' | sort
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
 at_failed=false
-echo >>"$at_stderr"; $as_echo "tar: Missing links to \`file1'.
-" | \
-  $at_diff - "$at_stderr" || at_failed=:
-echo >>"$at_stdout"; $as_echo "archive.1
-archive.2
-testing archive.2
-file1
-file1
+at_func_diff_devnull "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "dir/
+dir/
+dir/file
+dir/file link to dir/file
+dir/symlink -> file
+dir/symlink link to dir/symlink
+==
+dir/
+dir/FOO
+dir/FOO link to dir/FOO
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_func_check_status 0 $at_status "$at_srcdir/link03.at:34"
+at_func_check_status 0 $at_status "$at_srcdir/link04.at:32"
 
 $at_failed && at_func_log_failure
 $at_traceon; }
 
               { $at_traceoff
-$as_echo "$at_srcdir/link03.at:34:
+$as_echo "$at_srcdir/link04.at:32:
 mkdir posix
 (cd posix
 TEST_TAR_FORMAT=posix
@@ -25669,26 +28082,25 @@ TAR_OPTIONS=\"-H posix\"
 export TAR_OPTIONS
 rm -rf *
 
+mkdir dir
+echo TEST > dir/file
+ln -s file dir/symlink || exit 77
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+tar cf archive dir dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+' | sort
 
-echo archive.1
-tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
-
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+echo ==
 
-echo archive.2
-tar -c -f archive.2 -l --remove-files file1 file2 file3
-echo testing archive.2
-tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+tar chf archive dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+  s,file,FOO,g
+  s,symlink,FOO,g
+' | sort
 )"
-echo link03.at:34 >"$at_check_line_file"
+echo link04.at:32 >"$at_check_line_file"
 
 if { echo 'Not enabling shell tracing (command contains an embedded newline)'
    false; }; then
@@ -25701,24 +28113,23 @@ TAR_OPTIONS="-H posix"
 export TAR_OPTIONS
 rm -rf *
 
+mkdir dir
+echo TEST > dir/file
+ln -s file dir/symlink || exit 77
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
-
-echo archive.1
-tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+tar cf archive dir dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+' | sort
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+echo ==
 
-echo archive.2
-tar -c -f archive.2 -l --remove-files file1 file2 file3
-echo testing archive.2
-tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+tar chf archive dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+  s,file,FOO,g
+  s,symlink,FOO,g
+' | sort
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -25731,45 +28142,47 @@ TAR_OPTIONS="-H posix"
 export TAR_OPTIONS
 rm -rf *
 
+mkdir dir
+echo TEST > dir/file
+ln -s file dir/symlink || exit 77
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
-
-echo archive.1
-tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+tar cf archive dir dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+' | sort
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+echo ==
 
-echo archive.2
-tar -c -f archive.2 -l --remove-files file1 file2 file3
-echo testing archive.2
-tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+tar chf archive dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+  s,file,FOO,g
+  s,symlink,FOO,g
+' | sort
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
 at_failed=false
-echo >>"$at_stderr"; $as_echo "tar: Missing links to \`file1'.
-" | \
-  $at_diff - "$at_stderr" || at_failed=:
-echo >>"$at_stdout"; $as_echo "archive.1
-archive.2
-testing archive.2
-file1
-file1
+at_func_diff_devnull "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "dir/
+dir/
+dir/file
+dir/file link to dir/file
+dir/symlink -> file
+dir/symlink link to dir/symlink
+==
+dir/
+dir/FOO
+dir/FOO link to dir/FOO
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_func_check_status 0 $at_status "$at_srcdir/link03.at:34"
+at_func_check_status 0 $at_status "$at_srcdir/link04.at:32"
 
 $at_failed && at_func_log_failure
 $at_traceon; }
 
               { $at_traceoff
-$as_echo "$at_srcdir/link03.at:34:
+$as_echo "$at_srcdir/link04.at:32:
 mkdir gnu
 (cd gnu
 TEST_TAR_FORMAT=gnu
@@ -25778,26 +28191,25 @@ TAR_OPTIONS=\"-H gnu\"
 export TAR_OPTIONS
 rm -rf *
 
+mkdir dir
+echo TEST > dir/file
+ln -s file dir/symlink || exit 77
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
-
-echo archive.1
-tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+tar cf archive dir dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+' | sort
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+echo ==
 
-echo archive.2
-tar -c -f archive.2 -l --remove-files file1 file2 file3
-echo testing archive.2
-tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+tar chf archive dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+  s,file,FOO,g
+  s,symlink,FOO,g
+' | sort
 )"
-echo link03.at:34 >"$at_check_line_file"
+echo link04.at:32 >"$at_check_line_file"
 
 if { echo 'Not enabling shell tracing (command contains an embedded newline)'
    false; }; then
@@ -25810,24 +28222,23 @@ TAR_OPTIONS="-H gnu"
 export TAR_OPTIONS
 rm -rf *
 
+mkdir dir
+echo TEST > dir/file
+ln -s file dir/symlink || exit 77
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
-
-echo archive.1
-tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+tar cf archive dir dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+' | sort
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+echo ==
 
-echo archive.2
-tar -c -f archive.2 -l --remove-files file1 file2 file3
-echo testing archive.2
-tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+tar chf archive dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+  s,file,FOO,g
+  s,symlink,FOO,g
+' | sort
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -25840,39 +28251,41 @@ TAR_OPTIONS="-H gnu"
 export TAR_OPTIONS
 rm -rf *
 
+mkdir dir
+echo TEST > dir/file
+ln -s file dir/symlink || exit 77
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
-
-echo archive.1
-tar -c -f archive.1 -l --remove-files file1 file2 file3 file4
+tar cf archive dir dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+' | sort
 
-genfile -l 64 -f file1
-link file1 file2
-link file2 file3
-link file3 file4
+echo ==
 
-echo archive.2
-tar -c -f archive.2 -l --remove-files file1 file2 file3
-echo testing archive.2
-tar tfv archive.2 | sed -n 's/.*file[2-3] link to //p'
+tar chf archive dir
+tar tvf archive | sed '
+  s,.*[0-9] dir/,dir/,
+  s,file,FOO,g
+  s,symlink,FOO,g
+' | sort
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
 at_failed=false
-echo >>"$at_stderr"; $as_echo "tar: Missing links to \`file1'.
-" | \
-  $at_diff - "$at_stderr" || at_failed=:
-echo >>"$at_stdout"; $as_echo "archive.1
-archive.2
-testing archive.2
-file1
-file1
+at_func_diff_devnull "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "dir/
+dir/
+dir/file
+dir/file link to dir/file
+dir/symlink -> file
+dir/symlink link to dir/symlink
+==
+dir/
+dir/FOO
+dir/FOO link to dir/FOO
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_func_check_status 0 $at_status "$at_srcdir/link03.at:34"
+at_func_check_status 0 $at_status "$at_srcdir/link04.at:32"
 
 $at_failed && at_func_log_failure
 $at_traceon; }
@@ -25884,17 +28297,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_56
-#AT_START_57
-# 57. longv7.at:24: long names in V7 archives
+#AT_STOP_70
+#AT_START_71
+# 71. longv7.at:24: long names in V7 archives
 at_setup_line='longv7.at:24'
 at_desc="long names in V7 archives"
-$at_quiet $as_echo_n " 57: $at_desc                      "
+$at_quiet $as_echo_n " 71: $at_desc                      "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "57. longv7.at:24: testing ..."
+  $as_echo "71. longv7.at:24: testing ..."
   $at_traceon
 
 
@@ -25982,17 +28395,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_57
-#AT_START_58
-# 58. long01.at:28: long file names divisible by block size
+#AT_STOP_71
+#AT_START_72
+# 72. long01.at:28: long file names divisible by block size
 at_setup_line='long01.at:28'
 at_desc="long file names divisible by block size"
-$at_quiet $as_echo_n " 58: $at_desc        "
+$at_quiet $as_echo_n " 72: $at_desc        "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "58. long01.at:28: testing ..."
+  $as_echo "72. long01.at:28: testing ..."
   $at_traceon
 
 
@@ -26140,17 +28553,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_58
-#AT_START_59
-# 59. lustar01.at:21: ustar: unsplittable file name
+#AT_STOP_72
+#AT_START_73
+# 73. lustar01.at:21: ustar: unsplittable file name
 at_setup_line='lustar01.at:21'
 at_desc="ustar: unsplittable file name"
-$at_quiet $as_echo_n " 59: $at_desc                  "
+$at_quiet $as_echo_n " 73: $at_desc                  "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "59. lustar01.at:21: testing ..."
+  $as_echo "73. lustar01.at:21: testing ..."
   $at_traceon
 
 
@@ -26222,17 +28635,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_59
-#AT_START_60
-# 60. lustar02.at:21: ustar: unsplittable path name
+#AT_STOP_73
+#AT_START_74
+# 74. lustar02.at:21: ustar: unsplittable path name
 at_setup_line='lustar02.at:21'
 at_desc="ustar: unsplittable path name"
-$at_quiet $as_echo_n " 60: $at_desc                  "
+$at_quiet $as_echo_n " 74: $at_desc                  "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "60. lustar02.at:21: testing ..."
+  $as_echo "74. lustar02.at:21: testing ..."
   $at_traceon
 
 
@@ -26311,17 +28724,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_60
-#AT_START_61
-# 61. lustar03.at:21: ustar: splitting long names
+#AT_STOP_74
+#AT_START_75
+# 75. lustar03.at:21: ustar: splitting long names
 at_setup_line='lustar03.at:21'
 at_desc="ustar: splitting long names"
-$at_quiet $as_echo_n " 61: $at_desc                    "
+$at_quiet $as_echo_n " 75: $at_desc                    "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "61. lustar03.at:21: testing ..."
+  $as_echo "75. lustar03.at:21: testing ..."
   $at_traceon
 
 
@@ -26406,17 +28819,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_61
-#AT_START_62
-# 62. multiv01.at:23: multivolume dumps from pipes
+#AT_STOP_75
+#AT_START_76
+# 76. multiv01.at:23: multivolume dumps from pipes
 at_setup_line='multiv01.at:23'
 at_desc="multivolume dumps from pipes"
-$at_quiet $as_echo_n " 62: $at_desc                   "
+$at_quiet $as_echo_n " 76: $at_desc                   "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "62. multiv01.at:23: testing ..."
+  $as_echo "76. multiv01.at:23: testing ..."
   $at_traceon
 
 
@@ -26460,7 +28873,7 @@ tar -c --multi-volume --tape-length=\$TAPE_LENGTH \\
 mkdir extract-dir-pipe
 dd bs=4096 count=\$TAPE_LENGTH if=t2-pipe.tar 2>/dev/null |
 PATH=\$PATH \${TRUSS} tar -f t1-pipe.tar -f - \\
-      -C extract-dir-pipe -x --multi-volume \\
+      -C extract-dir-pipe -x --multi-volume --warning=no-timestamp \\
       --tape-length=\$TAPE_LENGTH --read-full-records || exit 1
 
 cmp file1 extract-dir-pipe/file1
@@ -26502,7 +28915,7 @@ tar -c --multi-volume --tape-length=$TAPE_LENGTH \
 mkdir extract-dir-pipe
 dd bs=4096 count=$TAPE_LENGTH if=t2-pipe.tar 2>/dev/null |
 PATH=$PATH ${TRUSS} tar -f t1-pipe.tar -f - \
-      -C extract-dir-pipe -x --multi-volume \
+      -C extract-dir-pipe -x --multi-volume --warning=no-timestamp \
       --tape-length=$TAPE_LENGTH --read-full-records || exit 1
 
 cmp file1 extract-dir-pipe/file1
@@ -26542,7 +28955,7 @@ tar -c --multi-volume --tape-length=$TAPE_LENGTH \
 mkdir extract-dir-pipe
 dd bs=4096 count=$TAPE_LENGTH if=t2-pipe.tar 2>/dev/null |
 PATH=$PATH ${TRUSS} tar -f t1-pipe.tar -f - \
-      -C extract-dir-pipe -x --multi-volume \
+      -C extract-dir-pipe -x --multi-volume --warning=no-timestamp \
       --tape-length=$TAPE_LENGTH --read-full-records || exit 1
 
 cmp file1 extract-dir-pipe/file1
@@ -26591,7 +29004,7 @@ tar -c --multi-volume --tape-length=\$TAPE_LENGTH \\
 mkdir extract-dir-pipe
 dd bs=4096 count=\$TAPE_LENGTH if=t2-pipe.tar 2>/dev/null |
 PATH=\$PATH \${TRUSS} tar -f t1-pipe.tar -f - \\
-      -C extract-dir-pipe -x --multi-volume \\
+      -C extract-dir-pipe -x --multi-volume --warning=no-timestamp \\
       --tape-length=\$TAPE_LENGTH --read-full-records || exit 1
 
 cmp file1 extract-dir-pipe/file1
@@ -26633,7 +29046,7 @@ tar -c --multi-volume --tape-length=$TAPE_LENGTH \
 mkdir extract-dir-pipe
 dd bs=4096 count=$TAPE_LENGTH if=t2-pipe.tar 2>/dev/null |
 PATH=$PATH ${TRUSS} tar -f t1-pipe.tar -f - \
-      -C extract-dir-pipe -x --multi-volume \
+      -C extract-dir-pipe -x --multi-volume --warning=no-timestamp \
       --tape-length=$TAPE_LENGTH --read-full-records || exit 1
 
 cmp file1 extract-dir-pipe/file1
@@ -26673,7 +29086,7 @@ tar -c --multi-volume --tape-length=$TAPE_LENGTH \
 mkdir extract-dir-pipe
 dd bs=4096 count=$TAPE_LENGTH if=t2-pipe.tar 2>/dev/null |
 PATH=$PATH ${TRUSS} tar -f t1-pipe.tar -f - \
-      -C extract-dir-pipe -x --multi-volume \
+      -C extract-dir-pipe -x --multi-volume --warning=no-timestamp \
       --tape-length=$TAPE_LENGTH --read-full-records || exit 1
 
 cmp file1 extract-dir-pipe/file1
@@ -26722,7 +29135,7 @@ tar -c --multi-volume --tape-length=\$TAPE_LENGTH \\
 mkdir extract-dir-pipe
 dd bs=4096 count=\$TAPE_LENGTH if=t2-pipe.tar 2>/dev/null |
 PATH=\$PATH \${TRUSS} tar -f t1-pipe.tar -f - \\
-      -C extract-dir-pipe -x --multi-volume \\
+      -C extract-dir-pipe -x --multi-volume --warning=no-timestamp \\
       --tape-length=\$TAPE_LENGTH --read-full-records || exit 1
 
 cmp file1 extract-dir-pipe/file1
@@ -26764,7 +29177,7 @@ tar -c --multi-volume --tape-length=$TAPE_LENGTH \
 mkdir extract-dir-pipe
 dd bs=4096 count=$TAPE_LENGTH if=t2-pipe.tar 2>/dev/null |
 PATH=$PATH ${TRUSS} tar -f t1-pipe.tar -f - \
-      -C extract-dir-pipe -x --multi-volume \
+      -C extract-dir-pipe -x --multi-volume --warning=no-timestamp \
       --tape-length=$TAPE_LENGTH --read-full-records || exit 1
 
 cmp file1 extract-dir-pipe/file1
@@ -26804,7 +29217,7 @@ tar -c --multi-volume --tape-length=$TAPE_LENGTH \
 mkdir extract-dir-pipe
 dd bs=4096 count=$TAPE_LENGTH if=t2-pipe.tar 2>/dev/null |
 PATH=$PATH ${TRUSS} tar -f t1-pipe.tar -f - \
-      -C extract-dir-pipe -x --multi-volume \
+      -C extract-dir-pipe -x --multi-volume --warning=no-timestamp \
       --tape-length=$TAPE_LENGTH --read-full-records || exit 1
 
 cmp file1 extract-dir-pipe/file1
@@ -26827,17 +29240,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_62
-#AT_START_63
-# 63. multiv02.at:28: skipping a straddling member
+#AT_STOP_76
+#AT_START_77
+# 77. multiv02.at:28: skipping a straddling member
 at_setup_line='multiv02.at:28'
 at_desc="skipping a straddling member"
-$at_quiet $as_echo_n " 63: $at_desc                   "
+$at_quiet $as_echo_n " 77: $at_desc                   "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "63. multiv02.at:28: testing ..."
+  $as_echo "77. multiv02.at:28: testing ..."
   $at_traceon
 
 
@@ -26863,7 +29276,7 @@ exec <&-
 
 tar -c -f A.tar -f B.tar -f C.tar -M -L 30 en to tre fire || exit 1
 echo separator
-tar -v -x -f A.tar -f B.tar -f C.tar -M en || exit 1
+tar -v -x -f A.tar -f B.tar -f C.tar -M en --warning=no-timestamp || exit 1
 )"
 echo multiv02.at:31 >"$at_check_line_file"
 
@@ -26887,7 +29300,7 @@ exec <&-
 
 tar -c -f A.tar -f B.tar -f C.tar -M -L 30 en to tre fire || exit 1
 echo separator
-tar -v -x -f A.tar -f B.tar -f C.tar -M en || exit 1
+tar -v -x -f A.tar -f B.tar -f C.tar -M en --warning=no-timestamp || exit 1
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -26909,7 +29322,7 @@ exec <&-
 
 tar -c -f A.tar -f B.tar -f C.tar -M -L 30 en to tre fire || exit 1
 echo separator
-tar -v -x -f A.tar -f B.tar -f C.tar -M en || exit 1
+tar -v -x -f A.tar -f B.tar -f C.tar -M en --warning=no-timestamp || exit 1
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
@@ -26943,7 +29356,7 @@ exec <&-
 
 tar -c -f A.tar -f B.tar -f C.tar -M -L 30 en to tre fire || exit 1
 echo separator
-tar -v -x -f A.tar -f B.tar -f C.tar -M en || exit 1
+tar -v -x -f A.tar -f B.tar -f C.tar -M en --warning=no-timestamp || exit 1
 )"
 echo multiv02.at:31 >"$at_check_line_file"
 
@@ -26967,7 +29380,7 @@ exec <&-
 
 tar -c -f A.tar -f B.tar -f C.tar -M -L 30 en to tre fire || exit 1
 echo separator
-tar -v -x -f A.tar -f B.tar -f C.tar -M en || exit 1
+tar -v -x -f A.tar -f B.tar -f C.tar -M en --warning=no-timestamp || exit 1
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -26989,7 +29402,7 @@ exec <&-
 
 tar -c -f A.tar -f B.tar -f C.tar -M -L 30 en to tre fire || exit 1
 echo separator
-tar -v -x -f A.tar -f B.tar -f C.tar -M en || exit 1
+tar -v -x -f A.tar -f B.tar -f C.tar -M en --warning=no-timestamp || exit 1
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
@@ -27023,7 +29436,7 @@ exec <&-
 
 tar -c -f A.tar -f B.tar -f C.tar -M -L 30 en to tre fire || exit 1
 echo separator
-tar -v -x -f A.tar -f B.tar -f C.tar -M en || exit 1
+tar -v -x -f A.tar -f B.tar -f C.tar -M en --warning=no-timestamp || exit 1
 )"
 echo multiv02.at:31 >"$at_check_line_file"
 
@@ -27047,7 +29460,7 @@ exec <&-
 
 tar -c -f A.tar -f B.tar -f C.tar -M -L 30 en to tre fire || exit 1
 echo separator
-tar -v -x -f A.tar -f B.tar -f C.tar -M en || exit 1
+tar -v -x -f A.tar -f B.tar -f C.tar -M en --warning=no-timestamp || exit 1
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
@@ -27069,7 +29482,7 @@ exec <&-
 
 tar -c -f A.tar -f B.tar -f C.tar -M -L 30 en to tre fire || exit 1
 echo separator
-tar -v -x -f A.tar -f B.tar -f C.tar -M en || exit 1
+tar -v -x -f A.tar -f B.tar -f C.tar -M en --warning=no-timestamp || exit 1
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
@@ -27091,17 +29504,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_63
-#AT_START_64
-# 64. multiv03.at:30: MV archive & long filenames
+#AT_STOP_77
+#AT_START_78
+# 78. multiv03.at:30: MV archive & long filenames
 at_setup_line='multiv03.at:30'
 at_desc="MV archive & long filenames"
-$at_quiet $as_echo_n " 64: $at_desc                    "
+$at_quiet $as_echo_n " 78: $at_desc                    "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "64. multiv03.at:30: testing ..."
+  $as_echo "78. multiv03.at:30: testing ..."
   $at_traceon
 
 
@@ -27146,7 +29559,7 @@ tar -M -L 10 -c -f arch.1 -f arch.2 \$BFILE || exit 1
 
 echo separator-2
 mv \$BFILE bfile
-tar -M -x -f arch.1 -f arch.2 || exit 1
+tar -M -x -f arch.1 -f arch.2 --warning=no-timestamp || exit 1
 cmp \$BFILE bfile
 )"
 echo multiv03.at:33 >"$at_check_line_file"
@@ -27190,7 +29603,7 @@ tar -M -L 10 -c -f arch.1 -f arch.2 $BFILE || exit 1
 
 echo separator-2
 mv $BFILE bfile
-tar -M -x -f arch.1 -f arch.2 || exit 1
+tar -M -x -f arch.1 -f arch.2 --warning=no-timestamp || exit 1
 cmp $BFILE bfile
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
@@ -27232,7 +29645,7 @@ tar -M -L 10 -c -f arch.1 -f arch.2 $BFILE || exit 1
 
 echo separator-2
 mv $BFILE bfile
-tar -M -x -f arch.1 -f arch.2 || exit 1
+tar -M -x -f arch.1 -f arch.2 --warning=no-timestamp || exit 1
 cmp $BFILE bfile
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
@@ -27283,7 +29696,7 @@ tar -M -L 10 -c -f arch.1 -f arch.2 \$BFILE || exit 1
 
 echo separator-2
 mv \$BFILE bfile
-tar -M -x -f arch.1 -f arch.2 || exit 1
+tar -M -x -f arch.1 -f arch.2 --warning=no-timestamp || exit 1
 cmp \$BFILE bfile
 )"
 echo multiv03.at:33 >"$at_check_line_file"
@@ -27327,7 +29740,7 @@ tar -M -L 10 -c -f arch.1 -f arch.2 $BFILE || exit 1
 
 echo separator-2
 mv $BFILE bfile
-tar -M -x -f arch.1 -f arch.2 || exit 1
+tar -M -x -f arch.1 -f arch.2 --warning=no-timestamp || exit 1
 cmp $BFILE bfile
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
@@ -27369,7 +29782,7 @@ tar -M -L 10 -c -f arch.1 -f arch.2 $BFILE || exit 1
 
 echo separator-2
 mv $BFILE bfile
-tar -M -x -f arch.1 -f arch.2 || exit 1
+tar -M -x -f arch.1 -f arch.2 --warning=no-timestamp || exit 1
 cmp $BFILE bfile
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
@@ -27389,17 +29802,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_64
-#AT_START_65
-# 65. multiv04.at:36: split directory members in a MV archive
+#AT_STOP_78
+#AT_START_79
+# 79. multiv04.at:36: split directory members in a MV archive
 at_setup_line='multiv04.at:36'
 at_desc="split directory members in a MV archive"
-$at_quiet $as_echo_n " 65: $at_desc        "
+$at_quiet $as_echo_n " 79: $at_desc        "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "65. multiv04.at:36: testing ..."
+  $as_echo "79. multiv04.at:36: testing ..."
   $at_traceon
 
 
@@ -27613,17 +30026,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_65
-#AT_START_66
-# 66. multiv05.at:26: Restoring after an out of sync volume
+#AT_STOP_79
+#AT_START_80
+# 80. multiv05.at:26: Restoring after an out of sync volume
 at_setup_line='multiv05.at:26'
 at_desc="Restoring after an out of sync volume"
-$at_quiet $as_echo_n " 66: $at_desc          "
+$at_quiet $as_echo_n " 80: $at_desc          "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "66. multiv05.at:26: testing ..."
+  $as_echo "80. multiv05.at:26: testing ..."
   $at_traceon
 
 
@@ -27786,17 +30199,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_66
-#AT_START_67
-# 67. multiv06.at:27: Multivolumes with L=record_size
+#AT_STOP_80
+#AT_START_81
+# 81. multiv06.at:27: Multivolumes with L=record_size
 at_setup_line='multiv06.at:27'
 at_desc="Multivolumes with L=record_size"
-$at_quiet $as_echo_n " 67: $at_desc                "
+$at_quiet $as_echo_n " 81: $at_desc                "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "67. multiv06.at:27: testing ..."
+  $as_echo "81. multiv06.at:27: testing ..."
   $at_traceon
 
 
@@ -27958,19 +30371,19 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_67
-#AT_START_68
-# 68. multiv07.at:26: volumes split at an extended header
+#AT_STOP_81
+#AT_START_82
+# 82. multiv07.at:26: volumes split at an extended header
 at_setup_line='multiv07.at:26'
 at_desc="volumes split at an extended header"
-$at_quiet $as_echo_n " 68: $at_desc            "
+$at_quiet $as_echo_n " 82: $at_desc            "
 at_xfail=no
       test -f \$XFAILFILE && at_xfail=yes
       test -f $XFAILFILE && at_xfail=yes
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "68. multiv07.at:26: testing ..."
+  $as_echo "82. multiv07.at:26: testing ..."
   $at_traceon
 
 
@@ -27985,6 +30398,8 @@ tarball_prereq xsplit-1.tar 0e008c84c517e48fbf23ca6a7033cde6 $TEST_DATA_DIR $TES
 test -z "$TEST_DATA_DIR" && exit 77
 tarball_prereq xsplit-2.tar 03150b9852d285458f43734e9e0b9a45 $TEST_DATA_DIR $TEST_DATA_URL || exit 77
 
+exec <&-
+
 cd \$TEST_DATA_DIR
 tar -t -M -fxsplit-1.tar -fxsplit-2.tar
 "
@@ -28001,6 +30416,8 @@ tarball_prereq xsplit-1.tar 0e008c84c517e48fbf23ca6a7033cde6 $TEST_DATA_DIR $TES
 test -z "$TEST_DATA_DIR" && exit 77
 tarball_prereq xsplit-2.tar 03150b9852d285458f43734e9e0b9a45 $TEST_DATA_DIR $TEST_DATA_URL || exit 77
 
+exec <&-
+
 cd $TEST_DATA_DIR
 tar -t -M -fxsplit-1.tar -fxsplit-2.tar
  ) >"$at_stdout" 2>"$at_stder1"
@@ -28015,6 +30432,8 @@ tarball_prereq xsplit-1.tar 0e008c84c517e48fbf23ca6a7033cde6 $TEST_DATA_DIR $TES
 test -z "$TEST_DATA_DIR" && exit 77
 tarball_prereq xsplit-2.tar 03150b9852d285458f43734e9e0b9a45 $TEST_DATA_DIR $TEST_DATA_URL || exit 77
 
+exec <&-
+
 cd $TEST_DATA_DIR
 tar -t -M -fxsplit-1.tar -fxsplit-2.tar
  ) >"$at_stdout" 2>"$at_stderr"
@@ -28037,16 +30456,114 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_68
-#AT_START_69
-# 69. old.at:23: old archives
+#AT_STOP_82
+#AT_START_83
+# 83. multiv08.at:23: multivolume header creation
+at_setup_line='multiv08.at:23'
+at_desc="multivolume header creation"
+$at_quiet $as_echo_n " 83: $at_desc                    "
+at_xfail=no
+      test -f $XFAILFILE && at_xfail=yes
+echo "#                             -*- compilation -*-" >> "$at_group_log"
+(
+  $as_echo "83. multiv08.at:23: testing ..."
+  $at_traceon
+
+
+
+
+
+  { $at_traceoff
+$as_echo "$at_srcdir/multiv08.at:26:
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS=\"-H gnu\"
+export TAR_OPTIONS
+rm -rf *
+
+genfile --length 9472 --file a
+genfile --length 9984 --file b
+decho Creating
+tar -c -M -L10 -f A.tar -f B.tar -f C.tar a b
+decho Testing
+tar -tMR -f A.tar -f B.tar -f C.tar
+)"
+echo multiv08.at:26 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+genfile --length 9472 --file a
+genfile --length 9984 --file b
+decho Creating
+tar -c -M -L10 -f A.tar -f B.tar -f C.tar a b
+decho Testing
+tar -tMR -f A.tar -f B.tar -f C.tar
+) ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir gnu
+(cd gnu
+TEST_TAR_FORMAT=gnu
+export TEST_TAR_FORMAT
+TAR_OPTIONS="-H gnu"
+export TAR_OPTIONS
+rm -rf *
+
+genfile --length 9472 --file a
+genfile --length 9984 --file b
+decho Creating
+tar -c -M -L10 -f A.tar -f B.tar -f C.tar a b
+decho Testing
+tar -tMR -f A.tar -f B.tar -f C.tar
+) ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+echo >>"$at_stderr"; $as_echo "Creating
+Testing
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "Creating
+Testing
+block 0: a
+block 21: b
+block 43: ** Block of NULs **
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/multiv08.at:26"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+
+
+
+  $at_traceoff
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 | eval $at_tee_pipe
+at_status=`cat "$at_status_file"`
+#AT_STOP_83
+#AT_START_84
+# 84. old.at:23: old archives
 at_setup_line='old.at:23'
 at_desc="old archives"
-$at_quiet $as_echo_n " 69: $at_desc                                   "
+$at_quiet $as_echo_n " 84: $at_desc                                   "
 at_xfail=no
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "69. old.at:23: testing ..."
+  $as_echo "84. old.at:23: testing ..."
   $at_traceon
 
 
@@ -28092,17 +30609,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_69
-#AT_START_70
-# 70. recurse.at:21: recurse
+#AT_STOP_84
+#AT_START_85
+# 85. recurse.at:21: recurse
 at_setup_line='recurse.at:21'
 at_desc="recurse"
-$at_quiet $as_echo_n " 70: $at_desc                                        "
+$at_quiet $as_echo_n " 85: $at_desc                                        "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "70. recurse.at:21: testing ..."
+  $as_echo "85. recurse.at:21: testing ..."
   $at_traceon
 
 
@@ -28421,17 +30938,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_70
-#AT_START_71
-# 71. same-order01.at:26: working -C with --same-order
+#AT_STOP_85
+#AT_START_86
+# 86. same-order01.at:26: working -C with --same-order
 at_setup_line='same-order01.at:26'
 at_desc="working -C with --same-order"
-$at_quiet $as_echo_n " 71: $at_desc                   "
+$at_quiet $as_echo_n " 86: $at_desc                   "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "71. same-order01.at:26: testing ..."
+  $as_echo "86. same-order01.at:26: testing ..."
   $at_traceon
 
 
@@ -28457,7 +30974,7 @@ genfile -l 1024 -f file2
 tar cf archive file1 file2
 
 mkdir directory
-tar -xf archive --same-order -C directory || exit 1
+tar -xf archive --same-order -C directory --warning=no-timestamp || exit 1
 
 ls directory|sort
 )"
@@ -28483,7 +31000,7 @@ genfile -l 1024 -f file2
 tar cf archive file1 file2
 
 mkdir directory
-tar -xf archive --same-order -C directory || exit 1
+tar -xf archive --same-order -C directory --warning=no-timestamp || exit 1
 
 ls directory|sort
 ) ) >"$at_stdout" 2>"$at_stder1"
@@ -28507,7 +31024,7 @@ genfile -l 1024 -f file2
 tar cf archive file1 file2
 
 mkdir directory
-tar -xf archive --same-order -C directory || exit 1
+tar -xf archive --same-order -C directory --warning=no-timestamp || exit 1
 
 ls directory|sort
 ) ) >"$at_stdout" 2>"$at_stderr"
@@ -28543,7 +31060,7 @@ genfile -l 1024 -f file2
 tar cf archive file1 file2
 
 mkdir directory
-tar -xf archive --same-order -C directory || exit 1
+tar -xf archive --same-order -C directory --warning=no-timestamp || exit 1
 
 ls directory|sort
 )"
@@ -28569,7 +31086,7 @@ genfile -l 1024 -f file2
 tar cf archive file1 file2
 
 mkdir directory
-tar -xf archive --same-order -C directory || exit 1
+tar -xf archive --same-order -C directory --warning=no-timestamp || exit 1
 
 ls directory|sort
 ) ) >"$at_stdout" 2>"$at_stder1"
@@ -28593,7 +31110,7 @@ genfile -l 1024 -f file2
 tar cf archive file1 file2
 
 mkdir directory
-tar -xf archive --same-order -C directory || exit 1
+tar -xf archive --same-order -C directory --warning=no-timestamp || exit 1
 
 ls directory|sort
 ) ) >"$at_stdout" 2>"$at_stderr"
@@ -28629,7 +31146,7 @@ genfile -l 1024 -f file2
 tar cf archive file1 file2
 
 mkdir directory
-tar -xf archive --same-order -C directory || exit 1
+tar -xf archive --same-order -C directory --warning=no-timestamp || exit 1
 
 ls directory|sort
 )"
@@ -28655,7 +31172,7 @@ genfile -l 1024 -f file2
 tar cf archive file1 file2
 
 mkdir directory
-tar -xf archive --same-order -C directory || exit 1
+tar -xf archive --same-order -C directory --warning=no-timestamp || exit 1
 
 ls directory|sort
 ) ) >"$at_stdout" 2>"$at_stder1"
@@ -28679,7 +31196,7 @@ genfile -l 1024 -f file2
 tar cf archive file1 file2
 
 mkdir directory
-tar -xf archive --same-order -C directory || exit 1
+tar -xf archive --same-order -C directory --warning=no-timestamp || exit 1
 
 ls directory|sort
 ) ) >"$at_stdout" 2>"$at_stderr"
@@ -28715,7 +31232,7 @@ genfile -l 1024 -f file2
 tar cf archive file1 file2
 
 mkdir directory
-tar -xf archive --same-order -C directory || exit 1
+tar -xf archive --same-order -C directory --warning=no-timestamp || exit 1
 
 ls directory|sort
 )"
@@ -28741,7 +31258,7 @@ genfile -l 1024 -f file2
 tar cf archive file1 file2
 
 mkdir directory
-tar -xf archive --same-order -C directory || exit 1
+tar -xf archive --same-order -C directory --warning=no-timestamp || exit 1
 
 ls directory|sort
 ) ) >"$at_stdout" 2>"$at_stder1"
@@ -28765,7 +31282,7 @@ genfile -l 1024 -f file2
 tar cf archive file1 file2
 
 mkdir directory
-tar -xf archive --same-order -C directory || exit 1
+tar -xf archive --same-order -C directory --warning=no-timestamp || exit 1
 
 ls directory|sort
 ) ) >"$at_stdout" 2>"$at_stderr"
@@ -28801,7 +31318,7 @@ genfile -l 1024 -f file2
 tar cf archive file1 file2
 
 mkdir directory
-tar -xf archive --same-order -C directory || exit 1
+tar -xf archive --same-order -C directory --warning=no-timestamp || exit 1
 
 ls directory|sort
 )"
@@ -28827,7 +31344,7 @@ genfile -l 1024 -f file2
 tar cf archive file1 file2
 
 mkdir directory
-tar -xf archive --same-order -C directory || exit 1
+tar -xf archive --same-order -C directory --warning=no-timestamp || exit 1
 
 ls directory|sort
 ) ) >"$at_stdout" 2>"$at_stder1"
@@ -28851,7 +31368,7 @@ genfile -l 1024 -f file2
 tar cf archive file1 file2
 
 mkdir directory
-tar -xf archive --same-order -C directory || exit 1
+tar -xf archive --same-order -C directory --warning=no-timestamp || exit 1
 
 ls directory|sort
 ) ) >"$at_stdout" 2>"$at_stderr"
@@ -28875,17 +31392,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_71
-#AT_START_72
-# 72. same-order02.at:25: multiple -C options
+#AT_STOP_86
+#AT_START_87
+# 87. same-order02.at:25: multiple -C options
 at_setup_line='same-order02.at:25'
 at_desc="multiple -C options"
-$at_quiet $as_echo_n " 72: $at_desc                            "
+$at_quiet $as_echo_n " 87: $at_desc                            "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "72. same-order02.at:25: testing ..."
+  $as_echo "87. same-order02.at:25: testing ..."
   $at_traceon
 
 
@@ -28910,7 +31427,9 @@ mkdir en
 mkdir to
 
 HERE=\`pwd\`
-tar -xf archive --same-order -C \$HERE/en file1 -C \$HERE/to file2 || exit 1
+tar -xf archive --same-order --warning=no-timestamp \\
+  -C \$HERE/en file1 \\
+  -C \$HERE/to file2 || exit 1
 
 ls en
 echo separator
@@ -28937,7 +31456,9 @@ mkdir en
 mkdir to
 
 HERE=`pwd`
-tar -xf archive --same-order -C $HERE/en file1 -C $HERE/to file2 || exit 1
+tar -xf archive --same-order --warning=no-timestamp \
+  -C $HERE/en file1 \
+  -C $HERE/to file2 || exit 1
 
 ls en
 echo separator
@@ -28962,7 +31483,9 @@ mkdir en
 mkdir to
 
 HERE=`pwd`
-tar -xf archive --same-order -C $HERE/en file1 -C $HERE/to file2 || exit 1
+tar -xf archive --same-order --warning=no-timestamp \
+  -C $HERE/en file1 \
+  -C $HERE/to file2 || exit 1
 
 ls en
 echo separator
@@ -29000,7 +31523,9 @@ mkdir en
 mkdir to
 
 HERE=\`pwd\`
-tar -xf archive --same-order -C \$HERE/en file1 -C \$HERE/to file2 || exit 1
+tar -xf archive --same-order --warning=no-timestamp \\
+  -C \$HERE/en file1 \\
+  -C \$HERE/to file2 || exit 1
 
 ls en
 echo separator
@@ -29027,7 +31552,9 @@ mkdir en
 mkdir to
 
 HERE=`pwd`
-tar -xf archive --same-order -C $HERE/en file1 -C $HERE/to file2 || exit 1
+tar -xf archive --same-order --warning=no-timestamp \
+  -C $HERE/en file1 \
+  -C $HERE/to file2 || exit 1
 
 ls en
 echo separator
@@ -29052,7 +31579,9 @@ mkdir en
 mkdir to
 
 HERE=`pwd`
-tar -xf archive --same-order -C $HERE/en file1 -C $HERE/to file2 || exit 1
+tar -xf archive --same-order --warning=no-timestamp \
+  -C $HERE/en file1 \
+  -C $HERE/to file2 || exit 1
 
 ls en
 echo separator
@@ -29090,7 +31619,9 @@ mkdir en
 mkdir to
 
 HERE=\`pwd\`
-tar -xf archive --same-order -C \$HERE/en file1 -C \$HERE/to file2 || exit 1
+tar -xf archive --same-order --warning=no-timestamp \\
+  -C \$HERE/en file1 \\
+  -C \$HERE/to file2 || exit 1
 
 ls en
 echo separator
@@ -29117,7 +31648,9 @@ mkdir en
 mkdir to
 
 HERE=`pwd`
-tar -xf archive --same-order -C $HERE/en file1 -C $HERE/to file2 || exit 1
+tar -xf archive --same-order --warning=no-timestamp \
+  -C $HERE/en file1 \
+  -C $HERE/to file2 || exit 1
 
 ls en
 echo separator
@@ -29142,7 +31675,9 @@ mkdir en
 mkdir to
 
 HERE=`pwd`
-tar -xf archive --same-order -C $HERE/en file1 -C $HERE/to file2 || exit 1
+tar -xf archive --same-order --warning=no-timestamp \
+  -C $HERE/en file1 \
+  -C $HERE/to file2 || exit 1
 
 ls en
 echo separator
@@ -29180,7 +31715,9 @@ mkdir en
 mkdir to
 
 HERE=\`pwd\`
-tar -xf archive --same-order -C \$HERE/en file1 -C \$HERE/to file2 || exit 1
+tar -xf archive --same-order --warning=no-timestamp \\
+  -C \$HERE/en file1 \\
+  -C \$HERE/to file2 || exit 1
 
 ls en
 echo separator
@@ -29207,7 +31744,9 @@ mkdir en
 mkdir to
 
 HERE=`pwd`
-tar -xf archive --same-order -C $HERE/en file1 -C $HERE/to file2 || exit 1
+tar -xf archive --same-order --warning=no-timestamp \
+  -C $HERE/en file1 \
+  -C $HERE/to file2 || exit 1
 
 ls en
 echo separator
@@ -29232,7 +31771,9 @@ mkdir en
 mkdir to
 
 HERE=`pwd`
-tar -xf archive --same-order -C $HERE/en file1 -C $HERE/to file2 || exit 1
+tar -xf archive --same-order --warning=no-timestamp \
+  -C $HERE/en file1 \
+  -C $HERE/to file2 || exit 1
 
 ls en
 echo separator
@@ -29270,7 +31811,9 @@ mkdir en
 mkdir to
 
 HERE=\`pwd\`
-tar -xf archive --same-order -C \$HERE/en file1 -C \$HERE/to file2 || exit 1
+tar -xf archive --same-order --warning=no-timestamp \\
+  -C \$HERE/en file1 \\
+  -C \$HERE/to file2 || exit 1
 
 ls en
 echo separator
@@ -29297,7 +31840,9 @@ mkdir en
 mkdir to
 
 HERE=`pwd`
-tar -xf archive --same-order -C $HERE/en file1 -C $HERE/to file2 || exit 1
+tar -xf archive --same-order --warning=no-timestamp \
+  -C $HERE/en file1 \
+  -C $HERE/to file2 || exit 1
 
 ls en
 echo separator
@@ -29322,7 +31867,9 @@ mkdir en
 mkdir to
 
 HERE=`pwd`
-tar -xf archive --same-order -C $HERE/en file1 -C $HERE/to file2 || exit 1
+tar -xf archive --same-order --warning=no-timestamp \
+  -C $HERE/en file1 \
+  -C $HERE/to file2 || exit 1
 
 ls en
 echo separator
@@ -29349,17 +31896,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_72
-#AT_START_73
-# 73. shortrec.at:25: short records
+#AT_STOP_87
+#AT_START_88
+# 88. shortrec.at:25: short records
 at_setup_line='shortrec.at:25'
 at_desc="short records"
-$at_quiet $as_echo_n " 73: $at_desc                                  "
+$at_quiet $as_echo_n " 88: $at_desc                                  "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "73. shortrec.at:25: testing ..."
+  $as_echo "88. shortrec.at:25: testing ..."
   $at_traceon
 
 
@@ -29728,17 +32275,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_73
-#AT_START_74
-# 74. sparse01.at:21: sparse files
+#AT_STOP_88
+#AT_START_89
+# 89. sparse01.at:21: sparse files
 at_setup_line='sparse01.at:21'
 at_desc="sparse files"
-$at_quiet $as_echo_n " 74: $at_desc                                   "
+$at_quiet $as_echo_n " 89: $at_desc                                   "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "74. sparse01.at:21: testing ..."
+  $as_echo "89. sparse01.at:21: testing ..."
   $at_traceon
 
 
@@ -29764,7 +32311,7 @@ echo separator
 tar tfv archive
 echo separator
 mkdir directory
-tar Cxf directory archive
+tar Cxf directory archive --warning=no-timestamp
 genfile --stat=name,size sparsefile
 cmp sparsefile directory/sparsefile
 )"
@@ -29790,7 +32337,7 @@ echo separator
 tar tfv archive
 echo separator
 mkdir directory
-tar Cxf directory archive
+tar Cxf directory archive --warning=no-timestamp
 genfile --stat=name,size sparsefile
 cmp sparsefile directory/sparsefile
 ) ) >"$at_stdout" 2>"$at_stder1"
@@ -29814,7 +32361,7 @@ echo separator
 tar tfv archive
 echo separator
 mkdir directory
-tar Cxf directory archive
+tar Cxf directory archive --warning=no-timestamp
 genfile --stat=name,size sparsefile
 cmp sparsefile directory/sparsefile
 ) ) >"$at_stdout" 2>"$at_stderr"
@@ -29847,7 +32394,7 @@ echo separator
 tar tfv archive
 echo separator
 mkdir directory
-tar Cxf directory archive
+tar Cxf directory archive --warning=no-timestamp
 genfile --stat=name,size sparsefile
 cmp sparsefile directory/sparsefile
 )"
@@ -29873,7 +32420,7 @@ echo separator
 tar tfv archive
 echo separator
 mkdir directory
-tar Cxf directory archive
+tar Cxf directory archive --warning=no-timestamp
 genfile --stat=name,size sparsefile
 cmp sparsefile directory/sparsefile
 ) ) >"$at_stdout" 2>"$at_stder1"
@@ -29897,7 +32444,7 @@ echo separator
 tar tfv archive
 echo separator
 mkdir directory
-tar Cxf directory archive
+tar Cxf directory archive --warning=no-timestamp
 genfile --stat=name,size sparsefile
 cmp sparsefile directory/sparsefile
 ) ) >"$at_stdout" 2>"$at_stderr"
@@ -29930,7 +32477,7 @@ echo separator
 tar tfv archive
 echo separator
 mkdir directory
-tar Cxf directory archive
+tar Cxf directory archive --warning=no-timestamp
 genfile --stat=name,size sparsefile
 cmp sparsefile directory/sparsefile
 )"
@@ -29956,7 +32503,7 @@ echo separator
 tar tfv archive
 echo separator
 mkdir directory
-tar Cxf directory archive
+tar Cxf directory archive --warning=no-timestamp
 genfile --stat=name,size sparsefile
 cmp sparsefile directory/sparsefile
 ) ) >"$at_stdout" 2>"$at_stder1"
@@ -29980,7 +32527,7 @@ echo separator
 tar tfv archive
 echo separator
 mkdir directory
-tar Cxf directory archive
+tar Cxf directory archive --warning=no-timestamp
 genfile --stat=name,size sparsefile
 cmp sparsefile directory/sparsefile
 ) ) >"$at_stdout" 2>"$at_stderr"
@@ -30019,17 +32566,17 @@ done
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_74
-#AT_START_75
-# 75. sparse02.at:21: extracting sparse file over a pipe
+#AT_STOP_89
+#AT_START_90
+# 90. sparse02.at:21: extracting sparse file over a pipe
 at_setup_line='sparse02.at:21'
 at_desc="extracting sparse file over a pipe"
-$at_quiet $as_echo_n " 75: $at_desc             "
+$at_quiet $as_echo_n " 90: $at_desc             "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "75. sparse02.at:21: testing ..."
+  $as_echo "90. sparse02.at:21: testing ..."
   $at_traceon
 
 
@@ -30248,17 +32795,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_75
-#AT_START_76
-# 76. sparse03.at:21: storing sparse files > 8G
+#AT_STOP_90
+#AT_START_91
+# 91. sparse03.at:21: storing sparse files > 8G
 at_setup_line='sparse03.at:21'
 at_desc="storing sparse files > 8G"
-$at_quiet $as_echo_n " 76: $at_desc                      "
+$at_quiet $as_echo_n " 91: $at_desc                      "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "76. sparse03.at:21: testing ..."
+  $as_echo "91. sparse03.at:21: testing ..."
   $at_traceon
 
 
@@ -30378,17 +32925,17 @@ done
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_76
-#AT_START_77
-# 77. sparsemv.at:21: sparse files in MV archives
+#AT_STOP_91
+#AT_START_92
+# 92. sparsemv.at:21: sparse files in MV archives
 at_setup_line='sparsemv.at:21'
 at_desc="sparse files in MV archives"
-$at_quiet $as_echo_n " 77: $at_desc                    "
+$at_quiet $as_echo_n " 92: $at_desc                    "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "77. sparsemv.at:21: testing ..."
+  $as_echo "92. sparsemv.at:21: testing ..."
   $at_traceon
 
 
@@ -30633,17 +33180,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_77
-#AT_START_78
-# 78. spmvp00.at:21: sparse files in PAX MV archives, v.0.0
+#AT_STOP_92
+#AT_START_93
+# 93. spmvp00.at:21: sparse files in PAX MV archives, v.0.0
 at_setup_line='spmvp00.at:21'
 at_desc="sparse files in PAX MV archives, v.0.0"
-$at_quiet $as_echo_n " 78: $at_desc         "
+$at_quiet $as_echo_n " 93: $at_desc         "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "78. spmvp00.at:21: testing ..."
+  $as_echo "93. spmvp00.at:21: testing ..."
   $at_traceon
 
 
@@ -30770,17 +33317,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_78
-#AT_START_79
-# 79. spmvp01.at:21: sparse files in PAX MV archives, v.0.1
+#AT_STOP_93
+#AT_START_94
+# 94. spmvp01.at:21: sparse files in PAX MV archives, v.0.1
 at_setup_line='spmvp01.at:21'
 at_desc="sparse files in PAX MV archives, v.0.1"
-$at_quiet $as_echo_n " 79: $at_desc         "
+$at_quiet $as_echo_n " 94: $at_desc         "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "79. spmvp01.at:21: testing ..."
+  $as_echo "94. spmvp01.at:21: testing ..."
   $at_traceon
 
 
@@ -30907,17 +33454,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_79
-#AT_START_80
-# 80. spmvp10.at:21: sparse files in PAX MV archives, v.1.0
+#AT_STOP_94
+#AT_START_95
+# 95. spmvp10.at:21: sparse files in PAX MV archives, v.1.0
 at_setup_line='spmvp10.at:21'
 at_desc="sparse files in PAX MV archives, v.1.0"
-$at_quiet $as_echo_n " 80: $at_desc         "
+$at_quiet $as_echo_n " 95: $at_desc         "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "80. spmvp10.at:21: testing ..."
+  $as_echo "95. spmvp10.at:21: testing ..."
   $at_traceon
 
 
@@ -31044,17 +33591,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_80
-#AT_START_81
-# 81. update.at:28: update unchanged directories
+#AT_STOP_95
+#AT_START_96
+# 96. update.at:28: update unchanged directories
 at_setup_line='update.at:28'
 at_desc="update unchanged directories"
-$at_quiet $as_echo_n " 81: $at_desc                   "
+$at_quiet $as_echo_n " 96: $at_desc                   "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "81. update.at:28: testing ..."
+  $as_echo "96. update.at:28: testing ..."
   $at_traceon
 
 
@@ -31513,17 +34060,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_81
-#AT_START_82
-# 82. update01.at:29: update directories
+#AT_STOP_96
+#AT_START_97
+# 97. update01.at:29: update directories
 at_setup_line='update01.at:29'
 at_desc="update directories"
-$at_quiet $as_echo_n " 82: $at_desc                             "
+$at_quiet $as_echo_n " 97: $at_desc                             "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "82. update01.at:29: testing ..."
+  $as_echo "97. update01.at:29: testing ..."
   $at_traceon
 
 
@@ -32047,17 +34594,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_82
-#AT_START_83
-# 83. update02.at:26: update changed files
+#AT_STOP_97
+#AT_START_98
+# 98. update02.at:26: update changed files
 at_setup_line='update02.at:26'
 at_desc="update changed files"
-$at_quiet $as_echo_n " 83: $at_desc                           "
+$at_quiet $as_echo_n " 98: $at_desc                           "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "83. update02.at:26: testing ..."
+  $as_echo "98. update02.at:26: testing ..."
   $at_traceon
 
 
@@ -32581,17 +35128,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_83
-#AT_START_84
-# 84. volume.at:23: volume
+#AT_STOP_98
+#AT_START_99
+# 99. volume.at:23: volume
 at_setup_line='volume.at:23'
 at_desc="volume"
-$at_quiet $as_echo_n " 84: $at_desc                                         "
+$at_quiet $as_echo_n " 99: $at_desc                                         "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "84. volume.at:23: testing ..."
+  $as_echo "99. volume.at:23: testing ..."
   $at_traceon
 
 
@@ -32809,17 +35356,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_84
-#AT_START_85
-# 85. volsize.at:29: volume header size
+#AT_STOP_99
+#AT_START_100
+# 100. volsize.at:29: volume header size
 at_setup_line='volsize.at:29'
 at_desc="volume header size"
-$at_quiet $as_echo_n " 85: $at_desc                             "
+$at_quiet $as_echo_n "100: $at_desc                             "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "85. volsize.at:29: testing ..."
+  $as_echo "100. volsize.at:29: testing ..."
   $at_traceon
 
 
@@ -33328,17 +35875,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_85
-#AT_START_86
-# 86. comprec.at:21: compressed format recognition
+#AT_STOP_100
+#AT_START_101
+# 101. comprec.at:21: compressed format recognition
 at_setup_line='comprec.at:21'
 at_desc="compressed format recognition"
-$at_quiet $as_echo_n " 86: $at_desc                  "
+$at_quiet $as_echo_n "101: $at_desc                  "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "86. comprec.at:21: testing ..."
+  $as_echo "101. comprec.at:21: testing ..."
   $at_traceon
 
 
@@ -33364,7 +35911,7 @@ echo \"separator\"
 tar cfz archive file1
 echo \"separator\"
 mv file1 orig
-tar xfv archive
+tar xfv archive --warning=no-timestamp
 cmp orig file1
 )"
 echo comprec.at:25 >"$at_check_line_file"
@@ -33388,7 +35935,7 @@ echo "separator"
 tar cfz archive file1
 echo "separator"
 mv file1 orig
-tar xfv archive
+tar xfv archive --warning=no-timestamp
 cmp orig file1
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
@@ -33410,7 +35957,7 @@ echo "separator"
 tar cfz archive file1
 echo "separator"
 mv file1 orig
-tar xfv archive
+tar xfv archive --warning=no-timestamp
 cmp orig file1
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
@@ -33445,7 +35992,7 @@ echo \"separator\"
 tar cfz archive file1
 echo \"separator\"
 mv file1 orig
-tar xfv archive
+tar xfv archive --warning=no-timestamp
 cmp orig file1
 )"
 echo comprec.at:25 >"$at_check_line_file"
@@ -33469,7 +36016,7 @@ echo "separator"
 tar cfz archive file1
 echo "separator"
 mv file1 orig
-tar xfv archive
+tar xfv archive --warning=no-timestamp
 cmp orig file1
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
@@ -33491,7 +36038,7 @@ echo "separator"
 tar cfz archive file1
 echo "separator"
 mv file1 orig
-tar xfv archive
+tar xfv archive --warning=no-timestamp
 cmp orig file1
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
@@ -33526,7 +36073,7 @@ echo \"separator\"
 tar cfz archive file1
 echo \"separator\"
 mv file1 orig
-tar xfv archive
+tar xfv archive --warning=no-timestamp
 cmp orig file1
 )"
 echo comprec.at:25 >"$at_check_line_file"
@@ -33550,7 +36097,7 @@ echo "separator"
 tar cfz archive file1
 echo "separator"
 mv file1 orig
-tar xfv archive
+tar xfv archive --warning=no-timestamp
 cmp orig file1
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
@@ -33572,7 +36119,7 @@ echo "separator"
 tar cfz archive file1
 echo "separator"
 mv file1 orig
-tar xfv archive
+tar xfv archive --warning=no-timestamp
 cmp orig file1
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
@@ -33607,7 +36154,7 @@ echo \"separator\"
 tar cfz archive file1
 echo \"separator\"
 mv file1 orig
-tar xfv archive
+tar xfv archive --warning=no-timestamp
 cmp orig file1
 )"
 echo comprec.at:25 >"$at_check_line_file"
@@ -33631,7 +36178,7 @@ echo "separator"
 tar cfz archive file1
 echo "separator"
 mv file1 orig
-tar xfv archive
+tar xfv archive --warning=no-timestamp
 cmp orig file1
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
@@ -33653,7 +36200,7 @@ echo "separator"
 tar cfz archive file1
 echo "separator"
 mv file1 orig
-tar xfv archive
+tar xfv archive --warning=no-timestamp
 cmp orig file1
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
@@ -33688,7 +36235,7 @@ echo \"separator\"
 tar cfz archive file1
 echo \"separator\"
 mv file1 orig
-tar xfv archive
+tar xfv archive --warning=no-timestamp
 cmp orig file1
 )"
 echo comprec.at:25 >"$at_check_line_file"
@@ -33712,7 +36259,7 @@ echo "separator"
 tar cfz archive file1
 echo "separator"
 mv file1 orig
-tar xfv archive
+tar xfv archive --warning=no-timestamp
 cmp orig file1
 ) ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
@@ -33734,7 +36281,7 @@ echo "separator"
 tar cfz archive file1
 echo "separator"
 mv file1 orig
-tar xfv archive
+tar xfv archive --warning=no-timestamp
 cmp orig file1
 ) ) >"$at_stdout" 2>"$at_stderr"
 fi
@@ -33758,17 +36305,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_86
-#AT_START_87
-# 87. shortfile.at:26: short input files
+#AT_STOP_101
+#AT_START_102
+# 102. shortfile.at:26: short input files
 at_setup_line='shortfile.at:26'
 at_desc="short input files"
-$at_quiet $as_echo_n " 87: $at_desc                              "
+$at_quiet $as_echo_n "102: $at_desc                              "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "87. shortfile.at:26: testing ..."
+  $as_echo "102. shortfile.at:26: testing ..."
   $at_traceon
 
 
@@ -33838,17 +36385,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_87
-#AT_START_88
-# 88. shortupd.at:29: updating short archives
+#AT_STOP_102
+#AT_START_103
+# 103. shortupd.at:29: updating short archives
 at_setup_line='shortupd.at:29'
 at_desc="updating short archives"
-$at_quiet $as_echo_n " 88: $at_desc                        "
+$at_quiet $as_echo_n "103: $at_desc                        "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "88. shortupd.at:29: testing ..."
+  $as_echo "103. shortupd.at:29: testing ..."
   $at_traceon
 
 
@@ -34127,17 +36674,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_88
-#AT_START_89
-# 89. truncate.at:29: truncate
+#AT_STOP_103
+#AT_START_104
+# 104. truncate.at:29: truncate
 at_setup_line='truncate.at:29'
 at_desc="truncate"
-$at_quiet $as_echo_n " 89: $at_desc                                       "
+$at_quiet $as_echo_n "104: $at_desc                                       "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "89. truncate.at:29: testing ..."
+  $as_echo "104. truncate.at:29: testing ..."
   $at_traceon
 
 
@@ -34541,17 +37088,17 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_89
-#AT_START_90
-# 90. grow.at:24: grow
+#AT_STOP_104
+#AT_START_105
+# 105. grow.at:24: grow
 at_setup_line='grow.at:24'
 at_desc="grow"
-$at_quiet $as_echo_n " 90: $at_desc                                           "
+$at_quiet $as_echo_n "105: $at_desc                                           "
 at_xfail=no
       test -f $XFAILFILE && at_xfail=yes
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "90. grow.at:24: testing ..."
+  $as_echo "105. grow.at:24: testing ..."
   $at_traceon
 
 
@@ -34870,16 +37417,16 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_90
-#AT_START_91
-# 91. remfiles01.at:28: remove-files with compression
+#AT_STOP_105
+#AT_START_106
+# 106. remfiles01.at:28: remove-files with compression
 at_setup_line='remfiles01.at:28'
 at_desc="remove-files with compression"
-$at_quiet $as_echo_n " 91: $at_desc                  "
+$at_quiet $as_echo_n "106: $at_desc                  "
 at_xfail=no
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "91. remfiles01.at:28: testing ..."
+  $as_echo "106. remfiles01.at:28: testing ..."
   $at_traceon
 
 
@@ -34888,6 +37435,14 @@ unset TAR_OPTIONS
 { $at_traceoff
 $as_echo "$at_srcdir/remfiles01.at:32:
 
+echo "test" > $$
+chmod 0 $$
+cat $$ > /dev/null 2>&1
+result=$?
+rm -f $$
+test $result -eq 0 && exit 77
+
+
 cat /dev/null | gzip - > /dev/null 2>&1 || exit 77
 
 
@@ -34912,7 +37467,9 @@ EC=\$?
 sed -n '/(child)/p' err >&2
 rm err
 find . | sort
-exit \$EC
+# Gzip exit code is propagated to the shell. Usually it is
+# 141.  We convert all non-zero exits to 2 to make it predictable.
+test \$EC && exit 2
 "
 echo remfiles01.at:32 >"$at_check_line_file"
 
@@ -34920,6 +37477,14 @@ if { echo 'Not enabling shell tracing (command contains an embedded newline)'
    false; }; then
   ( $at_traceon;
 
+echo "test" > $$
+chmod 0 $$
+cat $$ > /dev/null 2>&1
+result=$?
+rm -f $$
+test $result -eq 0 && exit 77
+
+
 cat /dev/null | gzip - > /dev/null 2>&1 || exit 77
 
 
@@ -34944,12 +37509,22 @@ EC=$?
 sed -n '/(child)/p' err >&2
 rm err
 find . | sort
-exit $EC
+# Gzip exit code is propagated to the shell. Usually it is
+# 141.  We convert all non-zero exits to 2 to make it predictable.
+test $EC && exit 2
  ) >"$at_stdout" 2>"$at_stder1"
   at_func_filter_trace $?
 else
   ( :;
 
+echo "test" > $$
+chmod 0 $$
+cat $$ > /dev/null 2>&1
+result=$?
+rm -f $$
+test $result -eq 0 && exit 77
+
+
 cat /dev/null | gzip - > /dev/null 2>&1 || exit 77
 
 
@@ -34974,7 +37549,9 @@ EC=$?
 sed -n '/(child)/p' err >&2
 rm err
 find . | sort
-exit $EC
+# Gzip exit code is propagated to the shell. Usually it is
+# 141.  We convert all non-zero exits to 2 to make it predictable.
+test $EC && exit 2
  ) >"$at_stdout" 2>"$at_stderr"
 fi
 at_status=$?
@@ -34999,16 +37576,16 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_91
-#AT_START_92
-# 92. remfiles02.at:28: remove-files with compression: grand-child
+#AT_STOP_106
+#AT_START_107
+# 107. remfiles02.at:28: remove-files with compression: grand-child
 at_setup_line='remfiles02.at:28'
 at_desc="remove-files with compression: grand-child"
-$at_quiet $as_echo_n " 92: $at_desc     "
+$at_quiet $as_echo_n "107: $at_desc     "
 at_xfail=no
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "92. remfiles02.at:28: testing ..."
+  $as_echo "107. remfiles02.at:28: testing ..."
   $at_traceon
 
 
@@ -35107,16 +37684,144 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_92
-#AT_START_93
-# 93. gtarfail.at:21: gtarfail
+#AT_STOP_107
+#AT_START_108
+# 108. remfiles03.at:28: remove-files with symbolic links
+at_setup_line='remfiles03.at:28'
+at_desc="remove-files with symbolic links"
+$at_quiet $as_echo_n "108: $at_desc               "
+at_xfail=no
+echo "#                             -*- compilation -*-" >> "$at_group_log"
+(
+  $as_echo "108. remfiles03.at:28: testing ..."
+  $at_traceon
+
+
+
+{ $at_traceoff
+$as_echo "$at_srcdir/remfiles03.at:31:
+mkdir a
+mkdir a/b
+ln -s b a/c || exit 77
+tar --remove-files -cf a.tar a
+genfile --stat a
+"
+echo remfiles03.at:31 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+mkdir a
+mkdir a/b
+ln -s b a/c || exit 77
+tar --remove-files -cf a.tar a
+genfile --stat a
+ ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+mkdir a
+mkdir a/b
+ln -s b a/c || exit 77
+tar --remove-files -cf a.tar a
+genfile --stat a
+ ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+echo >>"$at_stderr"; $as_echo "genfile: stat(a) failed: No such file or directory
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+at_func_diff_devnull "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/remfiles03.at:31"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+
+  $at_traceoff
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 | eval $at_tee_pipe
+at_status=`cat "$at_status_file"`
+#AT_STOP_108
+#AT_START_109
+# 109. sigpipe.at:19: sigpipe handling
+at_setup_line='sigpipe.at:19'
+at_desc="sigpipe handling"
+$at_quiet $as_echo_n "109: $at_desc                               "
+at_xfail=no
+echo "#                             -*- compilation -*-" >> "$at_group_log"
+(
+  $as_echo "109. sigpipe.at:19: testing ..."
+  $at_traceon
+
+
+
+# Description: Tar 1.23 ignored sigpipe which lead to spurious "write
+# error" diagnostics when piping output to another programs.
+# Reported-by: "Dmitry V. Levin" <ldv@altlinux.org>
+# References: http://lists.gnu.org/archive/html/bug-tar/2010-03/msg00039.html
+#             <20100319184141.GC30047@wo.int.altlinux.org>
+
+{ $at_traceoff
+$as_echo "$at_srcdir/sigpipe.at:28:
+genfile --length 2048 --file first
+genfile --length 2048 --file second
+genfile --length 2049 --file third
+
+tar cf archive first second third
+
+tar tf archive | :
+"
+echo sigpipe.at:28 >"$at_check_line_file"
+
+if { echo 'Not enabling shell tracing (command contains an embedded newline)'
+   false; }; then
+  ( $at_traceon;
+genfile --length 2048 --file first
+genfile --length 2048 --file second
+genfile --length 2049 --file third
+
+tar cf archive first second third
+
+tar tf archive | :
+ ) >"$at_stdout" 2>"$at_stder1"
+  at_func_filter_trace $?
+else
+  ( :;
+genfile --length 2048 --file first
+genfile --length 2048 --file second
+genfile --length 2049 --file third
+
+tar cf archive first second third
+
+tar tf archive | :
+ ) >"$at_stdout" 2>"$at_stderr"
+fi
+at_status=$?
+at_failed=false
+at_func_diff_devnull "$at_stderr" || at_failed=:
+at_func_diff_devnull "$at_stdout" || at_failed=:
+at_func_check_status 0 $at_status "$at_srcdir/sigpipe.at:28"
+
+$at_failed && at_func_log_failure
+$at_traceon; }
+
+
+  $at_traceoff
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 | eval $at_tee_pipe
+at_status=`cat "$at_status_file"`
+#AT_STOP_109
+#AT_START_110
+# 110. gtarfail.at:21: gtarfail
 at_setup_line='gtarfail.at:21'
 at_desc="gtarfail"
-$at_quiet $as_echo_n " 93: $at_desc                                       "
+$at_quiet $as_echo_n "110: $at_desc                                       "
 at_xfail=no
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "93. gtarfail.at:21: testing ..."
+  $as_echo "110. gtarfail.at:21: testing ..."
   $at_traceon
 
 
@@ -35176,16 +37881,16 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_93
-#AT_START_94
-# 94. gtarfail2.at:21: gtarfail2
+#AT_STOP_110
+#AT_START_111
+# 111. gtarfail2.at:21: gtarfail2
 at_setup_line='gtarfail2.at:21'
 at_desc="gtarfail2"
-$at_quiet $as_echo_n " 94: $at_desc                                      "
+$at_quiet $as_echo_n "111: $at_desc                                      "
 at_xfail=no
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "94. gtarfail2.at:21: testing ..."
+  $as_echo "111. gtarfail2.at:21: testing ..."
   $at_traceon
 
 
@@ -35246,16 +37951,16 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_94
-#AT_START_95
-# 95. multi-fail.at:21: multi-fail
+#AT_STOP_111
+#AT_START_112
+# 112. multi-fail.at:21: multi-fail
 at_setup_line='multi-fail.at:21'
 at_desc="multi-fail"
-$at_quiet $as_echo_n " 95: $at_desc                                     "
+$at_quiet $as_echo_n "112: $at_desc                                     "
 at_xfail=no
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "95. multi-fail.at:21: testing ..."
+  $as_echo "112. multi-fail.at:21: testing ..."
   $at_traceon
 
 
@@ -35376,16 +38081,16 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_95
-#AT_START_96
-# 96. ustar-big-2g.at:21: ustar-big-2g
+#AT_STOP_112
+#AT_START_113
+# 113. ustar-big-2g.at:21: ustar-big-2g
 at_setup_line='ustar-big-2g.at:21'
 at_desc="ustar-big-2g"
-$at_quiet $as_echo_n " 96: $at_desc                                   "
+$at_quiet $as_echo_n "113: $at_desc                                   "
 at_xfail=no
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "96. ustar-big-2g.at:21: testing ..."
+  $as_echo "113. ustar-big-2g.at:21: testing ..."
   $at_traceon
 
 
@@ -35463,16 +38168,16 @@ done
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_96
-#AT_START_97
-# 97. ustar-big-8g.at:21: ustar-big-8g
+#AT_STOP_113
+#AT_START_114
+# 114. ustar-big-8g.at:21: ustar-big-8g
 at_setup_line='ustar-big-8g.at:21'
 at_desc="ustar-big-8g"
-$at_quiet $as_echo_n " 97: $at_desc                                   "
+$at_quiet $as_echo_n "114: $at_desc                                   "
 at_xfail=no
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "97. ustar-big-8g.at:21: testing ..."
+  $as_echo "114. ustar-big-8g.at:21: testing ..."
   $at_traceon
 
 
@@ -35550,16 +38255,16 @@ done
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_97
-#AT_START_98
-# 98. pax-big-10g.at:21: pax-big-10g
+#AT_STOP_114
+#AT_START_115
+# 115. pax-big-10g.at:21: pax-big-10g
 at_setup_line='pax-big-10g.at:21'
 at_desc="pax-big-10g"
-$at_quiet $as_echo_n " 98: $at_desc                                    "
+$at_quiet $as_echo_n "115: $at_desc                                    "
 at_xfail=no
 echo "#                             -*- compilation -*-" >> "$at_group_log"
 (
-  $as_echo "98. pax-big-10g.at:21: testing ..."
+  $as_echo "115. pax-big-10g.at:21: testing ..."
   $at_traceon
 
 
@@ -35637,4 +38342,4 @@ done
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 | eval $at_tee_pipe
 at_status=`cat "$at_status_file"`
-#AT_STOP_98
+#AT_STOP_115