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