# --------------------------------------------
# Take 1.2 - (C) 2000 Erich Roncarolo 
# Take 1.1 - (C) 2000 Erich Roncarolo 
# Take 1.0 - (C) 2000 Erich Roncarolo
# License: GPL2 (see LICENSE)
# --------------------------------------------

#
# Usage: source Take owner.group destination_dir file [file1 ... ]
# It uses PACK_WD and PATH to search the file
# It must be sourced (not executed!) by a Buildfile
#

#
# Some variables
#

CP_OPT="-ui"

# debug informations
# 0 - Nothing
# 1 - Warning
# 2 - Test
# 3 - All
DEBUG=1

# It's a check ?
if [ "$1" = "-check" ] ; then
	DEBUG=2
	shift
elif [ "$1" = "-debug" ] ; then
	DEBUG=3
	shift
elif [ "$1" = "-force" ] ; then
	CP_OPT="-i"
	shift
fi

# Functions

function br_log { echo "$@" >> $RLOG ; }
function br_echo { echo "$@" | tee -a $RLOG ; }
function br_warn  { if [ $DEBUG -ge 1 ] ; then echo "$@" | tee -a $RLOG ; else echo "$@" >> $RLOG ; fi ; }
function br_check { if [ $DEBUG -ge 2 ] ; then echo "$@" | tee -a $RLOG ; else echo "$@" >> $RLOG ; fi ; }
function br_debug { if [ $DEBUG -ge 3 ] ; then echo "$@" | tee -a $RLOG ; else echo "$@" >> $RLOG ; fi ; }

#Owner
OWNER=$1
shift

DEST=$1
if [ ! -d "$DEST" ] ; then
	br_warn "# --- Error: $DEST not a directory ---"
	exit 1
fi

shift

while [ "$1" ] ; do
	br_debug ; br_debug "# Looking for command $1"
	if [ -e $PACK_WD/$1 ] ; then
		SRC=$PACK_WD/$1
	else
		SRC=$(PATH=$PACK_WD:$PATH type -p $1)
		if [ -z "$SRC" ] ; then
			test -e "/${DEST}/$1" && SRC="/${DEST}/$1"
		fi
	fi
	br_debug "# SRC=$SRC"
	if [ "$SRC" ] ; then
		BSRC=$(basename $SRC)
		br_debug "# BSRC=$BSRC"
		DSRC=$DEST/$BSRC
		br_debug "# DSRC=$DSRC"
		br_check "cp $CP_OPT $SRC $DEST"
		if [ $DEBUG -lt 2 ] ; then
			cp $CP_OPT $SRC $DEST < /dev/tty
			chown $OWNER $DSRC
		fi
		test $DEBUG -ge 2 && DDSRC=$SRC
		if [ -x "$DSRC" -o "$DDSRC" ] ; then
			br_check "test -n \$(file $DSRC | grep text) || strip $DSRC"
			br_check "ldd $DSRC >> ${TMPDIR}/$BSRC"
			if [ $DEBUG -lt 2 ] ; then
				test -n "$(file $DSRC | grep text)" || strip $DSRC
				###echo $DSRC >> ${TMPFILE} ##deprecated
				ldd $DSRC >> ${TMPDIR}/$BSRC
			fi
		fi
	else
		br_warn "# --- Warning: $1 not found ---"
	fi
	shift
done
br_log
