1#!/bin/sh
2set -e
3
4tar=${tar-star}
5if echo "${tar}" | grep / > /dev/null; then
6	if echo "${tar}" | grep '^/' > /dev/null; then
7		:
8	else
9		tar=`pwd`/${tar}
10	fi
11fi
12echo tar installed as "$tar" 1>&2
13
14#
15# This is where GNU tar always fails as GNU tar is unable to hndle renamed
16# directories with incremental restores.
17#
18
19mkdir /tmp/test.$$
20cd /tmp/test.$$
21
22set -x
23
24mkdir test
25mkdir test/dir1
26mkdir test/dir2
27
28echo dir1-file > test/dir1/dir1-file
29echo dir2-file > test/dir2/dir2-file
30
31"$tar" -c -xdev -sparse -acl -link-dirs level=0 \
32	tardumps=/tmp/test.$$/tardumps -wtardumps \
33	f=/tmp/test.$$/full.tar -C /tmp/test.$$/test .
34
35
36rm -rf test/dir2
37mv test/dir1 test/dir2
38
39"$tar" -c -xdev -sparse -acl -link-dirs level=1 \
40	tardumps=/tmp/test.$$/tardumps -wtardumps \
41	f=/tmp/test.$$/incremental.tar -C /tmp/test.$$/test .
42
43mv test orig
44mkdir test
45cd /tmp/test.$$/test
46
47"$tar" -xpU -restore -partial f=/tmp/test.$$/full.tar
48"$tar" -xpU -restore -partial f=/tmp/test.$$/incremental.tar
49
50rm star-symtable
51rm -rf star-tmpdir
52cd /tmp/test.$$/
53diff -r orig test > diff.out
54ret=$?
55
56cd /
57if [ "$ret" = 0 ]; then
58	rm -rf /tmp/test.$$
59fi
60exit $ret
61