#!/bin/bash # Copyright 1999-2007 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Id$ 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