#
# localdeliver: generate rules for special local delivery (R8 only)
#

REVISION_ID='@(#)localdeliver	3.14 (motonori/WIDE) 10 Apr 1997'

#|# separator to manage plussed users
#|#PLUSSED_SEPARATOR='+'
#|##PLUSSED_SEPARATOR='='
#|# list of special plussed users
#|##PLUSSED_USERS=/etc/plussed.users
#|##PLUSSED_USERS='puser1 puser2 puser3'
#|##PLUSSED_USERS='all'
#|# shift token from domain part to local part
#|##PLUSSED_ADDRS=/etc/plussed.addrs
#|##PLUSSED_ADDRS='host1.domain host2.domain host3.domain'
#|# matching style for token shift (exact/lower)
#|#PLUSSED_ADDRS_MATCH=exact
#|# order of user name and option for token shift (normal/reverse)
#|#PLUSSED_ORDER='normal'

if [ "$PLUSSED_USERS" != "" -o "$PLUSSED_ADDRS" != "" ]
then

	if [ "$REVISION_ID_LIST" ]
	then
		REVISION_ID_LIST="$REVISION_ID_LIST\\
# $REVISION_ID"
	else
		REVISION_ID_LIST="# $REVISION_ID"
	fi

	: ${PLUSSED_SEPARATOR='+'}

	if [ "$PLUSSED_USERS" = "" ]
	then
		PLUSSED_USERS=all
	fi

	if [ "$PLUSSED_USERS" != all ]
	then

		# allocate class character
		_ALLOC_MODE=normal
		_ALLOC_TYPE=class
		_ALLOC_DIR=down
		_ALLOC_PREF=
		_ALLOC_USAGE='plussed users [localdeliver]'
		. $MASTERDIR/$CHARALLOC
		_PU_CHAR=$_ALLOC_CHAR

	fi

#	if [ "$CF_FORMAT" != V1 -a "$CF_FORMAT" != NMTC ]
#	then
#
#S0PLUSSEDLOCAL='# delivery with host information\
#R$+'"$PLUSSED_SEPARATOR"'$+			$#local$@$2$:$1\
#R$+'"$PLUSSED_SEPARATOR"'			$#local$@unknown$:$1'
#
#	fi

	if [ "$_PU_CHAR" ]
	then

		case "$PLUSSED_USERS" in
		/*|-*)	# file definition

HDRPLUSSEDUSERS="# plussed users\\
F$_PU_CHAR$PLUSSED_USERS" ;;

		*)	# definition in .cf

HDRPLUSSEDUSERS="# plussed users\\
C$_PU_CHAR $PLUSSED_USERS" ;;

		esac

S5PLUSSEDRULE='# special delivery rules for plussed local names\
R$='$_PU_CHAR$PLUSSED_SEPARATOR'			$#local$@+null$:$1\
R$='$_PU_CHAR$PLUSSED_SEPARATOR'*			$#local$@$&h$:$1\
R$='$_PU_CHAR$PLUSSED_SEPARATOR'$+			$#local$@+$2$:$1+*'

	else

S5PLUSSEDRULE='# special delivery rules for plussed local names\
R$+'$PLUSSED_SEPARATOR'			$#local$@+null$:$1\
R$+'$PLUSSED_SEPARATOR'*			$#local$@$&h$:$1\
R$+'$PLUSSED_SEPARATOR'$+			$#local$@+$2$:$1+*'

	fi

	if [ "$PLUSSED_ADDRS" ]
	then

		# allocate class character
		_ALLOC_MODE=normal
		_ALLOC_TYPE=class
		_ALLOC_DIR=down
		_ALLOC_PREF=
		_ALLOC_USAGE='plussed addresses [localdeliver]'
		. $MASTERDIR/$CHARALLOC
		_PA_CHAR=$_ALLOC_CHAR

		case "$PLUSSED_ADDRS" in

		/*|-*)	# file definition

HDRPLUSSEDADDRS="# plussed addresses\\
F$_PA_CHAR$PLUSSED_ADDRS" ;;

		*)	# definition in .cf

HDRPLUSSEDADDRS="# plussed addresses\\
C$_PA_CHAR $PLUSSED_ADDRS" ;;

		esac

		: ${PLUSSED_ADDRS_MATCH=exact}
		if [ "$PLUSSED_ADDRS_MATCH" = exact ]
		then

S0PLUSSEDRULE='# special rewrite rules for plussed addresses\
R$+<@$='$_PA_CHAR'>			$:$>93 $1<@$2>'

		else

S0PLUSSEDRULE='# special rewrite rules for plussed addresses\
R$+<@$-.$='$_PA_CHAR'>			$:$>93 $1<@$2.$3>'

		fi

		: ${PLUSSED_ORDER=normal}
		if [ "$PLUSSED_ORDER" = normal ]
		then

PLUSSEDRULEBODY='\
# special rewrite rules for plussed addresses\
S93\
R$+<@$-.$*>				$:$1'$PLUSSED_SEPARATOR'$2<@$3>'

		else

PLUSSEDRULEBODY='\
# special rewrite rules for plussed addresses\
S93\
R$+<@$-.$*>				$:$2'$PLUSSED_SEPARATOR'$1<@$3>'

		fi

	fi

fi
