Annotation of embedaddon/rsync/testsuite/chown.test, revision 1.1.1.2
1.1 misho 1: #! /bin/sh
2:
3: # Copyright (C) 2002 by Martin Pool <mbp@samba.org>
4:
5: # This program is distributable under the terms of the GNU GPL (see
6: # COPYING).
7:
8: # Test that when rsync is running as root and has -a it correctly sets
9: # the ownership of the destination.
10:
11: # We don't know what users will be present on this system, so we just
12: # use random numeric uids and gids.
13:
14: . "$suitedir/rsync.fns"
15:
16: case $0 in
17: *fake*)
18: $RSYNC --version | grep ", xattrs" >/dev/null || test_skipped "Rsync needs xattrs for fake device tests"
19: RSYNC="$RSYNC --fake-super"
20: TLS_ARGS="$TLS_ARGS --fake-super"
1.1.1.2 ! misho 21: case "$HOST_OS" in
! 22: darwin*)
1.1 misho 23: chown() {
24: own=$1
25: shift
26: xattr -s 'rsync.%stat' "100644 0,0 $own" "${@}"
27: }
28: ;;
1.1.1.2 ! misho 29: solaris*)
! 30: chown() {
! 31: own=$1
! 32: shift
! 33: for fn in "${@}"; do
! 34: runat "$fn" "$SHELL_PATH" <<EOF
! 35: echo "100644 0,0 $own" > rsync.%stat
! 36: EOF
! 37: done
! 38: }
! 39: ;;
1.1 misho 40: *)
41: chown() {
42: own=$1
43: shift
44: setfattr -n 'user.rsync.%stat' -v "100644 0,0 $own" "${@}"
45: }
46: ;;
47: esac
48: ;;
49: *)
50: RSYNC="$RSYNC --super"
51: case `get_testuid` in
52: '') ;; # If "id" failed, try to continue...
53: 0) ;;
1.1.1.2 ! misho 54: *) if [ -e "$FAKEROOT_PATH" ]; then
1.1 misho 55: echo "Let's try re-running the script under fakeroot..."
1.1.1.2 ! misho 56: exec "$FAKEROOT_PATH" "$SHELL_PATH" "$0"
1.1 misho 57: fi
58: ;;
59: esac
60: ;;
61: esac
62:
63: # Build some hardlinks
64:
65: mkdir "$fromdir"
66: name1="$fromdir/name1"
67: name2="$fromdir/name2"
68: echo "This is the file" > "$name1"
69: echo "This is the other file" > "$name2"
70:
71: chown 5000:5002 "$name1" || test_skipped "Can't chown (probably need root)"
72: chown 5001:5003 "$name2" || test_skipped "Can't chown (probably need root)"
73:
74: cd "$fromdir/.."
75: checkit "$RSYNC -aHvv from/ to/" "$fromdir" "$todir"
76:
77: # The script would have aborted on error, so getting here means we've won.
78: exit 0
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>