V8/usr/src/cmd/calendar/calendar

PATH=/bin:/usr/bin
T=/tmp/cal$$
trap "rm -f ${T}*;exit" 0 1 2 13 15
for i
do	case $i in
	[0-9]| [0-9][0-9])
		ND=$i ;;
	-)
		if test -r /usr/lib/calendar
		then	EXTRA=${T}7
			sed '/^[^ ]*!/!s/^/!/' /usr/lib/calendar >$EXTRA
		fi
		ALL=all ;;
	esac
done
case $ALL in
all)
	;;
*)
	case $HOME in
	"")
		C=calendar ;;
	*)
		C=$HOME/calendar
	esac
esac

/usr/lib/calendar1 $C | sort -u - $EXTRA >${T}1
: T1 = system!calpath uid, for every calendar to be consulted

sed 's/!.*//' ${T}1 | sort -u >${T}2
: T2 = machname, for every remote machine to consult

for i in ''  `cat ${T}2`
do
	sed "s.^$i!..
	     /!/d
	     s/ .*//
	" ${T}1 | sort -u |
	case $i in
	"")	/usr/lib/calendar3 $ND ;;
	*)	rx $i /usr/lib/calendar3 $ND
	esac |
	sed "s.^.$i!."
done | sort -u >${T}3
: T3 = system!calpath:message, for every calendar entry found

case $C in
"")
	;;
*)
	sed 's/^[^ :]*://' ${T}3|sort +0M +1n
	exit
esac

sed 's/:/ /' ${T}3 |
join - ${T}1 >${T}4
: T4 = system!calpath message uid

sed 's/[^ ]* \(.*\) \(.*\)/\2 \1/' ${T}4 | sort -o ${T}5
: T5 = uid message

echo >>${T}5
sed '
	:a
	/^mail \([^ ]*\)\( .*\n\)\1 \([^\n]*\)$/{
		s//mail \1\2\3/
		N
		ba
	}
	/^mail/!{
		s/\([^ ]*\) /mail \1 <<"!"\
/
		N
		ba
	}
	:x
	/[^\n]*\n/{
		P
		s///
		bx
	}
	s/^/!\
/
	P
	s/[^\n]*\n//
	ba
' ${T}5 >${T}6
: T6 = "mail" uid "<<! ..."

sh ${T}6