Prunehistory reads the named input file, or standard input if no file is given. The input is taken as a set of lines. Blank lines and lines starting with a number sign (``#'') are ignored. All other lines are should consist of a Message-ID followed by zero or more filenames.
The Messge-ID is used as the dbz(3) key to get an offset into the text file. If no filenames are mentioned on the input line, then all filenames in the text are ``removed.'' If any filenames are mentioned, they are converted into the history file notation. If they appear in the line for the specified Message-ID then they are removed.
Since innd(8) only appends to the text file, prunehistory does not need to have any interaction with it.
It is a good idea to delete purged entries and rebuild the dbz database every so often by using a script like the following:
ctlinnd throttle "Rebuilding history database"
cd /var/lib/news
awk 'NF > 2 {
printf "%s\t%s\t%s", $1, $2, $3;
for (i = 4; i <= NF; i++)
printf " %s", $i;
print "\n";
}' <history >history.n
if makehistory -r -f history.n ; then
mv history.n history
mv history.n.pag history.pag
mv history.n.dir history.dir
else
echo 'Problem rebuilding history; old file not replaced'
fi
ctlinnd go "Rebuilding history database"
Note that this keeps no record of expired articles.