.\" $Revision: 1.1.2.1 $
.TH HISTORY 5
.SH NAME
history \- record of current and recently expired Usenet articles
.SH DESCRIPTION
The file
.I <pathdb in inn.conf>/history
keeps a record of all articles currently stored in the news system,
as well as those that have been received but since expired.
In a typical production environment, this file will be many megabytes.
.PP
The file consists of text lines.
Each line corresponds to one article.
The file is normally kept sorted in the order in which articles are
received, although this is not a requirement.
.IR Innd (8)
appends a new line each time it files an article, and
.IR expire (8)
builds a new version of the file by removing old articles and purging
old entries.
.PP
Each line consists of two or three fields separated by a tab, shown below
as
.IR \et :
.RS
.nf
<Message\-ID>   \et   date
<Message\-ID>   \et   date   \et   files
[Hash]         \et   date
[Hash]         \et   date   \et   token
.fi
.RE
.PP
The
.I Message\-ID
field is the value of the article's Message-ID header, including the
angle brackets.
This appears if articles are not stored by storage api and
.I storemsgid
in
.IR inn.conf (5)
is ``true''.
.PP
The
.I Hash
field is the ASCII representation of the hash of the Message-ID header.  
This is directly used for the key of the
.IR dbz (3),
if articles are stored by storage api.
.PP
The
.I date
field consists of three sub-fields separated by a tilde.
All sub-fields are the text representation of the number of seconds since
the epoch \(em
.IR i.e. ,
a
.IR time_t ;
see
.IR gettimeofday (2).
The first sub-field is the article's arrival date.
If copies of the article are still present then the second sub-field is
either the value of the article's Expires header, or a hyphen if no
expiration date was specified.
If an article has been expired then the second sub-field will be a hyphen.
The third sub-field is the value of the article's Date header, recording
when the article was posted.
.PP
The
.I files
field is a set of entries separated by one or more spaces.
Each entry consists of the name of the newsgroup, a slash, and the article
number.
This field is empty if the article has been expired.
.PP
The
.I token
field is a token of the article which is stored by storage api.
This field consists of an atmark, a token, and an atmark.
This field is empty if the article has been expired.
.PP
For example, an article cross-posted to comp.sources.unix and
comp.sources.d that was posted on February 10, 1991 (and received three
minutes later), with an expiration date of May 5, 1991, could have a
history line (broken into two lines for display) like the
following:
.RS
.nf
<312@litchi.foo.com>  \et  666162000~673329600~666162180  \et
    comp.sources.unix/1104 comp.sources.d/7056
.fi
.RE
.PP
In addition to the text file, there is a
.IR dbz (3)
database associated with the file that uses the Message-ID field as a key
to determine the offset in the text file where the associated line begins.
For historical reasons, the key includes the trailing \e0 byte
(which is not stored in the text file).
.SH HISTORY
Written by Rich $alz <rsalz@uunet.uu.net> for InterNetNews.
.de R$
This is revision \\$3, dated \\$4.
..
.R$ $Id: history.5,v 1.1.2.1 1999/06/12 08:22:32 kondou Exp $
.SH "SEE ALSO"
dbz(3),
expire(8),
inn.conf(5),
innd(8),
makehistory(8).
