home *** CD-ROM | disk | FTP | other *** search
- Subject: v08i055: Ease, a language for writing sendmail.cf files, Part03/04
- Newsgroups: mod.sources
- Approved: mirror!rs
-
- Submitted by: ksb@j.cc.purdue.edu
- Mod.sources: Volume 8, Issue 55
- Archive-name: ease/Part03
-
- # This is a shell archive.
- # Remove everything above and including the cut line.
- # Then run the rest of the file through sh.
- #----cut here-----cut here-----cut here-----cut here----#
- #!/bin/sh
- # shar: Shell Archiver
- # Run the following text with /bin/sh to create:
- # config-files
- mkdir config-files
- chdir config-files
- mkdir FINIS
- chdir FINIS
- cat << \SHAR_EOF > zerobase.cpp
-
- /***********************************************************
- ***********************************************************
- ****
- **** RULESET ZERO PREAMBLE
- ****
- **** The beginning of ruleset zero is constant through all
- **** configurations.
- ****
- **** $Id: zerobase.cpp,v 1.4 86/04/04 14:31:36 kcs Exp $
- ****
- ***********************************************************
- ***********************************************************/
-
- ruleset BASE_RW {
-
- /* first make canonical */
-
- if ( anypath < anypath > anypath )
- retry ( $1$2$3); /* defocus */
- if ( path )
- next ( NAME_CANON ( $1 ) ); /* make canonical */
-
- /* handle special cases..... */
-
- if ( @ )
- resolve ( mailer (local),
- user ("MAILER-DAEMON") ); /* handle <> form */
- if ( anypath < @[path] > anypath )
- resolve ( mailer (tcp),
- host (hostnum ($2)),
- user ("$1@[$2]$3") ); /* numeric internet spec */
-
- /* arrange for local names to be fully qualified */
-
- /***
- if ( anypath < anypath campushost > anypath )
- retry ( $1<$2$3".LOCAL">$4 ); /* user@campushost */
- /***
- if ( anypath < anypath berkhost > anypath )
- retry ( $1<$2$3".LOCAL">$4 ); /* user@berkhost */
- /***
- if ( anypath < path ".ARPA.LOCAL" > anypath )
- retry ( $1<$2".ARPA">$3 ); /* because ARPA is a host */
-
- /* delete local domain info -- this is a (temporary?) kludge */
-
- if ( anypath < anypath "." $localname > anypath )
- retry ( $1<$2>$3 ); /* strip local domain */
- if ( anypath < anypath "." localdomain > anypath )
- retry ( $1<$2>$4 ); /* strip local subdomains */
-
- /* now delete (more) local info */
-
- if ( anypath < anypath this_host "." topdomain_id > anypath )
- retry ( $1<$2>$5 ); /* this_host.LOCAL */
- if ( anypath < anypath this_host > anypath )
- retry ( $1<$2>$4 ); /* this_host */
- if ( anypath < anypath "." > anypath )
- retry ( $1<$2>$3 ); /* drop trailing dot */
- if ( < @ > : anypath )
- return ( BASE_RW ( $1 ) ); /* retry after route strip */
- if ( anypath < @ > )
- return ( BASE_RW ( $1 ) ); /* strip null trash and retry */
-
-
- /********************************
- * End of ruleset zero preamble *
- ********************************/
- SHAR_EOF
- if test 2139 -ne "`wc -c zerobase.cpp`"
- then
- echo shar: error transmitting zerobase.cpp '(should have been 2139 characters)'
- fi
- cat << \SHAR_EOF > version.cpp
-
- /* $Id: version.cpp,v 1.3 85/05/04 17:01:03 acu Exp Locker: acu $ */
-
- macro
- berkhosts = "4.41";
- SHAR_EOF
- if test 98 -ne "`wc -c version.cpp`"
- then
- echo shar: error transmitting version.cpp '(should have been 98 characters)'
- fi
- cat << \SHAR_EOF > pucc-h.mc
- /***********************************************************
- ***********************************************************
- ****
- **** SENDMAIL CONFIGURATION FILE
- ****
- **** For PUCC-H
- ****
- **** $Id: pucc-h.mc,v 1.2 86/04/04 14:18:03 kcs Exp $
- ****
- ***********************************************************
- ***********************************************************/
-
-
- /***********************************************************
- ** local info
- ***********************************************************/
-
- macro
- m_sitename = "h.cc.purdue.edu"; /* internet hostname */
- berkname = "h.cc.purdue.edu"; /* berknet hostname */
-
- class
- m_sitename = { "h.cc.purdue.edu", pucc-h, pucch, h };
-
-
- #include "puccbase.cpp"
-
-
- options
- /***
- o_slog = "1"; /* override logging level in base.cpp */
-
-
- #include "zerobase.cpp"
-
-
- /***********************************************
- ** Machine dependent part of ruleset zero **
- ***********************************************/
-
- /* resolve berknet names */
-
- if ( < @berkhost > : path )
- resolve ( mailer ( berk ),
- host ( $1 ),
- user ( $2 ) ); /* @berkhost: ... */
-
- if ( usr < @berkhost > )
- resolve ( mailer ( berk ),
- host ( $2 ),
- user ( $1 ) ); /* user@berknethost */
-
- /* we don't do uucp */
-
- if ( anypath < @anypath ".UUCP" > anypath )
- resolve ( mailer ( error ),
- user ( "Non-Local UUCP Mail Unavailable" ) );
-
- /* resolve campus names (actually, all non-local names) */
-
- if ( anypath < @anypath hostname > anypath )
- resolve ( mailer ( pcl ),
- host ( $3 ),
- user ( $1<@$2$3>$4 ) ); /* user@campushost */
-
- if ( path )
- resolve ( mailer ( local ),
- user ( $1 ) ); /* everything else */
-
-
- /**************************************
- ** Host dependent address cleanup **
- **************************************/
-
-
- ruleset HOSTDEP_RW {
-
- if ( anypath uucphost!usr@path )
- retry ( $3@$4 ); /* drop uucp forward */
-
- if ( anypath campushost ".ARPA" anypath )
- retry ( $1$2$3 ); /* drop ".ARPA" */
-
- }
-
- #include "pclm.cpp"
- #include "berkm.cpp"
- SHAR_EOF
- if test 2042 -ne "`wc -c pucc-h.mc`"
- then
- echo shar: error transmitting pucc-h.mc '(should have been 2042 characters)'
- fi
- cat << \SHAR_EOF > phonenethosts.cpp
- /*******************************************************
- *******************************************************
- ****
- **** Phonenet Host List
- ****
- **** Mail to these sites should be routed
- **** through csnet-relay.
- ****
- **** $Id: phonenethosts.cpp,v 1.3 85/07/10 22:37:28 acu Exp $
- ****
- *******************************************************
- *******************************************************/
-
- class
- phonehosts = { albany, alcoa-atc, alcoa-sei, arizona, asu, bostonu,
- boulder, brandeis, brown, brown-cogsci, btl, buffalo,
- canisius, carleton, case, clemson, colgate, colostate,
- ct, dartmouth, depaul, digital, duke, emory, france,
- gatech, georgetown, germany, gmr, gte-labs, houston,
- hplabs, ibm-sj, icase, indiana, iowa-state, israel, jhu,
- kaist, kansas-state, kent, lsu, mcnc, mtu, ncar, nmsu,
- nmt, northeastern, nsf-cs, nwu, ohio-state, okstate,
- oregon-grad, oregon-state, penn-state, pitt, portland,
- princeton, rit, rpi, scarolina, smu, src, suny-bing,
- suny-sb, syr, tamu, tektronix, ti-csl, ti-eg, toronto,
- tufts, tulane, uab, ubc, ucd, ucf, uchicago, uconn,
- ucsb, ucsc, udenver, ufl, uhcl, uiowa, ukans, ulowell,
- umass, umass-boston, umich, umiss, umn-cs, unc, unh,
- unl, unlv, uno, uoregon, upenn, usc-cse, usl, utd,
- utenn, uvm, uwm, vanderbilt, virginia, vpi, wang-inst,
- waterloo, williams, wfu, wright, wsu };
- SHAR_EOF
- if test 1481 -ne "`wc -c phonenethosts.cpp`"
- then
- echo shar: error transmitting phonenethosts.cpp '(should have been 1481 characters)'
- fi
- cat << \SHAR_EOF > Makefile
- ######################################################################
- #
- # Makefile for Sendmail PUCC configuration files
- #
- # $Id: Makefile,v 1.4 86/04/04 14:16:17 kcs Exp $
- #
- ######################################################################
-
-
- PUCCSRCS=pucc-h.mc \
- pucc-i.mc \
- pucc-j.mc \
- pucc-k.mc \
- stat-l.mc \
- pucc-n.mc \
- pucc-s.mc
-
- GENSRCS=base.cpp \
- berkhosts.cpp \
- berkm.cpp \
- compat.cpp \
- localhosts.cpp \
- localm.cpp \
- pclm.cpp \
- puccbase.cpp \
- tcpm.cpp \
- version.cpp \
- zerobase.cpp
-
- SRCS= $(GENSRCS) $(PUCCSRCS)
-
- PUCCALL=pucc-h.cf \
- pucc-i.cf \
- pucc-j.cf \
- pucc-k.cf \
- stat-l.cf \
- pucc-n.cf \
- pucc-s.cf
-
- ALL= $(PUCCALL)
-
-
- .SUFFIXES: .mc .cf
-
- .mc.cf:
- /lib/cpp $*.mc > $*.cf
-
- all: $(ALL)
-
- ############################
- # special dependencies #
- ############################
-
- # pessimize -- basic dependencies
- $(ALL): base.cpp berkhosts.cpp localm.cpp localhosts.cpp pclm.cpp puccbase.cpp \
- version.cpp zerobase.cpp
-
- # hosts on berknet
- pucc-h.cf: berkm.cpp
-
- # hosts on the arpanet
- pucc-j.cf: tcpm.cpp
-
- # hosts on csnet
- pucc-j.cf: phonenethosts.cpp
-
- # mailers requiring backwards compatibility
- berkm.cpp tcpm.cpp: compat.cpp
-
- #####################
- # administrivia #
- #####################
-
- sources: $(SRCS)
-
- clean:
- rm -f $(ALL) a.out core errs
- SHAR_EOF
- if test 1283 -ne "`wc -c Makefile`"
- then
- echo shar: error transmitting Makefile '(should have been 1283 characters)'
- fi
- cat << \SHAR_EOF > base.cpp
- /***********************************************************
- ***********************************************************
- ****
- **** General configuration information
- ****
- **** This information is basically just "boiler-plate"; it must be
- **** there, but is essentially constant.
- ****
- **** Information in this file should be independent of location --
- **** i.e., although there are some policy decisions made, they are
- **** not specific to Berkeley per se.
- ****
- **** $Id: base.cpp,v 1.3 85/05/04 17:00:43 acu Exp Locker: acu $
- ****
- ***********************************************************
- ***********************************************************/
-
-
- #include "version.cpp"
-
-
- /************************
- ** Special macros **
- ************************/
-
- macro
- m_daemon = "MAILER-DAEMON";
- /* my name */
-
- m_ufrom = "From ${m_sreladdr} ${m_udate}";
- /* UNIX header format */
-
- m_addrops = ".:%@!^=/[]";
- /* delimiter (operator) characters */
-
- m_defaddr = concat (
- ifset (m_sname, "${m_sname} "),
- "<${m_sreladdr}>"
- );
- /* format of a total name */
-
- m_smtp = "${m_oname} Sendmail ${m_version}/${berkhosts} ready at ${m_adate}";
- /* SMTP login message */
-
-
- /***************
- ** Class **
- ***************/
-
- class
- uucphosts = {};
-
- /*****************
- ** Options **
- *****************/
-
- options
- o_alias = "/usr/lib/aliases";
- /* location of alias file */
-
- o_ewait = "10";
- /* wait up to ten minutes for alias file rebuild */
-
- o_bsub = ".";
- /* substitution for space (blank) characters */
-
- o_delivery = d_background;
- /* default delivery mode (deliver in background) */
-
- /***
- o_qwait = "";
- /* (don't) connect to "expensive" mailers */
-
- o_tmode = "0600";
- /* temporary file mode */
-
- o_gid = "3";
- /* default GID (network) */
-
- o_fsmtp = "/usr/lib/sendmail.hf";
- /* location of help file */
-
- o_slog = "9";
- /* log level */
-
- /***
- o_dnet = "ARPA";
- /* default network name */
-
- o_hformat = "";
- /* default messages to old style */
-
- o_qdir = "/usr/spool/mqueue";
- /* queue directory */
-
- o_tread = "2h";
- /* read timeout -- violates protocols */
-
- o_flog = "/usr/lib/sendmail.st";
- /* status file */
-
- o_safe = "";
- /* queue everything before transmission */
-
- o_qtimeout = "3d";
- /* default timeout interval */
-
- o_timezone = "EST";
- /* time zone names (V6 only) */
-
- o_dmuid = "5";
- /* default UID (network) */
-
- o_wizpass = "XXXXXXXXXXXXX";
- /* wizard's password */
-
- o_loadq = "999";
- /* load average at which we just queue messages */
-
- o_loadnc = "999";
- /* load average at which we refuse connections */
-
-
- /*****************************
- ** Message precedences **
- *****************************/
-
- precedence
- first-class = 0;
- special-delivery = 100;
- junk = -100;
-
-
- /***********************
- ** Trusted users **
- ***********************/
-
- trusted
- {root, daemon, uucp, network};
- {aat};
-
-
- /***************************
- ** Format of headers **
- ***************************/
-
- header
- define ("Received:", concat (ifset (m_shostname, "from ${m_shostname} "),
- "by ${m_oname}; ${m_adate}"));
- define ("Subject:", "");
-
- /***
- define ("Posted-Date:", "${m_odate}");
- ***/
-
- for (f_return)
- define ("Return-Path:", "<${m_sreladdr}>");
-
- for (f_date) {
- define ("Resent-Date:", "${m_odate}");
- define ("Date:", "${m_odate}");
- };
-
- for (f_from) {
- define ("Resent-From:", "${m_defaddr}");
- define ("From:", "${m_defaddr}");
- };
-
- for (f_full)
- define ("Full-Name:", "${m_sname}");
-
- /***
- for (f_locm)
- define ("Received-Date:", "${m_adate}");
- ***/
-
- for (f_mesg) {
- define ("Resent-Message-Id:", "<${m_ctime}.${m_qid}@${m_oname}>");
- define ("Message-Id:", "<${m_ctime}.${m_qid}@${m_oname}>");
- };
-
-
- /*************************
- *************************
- ** Rewriting rules **
- *************************
- *************************/
-
- /*************************
- ** Field definitions **
- *************************/
-
- field
- anypath : match (0*);
- path, usr, hostpath,
- domain : match (1*);
- this_host : match (1) in m_sitename;
- hostname : match (1);
- campushost : match (1) in campushosts;
- localdomain : match (1) in localname;
- topdomain_id : match (1) in topdomain;
- uucphost : match (1) in uucphosts;
- phonehost : match (1) in phonehosts;
-
- /********************************
- * Sender Field Pre-rewriting *
- ********************************/
-
- ruleset SEND_PRW {
-
- /***
- if ( anypath < anypath > anypath )
- retry ( $1$2$3 ); /* defocus */
-
- }
-
- /***********************************
- * Recipient Field Pre-rewriting *
- ***********************************/
-
- ruleset RECP_PRW {
-
- /***
- if ( anypath < anypath > anypath )
- retry ( $1$2$3 ); /* defocus */
-
- }
-
-
- /*********************************
- * Final Output Post-rewriting *
- *********************************/
-
- ruleset FINAL_RW {
-
- if ( @ )
- return (); /* handle <> error addr */
-
- /* externalize local domain info */
-
- /***
- if ( anypath < anypath "LOCAL" > anypath )
- retry ( $1 < $2 $localname > $3 ); /* change local info */
-
- /***
- if ( anypath < anypath "LOCAL.ARPA" > anypath )
- retry ( $1 < $2 $localname > $3 ); /* change local info */
-
- if ( anypath < path > anypath )
- retry ( $1$2$3 ); /* defocus */
-
- if ( @path: @path: usr )
- retry ( @$1,@$2:$3); /* <route-addr> canonical */
-
- /* UUCP must always be presented in old form */
-
- if ( usr @ hostname ".UUCP" )
- retry ( $2!$1); /* u@h.UUCP => h!u */
-
- /* delete duplicate local names -- mostly for arpaproto.mc */
-
- if ( usr % this_host @ this_host )
- retry ( $1@$3 ); /* u%UCB@UCB => u@UCB */
-
- if ( usr % this_host @ this_host ".ARPA" )
- retry ( $1@$3 ".ARPA" ); /* u%UCB@UCB => u@UCB */
-
- }
-
-
- /***************************
- * Name Canonicalization *
- ***************************/
-
- ruleset NAME_CANON {
-
- /* handle "from:<>" special case */
-
- if ( <> )
- return ( @ ); /* turn into magic token */
-
- /* basic textual canonicalization -- note RFC733 heuristic here */
-
- if ( anypath < anypath < anypath < path > anypath > anypath > anypath )
- retry ( $4 ); /* 3-level <> nesting */
-
- if ( anypath < anypath < path > anypath > anypath )
- retry ( $3 ); /* 2-level <> nesting */
-
- if ( anypath < path > anypath )
- retry ( $2 ); /* basic RFC821/822 parsing */
-
- if ( usr " at " path )
- retry ( $1@$2 ); /* "at" -> "@" for RFC 822 */
-
- /* make sure <@a,@b,@c:user@d> syntax is easy to parse -- undone later */
-
- if ( @path, usr )
- retry ( @$1:$2 ); /* change all "," to ":" */
-
- /* localize and dispose of route-based addresses */
-
- if ( @path: usr )
- return ( LOCAL_RW ( <@$1>:$2 ) ); /* handle <route-addr> */
-
- /* more miscellaneous cleanup */
-
- if ( path )
- next ( HOSTDEP_RW ( $1 ) ); /* host dependent cleanup */
-
- if ( path: anypath; @domain )
- return ( $1:$2;@$3 ); /* list syntax */
-
- if ( usr @ domain )
- next ( $1<@$2> ); /* focus on domain */
-
- if ( path < path @ domain > )
- retry ( $1$2<@$3> ); /* move gaze right */
-
- if ( path < @domain > )
- return ( LOCAL_RW ( $1<@$2> ) ); /* already canonical */
-
- /* convert old-style addresses to a domain-based address */
-
- if ( usr % hostpath )
- return ( LOCAL_RW ( $1<@$2> ) ); /* user%host */
-
- if ( hostname:usr )
- return ( LOCAL_RW ( $2<@$1> ) ); /* host:user */
-
- if ( hostname.usr )
- return ( LOCAL_RW ( $2<@$1> ) ); /* host.user */
-
- if ( hostname^usr )
- retry ( $1!$2); /* convert ^ to ! */
-
- if ( hostname!usr )
- return ( LOCAL_RW ( $2<@$1".UUCP"> ) ); /* resolve uucp names */
-
- if ( hostname=usr )
- return ( LOCAL_RW ( $2<@$1".BITNET"> ) ); /* resolve bitnet names */
- SHAR_EOF
- if test 7566 -ne "`wc -c base.cpp`"
- then
- echo shar: error transmitting base.cpp '(should have been 7566 characters)'
- fi
- cat << \SHAR_EOF > berkhosts.cpp
- /***********************************************************
- ***********************************************************
- ****
- **** Berknet Host List
- ****
- **** $Id: berkhosts.cpp,v 1.4 85/07/21 22:15:14 acu Exp Locker: acu $
- ****
- ***********************************************************
- ***********************************************************/
-
- class
- berkhosts = { C, pucc-c, puccc,
- D, pucc-d, puccd,
- E, pucc-e, pucce,
- X, asterix, library, libr,
- W, physics, pur-phy, phy-a,
- physics-galileo, purdue-galileo, galileo };
-
- SHAR_EOF
- if test 576 -ne "`wc -c berkhosts.cpp`"
- then
- echo shar: error transmitting berkhosts.cpp '(should have been 576 characters)'
- fi
- cat << \SHAR_EOF > berkm.cpp
- /***********************************************************
- ***********************************************************
- ****
- **** Berknet Mailer specification
- ****
- **** $Id: berkm.cpp,v 1.4 85/07/10 22:32:07 acu Exp $
- ****
- ***********************************************************
- ***********************************************************/
-
- #ifdef cppCOMPAT
- #include "compat.cpp"
- #endif
-
- mailer
- berk {
- Path = "/usr/net/bin/sendberkmail",
- Flags = { f_ffrom, f_strip, f_date, f_from, f_mesg, f_addrw };
- Sender = BERKSEND_RW;
- Recipient = BERKREC_RW;
- Argv = "sendberkmail -m ${m_rhost} -h ${m_hops} -t ${m_ruser}";
- Maxsize = "25000"
- };
-
- ruleset BERKSEND_RW {
-
- if ( path )
- next ( OLDSTYLE_RW ( $1 ) ); /* convert to old style */
- if ( hostname:usr )
- return ( $1:$2); /* old berknet as is */
-
- if ( path < @path > )
- return ( $1<@$2> ); /* don't modify arpanet */
-
- if ( hostname!usr )
- return ( $1!$2 ); /* don't modify uucp */
-
- if ( < @path > )
- return ( <@$1> ); /* don't modify <routeaddr> */
-
- if ( path )
- return ( $m_shostname:$1 ); /* make others relative */
-
- }
-
-
- ruleset BERKREC_RW {
-
- if ( path )
- next ( OLDSTYLE_RW ( $1 ) ); /* convert to old style */
-
- }
- SHAR_EOF
- if test 1211 -ne "`wc -c berkm.cpp`"
- then
- echo shar: error transmitting berkm.cpp '(should have been 1211 characters)'
- fi
- cat << \SHAR_EOF > compat.cpp
- /***********************************************************
- ***********************************************************
- ****
- **** Provide Backward Compatibility
- ****
- **** $Id: compat.cpp,v 1.4 85/11/24 22:46:32 acu Exp $
- ****
- ***********************************************************
- ***********************************************************/
-
- #define cppCOMPAT 4.2
-
- field
- berkhost: match (1) in berkhosts;
-
- /***************************************************
- * General code to convert back to old style names *
- ***************************************************/
-
- ruleset OLDSTYLE_RW {
-
- if ( usr < @berkhost > )
- return ( $2:$1 ); /* u@bhost => h:u */
-
- if ( usr < @hostname ".UUCP" > )
- retry ( $2!$1 ); /* u@host.UUCP => host!u */
-
- if ( usr @ hostpath ".ARPA" )
- retry ( $1@$2 ); /* u@host.ARPA => u@host */
-
- }
- SHAR_EOF
- if test 843 -ne "`wc -c compat.cpp`"
- then
- echo shar: error transmitting compat.cpp '(should have been 843 characters)'
- fi
- cat << \SHAR_EOF > localhosts.cpp
- /***********************************************************
- ***********************************************************
- ****
- **** Campus Host List
- ****
- **** $Id: localhosts.cpp,v 1.3 85/06/26 16:10:15 acu Exp $
- ****
- ***********************************************************
- ***********************************************************/
-
- class
- campushosts = { pucc-c, c, puccc,
- pucc-d, d, puccd,
- pucc-e, e, pucce,
- pucc-h, h, pucch,
- pucc-i, i, pucci,
- pucc-j, j, puccj, pucc,
- pucc-k, k, pucck,
- pucc-n, n, puccn,
- stat-l, l, statl, stat,
- purdue-arthur, arthur, purdue, purdue-cs,
- purdue-merlin, merlin,
- purdue-mordred, mordred, cs,
- purdue-bmec, purdue-ecn-bmec, ecn-bmec, bmec,
- purdue-chem, purchem, chemistry, purdue-chemistry,
- purdue-dipl, ecn-dipl, dipl,
- purdue-ecn-ca, ecn-ca, ca, ca-en,
- purdue-ecn-cb, ecn-cb, cb, cb-en,
- purdue-ecn-ec, ecn-ec, ec, ec-en,
- purdue-ecn-ed, ecn-ed, ed, ed-en,
- purdue-ecn-ee, ecn-ee, ee, ee-en, pur-ee, ecn, purdue-ecn,
- purdue-ecn-ef, ecn-ef, ef, ef-en,
- purdue-ecn-ef, ecn-ef, ef, ef-rsch,
- purdue-ecn-eg, ecn-eg, eg, eg-en,
- purdue-ecn-eh, ecn-eh, eh, eh-en, ecn-test,
- purdue-ecn-ei, ecn-ei, ei, ei-en,
- purdue-ecn-ej, ecn-ej, ej, ej-en,
- purdue-ecn-ek, ecn-ek, ek, ek-en,
- purdue-ecn-ga, ecn-ga, ga, ga-en,
- purdue-ecn-gb, ecn-gb, gb, gb-en,
- purdue-ecn-ma, ecn-ma, ma, ma-en,
- purdue-ecn-mb, ecn-mb, mb, mb-en,
- purdue-ecn-md, ecn-md, md, md-en,
- purdue-ecn-pb, ecn-pb, pb, pb-en, cidmac,
- purdue-ecn-pc, ecn-pc, pc, pc-en,
- purdue-galileo, galileo, physics-galileo,
- purdue-malcolm, ecn-malcolm, malcolm,
- purdue-newton, newton, physics-newton,
- purdue-trillian, ecn-trillian, trillian,
- purdue-vlsi, puvlsi, vlsi,
- purdue-zaphod, ecn-zaphod, zaphod };
-
- /* non-standard names for CS hosts (translated to CS) */
-
- othercs = { cs-arthur, cs-mordred, cs-merlin };
- SHAR_EOF
- if test 1906 -ne "`wc -c localhosts.cpp`"
- then
- echo shar: error transmitting localhosts.cpp '(should have been 1906 characters)'
- fi
- cat << \SHAR_EOF > pclm.cpp
- /****************************************************************************
- ****************************************************************************
- ****
- **** PCL11 Mailer specification
- ****
- **** Messages processed by this configuration are assumed to remain
- **** in the same domain. Hence, they may not necessarily correspond
- **** to RFC822 in all details.
- ****
- **** $Id: pclm.cpp,v 1.4 85/06/26 15:10:46 acu Exp $
- ****
- ****************************************************************************
- ****************************************************************************/
-
- mailer
- pcl {
- Path = "[IPC]",
- Flags = { f_mult, f_date, f_from, f_mesg, f_upperu,
- f_addrw, f_dot, f_smtp },
- Sender = HOSTNAME_RW,
- Recipient = HOSTNAME_RW,
- Argv = "IPC ${m_rhost}",
- Maxsize = "100000"
- };
-
- ruleset HOSTNAME_RW {
-
- if ( anypath < @path > anypath )
- return ( $1<@$2>$3 ); /* already ok */
-
- if ( path )
- return ( $1<@$m_sitename ); /* tack on our hostname */
-
- }
- SHAR_EOF
- if test 995 -ne "`wc -c pclm.cpp`"
- then
- echo shar: error transmitting pclm.cpp '(should have been 995 characters)'
- fi
- cat << \SHAR_EOF > localm.cpp
- /***********************************************************
- ***********************************************************
- ****
- **** Local and Program Mailer specification
- ****
- **** $Id: localm.cpp,v 1.4 85/07/10 22:38:09 acu Exp $
- ****
- ***********************************************************
- ***********************************************************/
-
- mailer
- local {
- Path = "/bin/mail",
- Flags = { f_rfrom, f_locm, f_strip, f_date, f_from,
- f_mesg, f_mult, f_noufrom },
- Sender = MAGIC_RW,
- Recipient = UNIMPLEMENTED,
- Argv = "mail -d ${m_ruser}",
- Maxsize = "200000"
- };
-
- prog {
- Path = "/bin/sh",
- Flags = { f_locm, f_strip, f_date, f_from, f_mesg, f_upperu },
- Sender = MAGIC_RW,
- Recipient = UNIMPLEMENTED,
- Argv = "sh -c ${m_ruser}",
- Maxsize = "200000"
- };
-
-
- ruleset MAGIC_RW {
-
- if ( @ )
- return ( "MAILER-DAEMON" ); /* errors to mailer-daemon */
-
- }
- SHAR_EOF
- if test 893 -ne "`wc -c localm.cpp`"
- then
- echo shar: error transmitting localm.cpp '(should have been 893 characters)'
- fi
- cat << \SHAR_EOF > pucc-j.mc
- /***********************************************************
- ***********************************************************
- ****
- **** SENDMAIL CONFIGURATION FILE
- ****
- **** For PUCC-J
- ****
- **** $Id: pucc-j.mc,v 1.2 86/04/04 14:20:57 kcs Exp $
- ****
- ***********************************************************
- ***********************************************************/
-
-
-
- /***********************************************************
- ** local info
- ***********************************************************/
-
- macro
- m_sitename = "j.cc.purdue.edu"; /* internet hostname */
- arpa_name = "asc"; /* our arpanet name */
-
- class
- m_sitename = { "j.cc.purdue.edu", pucc-j, puccj, j, pucc, purdue-asc,
- purdue-205-gw, purdue-asc-tn, asc, "asc.purdue.edu",
- "asc.cc.purdue.edu", 205-gw, asc-tn };
-
- arpa_name = { "asc.purdue.edu", "asc.cc.purdue.edu", asc, purdue-asc,
- purdue-205-gw };
-
- #include "phonenethosts.cpp"
-
- #include "puccbase.cpp"
-
- #include "zerobase.cpp"
-
- /**********************************************
- ** Machine dependent part of ruleset zero **
- **********************************************/
-
- /* send berknet names through relay */
-
- if ( < @berkhost > : path )
- resolve ( mailer ( pcl ),
- host ( $relay_host ),
- user ( $2<@$1> ) ); /* @berkhost: ... */
-
- if ( anypath < @anypath berkhost > anypath )
- resolve ( mailer ( pcl ),
- host ( $relay_host ),
- user ( $1<@$2$3>$4 ) ); /* user@berknethost */
-
- /* resolve campus names */
-
- if ( anypath < @anypath campushost > anypath )
- resolve ( mailer ( pcl ),
- host ( $3 ),
- user ( $1<@$2$3>$4 ) ); /* user@campushost */
-
- /* send csnet names through relay */
-
- if ( anypath < @phonehost > anypath )
- resolve ( mailer ( tcp ),
- host ( "CSNet-Relay" ),
- user ( $1%$2<@"CSNet-Relay">$3 ) );
-
- if ( anypath < @phonehost ".ARPA" > anypath )
- resolve ( mailer ( tcp ),
- host ( "CSNet-Relay" ),
- user ( $1%$2<@"CSNet-Relay">$3 ) );
-
- if ( anypath < @path ".CSNET" > anypath )
- resolve ( mailer ( tcp ),
- host ( "CSNet-Relay" ),
- user ( $1%$2<@"CSNet-Relay">$3 ) );
-
- /* we don't do uucp */
-
- if ( anypath < @anypath ".UUCP" > anypath )
- resolve ( mailer ( error ),
- user ( "Non-Local UUCP Mail Unavailable" ) );
-
- /* we don't do bitnet (yet) */
-
- if ( anypath < @anypath ".BITNET" > anypath )
- resolve ( mailer ( error ),
- user ( "Bitnet Mail Unavailable At This Time" ) );
-
- /* other non-local names to the arpanet */
-
- if ( anypath < @anypath > anypath )
- resolve ( mailer ( tcp ),
- host ( $2 ),
- user ( $1<@$2>$3 ) ); /* user@arpahost */
-
- /* remaining names must be local */
-
- if ( path )
- resolve ( mailer ( local ),
- user ( $1 ) ); /* everything else */
-
- /**************************************
- ** Host dependent address cleanup **
- **************************************/
-
- ruleset HOSTDEP_RW {
-
- if ( anypath uucphost!usr@hostpath )
- retry ( $3@$4 ); /* drop uucp forward */
-
- }
-
- #include "pclm.cpp"
- #include "tcpm.cpp"
- SHAR_EOF
- if test 3004 -ne "`wc -c pucc-j.mc`"
- then
- echo shar: error transmitting pucc-j.mc '(should have been 3004 characters)'
- fi
- cat << \SHAR_EOF > pucc-i.mc
- /***********************************************************
- ***********************************************************
- ****
- **** SENDMAIL CONFIGURATION FILE
- ****
- **** For PUCC-I
- ****
- **** $Id: pucc-i.mc,v 1.2 86/04/04 14:19:21 kcs Exp $
- ****
- ***********************************************************
- ***********************************************************/
-
-
-
- /***********************************************************
- ** local info
- ***********************************************************/
-
- macro
- m_sitename = "i.cc.purdue.edu"; /* internet hostname */
-
- class
- m_sitename = { "i.cc.purdue.edu", pucc-i, pucci, i };
-
- #include "puccbase.cpp"
-
- options
- /***
- o_slog = "1"; /* override logging level in base.cpp */
-
- #include "zerobase.cpp"
-
- /**********************************************
- ** Machine dependent part of ruleset zero **
- **********************************************/
-
- /* send berknet names through relay */
-
- if ( < @berkhost > : path )
- resolve ( mailer ( pcl ),
- host ( $relay-host ),
- user ( $2<@$1> ) ); /* @berkhost: ... */
-
- if ( anypath < @anypath berkhost > anypath )
- resolve ( mailer ( pcl ),
- host ( $relay-host ),
- user ( $1<@$2$3>$4 ) ); /* user@berknethost */
-
- /* we don't do uucp */
-
- if ( anypath < @anypath ".UUCP" > anypath )
- resolve ( mailer ( error ),
- user ( "Non-Local UUCP Mail Unavailable" ) );
-
- /* resolve campus names (actually, all non-local names) */
-
- if ( anypath < @anypath hostname > anypath )
- resolve ( mailer ( pcl ),
- host ( $3 ),
- user ( $1<@$2$3>$4 ) ); /* user@campushost */
-
- /* remaining names must be local */
-
- if ( path )
- resolve ( mailer ( local ),
- user ( $1 ) ); /* everything else */
-
-
- /**************************************
- ** Host dependent address cleanup **
- **************************************/
-
- ruleset HOSTDEP_RW {
-
- if ( anypath uucphost!usr@path )
- retry ( $3@$4 ); /* drop uucp forward */
-
- if ( anypath campushost ".ARPA" anypath )
- retry ( $1$2$3 ); /* drop ".ARPA" */
-
- }
-
- #include "pclm.cpp"
- SHAR_EOF
- if test 2059 -ne "`wc -c pucc-i.mc`"
- then
- echo shar: error transmitting pucc-i.mc '(should have been 2059 characters)'
- fi
- cat << \SHAR_EOF > puccbase.cpp
-
- /************************************************
- ************************************************
- ****
- **** General configuration information
- ****
- **** $Id: puccbase.cpp,v 1.4 86/04/04 14:25:46 kcs Exp $
- ****
- ************************************************
- ************************************************/
-
- /********************
- * General Macros *
- ********************/
-
- macro
- localname = "PURDUE.EDU"; /* local domain names */
- relay_host = "pucc-h"; /* berknet relay host */
- m_oname = "${m_sitename}"; /* my official hostname (sort of */
-
- class
- localname = { "PURDUE.EDU", PURDUE, CC, Purdue-CS, CS, ECN };
- topdomain = { LOCAL, ARPA, UUCP, BITNET, CSNET }; /* known top-level domains */
-
- #include "localhosts.cpp"
- #include "berkhosts.cpp"
- #include "base.cpp"
-
- /*********************
- * Rewriting rules *
- *********************/
-
- /*** special local conversions ***/
- S6
- # R$*<@$*$=D>$* $1<@$2LOCAL>$4 convert local domain
- # R$*<@$*$=D.ARPA>$* $1<@$2LOCAL>$4
- R$*<@$+.$=T.$=T>$* $1<@$2.$3>$5 delete dup top level
- R$*<@$*$=S.UUCP>$* $1<@$2$3>$4 local UUCP direct
- R$*<@$*$=Z.UUCP>$* $1<@$2$3>$4 local UUCP direct
- R$*<@$=Y$*>$* $1<@cs$3>$4 cs-host => cs kludge
-
-
- #include "localm.cpp"
- SHAR_EOF
- if test 1219 -ne "`wc -c puccbase.cpp`"
- then
- echo shar: error transmitting puccbase.cpp '(should have been 1219 characters)'
- fi
- chdir ..
- cat << \SHAR_EOF > KEY
- USES FOR MACROS AND CLASSES
-
- MACROS CLASSES
- ====== =======
-
- A arpanet name arpanet names
- B
- C comp ctr gateway (ucbvax only) comp ctr hosts (ucbvax & jade only)
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- D full local domain name (bottom) local domain names $locdomain
- E
- F forwarding host, $R default hosts that we cannot talk directly to
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- G
- H internet name all names this host is known by
- I
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- J
- K
- L
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- M
- N ncp gateway list of ncp-only hosts
- O
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- P
- Q
- R relay host (e.g., ucbvax)
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- S known internet hostnames
- T top level domains
- U uucp name uucp names
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- V a machine with local uucp link uucp sites on $V machine
- W a machine with local uucp link uucp sites on $W machine
- X a machine with local uucp link uucp sites on $X machine
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- Y
- Z config version code known berknet hosts $berkhosts
- SHAR_EOF
- if test 1377 -ne "`wc -c KEY`"
- then
- echo shar: error transmitting KEY '(should have been 1377 characters)'
- fi
- cat << \SHAR_EOF > README
- Ironically enough, PUCC doesn't yet use ease for our configuration
- files. These are approximations to what will eventually become
- our configuration files. They are not entirely finished, but the ones
- in "FINIS" are pretty much done, according to what Jim Schoner said
- before he left. Someday I'll finish them...
-
- Jeff Smith
- SHAR_EOF
- if test 327 -ne "`wc -c README`"
- then
- echo shar: error transmitting README '(should have been 327 characters)'
- fi
- cat << \SHAR_EOF > pucc-k.mc
- /***********************************************************
- ***********************************************************
- ****
- **** SENDMAIL CONFIGURATION FILE
- ****
- **** For PUCC-K
- ****
- **** $Id: pucc-k.mc,v 1.2 86/04/04 14:22:32 kcs Exp $
- ****
- ***********************************************************
- ***********************************************************/
-
-
-
- /***********************************************************
- ** local info
- ***********************************************************/
-
- /* internet hostname */
- Dwk.cc.purdue.edu
- Cwk.cc.purdue.edu pucc-k pucck k
-
- #include "puccbase.cpp"
-
- /* override logging level in base.cpp */
- # OL1
-
- #include "zerobase.cpp"
-
- ################################################
- ### Machine dependent part of ruleset zero ###
- ################################################
-
- # send berknet names through relay
- R<@$=Z>:$+ $#pcl$@$R$:$2<@$1> @berkhost: ...
- R$*<@$*$=Z>$* $#pcl$@$R$:$1<@$2$3>$4 user@berknethost
-
- # we don't do uucp
- R$*<@$*.UUCP>$* $#error$:Non-Local UUCP Mail Unavailable
-
- # resolve campus names (actually, all non-local names)
- R$*<@$*$->$* $#pcl$@$3$:$1<@$2$3>$4 user@campushost
-
- # remaining names must be local
- R$+ $#local$:$1 everything else
-
- ########################################
- ### Host dependent address cleanup ###
- ########################################
-
- S8
- R$*$=U!$+@$+ $3@$4 drop uucp forward
- R$*$=S.ARPA$* $1$2$3 drop ".ARPA"
-
-
- include(pclm.cpp)
- SHAR_EOF
- if test 1462 -ne "`wc -c pucc-k.mc`"
- then
- echo shar: error transmitting pucc-k.mc '(should have been 1462 characters)'
- fi
- cat << \SHAR_EOF > pucc-n.mc
- /***********************************************************
- ***********************************************************
- ****
- **** SENDMAIL CONFIGURATION FILE
- ****
- **** For PUCC-N
- ****
- **** $Id: pucc-n.mc,v 1.2 86/04/04 14:23:57 kcs Exp $
- ****
- ***********************************************************
- ***********************************************************/
-
-
-
- /***********************************************************
- ** local info
- ***********************************************************/
-
- /* internet hostname */
- Dwn.cc.purdue.edu
- Cwn.cc.purdue.edu pucc-n puccn n
-
- #include "puccbase.cpp"
-
- # override logging level in base.cpp
- # OL1
-
- include(zerobase.cpp)
-
- ################################################
- ### Machine dependent part of ruleset zero ###
- ################################################
-
- # send berknet names through relay
- R<@$=Z>:$+ $#pcl$@$R$:$2<@$1> @berkhost: ...
- R$*<@$*$=Z>$* $#pcl$@$R$:$1<@$2$3>$4 user@berknethost
-
- # we don't do uucp
- R$*<@$*.UUCP>$* $#error$:Non-Local UUCP Mail Unavailable
-
- # resolve campus names (actually, all non-local names)
- R$*<@$*$->$* $#pcl$@$3$:$1<@$2$3>$4 user@campushost
-
- # remaining names must be local
- R$+ $#local$:$1 everything else
-
- ########################################
- ### Host dependent address cleanup ###
- ########################################
-
- S8
- R$*$=U!$+@$+ $3@$4 drop uucp forward
- R$*$=S.ARPA$* $1$2$3 drop ".ARPA"
-
-
- include(pclm.cpp)
- SHAR_EOF
- if test 1456 -ne "`wc -c pucc-n.mc`"
- then
- echo shar: error transmitting pucc-n.mc '(should have been 1456 characters)'
- fi
- cat << \SHAR_EOF > pucc-s.mc
- /***********************************************************
- ***********************************************************
- ****
- **** SENDMAIL CONFIGURATION FILE
- ****
- **** For PUCC-S
- ****
- **** $Id: pucc-s.mc,v 1.1 86/03/31 11:16:37 kcs Exp Locker: kcs $
- ****
- ***********************************************************
- ***********************************************************/
-
-
-
- /***********************************************************
- ** local info
- ***********************************************************/
-
- /* internet hostname */
- Dws.cc.purdue.edu
- Cws.cc.purdue.edu pucc-s puccs s
-
- #include "puccbase.cpp"
-
- /* override logging level in base.cpp */
- # OL1
-
- include(zerobase.cpp)
-
- ################################################
- ### Machine dependent part of ruleset zero ###
- ################################################
-
- # send berknet names through relay
- R<@$=Z>:$+ $#pcl$@$R$:$2<@$1> @berkhost: ...
- R$*<@$*$=Z>$* $#pcl$@$R$:$1<@$2$3>$4 user@berknethost
-
- # we don't do uucp
- R$*<@$*.UUCP>$* $#error$:Non-Local UUCP Mail Unavailable
-
- # resolve campus names (actually, all non-local names)
- R$*<@$*$->$* $#pcl$@$3$:$1<@$2$3>$4 user@campushost
-
- # remaining names must be local
- R$+ $#local$:$1 everything else
-
- ########################################
- ### Host dependent address cleanup ###
- ########################################
-
- S8
- R$*$=U!$+@$+ $3@$4 drop uucp forward
- R$*$=S.ARPA$* $1$2$3 drop ".ARPA"
-
-
- include(pclm.cpp)
- SHAR_EOF
- if test 1472 -ne "`wc -c pucc-s.mc`"
- then
- echo shar: error transmitting pucc-s.mc '(should have been 1472 characters)'
- fi
- cat << \SHAR_EOF > puccbase.cpp
-
- /************************************************
- ************************************************
- ****
- **** General configuration information
- ****
- **** $Id: puccbase.cpp,v 1.4 86/04/04 14:25:46 kcs Exp $
- ****
- ************************************************
- ************************************************/
-
- /********************
- * General Macros *
- ********************/
-
- macro
- localname = "PURDUE.EDU"; /* local domain names */
- relay_host = "pucc-h"; /* berknet relay host */
- m_oname = "${m_sitename}"; /* my official hostname (sort of */
-
- class
- localname = { "PURDUE.EDU", PURDUE, CC, Purdue-CS, CS, ECN };
- topdomain = { LOCAL, ARPA, UUCP, BITNET, CSNET }; /* known top-level domains */
-
- #include "localhosts.cpp"
- #include "berkhosts.cpp"
- #include "base.cpp"
-
- /*********************
- * Rewriting rules *
- *********************/
-
- /*** special local conversions ***/
- S6
- # R$*<@$*$=D>$* $1<@$2LOCAL>$4 convert local domain
- # R$*<@$*$=D.ARPA>$* $1<@$2LOCAL>$4
- R$*<@$+.$=T.$=T>$* $1<@$2.$3>$5 delete dup top level
- R$*<@$*$=S.UUCP>$* $1<@$2$3>$4 local UUCP direct
- R$*<@$*$=Z.UUCP>$* $1<@$2$3>$4 local UUCP direct
- R$*<@$=Y$*>$* $1<@cs$3>$4 cs-host => cs kludge
-
-
- #include "localm.cpp"
- SHAR_EOF
- if test 1219 -ne "`wc -c puccbase.cpp`"
- then
- echo shar: error transmitting puccbase.cpp '(should have been 1219 characters)'
- fi
- cat << \SHAR_EOF > stat-l.mc
- ############################################################
- ############################################################
- #####
- ##### SENDMAIL CONFIGURATION FILE
- #####
- ##### For STAT-L
- #####
- ##### $Id: stat-l.mc,v 1.2 86/04/04 14:27:47 kcs Exp $
- #####
- ############################################################
- ############################################################
-
-
-
- ############################################################
- ### local info
- ############################################################
-
- # internet hostname
- Dwstat-l
- Cwstat-l statl l stat
-
- include(puccbase.cpp)
-
- include(zerobase.cpp)
-
- ################################################
- ### Machine dependent part of ruleset zero ###
- ################################################
-
- # send berknet names through relay
- R<@$=Z>:$+ $#pcl$@$R$:$2<@$1> @berkhost: ...
- R$*<@$*$=Z>$* $#pcl$@$R$:$1<@$2$3>$4 user@berknethost
-
- # we don't do uucp
- R$*<@$*.UUCP>$* $#error$:Non-Local UUCP Mail Unavailable
-
- # resolve campus names (actually, all non-local names)
- R$*<@$*$->$* $#pcl$@$3$:$1<@$2$3>$4 user@campushost
-
- # remaining names must be local
- R$+ $#local$:$1 everything else
-
- ########################################
- ### Host dependent address cleanup ###
- ########################################
-
- S8
- R$*$=U!$+@$+ $3@$4 drop uucp forward
- R$*$=S.ARPA$* $1$2$3 drop ".ARPA"
-
-
- include(pclm.cpp)
- SHAR_EOF
- if test 1384 -ne "`wc -c stat-l.mc`"
- then
- echo shar: error transmitting stat-l.mc '(should have been 1384 characters)'
- fi
- cat << \SHAR_EOF > tcpm.cpp
-
- /***********************************************************
- ***********************************************************
- ****
- **** Arpanet TCP Mailer specification
- ****
- **** Messages processed by this specification are assumed to leave
- **** the local domain -- hence, they must be canonical according to
- **** RFC822 etc.
- ****
- **** $Id: tcpm.cpp,v 1.5 86/04/04 14:29:16 kcs Exp $
- ****
- ***********************************************************
- ***********************************************************/
-
- #ifndef cppCOMPAT
- #include "compat.cpp"
- #endif
-
- mailer
- tcp { Path = "[IPC]",
- Flags = { f_mult, f_date, f_from, f_mesg, f_upperu,
- f_dot, f_llimit },
- Sender = MAP_RW,
- Recipient = MAP_RW,
- Argv = "IPC ${m_rhost}",
- Eol = "\r\n",
- Maxsize = "100000"
- };
-
-
- ruleset MAP_RW {
-
- /* pass <route-addr>'s through */
-
- /***
- if ( < @path > anypath )
- return ( <@canon($1)>$2 ); /* resolve <route-addr> */
-
- if ( < @path > anypath )
- return ( <@$1>$2 ); /* resolve <route-addr> */
-
- /* map colons to dots everywhere..... */
-
- if ( anypath : anypath )
- retry ( $1.$2 ); /* map colons to dots */
-
- /* handle the simple case.... */
-
- /***
- if ( path < @hostname ".ARPA" > )
- return ( $1<@canon($2".ARPA")> ); /* user@host.ARPA */
-
- if ( path < @hostname ".ARPA" > )
- return ( $1<@$2".ARPA"> ); /* user@host.ARPA */
-
- /***
- if ( path < @hostpath ".LOCAL" > )
- # R$+<@$+.LOCAL> $@$1%$2<@$A> local hosts
- # R$+<@$+.BITNET> $@$1%$2.BITNET<@$A> user@host.BITNET
- # R$+<@$+.CSNET> $@$1.$2<@CSNET-RELAY.ARPA> user@host.CSNET
-
- # handle other external cases
- # R$+<@$-> $@$1<@$[$2$]> no .ARPA on simple names
- R$+<@$-> $@$1<@$2> no .ARPA on simple names
- R$+<@$+.$-> $@$1<@$2$3> already ok (we think)
- # R$+<@$+.$-.ARPA> $@$1%$2<@$[$3.ARPA$]> approximate something
- R$+<@[$+]> $@$1<@[$2]> already ok
-
- # convert remaining addresses to old format and externalize appropriately
- R$+ $:$>5$1 => old format
- R$-:$+ $@$1.$2<@$A.$D> convert berk hosts
- R$* $@$1<@$A.$D> tack on our host name
- SHAR_EOF
- if test 2055 -ne "`wc -c tcpm.cpp`"
- then
- echo shar: error transmitting tcpm.cpp '(should have been 2055 characters)'
- fi
- chdir ..
- # End of shell archive
- exit 0
-
-