whatis database

Edward J. Groenendaal eddyg at cogs.sussex.ac.uk
Thu Aug 30 21:02:04 AEST 1990


Returning to the earlier question about rebuilding the whatis
database, I got fed up with doing it by hand and so wrote a 'short'
csh script to do it automatically, it's not very clever, but works
most of the time. I've included it at the end of this message.

I've also got a comment to make about the prices of of Apple
machines in England... 

The cost of my Apple IIcx with just over 25% educational discount
came to about 4000 pounds, with the exchange rate as it is that
comes to about $8000 which sounds a bit bloody stupid to me. It's
cheaper to fly to the USA buy the machine their have a few weeks
holiday then pay the import tax on the way back to England!!!

The only reason I mention it now is that I've just had to pay the
interest on the loan for the machine, which as you can imagine with
the interest rates as they are at the moment was MASSIVE.

Could somebody at Apple please explain why the machines in England
have to be twice the cost of those in the USA, especially since the
average income in England is much less than that in the USA.

Anyway here's the shell script.

Edward.

PS. I've only tested this under A/UX 1.1 (I missed A/UX 2 by a month
and can't afford the upgrade....)

---- Cut Here ----
#!/bin/csh
# -----------------------------------------------------------------------------
# Csh script to add manual page entries to the whatis database.
# It will automatically unpack/compress/compact the file,
# extract the whatis info from it and add it to a temporary whatis database.
# The finished database is left sorted in /tmp/whatis, for use it will have
# to be copied to /usr/lib/whatis (replacing the old one)
#
# Author : Edward Groenendaal  <eddyg at cogs.sussex.ac.uk>
# Date   : 29th August 1990
#
# Usage  : rewhatis [ files ]
#
# Note   : This script was hacked together in a couple of hours, it's no
#          where near perfect, in fact it's a mess... but works!
#
# -----------------------------------------------------------------------------

unset noclobber
set filenames=($*)
set tmpfile="/tmp/rw$$"
set tmpmanpage="/tmp/tm$$"
set mywhatis="/tmp/what$$"
set whatis="/usr/lib/whatis"
set BS=`/bin/echo "\b\c"`

#set up new whatis database.
cp $whatis $mywhatis

echo "Adding the following manual pages to the whatis database"
foreach filename ($filenames)
    set manpage=`echo $filename | sed "s/.Z//g;s/.z//g;s/.C//g"`
    set res=`whatis $manpage`
    if ("$res[2]" == "not") then
        switch ("$filename")
        case "*.Z":
            # The manpage is compressed
            zcat $filename > $tmpfile
            breaksw
        case "*.z":
            # The manpage is packed
            pcat $filename > $tmpfile
            breaksw
        case "*.C":
            # The manpage is compacted
            ccat %filename > $tmpfile
            breaksw
        default:
            # Assume it's not compressed or packed
            cp $filename $tmpfile
            breaksw
        endsw
        if ("`file $tmpfile | cut -d' ' -f2`" == "tbl,") then
            nroff -man $tmpfile > $tmpmanpage
            /bin/rm -f $tmpfile
        else
            mv $tmpfile $tmpmanpage
        endif
        # The file is plain text
        # Find the line where the info starts
        set line=`grep -n '-' $tmpmanpage | head -2 | cut -d':' -f1,3`
        if ($line[1] < 8) then
            set line=`expr $line[2] + 1`  # In case of '-' in title
        else
            set line=`expr $line[1] + 1`
        endif

        set wtext=`head -$line $tmpmanpage | tail -2 `
        set names=`echo $wtext | cut -d'-' -f1 | sed 's/,//g'`
	set text=`echo $wtext | cut -d'-' -f2`
        set namestr=`head -4 $tmpmanpage | tail -1 | sed "s/.$BS//g"`

        # A quick hack because of some funny characters in X man pages.
        if (`echo $namestr[1] | wc -c` < 4) then
            set name="$names("`expr $namestr[2] : '.*(\(.*\))'`")"
        else
            set name="$names("`expr $namestr[1] : '.*(\(.*\))'`")"
        endif
        if (`echo $name | wc -c` < 25) then
        # Pad out name with spaces until it's 25 chrs long.
        # Messy but who cares... :-)
        echo \
"`expr '$name                       ' : '^\(.........................\)'`-"\
        "$text" | tee -a $mywhatis
        else
            echo "$name     - $text" | tee -a $mywhatis
        endif
        /bin/rm -f $tmpmanpage
    endif
    # Is already in whatis database.
end
sort $mywhatis > /tmp/whatis
/bin/rm -f $mywhatis
echo "The new whatis database is in /tmp/whatis, move this file"
echo "to /usr/lib/whatis"



More information about the Comp.unix.aux mailing list