home *** CD-ROM | disk | FTP | other *** search
- Subject: v22i062: ELM mail syste, release 2.3, Part03/26
- Newsgroups: comp.sources.unix
- Approved: rsalz@uunet.UU.NET
- X-Checksum-Snefru: f71bd890 727969a2 d8cc63cd c5702676
-
- Submitted-by: Syd Weinstein <syd@dsinc.dsi.com>
- Posting-number: Volume 22, Issue 62
- Archive-name: elm2.3/part03
-
- ---- Cut Here and unpack ----
- #!/bin/sh
- # this is part 3 of a multipart archive
- # do not concatenate these parts, unpack them in order with /bin/sh
- # file Configure continued
- #
- CurArch=3
- if test ! -r s2_seq_.tmp
- then echo "Please unpack part 1 first!"
- exit 1; fi
- ( read Scheck
- if test "$Scheck" != $CurArch
- then echo "Please unpack part $Scheck next!"
- exit 1;
- else exit 0; fi
- ) < s2_seq_.tmp || exit 1
- echo "x - Continuing file Configure"
- sed 's/^X//' << 'SHAR_EOF' >> Configure
- X fi
- Xelse
- X if $test -r /usr/include/termio.h ; then
- X d_termio="$define"
- X echo "termio.h found."
- X elif $test -r /usr/include/sgtty.h ; then
- X echo "sgtty.h found."
- X else
- X echo "Neither termio.h nor sgtty.h found--you could have problems."
- X fi
- Xfi
- X
- X: see if we should include time.h, sys/time.h, or both
- Xcat <<'EOM'
- X
- XTesting to see if we should include <time.h>, <sys/time.h> or both.
- XI'm now running the test program...
- XEOM
- X$cat >try.c <<'EOCP'
- X#ifdef I_TIME
- X#include <time.h>
- X#endif
- X#ifdef I_SYSTIME
- X#ifdef SYSTIMEKERNEL
- X#define KERNEL
- X#endif
- X#include <sys/time.h>
- X#endif
- Xmain()
- X{
- X struct tm foo;
- X#ifdef S_TIMEVAL
- X struct timeval bar;
- X#endif
- X if (foo.tm_sec == foo.tm_sec)
- X exit(0);
- X#ifdef S_TIMEVAL
- X if (bar.tv_sec == bar.tv_sec)
- X exit(0);
- X#endif
- X exit(1);
- X}
- XEOCP
- Xflags=''
- Xfor s_timeval in '-DS_TIMEVAL' ''; do
- X for d_systimekernel in '' '-DSYSTIMEKERNEL'; do
- X for i_time in '' '-DI_TIME'; do
- X for i_systime in '-DI_SYSTIME' ''; do
- X case "$flags" in
- X '') echo Trying $i_time $i_systime $d_systimekernel $s_timeval
- X if $cc $ccflags $i_time $i_systime $d_systimekernel $s_timeval \
- X try.c -o try >/dev/null 2>&1 ; then
- X set X $i_time $i_systime $d_systimekernel $s_timeval
- X shift
- X flags="$*"
- X echo Succeeded with $flags
- X fi
- X ;;
- X esac
- X done
- X done
- X done
- Xdone
- Xcase "$flags" in
- X*SYSTIMEKERNEL*) d_systimekernel="$define";;
- X*) d_systimekernel="$undef";;
- Xesac
- Xcase "$flags" in
- X*I_TIME*) i_time="$define";;
- X*) i_time="$undef";;
- Xesac
- Xcase "$flags" in
- X*I_SYSTIME*) i_systime="$define";;
- X*) i_systime="$undef";;
- Xesac
- X$rm -f try.c try
- X
- Xtimeincl=""
- Xif $test "$i_time" = define ; then
- X timeincl="/usr/include/time.h"
- Xfi
- Xif $test "$i_systime" = define ; then
- X timeincl="$timeincl /usr/include/sys/time.h"
- Xfi
- X$cat $timeincl /dev/null | $cppstdin $cppminus > try.c 2>&1
- Xif $contains 'tz_minuteswest' try.c > /dev/null 2>&1 ; then
- X echo "You have tz_minuteswest defined in $timeincl rather than timezone."
- X d_tz_min="$define"
- Xelse
- X echo "You have timezone defined in $timeincl rather than tz_minuteswest."
- X d_tz_min="$undef"
- Xfi
- X$rm -f try.c
- X: check for valid reply/to fields
- Xcase "$d_useembed" in
- X"$define") dflt=y;;
- X"$undef") dflt=n;;
- X*) dflt=n;;
- Xesac
- X$cat <<EOM
- X
- XOne of the more annoying quirks of the UUCP network and various other
- Xsystems that interact with it are that everyone seems to have different
- Xideas about how to do routing, etc. Therefore, a lot of times email
- Xwill arrive from offsite with corrupt, unreply-able "Reply-To:" and
- X"From:" fields. This next question relates to whether your site is
- Xliable to get mangled fields or not...
- X
- XDoes your site receive email with valid "Reply-To:" and "From:" fields?
- X
- XEOM
- X$echo $n "Use Reply-To: and From: addresses? [$dflt] $c"
- Xrp="Are Reply-to: and From: addresses reliable? [$dflt]"
- X. myread
- Xcase "$ans" in
- Xy*) d_useembed="$define";;
- X*) d_useembed="$undef";;
- Xesac
- X
- X: check for utimbuf structure
- Xecho " "
- Xcase "$d_utimbuf" in
- X"$define") ;;
- X"$undef") ;;
- X*)
- X: Pyramid passes the att compile test but still needs the definition
- X if Cppsym pyr ; then
- X if $test "`/bin/universe`" = "att" ; then
- X d_utimbuf="$define"
- X echo "I will use my 'utimbuf' structure..."
- X fi
- X fi
- X if $test "$d_utimbuf" != "$define"; then
- X echo "Checking to see if struct utimbuf exists."
- X $cat >try.c <<'EOCP'
- X#include <stdio.h>
- X#include <fcntl.h>
- X#include <sys/types.h>
- X#include <sys/stat.h>
- X#define far /* to keep XENIX from complaining */
- X#include <sys/file.h>
- X#include <time.h>
- Xmain()
- X{
- Xstruct utimbuf test;
- Xtest.actime = 0;
- Xexit(1);
- X}
- XEOCP
- X if $cc try.c -o try >/dev/null 2>&1 ; then
- X d_utimbuf="$undef"
- X echo "You have the 'utimbuf' structure..."
- X else
- X echo "I will use my 'utimbuf' structure..."
- X d_utimbuf="$define"
- X fi
- X $rm -f try.c try.o try
- X fi
- X ;;
- Xesac
- X
- X: see if there is a vfork
- Xset vfork d_vfork
- Xeval $inlibc
- X
- X: see if signal is declared as pointer to function returning int or void
- Xecho " "
- X$cppstdin $cppflags < /usr/include/signal.h >$$.tmp
- Xif $contains 'int.*signal' $$.tmp >/dev/null 2>&1 ; then
- X echo "You have int (*signal())() instead of void."
- X d_voidsig="$undef"
- Xelif $contains 'void.*signal' $$.tmp >/dev/null 2>&1 ; then
- X echo "You have void (*signal())() instead of int."
- X d_voidsig="$define"
- Xelif $test -z "$d_voidsig"; then
- X echo $n "As you already told me, signal handlers return "
- X if $test "$d_voidsig" = "$define"; then
- X echo void
- X else
- X echo int
- X fi
- Xelse
- X echo "I can't determine whether signal handlers return void or int..."
- X echo "I'm assuming they return void like ANSI and POSIX want"
- X d_voidsig="$define"
- Xfi
- Xrm -f $$.tmp
- X
- X: get user and system aliases sizes
- X$cat <<EOM
- X
- XThe number of aliases allowed for users of the Elm system can vary
- Xbased on system speed and memory available. If you have a fast system
- Xand/or a lot of memory you can enter a fairly large number of aliases
- Xfor the next two questions...if not, you'll probably want to enter the
- Xsuggested small-system values. (This applies to the speed of the
- Xswapping on your system too - if you're on a FAST system, use the big
- Xvalues!)
- X
- XFirst, how many aliases should be allowed for an individual user?
- XThe suggested values are 503 for blindly fast systems,
- X251 for average systems and 127 for slow systems.
- XEOM
- X
- Xcase "$maxuseralias" in
- X '') dflt=251;;
- X *) dflt=$maxuseralias;;
- Xesac
- Xcont=true
- Xwhile $test "$cont" ; do
- X echo " "
- X rp="Number of user aliases: [$dflt]"
- X $echo $n "$rp $c"
- X . myread
- X maxuseralias="$ans"
- X if $test "$maxuseralias" -lt 50 -o "$maxuseralias" -gt 1000 ; then
- X $cat <<EOM
- XPretty strange answer! I think you should reconsider and try a number
- Xfrom the range 50-1000.
- XEOM
- X odflt=$dflt
- X if $test "$fastread" = yes; then
- X dflt=y
- X else
- X dflt=n
- X fi
- X rp="Should I use your answer of $maxuseralias user aliases anyway? [$dflt]"
- X $echo $n "$rp $c"
- X . myread
- X dflt=$odflt
- X case "$ans" in
- X y*) cont='';;
- X esac
- X else
- X cont=''
- X fi
- Xdone
- X
- Xcase "$maxsysalias" in
- X '') case "$maxuseralias" in
- X 127) dflt=223;;
- X 503) dflt=739;;
- X * ) dflt=503;;
- X esac
- X ;;
- X *) dflt=$maxsysalias;;
- Xesac
- Xcont=true
- Xwhile $test "$cont" ; do
- X echo " "
- X rp="Maximum number of system aliases: [$dflt]"
- X $echo $n "$rp $c"
- X . myread
- X maxsysalias="$ans"
- X if $test "$maxsysalias" -lt 50 -o "$maxsysalias" -gt 1000 ; then
- X $cat <<EOM
- XPretty strange answer! I think you should reconsider and try a number
- Xfrom the range 50-1000.
- XEOM
- X odflt=$dflt
- X if $test "$fastread" = yes; then
- X dflt=y
- X else
- X dflt=n
- X fi
- X rp="Should I use your answer of $maxsysalias system aliases anyway? [$dflt]"
- X $echo $n "$rp $c"
- X . myread
- X dflt=$odflt
- X case "$ans" in
- X y*) cont='';;
- X esac
- X else
- X cont=''
- X fi
- Xdone
- Xelmalias="$maxsysalias"
- X
- X: preserve RCS keywords in files with variable substitution, grrr
- XLog='$Log'
- XHeader='$Header'
- X
- X: see if symlink exists
- Xset symlink d_symlink
- Xeval $inlibc
- X
- X: get default batch subject
- X$cat <<EOM
- X
- XElm will provide a default subject for mail messages that are sent
- Xin batch mode (redirected from a file.)
- XEOM
- X
- Xcase "$defbatsub" in
- X '') dflt='no subject (file transmission)';;
- X *) dflt=$defbatsub;;
- Xesac
- Xecho " "
- Xrp="Default batch subject: [$dflt]"
- X$echo $n "$rp $c"
- X. myread
- Xdefbatsub="$ans"
- X
- X: determine default editor
- Xcase "$defeditor" in
- X'')
- X case "$_vi" in
- X */*) dflt="$_vi";;
- X *) dflt=/usr/ucb/vi;;
- X esac
- X ;;
- X*) dflt="$defeditor"
- X ;;
- Xesac
- Xcont=true
- Xwhile $test "$cont" ; do
- X echo " "
- X rp="What is the default editor on your system? [$dflt]"
- X $echo $n "$rp $c"
- X . myread
- X defeditor="$ans"
- X if $test -f $ans; then
- X cont=''
- X else
- X if $test "$fastread" = yes; then
- X dflt=y
- X else
- X dflt=n
- X fi
- X rp="File $ans doesn't exist. Use that name anyway? [$dflt]"
- X $echo $n "$rp $c"
- X . myread
- X dflt=''
- X case "$ans" in
- X y*) cont='';;
- X esac
- X fi
- Xdone
- X
- X: determine where public libraries go
- Xcase "$lib" in
- X'')
- X dflt=`loc . "." /usr/local/lib /usr/lib /lib`
- X ;;
- X*) dflt="$lib"
- X ;;
- Xesac
- Xcont=true
- Xwhile $test "$cont" ; do
- X echo " "
- X rp="Where do you want to put the public libraries? [$dflt]"
- X $echo $n "$rp $c"
- X . myread
- X lib="$ans"
- X lib=`filexp $lib`
- X if $test -d "$lib"; then
- X cont=''
- X else
- X dflt=n
- X rp="Directory $lib doesn't exist. Use that name anyway? [$dflt]"
- X $echo $n "$rp $c"
- X . myread
- X dflt=''
- X case "$ans" in
- X y*) cont='';;
- X esac
- X fi
- Xdone
- X
- X: ask the preferred line printer and options for this system.
- Xcase "$linepr" in
- X'')
- X if $test -f "$lp"; then
- X dflt="$lp"
- X elif $test -f "$lpr"; then
- X dflt="$lpr"
- X else
- X dflt=
- X fi
- X ;;
- X*) dflt="$linepr";;
- Xesac
- X
- Xlinepr='blurfl/dyick'
- X$cat <<EOM
- X
- XElm has an option to send messages to the printer. This question
- Xasks for the default spooler name. You can also specify options
- Xto the command by separating them from the command by at least one space.
- X
- XEOM
- Xcont=true
- Xwhile $test "$cont" ; do
- X rp="What print spooler do you prefer to use with Elm? [$dflt]"
- X $echo $n "$rp $c"
- X . myread
- X linepr="$ans"
- X ans=`$expr "$linepr" : "\([^ ]*\).*"`
- X case "$ans" in
- X /*)
- X if $test -f "$ans"; then
- X cont=''
- X else
- X if $test "$fastread" = yes; then
- X dflt=y
- X else
- X dflt=n
- X fi
- X rp="File $ans doesn't exist. Use that name anyway? [$dflt]"
- X $echo $n "$rp $c"
- X . myread
- X case "$ans" in
- X y*) cont='';;
- X esac
- X fi
- X ;;
- X *)
- X echo "Please give the full path name."
- X ;;
- X esac
- Xdone
- X
- X: determine where mail is spooled
- Xcase "$maildir" in
- X'')
- X dflt=`loc . /usr/spool/mail /usr/spool/mail /usr/mail`
- X ;;
- X*) dflt="$maildir"
- X ;;
- Xesac
- Xcont=true
- Xwhile $test "$cont" ; do
- X echo " "
- X rp="Where is yet-to-be-read mail spooled? [$dflt]"
- X $echo $n "$rp $c"
- X . myread
- X maildir=`filexp "$ans"`
- X if test -d $maildir; then
- X cont=''
- X else
- X if $test "$fastread" = yes; then
- X dflt=y
- X else
- X dflt=n
- X fi
- X rp="Directory $maildir doesn't exist. Use that name anyway? [$dflt]"
- X $echo $n "$rp $c"
- X . myread
- X dflt=''
- X case "$ans" in
- X y*) cont='';;
- X esac
- X fi
- Xdone
- X
- X: determine the group of the mail directory- what group elm should use
- Xmailgrp=`$ls -lgd $maildir`
- Xmailgrp=`$expr "$mailgrp" : "[ld][rwxstS-]*[ 0123456789]*\(.*\)"`
- X: now mailgrp is either user group size mon day time/year name
- X: or group size mon day time/year name
- Xtry1=`$expr "$mailgrp" : "[A-z0-9]* *\([A-z0-9]*\).*"`
- Xtry1a=`$expr "$try1" : "\([0-9]*\).*"`
- Xif $test "$try1" = "$try1a"; then
- X mailgrp=`$expr "$mailgrp" : "\([A-z0-9]*\).*"`
- Xelse
- X mailgrp="$try1"
- Xfi
- Xcase "$mailgrp" in
- X'')
- X mailgrp=mail
- X ;;
- Xesac
- Xecho " "
- Xecho "Mail group is $mailgrp"
- X
- X: ask the preferred pager for this system.
- Xcase "$pager" in
- X'') dflt="builtin+";;
- X*) dflt="$pager";;
- Xesac
- X
- Xpager='blurfl/dyick'
- Xecho " "
- Xcont=true
- Xwhile $test "$cont" ; do
- X rp="What pager do you prefer to use with $package? [$dflt]"
- X $echo $n "$rp $c"
- X . myread
- X pager="$ans"
- X case "$ans" in
- X builtin)
- X cont=''
- X ;;
- X builtin+)
- X cont=''
- X ;;
- X /*)
- X if $test -f "$ans"; then
- X cont=''
- X else
- X if $test "$fastread" = yes; then
- X dflt=y
- X else
- X dflt=n
- X fi
- X rp="File $ans doesn't exist. Use that name anyway? [$dflt]"
- X $echo $n "$rp $c"
- X . myread
- X case "$ans" in
- X y*) cont='';;
- X esac
- X fi
- X ;;
- X *)
- X echo "Please give the full path name."
- X ;;
- X esac
- Xdone
- X
- X: find out which shell people like to use most
- Xcase "$prefshell" in
- X'')
- X if $test -f /bin/ksh; then
- X dflt='/bin/ksh'
- X elif $test -f /bin/csh; then
- X dflt='/bin/csh'
- X else
- X dflt='/bin/sh'
- X fi
- X ;;
- X*) dflt="$prefshell";;
- Xesac
- Xcont=true
- Xwhile $test "$cont" ; do
- X echo " "
- X echo "Give the full path name of the shell most people like to use on your"
- X $echo $n "system: [$dflt] $c"
- X rp="Preferred shell: [$dflt]"
- X . myread
- X prefshell=$ans
- X if test -f $ans; then
- X cont=''
- X else
- X if $test "$fastread" = yes; then
- X dflt=y
- X else
- X dflt=n
- X fi
- X rp="File $ans doesn't exist. Use that name anyway? [$dflt]"
- X $echo $n "$rp $c"
- X . myread
- X dflt=''
- X case "$ans" in
- X y*) cont='';;
- X esac
- X fi
- Xdone
- X
- X: determine the name of the tape device
- Xrmttape=`loc rct0 "" /dev`
- Xif $test -z "$rmttape"; then
- X rmttape=`loc rmt0 "" /dev`
- Xfi
- Xif $test -z "$rmttape"; then
- X rmttape=`loc rtp0 "unknown-remote-tape-unit" /dev`
- Xfi
- Xecho "remote tape drive is $rmttape"
- Xecho " "
- X: where do we get termlib routines from
- Xecho " "
- Xans=`loc libcurses.a x $libpth`
- Xif $test "$ans" = x; then
- X ans=`loc Slibcurses.a x $libpth`
- Xfi
- Xcase "$ans" in
- X/*)
- X ar t $ans >grimble
- X if $contains tputs.o grimble >/dev/null 2>&1; then
- X termlib='-lcurses'
- X d_havetlib="$define"
- X echo "Terminfo library found."
- X else
- X ans=x
- X fi
- X rm -f grimble
- X ;;
- Xesac
- Xcase "$ans" in
- Xx)
- X ans=`loc libtermlib.a x $libpth`
- X if $test "$ans" = x; then
- X ans=`loc Slibtermlib.a x $libpth`
- X fi
- X case "$ans" in
- X /usr/lib*|/lib*)
- X termlib='-ltermlib'
- X d_havetlib="$define"
- X echo "Termlib library found."
- X ;;
- X /*)
- X termlib="$ans"
- X d_havetlib="$define"
- X echo "Termlib library found."
- X ;;
- X *)
- X ans=`loc libtermcap.a x $libpth`
- X if $test "$ans" = x; then
- X ans=`loc Slibtermcap.a x $libpth`
- X fi
- X case "$ans" in
- X /usr/lib*|/lib*)
- X termlib='-ltermcap'
- X d_havetlib="$define"
- X echo "Termcap library found."
- X ;;
- X /*)
- X termlib="$ans"
- X d_havetlib="$define"
- X echo "Termcap library found."
- X ;;
- X *)
- X case "$termlib" in
- X '')
- X dflt=y
- X rp="Your system appears to NOT have termlib-style routines. Is this true? [$dflt]"
- X $echo $n "$rp $c"
- X . myread
- X case "$ans" in
- X n*|f*) d_havetlib="$define"
- X echo "Then where are the termlib-style routines kept (specify either -llibname"
- X $echo $n " or full pathname (~name ok))? $c"
- X rp='Specify termlib:'
- X . myread
- X termlib=`filexp $ans`
- X ;;
- X *) d_havetlib="$undef"
- X termlib=''
- X echo "You will have to play around with term.c then."
- X ;;
- X esac
- X echo " "
- X ;;
- X *) echo "You said termlib was $termlib before."
- X ;;
- X esac
- X ;;
- X esac
- X ;;
- X esac
- X ;;
- Xesac
- X
- X: determine where temporary files should go
- Xcase "$tmpdir" in
- X'')
- X dflt=`loc . "." "/tmp /usr/tmp"`
- X ;;
- X*) dflt="$tmpdir"
- X ;;
- Xesac
- Xif $test -d "$tmpdir" -a "$tmpdir" != ""; then
- X $echo " "
- X $echo "Temporary files will be put in the $tmpdir directory"
- Xelse
- X cont=true
- X while $test "$cont" ; do
- X $echo " "
- X rp="Where do you want to put the temporary files? [$dflt]"
- X $echo $n "$rp $c"
- X . myread
- X tmpdir="$ans"
- X tmpdir=`filexp $tmpdir`
- X if $test -d "$tmpdir" -a "$tmpdir" != ""; then
- X cont=''
- X else
- X if $test "$fastread" = yes; then
- X dflt=y
- X else
- X dflt=n
- X fi
- X rp="Directory $tmpdir doesn't exist. Use that name anyway? [$dflt]"
- X $echo $n "$rp $c"
- X . myread
- X dflt=''
- X case "$ans" in
- X y*) cont='';;
- X esac
- X fi
- X done
- Xfi
- X
- Xcase "$d_noxheader" in
- X"$define") dflt=y;;
- X"$undef") dflt=n;;
- X*) dflt=n;;
- Xesac
- X$cat <<EOM
- X
- XSome sites to not like to see the mail header "X-mailer:" in outgoing
- Xmessages. If you choose, you may disable these headers. However, it
- Xis strongly urged to leave these headers in the mail to assist in
- Xtracking down problems.
- X
- XEOM
- Xrp="Would you like to disable the X-mailer: headers? [$dflt]"
- X$echo $n "$rp $c"
- X. myread
- Xcase "$ans" in
- Xy*) d_noxheader="$define";;
- X*) d_noxheader="$undef";;
- Xesac
- X
- Xecho " "
- Xecho "End of configuration questions."
- Xecho " "
- X
- X: create config.sh file
- Xecho " "
- Xif test -d ../UU; then
- X cd ..
- Xfi
- Xecho "Creating config.sh..."
- X$spitshell <<EOT >config.sh
- X$startsh
- X# config.sh
- X# This file was produced by running the Configure script.
- X
- Xdefine='$define'
- Xeunicefix='$eunicefix'
- XLog='$Log'
- XHeader='$Header'
- Xbin='$bin'
- Xbyteorder='$byteorder'
- Xcontains='$contains'
- Xcppstdin='$cppstdin'
- Xcppminus='$cppminus'
- Xd_crypt='$d_crypt'
- Xcryptlib='$cryptlib'
- Xd_getopt='$d_getopt'
- Xd_havetlib='$d_havetlib'
- Xtermlib='$termlib'
- Xd_mkdir='$d_mkdir'
- Xd_portable='$d_portable'
- Xd_rename='$d_rename'
- Xd_sigvec='$d_sigvec'
- Xd_sigvectr='$d_sigvectr'
- Xd_symlink='$d_symlink'
- Xd_vfork='$d_vfork'
- Xd_whoami='$d_whoami'
- Xdefeditor='$defeditor'
- Xhostname='$hostname'
- Xphostname='$phostname'
- Xmydomain='$mydomain'
- Xi_time='$i_time'
- Xi_systime='$i_systime'
- Xd_systimekernel='$d_systimekernel'
- Xmaildir='$maildir'
- Xn='$n'
- Xc='$c'
- Xpackage='$package'
- Xpager='$pager'
- Xprefshell='$prefshell'
- Xspitshell='$spitshell'
- Xshsharp='$shsharp'
- Xsharpbang='$sharpbang'
- Xstartsh='$startsh'
- Xd_eunice='$d_eunice'
- Xloclist='$loclist'
- Xexpr='$expr'
- Xsed='$sed'
- Xecho='$echo'
- Xcat='$cat'
- Xrm='$rm'
- Xmv='$mv'
- Xcp='$cp'
- Xtail='$tail'
- Xtr='$tr'
- Xmkdir='$mkdir'
- Xsort='$sort'
- Xuniq='$uniq'
- Xgrep='$grep'
- Xtrylist='$trylist'
- Xtest='$test'
- Xinews='$inews'
- Xegrep='$egrep'
- Xmore='$more'
- Xpg='$pg'
- XMcc='$Mcc'
- Xvi='$vi'
- Xmailx='$mailx'
- Xmail='$mail'
- Xcpp='$cpp'
- Xperl='$perl'
- Xemacs='$emacs'
- Xls='$ls'
- Xrmail='$rmail'
- Xsendmail='$sendmail'
- Xshar='$shar'
- Xsmail='$smail'
- Xtbl='$tbl'
- Xtroff='$troff'
- Xnroff='$nroff'
- Xuname='$uname'
- Xuuname='$uuname'
- Xline='$line'
- Xchgrp='$chgrp'
- Xchmod='$chmod'
- Xlint='$lint'
- Xsleep='$sleep'
- Xpr='$pr'
- Xtar='$tar'
- Xln='$ln'
- Xlpr='$lpr'
- Xlp='$lp'
- Xtouch='$touch'
- Xmake='$make'
- Xdate='$date'
- Xcsh='$csh'
- Xc_date='$c_date'
- Xd_calendar='$d_calendar'
- Xcalendar='$calendar'
- Xd_cuserid='$d_cuserid'
- Xd_flock='$d_flock'
- Xd_flockonly='$d_flockonly'
- Xlock_dir='$lock_dir'
- Xd_gethname='$d_gethname'
- Xd_douname='$d_douname'
- Xd_phostname='$d_phostname'
- Xd_host_comp='$d_host_comp'
- Xd_havedbm='$d_havedbm'
- Xdbm='$dbm'
- Xd_index='$d_index'
- Xd_internet='$d_internet'
- Xd_mboxedit='$d_mboxedit'
- Xd_mmdf='$d_mmdf'
- Xd_newauto='$d_newauto'
- Xd_nfs='$d_nfs'
- Xd_networkorder='$d_networkorder'
- Xd_noxheader='$d_noxheader'
- Xd_optreturn='$d_optreturn'
- Xd_pafirst='$d_pafirst'
- Xd_notouchadd='$d_notouchadd'
- Xd_noaddfrom='$d_noaddfrom'
- Xd_usedomain='$d_usedomain'
- Xd_nocheckvalid='$d_nocheckvalid'
- Xd_pidcheck='$d_pidcheck'
- Xd_ptem='$d_ptem'
- Xd_remlock='$d_remlock'
- Xmaxattempts='$maxattempts'
- Xd_setgid='$d_setgid'
- Xmailermode='$mailermode'
- Xd_strcspn='$d_strcspn'
- Xd_strspn='$d_strspn'
- Xd_strings='$d_strings'
- Xd_pwdinsys='$d_pwdinsys'
- Xstrings='$strings'
- Xincludepath='$includepath'
- Xd_subshell='$d_subshell'
- Xd_tempnam='$d_tempnam'
- Xtempnamo='$tempnamo'
- Xtempnamc='$tempnamc'
- Xd_termio='$d_termio'
- Xd_termios='$d_termios'
- Xd_tz_min='$d_tz_min'
- Xd_useembed='$d_useembed'
- Xd_utimbuf='$d_utimbuf'
- Xd_voidsig='$d_voidsig'
- Xdefbatsub='$defbatsub'
- Xelmalias='$elmalias'
- Xmaxsysalias='$maxsysalias'
- Xmaxuseralias='$maxuseralias'
- Xlib='$lib'
- Xlibc='$libc'
- Xlinepr='$linepr'
- Xmailer='$mailer'
- Xmailgrp='$mailgrp'
- Xmansrc='$mansrc'
- Xmanext='$manext'
- Xmodels='$models'
- Xsplit='$split'
- Xsmall='$small'
- Xmedium='$medium'
- Xlarge='$large'
- Xhuge='$huge'
- Xoptimize='$optimize'
- Xccflags='$ccflags'
- Xcppflags='$cppflags'
- Xldflags='$ldflags'
- Xcc='$cc'
- Xlibs='$libs'
- Xnametype='$nametype'
- Xd_passnames='$d_passnames'
- Xd_berknames='$d_berknames'
- Xd_usgnames='$d_usgnames'
- Xpasscat='$passcat'
- Xpathalias='$pathalias'
- Xdomains='$domains'
- Xrmttape='$rmttape'
- Xroff='$roff'
- Xtmpdir='$tmpdir'
- Xxencf='$xencf'
- Xxenlf='$xenlf'
- Xd_xenix='$d_xenix'
- Xd_bsd='$d_bsd'
- XCONFIG=true
- XEOT
- X
- XCONFIG=true
- X
- Xecho " "
- Xdflt=''
- Xfastread=''
- Xecho "If you didn't make any mistakes, then just type a carriage return here."
- Xrp="If you need to edit config.sh, do it as a shell escape here:"
- X$echo $n "$rp $c"
- X. UU/myread
- Xcase "$ans" in
- X'') ;;
- X*) : in case they cannot read
- X eval $ans;;
- Xesac
- X: if this fails, just run all the .SH files by hand
- X. ./config.sh
- X
- Xecho " "
- Xecho "Doing variable substitutions on .SH files..."
- Xset x `awk '{print $1}' <MANIFEST | $grep '\.SH'`
- Xshift
- Xcase $# in
- X0) set x *.SH; shift;;
- Xesac
- Xif test ! -f $1; then
- X shift
- Xfi
- Xfor file in $*; do
- X case "$file" in
- X */*)
- X dir=`$expr X$file : 'X\(.*\)/'`
- X file=`$expr X$file : 'X.*/\(.*\)'`
- X (cd $dir && . $file)
- X ;;
- X *)
- X . $file
- X ;;
- X esac
- Xdone
- Xif test -f config.h.SH; then
- X if test ! -f config.h; then
- X : oops, they left it out of MANIFEST, probably, so do it anyway.
- X . config.h.SH
- X fi
- Xfi
- X
- Xif $contains '^depend:' Makefile >/dev/null 2>&1; then
- X dflt=n
- X $cat <<EOM
- X
- XNow you need to generate make dependencies by running "make depend".
- XYou might prefer to run it in background: "make depend > makedepend.out &"
- XIt can take a while, so you might not want to run it right now.
- X
- XEOM
- X rp="Run make depend now? [$dflt]"
- X $echo $n "$rp $c"
- X . UU/myread
- X case "$ans" in
- X y*) make depend && echo "Now you must run a make."
- X ;;
- X *) echo "You must run 'make depend' then 'make'."
- X ;;
- X esac
- Xelif test -f Makefile; then
- X echo " "
- X echo "Now you must run a make."
- Xelse
- X echo "Done."
- Xfi
- X
- X$rm -f kit*isdone
- X: the following is currently useless
- Xcd UU && $rm -f $rmlist
- X: since this removes it all anyway
- Xcd .. && $rm -rf UU
- X: end of Configure
- SHAR_EOF
- echo "File Configure is complete"
- chmod 0555 Configure || echo "restore of Configure fails"
- echo "x - extracting config.h.SH (Text)"
- sed 's/^X//' << 'SHAR_EOF' > config.h.SH &&
- Xcase $CONFIG in
- X'')
- X if test ! -f config.sh; then
- X ln ../config.sh . || \
- X ln ../../config.sh . || \
- X ln ../../../config.sh . || \
- X (echo "Can't find config.sh."; exit 1)
- X echo "Using config.sh from above..."
- X fi
- X . ./config.sh
- X ;;
- Xesac
- Xecho "Extracting config.h (with variable substitutions)"
- Xsed <<!GROK!THIS! >config.h -e 's!^#undef!/\*#undef!'
- X/* config.h
- X * This file was produced by running the config.h.SH script, which
- X * gets its values from config.sh, which is generally produced by
- X * running Configure.
- X *
- X * Feel free to modify any of this as the need arises. Note, however,
- X * that running config.h.SH again will wipe out any changes you've made.
- X * For a more permanent change edit config.sh and rerun config.h.SH.
- X */
- X
- X
- X/* BIN:
- X * This symbol holds the name of the directory in which the user wants
- X * to put publicly executable images for the package in question. It
- X * is most often a local directory such as /usr/local/bin.
- X */
- X#define BIN "$bin" /**/
- X
- X/* BYTEORDER:
- X * This symbol contains an encoding of the order of bytes in a long.
- X * Usual values (in octal) are 01234, 04321, 02143, 03412...
- X */
- X#define BYTEORDER 0x$byteorder /**/
- X
- X/* CPPSTDIN:
- X * This symbol contains the first part of the string which will invoke
- X * the C preprocessor on the standard input and produce to standard
- X * output. Typical value of "cc -E" or "/lib/cpp".
- X */
- X/* CPPMINUS:
- X * This symbol contains the second part of the string which will invoke
- X * the C preprocessor on the standard input and produce to standard
- X * output. This symbol will have the value "-" if CPPSTDIN needs a minus
- X * to specify standard input, otherwise the value is "".
- X */
- X#define CPPSTDIN "$cppstdin"
- X#define CPPMINUS "$cppminus"
- X
- X/* CRYPT:
- X * This symbol, if defined, indicates that the crypt routine is available
- X * to encrypt passwords and the like.
- X */
- X#$d_crypt CRYPT /**/
- X
- X/* GETOPT:
- X * This symbol, if defined, indicates that the getopt() routine exists.
- X */
- X#$d_getopt GETOPT /**/
- X
- X/* HAVETERMLIB:
- X * This symbol, when defined, indicates that termlib-style routines
- X * are available. There is nothing to include.
- X */
- X#$d_havetlib HAVETERMLIB /**/
- X
- X/* MKDIR:
- X * This symbol, if defined, indicates that the mkdir routine is available
- X * to create directories. Otherwise you should fork off a new process to
- X * exec /bin/mkdir.
- X */
- X#$d_mkdir MKDIR /**/
- X
- X/* PORTABLE:
- X * This symbol, if defined, indicates to the C program that it should
- X * not assume that it is running on the machine it was compiled on.
- X * The program should be prepared to look up the host name, translate
- X * generic filenames, use PATH, etc.
- X */
- X#$d_portable PORTABLE /**/
- X
- X/* RENAME:
- X * This symbol, if defined, indicates that the rename routine is available
- X * to rename files. Otherwise you should do the unlink(), link(), unlink()
- X * trick.
- X */
- X#$d_rename RENAME /**/
- X
- X/* SIGVEC:
- X * This symbol, if defined, indicates that BSD reliable signals are
- X * supported.
- X */
- X/* SIGVECTOR:
- X * This symbol, if defined, indicates that the sigvec() routine is called
- X * sigvector() instead, and that sigspace() is provided instead of
- X * sigstack(). This is probably only true for HP-UX.
- X */
- X#$d_sigvec SIGVEC /**/
- X
- X#$d_sigvectr SIGVECTOR /**/
- X
- X/* SYMLINK:
- X * This symbol, if defined, indicates that the symlink routine is available
- X * to create symbolic links.
- X */
- X#$d_symlink SYMLINK /**/
- X
- X/* VFORK:
- X * This symbol, if defined, indicates that vfork() exists.
- X */
- X#$d_vfork VFORK /**/
- X
- X/* WHOAMI:
- X * This symbol, if defined, indicates that the program may include
- X * whoami.h.
- X */
- X#$d_whoami WHOAMI /**/
- X
- X/* DEFEDITOR:
- X * This symbol contains the name of the default editor.
- X */
- X#define DEFEDITOR "$defeditor" /**/
- X
- X/* HOSTNAME:
- X * This symbol contains name of the host the program is going to run on.
- X * The domain is not kept with hostname, but must be gotten from MYDOMAIN.
- X * The dot comes with MYDOMAIN, and need not be supplied by the program.
- X * If gethostname() or uname() exist, HOSTNAME may be ignored.
- X */
- X/* MYDOMAIN:
- X * This symbol contains the domain of the host the program is going to
- X * run on. The domain must be appended to HOSTNAME to form a complete
- X * host name. The dot comes with MYDOMAIN, and need not be supplied by
- X * the program. If the host name is derived from PHOSTNAME, the domain
- X * may or may not already be there, and the program should check.
- X */
- X#define HOSTNAME "$hostname" /**/
- X#define MYDOMAIN "$mydomain" /**/
- X
- X/* I_TIME:
- X * This symbol is defined if the program should include <time.h>.
- X */
- X/* I_SYSTIME:
- X * This symbol is defined if the program should include <sys/time.h>.
- X */
- X/* I_SYSTIMEKERNEL:
- X * This symbol is defined if the program should include <sys/time.h>
- X * with KERNEL defined.
- X */
- X#$i_time I_TIME /**/
- X#$i_systime I_SYSTIME /**/
- X#$d_systimekernel SYSTIMEKERNEL /**/
- X
- X/* PREFSHELL:
- X * This symbol contains the full name of the preferred user shell on this
- X * system. Usual values are /bin/csh, /bin/ksh, /bin/sh.
- X */
- X#define PREFSHELL "$prefshell" /**/
- X
- X/* EUNICE:
- X * This symbol, if defined, indicates that the program is being compiled
- X * under the EUNICE package under VMS. The program will need to handle
- X * things like files that don't go away the first time you unlink them,
- X * due to version numbering. It will also need to compensate for lack
- X * of a respectable link() command.
- X */
- X/* VMS:
- X * This symbol, if defined, indicates that the program is running under
- X * VMS. It is currently only set in conjunction with the EUNICE symbol.
- X */
- X#$d_eunice EUNICE /**/
- X#$d_eunice VMS /**/
- X
- X/* CONFIGURE_DATE
- X * This symbol contains the last date that configure was run for elm -v output.
- X */
- X#define CONFIGURE_DATE "$c_date"
- X
- X/* ENABLE_CALENDAR:
- X * This symbol, if defined, indicates that the calendar feature
- X * should be supported.
- X */
- X#$d_calendar ENABLE_CALENDAR /**/
- X#define dflt_calendar_file "$calendar"
- X
- X/* NEED_CUSERID:
- X * This symbol, if defined, means to include our own cuserid().
- X */
- X#$d_cuserid NEED_CUSERID /**/
- X
- X/* LOCK_BY_FLOCK
- X * This symbol, if defined, indicates that the flock mailbox locking should be used.
- X */
- X/* LOCK_FLOCK_ONLY
- X * This symbol, if defined, indicates that the only flock mailbox locking should also be used.
- X */
- X/* LOCK_DIR
- X * This symbol is the name of the lock directory for access (not mailbox) locks.
- X * It will be /usr/spool/locks or /usr/spool/uucp
- X */
- X#$d_flock LOCK_BY_FLOCK /**/
- X
- X#$d_flockonly LOCK_FLOCK_ONLY /**/
- X
- X#define LOCK_DIR "$lock_dir" /**/
- X
- X/* GETHOSTNAME:
- X * This symbol, if defined, indicates that the C program may use the
- X * gethostname() routine to derive the host name. See also DOUNAME
- X * and PHOSTNAME.
- X */
- X/* DOUNAME:
- X * This symbol, if defined, indicates that the C program may use the
- X * uname() routine to derive the host name. See also GETHOSTNAME and
- X * PHOSTNAME.
- X */
- X/* PHOSTNAME:
- X * This symbol, if defined, indicates that the C program may use the
- X * contents of PHOSTNAME as a command to feed to the popen() routine
- X * to derive the host name. See also GETHOSTNAME and DOUNAME.
- X */
- X/* HOSTCOMPILED:
- X * This symbol, if defined, indicated that the host name is compiled
- X * in from the string hostname
- X */
- X#$d_gethname GETHOSTNAME /**/
- X#$d_douname DOUNAME /**/
- X#$d_phostname PHOSTNAME "$phostname" /**/
- X#$d_host_comp HOSTCOMPILED /**/
- X
- X/* USE_DBM
- X * This symbol, when defined, indicates that the pathalias file
- X * is available as a dbm file. There is nothing to include.
- X */
- X#$d_havedbm USE_DBM /**/
- X
- X/* index:
- X * This preprocessor symbol is defined, along with rindex, if the system
- X * uses the strchr and strrchr routines instead.
- X */
- X/* rindex:
- X * This preprocessor symbol is defined, along with index, if the system
- X * uses the strchr and strrchr routines instead.
- X */
- X#$d_index index strchr /* cultural */
- X#$d_index rindex strrchr /* differences? */
- X
- X/* INTERNET:
- X * This symbol, if defined, indicates that there is a mailer available
- X * which supports internet-style addresses (user@site.domain).
- X */
- X#$d_internet INTERNET /**/
- X
- X/* ALLOW_MAILBOX_EDITING:
- X * This symbol, if defined, indicates that the E)dit mailbox
- X * function is to be allowed.
- X */
- X#$d_mboxedit ALLOW_MAILBOX_EDITING /**/
- X
- X/* MMDF:
- X * This symbol, if defined, indicates that mailboxes are in
- X * the MMDF format.
- X */
- X#$d_mmdf MMDF /**/
- X
- X/* AUTO_BACKGROUND:
- X * This symbol, if defined, indicates that newmail should go to
- X * the background automatically.
- X */
- X#$d_newauto AUTO_BACKGROUND /**/
- X
- X/* NFS_CAPABLE
- X * This symbol, if defined, indicates NFS is available.
- X */
- X/* NETWORK_ORDER
- X * This symbol, if defined, indicates that the internal files should be kept
- X * in network byte order.
- X */
- X#$d_nfs NFS_CAPABLE /**/
- X#$d_networkorder NETWORK_ORDER /**/
- X
- X/* NO_XHEADER:
- X * This symbol, if defined, will not automatically add "X-Mailer:"
- X * headers.
- X */
- X#$d_noxheader NO_XHEADER /**/
- X
- X/* OPTIMIZE_RETURN:
- X * This symbol, if defined, indicates that Elm should optimize the
- X * return address of aliases.
- X */
- X#$d_optreturn OPTIMIZE_RETURN /**/
- X
- X/* LOOK_CLOSE_AFTER_SEARCH:
- X * This symbol, if defined, indicates that the pathalias route
- X * should be used for machines we talk to directly.
- X */
- X/* DONT_TOUCH_ADDRESSES:
- X * This symbol, if defined, indicates that elm should not
- X * touch outbound addresses
- X */
- X/* DONT_ADD_FROM:
- X * This symbol, if defined, indicates that elm should not adD
- X * the From: header
- X */
- X/* USE_DOMAIN:
- X * This symbol, if defined, indicates that elm should add
- X * the domain name to our address
- X */
- X/* NOCHECK_VALIDNAME:
- X * This symbol, if defined, indicates that elm should not
- X * check the addresses against mailboxes on this system.
- X */
- X#$d_pafirst LOOK_CLOSE_AFTER_SEARCH /**/
- X#$d_notouchadd DONT_TOUCH_ADDRESSES /**/
- X#$d_noaddfrom DONT_ADD_FROM /**/
- X#$d_usedomain USE_DOMAIN /**/
- X#$d_nocheckvalid NOCHECK_VALIDNAME /**/
- X
- X/* PIDCHECK:
- X * This symbol, if defined, means that the kill(pid, 0) will
- X * check for an active pid.
- X */
- X#$d_pidcheck PIDCHECK /**/
- X
- X/* PTEM:
- X * This symbol, if defined, indicates that the sys/ptem.h include file is
- X * needed for window sizing.
- X */
- X#$d_ptem PTEM /**/
- X
- X/* REMOVE_AT_LAST:
- X * This symbol, if defined, tells the C code to remove the lock
- X * file on lock failure.
- X */
- X/* MAX_ATTEMPTS:
- X * This symbol defines to the C code the number of times to try
- X * locking the mail file.
- X */
- X#$d_remlock REMOVE_AT_LAST /**/
- X#define MAX_ATTEMPTS $maxattempts
- X
- X/* SAVE_GROUP_MAILBOX_ID:
- X * This symbol, if defined, indica;es that Elm needs to restore the
- X * group id of the file, as it is running setgid.
- X */
- X#$d_setgid SAVE_GROUP_MAILBOX_ID /**/
- X
- X/* STRCSPN:
- X * This symbol, if defined, indicates that the strcspn() routine exists.
- X */
- X#$d_strspn STRSPN /**/
- X
- X#$d_strcspn STRCSPN /**/
- X
- X/* STRINGS:
- X * This symbol, if defined, indicates that the file strings.h
- X * should be included not string.h
- X */
- X/* PWDINSYS:
- X * This symbol, if defined, indicates that the file pwd.h
- X * is in the sys sub directory
- X */
- X#$d_strings STRINGS /**/
- X#$d_pwdinsys PWDINSYS /**/
- X
- X/* ALLOW_SUBSHELL:
- X * This symbol, if defined, indicates that the '!' subshell
- X * function is to be allowed at various places.
- X */
- X#$d_subshell ALLOW_SUBSHELL /**/
- X
- X/* TEMPNAM:
- X * This symbol, if defined, indicates that the tempnam() routine exists.
- X */
- X#$d_tempnam TEMPNAM /**/
- X
- X/* TERMIOS:
- X * This symbol, if defined, indicates that the program should include
- X * termios.h rather than sgtty.h or termio.h. There are also differences
- X * in the ioctl() calls that depend on the value of this symbol.
- X */
- X/* TERMIO:
- X * This symbol, if defined, indicates that the program should include
- X * termio.h rather than sgtty.h. There are also differences in the
- X * ioctl() calls that depend on the value of this symbol.
- X */
- X#$d_termios TERMIOS /**/
- X
- X#$d_termio TERMIO /**/
- X
- X/* TZ_MINUTESWEST:
- X * This symbol is defined if this system uses tz_minutes west
- X * in time.h instead of timezone. Only for BSD Systems
- X */
- X#$d_tz_min TZ_MINUTESWEST /**/
- X
- X/* USE_EMBEDDED_ADDRESSES:
- X * This symbol, if defined, indicates that replyto: and from:
- X * headers can be trusted.
- X */
- X#$d_useembed USE_EMBEDDED_ADDRESSES /**/
- X
- X/* NOUTIMBUF:
- X * This symbol, if defined, means to include our own struct utimbuf.
- X */
- X#$d_utimbuf NOUTIMBUF /**/
- X
- X/* VOIDSIG:
- X * This symbol is defined if this system declares "void (*signal())()" in
- X * signal.h. The old way was to declare it as "int (*signal())()". It
- X * is up to the package author to declare things correctly based on the
- X * symbol.
- X */
- X#$d_voidsig VOIDSIG /**/
- X
- X/* MAX_SALIASES:
- X * This symbol defines the number of system wide aliases allowed.
- X */
- X/* MAX_UALIASES:
- X * This symbol defines the number of per user aliases allowed.
- X */
- X#define MAX_SALIASES $maxsysalias /* number of system aliases allowed */
- X#define MAX_UALIASES $maxuseralias /* number of user aliases allowed */
- X
- X/* PASSNAMES:
- X * This symbol, if defined, indicates that full names are stored in
- X * the /etc/passwd file.
- X */
- X/* BERKNAMES:
- X * This symbol, if defined, indicates that full names are stored in
- X * the /etc/passwd file in Berkeley format (name first thing, everything
- X * up to first comma, with & replaced by capitalized login id, yuck).
- X */
- X/* USGNAMES:
- X * This symbol, if defined, indicates that full names are stored in
- X * the /etc/passwd file in USG format (everything after - and before ( is
- X * the name).
- X */
- X#$d_passnames PASSNAMES /* (undef to take name from ~/.fullname) */
- X#$d_berknames BERKNAMES /* (that is, ":name,stuff:") */
- X#$d_usgnames USGNAMES /* (that is, ":stuff-name(stuff):") */
- X
- X/* XENIX:
- X * This symbol, if defined, indicates this is a Xenix system,
- X * for knocking out the far keyword in selected places.
- X */
- X/* BSD:
- X * This symbol, if defined, indicates this is a BSD type system,
- X */
- X#$d_xenix XENIX /**/
- X#$d_bsd BSD /**/
- X
- X!GROK!THIS!
- SHAR_EOF
- chmod 0444 config.h.SH || echo "restore of config.h.SH fails"
- echo "x - extracting Makefile.SH (Text)"
- sed 's/^X//' << 'SHAR_EOF' > Makefile.SH &&
- Xcase $CONFIG in
- X'')
- X if test ! -f config.sh; then
- X ln ../config.sh . || \
- X ln ../../config.sh . || \
- X ln ../../../config.sh . || \
- X (echo "Can't find config.sh."; exit 1)
- X fi
- X . ./config.sh
- X ;;
- Xesac
- Xcase "$0" in
- X*/*) cd `expr X$0 : 'X\(.*\)/'` ;;
- Xesac
- X
- Xcase "$d_symlink" in
- X*define*) sln='ln -s' ;;
- X*) sln='ln';;
- Xesac
- X
- Xecho "Extracting Makefile (with variable substitutions)"
- Xcat >Makefile <<!GROK!THIS!
- X#
- X# $Id: Makefile.SH,v 4.1 90/04/28 22:40:54 syd Exp $
- X#
- X# Makefile for the entire ELM mail system
- X#
- X# (C) Copyright 1986, 1987, by Dave Taylor
- X# (C) Copyright 1988, 1989, 1990, USENET Community Trust
- X#
- X# $Log: Makefile.SH,v $
- X# Revision 4.1 90/04/28 22:40:54 syd
- X# checkin of Elm 2.3 as of Release PL0
- X#
- X#
- X
- X# Variables established by Configure
- XCAT = $cat
- XGREP = $grep
- XECHO = $echo
- XMAKE = $make
- XPR = $pr
- XSHAR = $shar -s 60000
- XSLEEP = $sleep
- XTAR = $tar
- XTAPE = $rmttape
- X
- X!GROK!THIS!
- Xcat >>Makefile <<'!NO!SUBS!'
- X# Other variables
- XSHELL = /bin/sh
- XSOURCE_FILES = `$(GREP) -v 'doc/' MANIFEST`
- XDISTRIBUTED_FILES = `$(CAT) MANIFEST`
- X
- X
- X# Targets
- X# Give default target first and alone
- Xdefault_target: all
- X
- X# Targets that are simply executed in each subordinate makefile as is
- Xall install uninstall lint clean:
- X cd src; $(MAKE) -$(MAKEFLAGS) $@
- X cd utils; $(MAKE) -$(MAKEFLAGS) $@
- X cd filter; $(MAKE) -$(MAKEFLAGS) $@
- X cd doc; $(MAKE) -$(MAKEFLAGS) $@
- X
- X# Targets that apply to all elm at once
- Xlisting:
- X @$(ECHO) "Making source listing in file LISTING."
- X @$(PR) -n -f $(SOURCE_FILES) > LISTING
- X
- X# This is the only target that gets installed even if not out-of-date
- X# with respect the files from which it is installed.
- Xrmt-install: rmt-defined
- X @($(ECHO) "Warning: This assumes you have already installed";\
- X $(ECHO) "ELM on the remote machine <$(REMOTE)>. If this is";\
- X $(ECHO) "not the case, interrupt this process quickly!";\
- X $(SLEEP) 10;)
- X cd src; $(MAKE) -$(MAKEFLAGS) REMOTE=$(REMOTE) $@
- X cd filter; $(MAKE) -$(MAKEFLAGS) REMOTE=$(REMOTE) $@
- X cd utils; $(MAKE) -$(MAKEFLAGS) REMOTE=$(REMOTE) $@
- X cd doc; $(MAKE) -$(MAKEFLAGS) REMOTE=$(REMOTE) $@
- X
- Xrmt-defined:
- X @(if [ "$(REMOTE)" = "" ];\
- X then\
- X $(ECHO) "You need to define 'REMOTE' as the remote file system";\
- X $(ECHO) "for this particular command. The easiest way to do this";\
- X $(ECHO) "to type:";\
- X $(ECHO) " make REMOTE=<remote file system> rmt-install";\
- X exit 1;\
- X fi);
- X
- Xshar:
- X $(SHAR) $(DISTRIBUTED_FILES)
- X
- Xtar:
- X $(TAR) cvf $(TAPE) $(DISTRIBUTED_FILES)
- X
- X# Targets that are really in subordinate make files
- Xdocumentation:
- X cd doc; $(MAKE) -$(MAKEFLAGS) $@
- X
- Xelm:
- X cd src; $(MAKE) -$(MAKEFLAGS) all
- X
- X# The dummy dependency here prevents make from thinking the target is the
- X# filter directory that sits in the current directory, rather than
- X# an abstract target.
- Xfilter: _filter
- X
- X_filter:
- X cd filter; $(MAKE) -$(MAKEFLAGS) all
- X
- X# The dummy dependency here prevents make from thinking the target is the
- X# utils directory that sits in the current directory, rather than
- X# an abstract target.
- Xutils: _utils
- X
- X_utils:
- X cd utils; $(MAKE) -$(MAKEFLAGS) all
- X
- X!NO!SUBS!
- SHAR_EOF
- chmod 0444 Makefile.SH || echo "restore of Makefile.SH fails"
- echo "x - extracting Patchlist (Text)"
- sed 's/^X//' << 'SHAR_EOF' > Patchlist &&
- XThis file will contain the date and comment header from each
- Xofficial patch as issued. Since this is the full new release,
- Xthere are currently no patches.
- SHAR_EOF
- chmod 0444 Patchlist || echo "restore of Patchlist fails"
- echo "x - extracting doc/Alias.guide (Text)"
- sed 's/^X//' << 'SHAR_EOF' > doc/Alias.guide &&
- X.\" @(#)$Id: Alias.guide,v 4.1 90/04/28 22:40:58 syd Exp $
- X.\"
- X.\" A guide to the ELM alias system and so on.
- X.\" format with:
- X.\" tbl Alias.guide | troff -mn > Alias.format'
- X.\"
- X.\" (C) Copyright 1986, 1987 Dave Taylor
- X.\" (C) Copyright 1988, 1989, 1990 USENET Community Trust
- X.\" Elm is now in the public trust. Bug reports, comments, suggestions, flames
- X.\" etc. should go to:
- X.\" Syd Weinstein elm@DSI.COM (dsinc!elm)
- X.\"
- X.\" $Log: Alias.guide,v $
- X.\" Revision 4.1 90/04/28 22:40:58 syd
- X.\" checkin of Elm 2.3 as of Release PL0
- X.\"
- X.\"
- X.tm Have we been run through "tbl" first?? I hope so!
- X.po 1i
- X.ds h0
- X.ds h1
- X.ds h2
- X.ds f0
- X.ds f1
- X.ds f2
- X.nr Hy 1
- X.nr Pt 1
- X.nr Pi 0
- X.lg 0
- X.nf
- X.na
- X.rs
- X.za
- X.sp |3.0i
- X.ce 99
- X.ps 20
- X.ss 18
- X.vs 12
- X\f3The Elm Alias System Users Guide\f1
- X.sp 4
- X.ps 12
- X.ss 14
- X.vs 14
- X\f2What aliases are and how to use them
- Xin the \f3Elm\fP mail system\f1
- X.sp 2
- XDave Taylor
- X.sp
- XHewlett-Packard Laboratories
- X1501 Page Mill Road
- XPalo Alto CA
- X94304
- X.sp 3
- Xemail: taylor\s-1@\s+1hplabs.HP.COM or hplabs\s-1!\s+1taylor
- X.sp 3
- X>>> Elm is now in the public trust. Bug reports, comments, etc. to: <<<
- X.sp
- XSyd Weinstein
- XDatacomp Systems, Inc.
- X3837 Byron Road
- XHuntingdon Valley, PA 19006-2320
- X.sp
- Xemail: elm\s-1@\s+1DSI.COM or dsinc\s-1!\s+1elm
- X.sp 2
- X\s18\f3\(co\f1\s12 Copyright 1986, 1987 by Dave Taylor
- X\s18\f3\(co\f1\s12 Copyright 1988, 1989, 1990 by The USENET Community Trust
- X.ps 10
- X.ss 12
- X.vs 12
- X.fi
- X.ad
- X.bp 1
- X.sv 5v
- X.ps 14
- X.ss 12
- X.vs 16
- X\f3The Elm Alias System Users Guide\f1
- X.ds h0 "Alias Users Guide
- X.ds h1
- X.ds h2 "Version 2.3
- X.ds f0 "May 1, 1990
- X.ds f1
- X.ds f2 "Page %
- X.sp
- X.ps 10
- X.ss 12
- X.vs 12
- X(Version 2.3)
- X.sp 2
- XDave Taylor
- X.sp
- XHewlett-Packard Laboratories
- X1501 Page Mill Road
- XPalo Alto CA
- X94304
- X.sp
- Xemail: taylor\s-1@\s+1hplabs.HP.COM or hplabs\s-1!\s+1taylor
- X.sp 2
- X>>> Elm is now in the public trust. Bug reports, comments, etc. to: <<<
- X.sp
- XSyd Weinstein
- XDatacomp Systems, Inc.
- X3837 Byron Road
- XHuntingdon Valley, PA 19006-2320
- X.sp
- Xemail: elm\s-1@\s+1DSI.COM or dsinc\s-1!\s+1elm
- X.sp 2
- XMay 1, 1990
- X.ce 0
- X.sp 3
- X.pg
- XThis document is intended as a supplement to the \f2Elm Users Guide\f1
- Xand is only of interest to those users desiring more knowledge
- Xabout how aliases work and how to create strange and exciting
- Xaliases for their systems (okay, so maybe it's not \f2that\f1 exciting!)
- X.sp
- X.pg
- XThis document is broken up into the following sections;
- Xuser aliases,
- Xgroup aliases,
- Xsystem aliases,
- Xediting and installing new aliases,
- Xthe host routing database,
- Xthe domain routing database,
- Xgeneral warnings and other chitchat.
- X.sp
- X.hn 1 User Aliases
- X
- XThe most simple type of aliases in the \f3Elm\f1 system are individual
- Xuser aliases. These are made up of three parts;
- X.nf
- X \f2aliasname list\f1 = \f2username\f1 = \f2address\f1 \s-2\u1\d\s0
- X.fn
- X1. Notice that the alias separator has moved from being a colon
- Xcharacter (`:') to the equals sign (`=').
- XThis is due to the requirements of the X.400 addressing scheme.
- X.ef
- X.fi
- XWhere the \f2aliasname list\f1 is either a single aliasname\s-2\u2\d\s0
- X.fn
- X2. aliasnames can be any combination of letters, numbers, dashes (`-'),
- Xperiods (`.'), or underscores (`_'). Letter case is not significant.
- XThat is `FRED' and `Fred' are identical.
- X.ef
- Xor a list of aliasnames separated by commas. Aliasnames are case insensitive and will be
- Xconverted to all lower case by the alias system.
- X.pg
- X\f2Username\f1 is used to indicate the full `real name' of the user.
- XFor example, if you had an alias for `taylor' to get to me, the
- X\f2username\f1 field would contain `Dave Taylor' or
- Xperhaps `Dave Taylor at HP'
- Xor some other permutation. \f3Elm\f1
- Xuses this information to add the users full name to the addresses of
- Xoutbound mail to get more readable addresses.
- X.pg
- X\f2Address\f1 is either the users full electronic mail address or, if
- Xthe machine routing database is installed, the minimum address needed
- Xto specify the destination. For example, say our routing database
- Xcontained information on how to get to machine `hp-sdd' and I wanted
- Xto have an address for my friend Ken there \(em I could have his address
- Xspecified as simply `ken@hp-sdd' (or alternatively `hp-sdd!ken' since
- Xthe two are functionally equivalent).
- X.sp
- X.pg 0
- XLet's get on to some examples, shall we?
- X.sp
- XConsider this excerpt from my own \f2.elm/aliases.text\f1 file;
- X
- X.nf
- X.ft CW
- X.zf
- X.in .5i
- X.ta \w'frank,minjarez 'u \w'frank,minjarez = Frank Minjarez 'u
- X# Mail aliases for Dave Taylor
- X# Friends from UCSD
- Xaddie = Addie Silva = addie@hp-sdd.SDD.HP.COM
- Xfrank,minjarez = Frank Minjarez = Minjarez.Verify@dockmaster.arpa
- Xpizzini = Ken Pizzini = hplabs!ucbvax!ucdavis!pai!ken
- X.ft 1
- X
- X.in 0
- X.fi
- XNote that the alias for Frank Minjarez has two \f2aliasnames\f1 associated
- Xwith it,
- X.ft CW
- X.zf
- Xfrank\f1 and
- X.ft CW
- X.zf
- Xminjarez\f1.
- XAlso notice that the first and second aliases
- Xuse the ARPA Internet style naming convention of \f2user@machine\f1
- Xwhereas the third uses the UUCP notation of \f2machine!user\f1.
- X.pg
- XFor the most part, the notational format is transparent within the
- Xalias file \(em the only time it \f2does\f1 make a difference
- Xis if you have to specify more than the machine that the user is
- Xreceiving mail on (as in the third example above).
- X.pg
- XSuffice to say that if you must specify any sort of uucp route
- Xthat you should use the uucp notation as much as possible to ensure
- Xthat the system expands the correct machine name. Similarly, if
- Xyou're bouncing mail through different ARPA Internet sites (to
- Xget to a foreign system, as in the example below) you should use the
- Xnotation that system expects:
- X
- X.ft CW
- X.zf
- X.ti .5i
- X listserv%byuadmin.BITNET@rugters.edu
- X.ft 1
- X.sp
- X.hn 1 Group Aliases
- X
- XAfter the confusion of user aliases, group aliases are even more
- Xfun! For the most part the notation is very similar;
- X
- X \f2aliasname list\f1 = \f2groupname\f1 = \f2list of people\f1
- X
- XWhere \f2aliasname list\f1 and \f2groupname\f1 are exactly equivalent
- Xto the corresponding fields in user aliases.
- X.pg
- XThe interesting part is the \f2list of people\f1 field; this
- Xfield is actually in the same notation as the aliasname list,
- Xso it's really quite easy to create.
- XIt's best to illustrate by example:
- X
- X.ft CW
- X.zf
- X.nf
- X.in .5i
- Xfriends, mypals = The Gang of Six = joe, larry, mary, joanna,
- X\h'\w'friends, mypals = The Gang of Six = 'u'nancy, michael
- X.ft 1
- X
- X.in 0
- X.fi
- X(Notice that you can continue onto as many lines as you'd like so
- Xlong as each additional line start with either a \s8SPACE\s10 or a \s8TAB\s10
- Xcharacter)
- X.pg
- XThe major limitation with group aliases is that each of the
- Xpeople in the list must be a \f2previously defined alias\f1
- Xor a valid mail address on the current machine.
- X.pg
- XWhat does this mean? That the following excerpt from an alias file:
- X
- X.in .5i
- X.ft CW
- X.zf
- X.nf
- X.ta \w'hawaii 'u \w'hawaii = The Hawaiian Twins 'u
- Xhawaii = The Hawaiian Twins = joe@cs.rit.edu, maoa
- Xmaoa = Maoa Lichtenski Jr = maoa@Hawaii.cs.uh.edu
- X.ft 1
- X
- X.in 0
- X.fi
- Xwill fail for two reasons \(em not only does the group \f2list of people\f1
- Xcontain a complex address, but it also contains an aliasname that is
- Xdefined \f2further on\f1 in
- Xthe \f2.elm/aliases.text\f1 file.
- X.pg
- XThe correct way to have the previous aliases in the file are to have them
- Xorganized like:
- X
- X.ft CW
- X.zf
- X.in .5i
- X.ta \w'hawaii 'u \w'hawaii = The Hawaiian Twins 'u
- X.nf
- Xjoe = Joe Lichtenski = joe@cs.rit.edu
- Xmaoa = Maoa Lichtenski Jr = maoa@Hawaii.cs.uh.edu
- Xhawaii = The Hawaiian Twins = joe, maoa
- X.ft 1
- X
- X.in 0
- X.fi
- Xwhich will then work correctly.
- X.sp
- XFortunately, while this seems fairly picky, when you run \f2newalias\f1
- Xto install the new aliases, you'll get relevant and meaningful
- Xerror messages to help you fix your aliases up correctly.
- X.sp
- X.hn 1 System Aliases
- X
- XSystem aliases are functionally equivalent to the individual \f3Elm\f1
- Xalias lists each \f3Elm\f1 user has (both user aliases and group aliases)
- Xbut are \f2read only\f1 for everyone but the \f3Elm\f1 administrator. The
- Xformat of the file is identical to the users file, and the only difference is
- Xthat this file is expected to be located in the directory that contains
- Xthe \f2system_hash_file\f1 and \f2system_data_file\f1 files (see the
- X\f2Elm Configuration Guide\f1 for more details on these variables).
- X.pg
- XSimply create the system alias file in the specified directory
- Xas you would a normal alias file, and install it the same way (see the
- Xfollowing section for more details on that).
- X.pg
- XVoila!!
- X.sp
- X.hn 1 Editing and Installing New Aliases
- X
- XTo install new aliases, you need merely to create, or modify,
- Xthe file \f2.elm/aliases.text\f1 until you're
- Xsatisfied with it and it meets the requirements discussed above.
- XYou can then try to install it with the command;
- X
- X $ \f3newalias\f1
- X
- Xwhich will either report back the number of aliases installed
- Xor any errors encountered trying to parse and store the
- Xgiven alias list.
- X.pg
- XNote that blank lines are no problem and that comments are not only
- Xallowed but actually encouraged, and must have `\f3#\f1' as the first
- Xcharacter of each comment line.
- X.sp
- XFinally, if you find that you're hitting the ``Too many aliases'' error,
- Xthen you'll need to reconfigure the entire \f3Elm\f1 system (again,
- Xsee \f2The Elm Configuration Guide\f1).
- X.sp
- X.hn 1 The Hostname Routing Database
- X
- XFloating about on the various networks is a rather nifty program by
- Xa number of people, including Peter Honeyman and Steve Bellovin,
- Xcalled \f2pathalias\f1. What this software does is
- SHAR_EOF
- echo "End of part 3"
- echo "File doc/Alias.guide is continued in part 4"
- echo "4" > s2_seq_.tmp
- exit 0
- exit 0 # Just in case...
-