Annotation of 43BSD/contrib/rn/Configure, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.