#------------------------------------------------------------------------------
# generate list of error messages
# afb 3/92
#------------------------------------------------------------------------------

	libdirs="$HOME/oberon/lib $HOME/oberon/NeWS/lib"
	syserrors=$HOME/oberon/lib/sun/SysErrors.om
	outfile=errlist.tbl

#------------------------------------------------------------------------------
script1='
BEGIN			{ take_next=0; }
take_next==1    	{ printf "errormsg[ %s ] := %s\n", name, $0;
			  take_next=0;
			}
/errormsg\[ .* \] :=$/ 	{ take_next=1; name=$2; }
/errormsg\[ .* \] := "/	{ print }
'
#------------------------------------------------------------------------------
script2='
take_next==1		{ printf "Assertions.Raise(x, %s proc, %s\n", name, $0
			  take_next=0;
			}
/Assertions.Raise.*,$/	{ take_next=1; name=$2; }
/Assertions.Raise.*"/	{ print }
'
#------------------------------------------------------------------------------

{	files=`find $libdirs . -name '*.od' -print`
	files=`grep -l errorcodes $files`
	for def in $files
	do	modname=`grep DEFINITION $def | sed 's/.*ION \(.*\);.*/\1/'`
		modfile=`echo $def | sed 's/\.od/.om/'`
		sed 's/errormsg\[\(.*\)\] :=/errormsg[ \1 ] :=/' <$modfile |
		awk "$script1" |
		sed 's/^.*errormsg\[ \(.*\) \] :=.*"\(.*\)".*/\1:\2/' |
		while read text
		do	echo "$modname.$text"
		done
	done

	grep 'message\[.*:= "' $syserrors |
	sed 's/^.*message\[\(.*\)\] := "\(.*\)".*/SysErrors.\1:\2/'

	files=`find $libdirs . -name '*.om' -print`
	files=`grep -l Assertions.Raise $files`
	for mod in $files
	do	modname=`grep MODULE $mod | line | sed 's/.*ULE \(.*\);.*/\1/'`
		awk "$script2" <$mod |
		sed 's/^.*Assertions.Raise([^,]*, \([^,]*\),.*"\(.*\)".*/\1:\2/' |
		while read text
		do	echo "$modname.$text"
		done
	done
} |
sort -t: +1f |
uniq |
{	echo '.SH'
	echo 'Index of Error Messages'
	echo .LP
	echo .TS
	echo 'tab(:);'
	echo 'l lf(I).'
	awk -F: '{ printf "%s:%s\n", $2, $1 }'
	echo .TE
} >"$outfile"
