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

    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"
   21:     case "`xattr 2>&1`" in
   22:     *--list:*)
   23: 	chown() {
   24: 	    own=$1
   25: 	    shift
   26: 	    xattr -s 'rsync.%stat' "100644 0,0 $own" "${@}"
   27: 	}
   28: 	;;
   29:     *)
   30: 	chown() {
   31: 	    own=$1
   32: 	    shift
   33: 	    setfattr -n 'user.rsync.%stat' -v "100644 0,0 $own" "${@}"
   34: 	}
   35: 	;;
   36:     esac
   37:     ;;
   38: *)
   39:     RSYNC="$RSYNC --super"
   40:     case `get_testuid` in
   41:     '') ;; # If "id" failed, try to continue...
   42:     0)  ;;
   43:     *)  if [ -f /usr/bin/fakeroot ]; then
   44: 	    echo "Let's try re-running the script under fakeroot..."
   45: 	    exec /usr/bin/fakeroot /bin/sh "$0"
   46: 	fi
   47: 	;;
   48:     esac
   49:     ;;
   50: esac
   51: 
   52: # Build some hardlinks
   53: 
   54: mkdir "$fromdir"
   55: name1="$fromdir/name1"
   56: name2="$fromdir/name2"
   57: echo "This is the file" > "$name1"
   58: echo "This is the other file" > "$name2"
   59: 
   60: chown 5000:5002 "$name1" || test_skipped "Can't chown (probably need root)"
   61: chown 5001:5003 "$name2" || test_skipped "Can't chown (probably need root)"
   62: 
   63: cd "$fromdir/.."
   64: checkit "$RSYNC -aHvv from/ to/" "$fromdir" "$todir"
   65: 
   66: # The script would have aborted on error, so getting here means we've won.
   67: exit 0

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