#!/bin/bash
# Copyright 1999-2007 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id: doins 9634 2008-03-30 19:51:32Z zmedico $

source "${PORTAGE_BIN_PATH:-/usr/lib/portage/bin}"/isolated-functions.sh

if [ $# -lt 1 ] ; then
	echo "${0##*/}: at least one argument needed" 1>&2
	exit 1
fi

if [[ "$1" == "-r" ]] ; then
	DOINSRECUR=y
	shift
else
	DOINSRECUR=n
fi

if [[ ${INSDESTTREE#${D}} != "${INSDESTTREE}" ]]; then
	vecho "-------------------------------------------------------" 1>&2
	vecho "You should not use \${D} with helpers." 1>&2
	vecho "  --> ${INSDESTTREE}" 1>&2
	vecho "-------------------------------------------------------" 1>&2
	exit 1
fi

[[ ! -d ${D}${INSDESTTREE} ]] && dodir "${INSDESTTREE}"

_doins() {
	local mysrc="$1" mydir="$2" cleanup="" rval

	if [ -L "$mysrc" ] ; then
		cp "$mysrc" "${T}"
		mysrc="${T}/${mysrc##*/}"
		cleanup=${mysrc}
	fi

	install ${INSOPTIONS} "${mysrc}" "${D}${INSDESTTREE}/${mydir}"
	rval=$?
	[[ -n ${cleanup} ]] && rm -f "${cleanup}"
	return $rval
}

_xdoins() {
	while read -d $'\0' x ; do
		_doins "$x" "${x%/*}"
	done
}

success=0

for x in "$@" ; do
	if [ -d "$x" ] ; then
		if [ "${DOINSRECUR}" == "n" ] ; then
			continue
		fi

		while [ "$x" != "${x%/}" ] ; do
			x=${x%/}
		done
		if [ "$x" = "${x%/*}" ] ; then
			pushd "$PWD" >/dev/null
		else
			pushd "${x%/*}" >/dev/null
		fi
		find "${x##*/}" -type d -exec dodir "${INSDESTTREE}/{}" \;
		find "${x##*/}" \( -type f -or -type l \) -print0 | _xdoins
		popd >/dev/null
		((++success))
	else
		_doins "${x}" && ((++success))
	fi
done

[ $success -gt 0 ] && exit 0 || exit 1
