[comp.sources.unix] v10i051: Ease translator repost, Part01/04

rs@uunet.UU.NET (Rich Salz) (07/10/87)

Submitted-by: Wombat <rsk@j.cc.purdue.edu>
Posting-Number: Volume 10, Issue 51
Archive-name: ease/Part01

[  I FTP'd a copy of this from Purdue, packed it up, and am posting
   it -- the one from last time I hopelessly mangled.  --r$  ]

#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 1 (of 4)."
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'MANIFEST' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'MANIFEST'\"
else
echo shar: Extracting \"'MANIFEST'\" \(2025 characters\)
sed "s/^X//" >'MANIFEST' <<'END_OF_FILE'
X   File Name		Archive #	Description
X-----------------------------------------------------------
X MANIFEST                  1	
X config-files              1	
X config-files/FINIS        1	
X config-files/FINIS/Makefile 1	
X config-files/FINIS/base.cpp 3	
X config-files/FINIS/berkhosts.cpp 1	
X config-files/FINIS/berkm.cpp 1	
X config-files/FINIS/compat.cpp 1	
X config-files/FINIS/localhosts.cpp 1	
X config-files/FINIS/localm.cpp 1	
X config-files/FINIS/pclm.cpp 1	
X config-files/FINIS/phonenethosts.cpp 1	
X config-files/FINIS/pucc-h.mc 1	
X config-files/FINIS/pucc-i.mc 1	
X config-files/FINIS/pucc-j.mc 2	
X config-files/FINIS/puccbase.cpp 1	
X config-files/FINIS/version.cpp 1	
X config-files/FINIS/zerobase.cpp 1	
X config-files/KEY          1	
X config-files/README       1	
X config-files/pucc-k.mc    1	
X config-files/pucc-n.mc    1	
X config-files/pucc-s.mc    1	
X config-files/puccbase.cpp 1	
X config-files/stat-l.mc    1	
X config-files/tcpm.cpp     1	
X doc                       1	
X doc/Makefile              1	
X doc/ap1                   1	
X doc/ap2                   1	
X doc/ap3                   1	
X doc/cover                 1	
X doc/ease.paper            4	
X maketd                    1	
X maketd/Makefile           1	
X maketd/Manual             1	
X maketd/Manual/maketd.1l   2	
X maketd/Manual/nshpopen.3l 2	
X maketd/Manual/srtunq.3l   2	
X maketd/README             1	
X maketd/abrv.c             3	
X maketd/abrv.h             1	
X maketd/breakargs.c        2	
X maketd/maketd.c           4	
X maketd/maketd.h           1	
X maketd/maketd.sh          2	
X maketd/misc.c             2	
X maketd/nshpopen.c         1	
X maketd/nshpopen.h         1	
X maketd/srtunq.c           2	
X maketd/srtunq.h           1	
X src                       1	
X src/Makefile              1	
X src/emitcf.c              3	
X src/errors.c              2	
X src/idman.c               2	
X src/lexan.l               2	
X src/main.c                2	
X src/parser.y              3	
X src/strops.c              3	
X src/symtab.c              2	
X src/symtab.h              1	
END_OF_FILE
if test 2025 -ne `wc -c <'MANIFEST'`; then
    echo shar: \"'MANIFEST'\" unpacked with wrong size!
fi
# end of 'MANIFEST'
fi
if test -f 'config-files/FINIS/Makefile' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'config-files/FINIS/Makefile'\"
else
echo shar: Extracting \"'config-files/FINIS/Makefile'\" \(1283 characters\)
sed "s/^X//" >'config-files/FINIS/Makefile' <<'END_OF_FILE'
X######################################################################
X#
X#	Makefile for Sendmail PUCC configuration files
X#
X#	$Id: Makefile,v 1.4 86/04/04 14:16:17 kcs Exp $
X#
X######################################################################
X
X
XPUCCSRCS=pucc-h.mc \
X	pucc-i.mc \
X	pucc-j.mc \
X	pucc-k.mc \
X	stat-l.mc \
X	pucc-n.mc \
X	pucc-s.mc
X
XGENSRCS=base.cpp \
X	berkhosts.cpp \
X	berkm.cpp \
X	compat.cpp \
X	localhosts.cpp \
X	localm.cpp \
X	pclm.cpp \
X	puccbase.cpp \
X	tcpm.cpp \
X	version.cpp \
X	zerobase.cpp
X
XSRCS=	$(GENSRCS) $(PUCCSRCS)
X
XPUCCALL=pucc-h.cf \
X	pucc-i.cf \
X	pucc-j.cf \
X	pucc-k.cf \
X	stat-l.cf \
X	pucc-n.cf \
X	pucc-s.cf
X
XALL=	$(PUCCALL)
X
X
X.SUFFIXES: .mc .cf
X
X.mc.cf:
X	/lib/cpp $*.mc > $*.cf
X
Xall: $(ALL)
X
X############################
X#   special dependencies   #
X############################
X
X# pessimize -- basic dependencies
X$(ALL): base.cpp berkhosts.cpp localm.cpp localhosts.cpp pclm.cpp puccbase.cpp \
X	version.cpp zerobase.cpp
X
X# hosts on berknet
Xpucc-h.cf: berkm.cpp
X
X# hosts on the arpanet
Xpucc-j.cf: tcpm.cpp
X
X# hosts on csnet
Xpucc-j.cf: phonenethosts.cpp
X
X# mailers requiring backwards compatibility
Xberkm.cpp tcpm.cpp: compat.cpp
X
X#####################
X#   administrivia   #
X#####################
X
Xsources: $(SRCS)
X
Xclean:
X	rm -f $(ALL) a.out core errs
END_OF_FILE
if test 1283 -ne `wc -c <'config-files/FINIS/Makefile'`; then
    echo shar: \"'config-files/FINIS/Makefile'\" unpacked with wrong size!
fi
# end of 'config-files/FINIS/Makefile'
fi
if test -f 'config-files/FINIS/berkhosts.cpp' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'config-files/FINIS/berkhosts.cpp'\"
else
echo shar: Extracting \"'config-files/FINIS/berkhosts.cpp'\" \(576 characters\)
sed "s/^X//" >'config-files/FINIS/berkhosts.cpp' <<'END_OF_FILE'
X/***********************************************************
X ***********************************************************
X ****
X ****	Berknet Host List
X ****
X ****	$Id: berkhosts.cpp,v 1.4 85/07/21 22:15:14 acu Exp Locker: acu $
X ****
X ***********************************************************
X ***********************************************************/
X
Xclass
X	berkhosts = { C, pucc-c, puccc, 
X		      D, pucc-d, puccd,
X		      E, pucc-e, pucce,
X		      X, asterix, library, libr,
X		      W, physics, pur-phy, phy-a, 
X		      physics-galileo, purdue-galileo, galileo };
X
END_OF_FILE
if test 576 -ne `wc -c <'config-files/FINIS/berkhosts.cpp'`; then
    echo shar: \"'config-files/FINIS/berkhosts.cpp'\" unpacked with wrong size!
fi
# end of 'config-files/FINIS/berkhosts.cpp'
fi
if test -f 'config-files/FINIS/berkm.cpp' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'config-files/FINIS/berkm.cpp'\"
else
echo shar: Extracting \"'config-files/FINIS/berkm.cpp'\" \(1211 characters\)
sed "s/^X//" >'config-files/FINIS/berkm.cpp' <<'END_OF_FILE'
X/***********************************************************
X ***********************************************************
X ****
X ****	Berknet Mailer specification
X ****
X ****	$Id: berkm.cpp,v 1.4 85/07/10 22:32:07 acu Exp $
X ****
X ***********************************************************
X ***********************************************************/
X
X#ifdef cppCOMPAT
X#include "compat.cpp"
X#endif
X
Xmailer
X	berk {
X		Path	= "/usr/net/bin/sendberkmail",
X		Flags	= { f_ffrom, f_strip, f_date, f_from, f_mesg, f_addrw };
X		Sender  = BERKSEND_RW;
X		Recipient = BERKREC_RW;
X		Argv	= "sendberkmail -m ${m_rhost} -h ${m_hops} -t ${m_ruser}";
X		Maxsize	= "25000"
X	};
X
Xruleset BERKSEND_RW {
X
X	if ( path )
X		next ( OLDSTYLE_RW ( $1 ) );		/* convert to old style */
X	if ( hostname:usr )
X		return ( $1:$2);			/* old berknet as is */
X
X	if ( path < @path > )
X		return ( $1<@$2> );			/* don't modify arpanet */
X
X	if ( hostname!usr )
X		return ( $1!$2 );			/* don't modify uucp */
X
X	if ( < @path > )
X		return ( <@$1> );			/* don't modify <routeaddr> */
X
X	if ( path )
X		return ( $m_shostname:$1 );		/* make others relative */
X
X}
X
X
Xruleset BERKREC_RW {
X
X	if ( path )
X		next ( OLDSTYLE_RW ( $1 ) );		/* convert to old style */
X
X}
END_OF_FILE
if test 1211 -ne `wc -c <'config-files/FINIS/berkm.cpp'`; then
    echo shar: \"'config-files/FINIS/berkm.cpp'\" unpacked with wrong size!
fi
# end of 'config-files/FINIS/berkm.cpp'
fi
if test -f 'config-files/FINIS/compat.cpp' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'config-files/FINIS/compat.cpp'\"
else
echo shar: Extracting \"'config-files/FINIS/compat.cpp'\" \(843 characters\)
sed "s/^X//" >'config-files/FINIS/compat.cpp' <<'END_OF_FILE'
X/***********************************************************
X ***********************************************************
X ****
X ****	Provide Backward Compatibility
X ****
X ****	$Id: compat.cpp,v 1.4 85/11/24 22:46:32 acu Exp $
X ****
X ***********************************************************
X ***********************************************************/
X
X#define cppCOMPAT 4.2
X
Xfield
X	berkhost: match (1) in berkhosts;
X
X/***************************************************
X * General code to convert back to old style names *
X ***************************************************/
X
Xruleset OLDSTYLE_RW {
X
X	if ( usr < @berkhost > )
X		return ( $2:$1 );			/* u@bhost => h:u */
X
X	if ( usr < @hostname ".UUCP" > )
X		retry ( $2!$1 );			/* u@host.UUCP => host!u */
X
X	if ( usr @ hostpath ".ARPA" )
X		retry ( $1@$2 );			/* u@host.ARPA => u@host */
X
X}
END_OF_FILE
if test 843 -ne `wc -c <'config-files/FINIS/compat.cpp'`; then
    echo shar: \"'config-files/FINIS/compat.cpp'\" unpacked with wrong size!
fi
# end of 'config-files/FINIS/compat.cpp'
fi
if test -f 'config-files/FINIS/localhosts.cpp' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'config-files/FINIS/localhosts.cpp'\"
else
echo shar: Extracting \"'config-files/FINIS/localhosts.cpp'\" \(1906 characters\)
sed "s/^X//" >'config-files/FINIS/localhosts.cpp' <<'END_OF_FILE'
X/***********************************************************
X ***********************************************************
X **** 
X ****	Campus Host List
X ****
X ****	$Id: localhosts.cpp,v 1.3 85/06/26 16:10:15 acu Exp $
X ****
X ***********************************************************
X ***********************************************************/
X
Xclass
X	campushosts = { pucc-c, c, puccc,
X			pucc-d, d, puccd,
X			pucc-e, e, pucce,
X			pucc-h, h, pucch,
X			pucc-i, i, pucci,
X			pucc-j, j, puccj, pucc,
X			pucc-k, k, pucck,
X			pucc-n, n, puccn,
X			stat-l, l, statl, stat,
X			purdue-arthur, arthur, purdue, purdue-cs,
X			purdue-merlin, merlin,
X			purdue-mordred, mordred, cs,
X			purdue-bmec, purdue-ecn-bmec, ecn-bmec, bmec,
X			purdue-chem, purchem, chemistry, purdue-chemistry,
X			purdue-dipl, ecn-dipl, dipl,
X			purdue-ecn-ca, ecn-ca, ca, ca-en,
X			purdue-ecn-cb, ecn-cb, cb, cb-en,
X			purdue-ecn-ec, ecn-ec, ec, ec-en,
X			purdue-ecn-ed, ecn-ed, ed, ed-en,
X			purdue-ecn-ee, ecn-ee, ee, ee-en, pur-ee, ecn, purdue-ecn,
X			purdue-ecn-ef, ecn-ef, ef, ef-en,
X			purdue-ecn-ef, ecn-ef, ef, ef-rsch,
X			purdue-ecn-eg, ecn-eg, eg, eg-en,
X			purdue-ecn-eh, ecn-eh, eh, eh-en, ecn-test,
X			purdue-ecn-ei, ecn-ei, ei, ei-en,
X			purdue-ecn-ej, ecn-ej, ej, ej-en,
X			purdue-ecn-ek, ecn-ek, ek, ek-en,
X			purdue-ecn-ga, ecn-ga, ga, ga-en,
X			purdue-ecn-gb, ecn-gb, gb, gb-en,
X			purdue-ecn-ma, ecn-ma, ma, ma-en,
X			purdue-ecn-mb, ecn-mb, mb, mb-en,
X			purdue-ecn-md, ecn-md, md, md-en,
X			purdue-ecn-pb, ecn-pb, pb, pb-en, cidmac,
X			purdue-ecn-pc, ecn-pc, pc, pc-en,
X			purdue-galileo, galileo, physics-galileo,
X			purdue-malcolm, ecn-malcolm, malcolm,
X			purdue-newton, newton, physics-newton,
X			purdue-trillian, ecn-trillian, trillian,
X			purdue-vlsi, puvlsi, vlsi,
X			purdue-zaphod, ecn-zaphod, zaphod };
X
X	/* non-standard names for CS hosts (translated to CS) */
X
X	othercs = { cs-arthur, cs-mordred, cs-merlin };
END_OF_FILE
if test 1906 -ne `wc -c <'config-files/FINIS/localhosts.cpp'`; then
    echo shar: \"'config-files/FINIS/localhosts.cpp'\" unpacked with wrong size!
fi
# end of 'config-files/FINIS/localhosts.cpp'
fi
if test -f 'config-files/FINIS/localm.cpp' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'config-files/FINIS/localm.cpp'\"
else
echo shar: Extracting \"'config-files/FINIS/localm.cpp'\" \(893 characters\)
sed "s/^X//" >'config-files/FINIS/localm.cpp' <<'END_OF_FILE'
X/***********************************************************
X ***********************************************************
X ****
X ****	Local and Program Mailer specification
X ****
X ****	$Id: localm.cpp,v 1.4 85/07/10 22:38:09 acu Exp $
X ****
X ***********************************************************
X ***********************************************************/
X
Xmailer
X	local {
X		Path 	= "/bin/mail",
X		Flags	= { f_rfrom, f_locm, f_strip, f_date, f_from,
X			    f_mesg, f_mult, f_noufrom },
X		Sender	= MAGIC_RW,
X		Recipient = UNIMPLEMENTED,
X		Argv	= "mail -d ${m_ruser}",
X		Maxsize	= "200000"
X	};
X
X	prog {
X		Path	= "/bin/sh",
X		Flags	= { f_locm, f_strip, f_date, f_from, f_mesg, f_upperu },
X		Sender	= MAGIC_RW,
X		Recipient = UNIMPLEMENTED,
X		Argv	= "sh -c ${m_ruser}",
X		Maxsize	= "200000"
X	};
X
X
Xruleset MAGIC_RW {
X
X	if ( @ )
X		return ( "MAILER-DAEMON" );	/* errors to mailer-daemon */
X
X}
END_OF_FILE
if test 893 -ne `wc -c <'config-files/FINIS/localm.cpp'`; then
    echo shar: \"'config-files/FINIS/localm.cpp'\" unpacked with wrong size!
fi
# end of 'config-files/FINIS/localm.cpp'
fi
if test -f 'config-files/FINIS/pclm.cpp' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'config-files/FINIS/pclm.cpp'\"
else
echo shar: Extracting \"'config-files/FINIS/pclm.cpp'\" \(995 characters\)
sed "s/^X//" >'config-files/FINIS/pclm.cpp' <<'END_OF_FILE'
X/****************************************************************************
X ****************************************************************************
X ****
X ****	PCL11 Mailer specification
X ****
X ****	Messages processed by this configuration are assumed to remain
X ****	in the same domain.  Hence, they may not necessarily correspond
X ****	to RFC822 in all details.
X ****
X ****	$Id: pclm.cpp,v 1.4 85/06/26 15:10:46 acu Exp $
X ****
X ****************************************************************************
X ****************************************************************************/
X
Xmailer
X	pcl {
X		Path	= "[IPC]",
X		Flags	= { f_mult, f_date, f_from, f_mesg, f_upperu, 
X			    f_addrw, f_dot, f_smtp },
X		Sender	= HOSTNAME_RW,
X		Recipient = HOSTNAME_RW,
X		Argv	= "IPC ${m_rhost}",
X		Maxsize = "100000"
X	};
X
Xruleset HOSTNAME_RW {
X
X	if ( anypath < @path > anypath )
X		return ( $1<@$2>$3 );			/* already ok */
X
X	if ( path )
X		return ( $1<@$m_sitename );		/* tack on our hostname */
X
X}
END_OF_FILE
if test 995 -ne `wc -c <'config-files/FINIS/pclm.cpp'`; then
    echo shar: \"'config-files/FINIS/pclm.cpp'\" unpacked with wrong size!
fi
# end of 'config-files/FINIS/pclm.cpp'
fi
if test -f 'config-files/FINIS/phonenethosts.cpp' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'config-files/FINIS/phonenethosts.cpp'\"
else
echo shar: Extracting \"'config-files/FINIS/phonenethosts.cpp'\" \(1481 characters\)
sed "s/^X//" >'config-files/FINIS/phonenethosts.cpp' <<'END_OF_FILE'
X/*******************************************************
X *******************************************************
X ****
X ****	Phonenet Host List
X ****
X ****	Mail to these sites should be routed
X ****	through csnet-relay.
X ****
X ****	$Id: phonenethosts.cpp,v 1.3 85/07/10 22:37:28 acu Exp $
X ****
X *******************************************************
X *******************************************************/
X
Xclass
X	phonehosts = { albany, alcoa-atc, alcoa-sei, arizona, asu, bostonu,
X		       boulder, brandeis, brown, brown-cogsci, btl, buffalo,
X		       canisius, carleton, case, clemson, colgate, colostate,
X		       ct, dartmouth, depaul, digital, duke, emory, france,
X		       gatech, georgetown, germany, gmr, gte-labs, houston,
X		       hplabs, ibm-sj, icase, indiana, iowa-state, israel, jhu,
X		       kaist, kansas-state, kent, lsu, mcnc, mtu, ncar, nmsu,
X		       nmt, northeastern, nsf-cs, nwu, ohio-state, okstate,
X		       oregon-grad, oregon-state, penn-state, pitt, portland,
X		       princeton, rit, rpi, scarolina, smu, src, suny-bing,
X		       suny-sb, syr, tamu, tektronix, ti-csl, ti-eg, toronto,
X		       tufts, tulane, uab, ubc, ucd, ucf, uchicago, uconn, 
X		       ucsb, ucsc, udenver, ufl, uhcl, uiowa, ukans, ulowell,
X		       umass, umass-boston, umich, umiss, umn-cs, unc, unh,
X		       unl, unlv, uno, uoregon, upenn, usc-cse, usl, utd,
X		       utenn, uvm, uwm, vanderbilt, virginia, vpi, wang-inst,
X		       waterloo, williams, wfu, wright, wsu };
END_OF_FILE
if test 1481 -ne `wc -c <'config-files/FINIS/phonenethosts.cpp'`; then
    echo shar: \"'config-files/FINIS/phonenethosts.cpp'\" unpacked with wrong size!
fi
# end of 'config-files/FINIS/phonenethosts.cpp'
fi
if test -f 'config-files/FINIS/pucc-h.mc' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'config-files/FINIS/pucc-h.mc'\"
else
echo shar: Extracting \"'config-files/FINIS/pucc-h.mc'\" \(2042 characters\)
sed "s/^X//" >'config-files/FINIS/pucc-h.mc' <<'END_OF_FILE'
X/***********************************************************
X ***********************************************************
X ****
X ****	SENDMAIL CONFIGURATION FILE
X ****
X ****	For PUCC-H
X ****
X ****	$Id: pucc-h.mc,v 1.2 86/04/04 14:18:03 kcs Exp $
X ****
X ***********************************************************
X ***********************************************************/
X
X
X/***********************************************************
X **	local info
X ***********************************************************/
X
Xmacro
X	m_sitename = "h.cc.purdue.edu";		/* internet hostname */
X	berkname   = "h.cc.purdue.edu";		/* berknet hostname  */
X
Xclass
X	m_sitename = { "h.cc.purdue.edu", pucc-h, pucch, h };
X
X
X#include "puccbase.cpp"
X
X
Xoptions
X	/***
X	o_slog = "1";		/* override logging level in base.cpp */
X
X
X#include "zerobase.cpp"
X
X
X/***********************************************
X **  Machine dependent part of ruleset zero   **
X ***********************************************/
X
X	/* resolve berknet names */
X
X	if ( < @berkhost > : path )
X		resolve ( mailer ( berk ),
X			  host ( $1 ),
X			  user ( $2 ) );		/* @berkhost: ... */
X
X	if ( usr < @berkhost > )
X		resolve ( mailer ( berk ),
X			  host ( $2 ),
X			  user ( $1 ) );		/* user@berknethost */
X
X	/* we don't do uucp */
X
X	if ( anypath < @anypath ".UUCP" > anypath )
X		resolve ( mailer ( error ),
X			  user ( "Non-Local UUCP Mail Unavailable" ) );
X
X	/* resolve campus names (actually, all non-local names) */
X
X	if ( anypath < @anypath hostname > anypath )
X		resolve ( mailer ( pcl ),
X			  host ( $3 ),
X			  user ( $1<@$2$3>$4 ) );	/* user@campushost */
X
X	if ( path )
X		resolve ( mailer ( local ),
X			  user ( $1 ) );		/* everything else */
X
X
X/**************************************
X **  Host dependent address cleanup  **
X **************************************/
X
X
Xruleset HOSTDEP_RW {
X
X	if ( anypath uucphost!usr@path )
X		retry ( $3@$4 );			/* drop uucp forward */
X
X	if ( anypath campushost ".ARPA" anypath )
X		retry ( $1$2$3 );			/* drop ".ARPA" */
X
X}
X
X#include "pclm.cpp"
X#include "berkm.cpp"
END_OF_FILE
if test 2042 -ne `wc -c <'config-files/FINIS/pucc-h.mc'`; then
    echo shar: \"'config-files/FINIS/pucc-h.mc'\" unpacked with wrong size!
fi
# end of 'config-files/FINIS/pucc-h.mc'
fi
if test -f 'config-files/FINIS/pucc-i.mc' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'config-files/FINIS/pucc-i.mc'\"
else
echo shar: Extracting \"'config-files/FINIS/pucc-i.mc'\" \(2059 characters\)
sed "s/^X//" >'config-files/FINIS/pucc-i.mc' <<'END_OF_FILE'
X/***********************************************************
X ***********************************************************
X ****
X ****	SENDMAIL CONFIGURATION FILE
X ****
X ****	For PUCC-I
X ****
X ****	$Id: pucc-i.mc,v 1.2 86/04/04 14:19:21 kcs Exp $
X ****
X ***********************************************************
X ***********************************************************/
X
X
X
X/***********************************************************
X **	local info
X ***********************************************************/
X
Xmacro
X	m_sitename = "i.cc.purdue.edu"; 	/* internet hostname */
X
Xclass
X	m_sitename = { "i.cc.purdue.edu", pucc-i, pucci, i };
X
X#include "puccbase.cpp"
X
Xoptions
X	/***
X	o_slog = "1"; 		/* override logging level in base.cpp */
X
X#include "zerobase.cpp"
X
X/**********************************************
X **  Machine dependent part of ruleset zero  **
X **********************************************/
X
X	/* send berknet names through relay */
X
X	if ( < @berkhost > : path )
X		resolve ( mailer ( pcl ),
X		  	  host ( $relay-host ),
X		  	  user ( $2<@$1> ) );		/* @berkhost: ... */
X
X	if ( anypath < @anypath berkhost > anypath )
X		resolve ( mailer ( pcl ),
X			  host ( $relay-host ),
X			  user ( $1<@$2$3>$4 ) );	/* user@berknethost */
X
X	/* we don't do uucp */
X
X	if ( anypath < @anypath ".UUCP" > anypath )
X		resolve ( mailer ( error ),
X			  user ( "Non-Local UUCP Mail Unavailable" ) );
X
X	/* resolve campus names (actually, all non-local names) */
X
X	if ( anypath < @anypath hostname > anypath )
X		resolve ( mailer ( pcl ),
X			  host ( $3 ),
X			  user ( $1<@$2$3>$4 ) );	/* user@campushost */
X
X	/* remaining names must be local */
X
X	if ( path )
X		resolve ( mailer ( local ),
X			  user ( $1 ) );		/* everything else */
X
X
X/**************************************
X **  Host dependent address cleanup  **
X **************************************/
X
Xruleset HOSTDEP_RW {
X
X	if ( anypath uucphost!usr@path )
X		retry ( $3@$4 );			/* drop uucp forward */
X
X	if ( anypath campushost ".ARPA" anypath )
X		retry ( $1$2$3 );			/* drop ".ARPA" */
X
X}
X
X#include "pclm.cpp"
END_OF_FILE
if test 2059 -ne `wc -c <'config-files/FINIS/pucc-i.mc'`; then
    echo shar: \"'config-files/FINIS/pucc-i.mc'\" unpacked with wrong size!
fi
# end of 'config-files/FINIS/pucc-i.mc'
fi
if test -f 'config-files/FINIS/puccbase.cpp' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'config-files/FINIS/puccbase.cpp'\"
else
echo shar: Extracting \"'config-files/FINIS/puccbase.cpp'\" \(1219 characters\)
sed "s/^X//" >'config-files/FINIS/puccbase.cpp' <<'END_OF_FILE'
X
X/************************************************
X ************************************************
X ****
X ****	General configuration information
X ****
X ****	$Id: puccbase.cpp,v 1.4 86/04/04 14:25:46 kcs Exp $
X ****
X ************************************************
X ************************************************/
X
X/********************
X *  General Macros  *
X ********************/
X
Xmacro
X	localname = "PURDUE.EDU"; 		/* local domain names */
X	relay_host = "pucc-h";			/* berknet relay host */
X	m_oname = "${m_sitename}";		/* my official hostname (sort of */
X
Xclass
X	localname = { "PURDUE.EDU", PURDUE, CC, Purdue-CS, CS, ECN };
X	topdomain = { LOCAL, ARPA, UUCP, BITNET, CSNET };	/* known top-level domains */
X
X#include "localhosts.cpp"
X#include "berkhosts.cpp"
X#include "base.cpp"
X
X/*********************
X *  Rewriting rules  *
X *********************/
X
X/*** special local conversions ***/
XS6
X# R$*<@$*$=D>$*		$1<@$2LOCAL>$4			convert local domain
X# R$*<@$*$=D.ARPA>$*	$1<@$2LOCAL>$4
XR$*<@$+.$=T.$=T>$*	$1<@$2.$3>$5			delete dup top level
XR$*<@$*$=S.UUCP>$*	$1<@$2$3>$4			local UUCP direct
XR$*<@$*$=Z.UUCP>$*	$1<@$2$3>$4			local UUCP direct
XR$*<@$=Y$*>$*		$1<@cs$3>$4			cs-host => cs kludge
X
X
X#include "localm.cpp"
END_OF_FILE
if test 1219 -ne `wc -c <'config-files/FINIS/puccbase.cpp'`; then
    echo shar: \"'config-files/FINIS/puccbase.cpp'\" unpacked with wrong size!
fi
# end of 'config-files/FINIS/puccbase.cpp'
fi
if test -f 'config-files/FINIS/version.cpp' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'config-files/FINIS/version.cpp'\"
else
echo shar: Extracting \"'config-files/FINIS/version.cpp'\" \(98 characters\)
sed "s/^X//" >'config-files/FINIS/version.cpp' <<'END_OF_FILE'
X
X/* $Id: version.cpp,v 1.3 85/05/04 17:01:03 acu Exp Locker: acu $ */
X
Xmacro
X	berkhosts = "4.41";
END_OF_FILE
if test 98 -ne `wc -c <'config-files/FINIS/version.cpp'`; then
    echo shar: \"'config-files/FINIS/version.cpp'\" unpacked with wrong size!
fi
# end of 'config-files/FINIS/version.cpp'
fi
if test -f 'config-files/FINIS/zerobase.cpp' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'config-files/FINIS/zerobase.cpp'\"
else
echo shar: Extracting \"'config-files/FINIS/zerobase.cpp'\" \(2139 characters\)
sed "s/^X//" >'config-files/FINIS/zerobase.cpp' <<'END_OF_FILE'
X
X/***********************************************************
X ***********************************************************
X ****
X ****	RULESET ZERO PREAMBLE
X ****
X ****	The beginning of ruleset zero is constant through all
X ****	configurations.
X ****
X ****	$Id: zerobase.cpp,v 1.4 86/04/04 14:31:36 kcs Exp $
X ****
X ***********************************************************
X ***********************************************************/
X
Xruleset BASE_RW {
X
X	/* first make canonical */
X
X	if ( anypath < anypath > anypath )
X		retry ( $1$2$3);			/* defocus */
X	if ( path )
X		next ( NAME_CANON ( $1 ) );		/* make canonical */
X
X	/* handle special cases..... */
X
X	if ( @ )
X		resolve ( mailer (local),
X			  user ("MAILER-DAEMON") );	/* handle <> form */
X	if ( anypath < @[path] > anypath )
X		resolve ( mailer (tcp),
X			  host (hostnum ($2)),
X			  user ("$1@[$2]$3") );		/* numeric internet spec */
X
X	/* arrange for local names to be fully qualified */
X
X	/***
X	if ( anypath < anypath campushost > anypath )
X		retry ( $1<$2$3".LOCAL">$4 );		/* user@campushost */
X	/***
X	if ( anypath < anypath berkhost > anypath )
X		retry ( $1<$2$3".LOCAL">$4 );		/* user@berkhost */
X	/***
X	if ( anypath < path ".ARPA.LOCAL" > anypath )
X		retry ( $1<$2".ARPA">$3 );		/* because ARPA is a host */
X
X	/* delete local domain info -- this is a (temporary?) kludge */
X
X	if ( anypath < anypath "." $localname > anypath )
X		retry ( $1<$2>$3 );			/* strip local domain */
X	if ( anypath < anypath "." localdomain > anypath )
X		retry ( $1<$2>$4 );			/* strip local subdomains */
X
X	/* now delete (more) local info */
X
X	if ( anypath < anypath this_host "." topdomain_id > anypath )
X		retry ( $1<$2>$5 );			/* this_host.LOCAL */
X	if ( anypath < anypath this_host > anypath )
X		retry ( $1<$2>$4 );			/* this_host */
X	if ( anypath < anypath "." > anypath )
X		retry ( $1<$2>$3 );			/* drop trailing dot */
X	if ( < @ > : anypath )
X		return ( BASE_RW ( $1 ) );		/* retry after route strip */
X	if ( anypath < @ > )
X		return ( BASE_RW ( $1 ) );		/* strip null trash and retry */
X
X
X/********************************
X * End of ruleset zero preamble * 
X ********************************/
END_OF_FILE
if test 2139 -ne `wc -c <'config-files/FINIS/zerobase.cpp'`; then
    echo shar: \"'config-files/FINIS/zerobase.cpp'\" unpacked with wrong size!
fi
# end of 'config-files/FINIS/zerobase.cpp'
fi
if test -f 'config-files/KEY' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'config-files/KEY'\"
else
echo shar: Extracting \"'config-files/KEY'\" \(1377 characters\)
sed "s/^X//" >'config-files/KEY' <<'END_OF_FILE'
X		USES FOR MACROS AND CLASSES
X
X	MACROS				CLASSES
X	======				=======
X
XA	arpanet name			arpanet names
XB
XC	comp ctr gateway (ucbvax only)	comp ctr hosts (ucbvax & jade only)
X -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
XD	full local domain name		(bottom) local domain names  $locdomain
XE
XF	forwarding host, $R default	hosts that we cannot talk directly to
X -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
XG
XH	internet name			all names this host is known by
XI
X -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
XJ
XK
XL
X -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
XM
XN	ncp gateway			list of ncp-only hosts
XO
X -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
XP
XQ
XR	relay host (e.g., ucbvax)
X -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
XS					known internet hostnames
XT					top level domains
XU	uucp name			uucp names
X -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
XV	a machine with local uucp link	uucp sites on $V machine
XW	a machine with local uucp link	uucp sites on $W machine
XX	a machine with local uucp link	uucp sites on $X machine
X -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
XY
XZ	config version code		known berknet hosts	$berkhosts
END_OF_FILE
if test 1377 -ne `wc -c <'config-files/KEY'`; then
    echo shar: \"'config-files/KEY'\" unpacked with wrong size!
fi
# end of 'config-files/KEY'
fi
if test -f 'config-files/README' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'config-files/README'\"
else
echo shar: Extracting \"'config-files/README'\" \(327 characters\)
sed "s/^X//" >'config-files/README' <<'END_OF_FILE'
XIronically enough, PUCC doesn't yet use ease for our configuration
Xfiles.  These are approximations to what will eventually become
Xour configuration files.  They are not entirely finished, but the ones
Xin "FINIS" are pretty much done, according to what Jim Schoner said
Xbefore he left.  Someday I'll finish them...
X
XJeff Smith
END_OF_FILE
if test 327 -ne `wc -c <'config-files/README'`; then
    echo shar: \"'config-files/README'\" unpacked with wrong size!
fi
# end of 'config-files/README'
fi
if test -f 'config-files/pucc-k.mc' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'config-files/pucc-k.mc'\"
else
echo shar: Extracting \"'config-files/pucc-k.mc'\" \(1462 characters\)
sed "s/^X//" >'config-files/pucc-k.mc' <<'END_OF_FILE'
X/***********************************************************
X ***********************************************************
X ****
X ****	SENDMAIL CONFIGURATION FILE
X ****
X ****	For PUCC-K
X ****
X ****	$Id: pucc-k.mc,v 1.2 86/04/04 14:22:32 kcs Exp $
X ****
X ***********************************************************
X ***********************************************************/
X
X
X
X/***********************************************************
X **	local info
X ***********************************************************/
X
X/* internet hostname */
XDwk.cc.purdue.edu
XCwk.cc.purdue.edu pucc-k pucck k
X
X#include "puccbase.cpp"
X
X/* override logging level in base.cpp */
X# OL1
X
X#include "zerobase.cpp"
X
X################################################
X###  Machine dependent part of ruleset zero  ###
X################################################
X
X# send berknet names through relay
XR<@$=Z>:$+		$#pcl$@$R$:$2<@$1>		@berkhost: ...
XR$*<@$*$=Z>$*		$#pcl$@$R$:$1<@$2$3>$4		user@berknethost
X
X# we don't do uucp 
XR$*<@$*.UUCP>$*		$#error$:Non-Local UUCP Mail Unavailable
X
X# resolve campus names (actually, all non-local names)
XR$*<@$*$->$*		$#pcl$@$3$:$1<@$2$3>$4		user@campushost
X
X# remaining names must be local
XR$+			$#local$:$1			everything else
X
X########################################
X###  Host dependent address cleanup  ###
X########################################
X
XS8
XR$*$=U!$+@$+		$3@$4				drop uucp forward
XR$*$=S.ARPA$*		$1$2$3				drop ".ARPA"
X
X
Xinclude(pclm.cpp)
END_OF_FILE
if test 1462 -ne `wc -c <'config-files/pucc-k.mc'`; then
    echo shar: \"'config-files/pucc-k.mc'\" unpacked with wrong size!
fi
# end of 'config-files/pucc-k.mc'
fi
if test -f 'config-files/pucc-n.mc' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'config-files/pucc-n.mc'\"
else
echo shar: Extracting \"'config-files/pucc-n.mc'\" \(1456 characters\)
sed "s/^X//" >'config-files/pucc-n.mc' <<'END_OF_FILE'
X/***********************************************************
X ***********************************************************
X ****
X ****	SENDMAIL CONFIGURATION FILE
X ****
X ****	For PUCC-N
X ****
X ****	$Id: pucc-n.mc,v 1.2 86/04/04 14:23:57 kcs Exp $
X ****
X ***********************************************************
X ***********************************************************/
X
X
X
X/***********************************************************
X **	local info
X ***********************************************************/
X
X/* internet hostname */
XDwn.cc.purdue.edu
XCwn.cc.purdue.edu pucc-n puccn n
X
X#include "puccbase.cpp"
X
X# override logging level in base.cpp
X# OL1
X
Xinclude(zerobase.cpp)
X
X################################################
X###  Machine dependent part of ruleset zero  ###
X################################################
X
X# send berknet names through relay
XR<@$=Z>:$+		$#pcl$@$R$:$2<@$1>		@berkhost: ...
XR$*<@$*$=Z>$*		$#pcl$@$R$:$1<@$2$3>$4		user@berknethost
X
X# we don't do uucp 
XR$*<@$*.UUCP>$*		$#error$:Non-Local UUCP Mail Unavailable
X
X# resolve campus names (actually, all non-local names)
XR$*<@$*$->$*		$#pcl$@$3$:$1<@$2$3>$4		user@campushost
X
X# remaining names must be local
XR$+			$#local$:$1			everything else
X
X########################################
X###  Host dependent address cleanup  ###
X########################################
X
XS8
XR$*$=U!$+@$+		$3@$4				drop uucp forward
XR$*$=S.ARPA$*		$1$2$3				drop ".ARPA"
X
X
Xinclude(pclm.cpp)
END_OF_FILE
if test 1456 -ne `wc -c <'config-files/pucc-n.mc'`; then
    echo shar: \"'config-files/pucc-n.mc'\" unpacked with wrong size!
fi
# end of 'config-files/pucc-n.mc'
fi
if test -f 'config-files/pucc-s.mc' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'config-files/pucc-s.mc'\"
else
echo shar: Extracting \"'config-files/pucc-s.mc'\" \(1472 characters\)
sed "s/^X//" >'config-files/pucc-s.mc' <<'END_OF_FILE'
X/***********************************************************
X ***********************************************************
X ****
X ****	SENDMAIL CONFIGURATION FILE
X ****
X ****	For PUCC-S
X ****
X ****	$Id: pucc-s.mc,v 1.1 86/03/31 11:16:37 kcs Exp Locker: kcs $
X ****
X ***********************************************************
X ***********************************************************/
X
X
X
X/***********************************************************
X **	local info
X ***********************************************************/
X
X/* internet hostname */
XDws.cc.purdue.edu
XCws.cc.purdue.edu pucc-s puccs s
X
X#include "puccbase.cpp"
X
X/* override logging level in base.cpp */
X# OL1
X
Xinclude(zerobase.cpp)
X
X################################################
X###  Machine dependent part of ruleset zero  ###
X################################################
X
X# send berknet names through relay
XR<@$=Z>:$+		$#pcl$@$R$:$2<@$1>		@berkhost: ...
XR$*<@$*$=Z>$*		$#pcl$@$R$:$1<@$2$3>$4		user@berknethost
X
X# we don't do uucp 
XR$*<@$*.UUCP>$*		$#error$:Non-Local UUCP Mail Unavailable
X
X# resolve campus names (actually, all non-local names)
XR$*<@$*$->$*		$#pcl$@$3$:$1<@$2$3>$4		user@campushost
X
X# remaining names must be local
XR$+			$#local$:$1			everything else
X
X########################################
X###  Host dependent address cleanup  ###
X########################################
X
XS8
XR$*$=U!$+@$+		$3@$4				drop uucp forward
XR$*$=S.ARPA$*		$1$2$3				drop ".ARPA"
X
X
Xinclude(pclm.cpp)
END_OF_FILE
if test 1472 -ne `wc -c <'config-files/pucc-s.mc'`; then
    echo shar: \"'config-files/pucc-s.mc'\" unpacked with wrong size!
fi
# end of 'config-files/pucc-s.mc'
fi
if test -f 'config-files/puccbase.cpp' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'config-files/puccbase.cpp'\"
else
echo shar: Extracting \"'config-files/puccbase.cpp'\" \(1219 characters\)
sed "s/^X//" >'config-files/puccbase.cpp' <<'END_OF_FILE'
X
X/************************************************
X ************************************************
X ****
X ****	General configuration information
X ****
X ****	$Id: puccbase.cpp,v 1.4 86/04/04 14:25:46 kcs Exp $
X ****
X ************************************************
X ************************************************/
X
X/********************
X *  General Macros  *
X ********************/
X
Xmacro
X	localname = "PURDUE.EDU"; 		/* local domain names */
X	relay_host = "pucc-h";			/* berknet relay host */
X	m_oname = "${m_sitename}";		/* my official hostname (sort of */
X
Xclass
X	localname = { "PURDUE.EDU", PURDUE, CC, Purdue-CS, CS, ECN };
X	topdomain = { LOCAL, ARPA, UUCP, BITNET, CSNET };	/* known top-level domains */
X
X#include "localhosts.cpp"
X#include "berkhosts.cpp"
X#include "base.cpp"
X
X/*********************
X *  Rewriting rules  *
X *********************/
X
X/*** special local conversions ***/
XS6
X# R$*<@$*$=D>$*		$1<@$2LOCAL>$4			convert local domain
X# R$*<@$*$=D.ARPA>$*	$1<@$2LOCAL>$4
XR$*<@$+.$=T.$=T>$*	$1<@$2.$3>$5			delete dup top level
XR$*<@$*$=S.UUCP>$*	$1<@$2$3>$4			local UUCP direct
XR$*<@$*$=Z.UUCP>$*	$1<@$2$3>$4			local UUCP direct
XR$*<@$=Y$*>$*		$1<@cs$3>$4			cs-host => cs kludge
X
X
X#include "localm.cpp"
END_OF_FILE
if test 1219 -ne `wc -c <'config-files/puccbase.cpp'`; then
    echo shar: \"'config-files/puccbase.cpp'\" unpacked with wrong size!
fi
# end of 'config-files/puccbase.cpp'
fi
if test -f 'config-files/stat-l.mc' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'config-files/stat-l.mc'\"
else
echo shar: Extracting \"'config-files/stat-l.mc'\" \(1384 characters\)
sed "s/^X//" >'config-files/stat-l.mc' <<'END_OF_FILE'
X############################################################
X############################################################
X#####
X#####	SENDMAIL CONFIGURATION FILE
X#####
X#####	For STAT-L
X#####
X#####	$Id: stat-l.mc,v 1.2 86/04/04 14:27:47 kcs Exp $
X#####
X############################################################
X############################################################
X
X
X
X############################################################
X###	local info
X############################################################
X
X# internet hostname
XDwstat-l
XCwstat-l statl l stat
X
Xinclude(puccbase.cpp)
X
Xinclude(zerobase.cpp)
X
X################################################
X###  Machine dependent part of ruleset zero  ###
X################################################
X
X# send berknet names through relay
XR<@$=Z>:$+		$#pcl$@$R$:$2<@$1>		@berkhost: ...
XR$*<@$*$=Z>$*		$#pcl$@$R$:$1<@$2$3>$4		user@berknethost
X
X# we don't do uucp 
XR$*<@$*.UUCP>$*		$#error$:Non-Local UUCP Mail Unavailable
X
X# resolve campus names (actually, all non-local names)
XR$*<@$*$->$*		$#pcl$@$3$:$1<@$2$3>$4		user@campushost
X
X# remaining names must be local
XR$+			$#local$:$1			everything else
X
X########################################
X###  Host dependent address cleanup  ###
X########################################
X
XS8
XR$*$=U!$+@$+		$3@$4				drop uucp forward
XR$*$=S.ARPA$*		$1$2$3				drop ".ARPA"
X
X
Xinclude(pclm.cpp)
END_OF_FILE
if test 1384 -ne `wc -c <'config-files/stat-l.mc'`; then
    echo shar: \"'config-files/stat-l.mc'\" unpacked with wrong size!
fi
# end of 'config-files/stat-l.mc'
fi
if test -f 'config-files/tcpm.cpp' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'config-files/tcpm.cpp'\"
else
echo shar: Extracting \"'config-files/tcpm.cpp'\" \(2055 characters\)
sed "s/^X//" >'config-files/tcpm.cpp' <<'END_OF_FILE'
X
X/***********************************************************
X ***********************************************************
X ****
X ****	Arpanet TCP Mailer specification
X ****
X ****	Messages processed by this specification are assumed to leave
X ****	the local domain -- hence, they must be canonical according to
X ****	RFC822 etc.
X ****
X ****	$Id: tcpm.cpp,v 1.5 86/04/04 14:29:16 kcs Exp $
X ****
X ***********************************************************
X ***********************************************************/
X
X#ifndef cppCOMPAT
X#include "compat.cpp"
X#endif
X
Xmailer
X	tcp { Path	= "[IPC]",
X	      Flags	= { f_mult, f_date, f_from, f_mesg, f_upperu,
X			    f_dot, f_llimit },
X	      Sender	= MAP_RW,
X	      Recipient = MAP_RW,
X	      Argv	= "IPC ${m_rhost}",
X	      Eol	= "\r\n",
X	      Maxsize	= "100000"
X	};
X
X
Xruleset MAP_RW {
X
X	/* pass <route-addr>'s through */
X
X	/***
X	if ( < @path > anypath )
X		return ( <@canon($1)>$2 );		/* resolve <route-addr> */
X
X	if ( < @path > anypath )
X		return ( <@$1>$2 );			/* resolve <route-addr> */
X
X	/* map colons to dots everywhere..... */
X
X	if ( anypath : anypath )
X		retry ( $1.$2 );			/* map colons to dots */
X
X	/* handle the simple case.... */
X
X	/***
X	if ( path < @hostname ".ARPA" > )
X		return ( $1<@canon($2".ARPA")> );	/* user@host.ARPA */
X
X	if ( path < @hostname ".ARPA" > )
X		return ( $1<@$2".ARPA"> );		/* user@host.ARPA */
X
X	/***
X	if ( path < @hostpath ".LOCAL" > )
X# R$+<@$+.LOCAL>	$@$1%$2<@$A>			local hosts
X# R$+<@$+.BITNET>	$@$1%$2.BITNET<@$A>		user@host.BITNET
X# R$+<@$+.CSNET>	$@$1.$2<@CSNET-RELAY.ARPA>	user@host.CSNET
X
X# handle other external cases
X# R$+<@$->		$@$1<@$[$2$]>			no .ARPA on simple names
XR$+<@$->		$@$1<@$2>			no .ARPA on simple names
XR$+<@$+.$->		$@$1<@$2$3>			already ok (we think)
X# R$+<@$+.$-.ARPA>	$@$1%$2<@$[$3.ARPA$]>		approximate something
XR$+<@[$+]>		$@$1<@[$2]>			already ok
X
X# convert remaining addresses to old format and externalize appropriately
XR$+			$:$>5$1				=> old format
XR$-:$+			$@$1.$2<@$A.$D>			convert berk hosts
XR$*			$@$1<@$A.$D>			tack on our host name
END_OF_FILE
if test 2055 -ne `wc -c <'config-files/tcpm.cpp'`; then
    echo shar: \"'config-files/tcpm.cpp'\" unpacked with wrong size!
fi
# end of 'config-files/tcpm.cpp'
fi
if test ! -d 'doc' ; then
    echo shar: Creating directory \"'doc'\"
    mkdir 'doc'
fi
if test ! -d 'config-files' ; then
    echo shar: Creating directory \"'config-files'\"
    mkdir 'config-files'
fi
if test ! -d 'config-files/FINIS' ; then
    echo shar: Creating directory \"'config-files/FINIS'\"
    mkdir 'config-files/FINIS'
fi
if test ! -d 'maketd' ; then
    echo shar: Creating directory \"'maketd'\"
    mkdir 'maketd'
fi
if test ! -d 'maketd/Manual' ; then
    echo shar: Creating directory \"'maketd/Manual'\"
    mkdir 'maketd/Manual'
fi
if test -f 'doc/Makefile' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'doc/Makefile'\"
else
echo shar: Extracting \"'doc/Makefile'\" \(293 characters\)
sed "s/^X//" >'doc/Makefile' <<'END_OF_FILE'
X#
X#	Makefile for Ease document.
X#
X#	James S. Schoner
X#	Purdue University Computing Center
X#
Xall:	cover mainbody apen1 apen2 apen3
X	
Xcover: FRC
X	troff -ms cover
X
Xmainbody:
X	tbl ease.paper | troff -ms
X
Xapen1:
X	tbl ap1 | troff -ms
X
Xapen2:
X	tbl ap2 | troff -ms
X
Xapen3:
X	tbl ap3 | troff -ms
X
XFRC:
X
END_OF_FILE
if test 293 -ne `wc -c <'doc/Makefile'`; then
    echo shar: \"'doc/Makefile'\" unpacked with wrong size!
fi
# end of 'doc/Makefile'
fi
if test -f 'doc/ap1' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'doc/ap1'\"
else
echo shar: Extracting \"'doc/ap1'\" \(1384 characters\)
sed "s/^X//" >'doc/ap1' <<'END_OF_FILE'
X.DS C
X\s+5\fBAppendix A\fR
X
X
X\fBPre-Declared Macros\fR\s-5
X.DE
X.sp 5
X.TS 
Xcenter box;
Xc|c|c
Xl|l|l.
X\fBEase\fR Macro	Raw Equivalent	Meaning*
X=
X\fIm_odate\fR	a	The origination date in Arpanet format
X\fIm_adate\fR	b	The current date in Arpanet format
X\fIm_hops\fR	c	The hop count
X\fIm_udate\fR	d	The date in UNIX (ctime) format
X\fIm_smtp\fR	e	The SMTP entry message
X\fIm_saddr\fR	f	The sender (from) address
X\fIm_sreladdr\fR	g	The sender address relative to the recipient
X\fIm_rhost\fR	h	The recipient host
X\fIm_qid\fR	i	The queue id
X\fIm_oname\fR	j	The official domain name for this site
X\fIm_ufrom\fR	l	The format of the UNIX from line
X\fIm_daemon\fR	n	The name of the daemon (for error messages)
X\fIm_addrops\fR	o	The set of "operators" in addresses
X\fIm_pid\fR	p	Sendmail's pid
X\fIm_defaddr\fR	q	The default format of sender address
X\fIm_protocol\fR	r	Protocol used
X\fIm_shostname\fR	s	Sender's host name
X\fIm_ctime\fR	t	A numeric representation of the current time
X\fIm_ruser\fR	u	The recipient user
X\fIm_version\fR	v	The version number of sendmail
X\fIm_sitename\fR	w	The hostname of this site
X\fIm_sname\fR	x	The full name of the sender
X\fIm_stty\fR	y	The id of the sender's tty
X\fIm_rhdir\fR	z	The home directory of the recipient
X.TE
X.FS
X*  Taken from pages 15 and 16 of the Installation and Operation Guide
Xfor Sendmail (UNIX Programmer's Manual, Volume 2c), by Eric Allman.
X.FE
END_OF_FILE
if test 1384 -ne `wc -c <'doc/ap1'`; then
    echo shar: \"'doc/ap1'\" unpacked with wrong size!
fi
# end of 'doc/ap1'
fi
if test -f 'doc/ap2' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'doc/ap2'\"
else
echo shar: Extracting \"'doc/ap2'\" \(1153 characters\)
sed "s/^X//" >'doc/ap2' <<'END_OF_FILE'
X.DS C
X\s+5\fBAppendix B\fR
X
X
X\fBSendmail Options\fR\s-5
X.DE
X.sp 2
X.PP
XFor a complete description of Sendmail's options and their values, refer to 
XAppendix B of the Installation and Operation Guide for Sendmail (UNIX
XProgrammer's Manual, Volume 2c), by Eric Allman.
X.sp 2
X.TS 
Xcenter box;
Xc|c
Xl|l.
XSendmail Option (\fBEase\fR)	Sendmail Option (Raw)	Special Values
X=
X\fIo_alias\fR	A	
X\fIo_ewait\fR	a	
X\fIo_bsub\fR	B	
X\fIo_qwait\fR	c	
X\fIo_delivery\fR  (special values below)	d  (special values below)
X     \fId_interactive\fR	     i 
X     \fId_background\fR	    b 
X     \fId_queue\fR	    q
X\fIo_rebuild\fR	D
X\fIo_handling\fR  (special values below)	e  (special values below)
X     \fIh_print\fR	     p 
X     \fIh_exit\fR	     q
X     \fIh_mail\fR	     m
X     \fIh_write\fR	     w
X     \fIh_mailz\fR	     e
X\fIo_tmode\fR	F	
X\fIo_usave\fR	f	
X\fIo_gid\fR	g	
X\fIo_fsmtp\fR	H	
X\fIo_skipd\fR	i	
X\fIo_slog\fR	L	
X\fIo_rsend\fR	m	
X\fIo_dnet\fR	N	
X\fIo_hformat\fR	o	
X\fIo_qdir\fR	Q	
X\fIo_tread\fR	r	
X\fIo_flog\fR	S	
X\fIo_safe\fR	s	
X\fIo_qtimeout\fR	T	
X\fIo_timezone\fR	t	
X\fIo_dmuid\fR	u	
X\fIo_verbose\fR	v	
X\fIo_wizpass\fR	W	
X\fIo_loadq\fR	x	
X\fIo_loadnc\fR	X	
X.TE
END_OF_FILE
if test 1153 -ne `wc -c <'doc/ap2'`; then
    echo shar: \"'doc/ap2'\" unpacked with wrong size!
fi
# end of 'doc/ap2'
fi
if test -f 'doc/ap3' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'doc/ap3'\"
else
echo shar: Extracting \"'doc/ap3'\" \(689 characters\)
sed "s/^X//" >'doc/ap3' <<'END_OF_FILE'
X.DS C
X\s+5\fBAppendix C\fR
X
X
X\fBMailer Flags\fR\s-5
X.DE
X.sp 5
X.PP
XFor a complete description of mailer flags, refer to 
XAppendix C of the Installation and Operation Guide for Sendmail (UNIX
XProgrammer's Manual, Volume 2c), by Eric Allman.
X.sp 5
X.TS 
Xcenter box;
Xc|c
Xl|l.
XMailer Flag (\fBEase\fR)	Mailer Flag (Raw)
X=
X\fIf_ffrom\fR	f
X\fIf_rfrom\fR	r
X\fIf_noreset\fR	S
X\fIf_noufrom\fR	n
X\fIf_locm\fR	l
X\fIf_strip\fR	s 
X\fIf_mult\fR	m
X\fIf_from\fR	F
X\fIf_date\fR	D
X\fIf_mesg\fR	M
X\fIf_full\fR	x	
X\fIf_return\fR	P	
X\fIf_upperu\fR	u	
X\fIf_upperh\fR	h	
X\fIf_arpa\fR	A	
X\fIf_ufrom\fR	U	
X\fIf_expensive\fR	e	
X\fIf_dot\fR	X	
X\fIf_llimit\fR	L	
X\fIf_retsmtp\fR	p	
X\fIf_smtp\fR	I	
X\fIf_addrw\fR	C	
X.TE
END_OF_FILE
if test 689 -ne `wc -c <'doc/ap3'`; then
    echo shar: \"'doc/ap3'\" unpacked with wrong size!
fi
# end of 'doc/ap3'
fi
if test -f 'doc/cover' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'doc/cover'\"
else
echo shar: Extracting \"'doc/cover'\" \(262 characters\)
sed "s/^X//" >'doc/cover' <<'END_OF_FILE'
X.DA
X.sp 15
X.nr PS 14
X.ps 14
X.DS C
X 
X.DE
X.sp 10
X.nr PS 36
X.ps 36
X.DS C
X\fBEase:\fR
X.DE
X.sp 5
X.nr PS 22
X.ps 22
X.DS C
XA Configuration Language
X  
Xfor Sendmail
X.DE
X.sp 13
X.nr PS 14
X.ps 14
X.DS C
Xby
X
X\fIJames S. Schoner\fR
X\fIPurdue University Computing Center\fR
X.DE
END_OF_FILE
if test 262 -ne `wc -c <'doc/cover'`; then
    echo shar: \"'doc/cover'\" unpacked with wrong size!
fi
# end of 'doc/cover'
fi
if test -f 'maketd/Makefile' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'maketd/Makefile'\"
else
echo shar: Extracting \"'maketd/Makefile'\" \(1371 characters\)
sed "s/^X//" >'maketd/Makefile' <<'END_OF_FILE'
X# For a VAX
XDEFS=	-DBSD4_2
XLDFLAGS=
X
X# For a PDP 11/70
X# DEFS= -DBSD2_9
X# LDFLAGS= -i
X
XINCLUDE=	
XCFLAGS=	-O ${DEFS} ${INCLUDE}
XDEST=	/usr/new/bin
X
XSRC=	abrv.c maketd.c misc.c nshpopen.c breakargs.c srtunq.c
XHDR=	maketd.h abrv.h nshpopen.h srtunq.h
XOBJ=	maketd.o abrv.o misc.o nshpopen.o breakargs.o srtunq.o
X
Xall: maketd
X
Xmaketd:	${OBJ}
X	${CC} ${LDFLAGS} ${OBJ} -o maketd
X
Xclean: FRC
X	rm -f ${OBJ} maketd \#* *.bak core a.out
X
Xdepend:	source
X	maketd -a ${DEFS} ${INCLUDE} ${SRC}
X
Xinstall: maketd
X	install -s -m 0751 -o binary -g system maketd ${DEST}
X
Xlint: source
X	lint -hpx ${SRC}
X
Xprint: source
X	lpr -p Makefile ${HDR} ${SRC}
X
Xshar: source
X	shar Makefile ${SRC} ${HDR} Manual
X
Xsource: Makefile ${SRC} ${HDR}
X
Xspotless: clean
X	rcsclean ${SRC} ${HDR} Makefile
X
X${SRC} ${HDR}:
X	co $@
X
XFRC:
X
X# a clever way to save a few more characters
XI=/usr/include/
XS=/usr/include/sys/
X
X# DO NOT DELETE THIS LINE - make depend DEPENDS ON IT
X
Xabrv.o: $Ictype.h $Istdio.h abrv.c abrv.h maketd.h srtunq.h
X
Xmaketd.o: $Ictype.h $Imachine/machparam.h $Isignal.h $Istdio.h $Sdir.h \
X	$Sfile.h $Sparam.h $Stypes.h abrv.h maketd.c maketd.h nshpopen.h \
X	srtunq.h
X
Xmisc.o: $Istdio.h $Ssignal.h maketd.h misc.c
X
Xnshpopen.o: $Isignal.h $Istdio.h nshpopen.c
X
Xbreakargs.o: $Istdio.h breakargs.c
X
Xsrtunq.o: $Istdio.h $Stypes.h srtunq.c srtunq.h
X
X# *** Do not add anything here - It will go away. ***
END_OF_FILE
if test 1371 -ne `wc -c <'maketd/Makefile'`; then
    echo shar: \"'maketd/Makefile'\" unpacked with wrong size!
fi
# end of 'maketd/Makefile'
fi
if test -f 'maketd/README' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'maketd/README'\"
else
echo shar: Extracting \"'maketd/README'\" \(456 characters\)
sed "s/^X//" >'maketd/README' <<'END_OF_FILE'
XMaketd is a local program a Purdue University Computing Center that
Xupdates make(1) specification files.  There are two versions of maketd
Xin this directory.  One is a slow shell version that should work almost
Xanywhere, the other is a faster C version with more featurtes that may
Xtake some time to bring up.
X
XChoose either to update the makefiles in the ease source, or do it by hand.
X
XKevin Braunsdorf, ksb@j.cc.purdue.edu		Mon Nov  3 12:02:18 EST 1986
END_OF_FILE
if test 456 -ne `wc -c <'maketd/README'`; then
    echo shar: \"'maketd/README'\" unpacked with wrong size!
fi
# end of 'maketd/README'
fi
if test -f 'maketd/abrv.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'maketd/abrv.h'\"
else
echo shar: Extracting \"'maketd/abrv.h'\" \(544 characters\)
sed "s/^X//" >'maketd/abrv.h' <<'END_OF_FILE'
X/* include srtunq.h first */
X
X#define MXABR 26			/* upper case chars used */
Xextern char	*abrvtbl[];		/* translation table strings */
Xextern int	abrvlen[];		/* string lengths (for speed) */
Xextern SRTUNQ	abrv;			/* include file abrevs */
X
X/* abbreviation fucntions */
Xextern int	lngsrt();		/* compare function for abrevs */
Xextern char	*hincl();		/* optimizer for include paths */
Xextern void	srchincl();		/* find [A-Z] makefile defines */
Xextern void	abrvsetup();		/* create abrvs, write them */
Xextern int	findabr();		/* find longest abrv */
END_OF_FILE
if test 544 -ne `wc -c <'maketd/abrv.h'`; then
    echo shar: \"'maketd/abrv.h'\" unpacked with wrong size!
fi
# end of 'maketd/abrv.h'
fi
if test -f 'maketd/maketd.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'maketd/maketd.h'\"
else
echo shar: Extracting \"'maketd/maketd.h'\" \(809 characters\)
sed "s/^X//" >'maketd/maketd.h' <<'END_OF_FILE'
X#define TRUE	1
X#define FALSE	0
X#define SPC	'\040'
X
X/* globals */
Xextern char	*prgnm;			/* the progs called name */
Xextern int	alldep;			/* -a all - /usr/include too */
Xextern int	usestdout;		/* -d use stdout for makefile */
Xextern FILE	*makefd;		/* file desc. for output file */
Xextern char	*makename;		/* -m default file for edit */
Xextern int	backedup;		/* for interupt recovery */
Xextern char	backupfn[];		/* backup file name */
Xextern int	replace;		/* -r replace depends in Makefile */
Xextern int	shortincl;		/* -x do abreviations */
Xextern int	verbose;		/* -v verbage for the debugger */
Xextern char	usage[];		/* for error output */
X
Xextern void	err();			/* error msg, exit cleanly */
Xextern void	errrec();		/* exit cleanly - also signal trap */
Xextern char	lastlnch();		/* last char in line (not \n) */
END_OF_FILE
if test 809 -ne `wc -c <'maketd/maketd.h'`; then
    echo shar: \"'maketd/maketd.h'\" unpacked with wrong size!
fi
# end of 'maketd/maketd.h'
fi
if test -f 'maketd/nshpopen.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'maketd/nshpopen.c'\"
else
echo shar: Extracting \"'maketd/nshpopen.c'\" \(2253 characters\)
sed "s/^X//" >'maketd/nshpopen.c' <<'END_OF_FILE'
X/* @(#)popen.c	4.5 (Berkeley) 7/6/84
X * Modified from 4.2, 2.9 BSD popen by Stephen Uitti, PUCC, Nov '85
X * Doesn't invoke shell, saving time, becoming more secure.
X * Calls breakargs to break line into command line arguments,
X * delimited by white space, but ignores globing and quoting
X * characters.  For use where you don't need shell meta character
X * expansion or filename globbing.
X */
X#ifdef BSD2_9
X#include <sys/types.h>
X#endif
X#include <stdio.h>
X#include <signal.h>
X
X#define	tst(a,b)	(*mode == 'r'? (b) : (a))
X#define	RDR	0
X#define	WTR	1
X#define SPC '\040'			/* ascii space */
X
Xstatic	int popen_pid[20];
Xextern char **environ;
Xchar **breakargs();
X
X/* no-shell popen */
XFILE *
Xnshpopen(cmd, mode)
Xchar *cmd;
Xchar *mode;
X{
X	int p[2];
X	int myside, hisside, pid;
X	char **elist;				/* the execv list */
X
X	elist = breakargs(cmd);
X	if (pipe(p) < 0)
X		return (NULL);
X	myside = tst(p[WTR], p[RDR]);
X	hisside = tst(p[RDR], p[WTR]);
X	if ((pid = vfork()) == 0) {
X		/* myside and hisside reverse roles in child */
X		close(myside);
X		if (hisside != tst(0, 1)) {	/* 0, 1 => stdin, stdout */
X			dup2(hisside, tst(0, 1));
X			close(hisside);
X		}
X		execve(elist[0], elist, environ);
X		perror("execv");
X		_exit(1);			/* bombed execv, child dies */
X	}
X	free(elist);				/* discard the broken args */
X	if (pid == -1) {
X		close(myside);
X		close(hisside);
X		return (NULL);
X	}
X	popen_pid[myside] = pid;
X	close(hisside);
X	return (fdopen(myside, mode));
X}
X
X/* close for nshpopen */
Xint *
Xnshpclose(ptr)
XFILE *ptr;
X{
X#ifdef	BSD4_2
X	int child, pid, status, omask;
X
X	child = popen_pid[fileno(ptr)];
X	fclose(ptr);
X#define	mask(s)	(1 << ((s)-1))
X	omask = sigblock(mask(SIGINT)|mask(SIGQUIT)|mask(SIGHUP));
X	while ((pid = wait(&status)) != child && pid != -1)
X		/* empty */;
X	(void) sigsetmask(omask);
X	return (int *)(pid == -1 ? -1 : status);
X#else		/* 2.9 BSD, at least */
X	register f, r, (*hstat)(), (*istat)(), (*qstat)();
X	int status;
X
X	f = fileno(ptr);
X	fclose(ptr);
X	istat = signal(SIGINT, SIG_IGN);
X	qstat = signal(SIGQUIT, SIG_IGN);
X	hstat = signal(SIGHUP, SIG_IGN);
X	while((r = wait(&status)) != popen_pid[f] && r != -1)
X		;
X	if(r == -1)
X		status = -1;
X	signal(SIGINT, istat);
X	signal(SIGQUIT, qstat);
X	signal(SIGHUP, hstat);
X	return (int *)(status);
X#endif	BSD4_2
X}
END_OF_FILE
if test 2253 -ne `wc -c <'maketd/nshpopen.c'`; then
    echo shar: \"'maketd/nshpopen.c'\" unpacked with wrong size!
fi
# end of 'maketd/nshpopen.c'
fi
if test -f 'maketd/nshpopen.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'maketd/nshpopen.h'\"
else
echo shar: Extracting \"'maketd/nshpopen.h'\" \(113 characters\)
sed "s/^X//" >'maketd/nshpopen.h' <<'END_OF_FILE'
X/* nshpopen defines */
Xextern FILE   *nshpopen();		/* open pipe */
Xextern int    *nshpclose();		/* close pipe */
END_OF_FILE
if test 113 -ne `wc -c <'maketd/nshpopen.h'`; then
    echo shar: \"'maketd/nshpopen.h'\" unpacked with wrong size!
fi
# end of 'maketd/nshpopen.h'
fi
if test -f 'maketd/srtunq.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'maketd/srtunq.h'\"
else
echo shar: Extracting \"'maketd/srtunq.h'\" \(1244 characters\)
sed "s/^X//" >'maketd/srtunq.h' <<'END_OF_FILE'
X/* include file for memory resident unique sorting routines.
X *
X * Written & hacked by Stephen Uitti, PUCC staff, ach@pucc-j, 1985
X * libsrtunq is copyright (C) Purdue University, 1985
X *
X * Permission is hereby given for its free reproduction and
X * modification for non-commercial purposes, provided that this
X * notice and all embedded copyright notices be retained.
X * Commercial organisations may give away copies as part of their
X * systems provided that they do so without charge, and that they
X * acknowledge the source of the software.
X */
X
X/* database entry */
Xstruct srtbl {
X    struct srtbl *srt_prev;		/* parent */
X    struct srtbl *srt_less;		/* something < srt_str */
X    struct srtbl *srt_more;		/* something > srt_str */
X    char srt_str[1];			/* dynamic: 1 for null at EOS */
X};
X
X/* database tag */
Xtypedef struct srtent {
X    struct srtbl *srt_top;		/* root of the tree */
X    struct srtbl *srt_next;		/* pointer for srtget */
X} SRTUNQ;
X
X/* The functions */
Xvoid	srtinit();			/* init for srtin */
Xvoid	srtdtree();			/* recursive delete of subtree */
Xchar   *srtin();			/* insert string - return err */
Xvoid	srtgti();			/* init for srtgets */
Xchar   *srtgets();			/* get next string */
Xvoid	srtfree();			/* free a database */
END_OF_FILE
if test 1244 -ne `wc -c <'maketd/srtunq.h'`; then
    echo shar: \"'maketd/srtunq.h'\" unpacked with wrong size!
fi
# end of 'maketd/srtunq.h'
fi
if test ! -d 'src' ; then
    echo shar: Creating directory \"'src'\"
    mkdir 'src'
fi
if test -f 'src/Makefile' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'src/Makefile'\"
else
echo shar: Extracting \"'src/Makefile'\" \(2016 characters\)
sed "s/^X//" >'src/Makefile' <<'END_OF_FILE'
X# Makefile for Ease Translator (et).
X#
X#	$Header: /usr/src/local/etc/ease/RCS/Makefile,v 1.4 85/10/29 22:57:06 jss Exp $
X#
X#	James S. Schoner, Purdue University Computing Center,
X#			  West Lafayette, Indiana  47907
X#
X#	Copyright (c) 1985 by Purdue Research Foundation
X#
X#	All rights reserved.
X#
X
XINCLUDE =
X
XDEST = /usr/local/etc
X
XOWNER = binary
XGROUP = system
XMODE = 751
X
XDEFS =
XCFLAGS = -O ${DEFS} ${INCLUDE}
X
XLP = lpr
XLPFLAGS = -J"Ease Source"
X
XHDR = symtab.h
XSRC = main.c emitcf.c errors.c idman.c strops.c symtab.c
XLST = Makefile lexan.l parser.y ${HDR} ${SRC}
XDEP = y.tab.c lex.yy.c ${SRC}
XOBJ = y.tab.o lex.yy.o main.o emitcf.o errors.o idman.o strops.o symtab.o
X
Xall: et
X
Xet: ${OBJ}
X	cc ${CFLAGS} -o et ${OBJ} -ll
X
Xclean: FRC
X	rm -f et *.o lex.yy.c y.tab.c y.output yacc.acts yacc.tmp \
X	      lexdefs.h y.tab.h errs Makefile.bak
X
Xdepend: ${DEP} ${HDR}
X	maketd -a ${DEP}
X
Xinstall: et FRC
X	install -c -m ${MODE} -o ${OWNER} -g ${GROUP} -s et ${DEST}
X
Xlint:   ${DEP} symtab.h FRC
X	lint -hxn ${DEP}
X
Xprint:  ${LST} FRC
X	@pr -f ${LST} | ${LP} ${LPFLAGS}
X
Xspotless: clean FRC
X	rcsclean ${LST}
X
Xlexdefs.h y.tab.c: parser.y
X	yacc -d parser.y
X	-(cmp -s y.tab.h lexdefs.h || cp y.tab.h lexdefs.h)
X
Xlex.yy.c: lexan.l
X	lex lexan.l
X
X${HDR} ${SRC} lexan.l parser.y:
X	co $@
X
XFRC:
X	
X
X# DO NOT DELETE THIS LINE - maketd DEPENDS ON IT
X# Dependencies generated at: Thu Oct 17 14:55:17 EST 1985
X
Xemitcf.o: symtab.h
Xemitcf.o: /usr/include/stdio.h
Xemitcf.o: emitcf.c
Xerrors.o: /usr/include/stdio.h
Xerrors.o: errors.c
Xidman.o: symtab.h
Xidman.o: /usr/include/stdio.h
Xidman.o: idman.c
Xlex.yy.o: lexdefs.h
Xlex.yy.o: symtab.h
Xlex.yy.o: /usr/include/stdio.h
Xlex.yy.o: lex.yy.c
Xmain.o: /usr/include/stdio.h
Xmain.o: main.c
Xstrops.o: symtab.h
Xstrops.o: /usr/include/stdio.h
Xstrops.o: /usr/include/strings.h
Xstrops.o: strops.c
Xsymtab.o: symtab.h
Xsymtab.o: /usr/include/ctype.h
Xsymtab.o: /usr/include/stdio.h
Xsymtab.o: symtab.c
Xy.tab.o: symtab.h
Xy.tab.o: /usr/include/stdio.h
Xy.tab.o: y.tab.c
X
X# DO NOT ADD ANYTHING HERE - it will go away.
END_OF_FILE
if test 2016 -ne `wc -c <'src/Makefile'`; then
    echo shar: \"'src/Makefile'\" unpacked with wrong size!
fi
# end of 'src/Makefile'
fi
if test -f 'src/symtab.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'src/symtab.h'\"
else
echo shar: Extracting \"'src/symtab.h'\" \(2309 characters\)
sed "s/^X//" >'src/symtab.h' <<'END_OF_FILE'
X/*	$Header: /usr/src/local/etc/ease/RCS/symtab.h,v 1.2 85/10/29 23:47:47 jss Exp $	*/
X
X/*
X *	symtab.h    -- Definitions related to the "et" symbol table. 
X *
X *	author	    -- James S. Schoner, Purdue University Computing Center,
X *					 West Lafayette, Indiana  47907
X *
X *	date	    -- July 1, 1985
X *
X *	Copyright (c) 1985 by Purdue Research Foundation
X *
X *	All rights reserved.
X *
X */
X
X#define TRUE      1
X#define FALSE     0
X#define SST       101		/* size of hash table (symbol table) 	     */
X#define RSNMAX    5		/* size of a ruleset number character buffer */
X#define VALRSNMAX 9999		/* max value of ruleset number		     */
X
X
X/* identifier types */
X#define ID_UNTYPED 0
X#define ID_MACRO   01
X#define ID_CLASS   02
X#define ID_RULESET 04
X#define ID_FIELD   010
X#define ID_PREC	   020
X#define ID_MAILER  040
X
X/* identifier type macros */
X#define ISTYPED(x) (x|ID_UNTYPED)
X#define ISMACRO(x) (x&ID_MACRO)
X#define ISCLASS(x) (x&ID_CLASS)
X#define ISRULESET(x) (x&ID_RULESET)
X#define ISFIELD(x) (x&ID_FIELD)
X#define ISPREC(x) (x&ID_PREC)
X#define ISMAILER(x) (x&ID_MAILER)
X
X/* block definition types */
Xenum bdefs {def_macro, def_class, def_option, def_prec, def_trusted, 
X	    def_header, def_mailer, def_ruleset};
X
X/* option types */
Xenum opts {opt_A, opt_a, opt_B, opt_c, opt_D, opt_d, opt_e, opt_F, opt_f, 
X	   opt_g, opt_H, opt_i, opt_L, opt_m, opt_N, opt_o, opt_Q, opt_r, 
X	   opt_S, opt_s, opt_T, opt_t, opt_u, opt_v, opt_W, opt_x, opt_X, 
X	   d_opt_i, d_opt_b, d_opt_q,
X	   e_opt_p, e_opt_e, e_opt_m, e_opt_w, e_opt_z};
X
X/* flag types */
Xenum flgs {flg_f, flg_r, flg_S, flg_n, flg_l, flg_s, flg_m, flg_F, flg_D,
X	   flg_M, flg_x, flg_P, flg_u, flg_h, flg_A, flg_U, flg_e, flg_X,
X	   flg_L, flg_p, flg_I, flg_C};
X
X/* mailer parameters */
Xenum mats {mat_path, mat_flags, mat_sender, mat_recipient, mat_argv, 
X	   mat_eol, mat_maxsize};
X
Xstruct he {	/* hash entry structure for symbol table node 	*/
X	unsigned   idtype;	/* identifier type 		*/
X	unsigned   idd;	  	/* identifier definition flag 	*/
X	char      *psb;		/* identifier string buffer 	*/
X	union {
X		char rsn[RSNMAX]; 	/* ruleset number   	      */
X		int prec;	  	/* precedence value 	      */
X		char idc;		/* one char id representation */
X		char *fstring;    	/* field string     	      */
X	} idval;
X	struct he *phe;		/* next hash entry 		*/
X};
END_OF_FILE
if test 2309 -ne `wc -c <'src/symtab.h'`; then
    echo shar: \"'src/symtab.h'\" unpacked with wrong size!
fi
# end of 'src/symtab.h'
fi
echo shar: End of archive 1 \(of 4\).
cp /dev/null ark1isdone
MISSING=""
for I in 1 2 3 4 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 4 archives.
    rm -f ark[1-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0

-- 

Rich $alz			"Anger is an energy"
Cronus Project, BBN Labs	rsalz@bbn.com
Moderator, comp.sources.unix	sources@uuneon-Lo )
X