--- doins.orig 2003-07-30 19:40:14.000000000 -0400 +++ doins 2003-07-30 20:05:28.000000000 -0400 @@ -7,16 +7,29 @@ echo "${0}: at least one argument needed" exit 1 fi -if [ ! -d "${D}${INSDESTTREE}" ] ; then - install -d "${D}${INSDESTTREE}" +dodir "${INSDESTTREE}" + +[ -z "${INSDEPTH}" ] && INSDEPTH=0 +if [ ${INSDEPTH} -gt 30 ] ; then + echo "${0}: i went 30 directories down, time to abort!" + exit 1 fi for x in "$@" ; do if [ -L "$x" ] ; then cp "$x" "${T}" - mysrc="${T}"/`/usr/bin/basename "${x}"` + mysrc="${T}/$(/usr/bin/basename "${x}")" elif [ -d "$x" ] ; then - echo "doins: warning, skipping directory ${x}" + mydir="${INSDESTTREE}/$(basename "${x}")" + # maybe utilize nullglob instead of `ls` ? + if [ -z "$(ls "${x}"/* 2>/dev/null)" ] ; then + dodir "${mydir}" + else + env \ + INSDESTTREE="${mydir}" \ + INSDEPTH=$((INSDEPTH+1)) \ + doins "${x}"/* + fi continue else mysrc="${x}"