#ident "@(#)erredit	1.4	12/22/89"

##################################################################
# 
#   SpiderX25/TCP sysadm
# 
#   Copyright 1989  Spider Systems Limited
#
#   ERREDIT
# 
#   errno editing program
#
##################################################################

#
#	 /usr/projects/tcp/PBRAIN/SCCS/pbrainB/dev/src/include/sys/0/s.erredit
#	@(#)erredit	1.4
#
#	Last delta created	10:13:54 3/28/89
#	This file extracted	11:32:04 12/22/89
#
#	Modifications:
#
#		GSS	 14 Mar 89	New file

USAGE="usage: $0 [-c|-d] [-s start] [-b before] [-e end] [-a after]\n	errno-file [add-file]"
before=0
after=0
while [ $# -gt 0 ]
do
	case $1 in
	-c)	com=check ;;
	-d)	com=delete ;;
	-s)	start="$2"; shift ;;
	-s)	start=`expr "$1" : '-s\(.*\)'` ;;
	-b)	before="$2"; shift ;;
	-b)	before=`expr "$1" : '-b\(.*\)'` ;;
	-a)	after="$2"; shift ;;
	-a)	after=`expr "$1" : '-a\(.*\)'` ;;
	-e)	end="$2"; shift ;;
	-e)	end=`expr "$1" : '-e\(.*\)'` ;;
	--)	shift ; break ;;
	-*)	echo "$USAGE" >&2
		exit 2 ;;
	*)	break ;;
	esac
	shift
done

if [ $# -ne 2 -a $# -ne 1 ]
then
	echo "$USAGE" >&2
	exit 2
fi

errnofile=$1
addfile=$2

if [ ! -r "$errnofile" ]
then
	echo "$0: cannot read '$errnofile'" >&2
	exit 1
fi

if [ "$com" ]
then
	if [ "$start" = "" ]
	then
		if [ "$addfile" = "" ]
		then
			echo "$USAGE" >&2
			exit 2
		fi
		if [ ! -r "$addfile" ]
		then
			echo "$0: cannot read '$addfile'" >&2
			exit 1
		fi
		set -- `awk '
		/^#define/ {
			print $2, NR-1
			exit
		}
		' $addfile`
		if [ $# -ne 2 ]
		then 
			echo "$0: '$addfile' does not contain #defines" >&2
			exit 1
		fi
		start=$1
		before=$2
	fi
	if [ "$end" = "" ]
	then
		if [ "$addfile" = "" ]
		then
			echo "$USAGE" >&2
			exit 2
		fi
		set -- `awk '
		/^#define/ {
			ldef=$2; ll=NR
		}
		END { print ldef, NR - ll }
		' $addfile`
		if [ $# -ne 2 ]
		then 
			echo "$0: '$addfile' does not contain #defines" >&2
			exit 1
		fi
		finish=$1
		after=$2
	fi

	if [ "$com" = check ]
	then
		check=`awk '
		/^#define[	 ]*'$start'/, /^#define[	 ]*'$finish'/ {
			print "true"
			exit
		}' $errnofile`
		if [ "$check" ]
		then
			exit 0
		else
			exit 1
		fi
	else
		ed - -s $errnofile <<!! 2>/dev/null >/dev/null
/^#define[	 ]*$start/-$before,/^#define[	 ]*$finish/+${after}d
w
q
!!
	fi
else
	if [ "$addfile" = "" ]
	then
		echo "$USAGE" >&2
		exit 2
	fi
	addno=`awk '
	/^#define/ {
		if ($3 ~ /^[0-9]*$/)
		{
			print $3
			exit
		}
	}
	' $addfile`
	if [ "$addno" = "" ]
	then
		addno=10000		# put at end
	fi

	lineno=`awk '
	/^#define/ {
		if ($3 ~ /^[0-9]*$/)
		{
			if ($3 > '$addno') exit
			lineno = NR
		}
	}
	END {print lineno}
	' $errnofile`
	if [ "$lineno" = "" ]
	then
		lineno=1
	fi

	ed - -s $errnofile <<!! 2>/dev/null >/dev/null
${lineno}r $addfile
w
q
!!
fi
exit 0
