chiark / gitweb /
Commit 2.4.5-5 as unpacked orig.unpacked
authorIan Jackson <ian@liberator.(none)>
Wed, 25 Nov 2009 18:15:09 +0000 (18:15 +0000)
committerIan Jackson <ian@liberator.(none)>
Wed, 25 Nov 2009 18:15:09 +0000 (18:15 +0000)
748 files changed:
CONTRIBUTORS [new file with mode: 0644]
ChangeLog [new file with mode: 0644]
HACKING [new file with mode: 0644]
INSTALL [new file with mode: 0644]
LICENSE [new file with mode: 0644]
MANIFEST [new file with mode: 0644]
Makefile [new file with mode: 0644]
Makefile.global.in [new file with mode: 0644]
NEWS [new file with mode: 0644]
README [new file with mode: 0644]
TODO [new file with mode: 0644]
aclocal.m4 [new file with mode: 0644]
authprogs/Makefile [new file with mode: 0644]
authprogs/auth_krb5.c [new file with mode: 0644]
authprogs/auth_smb.c [new file with mode: 0644]
authprogs/ckpasswd.c [new file with mode: 0644]
authprogs/domain.c [new file with mode: 0644]
authprogs/ident.c [new file with mode: 0644]
authprogs/libauth.c [new file with mode: 0644]
authprogs/libauth.h [new file with mode: 0644]
authprogs/radius.c [new file with mode: 0644]
authprogs/smbval/Makefile [new file with mode: 0644]
authprogs/smbval/byteorder.h [new file with mode: 0644]
authprogs/smbval/rfcnb-common.h [new file with mode: 0644]
authprogs/smbval/rfcnb-error.h [new file with mode: 0644]
authprogs/smbval/rfcnb-io.c [new file with mode: 0644]
authprogs/smbval/rfcnb-io.h [new file with mode: 0644]
authprogs/smbval/rfcnb-priv.h [new file with mode: 0644]
authprogs/smbval/rfcnb-util.c [new file with mode: 0644]
authprogs/smbval/rfcnb-util.h [new file with mode: 0644]
authprogs/smbval/rfcnb.h [new file with mode: 0644]
authprogs/smbval/session.c [new file with mode: 0644]
authprogs/smbval/smbdes.c [new file with mode: 0644]
authprogs/smbval/smbencrypt.c [new file with mode: 0644]
authprogs/smbval/smblib-common.h [new file with mode: 0644]
authprogs/smbval/smblib-priv.h [new file with mode: 0644]
authprogs/smbval/smblib-util.c [new file with mode: 0644]
authprogs/smbval/smblib.c [new file with mode: 0644]
authprogs/smbval/smblib.h [new file with mode: 0644]
authprogs/smbval/valid.c [new file with mode: 0644]
authprogs/smbval/valid.h [new file with mode: 0644]
backends/Makefile [new file with mode: 0644]
backends/actmerge.in [new file with mode: 0644]
backends/actsync.c [new file with mode: 0644]
backends/actsyncd.in [new file with mode: 0644]
backends/archive.c [new file with mode: 0644]
backends/batcher.c [new file with mode: 0644]
backends/buffchan.c [new file with mode: 0644]
backends/crosspost.c [new file with mode: 0644]
backends/cvtbatch.c [new file with mode: 0644]
backends/filechan.c [new file with mode: 0644]
backends/inndf.c [new file with mode: 0644]
backends/innxbatch.c [new file with mode: 0644]
backends/innxmit.c [new file with mode: 0644]
backends/map.c [new file with mode: 0644]
backends/map.h [new file with mode: 0644]
backends/mod-active.in [new file with mode: 0644]
backends/news2mail.in [new file with mode: 0644]
backends/ninpaths.c [new file with mode: 0644]
backends/nntpget.c [new file with mode: 0644]
backends/nntpsend.in [new file with mode: 0644]
backends/overchan.c [new file with mode: 0644]
backends/send-ihave.in [new file with mode: 0644]
backends/send-nntp.in [new file with mode: 0644]
backends/send-uucp.in [new file with mode: 0644]
backends/sendinpaths.in [new file with mode: 0644]
backends/sendxbatches.in [new file with mode: 0644]
backends/shlock.c [new file with mode: 0644]
backends/shrinkfile.c [new file with mode: 0644]
configure [new file with mode: 0755]
configure.in [new file with mode: 0644]
contrib/Makefile [new file with mode: 0644]
contrib/README [new file with mode: 0644]
contrib/archivegz.in [new file with mode: 0644]
contrib/auth_pass.README [new file with mode: 0644]
contrib/auth_pass.c [new file with mode: 0644]
contrib/backlogstat.in [new file with mode: 0644]
contrib/backupfeed.in [new file with mode: 0644]
contrib/cleannewsgroups.in [new file with mode: 0644]
contrib/count_overview.pl [new file with mode: 0755]
contrib/delayer.in [new file with mode: 0644]
contrib/expirectl.c [new file with mode: 0644]
contrib/findreadgroups.in [new file with mode: 0644]
contrib/fixhist [new file with mode: 0755]
contrib/innconfcheck [new file with mode: 0755]
contrib/makeexpctl.in [new file with mode: 0644]
contrib/makestorconf.in [new file with mode: 0644]
contrib/mkbuf [new file with mode: 0755]
contrib/mlockfile.c [new file with mode: 0644]
contrib/newsresp.c [new file with mode: 0644]
contrib/pullart.c [new file with mode: 0644]
contrib/reset-cnfs.c [new file with mode: 0644]
contrib/respool.c [new file with mode: 0644]
contrib/sample.init.script [new file with mode: 0644]
contrib/showtoken.in [new file with mode: 0644]
contrib/stathist.in [new file with mode: 0644]
contrib/thdexpire.in [new file with mode: 0644]
contrib/tunefeed.in [new file with mode: 0644]
control/Makefile [new file with mode: 0644]
control/controlbatch.in [new file with mode: 0644]
control/controlchan.in [new file with mode: 0644]
control/docheckgroups.in [new file with mode: 0644]
control/gpgverify.in [new file with mode: 0644]
control/modules/checkgroups.pl [new file with mode: 0644]
control/modules/ihave.pl [new file with mode: 0644]
control/modules/newgroup.pl [new file with mode: 0644]
control/modules/rmgroup.pl [new file with mode: 0644]
control/modules/sendme.pl [new file with mode: 0644]
control/modules/sendsys.pl [new file with mode: 0644]
control/modules/senduuname.pl [new file with mode: 0644]
control/modules/version.pl [new file with mode: 0644]
control/perl-nocem.in [new file with mode: 0644]
control/pgpverify.in [new file with mode: 0644]
control/signcontrol.in [new file with mode: 0644]
debian/changelog [new file with mode: 0644]
debian/changelog.old [new file with mode: 0644]
debian/compat [new file with mode: 0644]
debian/control [new file with mode: 0644]
debian/copyright [new file with mode: 0644]
debian/inn2-dev.files [new file with mode: 0644]
debian/inn2-dev.links [new file with mode: 0644]
debian/inn2-inews.files [new file with mode: 0644]
debian/inn2-inews.links [new file with mode: 0644]
debian/inn2.README.Debian [new file with mode: 0644]
debian/inn2.cron.d [new file with mode: 0644]
debian/inn2.docs [new file with mode: 0644]
debian/inn2.examples [new file with mode: 0644]
debian/inn2.init [new file with mode: 0644]
debian/inn2.links [new file with mode: 0644]
debian/inn2.logcheck.ignore.server [new file with mode: 0644]
debian/inn2.logcheck.violations.ignore [new file with mode: 0644]
debian/inn2.postinst [new file with mode: 0644]
debian/inn2.postrm [new file with mode: 0644]
debian/inn2.preinst [new file with mode: 0644]
debian/inn2.prerm [new file with mode: 0644]
debian/patches/configure-hostname [new file with mode: 0644]
debian/patches/debian-paths [new file with mode: 0644]
debian/patches/fix_ad_flag [new file with mode: 0644]
debian/patches/fix_body_regexps [new file with mode: 0644]
debian/patches/no-makedbz-on-install [new file with mode: 0644]
debian/patches/nocem-gpg-import [new file with mode: 0644]
debian/patches/series [new file with mode: 0644]
debian/patches/typo_inn_conf_man [new file with mode: 0644]
debian/patches/u_innreport_misc [new file with mode: 0644]
debian/patches/u_right_length [new file with mode: 0644]
debian/patches/u_status_init_ip [new file with mode: 0644]
debian/patches/u_tls_duplicate_reply [new file with mode: 0644]
debian/patches/u_xhdr_permissions [new file with mode: 0644]
debian/patches/u_xover_duplicate_reply [new file with mode: 0644]
debian/rules [new file with mode: 0755]
debian/watch [new file with mode: 0644]
doc/GPL [new file with mode: 0644]
doc/IPv6-info [new file with mode: 0644]
doc/Makefile [new file with mode: 0644]
doc/checklist [new file with mode: 0644]
doc/compliance-nntp [new file with mode: 0644]
doc/config-design [new file with mode: 0644]
doc/config-semantics [new file with mode: 0644]
doc/config-syntax [new file with mode: 0644]
doc/external-auth [new file with mode: 0644]
doc/history [new file with mode: 0644]
doc/hook-perl [new file with mode: 0644]
doc/hook-python [new file with mode: 0644]
doc/hook-tcl [new file with mode: 0644]
doc/man/Makefile [new file with mode: 0644]
doc/man/active.5 [new file with mode: 0644]
doc/man/active.times.5 [new file with mode: 0644]
doc/man/actsync.8 [new file with mode: 0644]
doc/man/actsyncd.8 [new file with mode: 0644]
doc/man/archive.8 [new file with mode: 0644]
doc/man/auth_krb5.8 [new file with mode: 0644]
doc/man/auth_smb.8 [new file with mode: 0644]
doc/man/batcher.8 [new file with mode: 0644]
doc/man/buffchan.8 [new file with mode: 0644]
doc/man/buffindexed.conf.5 [new file with mode: 0644]
doc/man/ckpasswd.8 [new file with mode: 0644]
doc/man/clientlib.3 [new file with mode: 0644]
doc/man/cnfsheadconf.8 [new file with mode: 0644]
doc/man/cnfsstat.8 [new file with mode: 0644]
doc/man/control.ctl.5 [new file with mode: 0644]
doc/man/controlchan.8 [new file with mode: 0644]
doc/man/convdate.1 [new file with mode: 0644]
doc/man/ctlinnd.8 [new file with mode: 0644]
doc/man/cvtbatch.8 [new file with mode: 0644]
doc/man/cycbuff.conf.5 [new file with mode: 0644]
doc/man/dbz.3 [new file with mode: 0644]
doc/man/distrib.pats.5 [new file with mode: 0644]
doc/man/domain.8 [new file with mode: 0644]
doc/man/expire.8 [new file with mode: 0644]
doc/man/expire.ctl.5 [new file with mode: 0644]
doc/man/expireover.8 [new file with mode: 0644]
doc/man/expirerm.8 [new file with mode: 0644]
doc/man/fastrm.1 [new file with mode: 0644]
doc/man/filechan.8 [new file with mode: 0644]
doc/man/getlist.1 [new file with mode: 0644]
doc/man/grephistory.1 [new file with mode: 0644]
doc/man/history.5 [new file with mode: 0644]
doc/man/ident.8 [new file with mode: 0644]
doc/man/incoming.conf.5 [new file with mode: 0644]
doc/man/inews.1 [new file with mode: 0644]
doc/man/inn.conf.5 [new file with mode: 0644]
doc/man/inncheck.8 [new file with mode: 0644]
doc/man/innconfval.1 [new file with mode: 0644]
doc/man/innd.8 [new file with mode: 0644]
doc/man/inndcomm.3 [new file with mode: 0644]
doc/man/inndf.8 [new file with mode: 0644]
doc/man/inndstart.8 [new file with mode: 0644]
doc/man/innfeed.1 [new file with mode: 0644]
doc/man/innfeed.conf.5 [new file with mode: 0644]
doc/man/innmail.1 [new file with mode: 0644]
doc/man/innreport.8 [new file with mode: 0644]
doc/man/innstat.8 [new file with mode: 0644]
doc/man/innupgrade.8 [new file with mode: 0644]
doc/man/innwatch.8 [new file with mode: 0644]
doc/man/innwatch.ctl.5 [new file with mode: 0644]
doc/man/innxbatch.8 [new file with mode: 0644]
doc/man/innxmit.8 [new file with mode: 0644]
doc/man/libauth.3 [new file with mode: 0644]
doc/man/libinn.3 [new file with mode: 0644]
doc/man/libinnhist.3 [new file with mode: 0644]
doc/man/libstorage.3 [new file with mode: 0644]
doc/man/list.3 [new file with mode: 0644]
doc/man/mailpost.8 [new file with mode: 0644]
doc/man/makeactive.8 [new file with mode: 0644]
doc/man/makedbz.8 [new file with mode: 0644]
doc/man/makehistory.8 [new file with mode: 0644]
doc/man/mod-active.8 [new file with mode: 0644]
doc/man/moderators.5 [new file with mode: 0644]
doc/man/motd.news.5 [new file with mode: 0644]
doc/man/news.daily.8 [new file with mode: 0644]
doc/man/news2mail.8 [new file with mode: 0644]
doc/man/newsfeeds.5 [new file with mode: 0644]
doc/man/newslog.5 [new file with mode: 0644]
doc/man/ninpaths.8 [new file with mode: 0644]
doc/man/nnrpd.8 [new file with mode: 0644]
doc/man/nnrpd.track.5 [new file with mode: 0644]
doc/man/nntpget.1 [new file with mode: 0644]
doc/man/nntpsend.8 [new file with mode: 0644]
doc/man/nntpsend.ctl.5 [new file with mode: 0644]
doc/man/ovdb.5 [new file with mode: 0644]
doc/man/ovdb_init.8 [new file with mode: 0644]
doc/man/ovdb_monitor.8 [new file with mode: 0644]
doc/man/ovdb_server.8 [new file with mode: 0644]
doc/man/ovdb_stat.8 [new file with mode: 0644]
doc/man/overchan.8 [new file with mode: 0644]
doc/man/overview.fmt.5 [new file with mode: 0644]
doc/man/parsedate.3 [new file with mode: 0644]
doc/man/passwd.nntp.5 [new file with mode: 0644]
doc/man/perl-nocem.8 [new file with mode: 0644]
doc/man/pgpverify.1 [new file with mode: 0644]
doc/man/prunehistory.8 [new file with mode: 0644]
doc/man/pullnews.1 [new file with mode: 0644]
doc/man/putman.sh [new file with mode: 0644]
doc/man/qio.3 [new file with mode: 0644]
doc/man/radius.8 [new file with mode: 0644]
doc/man/radius.conf.5 [new file with mode: 0644]
doc/man/rc.news.8 [new file with mode: 0644]
doc/man/readers.conf.5 [new file with mode: 0644]
doc/man/rnews.1 [new file with mode: 0644]
doc/man/sasl.conf.5 [new file with mode: 0644]
doc/man/scanlogs.8 [new file with mode: 0644]
doc/man/send-nntp.8 [new file with mode: 0644]
doc/man/send-uucp.8 [new file with mode: 0644]
doc/man/sendinpaths.8 [new file with mode: 0644]
doc/man/shlock.1 [new file with mode: 0644]
doc/man/shrinkfile.1 [new file with mode: 0644]
doc/man/simpleftp.1 [new file with mode: 0644]
doc/man/sm.1 [new file with mode: 0644]
doc/man/startinnfeed.1 [new file with mode: 0644]
doc/man/storage.conf.5 [new file with mode: 0644]
doc/man/subscriptions.5 [new file with mode: 0644]
doc/man/tally.control.8 [new file with mode: 0644]
doc/man/tdx-util.8 [new file with mode: 0644]
doc/man/tst.3 [new file with mode: 0644]
doc/man/uwildmat.3 [new file with mode: 0644]
doc/man/writelog.8 [new file with mode: 0644]
doc/pod/Makefile [new file with mode: 0644]
doc/pod/active.pod [new file with mode: 0644]
doc/pod/active.times.pod [new file with mode: 0644]
doc/pod/auth_krb5.pod [new file with mode: 0644]
doc/pod/auth_smb.pod [new file with mode: 0644]
doc/pod/checklist.pod [new file with mode: 0644]
doc/pod/ckpasswd.pod [new file with mode: 0644]
doc/pod/control.ctl.pod [new file with mode: 0644]
doc/pod/convdate.pod [new file with mode: 0644]
doc/pod/cycbuff.conf.pod [new file with mode: 0644]
doc/pod/distrib.pats.pod [new file with mode: 0644]
doc/pod/domain.pod [new file with mode: 0644]
doc/pod/expire.ctl.pod [new file with mode: 0644]
doc/pod/expireover.pod [new file with mode: 0644]
doc/pod/external-auth.pod [new file with mode: 0644]
doc/pod/fastrm.pod [new file with mode: 0644]
doc/pod/grephistory.pod [new file with mode: 0644]
doc/pod/hacking.pod [new file with mode: 0644]
doc/pod/hook-perl.pod [new file with mode: 0644]
doc/pod/hook-python.pod [new file with mode: 0644]
doc/pod/ident.pod [new file with mode: 0644]
doc/pod/inews.pod [new file with mode: 0644]
doc/pod/inn.conf.pod [new file with mode: 0644]
doc/pod/innconfval.pod [new file with mode: 0644]
doc/pod/innd.pod [new file with mode: 0644]
doc/pod/inndf.pod [new file with mode: 0644]
doc/pod/inndstart.pod [new file with mode: 0644]
doc/pod/innmail.pod [new file with mode: 0644]
doc/pod/innupgrade.pod [new file with mode: 0644]
doc/pod/install.pod [new file with mode: 0644]
doc/pod/libauth.pod [new file with mode: 0644]
doc/pod/libinnhist.pod [new file with mode: 0644]
doc/pod/list.pod [new file with mode: 0644]
doc/pod/mailpost.pod [new file with mode: 0644]
doc/pod/makehistory.pod [new file with mode: 0644]
doc/pod/motd.news.pod [new file with mode: 0644]
doc/pod/news.pod [new file with mode: 0644]
doc/pod/newsfeeds.pod [new file with mode: 0644]
doc/pod/ninpaths.pod [new file with mode: 0644]
doc/pod/nnrpd.pod [new file with mode: 0644]
doc/pod/ovdb.pod [new file with mode: 0644]
doc/pod/ovdb_init.pod [new file with mode: 0644]
doc/pod/ovdb_monitor.pod [new file with mode: 0644]
doc/pod/ovdb_server.pod [new file with mode: 0644]
doc/pod/ovdb_stat.pod [new file with mode: 0644]
doc/pod/passwd.nntp.pod [new file with mode: 0644]
doc/pod/pullnews.pod [new file with mode: 0644]
doc/pod/qio.pod [new file with mode: 0644]
doc/pod/radius.conf.pod [new file with mode: 0644]
doc/pod/radius.pod [new file with mode: 0644]
doc/pod/rc.news.pod [new file with mode: 0644]
doc/pod/readers.conf.pod [new file with mode: 0644]
doc/pod/readme.pod [new file with mode: 0644]
doc/pod/sasl.conf.pod [new file with mode: 0644]
doc/pod/sendinpaths.pod [new file with mode: 0644]
doc/pod/simpleftp.pod [new file with mode: 0644]
doc/pod/sm.pod [new file with mode: 0644]
doc/pod/subscriptions.pod [new file with mode: 0644]
doc/pod/tdx-util.pod [new file with mode: 0644]
doc/pod/tst.pod [new file with mode: 0644]
doc/pod/uwildmat.pod [new file with mode: 0644]
doc/sample-control [new file with mode: 0644]
expire/Makefile [new file with mode: 0644]
expire/convdate.c [new file with mode: 0644]
expire/expire.c [new file with mode: 0644]
expire/expireover.c [new file with mode: 0644]
expire/expirerm.in [new file with mode: 0644]
expire/fastrm.c [new file with mode: 0644]
expire/grephistory.c [new file with mode: 0644]
expire/makedbz.c [new file with mode: 0644]
expire/makehistory.c [new file with mode: 0644]
expire/prunehistory.c [new file with mode: 0644]
extra/active [new file with mode: 0644]
extra/buildinnkeyring [new file with mode: 0644]
extra/bunbatch [new file with mode: 0644]
extra/dh_cloneconf [new file with mode: 0644]
extra/ginpaths2 [new file with mode: 0644]
extra/newsgroups [new file with mode: 0644]
extra/sasl.conf [new file with mode: 0644]
extra/send-uucp.cf [new file with mode: 0644]
frontends/Makefile [new file with mode: 0644]
frontends/cnfsheadconf.in [new file with mode: 0644]
frontends/cnfsstat.in [new file with mode: 0644]
frontends/ctlinnd.c [new file with mode: 0644]
frontends/decode.c [new file with mode: 0644]
frontends/encode.c [new file with mode: 0644]
frontends/feedone.c [new file with mode: 0644]
frontends/getlist.c [new file with mode: 0644]
frontends/inews.c [new file with mode: 0644]
frontends/innconfval.c [new file with mode: 0644]
frontends/mailpost.in [new file with mode: 0644]
frontends/ovdb_init.c [new file with mode: 0644]
frontends/ovdb_monitor.c [new file with mode: 0644]
frontends/ovdb_server.c [new file with mode: 0644]
frontends/ovdb_stat.c [new file with mode: 0644]
frontends/pullnews.in [new file with mode: 0644]
frontends/rnews.c [new file with mode: 0644]
frontends/scanspool.in [new file with mode: 0644]
frontends/sm.c [new file with mode: 0644]
frontends/sys2nf.c [new file with mode: 0644]
history/Make.methods [new file with mode: 0644]
history/Makefile [new file with mode: 0644]
history/buildconfig.in [new file with mode: 0644]
history/his.c [new file with mode: 0644]
history/hisinterface.h [new file with mode: 0644]
history/hisv6/hismethod.config [new file with mode: 0644]
history/hisv6/hisv6-private.h [new file with mode: 0644]
history/hisv6/hisv6.c [new file with mode: 0644]
history/hisv6/hisv6.h [new file with mode: 0644]
include/Makefile [new file with mode: 0644]
include/acconfig.h [new file with mode: 0644]
include/clibrary.h [new file with mode: 0644]
include/conffile.h [new file with mode: 0644]
include/config.h.in [new file with mode: 0644]
include/dbz.h [new file with mode: 0644]
include/inn/buffer.h [new file with mode: 0644]
include/inn/confparse.h [new file with mode: 0644]
include/inn/defines.h [new file with mode: 0644]
include/inn/hashtab.h [new file with mode: 0644]
include/inn/history.h [new file with mode: 0644]
include/inn/innconf.h [new file with mode: 0644]
include/inn/list.h [new file with mode: 0644]
include/inn/md5.h [new file with mode: 0644]
include/inn/messages.h [new file with mode: 0644]
include/inn/mmap.h [new file with mode: 0644]
include/inn/qio.h [new file with mode: 0644]
include/inn/sequence.h [new file with mode: 0644]
include/inn/timer.h [new file with mode: 0644]
include/inn/tst.h [new file with mode: 0644]
include/inn/vector.h [new file with mode: 0644]
include/inn/wire.h [new file with mode: 0644]
include/inndcomm.h [new file with mode: 0644]
include/innperl.h [new file with mode: 0644]
include/libinn.h [new file with mode: 0644]
include/nntp.h [new file with mode: 0644]
include/ov.h [new file with mode: 0644]
include/paths.h.in [new file with mode: 0644]
include/portable/mmap.h [new file with mode: 0644]
include/portable/setproctitle.h [new file with mode: 0644]
include/portable/socket.h [new file with mode: 0644]
include/portable/time.h [new file with mode: 0644]
include/portable/wait.h [new file with mode: 0644]
include/ppport.h [new file with mode: 0644]
include/storage.h [new file with mode: 0644]
innd/Makefile [new file with mode: 0644]
innd/art.c [new file with mode: 0644]
innd/cc.c [new file with mode: 0644]
innd/chan.c [new file with mode: 0644]
innd/icd.c [new file with mode: 0644]
innd/innd.c [new file with mode: 0644]
innd/innd.h [new file with mode: 0644]
innd/inndstart.c [new file with mode: 0644]
innd/keywords.c [new file with mode: 0644]
innd/lc.c [new file with mode: 0644]
innd/nc.c [new file with mode: 0644]
innd/newsfeeds.c [new file with mode: 0644]
innd/ng.c [new file with mode: 0644]
innd/perl.c [new file with mode: 0644]
innd/proc.c [new file with mode: 0644]
innd/python.c [new file with mode: 0644]
innd/rc.c [new file with mode: 0644]
innd/site.c [new file with mode: 0644]
innd/status.c [new file with mode: 0644]
innd/tcl.c [new file with mode: 0644]
innd/util.c [new file with mode: 0644]
innd/wip.c [new file with mode: 0644]
innfeed/Makefile [new file with mode: 0644]
innfeed/README [new file with mode: 0644]
innfeed/article.c [new file with mode: 0644]
innfeed/article.h [new file with mode: 0644]
innfeed/buffer.c [new file with mode: 0644]
innfeed/buffer.h [new file with mode: 0644]
innfeed/config_l.c [new file with mode: 0644]
innfeed/configfile.h [new file with mode: 0644]
innfeed/configfile.l [new file with mode: 0644]
innfeed/configfile.y [new file with mode: 0644]
innfeed/connection.c [new file with mode: 0644]
innfeed/connection.h [new file with mode: 0644]
innfeed/endpoint.c [new file with mode: 0644]
innfeed/endpoint.h [new file with mode: 0644]
innfeed/host.c [new file with mode: 0644]
innfeed/host.h [new file with mode: 0644]
innfeed/imap_connection.c [new file with mode: 0644]
innfeed/innfeed-convcfg.in [new file with mode: 0644]
innfeed/innfeed.h [new file with mode: 0644]
innfeed/innlistener.c [new file with mode: 0644]
innfeed/innlistener.h [new file with mode: 0644]
innfeed/main.c [new file with mode: 0644]
innfeed/misc.c [new file with mode: 0644]
innfeed/misc.h [new file with mode: 0644]
innfeed/procbatch.in [new file with mode: 0644]
innfeed/startinnfeed.c [new file with mode: 0644]
innfeed/tape.c [new file with mode: 0644]
innfeed/tape.h [new file with mode: 0644]
innfeed/testListener.pl [new file with mode: 0644]
lib/Makefile [new file with mode: 0644]
lib/buffer.c [new file with mode: 0644]
lib/cleanfrom.c [new file with mode: 0644]
lib/clientactive.c [new file with mode: 0644]
lib/clientlib.c [new file with mode: 0644]
lib/concat.c [new file with mode: 0644]
lib/conffile.c [new file with mode: 0644]
lib/confparse.c [new file with mode: 0644]
lib/daemonize.c [new file with mode: 0644]
lib/date.c [new file with mode: 0644]
lib/dbz.c [new file with mode: 0644]
lib/defdist.c [new file with mode: 0644]
lib/fdflags.c [new file with mode: 0644]
lib/fdlimit.c [new file with mode: 0644]
lib/fseeko.c [new file with mode: 0644]
lib/ftello.c [new file with mode: 0644]
lib/genid.c [new file with mode: 0644]
lib/getfqdn.c [new file with mode: 0644]
lib/getmodaddr.c [new file with mode: 0644]
lib/getpagesize.c [new file with mode: 0644]
lib/gettime.c [new file with mode: 0644]
lib/hash.c [new file with mode: 0644]
lib/hashtab.c [new file with mode: 0644]
lib/hstrerror.c [new file with mode: 0644]
lib/inet_aton.c [new file with mode: 0644]
lib/inet_ntoa.c [new file with mode: 0644]
lib/innconf.c [new file with mode: 0644]
lib/inndcomm.c [new file with mode: 0644]
lib/list.c [new file with mode: 0644]
lib/localopen.c [new file with mode: 0644]
lib/lockfile.c [new file with mode: 0644]
lib/makedir.c [new file with mode: 0644]
lib/md5.c [new file with mode: 0644]
lib/memcmp.c [new file with mode: 0644]
lib/messages.c [new file with mode: 0644]
lib/mkstemp.c [new file with mode: 0644]
lib/mmap.c [new file with mode: 0644]
lib/parsedate.y [new file with mode: 0644]
lib/perl.c [new file with mode: 0644]
lib/pread.c [new file with mode: 0644]
lib/pwrite.c [new file with mode: 0644]
lib/qio.c [new file with mode: 0644]
lib/radix32.c [new file with mode: 0644]
lib/readin.c [new file with mode: 0644]
lib/remopen.c [new file with mode: 0644]
lib/reservedfd.c [new file with mode: 0644]
lib/resource.c [new file with mode: 0644]
lib/sendarticle.c [new file with mode: 0644]
lib/sendpass.c [new file with mode: 0644]
lib/sequence.c [new file with mode: 0644]
lib/setenv.c [new file with mode: 0644]
lib/seteuid.c [new file with mode: 0644]
lib/setproctitle.c [new file with mode: 0644]
lib/snprintf.c [new file with mode: 0644]
lib/sockaddr.c [new file with mode: 0644]
lib/strcasecmp.c [new file with mode: 0644]
lib/strerror.c [new file with mode: 0644]
lib/strlcat.c [new file with mode: 0644]
lib/strlcpy.c [new file with mode: 0644]
lib/strspn.c [new file with mode: 0644]
lib/strtok.c [new file with mode: 0644]
lib/timer.c [new file with mode: 0644]
lib/tst.c [new file with mode: 0644]
lib/uwildmat.c [new file with mode: 0644]
lib/vector.c [new file with mode: 0644]
lib/version.c [new file with mode: 0644]
lib/wire.c [new file with mode: 0644]
lib/xfopena.c [new file with mode: 0644]
lib/xmalloc.c [new file with mode: 0644]
lib/xsignal.c [new file with mode: 0644]
lib/xwrite.c [new file with mode: 0644]
nnrpd/Makefile [new file with mode: 0644]
nnrpd/article.c [new file with mode: 0644]
nnrpd/cache.c [new file with mode: 0644]
nnrpd/cache.h [new file with mode: 0644]
nnrpd/commands.c [new file with mode: 0644]
nnrpd/group.c [new file with mode: 0644]
nnrpd/line.c [new file with mode: 0644]
nnrpd/list.c [new file with mode: 0644]
nnrpd/misc.c [new file with mode: 0644]
nnrpd/newnews.c [new file with mode: 0644]
nnrpd/nnrpd.c [new file with mode: 0644]
nnrpd/nnrpd.h [new file with mode: 0644]
nnrpd/perl.c [new file with mode: 0644]
nnrpd/perm.c [new file with mode: 0644]
nnrpd/post.c [new file with mode: 0644]
nnrpd/post.h [new file with mode: 0644]
nnrpd/python.c [new file with mode: 0644]
nnrpd/sasl_config.c [new file with mode: 0644]
nnrpd/sasl_config.h [new file with mode: 0644]
nnrpd/tls.c [new file with mode: 0644]
nnrpd/tls.h [new file with mode: 0644]
nnrpd/track.c [new file with mode: 0644]
samples/INN.py [new file with mode: 0644]
samples/Makefile [new file with mode: 0644]
samples/active.minimal [new file with mode: 0644]
samples/actsync.cfg [new file with mode: 0644]
samples/actsync.ign [new file with mode: 0644]
samples/buffindexed.conf [new file with mode: 0644]
samples/control.ctl [new file with mode: 0644]
samples/cycbuff.conf [new file with mode: 0644]
samples/distrib.pats [new file with mode: 0644]
samples/expire.ctl [new file with mode: 0644]
samples/filter.tcl [new file with mode: 0644]
samples/filter_innd.pl [new file with mode: 0644]
samples/filter_innd.py [new file with mode: 0644]
samples/filter_nnrpd.pl [new file with mode: 0644]
samples/incoming.conf [new file with mode: 0644]
samples/inn.conf.in [new file with mode: 0644]
samples/innfeed.conf [new file with mode: 0644]
samples/innreport.conf.in [new file with mode: 0644]
samples/innwatch.ctl [new file with mode: 0644]
samples/moderators [new file with mode: 0644]
samples/motd.news [new file with mode: 0644]
samples/news2mail.cf [new file with mode: 0644]
samples/newsfeeds.in [new file with mode: 0644]
samples/newsgroups.minimal [new file with mode: 0644]
samples/nnrpd.py [new file with mode: 0644]
samples/nnrpd.track [new file with mode: 0644]
samples/nnrpd_access.pl.in [new file with mode: 0644]
samples/nnrpd_access.py [new file with mode: 0644]
samples/nnrpd_access_wrapper.pl.in [new file with mode: 0644]
samples/nnrpd_access_wrapper.py [new file with mode: 0644]
samples/nnrpd_auth.pl.in [new file with mode: 0644]
samples/nnrpd_auth.py [new file with mode: 0644]
samples/nnrpd_auth_wrapper.pl.in [new file with mode: 0644]
samples/nnrpd_auth_wrapper.py [new file with mode: 0644]
samples/nnrpd_dynamic.py [new file with mode: 0644]
samples/nnrpd_dynamic_wrapper.py [new file with mode: 0644]
samples/nntpsend.ctl [new file with mode: 0644]
samples/ovdb.conf [new file with mode: 0644]
samples/overview.fmt [new file with mode: 0644]
samples/passwd.nntp [new file with mode: 0644]
samples/radius.conf [new file with mode: 0644]
samples/readers.conf [new file with mode: 0644]
samples/sasl.conf.in [new file with mode: 0644]
samples/startup.tcl [new file with mode: 0644]
samples/startup_innd.pl [new file with mode: 0644]
samples/storage.conf [new file with mode: 0644]
samples/subscriptions [new file with mode: 0644]
scripts/Makefile [new file with mode: 0644]
scripts/inncheck.in [new file with mode: 0644]
scripts/innmail.in [new file with mode: 0644]
scripts/innreport.in [new file with mode: 0644]
scripts/innreport_inn.pm [new file with mode: 0644]
scripts/innshellvars.in [new file with mode: 0644]
scripts/innshellvars.pl.in [new file with mode: 0644]
scripts/innshellvars.tcl.in [new file with mode: 0644]
scripts/innstat.in [new file with mode: 0644]
scripts/innupgrade.in [new file with mode: 0644]
scripts/innwatch.in [new file with mode: 0644]
scripts/news.daily.in [new file with mode: 0644]
scripts/rc.news.in [new file with mode: 0644]
scripts/scanlogs.in [new file with mode: 0644]
scripts/simpleftp.in [new file with mode: 0644]
scripts/tally.control.in [new file with mode: 0644]
scripts/writelog.in [new file with mode: 0644]
site/Makefile [new file with mode: 0644]
site/getsafe.sh [new file with mode: 0644]
storage/Make.methods [new file with mode: 0644]
storage/Makefile [new file with mode: 0644]
storage/buffindexed/buffindexed.c [new file with mode: 0644]
storage/buffindexed/buffindexed.h [new file with mode: 0644]
storage/buffindexed/ovmethod.config [new file with mode: 0644]
storage/buffindexed/ovmethod.mk [new file with mode: 0644]
storage/buildconfig.in [new file with mode: 0644]
storage/cnfs/cnfs-private.h [new file with mode: 0644]
storage/cnfs/cnfs.c [new file with mode: 0644]
storage/cnfs/cnfs.h [new file with mode: 0644]
storage/cnfs/method.config [new file with mode: 0644]
storage/expire.c [new file with mode: 0644]
storage/interface.c [new file with mode: 0644]
storage/interface.h [new file with mode: 0644]
storage/ov.c [new file with mode: 0644]
storage/ovdb/ovdb-private.h [new file with mode: 0644]
storage/ovdb/ovdb.c [new file with mode: 0644]
storage/ovdb/ovdb.h [new file with mode: 0644]
storage/ovdb/ovmethod.config [new file with mode: 0644]
storage/overdata.c [new file with mode: 0644]
storage/ovinterface.h [new file with mode: 0644]
storage/timecaf/README.CAF [new file with mode: 0644]
storage/timecaf/caf.c [new file with mode: 0644]
storage/timecaf/caf.h [new file with mode: 0644]
storage/timecaf/method.config [new file with mode: 0644]
storage/timecaf/timecaf.c [new file with mode: 0644]
storage/timecaf/timecaf.h [new file with mode: 0644]
storage/timehash/method.config [new file with mode: 0644]
storage/timehash/timehash.c [new file with mode: 0644]
storage/timehash/timehash.h [new file with mode: 0644]
storage/tradindexed/ovmethod.config [new file with mode: 0644]
storage/tradindexed/ovmethod.mk [new file with mode: 0644]
storage/tradindexed/tdx-cache.c [new file with mode: 0644]
storage/tradindexed/tdx-data.c [new file with mode: 0644]
storage/tradindexed/tdx-group.c [new file with mode: 0644]
storage/tradindexed/tdx-private.h [new file with mode: 0644]
storage/tradindexed/tdx-structure.h [new file with mode: 0644]
storage/tradindexed/tdx-util.c [new file with mode: 0644]
storage/tradindexed/tradindexed.c [new file with mode: 0644]
storage/tradindexed/tradindexed.h [new file with mode: 0644]
storage/tradspool/README.tradspool [new file with mode: 0644]
storage/tradspool/method.config [new file with mode: 0644]
storage/tradspool/tradspool.c [new file with mode: 0644]
storage/tradspool/tradspool.h [new file with mode: 0644]
storage/trash/method.config [new file with mode: 0644]
storage/trash/trash.c [new file with mode: 0644]
storage/trash/trash.h [new file with mode: 0644]
support/config.guess [new file with mode: 0755]
support/config.sub [new file with mode: 0755]
support/fixscript.in [new file with mode: 0644]
support/indent [new file with mode: 0755]
support/install-sh [new file with mode: 0755]
support/ltmain.sh [new file with mode: 0644]
support/makedepend [new file with mode: 0755]
support/mkchangelog [new file with mode: 0755]
support/mkmanifest [new file with mode: 0755]
support/mksnapshot [new file with mode: 0755]
support/mksystem [new file with mode: 0755]
support/mkversion [new file with mode: 0755]
tests/Makefile [new file with mode: 0644]
tests/TESTS [new file with mode: 0644]
tests/authprogs/ckpasswd.t [new file with mode: 0755]
tests/authprogs/domain.t [new file with mode: 0755]
tests/authprogs/passwd [new file with mode: 0644]
tests/lib/articles/no-body [new file with mode: 0644]
tests/lib/articles/strange [new file with mode: 0644]
tests/lib/articles/truncated [new file with mode: 0644]
tests/lib/buffer-t.c [new file with mode: 0644]
tests/lib/concat-t.c [new file with mode: 0644]
tests/lib/config/errors [new file with mode: 0644]
tests/lib/config/line-endings [new file with mode: 0644]
tests/lib/config/no-newline [new file with mode: 0644]
tests/lib/config/null [new file with mode: 0644]
tests/lib/config/simple [new file with mode: 0644]
tests/lib/config/valid [new file with mode: 0644]
tests/lib/config/warn-bool [new file with mode: 0644]
tests/lib/config/warn-int [new file with mode: 0644]
tests/lib/config/warnings [new file with mode: 0644]
tests/lib/confparse-t.c [new file with mode: 0644]
tests/lib/date-t.c [new file with mode: 0644]
tests/lib/fakewrite.c [new file with mode: 0644]
tests/lib/hash-t.c [new file with mode: 0644]
tests/lib/hashtab-t.c [new file with mode: 0644]
tests/lib/hstrerror-t.c [new file with mode: 0644]
tests/lib/inet_aton-t.c [new file with mode: 0644]
tests/lib/inet_ntoa-t.c [new file with mode: 0644]
tests/lib/innconf-t.c [new file with mode: 0644]
tests/lib/list-t.c [new file with mode: 0644]
tests/lib/md5-t.c [new file with mode: 0644]
tests/lib/memcmp-t.c [new file with mode: 0644]
tests/lib/messages-t.c [new file with mode: 0644]
tests/lib/mkstemp-t.c [new file with mode: 0644]
tests/lib/pread-t.c [new file with mode: 0644]
tests/lib/pwrite-t.c [new file with mode: 0644]
tests/lib/qio-t.c [new file with mode: 0644]
tests/lib/setenv-t.c [new file with mode: 0644]
tests/lib/setenv.t [new file with mode: 0755]
tests/lib/snprintf-t.c [new file with mode: 0644]
tests/lib/strerror-t.c [new file with mode: 0644]
tests/lib/strlcat-t.c [new file with mode: 0644]
tests/lib/strlcpy-t.c [new file with mode: 0644]
tests/lib/tst-t.c [new file with mode: 0644]
tests/lib/uwildmat-t.c [new file with mode: 0644]
tests/lib/vector-t.c [new file with mode: 0644]
tests/lib/wire-t.c [new file with mode: 0644]
tests/lib/xmalloc.c [new file with mode: 0644]
tests/lib/xmalloc.t [new file with mode: 0755]
tests/lib/xwrite-t.c [new file with mode: 0644]
tests/libtest.c [new file with mode: 0644]
tests/libtest.h [new file with mode: 0644]
tests/overview/data/basic [new file with mode: 0644]
tests/overview/data/bogus [new file with mode: 0644]
tests/overview/data/high-numbered [new file with mode: 0644]
tests/overview/data/reversed [new file with mode: 0644]
tests/overview/munge-data [new file with mode: 0755]
tests/overview/tradindexed-t.c [new file with mode: 0644]
tests/runtests.c [new file with mode: 0644]
tests/util/convdate.t [new file with mode: 0755]

diff --git a/CONTRIBUTORS b/CONTRIBUTORS
new file mode 100644 (file)
index 0000000..504329f
--- /dev/null
@@ -0,0 +1,261 @@
+The following is a list of the people (in roughly chronological order)
+who've helped out.  If anyone's name has been left out (probably), or if
+something has been incorrectly attributed to you (ditto), please let us
+know.
+
+Rich Salz:
+        Designed and wrote most of it.
+
+Bob Halley:
+        Did the TCL extension.
+
+Christophe Wolfhugel:
+        Did the Perl extension and provided several other fixes.
+
+Doug Needham:
+        Made nnrpd spool if innd is unavailable.  Made nnrpd handle the
+        LIST SUBSCRIPTIONS command.  Added the rebuilding of control
+        connections to innd (SIGUSR1).  Got inews to ask the nntp peer for
+        moderator info instead of digging it out of a local file.
+
+David Lawrence: 
+        Did the hooks for PGP verificiation of control messages, added
+        actived support for syncing against an active file obtained via
+        ftp.
+
+John Stapleton:
+        Wrote the poison newsgroup code ('@') for newsfeeds(5).  Wrote the
+        too-many-connects support ('-X -H -T' flags to innd).
+        
+Landon Curt Noll:
+        Wrote or co-wrote actsync, nntpsend, shrinkfile, innstat,
+        news.daily, tally.control and various man pages.  He also was the
+        person originally behind the site directory
+        configuration/installation process.
+
+John Levine:
+        Wrote the '-e' support for expire (expire on shortest time).
+
+Matthias Urlichs:
+        Made rnews recognise gzip compression.  Made newsfeeds(5) take the
+        'Wp' flag.
+
+Stefan Petri:
+        Did the original XBATCH support
+
+Russel Street:
+        Did more XBATCH support.
+
+Alan Barrett:
+        Did the work-limiter in the select loop to stop streaming from
+        killing performance.
+
+Greg Patten:
+        Wrote the perl innlog.
+
+Clayton O'Neill:
+        Wrote the articles storage API and implemented the timehash
+        and regular storage mechanisms with it.  He made significant
+        modifications to dbz.  Integrating innfeed, adding Xref slaving,
+        the history cache, the WIP rewrite and various speedups were
+        also his doing.  Provided the tradindexed overview mechanism.
+        Implemented the O flag in newsfeeds.  Did a bunch of early work on
+        the CVS repository, reorganization of the code, and committing
+        patches from others.
+
+Vincent Archer:
+        Wrote the initial autoconf scripts.
+
+Forrest J. Cavalier III:
+        Provided a lot of bug fixes to 1.5.2.  He extended the autoconf
+        setup a lot to work with version 2.0, and has provided a lot of
+        valuable design input and testing.
+
+Scott Fritchie:
+        Wrote the CNFS storage back end.
+
+Fabien Tassin:
+        Wrote the innreport package.  Implemented the new incoming.conf
+        configuration file.  Added support for nested profile timers.
+
+Jeremy Nixon:
+        Wrote the initial patch for Perl filtering of message IDs on IHAVE
+        or CHECK and other patches related to the filtering code.
+
+Karl Kleinpaste:
+        Wrote the experimental code for automatically generating keywords
+        from incoming articles and putting those keywords in the overview
+        for the use of readers.
+
+Dave Hayes:
+        Along with some bugfixes, Dave wrote the posting-backoff code for 
+        nnrpd and the patches to the perl hooks to make the headers
+        modifiable.
+
+Joe Greco:
+        Wrote the code for measuring the timing of various parts of innd
+        and the original actived code.
+
+Sang-yong Suh:
+        Provided the fuzzy offset technique to dbz.
+
+Katsuhiro Kondou:
+        Provided unified overview, the buffindexed overview method, trash
+        storage method, spool translation method, traditional expire
+        policy for articles stored through storage API and expireindex, as
+        well as hundreds of fixes to clean up defects as changes were
+        made.  Did a large amount of man page documentation and clean up.
+        Has also been a major force in the CVS pool maintenace.
+
+Russell Vincent:
+        Expanded inn.conf to make many of the old compile time options
+        into run time variables.  Numerous bug fixes, small feature
+        enhancements and man updates.
+
+Darrell Fuhriman:
+        Provided various bug fixes and contributed to the pre-SM CNFS
+        development.
+
+Steve Carrie:
+        Modified nnrpd to allow detailed client tracking, added the -R
+        flag to nnrpd.
+
+Ed Mooring:
+        Wrote the first Perl filter callbacks into INN.
+
+Aidan Cully:
+        Provided the patches to support the new readers.conf file, and
+        wrote the initial user authenticators and resolvers for the
+        readers.conf.  Provided the patches to support the new
+        storage.conf format.  Added the option to store articles based on
+        the Expires header.  Also added the '@' article exclusion code to
+        incoming.conf.
+
+Andrew Gierth:
+        Contributed improvements to the nnrpd Perl filtering support to
+        give access to message bodies and support the DROP and SPOOL
+        keywords in filter returns.
+
+Russ Allbery:
+        Has done large amounts of clean-up on various pieces of the system
+        (especially the documentation and build system), and has helped
+        with the CVS pool maintenance.  Improved the speed and portability
+        of the Perl filter.  Rewrote the tradindexed overview method for
+        additional robustness.  Has done extensive work on libinn,
+        breaking out common code from other parts of INN.  Lots of other
+        fixes to various parts of INN.
+
+Kai Henningsen:
+        Implemented the C and U flags in newsfeeds.
+
+Julio Sanchez:
+        Wrote the initial libtool support for INN.
+
+Igor Timkin:
+        Added min-queue-connection support to innfeed, added outgoing
+        volume logging and reporting, and provided a variety of bug
+        fixes.
+
+Heath Kehoe:
+        Various portability and bug fixes, wrote the ovdb overview
+        mechanism that uses Berkeley DB.
+
+Richard Todd:
+        Implemented the timecaf and tradspool storage mechanisms, as well
+        as many bug fixes and other contributions.
+
+Brian Kantor:
+        Wrote the news2mail gateway.
+
+Ilya Etingof:
+        Added Python authentication support for nnrpd.
+
+Kenichi OKADA:
+        Added preliminary SSL and SASL support for nnrpd.
+
+Olaf Titz:
+        Implemented MODE CANCEL support, as well as other patches and bug
+        fixes.
+
+Sven Paulus:
+        Wrote the support for variables in newsfeeds, contributed various
+        other patches and bug fixes.
+
+Krischan Jodies:
+        Wrote the SMB authenticator.
+
+Alex Kiernan:
+        Wrote the history API, generalized the timer code in innd and
+        innfeed into a generic timer library, reworked the NEWNEWS code
+       and added a history cache, and contributed various other bug fixes.
+
+Marco d'Itri:
+        Wrote gpgverify and overhauled controlchan and its modules.  Added
+        IPv6 support to innd and inndstart.  Contributed a rewritten
+        send-uucp.  Has also contributed a variety of bug fixes and helped
+        with testing.
+
+Jeffrey M. Vinocur:
+        Broke parts of the interface with nnrpd for authentication programs
+        into a separate library, added various features to readers.conf,
+        and wrote various other fixes and feature improvements,
+        particularly to nnrpd.
+
+Erik Klavon:
+        Significantly reworked nnrpd Perl and Python hooks to be more useful
+        in combination with the readers.conf mechanism.
+
+Nathan Lutchansky:
+        Added IPv6 support to innfeed, nnrpd, and supporting programs.
+
+Also:
+
+Dave Barr:
+        Kept INN alive after Rich Salz didn't have the time any more but 
+        before the ISC took over.  He released 4 unofficial versions that 
+        provided a good boost to what the ISC started with.  Minor work
+        on 2.0, mostly with example files and minor code tweaks.
+
+James Brister:
+        The chief maintainer of INN from when the ISC took over
+        maintenance through the 2.2 release, James is also the original
+        author of innfeed and has made fixes, improvements, and feature
+        additions all over the code.
+
+Marc Fournier:
+        Provided various bug fixes and did a lot of work integrating other
+        peoples patches and looking after the CVS pool.  Helped
+        significantly with the conversion to autoconf.  Added the ability
+        to set connection limits on a per-host basis.
+
+Joshua M. Thompson
+        Wrote the original INSTALL documentation.
+
+The following people helped above and beyond the call of duty with testing
+(provided patches, bug reports, suggestions, documentation improvements,
+and lobbying):
+
+Paul Vixie, Robert Elz, Evan Champion, Robert Keller, Barry Bouwsma,
+markd@mira.net.au, Ollivier Robert, Kevin Jameson, Heiko W. Rupp,
+Fletcher Mattox, Matus Uhlar, Gabor Kiss, Matthias Scheler,
+Richard Michael Todd, Trevor Riley, Alex Bligh, J. Porter Clark,
+Alan Brown, Bert Hyman, Petter Nilsen, Gary E. Miller, Kim Culhan,
+Marc Baudoin, Neal Becker, Bjorn Knutsson, Stephen Marquard,
+Frederick Korz, Benedict Lofstedt, Dan Ellis, Joe Ramey,
+Odd Einar Aurbakken, Jon Lewis, Dan Riley, Peter Eriksson, Ken Lalonde,
+Koichi Mouri, J. Richard Sladkey, Trine Krogstad, Holger Burbach,
+Per Hedeland, Larry Rosenman, Andrew Burgess, Michael Brunnbauer,
+Mohan Kokal, Robert R. Collier, Mark Hittinger, Miquel van Smoorenburg,
+Boyd Lynn Gerber, Yury B. Razbegin, Joe St. Sauver, Heiko Schlichting,
+John P. Speno, Scott Gifford, Steve Parr, Robert Kiessling,
+Francis Swasey, Paul Tomblin, Florian La Roche, Curt Welch,
+Thomas Mike Michlmayr, KIZU Takashi, Michael Hall, Jeff King,
+Edward S. Marshall, Michael Schroeder, George Lindholm, Don Lewis,
+Christopher Masto, Hiroaki Sengoku, Yury July, Yar Tikhiy, Kees Bakker,
+Peter da Silva, Matt McLeod, Ed Korthof, Jan Rychter, Winfried Magerl,
+Andreas Lamrecht, Duane Currie, Ian Dickinson, Bettina Fink,
+Jochen Erwied, Rebecca Ore, Felicia Neff, Antonio Querubin, Bear Giles,
+Christopher P. Lindsey, Winfried Szukalski, Edvard Tuinder,
+Frank McConnell, Ilya Kovalenko, Steve Youngs, Jacek Konieczny,
+Ilya Voronin, Sergey Babitch, WATANABE Katsuhiro, Chris Caputo,
+Thomas Parmelan
diff --git a/ChangeLog b/ChangeLog
new file mode 100644 (file)
index 0000000..397156e
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,238 @@
+2008-06-29  iulius
+
+       * lib/perl.c: Use snprintf instead of asprintf.
+
+       * doc/hook-python, doc/pod/hook-python.pod: Use initial capital
+         letters for head titles.
+
+       * NEWS, doc/pod/news.pod, lib/perl.c: Fixed a hang in Perl hooks on
+         (at least) HP/PA since Perl 5.10. On such architectures,
+         pthread_mutex_lock() hangs inside perl_parse() if
+         PERL_SYS_INIT3() hasn't been called.
+         
+         Also rewrite "do" and "eval" calls to use perl_eval_pv().
+
+2008-06-25  iulius
+
+       * samples/innreport.conf.in: For two sections in innreport.conf
+         there is a mismatch between sort function and sorted hash.
+         
+         Thanks to Alexander Bartolich for this patch.
+
+2008-06-24  iulius
+
+       * NEWS, doc/pod/news.pod, scripts/innreport_inn.pm: Fix another
+         long-standing bug in innreport which prevented it from correctly
+         reporting innfeed log messages.
+
+       * scripts/innreport_inn.pm: Suppress a few other nnrpd and
+         controlchan notices in innreport.
+
+2008-06-23  iulius
+
+       * NEWS, doc/pod/news.pod: Add changelog for innreport.
+
+       * NEWS, doc/pod/news.pod: Changelog for INN 2.4.5 :-)
+
+       * doc/hook-python: Update the auto-generated documentation for INN
+         2.4.5.
+
+       * scripts/innreport_inn.pm: Fix a long-standing bug in innreport
+         which prevented it from correctly reporting nnrpd log messages.
+
+       * scripts/innreport_inn.pm: Suppress a few warnings in innreport
+         (especially from Python hooks and nnrpd). Also backport some
+         other improvements made in TRUNK.
+
+       * site, site/.cvsignore, site/Makefile: Install nnrpd.py which
+         previously was not.
+
+       * MANIFEST, samples/nnrpd_access.py, samples/nnrpd_auth.py,
+         samples/nnrpd_dynamic.py, site, site/.cvsignore, site/Makefile:
+         Update the Python nnrpd filter. New samples for access and
+         dynamic hooks.
+
+2008-06-22  iulius
+
+       * samples/filter_innd.py: Update the Python innd filter.
+
+       * doc/pod/hook-python.pod: Typo (canceled -> cancelled).
+
+       * samples/nnrpd_access_wrapper.py, samples/nnrpd_auth_wrapper.py,
+         samples/nnrpd_dynamic_wrapper.py: Update old Python wrappers.
+
+       * samples/INN.py, samples/nnrpd.py: Update stub Python scripts. Fix
+         a compilation problem with INN.py (undefined variable) and add
+         missing methods.
+
+       * doc/hook-python, doc/man/readers.conf.5, doc/pod/hook-python.pod,
+         doc/pod/readers.conf.pod: Update POD documentation for Python
+         hooks. It is a complete proof-reading.
+
+       * nnrpd/python.c: No need to check the existence of methods not
+         used by the hooked script.
+
+       * innd/python.c, nnrpd/python.c: Fix an issue with Python exception
+         handling.
+
+       * nnrpd/python.c: Fix typos.
+
+       * nnrpd/python.c: Fix a segfault when one closes and then reopens
+         Python in the same process. files and dynamic_file are still
+         pointing to the old freed memory and INN blithely tries to write
+         to it. Thanks to Russ Allbery for the patch.
+
+2008-06-21  iulius
+
+       * innd/python.c: Better be more careful when decrementing the
+         reference count for these objects.
+
+2008-06-16  iulius
+
+       * doc/external-auth, doc/hook-perl, doc/hook-python,
+         doc/man/active.5, doc/man/active.times.5, doc/man/auth_krb5.8,
+         doc/man/auth_smb.8, doc/man/ckpasswd.8, doc/man/control.ctl.5,
+         doc/man/convdate.1, doc/man/cycbuff.conf.5,
+         doc/man/distrib.pats.5, doc/man/domain.8, doc/man/expire.ctl.5,
+         doc/man/expireover.8, doc/man/fastrm.1, doc/man/grephistory.1,
+         doc/man/ident.8, doc/man/inews.1, doc/man/inn.conf.5,
+         doc/man/innconfval.1, doc/man/innd.8, doc/man/inndf.8,
+         doc/man/inndstart.8, doc/man/innmail.1, doc/man/innupgrade.8,
+         doc/man/libauth.3, doc/man/libinnhist.3, doc/man/list.3,
+         doc/man/mailpost.8, doc/man/makehistory.8, doc/man/motd.news.5,
+         doc/man/newsfeeds.5, doc/man/ninpaths.8, doc/man/nnrpd.8,
+         doc/man/ovdb.5, doc/man/ovdb_init.8, doc/man/ovdb_monitor.8,
+         doc/man/ovdb_server.8, doc/man/ovdb_stat.8,
+         doc/man/passwd.nntp.5, doc/man/qio.3, doc/man/radius.8,
+         doc/man/radius.conf.5, doc/man/rc.news.8, doc/man/readers.conf.5,
+         doc/man/sasl.conf.5, doc/man/sendinpaths.8, doc/man/simpleftp.1,
+         doc/man/sm.1, doc/man/subscriptions.5, doc/man/tdx-util.8,
+         doc/man/tst.3, doc/man/uwildmat.3: Update version number for INN
+         2.4.5 documentation.
+
+2008-06-11  iulius
+
+       * support/config.guess, support/config.sub: Update support files
+         for autoconf to their last stable version.
+
+2008-06-10  iulius
+
+       * innd/python.c: Fix the name of a variable used in Python filters.
+
+2008-06-09  iulius
+
+       * innd/python.c: Fix a bug when reloading Python filters. They
+         might not be correctly reloaded. They must be reimported before
+         being reloaded.
+
+       * nnrpd/python.c: Fix a segfault when generating access groups with
+         embedded Python filters for nnrpd. Thanks to David Hlacik for the
+         bug report.
+
+2008-06-08  iulius
+
+       * frontends/pullnews.in: Two minor issues resolved with this patch
+         by Geraint Edwards: * an off-by-one error on the limit to the
+         amount of articles to get; * when an article is not available, we
+         may have redundantly retried that article.
+
+2008-06-07  iulius
+
+       * doc/pod/cycbuff.conf.pod, doc/pod/hook-perl.pod,
+         doc/pod/hook-python.pod, innd/python.c, samples/filter_innd.pl:
+         Fix the use of "ctlinnd reload something 'reason'" in
+         documentation.
+
+2008-06-05  iulius
+
+       * doc/hook-perl, doc/hook-python, doc/pod/hook-perl.pod,
+         doc/pod/hook-python.pod, innd/innd.c, innd/innd.h,
+         samples/filter_innd.py: Add access to several new headers within
+         Perl and Python hooks for innd. Thanks to Matija Nalis for the
+         patch.
+         
+         Also update the POD documentation and the Python sample.
+
+       * doc/man/pullnews.1, doc/pod/pullnews.pod, frontends/pullnews.in:
+         A new improved version of pullnews. Great thanks to Geraint A.
+         Edwards for all his work. He added no more than 16 flags, fixed
+         some bugs and integrated the backupfeed contrib script by Kai
+         Henningsen, adding again 6 other flags.
+         
+         A long-standing but very minor bug in the -g option was
+         especially fixed and items from the to-do list implemented.
+         
+         From TODO:
+         
+         + reset highwater mark to match server (-w) + reset highwater
+         mark to zero (also -w) + add group to config (-G) + drop articles
+         with headers matching (or not matching) regexp (-m)
+         
+         From backupfeed:
+         
+         + pull only a proportion (factor) of articles (-f) + sleeps
+         between articles/groups (-z/-Z) + Path: fake hop insert (-F) +
+         NNTP connection timeout (-N) + overall session timeout (-S)
+         
+         Other new flags/features:
+         
+         -l logfile log to logfile (rather than /dev/null when rnews'ing!)
+         -s host:port add local port option (can use -p already) -t
+         retries attempt connect to upstream retries times -T retry_pause
+         wait between retries -k checkpt checkpoint the config file every
+         checkpt arts -C width when writing the progress bar - use width
+         columns -d debug_level self-explanatory -M max_arts only process
+         max_arts articles per run -H headers remove these headers from
+         articles -Q quietness set how quiet we are -R be a reader -n
+         no-op -P paths feed articles depending on number of hops in Path:
+
+2008-05-25  iulius
+
+       * control/modules/newgroup.pl: Fix a Perl warning.
+
+2008-05-24  iulius
+
+       * nnrpd/tls.c: When an article of a size greater than remaining
+         stack is retrieved via SSL, a segmentation fault will occur due
+         to the use of alloca(). The below patch uses heap based realloc()
+         instead of stack based alloca(), with a static buffer growing as
+         needed. It uses realloc() instead of malloc() for performance
+         reasons since this function is called frequently. The caveat is
+         that the memory is never free()'ed, so if more correct code is
+         desired, it should be adjusted.
+         
+         Thanks to Chris Caputo for this patch.
+
+2008-05-19  iulius
+
+       * innd/Makefile, nnrpd/line.c: Implementation of the "alarm signal"
+         around SSL_read so that to prevent dead connections from leading
+         nnrpd processes to wait forever in SSL_read(). "clienttimeout"
+         now also works on SSL connections.
+         
+         Thanks to Matija Nalis for the patch.
+
+       * nnrpd/tls.c: Implementation on systems that support it of
+         SO_KEEPALIVE in SSL TCP connections, allowing system detection
+         and closing the dead TCP SSL connections automatically after
+         system-specified time (usually at least 2 hours as recommended by
+         RFC (on Linux, see /proc/sys/net/ipv4/tcp_keepalive_*).
+         
+         Thanks to Matija Nalis for the patch.
+
+2008-05-18  iulius
+
+       * innfeed/host.c: Fix a problem of undefined constant.
+
+2008-05-14  iulius
+
+       * innfeed/host.c: Fix a bug in ipAddrs which contained thrice the
+         same IPs. Rotating the peer IP addresses was a bit slower than it
+         could be.
+         
+         Thanks, D. Stussy, for having seen that. Miquel van Smoorenburg
+         provided the patch.
+
+       * Makefile.global.in: Bump the revision number to 2.4.5 (in case it
+         is released one day).
+
diff --git a/HACKING b/HACKING
new file mode 100644 (file)
index 0000000..87a76e3
--- /dev/null
+++ b/HACKING
@@ -0,0 +1,708 @@
+Hacking INN
+
+    This file is for people who are interested in making modifications to
+    INN.  Normal users can safely skip reading it.  It is intended primarily
+    as a guide, resource, and accumulation of tips for maintainers and
+    contributors, and secondarily as documentation of some of INN's
+    internals.
+
+    This is $Revision: 7736 $ dated $Date: 2006-04-15 04:52:06 +0200 (Sat,
+    15 Apr 2006) $.
+
+    First of all, if you plan on working on INN source, please start from
+    the current development tree.  There may be significant changes from the
+    previous full release, so starting from development sources will make it
+    considerably easier to integrate your work.  You can get nightly
+    snapshots of the current development source from ftp.isc.org in
+    /isc/inn/snapshots (the snapshots named inn-CURRENT-*.tar.gz), or you
+    can get the current CVS tree by using CVSup (see "Using CVSup").
+
+Configuring and Portability
+
+    All INN code should be written expecting ANSI C and POSIX.  There is no
+    need to attempt to support pre-ANSI compilers, and ANSI-only features
+    such as <stdarg.h>, string concatenation, #elif, and token pasting may
+    be used freely.  So far as possible, INN is written to attempt to be
+    portable to any system new enough that someone is likely to want to run
+    a news server on it, but whenever possible this portability should be
+    provided by checking for standard behavior in configure and supplying
+    replacements for standard functions that are missing.
+
+    When there is a conflict between ANSI C and C99, INN code should be
+    written expecting C99 and autoconf used to patch up the differences.
+
+    Try to avoid using #ifdef and the like in the middle of code as much as
+    possible.  Instead, try to isolate the necessary portability bits and
+    include them in libinn or at least in conditional macros separate from
+    the code.  Trying to read code littered with conditional compilation
+    directives is much more difficult.
+
+    The shell script configure at the top level of the source tree is
+    generated by autoconf from configure.in, and include/config.h.in is
+    generated by autoheader from configure.in and include/acconfig.h.  At
+    configure time, configure generates include/config.h and several other
+    files based on options it was given and what it discovers about the
+    target system.
+
+    All modifications to configure should instead be made to configure.in. 
+    Similarly, modifications to include/config.h.in should instead be made
+    to include/acconfig.h.  The autoconf manual (available using info
+    autoconf if you have autoconf and the GNU info utilities installed on
+    your system) is a valuable reference when making any modifications.
+
+    To regenerate configure, just run "autoconf".  To regenerate
+    include/config.h.in, run:
+
+        autoheader -l include
+
+    to tell it where to find acconfig.h.  Please don't include patches to
+    either configure or include/config.h.in when sending patches to INN;
+    instead, note in your patch that those files must be regenerated.
+
+    The generated files are checked into the CVS repository so that people
+    working on INN don't have to have autoconf on their system, and to make
+    packaging easier.
+
+    At the time of this writing, autoconf 2.13 is required.
+
+    The supporting files for autoconf are in the support subdirectory,
+    including the files config.guess and config.sub to determine the system
+    name and and ltmain.sh for libtool support.  The latter file comes from
+    the libtool distribution; the canonical version of the former two are
+    available from ftp.gnu.org in /gnu/config.  In addition, m4/libtool.m4
+    is just a copy of libtool.m4 from the libtool distribution.  (Using
+    libtool without using automake requires a few odd hacks.)  These files
+    used to be on a separate vendor branch so that we could make local
+    modifications, but local modifications have not been necessary for some
+    time.  Now, new versions can just be checked in like any other file
+    modifications.
+
+    INN should not compile with libtool by default, only when requested,
+    since otherwise normal compilations are quite slow.  (Using libtool is
+    not without some cost.)  Basic compilation with libtool works fine as of
+    this writing, with both static and shared compiles, but the dependencies
+    aren't quite right for make -j using libtool.
+
+Documentation
+
+    INN's documentation is currently somewhat in a state of flux.  The vast
+    majority is still in the form of man pages written directly in nroff. 
+    Some parts of the documentation have been rewritten in POD; that
+    documentation can be found in doc/pod.  The canonical source for README,
+    INSTALL, NEWS, doc/hook-perl, doc/hook-python, and this file are also in
+    POD.
+
+    If you're modifying some part of INN's documentation and see that it has
+    a POD version in doc/pod, it's preferred if you can make the
+    modifications to the POD source and then regenerate the derived files. 
+    For a quick introduction to POD, see the perlpod(1) man page on your
+    system (it should be installed if you have Perl installed).
+
+    When writing new documentation, write in whatever format you care to; if
+    necessary, we can always convert it to POD or whatever else we want to
+    use.  Having the documentation exist in *some* form is more important
+    than what language you write it in.  If you really don't have any
+    particular preference, there's a slight preference currently for POD.
+
+    If you use POD or regenerate POD documentation, please install something
+    close to the latest versions of the POD processing utilities to avoid
+    changes to the documentation depending on who generated it last.  You
+    can find the latest version on CPAN (ftp.perl.org or another mirror) in
+    modules/by-module/Pod.  You'll need PodParser (for versions of Perl
+    before 5.6.1; 5.6.1 and later come with a recent enough version) and the
+    latest version of podlators.  For versions of Perl earlier than 5.005,
+    you'll also need File::Spec in modules/by-module/File.
+
+    podlators 1.25 or later will build INN's documentation without
+    significant changes from the versions that are checked into the
+    repository.
+
+    There are Makefile rules in doc/pod/Makefile to build all of the
+    documentation whose master form is POD; if you add additional
+    documentation, please add a rule there as well.  Documentation should be
+    generated by cd'ing to doc/pod and typing "make file" where "file" is
+    the relative path to the documentation file.  This will get all of the
+    various flags right for pod2text or pod2man.
+
+Error Handling
+
+    INN has a set of generic error handling routines that should be used as
+    much as possible so that the same syntax can be used for reporting
+    errors everywhere in INN.  The four basic functions are warn, syswarn,
+    die, and sysdie; warn prints or logs a warning, and die does the same
+    and then exits the current program.  The sys* versions add a colon, a
+    space, and the value of strerror(errno) to the end of the message, and
+    should be used to report failing system calls.
+
+    All of the actual error reporting is done via error handlers, and a
+    program can register its own handlers in addition to or instead of the
+    default one.  The default error handler (error_log_stderr) prints to
+    stderr, prepending the value of error_program_name if it's set to
+    something other than NULL.  Three other error handlers are available,
+    error_log_syslog_crit, error_log_syslog_err, and
+    error_log_syslog_warning, which log the message to syslog at LOG_CRIT,
+    LOG_ERR, or LOG_WARNING priority, respectively.
+
+    There is a different set of error handlers for warn/syswarn and
+    die/sysdie.  To set them, make calls like:
+
+        warn_set_handlers(2, error_log_stderr, error_log_syslog_warning);
+        die_set_handlers(2, error_log_stderr, error_log_syslog_err);
+
+    The first argument is the number of handlers, and the remaining
+    arguments are pointers to functions taking an int (the length of the
+    formatted message), a const char * (the format), a va_list (the
+    arguments), and an int that's 0 if warn or die was called and equal to
+    the value of errno if syswarn or sysdie was called.  The length of the
+    formatted message is obtained by calling vsnprintf with the provided
+    format and arguments, and therefore is reliable to use as the size of a
+    buffer to malloc to hold the result of formatting the message provided
+    that vsnprintf is used to format it (warning: the system vsprintf may
+    produce more output under some circumstances, so always use vsnprintf).
+
+    The error handler can do anything it wishes; each error handler is
+    called in the sequence given.  Error handlers shouldn't call warn or die
+    unless great caution is taken to prevent infinite recursion.  Also be
+    aware that sysdie is called if malloc fails in xmalloc, so if the error
+    handler needs to allocate memory, it must not use xmalloc or a related
+    function to do so and it shouldn't call die to report failure.  The
+    default syslog handlers report memory allocation failure to stderr and
+    exit.
+
+    Finally, die and sysdie support an additional handler that's called
+    immediate before exiting, takes no arguments, and returns an int which
+    is used as the argument for exit.  It can do any necessary global
+    cleanup, call abort instead to generate a core dump or the like.
+
+    The advantage of using this system everywhere in INN is that library
+    code can use warn and die to report errors and each calling program can
+    set up the error handlers as appropriate to make sure the errors go to
+    the right place.  The default handler is fine for interactive programs;
+    for programs that run from interactive scripts, adding something like:
+
+        error_program_name = "program";
+
+    to the beginning of main (where program is the name of the program) will
+    make it easier to figure out which program the script calls is failing. 
+    For programs that may also be called non-interactively, like inndstart,
+    one may want to set up handlers like:
+
+        warn_set_handlers(2, error_log_stderr, error_log_syslog_warning);
+        die_set_handlers(2, error_log_stderr, error_log_syslog_err);
+
+    Finally, for daemons and other non-interactive programs, one may want to
+    do:
+
+        warn_set_handlers(1, error_log_syslog_warning);
+        die_set_handlers(1, error_log_syslog_err);
+
+    to report errors only via syslog.  (Note that if you use syslog error
+    handlers, the program should call openlog first thing to make sure they
+    are logged with the right facility.)
+
+    For historical reasons, error messages that are fatal to the news
+    subsystem are logged at the LOG_CRIT priority, and therefore die in innd
+    should use error_log_syslog_crit.
+
+Test Suite
+
+    The test suite for INN is located in the tests directory and is just
+    getting started.  The test suite consists of a set of programs listed in
+    tests/TESTS and the scaffolding in the runtests program.
+
+    Adding new tests is very straightforward and very flexible.  Just write
+    a program that tests some part of INN, put it in a directory under tests
+    named after the part of INN it's testing (all the tests so far are in
+    lib because they're testing libinn routines), and have it output first a
+    line containing the count of test cases in that file, and then for each
+    test a line saying "ok n" or "not ok n" where n is the test case number.
+    (If a test is skipped for some reason, such as a test of an optional
+    feature that wasn't compiled into INN, the test program should output
+    "ok n # skip".)  Add any rules necessary to build the test to
+    tests/Makefile (note that for simplicity it doesn't recurse into
+    subdirectories) and make sure it creates an executable ending in .t. 
+    Then add the name of the test to tests/TESTS, without the .t ending.
+
+    One naming convention:  to distinguish more easily between e.g. 
+    lib/error.c (the implementation) and tests/lib/error-t.c (the test
+    suite), we add -t to the end of the test file names.  So
+    tests/lib/error-t.c is the source that compiles into an executable
+    tests/lib/error.t which is run by putting a line in tests/TESTS of just
+    "lib/error".
+
+    Note that tests don't have to be written in C; in fact, lib/xmalloc.t is
+    just a shell script (that calls a supporting C program).  Tests can be
+    written in shell or Perl (but other languages should be avoided because
+    someone who wants to run the test suite may not have it) and just have
+    to follow the above output conventions.
+
+    Additions to the test suite, no matter how simple, are very welcome.
+
+Makefiles
+
+    All INN makefiles include Makefile.global at the top level, and only
+    that makefile is a configure substitution target.  This has the
+    disadvantage that configure's normal support for building in a tree
+    outside of the source tree doesn't work, but it has the significant
+    advantage of making configure run much faster and allowing one to run
+    make in any subdirectory and pick up all the definitions and settings
+    from the top level configuration.
+
+    All INN makefiles should also set $(top) to be the path to the top of
+    the build directory (usually relative).  This path is used to find
+    various programs like fixscript and libtool so that the same macros (set
+    in Makefile.global) can be used all over INN.
+
+    The format of INN's makefiles is mostly standardized; the best examples
+    of the format are probably frontends/Makefile and backends/Makefile, at
+    least for directories with lots of separate programs.  The ALL variable
+    holds all the files that should be generated, EXTRA those additional
+    files that were generated by configure, and SOURCES the C source files
+    for generating tag information.
+
+    There are a set of standard installation commands defined in make
+    variables by Makefile.global, and these should be used for all file
+    installations.  See the comment blocks in Makefile.global.in for
+    information on what commands are available and when they should be used.
+    There are also variables set for each of the installation directories
+    that INN uses, for use in building the list of installed paths to files.
+
+    Each subdirectory makefile should have the targets all (the default),
+    clean, clobber, install, tags, and profiled.  The tags target generates
+    vi tags files, and the profiled target generates a profiling version of
+    the programs (although this hasn't been tested much recently).  These
+    rules should be present and empty in those directories where they don't
+    apply.
+
+    Be sure to test compiling with both static and dynamic libraries and
+    make sure that all the libtool support works correctly.  All linking
+    steps, and the compile steps for all library source, should be done
+    through $(LIBTOOL) (which will be set to empty in Makefile.global if
+    libtool support isn't desired).
+
+Scripts
+
+    INN comes with and installs a large number of different scripts, both
+    Bourne shell and Perl, and also comes with support for Tcl scripts
+    (although it doesn't come with any).  Shell variables containing both
+    configure-time information and configuration information from inn.conf
+    are set by the innshellvars support libraries, so the only
+    system-specific configuration that should have to be done is fixing the
+    right path to the interpretor and adding a line to load the appropriate
+    innshellvars.
+
+    support/fixscript, built by configure, does this.  It takes a .in file
+    and generates the final script (removing the .in) by fixing the path to
+    the interpretor on the first line and replacing the second line,
+    whatever it is, with code to load the innshellvars appropriate for that
+    interpretor.  (If invoked with -i, it just fixes the interpretor path.)
+
+    Scripts should use innshellvars (via fixscript) to get the right path
+    and the right variables whenever possible, rather than having configure
+    substitute values in them.  Any values needed at run-time should instead
+    be available from all of the different innshellvars.
+
+    See the existing scripts for examples of how this is done.
+
+Include Files
+
+    Include files relevant to all of INN, or relevant to the two libraries
+    built as part of INN (the utility libinn library and the libstorage
+    library that contains all storage and overview functions) are found in
+    the include directory; other include files relevant only to a portion of
+    INN are found in the relevant directory.
+
+    Practically all INN source files will start with:
+
+        #include "config.h"
+        #include "clibrary.h"
+
+    The first picks up all defines generated by autoconf and is necessary
+    for types that may not be present on all systems (uid_t, pid_t, size_t,
+    int32_t, and the like).  It therefore should be included before any
+    other headers that use those types, as well as to get general
+    configuration information.
+
+    The second is portably equivalent to:
+
+        #include <sys/types.h>
+        #include <stdarg.h>
+        #include <stdio.h>
+        #include <stdlib.h>
+        #include <stddef.h>
+        #include <stdint.h>
+        #include <string.h>
+        #include <unistd.h>
+
+    except that it doesn't include headers that are missing on a given
+    system, replaces functions not found on the system with the INN
+    equivalents, provides macros that INN assumes are available but which
+    weren't found, and defines some additional portability things.  Even if
+    this is more headers than the source file actually needs, it's generally
+    better to just include clibrary.h rather than trying to duplicate the
+    autoconf-driven hackery that it does to do things portably.  The primary
+    exception is for source files in lib that only define a single function
+    and are used for portability; those may want to include only config.h so
+    that they can be easily used in other projects that use autoconf. 
+    config.h is a fairly standard header name for this purpose.
+
+    clibrary.h does also include config.h, but it's somewhat poor form to
+    rely on this; it's better to explicitly list the header dependencies for
+    the benefit of someone else reading the code.
+
+    There are portable wrappers around several header files that have known
+    portability traps or that need some fixing up on some platforms.  Look
+    in include/portable and familiarize yourself with them and use them
+    where appropriate.
+
+    Another frequently included header file is libinn.h, which among other
+    things defines xmalloc(), xrealloc(), xstrdup(), and xcalloc(), which
+    are checked versions of the standard memory allocation routines that
+    terminate the program if the memory allocation fails.  These should
+    generally always be used instead of the regular C versions.  libinn.h
+    also provides various other utility functions that are frequently used.
+
+    paths.h includes a wide variety of paths determined at configure time,
+    both default paths to various parts of INN and paths to programs.  Don't
+    just use the default paths, though, if they're also configurable in
+    inn.conf; instead, call ReadInnConf() and use the global innconf
+    structure.
+
+    Other files in include are interfaces to particular bits of INN library
+    functionality or are used for other purposes; see the comments in each
+    file.
+
+    Eventually, the header files will be separated into installed header
+    files and uninstalled header files; the latter are those headers that
+    are used only for compiling INN and aren't useful for users of INN's
+    libraries (such as clibrary.h).  All of the installed headers will live
+    in include/inn and be installed in a subdirectory named inn in the
+    configured include directory.  This conversion is still in progress.
+
+    When writing header files, remember that C reserves all identifiers
+    beginning with two underscores and all identifiers beginning with an
+    underscore and a capital letter for the use of the implementation; don't
+    use any identifiers with names like that.  Additionally, any identifier
+    beginning with an underscore and a lower-case letter is reserved in file
+    scope, which means that such identifiers can only be used by INN for the
+    name of structure members or function arguments in function prototypes.
+
+    Try to pay attention to the impact of a header file on the program
+    namespace, particularly for installed header files in include/inn.  All
+    symbols defined by a header file should ideally begin with INN_, inn_,
+    or some other unique prefix indicating the subsystem that symbol is part
+    of, to avoid accidental conflicts with symbols defined by the program
+    that uses that header file.
+
+Coding Style
+
+    INN has quite a variety of coding styles intermixed.  As with all
+    programs, it's preferrable when making minor modifications to keep the
+    coding style of the code you're modifying.  In INN, that will vary by
+    file.  (Over time we're trying to standardize on one coding style, so
+    changing the region you worked on to fit the general coding style is
+    also acceptable).
+
+    If you're writing a substantial new piece of code, the prevailing
+    "standard" INN coding style appears to be something like the following:
+
+    *  Write in regular ANSI C whenever possible.  Use the normal ANSI and
+       POSIX constructs and use autoconf or portability wrappers to fix
+       things up beforehand so that the code itself can read like regular
+       ANSI or POSIX code.  Code should be written so that it works as
+       expected on a modern platform and is fixed up with portability tricks
+       for older platforms, not the other way around.  You may assume an
+       ANSI C compiler.
+
+       Try to use const wherever appropriate.  Don't use register; modern
+       compilers will do as good of a job as you will in choosing what to
+       put into a register.  Don't bother with restrict (at least yet).
+
+    *  Use string handling functions that take counts for the size of the
+       buffer whenever possible.  This means using snprintf in preference to
+       sprintf and using strlcpy and strlcat in preference to strcpy and
+       strcat.  Also, use strlcpy and strlcat instead of strncpy and strncat
+       unless the behavior of the latter is specifically required, as it is
+       much easier to audit uses of the former than the latter.  (strlcpy is
+       like strncpy except that it always nul-terminates and doesn't fill
+       the rest of the buffer with nuls, making it more efficient.  strlcat
+       is like strncat except that it always nul-terminates and it takes the
+       total size of the buffer as its third argument rather than just the
+       amount of space left.)  All of these functions are guaranteed to be
+       available; there are replacements in lib for systems that don't have
+       them.
+
+    *  Avoid #ifdef and friends whenever possible.  Particularly avoid using
+       them in the middle of code blocks.  Try to hide all portability
+       preprocessor magic in header files or in portability code in lib. 
+       When something just has to be done two completely different ways
+       depending on the platform or compile options or the like, try to
+       abstract that functionality out into a generic function and provide
+       two separate implementations using #ifdef; then the main code can
+       just call that function.
+
+       If you do have to use preprocessor defines, note that if you always
+       define them to either 0 or 1 (never use #define without a second
+       argument), you can use the preprocessor define in a regular if
+       statement rather than using #if or #ifdef.  Make use of this instead
+       of #ifdef when possible, since that way the compiler will still
+       syntax-check the other branch for you and it makes it far easier to
+       convert the code to use a run-time check if necessary. 
+       (Unfortunately, this trick can't be used if one branch may call
+       functions unavailable on a particular platform.)
+
+    *  Avoid uses of fixed-width buffers except in performance-critical
+       code, as it's harder to be sure that such code is correct and it
+       tends to be less flexible later on.  If you need a reusable,
+       resizable memory buffer, one is provided in lib/buffer.c.
+
+    *  Avoid uses of static variables whenever possible, particularly in
+       libraries, because it interferes with making the code re-entrant down
+       the road and makes it harder to follow what's going on.  Similarly,
+       avoid using global variables whenever possible, and if they are
+       required, try to wrap them into structures that could later be
+       changed into arguments to the affected functions.
+
+    *  Roughly BSD style but with four-space indents.  This means no space
+       before the parens around function arguments, open brace on the same
+       line as if/while/for, and close and open brace on the same line as
+       else).
+
+    *  Introductory comments for functions or files are generally written
+       as:
+
+           /*
+           **  Introductory comment.
+           */
+
+       Other multiline comments in the source are generally written as:
+
+           /* This is a
+              multiline comment. */
+
+       Comments before functions saying what they do are nice to have.  In
+       general, the RCS/CVS Id tag is on the first line of each source file
+       since it's useful to know when a file was last modified.
+
+    *  Checks for NULL pointers are preferrably written out explicitly; in
+       other words, use:
+
+           if (p != NULL)
+
+       rather than:
+
+           if (p)
+
+       to make it clearer what the code is assuming.
+
+    *  It's better to always put the body of an if statement on a separate
+       line, even if it's only a single line.  In other words, write:
+
+           if (p != NULL)
+               return p;
+
+       and not:
+
+           if (p != NULL) return p;
+
+       This is in part for a practical reason:  some code coverage analysis
+       tools like purecov will count the second example above as a single
+       line and won't notice if the condition always evaluates the same way.
+
+    *  Plain structs make perfectly reasonable abstract data types; it's not
+       necessary to typedef the struct to something else.  Structs are
+       actually very useful for opaque data structures, since you can
+       predeclare them and then manipulate pointers to them without ever
+       having to know what the contents look like.  Please try to avoid
+       typedefs except for function pointers or other extremely confusing
+       data types, or for data types where we really gain some significant
+       data abstraction from hiding the underlying data type.  Also avoid
+       using the _t suffix for any type; all types ending in _t are reserved
+       by POSIX.  For typedefs of function pointer types, a suffix of _func
+       usually works.
+
+       This style point is currently widely violated inside of INN itself;
+       INN originally made extensive use of typedefs.
+
+    *  When noting something that should be improved later, add a comment
+       containing "FIXME:" so that one can easily grep for such comments.
+
+    INN's indentation style roughly corresponds to that produced by GNU
+    indent 2.2.6 with the following options:
+
+        -bad -bap -nsob -fca -lc78 -cd41 -cp1 -br -ce -cdw -cli0 -ss -npcs
+        -ncs -di1 -nbc -psl -brs -i4 -ci4 -lp -ts8 -nut -ip5 -lps -l78 -bbo
+        -hnl
+
+    Unfortunately, indent currently doesn't get everything right (it has
+    problems with spacing around struct pointer arguments in functions,
+    wants to put in a space between a dereference of a function pointer and
+    the arguments to the called function, misidentifies some macro calls as
+    being type declarations, and fouls up long but simple case statements). 
+    It would be excellent if someday we could just run all of INN's code
+    through indent routinely to enforce a consistant coding style, but
+    indent isn't quite ready for that.
+
+    For users of emacs cc-mode, use the "bsd" style but with:
+
+        (setq c-basic-offset 4)
+
+    Finally, if possible, please don't use tabs in source files, since they
+    can expand differently in different environments.  In particular, please
+    try not to use the mix of tabs and spaces that is the default in emacs. 
+    If you use emacs to edit INN code, you may want to put:
+
+        ; Use only spaces when indenting or centering, no tabs.
+        (setq-default indent-tabs-mode nil)
+
+    in your ~/.emacs file.
+
+    Note that this is only a rough guideline and the maintainers aren't
+    style nazis; we're more interested in your code contribution than in how
+    you write it.
+
+Using CVSup
+
+    If you want to get updated INN source more easily or more quickly than
+    by downloading nightly snapshots, or if you want to see the full CVS
+    history, you may want to use CVSup to download the source.  CVSup is a
+    client and server designed for replicating CVS repositories between
+    sites.
+
+    Unfortunately, CVSup is written in Modula-3, so getting a working binary
+    can be somewhat difficult.  Binaries are available in the *BSD ports
+    collection or (for a wide variety of different platforms) available from
+    <ftp://ftp.freebsd.org/pub/FreeBSD/CVSup/binaries/> and its mirrors. 
+    Alternately, you can get a compiler from <http://m3.polymtl.ca/m3/>
+    (this is more actively maintained than the DEC Modula-3 compiler) and
+    the source from <ftp://ftp.freebsd.org/pub/FreeBSD/CVSup/>.
+
+    After you have the CVSup client, you need to have space to download the
+    INN repository and space for CVSup to store its data files.  You also
+    need to write a configuration file (a supfile) for CVSup.  The following
+    supfile will download the latest versions from the mainline source:
+
+        *default host=inn-cvs.isc.org
+        *default base=<data-location>
+        *default prefix=<download-location>
+        *default release=cvs
+        *default tag=.
+        *default delete use-rel-suffix
+        inn
+
+    where <data-location> should be a directory where CVSup can put its data
+    files and <download-location> is where the downloaded source will go (it
+    will be put into a subdirectory named inn).  If you want to pull down
+    the entire CVS repository instead (warning: this is much larger than
+    just the latest versions of the source), delete the "*default tag=."
+    line.  The best way to download the CVS repository is to download it
+    into a portion of a locally-created CVS repository, so that then you can
+    perform standard CVS operations (like cvs log) against the downloaded
+    repository.  Creating your own local CVS repository is outside the scope
+    of this document.
+
+    Note that only multiplexed mode is supported (this mode should be the
+    default).
+
+    For more general information on using CVSup, see the FreeBSD page on it
+    at <http://www.freebsd.org/handbook/mirrors-cvsup.html>.
+
+Making a Release
+
+    This is a checklist that INN maintainers should go through when
+    preparing a new release of INN.
+
+    1.  If making a major release, branch the source tree and create a new
+        STABLE branch tag.  This branch will be used for minor releases
+        based on that major release and can be done a little while before
+        the .0 release of that major release.  At the same time as the
+        branch is cut, tag the trunk with a STABLE-<version>-branch marker
+        tag so that it's easy to refer to the trunk at the time of the
+        branch.
+
+    2.  Update doc/pod/news.pod and regenerate NEWS.  Be more detailed for a
+        minor release than for a major release.  For a major release, also
+        add information on how to upgrade from the last major release,
+        including anything special to be aware of.  (Minor releases
+        shouldn't require any special care when upgrading.)
+
+    3.  Make sure that support/config.sub and support/config.guess are the
+        latest versions (from <ftp://ftp.gnu.org/gnu/config/>).  See the
+        instructions in "Configuring and Portability" for details on how to
+        update these files.
+
+    4.  Make sure that samples/control.ctl is in sync with the master
+        version at <ftp://ftp.isc.org/pub/usenet/CONFIG/control.ctl>.
+
+    5.  Check out a copy of the release branch.  It's currently necessary to
+        run configure to generate Makefile.global.  Then run "make
+        check-manifest".  The only differences should be files that are
+        generated by configure; if there are any other differences, fix the
+        MANIFEST.
+
+    6.  Run "make release".  Note that you need to have a copy of svn2cl
+        from <http://ch.tudelft.nl/~arthur/svn2cl/> to do this; at least
+        version 0.7 is required.  Start the ChangeLog at the time of the
+        previous release.  (Eventually, the script will be smart enough to
+        do this for you.)
+
+    7.  Make the resulting tar file available for testing in a non-listable
+        directory on ftp.isc.org and announce its availability on
+        inn-workers.  Install it on at least one system and make sure that
+        system runs fine for at least a few days.  This is also a good time
+        to send out a draft of the release announcement to inn-workers for
+        proof-reading.
+
+    8.  Generate a diff between this release and the previous release if
+        feasible (always for minor releases, possibly not a good idea due to
+        the length of the diff for major releases).
+
+    9.  Move the release into the public area of the ftp site and update the
+        inn.tar.gz link.  Make an MD5 checksum of the release tarball and
+        put it on the ftp site as well, and update the inn.tar.gz.md5 link. 
+        Put the diff up on the ftp site as well.  Contact the ISC folks to
+        get the release PGP-signed.  Possibly move older releases off into
+        the OLD directory.
+
+    10. Announce the new release on inn-announce and in news.software.nntp.
+
+    11. Tag the checked-out tree that was used for generating the release
+        with a release tag (INN-<version>).
+
+    12. Bump the revision number in Makefile.global.in.
+
+References
+
+    Some additional references that may be hard to find and may be of use to
+    people working on INN:
+
+    <http://www.eyrie.org/~eagle/nntp/>
+        The home page for the IETF NNTP standardization effort, including
+        links to the IETF NNTP working group archives and copies of the
+        latest drafts of the new NNTP standard.  The old archived mailing
+        list traffic contains a lot of interesting discussion of why NNTP is
+        the way it is.
+
+    <http://www.imc.org/ietf-usefor/>
+        The archives for the USEFOR IETF working group, the working group
+        for the RFC 1036 replacement (the format of Usenet articles).  Also
+        contains a lot of references to other relevant work, such as the RFC
+        822 replacement work.
+
+    <http://www.mibsoftware.com/userkt/inn/dev/>
+        Forrest Cavalier provides several tools for following INN
+        development at this page and elsewhere in the Usenet RKT.  Under
+        here is a web-accessible checked-out copy of the current INN source
+        tree and pointers to how to use CVSup.
+
+    <http://www.sas.com/standards/large.file/>
+        The standards for large file support on Unix that are being
+        generally implemented by vendors.  INN sort of partially uses these,
+        but a good full audit of the code to check them should really be
+        done and there are occasional problems.
+
+    <http://v6web.litech.org/ipv6primer/>
+        A primer on IPv6 with pointers to the appropriate places for more
+        technical details as needed, useful when working on IPv6 support in
+        INN.
+
diff --git a/INSTALL b/INSTALL
new file mode 100644 (file)
index 0000000..eceb489
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,1527 @@
+Welcome to INN 2.4!
+
+    Please read this document thoroughly before trying to install INN. 
+    You'll be glad you did.
+
+    If you are upgrading from a major release of INN prior to 2.3, it is
+    recommended that you make copies of your old configuration files and use
+    them as guides for doing a clean installation and configuration of 2.4. 
+    Many config files have changed, some have been added, and some have been
+    removed.  You'll find it much easier to start with a fresh install than
+    to try to update your old installation.  This is particularly true if
+    you're upgrading from a version of INN prior to 2.0.
+
+    If you are upgrading from INN 2.3 or later, you may be able to just
+    update the binaries, scripts, and man pages by running:
+
+        make update
+
+    after building INN and then comparing the new sample configuration files
+    with your current ones to see if anything has changed.  If you take this
+    route, the old binaries, scripts, and man pages will be saved with an
+    extension of ".OLD" so that you can easily back out.  Be sure to
+    configure INN with the same options that you used previously if you take
+    this approach (in particular, INN compiled with --enable-largefiles
+    can't read the data structures written by INN compiled without that
+    flag, and vice versa).  If you don't remember what options you used but
+    you have your old build tree, look at the comments at the beginning of
+    config.status.
+
+    If you made ckpasswd setuid root so that you could use system passwords,
+    you'll have to do that again after make update.  (It's much better to
+    use PAM instead if you can.)
+
+    If you use "make update" to upgrade from INN 2.3, also look at the new
+    sample configuration files in samples to see if there are new options of
+    interest to you.  In particular, control.ctl has been updated and
+    inn.conf has various new options.
+
+    For more information about recent changes, see NEWS.
+
+Supported Systems
+
+    As much as possible, INN is written in portable C and should work on any
+    Unix platform.  It does, however, make extensive use of mmap(2) and
+    certain other constructs that may be poorly or incompletely implemented,
+    particularly on very old operating systems.
+
+    INN has been confirmed to work on the following operating systems:
+
+        AIX 4.3
+        FreeBSD 2.2.x and up
+        HP-UX 10.20 and up
+        Linux 2.x (tested with libc 5.4, glibc 2.0 and up)
+        Mac OS X 10.2 and up
+        NetBSD 1.6 and up
+        OpenBSD 2.8 and up
+        SCO 5.0.4 (tested with gcc 2.8.1, cc)
+        Solaris 2.5.x and up
+        UnixWare 7.1
+        UX/4800 R11 and up
+
+    If you have gotten INN working on an operating system other than the
+    ones listed above, please let us know at <inn-bugs@isc.org>.
+
+Before You Begin
+
+    INN requires several other packages be installed in order to be fully
+    functional (or in some cases, to work at all):
+
+    * In order to build INN, you will need a C compiler that understands
+      ANSI C.  If you are trying to install INN on an operating system that
+      doesn't have an ANSI C compiler (such as SunOS), installing gcc is
+      recommended.  You can get it from <ftp://ftp.gnu.org/gnu/gcc/> or its
+      mirrors.  INN is tested with gcc more thoroughly than with any other
+      compiler, so even if you have another compiler available, you may wish
+      to use gcc instead.
+
+    * Currently, in order to build INN, you will need an implementation of
+      yacc.  GNU bison (from <ftp://ftp.gnu.org/gnu/bison/> or its mirrors)
+      will work fine.  We hope to remove this requirement in the future.
+
+    * INN requires at least Perl 5.004_03 to build and to run several
+      subsystems.  INN is tested primarily with newer versions of Perl, so
+      it's generally recommended that you install the latest stable
+      distribution of Perl before compiling INN.  For instructions on
+      obtaining and installing Perl, see
+      <http://www.perl.com/pub/language/info/software.html>.  Note that you
+      may need to use the same compiler and options (particularly largefile
+      support) for Perl and INN.
+
+      If you're using a version of Perl prior to 5.6.0, you may need to make
+      sure that the Perl versions of your system header files have been
+      generated in order for Sys::Syslog to work properly (used by various
+      utility programs, including controlchan).  To do this, run the
+      following two commands:
+
+          # cd /usr/include
+          # h2ph * sys/*
+
+      An even better approach is to install Perl 5.6.1 or later, which have
+      a fixed version of Sys::Syslog that doesn't require this (as well as
+      many other improvements over earlier versions of Perl).
+
+    * The INN Makefiles use the syntax "include FILE", rather than the
+      syntax expected by some BSDish systems of ".include <FILE>".  If your
+      system expects the latter syntax, the recommended solution is to
+      install GNU make from <ftp://ftp.gnu.org/make/>.  You may have GNU
+      make already installed as gmake, in which case using gmake rather than
+      make to build INN should be sufficient.
+
+    * If you want to enable support for authenticated control messages (this
+      is not required, but is highly recommended for systems carrying public
+      Usenet hierarchies) then you will need to install some version of PGP.
+      The recommended version is GnuPG, since it's actively developed,
+      supports OpenPGP, is freely available and free to use for any purpose
+      (in the US and elsewhere), and (as of version 1.0.4 at least) supports
+      the RSA signatures used by most current control message senders.
+
+      Alternately, you can install PGP from <http://www.pgp.com/> or one of
+      the international versions of it.  Be warned, however, that the
+      licensing restrictions on PGP inside the United States are extremely
+      unclear; it's possible that if you are installing INN for a company in
+      the U.S., even if the news server is not part of the business of that
+      company, you would need to purchase a commercial license for PGP.  For
+      an educational or non-profit organization, this shouldn't be a
+      problem.
+
+    * If you want to use either the Python embedded hooks, you'll need to
+      have a suitable versions of Python installed.  See doc/hook-python for
+      more information.
+
+    * Many of INN's optional features require other packages (primarily
+      libraries) be installed.  If you wish to use any of these optional
+      features, you will need to install those packages first.  Here is a
+      table of configure options enabling optional features and the software
+      and versions you'll need:
+
+          --with-perl         Perl 5.004_03 or higher, 5.6.1+ recommended
+          --with-python       Python 1.5.2 or higher
+          --with-berkeleydb   BerkeleyDB 2.0 or higher, 4.2+ recommended
+          --with-openssl      OpenSSL 0.9.6 or higher
+          --with-sasl         SASL 2.x or higher
+          --with-kerberos     MIT Kerberos v5 1.2.x or higher
+
+      If any of these libraries (other than Perl or Python) are built shared
+      and installed in locations where your system doesn't search for shared
+      libraries by default, you may need to encode the paths to those shared
+      libraries in the INN binaries.  For more information on shared library
+      paths, see:
+
+          <http://www.eyrie.org/~eagle/notes/rpath.html>
+
+      For most systems, setting the environment variable LD_RUN_PATH to a
+      colon-separated list of additional directories in which to look for
+      shared libraries before building INN will be sufficient.
+
+Unpacking the Distribution
+
+    Released versions of INN are available from ftp.isc.org in /isc/inn. 
+    New major releases will be announed on <inn-announce@isc.org> (see
+    README) when they're made.
+
+    If you want more a more cutting-edge version, you can obtain current
+    snapshots from from ftp.isc.org in directory /isc/inn/snapshots.  These
+    are snapshots of the INN CVS tree taken daily; there are two snapshots
+    made each night (one of the current development branch, and one of the
+    stable branch consisting of bug fixes to the previous major release). 
+    They are stored in date format; in other words the snapshots from April
+    6th, 2000, would be named inn-CURRENT-20000406.tar.gz and
+    inn-STABLE-20000406.tar.gz.  Choose the newest file of whichever branch
+    you prefer.  (Note that the downloading, configuring, and compiling
+    steps can be done while logged in as any user.)
+
+    The distribution is in gzip compressed tar archive format.  To extract
+    it, execute:
+
+        gunzip -c <inn-src-file> | tar -xf -
+
+    Extracting the source distribution will create a directory named
+    inn-<version> or inn-<BRANCH>-<date> where the source resides.
+
+Installing INN
+
+    Before beginning installation, you should make sure that there is a user
+    on your system named "news", and that this user's primary group is set
+    to a group called "news".  You can change these with the
+    --with-news-user and --with-news-group options to configure (see below).
+    The home directory of this user should be set to the directory under
+    which you wish to install INN (/usr/local/news is the default and is a
+    good choice).  INN will install itself as this user and group.  You can
+    change these if you want, but these are the defaults and it's easier to
+    stick with them on a new installation.
+
+    By default, INN sends reports to the user "usenet".  This account isn't
+    used for any other purposes.  You can change it with the
+    --with-news-master option to configure (see below).
+
+    WARNING: By default, INN installs various configuration files as
+    group-writeable, and in general INN is not hardened from a security
+    standpoint against an attack by someone who is already in the news
+    group.  In general, you should consider membership in the news group as
+    equivalent to access to the news account.  You should not rely on being
+    able to keep anyone with access to the news GID from converting that
+    into access to the news UID.  The recommended configuration is to have
+    the only member of the group "news" be the user "news".
+
+    Installing INN so that all of its files are under a single directory
+    tree, rather than scattering binaries, libraries, and man pages
+    throughout the file system, is strongly recommended.  It helps keep
+    everything involved in the operation of INN together as a unit and will
+    make the installation instructions easier to follow.
+
+    As a side note, whenever doing anything with a running news server,
+    first log in as this user.  That way, you can ensure that all files
+    created by any commands you run are created with the right ownership to
+    be readable by the server.  Particularly avoid doing anything in the
+    news spool itself as root, and make sure you fix the ownership of any
+    created files if you have to.  INN doesn't like files in the news spool
+    owned by a user other than the news user.  However, since certain
+    binaries need to be setuid root, indiscriminate use of "chown news" is
+    not the solution.  (If you don't like to log in to system accounts,
+    careful use of "chmod g+s" on directories and a umask of 002 or 007 may
+    suffice.)
+
+    INN uses GNU autoconf and a generated configure script to make
+    configuration rather painless.  Unless you have a rather abnormal setup,
+    configure should be able to completely configure INN for your system. 
+    If you want to change the defaults, you can invoke the configure script
+    with one or more command line options.  Type:
+
+        ./configure --help
+
+    for a full list of supported options.  Some of the most commonly used
+    options are:
+
+    --prefix=PATH
+        Sets the installation prefix for INN.  The default is
+        /usr/local/news.  All of INN's programs and support files will be
+        installed under this directory.  This should match the home
+        directory of your news user (it will make installation and
+        maintenance easier).  It is not recommended to set this to /usr; if
+        you decide to do that anyway, make sure to point INN's temporary
+        directory at a directory that isn't world-writeable (see
+        --with-tmp-dir below).
+
+    --with-db-dir=PATH
+        Sets the prefix for INN database files.  The default is PREFIX/db,
+        where PREFIX is /usr/local/news unless overridden with the option
+        above.  The history and active files will be stored in this
+        directory, and writes to those files are an appreciable percentage
+        of INN's disk activity.  The history file can also be quite large
+        (requiring up to 2 GB or more during nightly expire), so this is a
+        common portion of INN to move to a different file system.
+
+    --with-spool-dir=PATH
+        Sets the prefix for the news spool (when using any storage method
+        other than CNFS) and the overview spool.  The default is
+        PREFIX/spool.  This is another common portion of INN to move to a
+        different file system (often /news).
+
+    --with-tmp-dir=PATH
+        Sets the directory in which INN will create temporary files.  This
+        should under no circumstances be the same as the system temporary
+        directory or otherwise be set to a world-writeable directory, since
+        INN doesn't take care to avoid symlink attacks and other security
+        problems possible with a world-writeable directory.  This directory
+        should be reserved for the exclusive use of INN and only writeable
+        by the news user.  Usage is generally light, so this is unlikely to
+        need a separate partition.
+
+        It's also possible to set the paths for most other sections of the
+        INN installation independently; see "./configure --help" and look
+        for the --with-*-dir=PATH options.
+
+    --enable-largefiles
+        Enables large file support.  This is not enabled by default, even on
+        platforms that support it, because it changes the format of INN's
+        on-disk databases (making it difficult to upgrade an earlier INN
+        installation) and can significantly increase the size of some of the
+        history database files.  Large file support is not necessary unless
+        your history database is so large that it exceeds 2 GB or you want
+        to use CNFS buffers larger than 2 GB.
+
+        The history, tradindexed and buffindexed overview, CNFS, and timecaf
+        databases written by an INN built with this option are incompatible
+        with those written by an INN without this option.
+
+    --enable-tagged-hash
+        Use tagged hash table for the history database.  The tagged hash
+        format uses much less memory but is somewhat slower.  This option is
+        recommended if you have less than 256 MB of RAM on your news server.
+        If you install INN without tagged hash (the default) and expire
+        takes an excessive amount of time, you should make sure the RAM in
+        your system satisfies the following formula:
+
+            ram > 10 * tablesize
+
+                  ram:  Amount of system RAM (in bytes)
+            tablesize:  3rd field on the 1st line of history.dir (bytes)
+
+        If you don't have at least that much RAM, try rebuilding INN with
+        tagged hash enabled.
+
+        NOTE: --enable-largefiles cannot be used with --enable-tagged-hash.
+
+    --with-perl
+        Enables support for embedded Perl, allowing you to install filter
+        scripts written in Perl.  Highly recommended, because many really
+        good spam filters are written in Perl.  See doc/hook-perl for all
+        the details.
+
+        Even if you do not use this option, INN still requires Perl as
+        mentioned above.
+
+    --with-python
+        Enables support for Python, allowing you to install filter and
+        authentication scripts written in Python.  You will need Python
+        1.5.2 or later installed on your system to enable this option.  See
+        doc/hook-python for all the details.  Note that there is an
+        incompatibility between INN and Python 2.0 when Python is compiled
+        with cycle garbage collection; this problem was reported fixed in
+        Python 2.1a1.
+
+    --with-innd-port=PORT
+        By default, inndstart(8) refuses to bind to any port under 1024
+        other than 119 and 433 for security reasons (to prevent attacks on
+        rsh(1)-based commands and replacing standard system daemons).  If
+        you want to run innd on a different port under 1024, you'll need to
+        tell configure what port you intend to use.  (You'll also still need
+        to set the port number in inn.conf or give it to inndstart on the
+        command line.)
+
+    --with-syslog-facility=FACILITY
+        Specifies the syslog facility that INN programs should log to.  The
+        default is LOG_NEWS unless configure detects that your system
+        doesn't understand that facility, in which case it uses LOG_LOCAL1. 
+        This flag overrides the automatic detection.  Be sure to specify a
+        facility not used by anything else on your system (one of LOG_LOCAL0
+        through LOG_LOCAL7, for example).
+
+    --enable-libtool
+        INN has optional support for libtool to generate shared versions of
+        INN's libraries.  This can significantly decrease the size of the
+        various binaries that come with a complete INN installation.  You
+        can also choose to use libtool even when only building static
+        libraries; a libtool build may be somewhat more portable on weird
+        systems.  libtool builds aren't the default because they take
+        somewhat longer.  See "./configure --help" for the various available
+        options related to libtool builds.
+
+        Please note that INN's shared library interface is not stable and
+        may change drastically in future releases.  For this reason, it's
+        also not properly versioned and won't be until some degree of
+        stability is guaranteed, and the relevant header files are not
+        installed.  Only INN should use INN's shared libraries, and you
+        should only use the shared libraries corresponding to the version of
+        INN that you're installing.
+
+        Also, when updating an existing version of INN, INN tries to save
+        backup copies of all files so that you can revert to the previous
+        installed version.  Unfortunately, when using shared libraries, this
+        confuses ldconfig on some systems (such as Linux) and the symbolic
+        links for the libraries may point to the .OLD versions.  If this
+        happens, you can either fix the links by hand or remove the .OLD
+        versions and re-run ldconfig.
+
+    --enable-uucp-rnews
+        If this option is given to configure, rnews will be installed setuid
+        news, owned by group uucp, and mode 4550.  This will allow the UUCP
+        subsystem to run rnews to process UUCP batches of news articles. 
+        Prior to INN 2.3, installing rnews setuid news was standard; since
+        most sites no longer use UUCP, it is no longer the default as of INN
+        2.3 and must be requested at configure time.  You probably don't
+        want to use this option unless your server accepts UUCP news
+        batches.
+
+    --enable-setgid-inews
+        If this option is given to configure, inews will be installed setgid
+        news and world-executable so that non-privileged users on the news
+        server machine can use inews to post articles locally (somewhat
+        faster than opening a new network connection).  For standalone news
+        servers, by far the most common configuration now, there's no need
+        to use this option; even if you have regular login accounts on your
+        news server, INN's inews can post fine via a network connection to
+        your running news server and doesn't need to use the local socket
+        (which is what setgid enables it to do).  Installing inews setgid
+        was the default prior to INN 2.3.
+
+    --with-berkeleydb=PATH
+        Enables support for Berkeley DB (2.x or 3.x), which means that it
+        will then be possible to use the ovdb overview method if you wish. 
+        Enabling this configure option doesn't mean you'll be required to
+        use ovdb, but it does require that Berkeley DB be installed on your
+        system (including the header files, not just the runtime libraries).
+        If a path is given, it sets the installed directory of Berkeley DB
+        (configure will search for it in some standard locations, but if you
+        have it installed elsewhere, you may need this option).
+
+    --with-openssl=PATH
+        Enables support for SSL for news reading, which means it will be
+        possible to have SSL or TLS encrypted NNTP connections between your
+        server and newsreaders.  This option requires OpenSSL be installed
+        on your system (including the header files, not just the runtime
+        libraries).  If a path is given, it sets the installed directory of
+        OpenSSL.  After compiling and installing INN with this option,
+        you'll still need to make a certificate and private key to use SSL. 
+        See below for details on how to do that.
+
+    --enable-ipv6
+        Enables support for IPv6 in innd, innfeed, nnrpd, and several of the
+        supporting programs.  This option should be considered developmental
+        at present.  For more information see doc/IPv6-info (and if you have
+        any particularly good or bad news to report, please let us know at
+        <inn-bugs@isc.org>).
+
+    For the most common installation, a standalone news server, a suggested
+    set of options is:
+
+        ./configure --with-perl
+
+    provided that you have the necessary version of Perl installed. 
+    (Compiling with an embedded Perl interpretor will allow you to use one
+    of the available excellent spam filters if you so choose.)
+
+    If the configure program runs successfully, then you are ready to build
+    the distribution.  From the root of the INN source tree, type:
+
+        make
+
+    At this point you can step away from the computer for a little while and
+    have a quick snack while INN compiles.  On a decently fast system it
+    should only take five or ten minutes at the most to build.
+
+    Once the build has completed successfully, you are ready to install INN
+    into its final home.  Type:
+
+        make install
+
+    You will need to run this command as root so that INN can create the
+    directories it needs, change ownerships (if you did not compile as the
+    news user) and install a couple of setuid wrapper programs needed to
+    raise resource limits and allow innd to bind to ports under 1024.  This
+    step will install INN under the install directory (/usr/local/news,
+    unless you specified something else to the configure script).
+
+    If you are configuring SSL support for newsreaders, you must make a
+    certificate and private key at least once.  Type:
+
+        make cert
+
+    as root in order to do this.
+
+    You are now ready for the really fun part:  configuring your copy of
+    INN!
+
+Choosing an Article Storage Format
+
+    The first thing to decide is how INN should store articles on your
+    system.  There are four different methods for you to choose from, each
+    of which has its own advantages and disadvantages.  INN can support all
+    four at the same time, so you can store certain newsgroups in one method
+    and other newsgroups in another method.
+
+    The supported storage formats are:
+
+    tradspool
+        This is the storage method used by all versions of INN previous to
+        2.0.  Articles are stored as individual text files whose names are
+        the same as the article number.  The articles are divided up into
+        directories based on the newsgroup name.  For example, article 12345
+        in news.software.nntp would be stored as news/software/nntp/12345
+        relative to the root of the article spool.
+
+        Advantages:  Widely used and well-understood storage mechanism, can
+        read article spools written by older versions of INN, compatible
+        with all third-party INN add-ons, provides easy and direct access to
+        the articles stored on your server and makes writing programs that
+        fiddle with the news spool very easy, and gives you fine control
+        over article retention times.
+
+        Disadvantages:  Takes a very fast file system and I/O system to keep
+        up with current Usenet traffic volumes due to file system overhead. 
+        Groups with heavy traffic tend to create a bottleneck because of
+        inefficiencies in storing large numbers of article files in a single
+        directory.  Requires a nightly expire program to delete old articles
+        out of the news spool, a process that can slow down the server for
+        several hours or more.
+
+    timehash
+        Articles are stored as individual files as in tradspool, but are
+        divided into directories based on the arrival time to ensure that no
+        single directory contains so many files as to cause a bottleneck.
+
+        Advantages:  Heavy traffic groups do not cause bottlenecks, and fine
+        control of article retention time is still possible.
+
+        Disadvantages:  The ability to easily find all articles in a given
+        newsgroup and manually fiddle with the article spool is lost, and
+        INN still suffers from speed degredation due to file system overhead
+        (creating and deleting individual files is a slow operation).
+
+    timecaf
+        Similar to timehash, articles are stored by arrival time, but
+        instead of writing a separate file for each article, multiple
+        articles are put in the same file.
+
+        Advantages:  Roughly four times faster than timehash for article
+        writes, since much of the file system overhead is bypassed, while
+        still retaining the same fine control over article retention time.
+
+        Disadvantages:  Even worse than timehash, and similar to cnfs
+        (below), using this method means giving up all but the most careful
+        manually fiddling with your article spool.  As one of the newer and
+        least widely used storage types, timecaf has not been as thoroughly
+        tested as the other methods.
+
+    cnfs
+        CNFS stores articles sequentially in pre-configured buffer files. 
+        When the end of the buffer is reached, new articles are stored from
+        the beginning of the buffer, overwriting older articles.
+
+        Advantages:  Blazingly fast because no file creations or deletions
+        are necessary to store an article.  Unlike all other storage
+        methods, does not require manual article expiration; old articles
+        are deleted to make room for new ones when the buffers get too full.
+        Also, with CNFS your server will never throttle itself due to a full
+        spool disk, and groups are restricted to just the buffer files you
+        give them so that they can never use more than the amount of disk
+        space you allocate to them.
+
+        Disadvantages:  Article retention times are more difficult to
+        control because old articles are overwritten automatically.  Attacks
+        on Usenet, such as flooding or massive amounts of spam, can result
+        in wanted articles expiring much faster than you intended (with no
+        warning).
+
+    Some general recommendations:  If you are installing a transit news
+    server (one that just accepts news and sends it out again to other
+    servers and doesn't support any readers), use CNFS exclusively and don't
+    worry about any of the other storage methods.  Otherwise, put
+    high-volume groups and groups whose articles you don't need to keep
+    around very long (binaries groups, *.jobs*, news.lists.filters, etc.) in
+    CNFS buffers, and use timehash, timecaf, or tradspool (if you have a
+    fast I/O subsystem or need to be able to go through the spool manually)
+    for everything else.  You'll probably find it most convenient to keep
+    special hierarchies like local hierarchies and hierarchies that should
+    never expire in tradspool.
+
+    If your news server will be supporting readers, you'll also need to
+    choose an overview storage mechanism (by setting *ovmethod* in
+    inn.conf).  There are three overview mechanisms to choose from: 
+    tradindexed, buffindexed, and ovdb.  tradindexed is very fast for
+    readers, but it has to update two files for each incoming article and
+    can be quite slow to write.  buffindexed can keep up with a large feed
+    more easily, since it uses large buffers to store all overview
+    information, but it's somewhat slower for readers (although not as slow
+    as the unified overview in INN 2.2).  ovdb stores overview data in a
+    Berkeley DB database; it's fast and very robust, but requires more disk
+    space.  See the ovdb(5) man page for more information on it.
+
+    Note that ovdb has not been as widely tested as the other overview
+    mechanisms and should be considered experimental.  tradindexed is the
+    best tested and most widely used of the overview implementations.
+
+    If buffindexed is chosen, you will need to create the buffers for it to
+    use (very similar to creating CNFS buffers) and list the available
+    buffers in buffindexed.conf.  See buffindexed.conf(5) for more
+    information.
+
+Configuring INN
+
+    All documentation from this point on assumes that you have set up the
+    news user on your system as suggested in "Installing INN" so that the
+    root of your INN installation is ~news/.  If you've moved things around
+    by using options with "configure", you'll need to adjust the
+    instructions to account for that.
+
+    All of INN's configuration files are located in ~news/etc.  Unless noted
+    otherwise, any files referred to below are in this directory.  When you
+    first install INN, a sample of each file (containing lots of comments)
+    is installed in ~news/etc; refer to these for concrete examples of
+    everything discussed in this section.
+
+    All of INN's configuration files, all of the programs that come with it,
+    and some of its library routines have documentation in the form of man
+    pages.  These man pages were installed in ~news/man as part of the INN
+    installation process and are the most complete reference to how INN
+    works.  You're strongly encouraged to refer to the man pages frequently
+    while configuring INN, and for quick reference afterwards.  Any detailed
+    questions about individual configuration files or the behavior of
+    specific programs should be answered in them.  You may want to add
+    ~news/man to your MANPATH environment variable; otherwise, you may have
+    to use a command like:
+
+        man -M ~news/man inn.conf
+
+    to see the inn.conf(5) man page (for example).
+
+    Before we begin, it is worth mentioning the wildmat pattern matching
+    syntax used in many configuration files.  These are simple wildcard
+    matches using the asterisk ("*") as the wildcard character, much like
+    the simple wildcard expansion used by Unix shells.
+
+    In many cases, wildmat patterns can be specified in a comma-separated
+    list to indicate a list of newsgroups.  When used in this fashion, each
+    pattern is checked in turn to see if it matches, and the last pattern in
+    the line that matches the group name is used.  Patterns beginning with
+    "!" mean to exclude groups matching that pattern.  For example:
+
+        *, !comp.*, comp.os.*
+
+    In this case, we're saying we match everything ("*"), except that we
+    don't match anything under comp ("!comp.*"), unless it is actually under
+    the comp.os hierarchy ("comp.os.*").  This is because non-comp groups
+    will match only the first pattern (so we want them), comp.os groups will
+    match all three patterns (so we want them too, because the third pattern
+    counts in this case), and all other comp groups will match the first and
+    second patterns and will be excluded by the second pattern.
+
+    Some uses of wildmat patterns also support "poison" patterns (patterns
+    starting with "@").  These patterns behave just like "!" patterns when
+    checked against a single newsgroup name.  Where they become special is
+    for articles crossposted to multiple newsgroups; normally, such an
+    article will be considered to match a pattern if any of the newsgroups
+    it is posted to matches the pattern.  If any newsgroup the article is
+    posted to matches an expression beginning with "@", however, that
+    article will not match the pattern even if other newsgroups to which it
+    was posted match other expressions.
+
+    See uwildmat(3) for full details on wildmat patterns.
+
+    In all INN configuration files, blank lines and lines beginning with a
+    "#" symbol are considered comments and are ignored.  Be careful, not all
+    files permit comments to begin in the middle of the line.
+
+  inn.conf
+
+    The first, and most important file is inn.conf.  This file is organized
+    as a series of parameter-value pairs, one per line.  The parameter is
+    first, followed by a colon and one or more whitespace characters, and
+    then the value itself.  For some parameters the value is a string or a
+    number; for others it is true or false.  (True values can be written as
+    "yes", "true", or "on", whichever you prefer.  Similarly, false values
+    can be written as "no", "false", or "off".)
+
+    inn.conf contains dozens of changeable parameters (see inn.conf(5) for
+    full details), but only a few really need to be edited during normal
+    operation:
+
+    allownewnews
+        If set to true then INN will support the NEWNEWS command for news
+        readers.  While this can be an expensive operation, its speed has
+        been improved considerably as of INN 2.3 and it's probably safe to
+        turn on without risking excessive server load.  The default is true.
+        (Note that the *access:* setting in readers.conf overrides this
+        value; see readers.conf(5) for more details.)
+
+    complaints
+        Used to set the value of the X-Complaints-To: header, which is added
+        to all articles posted locally.  The usual value would be something
+        like "abuse@example.com" or "postmaster@example.com".  If not
+        specified, the newsmaster email address will be used.
+
+    hiscachesize
+        The amount of memory (in kilobytes) to allocate for a cache of
+        recently used history file entries.  Setting this to 0 disables
+        history caching.  History caching can greatly increase the number of
+        articles per second that your server is capable of processing.  A
+        value of 256 is a good default choice.
+
+    logipaddr
+        If set to true (the default), INN will log the IP address (or
+        hostname, if the host is listed in incoming.conf with a hostname) of
+        the remote host from which it received an article.  If set to false,
+        the trailing Path: header entry is logged instead.  If you are using
+        controlchan (see below) and need to process ihave/sendme control
+        messages (this is very, very unlikely, so if you don't know what
+        this means, don't worry about it), make sure you set this to false,
+        since controlchan needs a site name, not an IP address.
+
+    organization
+        Set this to the name of your organization as you want it to appear
+        in the Organization: header of all articles posted locally and not
+        already containing that header.  This will be overridden by the
+        value of the ORGANIZATION environment variable (if it exists).  If
+        neither this parameter nor the environment variable or set, no
+        Organization: header will be added to posts which lack one.
+
+    pathhost
+        This is the name of your news server as you wish it to appear in the
+        Path: header of all postings which travel through your server (this
+        includes local posts and incoming posts that you forward out to
+        other sites).  If this parameter is unspecified, the fully-qualified
+        domain name (FQDN) of the machine will be used instead.  Please use
+        the FQDN of your server or an alias for your server unless you have
+        a very good reason not to; a future version of the news RFCs may
+        require this.
+
+    rlimitnofile
+        If set to a non-negative value (the default is -1), INN (both innd
+        and innfeed) will try to raise the maximum number of open file
+        descriptors to this value when it starts.  This may be needed if you
+        have lots of incoming and outgoing feeds.  Note that the maximum
+        value for this setting is very operating-system-dependent, and you
+        may have to reconfigure your system (possibly even recompile your
+        kernel) to increase it.  See "File Descriptor Limits" for complete
+        details.
+
+    There are tons of other possible settings; you may want to read through
+    inn.conf(5) to get a feel for your options.  Don't worry if you don't
+    understand the purpose of most of them right now.  Some of the settings
+    are only needed for very obscure things, and with more experience
+    running your news server the rest will make more sense.
+
+  newsfeeds
+
+    newsfeeds determines how incoming articles are redistributed to your
+    peers and to other INN processes.  newsfeeds is very versatile and
+    contains dozens of options; we will touch on just the basics here.  The
+    manpage contains more detailed information.
+
+    newsfeeds is organized as a series of feed entries.  Each feed entry is
+    composed of four fields separated by colons.  Entries may span multiple
+    lines by using a backslash ("\") to indicate that the next line is a
+    continuation of the current line.  (Note that comments don't interact
+    with backslashes in the way you might expect.  A commented-out line
+    ending in a backslash will still be considered continued on the next
+    line, possibly resulting in more commented out than you intended or
+    bizarre syntax errors.  In general, it's best to avoid commenting out
+    lines in the middle of continuation lines.)
+
+    The first field in an entry is the name of the feed.  It must be unique,
+    and for feeds to other news servers it is usually set to the actual
+    hostname of the remote server (this makes things easier).  The name can
+    optionally be followed by a slash and a comma-separated exclude list. 
+    If the feed name or any of the names in the exclude list appear in the
+    Path line of an article, then that article will not be forwarded to the
+    feed as it is assumed that it has passed through that site once already.
+    The exclude list is useful when a news server's hostname is not the same
+    as what it puts in the Path header of its articles, or when you don't
+    want a feed to receive articles from a certain source.
+
+    The second field specifies a set of desired newsgroups and distribution
+    lists, given as newsgroup-pattern/distribution-list.  The distribution
+    list is not described here; see newsfeeds(5) for information (it's not
+    used that frequently in practice).  The newsgroup pattern is a
+    wildmat-style pattern list as described above (supporting "@").
+
+    The third field is a comma-separated list of flags that determine both
+    the type of feed entry and sets certain parameters for the entry.  See
+    newsfeeds(5) for information on the flag settings; you can do a
+    surprising amount with them.  The three most common patterns, and the
+    ones mainly used for outgoing news feeds to other sites, are "Tf,Wnm"
+    (to write out a batch file of articles to be sent, suitable for
+    processing by nntpsend and innxmit), "Tm" (to send the article to a
+    funnel feed, used with innfeed), and "Tc,Wnm*" (to collect a funnel feed
+    and send it via a channel feed to an external program, used to send
+    articles to innfeed).
+
+    The fourth field is a multi-purpose parameter whose meaning depends on
+    the settings of the flags in the third field.  To get a feel for it
+    using the examples above, for file feeds ("Tf") it's the name of the
+    file to write, for funnel feeds ("Tm") it's the name of the feed entry
+    to funnel into, and for channel feeds ("Tc") it's the name of the
+    program to run and feed references to articles.
+
+    Now that you have a rough idea of the file layout, we'll begin to add
+    the actual feed entries.  First, we'll set up the special ME entry. 
+    This entry is required and serves two purposes:  the newsgroup pattern
+    specified here is prepended to the newsgroup list of all other feeds,
+    and the distribution pattern for this entry determines what
+    distributions (from the Distribution: header of incoming articles) are
+    accepted from remote sites by your server.  The example in the sample
+    newsfeeds file is a good starting point.  If you are going to create a
+    local hierarchy that should not be distributed off of your system, it
+    may be useful to exclude it from the default subscription pattern, but
+    default subscription patterns are somewhat difficult to use right so you
+    may want to just exclude it specifically from every feed instead.
+
+    The ME entry tends to confuse a lot of people, so this point is worth
+    repeating:  the newsgroup patterns set the default subscription for
+    *outgoing* feeds, and the distribution patterns set the acceptable
+    Distribution: header entries for *incoming* articles.  This is confusing
+    enough that it may change in later versions of INN.
+
+    There are two basic ways to feed articles to remote sites.  The most
+    common for large sites and particularly for transit news servers is
+    innfeed(8), which sends articles to remote sites in real time (the
+    article goes out to all peers that are supposed to receive it
+    immediately after your server accepts it).  For smaller sites,
+    particularly sites where the only outgoing messages will be locally
+    posted articles, it's more common to batch outgoing articles and send
+    them every ten minutes or so from cron using nntpsend(8) and innxmit(8).
+    Batching gives you more control and tends to be extremely stable and
+    reliable, but it's much slower and can't handle high volume very well.
+
+    Batching outgoing posts is easy to set up; for each peer, add an entry
+    to newsfeeds that looks like:
+
+        remote.example.com/news.example.com\
+            :<newsgroups>\
+            :Tf,Wnm:
+
+    where <newsgroups> is the wildmat pattern for the newsgroups that site
+    wants.  In this example, the actual name of the remote site is
+    "remote.example.com", but it puts "news.example.com" in the Path:
+    header.  If the remote site puts its actual hostname in the Path:
+    header, you won't need the "/news.example.com" part.
+
+    This entry will cause innd to write out a file in ~news/spool/outgoing
+    named remote.example.com and containing the Message-ID and storage token
+    of each message to send to that site.  (The storage token is INN's
+    internal pointer to where an article is stored; to retrieve an article
+    given its storage token, use sm(8)).  innxmit knows how to read files of
+    this format and send those articles to the remote site.  For information
+    on setting it up to run periodically, see "Setting Up the Cron Jobs"
+    below.  You will also need to set up a config file for nntpsend; see the
+    man page for nntpsend.ctl(5) for more information.
+
+    If instead you want to use innfeed to send outgoing messages
+    (recommended for sites with more than a couple of peers), you need some
+    slightly more complex magic.  You still set up a separate entry for each
+    of your peers, but rather than writing out batch files, they all
+    "funnel" into a special innfeed entry.  That special entry collects all
+    of the separate funnel feeds and sends the data through a special sort
+    of feed to an external program (innfeed in this case); this is a
+    "channel" feed.
+
+    First, the special channel feed entry for innfeed that will collect all
+    the funnel feeds:
+
+        innfeed!\
+            :!*\
+            :Tc,Wnm*:/usr/local/news/bin/startinnfeed -y
+
+    (adjust the path to startinnfeed(1) if you installed it elsewhere). 
+    Note that we don't feed this entry any articles directly (its newsgroup
+    pattern is "!*").  Note also that the name of this entry ends in an
+    exclamation point.  This is a standard convention for all special feeds;
+    since the delimiter for the Path: header is "!", no site name containing
+    that character can ever match the name of a real site.
+
+    Next, set up entries for each remote site to which you will be feeding
+    articles.  All of these entries should be of the form:
+
+        remote.example.com/news.example.com\
+            :<newsgroups>\
+            :Tm:innfeed!
+
+    specifying that they funnel into the "innfeed!" feed.  As in the
+    previous example for batching, "remote.example.com" is the actual name
+    of the remote peer, "news.example.com" is what it puts in the Path:
+    header (if different than the actual name of the server), and
+    <newsgroups> is the wildmat pattern of newsgroups to be sent.
+
+    As an alternative to NNTP, INN may also feed news out to an IMAP server,
+    by using imapfeed(8), which is almost identical to innfeed.  The
+    startinnfeed process can be told to start imapfeed instead of innfeed. 
+    The feed entry for this is as follows:
+
+        imapfeed!\
+            :!*\
+            :Tc,Wnm*,S16384:/usr/local/news/bin/startinnfeed imapfeed
+
+    And set up entries for each remote site like:
+
+        remote.example.com/news.example.com\
+            :<newsgroups>\
+            :Tm:imapfeed!
+
+    For more information on imapfeed, look at the innfeed/imap_connection.c.
+    For more information on IMAP in general, see RFC 2060.
+
+    Finally, there is a special entry for controlchan(8), which processes
+    newsgroup control messages, that should always be in newsfeeds unless
+    you never want to honor any control messages.  This entry should look
+    like:
+
+        controlchan!\
+            :!*,control,control.*,!control.cancel\
+            :Tc,Wnsm:/usr/local/news/bin/controlchan
+
+    (modified for the actual path to controlchan if you put it somewhere
+    else).  See "Processing Control Messages" for more details.
+
+    For those of you upgrading from earlier versions of INN, note that the
+    functionality of overchan(8) and crosspost is now incorporated into INN
+    and neither of those programs is necessary.  Unfortunately, crosspost
+    currently will not work even with the tradspool storage method.  You can
+    still use overchan if you make sure to set *useoverchan* to true in
+    inn.conf so that innd doesn't write overview data itself, but be
+    careful:  innd may accept articles faster than overchan can process the
+    data.
+
+  incoming.conf
+
+    incoming.conf file specifies which machines are permitted to connect to
+    your host and feed it articles.  Remote servers you peer with should be
+    listed here.  Connections from hosts not listed in this file will (if
+    you don't allow readers) be rejected or (if you allow readers) be handed
+    off to nnrpd and checked against the access restrictions in
+    readers.conf.
+
+    Start with the sample incoming.conf and, for each remote peer, add an
+    entry like:
+
+        peer remote.example.com { }
+
+    This uses the default parameters for that feed and allows incoming
+    connections from a machine named "remote.example.com".  If that peer
+    could be connecting from several different machines, instead use an
+    entry like:
+
+         peer remote.example.com {
+            hostname: "remote.example.com, news.example.com"
+         }
+
+    This will allow either "remote.example.com" or "news.example.com" to
+    feed articles to you.  (In general, you should add new peer lines for
+    each separate remote site you peer with, and list multiple host names
+    using the *hostname* key if one particular remote site uses multiple
+    servers.)
+
+    You can restrict the newsgroups a remote site is allowed to send you,
+    using the same sort of pattern that newsfeeds(5) uses.  For example, if
+    you want to prevent "example.com" hosts from sending you any articles in
+    the "local.*" hierarchy (even if they're crossposted to other groups),
+    change the above to:
+
+        peer remote.example.com {
+            patterns: "*, @local.*"
+            hostname: "remote.example.com, news.example.com"
+        }
+
+    Note, however, that restricting what a remote side can send you will
+    *not* reduce your incoming bandwidth usage.  The remote site will still
+    send you the entire article; INN will just reject it rather than saving
+    it to disk.  To reduce bandwidth, you have to contact your peers and ask
+    them not to send you the traffic you don't want.
+
+    There are various other things you can set, including the maximum number
+    of connections the remote host will be allowed.  See incoming.conf(5)
+    for all the details.
+
+    Note for those familiar with older versions of INN:  this file replaces
+    the old hosts.nntp configuration file.
+
+  cycbuff.conf
+
+    cycbuff.conf is only required if CNFS is used.  If you aren't using
+    CNFS, skip this section.
+
+    CNFS stores articles in logical objects called *metacycbuffs*.  Each
+    metacycbuff is in turn composed of one or more physical buffers called
+    *cycbuffs*.  As articles are written to the metacycbuff, each article is
+    written to the next cycbuff in the list in a round-robin fashion (unless
+    "sequential" mode is specified, in which case each cycbuff is filled
+    before moving on to the next).  This is so that you can distribute the
+    individual cycbuffs across multiple physical disks and balance the load
+    between them.
+
+    There are two ways to create your cycbuffs:
+
+    1.  Use a block device directly.  This will probably give you the most
+        speed since it avoids the file system overhead of large files, but
+        it requires your OS support mmap(2) on a block device.  Solaris
+        supports this, as do late Linux 2.4 kernels.  FreeBSD does not at
+        last report.  Also on many PC-based Unixes it is difficult to create
+        more than eight partitions, which may limit your options.
+
+    2.  Use a real file on a filesystem.  This will probably be a bit slower
+        than using a block device directly, but it should work on any Unix
+        system.
+
+    If you're having doubts, use option #2; it's easier to set up and should
+    work regardless of your operating system.
+
+    Now you need to decide on the sizes of your cycbuffs and metacycbuffs. 
+    You'll probably want to separate the heavy-traffic groups
+    ("alt.binaries.*" and maybe a few other things like "*.jobs*" and
+    "news.lists.filters") into their own metacycbuff so that they don't
+    overrun the server and push out articles on the more useful groups.  If
+    you have any local groups that you want to stay around for a while then
+    you should put them in their own metacycbuff as well, so that they don't
+    get pushed out by other traffic.  (Or you might store them in one of the
+    other storage methods, such as tradspool.)
+
+    For each metacycbuff, you now need to determine how many cycbuffs will
+    make up the metacycbuff, the size of those cycbuffs, and where they will
+    be stored.  Some OSes do not support files larger than 2 GB, which will
+    limit the size you can make a single cycbuff, but you can still combine
+    many cycbuffs into each metacycbuff.  Older versions of Linux are known
+    to have this limitation; FreeBSD does not.  Some OSes that support large
+    files don't support direct access to block devices for large partitions
+    (Solaris prior to Solaris 7, or not running in 64-bit mode, is in this
+    category); on those OSes, if you want cycbuffs over 2 GB, you'll have to
+    use regular files.  If in doubt, keep your cycbuffs smaller than 2 GB. 
+    Also, when laying out your cycbuffs, you will want to try to arrange
+    them across as many physical disks as possible (or use a striped disk
+    array and put them all on that).
+
+    In order to use any cycbuff larger than 2 GB, you need to build INN with
+    the --enable-largefiles option.  See "Installing INN" for more
+    information and some caveats.
+
+    For each cycbuff you will be creating, add a line to cycbuff.conf like
+    the following:
+
+        cycbuff:NAME:/path/to/buffer:SIZE
+
+    NAME must be unique and must be at most seven characters long. 
+    Something simple like "BUFF00", "BUFF01", etc. is a decent choice, or
+    you may want to use something that includes the SCSI target and slice
+    number of the partition.  SIZE is the buffer size in kilobytes (if
+    you're trying to stay under 2 GB, keep your sizes below 2097152).
+
+    Now, you need to tell INN how to group your cycbuffs into metacycbuffs. 
+    This is similar to creating cycbuff entries:
+
+        metacycbuff:BUFFNAME:CYCBUFF,CYCBUFF,CYCBUFF
+
+    BUFFNAME is the name of the metacycbuff and must be unique and at most
+    eight characters long.  These should be a bit more meaningful than the
+    cycbuff names since they will be used in other config files as well. 
+    Try to name them after what will be stored in them; for example, if this
+    metacycbuff will hold alt.binaries postings, "BINARIES" would be a good
+    choice.  The last part of the entry is a comma-separated list of all of
+    the cycbuffs that should be used to build this metacycbuff.  Each
+    cycbuff should only appear in one metacycbuff line, and all metacycbuff
+    lines must occur after all cycbuff lines in the file.
+
+    If you want INN to fill each cycbuff before moving on to the next one
+    rather than writing to them round-robin, add ":SEQUENTIAL" to the end of
+    the metacycbuff line.  This may give noticeably better performance when
+    using multiple cycbuffs on the same spindle (such as partitions or
+    slices of a larger disk), but will probably give worse performance if
+    your cycbuffs are spread out across a lot of spindles.
+
+    By default, CNFS data is flushed to disk every 25 articles.  If you're
+    running a small server with a light article load, this could mean losing
+    quite a few articles in a crash.  You can change this interval by adding
+    a cycbuffupdate line to your cycbuff.conf file; see cycbuff.conf(5) for
+    more details.
+
+    Finally, you have to create the cycbuffs.  See "Creating the Article
+    Spool" for more information on how to do that.
+
+  storage.conf
+
+    storage.conf determines where incoming articles will be stored (what
+    storage method, and in the case of CNFS, what metacycbuff).  Each entry
+    in the file defines a storage class for articles.  The first matching
+    storage class is used to store the article; if no storage class matches,
+    INN will reject that article.  (This is almost never what you want, so
+    make sure this file ends in a catch-all entry that will match
+    everything.)
+
+    A storage class definition looks like this:
+
+        method <methodname> {
+            newsgroups: <wildmat>
+            class: <storage_class>
+            size: <minsize>[,<maxsize>]
+            expires: <mintime>[,<maxtime>]
+            options: <options>
+        }
+
+    <methodname> is the name of the storage method to use to store articles
+    in this class ("cnfs", "timehash", "timecaf", "tradspool", or the
+    special method "trash" that accepts the article and throws it away).
+
+    The first parameter is a wildmat pattern in the same format used by the
+    newsfeeds(5) file, and determines what newsgroups are accepted by this
+    storage class.
+
+    The second parameter is a unique number identifying this storage class
+    and should be between 0 and 255.  It can be used to control article
+    expiration, and for timehash and timecaf will set the top-level
+    directory in which articles accepted by this storage class are stored. 
+    The easiest way to deal with this parameter is to just number all
+    storage classes in storage.conf sequentially.  The assignment of a
+    particular number to a storage class is arbitrary but *permanent* (since
+    it is used in storage tokens).
+
+    The third parameter can be used to accept only articles in a certain
+    size range into this storage class.  A <maxsize> of 0 (or a missing
+    <maxsize>) means no upper limit (and of course a <minsize> of 0 would
+    mean no lower limit, because all articles are more than zero bytes
+    long).  If you don't want to limit the size of articles accepted by this
+    storage class, leave this parameter out entirely.
+
+    The fourth parameter you probably don't want to use; it lets you assign
+    storage classes based on the Expires: header of incoming articles.  The
+    exact details are in storage.conf(5).  It's very easy to use this
+    parameter incorrectly; leave it out entirely unless you've read the man
+    page and know what you're doing.
+
+    The fifth parameter is the options parameter.  Currently only CNFS uses
+    this field; it should contain the name of the metacycbuff used to store
+    articles in this storage class.
+
+    If you're using CNFS exclusively, just create one storage class for each
+    metacycbuff that you have defined in cycbuff.conf and set the newsgroups
+    pattern according to what newsgroups should be stored in that buffer.
+
+    If you're using timehash or timecaf, the storage class IDs are used to
+    store articles in separate directory trees, which you can take advantage
+    of to put particular storage classes on different disks.  Also,
+    currently storage class is the only way to specify expiration time, so
+    you will need to divide up your newsgroups based on how long you want to
+    retain articles in those groups and create a storage class for each such
+    collection of newsgroups.  Make note of the storage class IDs you assign
+    as they will be needed when you edit expire.ctl a bit later.
+
+  expire.ctl
+
+    expire.ctl sets the expiration policy for articles stored on the server.
+    Be careful, since the default configuration will expire most articles
+    after 10 days; in most circumstances this deletion is *permanent*, so
+    read this whole section carefully if you want to keep local hierarchies
+    forever.  (See archive(8) for a way to automate backups of important
+    articles.)
+
+    Only one entry is required for all storage classes; it looks like:
+
+        /remember/:10
+
+    This entry says how long to keep the Message-IDs for articles that have
+    already expired in the history file so that the server doesn't accept
+    them again.  Occasionally, fairly old articles will get regurgitated
+    somewhere and offered to you again, so even after you've expired
+    articles from your spool, you want to keep them around in your history
+    file for a little while to ensure you don't get duplicates.
+
+    INN will reject any articles more than a certain number of days old (the
+    *artcutoff* parameter in inn.conf, defaulting to 10); the number on the
+    "/remember/" line should match that.
+
+    CNFS makes no further use of expire.ctl, since articles stored in CNFS
+    buffers expire automatically when the buffer runs out of free space (but
+    see the "-N" option in expireover(8) if you really want to expire them
+    earlier).  For other storage methods, there are two different syntaxes
+    of this file, depending on *groupbaseexpiry* in inn.conf.  If it is set
+    to false, expire.ctl takes entries of the form:
+
+        <storage_class>:<keep>:<default>:<purge>
+
+    <storage_class> is the number assigned to a storage class in
+    storage.conf.  <default> is the number of days to keep normal articles
+    in that storage class (decimal values are allowed).  For articles that
+    don't have an Expires: header, those are the only two values that
+    matter.  For articles with an Expires: header, the other two values come
+    into play; the date given in the Expires: header of an article will be
+    honored, subject to the contraints set by <keep> and <purge>.  All
+    articles in this storage class will be kept for at least <keep> days,
+    regardless of their Expires: headers, and all articles in this storage
+    class will be expired after <purge> days, even if their Expires: headers
+    specify a longer life.
+
+    All three of these fields can also contain the special keyword "never". 
+    If <default> is "never", only articles with explicit Expires: headers
+    will ever be expired.  If <keep> is "never", articles with explicit
+    Expires: headers will be kept forever.  Setting <purge> to "never" says
+    to honor Expires: headers even if they specify dates far into the
+    future.  (Note that if <keep> is set to "never", all articles with
+    Expires: headers are kept forever and the value of <purge> is not used.)
+
+    If the value of "groupbaseexpiry" is true, expire.ctl takes entries of
+    the form:
+
+        <wildmat>:<flag>:<keep>:<default>:<purge>
+
+    <wildmat> is a wildmat expression ("!" and "@" not permitted, and only a
+    single expression, not a comma-separated set of them).  Each expiration
+    line applies to groups matching the wildmat expression.  <flag> is "M"
+    for moderated groups, "U" for unmoderated groups, and "A" for groups
+    with any moderation status; the line only matches groups with the
+    indicated expiration status.  All of the other fields have the same
+    meaning as above.
+
+  readers.conf
+
+    Provided that *noreader* is set to false in inn.conf, any connection
+    from a host that doesn't match an entry in incoming.conf (as well as any
+    connection from a host that does match such an entry, but has issued a
+    MODE READER command) will be handed off to nnrpd(8), the part of INN
+    that supports newsreading clients.  nnrpd uses readers.conf to determine
+    whether a given connection is allowed to read news, and if so what
+    newsgroups the client can read and post to.
+
+    There are a variety of fairly complicated things that one can do with
+    readers.conf, things like run external authentication programs that can
+    query RADIUS servers.  See readers.conf(5) and the example file for all
+    the gory details.  Here's an example of probably the simplest reasonable
+    configuration, one that only allows clients in the example.com domain to
+    read from the server and allows any host in that domain to read and post
+    to all groups:
+
+        auth "example.com" {
+            hosts: "example.com, *.example.com"
+            default: "<user>"
+            default-domain: "example.com"
+        }
+
+        access "all" {
+            users: "*@example.com"
+            newsgroups: "*"
+        }
+
+    If you're running a server for one particular domain, want to allow all
+    hosts within that domain to read and post to any group on the server,
+    and want to deny access to anyone outside that domain, just use the
+    above and change "example.com" in the above to your domain and you're
+    all set.  Lots of examples of more complicated things are in the sample
+    file.
+
+Creating the Article Spool (CNFS only)
+
+    If you are using actual files as your CNFS buffers, you will need to
+    pre-create those files, ensuring they're the right size.  The easiest
+    way to do this is with dd.  For each cycbuff in cycbuff.conf, create the
+    buffer with the following commands (as the news user):
+
+        dd if=/dev/zero of=/path/to/buffer bs=1k count=BUFFERSIZE
+        chmod 664 /path/to/buffer
+
+    Substitute the correct path to the buffer and the size of the buffer as
+    specified in cycbuff.conf.  This will create a zero-filled file of the
+    correct size; it may take a while, so be prepared to wait.
+
+    Here's a command that will print out the dd(1) commands that you should
+    run:
+
+        awk -F: \
+        '/^cy/ { printf "dd if=/dev/zero of=%s bs=1k count=%s\n", $3, $4 }' \
+        ~news/etc/cycbuff.conf
+
+    If you are using block devices, you don't technically have to do
+    anything at all (since INN is capable of using the devices in /dev), but
+    you probably want to create special device files for those devices
+    somewhere for INN's private use.  It s more convenient to keep all of
+    INN's stuff together, but more importantly, the device files used by INN
+    really should be owned by the news user and group, and you may not want
+    to do that with the files in /dev.
+
+    To create the device files for INN, use mknod(8) with a type of "b",
+    getting the major and minor device numbers from the existing devices in
+    /dev.  There's a small shell script in cycbuff.conf(5) that may help
+    with this.  Make sure to create the device files in the location INN
+    expects them (specified in cycbuff.conf).
+
+    Solaris users please note:  on Solaris, do not use block devices that
+    include the first cylinder of the disk.  Solaris doesn't protect the
+    superblock from being overwritten by an application writing to block
+    devices and includes it in the first cylinder of the disk, so unless you
+    use a slice that starts with cylinder 1 instead of 0, INN will
+    invalidate the partition table when it tries to initialize the cycbuff
+    and all further accesses will fail until you repartition.
+
+Creating the Database Files
+
+    At this point, you need to set up the news database directory
+    (~news/db).  This directory will hold the active(5) file (the list of
+    newsgroups you carry), the active.times(5) file (the creator and
+    creation time of newsgroups created since the server was initialized),
+    the newsgroups(5) file (descriptions for all the newsgroups you carry),
+    and the history(5) file (a record of every article the server currently
+    has or has seen in the past few days, used to decide whether to accept
+    or refuse new incoming messages).
+
+    Before starting to work on this, make sure you're logged on as the news
+    user, since all of these files need to be owned by that user.  This is a
+    good policy to always follow; if you are doing any maintenance work on
+    your news server, log on as the news user.  Don't do maintenance work as
+    root.  Also make sure that ~news/bin is in the default path of the news
+    user (and while you're at it, make sure ~news/man is in the default
+    MANPATH) so that you can run INN maintenance commands without having to
+    type the full path.
+
+    If you already have a server set up (if you're upgrading, or setting up
+    a new server based on an existing server), copy active and newsgroups
+    from that server into ~news/db.  Otherwise, you'll need to figure out
+    what newsgroups you want to carry and create new active and newsgroups
+    files for them.  If you plan to carry a full feed, or something close to
+    that, go to <ftp://ftp.isc.org/pub/usenet/CONFIG/> and download active
+    and newsgroups from there; that will start you off with reasonably
+    complete files.  If you plan to only carry a small set of groups, the
+    default minimal active file installed by INN is a good place to start;
+    you can create additional groups after the server is running by using
+    "ctlinnd newgroup".  (Another option is to use actsync(8) to synchronize
+    your newsgroup list to that of another server.)
+
+    "control" and "junk" must exist as newsgroups in your active file for
+    INN to start, and creating pseudogroups for the major types of control
+    messages is strongly encouraged for all servers that aren't standalone. 
+    If you don't want these groups to be visible to clients, do *not* delete
+    them; simply hide them in readers.conf.  "to" must also exist as a
+    newsgroup if you have mergetogroups set in inn.conf.
+
+    Next, you need to create an empty history database.  To do this, type:
+
+        cd ~news/db
+        touch history
+        makedbz -i
+
+    When it finishes, rename the files it created to remove the ".n" in the
+    file names and then make sure the file permissions are correct on all
+    the files you've just created:
+
+        chmod 644 *
+
+    Your news database files are now ready to go.
+
+Configuring syslog
+
+    While some logs are handled internally, INN also logs a wide variety of
+    information via syslog.  INN's nightly report programs know how to roll
+    and summarize those syslog log files, but when you first install INN you
+    need to set them up.
+
+    If your system understands the "news" syslog facility, INN will use it;
+    otherwise, it will log to "local1".  Nearly every modern system has a
+    "news" syslog facility so you can safely assume that yours does, but if
+    in doubt take a look at the output from running "configure".  You should
+    see a line that looks like:
+
+        checking log level for news... LOG_NEWS
+
+    If that says LOG_LOCAL1 instead, change the below instructions to use
+    "local1" instead of "news".
+
+    Edit /etc/syslog.conf on your system and add lines that look like the
+    following:
+
+        news.crit           /usr/local/news/log/news.crit
+        news.err            /usr/local/news/log/news.err
+        news.notice         /usr/local/news/log/news.notice
+
+    (Change the path names as necessary if you installed INN in a different
+    location than /usr/local/news.)  These lines *must* be tab-delimited, so
+    don't copy and paste from these instructions.  Type it in by hand and
+    make sure you use a tab, or you'll get mysterious failures.  You'll also
+    want to make sure that news log messages don't fill your other log files
+    (INN generates a lot of log traffic); so for every entry in
+    /etc/syslog.conf that starts with "*", add ";news.none" to the end of
+    the first column.  For example, if you have a line like:
+
+        *.err               /dev/console
+
+    change it to:
+
+        *.err;news.none     /dev/console
+
+    (You can choose not to do this for the higher priority log messages, if
+    you want to make sure they go to your normal high-priority log files as
+    well as INN's.  Don't bother with anything lower priority than "crit",
+    though.  "news.err" isn't interesting enough to want to see all the
+    time.)  Now, make sure that the news log files exist; syslog generally
+    won't create files automatically.  Enter the following commands:
+
+        touch /usr/local/news/log/news.crit
+        touch /usr/local/news/log/news.err
+        touch /usr/local/news/log/news.notice
+        chown news /usr/local/news/log/news.*
+        chgrp news /usr/local/news/log/news.*
+
+    (again adjusting the paths if necessary for your installation). 
+    Finally, send a HUP signal to syslogd to make it re-read its
+    configuration file.
+
+Setting Up the Cron Jobs
+
+    INN requires a special cron job to be set up on your system to run
+    news.daily(8) which performs daily server maintenance tasks such as
+    article expiration and the processing and rotation of the server logs. 
+    Since it will slow the server down while it is running, it should be run
+    during periods of low server usage, such as in the middle of the night. 
+    To run it at 3am, for example, add the following entry to the news
+    user's crontab file:
+
+        0 3 * * * /usr/local/news/bin/news.daily expireover lowmark
+
+    or, if your system does not have per-user crontabs, put the following
+    line into your system crontab instead:
+
+        0 3 * * * su -c "/usr/local/news/bin/news.daily expireover lowmark" news
+
+    If you're using any non-CNFS storage methods, add "delayrm" to the above
+    option list for news.daily.
+
+    The news user obviously must be able to run cron jobs.  On Solaris, this
+    means that it must have a valid /etc/shadow entry and must not be locked
+    (although it may be a non-login account).  There may be similar
+    restrictions with other operating systems.
+
+    If you use the batching method to send news, also set up a cron job to
+    run nntpsend(8) every ten minutes.  nntpsend will run innxmit for all
+    non-empty pending batch files to send pending news to your peers.  That
+    cron entry should look something like:
+
+        0,10,20,30,40,50 * * * * /usr/local/news/bin/nntpsend
+
+    The pathnames and user ID used above are the installation defaults;
+    change them to match your installation if you used something other than
+    the defaults.
+
+    The parameters passed to news.daily in the above example are the most
+    common (and usually the most efficient) ones to use.  More information
+    on what these parameters do can be found in the news.daily(8) man page.
+
+File Descriptor Limits
+
+    INN likes to use a lot of file descriptors, particularly if you have a
+    lot of peers.  Depending on what your system defaults are, you may need
+    to make sure the default limit is increased for INN (particularly for
+    innd and innfeed).  This is vital on Solaris, which defaults (at least
+    as of 2.6) to an absurdly low limit of 64 file descriptors per process.
+
+    One way to increase the number of file descriptors is to set
+    *rlimitnofile* in inn.conf to a higher value.  This will cause both
+    startinnfeed and inndstart (the setuid root wrapper scripts that start
+    innfeed and innd, respectively) to increase the file descriptor limits
+    before they run the regular INN programs.  Note, however, that INN won't
+    be able to increase the limits above the hard limits set by your
+    operating system; on some systems, that hard limit is normally 256 file
+    descriptors (Linux, for example).  On others, like Solaris, it's 1024. 
+    Increasing the limit beyond that value may require serious system
+    configuration work.  (On some operating systems, it requires patching
+    and recompiling the kernel.  On Solaris it can be changed in
+    /etc/system, but for 2.6 or earlier the limit cannot be increased beyond
+    1024 without breaking select(2) and thereby breaking all of INN.  For
+    current versions of Linux, you may be able to change the maximum by
+    writing to /proc/sys/fs/file-max.)
+
+    256 file descriptors will probably be enough for all but the largest
+    sites.  There is no harm in setting the limits higher than you actually
+    need (provided they're set to something lower than or equal to your
+    system hard limit).  256 is therefore a reasonable value to try.
+
+    If you're installing INN on a Solaris system, particularly if you're
+    installing it on a dedicated news server machine, it may be easier to
+    just increase the default file descriptor limit across the board for all
+    processes.  You can do that by putting the line:
+
+        set rlim_fd_cur = 256
+
+    in /etc/system and rebooting.  You can increase it all the way to 1024
+    (and may need to if you have a particularly large site), but that can
+    cause RPC and some stdio applications to break.  It therefore probably
+    isn't a good idea on a machine that isn't dedicated to INN.
+
+Starting and Stopping the System
+
+    INN is started via the shell script rc.news.  This must be run as the
+    news user and not as root.  To start INN on system boot, you therefore
+    want to put something like:
+
+        su - news -c /usr/local/news/bin/rc.news
+
+    in the system boot scripts.  If innd is stopped or killed, you can
+    restart it by running rc.news by hand as the news user.
+
+    The rc.news script may also be used to shut down INN, with the "stop"
+    option:
+
+        su - news -c '/usr/local/news/bin/rc.news stop'
+
+    In the contrib directory of this source tree is a sample init script for
+    people using System V-style init.d directories.
+
+Processing Newsgroup Control Messages
+
+    Control messages are specially-formatted messages that tell news servers
+    to take various actions.  Cancels (commands to delete messages) are
+    handled internally by INN, and all other control messages are processed
+    by controlchan.  controlchan should be run out of newsfeeds if you want
+    your news server to process any control messages; see "Configuring INN"
+    for specific instructions.
+
+    The actions of controlchan are determined by control.ctl, which lists
+    who can perform what actions.  The primary control messages to be
+    concerned with are "newgroup" (to create a newsgroup), "rmgroup" (to
+    remove a newsgroup), and "checkgroups" (to compare the list of groups
+    carried in a hierarchy to a canonical list).  INN comes with a
+    control.ctl file that processes control messages in most major public
+    hierarchies; if you don't want to act on all those control messages, you
+    should remove from that file all entries for hierarchies you don't want
+    to carry.
+
+    You can tell INN to just authenticate control messages based on the From
+    header of the message, but this is obviously perilous and control
+    messages are widely forged.  Many hierarchies sign all of their control
+    messages with PGP, allowing news servers to verify their authenticity,
+    and checking those signatures for hierarchies that use them is highly
+    recommended.  controlchan knows how to do this (using pgpverify) without
+    additional configuration, but you do have to provide it with a public
+    key ring containing the public keys of all of the hierarchy
+    administrators whose control messages you want to check.
+
+    INN expects the public key ring to either be in the default location for
+    a PGP public key ring for the news user (generally ~news/.gnupg for
+    GnuPG and ~news/.pgp for old PGP implementations), or in pathetc/pgp
+    (/usr/local/news/etc/pgp by default).  The latter is the recommended
+    path.  To add a key to that key ring, use:
+
+        gpg --import --homedir=/usr/local/news/etc/pgp <file>
+
+    where <file> is a file containing the hierarchy key.  Change the homedir
+    setting to point to pathetc/pgp if you have INN installed in a
+    non-default location.  If you're using the old-style PGP program, an
+    equivalent command is:
+
+        env PGPPATH=/usr/local/news/etc/pgp pgp <file>
+
+    You can safely answer "no" to questions about whether you want to sign,
+    trust, or certify keys.
+
+    The URLs from which you can get hierarchy keys are noted in comments in
+    control.ctl.  <ftp://ftp.isc.org/pub/pgpcontrol/PGPKEYS> tries to
+    collect the major hierarchy keys.
+
+    If you are using GnuPG, please note that the first user ID on the key
+    will be the one that's used by INN for verification and must match the
+    key listed in control.ctl.  If a hierarchy key has multiple user IDs,
+    you may have to remove all the user IDs except the one that matches the
+    control.ctl entry using "gpg --edit-key" and the "delkey" command.
+
diff --git a/LICENSE b/LICENSE
new file mode 100644 (file)
index 0000000..4d0fec5
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,87 @@
+INN as a whole and all code contained in it not otherwise marked with
+different licenses and/or copyrights is covered by the following copyright
+and license:
+
+   Copyright (c) 2004, 2005, 2006, 2007, 2008
+       by Internet Systems Consortium, Inc. ("ISC")
+   Copyright (c) 1991, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+       2002, 2003 by The Internet Software Consortium and Rich Salz
+
+   This code is derived from software contributed to the Internet Software
+   Consortium by Rich Salz.
+
+   Permission to use, copy, modify, and distribute this software for any
+   purpose with or without fee is hereby granted, provided that the above
+   copyright notice and this permission notice appear in all copies.
+
+   THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+   REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+   MERCHANTABILITY AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY
+   SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+   WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+   ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+   OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+Some specific portions of INN are covered by different licenses.  Those
+licenses, if present, will be noted prominantly at the top of those source
+files.  Specifically (but possibly not comprehensively):
+
+   authprogs/smbval/*, backends/send-uucp.in, and control/perl-nocem.in
+   are under the GNU General Public License.  See doc/GPL for a copy of
+   this license.
+
+   backends/shrinkfile.c, frontends/scanspool.in, lib/concat.c,
+   lib/hstrerror.c, lib/inet_aton.c, lib/inet_ntoa.c, lib/memcmp.c,
+   lib/parsedate.y, lib/pread.c, lib/pwrite.c, lib/setenv.c, lib/seteuid.c,
+   lib/strerror.c, lib/strlcat.c and lib/strlcpy.c are in the public
+   domain.
+
+   lib/snprintf.c may be used for any purpose as long as the author's
+   notice remains intact in all source code distributions.
+
+   control/gpgverify.in, control/pgpverify.in and control/signcontrol.in
+   are under a BSD-style license (with the advertising clause) with UUNET
+   Technologies, Inc. as the copyright holder.  See the end of those files
+   for details.
+
+   control/controlchan.in and control/modules/*.pl are covered by a
+   two-clause BSD-style license (no advertising clause).  See the
+   beginning of those files for details.
+
+   lib/strcasecmp.c, lib/strspn.c, and lib/strtok.c are taken from BSD
+   sources and are covered by the standard BSD license.  See those files
+   for more details.
+
+   lib/md5.c is covered under the standard free MD5 license from RSA Data
+   Security.  See the file for more details.  A clarification is also
+   provided here:  <http://www.ietf.org/ietf/IPR/RSA-MD-all>.
+
+      "Implementations of these message-digest algorithms, including
+      implementations derived from the reference C code in RFC-1319,
+      RFC-1320, and RFC-1321, may be made, used, and sold without
+      license from RSA for any purpose."
+
+   history/his.c and history/hisv6/hisv6.c are under a license very
+   similar to the new BSD license (no advertising clause) but with Thus
+   plc as the copyright holder.  See those files for details.
+
+   lib/tst.c, include/inn/tst.h and doc/pod/tst.pod are derived from
+   <http://www.octavian.org/cs/tst1.3.tar.gz> and are under the new BSD
+   license (no advertising clause), but with Peter A. Friend as the
+   copyright holder.
+
+   tests/runtests.c is covered under a license very similar to the MIT/X
+   Consortium license.  See the beginning of the file for details.
+
+Note that all portions of INN that link with core INN code have to be
+covered by licenses compatible with the license at the top of this file,
+and since INN links with several external libraries if so configured (such
+as OpenSSL), should also be compatible with the licenses of those external
+libraries to be safe.  Some portions of this distribution are covered by
+more restrictive licenses, but all of that code is completely stand-alone,
+either as a standalone script or as code that compiles into a separate
+executable.
+
+Please note that the files in the contrib directory are not properly part
+of INN and may be under widely varying licenses.  Please see each file
+and/or its documentation for license information.
diff --git a/MANIFEST b/MANIFEST
new file mode 100644 (file)
index 0000000..d93dada
--- /dev/null
+++ b/MANIFEST
@@ -0,0 +1,745 @@
+File Name                             Description
+-------------------------------------------------------------------------------
+CONTRIBUTORS                          List of contributors
+HACKING                               Docs for INN coders and maintainers
+INSTALL                               INN installation instructions
+LICENSE                               Legal mumbo-jumbo
+MANIFEST                              This shipping list
+Makefile                              Top-level makefile
+Makefile.global.in                    Make variables for all Makefiles
+NEWS                                  Changes since last version
+README                                Introduction to the INN package
+TODO                                  The list of pending INN projects
+aclocal.m4                            M4 macro for libtool
+authprogs                             The authentication programs (Directory)
+authprogs/Makefile                    Makefile for auth programs
+authprogs/auth_krb5.c                 Authenticator against Kerberos v5
+authprogs/auth_smb.c                  Authenticator against Samba servers
+authprogs/ckpasswd.c                  Check password
+authprogs/domain.c                    Get username from remote user's hostname
+authprogs/ident.c                     Get username from ident
+authprogs/libauth.c                   Library for talking to nnrpd
+authprogs/libauth.h                   Interface for libauth
+authprogs/radius.c                    Authenticator against RADIUS servers
+authprogs/smbval                      The smb auth libraries (Directory)
+authprogs/smbval/Makefile             Libraries for smb auth
+authprogs/smbval/byteorder.h          Libraries for smb auth
+authprogs/smbval/rfcnb-common.h       Libraries for smb auth
+authprogs/smbval/rfcnb-error.h        Libraries for smb auth
+authprogs/smbval/rfcnb-io.c           Libraries for smb auth
+authprogs/smbval/rfcnb-io.h           Libraries for smb auth
+authprogs/smbval/rfcnb-priv.h         Libraries for smb auth
+authprogs/smbval/rfcnb-util.c         Libraries for smb auth
+authprogs/smbval/rfcnb-util.h         Libraries for smb auth
+authprogs/smbval/rfcnb.h              Libraries for smb auth
+authprogs/smbval/session.c            Libraries for smb auth
+authprogs/smbval/smbdes.c             Libraries for smb auth
+authprogs/smbval/smbencrypt.c         Libraries for smb auth
+authprogs/smbval/smblib-common.h      Libraries for smb auth
+authprogs/smbval/smblib-priv.h        Libraries for smb auth
+authprogs/smbval/smblib-util.c        Libraries for smb auth
+authprogs/smbval/smblib.c             Libraries for smb auth
+authprogs/smbval/smblib.h             Libraries for smb auth
+authprogs/smbval/valid.c              Libraries for smb auth
+authprogs/smbval/valid.h              Libraries for smb auth
+backends                              Outgoing feed programs (Directory)
+backends/Makefile                     Makefile for outgoing feed programs
+backends/actmerge.in                  Merge two active files to stdout
+backends/actsync.c                    Poll remote(s) for active file & merge
+backends/actsyncd.in                  Daemon to run actsync periodically
+backends/archive.c                    Simple article archiver
+backends/batcher.c                    Make news batches
+backends/buffchan.c                   Buffered funnel to file splitter
+backends/crosspost.c                  Create links for crossposts (obselete)
+backends/cvtbatch.c                   Add fields to simple batchfile
+backends/filechan.c                   Split a funnel into separate files
+backends/inndf.c                      df used for innwatch
+backends/innxbatch.c                  Send batches using XBATCH to remote
+backends/innxmit.c                    Send articles to remote site
+backends/map.c                        Site name to filename mapping routines
+backends/map.h                        Headers for backends/map.c
+backends/mod-active.in                Batch do active file modifications
+backends/news2mail.in                 News to mail gateway
+backends/ninpaths.c                   Path statistics accumulation program
+backends/nntpget.c                    Get articles from remote site
+backends/nntpsend.in                  Invoke all innxmit's at once
+backends/overchan.c                   Update news overview database
+backends/send-ihave.in                Script to post ihave messages
+backends/send-nntp.in                 Shell script to call innxmit
+backends/send-uucp.in                 Script to call batcher
+backends/sendinpaths.in               Send accumulated Path statistics
+backends/sendxbatches.in              Shell wrapper around innxbatch
+backends/shlock.c                     Program to make lockfiles in scripts
+backends/shrinkfile.c                 Shrink file from beginning
+configure                             Script to configure INN
+configure.in                          Source file for configure
+contrib                               External contributions (Directory)
+contrib/Makefile                      Makefile for contrib programs
+contrib/README                        Contents of the contrib directory
+contrib/archivegz.in                  Compressing version of archive
+contrib/auth_pass.README              README corresponding to auth_pass.c
+contrib/auth_pass.c                   Sample for use with AUTHINFO GENERIC
+contrib/backlogstat.in                Analyze innfeed's backlog status
+contrib/backupfeed.in                 Suck down news via a reading connection
+contrib/cleannewsgroups.in            Script to clean newsgroups file
+contrib/count_overview.pl             Count overview entries
+contrib/delayer.in                    Delay data in a pipe, for innfeed
+contrib/expirectl.c                   Generate expire.ctl from template
+contrib/findreadgroups.in             Track which groups are being read
+contrib/fixhist                       Script to clean history
+contrib/innconfcheck                  Merge inn.conf with its man page
+contrib/makeexpctl.in                 Create expire.ctl from read groups
+contrib/makestorconf.in               Create storage.conf from read groups
+contrib/mkbuf                         Create cycbuff for HP-UX
+contrib/mlockfile.c                   Lock files into memory using mlock
+contrib/newsresp.c                    Measure responsiveness of remote server
+contrib/pullart.c                     Recover articles from cyclic buffers
+contrib/reset-cnfs.c                  Reset the state parts of a CNFS buffer
+contrib/respool.c                     Respool articles in the storage manager
+contrib/sample.init.script            Example SysV-style init.d script
+contrib/showtoken.in                  Decode storage API tokens
+contrib/stathist.in                   Parse history statistics
+contrib/thdexpire.in                  Dynamic expire for timehash and timecaf
+contrib/tunefeed.in                   Tune a feed by comparing active files
+control                               Control message handling (Directory)
+control/Makefile                      Makefile for control programs
+control/controlbatch.in               Batch program for controlchan
+control/controlchan.in                Channel program for control messages
+control/docheckgroups.in              Script to execute checkgroups
+control/gpgverify.in                  Verify control messages with GnuPG
+control/modules                       Modules for controlchan (Directory)
+control/modules/checkgroups.pl        checkgroups controlchan handler
+control/modules/ihave.pl              ihave controlchan handler
+control/modules/newgroup.pl           newgroup controlchan handler
+control/modules/rmgroup.pl            rmgroup controlchan handler
+control/modules/sendme.pl             sendme controlchan handler
+control/modules/sendsys.pl            sendsys controlchan handler
+control/modules/senduuname.pl         senduuname controlchan handler
+control/modules/version.pl            version controlchan handler
+control/perl-nocem.in                 NoCeM on spool implementation
+control/pgpverify.in                  Verify control messages with PGP
+control/signcontrol.in                PGP control message signing program
+doc                                   Documentation (Directory)
+doc/GPL                               The GNU General Public License 2.0
+doc/IPv6-info                         Nathan Lutchansky's IPv6 notes
+doc/Makefile                          Makefile for documentation
+doc/checklist                         Checklist for installing INN
+doc/compliance-nntp                   INN compliance with the NNTP standard
+doc/config-design                     Configuration parser design principles
+doc/config-semantics                  Configuration file semantics
+doc/config-syntax                     Configuration file syntax
+doc/external-auth                     readers.conf external interface notes
+doc/history                           Messages of historical significance
+doc/hook-perl                         Christophe Wolfhugel's Perl hook notes
+doc/hook-python                       Python hook notes
+doc/hook-tcl                          Bob Halley's TCL hook notes
+doc/man                               nroff documentation (Directory)
+doc/man/Makefile                      Makefile for nroff documentation
+doc/man/active.5                      Manpage for active database
+doc/man/active.times.5                Manpage for active.times file
+doc/man/actsync.8                     Manpage for active file synch program
+doc/man/actsyncd.8                    Manpage for active synch daemon
+doc/man/archive.8                     Manpage for archive backend
+doc/man/auth_krb5.8                   Manpage for auth_krb5 authenticator
+doc/man/auth_smb.8                    Manpage for auth_smb authenticator
+doc/man/batcher.8                     Manpage for batcher
+doc/man/buffchan.8                    Manpage for buffchan backend
+doc/man/buffindexed.conf.5            Manpage for buffindexed.conf config file
+doc/man/ckpasswd.8                    Manpage for ckpasswd authenticator
+doc/man/clientlib.3                   Manpage for C News library interface
+doc/man/cnfsheadconf.8                Manpage for cnfsheadconf
+doc/man/cnfsstat.8                    Manpage for cnfsstat
+doc/man/control.ctl.5                 Manpage for control.ctl config file
+doc/man/controlchan.8                 Manpage for controlchan backend
+doc/man/convdate.1                    Manpage for convdate utility
+doc/man/ctlinnd.8                     Manpage for ctlinnd frontend
+doc/man/cvtbatch.8                    Manpage for cvtbatch utility
+doc/man/cycbuff.conf.5                Manpage for cycbuff.conf config file
+doc/man/dbz.3                         Manpage for DBZ database interface
+doc/man/distrib.pats.5                Manpage for distrib.pats config file
+doc/man/domain.8                      Manpage for domain resolver
+doc/man/expire.8                      Manpage for expire
+doc/man/expire.ctl.5                  Manpage for expire.ctl config file
+doc/man/expireover.8                  Manpage for expireover
+doc/man/expirerm.8                    Manpage for expirerm
+doc/man/fastrm.1                      Manpage for fastrm utility
+doc/man/filechan.8                    Manpage for filechan backend
+doc/man/getlist.1                     Manpage for getlist frontend
+doc/man/grephistory.1                 Manpage for grephistory
+doc/man/history.5                     Manpage for history database
+doc/man/ident.8                       Manpage for ident resolver
+doc/man/incoming.conf.5               Manpage for incoming.conf config file
+doc/man/inews.1                       Manpage for inews frontend
+doc/man/inn.conf.5                    Manpage for inn.conf config file
+doc/man/inncheck.8                    Manpage for inncheck utility
+doc/man/innconfval.1                  Manpage for innconfval
+doc/man/innd.8                        Manpage for innd server
+doc/man/inndcomm.3                    Manpage for part of INN library
+doc/man/inndf.8                       Manpage for inndf utility
+doc/man/inndstart.8                   Manpage for inndstart
+doc/man/innfeed.1                     Manpage for innfeed backend
+doc/man/innfeed.conf.5                Manpage for innfeed.conf config file
+doc/man/innmail.1                     Manpage for innmail utility
+doc/man/innreport.8                   Manpage for innreport
+doc/man/innstat.8                     Manpage for innstat utility
+doc/man/innupgrade.8                  Manpage for innupgrade utility
+doc/man/innwatch.8                    Manpage for innwatch
+doc/man/innwatch.ctl.5                Manpage for innwatch.ctl config file
+doc/man/innxbatch.8                   Manpage for innxbatch
+doc/man/innxmit.8                     Manpage for innxmit
+doc/man/libauth.3                     Manpage for authprogs utilty routines
+doc/man/libinn.3                      Manpage for INN library routines
+doc/man/libinnhist.3                  Manpage for history API library routines
+doc/man/libstorage.3                  Manpage for storage API library routines
+doc/man/list.3                        Manpage for list routines
+doc/man/mailpost.8                    Manpage for mailpost frontend
+doc/man/makeactive.8                  Manpage for makeactive
+doc/man/makedbz.8                     Manpage for makedbz
+doc/man/makehistory.8                 Manpage for makehistory
+doc/man/mod-active.8                  Manpage for mod-active
+doc/man/moderators.5                  Manpage for moderators config file
+doc/man/motd.news.5                   Manpage for motd.news config file
+doc/man/news.daily.8                  Manpage for news.daily
+doc/man/news2mail.8                   Manpage for news2mail
+doc/man/newsfeeds.5                   Manpage for newsfeeds config file
+doc/man/newslog.5                     Manpage for log files
+doc/man/ninpaths.8                    Manpage for ninpaths
+doc/man/nnrpd.8                       Manpage for nnrpd daemon
+doc/man/nnrpd.track.5                 Manpage for nnrpd.track config file
+doc/man/nntpget.1                     Manpage for nntpget frontend
+doc/man/nntpsend.8                    Manpage for nntpsend
+doc/man/nntpsend.ctl.5                Manpage for nntpsend.ctl config file
+doc/man/ovdb.5                        Manpage for the ovdb storage module
+doc/man/ovdb_init.8                   Manpage for ovdb_init
+doc/man/ovdb_monitor.8                Manpage for ovdb_monitor
+doc/man/ovdb_server.8                 Manpage for ovdb_server
+doc/man/ovdb_stat.8                   Manpage for ovdb_stat
+doc/man/overchan.8                    Manpage for overchan backend
+doc/man/overview.fmt.5                Manpage for overview.fmt config file
+doc/man/parsedate.3                   Manpage for parsedate library routine
+doc/man/passwd.nntp.5                 Manpage for passwd.nntp config file
+doc/man/perl-nocem.8                  Manpage for perl-nocem
+doc/man/pgpverify.1                   Manpage for pgpverify
+doc/man/prunehistory.8                Manpage for prunehistory
+doc/man/pullnews.1                    Manpage for pullnews
+doc/man/putman.sh                     Install a manpage
+doc/man/qio.3                         Manpage for fast I/O file routines
+doc/man/radius.8                      Manpage for radius authenticator
+doc/man/radius.conf.5                 Manpage for radius.conf config file
+doc/man/rc.news.8                     Manpage for rc.news
+doc/man/readers.conf.5                Manpage for readers.conf config file
+doc/man/rnews.1                       Manpage for rnews frontend
+doc/man/sasl.conf.5                   Manpage for sasl.conf config file
+doc/man/scanlogs.8                    Manpage for scanlogs
+doc/man/send-nntp.8                   Manpage for send-nntp and send-ihave
+doc/man/send-uucp.8                   Manpage for send-uucp
+doc/man/sendinpaths.8                 Manpage for sendinpaths
+doc/man/shlock.1                      Manpage for shlock backend utility
+doc/man/shrinkfile.1                  Manpage for shrinkfile utility
+doc/man/simpleftp.1                   Manpage for simpleftp utility
+doc/man/sm.1                          Manpage for sm
+doc/man/startinnfeed.1                Manpage for startinnfeed
+doc/man/storage.conf.5                Manpage for storage.conf config file
+doc/man/subscriptions.5               Manpage for subscriptions list
+doc/man/tally.control.8               Manpage for tally.control
+doc/man/tdx-util.8                    Manpage for tdx-util
+doc/man/tst.3                         Manpage for ternary search tree routines
+doc/man/uwildmat.3                    Manpage for uwildmat library routine
+doc/man/writelog.8                    Manpage for writelog
+doc/pod                               POD documentation (Directory)
+doc/pod/Makefile                      Maintainer rules for derived files
+doc/pod/active.pod                    Master file for active.5
+doc/pod/active.times.pod              Master file for active.times.5
+doc/pod/auth_krb5.pod                 Master file for auth_krb5.8
+doc/pod/auth_smb.pod                  Master file for auth_smb.8
+doc/pod/checklist.pod                 Master file for doc/checklist
+doc/pod/ckpasswd.pod                  Master file for ckpasswd.8
+doc/pod/control.ctl.pod               Master file for control.ctl.5
+doc/pod/convdate.pod                  Master file for convdate.1
+doc/pod/cycbuff.conf.pod              Master file for cycbuff.conf.5
+doc/pod/distrib.pats.pod              Master file for distrib.pats.5
+doc/pod/domain.pod                    Master file for domain.8
+doc/pod/expire.ctl.pod                Master file for expire.ctl.5
+doc/pod/expireover.pod                Master file for expireover.8
+doc/pod/external-auth.pod             Master file for doc/external-auth
+doc/pod/fastrm.pod                    Master file for fastrm.1
+doc/pod/grephistory.pod               Master file for grephistory.1
+doc/pod/hacking.pod                   Master file for HACKING
+doc/pod/hook-perl.pod                 Master file for doc/hook-perl
+doc/pod/hook-python.pod               Master file for doc/hook-python
+doc/pod/ident.pod                     Master file for ident.8
+doc/pod/inews.pod                     Master file for inews.1
+doc/pod/inn.conf.pod                  Master file for inn.conf.5
+doc/pod/innconfval.pod                Master file for innconfval.1
+doc/pod/innd.pod                      Master file for innd.8
+doc/pod/inndf.pod                     Master file for inndf.8
+doc/pod/inndstart.pod                 Master file for inndstart.8
+doc/pod/innmail.pod                   Master file for innmail.1
+doc/pod/innupgrade.pod                Master file for innupgrade.8
+doc/pod/install.pod                   Master file for INSTALL
+doc/pod/libauth.pod                   Master file for libauth.3
+doc/pod/libinnhist.pod                Master file for libinnhist.3
+doc/pod/list.pod                      Master file for list.3
+doc/pod/mailpost.pod                  Master file for mailpost.8
+doc/pod/makehistory.pod               Master file for makehistory.8
+doc/pod/motd.news.pod                 Master file for motd.news.5
+doc/pod/news.pod                      Master file for NEWS
+doc/pod/newsfeeds.pod                 Master file for newsfeeds.5
+doc/pod/ninpaths.pod                  Master file for ninpaths.8
+doc/pod/nnrpd.pod                     Master file for nnrpd.8
+doc/pod/ovdb.pod                      Master file for ovdb.5
+doc/pod/ovdb_init.pod                 Master file for ovdb_init.8
+doc/pod/ovdb_monitor.pod              Master file for ovdb_monitor.8
+doc/pod/ovdb_server.pod               Master file for ovdb_server.8
+doc/pod/ovdb_stat.pod                 Master file for ovdb_stat.8
+doc/pod/passwd.nntp.pod               Master file for passwd.nntp.5
+doc/pod/pullnews.pod                  Master file for pullnews.1
+doc/pod/qio.pod                       Master file for qio.3
+doc/pod/radius.conf.pod               Master file for radius.conf.5
+doc/pod/radius.pod                    Master file for radius.8
+doc/pod/rc.news.pod                   Master file for rc.news.8
+doc/pod/readers.conf.pod              Master file for readers.conf.5
+doc/pod/readme.pod                    Master file for README
+doc/pod/sasl.conf.pod                 Master file for sasl.conf.5
+doc/pod/sendinpaths.pod               Master file for sendinpaths.8
+doc/pod/simpleftp.pod                 Master file for simpleftp.1
+doc/pod/sm.pod                        Master file for sm.1
+doc/pod/subscriptions.pod             Master file for subscriptions.5
+doc/pod/tdx-util.pod                  Master file for tdx-util.8
+doc/pod/tst.pod                       Master file for tst.3
+doc/pod/uwildmat.pod                  Master file for uwildmat.3
+doc/sample-control                    Sample PGP-signed control message
+expire                                Expiration and recovery (Directory)
+expire/Makefile                       Makefile for expiration
+expire/convdate.c                     Date string conversions
+expire/expire.c                       Expire old articles and history lines
+expire/expireover.c                   Expire news overview data
+expire/expirerm.in                    Remove articles from expire -z
+expire/fastrm.c                       Remove list of files
+expire/grephistory.c                  Find entries in history database
+expire/makedbz.c                      Recover dbz
+expire/makehistory.c                  Recover the history database
+expire/prunehistory.c                 Prune file names from history file
+frontends                             inews, rnews, ctlinnd (Directory)
+frontends/Makefile                    Makefile for frontends
+frontends/cnfsheadconf.in             Setup cycbuff header
+frontends/cnfsstat.in                 Show cycbuff status
+frontends/ctlinnd.c                   Send control request to innd
+frontends/decode.c                    Decode 7-bit data into binary file
+frontends/encode.c                    Encode binary file into 7-bit data
+frontends/feedone.c                   Test rig to feed a single NNTP article
+frontends/getlist.c                   Get active or other list from server
+frontends/inews.c                     Send article to local NNTP server
+frontends/innconfval.c                Get an INN configuration parameter
+frontends/mailpost.in                 Mail to news gateway
+frontends/ovdb_init.c                 Prepare ovdb database for use
+frontends/ovdb_monitor.c              Database maintainance for ovdb
+frontends/ovdb_server.c               Helper server for ovdb
+frontends/ovdb_stat.c                 Display information from ovdb database
+frontends/pullnews.in                 Sucking news feeder
+frontends/rnews.c                     UUCP unbatcher
+frontends/scanspool.in                Scan spool directory for trash
+frontends/sm.c                        Get article or overview data from token
+frontends/sys2nf.c                    Sys file to newsfeeds conversion aid
+history                               History library routines (Directory)
+history/Make.methods                  Makefile for history methods
+history/Makefile                      Makefile for history library
+history/buildconfig.in                Construct history interface
+history/his.c                         History API glue implementation
+history/hisinterface.h                History API interface
+history/hisv6                         History v6 method (Directory)
+history/hisv6/hismethod.config        hisbuildconfig definition
+history/hisv6/hisv6-private.h         Private header file for hisv6
+history/hisv6/hisv6.c                 hisv6 history method
+history/hisv6/hisv6.h                 Header for hisv6 history
+include                               Header files (Directory)
+include/Makefile                      Makefile for header files
+include/acconfig.h                    Master file for config.h.in
+include/clibrary.h                    C library portability
+include/conffile.h                    Header file for reading *.conf files
+include/config.h.in                   Template configuration data 
+include/dbz.h                         Header file for DBZ
+include/inn                           Installed header files (Directory)
+include/inn/buffer.h                  Header file for reusable counted buffers
+include/inn/confparse.h               Header file for configuration parser
+include/inn/defines.h                 Portable defs for installed headers
+include/inn/hashtab.h                 Header file for generic hash table
+include/inn/history.h                 Header file for the history API
+include/inn/innconf.h                 Header file for the innconf struct
+include/inn/list.h                    Header file for list routines
+include/inn/md5.h                     Header file for MD5 digests
+include/inn/messages.h                Header file for message functions
+include/inn/mmap.h                    Header file for mmap() functions
+include/inn/qio.h                     Header file for quick I/O package
+include/inn/sequence.h                Header file for sequence space arithmetic
+include/inn/timer.h                   Header file for generic timers
+include/inn/tst.h                     Header file for ternary search tries
+include/inn/vector.h                  Header file for vectors of strings
+include/inn/wire.h                    Header file for wire-format functions
+include/inndcomm.h                    innd control channel commands
+include/innperl.h                     Header file for embedded Perl
+include/libinn.h                      INN library declarations
+include/nntp.h                        NNTP command and reply codes
+include/ov.h                          Header file for overview
+include/paths.h.in                    Paths to common programs and files
+include/portable                      Portability wrappers (Directory)
+include/portable/mmap.h               Wrapper for <sys/mman.h>
+include/portable/setproctitle.h       Portable setup for setproctitle
+include/portable/socket.h             Wrapper for <sys/socket.h> and friends
+include/portable/time.h               Wrapper for <time.h> and <sys/time.h>
+include/portable/wait.h               Wrapper for <sys/wait.h>
+include/ppport.h                      Header file for Perl support
+include/storage.h                     Header file for storage API
+innd                                  Server (Directory)
+innd/Makefile                         Makefile for server
+innd/art.c                            Process a received article
+innd/cc.c                             Control channel routines
+innd/chan.c                           I/O channel routines
+innd/icd.c                            Read and write the active file
+innd/innd.c                           Main and utility routines
+innd/innd.h                           Header file for server
+innd/inndstart.c                      Open the NNTP port, then exec innd
+innd/keywords.c                       Generate article keywords
+innd/lc.c                             Local NNTP channel routines
+innd/nc.c                             NNTP channel routines
+innd/newsfeeds.c                      Routines to parse the newsfeeds file
+innd/ng.c                             Newsgroup routines
+innd/perl.c                           Perl routines for innd
+innd/proc.c                           Process routines
+innd/python.c                         Python routines for innd
+innd/rc.c                             Remote channel accepting routines
+innd/site.c                           Site feeding routines
+innd/status.c                         Status routines for innd
+innd/tcl.c                            Bob Halley's Tcl hook
+innd/util.c                           Utility functions for innd
+innd/wip.c                            Work-in-progress routines for innd
+innfeed                               innfeed (Directory)
+innfeed/Makefile                      Makefile for innfeed
+innfeed/README                        Assorted notes
+innfeed/article.c                     Implementation of the Article class
+innfeed/article.h                     Public interface to Articles
+innfeed/buffer.c                      Implementation of the Buffer class
+innfeed/buffer.h                      Public interface to the Buffer class
+innfeed/config_l.c                    Lexer for the innfeed config file
+innfeed/configfile.h                  Header file for configfile.y
+innfeed/configfile.l                  Master file for config_l.c
+innfeed/configfile.y                  Parser for innfeed config file
+innfeed/connection.c                  Implementation of the Connection class
+innfeed/connection.h                  Public interface to the Connection class
+innfeed/endpoint.c                    Implementation of the EndPoint class
+innfeed/endpoint.h                    Public interface to the EndPoint class
+innfeed/host.c                        Implementation of the Host class
+innfeed/host.h                        Public interface to the Host class
+innfeed/imap_connection.c             Implementation of IMAP Connection class
+innfeed/innfeed-convcfg.in            Script to convert old innfeed.conf
+innfeed/innfeed.h                     Application configuration values
+innfeed/innlistener.c                 Implementation of the InnListener class
+innfeed/innlistener.h                 Public interface of InnListener class
+innfeed/main.c                        Main routines for the innfeed program
+innfeed/misc.c                        Miscelloneous routines for innfeed
+innfeed/misc.h                        Header file for misc.c
+innfeed/procbatch.in                  Script to process dropped articles
+innfeed/startinnfeed.c                Start innfeed
+innfeed/tape.c                        Implementation of the Tape class
+innfeed/tape.h                        Public interface to the Tape class
+innfeed/testListener.pl               Script to hand articles to innfeed
+lib                                   INN library routines (Directory)
+lib/Makefile                          Makefile for library
+lib/buffer.c                          Reusable counted buffer
+lib/cleanfrom.c                       Clean out a From line
+lib/clientactive.c                    Client access to the active file
+lib/clientlib.c                       Replacement for C News library routine
+lib/concat.c                          Concatenate strings with dynamic memory
+lib/conffile.c                        Routines for reading *.conf files
+lib/confparse.c                       Generic configuration file parser
+lib/daemonize.c                       Code necessary to become a daemon
+lib/date.c                            Date parsing and conversion routines
+lib/dbz.c                             DBZ database library
+lib/defdist.c                         Determine default Distribution header
+lib/fdflags.c                         Set or clear file descriptor flags
+lib/fdlimit.c                         File descriptor limits
+lib/fseeko.c                          fseeko replacement
+lib/ftello.c                          ftello replacement
+lib/genid.c                           Generate a message ID
+lib/getfqdn.c                         Get FQDN of local host
+lib/getmodaddr.c                      Get a moderator's address
+lib/getpagesize.c                     getpagesize replacement
+lib/gettime.c                         Get time and timezone info
+lib/hash.c                            Create hash from message ID
+lib/hashtab.c                         Generic hash table
+lib/hstrerror.c                       Error reporting for resolver
+lib/inet_aton.c                       Extra source for inet_aton routine
+lib/inet_ntoa.c                       Convert inaddr to string (BSD)
+lib/innconf.c                         Parsing and manipulation of inn.conf
+lib/inndcomm.c                        Library routines to talk to innd
+lib/list.c                            List routines
+lib/localopen.c                       Open a local NNTP connection
+lib/lockfile.c                        Try to lock a file descriptor
+lib/makedir.c                         Make directory recursively
+lib/md5.c                             MD5 checksum calculation
+lib/memcmp.c                          memcmp replacement
+lib/messages.c                        Error reporting and debug output
+lib/mkstemp.c                         mkstemp replacement
+lib/mmap.c                            mmap manipulation routines
+lib/parsedate.y                       Date parsing
+lib/perl.c                            Perl hook support for nnrpd and innd
+lib/pread.c                           pread replacement
+lib/pwrite.c                          pwrite replacement
+lib/qio.c                             Quick I/O package
+lib/radix32.c                         Encode a number as a radix-32 string
+lib/readin.c                          Read file into memory
+lib/remopen.c                         Open a remote NNTP connection
+lib/reservedfd.c                      File descriptor reservation
+lib/resource.c                        Get process CPU usage
+lib/sendarticle.c                     Send an article, NNTP style
+lib/sendpass.c                        Send NNTP authentication
+lib/sequence.c                        Sequence space arithmetic routines
+lib/setenv.c                          setenv replacement
+lib/seteuid.c                         seteuid replacement
+lib/setproctitle.c                    setproctitle replacement
+lib/snprintf.c                        snprintf and vsnprintf replacement
+lib/sockaddr.c                        Manipulation of sockaddr structs
+lib/strcasecmp.c                      Case-insenstive string comparison (BSD)
+lib/strerror.c                        String representation of errno
+lib/strlcat.c                         strlcat replacement
+lib/strlcpy.c                         strlcpy replacement
+lib/strspn.c                          Skip bytes in a string (BSD)
+lib/strtok.c                          Split a string into tokens (BSD)
+lib/timer.c                           Generic profile timer
+lib/tst.c                             Ternary search trie implementation
+lib/uwildmat.c                        Pattern match routine
+lib/vector.c                          Manipulate vectors of strings
+lib/version.c                         INN version constants
+lib/wire.c                            Manipulate wire-format articles
+lib/xfopena.c                         Open a FILE in append mode
+lib/xmalloc.c                         Failsafe memory allocation wrapper
+lib/xsignal.c                         signal() wrapper using sigaction
+lib/xwrite.c                          write that handles partial transfers
+nnrpd                                 Reader server (Directory)
+nnrpd/Makefile                        Makefile for nnrpd
+nnrpd/article.c                       Article-related routines
+nnrpd/cache.c                         MessageID cache routines
+nnrpd/cache.h                         MessageID cache interfaces
+nnrpd/commands.c                      Assorted server commands
+nnrpd/group.c                         Group-related routines
+nnrpd/line.c                          Long line-by-line reading routines
+nnrpd/list.c                          The LIST commands
+nnrpd/misc.c                          Miscellaneous support routines
+nnrpd/newnews.c                       The NEWNEWS command
+nnrpd/nnrpd.c                         Main and some utility routines
+nnrpd/nnrpd.h                         Header file for nnrpd
+nnrpd/perl.c                          Perl routines for nnrpd
+nnrpd/perm.c                          Reading readers.conf
+nnrpd/post.c                          Article processing and posting
+nnrpd/post.h                          Article data types
+nnrpd/python.c                        Python routines for nnrpd
+nnrpd/sasl_config.c                   Configuration for SASL
+nnrpd/sasl_config.h                   SASL data types
+nnrpd/tls.c                           Transport layer security
+nnrpd/tls.h                           Transport layer security data types
+nnrpd/track.c                         Track client behavior
+samples                               Prototype INN config files (Directory)
+samples/INN.py                        Stub Python functions
+samples/Makefile                      Makefile for samples
+samples/active.minimal                Minimal starting active file
+samples/actsync.cfg                   Config file for actsync
+samples/actsync.ign                   Ignore file for actsync
+samples/buffindexed.conf              Buffindexed overview config file
+samples/control.ctl                   Access control for control messages
+samples/cycbuff.conf                  Sample cycbuff.conf file
+samples/distrib.pats                  Default values for Distribution header
+samples/expire.ctl                    Expiration config file
+samples/filter.tcl                    Sample Tcl filter for innd
+samples/filter_innd.pl                Sample Perl filter for innd
+samples/filter_innd.py                Sample Python filter for innd
+samples/filter_nnrpd.pl               Sample Perl filter for nnrpd
+samples/incoming.conf                 Permissions for incoming feeds
+samples/inn.conf.in                   General INN configuration
+samples/innfeed.conf                  Outgoing feed configuration
+samples/innreport.conf.in             Log summary configuration
+samples/innwatch.ctl                  INN monitoring configuration
+samples/moderators                    Moderation submission addresses
+samples/motd.news                     Sample MOTD file
+samples/news2mail.cf                  news2mail config file
+samples/newsfeeds.in                  innd feed configuration
+samples/newsgroups.minimal            Minimal starting newsgroups file
+samples/nnrpd.py                      Python hooks for nnrpd
+samples/nnrpd.track                   Reader tracking configuration
+samples/nnrpd_access.pl.in            Sample nnrpd Perl access hooks
+samples/nnrpd_access.py               Sample nnrpd Python access hooks
+samples/nnrpd_access_wrapper.pl.in    Wrapper around old Perl access hooks
+samples/nnrpd_access_wrapper.py       Wrapper around old Python access hooks
+samples/nnrpd_auth.pl.in              Sample nnrpd Perl authorization hooks
+samples/nnrpd_auth.py                 Sample nnrpd Python authorization hooks
+samples/nnrpd_auth_wrapper.pl.in      Wrapper around old Perl auth hooks
+samples/nnrpd_auth_wrapper.py         Wrapper around old Python auth hooks
+samples/nnrpd_dynamic.py              Sample nnrpd Python dynamic access hooks
+samples/nnrpd_dynamic_wrapper.py      Wrapper around old Python dynamic hooks
+samples/nntpsend.ctl                  Outgoing nntpsend feed configuration
+samples/ovdb.conf                     Berkeley DB overview configuration
+samples/overview.fmt                  Format of news overview database
+samples/passwd.nntp                   Passwords for remote connections
+samples/radius.conf                   Sample config for RADIUS authentication
+samples/readers.conf                  Reader connection configuration
+samples/sasl.conf.in                  SASL configuration
+samples/startup.tcl                   Tcl startup code for innd
+samples/startup_innd.pl               Perl startup code for innd
+samples/storage.conf                  Sample storage configuration
+samples/subscriptions                 Sample default subscriptions list
+scripts                               Various utilities (Directory)
+scripts/Makefile                      Makefile for script files
+scripts/inncheck.in                   Syntax-check INN config files
+scripts/innmail.in                    Perl front-end to sendmail
+scripts/innreport.in                  Script to analyze INN logs
+scripts/innreport_inn.pm              Config file for innreport
+scripts/innshellvars.in               Config parameters for shell scripts
+scripts/innshellvars.pl.in            Config parameters for Perl scripts
+scripts/innshellvars.tcl.in           Config parameters for Tcl scripts
+scripts/innstat.in                    Display INN status snapshot
+scripts/innupgrade.in                 Upgrade INN configuration files
+scripts/innwatch.in                   Throttle innd based on load and space
+scripts/news.daily.in                 Front-end script to run expire, etc.
+scripts/rc.news.in                    News boot script
+scripts/scanlogs.in                   Summarize log files
+scripts/simpleftp.in                  Rudimentary ftp client
+scripts/tally.control.in              Count newgroup/rmgroup messages
+scripts/writelog.in                   Write a log entry or mail it
+site                                  Site-local files (Directory)
+site/Makefile                         Makefile for site-local files
+site/getsafe.sh                       Safely get config file from samples
+storage                               Storage library (Directory)
+storage/Make.methods                  Makefile for storage methods
+storage/Makefile                      Makefile for storage library
+storage/buffindexed                   buffindexed overview method (Directory)
+storage/buffindexed/buffindexed.c     buffindexed overview routines
+storage/buffindexed/buffindexed.h     Header file for buffindexed overview
+storage/buffindexed/ovmethod.config   buildconfig definition
+storage/buffindexed/ovmethod.mk       Make rules for buffindexed overview
+storage/buildconfig.in                Construct method interface
+storage/cnfs                          CNFS storage method (Directory)
+storage/cnfs/cnfs-private.h           Private header file for CNFS
+storage/cnfs/cnfs.c                   CNFS storage routines
+storage/cnfs/cnfs.h                   Header file for CNFS
+storage/cnfs/method.config            buildconfig definition
+storage/expire.c                      Overview-drive expire implementation
+storage/interface.c                   Storage API glue implementation
+storage/interface.h                   Storage API interface
+storage/ov.c                          Overview API glue implementation
+storage/ovdb                          ovdb overview method (Directory)
+storage/ovdb/ovdb-private.h           Private header file for ovdb
+storage/ovdb/ovdb.c                   ovdb (Berkeley DB) overview method
+storage/ovdb/ovdb.h                   Header for ovdb (Berkeley DB) overview
+storage/ovdb/ovmethod.config          buildconfig definition
+storage/overdata.c                    Overview data manipulation
+storage/ovinterface.h                 Overview API interface
+storage/timecaf                       timecaf storage method (Directory)
+storage/timecaf/README.CAF            README the CAF file format
+storage/timecaf/caf.c                 CAF file implementation
+storage/timecaf/caf.h                 Header for CAF files
+storage/timecaf/method.config         buildconfig definition
+storage/timecaf/timecaf.c             timecaf storage routines
+storage/timecaf/timecaf.h             Header file for timecaf
+storage/timehash                      timehash storage method (Directory)
+storage/timehash/method.config        buildconfig definition
+storage/timehash/timehash.c           timehash storage routines
+storage/timehash/timehash.h           Header for timehash
+storage/tradindexed                   tradindexed overview method (Directory)
+storage/tradindexed/ovmethod.config   buildconfig definition
+storage/tradindexed/ovmethod.mk       Make rules for tradindexed overview
+storage/tradindexed/tdx-cache.c       Data file cache handling for tradindexed
+storage/tradindexed/tdx-data.c        Data file handling for tradindexed
+storage/tradindexed/tdx-group.c       Group index handling for tradindexed
+storage/tradindexed/tdx-private.h     Private header file for tradindexed
+storage/tradindexed/tdx-structure.h   On disk layout of tradindexed files
+storage/tradindexed/tdx-util.c        Utility program for tradindexed
+storage/tradindexed/tradindexed.c     Interface code for the overview API
+storage/tradindexed/tradindexed.h     Interface for tradindexed
+storage/tradspool                     tradspool storage method (Directory)
+storage/tradspool/README.tradspool    Docs for tradspool storage method
+storage/tradspool/method.config       buildconfig definition
+storage/tradspool/tradspool.c         tradspool storage routines
+storage/tradspool/tradspool.h         Header for tradspool
+storage/trash                         Trash storage method (Directory)
+storage/trash/method.config           buildconfig definition
+storage/trash/trash.c                 Trash storage routines
+storage/trash/trash.h                 Header file for trash storage
+support                               Tools for building INN (Directory)
+support/config.guess                  Determine system type for libtool
+support/config.sub                    Canonicalize system type for libtool
+support/fixscript.in                  Interpreter path fixup script
+support/indent                        A mostly working wrapper around indent
+support/install-sh                    Installation utility
+support/ltmain.sh                     Source for libtool utility
+support/makedepend                    Generate dependencies for C files
+support/mkchangelog                   Generate ChangeLog from CVS
+support/mkmanifest                    Generate a list of files for the manifest
+support/mksnapshot                    Generate a snapshot of the tree
+support/mksystem                      Generate <inn/system.h> from config.h
+support/mkversion                     Generate <inn/version.h> with INN version
+tests                                 Test suite for INN (Directory)
+tests/Makefile                        Makefile for test suite
+tests/TESTS                           List of tests to run
+tests/authprogs                       Test suite for auth programs (Directory)
+tests/authprogs/ckpasswd.t            Tests for authprogs/ckpasswd
+tests/authprogs/domain.t              Tests for authprogs/domain
+tests/authprogs/passwd                Password data for ckpasswd tests
+tests/lib                             Test suite for libinn (Directory)
+tests/lib/articles                    Testing news articles (Directory)
+tests/lib/articles/no-body            An article without a body
+tests/lib/articles/strange            An article with CR and LF in headers
+tests/lib/articles/truncated          An article truncated in the headers
+tests/lib/buffer-t.c                  Tests for lib/buffer.c
+tests/lib/concat-t.c                  Tests for lib/concat.c
+tests/lib/config                      Testing config files (Directory)
+tests/lib/config/errors               Various config files with errors
+tests/lib/config/line-endings         A config file with varied line endings
+tests/lib/config/no-newline           A config file without an ending newline
+tests/lib/config/null                 A config file containing a nul character
+tests/lib/config/simple               A simple config file
+tests/lib/config/valid                Various valid config parameters
+tests/lib/config/warn-bool            Invalid boolean parameters
+tests/lib/config/warn-int             Invalid integer parameters
+tests/lib/config/warnings             Various config files with warnings
+tests/lib/confparse-t.c               Tests for lib/confparse.c
+tests/lib/date-t.c                    Tests for lib/date.c
+tests/lib/fakewrite.c                 Helper functions for xwrite tests
+tests/lib/hash-t.c                    Tests for lib/hash.c
+tests/lib/hashtab-t.c                 Tests for lib/hashtab.c
+tests/lib/hstrerror-t.c               Tests for lib/hstrerror.c
+tests/lib/inet_aton-t.c               Tests for lib/inet_aton.c
+tests/lib/inet_ntoa-t.c               Tests for lib/inet_ntoa.c
+tests/lib/innconf-t.c                 Tests for lib/innconf.c
+tests/lib/list-t.c                    Tests for lib/list.c
+tests/lib/md5-t.c                     Tests for lib/md5.c
+tests/lib/memcmp-t.c                  Tests for lib/memcmp.c
+tests/lib/messages-t.c                Tests for lib/messages.c
+tests/lib/mkstemp-t.c                 Tests for lib/mkstemp.c
+tests/lib/pread-t.c                   Tests for lib/pread.c
+tests/lib/pwrite-t.c                  Tests for lib/pwrite.c
+tests/lib/qio-t.c                     Tests for lib/qio.c
+tests/lib/setenv-t.c                  Tests for lib/setenv.c
+tests/lib/setenv.t                    Wrapper for setenv tests
+tests/lib/snprintf-t.c                Tests for lib/snprintf.c
+tests/lib/strerror-t.c                Tests for lib/strerror.c
+tests/lib/strlcat-t.c                 Tests for lib/strlcat.c
+tests/lib/strlcpy-t.c                 Tests for lib/strlcpy.c
+tests/lib/tst-t.c                     Tests for lib/tst.c
+tests/lib/uwildmat-t.c                Tests for lib/uwildmat.c
+tests/lib/vector-t.c                  Tests for lib/vector.c
+tests/lib/wire-t.c                    Tests for lib/wire.c
+tests/lib/xmalloc.c                   Helper program for xmalloc tests
+tests/lib/xmalloc.t                   Tests for lib/xmalloc.c
+tests/lib/xwrite-t.c                  Tests for lib/xwrite.c
+tests/libtest.c                       Helper library for writing tests
+tests/libtest.h                       Interface to libtest
+tests/overview                        Test suite for overview (Directory)
+tests/overview/data                   Test overview data (Directory)
+tests/overview/data/basic             Basic set of overview test data
+tests/overview/data/bogus             Bad newsgroup name test data
+tests/overview/data/high-numbered     High-numbered article test data
+tests/overview/data/reversed          Same as basic, but in reverse order
+tests/overview/munge-data             Support script to generate test data
+tests/overview/tradindexed-t.c        Tests for storage/tradindexed/*
+tests/runtests.c                      The test suite driver program
+tests/util                            Test suite for utilities (Directory)
+tests/util/convdate.t                 Tests for expire/convdate
diff --git a/Makefile b/Makefile
new file mode 100644 (file)
index 0000000..13e27b5
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,218 @@
+##  $Id: Makefile 7488 2005-12-25 00:26:08Z eagle $
+
+include Makefile.global
+
+##  All installation directories except for $(PATHRUN), which has a
+##  different mode than the rest.
+INSTDIRS      = $(PATHNEWS) $(PATHBIN) $(PATHAUTH) $(PATHAUTHRESOLV) \
+               $(PATHAUTHPASSWD) $(PATHCONTROL) $(PATHFILTER) \
+               $(PATHRNEWS) $(PATHDB) $(PATHDOC) $(PATHETC) $(PATHLIB) \
+               $(PATHMAN) $(MAN1) $(MAN3) $(MAN5) $(MAN8) $(PATHSPOOL) \
+               $(PATHTMP) $(PATHARCHIVE) $(PATHARTICLES) $(PATHINCOMING) \
+               $(PATHINBAD) $(PATHTAPE) $(PATHOVERVIEW) $(PATHOUTGOING) \
+               $(PATHLOG) $(PATHLOG)/OLD $(PATHINCLUDE)
+
+##  LIBDIRS are built before PROGDIRS, make update runs in all UPDATEDIRS,
+##  and make install runs in all ALLDIRS.  Nothing runs in test except the
+##  test target itself and the clean targets.  Currently, include is built
+##  before anything else but nothing else runs in it except clean targets.
+LIBDIRS     = include lib storage history
+PROGDIRS    = innd nnrpd innfeed control expire frontends backends authprogs \
+              scripts
+UPDATEDIRS  = $(LIBDIRS) $(PROGDIRS) doc
+ALLDIRS     = $(UPDATEDIRS) samples site
+CLEANDIRS   = $(ALLDIRS) include tests
+
+##  The directory name and tar file to use when building a release.
+TARDIR      = inn-$(VERSION)
+TARFILE     = $(TARDIR).tar
+
+##  The directory to use when building a snapshot.
+SNAPDIR     = inn-$(SNAPSHOT)-$(SNAPDATE)
+
+##  DISTDIRS gets all directories from the MANIFEST, and DISTFILES gets all
+##  regular files.  Anything not listed in the MANIFEST will not be included
+##  in a distribution.  These are arguments to sed.
+DISTDIRS    = -e 1,2d -e '/(Directory)/!d' -e 's/ .*//' -e 's;^;$(TARDIR)/;'
+SNAPDIRS    = -e 1,2d -e '/(Directory)/!d' -e 's/ .*//' -e 's;^;$(SNAPDIR)/;'
+DISTFILES   = -e 1,2d -e '/(Directory)/d' -e 's/ .*//'
+
+
+##  Major target -- build everything.  Rather than just looping through
+##  all the directories, use a set of parallel rules so that make -j can
+##  work on more than one directory at a time.
+all: all-include all-libraries all-programs
+       cd doc     && $(MAKE) all
+       cd samples && $(MAKE) all
+       cd site    && $(MAKE) all
+
+all-libraries: all-lib all-storage all-history
+
+all-include:                   ; cd include   && $(MAKE) all
+all-lib:       all-include     ; cd lib       && $(MAKE) all
+all-storage:   all-lib         ; cd storage   && $(MAKE) library
+all-history:   all-storage     ; cd history   && $(MAKE) all
+
+all-programs:  all-innd all-nnrpd all-innfeed all-control all-expire \
+               all-frontends all-backends all-authprogs all-scripts \
+               all-store-util
+
+all-authprogs: all-lib         ; cd authprogs && $(MAKE) all
+all-backends:  all-libraries   ; cd backends  && $(MAKE) all
+all-control:                   ; cd control   && $(MAKE) all
+all-expire:    all-libraries   ; cd expire    && $(MAKE) all
+all-frontends: all-libraries   ; cd frontends && $(MAKE) all
+all-innd:      all-libraries   ; cd innd      && $(MAKE) all
+all-innfeed:   all-libraries   ; cd innfeed   && $(MAKE) all
+all-nnrpd:     all-libraries   ; cd nnrpd     && $(MAKE) all
+all-scripts:                   ; cd scripts   && $(MAKE) all
+all-store-util:        all-libraries   ; cd storage   && $(MAKE) programs
+
+
+##  If someone tries to run make before running configure, tell them to run
+##  configure first.
+Makefile.global:
+       @echo 'Run ./configure before running make.  See INSTALL for details.'
+       @exit 1
+
+
+##  Installation rules.  make install installs everything; make update only
+##  updates the binaries, scripts, and documentation and leaves config
+##  files alone.
+install: directories
+       @for D in $(ALLDIRS) ; do \
+           echo '' ; \
+           cd $$D && $(MAKE) install || exit 1 ; cd .. ; \
+       done
+       @echo ''
+       @echo 'If this is a first-time installation, a minimal active file and'
+       @echo 'history database have been installed.  Do not forget to update'
+       @echo 'your cron entries and configure INN.  See INSTALL for more'
+       @echo 'information.'
+       @echo ''
+
+directories:
+       @chmod +x support/install-sh
+       for D in $(INSTDIRS) ; do \
+           support/install-sh $(OWNER) -m 0755 -d $(D)$$D ; \
+       done
+       support/install-sh $(OWNER) -m 0750 -d $(D)$(PATHRUN)
+
+update: 
+       @chmod +x support/install-sh
+       @for D in $(UPDATEDIRS) ; do \
+           echo '' ; \
+           cd $$D && $(MAKE) install || exit 1 ; cd .. ; \
+       done
+       $(PATHBIN)/innupgrade $(PATHETC)
+
+##  Install a certificate for TLS/SSL support.
+cert:
+       $(SSLBIN)/openssl req -new -x509 -nodes \
+           -out $(PATHLIB)/cert.pem -days 366 \
+           -keyout $(PATHLIB)/key.pem
+       chown $(NEWSUSER) $(PATHLIB)/cert.pem
+       chgrp $(NEWSGROUP) $(PATHLIB)/cert.pem
+       chmod 640 $(PATHLIB)/cert.pem
+       chown $(NEWSUSER) $(PATHLIB)/key.pem
+       chgrp $(NEWSGROUP) $(PATHLIB)/key.pem
+       chmod 600 $(PATHLIB)/key.pem
+
+
+##  Cleanup targets.  clean deletes all compilation results but leaves the
+##  configure results.  distclean or clobber removes everything not part of
+##  the distribution tarball.  maintclean removes some additional files
+##  created as part of the release process.
+clean:
+       @for D in $(CLEANDIRS) ; do \
+           echo '' ; \
+           cd $$D && $(MAKE) clean || exit 1 ; cd .. ; \
+       done
+
+clobber realclean distclean:
+       @for D in $(CLEANDIRS) ; do \
+           echo '' ; \
+           cd $$D && $(MAKE) $(FLAGS) clobber && cd .. ; \
+       done
+       @echo ''
+       rm -f LIST.* Makefile.global TAGS tags config.cache config.log
+       rm -f config.status libtool support/fixscript
+
+maintclean: distclean
+       rm -rf $(TARDIR)
+       rm -f CHANGES ChangeLog inn*.tar.gz
+
+
+##  Other generic targets.
+depend tags ctags profiled:
+       @for D in $(ALLDIRS) ; do \
+           echo '' ; \
+           cd $$D && $(MAKE) $@ || exit 1 ; cd .. ; \
+       done
+
+TAGS etags:
+       etags */*.c */*.h */*/*.c */*/*.h
+
+
+##  Run the test suite.
+check test tests:
+       cd tests && $(MAKE) test
+
+
+##  For maintainers, build the entire source base with warnings enabled.
+warnings:
+       $(MAKE) COPT="$(WARNINGS) $(COPT)" all
+
+
+##  Make a release.  We create a release by recreating the directory
+##  structure and then copying over all files listed in the MANIFEST.  If it
+##  isn't in the MANIFEST, it doesn't go into the release.  We also update
+##  the version information in Makefile.global.in to remove the prerelease
+##  designation and update all timestamps to the date the release is made.
+release: ChangeLog
+       rm -rf $(TARDIR)
+       rm -f inn*.tar.gz
+       mkdir $(TARDIR)
+       for d in `sed $(DISTDIRS) MANIFEST` ; do mkdir -p $$d ; done
+       for f in `sed $(DISTFILES) MANIFEST` ; do \
+           cp $$f $(TARDIR)/$$f || exit 1 ; \
+       done
+       sed 's/= prerelease/=/' < Makefile.global.in \
+           > $(TARDIR)/Makefile.global.in
+       cp ChangeLog $(TARDIR)
+       find $(TARDIR) -type f -print | xargs touch -t `date +%m%d%H%M.%S`
+       tar cf $(TARFILE) $(TARDIR)
+       $(GZIP) -9 $(TARFILE)
+
+##  Generate the ChangeLog using support/mkchangelog.  This should only be
+##  run by a maintainer since it depends on cvs log working and also
+##  requires cvs2cl be available somewhere.
+ChangeLog:
+       $(PERL) support/mkchangelog
+
+
+##  Check the MANIFEST against the files present in the current tree,
+##  building a list with find and running diff between the lists.
+check-manifest:
+       sed -e 1,2d -e 's/ .*//' MANIFEST > LIST.manifest
+       $(PERL) support/mkmanifest > LIST.real
+       diff -u LIST.manifest LIST.real
+
+
+##  Make a snapshot.  This is like making a release, except that we don't do
+##  the ChangeLog thing and we don't change the version number.  We also
+##  assume that SNAPSHOT has been set to the appropriate current branch.
+snapshot:
+       rm -rf $(SNAPDIR)
+       rm -f inn*.tar.gz
+       mkdir $(SNAPDIR)
+       set -e ; for d in `sed $(SNAPDIRS) MANIFEST` ; do mkdir -p $$d ; done
+       set -e ; for f in `sed $(DISTFILES) MANIFEST` ; do \
+           cp $$f $(SNAPDIR)/$$f ; \
+       done
+       cp README.snapshot $(SNAPDIR)/
+       sed 's/= prerelease/= $(SNAPDATE) snapshot/' \
+           Makefile.global.in > $(SNAPDIR)/Makefile.global.in
+       find $(SNAPDIR) -type f -print | xargs touch -t `date +%m%d%H%M.%S`
+       tar cf $(SNAPDIR).tar $(SNAPDIR)
+       $(GZIP) -9 $(SNAPDIR).tar
diff --git a/Makefile.global.in b/Makefile.global.in
new file mode 100644 (file)
index 0000000..3f9cf58
--- /dev/null
@@ -0,0 +1,286 @@
+##  $Id: Makefile.global.in 7830 2008-05-14 18:57:39Z iulius $
+##
+##  This file is meant to be the central Makefile that configure works with
+##  and that all other Makefiles include.  No Makefile other than this one
+##  should have to be a configure substitution target.
+##
+##  For installation paths, see the bottom of this file.
+
+##  This version information is used to generate lib/version.c and is used
+##  by INN for banner and local version identification.  The version
+##  identification string will be "$VERSION ($VERSION_EXTRA)", with the
+##  parentheses omitted if $VERSION_EXTRA is empty (as it is for major
+##  releases).  If you make extensive local modifications to INN, you can
+##  put your own version information in $VERSION_EXTRA.  If it's set to
+##  "CVS prerelease", the build time will be automatically included.
+
+VERSION         = 2.4.5
+VERSION_EXTRA   =
+
+##  If you want to install INN relative to a root directory other than /,
+##  set DESTDIR to the path to the root directory of the file system.  This
+##  won't affect any of the paths compiled into INN; it's used primarily
+##  when building a software distribution, where software has to be
+##  installed into some file system that will later be mounted as / on the
+##  final system.  DESTDIR should have a trailing slash, as the trailing
+##  slash is not added automatically (in case someone wants to add a prefix
+##  that isn't just a parent directory).
+
+DESTDIR         =
+D               = $(DESTDIR)
+
+##  The absolute path to the top of the build directory, used to find the
+##  libraries built as part of INN.  Using relative paths confuses libtool
+##  when linking the test suite.
+
+builddir       = @builddir@
+
+##  Basic compiler settings.  COPT is the variable to override on the make
+##  command line to change the optimization or add warning flags (such as
+##  -Wall).  LFS_* is for large file support.  All of INN is built with the
+##  large file support flags if provided.
+
+CC              = @CC@
+COPT            = @CFLAGS@
+GCFLAGS         = $(COPT) -I$(top)/include @CPPFLAGS@ $(LFS_CFLAGS)
+
+BERKELEY_DB_CFLAGS = @BERKELEY_DB_CFLAGS@
+
+LDFLAGS         = @LDFLAGS@ $(LFS_LDFLAGS) @BERKELEY_DB_LDFLAGS@
+LIBS            = @LIBS@ $(LFS_LIBS)
+
+LFS_CFLAGS      = @LFS_CFLAGS@
+LFS_LDFLAGS     = @LFS_LDFLAGS@
+LFS_LIBS        = @LFS_LIBS@
+
+PROF            = -pg
+PROFSUFFIX      = _p
+MAKEPROFILING   = $(MAKE) COPT="$(COPT) $(PROF)" \
+                          LDFLAGS="$(LDFLAGS) $(PROF)" \
+                         LIBSUFFIX=$(PROFSUFFIX)
+
+##  Used to support non-recursive make.  This variable is set to the necessary
+##  options to the compiler to create an object file in a subdirectory.  It
+##  should be used instead of -c -o $@ $< and may be replaced with code that
+##  calls mv, if the compiler doesn't support -c with -o.
+
+CCOUTPUT       = @CCOUTPUT@
+
+##  Warnings to use with gcc.  Default to including all of the generally
+##  useful warnings unless there's something that makes them unsuitable.  In
+##  particular, the following warnings are *not* included:
+##
+##    -ansi             Requires messing with feature test macros.
+##    -pedantic         Too much noise from embedded Perl.
+##    -Wtraditional     We assume ANSI C, so these aren't interesting.
+##    -Wshadow          Names like log or index are too convenient.
+##    -Wcast-qual       Used for a while, but some casts are unavoidable.
+##    -Wconversion      Too much unsigned to signed noise.
+##    -Wredundant-decls Too much noise from system headers.
+##
+##  Some may be worth looking at again once a released version of gcc doesn't
+##  warn on system headers.  The warnings below are in the same order as
+##  they're listed in the gcc manual.
+##
+##  Add -g because when building with warnings one generally also wants the
+##  debugging information, and add -O because gcc won't find some warnings
+##  without optimization turned on.  Add -DDEBUG=1 so that we'll also
+##  compile all debugging code and check it as well.
+
+WARNINGS        = -g -O -DDEBUG=1 -Wall -W -Wendif-labels -Wpointer-arith \
+                  -Wbad-function-cast -Wcast-align -Wwrite-strings \
+                  -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs
+
+##  libtool support.  Note that INN does not use Automake (and that
+##  retrofitting Automake is likely more work than it's worth), so
+##  libtool-aware rules have to be written by hand.
+
+LIBTOOL         = @LIBTOOL@
+LIBTOOLCC       = @LIBTOOLCC@
+LIBTOOLLD       = @LIBTOOLLD@
+EXTOBJ          = @EXTOBJ@
+EXTLIB          = @EXTLIB@
+
+LIBCC           = $(LIBTOOLCC) $(CC)
+LIBLD           = $(LIBTOOLLD) $(CC)
+
+##  INN libraries.  Nearly all INN programs are linked with libinn, and any
+##  INN program that reads from or writes to article storage or overview is
+##  linked against libstorage.  EXTSTORAGELIBS is for external libraries
+##  needed by libstorage.
+
+LIBINN          = $(builddir)/lib/libinn$(LIBSUFFIX).$(EXTLIB)
+LIBHIST         = $(builddir)/history/libinnhist$(LIBSUFFIX).$(EXTLIB)
+LIBSTORAGE      = $(builddir)/storage/libstorage$(LIBSUFFIX).$(EXTLIB)
+EXTSTORAGELIBS  = @BERKELEY_DB_LIB@
+
+DBMINC          = @DBM_INC@
+DBMLIB          = @DBM_LIB@
+
+CRYPTLIB        = @CRYPT_LIB@
+PAMLIB          = @PAM_LIB@
+REGEXLIB        = @REGEX_LIB@
+SHADOWLIB       = @SHADOW_LIB@
+
+##  Embedding support.  Additional flags and libraries used when compiling
+##  or linking portions of INN that support embedded interpretors, set by
+##  configure based on what interpretor embeddings are selected.
+
+PERLLIB         = $(builddir)/lib/perl$(LIBSUFFIX).o @PERL_LIB@
+PERLINC         = @PERL_INC@
+
+PYTHONLIB       = @PYTHON_LIB@
+PYTHONINC       = @PYTHON_INC@
+
+##  OpenSSL support.  Additional flags and libraries used when compiling or
+##  linking code that contains OpenSSL support, and the path to the OpenSSL
+##  binaries.
+
+SSLLIB          = @SSL_LIB@
+SSLINC          = @SSL_INC@
+SSLBIN          = @SSL_BIN@
+
+##  SASL support.  Additional flags and libraries used when compiling or
+##  linking code that contains SASL support.
+
+SASLLIB         = @SASL_LIB@
+SASLINC         = @SASL_INC@
+
+##  Kerberos support.  Additional flags and libraries used when compiling or
+##  linking code that contains Kerberos support.  If Kerberos libraries were
+##  compiled, KRB5_AUTH is also set to the name of the Kerberos v5
+##  authenticator that should be compiled and installed.
+KRB5LIB                = @KRB5_LIB@
+KRB5INC                = @KRB5_INC@
+KRB5_AUTH      = @KRB5_AUTH@
<