home *** CD-ROM | disk | FTP | other *** search
- #!/bin/sh
-
- # Generated by nn release 6.4.18
-
- VERSION="6.4.18"
- INEWS="/usr/bin/inews"
- INEWS_DIR="/usr/bin"
- AWK="awk"
- NNTP=true
- ACTIVE=/var/spool/nn/ACTIVE
- NNTPCACHE=
- LOG=/usr/lib/nn/Log
- TMP=${TMPDIR-/usr/tmp}
- DB=/var/spool/nn
- BIN=/usr/bin
- LIB=/usr/lib/nn
- RECMAIL="/usr/lib/sendmail -t"
- SPOOL=/var/spool/news
- NLIB=/var/lib/news
- MASTER=/usr/lib/nn
- HELP=/usr/lib/nn/help
- DBDATA="/var/spool/nn/DATA"
- DBSHORTNAME=true
- OWNER=news
- GROUP=news
- AUTH=false
- UMAN_DIR="/usr/man/man1"
- UMAN_SECT="1"
- SMAN_DIR="/usr/man/man1"
- SMAN_SECT="1m"
- DMAN_DIR="/usr/man/man8"
- DMAN_SECT="8"
-
- # ---- end of prefix
-
- BIN_PROG="nn nnusage nngrab nnstats "
- BIN_LINK="nncheck nnadmin nntidy nngoback nngrep nnpost nnbatch"
- LIB_PROG="aux upgrade_rc"
- MASTER_PROG="nnmaster back_act nnspew"
-
- # (Large) prefix inserted above by Make
-
- # BSD systems keep chown in /etc
- PATH="$PATH:/etc"
-
- case "$1" in
- mkdir)
- if [ -n "$2" -a ! -d "$2"/. ]
- then
- mkdir $2
- if [ ! -d "$2" ] ; then
- echo "Cannot create directory $2"
- exit 1
- fi
- chmod $3 $2
- if ./usercheck 0 ; then
- chgrp $GROUP $2
- chown $OWNER $2
- fi
- echo Created directory $2
- fi
- exit 0
- ;;
- copy)
- cp $4 $3
- chmod $2 $3/$4
- if ./usercheck 0 ; then
- chgrp $GROUP $3/$4
- chown $OWNER $3/$4
- fi
- echo "$4 -> $3/$4"
- exit 0
- ;;
- chmod)
- chmod $2 $3
- if ./usercheck 0 ; then
- chgrp $GROUP $3
- chown $OWNER $3
- fi
- exit 0
- ;;
-
- inews)
- if [ ! -f ./usercheck ] ; then
- ln ../usercheck usercheck
- fi
- if [ ! -d "${INEWS_DIR}"/. ]
- then
- ../inst mkdir ${INEWS_DIR} 755 || exit 1
- fi
- echo Installing $2 in $INEWS
- cp $2 $INEWS && ../inst chmod 755 $INEWS
- exit 0
- ;;
- esac
-
- set -u
-
- (
- if $NNTP
- then
- :
- else
- if [ ! -d "$SPOOL"/. ]
- then
- echo Error: News spool directory $SPOOL not found.
- fi
-
- if [ ! -d "$NLIB"/. ]
- then
- echo Error: News lib directory $NLIB not found.
- fi
- fi
-
- set $INEWS
- if [ ! -f "$1" ]
- then
- echo ERROR: Inews program $INEWS not found.
- fi
-
- set $RECMAIL
- if [ ! -f "$1" ]
- then
- echo ERROR: Mailer program $RECMAIL not found.
- fi
- ) > ErrorCheck
-
- if [ -s ErrorCheck ]
- then
- cat ErrorCheck
- echo "Hit return to continue"
- read X
- fi
- rm -f ErrorCheck
-
- LOOP=true
- while $LOOP
- do
-
- if [ $# -ge 1 ]
- then
- OPT="$1"
- shift
- if [ $# -eq 0 ]
- then
- LOOP=false
- fi
- PAUSE=false
- else
- PAUSE=true
-
- cat <<'EOF'
-
-
- INSTALLATION
-
- 1) Master programs (machine dependent)
- 2) User programs (machince dependent, shareable)
- 3) auxiliary programs (configuration dependent, shareable)
- 4) Documentation (shareable)
- 5) Help files (shareable)
- 6) Online manual (shareable with 5)
-
- INIT) Initialize database
-
- s) Server installation: 1 + 2 + 3 + 4 + 5 + 6
- n) Network installation: 2 + 3 + 4 + 5 + 6
- h) Shared installation: 2 + 3
- m) Master installation: 1
- c) Client installation: 2
- u) Update after patch
- q) Quit
-
- EOF
- if ./usercheck 0 ; then
- :
- else
- echo "Warning: not running as super user"
- echo ""
- fi
- ${AWK} 'BEGIN{printf "Select option: "}' < /dev/null
- read OPT
- echo
-
- fi
-
- case $OPT in
-
- s*|a*)
- OPT="master bin aux help online man"
- ;;
- u*)
- OPT=""
- if [ -f "$MASTER/nnmaster" ]
- then
- OPT="$OPT master"
- fi
- if $DBSHORTNAME
- then
- if [ -n "$DBDATA" -a -d "$DBDATA" -a ! -d "$DBDATA/0" ]
- then
- OPT="$OPT splitdb"
- fi
- fi
- if [ -f "$BIN/nn" ]
- then
- OPT="$OPT bin"
- fi
- if [ -f "$LIB/aux" ]
- then
- OPT="$OPT aux"
- fi
- if [ -d "$HELP" ]
- then
- OPT="$OPT help"
- fi
- if [ -f "$DMAN_DIR/nnmaster.$DMAN_SECT" ]
- then
- OPT="$OPT man"
- fi
- if [ -f "$HELP/Manual" ]
- then
- OPT="$OPT online"
- fi
- ;;
- 1|m)
- OPT=master
- ;;
- n)
- OPT="bin aux help online man"
- ;;
- 2|c)
- OPT=bin
- ;;
- h)
- OPT="bin aux"
- ;;
- 3)
- OPT="aux"
- ;;
- 4)
- OPT="man"
- ;;
- 5)
- OPT="help"
- ;;
- 6)
- OPT="online"
- ;;
- INIT)
- OPT=init
- ;;
- q*|"")
- if [ -f $MASTER/nnmaster -a ! -f $MASTER/MPID ]
- then
- echo "Remember to restart $MASTER/nnmaster"
- fi
- exit 0
- ;;
- *)
- echo "Unrecognized option: $OPT"
- exit 1
- ;;
- esac
-
- for OP in $OPT
- do
- case "$OP" in
-
- master)
- ./inst mkdir $MASTER 755 || exit 1
-
- if [ -f $MASTER/nnmaster ]
- then
- if [ -f $MASTER/MPID ]
- then
- echo "Stopping running master..."
- if ./nnmaster -k ; then
- echo "Stopped."
- else
- exit 1
- fi
- fi
- mv $MASTER/nnmaster $MASTER/nnmaster.old
- fi
-
- echo Installing master in $MASTER
-
- for prog in $MASTER_PROG
- do
- ./inst copy 755 $MASTER $prog
- done
-
- chmod 6750 $MASTER/nnmaster
- ;;
-
- bin)
- echo
- if [ ! -d "$BIN"/. ]
- then
- echo Directory $BIN does not found!
- exit 1
- fi
-
- echo Installing user programs in $BIN
-
- if [ -f $BIN/nn ]
- then
- (
- cd $BIN
- mv nn nn.old
- rm -f $BIN_PROG $BIN_LINK
- )
- fi
-
- for prog in $BIN_PROG
- do
- ./inst copy 755 $BIN $prog
- done
-
- for link in $BIN_LINK
- do
- ln $BIN/nn $BIN/$link
- echo $link linked to nn
- done
-
- if [ -f $BIN/nnacct ] ; then
- chmod 4755 $BIN/nnacct
- echo nnacct is setuid ${OWNER}.
- fi
- ;;
-
- aux)
- echo
- ./inst mkdir $LIB 755 || exit 1
-
- echo Installing auxiliary programs in $LIB
-
- for prog in $LIB_PROG
- do
- ./inst copy 755 $LIB $prog
- done
-
- ./mkprefix conf > ${LIB}/conf
- grep "^#" config.h |
- sed -e '/_MAN_/d' -e 's/[ ]*\/\*.*$//' >> ${LIB}/conf
- ./inst chmod 644 ${LIB}/conf
- ;;
-
- help)
- ./inst mkdir $HELP 755 || exit 1
-
- echo
- echo Installing help files in $HELP
-
- for h in `grep '^help/' MANIFEST | sed 's/^help\/\([a-z0-9.]*\).*$/\1/'`
- do
- ./cvt-help < help/$h > $HELP/$h
- ./inst chmod 644 $HELP/$h
- echo $h
- done
- ;;
-
- man)
- echo
- echo Installing manuals
-
- PL="`echo $VERSION | sed -e 's/ .*$//'`"
- {
- echo $UMAN_DIR $UMAN_SECT .1
- echo $SMAN_DIR $SMAN_SECT .1m
- echo $DMAN_DIR $DMAN_SECT .8
- } |
- while read DIR SECT SRC
- do
- if [ -d "$DIR"/. ]
- then
- for i in man/*$SRC
- do
- MAN=`basename ${i} $SRC`
- NEW=$DIR/${MAN}.$SECT
- sed -e '/^\.TH /s/6.4/'${PL}'/' $i > $NEW
- ./inst chmod 644 $NEW
- echo $MAN in $NEW
- done
- else
- echo $DIR not found or not writeable
- fi
- done
- ;;
-
- online)
- ./inst mkdir $HELP 755 || exit 1
-
- MAN=$HELP/Manual
-
- echo
- echo "Formatting online manual $MAN"
- echo ".... (continues in background) ...."
-
- rm -f $MAN
-
- (
- sed -e 's/\\f[BPI]//g' \
- -e 's/\\-/-/g' -e 's/\\&//g' -e 's/\\e/\\/g' \
- -e '/^\.\\"ta/p' -e '/^\.\\"/d' \
- -e '/^\.nf/d' -e '/^\.fi/d' \
- -e '/^\.if/d' -e '/^\.ta/d' -e '/^\.nr/d' \
- -e '/^\.in/d' -e 's/^\.[BI] //' \
- `grep '^man/' MANIFEST | ${AWK} '{print $1}'` |
- ${AWK} -f format.awk - > $MAN
-
- ./inst chmod 644 $MAN
- ) &
- ;;
-
- splitdb)
- (
- echo
- echo "Rearranging $DBDATA directory for better performance."
- echo "Notice: If interrupted, the database must be rebuilt!"
- echo "Be patient. This may take a while...."
- echo
-
- $MASTER/nnmaster -l "DATABASE UPGRADE IN PROGRESS"
-
- OLDDB="${DBDATA}-old"
- mv ${DBDATA} ${OLDDB} || exit 1
- ./inst mkdir "$DBDATA" 755 || exit 1
-
- Ngrp="`cat ${DB}/GROUPS | wc -l`"
- Ngrp="`expr $Ngrp + 1`"
- Ndir="`expr $Ngrp / 100`"
-
- i=0
- while [ $i -le $Ndir ]
- do
- ./inst mkdir "${DBDATA}/${i}" 755 || exit 1
- i="`expr $i + 1`"
- done
-
- cd ${OLDDB}
- i=$Ndir
- while [ $i -ge 1 ]
- do
- if [ "`echo ${i}[0-9][0-9].[dx]`" != "${i}[0-9][0-9].[dx]" ]
- then
- echo "Moving groups ${i}00-${i}99 to ${DBDATA}/${i}"
- mv ${i}[0-9][0-9].[dx] ${DBDATA}/${i}
- fi
- i="`expr $i - 1`"
- done
- if [ "`echo *.[dx]`" != '*.[dx]' ]
- then
- echo "Moving groups 0-99 to ${DBDATA}/${i}"
- mv *.[dx] ${DBDATA}/0
- fi
-
- cd /tmp
- rm -r ${OLDDB}
-
- $MASTER/nnmaster -l
-
- echo "Database reorganization completed."
- echo
- )
- ;;
-
- init)
- echo
- ./inst mkdir "$DB" 755 || exit 1
- if [ -n "$DBDATA" ] ; then
- if [ -d "$DBDATA" -a "$DBDATA" = "${DB}/DATA" ]
- then
- echo "Removing old data files"
- ( cd /tmp && rm -r "$DBDATA" )
- fi
- ./inst mkdir "$DBDATA" 755 || exit 1
- if $DBSHORTNAME
- then
- ./inst mkdir "$DBDATA/0" 755 || exit 1
- fi
- fi
-
- if $NNTP ; then
- if [ x"$NNTPCACHE" != "x" ] ; then
- ./inst mkdir "$NNTPCACHE" 777 || exit 1
- fi
- ILIMIT=50
- DFLT=50
-
- cat <<'EOF'
-
- When nnmaster is started the first time after initializing nn's
- database, it will attempt to fetch all the articles from the nntp
- server. It does this by successively requesting each article in the
- range min..last obtained from the NNTP server. Often the 'min' number
- is unreliable or even zero (Cnews doesn't maintain it). This means
- that the nnmaster will request a lot of non-existing articles from the
- server, causing a lot of network traffic.
-
- To limit this activity, nn will normally only attempt to fetch the
- fifty newest articles in each group. This shouldn't really be a
- problem since that will give you enough news to start with, and the
- older articles will probably be expired in a few days anyway.
-
- You can change this limit if you like. Or you can disable this
- limitation completely if you trust the min field by giving a 0 limit.
-
- EOF
- else
- ILIMIT=""
- DFLT="none"
-
- cat <<'EOF'
-
- If the 'min' field in your active file is not reliable, nnmaster can
- waste a lot of time trying to locate non-existing articles in the news
- groups when it is collecting the available articles the first time it
- is started after the database is initialized. This is especially true
- with Cnews where the min field is not normally maintained.
-
- To limit the efforts during the initial collection, you can set a
- limit on the number of articles in each group which nnmaster should
- try to locate in each group. This may get you running faster, and it
- shouldn't matter much anyway since the articles that may be ignored
- will be the oldest articles in the group, and they will probably be
- expired soon anyway. A value in the range 100-500 should be more than
- enough. If you don't specify a limit, all articles will be collected,
- but it may take quite some time if the min fields are unreliable.
-
- EOF
- fi
-
- ${AWK} 'END{printf "Initial article limit ('"$DFLT"') "}' < /dev/null
- read L
- if [ -n "$L" ] ; then
- ILIMIT="$L"
- fi
-
- echo Running nnmaster -I $ILIMIT to initialize database....
- echo
- $MASTER/nnmaster -I $ILIMIT
- echo
- echo "Now start $MASTER/nnmaster [ -D ] [ -r ]"
- ;;
- esac
-
- done
-
- if [ -f $LOG ]
- then
- chmod 666 $LOG
- fi
-
- if $PAUSE
- then
- ${AWK} 'BEGIN{printf("\nHit return to continue....")}' < /dev/null
- read X
- fi
- done
-