set -e
mkdir structure
-touch structure/file
-# FIXME: The sleep is necessary for the second tar to work. Exactly why?
+echo x >structure/file
+
+# On Nextstep (and perhaps other 4.3BSD systems),
+# a newly created file's ctime isn't updated
+# until the next sync or stat operation on the file.
+ls -l structure/file >/dev/null
+
+# If the time of an initial backup and the creation time of a file contained
+# in that backup are the same, the file will be backed up again when an
+# incremental backup is done, because the incremental backup backs up
+# files created `on or after' the initial backup time. Without the sleep
+# command, behaviour of tar becomes variable, depending whether the system
+# clock ticked over to the next second between creating the file and
+# backing it up.
sleep 1
-tar cf archive --listed=list structure
-tar cfv archive --listed=list structure
+
+tar cf archive --format=gnu --listed=list structure
+tar cfv archive --format=gnu --listed=list structure
echo -----
-touch structure/file
-tar cfv archive --listed=list structure
+sleep 1
+echo y >structure/file
+tar cfv archive --format=gnu --listed=list structure
out="\
structure/
done
done >file2
-tar -c --multi-volume --tape-length=10 \
+tar -c --format=gnu --multi-volume --tape-length=10 \
--listed-incremental=t.snar \
-f t1-pipe.tar -f t2-pipe.tar ./file1 ./file2
mkdir extract-dir-pipe
dd bs=4096 count=10 if=t2-pipe.tar |
-PATH=$PATH ${TRUSS} tar -f t1-pipe.tar -f - \
+PATH=$PATH ${TRUSS} tar --format=gnu -f t1-pipe.tar -f - \
-C extract-dir-pipe -x --multi-volume \
--tape-length=10 --read-full-records
. ./preset
. $srcdir/before
-tar cfVT archive label /dev/null || exit 1
+tar -cf archive -V label -T /dev/null --format=gnu || exit 1
tar xfV archive label || exit 1
tar xfV archive 'la?el' || exit 1