home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume22 / elm2.3 / part03 < prev    next >
Text File  |  1990-06-07  |  50KB  |  1,944 lines

  1. Subject:  v22i062:  ELM mail syste, release 2.3, Part03/26
  2. Newsgroups: comp.sources.unix
  3. Approved: rsalz@uunet.UU.NET
  4. X-Checksum-Snefru: f71bd890 727969a2 d8cc63cd c5702676
  5.  
  6. Submitted-by: Syd Weinstein <syd@dsinc.dsi.com>
  7. Posting-number: Volume 22, Issue 62
  8. Archive-name: elm2.3/part03
  9.  
  10. ---- Cut Here and unpack ----
  11. #!/bin/sh
  12. # this is part 3 of a multipart archive
  13. # do not concatenate these parts, unpack them in order with /bin/sh
  14. # file Configure continued
  15. #
  16. CurArch=3
  17. if test ! -r s2_seq_.tmp
  18. then echo "Please unpack part 1 first!"
  19.      exit 1; fi
  20. ( read Scheck
  21.   if test "$Scheck" != $CurArch
  22.   then echo "Please unpack part $Scheck next!"
  23.        exit 1;
  24.   else exit 0; fi
  25. ) < s2_seq_.tmp || exit 1
  26. echo "x - Continuing file Configure"
  27. sed 's/^X//' << 'SHAR_EOF' >> Configure
  28. X    fi
  29. Xelse
  30. X    if $test -r /usr/include/termio.h ; then
  31. X    d_termio="$define"
  32. X    echo "termio.h found."
  33. X    elif $test -r /usr/include/sgtty.h ; then
  34. X    echo "sgtty.h found."
  35. X    else
  36. X    echo "Neither termio.h nor sgtty.h found--you could have problems."
  37. X    fi
  38. Xfi
  39. X
  40. X: see if we should include time.h, sys/time.h, or both
  41. Xcat <<'EOM'
  42. X  
  43. XTesting to see if we should include <time.h>, <sys/time.h> or both.
  44. XI'm now running the test program...
  45. XEOM
  46. X$cat >try.c <<'EOCP'
  47. X#ifdef I_TIME
  48. X#include <time.h>
  49. X#endif
  50. X#ifdef I_SYSTIME
  51. X#ifdef SYSTIMEKERNEL
  52. X#define KERNEL
  53. X#endif
  54. X#include <sys/time.h>
  55. X#endif
  56. Xmain()
  57. X{
  58. X    struct tm foo;
  59. X#ifdef S_TIMEVAL
  60. X    struct timeval bar;
  61. X#endif
  62. X    if (foo.tm_sec == foo.tm_sec)
  63. X    exit(0);
  64. X#ifdef S_TIMEVAL
  65. X    if (bar.tv_sec == bar.tv_sec)
  66. X    exit(0);
  67. X#endif
  68. X    exit(1);
  69. X}
  70. XEOCP
  71. Xflags=''
  72. Xfor s_timeval in '-DS_TIMEVAL' ''; do
  73. X    for d_systimekernel in '' '-DSYSTIMEKERNEL'; do
  74. X    for i_time in '' '-DI_TIME'; do
  75. X        for i_systime in '-DI_SYSTIME' ''; do
  76. X        case "$flags" in
  77. X        '') echo Trying $i_time $i_systime $d_systimekernel $s_timeval
  78. X            if $cc $ccflags $i_time $i_systime $d_systimekernel $s_timeval \
  79. X                try.c -o try >/dev/null 2>&1 ; then
  80. X            set X $i_time $i_systime $d_systimekernel $s_timeval
  81. X            shift
  82. X            flags="$*"
  83. X            echo Succeeded with $flags
  84. X            fi
  85. X            ;;
  86. X        esac
  87. X        done
  88. X    done
  89. X    done
  90. Xdone
  91. Xcase "$flags" in
  92. X*SYSTIMEKERNEL*) d_systimekernel="$define";;
  93. X*) d_systimekernel="$undef";;
  94. Xesac
  95. Xcase "$flags" in
  96. X*I_TIME*) i_time="$define";;
  97. X*) i_time="$undef";;
  98. Xesac
  99. Xcase "$flags" in
  100. X*I_SYSTIME*) i_systime="$define";;
  101. X*) i_systime="$undef";;
  102. Xesac
  103. X$rm -f try.c try
  104. X
  105. Xtimeincl=""
  106. Xif $test "$i_time" = define ; then
  107. X    timeincl="/usr/include/time.h"
  108. Xfi
  109. Xif $test "$i_systime" = define ; then
  110. X    timeincl="$timeincl /usr/include/sys/time.h"
  111. Xfi
  112. X$cat $timeincl /dev/null | $cppstdin $cppminus > try.c 2>&1
  113. Xif $contains 'tz_minuteswest' try.c > /dev/null 2>&1 ; then
  114. X    echo "You have tz_minuteswest defined in $timeincl rather than timezone."
  115. X    d_tz_min="$define"
  116. Xelse
  117. X    echo "You have timezone defined in $timeincl rather than tz_minuteswest."
  118. X    d_tz_min="$undef"
  119. Xfi
  120. X$rm -f try.c
  121. X: check for valid reply/to fields
  122. Xcase "$d_useembed" in
  123. X"$define")    dflt=y;;
  124. X"$undef")    dflt=n;;
  125. X*)        dflt=n;;
  126. Xesac
  127. X$cat <<EOM
  128. XOne of the more annoying quirks of the UUCP network and various other
  129. Xsystems that interact with it are that everyone seems to have different
  130. Xideas about how to do routing, etc.  Therefore, a lot of times email
  131. Xwill arrive from offsite with corrupt, unreply-able "Reply-To:" and
  132. X"From:" fields.  This next question relates to whether your site is
  133. Xliable to get mangled fields or not...
  134. X
  135. XDoes your site receive email with valid "Reply-To:" and "From:" fields?
  136. X
  137. XEOM
  138. X$echo $n "Use Reply-To: and From: addresses? [$dflt] $c"
  139. Xrp="Are Reply-to: and From: addresses reliable? [$dflt]"
  140. X. myread
  141. Xcase "$ans" in
  142. Xy*) d_useembed="$define";;
  143. X*)  d_useembed="$undef";;
  144. Xesac
  145. X
  146. X: check for utimbuf structure
  147. Xecho " "
  148. Xcase "$d_utimbuf" in
  149. X"$define")    ;;
  150. X"$undef")    ;;
  151. X*)
  152. X: Pyramid passes the att compile test but still needs the definition
  153. X    if Cppsym pyr ; then
  154. X        if $test "`/bin/universe`" = "att" ; then
  155. X        d_utimbuf="$define"
  156. X        echo "I will use my 'utimbuf' structure..."
  157. X            fi
  158. X        fi
  159. X    if $test "$d_utimbuf" != "$define"; then
  160. X        echo "Checking to see if struct utimbuf exists."
  161. X        $cat >try.c <<'EOCP'
  162. X#include <stdio.h>
  163. X#include <fcntl.h>
  164. X#include <sys/types.h>
  165. X#include <sys/stat.h>
  166. X#define far /* to keep XENIX from complaining */
  167. X#include <sys/file.h>
  168. X#include <time.h>
  169. Xmain()
  170. X{
  171. Xstruct utimbuf test;
  172. Xtest.actime = 0;
  173. Xexit(1);
  174. X}
  175. XEOCP
  176. X        if $cc try.c -o try >/dev/null 2>&1 ; then
  177. X        d_utimbuf="$undef"
  178. X        echo "You have the 'utimbuf' structure..."
  179. X        else
  180. X        echo "I will use my 'utimbuf' structure..."
  181. X        d_utimbuf="$define"
  182. X        fi
  183. X        $rm -f try.c try.o try
  184. X    fi
  185. X    ;;
  186. Xesac
  187. X
  188. X: see if there is a vfork
  189. Xset vfork d_vfork
  190. Xeval $inlibc
  191. X
  192. X: see if signal is declared as pointer to function returning int or void
  193. Xecho " "
  194. X$cppstdin $cppflags < /usr/include/signal.h >$$.tmp
  195. Xif $contains 'int.*signal' $$.tmp >/dev/null 2>&1 ; then
  196. X    echo "You have int (*signal())() instead of void."
  197. X    d_voidsig="$undef"
  198. Xelif $contains 'void.*signal' $$.tmp >/dev/null 2>&1 ; then
  199. X    echo "You have void (*signal())() instead of int."
  200. X    d_voidsig="$define"
  201. Xelif $test -z "$d_voidsig"; then
  202. X    echo $n "As you already told me, signal handlers return "
  203. X    if $test "$d_voidsig" = "$define"; then
  204. X    echo void
  205. X    else
  206. X    echo int
  207. X    fi
  208. Xelse
  209. X    echo "I can't determine whether signal handlers return void or int..."
  210. X    echo "I'm assuming they return void like ANSI and POSIX want"
  211. X    d_voidsig="$define"
  212. Xfi
  213. Xrm -f $$.tmp
  214. X
  215. X: get user and system aliases sizes
  216. X$cat <<EOM
  217. XThe number of aliases allowed for users of the Elm system can vary
  218. Xbased on system speed and memory available.  If you have a fast system
  219. Xand/or a lot of memory you can enter a fairly large number of aliases
  220. Xfor the next two questions...if not, you'll probably want to enter the
  221. Xsuggested small-system values.  (This applies to the speed of the
  222. Xswapping on your system too - if you're on a FAST system, use the big
  223. Xvalues!)
  224. X
  225. XFirst, how many aliases should be allowed for an individual user?
  226. XThe suggested values are 503 for blindly fast systems,
  227. X251 for average systems and 127 for slow systems.
  228. XEOM
  229. X
  230. Xcase "$maxuseralias" in
  231. X    '') dflt=251;;
  232. X    *)  dflt=$maxuseralias;;
  233. Xesac
  234. Xcont=true
  235. Xwhile $test "$cont" ; do
  236. X    echo " "
  237. X    rp="Number of user aliases: [$dflt]"
  238. X    $echo $n "$rp $c"
  239. X    . myread
  240. X    maxuseralias="$ans"
  241. X    if $test "$maxuseralias" -lt 50 -o "$maxuseralias" -gt 1000 ; then
  242. X    $cat <<EOM
  243. XPretty strange answer!  I think you should reconsider and try a number
  244. Xfrom the range 50-1000.
  245. XEOM
  246. X    odflt=$dflt
  247. X    if $test "$fastread" = yes; then
  248. X        dflt=y
  249. X    else
  250. X        dflt=n
  251. X    fi
  252. X    rp="Should I use your answer of $maxuseralias user aliases anyway? [$dflt]"
  253. X    $echo $n "$rp $c"
  254. X    . myread
  255. X    dflt=$odflt
  256. X    case "$ans" in
  257. X    y*) cont='';;
  258. X    esac
  259. X    else
  260. X    cont=''
  261. X    fi
  262. Xdone
  263. X
  264. Xcase "$maxsysalias" in
  265. X    '') case "$maxuseralias" in
  266. X    127) dflt=223;;
  267. X    503) dflt=739;;
  268. X    *  ) dflt=503;;
  269. X    esac
  270. X    ;;
  271. X    *)  dflt=$maxsysalias;;
  272. Xesac
  273. Xcont=true
  274. Xwhile $test "$cont" ; do
  275. X    echo " "
  276. X    rp="Maximum number of system aliases: [$dflt]"
  277. X    $echo $n "$rp $c"
  278. X    . myread
  279. X    maxsysalias="$ans"
  280. X    if $test "$maxsysalias" -lt 50 -o "$maxsysalias" -gt 1000 ; then
  281. X    $cat <<EOM
  282. XPretty strange answer!  I think you should reconsider and try a number
  283. Xfrom the range 50-1000.
  284. XEOM
  285. X    odflt=$dflt
  286. X    if $test "$fastread" = yes; then
  287. X        dflt=y
  288. X    else
  289. X        dflt=n
  290. X    fi
  291. X    rp="Should I use your answer of $maxsysalias system aliases anyway? [$dflt]"
  292. X    $echo $n "$rp $c"
  293. X    . myread
  294. X    dflt=$odflt
  295. X    case "$ans" in
  296. X    y*) cont='';;
  297. X    esac
  298. X    else
  299. X    cont=''
  300. X    fi
  301. Xdone
  302. Xelmalias="$maxsysalias"
  303. X
  304. X: preserve RCS keywords in files with variable substitution, grrr
  305. XLog='$Log'
  306. XHeader='$Header'
  307. X
  308. X: see if symlink exists
  309. Xset symlink d_symlink
  310. Xeval $inlibc
  311. X
  312. X: get default batch subject
  313. X$cat <<EOM
  314. XElm will provide a default subject for mail messages that are sent
  315. Xin batch mode (redirected from a file.)
  316. XEOM
  317. X
  318. Xcase "$defbatsub" in
  319. X    '') dflt='no subject (file transmission)';;
  320. X    *)  dflt=$defbatsub;;
  321. Xesac
  322. Xecho " "
  323. Xrp="Default batch subject: [$dflt]"
  324. X$echo $n "$rp $c"
  325. X. myread
  326. Xdefbatsub="$ans"
  327. X
  328. X: determine default editor
  329. Xcase "$defeditor" in
  330. X'')
  331. X    case "$_vi" in
  332. X    */*) dflt="$_vi";;
  333. X    *) dflt=/usr/ucb/vi;;
  334. X    esac
  335. X    ;;
  336. X*)  dflt="$defeditor"
  337. X    ;;
  338. Xesac
  339. Xcont=true
  340. Xwhile $test "$cont" ; do
  341. X    echo " "
  342. X    rp="What is the default editor on your system? [$dflt]"
  343. X    $echo $n "$rp $c"
  344. X    . myread
  345. X    defeditor="$ans"
  346. X    if $test -f $ans; then
  347. X    cont=''
  348. X    else
  349. X    if $test "$fastread" = yes; then
  350. X        dflt=y
  351. X    else
  352. X        dflt=n
  353. X    fi
  354. X    rp="File $ans doesn't exist.  Use that name anyway? [$dflt]"
  355. X    $echo $n "$rp $c"
  356. X    . myread
  357. X    dflt=''
  358. X    case "$ans" in
  359. X    y*) cont='';;
  360. X    esac
  361. X    fi
  362. Xdone
  363. X
  364. X: determine where public libraries go
  365. Xcase "$lib" in
  366. X'')
  367. X    dflt=`loc . "." /usr/local/lib /usr/lib /lib`
  368. X    ;;
  369. X*)  dflt="$lib"
  370. X    ;;
  371. Xesac
  372. Xcont=true
  373. Xwhile $test "$cont" ; do
  374. X    echo " "
  375. X    rp="Where do you want to put the public libraries? [$dflt]"
  376. X    $echo $n "$rp $c"
  377. X    . myread
  378. X    lib="$ans"
  379. X    lib=`filexp $lib`
  380. X    if $test -d "$lib"; then
  381. X    cont=''
  382. X    else
  383. X    dflt=n
  384. X    rp="Directory $lib doesn't exist.  Use that name anyway? [$dflt]"
  385. X    $echo $n "$rp $c"
  386. X    . myread
  387. X    dflt=''
  388. X    case "$ans" in
  389. X    y*) cont='';;
  390. X    esac
  391. X    fi
  392. Xdone
  393. X
  394. X: ask the preferred line printer and options for this system.
  395. Xcase "$linepr" in
  396. X'')
  397. X    if $test -f "$lp"; then
  398. X    dflt="$lp"
  399. X    elif $test -f "$lpr"; then
  400. X    dflt="$lpr"
  401. X    else
  402. X    dflt=
  403. X    fi
  404. X    ;;
  405. X*)  dflt="$linepr";;
  406. Xesac
  407. X
  408. Xlinepr='blurfl/dyick'
  409. X$cat <<EOM
  410. X
  411. XElm has an option to send messages to the printer.  This question
  412. Xasks for the default spooler name.  You can also specify options
  413. Xto the command by separating them from the command by at least one space. 
  414. X
  415. XEOM
  416. Xcont=true
  417. Xwhile $test "$cont" ; do
  418. X    rp="What print spooler do you prefer to use with Elm? [$dflt]"
  419. X    $echo $n "$rp $c"
  420. X    . myread
  421. X    linepr="$ans"
  422. X    ans=`$expr "$linepr" : "\([^ ]*\).*"`
  423. X    case "$ans" in
  424. X    /*)
  425. X    if $test -f "$ans"; then
  426. X        cont=''
  427. X    else
  428. X        if $test "$fastread" = yes; then
  429. X        dflt=y
  430. X        else
  431. X        dflt=n
  432. X        fi
  433. X        rp="File $ans doesn't exist.  Use that name anyway? [$dflt]"
  434. X        $echo $n "$rp $c"
  435. X        . myread
  436. X        case "$ans" in
  437. X        y*) cont='';;
  438. X        esac
  439. X    fi
  440. X    ;;
  441. X    *)
  442. X    echo "Please give the full path name."
  443. X    ;;
  444. X    esac
  445. Xdone
  446. X
  447. X: determine where mail is spooled
  448. Xcase "$maildir" in
  449. X'')
  450. X    dflt=`loc . /usr/spool/mail /usr/spool/mail /usr/mail`
  451. X    ;;
  452. X*)  dflt="$maildir"
  453. X    ;;
  454. Xesac
  455. Xcont=true
  456. Xwhile $test "$cont" ; do
  457. X    echo " "
  458. X    rp="Where is yet-to-be-read mail spooled? [$dflt]"
  459. X    $echo $n "$rp $c"
  460. X    . myread
  461. X    maildir=`filexp "$ans"`
  462. X    if test -d $maildir; then
  463. X    cont=''
  464. X    else
  465. X    if $test "$fastread" = yes; then
  466. X        dflt=y
  467. X    else
  468. X        dflt=n
  469. X    fi
  470. X    rp="Directory $maildir doesn't exist.  Use that name anyway? [$dflt]"
  471. X    $echo $n "$rp $c"
  472. X    . myread
  473. X    dflt=''
  474. X    case "$ans" in
  475. X    y*) cont='';;
  476. X    esac
  477. X    fi
  478. Xdone
  479. X
  480. X: determine the group of the mail directory- what group elm should use
  481. Xmailgrp=`$ls -lgd $maildir`
  482. Xmailgrp=`$expr "$mailgrp" : "[ld][rwxstS-]*[ 0123456789]*\(.*\)"`
  483. X: now mailgrp is either    user group size mon day time/year name
  484. X: or                       group size mon day time/year name
  485. Xtry1=`$expr "$mailgrp" : "[A-z0-9]* *\([A-z0-9]*\).*"`
  486. Xtry1a=`$expr "$try1" : "\([0-9]*\).*"`
  487. Xif $test "$try1" = "$try1a"; then
  488. X    mailgrp=`$expr "$mailgrp" : "\([A-z0-9]*\).*"`
  489. Xelse
  490. X    mailgrp="$try1"
  491. Xfi
  492. Xcase "$mailgrp" in
  493. X'')
  494. X    mailgrp=mail
  495. X    ;;
  496. Xesac
  497. Xecho " "
  498. Xecho "Mail group is $mailgrp"
  499. X
  500. X: ask the preferred pager for this system.
  501. Xcase "$pager" in
  502. X'') dflt="builtin+";;
  503. X*)  dflt="$pager";;
  504. Xesac
  505. X
  506. Xpager='blurfl/dyick'
  507. Xecho " "
  508. Xcont=true
  509. Xwhile $test "$cont" ; do
  510. X    rp="What pager do you prefer to use with $package? [$dflt]"
  511. X    $echo $n "$rp $c"
  512. X    . myread
  513. X    pager="$ans"
  514. X    case "$ans" in
  515. X    builtin)
  516. X        cont=''
  517. X    ;;
  518. X    builtin+)
  519. X        cont=''
  520. X    ;;
  521. X    /*)
  522. X    if $test -f "$ans"; then
  523. X        cont=''
  524. X    else
  525. X        if $test "$fastread" = yes; then
  526. X        dflt=y
  527. X        else
  528. X        dflt=n
  529. X        fi
  530. X        rp="File $ans doesn't exist.  Use that name anyway? [$dflt]"
  531. X        $echo $n "$rp $c"
  532. X        . myread
  533. X        case "$ans" in
  534. X        y*) cont='';;
  535. X        esac
  536. X    fi
  537. X    ;;
  538. X    *)
  539. X    echo "Please give the full path name."
  540. X    ;;
  541. X    esac
  542. Xdone
  543. X
  544. X: find out which shell people like to use most
  545. Xcase "$prefshell" in
  546. X'')
  547. X    if $test -f /bin/ksh; then
  548. X    dflt='/bin/ksh'
  549. X    elif $test -f /bin/csh; then
  550. X    dflt='/bin/csh'
  551. X    else
  552. X    dflt='/bin/sh'
  553. X    fi
  554. X    ;;
  555. X*)  dflt="$prefshell";;
  556. Xesac
  557. Xcont=true
  558. Xwhile $test "$cont" ; do
  559. X    echo " "
  560. X    echo "Give the full path name of the shell most people like to use on your"
  561. X    $echo $n "system: [$dflt] $c"
  562. X    rp="Preferred shell: [$dflt]"
  563. X    . myread
  564. X    prefshell=$ans
  565. X    if test -f $ans; then
  566. X    cont=''
  567. X    else
  568. X    if $test "$fastread" = yes; then
  569. X        dflt=y
  570. X    else
  571. X        dflt=n
  572. X    fi
  573. X    rp="File $ans doesn't exist.  Use that name anyway? [$dflt]"
  574. X    $echo $n "$rp $c"
  575. X    . myread
  576. X    dflt=''
  577. X    case "$ans" in
  578. X    y*) cont='';;
  579. X    esac
  580. X    fi
  581. Xdone
  582. X
  583. X: determine the name of the tape device
  584. Xrmttape=`loc rct0 "" /dev`
  585. Xif $test -z "$rmttape"; then
  586. X    rmttape=`loc rmt0 "" /dev`
  587. Xfi
  588. Xif $test -z "$rmttape"; then
  589. X    rmttape=`loc rtp0 "unknown-remote-tape-unit" /dev`
  590. Xfi
  591. Xecho "remote tape drive is $rmttape"
  592. Xecho " "
  593. X: where do we get termlib routines from
  594. Xecho " "
  595. Xans=`loc libcurses.a x $libpth`
  596. Xif $test "$ans" = x; then
  597. X    ans=`loc Slibcurses.a x $libpth`
  598. Xfi
  599. Xcase "$ans" in
  600. X/*)
  601. X    ar t $ans >grimble
  602. X    if $contains tputs.o grimble >/dev/null 2>&1; then
  603. X    termlib='-lcurses'
  604. X    d_havetlib="$define"
  605. X    echo "Terminfo library found."
  606. X    else
  607. X    ans=x
  608. X    fi
  609. X    rm -f grimble
  610. X    ;;
  611. Xesac
  612. Xcase "$ans" in
  613. Xx)
  614. X    ans=`loc libtermlib.a x $libpth`
  615. X    if $test "$ans" = x; then
  616. X    ans=`loc Slibtermlib.a x $libpth`
  617. X    fi
  618. X    case "$ans" in
  619. X    /usr/lib*|/lib*)
  620. X    termlib='-ltermlib'
  621. X    d_havetlib="$define"
  622. X    echo "Termlib library found."
  623. X    ;;
  624. X    /*)
  625. X    termlib="$ans"
  626. X    d_havetlib="$define"
  627. X    echo "Termlib library found."
  628. X    ;;
  629. X    *)
  630. X    ans=`loc libtermcap.a x $libpth`
  631. X    if $test "$ans" = x; then
  632. X        ans=`loc Slibtermcap.a x $libpth`
  633. X    fi
  634. X    case "$ans" in
  635. X    /usr/lib*|/lib*)
  636. X        termlib='-ltermcap'
  637. X        d_havetlib="$define"
  638. X        echo "Termcap library found."
  639. X        ;;
  640. X    /*)
  641. X        termlib="$ans"
  642. X        d_havetlib="$define"
  643. X        echo "Termcap library found."
  644. X        ;;
  645. X    *)
  646. X        case "$termlib" in
  647. X        '')
  648. X        dflt=y
  649. X        rp="Your system appears to NOT have termlib-style routines.  Is this true? [$dflt]"
  650. X        $echo $n "$rp $c"
  651. X        . myread
  652. X        case "$ans" in
  653. X            n*|f*) d_havetlib="$define"
  654. X              echo "Then where are the termlib-style routines kept (specify either -llibname"
  655. X              $echo $n " or full pathname (~name ok))? $c"
  656. X              rp='Specify termlib:'
  657. X              . myread
  658. X              termlib=`filexp $ans`
  659. X              ;;
  660. X            *)    d_havetlib="$undef"
  661. X              termlib=''
  662. X              echo "You will have to play around with term.c then."
  663. X              ;;
  664. X        esac
  665. X        echo " "
  666. X        ;;
  667. X        *)  echo "You said termlib was $termlib before."
  668. X        ;;
  669. X        esac
  670. X        ;;
  671. X    esac
  672. X    ;;
  673. X    esac
  674. X    ;;
  675. Xesac
  676. X
  677. X: determine where temporary files should go
  678. Xcase "$tmpdir" in
  679. X'')
  680. X    dflt=`loc . "." "/tmp /usr/tmp"`
  681. X    ;;
  682. X*)  dflt="$tmpdir"
  683. X    ;;
  684. Xesac
  685. Xif $test -d "$tmpdir" -a "$tmpdir" != ""; then
  686. X    $echo " "
  687. X    $echo "Temporary files will be put in the $tmpdir directory"
  688. Xelse
  689. X    cont=true
  690. X    while $test "$cont" ; do
  691. X        $echo " "
  692. X        rp="Where do you want to put the temporary files? [$dflt]"
  693. X        $echo $n "$rp $c"
  694. X        . myread
  695. X        tmpdir="$ans"
  696. X        tmpdir=`filexp $tmpdir`
  697. X        if $test -d "$tmpdir" -a "$tmpdir" != ""; then
  698. X        cont=''
  699. X        else
  700. X        if $test "$fastread" = yes; then
  701. X            dflt=y
  702. X        else
  703. X            dflt=n
  704. X        fi
  705. X        rp="Directory $tmpdir doesn't exist.  Use that name anyway? [$dflt]"
  706. X        $echo $n "$rp $c"
  707. X        . myread
  708. X        dflt=''
  709. X        case "$ans" in
  710. X        y*) cont='';;
  711. X        esac
  712. X        fi
  713. X    done
  714. Xfi
  715. X
  716. Xcase "$d_noxheader" in
  717. X"$define") dflt=y;;
  718. X"$undef")  dflt=n;;
  719. X*)    dflt=n;;
  720. Xesac
  721. X$cat <<EOM
  722. XSome sites to not like to see the mail header "X-mailer:" in outgoing
  723. Xmessages.  If you choose, you may disable these headers.  However, it
  724. Xis strongly urged to leave these headers in the mail to assist in
  725. Xtracking down problems.
  726. X
  727. XEOM
  728. Xrp="Would you like to disable the X-mailer: headers? [$dflt]"
  729. X$echo $n "$rp $c"
  730. X. myread
  731. Xcase "$ans" in
  732. Xy*) d_noxheader="$define";;
  733. X*)  d_noxheader="$undef";;
  734. Xesac
  735. X
  736. Xecho " "
  737. Xecho "End of configuration questions."
  738. Xecho " "
  739. X
  740. X: create config.sh file
  741. Xecho " "
  742. Xif test -d ../UU; then
  743. X    cd ..
  744. Xfi
  745. Xecho "Creating config.sh..."
  746. X$spitshell <<EOT >config.sh
  747. X$startsh
  748. X# config.sh
  749. X# This file was produced by running the Configure script.
  750. X
  751. Xdefine='$define'
  752. Xeunicefix='$eunicefix'
  753. XLog='$Log'
  754. XHeader='$Header'
  755. Xbin='$bin'
  756. Xbyteorder='$byteorder'
  757. Xcontains='$contains'
  758. Xcppstdin='$cppstdin'
  759. Xcppminus='$cppminus'
  760. Xd_crypt='$d_crypt'
  761. Xcryptlib='$cryptlib'
  762. Xd_getopt='$d_getopt'
  763. Xd_havetlib='$d_havetlib'
  764. Xtermlib='$termlib'
  765. Xd_mkdir='$d_mkdir'
  766. Xd_portable='$d_portable'
  767. Xd_rename='$d_rename'
  768. Xd_sigvec='$d_sigvec'
  769. Xd_sigvectr='$d_sigvectr'
  770. Xd_symlink='$d_symlink'
  771. Xd_vfork='$d_vfork'
  772. Xd_whoami='$d_whoami'
  773. Xdefeditor='$defeditor'
  774. Xhostname='$hostname'
  775. Xphostname='$phostname'
  776. Xmydomain='$mydomain'
  777. Xi_time='$i_time'
  778. Xi_systime='$i_systime'
  779. Xd_systimekernel='$d_systimekernel'
  780. Xmaildir='$maildir'
  781. Xn='$n'
  782. Xc='$c'
  783. Xpackage='$package'
  784. Xpager='$pager'
  785. Xprefshell='$prefshell'
  786. Xspitshell='$spitshell'
  787. Xshsharp='$shsharp'
  788. Xsharpbang='$sharpbang'
  789. Xstartsh='$startsh'
  790. Xd_eunice='$d_eunice'
  791. Xloclist='$loclist'
  792. Xexpr='$expr'
  793. Xsed='$sed'
  794. Xecho='$echo'
  795. Xcat='$cat'
  796. Xrm='$rm'
  797. Xmv='$mv'
  798. Xcp='$cp'
  799. Xtail='$tail'
  800. Xtr='$tr'
  801. Xmkdir='$mkdir'
  802. Xsort='$sort'
  803. Xuniq='$uniq'
  804. Xgrep='$grep'
  805. Xtrylist='$trylist'
  806. Xtest='$test'
  807. Xinews='$inews'
  808. Xegrep='$egrep'
  809. Xmore='$more'
  810. Xpg='$pg'
  811. XMcc='$Mcc'
  812. Xvi='$vi'
  813. Xmailx='$mailx'
  814. Xmail='$mail'
  815. Xcpp='$cpp'
  816. Xperl='$perl'
  817. Xemacs='$emacs'
  818. Xls='$ls'
  819. Xrmail='$rmail'
  820. Xsendmail='$sendmail'
  821. Xshar='$shar'
  822. Xsmail='$smail'
  823. Xtbl='$tbl'
  824. Xtroff='$troff'
  825. Xnroff='$nroff'
  826. Xuname='$uname'
  827. Xuuname='$uuname'
  828. Xline='$line'
  829. Xchgrp='$chgrp'
  830. Xchmod='$chmod'
  831. Xlint='$lint'
  832. Xsleep='$sleep'
  833. Xpr='$pr'
  834. Xtar='$tar'
  835. Xln='$ln'
  836. Xlpr='$lpr'
  837. Xlp='$lp'
  838. Xtouch='$touch'
  839. Xmake='$make'
  840. Xdate='$date'
  841. Xcsh='$csh'
  842. Xc_date='$c_date'
  843. Xd_calendar='$d_calendar'
  844. Xcalendar='$calendar'
  845. Xd_cuserid='$d_cuserid'
  846. Xd_flock='$d_flock'
  847. Xd_flockonly='$d_flockonly'
  848. Xlock_dir='$lock_dir'
  849. Xd_gethname='$d_gethname'
  850. Xd_douname='$d_douname'
  851. Xd_phostname='$d_phostname'
  852. Xd_host_comp='$d_host_comp'
  853. Xd_havedbm='$d_havedbm'
  854. Xdbm='$dbm'
  855. Xd_index='$d_index'
  856. Xd_internet='$d_internet'
  857. Xd_mboxedit='$d_mboxedit'
  858. Xd_mmdf='$d_mmdf'
  859. Xd_newauto='$d_newauto'
  860. Xd_nfs='$d_nfs'
  861. Xd_networkorder='$d_networkorder'
  862. Xd_noxheader='$d_noxheader'
  863. Xd_optreturn='$d_optreturn'
  864. Xd_pafirst='$d_pafirst'
  865. Xd_notouchadd='$d_notouchadd'
  866. Xd_noaddfrom='$d_noaddfrom'
  867. Xd_usedomain='$d_usedomain'
  868. Xd_nocheckvalid='$d_nocheckvalid'
  869. Xd_pidcheck='$d_pidcheck'
  870. Xd_ptem='$d_ptem'
  871. Xd_remlock='$d_remlock'
  872. Xmaxattempts='$maxattempts'
  873. Xd_setgid='$d_setgid'
  874. Xmailermode='$mailermode'
  875. Xd_strcspn='$d_strcspn'
  876. Xd_strspn='$d_strspn'
  877. Xd_strings='$d_strings'
  878. Xd_pwdinsys='$d_pwdinsys'
  879. Xstrings='$strings'
  880. Xincludepath='$includepath'
  881. Xd_subshell='$d_subshell'
  882. Xd_tempnam='$d_tempnam'
  883. Xtempnamo='$tempnamo'
  884. Xtempnamc='$tempnamc'
  885. Xd_termio='$d_termio'
  886. Xd_termios='$d_termios'
  887. Xd_tz_min='$d_tz_min'
  888. Xd_useembed='$d_useembed'
  889. Xd_utimbuf='$d_utimbuf'
  890. Xd_voidsig='$d_voidsig'
  891. Xdefbatsub='$defbatsub'
  892. Xelmalias='$elmalias'
  893. Xmaxsysalias='$maxsysalias'
  894. Xmaxuseralias='$maxuseralias'
  895. Xlib='$lib'
  896. Xlibc='$libc'
  897. Xlinepr='$linepr'
  898. Xmailer='$mailer'
  899. Xmailgrp='$mailgrp'
  900. Xmansrc='$mansrc'
  901. Xmanext='$manext'
  902. Xmodels='$models'
  903. Xsplit='$split'
  904. Xsmall='$small'
  905. Xmedium='$medium'
  906. Xlarge='$large'
  907. Xhuge='$huge'
  908. Xoptimize='$optimize'
  909. Xccflags='$ccflags'
  910. Xcppflags='$cppflags'
  911. Xldflags='$ldflags'
  912. Xcc='$cc'
  913. Xlibs='$libs'
  914. Xnametype='$nametype'
  915. Xd_passnames='$d_passnames'
  916. Xd_berknames='$d_berknames'
  917. Xd_usgnames='$d_usgnames'
  918. Xpasscat='$passcat'
  919. Xpathalias='$pathalias'
  920. Xdomains='$domains'
  921. Xrmttape='$rmttape'
  922. Xroff='$roff'
  923. Xtmpdir='$tmpdir'
  924. Xxencf='$xencf'
  925. Xxenlf='$xenlf'
  926. Xd_xenix='$d_xenix'
  927. Xd_bsd='$d_bsd'
  928. XCONFIG=true
  929. XEOT
  930. X
  931. XCONFIG=true
  932. X
  933. Xecho " "
  934. Xdflt=''
  935. Xfastread=''
  936. Xecho "If you didn't make any mistakes, then just type a carriage return here."
  937. Xrp="If you need to edit config.sh, do it as a shell escape here:"
  938. X$echo $n "$rp $c"
  939. X. UU/myread
  940. Xcase "$ans" in
  941. X'') ;;
  942. X*) : in case they cannot read
  943. X    eval $ans;;
  944. Xesac
  945. X: if this fails, just run all the .SH files by hand
  946. X. ./config.sh
  947. X
  948. Xecho " "
  949. Xecho "Doing variable substitutions on .SH files..."
  950. Xset x `awk '{print $1}' <MANIFEST | $grep '\.SH'`
  951. Xshift
  952. Xcase $# in
  953. X0) set x *.SH; shift;;
  954. Xesac
  955. Xif test ! -f $1; then
  956. X    shift
  957. Xfi
  958. Xfor file in $*; do
  959. X    case "$file" in
  960. X    */*)
  961. X    dir=`$expr X$file : 'X\(.*\)/'`
  962. X    file=`$expr X$file : 'X.*/\(.*\)'`
  963. X    (cd $dir && . $file)
  964. X    ;;
  965. X    *)
  966. X    . $file
  967. X    ;;
  968. X    esac
  969. Xdone
  970. Xif test -f config.h.SH; then
  971. X    if test ! -f config.h; then
  972. X    : oops, they left it out of MANIFEST, probably, so do it anyway.
  973. X    . config.h.SH
  974. X    fi
  975. Xfi
  976. X
  977. Xif $contains '^depend:' Makefile >/dev/null 2>&1; then
  978. X    dflt=n
  979. X    $cat <<EOM
  980. X
  981. XNow you need to generate make dependencies by running "make depend".
  982. XYou might prefer to run it in background: "make depend > makedepend.out &"
  983. XIt can take a while, so you might not want to run it right now.
  984. X
  985. XEOM
  986. X    rp="Run make depend now? [$dflt]"
  987. X    $echo $n "$rp $c"
  988. X    . UU/myread
  989. X    case "$ans" in
  990. X    y*) make depend && echo "Now you must run a make."
  991. X    ;;
  992. X    *)  echo "You must run 'make depend' then 'make'."
  993. X    ;;
  994. X    esac
  995. Xelif test -f Makefile; then
  996. X    echo " "
  997. X    echo "Now you must run a make."
  998. Xelse
  999. X    echo "Done."
  1000. Xfi
  1001. X
  1002. X$rm -f kit*isdone
  1003. X: the following is currently useless
  1004. Xcd UU && $rm -f $rmlist
  1005. X: since this removes it all anyway
  1006. Xcd .. && $rm -rf UU
  1007. X: end of Configure
  1008. SHAR_EOF
  1009. echo "File Configure is complete"
  1010. chmod 0555 Configure || echo "restore of Configure fails"
  1011. echo "x - extracting config.h.SH (Text)"
  1012. sed 's/^X//' << 'SHAR_EOF' > config.h.SH &&
  1013. Xcase $CONFIG in
  1014. X'')
  1015. X    if test ! -f config.sh; then
  1016. X    ln ../config.sh . || \
  1017. X    ln ../../config.sh . || \
  1018. X    ln ../../../config.sh . || \
  1019. X    (echo "Can't find config.sh."; exit 1)
  1020. X    echo "Using config.sh from above..."
  1021. X    fi
  1022. X    . ./config.sh
  1023. X    ;;
  1024. Xesac
  1025. Xecho "Extracting config.h (with variable substitutions)"
  1026. Xsed <<!GROK!THIS! >config.h -e 's!^#undef!/\*#undef!'
  1027. X/* config.h
  1028. X * This file was produced by running the config.h.SH script, which
  1029. X * gets its values from config.sh, which is generally produced by
  1030. X * running Configure.
  1031. X *
  1032. X * Feel free to modify any of this as the need arises.  Note, however,
  1033. X * that running config.h.SH again will wipe out any changes you've made.
  1034. X * For a more permanent change edit config.sh and rerun config.h.SH.
  1035. X */
  1036. X
  1037. X
  1038. X/* BIN:
  1039. X *    This symbol holds the name of the directory in which the user wants
  1040. X *    to put publicly executable images for the package in question.  It
  1041. X *    is most often a local directory such as /usr/local/bin.
  1042. X */
  1043. X#define BIN "$bin"             /**/
  1044. X
  1045. X/* BYTEORDER:
  1046. X *    This symbol contains an encoding of the order of bytes in a long.
  1047. X *    Usual values (in octal) are 01234, 04321, 02143, 03412...
  1048. X */
  1049. X#define BYTEORDER 0x$byteorder        /**/
  1050. X
  1051. X/* CPPSTDIN:
  1052. X *    This symbol contains the first part of the string which will invoke
  1053. X *    the C preprocessor on the standard input and produce to standard
  1054. X *    output.     Typical value of "cc -E" or "/lib/cpp".
  1055. X */
  1056. X/* CPPMINUS:
  1057. X *    This symbol contains the second part of the string which will invoke
  1058. X *    the C preprocessor on the standard input and produce to standard
  1059. X *    output.  This symbol will have the value "-" if CPPSTDIN needs a minus
  1060. X *    to specify standard input, otherwise the value is "".
  1061. X */
  1062. X#define CPPSTDIN "$cppstdin"
  1063. X#define CPPMINUS "$cppminus"
  1064. X
  1065. X/* CRYPT:
  1066. X *    This symbol, if defined, indicates that the crypt routine is available
  1067. X *    to encrypt passwords and the like.
  1068. X */
  1069. X#$d_crypt    CRYPT        /**/
  1070. X
  1071. X/* GETOPT:
  1072. X *    This symbol, if defined, indicates that the getopt() routine exists.
  1073. X */
  1074. X#$d_getopt    GETOPT        /**/
  1075. X
  1076. X/* HAVETERMLIB:
  1077. X *    This symbol, when defined, indicates that termlib-style routines
  1078. X *    are available.  There is nothing to include.
  1079. X */
  1080. X#$d_havetlib    HAVETERMLIB    /**/
  1081. X
  1082. X/* MKDIR:
  1083. X *    This symbol, if defined, indicates that the mkdir routine is available
  1084. X *    to create directories.  Otherwise you should fork off a new process to
  1085. X *    exec /bin/mkdir.
  1086. X */
  1087. X#$d_mkdir    MKDIR        /**/
  1088. X
  1089. X/* PORTABLE:
  1090. X *    This symbol, if defined, indicates to the C program that it should
  1091. X *    not assume that it is running on the machine it was compiled on.
  1092. X *    The program should be prepared to look up the host name, translate
  1093. X *    generic filenames, use PATH, etc.
  1094. X */
  1095. X#$d_portable    PORTABLE    /**/
  1096. X
  1097. X/* RENAME:
  1098. X *    This symbol, if defined, indicates that the rename routine is available
  1099. X *    to rename files.  Otherwise you should do the unlink(), link(), unlink()
  1100. X *    trick.
  1101. X */
  1102. X#$d_rename    RENAME        /**/
  1103. X
  1104. X/* SIGVEC:
  1105. X *    This symbol, if defined, indicates that BSD reliable signals are
  1106. X *    supported.
  1107. X */
  1108. X/* SIGVECTOR:
  1109. X *    This symbol, if defined, indicates that the sigvec() routine is called
  1110. X *    sigvector() instead, and that sigspace() is provided instead of
  1111. X *    sigstack().  This is probably only true for HP-UX.
  1112. X */
  1113. X#$d_sigvec    SIGVEC        /**/
  1114. X
  1115. X#$d_sigvectr    SIGVECTOR    /**/
  1116. X
  1117. X/* SYMLINK:
  1118. X *    This symbol, if defined, indicates that the symlink routine is available
  1119. X *    to create symbolic links.
  1120. X */
  1121. X#$d_symlink    SYMLINK        /**/
  1122. X
  1123. X/* VFORK:
  1124. X *    This symbol, if defined, indicates that vfork() exists.
  1125. X */
  1126. X#$d_vfork    VFORK    /**/
  1127. X
  1128. X/* WHOAMI:
  1129. X *    This symbol, if defined, indicates that the program may include
  1130. X *    whoami.h.
  1131. X */
  1132. X#$d_whoami    WHOAMI        /**/
  1133. X
  1134. X/* DEFEDITOR:
  1135. X *    This symbol contains the name of the default editor.
  1136. X */
  1137. X#define DEFEDITOR "$defeditor"        /**/
  1138. X
  1139. X/* HOSTNAME:
  1140. X *    This symbol contains name of the host the program is going to run on.
  1141. X *    The domain is not kept with hostname, but must be gotten from MYDOMAIN.
  1142. X *    The dot comes with MYDOMAIN, and need not be supplied by the program.
  1143. X *    If gethostname() or uname() exist, HOSTNAME may be ignored.
  1144. X */
  1145. X/* MYDOMAIN:
  1146. X *    This symbol contains the domain of the host the program is going to
  1147. X *    run on.  The domain must be appended to HOSTNAME to form a complete
  1148. X *    host name.  The dot comes with MYDOMAIN, and need not be supplied by
  1149. X *    the program.  If the host name is derived from PHOSTNAME, the domain
  1150. X *    may or may not already be there, and the program should check.
  1151. X */
  1152. X#define HOSTNAME "$hostname"        /**/
  1153. X#define MYDOMAIN "$mydomain"        /**/
  1154. X
  1155. X/* I_TIME:
  1156. X *    This symbol is defined if the program should include <time.h>.
  1157. X */
  1158. X/* I_SYSTIME:
  1159. X *    This symbol is defined if the program should include <sys/time.h>.
  1160. X */
  1161. X/* I_SYSTIMEKERNEL:
  1162. X *    This symbol is defined if the program should include <sys/time.h>
  1163. X *    with KERNEL defined.
  1164. X */
  1165. X#$i_time        I_TIME         /**/
  1166. X#$i_systime    I_SYSTIME     /**/
  1167. X#$d_systimekernel    SYSTIMEKERNEL     /**/
  1168. X
  1169. X/* PREFSHELL:
  1170. X *    This symbol contains the full name of the preferred user shell on this
  1171. X *    system.  Usual values are /bin/csh, /bin/ksh, /bin/sh.
  1172. X */
  1173. X#define PREFSHELL "$prefshell"        /**/
  1174. X
  1175. X/* EUNICE:
  1176. X *    This symbol, if defined, indicates that the program is being compiled
  1177. X *    under the EUNICE package under VMS.  The program will need to handle
  1178. X *    things like files that don't go away the first time you unlink them,
  1179. X *    due to version numbering.  It will also need to compensate for lack
  1180. X *    of a respectable link() command.
  1181. X */
  1182. X/* VMS:
  1183. X *    This symbol, if defined, indicates that the program is running under
  1184. X *    VMS.  It is currently only set in conjunction with the EUNICE symbol.
  1185. X */
  1186. X#$d_eunice    EUNICE        /**/
  1187. X#$d_eunice    VMS        /**/
  1188. X
  1189. X/* CONFIGURE_DATE
  1190. X *    This symbol contains the last date that configure was run for elm -v output.
  1191. X */
  1192. X#define        CONFIGURE_DATE    "$c_date"
  1193. X
  1194. X/* ENABLE_CALENDAR:
  1195. X *    This symbol, if defined, indicates that the calendar feature
  1196. X *    should be supported.
  1197. X */
  1198. X#$d_calendar    ENABLE_CALENDAR    /**/
  1199. X#define dflt_calendar_file    "$calendar"    
  1200. X
  1201. X/* NEED_CUSERID:
  1202. X *    This symbol, if defined, means to include our own cuserid().
  1203. X */
  1204. X#$d_cuserid NEED_CUSERID        /**/
  1205. X
  1206. X/* LOCK_BY_FLOCK
  1207. X *    This symbol, if defined, indicates that the flock mailbox locking should be used.
  1208. X */
  1209. X/* LOCK_FLOCK_ONLY
  1210. X *    This symbol, if defined, indicates that the only flock mailbox locking should also be used.
  1211. X */
  1212. X/* LOCK_DIR
  1213. X *    This symbol is the name of the lock directory for access (not mailbox) locks.
  1214. X *    It will be /usr/spool/locks or /usr/spool/uucp
  1215. X */
  1216. X#$d_flock    LOCK_BY_FLOCK        /**/
  1217. X
  1218. X#$d_flockonly    LOCK_FLOCK_ONLY        /**/
  1219. X
  1220. X#define        LOCK_DIR    "$lock_dir"    /**/
  1221. X
  1222. X/* GETHOSTNAME:
  1223. X *    This symbol, if defined, indicates that the C program may use the
  1224. X *    gethostname() routine to derive the host name.  See also DOUNAME
  1225. X *    and PHOSTNAME.
  1226. X */
  1227. X/* DOUNAME:
  1228. X *    This symbol, if defined, indicates that the C program may use the
  1229. X *    uname() routine to derive the host name.  See also GETHOSTNAME and
  1230. X *    PHOSTNAME.
  1231. X */
  1232. X/* PHOSTNAME:
  1233. X *    This symbol, if defined, indicates that the C program may use the
  1234. X *    contents of PHOSTNAME as a command to feed to the popen() routine
  1235. X *    to derive the host name.  See also GETHOSTNAME and DOUNAME.
  1236. X */
  1237. X/* HOSTCOMPILED:
  1238. X *    This symbol, if defined, indicated that the host name is compiled
  1239. X *    in from the string hostname
  1240. X */
  1241. X#$d_gethname    GETHOSTNAME    /**/
  1242. X#$d_douname    DOUNAME        /**/
  1243. X#$d_phostname    PHOSTNAME "$phostname"    /**/
  1244. X#$d_host_comp    HOSTCOMPILED    /**/
  1245. X
  1246. X/* USE_DBM
  1247. X *    This symbol, when defined, indicates that the pathalias file
  1248. X *    is available as a dbm file.  There is nothing to include.
  1249. X */
  1250. X#$d_havedbm    USE_DBM    /**/
  1251. X
  1252. X/* index:
  1253. X *    This preprocessor symbol is defined, along with rindex, if the system
  1254. X *    uses the strchr and strrchr routines instead.
  1255. X */
  1256. X/* rindex:
  1257. X *    This preprocessor symbol is defined, along with index, if the system
  1258. X *    uses the strchr and strrchr routines instead.
  1259. X */
  1260. X#$d_index    index strchr    /* cultural */
  1261. X#$d_index    rindex strrchr    /*  differences? */
  1262. X
  1263. X/* INTERNET:
  1264. X *    This symbol, if defined, indicates that there is a mailer available
  1265. X *    which supports internet-style addresses (user@site.domain).
  1266. X */
  1267. X#$d_internet    INTERNET    /**/
  1268. X
  1269. X/* ALLOW_MAILBOX_EDITING:
  1270. X *    This symbol, if defined, indicates that the E)dit mailbox
  1271. X *    function is to be allowed.
  1272. X */
  1273. X#$d_mboxedit    ALLOW_MAILBOX_EDITING    /**/
  1274. X
  1275. X/* MMDF:
  1276. X *    This symbol, if defined, indicates that mailboxes are in
  1277. X *    the MMDF format.
  1278. X */
  1279. X#$d_mmdf    MMDF    /**/
  1280. X
  1281. X/* AUTO_BACKGROUND:
  1282. X *    This symbol, if defined, indicates that newmail should go to
  1283. X *    the background automatically.
  1284. X */
  1285. X#$d_newauto AUTO_BACKGROUND /**/
  1286. X
  1287. X/* NFS_CAPABLE
  1288. X *    This symbol, if defined, indicates NFS is available.
  1289. X */
  1290. X/* NETWORK_ORDER
  1291. X *    This symbol, if defined, indicates that the internal files should be kept
  1292. X *    in network byte order.
  1293. X */
  1294. X#$d_nfs    NFS_CAPABLE        /**/
  1295. X#$d_networkorder    NETWORK_ORDER        /**/
  1296. X
  1297. X/* NO_XHEADER:
  1298. X *    This symbol, if defined, will not automatically add "X-Mailer:"
  1299. X *    headers.
  1300. X */
  1301. X#$d_noxheader    NO_XHEADER    /**/
  1302. X
  1303. X/* OPTIMIZE_RETURN:
  1304. X *    This symbol, if defined, indicates that Elm should optimize the
  1305. X *    return address of aliases.
  1306. X */
  1307. X#$d_optreturn OPTIMIZE_RETURN /**/
  1308. X
  1309. X/* LOOK_CLOSE_AFTER_SEARCH:
  1310. X *    This symbol, if defined, indicates that the pathalias route
  1311. X *    should be used for machines we talk to directly.
  1312. X */
  1313. X/* DONT_TOUCH_ADDRESSES:
  1314. X *    This symbol, if defined, indicates that elm should not
  1315. X *    touch outbound addresses
  1316. X */
  1317. X/* DONT_ADD_FROM:
  1318. X *    This symbol, if defined, indicates that elm should not adD
  1319. X *    the From: header
  1320. X */
  1321. X/* USE_DOMAIN:
  1322. X *    This symbol, if defined, indicates that elm should add
  1323. X *    the domain name to our address
  1324. X */
  1325. X/* NOCHECK_VALIDNAME:
  1326. X *    This symbol, if defined, indicates that elm should not
  1327. X *    check the addresses against mailboxes on this system.
  1328. X */
  1329. X#$d_pafirst    LOOK_CLOSE_AFTER_SEARCH /**/
  1330. X#$d_notouchadd    DONT_TOUCH_ADDRESSES /**/
  1331. X#$d_noaddfrom    DONT_ADD_FROM /**/
  1332. X#$d_usedomain    USE_DOMAIN /**/
  1333. X#$d_nocheckvalid NOCHECK_VALIDNAME    /**/
  1334. X
  1335. X/* PIDCHECK:
  1336. X *    This symbol, if defined, means that the kill(pid, 0) will
  1337. X *    check for an active pid.
  1338. X */
  1339. X#$d_pidcheck PIDCHECK        /**/
  1340. X
  1341. X/* PTEM:
  1342. X *    This symbol, if defined, indicates that the sys/ptem.h include file is
  1343. X *    needed for window sizing.
  1344. X */
  1345. X#$d_ptem    PTEM        /**/
  1346. X
  1347. X/* REMOVE_AT_LAST:
  1348. X *    This symbol, if defined, tells the C code to remove the lock
  1349. X *    file on lock failure.
  1350. X */
  1351. X/* MAX_ATTEMPTS:
  1352. X *    This symbol defines to the C code the number of times to try
  1353. X *    locking the mail file.
  1354. X */
  1355. X#$d_remlock REMOVE_AT_LAST    /**/
  1356. X#define MAX_ATTEMPTS    $maxattempts
  1357. X
  1358. X/* SAVE_GROUP_MAILBOX_ID:
  1359. X *    This symbol, if defined, indica;es that Elm needs to restore the
  1360. X *    group id of the file, as it is running setgid.
  1361. X */
  1362. X#$d_setgid SAVE_GROUP_MAILBOX_ID    /**/
  1363. X
  1364. X/* STRCSPN:
  1365. X *    This symbol, if defined, indicates that the strcspn() routine exists.
  1366. X */
  1367. X#$d_strspn    STRSPN        /**/
  1368. X
  1369. X#$d_strcspn    STRCSPN        /**/
  1370. X
  1371. X/* STRINGS:
  1372. X *    This symbol, if defined, indicates that the file strings.h
  1373. X *    should be included not string.h
  1374. X */
  1375. X/* PWDINSYS:
  1376. X *    This symbol, if defined, indicates that the file pwd.h
  1377. X *    is in the sys sub directory
  1378. X */
  1379. X#$d_strings    STRINGS        /**/
  1380. X#$d_pwdinsys    PWDINSYS    /**/
  1381. X
  1382. X/* ALLOW_SUBSHELL:
  1383. X *    This symbol, if defined, indicates that the '!' subshell
  1384. X *    function is to be allowed at various places.
  1385. X */
  1386. X#$d_subshell    ALLOW_SUBSHELL    /**/
  1387. X
  1388. X/* TEMPNAM:
  1389. X *    This symbol, if defined, indicates that the tempnam() routine exists.
  1390. X */
  1391. X#$d_tempnam    TEMPNAM        /**/
  1392. X
  1393. X/* TERMIOS:
  1394. X *    This symbol, if defined, indicates that the program should include
  1395. X *    termios.h rather than sgtty.h or termio.h.  There are also differences
  1396. X *    in the ioctl() calls that depend on the value of this symbol.
  1397. X */
  1398. X/* TERMIO:
  1399. X *    This symbol, if defined, indicates that the program should include
  1400. X *    termio.h rather than sgtty.h.  There are also differences in the
  1401. X *    ioctl() calls that depend on the value of this symbol.
  1402. X */
  1403. X#$d_termios    TERMIOS        /**/
  1404. X
  1405. X#$d_termio    TERMIO        /**/
  1406. X
  1407. X/* TZ_MINUTESWEST:
  1408. X *    This symbol is defined if this system uses tz_minutes west
  1409. X *    in time.h instead of timezone.  Only for BSD Systems
  1410. X */
  1411. X#$d_tz_min    TZ_MINUTESWEST     /**/
  1412. X
  1413. X/* USE_EMBEDDED_ADDRESSES:
  1414. X *    This symbol, if defined, indicates that replyto: and from:
  1415. X *    headers can be trusted.
  1416. X */
  1417. X#$d_useembed USE_EMBEDDED_ADDRESSES     /**/
  1418. X
  1419. X/* NOUTIMBUF:
  1420. X *    This symbol, if defined, means to include our own struct utimbuf.
  1421. X */
  1422. X#$d_utimbuf NOUTIMBUF        /**/
  1423. X
  1424. X/* VOIDSIG:
  1425. X *    This symbol is defined if this system declares "void (*signal())()" in
  1426. X *    signal.h.  The old way was to declare it as "int (*signal())()".  It
  1427. X *    is up to the package author to declare things correctly based on the
  1428. X *    symbol.
  1429. X */
  1430. X#$d_voidsig    VOIDSIG     /**/
  1431. X
  1432. X/* MAX_SALIASES:
  1433. X *    This symbol defines the number of system wide aliases allowed.
  1434. X */
  1435. X/* MAX_UALIASES:
  1436. X *    This symbol defines the number of per user aliases allowed.
  1437. X */
  1438. X#define    MAX_SALIASES    $maxsysalias    /* number of system aliases allowed      */
  1439. X#define    MAX_UALIASES    $maxuseralias    /* number of user aliases allowed      */
  1440. X
  1441. X/* PASSNAMES:
  1442. X *    This symbol, if defined, indicates that full names are stored in
  1443. X *    the /etc/passwd file.
  1444. X */
  1445. X/* BERKNAMES:
  1446. X *    This symbol, if defined, indicates that full names are stored in
  1447. X *    the /etc/passwd file in Berkeley format (name first thing, everything
  1448. X *    up to first comma, with & replaced by capitalized login id, yuck).
  1449. X */
  1450. X/* USGNAMES:
  1451. X *    This symbol, if defined, indicates that full names are stored in
  1452. X *    the /etc/passwd file in USG format (everything after - and before ( is
  1453. X *    the name).
  1454. X */
  1455. X#$d_passnames    PASSNAMES /*  (undef to take name from ~/.fullname) */
  1456. X#$d_berknames    BERKNAMES /* (that is, ":name,stuff:") */
  1457. X#$d_usgnames    USGNAMES  /* (that is, ":stuff-name(stuff):") */
  1458. X
  1459. X/* XENIX:
  1460. X *    This symbol, if defined, indicates this is a Xenix system,
  1461. X *    for knocking  out the far keyword in selected places.
  1462. X */
  1463. X/* BSD:
  1464. X *    This symbol, if defined, indicates this is a BSD type system,
  1465. X */
  1466. X#$d_xenix    XENIX    /**/
  1467. X#$d_bsd    BSD    /**/
  1468. X
  1469. X!GROK!THIS!
  1470. SHAR_EOF
  1471. chmod 0444 config.h.SH || echo "restore of config.h.SH fails"
  1472. echo "x - extracting Makefile.SH (Text)"
  1473. sed 's/^X//' << 'SHAR_EOF' > Makefile.SH &&
  1474. Xcase $CONFIG in
  1475. X'')
  1476. X    if test ! -f config.sh; then
  1477. X    ln ../config.sh . || \
  1478. X    ln ../../config.sh . || \
  1479. X    ln ../../../config.sh . || \
  1480. X    (echo "Can't find config.sh."; exit 1)
  1481. X    fi
  1482. X    . ./config.sh
  1483. X    ;;
  1484. Xesac
  1485. Xcase "$0" in
  1486. X*/*) cd `expr X$0 : 'X\(.*\)/'` ;;
  1487. Xesac
  1488. X
  1489. Xcase "$d_symlink" in
  1490. X*define*) sln='ln -s' ;;
  1491. X*) sln='ln';;
  1492. Xesac
  1493. X
  1494. Xecho "Extracting Makefile (with variable substitutions)"
  1495. Xcat >Makefile <<!GROK!THIS!
  1496. X#
  1497. X# $Id: Makefile.SH,v 4.1 90/04/28 22:40:54 syd Exp $
  1498. X#
  1499. X#  Makefile for the entire ELM mail system
  1500. X#
  1501. X#         (C) Copyright 1986, 1987, by Dave Taylor
  1502. X#         (C) Copyright 1988, 1989, 1990, USENET Community Trust
  1503. X#
  1504. X#  $Log:    Makefile.SH,v $
  1505. X# Revision 4.1  90/04/28  22:40:54  syd
  1506. X# checkin of Elm 2.3 as of Release PL0
  1507. X# 
  1508. X#
  1509. X
  1510. X#    Variables established by Configure
  1511. XCAT        =    $cat
  1512. XGREP        =    $grep
  1513. XECHO        =    $echo
  1514. XMAKE        =    $make
  1515. XPR        =    $pr
  1516. XSHAR        =    $shar -s 60000
  1517. XSLEEP        =    $sleep
  1518. XTAR        =    $tar
  1519. XTAPE        =    $rmttape
  1520. X
  1521. X!GROK!THIS!
  1522. Xcat >>Makefile <<'!NO!SUBS!'
  1523. X#    Other variables
  1524. XSHELL            =    /bin/sh
  1525. XSOURCE_FILES        =    `$(GREP) -v 'doc/' MANIFEST`
  1526. XDISTRIBUTED_FILES    =    `$(CAT) MANIFEST`
  1527. X
  1528. X
  1529. X# Targets
  1530. X#    Give default target first and alone
  1531. Xdefault_target:    all
  1532. X
  1533. X#    Targets that are simply executed in each subordinate makefile as is
  1534. Xall install uninstall lint clean:
  1535. X        cd src; $(MAKE) -$(MAKEFLAGS) $@
  1536. X        cd utils; $(MAKE) -$(MAKEFLAGS) $@
  1537. X        cd filter; $(MAKE) -$(MAKEFLAGS) $@
  1538. X        cd doc; $(MAKE) -$(MAKEFLAGS) $@
  1539. X
  1540. X#    Targets that apply to all elm at once
  1541. Xlisting:
  1542. X        @$(ECHO) "Making source listing in file LISTING."
  1543. X        @$(PR) -n -f $(SOURCE_FILES) > LISTING
  1544. X
  1545. X#    This is the only target that gets installed even if not out-of-date
  1546. X#    with respect the files from which it is installed.
  1547. Xrmt-install:    rmt-defined
  1548. X        @($(ECHO) "Warning: This assumes you have already installed";\
  1549. X          $(ECHO) "ELM on the remote machine <$(REMOTE)>. If this is";\
  1550. X          $(ECHO) "not the case, interrupt this process quickly!";\
  1551. X          $(SLEEP) 10;)
  1552. X        cd src; $(MAKE) -$(MAKEFLAGS) REMOTE=$(REMOTE) $@
  1553. X        cd filter; $(MAKE) -$(MAKEFLAGS) REMOTE=$(REMOTE) $@
  1554. X        cd utils; $(MAKE) -$(MAKEFLAGS) REMOTE=$(REMOTE) $@
  1555. X        cd doc; $(MAKE) -$(MAKEFLAGS) REMOTE=$(REMOTE) $@
  1556. X
  1557. Xrmt-defined:
  1558. X    @(if [ "$(REMOTE)" = "" ];\
  1559. X      then\
  1560. X        $(ECHO) "You need to define 'REMOTE' as the remote file system";\
  1561. X        $(ECHO) "for this particular command. The easiest way to do this";\
  1562. X        $(ECHO) "to type:";\
  1563. X        $(ECHO) "        make REMOTE=<remote file system> rmt-install";\
  1564. X        exit 1;\
  1565. X    fi);
  1566. X
  1567. Xshar:
  1568. X        $(SHAR) $(DISTRIBUTED_FILES)
  1569. X
  1570. Xtar:
  1571. X        $(TAR) cvf $(TAPE) $(DISTRIBUTED_FILES)
  1572. X
  1573. X#    Targets that are really in subordinate make files
  1574. Xdocumentation:
  1575. X    cd doc; $(MAKE) -$(MAKEFLAGS) $@
  1576. X
  1577. Xelm:
  1578. X    cd src; $(MAKE) -$(MAKEFLAGS) all
  1579. X
  1580. X#    The dummy dependency here prevents make from thinking the target is the
  1581. X#    filter directory that sits in the current directory, rather than
  1582. X#    an abstract target.
  1583. Xfilter: _filter
  1584. X
  1585. X_filter:
  1586. X    cd filter; $(MAKE) -$(MAKEFLAGS) all
  1587. X
  1588. X#    The dummy dependency here prevents make from thinking the target is the
  1589. X#    utils directory that sits in the current directory, rather than
  1590. X#    an abstract target.
  1591. Xutils: _utils
  1592. X
  1593. X_utils:
  1594. X    cd utils; $(MAKE) -$(MAKEFLAGS) all
  1595. X
  1596. X!NO!SUBS!
  1597. SHAR_EOF
  1598. chmod 0444 Makefile.SH || echo "restore of Makefile.SH fails"
  1599. echo "x - extracting Patchlist (Text)"
  1600. sed 's/^X//' << 'SHAR_EOF' > Patchlist &&
  1601. XThis file will contain the date and comment header from each
  1602. Xofficial patch as issued.  Since this is the full new release,
  1603. Xthere are currently no patches.
  1604. SHAR_EOF
  1605. chmod 0444 Patchlist || echo "restore of Patchlist fails"
  1606. echo "x - extracting doc/Alias.guide (Text)"
  1607. sed 's/^X//' << 'SHAR_EOF' > doc/Alias.guide &&
  1608. X.\" @(#)$Id: Alias.guide,v 4.1 90/04/28 22:40:58 syd Exp $
  1609. X.\"
  1610. X.\"  A guide to the ELM alias system and so on.
  1611. X.\"  format with:
  1612. X.\"      tbl Alias.guide | troff -mn > Alias.format'
  1613. X.\"
  1614. X.\"  (C) Copyright 1986, 1987 Dave Taylor
  1615. X.\"  (C) Copyright 1988, 1989, 1990 USENET Community Trust
  1616. X.\"  Elm is now in the public trust. Bug reports, comments, suggestions, flames
  1617. X.\"  etc. should go to:
  1618. X.\"    Syd Weinstein        elm@DSI.COM (dsinc!elm)
  1619. X.\"
  1620. X.\"  $Log:    Alias.guide,v $
  1621. X.\" Revision 4.1  90/04/28  22:40:58  syd
  1622. X.\" checkin of Elm 2.3 as of Release PL0
  1623. X.\" 
  1624. X.\"  
  1625. X.tm Have we been run through "tbl" first?? I hope so!
  1626. X.po 1i
  1627. X.ds h0
  1628. X.ds h1
  1629. X.ds h2
  1630. X.ds f0
  1631. X.ds f1
  1632. X.ds f2
  1633. X.nr Hy 1
  1634. X.nr Pt 1
  1635. X.nr Pi 0
  1636. X.lg 0
  1637. X.nf
  1638. X.na
  1639. X.rs
  1640. X.za
  1641. X.sp |3.0i
  1642. X.ce 99
  1643. X.ps 20
  1644. X.ss 18
  1645. X.vs 12
  1646. X\f3The Elm Alias System Users Guide\f1
  1647. X.sp 4
  1648. X.ps 12
  1649. X.ss 14
  1650. X.vs 14
  1651. X\f2What aliases are and how to use them
  1652. Xin the \f3Elm\fP mail system\f1
  1653. X.sp 2
  1654. XDave Taylor
  1655. X.sp 
  1656. XHewlett-Packard Laboratories
  1657. X1501 Page Mill Road
  1658. XPalo Alto CA
  1659. X94304
  1660. X.sp 3
  1661. Xemail:  taylor\s-1@\s+1hplabs.HP.COM  or  hplabs\s-1!\s+1taylor
  1662. X.sp 3
  1663. X>>> Elm is now in the public trust. Bug reports, comments, etc. to: <<<
  1664. X.sp
  1665. XSyd Weinstein
  1666. XDatacomp Systems, Inc.
  1667. X3837 Byron Road
  1668. XHuntingdon Valley, PA 19006-2320
  1669. X.sp
  1670. Xemail: elm\s-1@\s+1DSI.COM  or  dsinc\s-1!\s+1elm
  1671. X.sp 2
  1672. X\s18\f3\(co\f1\s12 Copyright 1986, 1987 by Dave Taylor
  1673. X\s18\f3\(co\f1\s12 Copyright 1988, 1989, 1990 by The USENET Community Trust
  1674. X.ps 10
  1675. X.ss 12
  1676. X.vs 12
  1677. X.fi
  1678. X.ad
  1679. X.bp 1
  1680. X.sv 5v
  1681. X.ps 14
  1682. X.ss 12
  1683. X.vs 16
  1684. X\f3The Elm Alias System Users Guide\f1
  1685. X.ds h0 "Alias Users Guide
  1686. X.ds h1
  1687. X.ds h2 "Version 2.3
  1688. X.ds f0 "May 1, 1990
  1689. X.ds f1
  1690. X.ds f2 "Page %
  1691. X.sp
  1692. X.ps 10
  1693. X.ss 12
  1694. X.vs 12
  1695. X(Version 2.3)
  1696. X.sp 2
  1697. XDave Taylor
  1698. X.sp
  1699. XHewlett-Packard Laboratories
  1700. X1501 Page Mill Road
  1701. XPalo Alto CA
  1702. X94304
  1703. X.sp 
  1704. Xemail: taylor\s-1@\s+1hplabs.HP.COM  or  hplabs\s-1!\s+1taylor
  1705. X.sp 2
  1706. X>>> Elm is now in the public trust. Bug reports, comments, etc. to: <<<
  1707. X.sp
  1708. XSyd Weinstein
  1709. XDatacomp Systems, Inc.
  1710. X3837 Byron Road
  1711. XHuntingdon Valley, PA 19006-2320
  1712. X.sp
  1713. Xemail: elm\s-1@\s+1DSI.COM  or  dsinc\s-1!\s+1elm
  1714. X.sp 2
  1715. XMay 1, 1990
  1716. X.ce 0
  1717. X.sp 3
  1718. X.pg
  1719. XThis document is intended as a supplement to the \f2Elm Users Guide\f1
  1720. Xand is only of interest to those users desiring more knowledge
  1721. Xabout how aliases work and how to create strange and exciting
  1722. Xaliases for their systems (okay, so maybe it's not \f2that\f1 exciting!)
  1723. X.sp
  1724. X.pg
  1725. XThis document is broken up into the following sections;
  1726. Xuser aliases,
  1727. Xgroup aliases,
  1728. Xsystem aliases,
  1729. Xediting and installing new aliases,
  1730. Xthe host routing database,
  1731. Xthe domain routing database,
  1732. Xgeneral warnings and other chitchat.
  1733. X.sp
  1734. X.hn 1 User Aliases
  1735. X
  1736. XThe most simple type of aliases in the \f3Elm\f1 system are individual
  1737. Xuser aliases.  These are made up of three parts;
  1738. X.nf
  1739. X    \f2aliasname list\f1  =  \f2username\f1  =  \f2address\f1 \s-2\u1\d\s0
  1740. X.fn
  1741. X1. Notice that the alias separator has moved from being a colon 
  1742. Xcharacter (`:') to the equals sign (`=').
  1743. XThis is due to the requirements of the X.400 addressing scheme.
  1744. X.ef
  1745. X.fi
  1746. XWhere the \f2aliasname list\f1 is either a single aliasname\s-2\u2\d\s0
  1747. X.fn
  1748. X2. aliasnames can be any combination of letters, numbers, dashes (`-'),
  1749. Xperiods (`.'), or underscores (`_').  Letter case is not significant.
  1750. XThat is `FRED' and `Fred' are identical.
  1751. X.ef
  1752. Xor a list of aliasnames separated by commas.  Aliasnames are case insensitive and will be
  1753. Xconverted to all lower case by the alias system.
  1754. X.pg
  1755. X\f2Username\f1 is used to indicate the full `real name' of the user.  
  1756. XFor example, if you had an alias for `taylor' to get to me, the 
  1757. X\f2username\f1 field would contain `Dave Taylor' or 
  1758. Xperhaps `Dave Taylor at HP'
  1759. Xor some other permutation.  \f3Elm\f1
  1760. Xuses this information to add the users full name to the addresses of 
  1761. Xoutbound mail to get more readable addresses.  
  1762. X.pg
  1763. X\f2Address\f1 is either the users full electronic mail address or, if
  1764. Xthe machine routing database is installed, the minimum address needed
  1765. Xto specify the destination.  For example, say our routing database
  1766. Xcontained information on how to get to machine `hp-sdd' and I wanted
  1767. Xto have an address for my friend Ken there \(em I could have his address
  1768. Xspecified as simply `ken@hp-sdd' (or alternatively `hp-sdd!ken' since
  1769. Xthe two are functionally equivalent).
  1770. X.sp
  1771. X.pg 0
  1772. XLet's get on to some examples, shall we?
  1773. X.sp
  1774. XConsider this excerpt from my own \f2.elm/aliases.text\f1 file;
  1775. X
  1776. X.nf
  1777. X.ft CW
  1778. X.zf
  1779. X.in .5i
  1780. X.ta \w'frank,minjarez 'u \w'frank,minjarez = Frank Minjarez 'u
  1781. X# Mail aliases for Dave Taylor
  1782. X# Friends from UCSD
  1783. Xaddie    = Addie Silva    = addie@hp-sdd.SDD.HP.COM
  1784. Xfrank,minjarez    = Frank Minjarez    = Minjarez.Verify@dockmaster.arpa
  1785. Xpizzini    = Ken Pizzini    = hplabs!ucbvax!ucdavis!pai!ken
  1786. X.ft 1
  1787. X
  1788. X.in 0
  1789. X.fi
  1790. XNote that the alias for Frank Minjarez has two \f2aliasnames\f1 associated
  1791. Xwith it,
  1792. X.ft CW
  1793. X.zf
  1794. Xfrank\f1 and
  1795. X.ft CW
  1796. X.zf
  1797. Xminjarez\f1.
  1798. XAlso notice that the first and second aliases
  1799. Xuse the ARPA Internet style naming convention of \f2user@machine\f1 
  1800. Xwhereas the third uses the UUCP notation of \f2machine!user\f1.
  1801. X.pg
  1802. XFor the most part, the notational format is transparent within the
  1803. Xalias file \(em the only time it \f2does\f1 make a difference 
  1804. Xis if you have to specify more than the machine that the user is
  1805. Xreceiving mail on (as in the third example above).  
  1806. X.pg
  1807. XSuffice to say that if you must specify any sort of uucp route
  1808. Xthat you should use the uucp notation as much as possible to ensure
  1809. Xthat the system expands the correct machine name.  Similarly, if
  1810. Xyou're bouncing mail through different ARPA Internet sites (to
  1811. Xget to a foreign system, as in the example below) you should use the
  1812. Xnotation that system expects:
  1813. X
  1814. X.ft CW
  1815. X.zf
  1816. X.ti .5i
  1817. X    listserv%byuadmin.BITNET@rugters.edu
  1818. X.ft 1
  1819. X.sp
  1820. X.hn 1 Group Aliases
  1821. X
  1822. XAfter the confusion of user aliases, group aliases are even more 
  1823. Xfun!  For the most part the notation is very similar;
  1824. X
  1825. X    \f2aliasname list\f1   =   \f2groupname\f1   =   \f2list of people\f1
  1826. X
  1827. XWhere \f2aliasname list\f1 and \f2groupname\f1 are exactly equivalent
  1828. Xto the corresponding fields in user aliases.
  1829. X.pg
  1830. XThe interesting part is the \f2list of people\f1 field; this
  1831. Xfield is actually in the same notation as the aliasname list,
  1832. Xso it's really quite easy to create.
  1833. XIt's best to illustrate by example:
  1834. X
  1835. X.ft CW
  1836. X.zf
  1837. X.nf
  1838. X.in .5i
  1839. Xfriends, mypals = The Gang of Six = joe, larry, mary, joanna,
  1840. X\h'\w'friends, mypals = The Gang of Six = 'u'nancy, michael
  1841. X.ft 1
  1842. X
  1843. X.in 0
  1844. X.fi
  1845. X(Notice that you can continue onto as many lines as you'd like so
  1846. Xlong as each additional line start with either a \s8SPACE\s10 or a \s8TAB\s10
  1847. Xcharacter)
  1848. X.pg
  1849. XThe major limitation with group aliases is that each of the
  1850. Xpeople in the list must be a \f2previously defined alias\f1
  1851. Xor a valid mail address on the current machine.
  1852. X.pg
  1853. XWhat does this mean?  That the following excerpt from an alias file:
  1854. X
  1855. X.in .5i
  1856. X.ft CW
  1857. X.zf
  1858. X.nf
  1859. X.ta \w'hawaii 'u \w'hawaii = The Hawaiian Twins 'u
  1860. Xhawaii    = The Hawaiian Twins    = joe@cs.rit.edu, maoa
  1861. Xmaoa    = Maoa Lichtenski Jr    = maoa@Hawaii.cs.uh.edu
  1862. X.ft 1
  1863. X
  1864. X.in 0
  1865. X.fi
  1866. Xwill fail for two reasons \(em not only does the group \f2list of people\f1
  1867. Xcontain a complex address, but it also contains an aliasname that is 
  1868. Xdefined \f2further on\f1 in
  1869. Xthe \f2.elm/aliases.text\f1 file.
  1870. X.pg
  1871. XThe correct way to have the previous aliases in the file are to have them 
  1872. Xorganized like:
  1873. X
  1874. X.ft CW
  1875. X.zf
  1876. X.in .5i
  1877. X.ta \w'hawaii 'u \w'hawaii = The Hawaiian Twins 'u
  1878. X.nf
  1879. Xjoe    = Joe Lichtenski    = joe@cs.rit.edu
  1880. Xmaoa    = Maoa Lichtenski Jr    = maoa@Hawaii.cs.uh.edu
  1881. Xhawaii    = The Hawaiian Twins    = joe, maoa
  1882. X.ft 1
  1883. X
  1884. X.in 0
  1885. X.fi
  1886. Xwhich will then work correctly.
  1887. X.sp
  1888. XFortunately, while this seems fairly picky, when you run \f2newalias\f1
  1889. Xto install the new aliases, you'll get relevant and meaningful
  1890. Xerror messages to help you fix your aliases up correctly.
  1891. X.sp
  1892. X.hn 1 System Aliases
  1893. X
  1894. XSystem aliases are functionally equivalent to the individual \f3Elm\f1 
  1895. Xalias lists each \f3Elm\f1 user has (both user aliases and group aliases) 
  1896. Xbut are \f2read only\f1 for everyone but the \f3Elm\f1 administrator.  The 
  1897. Xformat of the file is identical to the users file, and the only difference is
  1898. Xthat this file is expected to be located in the directory that contains
  1899. Xthe \f2system_hash_file\f1 and \f2system_data_file\f1 files (see the
  1900. X\f2Elm Configuration Guide\f1 for more details on these variables).
  1901. X.pg
  1902. XSimply create the system alias file in the specified directory
  1903. Xas you would a normal alias file, and install it the same way (see the
  1904. Xfollowing section for more details on that).  
  1905. X.pg
  1906. XVoila!!
  1907. X.sp
  1908. X.hn 1 Editing and Installing New Aliases
  1909. X
  1910. XTo install new aliases, you need merely to create, or modify,
  1911. Xthe file \f2.elm/aliases.text\f1 until you're
  1912. Xsatisfied with it and it meets the requirements discussed above.
  1913. XYou can then try to install it with the command;
  1914. X
  1915. X    $ \f3newalias\f1
  1916. X
  1917. Xwhich will either report back the number of aliases installed 
  1918. Xor any errors encountered trying to parse and store the
  1919. Xgiven alias list.
  1920. X.pg
  1921. XNote that blank lines are no problem and that comments are not only
  1922. Xallowed but actually encouraged, and must have `\f3#\f1' as the first
  1923. Xcharacter of each comment line.
  1924. X.sp
  1925. XFinally, if you find that you're hitting the ``Too many aliases'' error, 
  1926. Xthen you'll need to reconfigure the entire \f3Elm\f1 system (again,
  1927. Xsee \f2The Elm Configuration Guide\f1).
  1928. X.sp
  1929. X.hn 1 The Hostname Routing Database
  1930. X
  1931. XFloating about on the various networks is a rather nifty program by
  1932. Xa number of people, including Peter Honeyman and Steve Bellovin, 
  1933. Xcalled \f2pathalias\f1.  What this software does is 
  1934. SHAR_EOF
  1935. echo "End of part 3"
  1936. echo "File doc/Alias.guide is continued in part 4"
  1937. echo "4" > s2_seq_.tmp
  1938. exit 0
  1939. exit 0 # Just in case...
  1940.