#!/bin/sh

#
# rundig
#
# $Id: rundig,v 1.7.2.1 2001/06/07 19:33:56 grdetil Exp $
#
# This is a sample script to create a search database for ht://Dig.
#
DBDIR=/var/lib/htdig/db
COMMONDIR=/var/lib/htdig/common
BINDIR=/usr/sbin

# To help debug problems, try running rundig -vvv
# This will add lots of debugging output to all of the programs
stats= opts= alt=
for arg
do
    case "$arg" in
    -a)  alt="$arg" ;;
    -s)  stats="$arg" ;;
    *)   opts="$opts $arg" ;;	# e.g. -v or -c config
    esac
done

# Create the endings and synonym databases if they don't exist
# or if they're older than the files they're generated from.
# These databases are semi-static, so even if pages change,
# these databases will not need to be rebuilt.
#
if [ "`ls -t $COMMONDIR/word2root.db 2>/dev/null`" != "$COMMONDIR/word2root.db" ]
then
    TMPDIR=/tmp
    rm -f $TMPDIR/word2root.db $TMPDIR/root2word.db
    export TMPDIR

    if [ "`ls -t $COMMONDIR/english.0 2>/dev/null`" = "$COMMONDIR/english.0" ]
    then
	cp $COMMONDIR/english.0 $COMMONDIR/words.dict
        cp $COMMONDIR/english.aff $COMMONDIR/words.aff
	$BINDIR/htfuzzy $opts endings
    fi
    
    if [ "`ls -t $COMMONDIR/russian.dict 2>/dev/null`" = "$COMMONDIR/russian.dict" ]
    then
        cp $COMMONDIR/russian.dict $COMMONDIR/words.dict
	cp $COMMONDIR/russian.aff $COMMONDIR/words.aff
        $BINDIR/htfuzzy $opts endings
    fi

    mv $TMPDIR/word2root.db $COMMONDIR
    mv $TMPDIR/root2word.db $COMMONDIR
fi

if [ "`ls -t $COMMONDIR/synonyms $COMMONDIR/synonyms.db 2>/dev/null | sed 1q`" = "$COMMONDIR/synonyms" ]
then
    $BINDIR/htfuzzy $opts synonyms
fi

#
# Set the TMPDIR variable if you want htmerge to put files in a location
# other than the default.  This is important if you do not have enough
# disk space for the big sort that htmerge runs.  Also, be aware that
# on some systems, /tmp is a memory mapped filesystem that takes away
# from virtual memory.
#
TMPDIR=$DBDIR
export TMPDIR

$BINDIR/htdig -i $opts $stats $alt
[ -e /var/lib/htdig/db/db.wordlist ] &&
[ "`cat /var/lib/htdig/db/db.wordlist`" = "-0" ] && exit;

[ -e /var/lib/htdig/db/db.wordlist.work ] &&
[ "`cat /var/lib/htdig/db/db.wordlist.work`" = "-0" ] && exit;

LC_COLLATE=C $BINDIR/htmerge $opts $stats $alt
case "$alt" in
-a)
  ( cd $DBDIR && test -f db.docdb.work &&
    for f in *.work
    do
        mv -f $f `basename $f .work`
    done ) ;;
esac
# If you're low on disk space and you don't mind completely reindexing
# every time you run this script, you can always
# rm $DBDIR/db.wordlist
# OR
# If you'd rather run update digs all the time with the minimal databases
# Keep only the following files (and don't call htdig with -i):
# db.docdb, db.docdb.work, db.docs.index, db.wordlist.work, db.words.db
$BINDIR/htnotify $opts
# If you want to use the soundex and (or) metaphone fuzzy matchings,
# Uncomment the following line
# $BINDIR/htfuzzy $opts soundex metaphone
