#
# uucp: generate UUCP delivering rules
#

REVISION_ID='@(#)uucp	3.20 (motonori/WIDE) 3/9/94'

#|# UUCP connection (yes/no)
#|#UUCP_GW=no
#|# my UUCP node name (defined automatically with R8) <Dk>
#|##UUCP_HOST_NAME='my-uucp-host-name'
#|# UUCP neighbors
#|##UUCP_NEIGHBORS=/etc/uucp.neighbors
#|##UUCP_NEIGHBORS='uugw1 uugw2 uugw3'
#|# taylor's UUCP style sysname aliases				# not for NMTC
#|##SYSNAME_ALIASES=/etc/uucp.neighbor.domain
#|##SYSNAME_ALIASES='uu.domain1 uu.domain2 uu.domain3'
#|# extended UUCP style to domain style route address conversion (yes/no)
#|#EXTENDED_UUCP_ADDR_CONV=no
#|# UUCP relay host name
#|##UUCP_RELAY='uunet.uu.net'
#|# canonicalize to domain-style on unknown uucp hostname with nameserver
#|#CANON_UNKNOWN_UUCP=no
#|
#|#UUCP_MAILER_PATH='/usr/bin/uux'
#|#UUCP_MAILER_FLAG='msDFMu'					# V1
#|#UUCP_MAILER_FLAG='mDFMu'					# V5
#|#UUCP_MAILER_ARGS='uux - -r -gB $h!rmail ($u)'
#|##UUCP_MAILER_MAXLINE=					# V5
#|#UUCP_MAILER_MAXSIZE=100000

: ${UUCP_GW=no}
: ${CANON_UNKNOWN_UUCP=no}

if [ "$UUCP_GW" != no -o "$UUCP_RELAY" != "" -o "$CANON_UNKNOWN_UUCP" != no ]
then

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

	if [ "$UUCP_NEIGHBORS" ]
	then
		# allocate class character
		_ALLOC_MODE=normal
		_ALLOC_TYPE=class
		_ALLOC_DIR=down
		_ALLOC_PREF=U
		_ALLOC_USAGE='uucp neigbor gateways [uucp]'
		. $MASTERDIR/$CHARALLOC
		_NG_CHAR=$_ALLOC_CHAR
	fi
	if [ "$SYSNAME_ALIASES" != "" -a "$CF_FORMAT" = NMTC ]
	then
		SYSNAME_ALIASES=
		echo "uucp: SYSNAME_ALIASES is ignored." 1>&2
	fi
	if [ "$SYSNAME_ALIASES" ]
	then
		# allocate class character
		_ALLOC_MODE=normal
		_ALLOC_TYPE=class
		_ALLOC_DIR=down
		_ALLOC_PREF=T
		_ALLOC_USAGE='uucp neigbor domains [uucp]'
		. $MASTERDIR/$CHARALLOC
		_ND_CHAR=$_ALLOC_CHAR
	fi

	if [ "$UUCP_GW" != no -a "$UUCP_NEIGHBORS" = "" -a "$SYSNAME_ALIASES" = "" -o "$UUCP_RELAY" != "" ]
	then
		if [ "$CANON_UNKNOWN_UUCP" != no ]
		then
			echo "uucp: CANON_UNKNOWN_UUCP should be no, turned off." 1>&2
			CANON_UNKNOWN_UUCP=no
		fi
	fi

#	<<UUCP domain should be always defined>>
#
#	FAKE_DOMAIN_NAME="UUCP"
#
#	if [ "$FAKEDOMAIN" ]
#	then
#
#FAKEDOMAIN="$FAKEDOMAIN\\
#C$_FD_CHAR $FAKE_DOMAIN_NAME"
#
#	else
#
#		FAKEDOMAIN="C$_FD_CHAR $FAKE_DOMAIN_NAME"
#
#	fi

	HDRUUCP=
	HDRUUNAME=
	S0UUCPRULE=

	if [ "$UUCP_GW" = yes ]
	then
		# for host which has UUCP link

		: ${UUCP_MAILER_PATH='/usr/bin/uux'}
		: ${UUCP_MAILER_MAXSIZE=100000}
		: ${UUCP_MAILER_ARGS='uux - -r -gB $h!rmail ($u)'}

		if [ "$CF_FORMAT" = V1 -o "$CF_FORMAT" = NMTC ]
		then
			: ${UUCP_MAILER_FLAG='msDFMu'}
		else
			: ${UUCP_MAILER_FLAG='mDFMu'}
		fi

		case "$UUCP_NEIGHBORS" in
		"")	;;
		/*)     # file definition
			NG_CLASS="F$_NG_CHAR$UUCP_NEIGHBORS" ;;
		*)      # definition in .cf
			exec << EoF
$UUCP_NEIGHBORS
EoF
			NG_CLASS=`sed 's/^/C'$_NG_CHAR' /'` ;;
		esac

		case "$SYSNAME_ALIASES" in
		"")	;;
		/*)     # file definition
			ND_CLASS="F$_ND_CHAR$SYSNAME_ALIASES" ;;
		*)      # definition in .cf
			exec << EoF
$SYSNAME_ALIASES
EoF
			ND_CLASS=`sed 's/^/C'$_ND_CHAR' /'` ;;
		esac

		if [ "$UUCP_HOST_NAME" ]
		then
UUNAMEDEF="Dk$UUCP_HOST_NAME\\
Cw$UUCP_HOST_NAME"
		fi

		: ${UUNAMEDEF='#Dk$w'}

HDRUUNAME="# my UUCP node name\\
$UUNAMEDEF"

		if [ "$NG_CLASS" ]
		then

HDRUUNAME="$HDRUUNAME\\
# UUCP neighbor gateways\\
$NG_CLASS"

		fi

		if [ "$ND_CLASS" ]
		then

HDRUUNAME="$HDRUUNAME\\
# UUCP neighbor domain names (for taylor's UUCP gateway aliasing)\\
$ND_CLASS"

		fi

SENDERUUCPRULE='\
# sender rewriting for uucp mailer\
S12\
\
R<@>			$@<>				do not changhe to NULL\
#R<@>			$n				errors to mailer-daemon\
R$*			$@$>11$1\
\
# sender rewriting for uucp-b mailer\
S13\
\
# handle error address as a special case\
R<@>			$n				errors to mailer-daemon\
\
R$*<@$=w>		$1				strip local name\
R$*<@$-.UUCP>		$2!$1				convert to UUCP format\
R$*<@$+>		$2!$1				convert to UUCP format\
R$+			$:$k!$1				prepend our name'

RECIPIENTUUCPRULE='\
# recipient rewriting\
S23\
\
# do not touch list:; syntax\
R$*:;<@>		$@$1;:\
\
R$*<@$=w>		$1				strip local name\
R$*<@$-.UUCP>		$2!$1				convert to UUCP format\
R$*<@$+>		$2!$1				convert to UUCP format'


UUCP_MAILER_OPTS='S=12, R=21'
UUCPB_MAILER_OPTS='S=13, R=23'
if [ "$CF_FORMAT" != V1 -a "$CF_FORMAT" != NMTC -a "$UUCP_MAILER_MAXLINE" != "" ]
then
	UUCP_MAILER_OPTS="$UUCP_MAILER_OPTS"', L='"$UUCP_MAILER_MAXLINE"
	UUCPB_MAILER_OPTS="$UUCPB_MAILER_OPTS"', L='"$UUCP_MAILER_MAXLINE"
fi
if [ "$UUCP_MAILER_MAXSIZE" ]
then
	UUCP_MAILER_OPTS="$UUCP_MAILER_OPTS"', M='"$UUCP_MAILER_MAXSIZE"
	UUCPB_MAILER_OPTS="$UUCPB_MAILER_OPTS"', M='"$UUCP_MAILER_MAXSIZE"
fi


UUCPMAILER="# uucp mailers\\
Muucp,    P=$UUCP_MAILER_PATH,	F=$UUCP_MAILER_FLAG,	$UUCP_MAILER_OPTS,\\
			A=$UUCP_MAILER_ARGS\\
Muucp-b,  P=$UUCP_MAILER_PATH,	F=$UUCP_MAILER_FLAG,	$UUCPB_MAILER_OPTS,\\
			A=$UUCP_MAILER_ARGS"

DSPTUUCPRULE='R<$->:$*		$#uucp$@$1$:$2			one token: uucp'

S11UUCPRULE='R$+<@$+.UUCP>		$@$2!$1<@$j>			user@host.UUCP'

		if [ "$UUCP_NEIGHBORS" ]
		then

S0UUCPRULE='\
# resolve UUCP traffic\
R<@$='$_NG_CHAR'.UUCP>:$+		$#uucp$@$1$:$2<@$2.UUCP>	@host.UUCP:...\
R$+<@$='$_NG_CHAR'.UUCP>		$#uucp$@$2$:$1<@$2.UUCP>	user@host.UUCP'

		else

S0UUCPRULE='\
# resolve UUCP traffic\
R<@$+.UUCP>:$+		$#uucp$@$1$:$2<@$1.UUCP>	@host.UUCP:...\
R$+<@$+.UUCP>		$#uucp$@$2$:$1<@$2.UUCP>	user@host.UUCP'

		fi

		if [ "$SYSNAME_ALIASES" ]
		then

S0UUCPRULE="$S0UUCPRULE"'\
# for taylor UUCP aliasing\
R<@$*$='$_ND_CHAR'>:$+		$#uucp$@$2$:<@$1$2>:$3		@UUCP.domain:...\
R$+<@$*$='$_ND_CHAR'>		$#uucp$@$3$:$1<@$2$3>		user@UUCP.domain'

		fi

		: ${EXTENDED_UUCP_ADDR_CONV=no}

		if [ "$EXTENDED_UUCP_ADDR_CONV" != no ]
		then

EXTENDEDUUCPCONV='# convert extended uucp-style to domain-style route address\
R$*!$*			$:<!$1!>$2			focus\
R<$*!>$*!$*		<$1!$2!>$3			move gaze right\
R<$*!$-!$*>$*		$:<$1!>$2!$3$4			exclude host address\
R$*<!$*!$*!>$*		$1@$2:<!$3!>$4			conv. all but the last\
R$*<!$*!>$*!$*		$:$1@$2:$3!$4			convert the last\
R$*<!$*!>$*		$:$1$3@$2			convert to user@domain\
R$*<!>$*		$:$1$2				remove <!>\
R@$+:$+			$@$>'"$R_S3TAIL"' <@$1>:$2			handle <route-addr>\
R$+@$+			$@$>'"$R_S3TAIL"' $1<@$2>			focus on domain\
'

		fi

	fi

	if [ "$UUCP_RELAY" ]
	then

		# allocate macro character
		_ALLOC_MODE=normal
		_ALLOC_TYPE=macro
		_ALLOC_DIR=down
		_ALLOC_PREF=U
		_ALLOC_USAGE='uucp relay host [uucp]'
		. $MASTERDIR/$CHARALLOC
		_UG_CHAR=$_ALLOC_CHAR

		MACRO="D$_UG_CHAR$UUCP_RELAY"

HDRUUCP="$HDRUUCP\\
# UUCP relay host\\
$MACRO"

S0UUCPRULE="$S0UUCPRULE"'\
# send to UUCP relay\
R<@$+.UUCP>$*		'"$DISPATCH"' <relay:$'$_UG_CHAR'>:$2<@$1.UUCP>	@host.UUCP:...\
R$*<@$+.UUCP>		'"$DISPATCH"' <relay:$'$_UG_CHAR'>:$1<@$2.UUCP>	user@host.UUCP'

	fi

	if [ "$CANON_UNKNOWN_UUCP" != no ]
	then
		if [ "$CANON_ENVELOPE" = "" ]
		then
		    echo "uucp: no default definition for CANON_ENVELOPE." 1>&2
		fi

UUCPRESRULE='# unknown uucp hostname resolution by nameserver lookup'

		if [ "$UUCP_NEIGHBORS" ]
		then

UUCPRESRULE="$UUCPRESRULE"'\
R$*<@$='$NG_CHAR'.UUCP>$*	$@$1<@$2.UUCP>$3		exit on known hosts'

		fi

UUCPRESRULE="$UUCPRESRULE"'\
R$*<@$-.UUCP>$*		$:$1<@$[$2$].UUCP>$3		nameserver lookup'

		if [ "$CANON_ENVELOPE" = no ]
		then

			if [ "$CF_FORMAT" = V1 -o "$CF_FORMAT" = NMTC ]
			then

UUCPRESRULE="$UUCPRESRULE"'\
R$*<@$-.$+.UUCP>$*	$@$1<@$2.$3>$4			exit if resolved'

			else

UUCPRESRULE="$UUCPRESRULE"'\
R$*<@$-.$+..UUCP>$*	$@$1<@$2.$3>$4			exit if resolved'

			fi

		else

			if [ "$CF_FORMAT" = V1 -o "$CF_FORMAT" = NMTC ]
			then

UUCPRESRULE="$UUCPRESRULE"'\
R$*<@$-.$+.UUCP>$*	$@$1<@$2.$3.>$4			exit if resolved'

			else

UUCPRESRULE="$UUCPRESRULE"'\
R$*<@$-.$+.UUCP>$*	$@$1<@$2.$3>$4			exit if resolved'

			fi

		fi

	fi

fi

