home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume23 / trn / part01 / Configure.2 next >
Text File  |  1991-08-22  |  43KB  |  1,916 lines

  1. *)  dflt="$domain" ;;
  2. esac
  3. $echo $n "Your domain: [$dflt] $c"
  4. . myread
  5. case "$ans" in
  6. '') domain="$dflt";;
  7. *)  domain="$ans" ;;
  8. esac
  9.  
  10. : now get the site name
  11. $echo " "
  12. $echo "Figuring out site name..."
  13. $echo 'Maybe "hostname" will work...'
  14. if ans=`sh -c hostname 2>&1` ; then
  15.     thissite=$ans
  16.     hostcmd=hostname
  17. else
  18.     $echo 'No, maybe "uuname -l" will work...'
  19.     if ans=`sh -c 'uuname -l' 2>&1` ; then
  20.     thissite=$ans
  21.     hostcmd='uuname -l'
  22.     else
  23.     $echo 'Strange.  Maybe "uname -n" will work...'
  24.     if ans=`sh -c 'uname -n' 2>&1` ; then
  25.         thissite=$ans
  26.         hostcmd='uname -n'
  27.     else
  28.         $echo 'Oh well, maybe I can mine it out of whoami.h...'
  29.         if ans=`sh -c $contains' sysname /usr/include/whoami.h' 2>&1` ; then
  30.         thissite=`$echo "$ans" | $sed 's/^.*"\(.*\)"/\1/'`
  31.         hostcmd="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' </usr/include/whoami.h"
  32.         else
  33.         case "$sitename" in
  34.         '') $echo "Does this machine have an identity crisis or something?"
  35.             hostcmd=''
  36.             ;;
  37.         *)  $echo "Well, you said $sitename before..."
  38.             thissite="$sitename"
  39.             ;;
  40.         esac
  41.         fi
  42.     fi
  43.     fi
  44. fi
  45. : you do not want to know about this
  46. set $thissite
  47. thissite=$1
  48.  
  49. : translate upper to lower case. This is mostly to help UUCP work right.
  50. case $thissite in
  51.     *[A-Z]*)
  52.     thissite=`$echo $thissite | tr '[A-Z]' '[a-z]'`
  53.     $echo "(Normalizing case in your site name)"
  54.     ;;
  55. esac
  56.  
  57. : verify site name and allow them to override it
  58. if $test "$thissite" ; then
  59.     $echo 'Your site name appears to be "'$thissite'".'
  60. else
  61.     thissite='unknown'
  62. fi
  63. case "$hostfile" in
  64. /*) dflt="$hostfile" ;;
  65. *)  case "$sitename" in
  66.     '') dflt="$thissite" ;;
  67.     *)  dflt="$sitename" ;;
  68.     esac
  69. esac
  70. $cat <<'EOM'
  71.  
  72. In some cases it is not desirable to use the actual site name in your return
  73. addresses (if, for example, all mail gets routed first to one site).  In this
  74. case trn allows you to either hard-wire a site name or read the site name from
  75. a file.  To indicate a file, start the name with a slash (e.g. /etc/sitename).
  76. To use just your domain name, re-enter it here.  A period-less site name will
  77. automatically get your domain name added to it.
  78.  
  79. EOM
  80. while $test $dflt ; do
  81.     $echo $n "What site name goes in return addresses? [$dflt] $c"
  82.     . myread 
  83.     case $ans in
  84.     '') ans=$dflt;;
  85.     esac
  86.     case $ans in
  87.     /*)
  88.     if $test -f $ans ; then
  89.         hostfile="$ans"
  90.         hostcmd="$cat $ans"
  91.         sitename=`$hostcmd`
  92.         $echo "Trn will read the site name from $ans:  $sitename."
  93.         dflt=''
  94.     else
  95.         $echo "Unable to locate $ans."
  96.     fi
  97.     ;;
  98.     *)  hostfile=''
  99.     if $test "X$thissite" = "X$ans" ; then
  100.         sitename="$thissite"
  101.         $echo "Using the site name derived by $hostcmd:  $sitename."
  102.     else
  103.         hostcmd=''
  104.         sitename="$ans"
  105.         $echo "Using a hard-wired site name:  $sitename."
  106.     fi
  107.     dflt=''
  108.     ;;
  109.     esac
  110. done
  111.  
  112. if $test $portable = "undef" ; then
  113.     case $sitename in
  114.     *.*)    ;;
  115.     *)    sitename=$sitename.$domain
  116.         ;;
  117.     esac
  118. fi
  119.  
  120. case $hiddennet in
  121. define)    dflt=y;;
  122. *)    dflt=n;;
  123. esac
  124. $echo "Do you want your site ($sitename) to be hidden in"
  125. $echo $n "domain '$domain'? [$dflt] $c"
  126. . myread
  127. case $ans in
  128.   '') ans=$dflt ;;
  129. esac
  130. case $ans in
  131. y*)    hiddennet=define
  132.     sitename=$domain
  133.     ;;
  134. *)    hiddennet=undef
  135.     ;;
  136. esac
  137.  
  138. : get organization name
  139. longshots='/usr/src/new /usr/src/local /usr/local/src'
  140. case "$orgname" in
  141. '') if xxx=`loc news/src/defs.h x $longshots`; then
  142.     dflt=`$sed -n 's/^.*MYORG[     ]*"\(.*\)".*$/\1/p' $xxx`
  143.     else
  144.     dflt='no default'
  145.     fi
  146.     ;;
  147. *)  dflt="$orgname";;
  148. esac
  149. $cat << 'EOH'
  150.  
  151. Please type the name of your organization as you want it to appear on the
  152. Organization line of outgoing articles.  (It's nice if this also specifies
  153. your location.  Your city name is probably sufficient if well known.)
  154. For example:
  155.  
  156.     University of Southern North Dakota, Hoople
  157.  
  158. You may also put the name of a file, as long as it begins with a slash.
  159. For example:
  160.  
  161.     /etc/organization
  162.  
  163. EOH
  164. orgname="no default"
  165. while test "X$orgname" = "Xno default"; do
  166.     $echo $n "Organization: [$dflt] $c"
  167.     . myread
  168.     case "$ans" in
  169.     '') orgname="$dflt";;
  170.     *)  orgname="$ans" ;;
  171.     esac
  172. done
  173.  
  174. : get news administrator name
  175. case "$newsadmin" in
  176. '')
  177.     if $contains "^news:" /etc/passwd >/dev/null 2>&1 ; then
  178.     dflt=news
  179.     else
  180.     if $contains "^usenet:" /etc/passwd >/dev/null 2>&1 ; then
  181.         dflt=usenet
  182.     else
  183.         if eunice; then
  184.         dflt=system
  185.         else
  186.         dflt=root
  187.         fi
  188.     fi
  189.     fi
  190.     ;;
  191. *)  dflt="$newsadmin"
  192.     ;;
  193. esac
  194. cat <<'EOM'
  195.  
  196. Many systems keep their news in a private directory, or have a non-superuser
  197. in charge of administering news.  (If you don't have such a user, take the
  198. default answer.)  What is the login name (not directory) that is used for news
  199. EOM
  200. $echo $n "administration? [$dflt] $c"
  201. . myread
  202. newsadmin="$ans"
  203. case $newsadmin in
  204. '') newsadmin=$dflt ;;
  205. esac
  206. case $newsadmin in
  207. root) isadmin=undef ;;
  208. *)    isadmin=define ;;
  209. esac
  210.  
  211. : figure out news library
  212. case "$lib" in
  213. '')
  214.     dflt=/usr/lib/news
  215.     ;;
  216. *)  dflt=$lib ;;
  217. esac
  218. libexp=$lib
  219. libexp='blurfl/dyick'
  220. while $test ! -d "$libexp"; do
  221.     $echo " "
  222.     case "$libexp" in
  223.     blurfl*) ;;
  224.     *) $echo "Directory $libexp not found";;
  225.     esac
  226.     $echo $n "Where is your news library (~name okay)? [$dflt] $c"
  227.     . myread
  228.     case "$ans" in
  229.     '') ans="$dflt";;
  230.     esac
  231.     lib="$ans"
  232.     case $lib in
  233.     ~*)
  234.     libexp=`filexp $lib`
  235.     $echo "(That is $libexp on this particular system.)"
  236.     case $portable in
  237.       undef) lib=$libexp ;;
  238.     esac
  239.     ;;
  240.     *)
  241.     libexp=$lib
  242.     ;;
  243.     esac
  244. done
  245. if $test -f $libexp/inews; then
  246.     $echo "Aha!  Inews is really in $libexp!"
  247.     $echo "Maybe this is Bnews 2.10.2 or later."
  248.     inews=$libexp/inews
  249. fi
  250.  
  251. : determine where manual pages go
  252. case "$mansrc" in
  253. '')
  254.     dflt=`loc . /usr/man/man1 /usr/man/mann /usr/man/local/man1 /usr/man/u_man/man1 /usr/man/man1`
  255.     ;;
  256. *)  dflt="$mansrc"
  257.     ;;
  258. esac
  259. mansrc='blurfl/dyick'
  260. while $test ! -d "$mansrc" ; do
  261.     case $mansrc in
  262.       blurfl*) ;;
  263.       *) $echo "$mansrc does not appear to exist." ;;
  264.     esac
  265.     $echo " "
  266.     $echo $n "Where do the manual pages (source) go? [$dflt] $c"
  267.     . myread
  268.     mansrc=`filexp "$ans"`
  269.     case $mansrc in
  270.       '') mansrc=$dflt ;;
  271.     esac
  272. done
  273. case "$mansrc" in
  274. *l)
  275.     manext=l
  276.     ;;
  277. *n)
  278.     manext=n
  279.     ;;
  280. *)
  281.     manext=1
  282.     ;;
  283. esac
  284.  
  285. : determine where mail is spooled
  286. case "$maildir" in
  287. '')
  288.     dflt=`loc . /usr/spool/mail /usr/spool/mail /usr/mail`
  289.     ;;
  290. *)  dflt="$maildir"
  291.     ;;
  292. esac
  293. case "$dflt" in
  294. *%L*) ;;
  295. *)    dflt="$dflt/%L"
  296. esac
  297. $cat <<'EOM'
  298.  
  299. Trn needs to know where to find yet-to-be-read mail.  Sendmail sites
  300. use /usr/spool/mail/%L (where '%L' is the user's login name).  Some
  301. MMDF sites use /usa/%L/.mail instead.
  302.  
  303. EOM
  304. $echo $n "Where is yet-to-be-read mail spooled? [$dflt] $c"
  305. . myread
  306. maildir="$ans"
  307. case $maildir in
  308. '') maildir=$dflt ;;
  309. esac
  310.  
  311. : find out how to find out full name
  312. $echo " "
  313. case "$berknam" in
  314. define)
  315.     dflt=y;;
  316. undef)
  317.     dflt=n;;
  318. *)
  319.     if bsd || xenix; then
  320.     dflt=y
  321.     else
  322.     dflt=n
  323.     fi
  324.     ;;
  325. esac
  326. $echo "Does your /etc/passwd file keep full names in Berkeley/V7 format (name first"
  327. $echo $n "thing after ':' in GCOS field)? [$dflt] $c"
  328. . myread
  329. case $ans in
  330.   '') ans=$dflt ;;
  331. esac
  332. case $ans in
  333.   y*)
  334.     passnam=define
  335.     berknam=define
  336.     usgnam=undef
  337.     nametype=bsd
  338.     ;;
  339.   *)
  340.     $echo " "
  341.     case "$usgnam" in
  342.     define)
  343.     dflt=y;;
  344.     undef)
  345.     dflt=n;;
  346.     *)
  347.     if usg; then
  348.         dflt=y
  349.     else
  350.         dflt=n
  351.     fi
  352.     ;;
  353.     esac
  354.     $echo "Does your passwd file keep full names in USG format (name sandwiched"
  355.     $echo $n "between a '-' and a '(')? [$dflt] $c"
  356.     . myread
  357.     case $ans in
  358.       '') ans=$dflt ;;
  359.     esac
  360.     case $ans in
  361.       n*)
  362.     $echo "Full name will be taken from ~/.fullname"
  363.     passnam=undef
  364.     berknam=undef
  365.     usgnam=undef
  366.     nametype=other
  367.     ;;
  368.       *)
  369.     passnam=define
  370.     berknam=undef
  371.     usgnam=define
  372.     nametype=usg
  373.     ;;
  374.     esac
  375.     ;;
  376. esac
  377.  
  378. : see if we need a special compiler
  379. $echo " "
  380. if usg; then
  381.     case "$cc" in
  382.     '')
  383.     case "$Mcc" in
  384.     /*) dflt='Mcc'
  385.         ;;
  386.     *)
  387.         if $contains '\-M' $mansrc/cc.1 >/dev/null 2>&1 ; then
  388.         dflt='cc -M'
  389.         else
  390.         dflt='cc'
  391.         fi
  392.         ;;
  393.     esac
  394.     ;;
  395.     *)  dflt="$cc";;
  396.     esac
  397.     $cat <<'EOM'
  398.  
  399. On some systems the default C compiler will not resolve multiple global
  400. references that happen to have the same name.  On some such systems the
  401. "Mcc" command may be used to force these to be resolved.  On other systems
  402. a "cc -M" command is required.  What command will force resolution on
  403. EOM
  404.     $echo $n "this system? [$dflt] $c"
  405.     . myread
  406.     cc="$ans"
  407.     case "$cc" in
  408.     '') cc="$dflt" ;;
  409.     esac
  410. else
  411.     $echo "Not a USG system--assuming cc can resolve multiple definitions."
  412.     cc=cc
  413. fi
  414.  
  415. : see if we should throw a -i into the Makefile
  416. $echo " "
  417. if pdp11; then
  418.     if $contains '\-i' $mansrc/cc.1 >/dev/null 2>&1 ; then
  419.     $echo $n "Your system appears to have separate I and D space.  Is this true? [y] $c"
  420.     . myread
  421.     case $ans in
  422.         n*|f*) iandd='' ;;
  423.         *)     iandd='-i' ;;
  424.     esac
  425.     else
  426.     $echo "Your system appears to NOT have separate I and D space."
  427.     $echo $n "Is this correct? [y] $c"
  428.     . myread
  429.     case $ans in
  430.         n*|f*) iandd='-i' ;;
  431.         *)     iandd='' ;;
  432.     esac
  433.     fi
  434. else
  435.     $echo "Not a pdp11--assuming no separate I and D."
  436. fi
  437.  
  438. : index or strcpy
  439. $echo " "
  440. if $contains index.o libc.list >/dev/null 2>&1 ; then
  441.     $echo "Your system appears to use index() and rindex() rather than strchr()"
  442.     $echo $n "and strrchr().  Is this correct? [y] $c"
  443.     . myread
  444.     case $ans in
  445.     n*|f*) strchr='define' ;;
  446.     *)     strchr='undef' ;;
  447.     esac
  448. else
  449.     $echo "Your system appears to use strchr() and strrchr() rather than index()"
  450.     $echo $n "and rindex().  Is this correct? [y] $c"
  451.     . myread
  452.     case $ans in
  453.     n*|f*) strchr=undef ;;
  454.     *)     strchr=define ;;
  455.     esac
  456. fi
  457.  
  458. : bcopy/bzero or memcpy/memset
  459. $echo " "
  460. if $contains bcopy.o libc.list >/dev/null 2>&1 ; then
  461.     $echo "Your system appears to use bcopy() and bzero() rather than memcpy()"
  462.     $echo $n "and memset().  Is this correct? [y] $c"
  463.     . myread
  464.     case $ans in
  465.     n*|f*) memcpy='define' ;;
  466.     *)     memcpy='undef' ;;
  467.     esac
  468. else
  469.     $echo "Your system appears to use memcpy() and memset() rather than bcopy()"
  470.     $echo $n "and bzero().  Is this correct? [y] $c"
  471.     . myread
  472.     case $ans in
  473.     n*|f*) memcpy='undef' ;;
  474.     *)     memcpy='define' ;;
  475.     esac
  476. fi
  477.  
  478. : check for S5-style timezone handling - current offset from GMT in
  479. : external variable "timezone" rather than gotten with "ftime".
  480. $echo " "
  481. if $contains tzname /usr/include/time.h >/dev/null 2>&1 ; then
  482.     $echo "Your system appears to get the current timezone's offset"
  483.     $echo "from GMT from the external variable timezone rather than"
  484.     $echo "by calling ftime() or gettimeofday()."
  485.     $echo $n "Is this correct? [y] $c"
  486.     . myread
  487.     case $ans in
  488.     n*|f*) tzset='undef' ;;
  489.     *)     tzset='define' ;;
  490.     esac
  491. else
  492.     $echo "Your system appears to get the current timezone's offset"
  493.     $echo "from GMT by calling ftime() or gettimeofday() rather than"
  494.     $echo "from the external variable timezone."
  495.     $echo $n "Is this correct? [y] $c"
  496.     . myread
  497.     case $ans in
  498.     n*|f*) tzset='define' ;;
  499.     *)     tzset='undef' ;;
  500.     esac
  501. fi
  502.  
  503. : determine how to determine when a file is a mailbox
  504. case "$mboxchar" in
  505. '') dflt=F;;
  506. *)  dflt="$mboxchar";;
  507. esac
  508. $cat <<'EOM'
  509.  
  510. In saving articles, trn wants to differentiate between saving to mailbox
  511. format files and normal files.  It does this by examining the first character
  512. of the file in question.  On most systems the first line starts "From...",
  513. so the first character is F.  On other systems there are magic cookies like
  514. control codes between articles, so one of those would be first.  For example,
  515. MMDF messages are separated with lines of 4 control-A's.  On your system, if a
  516. EOM
  517. $echo $n "file is in mailbox format, what is the first character of that file? [$dflt] $c"
  518. . myread
  519. mboxchar="$ans"
  520. case $mboxchar in
  521. '') mboxchar="$dflt" ;;
  522. esac
  523. case $mboxchar in
  524. 'F') ;;
  525. "$CTRLA") ;;
  526. *)  cat <<'EOM'
  527. You will need to edit the shell script mbox.saver to properly append an
  528. article to a mailbox.  The arguments to the script are documented in
  529. EOM
  530.     case $shsharp in
  531.     false)
  532.     $echo "comments in mbox.saver.std."
  533.     ;;
  534.     true)
  535.     $echo "comments in the shell script itself."
  536.     ;;
  537.     esac
  538. esac
  539. $rm -f grimble
  540. : where do we get termlib routines from
  541. $echo " "
  542. ans=`loc libcurses.a x /usr/lib /usr/local/lib /lib`
  543. case "$ans" in
  544. /*)
  545.     ar t $ans >grimble
  546.     if $contains tputs.o grimble >/dev/null 2>&1; then
  547.     termlib='-lcurses'
  548.     havetlib=define
  549.     $echo "Terminfo library found."
  550.     else
  551.     ans=x
  552.     fi
  553.     ;;
  554. esac
  555. case "$ans" in
  556. x)
  557.     ans=`loc libtermlib.a x /usr/lib /usr/local/lib /lib`
  558.     case "$ans" in
  559.     /usr/lib*|/lib*)
  560.     termlib='-ltermlib'
  561.     havetlib=define
  562.     $echo "Termlib library found."
  563.     ;;
  564.     /*)
  565.     termlib="$ans"
  566.     havetlib=define
  567.     $echo "Termlib library found."
  568.     ;;
  569.     *)
  570.     if xenix; then
  571.         ans=/lib/Llibtermcap.a
  572.     else
  573.         ans=`loc libtermcap.a x /usr/lib /usr/local/lib /lib`
  574.     fi
  575.     case "$ans" in
  576.     /usr/lib*|/lib*)
  577.         termlib='-ltermcap'
  578.         havetlib=define
  579.         $echo "Termcap library found."
  580.         ;;
  581.     /*)
  582.         termlib="$ans"
  583.         havetlib=define
  584.         $echo "Termcap library found."
  585.         ;;
  586.     *)
  587.         case "$termlib" in
  588.         '')
  589.         $echo $n "Your system appears to NOT have termlib-style routines.  Is this true? [y] $c"
  590.         . myread
  591.         case $ans in
  592.             n*|f*) havetlib=define
  593.               $echo "Then where are the termlib-style routines kept (specify either -llibname"
  594.               $echo $n " or full pathname (~name ok))? $c"
  595.               . myread
  596.               termlib=`filexp $ans`
  597.               ;;
  598.             *)    havetlib=undef
  599.               termlib=''
  600.               $echo "You will have to play around with term.c then."
  601.               ;;
  602.         esac
  603.         $echo " "
  604.         ;;
  605.         *)  $echo "You said termlib was $termlib before."
  606.         ;;
  607.         esac
  608.         ;;
  609.     esac
  610.     ;;
  611.     esac
  612.     ;;
  613. esac
  614. : see if there is a whoami file
  615. if $test -r /usr/include/whoami.h ; then
  616.     whoami=define
  617.     $echo "whoami.h found."
  618. else
  619.     whoami=undef
  620. fi
  621.  
  622. : see if this is a termio system
  623. ultrix ; ultrix=$?
  624. sun ; sun=$?
  625. pyr ; pyr=$?
  626. if $test -r /usr/include/termio.h -a $ultrix -ne 0 -a $sun -ne 0 -a $pyr -ne 0; then
  627.       termio=define
  628.       $echo "termio.h found."
  629.   else
  630.     if $test -r /usr/include/sgtty.h ; then
  631.     termio=undef
  632.     $echo "sgtty.h found."
  633.     else
  634.     termio=undef
  635.     $echo "Neither termio.h nor sgtty.h found--you could have problems."
  636.     fi
  637. fi
  638.  
  639. : see if this system has fcntl
  640. if $test -r /usr/include/fcntl.h ; then
  641.     fcntl=define
  642.     $echo "fcntl.h found."
  643. else
  644.     fcntl=undef
  645.     $echo "No fcntl.h found, but that's ok."
  646. fi
  647.  
  648. : see if ioctl defs are in sgtty/termio or sys/ioctl
  649. if $test -r /usr/include/sys/ioctl.h ; then
  650.     ioctl=define
  651.     $echo "sys/ioctl.h found."
  652. else
  653.     ioctl=undef
  654.     $echo "sys/ioctl.h not found, assuming ioctl args are defined in sgtty.h."
  655. fi
  656.  
  657. : see if ptem.h exists
  658. if $test -r /usr/include/sys/ptem.h ; then
  659.     ptem=define
  660.     $echo "sys/ptem.h found."
  661. else
  662.     ptem=undef
  663. fi
  664.  
  665. : see if the system has sigblock
  666. if $contains sigblock.o libc.list >/dev/null 2>&1 ; then
  667.     $echo "sigblock() found."
  668.     sigblock=define
  669. else
  670.     sigblock=undef
  671. fi
  672.  
  673. : see if the system has getwd
  674. if $contains getwd.o libc.list >/dev/null 2>&1 ; then
  675.     $echo "getwd() found."
  676.     getcwd=undef
  677.     getwd=define
  678. else
  679. : see if the system has getcwd
  680. if $contains getcwd.o libc.list >/dev/null 2>&1 ; then
  681.     $echo "getcwd() found."
  682.     getcwd=define
  683.     getwd=undef
  684. else
  685.     getcwd=undef
  686.     getwd=undef
  687. fi
  688. fi
  689.  
  690. : see if there is a vfork
  691. if $contains vfork.o libc.list >/dev/null 2>&1 ; then
  692.     $echo "vfork() found."
  693.     novfork='undef'
  694. else
  695.     if next; then
  696.     $echo "I know NeXTs have vfork()!"
  697.     novfork='undef'
  698.     else
  699.     $echo "No vfork() found--will use fork() instead."
  700.     novfork='define'
  701.     fi
  702. fi
  703.  
  704. : check for rename
  705. if $contains rename.o libc.list >/dev/null 2>&1 ; then
  706.     $echo "rename() found."
  707.     rename='define'
  708. else
  709.     $echo "No rename() found -- we'll emulate it."
  710.     rename='undef'
  711. fi
  712.  
  713. : check for truncate
  714. if $contains truncate.o libc.list >/dev/null 2>&1 ; then
  715.     $echo "truncate() found."
  716.     truncate='define'
  717. else
  718.     $echo "No truncate() found -- we'll emulate it."
  719.     truncate='undef'
  720. fi
  721.  
  722. : see if YP could be running here
  723. if $contains yp_master.o libc.list >/dev/null 2>&1 ; then
  724.     $echo "YP may be running -- will use getpwent(), just in case."
  725.     getpwent='define'
  726. else
  727. : see if there is a getpw
  728. if $contains getpw.o libc.list >/dev/null 2>&1 ; then
  729.     $echo "getpw() found."
  730.     getpwent='undef'
  731. else
  732.     $echo "No getpw() found--will use getpwent() instead."
  733.     getpwent='define'
  734. fi
  735. fi
  736.  
  737. : default
  738. sigret=int
  739. : determine type of signal function
  740. if [ -f /usr/include/signal.h ]
  741. then
  742.     $cpp /usr/include/signal.h >sigtest
  743. else
  744. if [ -f /usr/include/sys/signal.h ]
  745. then
  746.     $cpp /usr/include/sys/signal.h >sigtest
  747. fi
  748. fi
  749. if grep "$WHITE*void$WHITE*(\*signal())();" sigtest >/dev/null
  750. then
  751.     sigret=void
  752. fi
  753. $echo "signal() returns $sigret on this system"
  754. : see how we will look up site name
  755. douname=undef
  756. gethostname=undef
  757. phostname=undef
  758. if $test ! "X$hostfile" = X ; then
  759.     gethostname=define
  760. else
  761. if $test "X$hostcmd" = X ; then
  762.     : it is already compiled in
  763. else
  764. if $contains gethostname.o libc.list >/dev/null 2>&1 ; then
  765.     $echo "gethostname() found."
  766.     gethostname=define
  767. else
  768.     if $contains uname.o libc.list >/dev/null 2>&1 ; then
  769.     $echo "uname() found."
  770.     douname=define
  771.     else
  772.     case $hostcmd in
  773.       '') ;;
  774.       *)
  775.         $cat <<EOT
  776.  
  777. There is no gethostname() or uname() on this system.  You have two
  778. possibilites at this point:
  779.  
  780. 1)  You can have your site name ($sitename) compiled into trn, which lets
  781.     trn start up faster, but makes your binaries non-portable, or
  782. 2)  you can have trn use a
  783.     
  784.     popen("$hostcmd","r")
  785.  
  786.     which will start slower but be more portable.
  787.  
  788. Option 1 will use whoami.h if you have one.  If you want option 2 but with
  789. a different command, you can edit config.h after this shell script is done.
  790.  
  791. EOT
  792.         case "$phostname" in
  793.         define) dflt=n;;
  794.         undef)  dflt=y;;
  795.         '')
  796.         case $portable in
  797.         define) dflt=n ;;
  798.         *)      dflt=y ;;
  799.         esac
  800.         ;;
  801.         esac
  802.         $echo $n "Do you want your site name compiled in? [$dflt] $c"
  803.         . myread
  804.         case $ans in
  805.         '') ans=$dflt;;
  806.         esac
  807.         case $ans in
  808.           n*) phostname=define ;;
  809.           *)  hostcmd='' phostname=undef;;
  810.         esac
  811.         ;;
  812.     esac
  813.     case $hostcmd in
  814.       '')
  815.         case $whoami in
  816.           define)
  817.         $echo 'No hostname function--using whoami.h.'
  818.         ;;
  819.           undef)
  820.         $echo 'No hostname function--hardwiring "'$sitename'".'
  821.         ;;
  822.         esac
  823.         ;;
  824.     esac
  825.     fi
  826. fi
  827. fi
  828. fi
  829.  
  830. : see if we need -ljobs and if we have sigset, etc.
  831. if $test -r /usr/lib/libjobs.a || $test -r /usr/local/lib/libjobs.a ; then
  832.     $echo "Jobs library found."
  833.     normsig=undef
  834.     jobslib='-ljobs'
  835. else
  836.     if bsd; then
  837.     $echo "No jobs library found.  (I suppose this is at least 4.2...)"
  838.     else
  839.     $echo "No jobs library found.  (That's okay, we all have our faults.)"
  840.     fi
  841.     normsig=define
  842.     jobslib=''
  843. fi
  844. : set the right options for cc and include the x library for XENIX
  845. if xenix; then
  846.     if $test -d /lib/386 ; then
  847.     iandd="-M3e"
  848.     else
  849. :    iandd="-M2let8 -LARGE -F 3000"
  850.     iandd="-Ml2et32 -LARGE -F B000"
  851.     fi
  852.     jobslib=-lx
  853.     chsize=define
  854. else
  855. if $test -r /lib/libx.a ; then
  856.     $echo "Found Xenix library; using chsize()"
  857.     jobslib=-lx
  858.     chsize=define
  859. else
  860.     chsize=undef
  861. fi
  862. fi
  863. : No Steve jokes...
  864. if next; then
  865.     jobslib='-lsys_s'
  866. fi
  867. : see if there are directory access routines out there
  868. if $test -r /usr/lib/libndir.a || $test -r /usr/local/lib/libndir.a ; then
  869.     $echo "Ndir library found."
  870.     if $test -r /usr/lib/libndir.a; then
  871.     ndirlib='-lndir'
  872.     else
  873.     ndirlib="/usr/local/lib/libndir.a"
  874.     fi
  875.     libndir=define
  876.     usendir=undef
  877.     ndirc=''
  878.     ndiro=''
  879.     dirtype=direct
  880. else
  881.     ndirlib=''
  882.     libndir=undef
  883.     if $contains readdir.o libc.list >/dev/null 2>&1 ; then
  884.     $echo "No ndir library found, but you have readdir() so we'll use that."
  885.     usendir=undef
  886.     ndirc=''
  887.     ndiro=''
  888.     if sgi ; then
  889.         dirtype=direct
  890.         dirinc="<sys/dir.h>"
  891.         $echo "Using direct directory structure."
  892.     else 
  893.         if $test -r /usr/include/dirent.h ; then
  894.             $echo "Using dirent directory structure."
  895.                 dirtype=dirent
  896.             dirinc="<dirent.h>"
  897.         else
  898.             $echo "Using direct directory structure."
  899.                 dirtype=direct
  900.             dirinc="<sys/dir.h>"
  901.         fi
  902.     fi
  903.      else
  904.     if xenix; then
  905.         $echo "Using Xenix readdir() from -lx."
  906.         usendir=undef
  907.         ndirc=''
  908.         ndiro=''
  909.         dirtype=direct
  910.         dirinc="<sys/ndir.h>"
  911.         $echo "Using direct directory structure."
  912.     else
  913.         $echo "No ndir library and no readdir()--using ./ndir.c."
  914.         usendir=define
  915.         ndirc='ndir.c'
  916.         ndiro='ndir.o'
  917.         dirtype=direct
  918.     fi
  919.     fi
  920. fi
  921.  
  922. : check if they want threads by default
  923. case "$threaddef" in
  924.     F*) dflt="n";;
  925.     *)  dflt="y";;
  926. esac
  927. $cat <<EOT
  928.  
  929. Trn has two distinct operating modes (selected by the -x option):
  930. traditional rn and threaded rn.  If you like, trn will check the first
  931. letter of the command name and default to threaded mode (-x) if it is
  932. a 't', or run as traditional rn (+x) if it isn't (this lets you install
  933. as both trn and rn, linked together).  Otherwise, you can install trn
  934. to default to threaded rn (-x) no matter what its name is.  Would you
  935. EOT
  936. $echo $n "prefer the latter? (defaults to -x, regardless of name)? [$dflt] $c"
  937. . myread
  938. case "$ans" in
  939. '') ans="$dflt";;
  940. esac
  941. case "$ans" in
  942.     n*|f*) threaddef='FALSE'
  943.        ans=' when -x is specified';;
  944.     *)     threaddef='TRUE'
  945.        ans='';;
  946. esac
  947. : check if they want the thread selector used by default
  948. case "$selectdef" in
  949.     F*) dflt="n";;
  950.     *)  dflt="y";;
  951. esac
  952. $cat <<EOT
  953.  
  954. When the -X option is specified, trn will set the default command
  955. for starting a newsgroup to be the thread selector.  Should the -X
  956. EOT
  957. $echo $n "option be on by default$ans? [$dflt] $c"
  958. . myread
  959. case "$ans" in
  960. '') ans="$dflt";;
  961. esac
  962. case "$ans" in
  963.     n*|f*) selectdef='FALSE';;
  964.     *)     selectdef='TRUE';;
  965. esac
  966.  
  967. : locate spool directory and check if rrn
  968. case "$isrrn" in
  969. define)
  970.     dflt="y";;
  971. *)
  972.     dflt="n";;
  973. esac
  974. isrrn=''
  975. while $test -z "$isrrn" ; do
  976.     $echo " "
  977.     $echo $n "Do you want to build the NNTP versions of trn (trrn) and mthreads? [$dflt] $c"
  978.     . myread
  979.     case "$ans" in
  980.     '') ans="$dflt";;
  981.     esac
  982.     case "$ans" in
  983.     n*)
  984.     isrrn=undef;;
  985.     y*)
  986.     isrrn=define
  987.     spool=/tmp
  988.     $echo "net.foobar 00001 00001 y" > .falseactive
  989.  
  990.     case "$serverfile" in
  991.     '')  dflt="no default" ;;
  992.     *)   dflt="$serverfile";;
  993.     esac
  994.  
  995.     $cat <<'EOM'
  996.  
  997. Trrn determines the machine to use as a news server by two means:
  998.  
  999.     1. It examines the environment variable NNTPSERVER for
  1000.        a machine name; this allows users to use server machines
  1001.        other than the default.
  1002.  
  1003.     2. It looks in a file which contains the name of a server
  1004.        machine.
  1005.  
  1006. You must create the file mentioned in (2), above.  Simply put the name
  1007. of the machine you wish to use as your news server in this file.
  1008. If you really want, you can use # for comments and blank lines in
  1009. this file as well.
  1010.  
  1011. EOM
  1012.  
  1013.     ans='blurfl/dyick'
  1014.     while $test ! -r "$ans" ; do
  1015.     $echo $n "Enter the name of the news server file: [$dflt] $c"
  1016.     . myread
  1017.         case "$ans" in
  1018.         '') ans="$dflt";;
  1019.         esac
  1020.         ans=`filexp "$ans"`
  1021.         if $test ! -r $ans ; then
  1022.         $echo "Can't find $ans"
  1023.         ans='blurfl/dyick'
  1024.         fi
  1025.     done
  1026.     serverfile="$ans"
  1027.  
  1028.     case "$NNTPSRC" in
  1029.     '') dflt="no default";;
  1030.     *)  dflt="$NNTPSRC";;
  1031.     esac
  1032.  
  1033.     ans='blurfl/dyick'
  1034.     while $test ! -d "$ans"; do
  1035.         $echo $n "Enter the pathname of the NNTP source directory: [$dflt] $c"
  1036.         . myread
  1037.         case "$ans" in
  1038.         '') ans="$dflt";;
  1039.         esac
  1040.         ans=`filexp "$ans"`
  1041.         if $test ! -r $ans/common/nntp.h ; then
  1042.         $echo "Can't find $ans/common/nntp.h!"
  1043.         ans='blurfl/dyick'
  1044.         fi
  1045.     done
  1046.     NNTPSRC="$ans"
  1047. cat > server.h <<EOF_SERVE
  1048. #ifdef SERVER
  1049.  
  1050. EXT    char    *getserverbyfile();
  1051. EXT    int    server_init();
  1052. EXT    void    put_server();
  1053. EXT    int    get_server();
  1054. EXT    void    close_server();
  1055.  
  1056. #include "$NNTPSRC/common/nntp.h"
  1057. #endif
  1058. EOF_SERVE
  1059.  
  1060.     esac
  1061.  
  1062. done
  1063. : hack for Unisys NET-5000 and Interactive V/386
  1064. case "$isrrn" in
  1065. define) 
  1066. : NET-5000
  1067.     if $test -d /usr/include/NET-5000 ; then
  1068.     $echo "I sense you are on a Unisys 5000 computer...poor soul."
  1069.     rrninclude="-I/usr/include/NET-5000 -DEXCELAN -DUSG"
  1070.     socketlib=-lsocket
  1071.     fi
  1072. : Interactive Unix
  1073.     if $test -f /usr/lib/libinet.a ; then
  1074.     rrninclude="-DUSG"
  1075.     socketlib=-linet
  1076.     fi
  1077.     ;;
  1078. *) ;;
  1079. esac
  1080.  
  1081.  
  1082. case "$spool" in
  1083. '')
  1084.     dflt=/usr/spool/news
  1085.     ;;
  1086. *)  dflt="$spool";;
  1087. esac
  1088. case "$isrrn" in
  1089. define)  ans=/tmp;;
  1090. *) ans='blurfl/dyick';;
  1091. esac
  1092. while $test ! -d $ans; do
  1093.     $echo " "
  1094.     case "$ans" in
  1095.     blurfl*);;
  1096.     *) $echo "Directory $ans not found.";;
  1097.     esac
  1098.     $echo $n "Where is news spooled (~name ok)? [$dflt] $c"
  1099.     . myread
  1100.     case "$ans" in
  1101.     '') ans="$dflt";;
  1102.     esac
  1103.     spool="$ans"
  1104.     case $spool in
  1105.     ~*)
  1106.     ans=`filexp $spool`
  1107.     $echo "(That is $ans on this particular system.)"
  1108.     case $portable in
  1109.       undef) spool=$ans ;;
  1110.     esac
  1111.     ;;
  1112.     *)
  1113.     ans=$spool
  1114.     ;;
  1115.     esac
  1116. done
  1117.  
  1118. : check on .thread file placement
  1119. case "$isrrn" in
  1120. define) 
  1121.     case "$threaddir" in
  1122.     ''|'.')    dflt="/usr/spool/threads";;
  1123.     *)        dflt="$threaddir";;
  1124.     esac
  1125.     $echo " "
  1126.     $echo "Pick a directory where you would like the thread files to"
  1127.     $echo $n "be placed: [$dflt] $c"
  1128.     . myread
  1129.     case "$ans" in
  1130.     ''|'.') ans="$dflt";;
  1131.     esac
  1132.     ;;
  1133. *)
  1134.     case "$threaddir" in
  1135.     ''|'.')    dflt=".";;
  1136.     *)        dflt="$threaddir";;
  1137.     esac
  1138.     $cat <<EOT
  1139.  
  1140. By default we place each group's .thread file in the same spool
  1141. directory as the article files.  Alternately, you can place the
  1142. data files in a separate directory if space is tight on the news
  1143. drive.  Where would you like them put?  (use '.' to specify the
  1144. EOT
  1145.     $echo $n "default): [$dflt] $c"
  1146.     . myread
  1147.     case "$ans" in
  1148.     '') ans="$dflt";;
  1149.     esac
  1150.     ;;
  1151. esac
  1152. threaddir="$ans"
  1153.  
  1154. : locate active file
  1155. case "$active" in
  1156. '')
  1157.     dflt=$lib/active
  1158.     ;;
  1159. *)  dflt="$active";;
  1160. esac
  1161. case "$isrrn" in
  1162. define) myactive=.falseactive;;
  1163. *) myactive='blurfl/dyick'
  1164. esac
  1165. while $test ! -f "$myactive"; do
  1166.     $echo " "
  1167.     case "$myactive" in
  1168.     blurfl*);;
  1169.     *) "File $myactive not found.";;
  1170.     esac
  1171.     $echo $n "Where is the active file (~name ok)? [$dflt] $c"
  1172.     . myread
  1173.     case "$ans" in
  1174.     '') ans="$dflt";;
  1175.     esac
  1176.     active="$ans"
  1177.     case $active in
  1178.     ~*)
  1179.     myactive=`filexp $active`
  1180.     $echo "(That is $myactive on this particular system.)"
  1181.     case $portable in
  1182.       undef) active=$myactive ;;
  1183.     esac
  1184.     ;;
  1185.     *)
  1186.     myactive=$active
  1187.     ;;
  1188.     esac
  1189.     if $test -d $myactive ; then
  1190.     myactive=$myactive/active
  1191.     active=$active/active
  1192.     fi
  1193. done
  1194.  
  1195. : check for 2.10.2 and above
  1196. $echo " "
  1197. if $contains ' [0-9][0-9]* [0-9]' "$myactive" >/dev/null 2>&1; then
  1198.     case "$norelay" in
  1199.     undef) dflt="y";;
  1200.     *)     dflt="n";;
  1201.     esac
  1202.     case "$isrrn" in
  1203.     define) 
  1204.        $echo "Is your NNTP server running an old version of news software," ;;
  1205.     *) $echo "Is your system running an old version of news software," ;;
  1206.     esac
  1207.     $echo $n "predating B News 2.10.3? [${dflt}] $c" 
  1208.     . myread
  1209.     case "$ans" in
  1210.     '') ans=$dflt;;
  1211.     esac
  1212.     case "$ans" in
  1213.     y*)
  1214.       norelay='undef'
  1215.     $echo "Looks like you are running at least 2.10.2 news."
  1216.       ;;
  1217.     *)  norelay='define' ;;
  1218.     esac
  1219.     mininact=define
  1220. else
  1221.     $echo "It doesn't look like you are running 2.10.2 news yet.  Are you planning"
  1222.     $echo $n "to install it in the near future? [y] $c"
  1223.     . myread
  1224.     case $ans in
  1225.     n*) mininact=undef ;;
  1226.     *)  mininact=define ;;
  1227.     esac
  1228.     norelay='undef'
  1229. fi
  1230.  
  1231.  
  1232. : check for void type
  1233. $echo " "
  1234. $echo "Checking to see if your C compiler groks the void type..."
  1235. $cat >try.c <<'EOCP'
  1236. void main();
  1237. EOCP
  1238. if cc -c try.c >/dev/null 2>&1 ; then
  1239.     novoid='undef'
  1240.     $echo "Yup, it does."
  1241. else
  1242.     novoid='define'
  1243.     $echo "Nope, it doesn't (boo hiss).  I will substitute int."
  1244. fi
  1245. $rm try.*
  1246.  
  1247. : find out which shell people like to use most
  1248. ans='blurfl/dyick'
  1249. while $test ! -f "$ans" ; do
  1250.     case $ans in
  1251.       blurfl*) ;;
  1252.       *) $echo "$ans does not appear to exist." ;;
  1253.     esac
  1254.     case "$pref" in
  1255.     '')
  1256.     if $test -f /bin/ksh; then
  1257.         dflt='/bin/ksh'
  1258.     else
  1259.         if $test -f /bin/csh; then
  1260.         dflt='/bin/csh'
  1261.         else
  1262.         dflt='/bin/sh'
  1263.         fi
  1264.     fi
  1265.     ;;
  1266.     *)  dflt="$pref";;
  1267.     esac
  1268.     $echo " "
  1269.     $echo "Give the full path name of the shell most people like to use on your"
  1270.     $echo $n "system: [$dflt] $c"
  1271.     . myread
  1272.     case $ans in
  1273.       '') ans=$dflt ;;
  1274.     esac
  1275. done
  1276. pref=$ans
  1277.  
  1278. : locate the preferred pager for this system
  1279. case "$pager" in
  1280. '')
  1281.     case $pg in
  1282.     /*) dflt=$pg
  1283.     ;;
  1284.     esac
  1285.     case $more in
  1286.     /*) dflt=$more
  1287.     ;;
  1288.     esac
  1289.     case $dflt in
  1290.     '') dflt=/usr/ucb/more
  1291.     ;;
  1292.     esac
  1293.     ;;
  1294. *)  dflt="$pager";;
  1295. esac
  1296. pager='blurfl/dyick'
  1297. while $test ! -f "$pager" ; do
  1298.     case $pager in
  1299.       blurfl*)
  1300.     $echo " "
  1301.     $echo "(If your kernel does terminal paging then you may answer this with '/bin/cat'.)"
  1302.     ;;
  1303.       /*) $echo "$pager does not appear to exist."
  1304.     $echo " "
  1305.         ;;
  1306.       *) $echo "Please give the full path name."
  1307.     $echo " "
  1308.         ;;
  1309.     esac
  1310.     $echo $n "What pager is used on your system? [$dflt] $c"
  1311.     . myread
  1312.     pager="$ans"
  1313.     case $pager in
  1314.       '') pager="$dflt" ;;
  1315.     esac
  1316. done
  1317.  
  1318. : determine default editor
  1319. case "$defeditor" in
  1320. '')
  1321.     dflt=`loc vi /usr/ucb $pth`
  1322.     ;;
  1323. *)  dflt="$defeditor"
  1324.     ;;
  1325. esac
  1326. defeditor='blurfl/dyick'
  1327. while $test ! -f "$defeditor" ; do
  1328.     case $defeditor in
  1329.       blurfl*) ;;
  1330.       *) $echo "$defeditor does not appear to exist." ;;
  1331.     esac
  1332.     $echo " "
  1333.     $echo $n "What is the default editor on your system? [$dflt] $c"
  1334.     . myread
  1335.     defeditor="$ans"
  1336.     case $defeditor in
  1337.       '') defeditor=$dflt ;;
  1338.     esac
  1339. done
  1340.  
  1341. : determine mailer for Rnmail to use
  1342. $echo " "
  1343. if $test ! -f "$mailer"; then
  1344.     mailer=
  1345.     for x in /usr/lib/sendmail /bin/smail /usr/bin/smail \
  1346.          /usr/lib/mail/execmail; do
  1347.     if $test "$mailer" = "" -a -f $x; then
  1348.         mailer=$x
  1349.     fi
  1350.     done
  1351.     if $test ! -f "$mailer"; then
  1352.     if usg && $test -f $libexp/recmail; then
  1353.         mailer=$libexp/recmail
  1354.     else
  1355.         if s5uniq && $test -f /usr/bin/mailx; then
  1356.         mailer=/usr/bin/mailx
  1357.         else
  1358.         mailer=/bin/mail
  1359.         fi
  1360.     fi
  1361.     fi
  1362. fi
  1363. $echo "Mail sender is $mailer"
  1364.  
  1365. : check for internet mailer
  1366. case "$internet" in
  1367. define) dflt=y;;
  1368. undef)    dflt=n;;
  1369. *)
  1370.     case "$isrrn" in
  1371.     define) dflt=y ;;
  1372.     *) dflt=n ;;
  1373.     esac
  1374.     ;;
  1375. esac
  1376. cat <<EOM
  1377.  
  1378. Some newer mailers can deliver mail to addresses of the INTERNET persuasion,
  1379. such as user@host.UUCP.  Other older mailers require the complete path to
  1380. the destination to be specified in the address.  Does your mailer understand
  1381. EOM
  1382. $echo $n "INTERNET addresses? [$dflt] $c"
  1383. . myread
  1384. case "$ans" in
  1385. '') ans=$dflt;;
  1386. esac
  1387. case "$ans" in
  1388. y*) internet=define;;
  1389. *)  internet=undef;;
  1390. esac
  1391.  
  1392. : determine where public executables go
  1393. case "$rnbin" in
  1394. '')
  1395.     dflt=`loc . /bin /usr/local/bin /usr/lbin /usr/local /usr/bin`
  1396.     ;;
  1397. *)  dflt="$rnbin"
  1398.     ;;
  1399. esac
  1400. rnbin='blurfl/dyick'
  1401. while $test ! -d "$rnbin" ; do
  1402.     case $rnbin in
  1403.       blurfl*) ;;
  1404.       *) $echo "$rnbin does not appear to exist." ;;
  1405.     esac
  1406.     $echo " "
  1407.     $echo $n "Where do you want to put the public executables? [$dflt] $c"
  1408.     . myread
  1409.     rnbin="$ans"
  1410.     rnbin=`filexp $rnbin`
  1411.     case $rnbin in
  1412.       '') rnbin=$dflt ;;
  1413.     esac
  1414. done
  1415.  
  1416. : determine where private executables go
  1417. case "$rnlib" in
  1418. '')
  1419.     case "$isrrn" in
  1420.     define) dflt=/usr/local/lib/trn ;;
  1421.     *) dflt=$lib/trn ;;
  1422.     esac
  1423.     ;;
  1424. *)  dflt="$rnlib"
  1425.     ;;
  1426. esac
  1427. $echo " "
  1428. $echo "Trn has a number of auxiliary programs that need not be visible to the"
  1429. $echo "whole world.  Where do you want to put these private executables?"
  1430. $echo $n "[$dflt] (~name ok) $c"
  1431. . myread
  1432. rnlib="$ans"
  1433. case $rnlib in
  1434.   '') rnlib=$dflt ;;
  1435. esac
  1436. case $portable in
  1437. undef)
  1438.     rnlib=`filexp $rnlib`
  1439.     ;;
  1440. esac
  1441. : must not allow self reference
  1442. case $rnlib in
  1443.   /*)
  1444.     filexp=$rnlib/filexp
  1445.     ;;
  1446.   *)
  1447.     filexp=`pwd`/filexp
  1448.     ;;
  1449. esac
  1450.  
  1451. : get the local distribution prefixes
  1452. if $test -f $libexp/sys ; then
  1453.     $sed <$libexp/sys -n -e "s/^$sitename://p" | \
  1454.     $sed -e "s/:.*//" -e "s/,/ /g" | tr ' ' '\012' | \
  1455.     $sed -e "/^to./d" -e "/^net$/d" -e "/^fa$/d" -e "/^mod$/d" > .distlist
  1456. fi
  1457.  
  1458. $cat <<'EOH'
  1459.  
  1460. Distribution groups are the things you use on the Distribution line to limit
  1461. where an article will go to.  You are likely to be a member of several
  1462. distribution groups, such as organization, city, state, province, country,
  1463. continent, etc.  For example, Los Angeles has the distribution prefix "la",
  1464. New Jersey has the prefix "nj", and Europe has the prefix "eunet".
  1465.  
  1466. The categories you will be asked are: 
  1467.  
  1468. local organization    (Could be just one machine or a cluster or an office)
  1469. organization        att, dec, kgb, ...
  1470. city            la, ny, mosc, ...
  1471. state/province        ca, nj, bc, ...
  1472. country            usa, can, rok, whatever
  1473. continent        na (North America, not "Not Applicable"), asia, etc.
  1474.  
  1475. (If you don't have a distribution prefix in any of these categories then
  1476. just hit return.)
  1477.  
  1478. EOH
  1479. if $test -f .distlist; then
  1480.     distlist=`tr '\012' ' ' <.distlist`
  1481.     if $test "$distlist" ; then
  1482.     $echo "(These are the distributions in your sys file: $distlist)"
  1483.     $echo " "
  1484.     fi
  1485. fi
  1486. case "$locpref" in
  1487. '') dflt="";;
  1488. *)  dflt="[$locpref] ";;
  1489. esac
  1490. $echo $n "What is the distribution prefix for your local organization? $dflt$c"
  1491. . myread
  1492. case "$ans" in
  1493. '') ;;
  1494. *)  locpref="$ans";;
  1495. esac
  1496. case $locpref in
  1497.   '') locpref=none ;;
  1498. esac
  1499. case "$orgpref" in
  1500. '') dflt="";;
  1501. *)  dflt="[$orgpref] ";;
  1502. esac
  1503. $echo $n "What is the distribution prefix for your organization? $dflt$c"
  1504. . myread
  1505. case "$ans" in
  1506. '') ;;
  1507. *)  orgpref="$ans";;
  1508. esac
  1509. case $orgpref in
  1510.   '') orgpref=none ;;
  1511. esac
  1512. case "$citypref" in
  1513. '') dflt="";;
  1514. *)  dflt="[$citypref] ";;
  1515. esac
  1516. $echo $n "What is the distribution prefix for your city? $dflt$c"
  1517. . myread
  1518. case "$ans" in
  1519. '') ;;
  1520. *)  citypref="$ans";;
  1521. esac
  1522. case $citypref in
  1523.   '') citypref=none ;;
  1524. esac
  1525. case "$statepref" in
  1526. '') dflt="";;
  1527. *)  dflt="[$statepref] ";;
  1528. esac
  1529. $echo $n "What is the distribution prefix for your state/province? $dflt$c"
  1530. . myread
  1531. case "$ans" in
  1532. '') ;;
  1533. *)  statepref="$ans";;
  1534. esac
  1535. case $statepref in
  1536.   '') statepref=none ;;
  1537. esac
  1538. case "$cntrypref" in
  1539. '') dflt="";;
  1540. *)  dflt="[$cntrypref] ";;
  1541. esac
  1542. $echo $n "What is the distribution prefix for your country? $dflt$c"
  1543. . myread
  1544. case "$ans" in
  1545. '') ;;
  1546. *)  cntrypref="$ans";;
  1547. esac
  1548. case $cntrypref in
  1549.   '') cntrypref=none ;;
  1550. esac
  1551. case "$contpref" in
  1552. '') dflt="";;
  1553. *)  dflt="[$contpref] ";;
  1554. esac
  1555. $echo $n "What is the distribution prefix for your continent? $dflt$c"
  1556. . myread
  1557. case "$ans" in
  1558. '') ;;
  1559. *)  contpref="$ans";;
  1560. esac
  1561. case $contpref in
  1562.   '') contpref=none ;;
  1563. esac
  1564.  
  1565. $echo " "
  1566. $echo "If you have any other distribution groups you will need to edit Pnews"
  1567. $echo "and newsetup to add them."
  1568. $echo " "
  1569.  
  1570. : determine root id
  1571. rootid=`$sed </etc/passwd -e "/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*"'$'"/\1/" -e "q" -e "}" -e "d"`
  1572. case $rootid in
  1573.   '') rootid=0 ;;
  1574.   *)  $echo "Root uid = $rootid" ;;
  1575. esac
  1576.  
  1577. : weed out incompatibilities
  1578. case $douname in
  1579.   define) whoami=undef ;;
  1580. esac
  1581.  
  1582. : preserve RCS keywords in files with variable substitution, grrr
  1583. Log='$Log'
  1584. Header='$Header'
  1585.  
  1586. : Warnings
  1587. if v7; then
  1588.     cat <<'EOM'
  1589.  
  1590. NOTE: the V7 compiler may ignore some #undefs that trn uses.  If so, you will
  1591. get messages about redefining EXT.  Some V7 compilers also have difficulties
  1592. with #defines near buffer boundaries, so beware.  You may have to play with
  1593. the spacing in common.h.
  1594. EOM
  1595. fi
  1596.  
  1597. if pdp11; then
  1598.     cat <<'EOM'
  1599.  
  1600. NOTE: the PDP-11 does not have enough data space to do subject caching
  1601. reliably.  That feature will be disabled automatically.  Subject searching
  1602. will tend to be slow.
  1603. EOM
  1604. fi
  1605. case "$isrrn" in
  1606.     define) ;;
  1607.     *) socketlib=""
  1608.        rrninclude=""
  1609.      ;;
  1610. esac
  1611.  
  1612. $echo " "
  1613. $echo "End of configuration questions."
  1614. $echo " "
  1615.  
  1616. : create config.sh file
  1617. $echo " "
  1618. $echo "Creating config.sh..."
  1619. $spitshell <<EOT >config.sh
  1620. $startsh
  1621. # config.sh
  1622. # This file was produced by running the Configure script.
  1623.  
  1624. n='$n'
  1625. c='$c'
  1626. libc='$libc'
  1627. eunicefix='$eunicefix'
  1628. eunice='$eunice'
  1629. cpp='$cpp'
  1630. shsharp='$shsharp'
  1631. startsh='$startsh'
  1632. spitshell='$spitshell'
  1633. test='$test'
  1634. expr='$expr'
  1635. sed='$sed'
  1636. echo='$echo'
  1637. cat='$cat'
  1638. rm='$rm'
  1639. mv='$mv'
  1640. cp='$cp'
  1641. tail='$tail'
  1642. tr='$tr'
  1643. mkdir='$mkdir'
  1644. sort='$sort'
  1645. uniq='$uniq'
  1646. inews='$inews'
  1647. grep='$grep'
  1648. egrep='$egrep'
  1649. nidump='$nidump'
  1650. ypmatch='$ypmatch'
  1651. contains='$contains'
  1652. lib='$lib'
  1653. libexp='$libexp'
  1654. nametype='$nametype'
  1655. cc='$cc'
  1656. iandd='$iandd'
  1657. include='$include'
  1658. rrninclude='$rrninclude'
  1659. termlib='$termlib'
  1660. jobslib='$jobslib'
  1661. socketlib='$socketlib'
  1662. getcwd='$getcwd'
  1663. getwd='$getwd'
  1664. dirtype='$dirtype'
  1665. ndirlib='$ndirlib'
  1666. libndir='$libndir'
  1667. usendir='$usendir'
  1668. ndirc='$ndirc'
  1669. ndiro='$ndiro'
  1670. pager='$pager'
  1671. mailer='$mailer'
  1672. internet='$internet'
  1673. rnbin='$rnbin'
  1674. filexp='$filexp'
  1675. distlist='$distlist'
  1676. Log='$Log'
  1677. Header='$Header'
  1678. sitename='$sitename'
  1679. hostfile='$hostfile'
  1680. domain='$domain'
  1681. orgname='$orgname'
  1682. isadmin='$isadmin'
  1683. newsadmin='$newsadmin'
  1684. rnlib='$rnlib'
  1685. mansrc='$mansrc'
  1686. manext='$manext'
  1687. maildir='$maildir'
  1688. spool='$spool'
  1689. active='$active'
  1690. myactive='$myactive'
  1691. mininact='$mininact'
  1692. pref='$pref'
  1693. defeditor='$defeditor'
  1694. rootid='$rootid'
  1695. mboxchar='$mboxchar'
  1696. locpref='$locpref'
  1697. orgpref='$orgpref'
  1698. citypref='$citypref'
  1699. statepref='$statepref'
  1700. cntrypref='$cntrypref'
  1701. contpref='$contpref'
  1702. strchr='$strchr'
  1703. memcpy='$memcpy'
  1704. rename='$rename'
  1705. truncate='$truncate'
  1706. chsize='$chsize'
  1707. tzset='$tzset'
  1708. threaddef='$threaddef'
  1709. selectdef='$selectdef'
  1710. threaddir='$threaddir'
  1711. novoid='$novoid'
  1712. novfork='$novfork'
  1713. portable='$portable'
  1714. passnam='$passnam'
  1715. berknam='$berknam'
  1716. usgnam='$usgnam'
  1717. whoami='$whoami'
  1718. termio='$termio'
  1719. fcntl='$fcntl'
  1720. ioctl='$ioctl'
  1721. ptem='$ptem'
  1722. normsig='$normsig'
  1723. sigblock='$sigblock'
  1724. sigret='$sigret'
  1725. getuidgid='$getuidgid'
  1726. havetlib='$havetlib'
  1727. getpwent='$getpwent'
  1728. gethostname='$gethostname'
  1729. douname='$douname'
  1730. phostname='$phostname'
  1731. hostcmd='$hostcmd'
  1732. norelay='$norelay'
  1733. rdchk='$rdchk'
  1734. isrrn='$isrrn'
  1735. serverfile='$serverfile'
  1736. NNTPSRC='$NNTPSRC'
  1737. CONFIG=true
  1738. CTRLA='$CTRLA'
  1739. hiddennet='$hiddennet'
  1740. EOT
  1741.  
  1742. : create config.h file
  1743. $echo " "
  1744. $echo "Creating config.h..."
  1745. case "$threaddir" in
  1746. '.')    threaddir='/usr/spool/threads'
  1747.     tdir='/*';;
  1748. *)    tdir='';;
  1749. esac
  1750. case "$strchr" in
  1751. define)    strchr='';;
  1752. *)    strchr='/*';;
  1753. esac
  1754. case "$memcpy" in
  1755. define)    memcpy='';;
  1756. *)    memcpy='/*';;
  1757. esac
  1758. case "$novoid" in
  1759. define)    novoid='';;
  1760. *)    novoid='/*';;
  1761. esac
  1762. case "$novfork" in
  1763. define)    novfork='';;
  1764. *)    novfork='/*';;
  1765. esac
  1766. case "$phostname" in
  1767. define)    phostname='';;
  1768. *)    phostname='/*';;
  1769. esac
  1770. case "$isrrn" in
  1771. define)    isrrn2='';;
  1772. *)    isrrn2='/*';;
  1773. esac
  1774. case "$hostfile" in
  1775. '')    usehostfile='/*';;
  1776. *)    usehostfile='';;
  1777. esac
  1778. $cat <<EOT >config.h
  1779. /* config.h
  1780.  * This file was produced by running the Configure script.
  1781.  * Feel free to modify any of this as the need arises.
  1782.  */
  1783.  
  1784. /* name of the site.  May be overridden by HOSTFILE, gethostname, uname, etc. */
  1785. #define SITENAME "$sitename"
  1786. $usehostfile#define HOSTFILE "$hostfile"
  1787.  
  1788. /* domain name for the site */
  1789. #define OURDOMAIN "$domain"
  1790.  
  1791. /* name of the organization, may be a file name */
  1792. #define ORGNAME "$orgname"
  1793.  
  1794. /* login name of news administrator, if any. */
  1795. #$isadmin NEWSADMIN "$newsadmin"
  1796.  
  1797. /* news library, may use only ~ and %l expansion */
  1798. #define LIB "$lib"
  1799.  
  1800. /* rn private library, may use ~ expansion, %x and %l */
  1801. #define RNLIB "$rnlib"
  1802.  
  1803. /* location of the news spool directory, may use ~ expansion, %x and %l */
  1804. #define SPOOL "$spool"
  1805.  
  1806. /* put thread files in each spool directory, unless THREAD_DIR is defined */
  1807. $tdir#define THREAD_DIR "$threaddir"    /* base directory */
  1808.  
  1809. /* save in subdirectories unless LONG_THREAD_NAMES & THREAD_DIR are defined */
  1810. #undef LONG_THREAD_NAMES        /* not for short-name systems */
  1811.  
  1812. /* location of the active file, may use ~ expansion, %x and %l */
  1813. #define ACTIVE "$active"
  1814.  
  1815. /* location of spooled mail */
  1816. #define MAILFILE "$maildir"
  1817.  
  1818. /* default shell--ok to be a slow shell like csh */
  1819. #define PREFSHELL "$pref"
  1820.  
  1821. /* default editor */
  1822. #define DEFEDITOR "$defeditor"
  1823.  
  1824. /* root uid */
  1825. #define ROOTID $rootid
  1826.  
  1827. /* what is the first character of a mailbox? */
  1828. #define MBOXCHAR '$mboxchar'
  1829.  
  1830. /* how to cancel an article */
  1831. #define CANCEL "$inews -h <%h"
  1832.  
  1833. /* distribution groups */
  1834. #define LOCDIST "$locpref"
  1835. #define ORGDIST "$orgpref"
  1836. #define CITYDIST "$citypref"
  1837. #define STATEDIST "$statepref"
  1838. #define CNTRYDIST "$cntrypref"
  1839. #define CONTDIST "$contpref"
  1840.  
  1841. #define THREAD_INIT $threaddef
  1842. #define SELECT_INIT $selectdef
  1843.  
  1844. $strchr#define index   strchr    /* cultural */
  1845. $strchr#define rindex  strrchr    /*  differences? */
  1846. $memcpy#define bcopy(s,d,n)    memcpy((char*)d,(char*)s,(int)n)    /* Different */
  1847. $memcpy#define bzero(d,n)    memset((char*)d,0,(int)n)        /*  flavors. */
  1848. #$rename    RENAME        /* is rename() a system call? */
  1849. #$truncate    TRUNCATE    /* is truncate() available? */
  1850. #$chsize    CHSIZE        /* is chsize() available? */
  1851. #$tzset    TZSET        /* modern timezone functions? */
  1852. $novoid#define void int    /* is void to be avoided? */
  1853. $novfork#define vfork fork    /* is vfork too virtual? */
  1854. #$eunice    EUNICE        /* no linking? */
  1855. #$eunice    VMS        /* not currently used, here just in case */
  1856. #$getcwd    GETCWD        /* do we have getcwd()? */
  1857. #$getwd        GETWD        /* do we have getwd()? */
  1858. #$usendir    USENDIR        /* include ndir.c? */
  1859. #$libndir    LIBNDIR        /* include /usr/include/ndir.h? */
  1860. #define    DIRTYPE   $dirtype
  1861. #ifndef USENDIR
  1862. #define    DIRINC      $dirinc
  1863. #endif
  1864. #$mininact    MININACT    /* include 2.10.2 optimization? */
  1865. #$portable    PORTABLE    /* do we do extra lookups to start up? */
  1866. #$passnam    PASSNAMES    /* do names come from the passwd file? */
  1867.             /*  (undef to take name from ~/.fullname) */
  1868. #$berknam    BERKNAMES    /* if so, are they Berkeley format? */
  1869.             /* (that is, ":name,stuff:") */
  1870. #$usgnam    USGNAMES    /* or are they USG format? */
  1871.             /* (that is, ":stuff-name(stuff):") */
  1872. #$whoami    WHOAMI        /* should we include whoami.h? */
  1873. #$rdchk    RDCHK        /* do we have rdchk()? */
  1874. #$termio    TERMIO        /* is this a termio system? */
  1875. #$fcntl    FCNTL        /* should we include fcntl.h? */
  1876. #$ioctl    IOCTL        /* are ioctl args all defined in one place? */
  1877. #$ptem        PTEM        /* has the ptem.h include file ? */
  1878. #$normsig    NORMSIG        /* use signal rather than sigset? */
  1879. #$sigblock    SIGBLOCK    /* use sigblock and sigsetmask */
  1880. #define    SIGRET    $sigret    /* what does signal() return? */
  1881. #$havetlib    HAVETERMLIB    /* do we have termlib-style routines? */
  1882. #$getuidgid    GETUIDGID    /* allow setuid (if possible) */
  1883. #$getpwent    GETPWENT    /* should we include getpwent? */
  1884. #$internet    INTERNET    /* does our mailer do INTERNET addressing? */
  1885. #$gethostname    GETHOSTNAME    /* do we have a gethostname function? */
  1886. #$douname    DOUNAME        /* do we have a uname function? */
  1887. $phostname#define PHOSTNAME "$hostcmd"    /* how to get host name with popen */
  1888. #$norelay    NORELAY        /* 2.10.3 doesn't have Relay-Version line */
  1889. #$isrrn    SERVER        /* rrn server code */
  1890. $isrrn2#define SERVER_FILE    "$serverfile"    /* news server file */
  1891. #$hiddennet    HIDDENNET    /* hide the host inside the domain? */
  1892. EOT
  1893.  
  1894. CONFIG=true
  1895.  
  1896. $rm -f libc.list .distlist kit*isdone 
  1897.  
  1898. $echo " "
  1899. $echo "Doing variable substitutions on various files..."
  1900. $echo " "
  1901. set `$grep <MANIFEST '\.SH' | awk '{print $1}'`
  1902. for file in $*; do
  1903.     . $file
  1904. done
  1905.  
  1906. $echo " "
  1907. $echo 'Now you need to generate make dependencies by running "makedepend".'
  1908. $echo 'You might prefer to run it in background: "makedepend > makedepend.out &"'
  1909. $echo $n "Would you like me to run it for you (it takes quite a while)? [n] $c" 
  1910. . myread
  1911. case "$ans" in
  1912. y*) makedepend;;
  1913. esac
  1914. $rm -f myread
  1915. : end of Configure
  1916.