#!/bin/sh

set -e

SIZES=false
FLAGS=""
if [ "$1" = "-s" ] ; then
	SIZES=true
	FLAGS="-s"
	shift
fi 

SRC="$1"	# pointer to source tree
SPATH="$2"	# offset into tree


if [ "$SPATH" = "/" ] ; then
	SPATH=""
	DESC=""
else
	DESC="`basename $SPATH`: "
fi

if [ -f $SRC/$SPATH/.purpose ] ; then
	DESC="$DESC`cat $SRC/$SPATH/.purpose`"
else
	DESC="$DESC""unknown: missing .purpose"
fi

DESC="$INDENT`printf %-48s \"$DESC\"` -- "

CINDENT="$INDENT  -- "
INDENT="$INDENT      "
export INDENT

MSUPPORT=`echo $SRC/$SPATH/m-*`
FCOUNT=$SRC/bin/fcount

if $SIZES; then
	if [ -n "$MSUPPORT" -a "$MSUPPORT" != "$SRC/$SPATH/m-*" ] ; then
		$FCOUNT "$DESC" `find $SRC/$SPATH $MSUPPORT -maxdepth 1 \
					-name "*" -type f -print`
		DESC="$CINDENT`printf %-16s mi:` "
		$FCOUNT "$DESC" `find $SRC/$SPATH -maxdepth 1 \
					-name "*" -type f -print`
		for i in $MSUPPORT; do
			DESC="$CINDENT`printf %-16s \`basename $i\`:` "
			$FCOUNT "$DESC" \
				`find $i -maxdepth 1 -name "*" -type f -print`
		done
	else
		$FCOUNT "$DESC" `find $SRC/$SPATH -maxdepth 1 -name "*" -type f -print`
	fi
else
	if [ -n "$MSUPPORT" -a "$MSUPPORT" != "$SRC/$SPATH/m-*" ] ; then
		echo -n " ("
		FIRST=true
		for i in $MSUPPORT; do
			if $FIRST; then
				FIRST=false
			else
				echo -n ", "
			fi	
			echo -n `basename $i`
		done
		echo -n ")"
	fi
	echo
fi


SUBDIR=false
for i in $SRC/$SPATH/[^m]* $SRC/$SPATH/m[^-]*; do
	if [ -d $i ] ; then
		$0 $FLAGS $SRC $SPATH/`basename $i`
		SUBDIR=true
	fi
done

if $SIZES && $SUBDIR; then
	$FCOUNT "$CINDENT""total: " `find $SRC/$SPATH -name "*" -type f -print` 
fi

