File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / rsync / testsuite / chown.test
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Fri Feb 17 15:09:30 2012 UTC (12 years, 4 months ago) by misho
Branches: rsync, MAIN
CVS tags: rsync3_0_9p0, RSYNC3_0_9, HEAD
rsync

#! /bin/sh

# Copyright (C) 2002 by Martin Pool <mbp@samba.org>

# This program is distributable under the terms of the GNU GPL (see
# COPYING).

# Test that when rsync is running as root and has -a it correctly sets
# the ownership of the destination.

# We don't know what users will be present on this system, so we just
# use random numeric uids and gids.

. "$suitedir/rsync.fns"

case $0 in
*fake*)
    $RSYNC --version | grep ", xattrs" >/dev/null || test_skipped "Rsync needs xattrs for fake device tests"
    RSYNC="$RSYNC --fake-super"
    TLS_ARGS="$TLS_ARGS --fake-super"
    case "`xattr 2>&1`" in
    *--list:*)
	chown() {
	    own=$1
	    shift
	    xattr -s 'rsync.%stat' "100644 0,0 $own" "${@}"
	}
	;;
    *)
	chown() {
	    own=$1
	    shift
	    setfattr -n 'user.rsync.%stat' -v "100644 0,0 $own" "${@}"
	}
	;;
    esac
    ;;
*)
    RSYNC="$RSYNC --super"
    case `get_testuid` in
    '') ;; # If "id" failed, try to continue...
    0)  ;;
    *)  if [ -f /usr/bin/fakeroot ]; then
	    echo "Let's try re-running the script under fakeroot..."
	    exec /usr/bin/fakeroot /bin/sh "$0"
	fi
	;;
    esac
    ;;
esac

# Build some hardlinks

mkdir "$fromdir"
name1="$fromdir/name1"
name2="$fromdir/name2"
echo "This is the file" > "$name1"
echo "This is the other file" > "$name2"

chown 5000:5002 "$name1" || test_skipped "Can't chown (probably need root)"
chown 5001:5003 "$name2" || test_skipped "Can't chown (probably need root)"

cd "$fromdir/.."
checkit "$RSYNC -aHvv from/ to/" "$fromdir" "$todir"

# The script would have aborted on error, so getting here means we've won.
exit 0

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>