diff -Nurp inn-2.6.4/CONTRIBUTORS inn-2.6.5/CONTRIBUTORS
--- inn-2.6.4/CONTRIBUTORS	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/CONTRIBUTORS	2022-02-18 20:36:57.000000000 +0100
@@ -278,4 +278,4 @@ Dennis Preiser, Paolo Amoroso, Dennis Da
 Tim Fardell, Remco Rijnders, David Binderman, Tony Evans, Christian Garbs,
 Jesse Rehmer, Colin Watson, Lauri Tirkkonen, Christian Mock, Marcus Jodorf,
 Richard Kettlewell, Yuriy M. Kaminskiy, Bill Parker, Thomas Hochstein,
-Tanguy Ortolo, Michael Baeuerle
+Tanguy Ortolo, Michael Baeuerle, Kevin Bowling
diff -Nurp inn-2.6.4/ChangeLog inn-2.6.5/ChangeLog
--- inn-2.6.4/ChangeLog	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/ChangeLog	1970-01-01 01:00:00.000000000 +0100
@@ -1,555 +0,0 @@
-2021-01-21  iulius
-
-	* Time to release 2.6.4!
-
-2021-01-20  iulius
-
-	* INSTALL: a bit of clean-up, and update the list of tested OS
-
-	* Update to latest upstream files
-	  
-	  control.ctl, pgpverify, Libtool, pkg-config, config.guess and
-	  config.sub
-
-	* Improve NEWS and add the new year in LICENSE
-
-	* Update links to external repositories
-
-	* Compare space usage of our 3 overview storage methods
-
-2021-01-17  iulius
-
-	* Add support for systemd socket activation
-	  
-	  Thanks to Marco d'Itri for that new feature!
-
-	* m4/krb5.m4: fix the detection of Kerberos V5 support
-	  
-	  Kerberos V5 was considered available even though C headers were
-	  not present. Now fixed that by probing both the existence of
-	  headers and libraries.
-
-	* m4/python.m4: fix the detection of old Python 2.x versions
-	  
-	  The current code for probing the presence of Python only workq
-	  with Python 2.7+ and 3.1+ because the "major" attribute to
-	  sys.version_info was only added in these versions.
-	  
-	  Also, the construct 'x for y in z' is too recent and not known by
-	  Python 2.3.0, the minimum version required for INN, so I changed
-	  it to a classic map(). If two arguments were not given to the m4
-	  macro, the script also failed. Now fixed.
-
-	* Use AS_ECHO instead of echo in Autoconf macros
-	  
-	  AS_ECHO is more portable. The echo shell function may not be
-	  reliable in the calls we do, with variables containing "-" or
-	  other characters.
-
-2021-01-15  iulius
-
-	* innd: add systemd notifications for xexec and shutdown
-
-	* inndf: report buffindexed usage with 2 decimals
-	  
-	  Output was truncated at the inferior number (e.g. 37.00%).
-
-2021-01-11  iulius
-
-	* Do not run the check for POD syntax if Test::POD is too old
-	  
-	  Test::POD versions prior to 1.50 may not ignore directories like
-	  .libs set in the ignore_dirs hash (due to a bug). This causes the
-	  test to fail whereas POD syntax is OK.
-
-	* Improve sample init systemd script
-	  
-	  Thanks to Marco d'Itri, Debian packager of INN, for the ideas.
-	  Also enable notify type.
-
-	* rc.news: start innd last when using systemd
-	  
-	  innd must be started last with exec to keep the same PID of this
-	  script.
-	  
-	  Patch from Marco d'Itri.
-
-2021-01-05  iulius
-
-	* Detail and homogenize the description of our 3 overview methods
-
-	* Makefile: Remove useless flags for the linker when just compiling
-	  lib/perl.c
-	  
-	  Use condensed $(LIBLD) variable.
-
-	* Add -fstack-protector-strong for linking if recognized
-	  
-	  Building innd on Solaris fails if the compiler does not have
-	  amongst its flags -fstack-protector-strong for linking.
-	  
-	  Undefined first referenced symbol in file __stack_chk_fail art.o
-	  __stack_chk_guard art.o ld: fatal: symbol referencing errors
-	  
-	  Also, if the compiler does not support -fstack-protector-strong
-	  for linking, assume it will not work, and remove that flag even
-	  for compiling (AIX typically does not have libssp_nonshared).
-
-2021-01-04  iulius
-
-	* configure: also change CC_WARNINGS when CFLAGS is changed
-
-	* Fix build issue when using "make warnings"
-	  
-	  -fPIE was not present when needed when using "make warnings",
-	  causing various problems.
-
-	* Move to configure.ac the logic to undefine AM_CONDITIONAL
-
-	* Added preliminary support for systemd notifications
-	  
-	  Integrate necessary Autoconf macros and portability headers to
-	  use systemd. Right now, only notifications of innd startup and
-	  mode changes are notified to the unit system.
-	  
-	  Thanks to Marco d'Itri for this first systemd integration into
-	  INN.
-
-2021-01-03  iulius
-
-	* Add a comment in configure.ac and fix POD typo from previous
-	  commits
-
-	* Fix build of fseeko replacement
-	  
-	  AC_FUNC_FSEEKO needs being called unconditionally out of
-	  consistency with the logic in clibrary.h (first looking for
-	  !HAVE_FSEEKO before DO_LARGEFILES, and not the contrary).
-
-	* inn.conf: Mention how to disable the process of cancel messages
-
-2020-12-31  eagle
-
-	* Add detail for rejected header
-	  
-	  When nnrpd rejects a posting because of an invalid header that
-	  isn't part of the header table, include the name of the header as
-	  an aid in debugging, or the full header if no colon could be
-	  found or if the line starts with a colon.
-	  
-	  Reported by Adam Sj��gren and Lars Ingebrigtsen.
-
-2020-12-24  eagle
-
-	* Fix some subtle errors with nnrpd external auth
-	  
-	  If nnrpd saw EOF on the stderr file descriptor from an external
-	  auth program, it would ignore any further output on stdout. This
-	  was the cause of the maddeningly intermittant nnrpd/auth-ext test
-	  failures for tests 56 and 59. Sometimes the closure of stderr
-	  would be seen before the flush of output on stdout, causing the
-	  code to fail to see the username.
-	  
-	  Fix this problem with more explicit state tracking for stderr. If
-	  we see EOF or an error in the stderr file descriptor, remove it
-	  from the select set but continue processing stdout until we also
-	  see an EOF or error there.
-	  
-	  Add a new test that explicitly closes stderr. This failed
-	  consistently with the previous code and passes consistently with
-	  this code.
-	  
-	  Also close the read and error file descriptors for the external
-	  authentication program in nnrpd. Previously, we were leaking
-	  those file descriptors.
-
-	* Switch nnrpd/auth-ext to the new test API
-	  
-	  Use the new test API so that failures will be reported with more
-	  detail in the hope that this will help track down the
-	  intermittant failure.
-
-	* Fix GCC warnings in tests/lib/date-t.c
-	  
-	  GCC 10.2.1 rightfully complains that the snprintf invocations in
-	  this test may overflow the buffer length and truncate. Use
-	  basprintf instead to avoid having to size buffers.
-
-2020-12-22  iulius
-
-	* pgpverify: add a comment about requirements for GnuPG 1.4.20 or
-	  2.1.0
-
-2020-12-19  eagle
-
-	* Use a fixed buffer size for QIO
-	  
-	  The buffer size for QIO is also a limit on the length of an
-	  overview line, and the previous complex approach resulted in a
-	  buffer size of 8KB on nearly all systems, which was too small in
-	  practice.
-	  
-	  Stop attempting to be clever and size according to the file
-	  system block size, which is generally small, and instead use a
-	  fixed and predictable buffer size of 32KB, which shouldn't be a
-	  problem on any modern system.
-
-2020-12-09  iulius
-
-	* INSTALL: Document the need of shared libraries or
-	  position-independent static libraries
-
-	* Update new name of macOS
-
-	* Typo in last commit
-
-	* Mention that lines in header field bodies are separated by mere
-	  LF in Perl nnrpd filter
-
-	* Update to latest rra-c-util upstream version
-	  
-	  Specific fixes for INN builds on Alpine and BSD: * In the
-	  getnameinfo replacement, handle musl libc's gethostbyaddr, which
-	  returns the string conversion of the IP address if the host
-	  doesn't resolve. This only affects the test suite, since musl
-	  libc supports IPv6 and thus doesn't need this replacement.
-	  
-	  * NetBSD prefers reallocarr to reallocarray and only prototypes
-	  the latter if _OPENBSD_SOURCE is defined, which is not one of the
-	  macros Autoconf defines by default. Work around this by checking
-	  whether reallocarray is declared, not only whether it's
-	  available, and protyping it if it's not declared. This uses the
-	  semi-hidden deprecated symbol on NetBSD.
-
-	* configure.ac: use new Autoconf 2.70 syntax for AC_PROG_LEX
-	  
-	  Use 'noyywrap' for AC_PROG_LEX. Use AC_CONFIG_HEADERS instead of
-	  obsolete AC_CONFIG_HEADER.
-	  
-	  >From Autoconf 2.70 documentation: AC_PROG_LEX now takes one
-	  argument, which may be either 'yywrap' or 'noyywrap'. If it is
-	  'noyywrap', AC_PROG_LEX will only set LEXLIB to '-lfl' or '-ll'
-	  if a scanner that defines both main and yywrap itself still needs
-	  something else from that library. On the other hand, if it is
-	  'yywrap', AC_PROG_LEX will fail (setting LEX to ':' and LEXLIB to
-	  nothing) if it can't find a library that defines yywrap.
-	  
-	  In the absence of arguments, AC_PROG_LEX's behavior is
-	  bug-compatible with 2.69, which did neither of the above things.
-	  This mode is deprecated.
-	  
-	  Prior to Autoconf 2.70, AC_PROG_LEX did not take any arguments,
-	  and its behavior was different from either of the above
-	  possibilities: it would search for a library that defines
-	  'yywrap', and would set 'LEXLIB' to that library if it finds one.
-	  However, if a library that defines this function could not be
-	  found, 'LEXLIB' would be left empty and 'LEX' would _not_ be
-	  reset. This behavior was due to a bug.
-
-	* Improve logs when Python filters are not installed
-
-2020-12-06  eagle
-
-	* Update URL for Postfilter
-	  
-	  code.google.com is no more. This seems to be the new location on
-	  GitHub.
-
-2020-12-01  iulius
-
-	* Fix build issue in linker feature probing
-	  
-	  Thanks to Bo Lindbergh for the report.
-
-	* Improve sample init systemd service unit
-	  
-	  Apply more protections. Sample shared by Russ Allbery.
-
-2020-11-24  iulius
-
-	* Fix other circular dependencies in builds
-
-2020-11-22  iulius
-
-	* Bump revision numbers in INN libraries
-
-	* Add a check in configure to prevent a build with shared non-PIC
-	  libraries
-
-	* Add support for hardening build flags
-	  
-	  New --enable-hardening-flags option to configure, enabled by
-	  default.
-	  
-	  It currently adds -fPIE, -fstack-protector-strong at build time,
-	  and -z relro as well as -z now at link time. More flags will
-	  eventually be added in future releases.
-	  
-	  This option can easily be disabled if the compiler or the
-	  platform does not support them well.
-
-	* Update to latest control.ctl upstream file
-
-2020-11-21  iulius
-
-	* Fix spurious errors when verifying POD syntax
-	  
-	  Exclude the directory of the test suite.
-
-	* Fix build with static libraries
-	  
-	  The ACTIVE parameter is no longer shared between expire.c and
-	  ov.c, so it no longer has to be exposed in ovinterface.h. Its
-	  removal fixes the naming conflict with another ACTIVE parameter
-	  in nnrpd.
-
-	* Update to latest Libtool and install-sh upstream versions
-	  
-	  Libtool => use Debian-2.4.6-14 version
-	  
-	  install-sh => upstream has integrated local modifications we had
-	  carried for years in INN. Parameters have been integrated with
-	  different names, so update Makefile accordingly (-c is now -p; -B
-	  is now -S) as well as documentation
-
-	* Update to latest config.guess and config.sub upstream versions
-
-	* Typo fixes
-
-	* Fix build with static libraries
-	  
-	  Circular dependencies were not correctly resolved by the linker.
-	  Seems to be a bug in the --preserve-dup-deps Libtool flag, that
-	  does not do what it is supposed to do. Fixed in a local
-	  modification in ltmain.sh, reported to upstream.
-
-	* sm: support reading and storing wire-format articles
-	  
-	  Any number of articles can now be given in wire format to sm on
-	  its standard input when both "-s" and "-R" are used. Only native
-	  format was previously possible.
-	  
-	  This might be useful for certain types of internal migrations.
-	  
-	  Thanks to Bo Lindbergh for the patch.
-
-2020-11-12  iulius
-
-	* innd: make SIGTERM behave exactly like "ctlinnd shutdown"
-	  
-	  Patch from Marco d'Itri.
-
-	* perl-nocem: document the use of gpg1 to import old PGP keys
-
-	* docs/pod.t: Fix path to Perl interpreter in test suite
-	  
-	  Thanks to Bo Lindbergh for the bug report.
-
-	* Add missing header files to silent gcc warning
-	  
-	  Fix build on a few systems like MacOS (warnings may make the
-	  system consider the configure test failed).
-	  
-	  Thanks to Bo Lindbergh for the bug report.
-
-	* Update to latest rra-c-util and C TAP Harness upstream versions
-
-	* Fix syntax in Makefile
-	  
-	  GNU make 4.3 emits the following warning: "ignoring prerequisites
-	  on suffix rule definition".
-	  
-	  In previous versions, no warning was emitted and a suffix rule
-	  was created, however all prerequisites were ignored and were not
-	  part of the suffix rule. Starting with GNU make 4.3, the
-	  behaviour is the same, and in addition a warning is generated.
-	  This commit fixes the syntax.
-
-	* Fix yacc declaration for types
-	  
-	  POSIX yacc reserves %type to nonterminals. Found with new -Wyacc
-	  warning option in Bison 3.5.
-
-2020-06-14  iulius
-
-	* innreport: silent normal behaviour from rnews
-	  
-	  - Only "bad_article missing Message-ID" was skipped whereas other
-	  header fields are also checked. Change to "bad_article missing ".
-	  
-	  - Skip all "rejected 437" and "rejected 439" because responses
-	  could be different with other news servers.
-
-2020-06-13  iulius
-
-	* innreport: externalize CSS
-	  
-	  Inline styles are not allowed by a (good) Content-Security-Policy
-	  because they're vulnerable to XSS. It has become common practice
-	  to always externalize all CSS into a separate file.
-	  
-	  External CSS is also more cacheable though this isn't the primary
-	  motivation here.
-	  
-	  Patch adapted from a suggestion of Richard Kettlewell.
-
-	* innreport: use INN version instead of legacy 3.1.0 version
-
-	* innreport: modernize HTML
-	  
-	  No insecure external content. Remove icons for W3C XHTML and CSS
-	  validation. The reason is to avoid errors when serving innreport
-	  output via HTTPS). Thanks to Richard Kettlewell for the patch.
-
-2020-05-24  iulius
-
-	* rnews: new -d flag to log duplicates
-	  
-	  When -d is used, rnews will syslog the message-ID and the Path
-	  header value of each article rejected as a duplicate by the
-	  server.
-	  
-	  It was previously only a compile-time option (DO_RNEWS_LOG_DUPS
-	  in options.h), which I am unsure worked fine because there were
-	  several wordings in the rnews code: DONT_RNEWS_LOG_DUPS,
-	  SYSLOG_RNEWS_LOG_DUPS, FILE_RNEWS_LOG_DUPS.
-	  
-	  Remove INN_PATH_RNEWS_DUP_LOG (hard-coded to "/dev/null"). One
-	  can now parameter its syslog configuration to obtain that
-	  information, if needed.
-
-	* Typo fix in a variable name
-	  
-	  Should have done a rebuild before committing!
-
-	* rnews: new -a flag to configure the use of additional unpackers
-	  
-	  Added a new "-a" flag to rnews to disallow, if needed, the use of
-	  additional unpackers from "<pathbin>/rnews.libexec"; only "rnews"
-	  and "cunbatch" will then be recognized as valid batch commands.
-	  
-	  It was previously only a compile-time option (DO_RNEWSPROGS).
-
-	* rnews: add -b flag to back up badly formatted articles
-	  
-	  This new -b flag to rnews permits saving rejected articles in the
-	  "bad" sub-directory of <pathincoming>. Otherwise, rnews just logs
-	  and discards any articles that are rejected or cannot be parsed
-	  for some reason.
-	  
-	  This feature was previously available only via the compile-time
-	  option DO_RNEWS_SAVE_BAD.
-	  
-	  Thanks to Herbert Xu for the proposal of making it easily
-	  available.
-
-2020-05-21  iulius
-
-	* Clarify nnrpd TLS instructions
-	  
-	  Thanks to Richard Kettlewell for the suggestion.
-
-2020-05-10  iulius
-
-	* Fix build with GCC 10.1
-	  
-	  Ensure that ser_line is at least 4-byte long. And that there is
-	  enough room in buff to copy the path.
-
-	* innd: remove unused filterPath variable
-	  
-	  Variable unused since 2001 (removal forgotten in commit 4435).
-
-2020-03-08  eagle
-
-	* Change readme.pod links to https
-	  
-	  Prefer https where available for links to supporting software.
-
-2020-01-07  eagle
-
-	* Suppress (spurious) uninitialized warnings
-	  
-	  GCC 8.3 thinks that some variables in buffindexed/buffindexed.c
-	  could be used uninitialized. Initialize them to silence the
-	  compiler.
-
-2019-10-31  eagle
-
-	* Make IOV_MAX Autoconf check more cross-compile-friendly
-	  
-	  The IOV_MAX Autoconf check always compiled and ran a program and
-	  relied on the output from that program to indicate that IOV_MAX
-	  was set in limits.h, which causes problems with
-	  cross-compilation. Instead, use AC_CHECK_DECL to check for the
-	  common case that IOV_MAX is defined in limits.h, and only compile
-	  and run a program for the uncommon case that this fails.
-	  
-	  Tested only on Linux, but by changing the probe to look for
-	  something other than IOV_MAX and then for something other than
-	  UIO_MAXIOV, to make sure all the branches work.
-	  
-	  Thanks, Helmut Grohne.
-
-2019-10-27  iulius
-
-	* cnfsstat: output information about retired CNFS buffers
-	  
-	  When not in a metacycbuff, CNFS buffers still mentioned in
-	  cycbuff were not displayed.
-
-2019-09-17  iulius
-
-	* nnrpd: fix the selection of DH parameters
-	  
-	  When the parameters have already been initialized, the callback
-	  returns NULL instead of the previously loaded buffer.
-	  
-	  Fix to previous commit 10344.
-	  
-	  Thanks to Adam D. Barratt for having caught the issue.
-
-2019-05-31  iulius
-
-	* nnrpd: Adapt the length of DH parameters depending on security
-	  level
-	  
-	  Remove hard-coded 512 and 1024-bit DH parameters to only use more
-	  secure DH parameters taken from a more recent RFC 7919.
-	  
-	  When OpenSSL is configured with a security level beyond 1 (which
-	  is the case with Debian Buster for instance), shorter parameters
-	  might not be accepted. Negotiations for ciphersuites using DHE
-	  key exchange then fail.
-	  
-	  From OpenSSL documentation: "Previous versions of the callback
-	  used is_export and keylength parameters to control parameter
-	  generation for export and non-export cipher suites. Modern
-	  servers that do not support export cipher suites are advised to
-	  either use SSL_CTX_set_tmp_dh() or alternatively, use the
-	  callback but ignore keylength and is_export and simply supply at
-	  least 2048-bit parameters in the callback."
-	  
-	  Thanks to Michael Baeuerle for the bug report.
-
-2019-05-30  iulius
-
-	* Fix string operation warnings with GCC 9
-	  
-	  Also use CNFSNASIZ when appropriate (for buffer names).
-
-	* nnrpd: fix build issue with LibreSSL
-	  
-	  LibreSSL defines itself as version 2 of OpenSSL, though not
-	  implementing the same API.
-
-2019-03-09  eagle
-
-	* Update URL for suck, remove newsx
-	  
-	  suck has a new usptream on GitHub. newsx appears to be thoroughly
-	  gone and has been removed from Debian, so remove it from README.
-
-2019-02-13  iulius
-
-	* Bump revision numbers to next release
diff -Nurp inn-2.6.4/HACKING inn-2.6.5/HACKING
--- inn-2.6.4/HACKING	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/HACKING	2022-02-18 20:36:57.000000000 +0100
@@ -9,14 +9,14 @@ Hacking INN
     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 check out the
-    current development tree using Subversion from:
+    considerably easier to integrate your work.  You can check out or clone
+    the current development tree using Git from:
 
-        <https://inn.eyrie.org/svn/>
+        <https://github.com/InterNetNews/inn.git>
 
-    or view it with Trac source browser at:
+    or browse the current development source on Github at:
 
-        <https://inn.eyrie.org/trac/browser/>
+        <https://github.com/InterNetNews/inn>
 
     You will need autoconf 2.64 or later to use the development tree.  After
     checking out the tree, run "./autogen" to generate the necessary
@@ -63,7 +63,7 @@ Configuring and Portability
     you can run "./autogen".  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.  These (and all
-    other) generated files should not be checked into Subversion.
+    other) generated files should not be checked into Git.
 
     At the time of this writing, autoconf 2.64 or later is required.
 
@@ -539,9 +539,7 @@ Coding Style
            /* This is a
               multiline comment. */
 
-       Comments before functions saying what they do are nice to have.  In
-       general, the RCS/SVN "Id" tag is on the first line of each source
-       file since it's useful to know when a file was last modified.
+       Comments before functions saying what they do are nice to have.
 
     *  Checks for NULL pointers are preferrably written out explicitly; in
        other words, use:
@@ -694,6 +692,8 @@ Making a Release
         --enable-shared=no, --enable-tagged-hash, --enable-keywords,
         --enable-largefiles and --enable-reduced-depends).
 
+        Update INSTALL with the list of supported systems.
+
     3.  Update copyright years in LICENSE.
 
     4.  Update doc/pod/news.pod and regenerate NEWS.  Be more detailed for a
@@ -717,17 +717,15 @@ Making a Release
         <https://www.gnu.org/software/libtool/manual/html_node/Updating-vers
         ion-info.html>.
 
-    7.  If making a major release, branch the source tree by creating a new
-        directory under branches in Subversion named after the major
-        release.  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.
+    7.  If making a major release, create a new branch in Git named after
+        the major release.  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.
 
-            svn copy -r ZZZZ -m "Branch Y.Y.0 release." \
-                file:///srv/svn/inn/trunk file:///srv/svn/inn/branches/Y.Y
+            git checkout -b Y.Y
 
         Then, in that newly created branch, remove the first paragraph in
-        doc/pod/readme.pod which deals with development versions.
+        readme.pod which deals with development versions.
 
     8.  Check out a copy of the release branch, and perform the following
         actions.
@@ -745,16 +743,7 @@ Making a Release
 
     9.  Run "make release" for a final release, "support/mksnapshot BETA b1"
         for the first beta version of a new release, or "support/mksnapshot
-        RC rc1" for the first release candidate version of a new release. 
-        Note that you need to have a copy of svn2cl from
-        <https://arthurdejong.org/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.)
-
-        Check that the ChangeLog file is correct; otherwise, regenerate it
-        or manually edit it.  Then run again "make release" or any other
-        command you used.
+        RC rc1" for the first release candidate version of a new release.
 
     10. Generate an MD5 checksum of the release tarball.
 
@@ -800,21 +789,28 @@ Making a Release
         update the ISC web site (the relevant contact is "web-request"
         instead of "webmaster").
 
-    14. After the ISC web site has been updated with links towards the new
-        release, send an announce on inn-announce and in news.software.nntp
-        (with a possible crosspost to news.admin.announce).
-
-    15. Tag the checked-out tree that was used for generating the release
-        with a release tag by copying it to tags in Subversion.
-
-            svn copy -r ZZZZ -m "Tag Y.Y.Y release." \
-                file:///srv/svn/inn/branches/Y.Y file:///srv/svn/inn/tags/Y.Y.Y
+    14. Publish a release in GitHub, based on the commit used to generate
+        the release tarball.  Include the description from NEWS, and attach
+        the tarball as well as its signature.
+
+        GitHub will create the appropriate annotated tag when publishing the
+        release.
+
+    15. After ftp.isc.org has correctly mirrored the release, send an
+        announce on inn-announce and in news.software.nntp (with a possible
+        crosspost to news.admin.announce).
+
+        The ISC web site does not need being updated as it does not directly
+        link to the release, nor mention the version of the last release. 
+        (Just check the information at
+        <https://www.isc.org/othersoftware/#INN> is still available and
+        accurate, though.)
 
     16. Bump revision numbers to reflect the one of the following release,
-        especially in doc/pod/install.pod and doc/pod/readme.pod for major
-        releases, configure.ac and Makefile.global.in for both minor and
-        major releases.  The release versions in the Trac wiki should also
-        be updated.
+        especially in doc/pod/install.pod and readme.pod for major releases,
+        configure.ac and Makefile.global.in for both minor and major
+        releases.  The release versions in the GitHub bug tracker should
+        also be updated.
 
     17. For major releases, ping Russ to update the branch used for the
         generation of STABLE snapshots.
@@ -840,22 +836,18 @@ References
         A collection of documents about the Usenet article format, including
         most of the relevant RFCs and Internet-Drafts.
 
-    <http://www.ietf.org/mail-archive/web/usefor/current/maillist.html>
+    <https://mailarchive.ietf.org/arch/browse/usefor/>
         The archives for the USEFOR IETF working group, the working group
         for the RFC 1036 replacement (the format of Usenet articles), now
         published as RFC 5536 and RFC 5537.
 
-    <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.  However, please note that
-        INN development now uses Subversion.
+    <http://www.mibsoftware.com/userkt/userkt.html>
+        Forrest Cavalier provides several tools related to earlier versions
+        of INN (2.0 to 2.3.x).  His web site is a great source of
+        information about Usenet in general.
 
     <http://tools.ietf.org/html/draft-lutchann-ipv6-intro-00>
         A primer on IPv6 with pointers to the appropriate places for more
         technical details as needed, useful when working on IPv6 support in
         INN.
 
-    $Id: hacking.pod 10531 2021-01-20 11:59:59Z iulius $
-
diff -Nurp inn-2.6.4/INSTALL inn-2.6.5/INSTALL
--- inn-2.6.4/INSTALL	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/INSTALL	2022-02-18 20:36:57.000000000 +0100
@@ -49,12 +49,13 @@ Supported Systems
     operating systems:
 
         AIX (including 7.2)
-        FreeBSD (including 12.1)
-        Linux (including 3.16, 4.19 and 5.10 kernels, glibc 2.19, 2.28 and 2.31)
-        macOS (including 11)
-        NetBSD (including 9.0)
-        OpenBSD (including 6.8)
-        Oracle Solaris (including 10 and 11)
+        FreeBSD (including 12.1 and 13.0)
+        Linux (including 3.16, 4.19, 5.10 and 5.15 kernels,
+               glibc 2.19, 2.28, 2.31 and 2.33)
+        macOS (including 11 and 12)
+        NetBSD (including 9.2)
+        OpenBSD (including 6.8 and 7.0)
+        Oracle Solaris (including 10 1/13 and 11.3)
 
     Current versions of INN may also work on other operating systems like
     HP-UX, OpenServer, SCO, UnixWare or UX/4800, as well as old versions of
@@ -170,12 +171,17 @@ Unpacking the Distribution
 
     If you want a more cutting-edge version, you can obtain current
     snapshots from <https://ftp.isc.org/isc/inn/snapshots/>.  These are
-    snapshots of the INN Subversion 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, 2020, would be named inn-CURRENT-20200406.tar.gz and
-    inn-STABLE-20200406.tar.gz.  Choose the newest file of whichever branch
+    snapshots of the INN Git tree taken daily; there are two snapshots made
+    each night in the daily subdirectory (one of the current development
+    branch, and one of the stable branch consisting of bug fixes to the
+    previous major release), and also daily snapshots at the top level of
+    the directory, updated only when the code changes in one of the two
+    branches.  They are stored in date format in the daily subdirectory; in
+    other words the snapshots from April 6th, 2020, would be named
+    inn-CURRENT-20200406.tar.gz and inn-STABLE-20200406.tar.gz.  At the top
+    level of the directory, the INN version number is used followed with
+    either the "git describe" version number for the stable branch or the
+    date for the main branch.  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.)
 
@@ -185,7 +191,8 @@ Unpacking the Distribution
         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.
+    inn-<version>, inn-<BRANCH>-<date>, inn-<stable branch version>-<git
+    version> or inn-<main branch version>-<date> where the source resides.
 
 Installing INN
 
@@ -526,8 +533,8 @@ Installing INN
     and the symbolic links for the libraries may point to the ".OLD"
     versions.  Nonetheless, reverting to a previous version of INN should
     work fine for official releases (that is to say releases that are not
-    daily STABLE or CURRENT snapshots) because a proper versioning is done,
-    during the release of a new version.
+    daily snapshots) because a proper versioning is done during the release
+    of a new version.
 
     If you are configuring TLS/SSL support for newsreaders, you must make a
     certificate and private key at least once.  Type:
@@ -750,7 +757,7 @@ Configuring INN
     will not match that article.  An article posted only to misc.bar will
     fail to match either pattern.
 
-    See uwildmat(3) for full details on wildmat patterns.
+    See libinn_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
@@ -1240,7 +1247,7 @@ Configuring INN
 
     expire.ctl sets the expiration policy for articles stored on the server.
     Be careful, since the default configuration will expire most articles
-    after 15 days; in most circumstances this deletion is *permanent*, so
+    after 90 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.)
@@ -1629,6 +1636,12 @@ Starting and Stopping the System
 
         su news -s /bin/sh -c 'killall nnrpd'
 
+    And also, an additional cleaning if a separate TLS nnrpd daemon was
+    started as explained above:
+
+        # Clean the PID file of the nnrpd daemon we started on port 563.
+        #rm -f <pathrun>/nnrpd-563.pid
+
 Processing Newsgroup Control Messages
 
     Control messages are specially-formatted messages that tell news servers
@@ -1694,5 +1707,3 @@ Processing Newsgroup Control Messages
     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.
 
-    $Id: install.pod 10535 2021-01-20 17:55:18Z iulius $
-
diff -Nurp inn-2.6.4/LICENSE inn-2.6.5/LICENSE
--- inn-2.6.4/LICENSE	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/LICENSE	2022-02-18 20:36:57.000000000 +0100
@@ -2,11 +2,10 @@ INN as a whole and all code contained in
 different licenses and/or copyrights is covered by the following copyright
 and license:
 
-   Copyright (c) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012,
-       2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021
+   Copyright (c) 2004-2022
        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
+   Copyright (c) 1991, 1994-2003
+       by The Internet Software Consortium and Rich Salz
 
    This code is derived from software contributed to the Internet Software
    Consortium by Rich Salz.
diff -Nurp inn-2.6.4/MANIFEST inn-2.6.5/MANIFEST
--- inn-2.6.4/MANIFEST	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/MANIFEST	2022-02-18 20:36:57.000000000 +0100
@@ -42,7 +42,7 @@ backends/ninpaths.c                   Pa
 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-ihave.in                Script to post ihave control 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
@@ -128,7 +128,6 @@ doc/man/batcher.8                     Ma
 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
@@ -137,7 +136,6 @@ doc/man/convdate.1                    Ma
 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/distributions.5               Manpage for distributions config file
 doc/man/docheckgroups.8               Manpage for docheckgroups
@@ -160,12 +158,12 @@ doc/man/innbind.8                     Ma
 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/innfeed.8                     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/innreport.conf.5              Manpage for innreport.conf
 doc/man/innstat.8                     Manpage for innstat utility
 doc/man/innupgrade.8                  Manpage for innupgrade utility
 doc/man/innwatch.8                    Manpage for innwatch
@@ -174,9 +172,15 @@ doc/man/innxbatch.8                   Ma
 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/libinn_clientlib.3            Manpage for C News library interface
+doc/man/libinn_dbz.3                  Manpage for DBZ database interface
+doc/man/libinn_inndcomm.3             Manpage for part of INN library
+doc/man/libinn_list.3                 Manpage for list routines
+doc/man/libinn_qio.3                  Manpage for fast I/O file routines
+doc/man/libinn_tst.3                  Manpage for ternary search tree routines
+doc/man/libinn_uwildmat.3             Manpage for uwildmat library routine
 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/makedbz.8                     Manpage for makedbz
 doc/man/makehistory.8                 Manpage for makehistory
@@ -206,14 +210,14 @@ doc/man/pgpverify.1                   Ma
 doc/man/procbatch.8                   Manpage for procbatch
 doc/man/prunehistory.8                Manpage for prunehistory
 doc/man/pullnews.1                    Manpage for pullnews
-doc/man/qio.3                         Manpage for fast I/O file routines
 doc/man/radius.8                      Manpage for radius authenticator
 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/scanlogs.8                    Manpage for scanlogs
 doc/man/scanspool.8                   Manpage for scanspool
-doc/man/send-nntp.8                   Manpage for send-nntp and send-ihave
+doc/man/send-ihave.8                  Manpage for send-ihave
+doc/man/send-nntp.8                   Manpage for send-nntp
 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
@@ -225,8 +229,6 @@ doc/man/subscriptions.5               Ma
 doc/man/tally.control.8               Manpage for tally.control
 doc/man/tdx-util.8                    Manpage for tdx-util
 doc/man/tinyleaf.8                    Manpage for tinyleaf
-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
@@ -258,9 +260,11 @@ doc/pod/expireover.pod                Ma
 doc/pod/expirerm.pod                  Master file for expirerm.8
 doc/pod/external-auth.pod             Master file for doc/external-auth
 doc/pod/fastrm.pod                    Master file for fastrm.1
+doc/pod/filechan.pod                  Master file for filechan.8
 doc/pod/getlist.pod                   Master file for getlist.1
 doc/pod/grephistory.pod               Master file for grephistory.1
 doc/pod/hacking.pod                   Master file for HACKING
+doc/pod/history.pod                   Master file for history.5
 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
@@ -276,14 +280,26 @@ doc/pod/inndf.pod                     Ma
 doc/pod/innfeed.conf.pod              Master file for innfeed.conf.5
 doc/pod/innfeed.pod                   Master file for innfeed.8
 doc/pod/innmail.pod                   Master file for innmail.1
+doc/pod/innreport.conf.pod            Master file for innreport.conf.5
+doc/pod/innreport.pod                 Master file for innreport.8
+doc/pod/innstat.pod                   Master file for innstat.8
 doc/pod/innupgrade.pod                Master file for innupgrade.8
+doc/pod/innwatch.ctl.pod              Master file for innwatch.ctl.5
 doc/pod/innwatch.pod                  Master file for innwatch.8
+doc/pod/innxbatch.pod                 Master file for innxbatch.8
 doc/pod/innxmit.pod                   Master file for innxmit.8
 doc/pod/install.pod                   Master file for INSTALL
 doc/pod/libauth.pod                   Master file for libauth.3
+doc/pod/libinn.pod                    Master file for libinn.3
+doc/pod/libinn_clientlib.pod          Master file for libinn_clientlib.3
+doc/pod/libinn_dbz.pod                Master file for libinn_dbz.3
+doc/pod/libinn_inndcomm.pod           Master file for libinn_inndcomm.3
+doc/pod/libinn_list.pod               Master file for libinn_list.3
+doc/pod/libinn_qio.pod                Master file for libinn_qio.3
+doc/pod/libinn_tst.pod                Master file for libinn_tst.3
+doc/pod/libinn_uwildmat.pod           Master file for libinn_uwildmat.3
 doc/pod/libinnhist.pod                Master file for libinnhist.3
 doc/pod/libstorage.pod                Master file for libstorage.3
-doc/pod/list.pod                      Master file for list.3
 doc/pod/makedbz.pod                   Master file for makedbz.8
 doc/pod/makehistory.pod               Master file for makehistory.8
 doc/pod/mod-active.pod                Master file for mod-active.8
@@ -297,6 +313,8 @@ doc/pod/newsgroups.pod                Ma
 doc/pod/newslog.pod                   Master file for newslog.5
 doc/pod/ninpaths.pod                  Master file for ninpaths.8
 doc/pod/nnrpd.pod                     Master file for nnrpd.8
+doc/pod/nnrpd.track.pod               Master file for nnrpd.track.5
+doc/pod/nntpget.pod                   Master file for nntpget.1
 doc/pod/nntpsend.ctl.pod              Master file for nntpsend.ctl.5
 doc/pod/nntpsend.pod                  Master file for nntpsend.8
 doc/pod/ovdb.pod                      Master file for ovdb.5
@@ -309,16 +327,17 @@ doc/pod/passwd.nntp.pod               Ma
 doc/pod/procbatch.pod                 Master file for procbatch.8
 doc/pod/prunehistory.pod              Master file for prunehistory.8
 doc/pod/pullnews.pod                  Master file for pullnews.1
-doc/pod/qio.pod                       Master file for qio.3
 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/rnews.pod                     Master file for rnews.1
 doc/pod/scanlogs.pod                  Master file for scanlogs.8
 doc/pod/scanspool.pod                 Master file for scanspool.8
+doc/pod/send-ihave.pod                Master file for send-ihave.8
+doc/pod/send-nntp.pod                 Master file for send-nntp.8
 doc/pod/sendinpaths.pod               Master file for sendinpaths.8
 doc/pod/shlock.pod                    Master file for shlock.1
+doc/pod/shrinkfile.pod                Master file for shrinkfile.1
 doc/pod/simpleftp.pod                 Master file for simpleftp.1
 doc/pod/sm.pod                        Master file for sm.1
 doc/pod/storage.conf.pod              Master file for storage.conf.5
@@ -326,8 +345,7 @@ doc/pod/subscriptions.pod             Ma
 doc/pod/tally.control.pod             Master file for tally.control.8
 doc/pod/tdx-util.pod                  Master file for tdx-util.8
 doc/pod/tinyleaf.pod                  Master file for tinyleaf.8
-doc/pod/tst.pod                       Master file for tst.3
-doc/pod/uwildmat.pod                  Master file for uwildmat.3
+doc/pod/writelog.pod                  Master file for writelog.8
 doc/sample-control                    Sample PGP-signed control message
 expire                                Expiration and recovery (Directory)
 expire/Makefile                       Makefile for expiration
@@ -485,6 +503,7 @@ lib                                   IN
 lib/Makefile                          Makefile for library
 lib/alloca.c                          alloca replacement
 lib/argparse.c                        Functions for parsing arguments
+lib/artnumber.c                       Manipulation of article numbers
 lib/asprintf.c                        asprintf replacement
 lib/buffer.c                          Reusable counted buffer
 lib/cleanfrom.c                       Clean out a From line
@@ -530,7 +549,6 @@ lib/network-innbind.c                 Ne
 lib/network.c                         Network utility functions
 lib/newsuser.c                        Ensure running as news user/group
 lib/nntp.c                            NNTP utility library
-lib/numbers.c                         Manipulation of numbers
 lib/perl.c                            Perl hook support for nnrpd and innd
 lib/pread.c                           pread replacement
 lib/pwrite.c                          pwrite replacement
@@ -541,6 +559,7 @@ lib/reallocarray.c                    re
 lib/remopen.c                         Open a remote NNTP connection
 lib/reservedfd.c                      File descriptor reservation
 lib/resource.c                        Get process CPU usage
+lib/sd-daemon.c                       Stubs for systemd library functions
 lib/sendarticle.c                     Send an article, NNTP style
 lib/sendpass.c                        Send NNTP authentication
 lib/sequence.c                        Sequence space arithmetic routines
@@ -632,6 +651,7 @@ perl/INN/Config.pm.in                 IN
 perl/INN/Utils                        INN::Utils Perl modules (Directory)
 perl/INN/Utils/Shlock.pm.in           INN::Utils::Shlock module
 perl/Makefile                         Makefile for perl libraries
+readme.pod                            Master file for README
 samples                               Prototype INN config files (Directory)
 samples/INN.py                        Stub Python functions
 samples/Makefile                      Makefile for samples
@@ -781,7 +801,6 @@ support/indent                        A
 support/install-sh                    Installation utility
 support/ltmain.sh                     Source for libtool utility
 support/makedepend                    Generate dependencies for C files
-support/mkchangelog                   Generate ChangeLog from Subversion
 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
@@ -879,6 +898,7 @@ tests/innd/artparse-t.c               Te
 tests/innd/chan-t.c                   Tests for CHAN functions in innd
 tests/innd/fakeinnd.c                 Provide symbols defined by innd/innd.c
 tests/lib                             Test suite for libinn (Directory)
+tests/lib/artnumber-t.c               Tests for lib/artnumber.c
 tests/lib/asprintf-t.c                Tests for lib/asprintf.c
 tests/lib/buffer-t.c                  Tests for lib/buffer.c
 tests/lib/concat-t.c                  Tests for lib/concat.c
diff -Nurp inn-2.6.4/Makefile inn-2.6.5/Makefile
--- inn-2.6.4/Makefile	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/Makefile	2022-02-18 20:36:57.000000000 +0100
@@ -1,14 +1,14 @@
-##  $Id: Makefile 9832 2015-05-01 09:11:23Z iulius $
-
 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) $(PATHHTTP) $(PATHLIB) \
-		$(PATHLIBPERL) $(PATHLIBPERL)/INN $(PATHDATASHARE) \
-		$(PATHMAN) $(MAN1) $(MAN3) $(MAN3PM) $(MAN5) $(MAN8) $(PATHSPOOL) \
+		$(PATHRNEWS) $(PATHDB) $(PATHDOC) $(PATHETC) $(PATHHTTP) \
+		$(PATHLIB) $(PATHLIBPERL) $(PATHLIBPERL)/INN \
+		$(PATHLIBPERL)/INN/Utils $(PATHDATASHARE) \
+		$(PATHMAN) $(MAN1) $(MAN3) $(MAN3PM) $(MAN5) $(MAN8) \
+		$(PATHSPOOL) \
 		$(PATHTMP) $(PATHARCHIVE) $(PATHARTICLES) $(PATHINCOMING) \
 		$(PATHINBAD) $(PATHTAPE) $(PATHOVERVIEW) $(PATHOUTGOING) \
 		$(PATHLOG) $(PATHLOGOLD) $(PATHINCLUDE)
@@ -40,39 +40,34 @@ SNAPDIRS    = -e 1,2d -e '/(Directory)/!
 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.
-##  Be careful of a non-GNU make:  after a completed command, it does not
+##  Major target -- build everything.
+##
+##  We have to loop through all the directories, because otherwise the build
+##  fails if make -j works on more than one directory at a time.
+##  libstorage depends on libinnhist, but some of the storage/...
+##  programs depend on libinnhist, hence the two calls into storage.
+##
+##  Be careful of a non-GNU make: after a completed command, it does not
 ##  necessarily return the script back to the starting directory.
-all: all-include all-libraries all-programs
-	cd doc     && $(MAKE) all || exit 1 ; cd ..
-	cd samples && $(MAKE) all || exit 1 ; cd ..
-	cd site    && $(MAKE) all || exit 1 ; cd ..
-
-all-include:			; cd include   && $(MAKE) all
-
-all-libraries:	all-lib all-storage all-history all-perl
-
-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-perl:	all-history	; cd perl      && $(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
+all:
+	cd include     && $(MAKE) all      || exit 1 ; cd ..
+	cd lib         && $(MAKE) all      || exit 1 ; cd ..
+	cd storage     && $(MAKE) library  || exit 1 ; cd ..
+	cd history     && $(MAKE) all      || exit 1 ; cd ..
+	cd innd        && $(MAKE) all      || exit 1 ; cd ..
+	cd nnrpd       && $(MAKE) all      || exit 1 ; cd ..
+	cd innfeed     && $(MAKE) all      || exit 1 ; cd ..
+	cd control     && $(MAKE) all      || exit 1 ; cd ..
+	cd expire      && $(MAKE) all      || exit 1 ; cd ..
+	cd frontends   && $(MAKE) all      || exit 1 ; cd ..
+	cd backends    && $(MAKE) all      || exit 1 ; cd ..
+	cd authprogs   && $(MAKE) all      || exit 1 ; cd ..
+	cd scripts     && $(MAKE) all      || exit 1 ; cd ..
+	cd perl        && $(MAKE) all      || exit 1 ; cd ..
+	cd storage     && $(MAKE) programs || exit 1 ; cd ..
+	cd doc         && $(MAKE) all      || exit 1 ; cd ..
+	cd samples     && $(MAKE) all      || exit 1 ; cd ..
+	cd site        && $(MAKE) all      || exit 1 ; cd ..
 
 
 ##  If someone tries to run make before running configure, tell them to run
@@ -176,7 +171,7 @@ maintclean:
 	rm -f LIST.* Makefile.global config.cache config.log
 	rm -f config.status libtool support/fixconfig support/fixscript
 	rm -f config.status.lineno configure.lineno
-	rm -f CHANGES ChangeLog inn*.tar.gz configure include/config.h.in
+	rm -f inn*.tar.gz configure include/config.h.in
 	rm -rf $(TARDIR)
 
 ##  Other generic targets.
@@ -203,7 +198,7 @@ warnings:
 ##  the version information in Makefile.global.in to remove the prerelease
 ##  designation and update all timestamps to the date the release is made.
 ##  If RELEASENUMBER is set, it is a beta release or a release candidate.
-release: ChangeLog
+release:
 	rm -rf $(TARDIR)
 	rm -f inn*.tar.gz
 	mkdir $(TARDIR)
@@ -219,17 +214,10 @@ release: ChangeLog
 	    $(SED) 's/= prerelease/=/' Makefile.global.in \
 	        > $(TARDIR)/Makefile.global.in ; \
 	fi
-	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 svn log working and also
-##  requires svn2cl 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.
@@ -239,9 +227,9 @@ check-manifest:
 	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.
+##  Make a snapshot.  This is like making a release, except that 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
diff -Nurp inn-2.6.4/Makefile.global.in inn-2.6.5/Makefile.global.in
--- inn-2.6.4/Makefile.global.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/Makefile.global.in	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: Makefile.global.in 10485 2021-01-04 10:02:52Z 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.
@@ -18,7 +16,7 @@
 ##      keep their length reasonable; otherwise, your news server will not
 ##      be complying with the NNTP protocol.
 
-VERSION		= 2.6.4
+VERSION		= 2.6.5
 VERSION_EXTRA	=
 
 ##  The absolute path to the top of the build directory, used to find the
@@ -356,6 +354,7 @@ CP_RPRI		= $(INSTALL) $(OWNER) -m 0640 $
 CP_RPUB		= $(INSTALL) $(OWNER) -m 0644 $(BACKUP_OPTION)
 CP_XPRI		= $(INSTALL) $(OWNER) -m 0550 $(BACKUP_OPTION)
 CP_XPUB		= $(INSTALL) $(OWNER) -m 0555 $(BACKUP_OPTION)
+CP_WXPUB	= $(INSTALL) $(OWNER) -m 0755 $(BACKUP_OPTION)
 
 CP_DATA		= $(INSTALL) $(OWNER) -m $(FILEMODE) $(BACKUP_OPTION)
 CP_MAN		= $(INSTALL) $(OWNER) -m 0444
diff -Nurp inn-2.6.4/NEWS inn-2.6.5/NEWS
--- inn-2.6.4/NEWS	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/NEWS	2022-02-18 20:36:57.000000000 +0100
@@ -1,3 +1,80 @@
+Changes in 2.6.5
+
+    * A new step in INN development has been achieved with the migration of
+      the INN project to GitHub.  We now make use of the features GitHub
+      provides: issue tracker, pull requests, continuous integration, a
+      user-friendly interface to browse the code, etc.  Our Subversion
+      repository has therefore been migrated to Git, and our Trac tickets to
+      the GitHub issue tracker.
+
+    * An up-to-date nocem.ctl file is provided with this release.  You
+      should manually update your nocem.ctl file with the new information
+      recorded about NoCeM issuers, and make sure the right PGP keys are
+      present on your system.
+
+    * Up-to-date control.ctl and moderators files are provided with this
+      release.  You should manually update them (notably for the fido7.*
+      hierarchy).
+
+    * Added a stricter validation of article numbers given in NNTP commands
+      so that numbers superior to 2^31 are correctly considered invalid. 
+      Thanks to Richard Kettlewell for the patch.
+
+    * Added a check in rc.news for the existence of the *pathrun* directory.
+      INN won't start until this directory is writable.  Previously, it
+      bailed out quickly after starting, without clear logs about why it
+      failed.
+
+    * Fixed parallel builds using "make -j".  Thanks to Richard Kettlewell
+      for the path.
+
+    * nnrpd now properly gathers timer statistics when a compression layer
+      is active.
+
+    * nnrpd now properly discards data received from a news client after a
+      timeout when a TLS layer is active.  It previously tried to read
+      incoming data before closing the socket, leading to decoding errors
+      from an underlying compression or SASL layer.
+
+    * innfeed and ovdb_stat now generate status reports in valid HTML
+      syntax.
+
+    * Fixed a bug in the buffindexed overview that prevented it from working
+      on several systems, amongst them FreeBSD.  Unsupported, and useless,
+      permission bits were given to semaphores.
+
+    * Fixed the detection of library paths at configure time: multilib
+      directories (lib32 or lib64) are now also used if they exist, even it
+      the system does not use multilib.  It will notably fix the detection
+      of the OpenSSL 3.0.0 library.
+
+    * The *tlscertfile* parameter in inn.conf now permits the use of a
+      complete certificate chain, instead of necessarily having to use
+      *tlscafile* for additional certificates.
+
+    * Added support for the new OpenSSL 3.0.0 API, which deprecated a few
+      functions.
+
+    * The inn.conf default value for *tlsprotocols* no longer contains TLS
+      versions 1.0 and 1.1, which have been deprecated by RFC 8996.
+
+    * A new inn.conf parameter has been added to tune the length of the
+      queue of pending connections to innd, nnrpd and the "ovdb" overview
+      storage method: the *maxlisten* parameter now permits configuring
+      their listen backlog, whose previously hard-coded values were 128 for
+      nnrpd and 25 for the others, which was not high enough for some uses. 
+      The default value is now 128 for all of them, and configurable in
+      inn.conf.  Thanks to Kevin Bowling for the patch.
+
+    * The name of seven man pages for routines built in libinn(3) are now
+      prefixed with libinn_ so as not to consume namespace and conflict with
+      other packages (notably, the list(3) and uwildmat(3) man pages are now
+      named libinn_list(3) and libinn_uwildmat(3)).
+
+    * Other minor bug fixes and documentation improvements, notably a
+      revised installation checklist and a section summarizing the most used
+      configuration at the beginning of a few complex man pages.
+
 Changes in 2.6.4
 
     * Added support for systemd notifications and socket activation.  Use of
@@ -9,18 +86,18 @@ Changes in 2.6.4
       exchange so as to comply with the security level OpenSSL 1.1.0 or
       later expects.  Thanks to Michael Baeuerle for the bug report.
 
-    * cnfsstat now also returns information about retired CNFS buffers, that
-      is to say buffers mentioned in cycbuff.conf as a cycbuff but not
-      declared in a metacycbuff.
-
-    * Switch default innreport behaviour to common practice of externalizing
-      CSS into a separate file.  Its name can be configured with the
-      *html_css_url* parameter in innreport.conf.  If this parameter is
-      unset, the default innreport.css file name will be used and innreport
-      will generate this CSS file for you.  Previously generated reports are
-      kept untouched, though, and will still contain inline CSS if you had
-      not already set the *html_css_url* parameter in previous INN versions.
-      Thanks to Richard Kettlewell for the patch.
+    * cnfsstat now also returns information about retired CNFS buffers:
+      buffers mentioned in cycbuff.conf as a cycbuff but not declared in a
+      metacycbuff.
+
+    * Switch default innreport behaviour to the common practice of
+      externalizing CSS into a separate file.  Its name can be configured
+      with the *html_css_url* parameter in innreport.conf.  If this
+      parameter is unset, the default innreport.css file name will be used
+      and innreport will generate this CSS file for you.  Previously
+      generated reports are kept untouched, though, and will still contain
+      inline CSS if you had not already set the *html_css_url* parameter in
+      previous INN versions.  Thanks to Richard Kettlewell for the patch.
 
     * sm can now read and store any number of articles given in wire format
       on its standard input when both -s and -R are used.  Only native
@@ -36,7 +113,7 @@ Changes in 2.6.4
       rnews just logs and discards any articles that are rejected or cannot
       be parsed for some reason.
 
-    * Added new -d flag to rnews to log via syslog the message-ID and the
+    * Added new -d flag to rnews to log via syslog the Message-ID and the
       Path header value of each article rejected as a duplicate.
 
     * Added new --enable-hardening-flags configure-time option, enabled by
@@ -51,7 +128,7 @@ Changes in 2.6.3
       later; NIST P-256 was enforced instead of using the most secure curve.
 
     * A new inn.conf parameter has been added to fine-tune the cipher suites
-      to use with TLS 1.3:  the *tlsciphers13* now permits configuring them.
+      to use with TLS 1.3: the *tlsciphers13* now permits configuring them. 
       A separate cipher suite configuration parameter is needed for TLS 1.3
       because TLS 1.3 cipher suites are not compatible with TLS 1.2, and
       vice-versa.  In order to avoid issues where legacy TLS 1.2 cipher
@@ -94,7 +171,7 @@ Changes in 2.6.2
 
     * A new *syntaxchecks* parameter has been added in inn.conf.  It permits
       controlling the level of checks performed by innd and nnrpd.  Up to
-      now, only one check can be enabled/disabled:  when *laxmid* is
+      now, only one check can be enabled/disabled: when *laxmid* is
       mentioned in the values of this new parameter, INN accepts Message-IDs
       that contain ".." in the left part, as well as Message-IDs with two
       "@" (such Message-IDs would otherwise be considered as syntactically
@@ -110,10 +187,10 @@ Changes in 2.6.2
       databases.
 
     * mailpost now removes empty header fields before attempting to post
-      articles, and keeps trace of them in the X-Mailpost-Empty-Hdrs: newly
-      generated header field body.  Also, mailpost now sanitizes header
-      fields with regards to empty continuation header lines.  Thanks to
-      Kamil Jonca for these bug reports.
+      articles, and keeps trace of them in the newly generated
+      X-Mailpost-Empty-Hdrs header field body.  Also, mailpost now sanitizes
+      header fields with regards to empty continuation header lines.  Thanks
+      to Kamil Jonca for these bug reports.
 
     * A new -z parameter has been added to mailpost to mention a list of
       header fields to remove from the gated message.  Thanks to Dieter
@@ -126,7 +203,7 @@ Changes in 2.6.2
 
     * Added support for GnuPG's gpg binary (in addition to gpgv) in
       pgpverify.  Indeed, gpg still validates signatures made with weak
-      digest algorithms like MD5 whereas gpgv no longer do.  Thanks to
+      digest algorithms like MD5 whereas gpgv no longer does.  Thanks to
       Thomas Hochstein for the patch, which permits validating control
       articles for hierarchies that are still using old PGP keys.
 
@@ -148,7 +225,7 @@ Changes in 2.6.2
 
 Changes in 2.6.1
 
-    * nnrpd now uses -0000 as the time zone for Date: and Injection-Date:
+    * nnrpd now uses -0000 as the time zone for Date and Injection-Date
       header fields it generates.  It was previously using +0000, wrongly
       systematically indicating a local time zone at Universal Time when
       *localtime* is set to false (which is the default) in readers.conf. 
@@ -156,12 +233,13 @@ Changes in 2.6.1
       true and UTC is really the local time zone of the server.
 
     * Julien Elie has implemented in nnrpd the new COMPRESS command
-      described in draft-murchison-nntp-compress that extends the NNTP
-      protocol to allow a connection to be effectively and efficiently
-      compressed.  News clients that also support that extension will be
-      able to benefit from that bandwidth optimization and improvement in
-      speed.  Moreover, using COMPRESS is more secure than TLS-level
-      compression, as far as authentication credentials are concerned.
+      described in the *draft-murchison-nntp-compress* Internet-Draft that
+      extends the NNTP protocol to allow a connection to be effectively and
+      efficiently compressed.  News clients that also support that extension
+      will be able to benefit from that bandwidth optimization and
+      improvement in speed.  Moreover, using COMPRESS is more secure than
+      TLS-level compression, as far as authentication credentials are
+      concerned.
 
     * The default value for the *tlscompression* parameter in inn.conf has
       changed.  TLS-level compression is now disabled by default, to comply
@@ -175,12 +253,12 @@ Changes in 2.6.1
     * rnews no longer segfaults at startup when started setuid news.  Thanks
       to Marcus Jodorf for the bug report.
 
-    * Fixed slow nnrpd responses for a few NNTP commands.  The TCP_NODELAY
+    * Fixed slow nnrpd responses for a few NNTP commands.  The "TCP_NODELAY"
       option was unconditionally set whereas only BSD/OS systems needed it. 
       Thanks to Christian Mock for having discovered that.
 
-    * Articles containing a Received: or a Posted: header field are no
-      longer rejected by nnrpd at injection time.
+    * Articles containing a Received or a Posted header field are no longer
+      rejected by nnrpd at injection time.
 
     * Articles containing control characters or whitespace-only content
       lines in their headers are now rejected by nnrpd at injection time.
@@ -232,20 +310,20 @@ Upgrading from 2.5 to 2.6
       mailpost-msgid.pag from *pathtmp* to *pathdb*.
 
     * If you have been using TLS/SSL with nnrpd before, be aware that the
-      default value of a few inn.conf parameters have changed:  the server
+      default value of a few inn.conf parameters have changed: the server
       now decides the preferred cipher (instead of the client), and only TLS
       protocols are allowed (using the flawed SSLv2 and SSLv3 protocols is
       now disabled).  If you want to change these settings, the respective
       *tlspreferserverciphers* and *tlsprotocols* parameters can be tuned to
       your needs.
 
-    * The --with-kerberos configure flag used to add Kerberos v5 support has
-      been renamed to --with-krb5.
+    * The --with-kerberos "configure" flag used to add Kerberos v5 support
+      has been renamed to --with-krb5.
 
-    * The --with-berkeleydb configure flag used to add Berkeley DB support
+    * The --with-berkeleydb "configure" flag used to add Berkeley DB support
       has been renamed to --with-bdb.
 
-    * The --enable-ipv6 configure flag no longer exists.  IPv6 is now
+    * The --enable-ipv6 "configure" flag no longer exists.  IPv6 is now
       unconditionally enabled, if available.
 
     * $HOME is no longer exported as an environment variable by
@@ -265,13 +343,13 @@ Upgrading from 2.5 to 2.6
       A manual review of authenticated feeds should then be done so as to
       ensure that they are properly working.
 
-    * The Injection-Date: and Injection-Info: headers are now generated by
-      nnrpd at injection time instead of the NNTP-Posting-Date:,
-      NNTP-Posting-Host:, X-Complaints-To: and X-Trace: headers.  Local
+    * The Injection-Date and Injection-Info header fields are now generated
+      by nnrpd at injection time instead of the NNTP-Posting-Date,
+      NNTP-Posting-Host, X-Complaints-To and X-Trace header fields.  Local
       scripts that were using (for authentication, privacy, etc.) these now
-      deprecated headers should be updated.  Also note that the Path: header
-      of locally posted articles can also contain the contents of the
-      deprecated NNTP-Posting-Host: field.
+      deprecated header fields should be updated.  Also note that the Path
+      header field of locally posted articles can also contain the contents
+      of the deprecated NNTP-Posting-Host header field.
 
     * The two *addnntppostingdate* and *addnntppostinghost* parameters in
       inn.conf have been respectively renamed to *addinjectiondate* and
@@ -281,16 +359,16 @@ Upgrading from 2.5 to 2.6
 
     * The default values of a few inn.conf parameters have changed to make
       use of the vastly expanded storage and RAM commonly available today:
-      datamovethreshold (from 8192 to 16384), msgidcachesize (from 16000 to
-      64000), overcachesize (from 64 to 128), and wireformat (now enabled by
-      default).
+      *datamovethreshold* (from 8192 to 16384), *msgidcachesize* (from 16000
+      to 64000), *overcachesize* (from 64 to 128), and *wireformat* (now
+      enabled by default).
 
       The generation of status reports and performance timings are now also
-      enabled by default:  logstatus and nnrpdoverstats parameters, with a
-      frequency of 10 minutes (status and timer parameters).
+      enabled by default: *logstatus* and *nnrpdoverstats* parameters, with
+      a frequency of 10 minutes (*status* and *timer* parameters).
 
-    * The default value of max-queue-size has changed from 5 to 20, and
-      use-mmap now defaults to true for innfeed.conf.
+    * The default value of *max-queue-size* has changed from 5 to 20, and
+      *use-mmap* now defaults to true for innfeed.conf.
 
     If you are upgrading from a version prior to INN 2.5, see also
     "Upgrading from 2.4 to 2.5".
@@ -302,36 +380,37 @@ Changes in 2.6.0
       password to be sent by authenticated peers.  See the note above for
       more details.
 
-    * The Lines: header is no longer generated by nnrpd at injection time.
+    * The Lines header field is no longer generated by nnrpd at injection
+      time.
 
-    * The Injection-Date: header is now generated by nnrpd at injection time
-      instead of the deprecated NNTP-Posting-Date: header, when
+    * The Injection-Date header field is now generated by nnrpd at injection
+      time instead of the deprecated NNTP-Posting-Date header field, when
       *addinjectiondate* is set to true.  Note that *addnntppostingdate* has
       been renamed to *addinjectiondate* in inn.conf.
 
-    * The Injection-Info: header is now generated by nnrpd at injection time
-      instead of the deprecated NNTP-Posting-Host: (when
-      *addinjectionpostinghost* is set to true), X-Complaints-To: and
-      X-Trace: headers.  Note that *addnntppostinghost* has been renamed to
-      *addinjectionpostinghost* in inn.conf.  The Path: header of locally
-      posted articles now also contains the contents of the
-      NNTP-Posting-Host: header.
+    * The Injection-Info header field is now generated by nnrpd at injection
+      time instead of the deprecated NNTP-Posting-Host (when
+      *addinjectionpostinghost* is set to true), X-Complaints-To and X-Trace
+      header fields.  Note that *addnntppostinghost* has been renamed to
+      *addinjectionpostinghost* in inn.conf.  The Path header field of
+      locally posted articles now also contains the contents of the
+      NNTP-Posting-Host header field.
 
     * A new *addinjectionpostingaccount* parameter has been added in
-      inn.conf.  When set to true, the Injection-Info: header field contains
-      an additional posting-account attribute that mentions the username
+      inn.conf.  When set to true, the Injection-Info header field contains
+      an additional *posting-account* attribute that mentions the username
       assigned to the user at connection time or after authentication.  The
       default value for this parameter is false.
 
-    * A few headers are now considered as obsolete by nnrpd at injection
-      time:  NNTP-Posting-Date:, NNTP-Posting-Host:, X-Complaints-To:,
-      X-Trace:, Also-Control:, Article-Names:, Article-Updates:, and
-      See-Also: headers.
+    * A few header fields are now considered as obsolete by nnrpd at
+      injection time: NNTP-Posting-Date, NNTP-Posting-Host, X-Complaints-To,
+      X-Trace, Also-Control, Article-Names, Article-Updates, and See-Also
+      header fields.
 
-      Besides, nnrpd will similarly reject obsolete sendsys, senduuname and
-      version control messages.
+      Besides, nnrpd will similarly reject obsolete *sendsys*, *senduuname*
+      and *version* control messages.
 
-    * The presence of a Subject: header field beginning with "cmsg " no
+    * The presence of a Subject header field beginning with "cmsg " no
       longer causes an article to be interpreted as a control message by
       nnrpd at injection time.
 
@@ -350,13 +429,13 @@ Changes in 2.6.0
       Kettlewell for having fixed the issue.
 
     * Building with Libtool is no longer optional.  The --enable-libtool
-      option to configure has been removed.
+      option to "configure" has been removed.
 
-    * DESTDIR and non-root installs are now properly supported and
+    * "DESTDIR" and non-root installs are now properly supported and
       documented in INSTALL.  The "make install", "make update" and "make
-      cert" steps properly obey DESTDIR.  Besides, it is no longer a
+      cert" steps properly obey "DESTDIR".  Besides, it is no longer a
       requirement that the installation step be done by the superuser, as
-      long as the user executing the install has supplied a DESTDIR value
+      long as the user executing the install has supplied a "DESTDIR" value
       that points to a writable directory, *and* the person or process
       performing the install corrects the file ownerships when INN is
       installed on the system on which it's going to run.  Thanks to James
@@ -369,20 +448,20 @@ Changes in 2.6.0
       --with-bdb-lib, --with-sasl, --with-sasl-include, --with-sasl-lib,
       --with-krb5, --with-krb5-include, --with-krb5-lib, --with-openssl,
       --with-openssl-include, --with-openssl-lib, --with-zlib,
-      --with-zlib-include, or --with-zlib-lib configure flags (the flags
+      --with-zlib-include, or --with-zlib-lib "configure" flags (the flags
       ending with "-include" and "-lib" are new in INN 2.6.0).
 
     * If the Berkeley DB, Cyrus SASL, Kerberos v5, or OpenSSL SSL and crypto
       libraries are found at configure time, INN will now be built with
       support for them unless respectively the --without-bdb,
       --without-sasl, --without-krb5, or --without-openssl flags are
-      explicitly passed to configure.
+      explicitly passed to "configure".
 
       Note that it was already the default behaviour for zlib support when
       Berkeley DB support was also enabled.
 
-    * The configure flag --enable-reduced-depends has been added to request
-      that library probes assume shared libraries are in use and
+    * The "configure" flag --enable-reduced-depends has been added to
+      request that library probes assume shared libraries are in use and
       dependencies of libraries should not be probed.  It therefore tries to
       minimize the shared library dependencies of the resulting binaries on
       platforms with proper shared library dependencies.  This is not
@@ -405,10 +484,13 @@ Changes in 2.6.0
 
     * Other minor bug fixes and documentation improvements.
 
+    * All of the applicable bug fixes from the INN 2.5 STABLE series are
+      also included in INN 2.6.
+
 Changes in 2.5.5
 
     * New inn.conf parameters used by nnrpd to fine-tune the TLS/SSL
-      configuration have been added:  *tlsciphers*, *tlscompression*,
+      configuration have been added: *tlsciphers*, *tlscompression*,
       *tlseccurve*, *tlspreferserverciphers*, and *tlsprotocols*.  Many
       thanks to Christian Mock for his contribution that permits tightening
       the level of security provided by TLS/SSL.
@@ -437,7 +519,7 @@ Changes in 2.5.5
 
     * Add new -t flag to mailpost to change, if needed, the default
       directory to use to temporarily store error messages that are sent to
-      the newsmaster.  Two paths are now tried by default:  *pathtmp* as set
+      the newsmaster.  Two paths are now tried by default: *pathtmp* as set
       in inn.conf, and then /var/tmp if *pathtmp* is not writable.
 
     * When the creation of a newsgroup needed expanding the tradindexed
@@ -451,7 +533,7 @@ Changes in 2.5.5
       taint mode was unproperly declared.
 
     * Several improvements have been contributed to pullnews by Geraint
-      Edwards:  the new -a flag adds the Diablo-compatible hashfeed ability,
+      Edwards: the new -a flag adds the Diablo-compatible hashfeed ability,
       the new -B flag triggers header-only feeding, the -m flag now permits
       removing headers matching (or not) a given regexp, and rnews reporting
       is improved.
@@ -501,7 +583,7 @@ Changes in 2.5.4
       and access Perl hooks could previously use the attributes hash. 
       Thanks to Steve Crook for this addition.
 
-    * INN now properly builds fine with flex 2.5.36 (this version introduced
+    * INN now properly builds fine with Flex 2.5.36 (this version introduced
       a change of type for a variable used by INN).
 
     * When using funnel feeds, innfeed log files were open forever, which
@@ -523,7 +605,7 @@ Changes in 2.5.4
       integer.  Thanks to S.P. Zeidler for the patch.
 
     * Fixed a segfault occurring in nnrpd when a res block was used in
-      readers.conf without the program: key.
+      readers.conf without the *program* key.
 
     * Fixed an issue where users were denied posting because of an
       overlapping buffer copy in a check nnrpd was doing.  Thanks to Florian
@@ -551,7 +633,7 @@ Changes in 2.5.4
       innd.  Thanks to Paul Tomblin for having caught that long-standing
       issue.
 
-    * When building INN with Berkeley DB support, no longer add -L/usr/lib
+    * When building INN with Berkeley DB support, no longer add "-L/usr/lib"
       to the linker include flags; unconditionally adding it may break the
       build on systems using lib32 and lib64 directories.
 
@@ -561,13 +643,13 @@ Changes in 2.5.4
       displayed to news clients before they get customised.
 
     * Other minor bug fixes and documentation improvements (like the
-      addition in the readers.conf man page of the log: and program:
-      parameters in res blocks, and the include directive).
+      addition in the readers.conf man page of the *log* and *program*
+      parameters in res blocks, and the *include* directive).
 
 Changes in 2.5.3
 
-    Please note that the HTML_STATUS compile-time option has been replaced
-    with the *htmlstatus* parameter in inn.conf.  If you used HTML_STATUS,
+    Please note that the "HTML_STATUS" compile-time option has been replaced
+    with the *htmlstatus* parameter in inn.conf.  If you used "HTML_STATUS",
     you should set *htmlstatus* accordingly.
 
     A confusion in the name of a key in innfeed.conf existed in the source
@@ -615,12 +697,12 @@ Changes in 2.5.3
     * Fixed a regression that occurred in INN 2.5.0 when leading whitespace
       characters have been made significant in header field bodies.  It
       could lead INN to drop articles and throttle itself when running as a
-      slave because Xref: header fields generated by other news servers, or
+      slave because Xref header fields generated by other news servers, or
       even INN 2.4.6, could contain (valid) leading whitespace.  Thanks to
       Matija Nalis for having caught this bug.
 
     * Fixed an invalid 431 response to CHECK commands when innd is paused:
-      the message-ID of the article to defer was missing.  Also fixed
+      the Message-ID of the article to defer was missing.  Also fixed
       another issue in the messages innd replied; when an error occurred
       during a write on a channel, a trailing extra junk byte was added to
       the reply.  Thanks to River Tarnell for these bug reports.
@@ -650,7 +732,7 @@ Changes in 2.5.3
       the previous output of cnfsstat.
 
     * A single header field line is limited to 998 bytes, per RFC 5536. 
-      innd was previously accepting, and also generating Xref: header field
+      innd was previously accepting, and also generating Xref header field
       lines, up to 1022 bytes.  Now, nnrpd (acting as an injecting agent)
       rejects articles which contain header field lines whose length exceeds
       998 bytes.  And innd (acting as a relaying or serving agent) no longer
@@ -676,9 +758,9 @@ Changes in 2.5.3
       bug report.
 
       A wrapper around shlock is now called in Perl scripts.  The
-      INN::Utils::Shlock module has been added for that use.
+      "INN::Utils::Shlock" module has been added for that use.
 
-    * Fixed an issue in the Python access hook for nnrpd:  it has not been
+    * Fixed an issue in the Python access hook for nnrpd: it has not been
       working since Python 2.5 on 64-bit platforms, owing to a change to
       Python's C API, using a new Py_ssize_t type definition instead of int.
       Thanks to Raphael Barrois for the patch.
@@ -686,31 +768,31 @@ Changes in 2.5.3
     * Improve the stability of the Perl filters for innd and nnrpd: properly
       save and restore the stack pointer when needed.
 
-    * The Injection-Date: header, when present, is now used by innd and
+    * The Injection-Date header field, when present, is now used by innd and
       makehistory to determine the posting date of an article.  Otherwise,
-      the Date: header is used.
+      the Date header field is used.
 
     * controlchan now imposes a date cutoff on processing control articles. 
       The *artcutoff* parameter set in inn.conf is used.  Otherwise, without
       that cutoff, old control articles could be maliciously reinjected into
-      Usenet, and replayed.  (An unsigned Injection-Date: header field could
-      be added to an article that only had a Date: header field.)  A new -c
+      Usenet, and replayed.  (An unsigned Injection-Date header field could
+      be added to an article that only had a Date header field.)  A new -c
       flag has been added to controlchan to disable the cutoff check, if
       needed (usually when manually invoking the program).
 
-    * nnrpd no longer adds or updates the Path: header field when an article
+    * nnrpd no longer adds or updates the Path header field when an article
       is forwarded to a moderator.  It could otherwise lead to rejects at
       injection time when the article was approved by the moderator.
 
-    * The X-Trace: header field was not properly generated when an article
+    * The X-Trace header field was not properly generated when an article
       was locally posted.  The field mentioning the IP address was skipped,
       resulting in a wrong syntax for this header.  The local "127.0.0.1" IP
       address is now used.  Besides, "localhost" is now mentioned instead of
       an obscure "stdin" in injection header fields.
 
-    * Fixed a bug in the frequency innfeed logs its status:  too many
-      useless lines were written to news.notice.  Thanks to Florian
-      Schlichting for the fix.
+    * Fixed a bug in the frequency innfeed logs its status: too many useless
+      lines were written to news.notice.  Thanks to Florian Schlichting for
+      the fix.
 
     * When unset in innfeed.conf, the *dynamic-method* parameter now
       properly defaults to 3 (instead of 0) and *use-mmap* to false (instead
@@ -726,11 +808,11 @@ Changes in 2.5.3
       this problem.
 
     * Implement an upper limit to the number of file descriptors innd can
-      handle.  At most (FD_SETSIZE-1) file descriptors can be used.  This
+      handle.  At most "(FD_SETSIZE-1)" file descriptors can be used.  This
       upper limit now overrides any superior number set with *rlimitnofile*
       in inn.conf.  Thanks to Steve Crook for the bug report.
 
-    * A default timeout on outgoing sockets (using NNTPconnect) has been
+    * A default timeout on outgoing sockets (using "NNTPconnect") has been
       added by Florian Schlichting.  For a long time, there have been
       occasional problems with actsync (and probably other programs) that
       would hang until manually killed or restarted.
@@ -738,7 +820,7 @@ Changes in 2.5.3
     * The flag -S has been added to innd by Florian Schlichting.  When used,
       innd reports the errors found in incoming.conf and exits.
 
-    * pullnews no longer stops processing newsgroups when an error occur
+    * pullnews no longer stops processing newsgroups when an error occurs
       during its run (for instance when a newsgroup mentioned in the
       configuration file is removed from an upstream server).  Besides, it
       can now use authentication when posting to the downstream server.
@@ -763,8 +845,8 @@ Changes in 2.5.3
       innshellvars scripts.  If a file named innshellvars.local,
       innshellvars.pl.local or innshellvars.tcl.local is present and
       executable in *pathetc*, then it will be executed by the corresponding
-      innshellvars script (respectively shell, INN::Config Perl module, and
-      Tcl).  A typical use is to add or override variables.
+      innshellvars script (respectively shell, "INN::Config" Perl module,
+      and Tcl).  A typical use is to add or override variables.
 
     * Add support for wire-formatted articles in scanspool.
 
@@ -780,11 +862,11 @@ Changes in 2.5.3
     * inncheck now properly finds the boundaries of substituted variables in
       newsfeeds thanks to Alexander Bartolich.
 
-    * docheckgroups no longer uses awk.  On a few systems, the script was
-      failing because of the presence of an old version of awk that has a
+    * docheckgroups no longer uses AWK.  On a few systems, the script was
+      failing because of the presence of an old version of AWK that has a
       limit in the size of the input it can handle.  Processing large
       newsgroups files was consequently impossible.  docheckgroups now uses
-      Perl instead of awk, which solves the issue reported by John F. Morse.
+      Perl instead of AWK, which solves the issue reported by John F. Morse.
 
     * Other minor bug fixes and documentation improvements.  In particular,
       the *debug-shrinking*, *fast-exit* and *initial-sleep* keys in
@@ -803,7 +885,7 @@ Changes in 2.5.2
 
     A new version of innreport.conf is shipped with INN 2.5.2 but, in order
     to preserve any local changes, will not be automatically installed with
-    make update.  The changes are minor and not mandatory for the upgrade.
+    "make update".  The changes are minor and not mandatory for the upgrade.
 
     * Julien Elie has implemented in innd the new version of the NNTP
       protocol described in RFC 3977, RFC 4643 and RFC 4644, and innd now
@@ -812,7 +894,7 @@ Changes in 2.5.2
       interoperability reasons, to return a reject code (respectively 435,
       438, and 439) when the command contains a syntax error instead of 501.
       The mandatory username argument for authenticated peers is not
-      enforced in INN 2.5.2 but will be be enforced by INN 2.6.0 when it is
+      enforced in INN 2.5.2 but will be enforced by INN 2.6.0 when it is
       released.
 
       Major improvements are:
@@ -845,11 +927,11 @@ Changes in 2.5.2
       including, the final CRLF, as the username/password, in conformity
       with RFC 4643.
 
-    * The syntax of message-IDs is now based on RFC 5536 (USEFOR) instead of
+    * The syntax of Message-IDs is now based on RFC 5536 (USEFOR) instead of
       RFC 1036.  The major change is that quoted-pairs have been removed
       from the syntax.
 
-    * The Perl and Python filters for innd now check the message-ID of
+    * The Perl and Python filters for innd now check the Message-ID of
       articles arriving through TAKETHIS.  Only CHECK and IHAVE commands
       previously used them.
 
@@ -858,14 +940,14 @@ Changes in 2.5.2
       (Newsgroups are still matched case-sensitively.)  Message-IDs are
       case-sensitively matched, except for history hashes.
 
-    * The new Archive:, Archive-At:, Comments:, and Summary: header fields
+    * The new Archive, Archive-At, Comments, and Summary header fields
       defined in RFC 5064 and RFC 5536 can be used in innd filters.  nnrpd
       now checks at injection time that an article does not contain an
-      Injection-Info: header, that an Injection-Date: header (if provided)
-      is valid, and that the Path: header does not contain ".POSTED".  Note
-      that INN does not yet generate these two injection fields or include
-      the new Path: header field ".POSTED" keyword.  These new features will
-      be in the next major release of INN.
+      Injection-Info header field, that an Injection-Date header field (if
+      provided) is valid, and that the Path header field body does not
+      contain ".POSTED".  Note that INN does not yet generate these two
+      injection fields or include the new ".POSTED" keyword in Path header
+      fields.  These new features will be in the next major release of INN.
 
     * LIST SUBSCRIPTIONS now accepts an optional wildmat argument to
       restrict the results of this command to specific newsgroups.
@@ -878,9 +960,9 @@ Changes in 2.5.2
     * A new flag has been added to newsfeeds entries: "Aj", when present,
       says to feed articles accepted and filed in "junk" (due to
       *wanttrash*) to peers based on their newsfeeds feed patterns applied
-      to the Newsgroups: header as though the article were accepted and all
-      those groups were locally carried.  This is useful if you want to run
-      INN with a minimal active file and propagate all posts.  Thanks to
+      to the Newsgroups header field as though the article were accepted and
+      all those groups were locally carried.  This is useful if you want to
+      run INN with a minimal active file and propagate all posts.  Thanks to
       Andrew Gierth for the patch.
 
     * A new parameter has been added to inn.conf: *logtrash* defines whether
@@ -899,9 +981,9 @@ Changes in 2.5.2
       script developed by Olaf Titz and Marco d'Itri.
 
     * The O flag in newsfeeds now relies on the contents of the
-      Injection-Info: header field if it is present to determine the origin
-      of an article.  It falls back on X-Trace: if there is no
-      Injection-Info: header field.
+      Injection-Info header field if it is present to determine the origin
+      of an article.  It falls back on X-Trace if there is no Injection-Info
+      header field.
 
     * A new "unsigned long" type bas been added to the configuration parser.
       It will properly warn the news administrator when a variable supposed
@@ -921,17 +1003,18 @@ Changes in 2.5.2
       authenticate to news servers which only expect a username, without
       password, conforming to RFC 4643.
 
-    * The keyword generation code now generates a Keywords: header only if
-      the original article does not already have one.  The generated
-      Keywords: header no longer begins with a comma.  If keyword generation
-      is set to true in inn.conf but the Keywords: header is not stored in
-      the overview, the news administrator is warned and keyword generation
-      deactivated, since it exists only to populate the overview data.
+    * The keyword generation code now generates a Keywords header field only
+      if the original article does not already have one.  The generated
+      Keywords header field no longer begins with a comma.  If keyword
+      generation is set to true in inn.conf but the Keywords header field is
+      not stored in the overview, the news administrator is warned and
+      keyword generation deactivated, since it exists only to populate the
+      overview data.
 
     * Two segfaults in keyword generation were fixed.  The first occurred
-      when an article already had a Keywords: header longer than the
+      when an article already had a Keywords header field longer than the
       *keylimit* parameter.  The second was caused by a possible invalid
-      pointer beyond the newly allocated Keywords: header.
+      pointer beyond the newly allocated Keywords header field.
 
     * Fixed innd handling of empty lines.  innd was not properly discarding
       an empty command and was closing the connection when it received only
@@ -980,10 +1063,10 @@ Changes in 2.5.2
     * Fixed a bug in nnrpd Perl filter: a header field whose name begins
       with the name of a standardized header field was not properly handled.
 
-    * Fixed a bug in how innd was parsing Message-ID: and Supersedes:
-      headers which contained trailing whitespace.  The article was
+    * Fixed a bug in how innd was parsing Message-ID and Supersedes header
+      field bodies which contained trailing whitespace.  The article was
       corrupted by an unexpected "\r" in the middle of the header.  nnrpd
-      now checks the syntax of the Message-ID: header field, if present.
+      now checks the syntax of the Message-ID header field, if present.
 
     * Fixed various bugs in how leading whitespace was treated in headers. 
       The HDR, XHDR and XPAT commands were not properly showing leading
@@ -994,7 +1077,7 @@ Changes in 2.5.2
       "\r") into a space when generating overview data.
 
     * Fixed a bug in the generation of overview data which may corrupt
-      previously generated overview data when a pseudo Xref: header field is
+      previously generated overview data when a pseudo Xref header field is
       injected in an extra overview field.
 
     * Fixed a bug in the parsing of the *ovgrouppat* wildmat in inn.conf
@@ -1004,8 +1087,8 @@ Changes in 2.5.2
       fixed.  Thanks to Dieter Stussy for the bug report.
 
     * Fixed a bug when HDR, XHDR and XPAT were used when *virtualhost* was
-      set to true in readers.conf.  The Xref: header of articles posted to
-      only one newsgroup appeared empty.
+      set to true in readers.conf.  The Xref header field of articles posted
+      to only one newsgroup appeared empty.
 
     * Fixed a bug in tdx-util in parsing empty overview fields when called
       with -A or -F.
@@ -1022,7 +1105,7 @@ Changes in 2.5.2
       patch.
 
     * Fixed a bug in the newsfeeds C flag: the count of followup groups was
-      one less than the real number.  When the value of the Followup-To:
+      one less than the real number.  When the value of the Followup-To
       header field is "poster", it is no longer considered to be a followup.
       Thanks to Dieter Stussy for the patch.
 
@@ -1046,8 +1129,8 @@ Changes in 2.5.2
     * innconfval no longer maps NULL string or list values to an empty
       string or list and instead maps them to undefined values.  This fixes
       an issue reported by Kamil Jonca: nnrpd was inserting an empty
-      Organization: header when the *organization* parameter in inn.conf was
-      unset.
+      Organization header field when the *organization* parameter in
+      inn.conf was unset.
 
     * Other minor bug fixes and documentation improvements.
 
@@ -1058,8 +1141,8 @@ Changes in 2.5.1
 
     * Fixed a segfault in the keyword generation code which was assuming
       that an article was nul-terminated.  Fixed another segfault in the
-      keyword generation code when an article already contained a Keywords:
-      header.  Thanks to Nix for the bug reports.
+      keyword generation code when an article already contained a Keywords
+      header field.  Thanks to Nix for the bug reports.
 
     * Owing to the US-CERT vulnerability note VU#238019, Cyrus SASL library
       has slightly changed.  imap_connection and nnrpd now handle that
@@ -1084,7 +1167,7 @@ Changes in 2.5.1
       wrong name was used, taken amongst known peers.  The source is now
       logged as "localhost".
 
-    * Fixed a bug in the timecaf storage method:  only the first 65535
+    * Fixed a bug in the timecaf storage method: only the first 65535
       articles could be retrievable in a CAF, though everything was properly
       stored.  (A Crunched Article File contains all the articles that
       arrive to the news server during 256 seconds.)
@@ -1112,10 +1195,10 @@ Changes in 2.5.1
       Existing CNFS buffers are kept unchanged; only new CNFS buffers are
       initialized with that new version.
 
-    * grephistory -l now returns the contents of the expires history field
-      as well as the hash of the message-ID.  Besides, when the storage API
-      token does not exist, grephistory -v now also returns the hash of the
-      requested message-ID.
+    * "grephistory -l" now returns the contents of the expires history field
+      as well as the hash of the Message-ID.  Besides, when the storage API
+      token does not exist, "grephistory -v" now also returns the hash of
+      the requested Message-ID.
 
     * The check on cancel messages when *verifycancels* is set to true in
       inn.conf has been changed to verify that at least one newsgroup in the
@@ -1125,7 +1208,7 @@ Changes in 2.5.1
       The previous behaviour was to check whether the cancel message is from
       the same person as the original post, which is extremely easy to
       spoof; besides, RFC 5537 (USEPRO) mentions that "cancel control
-      messages are not required to contain From: and Sender: header fields
+      messages are not required to contain From and Sender header fields
       matching the target message.  This requirement only encouraged cancel
       issuers to conceal their identity and provided no security".
 
@@ -1134,8 +1217,8 @@ Changes in 2.5.1
       arrival time; it is now according to its original posting date. 
       Otherwise, unnecessary data may be kept too long in the history file.
 
-      To achieve that, the HISremember() function in history API now expects
-      a fourth parameter:  the article posting time.
+      To achieve that, the "HISremember()" function in history API now
+      expects a fourth parameter: the article posting time.
 
       Note that article expiration has not changed and is still based on
       arrival time, unless the -p flag is passed to expire or expireover, in
@@ -1209,7 +1292,7 @@ Upgrading from 2.4 to 2.5
       recommended by RFC 3977.
 
     * The overview.fmt file is no longer used by INN.  Two new parameters
-      have been added to inn.conf:  *extraoverviewadvertised* and
+      have been added to inn.conf: *extraoverviewadvertised* and
       *extraoverviewhidden*.  Although innupgrade takes care of the change
       during "make update", you should make sure that your overview database
       is consistent with all the fields declared in overview.fmt because
@@ -1231,7 +1314,7 @@ Upgrading from 2.4 to 2.5
 
     * The auth_smb authenticator program to check passwords with an SMB
       authentication is no longer included in INN.  It was a stripped-down
-      version of pam_smbpass, wasn't maintained, and likely had security
+      version of pam_smbpass(5), wasn't maintained, and likely had security
       problems.  To authenticate to an SMB server such as Samba, use PAM and
       ckpasswd's PAM support instead.
 
@@ -1275,7 +1358,7 @@ Changes in 2.5.0
       --with-zlib option to "configure" and the ovdb(5) man page.
 
     * Alexander Bartolich has greatly improved innreport and especially its
-      XHTML output (a XSL transformation is also provided, if needed, in
+      XHTML output (an XSL transformation is also provided, if needed, in
       innreport-filter.xslt, in the contrib directory).
 
     * inndstart and startinnfeed are no longer part of INN and are no longer
@@ -1296,7 +1379,7 @@ Changes in 2.5.0
       network code is now much more centralized, eliminating lots of
       duplicate code and adding better IPv6 support to some utilities.
 
-    * INN now uses autoconf 2.61 or later for configuration.  As a result,
+    * INN now uses Autoconf 2.61 or later for configuration.  As a result,
       some "configure" options have changed slightly and more of the
       standard --*dir options should be supported in lieu of the old
       INN-specific options.  See "configure --help" for the available
@@ -1315,7 +1398,7 @@ Changes in 2.5.0
       described in USEPRO and can handle character set conversions of
       newsgroup descriptions.  The "MIME::Parser" and "Encode" modules are
       used.  Processing control messages has been greatly improved,
-      especially checkgroups:  the active and newsgroups files are now
+      especially checkgroups: the active and newsgroups files are now
       properly updated when they are processed, and all matching lines in
       control.ctl for a given checkgroups are honoured (which for instance
       allows using both drop and doit actions for the same checkgroups
@@ -1349,9 +1432,9 @@ Changes in 2.5.0
       recommend starting from scratch and emulating the Perl and Python
       filters.
 
-    * If *strippath* is set in readers.conf, the whole user-supplied Path:
-      header will now be stripped.  Previously, the final component of the
-      user-supplied Path: would still be retained.
+    * If *strippath* is set in readers.conf, the whole user-supplied Path
+      header field will now be stripped.  Previously, the final component of
+      the user-supplied Path header field body would still be retained.
 
     * news2mail can now set the envelope-from address of the mails it sends.
       A third optional part in news2mail.cf entries has been added by
@@ -1377,7 +1460,7 @@ Changes in 2.5.0
       setting the news user and the news group under which the news server
       runs.  Thanks to Ivan Shmakov for this feature.
 
-      New other options have been added to configuration files:  *ignore* in
+      New other options have been added to configuration files: *ignore* in
       incoming.conf, *logstatus*, *nnrpdflags* and *verifygroups* in
       inn.conf, and *log-time-format* in innfeed.conf.
 
@@ -1388,7 +1471,7 @@ Changes in 2.5.0
       in inn.conf.
 
     * The sasl.conf file has been removed in favour of new parameters in
-      inn.conf to deal with TLS support:  *tlscafile*, *tlscapath*,
+      inn.conf to deal with TLS support: *tlscafile*, *tlscapath*,
       *tlscertfile* and *tlskeyfile*.
 
     * The overview.fmt file has been removed in favour of new parameters in
@@ -1416,9 +1499,12 @@ Changes in 2.5.0
       high-level functions as well as more of the portability and utility
       function layer.
 
-    * A lot of work has been done on documentation:  improvements of
-      existing documents, new documentation, and proof-reading.  Sample
-      configuration files are also more detailed.
+    * A lot of work has been done on documentation: improvements of existing
+      documents, new documentation, and proof-reading.  Sample configuration
+      files are also more detailed.
+
+    * All of the applicable bug fixes from the INN 2.4 STABLE series are
+      also included in INN 2.5.
 
 Changes in 2.4.6
 
@@ -1460,12 +1546,12 @@ Changes in 2.4.6
     * Fixed a bug in the IP address displayed for "localhost" in innd's
       status file.  It was not correctly initialized.
 
-    * Fixed a permission issue:  XHDR and XPAT were not checking the rights
-      the user had to read articles when accessing them by their message-ID.
+    * Fixed a permission issue: XHDR and XPAT were not checking the rights
+      the user had to read articles when accessing them by their Message-ID.
 
     * Fixed a bug in the replies of XHDR, XOVER and XPAT when the newsgroup
-      is empty.  Two initial replies were sent instead of one:  the right
-      420 code followed by a wrong 224 code.
+      is empty.  Two initial replies were sent instead of one: the right 420
+      code followed by a wrong 224 code.
 
     * When no newsgroup is selected, LISTGROUP now returns the right 412
       code (instead of 481).
@@ -1486,7 +1572,9 @@ Changes in 2.4.6
       time for Usenet daily reports.
 
     * An updated moderators file with information about the aioe.*, perl.*
-      and si.* hierarchies is provided; control.ctl is also up to date.
+      and si.* hierarchies is provided.
+
+    * An updated control.ctl file is provided.
 
     * INN supports Berkeley DB 4.7, which is the recommended version to use
       owing to various bugs affecting previous versions of Berkeley DB.
@@ -1495,20 +1583,20 @@ Changes in 2.4.6
 
 Changes in 2.4.5
 
-    * Fixed the "alarm signal" around "SSL_read" in nnrpd:  it allows a
+    * Fixed the "alarm signal" around "SSL_read" in nnrpd: it allows a
       proper disconnection of news clients which were previously hanging
-      when posting an article through a SSL connection.  Moreover, the
+      when posting an article through an SSL connection.  Moreover, the
       *clienttimeout* parameter now works on SSL connections.  Thanks to
       Matija Nalis for the patch.
 
-    * SO_KEEPALIVE is now implemented for SSL TCP connections on systems
+    * "SO_KEEPALIVE" is now implemented for SSL TCP connections on systems
       which support it, allowing system detection and closing the dead TCP
       SSL connections automatically after system-specified time.  Thanks to
       Matija Nalis for the patch.
 
     * Fixed a segmentation fault when an article of a size greater than
-      remaining stack is retrieved via SSL.  Thanks to Chris Caputo for this
-      patch.
+      remaining in the stack is retrieved via SSL.  Thanks to Chris Caputo
+      for this patch.
 
     * Fixed a few segfaults and bugs which affected both Python innd and
       nnrpd hooks.  They no longer check the existence of methods not used
@@ -1522,16 +1610,17 @@ Changes in 2.4.5
 
     * The nnrpd.py stub file in order to test Python nnrpd hooks, as
       mentioned in their documentation, is now installed; only INN.py was
-      previously installed in *pathfilter*.  Also fixed a bug in INN.py and
-      add missing methods to it.
+      previously installed in *pathfilter*.
+
+    * Fixed a bug in INN.py and add missing methods to it.
 
     * Fixed a long-standing bug in innreport which prevented it from
       correctly reporting nnrpd and innfeed log messages.
 
     * Fixed a hang in Perl hooks on (at least) HP/PA since Perl 5.10.
 
-    * Fixed a compilation problem on some platforms because of AF_INET6
-      which was not inside a HAVE_INET6 block in innfeed.
+    * Fixed a compilation problem on some platforms because of "AF_INET6"
+      which was not inside a "HAVE_INET6" block in innfeed.
 
     * Fixed a bug in innfeed which contained thrice the same IPs for each
       peer; it unnecessarily slowed the peer IP rotation for innfeed. 
@@ -1552,7 +1641,7 @@ Changes in 2.4.5
       samples.  Thanks to Matija Nalis for this addition of new useful
       headers.
 
-    * New samples for Python nnrpd hooks are shipped with INN: 
+    * New samples for Python nnrpd hooks are shipped with INN:
       nnrpd_access.py for access control and nnrpd_dynamic.py for dynamic
       access control.  The nnrpd_auth.py script is now only used for
       authorization control.  See the readers.conf man page for more
@@ -1582,10 +1671,10 @@ Changes in 2.4.4
 
     * Perl 5.10 support has been added to INN thanks to Jakub Bogusz.
 
-    * Some news clients hang when posting an article through a SSL
+    * Some news clients hang when posting an article through an SSL
       connection: it seems that nnrpd's SSL routines make it wrongly wait
-      for data completion.  In order to fix the problem, the select() wait
-      is now just bypassed.  However, the IDLE timer stat is currently not
+      for data completion.  In order to fix the problem, the "select()" wait
+      is now just bypassed.  However, the idle timer stat is currently not
       collected for such connections.  Thanks to Kachun Lee for this
       workaround.
 
@@ -1594,7 +1683,7 @@ Changes in 2.4.4
 
     * Fixed a bug in mailpost and pullnews which prevented useful error
       messages to be seen.  Also add the -x flag to pullnews in order to
-      insert Xref: headers in articles which lack one.
+      insert Xref header fields in articles which lack one.
 
     * If compiling with Berkeley DB, use its ndbm compatibility layer for
       ckpasswd in preference to searching for a traditional dbm library. 
@@ -1608,10 +1697,10 @@ Changes in 2.4.4
       newsfeeds).  Thanks to Miquel van Smoorenburg for this implementation
       in INN.
 
-    * innd now listen on separate sockets for IPv4 and IPv6 connections if
-      the IPV6_V6ONLY socket option is available.  There might also be
+    * innd now listens on separate sockets for IPv4 and IPv6 connections if
+      the "IPV6_V6ONLY" socket option is available.  There might also be
       operating systems that still have separate IPv4 and IPv6 TCP
-      implementations, and advanced features like TCP SACK might not be
+      implementations, and advanced features like TCP "SACK" might not be
       available on v6 sockets.  Thanks to Miquel van Smoorenburg for this
       patch.
 
@@ -1620,23 +1709,23 @@ Changes in 2.4.4
       "none" tells innfeed to never attempt an IPv6 connection to that host.
       Thanks to Miquel van Smoorenburg for this patch.
 
-    * Added a *nnrpdflags* parameter to inn.conf (modelled on the concept of
-      *innflags*) to permit passing of command line arguments to instances
-      of nnrpd spawned from innd.
+    * Added an *nnrpdflags* parameter to inn.conf (modelled on the concept
+      of *innflags*) to permit passing of command line arguments to
+      instances of nnrpd spawned from innd.
 
     * A new inn.conf parameter called *pathcluster* has been added: it
-      allows appending a common name to the Path: header on all incoming
-      articles.  *pathhost* and *pathalias* (if set) are still appended to
-      the path as usual, but *pathcluster* is always appended as the last
-      element (e.g. on the leftmost side of the Path: header).  Thanks to
-      Miquel van Smoorenburg for this feature.
+      allows appending a common name to the Path header field body on all
+      incoming articles.  *pathhost* and *pathalias* (if set) are still
+      appended to the path as usual, but *pathcluster* is always appended as
+      the last element (e.g. on the leftmost side of the Path header field
+      body).  Thanks to Miquel van Smoorenburg for this feature.
 
     * simpleftp has been rewritten to use "Net::FTP".  Indeed, ftp.pl is no
       longer shipped with Perl 5 and the script did not work.
 
     * perl-nocem will now check for a timeout and re-open the socket if
-      required.  Additionally, perl-nocem will switch to cancel_ctlinnd in
-      case cancel_nntp fails after sending the Message-ID.  Thanks to
+      required.  Additionally, perl-nocem will switch to "cancel_ctlinnd" in
+      case "cancel_nntp" fails after sending the Message-ID.  Thanks to
       Christoph Biedl for the patch.  A more detailed documentation has also
       been written for perl-nocem(8).
 
@@ -1667,7 +1756,7 @@ Changes in 2.4.4
     * Fixed empty LISTGROUP replies which were not terminated.  Thanks to
       David Canzi for the patch.
 
-    * In response to a LIST [file] command, if the file does not exist, we
+    * In response to a LIST [*file*] command, if the file does not exist, we
       assume it is not maintained and return 503 instead of 215 and an empty
       file.  Moreover, capability to LIST ACTIVE.TIMES for a wildmat pattern
       as its third argument has been added in order to select wanted
@@ -1686,16 +1775,16 @@ Changes in 2.4.4
 
 Changes in 2.4.3
 
-    * Previous versions of INN had an optimization for handling XHDR
-      Newsgroups that used the Xref: header from overview.  While this does
-      make the command much faster, it doesn't produce accurate results and
-      breaks the NNTP protocol, so this optimization has been removed.
+    * Previous versions of INN had an optimization for handling "XHDR
+      Newsgroups" that used the Xref header field from overview.  While this
+      does make the command much faster, it doesn't produce accurate results
+      and breaks the NNTP protocol, so this optimization has been removed.
 
     * Fixed a bug in innd that allowed it to accept articles with duplicated
-      headers if the header occurred an odd number of times.  Modified the
-      programs for rebuilding overview to use the last Xref: header if there
-      are multiple ones to avoid problems with spools that contain such
-      invalid articles.
+      header fields if the header field occurred an odd number of times. 
+      Modified the programs for rebuilding overview to use the last Xref
+      header field if there are multiple ones to avoid problems with spools
+      that contain such invalid articles.
 
     * Fixed yet another problem with verifying that a user has permissions
       to approve posts to a moderated group.  Thanks, Jens Schlegel.
@@ -1749,9 +1838,9 @@ Changes in 2.4.2
       reactive authentication capability of news readers.
 
     * If a user is not authorized to approve articles (using the "A"
-      *access* control in readers.conf), articles that include Approved:
-      headers will be rejected even if posted to unmoderated groups.  Some
-      other site may consider that group to be moderated.
+      *access* control in readers.conf), articles that include an Approved
+      header field will be rejected even if posted to unmoderated groups. 
+      Some other site may consider that group to be moderated.
 
     * The configuration parser used for readers.conf and others now
       correctly handles "#" inside quoted strings and is more robust against
@@ -1780,12 +1869,12 @@ Changes in 2.4.2
 
 Changes in 2.4.1
 
-    * SECURITY:  Handle the special filing of control messages into per-type
+    * SECURITY: Handle the special filing of control messages into per-type
       newsgroups more robustly.  This closes a potentially exploitable
       buffer overflow.  Thanks to Dan Riley for his excellent bug report.
 
-    * Fixed article handling in innd so that articles without a Path: header
-      (arising from peers sending malformatted articles or injecting
+    * Fixed article handling in innd so that articles without a Path header
+      field (arising from peers sending malformatted articles or injecting
       malformatted articles through rnews) would not cause innd to crash. 
       (This was not exploitable.)
 
@@ -1889,9 +1978,9 @@ Changes in 2.4.0
       readers.conf(5).  Any articles injected this way must have Date, From,
       Message-ID, Newsgroups, Path, and Subject headers.  X-Trace and
       X-Complaints-To headers will be added if the appropriate options are
-      set in readers.conf, but other headers will not be modified/inserted
-      (e.g.  NNTP-Posting-Host, NNTP-Posting-Date, Organization, Lines, Cc,
-      Bcc, and To headers).
+      set in readers.conf, but other header fields will not be
+      modified/inserted (e.g. NNTP-Posting-Host, NNTP-Posting-Date,
+      Organization, Lines, Cc, Bcc, and To header fields).
 
     * nnrpd now handles arbitrarily long lines in POST and IHAVE;
       administrators who want to limit the length of lines in locally posted
@@ -1919,12 +2008,11 @@ Changes in 2.4.0
       higher-numbered message is received before a lower-numbered message in
       the same group.
 
-    * Several other, more minor protocol issues have been fixed: 
-      connections rejected due to the connection rate limiting in innd
-      receive 400 replies instead of 504 or 505, and ARTICLE without an
-      argument will always either retrieve the current article or return a
-      423 error, never advance the current article number to the next valid
-      article.
+    * Several other, more minor protocol issues have been fixed: connections
+      rejected due to the connection rate limiting in innd receive 400
+      replies instead of 504 or 505, and ARTICLE without an argument will
+      always either retrieve the current article or return a 423 error,
+      never advance the current article number to the next valid article.
 
       See doc/compliance-nntp for all of the known issues with INN's
       compliance with the current NNTP draft.
@@ -1952,7 +2040,7 @@ Changes in 2.4.0
       script has been retired, since send-uucp can now handle everything
       that it did.
 
-    * Two "configure" options have changed names:  --with-tmp-path is now
+    * Two "configure" options have changed names: --with-tmp-path is now
       --with-tmp-dir, and --with-largefiles is now --enable-largefiles, to
       improve consistency and better match the "autoconf" option guidelines.
 
@@ -1967,8 +2055,8 @@ Changes in 2.4.0
 
     * Two new options, *nfsreader* and *nfswriter*, have been added to
       inn.conf to aid in building NFS based shared reader/writer platforms. 
-      On the writer server configure *nfswriter* to true and on all of the
-      readers configure *nfsreader* to true; these options add calls to
+      On the writer server, configure *nfswriter* to true and on all of the
+      readers, configure *nfsreader* to true; these options add calls to
       force data out to the NFS server and force it to be read directly from
       the NFS server at the appropriate moments.  Note that it has only been
       tested on Solaris 8, using CNFS as the storage mechanism and
@@ -1976,8 +2064,8 @@ Changes in 2.4.0
 
     * A new option, *tradindexedmmap*, has been added to inn.conf.  If set
       to true (the default), then the tradindexed overview method will use
-      mmap() to access its overview data (in 2.3 you couldn't control this;
-      it always used mmap).
+      "mmap()" to access its overview data (in 2.3 you couldn't control
+      this; it always used mmap).
 
     * Thanks to code contributed by CMU, innfeed can now feed an IMAP server
       as well as other NNTP servers.  See the man page for innfeed(8) for
@@ -2009,12 +2097,12 @@ Changes in 2.4.0
 
 Changes in 2.3.5
 
-    * Clients using POST are no longer permitted to provide an
-      Injector-Info: header.
+    * Clients using POST are no longer permitted to provide an Injector-Info
+      header field.
 
-    * Fixed a bug causing posts with Followup-To: set to a moderated group
-      to be rejected if the posting user didn't have permission to approve
-      postings.
+    * Fixed a bug causing posts with a Followup-To header field set to a
+      moderated group to be rejected if the posting user didn't have
+      permission to approve postings.
 
     * Fixed bugs in inncheck with setuid rnews or setgid inews, in
       innconfval with inn.conf parameters containing shell metacharacters
@@ -2031,10 +2119,11 @@ Changes in 2.3.4
       searches for the header "newsgroup" matching the header "newsgroups".
 
     * Made CNFS more robust against crashes by actually syncing the cycbuff
-      headers to disk as was originally intended.  Fixed a memory leak in
-      the tradspool code.
+      headers to disk as was originally intended.
 
-    * Two bugs in pgpverify when using GnuPG were fixed:  it now correctly
+    * Fixed a memory leak in the tradspool code.
+
+    * Two bugs in pgpverify when using GnuPG were fixed: it now correctly
       checks for gpgv (rather than pgp) when told to use GnuPG and expects
       the keyring to be pubring.gpg (not pubring.pgp).
 
@@ -2046,7 +2135,7 @@ Changes in 2.3.4
 
     * Various bugs in the header handling in nnrpd have been fixed,
       including hangs when using virtual domains and improper processing of
-      folded headers under certain circumstances.
+      folded header fields under certain circumstances.
 
     * Other minor bug fixes and documentation improvements.
 
@@ -2059,7 +2148,7 @@ Changes in 2.3.3
       which means that you may have to create a new key ring for GnuPG to
       use to verify signatures if you were previously using PGP.
 
-    * Users can no longer post articles containing Approved: headers to
+    * Users can no longer post articles containing Approved header fields to
       moderated groups by default; they must be specifically given that
       permission with the *access* parameter in readers.conf.  See the man
       page for more details.
@@ -2141,9 +2230,6 @@ Changes in 2.3.1
 
 Upgrading from 2.2 to 2.3
 
-    There may be additional things to watch out for not listed here; if you
-    run across any, please let <inn-bugs@isc.org> know about them.
-
     Simply doing a "make update" is not sufficient to upgrade; the history
     and overview information will also have to be regenerated, since the
     formats of both files have changed between 2.2 and 2.3.  Regardless of
@@ -2286,13 +2372,14 @@ Changes in 2.3.0
 
     * To simplify anti-abuse filtering, and to be more compliant with news
       standards and proposed standards, INN now treats as control messages
-      only articles containing a Control: header.  A Subject: line beginning
-      with "cmsg " is no longer sufficient for a message to be considered a
-      control message, and the Also-Control: header is no longer supported.
-
-    * The INN build system no longer uses subst.  (This will be transparent
-      to most users; it's an improvement and modernization of how INN is
-      configured.)
+      only articles containing a Control header field.  A Subject header
+      field body beginning with "cmsg " is no longer sufficient for a
+      message to be considered a control message, and the Also-Control
+      header field is no longer supported.
+
+    * The INN build system no longer uses "subst".  (This will be
+      transparent to most users; it's an improvement and modernization of
+      how INN is configured.)
 
     * The build and installation system has been substantially overhauled. 
       "make update" now updates scripts as well as binaries and
@@ -2327,8 +2414,8 @@ Changes in 2.2.3
 Changes in 2.2.2
 
     * Various minor bug fixes and a Y2K bug fix.  The Y2K bug is in version
-      version 2.2.1 only and will show up after Jan 1st, 2000 when a news
-      reader issues a NEWNEWS command for a date prior to the year 2000.
+      2.2.1 only and will show up after Jan 1st, 2000 when a news reader
+      issues a NEWNEWS command for a date prior to the year 2000.
 
 Changes in 2.2.1
 
@@ -2366,5 +2453,3 @@ Changes in 2.2.0
     * The innshellvars.csh.in script is obsolete (and lives in the obsolete
       directory, for now).
 
-    $Id: news.pod 10532 2021-01-20 12:00:42Z iulius $
-
diff -Nurp inn-2.6.4/README inn-2.6.5/README
--- inn-2.6.4/README	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/README	2022-02-18 20:36:57.000000000 +0100
@@ -1,20 +1,51 @@
-Welcome to INN 2.6!
+Welcome to the InterNetNews project!
+
+  INN 2.6
+
+    Our 2.6 branch is for the maintenance of the most recently released
+    stable version.  Head to the "main" branch for the current development
+    of the next major release of INN.
 
     This work is sponsored by Internet Systems Consortium.
 
-    Please see INSTALL for installation instructions, NEWS for what's
-    changed from the previous release, and LICENSE for the copyright,
-    license, and distribution terms.
+    The official homepage of the project is
+    <https://www.isc.org/othersoftware/>.
+
+    You'll also find very useful information about INN on Russ Allbery's web
+    site <https://www.eyrie.org/~eagle/software/inn/>.
+
+    Please see:
+
+    *   CHECKLIST
+        <https://www.eyrie.org/~eagle/software/inn/docs-2.6/checklist.html>
+        for a quick overview of all the installation steps and pointers to
+        documentation,
+
+    *   INSTALL
+        <https://www.eyrie.org/~eagle/software/inn/docs-2.6/install.html>
+        for full installation instructions,
+
+    *   FAQ <https://www.eyrie.org/~eagle/faqs/inn.html> for INN FAQ,
+
+    *   NEWS <https://www.eyrie.org/~eagle/software/inn/docs-2.6/news.html>
+        for what's changed from the previous release,
+
+    *   and LICENSE
+        <https://www.eyrie.org/~eagle/software/inn/docs-2.6/license.html>
+        for the copyright, license, and distribution terms.
+
+    These files can also be found in the doc or doc/pod directories if not
+    present at top-level.
 
 What is INN?
 
-    INN (InterNetNews), originally written by Rich Salz, is an extremely
-    flexible and configurable Usenet / Netnews news server.  For a complete
-    description of the protocols behind Usenet and Netnews, see RFC 3977
-    (NNTP), RFC 4642 updated by RFC 8143 (TLS/NNTP), RFC 4643 (NNTP
-    authentication), RFC 4644 (streaming NNTP feeds), RFC 5536 (USEFOR),
-    RFC 5537 (USEPRO), RFC 6048 (NNTP LIST additions) and RFC 8054 (NNTP
-    compression) or their replacements.
+    INN (InterNetNews), originally written by Rich Salz, is a very
+    full-featured and extremely flexible and configurable Usenet / Netnews
+    news server.  For a complete description of the protocols behind Usenet
+    and Netnews, see RFC 3977 (NNTP), RFC 4642 updated by RFC 8143
+    (TLS/NNTP), RFC 4643 (NNTP authentication), RFC 4644 (streaming NNTP
+    feeds), RFC 5536 (USEFOR), RFC 5537 (USEPRO), RFC 6048 (NNTP LIST
+    additions) and RFC 8054 (NNTP compression) or their replacements.
 
     In brief, Netnews is a set of protocols for exchanging messages between
     a decentralized network of news servers.  News articles are organized
@@ -84,21 +115,34 @@ Prerequisites
     INN uses GNU autoconf to probe the capabilities of your system, and
     therefore should compile on nearly any Unix system.  It does, however,
     make extensive use of mmap(), which can cause problems on some older
-    operating systems.  See INSTALL for a list of systems it is known to
-    work on.  If you encounter problems compiling or running INN, or if you
-    successfully run INN on a platform that isn't listed in INSTALL, please
-    let us know (see "Reporting Bugs" below).
+    operating systems.  See INSTALL
+    <https://www.eyrie.org/~eagle/software/inn/docs-2.6/install.html> for a
+    list of systems it is known to work on.  If you encounter problems
+    compiling or running INN, or if you successfully run INN on a platform
+    that isn't listed in INSTALL, please let us know (see "Reporting Bugs"
+    below).
 
     Perl 5.004_03 or later is required to build INN and use the embedded
-    Perl filter support (which is highly recommended; some excellent spam
-    filters have been written for INN).  Since all versions of Perl previous
-    to 5.004 are buggy (including security problems) and have fewer
-    features, installing Perl 5.004_03 or later (like at least Perl 5.8.0)
-    is recommended.
-
-    If you want to enable PGP verification of control messages (highly
-    recommended), you will need to have a PGP implementation installed.  See
-    INSTALL for more details.
+    Perl filtering and authentication hook support (which is highly
+    recommended; some excellent spam filters have been written for INN). 
+    Since all versions of Perl previous to 5.004 are buggy (including
+    security problems) and have fewer features, installing Perl 5.004_03 or
+    later (like at least Perl 5.8.0) is recommended.  Depending on what
+    language you want to write your filters and authentication hooks in, you
+    may also want to install Python 2.3.0 or later, or Python 3.3.0 or
+    later.
+
+    For support for authenticated control messages, you will need either PGP
+    or GnuPG, the latter being recommended.  See INSTALL for more details.
+
+    For the "ovdb" overview storage method, you'll need Berkeley DB 4.4 or
+    later (4.7 or later recommended).  If you have zlib available, you can
+    also compress overview before it's stored into "ovdb", and enable the
+    COMPRESS capability, an NNTP extension.  For support for news reading
+    over TLS, you'll need OpenSSL.  To support SASL authentication to nnrpd
+    or to feed newsgroups to an IMAP server with SASL authentication, you'll
+    need the Cyrus SASL libraries.  INN can also check passwords against a
+    Kerberos KDC; for this, you will need Kerberos libraries.
 
 Getting Started
 
@@ -113,8 +157,24 @@ Getting Started
     or comments about things that are unclear, please send them to the INN
     maintainers (see "Reporting Bugs" below).
 
-    See INSTALL for step-by-step instructions for setting up and configuring
-    a news server.
+  Download
+
+    Source code tarballs of the official releases can be downloaded from
+    <https://downloads.isc.org/isc/inn/>.  The InterNetNews project does not
+    distribute releases in binary form.  Yet, precompiled versions may exist
+    on your operating system.
+
+    When installing a new INN server, you may wish to download the latest
+    snapshot of the stable branch rather than the last official release, so
+    that to pick up possible bug fixes.
+
+  Build and Install
+
+    See INSTALL
+    <https://www.eyrie.org/~eagle/software/inn/docs-2.6/install.html> for
+    step-by-step instructions for setting up and configuring a news server.
+
+  Documentation
 
     INN also comes with a very complete set of man pages; there is a man
     page for every configuration file and program that comes with INN.  (If
@@ -123,10 +183,14 @@ Getting Started
     the man pages for all of the configuration files involved is a very good
     start.
 
+    URL:  <https://www.eyrie.org/~eagle/software/inn/docs-2.6/> (online
+    documentation)
+
 Reporting Bugs
 
     We're interested in all bug reports.  Not just on the programs, but on
-    the documentation too.  Please send *all* such reports to
+    the documentation too.  Please use the GitHub issue tracker to send such
+    bug reports, or alternatively send them to
 
         inn-workers@lists.isc.org
 
@@ -141,10 +205,28 @@ Reporting Bugs
     addresses are specifically for INN, and the INN maintainers usually
     won't have time to answer general questions.
 
-Contributing Code
+Testing and Development
+
+  Source Code
+
+    INN is maintained using the Git version control system.  The official
+    InterNetNews Git repository is located at
+    <https://github.com/InterNetNews/inn>.  A local copy of the current
+    development source can be obtained by cloning it using a Git client:
+
+        git clone https://github.com/InterNetNews/inn.git
+
+    You can also download daily snapshots
+    <https://archives.eyrie.org/software/inn/snapshots/> produced only if
+    the current code compiles and passes the test suite, so they have
+    undergone at least some basic validation, although they've not been
+    tested by a human.
+
+  Contributing Code
 
     If you have a patch or a utility that you'd like to be considered for
-    inclusion into INN, please mail it to
+    inclusion into INN, please make a GitHub pull request, or alternatively
+    mail it to
 
         inn-workers@lists.isc.org
 
@@ -153,6 +235,14 @@ Contributing Code
     Patches included with a bug report as described above should follow the
     same procedure.
 
+    Please submit all patches against the current main branch, not against a
+    stable release.  The development version of INN is often much different
+    than the last stable release.
+
+    Also please take a look at HACKING
+    <https://www.eyrie.org/~eagle/software/inn/docs-2.6/hacking.html> for
+    information about development and coding style.
+
     Have fun!
 
 Mailing Lists
@@ -163,29 +253,36 @@ Mailing Lists
     of them is read-only (no postings allowed).
 
     inn-announce@lists.isc.org
-                            Where announcements about INN are set (only
-                            maintainers may post).
+            Where announcements about INN are sent (only maintainers may
+            post).
+
+            URL:  <https://lists.isc.org/mailman/listinfo/inn-announce>
 
     inn-workers@lists.isc.org
-                            Discussion of INN development.  It is also where
-                            to send bug reports and patches for
-                            consideration for inclusion into INN (postings
-                            by members only).  If you're an INN expert and
-                            have the time to help out other users, we
-                            encourage you to join this mailing list to
-                            answer questions.  (You may also want to read
-                            the newsgroup news.software.nntp, which gets a
-                            lot of INN-related questions.)
+            Discussion of INN development.  If you prefer not to use GitHub
+            to create an issue or a pull request, it is also where to send
+            bug reports and patches for consideration for inclusion into INN
+            (postings by members only).  If you're an INN expert and have
+            the time to help out other users, we encourage you to join this
+            mailing list to answer questions.  (You may also want to read
+            the newsgroup news.software.nntp, which gets a lot of
+            INN-related questions.)
+
+            URL:  <https://lists.isc.org/mailman/listinfo/inn-workers>
 
     inn-committers@lists.isc.org
-                            Subversion commit messages for INN are sent to
-                            this list (only the automated messages are sent
-                            here, no regular posting).
-
-    inn-bugs@lists.isc.org  Trac tickets for INN are sent to this list (only
-                            the automated messages are sent here, no regular
-                            posting).  Bug reports should be sent to the
-                            inn-workers mailing list.
+            Git commit messages for INN are sent to this list (only the
+            automated messages are sent here, no regular posting).
+
+            URL:  <https://lists.isc.org/mailman/listinfo/inn-committers>
+
+    inn-bugs@lists.isc.org
+            This list used to receive Trac issues for INN, before the
+            migration to GitHub (only the automated messages were sent here,
+            no regular posting).  Bug reports should be sent to the
+            inn-workers mailing list, or a GitHub issue created.
+
+            URL:  <https://lists.isc.org/mailman/listinfo/inn-bugs>
 
     To join these lists, send a subscription request to the "-request"
     address.  The addresses for the above lists are:
@@ -195,12 +292,17 @@ Mailing Lists
        inn-committers-request@lists.isc.org
        inn-bugs-request@lists.isc.org
 
+    You can alternatively join them from the subscription form in their
+    public web pages.
+
 Who's Responsible / Who to Thank
 
-    See CONTRIBUTORS for a long list of past contributors as well as people
-    from the inn-workers mailing list who have dedicated a lot of time and
-    effort to getting this new version together.  They deserve a big round
-    of applause.  They've certainly got our thanks.
+    See CONTRIBUTORS
+    <https://www.eyrie.org/~eagle/software/inn/docs-2.6/contributors.html>
+    for a long list of past contributors as well as people from the
+    inn-workers mailing list who have dedicated a lot of time and effort to
+    getting this new version together.  They deserve a big round of
+    applause.  They've certainly got our thanks.
 
     This product includes software developed by UUNET Technologies, Inc. and
     by the University of California, Berkeley and its contributors.
@@ -254,12 +356,17 @@ Related Packages
         It also permits a realtime feed, contrary to innxmit or nntpsend.
 
     NewsPortal
-        URL:  <https://amrhein.eu/newsportal/doc/>
+        URL:  <https://gitlab.com/yamo-nntp/newsportal>
 
         A PHP-based web news reader that works as a front-end to a regular
         news server such as INN and lets people read and post without
         learning a news reader.
 
+        NewsPortal was originally written by Florian Amrhein
+        <https://amrhein.eu/newsportal/doc/> and is now maintained by
+        St��phane Gr��goire who notably did a great job fixing a few bugs and
+        adapting it for use on smartphones.
+
     PersonalINN
         URL:  <http://www.ritual.org/summer/pinn/>
 
@@ -294,5 +401,3 @@ Supporting the INN Effort
                                             Katsuhiro Kondou
                                             <inn@isc.org>
 
-    $Id: readme.pod 10359 2020-03-08 21:47:11Z eagle $
-
diff -Nurp inn-2.6.4/TODO inn-2.6.5/TODO
--- inn-2.6.4/TODO	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/TODO	2022-02-18 20:36:57.000000000 +0100
@@ -6,7 +6,7 @@ let <inn-workers@lists.isc.org> know if
 below.
 
 This list is currently being migrated to INN's issue tracking system
-<https://inn.eyrie.org/trac/>.
+on GitHub <https://github.com/InterNetNews/inn/issues>.
 
 The list is divided into changes already tentatively scheduled for a
 particular release, higher priority changes that will hopefully be done in
@@ -23,7 +23,7 @@ suite, which is currently very minimal.
 to allow more portions of INN to be automatically tested will make all
 changes easier and will be *greatly* appreciated.
 
-Last modified $Id: TODO 9949 2015-09-12 13:48:45Z iulius $.
+Last modified on 2021-08-05.
 
 
 Scheduled for INN 2.7
@@ -188,10 +188,6 @@ Documentation Projects
   as libinn_<section>.3 seems to make the most sense (so, for example,
   error handling routines would be documented in libinn_error.3).
 
-* Better documentation of and support for UUCP feeds.  send-uucp is now
-  easier to use, but there's still a paucity of documentation covering the
-  whole theory and mechanisms of UUCP feeding.
-
 * Everything installed by INN should have a man page.  Currently, there
   are several binaries and configuration files that don't have man pages.
   (In some cases, the best thing to do with the configuration file may be
@@ -678,12 +674,6 @@ Long-Term Projects
   should be possible once we have a history API that allows changing the
   storage location of an article in-place.
 
-* Set up the infrastructure required so that INN can use alloca.  This
-  would significantly decrease the number of calls to malloc needed and
-  would be a lot more convenient.  alloca is now available, but most
-  programs still need to call alloca_free in their main loops before we
-  can use it in the various libraries.
-
 * Support building in a separate directory than the source tree.  It may
   be best to just support this via lndir rather than try to do it in
   configure, but it would be ideal to add support for this to the autoconf
diff -Nurp inn-2.6.4/authprogs/Makefile inn-2.6.5/authprogs/Makefile
--- inn-2.6.4/authprogs/Makefile	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/authprogs/Makefile	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: Makefile 10100 2016-11-04 22:24:26Z iulius $
-
 include ../Makefile.global
 
 top	      = ..
diff -Nurp inn-2.6.4/authprogs/auth_krb5.c inn-2.6.5/authprogs/auth_krb5.c
--- inn-2.6.4/authprogs/auth_krb5.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/authprogs/auth_krb5.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: auth_krb5.c 10266 2018-03-10 14:59:27Z iulius $
-**
+/*
 **  Check an username and password against Kerberos.
 **
 **  Based on nnrpkrb5auth by Christopher P. Lindsey <lindsey@mallorn.com>
@@ -170,7 +169,7 @@ krb5_check_password(const char *principa
         krb5_verify_init_creds_opt vopts;
 
         creds_valid = true;
-        memset(&opts, 0, sizeof(vopts));
+        memset(&vopts, 0, sizeof(vopts));
         krb5_verify_init_creds_opt_init(&vopts);
         code = krb5_verify_init_creds(ctx, &creds, princ, NULL, NULL, &vopts);
     }
diff -Nurp inn-2.6.4/authprogs/ckpasswd.c inn-2.6.5/authprogs/ckpasswd.c
--- inn-2.6.4/authprogs/ckpasswd.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/authprogs/ckpasswd.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: ckpasswd.c 9586 2013-12-14 20:09:55Z iulius $
-**
+/*
 **  The default username/password authenticator.
 **
 **  This program is intended to be run by nnrpd and handle usernames and
@@ -316,6 +315,7 @@ main(int argc, char *argv[])
     enum authtype { AUTH_NONE, AUTH_SHADOW, AUTH_FILE, AUTH_DBM };
 
     int opt;
+    const char *hash;
     enum authtype type = AUTH_NONE;
     bool wantgroup = false;
     const char *filename = NULL;
@@ -410,7 +410,8 @@ main(int argc, char *argv[])
 
     if (password == NULL)
         die("user %s unknown", authinfo->username);
-    if (strcmp(password, crypt(authinfo->password, password)) != 0)
+    hash = crypt(authinfo->password, password);
+    if (hash == NULL || strcmp(password, hash) != 0)
         die("invalid password for user %s", authinfo->username);
 
     /* The password matched. */
diff -Nurp inn-2.6.4/authprogs/domain.c inn-2.6.5/authprogs/domain.c
--- inn-2.6.4/authprogs/domain.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/authprogs/domain.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: domain.c 7585 2006-11-21 09:37:51Z eagle $
-**
+/*
 **  Domain authenticator.
 **
 **  Compares the domain of the client connection to the first argument given
diff -Nurp inn-2.6.4/authprogs/ident.c inn-2.6.5/authprogs/ident.c
--- inn-2.6.4/authprogs/ident.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/authprogs/ident.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: ident.c 9893 2015-06-14 10:05:50Z iulius $
-**
+/*
 **  Ident authenticator.
 */
 
diff -Nurp inn-2.6.4/authprogs/libauth.c inn-2.6.5/authprogs/libauth.c
--- inn-2.6.4/authprogs/libauth.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/authprogs/libauth.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: libauth.c 7585 2006-11-21 09:37:51Z eagle $
-**
+/*
 **  Common code for authenticators and resolvers.
 **
 **  Collects common code to read information from nnrpd that should be done
diff -Nurp inn-2.6.4/authprogs/libauth.h inn-2.6.5/authprogs/libauth.h
--- inn-2.6.4/authprogs/libauth.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/authprogs/libauth.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: libauth.h 7183 2005-04-10 22:46:50Z rra $
-**
+/*
 **  Some utility functions for writing authenticators and resolvers.
 */
 
diff -Nurp inn-2.6.4/authprogs/radius.c inn-2.6.5/authprogs/radius.c
--- inn-2.6.4/authprogs/radius.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/authprogs/radius.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: radius.c 10001 2016-04-03 13:34:28Z iulius $
-**
+/*
 **  Authenticate a user against a remote radius server.
 */
 
diff -Nurp inn-2.6.4/autogen inn-2.6.5/autogen
--- inn-2.6.4/autogen	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/autogen	2022-02-18 20:36:57.000000000 +0100
@@ -1,6 +1,5 @@
 #!/bin/sh
-# autogen -- Run the appropriate commands to bootstrap a Subversion checkout.
-# $Id: autogen 7286 2005-06-08 03:24:22Z eagle $
+# autogen -- Run the appropriate commands to bootstrap a Git checkout.
 
 set -e
 autoconf
diff -Nurp inn-2.6.4/backends/Makefile inn-2.6.5/backends/Makefile
--- inn-2.6.4/backends/Makefile	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/backends/Makefile	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: Makefile 10428 2020-11-24 07:20:05Z iulius $
-
 include ../Makefile.global
 
 top	      = ..
diff -Nurp inn-2.6.4/backends/actmerge.in inn-2.6.5/backends/actmerge.in
--- inn-2.6.4/backends/actmerge.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/backends/actmerge.in	2022-02-18 20:36:57.000000000 +0100
@@ -1,8 +1,6 @@
 #! /bin/sh
 # fixscript will replace this line with code to load innshellvars
 
-# $Id: actmerge.in 8232 2008-12-14 17:05:57Z iulius $
-#
 # actmerge - merge two active files
 #
 # usage:
diff -Nurp inn-2.6.4/backends/actsync.c inn-2.6.5/backends/actsync.c
--- inn-2.6.4/backends/actsync.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/backends/actsync.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: actsync.c 10182 2017-10-16 04:17:01Z eagle $
- *
+/*
  * actsync - sync or merge two active files
  *
  * usage:
@@ -51,7 +50,7 @@
  *	host1		host to be changed 	            (def: local server)
  *	host2		reference host used in merge
  */
-/* 
+/*
  * By: Landon Curt Noll  	chongo@toad.com		(chongo was here /\../\)
  *
  * Copyright (c) Landon Curt Noll, 1996.
diff -Nurp inn-2.6.4/backends/actsyncd.in inn-2.6.5/backends/actsyncd.in
--- inn-2.6.4/backends/actsyncd.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/backends/actsyncd.in	2022-02-18 20:36:57.000000000 +0100
@@ -1,8 +1,6 @@
 #! /bin/sh
 # fixscript will replace this line with code to load innshellvars
 
-# $Id: actsyncd.in 8279 2009-01-08 20:26:26Z iulius $
-#
 # actsyncd - actsync daemon
 #
 # usage:
@@ -120,7 +118,7 @@ fi
 # Lock out others
 #
 shlock -p $$ -f "${LOCK}" || {
-    echo "$0: Locked by `cat '${LOCK}'`" 1>&2
+    echo "$0: Locked by `cat \"${LOCK}\"`" 1>&2
     exit 9
 }
 
diff -Nurp inn-2.6.4/backends/archive.c inn-2.6.5/backends/archive.c
--- inn-2.6.4/backends/archive.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/backends/archive.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: archive.c 10342 2019-05-30 14:18:48Z iulius $
-**
+/*
 **  Read batchfiles on standard input and archive them.
 */
 
diff -Nurp inn-2.6.4/backends/batcher.c inn-2.6.5/backends/batcher.c
--- inn-2.6.4/backends/batcher.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/backends/batcher.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: batcher.c 10040 2016-07-31 20:01:43Z iulius $
-**
+/*
 **  Read batchfiles on standard input and spew out batches.
 */
 
diff -Nurp inn-2.6.4/backends/buffchan.c inn-2.6.5/backends/buffchan.c
--- inn-2.6.4/backends/buffchan.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/backends/buffchan.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: buffchan.c 10040 2016-07-31 20:01:43Z iulius $
-**
+/*
 **  Buffered file exploder for innd.
 */
 
diff -Nurp inn-2.6.4/backends/cvtbatch.c inn-2.6.5/backends/cvtbatch.c
--- inn-2.6.4/backends/cvtbatch.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/backends/cvtbatch.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-/*  $Id: cvtbatch.c 9623 2014-03-15 22:29:46Z iulius $
+/*
 **  Read file list on standard input and spew out batch files.
 */
 
diff -Nurp inn-2.6.4/backends/filechan.c inn-2.6.5/backends/filechan.c
--- inn-2.6.4/backends/filechan.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/backends/filechan.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: filechan.c 7585 2006-11-21 09:37:51Z eagle $
-**
+/*
 **  An InterNetNews channel process that splits a funnel entry into
 **  separate files.  Originally from Robert Elz <kre@munnari.oz.au>.
 */
diff -Nurp inn-2.6.4/backends/innbind.c inn-2.6.5/backends/innbind.c
--- inn-2.6.4/backends/innbind.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/backends/innbind.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: innbind.c 9767 2014-12-07 21:13:43Z iulius $
-**
+/*
 **  Helper program to bind a socket to a low-numbered port.
 **
 **  Written by Russ Allbery <eagle@eyrie.org>
diff -Nurp inn-2.6.4/backends/inndf.c inn-2.6.5/backends/inndf.c
--- inn-2.6.4/backends/inndf.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/backends/inndf.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: inndf.c 10305 2018-12-02 14:21:56Z iulius $
-**
+/*
 **  Reports free kilobytes (not disk blocks) or free inodes.
 **
 **  Written by Ian Dickinson <idickins@fore.com>
diff -Nurp inn-2.6.4/backends/innxbatch.c inn-2.6.5/backends/innxbatch.c
--- inn-2.6.4/backends/innxbatch.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/backends/innxbatch.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: innxbatch.c 10305 2018-12-02 14:21:56Z iulius $
-**
+/*
 **  Transmit batches to remote site, using the XBATCH command
 **  Modelled after innxmit.c and nntpbatch.c
 **
@@ -23,7 +22,7 @@
 **	-t	Timeout for connection attempt
 **	-T	Timeout for batch transfers.
 **  We do not use any file locking. At worst, a batch could be transmitted
-**  twice in parallel by two independant invocations of innxbatch.
+**  twice in parallel by two independent invocations of innxbatch.
 **  To prevent this, innxbatch should be invoked by a shell script that uses
 **  shlock(1) to achieve mutual exclusion.
 */
@@ -270,7 +269,7 @@ REMsendxbatch(int fd, char *buf, int siz
     STATaccepted++;
     if (Debug) fprintf(stderr, "will unlink(%s)\n", XBATCHname);
     if (unlink(XBATCHname)) {
-      /* probably another incarantion was faster, so avoid further duplicate
+      /* probably another instance ran faster, so avoid further duplicate
        * work
        */
       syswarn("cannot unlink %s", XBATCHname);
diff -Nurp inn-2.6.4/backends/innxmit.c inn-2.6.5/backends/innxmit.c
--- inn-2.6.4/backends/innxmit.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/backends/innxmit.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: innxmit.c 10305 2018-12-02 14:21:56Z iulius $
-**
+/*
 **  Transmit articles to remote site.
 **  Modified for NNTP streaming: 1996-01-03 Jerry Aguirre.
 */
diff -Nurp inn-2.6.4/backends/map.c inn-2.6.5/backends/map.c
--- inn-2.6.4/backends/map.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/backends/map.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,3 @@
-/*  $Id: map.c 7585 2006-11-21 09:37:51Z eagle $
-**
-*/
-
 #include "config.h"
 #include "clibrary.h"
 #include <errno.h>
diff -Nurp inn-2.6.4/backends/map.h inn-2.6.5/backends/map.h
--- inn-2.6.4/backends/map.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/backends/map.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,3 @@
-/*  $Id: map.h 5292 2002-03-10 08:59:54Z vinocur $
-**
-*/
-
 void  MAPfree(void);                    /* free the map */
 void  MAPread(const char *name);        /* read the map file */
 char *MAPname(char *p);                 /* lookup in the map */
diff -Nurp inn-2.6.4/backends/mod-active.in inn-2.6.5/backends/mod-active.in
--- inn-2.6.4/backends/mod-active.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/backends/mod-active.in	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,6 @@
 #! /usr/bin/perl -w
 # fixscript will replace this line with code to load INN::Config
 
-# $Id: mod-active.in 9215 2011-07-05 18:27:40Z iulius $
 # batch-active-update
 # Author: David Lawrence <tale@isc.org>
 
diff -Nurp inn-2.6.4/backends/news2mail.in inn-2.6.5/backends/news2mail.in
--- inn-2.6.4/backends/news2mail.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/backends/news2mail.in	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,6 @@
 #! /usr/bin/perl -w
 # fixscript will replace this line with code to load INN::Config
 
-# $Id: news2mail.in 10076 2016-10-08 20:37:36Z iulius $
 # News to mail channel backend.
 #
 # INN gives us
diff -Nurp inn-2.6.4/backends/ninpaths.c inn-2.6.5/backends/ninpaths.c
--- inn-2.6.4/backends/ninpaths.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/backends/ninpaths.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: ninpaths.c 10040 2016-07-31 20:01:43Z iulius $
-**
+/*
 **  New inpaths reporting program.
 **
 **  Idea, data structures and part of code based on inpaths 2.5
diff -Nurp inn-2.6.4/backends/nntpget.c inn-2.6.5/backends/nntpget.c
--- inn-2.6.4/backends/nntpget.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/backends/nntpget.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: nntpget.c 10305 2018-12-02 14:21:56Z iulius $
-**
+/*
 **  Connect to a remote site, and get news from it to offer to our local
 **  server.  Read list on stdin, or get it via NEWNEWS command.  Writes
 **  list of articles still needed to stdout.
@@ -187,8 +186,9 @@ static void
 Usage(const char *p)
 {
     warn("%s", p);
-    fprintf(stderr, "Usage: nntpget"
-            " [ -d dist -n grps [-f file | -t time -u file]] host\n");
+    fprintf(stderr,
+            "Usage: nntpget"
+            " [-ov] [-d dist] [-f file] [-n grps] [-t time] [-u file] host\n");
     exit(1);
 }
 
@@ -232,7 +232,7 @@ main(int ac, char *av[])
     umask(NEWSUMASK);
 
     /* Parse JCL. */
-    while ((i = getopt(ac, av, "d:f:n:t:ovu:")) != EOF)
+    while ((i = getopt(ac, av, "d:f:n:t:ou:v")) != EOF)
 	switch (i) {
 	default:
 	    Usage("bad flag");
@@ -268,7 +268,7 @@ main(int ac, char *av[])
 	    break;
 	case 't':
 	    if (Since)
-		Usage("only one of -t or -f may be given");
+		Usage("only one of -f, -t, or -u may be given");
 	    Since = optarg;
 	    break;
 	case 'v':
@@ -398,7 +398,7 @@ main(int ac, char *av[])
 	}
 
 	if (Verbose)
-            notice("%s...", mesgid);
+            notice("%s", mesgid);
 
 	/* Read each line in the article and write it. */
 	for (Error = false; ; ) {
diff -Nurp inn-2.6.4/backends/nntpsend.in inn-2.6.5/backends/nntpsend.in
--- inn-2.6.4/backends/nntpsend.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/backends/nntpsend.in	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,6 @@
 #! /bin/sh
 # fixscript will replace this line with code to load innshellvars
 
-##  $Id: nntpsend.in 9969 2015-12-10 20:28:37Z iulius $
 ##  Send news via NNTP by running several innxmit processes in the background.
 ##  Usage:
 ##	nntpsend [-acDdlNnpr] [-P portnum] [-s size] [-T limit] [-t timeout]
diff -Nurp inn-2.6.4/backends/overchan.c inn-2.6.5/backends/overchan.c
--- inn-2.6.4/backends/overchan.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/backends/overchan.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: overchan.c 9695 2014-09-20 05:53:22Z iulius $
-**
+/*
 **  Add entries to the overview database.
 **
 **  overchan is intended to run as a channel feed to store data into the
diff -Nurp inn-2.6.4/backends/send-ihave.in inn-2.6.5/backends/send-ihave.in
--- inn-2.6.4/backends/send-ihave.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/backends/send-ihave.in	2022-02-18 20:36:57.000000000 +0100
@@ -1,16 +1,15 @@
 #! /bin/sh
 # fixscript will replace this line with code to load innshellvars
 
-##  $Revision: 2674 $
-##  SH script to send IHAVE batches out.
+##  SH script to send ihave control messages in batches out.
 
 PROGNAME=`basename $0`
 LOG=${MOST_LOGS}/${PROGNAME}.log
 
-## How many Message-ID's per message.
+##  How many Message-ID's per message.
 PERMESSAGE=1000
 
-##  Go to where the action is, start logging
+##  Go to where the action is, start logging.
 cd $BATCH
 umask 002
 DEBUG=""
@@ -25,7 +24,7 @@ fi
 
 echo "${PROGNAME}: [$$] begin `date`"
 
-##  List of sitename:hostname pairs to send to
+##  List of sitename[:hostname] pairs to send to.
 if [ -n "$1" ] ; then
     LIST="$*"
 else
@@ -79,7 +78,7 @@ for SITE in ${LIST}; do
     export SITE PERMESSAGE BATCHFILE
     while test -s ${BATCHFILE} ; do
 	(
-	    echo Newsgroups: to.${SITE}
+	    echo Newsgroups: to.${HOST}
 	    echo Control: ihave `innconfval pathhost`
 	    echo Subject: cmsg ihave `innconfval pathhost`
 	    echo ''
diff -Nurp inn-2.6.4/backends/send-nntp.in inn-2.6.5/backends/send-nntp.in
--- inn-2.6.4/backends/send-nntp.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/backends/send-nntp.in	2022-02-18 20:36:57.000000000 +0100
@@ -1,13 +1,12 @@
 #! /bin/sh
 # fixscript will replace this line with code to load innshellvars
 
-##  $Revision: 4115 $
 ##  SH script to send NNTP news out.
 
 PROGNAME=`basename $0`
 LOG=${MOST_LOGS}/${PROGNAME}.log
 
-##  Go to where the action is, start logging
+##  Go to where the action is, start logging.
 cd $BATCH
 umask 002
 DEBUG=""
@@ -22,7 +21,7 @@ fi
 
 echo "${PROGNAME}: [$$] begin `date`"
 
-##  List of sitename:hostname pairs to send to
+##  List of sitename:hostname pairs to send to.
 if [ -n "$1" ] ; then
     LIST="$*"
 else
@@ -85,4 +84,4 @@ for SITE in ${LIST}; do
     rm -f ${LOCK}
 done
 
-echo "${PROGNAME}: [$$] end   `date`"
+echo "${PROGNAME}: [$$] end `date`"
diff -Nurp inn-2.6.4/backends/send-uucp.in inn-2.6.5/backends/send-uucp.in
--- inn-2.6.4/backends/send-uucp.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/backends/send-uucp.in	2022-02-18 20:36:57.000000000 +0100
@@ -273,7 +273,7 @@ are over dial-up connections).
 
 Any arguments provided to the program are interpreted as a list of sites
 specified in F<send-uucp.cf> for which batches should be generated.  If no
-arguments are supplied then batches will be generated for all sites listed
+arguments are supplied, then batches will be generated for all sites listed
 in that configuration file.
 
 =head1 CONFIGURATION
@@ -363,6 +363,186 @@ is kept between S<4 KB> and S<1 KB>:
         :*,!junk,!control,!control.*/!foo\
         :Tf,Wnb,B4096/1024:
 
+=head1 SETTING UP UUCP FEEDS
+
+Here are the steps to follow to set up a UUCP feed over SSH between
+two news servers, using the UUCP implementation available in Debian
+as the C<uucp> package.  The mechanisms described below should be
+transposed if you use another UUCP implementation.  (And if you do,
+please inform the INN maintainers about how to set up a feed with another
+UUCP implementation, so that it can be added to this documentation.)
+
+=over 4
+
+=item 1.
+
+First of all, make sure B<rnews> is correctly installed setuid C<news>,
+owned by group C<uucp>, and mode C<4550>.  This will allow the UUCP
+subsystem to run B<rnews> to process UUCP batches of news articles.
+The C<configure> flag B<--enable-uucp-rnews> takes care of it when
+installing INN.  Otherwise, you'll have to manually change the
+permissions on B<rnews>.
+
+=item 2.
+
+Install the C<uucp> package.  It will notably provide uucico(8)
+and uux(1).
+
+=item 3.
+
+Configure in F</etc/uucp/Poll> the remote news servers to poll, and
+the hours during which they are to be polled.  For instance, if you
+send to C<news.server.to.feed> UUCP batches every 4 hours, you can use:
+
+    schedule news.server.to.feed 00
+    poll news.server.to.feed 00 04 08 12 16 20
+
+If sending is hourly, just list all the hours.
+
+=item 4.
+
+Configure in F</etc/uucp/call> the credentials (usernames and passwords)
+to use when authenticating against remote news servers, one per line.
+For instance:
+
+    news.server.to.feed login password
+
+=item 5.
+
+Configure in F</etc/uucp/config> the UUCP name of the local news server.
+For instance:
+
+    nodename my.news.server
+
+=item 6.
+
+Check that F</etc/uucp/expire> fits your needs as for the number of days
+batches are retained as well as the configuration of daily reports.
+Default values are normally fine, though you may want to receive a
+daily report only if unusual things happen (and in that case, just set
+C<$important_only> to C<1>).
+
+=item 7.
+
+Configure in F</etc/uucp/passwd> the credentials (usernames and passwords
+separated by a tabulation) remote news servers use when authenticating
+against the local news server, one per line.  For instance:
+
+    login<TAB>password
+
+=item 8.
+
+Configure in F</etc/uucp/sys> how remote news servers connect to the
+local news server.  A typical entry to set an SSH connection is the
+following one where I<pathbin> should be changed to the real path
+to B<rnews>:
+
+    system news.server.to.feed
+    call-login *
+    call-password *
+    commands <pathbin>/rnews
+    time any
+    chat "" \d\d\r\c ogin: \d\L word: \P
+    chat-timeout 120
+    protocol i
+    port ssh.news.server.to.feed
+
+=item 9.
+
+Configure in F</etc/uucp/port> how to connect to remote news servers.
+A typical entry to set an SSH connection using a private key is:
+
+    port ssh.news.server.to.feed
+    type pipe
+    command /usr/bin/ssh -a -x -q -i <key_file> -l uucp news.server.to.feed
+    reliable true
+    protocol etyig
+
+where I<key_file> is the private key to use for the SSH connection,
+like for instance F</var/spool/uucp/.ssh/id_private_key>.
+
+=item 10.
+
+Make sure the administrators of remote news servers have added the
+public key related to F<id_private_key> for connections to the C<uucp>
+user of the remote news servers.
+
+=item 11.
+
+Supposing the home directory of the C<uucp> user is F</var/spool/uucp>,
+you need to configure the SSH keys in the F<.ssh> subdirectory.  First,
+add the public keys of all remote news servers in F<authorized_keys>.
+A typical entry is:
+
+    no-port-forwarding,no-X11-forwarding,no-agent-forwarding,command="/usr/sbin/uucico -l",from="news.server.to.feed" ssh-rsa xxxyyyzzz uucp@news.server.to.feed
+
+This ensures the SSH connection will not be used for another goal than
+exchanging UUCP batches.
+
+=item 12.
+
+Make sure F<id_private_key> is correctly present, as set in
+F</etc/uucp/port>, and only readable by the C<uucp> user.
+
+=item 13.
+
+Manually run as the C<uucp> user the command set in F</etc/uucp/port>
+so as to create the F<known_hosts> file so as to make sure the SSH
+setting is fine.
+
+   /usr/bin/ssh -a -x -q -i <key_file> -l uucp news.server.to.feed
+
+=item 14.
+
+Parameter the feed to send to the remote servers.  A typical entry in
+F<newsfeeds> to generate batches in I<pathoutgoing> is:
+
+    news.server.to.feed/pathname:*:Tf,Wnb,B4096/1024:
+
+=item 15.
+
+Set up the compression method, batch sizes and when to generate them
+in F<send-uucp.cf> located in I<pathetc>, as described earlier in this
+documentation.
+
+    news.server.to.feed   bzip2      1048576   3,7,11,15,19,23
+
+=item 16.
+
+Check that B<send-uucp> is started hourly in crontab by the C<news> user.
+For instance in F</etc/cron.d/inn2>:
+
+    52 * * * * news <pathbin>/send-uucp
+
+It can be useful to set up a different launch time than your remote
+servers.  For instance, if you generate batches every hour at minute 52,
+a remote peer may do the same at minute 22.  This way, you may exchange
+articles more frequently, depending on when each other connects.
+
+=item 17.
+
+Check that UUCP programs are automatically started in crontab (usually,
+B<uudemon.hr> is called hourly in F</etc/cron.d/uucp> to poll remote
+news servers, and B<uudemon.day> daily in F</etc/cron.daily/uucp>).
+
+Like for B<send-uucp>, adjust the launch time to maximize the number
+and the freshness of batches to exchanges.
+
+=item 18.
+
+Check the logs in F</var/log/uucp> to ensure everything works fine,
+both polling and sending.
+
+You will see that B<send-uucp> prepares B<rnews> batches named like
+F<D.0I8Y>, that are queued by B<uux>.  When B<uucico> is afterwards
+started from cron to transfer these batches, B<uucico> takes available
+batches from the remote sites at the same time.  These received batches
+are then processed by B<uuxqt> which calls B<rnews> to inject them.
+
+That's all!
+
+=back
+
 =head1 FILES
 
 =over 4
@@ -375,6 +555,10 @@ The Perl script itself used to create ne
 
 The configuration file which specifies a list of sites to be processed.
 
+=item I<pathlog>/send-uucp.log
+
+The log file used if the syslog facility is not available.
+
 =back
 
 =head1 HISTORY
diff -Nurp inn-2.6.4/backends/sendinpaths.in inn-2.6.5/backends/sendinpaths.in
--- inn-2.6.4/backends/sendinpaths.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/backends/sendinpaths.in	2022-02-18 20:36:57.000000000 +0100
@@ -1,8 +1,6 @@
 #! /usr/bin/perl -w
 # fixscript will replace this line with code to load INN::Config
 
-##  $Id: sendinpaths.in 9383 2011-12-25 20:56:10Z iulius $
-##
 ##  Submit Path: statistics based on ninpaths.
 ##
 ##  A rewrite of the sendinpaths shell script in Perl, based on Mohan Kokal's
diff -Nurp inn-2.6.4/backends/sendxbatches.in inn-2.6.5/backends/sendxbatches.in
--- inn-2.6.4/backends/sendxbatches.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/backends/sendxbatches.in	2022-02-18 20:36:57.000000000 +0100
@@ -1,18 +1,18 @@
 #! /bin/sh
 # fixscript will replace this line with code to load innshellvars
 
-# $Id: sendxbatches.in 2674 1999-11-15 06:28:29Z rra $ 
 # By petri@ibr.cs.tu-bs.de with mods by libove@jerry.alf.dec.com
 #
-#  Script to send xbatches for a site, wrapped around innxbatch
-#  Invocation: sendxbatches <sitename> <hostname> <xbatch file name> ...
+#  Script to send xbatches for a site, wrapped around innxbatch.
+#  Invocation:
+#      sendxbatches <sitename> <hostname> <xbatch file name> ...
 #
 ##  TODO: - we should check the amount of queued batches for the site,
 ##          to prevent disk overflow due to unreachable sites.
 
 if [ $# -lt 3 ]
 then
-	echo "usage: $0 <sitename> <hostname> <xbatch file name>"
+	echo "usage: $0 <sitename> <hostname> <xbatch file name> ..."
 	exit 1
 fi
 
diff -Nurp inn-2.6.4/backends/shlock.c inn-2.6.5/backends/shlock.c
--- inn-2.6.4/backends/shlock.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/backends/shlock.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: shlock.c 10305 2018-12-02 14:21:56Z iulius $
-**
+/*
 **  Produce reliable locks for shell scripts, by Peter Honeyman as told
 **  to Rich $alz.
 **
diff -Nurp inn-2.6.4/backends/shrinkfile.c inn-2.6.5/backends/shrinkfile.c
--- inn-2.6.4/backends/shrinkfile.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/backends/shrinkfile.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,25 +1,24 @@
-/*  $Id: shrinkfile.c 10153 2017-06-05 12:28:01Z iulius $
-**
+/*
 **  Shrink files on line boundaries.
 **
 **  Written by Landon Curt Noll <chongo@toad.com>, and placed in the
 **  public domain.  Rewritten for INN by Rich Salz.
 **
 **  Usage:
-**	shrinkfile [-n] [-s size [-m maxsize]] [-v] file...
-**	-n		No writes, exit 0 if any file is too large, 1 otherwise
-**	-s size		Truncation size (0 default); suffix may be k, m,
-**			or g to scale.  Must not be larger than 2^31 - 1.
-**	-m maxsize	Maximum size allowed before truncation.  If maxsize
-**			<= size, then it is reset to size.  Default == size.
-**	-v		Print status line.
+**      shrinkfile [-nv] [-m maxsize] [-s size] file [file ...]
+**      -n              No writes, exit 0 if any file is too large, 1 otherwise
+**      -s size         Truncation size (0 default); suffix may be k, m,
+**                      or g to scale.  Must not be larger than 2^31 - 1.
+**      -m maxsize      Maximum size allowed before truncation.  If maxsize
+**                      <= size, then it is reset to size.  Default == size.
+**      -v              Print status line.
 **
-**  Files will be shrunk an end of line boundary.  In no case will the
-**  file be longer than size bytes if it was longer than maxsize bytes.  
-**  If the first line is longer than the absolute value of size, the file 
+**  Files will be shrunk at end of line boundary.  In no case will the
+**  file be longer than size bytes if it was longer than maxsize bytes.
+**  If the first line is longer than the absolute value of size, the file
 **  will be truncated to zero length.
 **
-**  The -n flag may be used to determine of any file is too large.  No
+**  The -n flag may be used to determine if any file is too large.  No
 **  files will be altered in this mode.
 */
 
@@ -110,7 +109,7 @@ AppendNewline(char *name)
 }
 
 /*
-**  Just check if it is too big
+**  Just check if it is too big.
 */
 static bool
 TooBig(FILE *F, off_t maxsize)
@@ -298,8 +297,9 @@ ParseSize(char *p)
 static void
 Usage(void)
 {
-    fprintf(stderr,
-            "Usage: shrinkfile [-n] [ -m maxsize ] [-s size] [-v] file...");
+    fprintf(
+        stderr,
+        "Usage: shrinkfile [-nv] [-m maxsize] [-s size] file [file ...]\n");
     exit(1);
 }
 
@@ -362,10 +362,10 @@ main(int ac, char *av[])
 	    continue;
 	}
 
-	/* -n (no_op) or normal processing */
+	/* If -n (no_op). */
 	if (no_op) {
 
-	    /* check if too big and exit zero if it is */
+	    /* Check if too big and exit zero if it is. */
 	    if (TooBig(F, maxsize)) {
 		if (Verbose)
                     notice("%s is too large", p);
@@ -373,7 +373,7 @@ main(int ac, char *av[])
 		/* NOTREACHED */
 	    }
 
-	/* no -n, do some real work */
+	/* No -n, do some real work. */
 	} else {
 	    Changed = false;
 	    if (!Process(F, p, size, maxsize, &Changed))
@@ -386,7 +386,7 @@ main(int ac, char *av[])
         notice("did not find a file that was too large");
     }
 
-    /* if -n, then exit non-zero to indicate no file too big */
+    /* If -n, then exit non-zero to indicate no file too big. */
     exit(no_op ? 1 : 0);
     /* NOTREACHED */
 }
diff -Nurp inn-2.6.4/configure inn-2.6.5/configure
--- inn-2.6.4/configure	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/configure	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,6 @@
 #! /bin/sh
-# From configure.ac Revision: 10520 .
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for INN 2.6.4.
+# Generated by GNU Autoconf 2.69 for INN 2.6.5.
 #
 # Report bugs to <inn-workers@lists.isc.org>.
 #
@@ -591,10 +590,10 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='INN'
 PACKAGE_TARNAME='inn'
-PACKAGE_VERSION='2.6.4'
-PACKAGE_STRING='INN 2.6.4'
+PACKAGE_VERSION='2.6.5'
+PACKAGE_STRING='INN 2.6.5'
 PACKAGE_BUGREPORT='inn-workers@lists.isc.org'
-PACKAGE_URL='https://www.isc.org/downloads/projects/'
+PACKAGE_URL='https://www.isc.org/othersoftware/'
 
 ac_default_prefix=/usr/local/news
 # Factoring default headers for most tests.
@@ -1450,7 +1449,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures INN 2.6.4 to adapt to many kinds of systems.
+\`configure' configures INN 2.6.5 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1516,7 +1515,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of INN 2.6.4:";;
+     short | recursive ) echo "Configuration of INN 2.6.5:";;
    esac
   cat <<\_ACEOF
 
@@ -1640,7 +1639,7 @@ Use these variables to override the choi
 it to find libraries and programs with nonstandard names/locations.
 
 Report bugs to <inn-workers@lists.isc.org>.
-INN home page: <https://www.isc.org/downloads/projects/>.
+INN home page: <https://www.isc.org/othersoftware/>.
 _ACEOF
 ac_status=$?
 fi
@@ -1703,7 +1702,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-INN configure 2.6.4
+INN configure 2.6.5
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2542,7 +2541,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by INN $as_me 2.6.4, which was
+It was created by INN $as_me 2.6.5, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2891,7 +2890,6 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
-
 ac_aux_dir=
 for ac_dir in support "$srcdir"/support; do
   if test -f "$ac_dir/install-sh"; then
@@ -2922,7 +2920,96 @@ ac_configure="$SHELL $ac_aux_dir/configu
 
 
 
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: Building INN requires the following dependencies to be met,
+besides a working compiler, a POSIX shell and GNU make, as well as Autoconf
+if you're bootstrapping the source code.
+---
+The names of the deb and rpm packages are given to help you find them quicker.
+---
+Mandatory (deb / rpm):
+- bison, flex / byacc, flex (for the innfeed build, if bootstrapping the source
+  code)
+- perl / perl (for various mandatory Perl scripts)
+- default-mta / postfix (or any specific MTA, for moderated newsgroups)
+---
+Optional (deb / rpm):
+- libdb-dev / libdb-devel (--with-bdb for ovdb overview)
+- libkrb5-dev / krb5-devel (--with-krb5 for a Kerberos v5 authenticator)
+- libssl-dev / openssl-devel (--with-openssl for TLS support for readers)
+- libperl-dev / perl-devel, perl-ExtUtils-Embed (--with-perl for Perl-based
+  spam filtering and authentication)
+- python3-dev, python3 / python3-devel, python3 (--with-python for Python-based
+  spam filtering and authentication)
+- libsasl2-dev / cyrus-sasl-devel (--with-sasl for SASL authentication support)
+- zlib1g-dev / zlib-devel (--with-zlib for compressed ovdb, and the COMPRESS
+  command for readers)
+- libpam0g-dev / pam-devel (for PAM authentication support)
+- libsystemd-dev, pkg-config / systemd-devel, pkg-config (for systemd
+  notifications and socket activation)
+---
+Though not mandatory for the build, the following packages should be installed
+if you plan on using the provided features (configure will properly sets their
+path in a few variables used by INN):
+- gnupg / gnupg2 (for the verification of the signatures of control articles
+  and NoCeM notices)
+- uucp / uucp (for the exchange of news articles with send-uucp)
+- various wide-spread programs like a modern awk implementation, grep, gzip
+  (and eventually bzip2 and compress if you want to use other compression
+  methods with send-uucp or rnews), sed and sort, probably already installed
+  on your system, and used by INN in several scripts
+---
+Though not mandatory for the build, the following packages will also be useful:
+- libgd-perl / perl-GD (for pictures in HTML daily Usenet reports)
+- libmime-tools-perl / perl-MIME-tools (for the decoding of control articles
+  by controlchan)
+- cron and syslog, probably already installed on your system
+---
+Happy building!" >&5
+$as_echo "$as_me: Building INN requires the following dependencies to be met,
+besides a working compiler, a POSIX shell and GNU make, as well as Autoconf
+if you're bootstrapping the source code.
+---
+The names of the deb and rpm packages are given to help you find them quicker.
+---
+Mandatory (deb / rpm):
+- bison, flex / byacc, flex (for the innfeed build, if bootstrapping the source
+  code)
+- perl / perl (for various mandatory Perl scripts)
+- default-mta / postfix (or any specific MTA, for moderated newsgroups)
+---
+Optional (deb / rpm):
+- libdb-dev / libdb-devel (--with-bdb for ovdb overview)
+- libkrb5-dev / krb5-devel (--with-krb5 for a Kerberos v5 authenticator)
+- libssl-dev / openssl-devel (--with-openssl for TLS support for readers)
+- libperl-dev / perl-devel, perl-ExtUtils-Embed (--with-perl for Perl-based
+  spam filtering and authentication)
+- python3-dev, python3 / python3-devel, python3 (--with-python for Python-based
+  spam filtering and authentication)
+- libsasl2-dev / cyrus-sasl-devel (--with-sasl for SASL authentication support)
+- zlib1g-dev / zlib-devel (--with-zlib for compressed ovdb, and the COMPRESS
+  command for readers)
+- libpam0g-dev / pam-devel (for PAM authentication support)
+- libsystemd-dev, pkg-config / systemd-devel, pkg-config (for systemd
+  notifications and socket activation)
+---
+Though not mandatory for the build, the following packages should be installed
+if you plan on using the provided features (configure will properly sets their
+path in a few variables used by INN):
+- gnupg / gnupg2 (for the verification of the signatures of control articles
+  and NoCeM notices)
+- uucp / uucp (for the exchange of news articles with send-uucp)
+- various wide-spread programs like a modern awk implementation, grep, gzip
+  (and eventually bzip2 and compress if you want to use other compression
+  methods with send-uucp or rnews), sed and sort, probably already installed
+  on your system, and used by INN in several scripts
+---
+Though not mandatory for the build, the following packages will also be useful:
+- libgd-perl / perl-GD (for pictures in HTML daily Usenet reports)
+- libmime-tools-perl / perl-MIME-tools (for the decoding of control articles
+  by controlchan)
+- cron and syslog, probably already installed on your system
+---
+Happy building!" >&6;}
 
 
 
@@ -14385,10 +14472,12 @@ $as_echo_n "checking for flags to link w
  inn_perl_core_libs=`$as_echo "$inn_perl_core_libs" | sed 's/ -lc / /'`
  case $host in #(
   *-linux*) :
-    inn_perl_core_libs=`$as_echo "$inn_perl_core_libs" | sed 's/ -lgdbm / /'` ;; #(
+    inn_perl_core_libs=`$as_echo "$inn_perl_core_libs" \
+            | sed 's/ -lgdbm / /'` ;; #(
   *-cygwin*) :
     inn_perl_libname=`"$PERL" -MConfig -e 'print $Config{libperl}'`
-         inn_perl_libname=`$as_echo "$inn_perl_libname" | sed 's/^lib//; s/\.a$//'`
+         inn_perl_libname=`$as_echo "$inn_perl_libname" \
+            | sed 's/^lib//; s/\.a$//'`
          inn_perl_core_libs="${inn_perl_core_libs}-l$inn_perl_libname" ;; #(
   *) :
      ;;
@@ -14600,20 +14689,34 @@ fi
 
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for flags to link with Python" >&5
 $as_echo_n "checking for flags to link with Python... " >&6; }
- py_include=`$PYTHON -c 'import distutils.sysconfig; \
-     print(distutils.sysconfig.get_python_inc())'`
+ if "$PYTHON" -c 'import sysconfig' >/dev/null 2>&1; then :
+  py_include=`$PYTHON -c 'import sysconfig; \
+          print(sysconfig.get_paths("posix_prefix").get("include", ""))'`
+      py_libdir=`$PYTHON -c 'import sysconfig; \
+          print(" -L".join(sysconfig.get_config_vars("LIBDIR")))'`
+      py_ldlibrary=`$PYTHON -c 'import sysconfig; \
+          print(sysconfig.get_config_vars("LDLIBRARY")[0])'`
+      py_linkage=`$PYTHON -c 'import sysconfig;                      \
+          print(" ".join(sysconfig.get_config_vars(                  \
+              "LIBS", "LIBC", "LIBM", "LOCALMODLIBS", "BASEMODLIBS", \
+              "LINKFORSHARED", "LDFLAGS")))'`
+else
+  py_include=`$PYTHON -c 'import distutils.sysconfig; \
+          print(distutils.sysconfig.get_python_inc())'`
+      py_libdir=`$PYTHON -c 'import distutils.sysconfig; \
+          print(" -L".join(distutils.sysconfig.get_config_vars("LIBDIR")))'`
+      py_ldlibrary=`$PYTHON -c 'import distutils.sysconfig; \
+          print(distutils.sysconfig.get_config_vars("LDLIBRARY")[0])'`
+      py_linkage=`$PYTHON -c 'import distutils.sysconfig;            \
+          print(" ".join(distutils.sysconfig.get_config_vars(        \
+              "LIBS", "LIBC", "LIBM", "LOCALMODLIBS", "BASEMODLIBS", \
+              "LINKFORSHARED", "LDFLAGS")))'`
+fi
  PYTHON_CPPFLAGS="-I$py_include"
- py_libdir=`$PYTHON -c 'import distutils.sysconfig; \
-     print(" -L".join(distutils.sysconfig.get_config_vars("LIBDIR")))'`
- py_ldlibrary=`$PYTHON -c 'import distutils.sysconfig; \
-     print(distutils.sysconfig.get_config_vars("LDLIBRARY")[0])'`
- py_linkage=`$PYTHON -c 'import distutils.sysconfig;            \
-     print(" ".join(distutils.sysconfig.get_config_vars(        \
-         "LIBS", "LIBC", "LIBM", "LOCALMODLIBS", "BASEMODLIBS", \
-         "LINKFORSHARED", "LDFLAGS")))'`
- py_libpython=`$as_echo "$py_ldlibrary" | sed "s/^lib//" | sed "s/\.[a-z]*$//"`
+ py_libpython=`$as_echo "$py_ldlibrary" \
+    | sed -e 's/^lib//' -e 's/\.[a-z]*$//'`
  PYTHON_LIBS="-L$py_libdir -l$py_libpython $py_linkage"
- PYTHON_LIBS=`$as_echo "$PYTHON_LIBS" | sed -e 's/ \\t*/ /g'`
+ PYTHON_LIBS=`$as_echo "$PYTHON_LIBS" | sed 's/ [ \\t]*/ /g'`
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_LIBS" >&5
 $as_echo "$PYTHON_LIBS" >&6; }
  inn_python_save_CPPFLAGS="$CPPFLAGS"
@@ -16753,10 +16856,10 @@ cat >>confdefs.h <<_ACEOF
 _ACEOF
 
 
- if test "$ac_cv_sizeof_long" -eq 4 && test -d /usr/lib32; then :
+ if test "$ac_cv_sizeof_long" -eq 4; then :
   inn_lib_arch_name=lib32
 else
-  if test "$ac_cv_sizeof_long" -eq 8 && test -d /usr/lib64; then :
+  if test "$ac_cv_sizeof_long" -eq 8; then :
   inn_lib_arch_name=lib64
 fi
 fi
@@ -17087,76 +17190,13 @@ else
 fi
 fi
 fi
-     inn_krb5_header_found=false
- if test x"$inn_krb5_incroot" = x; then :
-  for ac_header in krb5.h kerberosv5/krb5.h krb5/krb5.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
- inn_krb5_header_found=true
-fi
-
-done
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5.h" >&5
-$as_echo_n "checking for krb5.h... " >&6; }
- if test -f "${inn_krb5_incroot}/krb5.h"; then :
-  inn_krb5_header_found=true
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_KRB5_H 1
-_ACEOF
-
-     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/krb5.h" >&5
-$as_echo_n "checking for kerberosv5/krb5.h... " >&6; }
- if test -f "${inn_krb5_incroot}/kerberosv5/krb5.h"; then :
-  inn_krb5_header_found=true
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_KERBEROSV5_KRB5_H 1
-_ACEOF
-
-     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5/krb5.h" >&5
-$as_echo_n "checking for krb5/krb5.h... " >&6; }
- if test -f "${inn_krb5_incroot}/krb5/krb5.h"; then :
-  inn_krb5_header_found=true
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_KRB5_KRB5_H 1
-_ACEOF
-
-     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-fi
- if test x"$inn_krb5_header_found" = xtrue; then :
-  inn_krb5_save_CPPFLAGS="$CPPFLAGS"
+     inn_krb5_save_CPPFLAGS="$CPPFLAGS"
  inn_krb5_save_LDFLAGS="$LDFLAGS"
  inn_krb5_save_LIBS="$LIBS"
  CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
  LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
  LIBS="$KRB5_LIBS $LIBS"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_init_context in -lkrb5" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_init_context in -lkrb5" >&5
 $as_echo_n "checking for krb5_init_context in -lkrb5... " >&6; }
 if ${ac_cv_lib_krb5_krb5_init_context+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -17194,8 +17234,8 @@ fi
 $as_echo "$ac_cv_lib_krb5_krb5_init_context" >&6; }
 if test "x$ac_cv_lib_krb5_krb5_init_context" = xyes; then :
   KRB5_LIBS="-lkrb5"
-          LIBS="$KRB5_LIBS $LIBS"
-          for ac_func in krb5_get_error_message
+     LIBS="$KRB5_LIBS $LIBS"
+     for ac_func in krb5_get_error_message
 do :
   ac_fn_c_check_func "$LINENO" "krb5_get_error_message" "ac_cv_func_krb5_get_error_message"
 if test "x$ac_cv_func_krb5_get_error_message" = xyes; then :
@@ -17270,9 +17310,9 @@ fi
 $as_echo "$ac_cv_lib_ksvc_krb5_svc_get_msg" >&6; }
 if test "x$ac_cv_lib_ksvc_krb5_svc_get_msg" = xyes; then :
   KRB5_LIBS="$KRB5_LIBS -lksvc"
-                          $as_echo "#define HAVE_KRB5_SVC_GET_MSG 1" >>confdefs.h
+                     $as_echo "#define HAVE_KRB5_SVC_GET_MSG 1" >>confdefs.h
 
-                          for ac_header in ibm_svc/krb5_svc.h
+                     for ac_header in ibm_svc/krb5_svc.h
 do :
   ac_fn_c_check_header_compile "$LINENO" "ibm_svc/krb5_svc.h" "ac_cv_header_ibm_svc_krb5_svc_h" "
 #if HAVE_KRB5_H
@@ -17294,54 +17334,6 @@ fi
 done
 
 else
-  inn_krb5_header_found=false
-                          if test x"$inn_krb5_incroot" = x; then :
-  for ac_header in et/com_err.h kerberosv5/com_err.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
- inn_krb5_header_found=true
-fi
-
-done
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for et/com_err.h" >&5
-$as_echo_n "checking for et/com_err.h... " >&6; }
- if test -f "${inn_krb5_incroot}/et/com_err.h"; then :
-  inn_krb5_header_found=true
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_ET_COM_ERR_H 1
-_ACEOF
-
-     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/com_err.h" >&5
-$as_echo_n "checking for kerberosv5/com_err.h... " >&6; }
- if test -f "${inn_krb5_incroot}/kerberosv5/com_err.h"; then :
-  inn_krb5_header_found=true
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_KERBEROSV5_COM_ERR_H 1
-_ACEOF
-
-     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-fi
-                          if test x"$inn_krb5_header_found" = xtrue; then :
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for com_err in -lcom_err" >&5
 $as_echo_n "checking for com_err in -lcom_err... " >&6; }
 if ${ac_cv_lib_com_err_com_err+:} false; then :
@@ -17388,9 +17380,50 @@ else
 fi
 fi
 
+                     if test x"$inn_krb5_incroot" = x; then :
+  for ac_header in et/com_err.h kerberosv5/com_err.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
 else
-  if test x"true" = xtrue; then :
-  as_fn_error $? "cannot find usable com_err header" "$LINENO" 5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for et/com_err.h" >&5
+$as_echo_n "checking for et/com_err.h... " >&6; }
+ if test -f "${inn_krb5_incroot}/et/com_err.h"; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_ET_COM_ERR_H 1
+_ACEOF
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/com_err.h" >&5
+$as_echo_n "checking for kerberosv5/com_err.h... " >&6; }
+ if test -f "${inn_krb5_incroot}/kerberosv5/com_err.h"; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_KERBEROSV5_COM_ERR_H 1
+_ACEOF
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 fi
 fi
@@ -17404,17 +17437,83 @@ done
 fi
 done
 
+     inn_krb5_found_header=
+ if test x"$inn_krb5_incroot" = x; then :
+  for ac_header in krb5.h kerberosv5/krb5.h krb5/krb5.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+ inn_krb5_found_header=true
+fi
+
+done
+
 else
-  if test x"true" = xtrue; then :
-  as_fn_error $? "cannot find usable Kerberos library" "$LINENO" 5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5.h" >&5
+$as_echo_n "checking for krb5.h... " >&6; }
+ if test -f "${inn_krb5_incroot}/krb5.h"; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_KRB5_H 1
+_ACEOF
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+     inn_krb5_found_header=true
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/krb5.h" >&5
+$as_echo_n "checking for kerberosv5/krb5.h... " >&6; }
+ if test -f "${inn_krb5_incroot}/kerberosv5/krb5.h"; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_KERBEROSV5_KRB5_H 1
+_ACEOF
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+     inn_krb5_found_header=true
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5/krb5.h" >&5
+$as_echo_n "checking for krb5/krb5.h... " >&6; }
+ if test -f "${inn_krb5_incroot}/krb5/krb5.h"; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_KRB5_KRB5_H 1
+_ACEOF
 
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+     inn_krb5_found_header=true
 else
-  if test x"true" = xtrue; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+fi
+ if test x"$inn_krb5_found_header" = xtrue; then :
+
+else
+  KRB5_CPPFLAGS=
+         KRB5_LIBS=
+         if test x"true" = xtrue; then :
   as_fn_error $? "cannot find usable Kerberos header" "$LINENO" 5
 fi
 fi
+else
+  if test x"true" = xtrue; then :
+  as_fn_error $? "cannot find usable Kerberos library" "$LINENO" 5
+fi
+fi
+
  CPPFLAGS="$inn_krb5_save_CPPFLAGS"
  LDFLAGS="$inn_krb5_save_LDFLAGS"
  LIBS="$inn_krb5_save_LIBS"
@@ -17519,8 +17618,16 @@ fi
  if test x"$inn_krb5_config_KRB5_ok" = xyes; then :
   KRB5_CPPFLAGS=`$as_echo "$KRB5_CPPFLAGS" | sed 's%-I/usr/include %%'`
      KRB5_CPPFLAGS=`$as_echo "$KRB5_CPPFLAGS" | sed 's%-I/usr/include$%%'`
-     inn_krb5_header_found=false
-     if test x"$inn_krb5_incroot" = x; then :
+     inn_krb5_save_CPPFLAGS="$CPPFLAGS"
+ inn_krb5_save_LDFLAGS="$LDFLAGS"
+ inn_krb5_save_LIBS="$LIBS"
+ CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
+ LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
+ LIBS="$KRB5_LIBS $LIBS"
+ ac_fn_c_check_func "$LINENO" "krb5_init_context" "ac_cv_func_krb5_init_context"
+if test "x$ac_cv_func_krb5_init_context" = xyes; then :
+  inn_krb5_found_header=
+ if test x"$inn_krb5_incroot" = x; then :
   for ac_header in krb5.h kerberosv5/krb5.h krb5/krb5.h
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
@@ -17529,7 +17636,7 @@ if eval test \"x\$"$as_ac_Header"\" = x"
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
- inn_krb5_header_found=true
+ inn_krb5_found_header=true
 fi
 
 done
@@ -17538,7 +17645,6 @@ else
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5.h" >&5
 $as_echo_n "checking for krb5.h... " >&6; }
  if test -f "${inn_krb5_incroot}/krb5.h"; then :
-  inn_krb5_header_found=true
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_KRB5_H 1
@@ -17546,6 +17652,7 @@ _ACEOF
 
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
+     inn_krb5_found_header=true
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
@@ -17553,7 +17660,6 @@ fi
       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/krb5.h" >&5
 $as_echo_n "checking for kerberosv5/krb5.h... " >&6; }
  if test -f "${inn_krb5_incroot}/kerberosv5/krb5.h"; then :
-  inn_krb5_header_found=true
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_KERBEROSV5_KRB5_H 1
@@ -17561,6 +17667,7 @@ _ACEOF
 
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
+     inn_krb5_found_header=true
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
@@ -17568,7 +17675,6 @@ fi
       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5/krb5.h" >&5
 $as_echo_n "checking for krb5/krb5.h... " >&6; }
  if test -f "${inn_krb5_incroot}/krb5/krb5.h"; then :
-  inn_krb5_header_found=true
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_KRB5_KRB5_H 1
@@ -17576,20 +17682,13 @@ _ACEOF
 
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
+     inn_krb5_found_header=true
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 fi
-     if test x"$inn_krb5_header_found" = xtrue; then :
-  inn_krb5_save_CPPFLAGS="$CPPFLAGS"
- inn_krb5_save_LDFLAGS="$LDFLAGS"
- inn_krb5_save_LIBS="$LIBS"
- CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
- LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
- LIBS="$KRB5_LIBS $LIBS"
- ac_fn_c_check_func "$LINENO" "krb5_init_context" "ac_cv_func_krb5_init_context"
-if test "x$ac_cv_func_krb5_init_context" = xyes; then :
+ if test x"$inn_krb5_found_header" = xtrue; then :
   CPPFLAGS="$inn_krb5_save_CPPFLAGS"
  LDFLAGS="$inn_krb5_save_LDFLAGS"
  LIBS="$inn_krb5_save_LIBS"
@@ -17597,9 +17696,9 @@ else
   CPPFLAGS="$inn_krb5_save_CPPFLAGS"
  LDFLAGS="$inn_krb5_save_LDFLAGS"
  LIBS="$inn_krb5_save_LIBS"
-     KRB5_CPPFLAGS=
-     KRB5_LIBS=
-     if test x"$inn_krb5_libdir" != x; then :
+         KRB5_CPPFLAGS=
+         KRB5_LIBS=
+         if test x"$inn_krb5_libdir" != x; then :
   KRB5_LDFLAGS="-L$inn_krb5_libdir"
 else
   if test x"$inn_krb5_root" != x; then :
@@ -17629,7 +17728,927 @@ else
 fi
 fi
 fi
-     inn_krb5_header_found=false
+         inn_krb5_save_CPPFLAGS="$CPPFLAGS"
+ inn_krb5_save_LDFLAGS="$LDFLAGS"
+ inn_krb5_save_LIBS="$LIBS"
+ CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
+ LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
+ LIBS="$KRB5_LIBS $LIBS"
+ inn_krb5_extra=
+ LIBS=
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing res_search" >&5
+$as_echo_n "checking for library containing res_search... " >&6; }
+if ${ac_cv_search_res_search+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char res_search ();
+int
+main ()
+{
+return res_search ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' resolv; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_res_search=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_res_search+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_res_search+:} false; then :
+
+else
+  ac_cv_search_res_search=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_res_search" >&5
+$as_echo "$ac_cv_search_res_search" >&6; }
+ac_res=$ac_cv_search_res_search
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing __res_search" >&5
+$as_echo_n "checking for library containing __res_search... " >&6; }
+if ${ac_cv_search___res_search+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char __res_search ();
+int
+main ()
+{
+return __res_search ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' resolv; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search___res_search=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search___res_search+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search___res_search+:} false; then :
+
+else
+  ac_cv_search___res_search=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search___res_search" >&5
+$as_echo "$ac_cv_search___res_search" >&6; }
+ac_res=$ac_cv_search___res_search
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5
+$as_echo_n "checking for library containing gethostbyname... " >&6; }
+if ${ac_cv_search_gethostbyname+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gethostbyname ();
+int
+main ()
+{
+return gethostbyname ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' nsl; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_gethostbyname=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_gethostbyname+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_gethostbyname+:} false; then :
+
+else
+  ac_cv_search_gethostbyname=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gethostbyname" >&5
+$as_echo "$ac_cv_search_gethostbyname" >&6; }
+ac_res=$ac_cv_search_gethostbyname
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5
+$as_echo_n "checking for library containing socket... " >&6; }
+if ${ac_cv_search_socket+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char socket ();
+int
+main ()
+{
+return socket ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' socket; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_socket=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_socket+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_socket+:} false; then :
+
+else
+  ac_cv_search_socket=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_socket" >&5
+$as_echo "$ac_cv_search_socket" >&6; }
+ac_res=$ac_cv_search_socket
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for socket in -lnsl" >&5
+$as_echo_n "checking for socket in -lnsl... " >&6; }
+if ${ac_cv_lib_nsl_socket+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lnsl -lsocket $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char socket ();
+int
+main ()
+{
+return socket ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_nsl_socket=yes
+else
+  ac_cv_lib_nsl_socket=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_socket" >&5
+$as_echo "$ac_cv_lib_nsl_socket" >&6; }
+if test "x$ac_cv_lib_nsl_socket" = xyes; then :
+  LIBS="-lnsl -lsocket $LIBS"
+fi
+
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing crypt" >&5
+$as_echo_n "checking for library containing crypt... " >&6; }
+if ${ac_cv_search_crypt+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char crypt ();
+int
+main ()
+{
+return crypt ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' crypt; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_crypt=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_crypt+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_crypt+:} false; then :
+
+else
+  ac_cv_search_crypt=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_crypt" >&5
+$as_echo "$ac_cv_search_crypt" >&6; }
+ac_res=$ac_cv_search_crypt
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing roken_concat" >&5
+$as_echo_n "checking for library containing roken_concat... " >&6; }
+if ${ac_cv_search_roken_concat+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char roken_concat ();
+int
+main ()
+{
+return roken_concat ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' roken; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_roken_concat=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_roken_concat+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_roken_concat+:} false; then :
+
+else
+  ac_cv_search_roken_concat=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_roken_concat" >&5
+$as_echo "$ac_cv_search_roken_concat" >&6; }
+ac_res=$ac_cv_search_roken_concat
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+ inn_krb5_extra="$LIBS"
+ LIBS="$inn_krb5_save_LIBS"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_init_context in -lkrb5" >&5
+$as_echo_n "checking for krb5_init_context in -lkrb5... " >&6; }
+if ${ac_cv_lib_krb5_krb5_init_context+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lkrb5 -lasn1 -lcom_err -lcrypto $inn_krb5_extra $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char krb5_init_context ();
+int
+main ()
+{
+return krb5_init_context ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_krb5_krb5_init_context=yes
+else
+  ac_cv_lib_krb5_krb5_init_context=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_krb5_krb5_init_context" >&5
+$as_echo "$ac_cv_lib_krb5_krb5_init_context" >&6; }
+if test "x$ac_cv_lib_krb5_krb5_init_context" = xyes; then :
+  KRB5_LIBS="-lkrb5 -lasn1 -lcom_err -lcrypto $inn_krb5_extra"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_getspecific in -lkrb5support" >&5
+$as_echo_n "checking for krb5int_getspecific in -lkrb5support... " >&6; }
+if ${ac_cv_lib_krb5support_krb5int_getspecific+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lkrb5support $inn_krb5_extra $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char krb5int_getspecific ();
+int
+main ()
+{
+return krb5int_getspecific ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_krb5support_krb5int_getspecific=yes
+else
+  ac_cv_lib_krb5support_krb5int_getspecific=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_krb5support_krb5int_getspecific" >&5
+$as_echo "$ac_cv_lib_krb5support_krb5int_getspecific" >&6; }
+if test "x$ac_cv_lib_krb5support_krb5int_getspecific" = xyes; then :
+  inn_krb5_extra="-lkrb5support $inn_krb5_extra"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_setspecific in -lpthreads" >&5
+$as_echo_n "checking for pthread_setspecific in -lpthreads... " >&6; }
+if ${ac_cv_lib_pthreads_pthread_setspecific+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lpthreads  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pthread_setspecific ();
+int
+main ()
+{
+return pthread_setspecific ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_pthreads_pthread_setspecific=yes
+else
+  ac_cv_lib_pthreads_pthread_setspecific=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthreads_pthread_setspecific" >&5
+$as_echo "$ac_cv_lib_pthreads_pthread_setspecific" >&6; }
+if test "x$ac_cv_lib_pthreads_pthread_setspecific" = xyes; then :
+  inn_krb5_pthread="-lpthreads"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_setspecific in -lpthread" >&5
+$as_echo_n "checking for pthread_setspecific in -lpthread... " >&6; }
+if ${ac_cv_lib_pthread_pthread_setspecific+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lpthread  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pthread_setspecific ();
+int
+main ()
+{
+return pthread_setspecific ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_pthread_pthread_setspecific=yes
+else
+  ac_cv_lib_pthread_pthread_setspecific=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_setspecific" >&5
+$as_echo "$ac_cv_lib_pthread_pthread_setspecific" >&6; }
+if test "x$ac_cv_lib_pthread_pthread_setspecific" = xyes; then :
+  inn_krb5_pthread="-lpthread"
+fi
+
+fi
+
+         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_setspecific in -lkrb5support" >&5
+$as_echo_n "checking for krb5int_setspecific in -lkrb5support... " >&6; }
+if ${ac_cv_lib_krb5support_krb5int_setspecific+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lkrb5support $inn_krb5_pthread $inn_krb5_extra $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char krb5int_setspecific ();
+int
+main ()
+{
+return krb5int_setspecific ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_krb5support_krb5int_setspecific=yes
+else
+  ac_cv_lib_krb5support_krb5int_setspecific=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_krb5support_krb5int_setspecific" >&5
+$as_echo "$ac_cv_lib_krb5support_krb5int_setspecific" >&6; }
+if test "x$ac_cv_lib_krb5support_krb5int_setspecific" = xyes; then :
+  inn_krb5_extra="-lkrb5support $inn_krb5_extra $inn_krb5_pthread"
+fi
+
+fi
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for error_message in -lcom_err" >&5
+$as_echo_n "checking for error_message in -lcom_err... " >&6; }
+if ${ac_cv_lib_com_err_error_message+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lcom_err $inn_krb5_extra $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char error_message ();
+int
+main ()
+{
+return error_message ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_com_err_error_message=yes
+else
+  ac_cv_lib_com_err_error_message=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_com_err_error_message" >&5
+$as_echo "$ac_cv_lib_com_err_error_message" >&6; }
+if test "x$ac_cv_lib_com_err_error_message" = xyes; then :
+  inn_krb5_extra="-lcom_err $inn_krb5_extra"
+fi
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_svc_get_msg in -lksvc" >&5
+$as_echo_n "checking for krb5_svc_get_msg in -lksvc... " >&6; }
+if ${ac_cv_lib_ksvc_krb5_svc_get_msg+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lksvc $inn_krb5_extra $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char krb5_svc_get_msg ();
+int
+main ()
+{
+return krb5_svc_get_msg ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_ksvc_krb5_svc_get_msg=yes
+else
+  ac_cv_lib_ksvc_krb5_svc_get_msg=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ksvc_krb5_svc_get_msg" >&5
+$as_echo "$ac_cv_lib_ksvc_krb5_svc_get_msg" >&6; }
+if test "x$ac_cv_lib_ksvc_krb5_svc_get_msg" = xyes; then :
+  inn_krb5_extra="-lksvc $inn_krb5_extra"
+fi
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_hash_md5 in -lk5crypto" >&5
+$as_echo_n "checking for krb5int_hash_md5 in -lk5crypto... " >&6; }
+if ${ac_cv_lib_k5crypto_krb5int_hash_md5+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lk5crypto $inn_krb5_extra $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char krb5int_hash_md5 ();
+int
+main ()
+{
+return krb5int_hash_md5 ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_k5crypto_krb5int_hash_md5=yes
+else
+  ac_cv_lib_k5crypto_krb5int_hash_md5=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_k5crypto_krb5int_hash_md5" >&5
+$as_echo "$ac_cv_lib_k5crypto_krb5int_hash_md5" >&6; }
+if test "x$ac_cv_lib_k5crypto_krb5int_hash_md5" = xyes; then :
+  inn_krb5_extra="-lk5crypto $inn_krb5_extra"
+fi
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for profile_get_values in -lk5profile" >&5
+$as_echo_n "checking for profile_get_values in -lk5profile... " >&6; }
+if ${ac_cv_lib_k5profile_profile_get_values+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lk5profile $inn_krb5_extra $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char profile_get_values ();
+int
+main ()
+{
+return profile_get_values ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_k5profile_profile_get_values=yes
+else
+  ac_cv_lib_k5profile_profile_get_values=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_k5profile_profile_get_values" >&5
+$as_echo "$ac_cv_lib_k5profile_profile_get_values" >&6; }
+if test "x$ac_cv_lib_k5profile_profile_get_values" = xyes; then :
+  inn_krb5_extra="-lk5profile $inn_krb5_extra"
+fi
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_cc_default in -lkrb5" >&5
+$as_echo_n "checking for krb5_cc_default in -lkrb5... " >&6; }
+if ${ac_cv_lib_krb5_krb5_cc_default+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lkrb5 $inn_krb5_extra $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char krb5_cc_default ();
+int
+main ()
+{
+return krb5_cc_default ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_krb5_krb5_cc_default=yes
+else
+  ac_cv_lib_krb5_krb5_cc_default=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_krb5_krb5_cc_default" >&5
+$as_echo "$ac_cv_lib_krb5_krb5_cc_default" >&6; }
+if test "x$ac_cv_lib_krb5_krb5_cc_default" = xyes; then :
+  KRB5_LIBS="-lkrb5 $inn_krb5_extra"
+else
+  if test x"true" = xtrue; then :
+  as_fn_error $? "cannot find usable Kerberos library" "$LINENO" 5
+fi
+fi
+
+fi
+
+ LIBS="$KRB5_LIBS $LIBS"
+ for ac_func in krb5_get_error_message
+do :
+  ac_fn_c_check_func "$LINENO" "krb5_get_error_message" "ac_cv_func_krb5_get_error_message"
+if test "x$ac_cv_func_krb5_get_error_message" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_KRB5_GET_ERROR_MESSAGE 1
+_ACEOF
+ for ac_func in krb5_free_error_message
+do :
+  ac_fn_c_check_func "$LINENO" "krb5_free_error_message" "ac_cv_func_krb5_free_error_message"
+if test "x$ac_cv_func_krb5_free_error_message" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_KRB5_FREE_ERROR_MESSAGE 1
+_ACEOF
+
+fi
+done
+
+else
+  for ac_func in krb5_get_error_string
+do :
+  ac_fn_c_check_func "$LINENO" "krb5_get_error_string" "ac_cv_func_krb5_get_error_string"
+if test "x$ac_cv_func_krb5_get_error_string" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_KRB5_GET_ERROR_STRING 1
+_ACEOF
+
+else
+  for ac_func in krb5_get_err_txt
+do :
+  ac_fn_c_check_func "$LINENO" "krb5_get_err_txt" "ac_cv_func_krb5_get_err_txt"
+if test "x$ac_cv_func_krb5_get_err_txt" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_KRB5_GET_ERR_TXT 1
+_ACEOF
+
+else
+  for ac_func in krb5_svc_get_msg
+do :
+  ac_fn_c_check_func "$LINENO" "krb5_svc_get_msg" "ac_cv_func_krb5_svc_get_msg"
+if test "x$ac_cv_func_krb5_svc_get_msg" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_KRB5_SVC_GET_MSG 1
+_ACEOF
+ for ac_header in ibm_svc/krb5_svc.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "ibm_svc/krb5_svc.h" "ac_cv_header_ibm_svc_krb5_svc_h" "
+#if HAVE_KRB5_H
+# include <krb5.h>
+#elif HAVE_KERBEROSV5_KRB5_H
+# include <kerberosv5/krb5.h>
+#else
+# include <krb5/krb5.h>
+#endif
+
+"
+if test "x$ac_cv_header_ibm_svc_krb5_svc_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_IBM_SVC_KRB5_SVC_H 1
+_ACEOF
+
+fi
+
+done
+
+else
+  if test x"$inn_krb5_incroot" = x; then :
+  for ac_header in et/com_err.h kerberosv5/com_err.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for et/com_err.h" >&5
+$as_echo_n "checking for et/com_err.h... " >&6; }
+ if test -f "${inn_krb5_incroot}/et/com_err.h"; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_ET_COM_ERR_H 1
+_ACEOF
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/com_err.h" >&5
+$as_echo_n "checking for kerberosv5/com_err.h... " >&6; }
+ if test -f "${inn_krb5_incroot}/kerberosv5/com_err.h"; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_KERBEROSV5_COM_ERR_H 1
+_ACEOF
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+fi
+fi
+done
+
+fi
+done
+
+fi
+done
+
+fi
+done
+
+ inn_krb5_found_header=
  if test x"$inn_krb5_incroot" = x; then :
   for ac_header in krb5.h kerberosv5/krb5.h krb5/krb5.h
 do :
@@ -17639,7 +18658,7 @@ if eval test \"x\$"$as_ac_Header"\" = x"
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
- inn_krb5_header_found=true
+ inn_krb5_found_header=true
 fi
 
 done
@@ -17648,7 +18667,6 @@ else
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5.h" >&5
 $as_echo_n "checking for krb5.h... " >&6; }
  if test -f "${inn_krb5_incroot}/krb5.h"; then :
-  inn_krb5_header_found=true
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_KRB5_H 1
@@ -17656,6 +18674,7 @@ _ACEOF
 
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
+     inn_krb5_found_header=true
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
@@ -17663,7 +18682,6 @@ fi
       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/krb5.h" >&5
 $as_echo_n "checking for kerberosv5/krb5.h... " >&6; }
  if test -f "${inn_krb5_incroot}/kerberosv5/krb5.h"; then :
-  inn_krb5_header_found=true
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_KERBEROSV5_KRB5_H 1
@@ -17671,6 +18689,7 @@ _ACEOF
 
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
+     inn_krb5_found_header=true
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
@@ -17678,7 +18697,6 @@ fi
       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5/krb5.h" >&5
 $as_echo_n "checking for krb5/krb5.h... " >&6; }
  if test -f "${inn_krb5_incroot}/krb5/krb5.h"; then :
-  inn_krb5_header_found=true
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_KRB5_KRB5_H 1
@@ -17686,21 +18704,70 @@ _ACEOF
 
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
+     inn_krb5_found_header=true
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 fi
- if test x"$inn_krb5_header_found" = xtrue; then :
-  inn_krb5_save_CPPFLAGS="$CPPFLAGS"
+ if test x"$inn_krb5_found_header" = xtrue; then :
+
+else
+  KRB5_CPPFLAGS=
+     KRB5_LIBS=
+     if test x"true" = xtrue; then :
+  as_fn_error $? "cannot find usable Kerberos header" "$LINENO" 5
+fi
+fi
+ CPPFLAGS="$inn_krb5_save_CPPFLAGS"
+ LDFLAGS="$inn_krb5_save_LDFLAGS"
+ LIBS="$inn_krb5_save_LIBS"
+fi
+else
+  CPPFLAGS="$inn_krb5_save_CPPFLAGS"
+ LDFLAGS="$inn_krb5_save_LDFLAGS"
+ LIBS="$inn_krb5_save_LIBS"
+     KRB5_CPPFLAGS=
+     KRB5_LIBS=
+     if test x"$inn_krb5_libdir" != x; then :
+  KRB5_LDFLAGS="-L$inn_krb5_libdir"
+else
+  if test x"$inn_krb5_root" != x; then :
+
+ if test -d "$inn_krb5_root/$inn_lib_arch_name"; then :
+  if test x"" = x; then :
+  KRB5_LDFLAGS="$KRB5_LDFLAGS -L$inn_krb5_root/${inn_lib_arch_name}"
+else
+  KRB5_LDFLAGS="$KRB5_LDFLAGS -L$inn_krb5_root/${inn_lib_arch_name}/"
+fi
+else
+  if test x"" = x; then :
+  KRB5_LDFLAGS="$KRB5_LDFLAGS -L$inn_krb5_root/lib"
+else
+  KRB5_LDFLAGS="$KRB5_LDFLAGS -L$inn_krb5_root/lib/"
+fi
+fi
+ KRB5_LDFLAGS=`$as_echo "$KRB5_LDFLAGS" | sed -e 's/^ *//'`
+fi
+fi
+ if test x"$inn_krb5_includedir" != x; then :
+  KRB5_CPPFLAGS="-I$inn_krb5_includedir"
+else
+  if test x"$inn_krb5_root" != x; then :
+  if test x"$inn_krb5_root" != x/usr; then :
+  KRB5_CPPFLAGS="-I${inn_krb5_root}/include"
+fi
+fi
+fi
+     inn_krb5_save_CPPFLAGS="$CPPFLAGS"
  inn_krb5_save_LDFLAGS="$LDFLAGS"
  inn_krb5_save_LIBS="$LIBS"
  CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
  LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
  LIBS="$KRB5_LIBS $LIBS"
-     inn_krb5_extra=
-     LIBS=
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing res_search" >&5
+ inn_krb5_extra=
+ LIBS=
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing res_search" >&5
 $as_echo_n "checking for library containing res_search... " >&6; }
 if ${ac_cv_search_res_search+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -17813,7 +18880,7 @@ fi
 
 fi
 
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5
 $as_echo_n "checking for library containing gethostbyname... " >&6; }
 if ${ac_cv_search_gethostbyname+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -17869,7 +18936,7 @@ if test "$ac_res" != no; then :
 
 fi
 
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5
 $as_echo_n "checking for library containing socket... " >&6; }
 if ${ac_cv_search_socket+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -17966,7 +19033,7 @@ fi
 
 fi
 
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing crypt" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing crypt" >&5
 $as_echo_n "checking for library containing crypt... " >&6; }
 if ${ac_cv_search_crypt+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -18022,7 +19089,7 @@ if test "$ac_res" != no; then :
 
 fi
 
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing roken_concat" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing roken_concat" >&5
 $as_echo_n "checking for library containing roken_concat... " >&6; }
 if ${ac_cv_search_roken_concat+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -18078,9 +19145,9 @@ if test "$ac_res" != no; then :
 
 fi
 
-     inn_krb5_extra="$LIBS"
-     LIBS="$inn_krb5_save_LIBS"
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_init_context in -lkrb5" >&5
+ inn_krb5_extra="$LIBS"
+ LIBS="$inn_krb5_save_LIBS"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_init_context in -lkrb5" >&5
 $as_echo_n "checking for krb5_init_context in -lkrb5... " >&6; }
 if ${ac_cv_lib_krb5_krb5_init_context+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -18239,7 +19306,7 @@ fi
 
 fi
 
-             { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_setspecific in -lkrb5support" >&5
+         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_setspecific in -lkrb5support" >&5
 $as_echo_n "checking for krb5int_setspecific in -lkrb5support... " >&6; }
 if ${ac_cv_lib_krb5support_krb5int_setspecific+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -18281,7 +19348,7 @@ fi
 
 fi
 
-         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for error_message in -lcom_err" >&5
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for error_message in -lcom_err" >&5
 $as_echo_n "checking for error_message in -lcom_err... " >&6; }
 if ${ac_cv_lib_com_err_error_message+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -18321,7 +19388,7 @@ if test "x$ac_cv_lib_com_err_error_messa
   inn_krb5_extra="-lcom_err $inn_krb5_extra"
 fi
 
-         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_svc_get_msg in -lksvc" >&5
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_svc_get_msg in -lksvc" >&5
 $as_echo_n "checking for krb5_svc_get_msg in -lksvc... " >&6; }
 if ${ac_cv_lib_ksvc_krb5_svc_get_msg+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -18361,7 +19428,7 @@ if test "x$ac_cv_lib_ksvc_krb5_svc_get_m
   inn_krb5_extra="-lksvc $inn_krb5_extra"
 fi
 
-         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_hash_md5 in -lk5crypto" >&5
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_hash_md5 in -lk5crypto" >&5
 $as_echo_n "checking for krb5int_hash_md5 in -lk5crypto... " >&6; }
 if ${ac_cv_lib_k5crypto_krb5int_hash_md5+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -18401,7 +19468,7 @@ if test "x$ac_cv_lib_k5crypto_krb5int_ha
   inn_krb5_extra="-lk5crypto $inn_krb5_extra"
 fi
 
-         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for profile_get_values in -lk5profile" >&5
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for profile_get_values in -lk5profile" >&5
 $as_echo_n "checking for profile_get_values in -lk5profile... " >&6; }
 if ${ac_cv_lib_k5profile_profile_get_values+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -18441,7 +19508,7 @@ if test "x$ac_cv_lib_k5profile_profile_g
   inn_krb5_extra="-lk5profile $inn_krb5_extra"
 fi
 
-         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_cc_default in -lkrb5" >&5
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_cc_default in -lkrb5" >&5
 $as_echo_n "checking for krb5_cc_default in -lkrb5... " >&6; }
 if ${ac_cv_lib_krb5_krb5_cc_default+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -18487,8 +19554,8 @@ fi
 
 fi
 
-     LIBS="$KRB5_LIBS $LIBS"
-     for ac_func in krb5_get_error_message
+ LIBS="$KRB5_LIBS $LIBS"
+ for ac_func in krb5_get_error_message
 do :
   ac_fn_c_check_func "$LINENO" "krb5_get_error_message" "ac_cv_func_krb5_get_error_message"
 if test "x$ac_cv_func_krb5_get_error_message" = xyes; then :
@@ -18554,8 +19621,7 @@ fi
 done
 
 else
-  inn_krb5_header_found=false
-                     if test x"$inn_krb5_incroot" = x; then :
+  if test x"$inn_krb5_incroot" = x; then :
   for ac_header in et/com_err.h kerberosv5/com_err.h
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
@@ -18564,7 +19630,7 @@ if eval test \"x\$"$as_ac_Header"\" = x"
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
- inn_krb5_header_found=true
+
 fi
 
 done
@@ -18573,7 +19639,6 @@ else
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for et/com_err.h" >&5
 $as_echo_n "checking for et/com_err.h... " >&6; }
  if test -f "${inn_krb5_incroot}/et/com_err.h"; then :
-  inn_krb5_header_found=true
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_ET_COM_ERR_H 1
@@ -18581,14 +19646,14 @@ _ACEOF
 
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
+
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/com_err.h" >&5
+         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/com_err.h" >&5
 $as_echo_n "checking for kerberosv5/com_err.h... " >&6; }
  if test -f "${inn_krb5_incroot}/kerberosv5/com_err.h"; then :
-  inn_krb5_header_found=true
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_KERBEROSV5_COM_ERR_H 1
@@ -18596,16 +19661,15 @@ _ACEOF
 
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
+
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 fi
-                     if test x"$inn_krb5_header_found" != xtrue; then :
-  if test x"true" = xtrue; then :
-  as_fn_error $? "cannot find usable com_err header" "$LINENO" 5
-fi
 fi
+done
+
 fi
 done
 
@@ -18615,11 +19679,74 @@ done
 fi
 done
 
+ inn_krb5_found_header=
+ if test x"$inn_krb5_incroot" = x; then :
+  for ac_header in krb5.h kerberosv5/krb5.h krb5/krb5.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+ inn_krb5_found_header=true
 fi
+
 done
 
 else
-  if test x"true" = xtrue; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5.h" >&5
+$as_echo_n "checking for krb5.h... " >&6; }
+ if test -f "${inn_krb5_incroot}/krb5.h"; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_KRB5_H 1
+_ACEOF
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+     inn_krb5_found_header=true
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/krb5.h" >&5
+$as_echo_n "checking for kerberosv5/krb5.h... " >&6; }
+ if test -f "${inn_krb5_incroot}/kerberosv5/krb5.h"; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_KERBEROSV5_KRB5_H 1
+_ACEOF
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+     inn_krb5_found_header=true
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5/krb5.h" >&5
+$as_echo_n "checking for krb5/krb5.h... " >&6; }
+ if test -f "${inn_krb5_incroot}/krb5/krb5.h"; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_KRB5_KRB5_H 1
+_ACEOF
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+     inn_krb5_found_header=true
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+fi
+ if test x"$inn_krb5_found_header" = xtrue; then :
+
+else
+  KRB5_CPPFLAGS=
+     KRB5_LIBS=
+     if test x"true" = xtrue; then :
   as_fn_error $? "cannot find usable Kerberos header" "$LINENO" 5
 fi
 fi
@@ -18628,13 +19755,13 @@ fi
  LIBS="$inn_krb5_save_LIBS"
 fi
 
-         inn_krb5_save_CPPFLAGS="$CPPFLAGS"
+     inn_krb5_save_CPPFLAGS="$CPPFLAGS"
  inn_krb5_save_LDFLAGS="$LDFLAGS"
  inn_krb5_save_LIBS="$LIBS"
  CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
  LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
  LIBS="$KRB5_LIBS $LIBS"
-         for ac_func in krb5_get_error_message
+     for ac_func in krb5_get_error_message
 do :
   ac_fn_c_check_func "$LINENO" "krb5_get_error_message" "ac_cv_func_krb5_get_error_message"
 if test "x$ac_cv_func_krb5_get_error_message" = xyes; then :
@@ -18700,8 +19827,7 @@ fi
 done
 
 else
-  inn_krb5_header_found=false
-                          if test x"$inn_krb5_incroot" = x; then :
+  if test x"$inn_krb5_incroot" = x; then :
   for ac_header in et/com_err.h kerberosv5/com_err.h
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
@@ -18710,7 +19836,7 @@ if eval test \"x\$"$as_ac_Header"\" = x"
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
- inn_krb5_header_found=true
+
 fi
 
 done
@@ -18719,7 +19845,6 @@ else
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for et/com_err.h" >&5
 $as_echo_n "checking for et/com_err.h... " >&6; }
  if test -f "${inn_krb5_incroot}/et/com_err.h"; then :
-  inn_krb5_header_found=true
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_ET_COM_ERR_H 1
@@ -18727,14 +19852,14 @@ _ACEOF
 
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
+
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/com_err.h" >&5
+         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/com_err.h" >&5
 $as_echo_n "checking for kerberosv5/com_err.h... " >&6; }
  if test -f "${inn_krb5_incroot}/kerberosv5/com_err.h"; then :
-  inn_krb5_header_found=true
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_KERBEROSV5_COM_ERR_H 1
@@ -18742,16 +19867,12 @@ _ACEOF
 
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
+
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 fi
-                          if test x"$inn_krb5_header_found" != xtrue; then :
-  if test x"true" = xtrue; then :
-  as_fn_error $? "cannot find usable com_err header" "$LINENO" 5
-fi
-fi
 fi
 done
 
@@ -18764,15 +19885,10 @@ done
 fi
 done
 
-         CPPFLAGS="$inn_krb5_save_CPPFLAGS"
+     CPPFLAGS="$inn_krb5_save_CPPFLAGS"
  LDFLAGS="$inn_krb5_save_LDFLAGS"
  LIBS="$inn_krb5_save_LIBS"
 else
-  if test x"true" = xtrue; then :
-  as_fn_error $? "cannot find usable Kerberos header" "$LINENO" 5
-fi
-fi
-else
   if test x"$inn_krb5_libdir" != x; then :
   KRB5_LDFLAGS="-L$inn_krb5_libdir"
 else
@@ -18803,78 +19919,15 @@ else
 fi
 fi
 fi
-     inn_krb5_header_found=false
- if test x"$inn_krb5_incroot" = x; then :
-  for ac_header in krb5.h kerberosv5/krb5.h krb5/krb5.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
- inn_krb5_header_found=true
-fi
-
-done
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5.h" >&5
-$as_echo_n "checking for krb5.h... " >&6; }
- if test -f "${inn_krb5_incroot}/krb5.h"; then :
-  inn_krb5_header_found=true
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_KRB5_H 1
-_ACEOF
-
-     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/krb5.h" >&5
-$as_echo_n "checking for kerberosv5/krb5.h... " >&6; }
- if test -f "${inn_krb5_incroot}/kerberosv5/krb5.h"; then :
-  inn_krb5_header_found=true
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_KERBEROSV5_KRB5_H 1
-_ACEOF
-
-     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5/krb5.h" >&5
-$as_echo_n "checking for krb5/krb5.h... " >&6; }
- if test -f "${inn_krb5_incroot}/krb5/krb5.h"; then :
-  inn_krb5_header_found=true
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_KRB5_KRB5_H 1
-_ACEOF
-
-     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-fi
- if test x"$inn_krb5_header_found" = xtrue; then :
-  inn_krb5_save_CPPFLAGS="$CPPFLAGS"
+     inn_krb5_save_CPPFLAGS="$CPPFLAGS"
  inn_krb5_save_LDFLAGS="$LDFLAGS"
  inn_krb5_save_LIBS="$LIBS"
  CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
  LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
  LIBS="$KRB5_LIBS $LIBS"
-     inn_krb5_extra=
-     LIBS=
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing res_search" >&5
+ inn_krb5_extra=
+ LIBS=
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing res_search" >&5
 $as_echo_n "checking for library containing res_search... " >&6; }
 if ${ac_cv_search_res_search+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -18987,7 +20040,7 @@ fi
 
 fi
 
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5
 $as_echo_n "checking for library containing gethostbyname... " >&6; }
 if ${ac_cv_search_gethostbyname+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -19043,7 +20096,7 @@ if test "$ac_res" != no; then :
 
 fi
 
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5
 $as_echo_n "checking for library containing socket... " >&6; }
 if ${ac_cv_search_socket+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -19140,7 +20193,7 @@ fi
 
 fi
 
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing crypt" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing crypt" >&5
 $as_echo_n "checking for library containing crypt... " >&6; }
 if ${ac_cv_search_crypt+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -19196,7 +20249,7 @@ if test "$ac_res" != no; then :
 
 fi
 
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing roken_concat" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing roken_concat" >&5
 $as_echo_n "checking for library containing roken_concat... " >&6; }
 if ${ac_cv_search_roken_concat+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -19252,9 +20305,9 @@ if test "$ac_res" != no; then :
 
 fi
 
-     inn_krb5_extra="$LIBS"
-     LIBS="$inn_krb5_save_LIBS"
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_init_context in -lkrb5" >&5
+ inn_krb5_extra="$LIBS"
+ LIBS="$inn_krb5_save_LIBS"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_init_context in -lkrb5" >&5
 $as_echo_n "checking for krb5_init_context in -lkrb5... " >&6; }
 if ${ac_cv_lib_krb5_krb5_init_context+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -19413,7 +20466,7 @@ fi
 
 fi
 
-             { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_setspecific in -lkrb5support" >&5
+         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_setspecific in -lkrb5support" >&5
 $as_echo_n "checking for krb5int_setspecific in -lkrb5support... " >&6; }
 if ${ac_cv_lib_krb5support_krb5int_setspecific+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -19455,7 +20508,7 @@ fi
 
 fi
 
-         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for error_message in -lcom_err" >&5
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for error_message in -lcom_err" >&5
 $as_echo_n "checking for error_message in -lcom_err... " >&6; }
 if ${ac_cv_lib_com_err_error_message+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -19495,7 +20548,7 @@ if test "x$ac_cv_lib_com_err_error_messa
   inn_krb5_extra="-lcom_err $inn_krb5_extra"
 fi
 
-         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_svc_get_msg in -lksvc" >&5
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_svc_get_msg in -lksvc" >&5
 $as_echo_n "checking for krb5_svc_get_msg in -lksvc... " >&6; }
 if ${ac_cv_lib_ksvc_krb5_svc_get_msg+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -19535,7 +20588,7 @@ if test "x$ac_cv_lib_ksvc_krb5_svc_get_m
   inn_krb5_extra="-lksvc $inn_krb5_extra"
 fi
 
-         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_hash_md5 in -lk5crypto" >&5
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_hash_md5 in -lk5crypto" >&5
 $as_echo_n "checking for krb5int_hash_md5 in -lk5crypto... " >&6; }
 if ${ac_cv_lib_k5crypto_krb5int_hash_md5+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -19575,7 +20628,7 @@ if test "x$ac_cv_lib_k5crypto_krb5int_ha
   inn_krb5_extra="-lk5crypto $inn_krb5_extra"
 fi
 
-         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for profile_get_values in -lk5profile" >&5
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for profile_get_values in -lk5profile" >&5
 $as_echo_n "checking for profile_get_values in -lk5profile... " >&6; }
 if ${ac_cv_lib_k5profile_profile_get_values+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -19615,7 +20668,7 @@ if test "x$ac_cv_lib_k5profile_profile_g
   inn_krb5_extra="-lk5profile $inn_krb5_extra"
 fi
 
-         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_cc_default in -lkrb5" >&5
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_cc_default in -lkrb5" >&5
 $as_echo_n "checking for krb5_cc_default in -lkrb5... " >&6; }
 if ${ac_cv_lib_krb5_krb5_cc_default+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -19661,8 +20714,8 @@ fi
 
 fi
 
-     LIBS="$KRB5_LIBS $LIBS"
-     for ac_func in krb5_get_error_message
+ LIBS="$KRB5_LIBS $LIBS"
+ for ac_func in krb5_get_error_message
 do :
   ac_fn_c_check_func "$LINENO" "krb5_get_error_message" "ac_cv_func_krb5_get_error_message"
 if test "x$ac_cv_func_krb5_get_error_message" = xyes; then :
@@ -19728,8 +20781,7 @@ fi
 done
 
 else
-  inn_krb5_header_found=false
-                     if test x"$inn_krb5_incroot" = x; then :
+  if test x"$inn_krb5_incroot" = x; then :
   for ac_header in et/com_err.h kerberosv5/com_err.h
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
@@ -19738,7 +20790,7 @@ if eval test \"x\$"$as_ac_Header"\" = x"
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
- inn_krb5_header_found=true
+
 fi
 
 done
@@ -19747,7 +20799,6 @@ else
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for et/com_err.h" >&5
 $as_echo_n "checking for et/com_err.h... " >&6; }
  if test -f "${inn_krb5_incroot}/et/com_err.h"; then :
-  inn_krb5_header_found=true
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_ET_COM_ERR_H 1
@@ -19755,14 +20806,14 @@ _ACEOF
 
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
+
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/com_err.h" >&5
+         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/com_err.h" >&5
 $as_echo_n "checking for kerberosv5/com_err.h... " >&6; }
  if test -f "${inn_krb5_incroot}/kerberosv5/com_err.h"; then :
-  inn_krb5_header_found=true
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_KERBEROSV5_COM_ERR_H 1
@@ -19770,16 +20821,12 @@ _ACEOF
 
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
+
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 fi
-                     if test x"$inn_krb5_header_found" != xtrue; then :
-  if test x"true" = xtrue; then :
-  as_fn_error $? "cannot find usable com_err header" "$LINENO" 5
-fi
-fi
 fi
 done
 
@@ -19792,47 +20839,7 @@ done
 fi
 done
 
-else
-  if test x"true" = xtrue; then :
-  as_fn_error $? "cannot find usable Kerberos header" "$LINENO" 5
-fi
-fi
- CPPFLAGS="$inn_krb5_save_CPPFLAGS"
- LDFLAGS="$inn_krb5_save_LDFLAGS"
- LIBS="$inn_krb5_save_LIBS"
-fi
-else
-  if test x"$inn_krb5_libdir" != x; then :
-  KRB5_LDFLAGS="-L$inn_krb5_libdir"
-else
-  if test x"$inn_krb5_root" != x; then :
-
- if test -d "$inn_krb5_root/$inn_lib_arch_name"; then :
-  if test x"" = x; then :
-  KRB5_LDFLAGS="$KRB5_LDFLAGS -L$inn_krb5_root/${inn_lib_arch_name}"
-else
-  KRB5_LDFLAGS="$KRB5_LDFLAGS -L$inn_krb5_root/${inn_lib_arch_name}/"
-fi
-else
-  if test x"" = x; then :
-  KRB5_LDFLAGS="$KRB5_LDFLAGS -L$inn_krb5_root/lib"
-else
-  KRB5_LDFLAGS="$KRB5_LDFLAGS -L$inn_krb5_root/lib/"
-fi
-fi
- KRB5_LDFLAGS=`$as_echo "$KRB5_LDFLAGS" | sed -e 's/^ *//'`
-fi
-fi
- if test x"$inn_krb5_includedir" != x; then :
-  KRB5_CPPFLAGS="-I$inn_krb5_includedir"
-else
-  if test x"$inn_krb5_root" != x; then :
-  if test x"$inn_krb5_root" != x/usr; then :
-  KRB5_CPPFLAGS="-I${inn_krb5_root}/include"
-fi
-fi
-fi
-         inn_krb5_header_found=false
+ inn_krb5_found_header=
  if test x"$inn_krb5_incroot" = x; then :
   for ac_header in krb5.h kerberosv5/krb5.h krb5/krb5.h
 do :
@@ -19842,7 +20849,7 @@ if eval test \"x\$"$as_ac_Header"\" = x"
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
- inn_krb5_header_found=true
+ inn_krb5_found_header=true
 fi
 
 done
@@ -19851,7 +20858,6 @@ else
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5.h" >&5
 $as_echo_n "checking for krb5.h... " >&6; }
  if test -f "${inn_krb5_incroot}/krb5.h"; then :
-  inn_krb5_header_found=true
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_KRB5_H 1
@@ -19859,6 +20865,7 @@ _ACEOF
 
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
+     inn_krb5_found_header=true
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
@@ -19866,7 +20873,6 @@ fi
       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/krb5.h" >&5
 $as_echo_n "checking for kerberosv5/krb5.h... " >&6; }
  if test -f "${inn_krb5_incroot}/kerberosv5/krb5.h"; then :
-  inn_krb5_header_found=true
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_KERBEROSV5_KRB5_H 1
@@ -19874,6 +20880,7 @@ _ACEOF
 
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
+     inn_krb5_found_header=true
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
@@ -19881,7 +20888,6 @@ fi
       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5/krb5.h" >&5
 $as_echo_n "checking for krb5/krb5.h... " >&6; }
  if test -f "${inn_krb5_incroot}/krb5/krb5.h"; then :
-  inn_krb5_header_found=true
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_KRB5_KRB5_H 1
@@ -19889,21 +20895,65 @@ _ACEOF
 
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
+     inn_krb5_found_header=true
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 fi
- if test x"$inn_krb5_header_found" = xtrue; then :
-  inn_krb5_save_CPPFLAGS="$CPPFLAGS"
+ if test x"$inn_krb5_found_header" = xtrue; then :
+
+else
+  KRB5_CPPFLAGS=
+     KRB5_LIBS=
+     if test x"true" = xtrue; then :
+  as_fn_error $? "cannot find usable Kerberos header" "$LINENO" 5
+fi
+fi
+ CPPFLAGS="$inn_krb5_save_CPPFLAGS"
+ LDFLAGS="$inn_krb5_save_LDFLAGS"
+ LIBS="$inn_krb5_save_LIBS"
+fi
+else
+  if test x"$inn_krb5_libdir" != x; then :
+  KRB5_LDFLAGS="-L$inn_krb5_libdir"
+else
+  if test x"$inn_krb5_root" != x; then :
+
+ if test -d "$inn_krb5_root/$inn_lib_arch_name"; then :
+  if test x"" = x; then :
+  KRB5_LDFLAGS="$KRB5_LDFLAGS -L$inn_krb5_root/${inn_lib_arch_name}"
+else
+  KRB5_LDFLAGS="$KRB5_LDFLAGS -L$inn_krb5_root/${inn_lib_arch_name}/"
+fi
+else
+  if test x"" = x; then :
+  KRB5_LDFLAGS="$KRB5_LDFLAGS -L$inn_krb5_root/lib"
+else
+  KRB5_LDFLAGS="$KRB5_LDFLAGS -L$inn_krb5_root/lib/"
+fi
+fi
+ KRB5_LDFLAGS=`$as_echo "$KRB5_LDFLAGS" | sed -e 's/^ *//'`
+fi
+fi
+ if test x"$inn_krb5_includedir" != x; then :
+  KRB5_CPPFLAGS="-I$inn_krb5_includedir"
+else
+  if test x"$inn_krb5_root" != x; then :
+  if test x"$inn_krb5_root" != x/usr; then :
+  KRB5_CPPFLAGS="-I${inn_krb5_root}/include"
+fi
+fi
+fi
+         inn_krb5_save_CPPFLAGS="$CPPFLAGS"
  inn_krb5_save_LDFLAGS="$LDFLAGS"
  inn_krb5_save_LIBS="$LIBS"
  CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
  LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
  LIBS="$KRB5_LIBS $LIBS"
-     inn_krb5_extra=
-     LIBS=
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing res_search" >&5
+ inn_krb5_extra=
+ LIBS=
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing res_search" >&5
 $as_echo_n "checking for library containing res_search... " >&6; }
 if ${ac_cv_search_res_search+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -20016,7 +21066,7 @@ fi
 
 fi
 
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5
 $as_echo_n "checking for library containing gethostbyname... " >&6; }
 if ${ac_cv_search_gethostbyname+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -20072,7 +21122,7 @@ if test "$ac_res" != no; then :
 
 fi
 
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5
 $as_echo_n "checking for library containing socket... " >&6; }
 if ${ac_cv_search_socket+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -20169,7 +21219,7 @@ fi
 
 fi
 
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing crypt" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing crypt" >&5
 $as_echo_n "checking for library containing crypt... " >&6; }
 if ${ac_cv_search_crypt+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -20225,7 +21275,7 @@ if test "$ac_res" != no; then :
 
 fi
 
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing roken_concat" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing roken_concat" >&5
 $as_echo_n "checking for library containing roken_concat... " >&6; }
 if ${ac_cv_search_roken_concat+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -20281,9 +21331,9 @@ if test "$ac_res" != no; then :
 
 fi
 
-     inn_krb5_extra="$LIBS"
-     LIBS="$inn_krb5_save_LIBS"
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_init_context in -lkrb5" >&5
+ inn_krb5_extra="$LIBS"
+ LIBS="$inn_krb5_save_LIBS"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_init_context in -lkrb5" >&5
 $as_echo_n "checking for krb5_init_context in -lkrb5... " >&6; }
 if ${ac_cv_lib_krb5_krb5_init_context+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -20442,7 +21492,7 @@ fi
 
 fi
 
-             { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_setspecific in -lkrb5support" >&5
+         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_setspecific in -lkrb5support" >&5
 $as_echo_n "checking for krb5int_setspecific in -lkrb5support... " >&6; }
 if ${ac_cv_lib_krb5support_krb5int_setspecific+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -20484,7 +21534,7 @@ fi
 
 fi
 
-         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for error_message in -lcom_err" >&5
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for error_message in -lcom_err" >&5
 $as_echo_n "checking for error_message in -lcom_err... " >&6; }
 if ${ac_cv_lib_com_err_error_message+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -20524,7 +21574,7 @@ if test "x$ac_cv_lib_com_err_error_messa
   inn_krb5_extra="-lcom_err $inn_krb5_extra"
 fi
 
-         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_svc_get_msg in -lksvc" >&5
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_svc_get_msg in -lksvc" >&5
 $as_echo_n "checking for krb5_svc_get_msg in -lksvc... " >&6; }
 if ${ac_cv_lib_ksvc_krb5_svc_get_msg+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -20564,7 +21614,7 @@ if test "x$ac_cv_lib_ksvc_krb5_svc_get_m
   inn_krb5_extra="-lksvc $inn_krb5_extra"
 fi
 
-         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_hash_md5 in -lk5crypto" >&5
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_hash_md5 in -lk5crypto" >&5
 $as_echo_n "checking for krb5int_hash_md5 in -lk5crypto... " >&6; }
 if ${ac_cv_lib_k5crypto_krb5int_hash_md5+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -20604,7 +21654,7 @@ if test "x$ac_cv_lib_k5crypto_krb5int_ha
   inn_krb5_extra="-lk5crypto $inn_krb5_extra"
 fi
 
-         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for profile_get_values in -lk5profile" >&5
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for profile_get_values in -lk5profile" >&5
 $as_echo_n "checking for profile_get_values in -lk5profile... " >&6; }
 if ${ac_cv_lib_k5profile_profile_get_values+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -20644,7 +21694,7 @@ if test "x$ac_cv_lib_k5profile_profile_g
   inn_krb5_extra="-lk5profile $inn_krb5_extra"
 fi
 
-         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_cc_default in -lkrb5" >&5
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_cc_default in -lkrb5" >&5
 $as_echo_n "checking for krb5_cc_default in -lkrb5... " >&6; }
 if ${ac_cv_lib_krb5_krb5_cc_default+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -20690,8 +21740,8 @@ fi
 
 fi
 
-     LIBS="$KRB5_LIBS $LIBS"
-     for ac_func in krb5_get_error_message
+ LIBS="$KRB5_LIBS $LIBS"
+ for ac_func in krb5_get_error_message
 do :
   ac_fn_c_check_func "$LINENO" "krb5_get_error_message" "ac_cv_func_krb5_get_error_message"
 if test "x$ac_cv_func_krb5_get_error_message" = xyes; then :
@@ -20757,8 +21807,7 @@ fi
 done
 
 else
-  inn_krb5_header_found=false
-                     if test x"$inn_krb5_incroot" = x; then :
+  if test x"$inn_krb5_incroot" = x; then :
   for ac_header in et/com_err.h kerberosv5/com_err.h
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
@@ -20767,7 +21816,7 @@ if eval test \"x\$"$as_ac_Header"\" = x"
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
- inn_krb5_header_found=true
+
 fi
 
 done
@@ -20776,7 +21825,6 @@ else
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for et/com_err.h" >&5
 $as_echo_n "checking for et/com_err.h... " >&6; }
  if test -f "${inn_krb5_incroot}/et/com_err.h"; then :
-  inn_krb5_header_found=true
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_ET_COM_ERR_H 1
@@ -20784,14 +21832,14 @@ _ACEOF
 
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
+
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/com_err.h" >&5
+         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/com_err.h" >&5
 $as_echo_n "checking for kerberosv5/com_err.h... " >&6; }
  if test -f "${inn_krb5_incroot}/kerberosv5/com_err.h"; then :
-  inn_krb5_header_found=true
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_KERBEROSV5_COM_ERR_H 1
@@ -20799,16 +21847,15 @@ _ACEOF
 
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
+
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 fi
-                     if test x"$inn_krb5_header_found" != xtrue; then :
-  if test x"true" = xtrue; then :
-  as_fn_error $? "cannot find usable com_err header" "$LINENO" 5
-fi
 fi
+done
+
 fi
 done
 
@@ -20818,11 +21865,74 @@ done
 fi
 done
 
+ inn_krb5_found_header=
+ if test x"$inn_krb5_incroot" = x; then :
+  for ac_header in krb5.h kerberosv5/krb5.h krb5/krb5.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+ inn_krb5_found_header=true
 fi
+
 done
 
 else
-  if test x"true" = xtrue; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5.h" >&5
+$as_echo_n "checking for krb5.h... " >&6; }
+ if test -f "${inn_krb5_incroot}/krb5.h"; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_KRB5_H 1
+_ACEOF
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+     inn_krb5_found_header=true
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/krb5.h" >&5
+$as_echo_n "checking for kerberosv5/krb5.h... " >&6; }
+ if test -f "${inn_krb5_incroot}/kerberosv5/krb5.h"; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_KERBEROSV5_KRB5_H 1
+_ACEOF
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+     inn_krb5_found_header=true
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5/krb5.h" >&5
+$as_echo_n "checking for krb5/krb5.h... " >&6; }
+ if test -f "${inn_krb5_incroot}/krb5/krb5.h"; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_KRB5_KRB5_H 1
+_ACEOF
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+     inn_krb5_found_header=true
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+fi
+ if test x"$inn_krb5_found_header" = xtrue; then :
+
+else
+  KRB5_CPPFLAGS=
+     KRB5_LIBS=
+     if test x"true" = xtrue; then :
   as_fn_error $? "cannot find usable Kerberos header" "$LINENO" 5
 fi
 fi
@@ -20839,7 +21949,7 @@ fi
      ;;
 esac
  :
- KRB5_CPPFLAGS_WARNINGS=`$as_echo "$KRB5_CPPFLAGS" | sed -e 's/-I/-isystem /g'`
+ KRB5_CPPFLAGS_WARNINGS=`$as_echo "$KRB5_CPPFLAGS" | sed 's/-I/-isystem /g'`
 else
 
  inn_krb5_incroot=
@@ -20885,76 +21995,13 @@ else
 fi
 fi
 fi
-     inn_krb5_header_found=false
- if test x"$inn_krb5_incroot" = x; then :
-  for ac_header in krb5.h kerberosv5/krb5.h krb5/krb5.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
- inn_krb5_header_found=true
-fi
-
-done
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5.h" >&5
-$as_echo_n "checking for krb5.h... " >&6; }
- if test -f "${inn_krb5_incroot}/krb5.h"; then :
-  inn_krb5_header_found=true
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_KRB5_H 1
-_ACEOF
-
-     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/krb5.h" >&5
-$as_echo_n "checking for kerberosv5/krb5.h... " >&6; }
- if test -f "${inn_krb5_incroot}/kerberosv5/krb5.h"; then :
-  inn_krb5_header_found=true
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_KERBEROSV5_KRB5_H 1
-_ACEOF
-
-     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5/krb5.h" >&5
-$as_echo_n "checking for krb5/krb5.h... " >&6; }
- if test -f "${inn_krb5_incroot}/krb5/krb5.h"; then :
-  inn_krb5_header_found=true
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_KRB5_KRB5_H 1
-_ACEOF
-
-     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-fi
- if test x"$inn_krb5_header_found" = xtrue; then :
-  inn_krb5_save_CPPFLAGS="$CPPFLAGS"
+     inn_krb5_save_CPPFLAGS="$CPPFLAGS"
  inn_krb5_save_LDFLAGS="$LDFLAGS"
  inn_krb5_save_LIBS="$LIBS"
  CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
  LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
  LIBS="$KRB5_LIBS $LIBS"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_init_context in -lkrb5" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_init_context in -lkrb5" >&5
 $as_echo_n "checking for krb5_init_context in -lkrb5... " >&6; }
 if ${ac_cv_lib_krb5_krb5_init_context+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -20992,8 +22039,8 @@ fi
 $as_echo "$ac_cv_lib_krb5_krb5_init_context" >&6; }
 if test "x$ac_cv_lib_krb5_krb5_init_context" = xyes; then :
   KRB5_LIBS="-lkrb5"
-          LIBS="$KRB5_LIBS $LIBS"
-          for ac_func in krb5_get_error_message
+     LIBS="$KRB5_LIBS $LIBS"
+     for ac_func in krb5_get_error_message
 do :
   ac_fn_c_check_func "$LINENO" "krb5_get_error_message" "ac_cv_func_krb5_get_error_message"
 if test "x$ac_cv_func_krb5_get_error_message" = xyes; then :
@@ -21068,9 +22115,9 @@ fi
 $as_echo "$ac_cv_lib_ksvc_krb5_svc_get_msg" >&6; }
 if test "x$ac_cv_lib_ksvc_krb5_svc_get_msg" = xyes; then :
   KRB5_LIBS="$KRB5_LIBS -lksvc"
-                          $as_echo "#define HAVE_KRB5_SVC_GET_MSG 1" >>confdefs.h
+                     $as_echo "#define HAVE_KRB5_SVC_GET_MSG 1" >>confdefs.h
 
-                          for ac_header in ibm_svc/krb5_svc.h
+                     for ac_header in ibm_svc/krb5_svc.h
 do :
   ac_fn_c_check_header_compile "$LINENO" "ibm_svc/krb5_svc.h" "ac_cv_header_ibm_svc_krb5_svc_h" "
 #if HAVE_KRB5_H
@@ -21092,54 +22139,6 @@ fi
 done
 
 else
-  inn_krb5_header_found=false
-                          if test x"$inn_krb5_incroot" = x; then :
-  for ac_header in et/com_err.h kerberosv5/com_err.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
- inn_krb5_header_found=true
-fi
-
-done
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for et/com_err.h" >&5
-$as_echo_n "checking for et/com_err.h... " >&6; }
- if test -f "${inn_krb5_incroot}/et/com_err.h"; then :
-  inn_krb5_header_found=true
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_ET_COM_ERR_H 1
-_ACEOF
-
-     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/com_err.h" >&5
-$as_echo_n "checking for kerberosv5/com_err.h... " >&6; }
- if test -f "${inn_krb5_incroot}/kerberosv5/com_err.h"; then :
-  inn_krb5_header_found=true
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_KERBEROSV5_COM_ERR_H 1
-_ACEOF
-
-     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-fi
-                          if test x"$inn_krb5_header_found" = xtrue; then :
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for com_err in -lcom_err" >&5
 $as_echo_n "checking for com_err in -lcom_err... " >&6; }
 if ${ac_cv_lib_com_err_com_err+:} false; then :
@@ -21186,9 +22185,50 @@ else
 fi
 fi
 
+                     if test x"$inn_krb5_incroot" = x; then :
+  for ac_header in et/com_err.h kerberosv5/com_err.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
 else
-  if test x"false" = xtrue; then :
-  as_fn_error $? "cannot find usable com_err header" "$LINENO" 5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for et/com_err.h" >&5
+$as_echo_n "checking for et/com_err.h... " >&6; }
+ if test -f "${inn_krb5_incroot}/et/com_err.h"; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_ET_COM_ERR_H 1
+_ACEOF
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/com_err.h" >&5
+$as_echo_n "checking for kerberosv5/com_err.h... " >&6; }
+ if test -f "${inn_krb5_incroot}/kerberosv5/com_err.h"; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_KERBEROSV5_COM_ERR_H 1
+_ACEOF
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 fi
 fi
@@ -21202,17 +22242,83 @@ done
 fi
 done
 
+     inn_krb5_found_header=
+ if test x"$inn_krb5_incroot" = x; then :
+  for ac_header in krb5.h kerberosv5/krb5.h krb5/krb5.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+ inn_krb5_found_header=true
+fi
+
+done
+
 else
-  if test x"false" = xtrue; then :
-  as_fn_error $? "cannot find usable Kerberos library" "$LINENO" 5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5.h" >&5
+$as_echo_n "checking for krb5.h... " >&6; }
+ if test -f "${inn_krb5_incroot}/krb5.h"; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_KRB5_H 1
+_ACEOF
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+     inn_krb5_found_header=true
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/krb5.h" >&5
+$as_echo_n "checking for kerberosv5/krb5.h... " >&6; }
+ if test -f "${inn_krb5_incroot}/kerberosv5/krb5.h"; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_KERBEROSV5_KRB5_H 1
+_ACEOF
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+     inn_krb5_found_header=true
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5/krb5.h" >&5
+$as_echo_n "checking for krb5/krb5.h... " >&6; }
+ if test -f "${inn_krb5_incroot}/krb5/krb5.h"; then :
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_KRB5_KRB5_H 1
+_ACEOF
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+     inn_krb5_found_header=true
 else
-  if test x"false" = xtrue; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+fi
+ if test x"$inn_krb5_found_header" = xtrue; then :
+
+else
+  KRB5_CPPFLAGS=
+         KRB5_LIBS=
+         if test x"false" = xtrue; then :
   as_fn_error $? "cannot find usable Kerberos header" "$LINENO" 5
 fi
 fi
+else
+  if test x"false" = xtrue; then :
+  as_fn_error $? "cannot find usable Kerberos library" "$LINENO" 5
+fi
+fi
+
  CPPFLAGS="$inn_krb5_save_CPPFLAGS"
  LDFLAGS="$inn_krb5_save_LDFLAGS"
  LIBS="$inn_krb5_save_LIBS"
@@ -21317,8 +22423,16 @@ fi
  if test x"$inn_krb5_config_KRB5_ok" = xyes; then :
   KRB5_CPPFLAGS=`$as_echo "$KRB5_CPPFLAGS" | sed 's%-I/usr/include %%'`
      KRB5_CPPFLAGS=`$as_echo "$KRB5_CPPFLAGS" | sed 's%-I/usr/include$%%'`
-     inn_krb5_header_found=false
-     if test x"$inn_krb5_incroot" = x; then :
+     inn_krb5_save_CPPFLAGS="$CPPFLAGS"
+ inn_krb5_save_LDFLAGS="$LDFLAGS"
+ inn_krb5_save_LIBS="$LIBS"
+ CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
+ LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
+ LIBS="$KRB5_LIBS $LIBS"
+ ac_fn_c_check_func "$LINENO" "krb5_init_context" "ac_cv_func_krb5_init_context"
+if test "x$ac_cv_func_krb5_init_context" = xyes; then :
+  inn_krb5_found_header=
+ if test x"$inn_krb5_incroot" = x; then :
   for ac_header in krb5.h kerberosv5/krb5.h krb5/krb5.h
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
@@ -21327,7 +22441,7 @@ if eval test \"x\$"$as_ac_Header"\" = x"
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
- inn_krb5_header_found=true
+ inn_krb5_found_header=true
 fi
 
 done
@@ -21336,7 +22450,6 @@ else
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5.h" >&5
 $as_echo_n "checking for krb5.h... " >&6; }
  if test -f "${inn_krb5_incroot}/krb5.h"; then :
-  inn_krb5_header_found=true
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_KRB5_H 1
@@ -21344,6 +22457,7 @@ _ACEOF
 
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
+     inn_krb5_found_header=true
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
@@ -21351,7 +22465,6 @@ fi
       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/krb5.h" >&5
 $as_echo_n "checking for kerberosv5/krb5.h... " >&6; }
  if test -f "${inn_krb5_incroot}/kerberosv5/krb5.h"; then :
-  inn_krb5_header_found=true
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_KERBEROSV5_KRB5_H 1
@@ -21359,6 +22472,7 @@ _ACEOF
 
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
+     inn_krb5_found_header=true
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
@@ -21366,7 +22480,6 @@ fi
       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5/krb5.h" >&5
 $as_echo_n "checking for krb5/krb5.h... " >&6; }
  if test -f "${inn_krb5_incroot}/krb5/krb5.h"; then :
-  inn_krb5_header_found=true
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_KRB5_KRB5_H 1
@@ -21374,20 +22487,13 @@ _ACEOF
 
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
+     inn_krb5_found_header=true
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 fi
-     if test x"$inn_krb5_header_found" = xtrue; then :
-  inn_krb5_save_CPPFLAGS="$CPPFLAGS"
- inn_krb5_save_LDFLAGS="$LDFLAGS"
- inn_krb5_save_LIBS="$LIBS"
- CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
- LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
- LIBS="$KRB5_LIBS $LIBS"
- ac_fn_c_check_func "$LINENO" "krb5_init_context" "ac_cv_func_krb5_init_context"
-if test "x$ac_cv_func_krb5_init_context" = xyes; then :
+ if test x"$inn_krb5_found_header" = xtrue; then :
   CPPFLAGS="$inn_krb5_save_CPPFLAGS"
  LDFLAGS="$inn_krb5_save_LDFLAGS"
  LIBS="$inn_krb5_save_LIBS"
@@ -21395,9 +22501,9 @@ else
   CPPFLAGS="$inn_krb5_save_CPPFLAGS"
  LDFLAGS="$inn_krb5_save_LDFLAGS"
  LIBS="$inn_krb5_save_LIBS"
-     KRB5_CPPFLAGS=
-     KRB5_LIBS=
-     if test x"$inn_krb5_libdir" != x; then :
+         KRB5_CPPFLAGS=
+         KRB5_LIBS=
+         if test x"$inn_krb5_libdir" != x; then :
   KRB5_LDFLAGS="-L$inn_krb5_libdir"
 else
   if test x"$inn_krb5_root" != x; then :
@@ -21427,7 +22533,927 @@ else
 fi
 fi
 fi
-     inn_krb5_header_found=false
+         inn_krb5_save_CPPFLAGS="$CPPFLAGS"
+ inn_krb5_save_LDFLAGS="$LDFLAGS"
+ inn_krb5_save_LIBS="$LIBS"
+ CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
+ LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
+ LIBS="$KRB5_LIBS $LIBS"
+ inn_krb5_extra=
+ LIBS=
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing res_search" >&5
+$as_echo_n "checking for library containing res_search... " >&6; }
+if ${ac_cv_search_res_search+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char res_search ();
+int
+main ()
+{
+return res_search ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' resolv; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_res_search=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_res_search+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_res_search+:} false; then :
+
+else
+  ac_cv_search_res_search=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_res_search" >&5
+$as_echo "$ac_cv_search_res_search" >&6; }
+ac_res=$ac_cv_search_res_search
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing __res_search" >&5
+$as_echo_n "checking for library containing __res_search... " >&6; }
+if ${ac_cv_search___res_search+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char __res_search ();
+int
+main ()
+{
+return __res_search ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' resolv; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search___res_search=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search___res_search+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search___res_search+:} false; then :
+
+else
+  ac_cv_search___res_search=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search___res_search" >&5
+$as_echo "$ac_cv_search___res_search" >&6; }
+ac_res=$ac_cv_search___res_search
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5
+$as_echo_n "checking for library containing gethostbyname... " >&6; }
+if ${ac_cv_search_gethostbyname+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gethostbyname ();
+int
+main ()
+{
+return gethostbyname ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' nsl; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_gethostbyname=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_gethostbyname+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_gethostbyname+:} false; then :
+
+else
+  ac_cv_search_gethostbyname=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gethostbyname" >&5
+$as_echo "$ac_cv_search_gethostbyname" >&6; }
+ac_res=$ac_cv_search_gethostbyname
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5
+$as_echo_n "checking for library containing socket... " >&6; }
+if ${ac_cv_search_socket+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char socket ();
+int
+main ()
+{
+return socket ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' socket; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_socket=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_socket+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_socket+:} false; then :
+
+else
+  ac_cv_search_socket=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_socket" >&5
+$as_echo "$ac_cv_search_socket" >&6; }
+ac_res=$ac_cv_search_socket
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for socket in -lnsl" >&5
+$as_echo_n "checking for socket in -lnsl... " >&6; }
+if ${ac_cv_lib_nsl_socket+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lnsl -lsocket $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char socket ();
+int
+main ()
+{
+return socket ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_nsl_socket=yes
+else
+  ac_cv_lib_nsl_socket=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_socket" >&5
+$as_echo "$ac_cv_lib_nsl_socket" >&6; }
+if test "x$ac_cv_lib_nsl_socket" = xyes; then :
+  LIBS="-lnsl -lsocket $LIBS"
+fi
+
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing crypt" >&5
+$as_echo_n "checking for library containing crypt... " >&6; }
+if ${ac_cv_search_crypt+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char crypt ();
+int
+main ()
+{
+return crypt ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' crypt; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_crypt=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_crypt+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_crypt+:} false; then :
+
+else
+  ac_cv_search_crypt=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_crypt" >&5
+$as_echo "$ac_cv_search_crypt" >&6; }
+ac_res=$ac_cv_search_crypt
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing roken_concat" >&5
+$as_echo_n "checking for library containing roken_concat... " >&6; }
+if ${ac_cv_search_roken_concat+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char roken_concat ();
+int
+main ()
+{
+return roken_concat ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' roken; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_roken_concat=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_roken_concat+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_roken_concat+:} false; then :
+
+else
+  ac_cv_search_roken_concat=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_roken_concat" >&5
+$as_echo "$ac_cv_search_roken_concat" >&6; }
+ac_res=$ac_cv_search_roken_concat
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+ inn_krb5_extra="$LIBS"
+ LIBS="$inn_krb5_save_LIBS"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_init_context in -lkrb5" >&5
+$as_echo_n "checking for krb5_init_context in -lkrb5... " >&6; }
+if ${ac_cv_lib_krb5_krb5_init_context+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lkrb5 -lasn1 -lcom_err -lcrypto $inn_krb5_extra $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char krb5_init_context ();
+int
+main ()
+{
+return krb5_init_context ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_krb5_krb5_init_context=yes
+else
+  ac_cv_lib_krb5_krb5_init_context=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_krb5_krb5_init_context" >&5
+$as_echo "$ac_cv_lib_krb5_krb5_init_context" >&6; }
+if test "x$ac_cv_lib_krb5_krb5_init_context" = xyes; then :
+  KRB5_LIBS="-lkrb5 -lasn1 -lcom_err -lcrypto $inn_krb5_extra"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_getspecific in -lkrb5support" >&5
+$as_echo_n "checking for krb5int_getspecific in -lkrb5support... " >&6; }
+if ${ac_cv_lib_krb5support_krb5int_getspecific+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lkrb5support $inn_krb5_extra $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char krb5int_getspecific ();
+int
+main ()
+{
+return krb5int_getspecific ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_krb5support_krb5int_getspecific=yes
+else
+  ac_cv_lib_krb5support_krb5int_getspecific=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_krb5support_krb5int_getspecific" >&5
+$as_echo "$ac_cv_lib_krb5support_krb5int_getspecific" >&6; }
+if test "x$ac_cv_lib_krb5support_krb5int_getspecific" = xyes; then :
+  inn_krb5_extra="-lkrb5support $inn_krb5_extra"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_setspecific in -lpthreads" >&5
+$as_echo_n "checking for pthread_setspecific in -lpthreads... " >&6; }
+if ${ac_cv_lib_pthreads_pthread_setspecific+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lpthreads  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pthread_setspecific ();
+int
+main ()
+{
+return pthread_setspecific ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_pthreads_pthread_setspecific=yes
+else
+  ac_cv_lib_pthreads_pthread_setspecific=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthreads_pthread_setspecific" >&5
+$as_echo "$ac_cv_lib_pthreads_pthread_setspecific" >&6; }
+if test "x$ac_cv_lib_pthreads_pthread_setspecific" = xyes; then :
+  inn_krb5_pthread="-lpthreads"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_setspecific in -lpthread" >&5
+$as_echo_n "checking for pthread_setspecific in -lpthread... " >&6; }
+if ${ac_cv_lib_pthread_pthread_setspecific+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lpthread  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pthread_setspecific ();
+int
+main ()
+{
+return pthread_setspecific ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_pthread_pthread_setspecific=yes
+else
+  ac_cv_lib_pthread_pthread_setspecific=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_setspecific" >&5
+$as_echo "$ac_cv_lib_pthread_pthread_setspecific" >&6; }
+if test "x$ac_cv_lib_pthread_pthread_setspecific" = xyes; then :
+  inn_krb5_pthread="-lpthread"
+fi
+
+fi
+
+         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_setspecific in -lkrb5support" >&5
+$as_echo_n "checking for krb5int_setspecific in -lkrb5support... " >&6; }
+if ${ac_cv_lib_krb5support_krb5int_setspecific+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lkrb5support $inn_krb5_pthread $inn_krb5_extra $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char krb5int_setspecific ();
+int
+main ()
+{
+return krb5int_setspecific ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_krb5support_krb5int_setspecific=yes
+else
+  ac_cv_lib_krb5support_krb5int_setspecific=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_krb5support_krb5int_setspecific" >&5
+$as_echo "$ac_cv_lib_krb5support_krb5int_setspecific" >&6; }
+if test "x$ac_cv_lib_krb5support_krb5int_setspecific" = xyes; then :
+  inn_krb5_extra="-lkrb5support $inn_krb5_extra $inn_krb5_pthread"
+fi
+
+fi
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for error_message in -lcom_err" >&5
+$as_echo_n "checking for error_message in -lcom_err... " >&6; }
+if ${ac_cv_lib_com_err_error_message+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lcom_err $inn_krb5_extra $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char error_message ();
+int
+main ()
+{
+return error_message ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_com_err_error_message=yes
+else
+  ac_cv_lib_com_err_error_message=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_com_err_error_message" >&5
+$as_echo "$ac_cv_lib_com_err_error_message" >&6; }
+if test "x$ac_cv_lib_com_err_error_message" = xyes; then :
+  inn_krb5_extra="-lcom_err $inn_krb5_extra"
+fi
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_svc_get_msg in -lksvc" >&5
+$as_echo_n "checking for krb5_svc_get_msg in -lksvc... " >&6; }
+if ${ac_cv_lib_ksvc_krb5_svc_get_msg+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lksvc $inn_krb5_extra $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char krb5_svc_get_msg ();
+int
+main ()
+{
+return krb5_svc_get_msg ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_ksvc_krb5_svc_get_msg=yes
+else
+  ac_cv_lib_ksvc_krb5_svc_get_msg=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ksvc_krb5_svc_get_msg" >&5
+$as_echo "$ac_cv_lib_ksvc_krb5_svc_get_msg" >&6; }
+if test "x$ac_cv_lib_ksvc_krb5_svc_get_msg" = xyes; then :
+  inn_krb5_extra="-lksvc $inn_krb5_extra"
+fi
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_hash_md5 in -lk5crypto" >&5
+$as_echo_n "checking for krb5int_hash_md5 in -lk5crypto... " >&6; }
+if ${ac_cv_lib_k5crypto_krb5int_hash_md5+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lk5crypto $inn_krb5_extra $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char krb5int_hash_md5 ();
+int
+main ()
+{
+return krb5int_hash_md5 ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_k5crypto_krb5int_hash_md5=yes
+else
+  ac_cv_lib_k5crypto_krb5int_hash_md5=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_k5crypto_krb5int_hash_md5" >&5
+$as_echo "$ac_cv_lib_k5crypto_krb5int_hash_md5" >&6; }
+if test "x$ac_cv_lib_k5crypto_krb5int_hash_md5" = xyes; then :
+  inn_krb5_extra="-lk5crypto $inn_krb5_extra"
+fi
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for profile_get_values in -lk5profile" >&5
+$as_echo_n "checking for profile_get_values in -lk5profile... " >&6; }
+if ${ac_cv_lib_k5profile_profile_get_values+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lk5profile $inn_krb5_extra $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char profile_get_values ();
+int
+main ()
+{
+return profile_get_values ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_k5profile_profile_get_values=yes
+else
+  ac_cv_lib_k5profile_profile_get_values=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_k5profile_profile_get_values" >&5
+$as_echo "$ac_cv_lib_k5profile_profile_get_values" >&6; }
+if test "x$ac_cv_lib_k5profile_profile_get_values" = xyes; then :
+  inn_krb5_extra="-lk5profile $inn_krb5_extra"
+fi
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_cc_default in -lkrb5" >&5
+$as_echo_n "checking for krb5_cc_default in -lkrb5... " >&6; }
+if ${ac_cv_lib_krb5_krb5_cc_default+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lkrb5 $inn_krb5_extra $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char krb5_cc_default ();
+int
+main ()
+{
+return krb5_cc_default ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_krb5_krb5_cc_default=yes
+else
+  ac_cv_lib_krb5_krb5_cc_default=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_krb5_krb5_cc_default" >&5
+$as_echo "$ac_cv_lib_krb5_krb5_cc_default" >&6; }
+if test "x$ac_cv_lib_krb5_krb5_cc_default" = xyes; then :
+  KRB5_LIBS="-lkrb5 $inn_krb5_extra"
+else
+  if test x"false" = xtrue; then :
+  as_fn_error $? "cannot find usable Kerberos library" "$LINENO" 5
+fi
+fi
+
+fi
+
+ LIBS="$KRB5_LIBS $LIBS"
+ for ac_func in krb5_get_error_message
+do :
+  ac_fn_c_check_func "$LINENO" "krb5_get_error_message" "ac_cv_func_krb5_get_error_message"
+if test "x$ac_cv_func_krb5_get_error_message" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_KRB5_GET_ERROR_MESSAGE 1
+_ACEOF
+ for ac_func in krb5_free_error_message
+do :
+  ac_fn_c_check_func "$LINENO" "krb5_free_error_message" "ac_cv_func_krb5_free_error_message"
+if test "x$ac_cv_func_krb5_free_error_message" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_KRB5_FREE_ERROR_MESSAGE 1
+_ACEOF
+
+fi
+done
+
+else
+  for ac_func in krb5_get_error_string
+do :
+  ac_fn_c_check_func "$LINENO" "krb5_get_error_string" "ac_cv_func_krb5_get_error_string"
+if test "x$ac_cv_func_krb5_get_error_string" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_KRB5_GET_ERROR_STRING 1
+_ACEOF
+
+else
+  for ac_func in krb5_get_err_txt
+do :
+  ac_fn_c_check_func "$LINENO" "krb5_get_err_txt" "ac_cv_func_krb5_get_err_txt"
+if test "x$ac_cv_func_krb5_get_err_txt" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_KRB5_GET_ERR_TXT 1
+_ACEOF
+
+else
+  for ac_func in krb5_svc_get_msg
+do :
+  ac_fn_c_check_func "$LINENO" "krb5_svc_get_msg" "ac_cv_func_krb5_svc_get_msg"
+if test "x$ac_cv_func_krb5_svc_get_msg" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_KRB5_SVC_GET_MSG 1
+_ACEOF
+ for ac_header in ibm_svc/krb5_svc.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "ibm_svc/krb5_svc.h" "ac_cv_header_ibm_svc_krb5_svc_h" "
+#if HAVE_KRB5_H
+# include <krb5.h>
+#elif HAVE_KERBEROSV5_KRB5_H
+# include <kerberosv5/krb5.h>
+#else
+# include <krb5/krb5.h>
+#endif
+
+"
+if test "x$ac_cv_header_ibm_svc_krb5_svc_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_IBM_SVC_KRB5_SVC_H 1
+_ACEOF
+
+fi
+
+done
+
+else
+  if test x"$inn_krb5_incroot" = x; then :
+  for ac_header in et/com_err.h kerberosv5/com_err.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for et/com_err.h" >&5
+$as_echo_n "checking for et/com_err.h... " >&6; }
+ if test -f "${inn_krb5_incroot}/et/com_err.h"; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_ET_COM_ERR_H 1
+_ACEOF
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/com_err.h" >&5
+$as_echo_n "checking for kerberosv5/com_err.h... " >&6; }
+ if test -f "${inn_krb5_incroot}/kerberosv5/com_err.h"; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_KERBEROSV5_COM_ERR_H 1
+_ACEOF
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+fi
+fi
+done
+
+fi
+done
+
+fi
+done
+
+fi
+done
+
+ inn_krb5_found_header=
  if test x"$inn_krb5_incroot" = x; then :
   for ac_header in krb5.h kerberosv5/krb5.h krb5/krb5.h
 do :
@@ -21437,7 +23463,7 @@ if eval test \"x\$"$as_ac_Header"\" = x"
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
- inn_krb5_header_found=true
+ inn_krb5_found_header=true
 fi
 
 done
@@ -21446,7 +23472,6 @@ else
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5.h" >&5
 $as_echo_n "checking for krb5.h... " >&6; }
  if test -f "${inn_krb5_incroot}/krb5.h"; then :
-  inn_krb5_header_found=true
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_KRB5_H 1
@@ -21454,6 +23479,7 @@ _ACEOF
 
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
+     inn_krb5_found_header=true
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
@@ -21461,7 +23487,6 @@ fi
       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/krb5.h" >&5
 $as_echo_n "checking for kerberosv5/krb5.h... " >&6; }
  if test -f "${inn_krb5_incroot}/kerberosv5/krb5.h"; then :
-  inn_krb5_header_found=true
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_KERBEROSV5_KRB5_H 1
@@ -21469,6 +23494,7 @@ _ACEOF
 
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
+     inn_krb5_found_header=true
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
@@ -21476,7 +23502,6 @@ fi
       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5/krb5.h" >&5
 $as_echo_n "checking for krb5/krb5.h... " >&6; }
  if test -f "${inn_krb5_incroot}/krb5/krb5.h"; then :
-  inn_krb5_header_found=true
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_KRB5_KRB5_H 1
@@ -21484,21 +23509,70 @@ _ACEOF
 
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
+     inn_krb5_found_header=true
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 fi
- if test x"$inn_krb5_header_found" = xtrue; then :
-  inn_krb5_save_CPPFLAGS="$CPPFLAGS"
+ if test x"$inn_krb5_found_header" = xtrue; then :
+
+else
+  KRB5_CPPFLAGS=
+     KRB5_LIBS=
+     if test x"false" = xtrue; then :
+  as_fn_error $? "cannot find usable Kerberos header" "$LINENO" 5
+fi
+fi
+ CPPFLAGS="$inn_krb5_save_CPPFLAGS"
+ LDFLAGS="$inn_krb5_save_LDFLAGS"
+ LIBS="$inn_krb5_save_LIBS"
+fi
+else
+  CPPFLAGS="$inn_krb5_save_CPPFLAGS"
+ LDFLAGS="$inn_krb5_save_LDFLAGS"
+ LIBS="$inn_krb5_save_LIBS"
+     KRB5_CPPFLAGS=
+     KRB5_LIBS=
+     if test x"$inn_krb5_libdir" != x; then :
+  KRB5_LDFLAGS="-L$inn_krb5_libdir"
+else
+  if test x"$inn_krb5_root" != x; then :
+
+ if test -d "$inn_krb5_root/$inn_lib_arch_name"; then :
+  if test x"" = x; then :
+  KRB5_LDFLAGS="$KRB5_LDFLAGS -L$inn_krb5_root/${inn_lib_arch_name}"
+else
+  KRB5_LDFLAGS="$KRB5_LDFLAGS -L$inn_krb5_root/${inn_lib_arch_name}/"
+fi
+else
+  if test x"" = x; then :
+  KRB5_LDFLAGS="$KRB5_LDFLAGS -L$inn_krb5_root/lib"
+else
+  KRB5_LDFLAGS="$KRB5_LDFLAGS -L$inn_krb5_root/lib/"
+fi
+fi
+ KRB5_LDFLAGS=`$as_echo "$KRB5_LDFLAGS" | sed -e 's/^ *//'`
+fi
+fi
+ if test x"$inn_krb5_includedir" != x; then :
+  KRB5_CPPFLAGS="-I$inn_krb5_includedir"
+else
+  if test x"$inn_krb5_root" != x; then :
+  if test x"$inn_krb5_root" != x/usr; then :
+  KRB5_CPPFLAGS="-I${inn_krb5_root}/include"
+fi
+fi
+fi
+     inn_krb5_save_CPPFLAGS="$CPPFLAGS"
  inn_krb5_save_LDFLAGS="$LDFLAGS"
  inn_krb5_save_LIBS="$LIBS"
  CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
  LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
  LIBS="$KRB5_LIBS $LIBS"
-     inn_krb5_extra=
-     LIBS=
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing res_search" >&5
+ inn_krb5_extra=
+ LIBS=
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing res_search" >&5
 $as_echo_n "checking for library containing res_search... " >&6; }
 if ${ac_cv_search_res_search+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -21611,7 +23685,7 @@ fi
 
 fi
 
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5
 $as_echo_n "checking for library containing gethostbyname... " >&6; }
 if ${ac_cv_search_gethostbyname+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -21667,7 +23741,7 @@ if test "$ac_res" != no; then :
 
 fi
 
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5
 $as_echo_n "checking for library containing socket... " >&6; }
 if ${ac_cv_search_socket+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -21764,7 +23838,7 @@ fi
 
 fi
 
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing crypt" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing crypt" >&5
 $as_echo_n "checking for library containing crypt... " >&6; }
 if ${ac_cv_search_crypt+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -21820,7 +23894,7 @@ if test "$ac_res" != no; then :
 
 fi
 
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing roken_concat" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing roken_concat" >&5
 $as_echo_n "checking for library containing roken_concat... " >&6; }
 if ${ac_cv_search_roken_concat+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -21876,9 +23950,9 @@ if test "$ac_res" != no; then :
 
 fi
 
-     inn_krb5_extra="$LIBS"
-     LIBS="$inn_krb5_save_LIBS"
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_init_context in -lkrb5" >&5
+ inn_krb5_extra="$LIBS"
+ LIBS="$inn_krb5_save_LIBS"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_init_context in -lkrb5" >&5
 $as_echo_n "checking for krb5_init_context in -lkrb5... " >&6; }
 if ${ac_cv_lib_krb5_krb5_init_context+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -22037,7 +24111,7 @@ fi
 
 fi
 
-             { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_setspecific in -lkrb5support" >&5
+         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_setspecific in -lkrb5support" >&5
 $as_echo_n "checking for krb5int_setspecific in -lkrb5support... " >&6; }
 if ${ac_cv_lib_krb5support_krb5int_setspecific+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -22079,7 +24153,7 @@ fi
 
 fi
 
-         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for error_message in -lcom_err" >&5
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for error_message in -lcom_err" >&5
 $as_echo_n "checking for error_message in -lcom_err... " >&6; }
 if ${ac_cv_lib_com_err_error_message+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -22119,7 +24193,7 @@ if test "x$ac_cv_lib_com_err_error_messa
   inn_krb5_extra="-lcom_err $inn_krb5_extra"
 fi
 
-         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_svc_get_msg in -lksvc" >&5
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_svc_get_msg in -lksvc" >&5
 $as_echo_n "checking for krb5_svc_get_msg in -lksvc... " >&6; }
 if ${ac_cv_lib_ksvc_krb5_svc_get_msg+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -22159,7 +24233,7 @@ if test "x$ac_cv_lib_ksvc_krb5_svc_get_m
   inn_krb5_extra="-lksvc $inn_krb5_extra"
 fi
 
-         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_hash_md5 in -lk5crypto" >&5
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_hash_md5 in -lk5crypto" >&5
 $as_echo_n "checking for krb5int_hash_md5 in -lk5crypto... " >&6; }
 if ${ac_cv_lib_k5crypto_krb5int_hash_md5+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -22199,7 +24273,7 @@ if test "x$ac_cv_lib_k5crypto_krb5int_ha
   inn_krb5_extra="-lk5crypto $inn_krb5_extra"
 fi
 
-         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for profile_get_values in -lk5profile" >&5
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for profile_get_values in -lk5profile" >&5
 $as_echo_n "checking for profile_get_values in -lk5profile... " >&6; }
 if ${ac_cv_lib_k5profile_profile_get_values+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -22239,7 +24313,7 @@ if test "x$ac_cv_lib_k5profile_profile_g
   inn_krb5_extra="-lk5profile $inn_krb5_extra"
 fi
 
-         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_cc_default in -lkrb5" >&5
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_cc_default in -lkrb5" >&5
 $as_echo_n "checking for krb5_cc_default in -lkrb5... " >&6; }
 if ${ac_cv_lib_krb5_krb5_cc_default+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -22285,8 +24359,8 @@ fi
 
 fi
 
-     LIBS="$KRB5_LIBS $LIBS"
-     for ac_func in krb5_get_error_message
+ LIBS="$KRB5_LIBS $LIBS"
+ for ac_func in krb5_get_error_message
 do :
   ac_fn_c_check_func "$LINENO" "krb5_get_error_message" "ac_cv_func_krb5_get_error_message"
 if test "x$ac_cv_func_krb5_get_error_message" = xyes; then :
@@ -22352,8 +24426,7 @@ fi
 done
 
 else
-  inn_krb5_header_found=false
-                     if test x"$inn_krb5_incroot" = x; then :
+  if test x"$inn_krb5_incroot" = x; then :
   for ac_header in et/com_err.h kerberosv5/com_err.h
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
@@ -22362,7 +24435,7 @@ if eval test \"x\$"$as_ac_Header"\" = x"
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
- inn_krb5_header_found=true
+
 fi
 
 done
@@ -22371,7 +24444,6 @@ else
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for et/com_err.h" >&5
 $as_echo_n "checking for et/com_err.h... " >&6; }
  if test -f "${inn_krb5_incroot}/et/com_err.h"; then :
-  inn_krb5_header_found=true
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_ET_COM_ERR_H 1
@@ -22379,14 +24451,14 @@ _ACEOF
 
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
+
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/com_err.h" >&5
+         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/com_err.h" >&5
 $as_echo_n "checking for kerberosv5/com_err.h... " >&6; }
  if test -f "${inn_krb5_incroot}/kerberosv5/com_err.h"; then :
-  inn_krb5_header_found=true
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_KERBEROSV5_COM_ERR_H 1
@@ -22394,16 +24466,15 @@ _ACEOF
 
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
+
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 fi
-                     if test x"$inn_krb5_header_found" != xtrue; then :
-  if test x"false" = xtrue; then :
-  as_fn_error $? "cannot find usable com_err header" "$LINENO" 5
-fi
 fi
+done
+
 fi
 done
 
@@ -22413,11 +24484,74 @@ done
 fi
 done
 
+ inn_krb5_found_header=
+ if test x"$inn_krb5_incroot" = x; then :
+  for ac_header in krb5.h kerberosv5/krb5.h krb5/krb5.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+ inn_krb5_found_header=true
 fi
+
 done
 
 else
-  if test x"false" = xtrue; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5.h" >&5
+$as_echo_n "checking for krb5.h... " >&6; }
+ if test -f "${inn_krb5_incroot}/krb5.h"; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_KRB5_H 1
+_ACEOF
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+     inn_krb5_found_header=true
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/krb5.h" >&5
+$as_echo_n "checking for kerberosv5/krb5.h... " >&6; }
+ if test -f "${inn_krb5_incroot}/kerberosv5/krb5.h"; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_KERBEROSV5_KRB5_H 1
+_ACEOF
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+     inn_krb5_found_header=true
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5/krb5.h" >&5
+$as_echo_n "checking for krb5/krb5.h... " >&6; }
+ if test -f "${inn_krb5_incroot}/krb5/krb5.h"; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_KRB5_KRB5_H 1
+_ACEOF
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+     inn_krb5_found_header=true
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+fi
+ if test x"$inn_krb5_found_header" = xtrue; then :
+
+else
+  KRB5_CPPFLAGS=
+     KRB5_LIBS=
+     if test x"false" = xtrue; then :
   as_fn_error $? "cannot find usable Kerberos header" "$LINENO" 5
 fi
 fi
@@ -22426,13 +24560,13 @@ fi
  LIBS="$inn_krb5_save_LIBS"
 fi
 
-         inn_krb5_save_CPPFLAGS="$CPPFLAGS"
+     inn_krb5_save_CPPFLAGS="$CPPFLAGS"
  inn_krb5_save_LDFLAGS="$LDFLAGS"
  inn_krb5_save_LIBS="$LIBS"
  CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
  LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
  LIBS="$KRB5_LIBS $LIBS"
-         for ac_func in krb5_get_error_message
+     for ac_func in krb5_get_error_message
 do :
   ac_fn_c_check_func "$LINENO" "krb5_get_error_message" "ac_cv_func_krb5_get_error_message"
 if test "x$ac_cv_func_krb5_get_error_message" = xyes; then :
@@ -22498,8 +24632,7 @@ fi
 done
 
 else
-  inn_krb5_header_found=false
-                          if test x"$inn_krb5_incroot" = x; then :
+  if test x"$inn_krb5_incroot" = x; then :
   for ac_header in et/com_err.h kerberosv5/com_err.h
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
@@ -22508,7 +24641,7 @@ if eval test \"x\$"$as_ac_Header"\" = x"
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
- inn_krb5_header_found=true
+
 fi
 
 done
@@ -22517,7 +24650,6 @@ else
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for et/com_err.h" >&5
 $as_echo_n "checking for et/com_err.h... " >&6; }
  if test -f "${inn_krb5_incroot}/et/com_err.h"; then :
-  inn_krb5_header_found=true
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_ET_COM_ERR_H 1
@@ -22525,14 +24657,14 @@ _ACEOF
 
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
+
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/com_err.h" >&5
+         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/com_err.h" >&5
 $as_echo_n "checking for kerberosv5/com_err.h... " >&6; }
  if test -f "${inn_krb5_incroot}/kerberosv5/com_err.h"; then :
-  inn_krb5_header_found=true
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_KERBEROSV5_COM_ERR_H 1
@@ -22540,16 +24672,12 @@ _ACEOF
 
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
+
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 fi
-                          if test x"$inn_krb5_header_found" != xtrue; then :
-  if test x"false" = xtrue; then :
-  as_fn_error $? "cannot find usable com_err header" "$LINENO" 5
-fi
-fi
 fi
 done
 
@@ -22562,15 +24690,10 @@ done
 fi
 done
 
-         CPPFLAGS="$inn_krb5_save_CPPFLAGS"
+     CPPFLAGS="$inn_krb5_save_CPPFLAGS"
  LDFLAGS="$inn_krb5_save_LDFLAGS"
  LIBS="$inn_krb5_save_LIBS"
 else
-  if test x"false" = xtrue; then :
-  as_fn_error $? "cannot find usable Kerberos header" "$LINENO" 5
-fi
-fi
-else
   if test x"$inn_krb5_libdir" != x; then :
   KRB5_LDFLAGS="-L$inn_krb5_libdir"
 else
@@ -22601,78 +24724,15 @@ else
 fi
 fi
 fi
-     inn_krb5_header_found=false
- if test x"$inn_krb5_incroot" = x; then :
-  for ac_header in krb5.h kerberosv5/krb5.h krb5/krb5.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
- inn_krb5_header_found=true
-fi
-
-done
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5.h" >&5
-$as_echo_n "checking for krb5.h... " >&6; }
- if test -f "${inn_krb5_incroot}/krb5.h"; then :
-  inn_krb5_header_found=true
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_KRB5_H 1
-_ACEOF
-
-     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/krb5.h" >&5
-$as_echo_n "checking for kerberosv5/krb5.h... " >&6; }
- if test -f "${inn_krb5_incroot}/kerberosv5/krb5.h"; then :
-  inn_krb5_header_found=true
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_KERBEROSV5_KRB5_H 1
-_ACEOF
-
-     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5/krb5.h" >&5
-$as_echo_n "checking for krb5/krb5.h... " >&6; }
- if test -f "${inn_krb5_incroot}/krb5/krb5.h"; then :
-  inn_krb5_header_found=true
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_KRB5_KRB5_H 1
-_ACEOF
-
-     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-fi
- if test x"$inn_krb5_header_found" = xtrue; then :
-  inn_krb5_save_CPPFLAGS="$CPPFLAGS"
+     inn_krb5_save_CPPFLAGS="$CPPFLAGS"
  inn_krb5_save_LDFLAGS="$LDFLAGS"
  inn_krb5_save_LIBS="$LIBS"
  CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
  LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
  LIBS="$KRB5_LIBS $LIBS"
-     inn_krb5_extra=
-     LIBS=
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing res_search" >&5
+ inn_krb5_extra=
+ LIBS=
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing res_search" >&5
 $as_echo_n "checking for library containing res_search... " >&6; }
 if ${ac_cv_search_res_search+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -22785,7 +24845,7 @@ fi
 
 fi
 
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5
 $as_echo_n "checking for library containing gethostbyname... " >&6; }
 if ${ac_cv_search_gethostbyname+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -22841,7 +24901,7 @@ if test "$ac_res" != no; then :
 
 fi
 
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5
 $as_echo_n "checking for library containing socket... " >&6; }
 if ${ac_cv_search_socket+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -22938,7 +24998,7 @@ fi
 
 fi
 
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing crypt" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing crypt" >&5
 $as_echo_n "checking for library containing crypt... " >&6; }
 if ${ac_cv_search_crypt+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -22994,7 +25054,7 @@ if test "$ac_res" != no; then :
 
 fi
 
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing roken_concat" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing roken_concat" >&5
 $as_echo_n "checking for library containing roken_concat... " >&6; }
 if ${ac_cv_search_roken_concat+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -23050,9 +25110,9 @@ if test "$ac_res" != no; then :
 
 fi
 
-     inn_krb5_extra="$LIBS"
-     LIBS="$inn_krb5_save_LIBS"
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_init_context in -lkrb5" >&5
+ inn_krb5_extra="$LIBS"
+ LIBS="$inn_krb5_save_LIBS"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_init_context in -lkrb5" >&5
 $as_echo_n "checking for krb5_init_context in -lkrb5... " >&6; }
 if ${ac_cv_lib_krb5_krb5_init_context+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -23211,7 +25271,7 @@ fi
 
 fi
 
-             { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_setspecific in -lkrb5support" >&5
+         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_setspecific in -lkrb5support" >&5
 $as_echo_n "checking for krb5int_setspecific in -lkrb5support... " >&6; }
 if ${ac_cv_lib_krb5support_krb5int_setspecific+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -23253,7 +25313,7 @@ fi
 
 fi
 
-         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for error_message in -lcom_err" >&5
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for error_message in -lcom_err" >&5
 $as_echo_n "checking for error_message in -lcom_err... " >&6; }
 if ${ac_cv_lib_com_err_error_message+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -23293,7 +25353,7 @@ if test "x$ac_cv_lib_com_err_error_messa
   inn_krb5_extra="-lcom_err $inn_krb5_extra"
 fi
 
-         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_svc_get_msg in -lksvc" >&5
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_svc_get_msg in -lksvc" >&5
 $as_echo_n "checking for krb5_svc_get_msg in -lksvc... " >&6; }
 if ${ac_cv_lib_ksvc_krb5_svc_get_msg+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -23333,7 +25393,7 @@ if test "x$ac_cv_lib_ksvc_krb5_svc_get_m
   inn_krb5_extra="-lksvc $inn_krb5_extra"
 fi
 
-         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_hash_md5 in -lk5crypto" >&5
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_hash_md5 in -lk5crypto" >&5
 $as_echo_n "checking for krb5int_hash_md5 in -lk5crypto... " >&6; }
 if ${ac_cv_lib_k5crypto_krb5int_hash_md5+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -23373,7 +25433,7 @@ if test "x$ac_cv_lib_k5crypto_krb5int_ha
   inn_krb5_extra="-lk5crypto $inn_krb5_extra"
 fi
 
-         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for profile_get_values in -lk5profile" >&5
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for profile_get_values in -lk5profile" >&5
 $as_echo_n "checking for profile_get_values in -lk5profile... " >&6; }
 if ${ac_cv_lib_k5profile_profile_get_values+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -23413,7 +25473,7 @@ if test "x$ac_cv_lib_k5profile_profile_g
   inn_krb5_extra="-lk5profile $inn_krb5_extra"
 fi
 
-         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_cc_default in -lkrb5" >&5
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_cc_default in -lkrb5" >&5
 $as_echo_n "checking for krb5_cc_default in -lkrb5... " >&6; }
 if ${ac_cv_lib_krb5_krb5_cc_default+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -23459,8 +25519,8 @@ fi
 
 fi
 
-     LIBS="$KRB5_LIBS $LIBS"
-     for ac_func in krb5_get_error_message
+ LIBS="$KRB5_LIBS $LIBS"
+ for ac_func in krb5_get_error_message
 do :
   ac_fn_c_check_func "$LINENO" "krb5_get_error_message" "ac_cv_func_krb5_get_error_message"
 if test "x$ac_cv_func_krb5_get_error_message" = xyes; then :
@@ -23526,8 +25586,7 @@ fi
 done
 
 else
-  inn_krb5_header_found=false
-                     if test x"$inn_krb5_incroot" = x; then :
+  if test x"$inn_krb5_incroot" = x; then :
   for ac_header in et/com_err.h kerberosv5/com_err.h
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
@@ -23536,7 +25595,7 @@ if eval test \"x\$"$as_ac_Header"\" = x"
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
- inn_krb5_header_found=true
+
 fi
 
 done
@@ -23545,7 +25604,6 @@ else
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for et/com_err.h" >&5
 $as_echo_n "checking for et/com_err.h... " >&6; }
  if test -f "${inn_krb5_incroot}/et/com_err.h"; then :
-  inn_krb5_header_found=true
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_ET_COM_ERR_H 1
@@ -23553,14 +25611,14 @@ _ACEOF
 
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
+
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/com_err.h" >&5
+         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/com_err.h" >&5
 $as_echo_n "checking for kerberosv5/com_err.h... " >&6; }
  if test -f "${inn_krb5_incroot}/kerberosv5/com_err.h"; then :
-  inn_krb5_header_found=true
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_KERBEROSV5_COM_ERR_H 1
@@ -23568,16 +25626,12 @@ _ACEOF
 
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
+
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 fi
-                     if test x"$inn_krb5_header_found" != xtrue; then :
-  if test x"false" = xtrue; then :
-  as_fn_error $? "cannot find usable com_err header" "$LINENO" 5
-fi
-fi
 fi
 done
 
@@ -23590,47 +25644,7 @@ done
 fi
 done
 
-else
-  if test x"false" = xtrue; then :
-  as_fn_error $? "cannot find usable Kerberos header" "$LINENO" 5
-fi
-fi
- CPPFLAGS="$inn_krb5_save_CPPFLAGS"
- LDFLAGS="$inn_krb5_save_LDFLAGS"
- LIBS="$inn_krb5_save_LIBS"
-fi
-else
-  if test x"$inn_krb5_libdir" != x; then :
-  KRB5_LDFLAGS="-L$inn_krb5_libdir"
-else
-  if test x"$inn_krb5_root" != x; then :
-
- if test -d "$inn_krb5_root/$inn_lib_arch_name"; then :
-  if test x"" = x; then :
-  KRB5_LDFLAGS="$KRB5_LDFLAGS -L$inn_krb5_root/${inn_lib_arch_name}"
-else
-  KRB5_LDFLAGS="$KRB5_LDFLAGS -L$inn_krb5_root/${inn_lib_arch_name}/"
-fi
-else
-  if test x"" = x; then :
-  KRB5_LDFLAGS="$KRB5_LDFLAGS -L$inn_krb5_root/lib"
-else
-  KRB5_LDFLAGS="$KRB5_LDFLAGS -L$inn_krb5_root/lib/"
-fi
-fi
- KRB5_LDFLAGS=`$as_echo "$KRB5_LDFLAGS" | sed -e 's/^ *//'`
-fi
-fi
- if test x"$inn_krb5_includedir" != x; then :
-  KRB5_CPPFLAGS="-I$inn_krb5_includedir"
-else
-  if test x"$inn_krb5_root" != x; then :
-  if test x"$inn_krb5_root" != x/usr; then :
-  KRB5_CPPFLAGS="-I${inn_krb5_root}/include"
-fi
-fi
-fi
-         inn_krb5_header_found=false
+ inn_krb5_found_header=
  if test x"$inn_krb5_incroot" = x; then :
   for ac_header in krb5.h kerberosv5/krb5.h krb5/krb5.h
 do :
@@ -23640,7 +25654,7 @@ if eval test \"x\$"$as_ac_Header"\" = x"
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
- inn_krb5_header_found=true
+ inn_krb5_found_header=true
 fi
 
 done
@@ -23649,7 +25663,6 @@ else
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5.h" >&5
 $as_echo_n "checking for krb5.h... " >&6; }
  if test -f "${inn_krb5_incroot}/krb5.h"; then :
-  inn_krb5_header_found=true
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_KRB5_H 1
@@ -23657,6 +25670,7 @@ _ACEOF
 
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
+     inn_krb5_found_header=true
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
@@ -23664,7 +25678,6 @@ fi
       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/krb5.h" >&5
 $as_echo_n "checking for kerberosv5/krb5.h... " >&6; }
  if test -f "${inn_krb5_incroot}/kerberosv5/krb5.h"; then :
-  inn_krb5_header_found=true
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_KERBEROSV5_KRB5_H 1
@@ -23672,6 +25685,7 @@ _ACEOF
 
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
+     inn_krb5_found_header=true
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
@@ -23679,7 +25693,6 @@ fi
       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5/krb5.h" >&5
 $as_echo_n "checking for krb5/krb5.h... " >&6; }
  if test -f "${inn_krb5_incroot}/krb5/krb5.h"; then :
-  inn_krb5_header_found=true
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_KRB5_KRB5_H 1
@@ -23687,21 +25700,65 @@ _ACEOF
 
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
+     inn_krb5_found_header=true
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 fi
- if test x"$inn_krb5_header_found" = xtrue; then :
-  inn_krb5_save_CPPFLAGS="$CPPFLAGS"
+ if test x"$inn_krb5_found_header" = xtrue; then :
+
+else
+  KRB5_CPPFLAGS=
+     KRB5_LIBS=
+     if test x"false" = xtrue; then :
+  as_fn_error $? "cannot find usable Kerberos header" "$LINENO" 5
+fi
+fi
+ CPPFLAGS="$inn_krb5_save_CPPFLAGS"
+ LDFLAGS="$inn_krb5_save_LDFLAGS"
+ LIBS="$inn_krb5_save_LIBS"
+fi
+else
+  if test x"$inn_krb5_libdir" != x; then :
+  KRB5_LDFLAGS="-L$inn_krb5_libdir"
+else
+  if test x"$inn_krb5_root" != x; then :
+
+ if test -d "$inn_krb5_root/$inn_lib_arch_name"; then :
+  if test x"" = x; then :
+  KRB5_LDFLAGS="$KRB5_LDFLAGS -L$inn_krb5_root/${inn_lib_arch_name}"
+else
+  KRB5_LDFLAGS="$KRB5_LDFLAGS -L$inn_krb5_root/${inn_lib_arch_name}/"
+fi
+else
+  if test x"" = x; then :
+  KRB5_LDFLAGS="$KRB5_LDFLAGS -L$inn_krb5_root/lib"
+else
+  KRB5_LDFLAGS="$KRB5_LDFLAGS -L$inn_krb5_root/lib/"
+fi
+fi
+ KRB5_LDFLAGS=`$as_echo "$KRB5_LDFLAGS" | sed -e 's/^ *//'`
+fi
+fi
+ if test x"$inn_krb5_includedir" != x; then :
+  KRB5_CPPFLAGS="-I$inn_krb5_includedir"
+else
+  if test x"$inn_krb5_root" != x; then :
+  if test x"$inn_krb5_root" != x/usr; then :
+  KRB5_CPPFLAGS="-I${inn_krb5_root}/include"
+fi
+fi
+fi
+         inn_krb5_save_CPPFLAGS="$CPPFLAGS"
  inn_krb5_save_LDFLAGS="$LDFLAGS"
  inn_krb5_save_LIBS="$LIBS"
  CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
  LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
  LIBS="$KRB5_LIBS $LIBS"
-     inn_krb5_extra=
-     LIBS=
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing res_search" >&5
+ inn_krb5_extra=
+ LIBS=
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing res_search" >&5
 $as_echo_n "checking for library containing res_search... " >&6; }
 if ${ac_cv_search_res_search+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -23814,7 +25871,7 @@ fi
 
 fi
 
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5
 $as_echo_n "checking for library containing gethostbyname... " >&6; }
 if ${ac_cv_search_gethostbyname+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -23870,7 +25927,7 @@ if test "$ac_res" != no; then :
 
 fi
 
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5
 $as_echo_n "checking for library containing socket... " >&6; }
 if ${ac_cv_search_socket+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -23967,7 +26024,7 @@ fi
 
 fi
 
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing crypt" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing crypt" >&5
 $as_echo_n "checking for library containing crypt... " >&6; }
 if ${ac_cv_search_crypt+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -24023,7 +26080,7 @@ if test "$ac_res" != no; then :
 
 fi
 
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing roken_concat" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing roken_concat" >&5
 $as_echo_n "checking for library containing roken_concat... " >&6; }
 if ${ac_cv_search_roken_concat+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -24079,9 +26136,9 @@ if test "$ac_res" != no; then :
 
 fi
 
-     inn_krb5_extra="$LIBS"
-     LIBS="$inn_krb5_save_LIBS"
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_init_context in -lkrb5" >&5
+ inn_krb5_extra="$LIBS"
+ LIBS="$inn_krb5_save_LIBS"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_init_context in -lkrb5" >&5
 $as_echo_n "checking for krb5_init_context in -lkrb5... " >&6; }
 if ${ac_cv_lib_krb5_krb5_init_context+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -24240,7 +26297,7 @@ fi
 
 fi
 
-             { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_setspecific in -lkrb5support" >&5
+         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_setspecific in -lkrb5support" >&5
 $as_echo_n "checking for krb5int_setspecific in -lkrb5support... " >&6; }
 if ${ac_cv_lib_krb5support_krb5int_setspecific+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -24282,7 +26339,7 @@ fi
 
 fi
 
-         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for error_message in -lcom_err" >&5
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for error_message in -lcom_err" >&5
 $as_echo_n "checking for error_message in -lcom_err... " >&6; }
 if ${ac_cv_lib_com_err_error_message+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -24322,7 +26379,7 @@ if test "x$ac_cv_lib_com_err_error_messa
   inn_krb5_extra="-lcom_err $inn_krb5_extra"
 fi
 
-         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_svc_get_msg in -lksvc" >&5
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_svc_get_msg in -lksvc" >&5
 $as_echo_n "checking for krb5_svc_get_msg in -lksvc... " >&6; }
 if ${ac_cv_lib_ksvc_krb5_svc_get_msg+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -24362,7 +26419,7 @@ if test "x$ac_cv_lib_ksvc_krb5_svc_get_m
   inn_krb5_extra="-lksvc $inn_krb5_extra"
 fi
 
-         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_hash_md5 in -lk5crypto" >&5
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_hash_md5 in -lk5crypto" >&5
 $as_echo_n "checking for krb5int_hash_md5 in -lk5crypto... " >&6; }
 if ${ac_cv_lib_k5crypto_krb5int_hash_md5+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -24402,7 +26459,7 @@ if test "x$ac_cv_lib_k5crypto_krb5int_ha
   inn_krb5_extra="-lk5crypto $inn_krb5_extra"
 fi
 
-         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for profile_get_values in -lk5profile" >&5
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for profile_get_values in -lk5profile" >&5
 $as_echo_n "checking for profile_get_values in -lk5profile... " >&6; }
 if ${ac_cv_lib_k5profile_profile_get_values+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -24442,7 +26499,7 @@ if test "x$ac_cv_lib_k5profile_profile_g
   inn_krb5_extra="-lk5profile $inn_krb5_extra"
 fi
 
-         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_cc_default in -lkrb5" >&5
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_cc_default in -lkrb5" >&5
 $as_echo_n "checking for krb5_cc_default in -lkrb5... " >&6; }
 if ${ac_cv_lib_krb5_krb5_cc_default+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -24488,8 +26545,8 @@ fi
 
 fi
 
-     LIBS="$KRB5_LIBS $LIBS"
-     for ac_func in krb5_get_error_message
+ LIBS="$KRB5_LIBS $LIBS"
+ for ac_func in krb5_get_error_message
 do :
   ac_fn_c_check_func "$LINENO" "krb5_get_error_message" "ac_cv_func_krb5_get_error_message"
 if test "x$ac_cv_func_krb5_get_error_message" = xyes; then :
@@ -24555,8 +26612,7 @@ fi
 done
 
 else
-  inn_krb5_header_found=false
-                     if test x"$inn_krb5_incroot" = x; then :
+  if test x"$inn_krb5_incroot" = x; then :
   for ac_header in et/com_err.h kerberosv5/com_err.h
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
@@ -24565,7 +26621,7 @@ if eval test \"x\$"$as_ac_Header"\" = x"
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
- inn_krb5_header_found=true
+
 fi
 
 done
@@ -24574,7 +26630,6 @@ else
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for et/com_err.h" >&5
 $as_echo_n "checking for et/com_err.h... " >&6; }
  if test -f "${inn_krb5_incroot}/et/com_err.h"; then :
-  inn_krb5_header_found=true
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_ET_COM_ERR_H 1
@@ -24582,14 +26637,14 @@ _ACEOF
 
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
+
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/com_err.h" >&5
+         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/com_err.h" >&5
 $as_echo_n "checking for kerberosv5/com_err.h... " >&6; }
  if test -f "${inn_krb5_incroot}/kerberosv5/com_err.h"; then :
-  inn_krb5_header_found=true
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_KERBEROSV5_COM_ERR_H 1
@@ -24597,16 +26652,15 @@ _ACEOF
 
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
+
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 fi
-                     if test x"$inn_krb5_header_found" != xtrue; then :
-  if test x"false" = xtrue; then :
-  as_fn_error $? "cannot find usable com_err header" "$LINENO" 5
-fi
 fi
+done
+
 fi
 done
 
@@ -24616,11 +26670,74 @@ done
 fi
 done
 
+ inn_krb5_found_header=
+ if test x"$inn_krb5_incroot" = x; then :
+  for ac_header in krb5.h kerberosv5/krb5.h krb5/krb5.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+ inn_krb5_found_header=true
 fi
+
 done
 
 else
-  if test x"false" = xtrue; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5.h" >&5
+$as_echo_n "checking for krb5.h... " >&6; }
+ if test -f "${inn_krb5_incroot}/krb5.h"; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_KRB5_H 1
+_ACEOF
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+     inn_krb5_found_header=true
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/krb5.h" >&5
+$as_echo_n "checking for kerberosv5/krb5.h... " >&6; }
+ if test -f "${inn_krb5_incroot}/kerberosv5/krb5.h"; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_KERBEROSV5_KRB5_H 1
+_ACEOF
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+     inn_krb5_found_header=true
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5/krb5.h" >&5
+$as_echo_n "checking for krb5/krb5.h... " >&6; }
+ if test -f "${inn_krb5_incroot}/krb5/krb5.h"; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_KRB5_KRB5_H 1
+_ACEOF
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+     inn_krb5_found_header=true
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+fi
+ if test x"$inn_krb5_found_header" = xtrue; then :
+
+else
+  KRB5_CPPFLAGS=
+     KRB5_LIBS=
+     if test x"false" = xtrue; then :
   as_fn_error $? "cannot find usable Kerberos header" "$LINENO" 5
 fi
 fi
@@ -24637,7 +26754,7 @@ fi
      ;;
 esac
  :
- KRB5_CPPFLAGS_WARNINGS=`$as_echo "$KRB5_CPPFLAGS" | sed -e 's/-I/-isystem /g'`
+ KRB5_CPPFLAGS_WARNINGS=`$as_echo "$KRB5_CPPFLAGS" | sed 's/-I/-isystem /g'`
 fi
 else
   :
@@ -25768,6 +27885,13 @@ fi
 
 $as_echo "#define HAVE_SD_NOTIFY 1" >>confdefs.h
 
+else
+  case " $LIBOBJS " in
+  *" sd-daemon.$ac_objext "* ) ;;
+  *) LIBOBJS="$LIBOBJS sd-daemon.$ac_objext"
+ ;;
+esac
+
 fi
 fi
 inn_ZLIB_root=
@@ -27667,6 +29791,7 @@ else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
+#include <string.h>
 #include <sys/types.h>
 #include <sys/socket.h>
 #include <netinet/in.h>
@@ -27799,6 +29924,7 @@ else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
+#include <string.h>
 #include <sys/types.h>
 #include <sys/un.h>
 
@@ -29802,7 +31928,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_wri
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by INN $as_me 2.6.4, which was
+This file was extended by INN $as_me 2.6.5, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -29863,13 +31989,13 @@ Configuration commands:
 $config_commands
 
 Report bugs to <inn-workers@lists.isc.org>.
-INN home page: <https://www.isc.org/downloads/projects/>."
+INN home page: <https://www.isc.org/othersoftware/>."
 
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-INN config.status 2.6.4
+INN config.status 2.6.5
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff -Nurp inn-2.6.4/configure.ac inn-2.6.5/configure.ac
--- inn-2.6.4/configure.ac	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/configure.ac	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 dnl Process this file with Autoconf to produce a configure script.
-dnl $Id: configure.ac 10520 2021-01-17 21:48:06Z iulius $
 dnl
 dnl Please try to follow GNU conventions and Autoconf manual conventions as
 dnl much as possible in this file so that any macros we develop can be easily
@@ -26,12 +25,59 @@ dnl bother checking for it.  Compile-tim
 dnl useful information for someone debugging a problem than configure-time
 dnl errors.
 
-AC_INIT([INN], [2.6.4], [inn-workers@lists.isc.org],
-    [inn], [https://www.isc.org/downloads/projects/])
+AC_INIT([INN], [2.6.5], [inn-workers@lists.isc.org],
+    [inn], [https://www.isc.org/othersoftware/])
 AC_PREREQ([2.64])
-AC_REVISION([$Revision: 10520 $])
 AC_CONFIG_AUX_DIR([support])
 
+dnl Mention dependencies at the beginning of the configure output so that
+dnl people do not waste too much time finding the right packages to install.
+AC_MSG_NOTICE([Building INN requires the following dependencies to be met,
+besides a working compiler, a POSIX shell and GNU make, as well as Autoconf
+if you're bootstrapping the source code.
+---
+The names of the deb and rpm packages are given to help you find them quicker.
+---
+Mandatory (deb / rpm):
+- bison, flex / byacc, flex (for the innfeed build, if bootstrapping the source
+  code)
+- perl / perl (for various mandatory Perl scripts)
+- default-mta / postfix (or any specific MTA, for moderated newsgroups)
+---
+Optional (deb / rpm):
+- libdb-dev / libdb-devel (--with-bdb for ovdb overview)
+- libkrb5-dev / krb5-devel (--with-krb5 for a Kerberos v5 authenticator)
+- libssl-dev / openssl-devel (--with-openssl for TLS support for readers)
+- libperl-dev / perl-devel, perl-ExtUtils-Embed (--with-perl for Perl-based
+  spam filtering and authentication)
+- python3-dev, python3 / python3-devel, python3 (--with-python for Python-based
+  spam filtering and authentication)
+- libsasl2-dev / cyrus-sasl-devel (--with-sasl for SASL authentication support)
+- zlib1g-dev / zlib-devel (--with-zlib for compressed ovdb, and the COMPRESS
+  command for readers)
+- libpam0g-dev / pam-devel (for PAM authentication support)
+- libsystemd-dev, pkg-config / systemd-devel, pkg-config (for systemd
+  notifications and socket activation)
+---
+Though not mandatory for the build, the following packages should be installed
+if you plan on using the provided features (configure will properly sets their
+path in a few variables used by INN):
+- gnupg / gnupg2 (for the verification of the signatures of control articles
+  and NoCeM notices)
+- uucp / uucp (for the exchange of news articles with send-uucp)
+- various wide-spread programs like a modern awk implementation, grep, gzip
+  (and eventually bzip2 and compress if you want to use other compression
+  methods with send-uucp or rnews), sed and sort, probably already installed
+  on your system, and used by INN in several scripts
+---
+Though not mandatory for the build, the following packages will also be useful:
+- libgd-perl / perl-GD (for pictures in HTML daily Usenet reports)
+- libmime-tools-perl / perl-MIME-tools (for the decoding of control articles
+  by controlchan)
+- cron and syslog, probably already installed on your system
+---
+Happy building!])
+
 dnl Ignore Automake conditionals (called in a few m4 macros) as INN does not
 dnl uses Automake yet.
 m4_define_default([AM_CONDITIONAL], [:])
diff -Nurp inn-2.6.4/contrib/Makefile inn-2.6.5/contrib/Makefile
--- inn-2.6.4/contrib/Makefile	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/contrib/Makefile	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: Makefile 9770 2014-12-14 20:55:09Z iulius $
-##
 ##  There are no installation rules or other top-level rules for this
 ##  directory as it's not properly part of INN.  Installation should be
 ##  done by the user by hand for those files that they're interested in.
diff -Nurp inn-2.6.4/contrib/archivegz.in inn-2.6.5/contrib/archivegz.in
--- inn-2.6.4/contrib/archivegz.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/contrib/archivegz.in	2022-02-18 20:36:57.000000000 +0100
@@ -5,9 +5,6 @@
 # Filename: archivegz.pl
 # Author: Stephen M. Benoit (benoits@servicepro.com)
 # Created: Wed Apr 14 13:56:01 1999
-# Version: $Id: archivegz.in 4329 2001-01-14 13:47:52Z rra $
-#
-$RCSID='$Id: archivegz.in 4329 2001-01-14 13:47:52Z rra $ ';
 
 # Specify command line options, and decode the command line.
 
@@ -16,7 +13,6 @@ require 'newusage.pl';
 @opts =
   (
    "help|usage;;print this message",
-   "version;;print version",
    "a=s;;directory to archive in instead of the default",
    "f;;directory names will be flattened out",
    "i=s;;append one line to the index file for each article (Destination name, Message ID, Subject)",
@@ -42,7 +38,6 @@ if ($badarg || $badopt || $opt_help)
     &NUsage($0,0,'',@opts);
     exit ($badopt||$badarg);
   } 
-if ($opt_version) {print STDERR "$RCSID\n"; exit 0}
 
 # --------------------------------------------------------------------
 
diff -Nurp inn-2.6.4/contrib/auth_pass.c inn-2.6.5/contrib/auth_pass.c
--- inn-2.6.4/contrib/auth_pass.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/contrib/auth_pass.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- *      auth_pass.c  ( $Revision: 9701 $ )
+ *      auth_pass.c
  *
  * Abstract: 
  *
@@ -8,7 +8,7 @@
  *	(supplied either as arguments or as responses to prompts) and
  *	validates them against the contents of the password database.  
  *
- *	If the user properly authenticates themselves, a nnrp.auth style
+ *	If the user properly authenticates themselves, an nnrp.auth style
  *	record indicating the user's authenticated login and permitting
  *	reading and posting to all groups is output on stderr (for reading by
  *	nnrpd) and the program exits with a 0 status.  If the user fails to
diff -Nurp inn-2.6.4/contrib/innreport-filter.xslt inn-2.6.5/contrib/innreport-filter.xslt
--- inn-2.6.4/contrib/innreport-filter.xslt	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/contrib/innreport-filter.xslt	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
 <!--
-   - $Id: innreport-filter.xslt 8172 2008-11-17 19:49:40Z iulius $
-   -
    - This is a filter to copy individual sections from innreport's HTML
    - files.  Actually only news.notice.* files are changed, index.html
    - is not modified.
diff -Nurp inn-2.6.4/contrib/mlockfile.c inn-2.6.5/contrib/mlockfile.c
--- inn-2.6.4/contrib/mlockfile.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/contrib/mlockfile.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-/* $Id: mlockfile.c 10018 2016-05-05 12:45:13Z iulius $ */
-
 /* Locks the files given on the command line into memory using mlock.
    This code has only been tested on Solaris and may not work on other
    platforms.
diff -Nurp inn-2.6.4/contrib/nnrp.access2readers.conf.in inn-2.6.5/contrib/nnrp.access2readers.conf.in
--- inn-2.6.4/contrib/nnrp.access2readers.conf.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/contrib/nnrp.access2readers.conf.in	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,5 @@
 #! /usr/bin/perl -w
 
-##  $Id: nnrp.access2readers.conf.in 9772 2014-12-16 20:46:02Z iulius $
-##
 ##  Convert an old-style nnrp.access file to readers.conf format.
 ##  (readers.conf replaced nnrp.access, starting with INN 2.3.0.)
 ##
diff -Nurp inn-2.6.4/contrib/sample.init.script inn-2.6.5/contrib/sample.init.script
--- inn-2.6.4/contrib/sample.init.script	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/contrib/sample.init.script	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,5 @@
 #! /bin/sh
 
-# $Id: sample.init.script 10148 2017-06-05 12:24:07Z iulius $
-#
 # This is a simple, bare-bones example of a SysV-style init.d script for INN.
 # It tries to increase the file descriptor limits to the maximum allowed by
 # the system since INN and related programs can be file descriptor hogs.
@@ -28,6 +26,8 @@ stop)
     # Stop possible other nnrpd daemons.  One of the two following commands is enough.
     #start-stop-daemon --stop --name nnrpd --quiet --oknodo
     #su news -s /bin/sh -c 'killall nnrpd' >> <pathlog>/rc.news 2>&1
+    # Clean the PID file of the nnrpd daemon we started on port 563.
+    #rm -f <pathrun>/nnrpd-563.pid
     ;;
 
 reload|force-reload)
diff -Nurp inn-2.6.4/contrib/sample.init.systemd inn-2.6.5/contrib/sample.init.systemd
--- inn-2.6.4/contrib/sample.init.systemd	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/contrib/sample.init.systemd	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,5 @@
-# $Id: sample.init.systemd 10507 2021-01-11 21:55:08Z iulius $
-#
 # This is a simple, bare-bones example of a systemd-style init script for INN.
-#
+
 [Unit]
 Description=InterNetNews News Server
 Documentation=https://www.eyrie.org/~eagle/software/inn/
diff -Nurp inn-2.6.4/contrib/thdexpire.in inn-2.6.5/contrib/thdexpire.in
--- inn-2.6.4/contrib/thdexpire.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/contrib/thdexpire.in	2022-02-18 20:36:57.000000000 +0100
@@ -1,8 +1,6 @@
 #! /usr/bin/perl -w
 # fixscript will replace this line with code to load INN::Config
 
-$ID='$Id: thdexpire.in 9408 2012-05-28 18:42:29Z iulius $$';
-
 use POSIX ":fcntl_h";
 use SDBM_File;
 use Getopt::Std;
@@ -266,14 +264,13 @@ $opt_M=0;      # install man page
 getopts("rt:f:i:m:x:Nv:M");
 
 $sfile="$INN::Config::pathdb/thdexpstat";
-$ID=~/ ([^,]+,v [^ ]+)/; $ID=$1;
 
 if ($opt_M) {
     print "Installing thdexpire(8) man page\n";
     $0=~m:^(.*)/([^/]+)$:;
     chdir $1 || die "chdir $1";
     exec "pod2man --section=8 --center='Contributed News Software'" .
-      " --release='$ID' $2 >$INN::Config::pathnews/man/man8/thdexpire.8";
+      " --release='$INN::Config::version' $2 >$INN::Config::pathnews/man/man8/thdexpire.8";
 }
 
 if ($opt_r) {
@@ -289,7 +286,7 @@ INN::Utils::Shlock::lock($lockfile, 5) o
 tie(%S, SDBM_File, $sfile, O_RDWR|O_CREAT, 0664) || die "open $sfile: $!";
 $SIG{'TERM'}=$SIG{'INT'}='finish';
 $|=1;
-printf "%s starting at %s\n", $ID, &wtime(time) if ($opt_v>0);
+printf "starting at %s\n", &wtime(time) if ($opt_v>0);
 
 undef @c;
 $NOW=time; $ac=$cc=0;
@@ -307,7 +304,6 @@ foreach $c (@classes) {
 
 $S{"classes"}=join(",", @classes);
 $S{"inittime"}=time;
-$S{"ID"}=$ID;
 printf "Checked %d articles, %d CAFs in %d seconds\n", $ac, $cc, time-$NOW
   if ($ac+$cc>0 && $opt_v>0);
 
@@ -606,7 +602,6 @@ sub report
 	print "Not initialized.\n";
 	return;
     }
-    printf "Version: %s (this: %s)\n", $S{"ID"}, $ID;
     printf "Started at: %s\n", &xtime($S{"inittime"}) if ($S{"inittime"});
     printf "Last run: %s\n", &xtime($S{"lastrun"}) if ($S{"lastrun"});
     printf "Classes: %s\n", $cc;
diff -Nurp inn-2.6.4/contrib/tunefeed.in inn-2.6.5/contrib/tunefeed.in
--- inn-2.6.4/contrib/tunefeed.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/contrib/tunefeed.in	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,5 @@
 #!/usr/bin/perl
-$version = q$Id: tunefeed.in 9767 2014-12-07 21:13:43Z iulius $;
+$version = '1.0';
 #
 # tunefeed -- Compare active files with a remote site to tune a feed.
 #             Copyright 1998 by Russ Allbery <eagle@eyrie.org>
diff -Nurp inn-2.6.4/control/Makefile inn-2.6.5/control/Makefile
--- inn-2.6.4/control/Makefile	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/control/Makefile	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: Makefile 8247 2008-12-21 22:28:19Z iulius $
-
 include ../Makefile.global
 
 top	      = ..
diff -Nurp inn-2.6.4/control/controlchan.in inn-2.6.5/control/controlchan.in
--- inn-2.6.4/control/controlchan.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/control/controlchan.in	2022-02-18 20:36:57.000000000 +0100
@@ -1,8 +1,6 @@
 #! /usr/bin/perl -w
 # fixscript will replace this line with code to load INN::Config
 
-##  $Id: controlchan.in 10076 2016-10-08 20:37:36Z iulius $
-##
 ##  Channel feed program to route control messages to an appropriate handler.
 ##
 ##  Copyright 2001 by Marco d'Itri <md@linux.it>
@@ -54,7 +52,7 @@ END {
 my $usage = "usage: $0 [-ch]\n\n" .
     "Reads stdin for file names or tokens.\n\n" .
     "  -c   Disables cutoff on dates.\n" .
-    "  -h   Giveis this usage information.\n";
+    "  -h   Gives this usage information.\n";
 
 my %opt;
 getopts("ch", \%opt) || die $usage;
diff -Nurp inn-2.6.4/control/docheckgroups.in inn-2.6.5/control/docheckgroups.in
--- inn-2.6.4/control/docheckgroups.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/control/docheckgroups.in	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,6 @@
 #! /bin/sh
 # fixscript will replace this line with code to load innshellvars
 
-##  $Id: docheckgroups.in 9343 2011-08-16 14:28:07Z iulius $
 ##  Script to execute checkgroups text; results to stdout.
 ##
 ##  Usage: docheckgroups [-u] [include-pattern [exclude-pattern]] < message
diff -Nurp inn-2.6.4/control/modules/checkgroups.pl inn-2.6.5/control/modules/checkgroups.pl
--- inn-2.6.4/control/modules/checkgroups.pl	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/control/modules/checkgroups.pl	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: checkgroups.pl 8550 2009-07-18 13:07:05Z iulius $
-##
 ##  checkgroups control message handler.
 ##
 ##  Copyright 2001 by Marco d'Itri <md@linux.it>
diff -Nurp inn-2.6.4/control/modules/ihave.pl inn-2.6.5/control/modules/ihave.pl
--- inn-2.6.4/control/modules/ihave.pl	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/control/modules/ihave.pl	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: ihave.pl 8285 2009-01-11 12:06:55Z iulius $
-##
 ##  ihave control message handler.
 ##
 ##  Copyright 2001 by Marco d'Itri <md@linux.it>
diff -Nurp inn-2.6.4/control/modules/newgroup.pl inn-2.6.5/control/modules/newgroup.pl
--- inn-2.6.4/control/modules/newgroup.pl	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/control/modules/newgroup.pl	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: newgroup.pl 9303 2011-08-04 22:09:57Z iulius $
-##
 ##  newgroup control message handler.
 ##
 ##  Copyright 2001 by Marco d'Itri <md@linux.it>
diff -Nurp inn-2.6.4/control/modules/rmgroup.pl inn-2.6.5/control/modules/rmgroup.pl
--- inn-2.6.4/control/modules/rmgroup.pl	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/control/modules/rmgroup.pl	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: rmgroup.pl 9303 2011-08-04 22:09:57Z iulius $
-##
 ##  rmgroup control message handler.
 ##
 ##  Copyright 2001 by Marco d'Itri <md@linux.it>
diff -Nurp inn-2.6.4/control/modules/sendme.pl inn-2.6.5/control/modules/sendme.pl
--- inn-2.6.4/control/modules/sendme.pl	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/control/modules/sendme.pl	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: sendme.pl 8281 2009-01-10 11:52:16Z iulius $
-##
 ##  sendme control message handler.
 ##
 ##  Copyright 2001 by Marco d'Itri <md@linux.it>
diff -Nurp inn-2.6.4/control/modules/sendsys.pl inn-2.6.5/control/modules/sendsys.pl
--- inn-2.6.4/control/modules/sendsys.pl	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/control/modules/sendsys.pl	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: sendsys.pl 8285 2009-01-11 12:06:55Z iulius $
-##
 ##  sendsys control message handler.
 ##
 ##  Copyright 2001 by Marco d'Itri <md@linux.it>
diff -Nurp inn-2.6.4/control/modules/senduuname.pl inn-2.6.5/control/modules/senduuname.pl
--- inn-2.6.4/control/modules/senduuname.pl	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/control/modules/senduuname.pl	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: senduuname.pl 8281 2009-01-10 11:52:16Z iulius $
-##
 ##  senduuname control message handler.
 ##
 ##  Copyright 2001 by Marco d'Itri <md@linux.it>
diff -Nurp inn-2.6.4/control/modules/version.pl inn-2.6.5/control/modules/version.pl
--- inn-2.6.4/control/modules/version.pl	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/control/modules/version.pl	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: version.pl 8281 2009-01-10 11:52:16Z iulius $
-##
 ##  version control message handler.
 ##
 ##  Copyright 2001 by Marco d'Itri <md@linux.it>
diff -Nurp inn-2.6.4/control/perl-nocem.in inn-2.6.5/control/perl-nocem.in
--- inn-2.6.4/control/perl-nocem.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/control/perl-nocem.in	2022-02-18 20:36:57.000000000 +0100
@@ -512,7 +512,7 @@ perl-nocem - A NoCeM-on-spool implementa
 
 =head1 SYNOPSIS
 
-perl-nocem
+B<perl-nocem>
 
 =head1 DESCRIPTION
 
@@ -537,31 +537,39 @@ Processing NoCeM notices is easy to set
 
 =item 1.
 
-Import the keys of the NoCeM issuers you trust in order to check
-the authenticity of their notices.  You can do:
+If not already done, install GnuPG, or an equivalent implementation of the
+OpenPGP standard, to be able to verify the signature of NoCeM notices.
+It will provide the B<gpg> and B<gpgv> programs.  If GnuPG was already
+installed when INN was configured, then the paths to these programs were taken
+into account.  Otherwise, you have to set the C<$gpg> and C<$gpgv> variables
+in I<pathlib>/perl/INN/Config.pm to the paths to these programs.
+
+All still active NoCeM issuers use rather modern PGP keys accepted by both
+GnuPG 1.x and 2.x versions.  It is no longer needed to explicitly use B<gpg1>
+to process NoCeM notices.
 
-    gpg1 --no-default-keyring --primary-keyring <pathetc>/pgp/ncmring.gpg \
-         --no-options --allow-non-selfsigned-uid --no-permission-warning \
-         --batch --import <key-file>
+=item 2.
+
+Import the keys of the NoCeM issuers you trust in order to check the
+authenticity of their notices.  You can run the following command:
+
+    gpg --no-default-keyring --allow-non-selfsigned-uid \
+        --primary-keyring <pathetc>/pgp/ncmring.gpg --no-options \
+        --no-permission-warning --batch --import <key-file>
     chmod 644 <pathetc>/pgp/ncmring.gpg
 
-where <pathetc> is the value of the I<pathetc> parameter set in
-F<inn.conf> and <key-file> the file containing the key(s) to import.
-The keyring must be located in <pathetc>/pgp/ncmring.gpg; you only
-have to create the directory <pathetc>/pgp before using B<gpg> (it will
-automatically generate the F<ncmring.gpg> file) and make sure the news
-user can read this file, once generated.
-
-As a few NoCeM issuers are still using old PGP-generated keys, you
-may have to use B<gpg1> with various legacy options in command-line
-(like in the example above) instead of more recent versions of B<gpg>
-that no longer accept such keys.
-
-The keys of NoCeM issuers can be found in the web site of I<The NoCeM Registry>:
-L<http://rosalind.home.xs4all.nl/nocemreg/nocemreg.html>.  You can even
-download there a unique file which contains all the keys.
+where <pathetc> is the value of the I<pathetc> parameter set in F<inn.conf>
+and <key-file> the file containing the key(s) to import.  The keyring must
+be located in F<< <pathetc>/pgp/ncmring.gpg >>; you only have to create the
+directory F<< <pathetc>/pgp >> before using B<gpg> (it will automatically
+generate the F<ncmring.gpg> file) and make sure the news user can read this
+file, once generated.
+
+The keys of NoCeM issuers can be found in the web site of I<The NoCeM
+Registry>:  L<http://rosalind.home.xs4all.nl/nocemreg/nocemreg.html>.
+You can even download there a unique file which contains all the keys.
 
-=item 2.
+=item 3.
 
 Create a F<nocem.ctl> config file in I<pathetc> indicating the NoCeM issuers
 and notices you want to follow.  This permission file contains lines like:
@@ -570,30 +578,35 @@ and notices you want to follow.  This pe
     pgpmoose@killfile.org:pgpmoose-forged-moderation
 
 This will remove all articles for which the issuer (first part of the line,
-before the colon C<:>) has issued NoCeM notices corresponding to the
-criteria specified after the colon.
+before the colon C<:>) has issued NoCeM notices corresponding to the criteria
+specified after the colon.  Usually, you just keep the lines corresponding to
+the keys previously installed.
+
+You will also find information about that on the web site of I<The NoCeM
+Registry>.  Note that INN is shipped with an up-to-date F<nocem.ctl> file
+already configured with the current NoCeM issuers.  (Only the keys installed
+at the previous step are not included, so as to leave you the choice of whom
+to trust, and download the most recent ones, in case they have changed.)
 
-You will also find information about that on the web site of
-I<The NoCeM Registry>.
-
-=item 3.
+=item 4.
 
 Add to the F<newsfeeds> file an entry like this one in order to feed
 B<perl-nocem> the NoCeM notices posted to alt.nocem.misc and
-news.lists.filters:
+news.lists.filters, the usual groups where notices are sent:
 
     nocem!\
         :!*,alt.nocem.misc,news.lists.filters\
         :Tc,Wf,Ap:<pathbin>/perl-nocem
 
-with the correct path to B<perl-nocem>, located in <pathbin>.  Then, reload
-the F<newsfeeds> file (C<ctlinnd reload newsfeeds 'NoCeM channel feed'>).
+with the correct path to B<perl-nocem>, located in <pathbin>.  Then, run
+C<inncheck> to ensure the syntax of the modified F<newsfeeds> file is correct,
+and reload it (via C<ctlinnd reload newsfeeds 'NoCeM channel feed'>).
 
 Note that you should at least carry news.lists.filters on your news
 server (or other newsgroups where NoCeM notices are sent) if you wish
 to process them.
 
-=item 4.
+=item 5.
 
 Everything should now work.  However, do not hesitate to manually test
 B<perl-nocem> with a NoCeM notice, using:
@@ -631,11 +644,11 @@ The keyring which contains the public ke
 
 =head1 BUGS
 
-The Subject: header is not checked for the @@NCM string and there is no
-check for the presence of the References: header.
+The Subject header field body is not checked for the C<@@NCM> string and
+there is no check for the presence of the References header field.
 
-The Newsgroups: pseudo header is not checked, but this can be done in
-local_want_cancel_id().
+The Newsgroups pseudo header field body is not checked, but this can
+be done in C<local_want_cancel_id()>.
 
 The Hierarchies: header is ignored.
 
@@ -645,8 +658,6 @@ Copyright 2000 by Miquel van Smoorenburg
 
 Copyright 2001 by Marco d'Itri <md@linux.it>.
 
-$Id: perl-nocem.in 10399 2020-11-12 20:24:35Z iulius $
-
 =head1 SEE ALSO
 
 gpg(1), gpgv(1), grephistory(1), inn.conf(5), newsfeeds(5), pgp(1).
diff -Nurp inn-2.6.4/doc/FAQ inn-2.6.5/doc/FAQ
--- inn-2.6.4/doc/FAQ	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/FAQ	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-$Id: FAQ 10537 2021-01-21 21:37:04Z iulius $
-
 From: Russ Allbery <eagle@eyrie.org>
 Subject: INN 2.x FAQ
 Newsgroups: news.software.nntp
@@ -90,6 +88,7 @@ Subject: Contents
     6.11. Hide the Injection-Info header
     6.12. Run innd and nnrpd on separate ports
     6.13. Back up and restore an INN installation
+    6.14. Find external feeds and set up peering
 
 (Note that some numbers have been skipped.  When questions are removed,
 the remaining questions are not renumbered to avoid breaking links in
@@ -139,7 +138,7 @@ beginner's introduction, see the news.ne
 
 Subject: 1.2. What is the current version?
 
-The most recently released version of INN is 2.6.4.
+The most recently released version of INN is 2.6.5.
 
 INN development proceeds in two branches, as with many other free software
 projects.  The STABLE branch is maintenance of the most recently released
@@ -163,11 +162,13 @@ The download site for INN is <https://ft
 directory are the various releases of INN, some additional documentation
 (particularly of security holes), the original INN Usenix paper.
 
-There is also a snapshots subdirectory, in which you will find daily
-snapshots of the INN Subversion repository for the last seven days.  The
-snapshots with STABLE in the name are the latest versions of the STABLE
-branch and may have some additional bug fixes over the current released
-version.  The snapshots with CURRENT in the name are of the current
+There is also a snapshots subdirectory, in which you will find two sets
+of snapshots: ones at the top level, which are updated only when the
+code changes, and ones in the daily subdirectory, which are generated
+every day and retained for seven days.  The daily snapshots with
+STABLE in the name are the latest versions of the STABLE branch and
+may have some additional bug fixes over the current released version.
+The daily snapshots with CURRENT in the name are of the current
 development version.
 
 Please note:  There is no guarantee that a snapshot will even compile, let
@@ -244,10 +245,11 @@ Subject: 1.6. What mailing lists are the
 There are several INN-related mailing lists:
 
 inn-announce@lists.isc.org
-    Where announcements about INN are set (no posting allowed).
+    Where announcements about INN are sent (only maintainers may post).
 
 inn-workers@lists.isc.org
-    Discussion of INN development.  It is also where to send bug reports
+    Discussion of INN development.  If you prefer not to use GitHub to
+    create an issue or a pull request, it is also where to send bug reports
     and patches for consideration for inclusion into INN (postings by
     members only).  If you're an INN expert and have the time to help out
     other users, we encourage you to join this mailing list to answer
@@ -255,13 +257,14 @@ inn-workers@lists.isc.org
     news.software.nntp, which gets a lot of INN-related questions.)
 
 inn-committers@lists.isc.org
-    Subversion commit messages for INN are sent to this list (only the
+    Git commit messages for INN are sent to this list (only the
     automated messages are sent here, no regular posting).
 
 inn-bugs@lists.isc.org
-    Trac tickets for INN are sent to this list (only the automated
-    messages are sent here, no regular posting).  Bug reports should be
-    sent to the inn-workers mailing list.
+    This list used to receive Trac issues for INN, before the migration to
+    GitHub (only the automated messages were sent here, no regular
+    posting).  Bug reports should be sent to the inn-workers mailing list,
+    or a GitHub issue created.
 
 To join these lists, send a subscription request to the `-request'
 address.  The addresses for the above lists are:
@@ -271,11 +274,19 @@ address.  The addresses for the above li
     inn-committers-request@lists.isc.org
     inn-bugs-request@lists.isc.org
 
+You can alternatively join them from the subscription form in their public
+web pages:
+
+    <https://lists.isc.org/mailman/listinfo/inn-announce>
+    <https://lists.isc.org/mailman/listinfo/inn-workers>
+    <https://lists.isc.org/mailman/listinfo/inn-committers>
+    <https://lists.isc.org/mailman/listinfo/inn-bugs>
+
 inn-workers tends to be moderate volume (3-5 messages a day, but varying a
-lot depending on what's being discussed).  inn-bugs and inn-committers are
-occasionally higher volume but entirely automatically generated Trac
-or Subversion notifications.  inn-announce is a low-volume moderated list
-containing only major announcements.
+lot depending on what's being discussed).  inn-committers is occasionally
+higher volume but entirely automatically generated GitHub push
+notifications.  inn-announce is a low-volume moderated list containing
+only major announcements.  inn-bugs no longer has any activity.
 
 ------------------------------
 
@@ -331,25 +342,25 @@ takes place.  The traffic isn't that hig
 
 Next, download a snapshot of the INN CURRENT branch as described above so
 that you have a relatively current source base to work from.  You may want
-to check out the current source from Subversion; just point a Subversion
+to check out or clone the current source from GitHub; just point a Git
 client at:
 
-    https://inn.eyrie.org/svn/
+    https://github.com/InterNetNews/inn.git
 
-This repository is a read-only mirror that can lag up to an hour behind
-the working repository.  Read the HACKING file at the top of the INN
-source tree for some general information and tips for working on INN.
+Read the HACKING file at the top of the INN source tree for some general
+information and tips for working on INN.
 
 Then pick something that looks interesting to you, mention what you're
 doing on inn-workers if it's likely to affect other parts of the
-development, and have at it!  The TODO file in the CURRENT tree has a
-pretty comprehensive list of things that could be done.  Best to start
-with something small (getting INN to work correctly on a platform where it
-doesn't currently and which you have available is often a great start, or
-working on one of the supporting programs or scripts that's a bit easier
-to wrap one's mind around than the core INN daemons).  Patches to INN
-should be sent to inn-workers@lists.isc.org, or put on an ftp or web site
-somewhere and the URL sent to inn-workers if they're extremely large.
+development, and have at it!  The GitHub bug tracker and the TODO file in
+the CURRENT tree have a pretty comprehensive list of things that could be
+done.  Best to start with something small (getting INN to work correctly
+on a platform where it doesn't currently and which you have available is
+often a great start, or working on one of the supporting programs or
+scripts that's a bit easier to wrap one's mind around than the core INN
+daemons).  Patches to INN should either be submitted as a pull request on
+GitHub or sent to inn-workers@lists.isc.org, possibly put on an ftp or web
+site somewhere and the URL sent to inn-workers if they're extremely large.
 
 ------------------------------
 
@@ -1139,6 +1150,14 @@ articles older than artcutoff in inn.con
     ctlinnd perl n
     ctlinnd python n
 
+Note that rejected articles are remembered during the number of days
+specified by the /remember/ line in expire.ctl; so, in case you forgot
+to change the above parameters, you'll have to wait that number of
+days before being able to inject them again.  You can of course set
+/remember/ to 0, run the expire process (for instance via news.daily
+called with the same parameters as in crontab, plus "notdaily"),
+undo the change in expire.ctl and then start the feed again.
+
 You may also want to set xrefslave to true in inn.conf and then restart
 INN on the new server if you want to keep the same article numbers as you
 had on the old server.  (It is notably helpful for news clients because
@@ -1531,3 +1550,17 @@ the $pathdb directory and run:
     makedbz -s `wc -l < history` -o
 
 You should now be able to start the server and read and post news to it.
+
+------------------------------
+
+Subject: 6.14. Find external feeds and set up peering
+
+You can ask for an external feed in the news.admin.peering newsgroup.
+Several news administrators will certainly respond and gracefully provide
+you with a news feed.  And why not keep subscribed to this newsgroup to
+help others find a news feed once you get yours?
+
+You then have to parameter the NNTP feed in incoming.conf, newsfeeds and
+innfeed.conf (assuming you'll use innfeed, the most common way to feed
+articles).  Follow the examples in the man pages of these configuration
+files.
diff -Nurp inn-2.6.4/doc/IPv6-info inn-2.6.5/doc/IPv6-info
--- inn-2.6.4/doc/IPv6-info	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/IPv6-info	2022-02-18 20:36:57.000000000 +0100
@@ -1,6 +1,6 @@
 Notes about IPv6 support in INN:
 
-   This is $Revision: 9694 $, dated $Date: 2014-09-17 13:55:11 -0700 (Wed, 17 Sep 2014) $.
+   These notes were last updated on 2014-09-17.
 
    Note that starting from INN 2.6.0, IPv6 is unconditionally enabled, when
    available.  The --enable-ipv6 configure flag no longer exists.
diff -Nurp inn-2.6.4/doc/Makefile inn-2.6.5/doc/Makefile
--- inn-2.6.4/doc/Makefile	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/Makefile	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: Makefile 9081 2010-07-03 17:16:54Z eagle $
-##
 ##  The only target that this Makefile need support is install.  Everything
 ##  else is a null target (and the top level Makefile shouldn't even attempt
 ##  them in this directory).
diff -Nurp inn-2.6.4/doc/checklist inn-2.6.5/doc/checklist
--- inn-2.6.4/doc/checklist	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/checklist	2022-02-18 20:36:57.000000000 +0100
@@ -1,13 +1,22 @@
 Introduction
 
-    $Id: checklist.pod 10283 2018-05-14 12:43:05Z iulius $
+    This is an installation checklist initially written by Rebecca Ore,
+    intended to be the beginning of a different presentation of the
+    information in INSTALL, since getting started with installing INN can be
+    complex.  Further clarifications, updates, and expansion are welcome.
+
+    This checklist explains the steps to follow for a standard installation
+    with reasonable defaults.
+
+    The first part of this documentation can be skipped if INN is already
+    installed on your system.  Some distributions provide a package, which
+    should be used in preference of building from stratch.
 
-    This is an installation checklist written by Rebecca Ore, intended to be
-    the beginning of a different presentation of the information in INSTALL,
-    since getting started with installing INN can be complex.  Further
-    clarifications, updates, and expansion are welcome.
+Compile (when installing from scratch)
 
-Setup
+    *   Download the INN tarball and unpack.  Make sure that you download
+        the last release from <https://ftp.isc.org/isc/inn/> or a snapshot
+        from <https://ftp.isc.org/isc/inn/snapshots/>.
 
     *   Make sure there is a "news" user (and a "news" group to which the
         "news" user belongs).  If necessary, you can use:
@@ -15,57 +24,8 @@ Setup
             adduser --group --home /usr/local/news news
 
         where /usr/local/news is the home directory for the "news" user. 
-        This directory will be passed to configure via the --prefix option. 
-        It will also be set as *pathnews* in inn.conf.
-
-    *   Create a local mail alias for "usenet" (editing your aliases file
-        for instance).
-
-    *   Make sure the directory /usr/local/news and its subdirectories are
-        owned by "news", group "news".
-
-        You want to be careful that things in that directory stay owned by
-        "news" -- but you can't just "chown -R news:news" after the install,
-        because you may have binaries that are SUID root.  You can do the
-        build as any user, but you need to be root when doing "make install"
-        so as to set the permissions correctly.  After that point, though,
-        you may want to "su news -s /bin/sh" to avoid creating any files as
-        root.  (For routine maintenance once INN is working, you can
-        generally be root.  However, it is always better to be accustomed to
-        doing that as the news user.)
-
-    *   If necessary, add ~news/bin (that is to say *pathbin*) to the news
-        user's path and ~news/share/man (that is to say
-        *pathnews*/share/man) to the news user's MANPATH in your shell
-        config files.  (You may want to do this, especially the second part,
-        on your regular account; the man pages are very useful.)
-
-        You can do this now or later, but you will certainly want the man
-        pages to help with configuring INN.
-
-        For bash, try:
-
-            PATH=<pathbin in inn.conf>:$PATH
-            export PATH
-            MANPATH=<pathnews in inn.conf>/share/man:$MANPATH
-            export MANPATH
-
-        or csh:
-
-            setenv PATH <pathbin in inn.conf>:$PATH
-            setenv MANPATH <pathnews in inn.conf>/share/man:$MANPATH
-
-        although if you don't already have MANPATH set, the above may give
-        an error or override your defaults (making it so you can only read
-        the news man pages); if "echo $MANPATH" does not give some
-        reasonable path, you'll need to look up what the default is for your
-        system (such as /usr/man or /usr/share/man).
-
-Compile
-
-    *   Download the INN tarball and unpack.  Make sure that you download
-        the last release from <https://ftp.isc.org/isc/inn/> or a snapshot
-        from <https://ftp.isc.org/isc/inn/snapshots/>.
+        This directory will be passed to "configure" via the --prefix
+        option.  It will also be set as *pathnews* in inn.conf.
 
     *   Work out configure options ("./configure --help" for a list).  If
         you aren't working out of /usr/local/news, or want to put some files
@@ -73,69 +33,79 @@ Compile
         in *pathnews* in inn.conf if you change your mind).  By default,
         --prefix=/usr/local/news is used.
 
-        You probably want --with-perl.  If you're not using NetBSD with
-        cycbuffs or OpenBSD, perhaps --with-tagged-hash.  You might want to
-        compile in TLS/SSL and Berkeley DB, if your system supports them. 
-        You will need to have the relevant external libraries to compile
-        (depending on whether you use OpenSSL for TLS/SSL access to your
-        news server, GnuPG to verify the authenticity of Usenet control
-        messages, Perl, Python, etc.).
+        You probably want --with-perl.  You might want to compile in TLS
+        support.  You will need to have the relevant external libraries to
+        compile (depending on whether you use OpenSSL for TLS access to your
+        news server, Perl and/or Python for spam and abuse filtering, etc.)
+        and to correctly set the right paths to external programs (like for
+        GnuPG to verify the authenticity of Usenet control messages).
 
-            ./configure --with-perl ...
+            ./configure --with-perl --with-openssl ...
             make
 
             su
             make install
 
-        (If you do the last step as root, all of the ownerships and
-        permissions will be correct.)
-
         Note that if you update a previous installation of INN, you should
         use "make update" instead of "make install" to keep your
         configuration files.
 
-        If you wish to use TLS/SSL, you can use "make cert" to generate a
-        certificate and a private key.
+        If you wish to use TLS, you can use "make cert" to generate a
+        self-signed certificate and a private key.
 
-Configure
+    *   Make sure the directory /usr/local/news and its subdirectories are
+        owned by "news", group "news".
+
+        (If you ran "make install" as root, all of the ownerships and
+        permissions should be correct.)
+
+        You want to be careful that things in that directory stay owned by
+        "news" -- but you can't just "chown -R news:news" after the install,
+        because you may have binaries that are SUID root.  You can do the
+        build as any user, but you need to be root when doing "make install"
+        so as to set the permissions correctly.  After that point, though,
+        you may want to "su news -s /bin/sh" to avoid creating any files as
+        root.  (For routine maintenance once INN is working, you can
+        generally be root.  However, it is always better to be accustomed to
+        doing that as the news user.)
+
+Parameter
 
     *   Find INSTALL and open a separate window for it.  A printout is
-        probably a good idea -- it's long but very helpful.  Any time the
-        instructions below ask you to make a decision, you can probably find
-        help in INSTALL.
-
-    *   Now it's time to work on the files in ~news/etc (the default
-        *pathetc* location set in inn.conf).  Start with inn.conf; you must
-        fill in the default moderators address, your fully qualified domain
-        names and path.  Fill in all the blanks.  Change the file descriptor
-        limits to something like 500.
-
-    *   If using cycbuffs (the CNFS storage method), open cycbuff.conf in
-        one window and a shell in another to create the cycbuff as described
-        in INSTALL.  As you create them, record in cycbuff.conf the paths
-        and sizes.  Save paths and sizes in a separate text file on another
-        machine in case you ever blow away the wrong file.
-
-        Name the metacycbuff, then configure storage.conf.
-
-    *   In storage.conf, be sure that all sizes of articles can be
-        accommodated.  If you want to throw away large articles, do it
-        explicitly by using the "trash" storage method (you can also set a
-        lower *maxartsize* in inn.conf).
-
-    *   The default options in expire.ctl work fine if you have cycbuffs; if
-        not, configure to suit (depending on your disk space and your
-        interest in some hierarchies, you can define how long you keep
-        articles in your news spool).
-
-    *   Check over moderators and control.ctl.  You may want to also
-        configure the process of newsgroup control messages (see the
-        corresponding section in INSTALL).
+        probably a good idea -- it's long but very helpful.  You'll find in
+        INSTALL more information and background about each step in this
+        document.
+
+    *   Now it's time to work on the configuration files in your *pathetc*
+        directory.  Start with inn.conf; you must fill in or check
+        *organization* (which can be commented if you do not want to add a
+        default Organization header field to every post from your server),
+        your path identity in *pathhost* (usually your fully qualified
+        domain name), the NNTP server to use for posts (*server* is commonly
+        set to "localhost"), the maximum size of articles you accept
+        (*maxartsize*, set to 1 MB by default), and the abuse e-mail address
+        (*complaints*).
+
+        To store overview data, start with tradindexed overview method,
+        already set by default in the *ovmethod* parameter, but know that
+        there are various other options with their own pros and cons, as
+        detailed in INSTALL.
+
+    *   To store articles, start with traditional spool (named tradspool),
+        but know that there are various other options with their own pros
+        and cons, as detailed in INSTALL.
+
+        The default storage.conf file is already parametered to use that
+        storage method.
+
+    *   Configure in expire.ctl how long articles should be kept in your
+        news spool.  The default of 90 days maybe does not fit your needs. 
+        You can use different values for specific newsgroups or hierarchies
+        depending on your interest in them.
 
     *   Run "<pathbin in inn.conf>/inncheck -a -v -f --pedantic --perm" and
-        fix anything noted: inncheck gives a rough check on the
-        appropriateness of the configuration files as you go.  (It's the
-        equivalent of "perl -cw yourfile.pl" for Perl scripts.)
+        fix anything noted; inncheck gives a rough check on the
+        appropriateness of the configuration files as you go.
 
         Note that inncheck is very conservative about permissions; there's
         no reason most of the config files can't be world-readable if you
@@ -151,31 +121,48 @@ Configure
 
         Note that it is not necessary to do that now.  INN is shipped with
         minimal active and newsgroups files and you can add newsgroups later
-        with "ctlinnd newgroup" or actsync.
+        with "ctlinnd newgroup" or actsync (have a look at the examples at
+        the end of the actsync(8) man page for how to use it concretely).
+
+    *   Review the subscriptions file, and update it according to the
+        newsgroups you carry on your news server.  This file, which may be
+        empty, is used by a few news clients to suggest newsgroups on the
+        first time they connect to a news server.
+
+    *   Create the cron jobs (especially news.daily), the log files, and
+        make the changes to your system's syslog.conf as noted in INSTALL.
 
-        In case you need to create empty initial database files, import an
-        active file (owned by "news") and execute as the news user:
+    *   Create a local mail alias for "usenet" (editing your /etc/aliases
+        file for instance).  It will be useful for daily Usenet reports sent
+        by news.daily and other parts of the system.
+
+    *   If necessary, add the path to INN's binaries (as set in *pathbin* in
+        inn.conf) to the news user's path and the path to INN's man pages
+        (usually *pathnews*/share/man) to the news user's "MANPATH" in your
+        shell config files.  (You may also want to do this, especially the
+        second part, on your regular account; the man pages are very
+        useful.)
 
-            cd <pathdb in inn.conf>
+        You can do this now or later, but you will certainly want the man
+        pages to help with configuring INN.
 
-            touch newsgroups
-            touch active.times
+        For bash, try to add in your ~/.bashrc file:
 
-            touch history
-            <pathbin in inn.conf>/makedbz -i
-            mv history.n.hash  history.hash
-            mv history.n.index history.index
-            mv history.n.dir   history.dir
+            PATH=<pathbin in inn.conf>:$PATH
+            export PATH
+            MANPATH=<pathnews in inn.conf>/share/man:$MANPATH
+            export MANPATH
 
-            chmod 644 *
+        or csh in your ~/.cshrc file:
 
-        (However, it is not necessary to do that since INN takes care of
-        these files during the setup.)
+            setenv PATH <pathbin in inn.conf>:$PATH
+            setenv MANPATH <pathnews in inn.conf>/share/man:$MANPATH
 
-    *   Create the cron jobs (especially news.daily), the log files, and
-        make the changes to your system's syslog.conf as noted in INSTALL. 
-        Also create the cron job for nntpsend if you've chosen that over
-        innfeed.
+        although if you don't already have "MANPATH" set, the above may give
+        an error or override your defaults (making it so you can only read
+        the news man pages); if "echo $MANPATH" does not give some
+        reasonable path, you'll need to look up what the default is for your
+        system (such as /usr/man or /usr/share/man).
 
     *   For the time being, we can see if everything initially works without
         worrying about feeds or reader access.
@@ -183,101 +170,95 @@ Configure
 Run
 
     *   Start innd by running *pathbin*/rc.news as the news user.  It is
-        also what you should launch in your init scripts:
+        also what you should launch in your init scripts so that INN starts
+        when your server boots:
 
             su news -s /bin/sh -c <pathbin in inn.conf>/rc.news
 
-        Check *pathlog*/news.notice to see if everything went well; also use
-        "ps" to see if innd is running.
+        Samples of init.d and systemd init scripts are present in the
+        contrib directory (and certainly already set up on your system if
+        you installed INN with a package for your distrubtion).
+
+    *   Check news.crit, news.err and news.notice in your *pathlog*
+        directory to see if everything went well; also use "ps" to see if
+        innd is running.
 
-        "telnet localhost 119" and you should see either a welcome banner or
+    *   "telnet localhost 119" and you should see either a welcome banner or
         a "no permission to talk" message.  If not, investigate.
 
-    *   "man ctlinnd" now; you'll use "ctlinnd reload" as you complete your
-        configuration.  You can also see whether "ctlinnd checkfile" reports
-        any problems.
+        Send "QUIT" to end the telnet connection.
 
-Feeds
+    *   When you complete your configuration, do not forget to reload
+        changed files (see the "ctlinnd reload" command in the ctlinnd(8)
+        man page).  You can also see whether "ctlinnd checkfile" reports any
+        problems.
 
-    All of this can be done while INN is running.
+Additional Configuration
 
-    *   To get your incoming feeds working, edit incoming.conf.  When done,
-        "ctlinnd reload incoming.conf 'reason'" (where "reason" is some text
-        that will show up in the logs -- anything will do).
+    The following features are commonly used.  Though not mandatory, they
+    are recommended and can of course be set up later.
 
-    *   To get your outgoing feeds working, decide whether to use innfeed or
-        nntpsend.  Edit newsfeeds and either innfeed.conf or nntpsend.ctl.
+    *   You may want to configure the process of newsgroup control messages
+        to keep your list of newsgroups up to date (search for PGPKEYS in
+        INSTALL to find the Section explaining that).  Also see
+        controlchan(8) for how to set up the newsfeeds entry.
 
-        In newsfeeds, if using innfeed, use the option which doesn't require
-        you to do a separate innfeed configuration unless you know more than
-        I do.
+    *   You may want to configure the process of NoCeM notices used to
+        cancel unwanted articles like spam (see the perl-nocem(8) man page).
 
-        Then "ctlinnd reload newsfeeds 'reason'".
+    *   You may want to install a spam and abuse filter.  Good choices are
+        either Cleanfeed (a widely used Perl filter you can find at
+        <http://www.mixmin.net/cleanfeed/>) or PyClean (also a great Python
+        filter you can find at <https://github.com/crooks/PyClean>).
 
-Readers
+        You need to have an INN installation built with Perl and/or Python
+        support to be able to use these filters.
+
+    *   You may want to submit your Path header field statistics to
+        <http://top1000.anthologeek.net/>.  Have a look at the ninpaths(8)
+        man page to see how to do that.
+
+Feeds
 
-    *   In readers.conf, remember that auth and access blocks can be
-        separated.
+    All of this can be done while INN is running.
+
+    *   The first step is to get a news feed.  You can ask for an external
+        feed in the news.admin.peering newsgroup.  Several news
+        administrators will certainly respond and gracefully provide you
+        with a news feed.
 
-        Begin with auth.  Your auth for password users could look like this:
+    *   To get your incoming feeds working, edit incoming.conf.  When done,
+        "ctlinnd reload incoming.conf 'reason'" to reload that file (where
+        "reason" is some text that will show up in the logs -- anything will
+        do).  You'll find examples in the incoming.conf(5) man page for how
+        to set up this file.
+
+    *   To get your outgoing feeds working, edit newsfeeds and innfeed.conf.
+        When done, "ctlinnd reload newsfeeds 'reason'" and "ctlinnd flush
+        innfeed!" to reload these configuration files.  You'll find examples
+        in the newsfeeds(5) and innfeed.conf(5) man pages for how to set up
+        these files.
+
+Readers
 
-            auth "foreignokay" {
-                auth: "ckpasswd -d <pathdb in inn.conf>/newsusers"
-                default: "<unauthenticated>"
-            }
-
-        There is a Perl script in the ckpasswd(8) man page if you want to do
-        authentications by password and have the appropriate libraries. 
-        Copy it to *pathbin*, name the file something like makepasswd.pl and
-        change the internal paths to whatever you're using and wherever
-        you're putting the newsusers database.  The standard Apache htpasswd
-        tool also works just fine to create INN password files.  For
-        instance, a line for the newsusers database corresponding to the
-        user "user" with the password "pass" would be "user:LIfOpbjNaEQYE"
-        as obtained by the following command:
-
-            % htpasswd -nbd user pass
-            user:LIfOpbjNaEQYE
-
-        In case htpasswd is not installed or if you do not want to depend on
-        it, another command involving Perl does a similar job:
-
-            % perl -e 'print "user:".crypt("pass", "LI")."\n";'
-            user:LIfOpbjNaEQYE
-
-        Follow with the access stanzas.  Something for people with
-        passwords:
-
-            access "generalpeople" {
-                users: "*"
-                newsgroups: "*,!junk,!control,!control.*"
-            }
-
-        And then something like one of the following two, depending on
-        whether unauthenticated users get any access:
-
-            access "restrictive" {
-                users: "<unauthenticated>"
-                newsgroups: "!*"
-            }
-
-            access "readonly" {
-                users: "<unauthenticated>"
-                read: "local.*"
-                post: "!*"
-            }
+    *   In readers.conf, remember that authentication and authorization are
+        configured in different blocks.  You'll find useful examples in the
+        readers.conf(5) man page.  Also have a look at the description of
+        the -f flag in the ckpasswd(8) man page, if you need to set up a
+        password file.
 
         You don't need to reload anything after modifying readers.conf;
-        every time an nnrpd launches, it reads its configuration from disk.
+        every time a news client connects to the server, a new nnrpd process
+        is spawned and reads its configuration from disk.
 
-    *   If you wish to use TLS/SSL for your readers, you can either use the
-        same readers.conf file or use two different files (for instance
-        readers.conf and readers-ssl.conf).  The syntax is similar for both
-        these files.  You then need to start a second nnrpd to listen to
-        these connections to NNTPS port 563 and put something like that in
-        your init scripts:
+    *   If you wish to use TLS for your readers, you can either use the same
+        readers.conf file or use two different files (for instance
+        readers.conf and readers-tls.conf).  The syntax is similar for both
+        files.  You then need to start a second nnrpd to listen to these
+        connections to NNTPS port 563 and put something like that in your
+        init scripts:
 
-            su news -s /bin/sh -c '<pathbin>/nnrpd -D -c <pathetc>/readers-ssl.conf -p 563 -S'
+            su news -s /bin/sh -c '<pathbin>/nnrpd -D -c <pathetc>/readers-tls.conf -p 563 -S'
 
         Note that a news client which supports the STARTTLS command can also
         use the conventional NNTP port 119 to dynamically upgrade from
diff -Nurp inn-2.6.4/doc/config-design inn-2.6.5/doc/config-design
--- inn-2.6.4/doc/config-design	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/config-design	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-$Id: config-design 9428 2012-06-15 18:18:45Z iulius $
-
 This file is documentation of the design principles that went into INN's
 configuration file syntax, and some rationale for why those principles
 were chosen.
diff -Nurp inn-2.6.4/doc/config-semantics inn-2.6.5/doc/config-semantics
--- inn-2.6.4/doc/config-semantics	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/config-semantics	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-$Id: config-semantics 4792 2001-06-21 08:59:39Z rra $
-
 Groups in a configuration file have a well-defined order, namely the order
 in which the groups would be encountered in a depth-first traversal of the
 parse tree.
diff -Nurp inn-2.6.4/doc/config-syntax inn-2.6.5/doc/config-syntax
--- inn-2.6.4/doc/config-syntax	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/config-syntax	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-$Id: config-syntax 8566 2009-08-15 07:02:37Z iulius $
-
 This file documents the standardized syntax for INN configuration files.
 This is the syntax that the parsing code in libinn will understand and the
 syntax towards which all configuration files should move.
diff -Nurp inn-2.6.4/doc/external-auth inn-2.6.5/doc/external-auth
--- inn-2.6.4/doc/external-auth	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/external-auth	2022-02-18 20:36:57.000000000 +0100
@@ -112,5 +112,3 @@ HISTORY
     Written by Aidan Cully for InterNetNews.  This documentation was
     rewritten in POD by Jeffrey M. Vinocur <jeff@litech.org>.
 
-    $Id: external-auth.pod 8200 2008-11-30 13:31:30Z iulius $
-
diff -Nurp inn-2.6.4/doc/history inn-2.6.5/doc/history
--- inn-2.6.4/doc/history	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/history	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,3 @@
-$Revision: 10283 $
 This file contains a few messages of historical interest.  Some of the
 information in these messages is out of date (e.g., you don't need any
 other software, ihave/sendme is suported, etc); see the README and
diff -Nurp inn-2.6.4/doc/hook-perl inn-2.6.5/doc/hook-perl
--- inn-2.6.4/doc/hook-perl	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/hook-perl	2022-02-18 20:36:57.000000000 +0100
@@ -646,5 +646,3 @@ Available Packages
         for quotaing the number of messages any user can post to Usenet
         daily.  It uses filter_nnrpd.pl.
 
-    $Id: hook-perl.pod 10445 2020-12-09 21:09:12Z iulius $
-
diff -Nurp inn-2.6.4/doc/hook-python inn-2.6.5/doc/hook-python
--- inn-2.6.4/doc/hook-python	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/hook-python	2022-02-18 20:36:57.000000000 +0100
@@ -483,9 +483,9 @@ Writing an nnrpd Filter
 
   Writing a Python nnrpd Authentication Module
 
-    You need to create a nnrpd_auth.py module in INN's filter directory (see
-    the *pathfilter* setting in inn.conf) where you should define a class
-    holding certain methods depending on which hooks you want to use.
+    You need to create an nnrpd_auth.py module in INN's filter directory
+    (see the *pathfilter* setting in inn.conf) where you should define a
+    class holding certain methods depending on which hooks you want to use.
 
     Note that you will have to use different Python scripts for
     authentication and access:  the values of *python_auth*, *python_access*
@@ -662,5 +662,3 @@ Available Packages
         Cleanfeed, an extremely powerful spam filter on Usenet.  It uses
         filter_innd.py.
 
-    $Id: hook-python.pod 10282 2018-05-14 12:42:14Z iulius $
-
diff -Nurp inn-2.6.4/doc/man/INN__Config.3pm inn-2.6.5/doc/man/INN__Config.3pm
--- inn-2.6.4/doc/man/INN__Config.3pm	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/INN__Config.3pm	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "INN::Config 3pm"
-.TH INN::Config 3pm "2018-05-14" "INN 2.6.4" "InterNetNews Documentation"
+.TH INN::Config 3pm "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -219,8 +219,6 @@ module.
 \&\fIinnshellvars.pl\fR was written by James Brister <brister@vix.com>
 for InterNetNews in 1996.  It was converted to the INN::Config Perl
 module by Julien Elie in 2007.
-.PP
-\&\f(CW$Id:\fR Config.pm.in 10283 2018\-05\-14 12:43:05Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBinn.conf\fR\|(5), \fBinnconfval\fR\|(1), \fBperl\fR\|(1).
diff -Nurp inn-2.6.4/doc/man/INN__Utils__Shlock.3pm inn-2.6.5/doc/man/INN__Utils__Shlock.3pm
--- inn-2.6.4/doc/man/INN__Utils__Shlock.3pm	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/INN__Utils__Shlock.3pm	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "INN::Utils::Shlock 3pm"
-.TH INN::Utils::Shlock 3pm "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH INN::Utils::Shlock 3pm "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -229,8 +229,6 @@ This function returns \f(CW1\fR on succe
 .SH "HISTORY"
 .IX Header "HISTORY"
 Documentation written by Julien Elie for InterNetNews.
-.PP
-\&\f(CW$Id:\fR Shlock.pm.in 9408 2012\-05\-28 18:42:29Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBperl\fR\|(1), \fBshlock\fR\|(1).
diff -Nurp inn-2.6.4/doc/man/Makefile inn-2.6.5/doc/man/Makefile
--- inn-2.6.4/doc/man/Makefile	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/Makefile	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: Makefile 9476 2013-05-24 16:00:23Z iulius $
-
 include ../../Makefile.global
 
 top	= ../..
@@ -8,15 +6,18 @@ SEC1	= convdate.1 fastrm.1 getlist.1 gre
 	innmail.1 nntpget.1 pgpverify.1 pullnews.1 rnews.1 \
 	shlock.1 shrinkfile.1 simpleftp.1 sm.1
 
-SEC3	= clientlib.3 dbz.3 inndcomm.3 libauth.3 libinn.3 libinnhist.3 \
-	libstorage.3 list.3 qio.3 tst.3 uwildmat.3
+SEC3	= libinn.3 libinn_clientlib.3 libinn_dbz.3 libinn_inndcomm.3 \
+	libinn_list.3 libinn_qio.3 libinn_tst.3 libinn_uwildmat.3 \
+	libauth.3 libinnhist.3 libstorage.3
 
 SEC3PM	= INN__Config.3pm \
 	INN__Utils__Shlock.3pm
 
 SEC5	= active.5 active.times.5 buffindexed.conf.5 control.ctl.5 \
-	cycbuff.conf.5 distrib.pats.5 distributions.5 expire.ctl.5 history.5 incoming.conf.5 \
-	inn.conf.5 innfeed.conf.5 innwatch.ctl.5 moderators.5 motd.news.5 \
+	cycbuff.conf.5 distrib.pats.5 distributions.5 expire.ctl.5 \
+	history.5 incoming.conf.5 \
+	inn.conf.5 innfeed.conf.5 innreport.conf.5 \
+	innwatch.ctl.5 moderators.5 motd.news.5 \
 	newsfeeds.5 newsgroups.5 newslog.5 nnrpd.track.5 nntpsend.ctl.5 ovdb.5 \
 	passwd.nntp.5 inn-radius.conf.5 readers.conf.5 \
 	storage.conf.5 subscriptions.5
@@ -30,8 +31,8 @@ SEC8	= actsync.8 archive.8 batcher.8 buf
 	makehistory.8 mod-active.8 news.daily.8 news2mail.8 ninpaths.8 \
 	nnrpd.8 nntpsend.8 ovdb_init.8 ovdb_monitor.8 ovdb_server.8 \
 	ovdb_stat.8 overchan.8 perl-nocem.8 procbatch.8 prunehistory.8 radius.8 \
-	rc.news.8 scanlogs.8 scanspool.8 send-nntp.8 send-uucp.8 sendinpaths.8 \
-	tally.control.8 tdx-util.8 tinyleaf.8 writelog.8
+	rc.news.8 scanlogs.8 scanspool.8 send-ihave.8 send-nntp.8 send-uucp.8 \
+	sendinpaths.8 tally.control.8 tdx-util.8 tinyleaf.8 writelog.8
 
 all:
 clobber clean distclean:
@@ -85,6 +86,8 @@ install-man8:
 	$(LN_S) innfeed.8 $D$(MAN8)/imapfeed.8
 	rm -f $D$(MAN8)/inpaths.8
 	$(LN_S) ninpaths.8 $D$(MAN8)/inpaths.8
+	rm -f $D$(MAN8)/sendxbatches.8
+	$(LN_S) innxbatch.8 $D$(MAN8)/sendxbatches.8
 	if [ x"$(KRB5_AUTH)" != x ] ; then \
 	    $(CP_MAN) auth_krb5.8 $D$(MAN8)/auth_krb5.8 ; \
 	fi
diff -Nurp inn-2.6.4/doc/man/active.5 inn-2.6.5/doc/man/active.5
--- inn-2.6.4/doc/man/active.5	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/active.5	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "ACTIVE 5"
-.TH ACTIVE 5 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH ACTIVE 5 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -262,8 +262,6 @@ your \fInewsgroups\fR file, which can be
 .IX Header "HISTORY"
 Written by Rich \f(CW$alz\fR <rsalz@uunet.uu.net> for InterNetNews.  Converted to
 \&\s-1POD\s0 by Russ Allbery <eagle@eyrie.org>.
-.PP
-\&\f(CW$Id:\fR active.pod 9767 2014\-12\-07 21:13:43Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBactive.times\fR\|(5), \fBactsync\fR\|(8), \fBcontrolchan\fR\|(8), \fBctlinnd\fR\|(8), \fBdocheckgroups\fR\|(8),
diff -Nurp inn-2.6.4/doc/man/active.times.5 inn-2.6.5/doc/man/active.times.5
--- inn-2.6.4/doc/man/active.times.5	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/active.times.5	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "ACTIVE.TIMES 5"
-.TH ACTIVE.TIMES 5 "2016-10-07" "INN 2.6.4" "InterNetNews Documentation"
+.TH ACTIVE.TIMES 5 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -184,8 +184,6 @@ the time is not necessarily the same on
 .IX Header "HISTORY"
 Written by Rich \f(CW$alz\fR <rsalz@uunet.uu.net> for InterNetNews.  Converted to
 \&\s-1POD\s0 by Russ Allbery <eagle@eyrie.org>.
-.PP
-\&\f(CW$Id:\fR active.times.pod 9971 2015\-12\-10 20:30:10Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBactive\fR\|(5), \fBconvdate\fR\|(1), \fBctlinnd\fR\|(8), \fBgetlist\fR\|(1), \fBinn.conf\fR\|(5), \fBinnd\fR\|(8),
diff -Nurp inn-2.6.4/doc/man/actsync.8 inn-2.6.5/doc/man/actsync.8
--- inn-2.6.4/doc/man/actsync.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/actsync.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "ACTSYNC 8"
-.TH ACTSYNC 8 "2016-11-06" "INN 2.6.4" "InterNetNews Documentation"
+.TH ACTSYNC 8 "2022-02-18" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -149,6 +149,31 @@ actsync, actsyncd \- Synchronize newsgro
 [\fB\-z\fR \fIseconds\fR] [\fIhost\fR] \fIhost\fR
 .PP
 \&\fBactsyncd\fR \fIconfig\fR [\fIdebug-level\fR [\fIdebug-format\fR]]
+.SH "IN A NUTSHELL"
+.IX Header "IN A NUTSHELL"
+These programs permit keeping the list of newsgroups your news server carry
+synchronized with an external source.
+.PP
+For instance, you can decide to carry the same newsgroups as another news
+server or as the ones listed in a file from an external \s-1FTP\s0 site, and
+therefore synchronizing with the chosen source on a daily basis by running
+\&\fBactsyncd\fR in a cron job.
+.PP
+If you only want a subset of newsgroups from that source, it can be
+parametered in the \fIactsync.ign\fR configuration file in the \fIpathetc\fR
+directory.
+.PP
+\&\s-1INN\s0 comes with a default configuration for fetching the list of newsgroups
+from \f(CW\*(C`ftp.isc.org\*(C'\fR.  You can read about the policies used for maintaining
+that \fIactive\fR file at <https://ftp.isc.org/pub/usenet/CONFIG/README>.
+Just make sure \fIactsync.cfg\fR (the configuration file) and \fIactsync.ign\fR (the
+synchronization rules) suit your needs, and run:
+.PP
+.Vb 1
+\&    actsyncd <pathetc>/actsync.cfg
+.Ve
+.PP
+You'll find more detailed examples of use below in this man page.
 .SH "DESCRIPTION"
 .IX Header "DESCRIPTION"
 \&\fBactsync\fR permits one to synchronize, compare, or merge two \fIactive\fR
@@ -232,10 +257,10 @@ contain the following options:
 \&    flags=<actsync\-options>
 .Ve
 .PP
-The host=, ignore_file=, and flags= lines are mandatory.  Each keyword must
-start at the beginning of the line, and there may be no whitespace before
-the \f(CW\*(C`=\*(C'\fR character.  Blank lines are ignored, as are comment lines that
-start with \f(CW\*(C`#\*(C'\fR.  Any other lines may produce undefined results.
+The \f(CW\*(C`host=\*(C'\fR, \f(CW\*(C`ignore_file=\*(C'\fR, and \f(CW\*(C`flags=\*(C'\fR lines are mandatory.
+Each keyword must start at the beginning of the line, and there may be no
+whitespace before the \f(CW\*(C`=\*(C'\fR character.  Blank lines are ignored, as are comment
+lines that start with \f(CW\*(C`#\*(C'\fR.  Any other lines may produce undefined results.
 .PP
 The <host> setting refers to the second (remote) \fIhost\fR parameter to
 \&\fBactsync\fR.  If <path\-to\-active> is provided, <host> is accessed as an \s-1FTP\s0
@@ -244,20 +269,22 @@ server, retrieving the file named.  If t
 <ignore\-file> names the ignore file used by \fBactsync\fR (the \fB\-i\fR option).
 <actsync\-options> contains any other flags that you wish to pass to \fBactsync\fR.
 .PP
-Note that one should not include \fB\-i\fR or \fB\-o\fR options in the flags=
-line; they are automatically taken care of by \fBactsyncd\fR.
+Note that one should not include \fB\-i\fR or \fB\-o\fR options in the \f(CW\*(C`flags=\*(C'\fR line;
+they are automatically taken care of by \fBactsyncd\fR.
 .PP
-One may produce a trial \fBactsyncd\fR run without changing anything on the
-server by supplying the \fIdebug-level\fR argument:
+One may produce a trial \fBactsyncd\fR run without changing anything on
+the server by supplying the \fIdebug-level\fR argument:
 .PP
 .Vb 1
 \&    actsyncd <pathetc>/actsync.cfg 2
 .Ve
 .PP
 The \fIdebug-level\fR causes \fBactsyncd\fR to run \fBactsync\fR with a \fB\-v\fR
-\&\fIdebug-level\fR flag (overriding any \fB\-v\fR flag on the flags= line), not
-make any changes to the \fIactive\fR file, write a new \fIactive\fR file to
-standard output, and write debug messages to standard error.
+\&\fIdebug-level\fR flag (overriding any \fB\-v\fR flag on the \f(CW\*(C`flags=\*(C'\fR line),
+not make any changes to the \fIactive\fR file, write a new \fIactive\fR file to
+standard output, and write debug messages to standard error.  Note that using
+\&\fIdebug-level\fR is only supported when synchronizing with another news server,
+not with \s-1FTP.\s0
 .PP
 If the \fIdebug-format\fR argument is also given to \fBactsyncd\fR, the data
 written to standard output will be in \fB\-o \f(BIdebug-format\fB\fR instead of in
@@ -267,7 +294,7 @@ written to standard output will be in \f
 \&\f(CW\*(C`/pub/usenet/CONFIG/active.gz\*(C'\fR for <path\-to\-active>.  You can read about the
 policies used for maintaining that \fIactive\fR file at
 <https://ftp.isc.org/pub/usenet/CONFIG/README>.  Consider synchronizing
-from this file on a daily basis by using \fBcron\fR.
+from this file on a daily basis by using a cron job.
 .SH "OPTIONS"
 .IX Header "OPTIONS"
 \&\fBactsync\fR takes the following options.
@@ -288,7 +315,8 @@ on the \fBactsync\fR command line) and \
 second \fIhost\fR argument, or the only one if only one is given).
 .IP "\fB\-A\fR" 4
 .IX Item "-A"
-\&\fBactsync\fR tries to authenticate before issuing the \s-1LIST\s0 command.
+\&\fBactsync\fR tries to authenticate using the username and password information
+in \fBpasswd.nntp\fR\|(5) before issuing the \s-1LIST\s0 command.
 .IP "\fB\-b\fR \fIhostid\fR" 4
 .IX Item "-b hostid"
 This flag causes \fBactsync\fR to ignore for synchronization purposes
@@ -374,7 +402,7 @@ one of two forms:
 If the rule begins with a \f(CW\*(C`c\*(C'\fR, the rule requests certain newsgroups to be
 checked.  If the rule begins with an \f(CW\*(C`i\*(C'\fR, the rule requests certain
 newsgroups to be ignored.  The <newsgroup> field may be a specific
-newsgroup, or a \fBuwildmat\fR\|(3) pattern.
+newsgroup, or a \fIuwildmat\fR pattern.
 .Sp
 If one or more <type>s are specified, then the rule applies to the
 newsgroup only if it is of the specified type.  Types refer to the 4th field
@@ -390,7 +418,7 @@ of the \fIactive\fR file; that is, a typ
 .Ve
 .Sp
 Unlike \fIactive\fR files, the \f(CW\*(C`group.name\*(C'\fR in an alias type may be a newsgroup
-name or a \fBuwildmat\fR\|(3) pattern.  Also, \f(CW\*(C`=\*(C'\fR is equivalent to \f(CW\*(C`=*\*(C'\fR.
+name or a \fIuwildmat\fR pattern.  Also, \f(CW\*(C`=\*(C'\fR is equivalent to \f(CW\*(C`=*\*(C'\fR.
 .Sp
 On each rule line, no pattern type may be repeated.  For example, one
 may not have more than one type that begins with \f(CW\*(C`=\*(C'\fR, per line.  However,
@@ -424,8 +452,8 @@ flag may be useful in conjunction with t
 \&    actsync \-i actsync.ign \-I 2 \-m host1 host2
 .Ve
 .Sp
-will keep all newsgroups currently on host1.  It will also only
-compare host1 groups with non-ignored newsgroups from host2.
+will keep all newsgroups currently on \fIhost1\fR.  It will also only
+compare \fIhost1\fR groups with non-ignored newsgroups from \fIhost2\fR.
 .Sp
 The default is \f(CW\*(C`\-I 12\*(C'\fR; newsgroups from both hosts are ignored per the
 file specified with \fB\-i\fR.
@@ -665,17 +693,17 @@ By default, \fBactsync\fR will pause for
 executed if \f(CW\*(C`\-o x\*(C'\fR is selected.
 .SH "EXAMPLES"
 .IX Header "EXAMPLES"
-Determine the difference (but don't change anything) between your
-newsgroup set and uunet's set:
+Determine the difference (but don't change anything) between your newsgroup
+set and the one of another news server:
 .PP
 .Vb 1
-\&    actsync news.uu.net
+\&    actsync news.server.com
 .Ve
 .PP
 Same as above, with full debug and progress reports:
 .PP
 .Vb 1
-\&    actsync \-v 4 news.uu.net
+\&    actsync \-v 4 news.server.com
 .Ve
 .PP
 Force a site to have the same newsgroups as some other site:
@@ -687,12 +715,12 @@ Force a site to have the same newsgroups
 This may be useful to sync a slave site to its master, or to sync internal
 site to a gateway.
 .PP
-Compare your site with uunet, disregarding local groups and certain local
-differences with uunet.  Produce a report if any differences were
+Compare your site with news.server.com, disregarding local groups and
+certain local differences with it.  Produce a report if any differences were
 encountered:
 .PP
 .Vb 1
-\&    actsync \-v 2 \-i actsync.ign news.uu.net
+\&    actsync \-v 2 \-i actsync.ign news.server.com
 .Ve
 .PP
 where \fIactsync.ign\fR contains:
@@ -709,7 +737,7 @@ where \fIactsync.ign\fR contains:
 \&    i       nsa.*
 \&
 \&    # These groups are local favorites, so keep them
-\&    # even if uunet does not carry them.
+\&    # even if news.server.com does not carry them.
 \&    #
 \&    i       ca.dump.bob.dorman
 \&    i       ca.keep.bob.dorman
@@ -718,10 +746,10 @@ where \fIactsync.ign\fR contains:
 \&    i       alt.sounds.*    =alt.binaries.sounds.*
 .Ve
 .PP
-To interactively sync against news.uu.net, using the same ignore file:
+To interactively sync against news.server.com, using the same ignore file:
 .PP
 .Vb 1
-\&    actsync \-o xi \-v 2 \-i actsync.ign news.uu.net
+\&    actsync \-o xi \-v 2 \-i actsync.ign news.server.com
 .Ve
 .PP
 Based on newsgroups that you decided to keep, one could make changes to
@@ -739,7 +767,7 @@ the \fIactsync.ign\fR file:
 \&    i       nsa.*
 \&
 \&    # These groups are local favorites, so keep them
-\&    # even if uunet does not carry them.
+\&    # even if news.server.com does not carry them.
 \&    #
 \&    i       ca.dump.bob.dorman
 \&    i       alt.tv.dinosaurs.barney.die.die.die
@@ -759,7 +787,7 @@ file:
 .PP
 .Vb 2
 \&    # Host to sync off of (host2).
-\&    host=news.uu.net
+\&    host=news.server.com
 \&
 \&    # Location of the ignore file.
 \&    ignore_file=<pathetc in inn.conf>/actsync.ign
@@ -771,7 +799,7 @@ file:
 \&    #
 \&    # Automatic execs, report if something was done,
 \&    # otherwise don\*(Aqt say anything, don\*(Aqt report
-\&    # uunet active file problems, just ignore
+\&    # news.server.com active file problems, just ignore
 \&    # the affected entries.
 \&    flags=\-o x \-v 2 \-q 2
 .Ve
@@ -788,11 +816,12 @@ The command
 \&    actsyncd <pathetc>/actsync.cfg 4 >cmd.log 2>dbg.log
 .Ve
 .PP
-will operate in debug mode, not change the \fIactive\fR file, write
-\&\fBctlinnd\fR style commands to \fIcmd.log\fR, and write debug statements to
-\&\fIdbg.log\fR.
+will operate in debug mode, not change the \fIactive\fR file, write \fBctlinnd\fR
+style commands to \fIcmd.log\fR, and write debug statements to \fIdbg.log\fR.
+(Note that using \fIdebug-level\fR is only supported when synchronizing with
+another news server, not with \s-1FTP.\s0)
 .PP
-To check only the major hierarchies against news.uu,net, use the following
+To check only the major hierarchies against news.server.com, use the following
 \&\fIactsync.ign\fR file:
 .PP
 .Vb 3
@@ -817,7 +846,7 @@ To check only the major hierarchies agai
 and the command:
 .PP
 .Vb 1
-\&    actsync \-i actsync.ign news.uu.net
+\&    actsync \-i actsync.ign news.server.com
 .Ve
 .PP
 To determine the differences between your old \fIactive\fR and your current
@@ -896,8 +925,6 @@ Written by Landon Curt Noll <chongo@toad
 to support \s-1FTP\s0 fetching by David Lawrence <tale@isc.org>.  Converted to
 \&\s-1POD\s0 by Russ Allbery <eagle@eyrie.org>.
 .PP
-\&\f(CW$Id:\fR actsync.pod 10097 2016\-11\-04 22:19:07Z iulius $
-.PP
 By Landon Curt Noll <chongo@toad.com> (chongo was here /\e../\e).
 .PP
 Copyright (c) Landon Curt Noll, 1993.  All rights reserved.
@@ -906,4 +933,5 @@ Permission to use and modify is hereby g
 remains.  Use at your own risk.  No warranty is implied.
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
-\&\fBactive\fR\|(5), \fBctlinnd\fR\|(8), \fBgetlist\fR\|(8), \fBinn.conf\fR\|(5), \fBmod\-active\fR\|(8), \fBsimpleftp\fR\|(1).
+\&\fBactive\fR\|(5), \fBctlinnd\fR\|(8), \fBgetlist\fR\|(8), \fBinn.conf\fR\|(5), \fBlibinn_uwildmat\fR\|(3),
+\&\fBmod\-active\fR\|(8), \fBpasswd.nntp\fR\|(5), \fBsimpleftp\fR\|(1).
diff -Nurp inn-2.6.4/doc/man/archive.8 inn-2.6.5/doc/man/archive.8
--- inn-2.6.4/doc/man/archive.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/archive.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "ARCHIVE 8"
-.TH ARCHIVE 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH ARCHIVE 8 "2022-02-18" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -218,8 +218,8 @@ are used to generate overview data (unfo
 \&\s-1LF\s0 replaced by spaces).
 .IP "\fB\-p\fR \fIpattern\fR" 4
 .IX Item "-p pattern"
-Limits the targets taken from the Xref: header to the groups specified in
-\&\fIpattern\fR.  \fIpattern\fR is a \fBuwildmat\fR\|(3) pattern matching newsgroups that
+Limits the targets taken from the Xref header field to the groups specified in
+\&\fIpattern\fR.  \fIpattern\fR is a \fIuwildmat\fR pattern matching newsgroups that
 you wish to have \fBarchive\fR handle.
 .IP "\fB\-r\fR" 4
 .IX Item "-r"
@@ -253,8 +253,6 @@ Replace <pathbin> and <patharchive> with
 .IX Header "HISTORY"
 Written by Rich \f(CW$alz\fR <rsalz@uunet.uu.net> for InterNetNews.  Converted to
 \&\s-1POD\s0 by Russ Allbery <eagle@eyrie.org>.
-.PP
-\&\f(CW$Id:\fR archive.pod 9767 2014\-12\-07 21:13:43Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
-\&\fBinn.conf\fR\|(5), \fBnewsfeeds\fR\|(5).
+\&\fBinn.conf\fR\|(5), \fBlibinn_uwildmat\fR\|(3), \fBnewsfeeds\fR\|(5).
diff -Nurp inn-2.6.4/doc/man/auth_krb5.8 inn-2.6.5/doc/man/auth_krb5.8
--- inn-2.6.4/doc/man/auth_krb5.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/auth_krb5.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "AUTH_KRB5 8"
-.TH AUTH_KRB5 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH AUTH_KRB5 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -211,8 +211,6 @@ error message.
 Originally written by Christopher P.\ Lindsey.  This documentation was
 written by Russ Allbery <eagle@eyrie.org> based on Christopher's original
 \&\fI\s-1README\s0\fR file.
-.PP
-\&\f(CW$Id:\fR auth_krb5.pod 9774 2015\-01\-04 21:50:10Z eagle $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBckpasswd\fR\|(8), \fBnnrpd\fR\|(8), \fBreaders.conf\fR\|(5).
diff -Nurp inn-2.6.4/doc/man/batcher.8 inn-2.6.5/doc/man/batcher.8
--- inn-2.6.4/doc/man/batcher.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/batcher.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "BATCHER 8"
-.TH BATCHER 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH BATCHER 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -266,8 +266,6 @@ file as described above.
 .IX Header "HISTORY"
 Written by Rich \f(CW$alz\fR <rsalz@uunet.uu.net> for InterNetNews.  Rewritten by
 Russ Allbery <eagle@eyrie.org> in \s-1POD.\s0
-.PP
-\&\f(CW$Id:\fR batcher.pod 9767 2014\-12\-07 21:13:43Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBctlinnd\fR\|(8), \fBinn.conf\fR\|(5), \fBnewsfeeds\fR\|(5), \fBrnews\fR\|(8), \fBsend\-uucp\fR\|(8), \fBshlock\fR\|(1).
diff -Nurp inn-2.6.4/doc/man/buffchan.8 inn-2.6.5/doc/man/buffchan.8
--- inn-2.6.4/doc/man/buffchan.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/buffchan.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "BUFFCHAN 8"
-.TH BUFFCHAN 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH BUFFCHAN 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -214,8 +214,9 @@ If the \fB\-C\fR flag is given, \fBbuffc
 has been open for more than \fIseconds\fR seconds.
 .IP "\fB\-d\fR \fIdirectory\fR" 4
 .IX Item "-d directory"
-This flag may be used to specify a directory the program should change to
-before starting.  If this flag is used, the default for the \fB\-s\fR flag
+By default, \fBbuffchan\fR writes its output into the \fIpathoutgoing\fR directory.
+This flag may be used to specify a directory the program should change
+to before starting.  If this flag is used, the default for the \fB\-s\fR flag
 (see below) is changed to be a simple \f(CW%s\fR (in other words, output files
 are considered to be relative to \fIdirectory\fR).
 .IP "\fB\-f\fR \fInum-fields\fR" 4
@@ -242,7 +243,10 @@ In the map file, blank lines and lines s
 are ignored.  All other lines should have two host names separated by a
 colon.  The first field is the name that may appear in the input stream;
 the second field names the file to be used when the name in the first
-field appears.  For example:
+field appears.
+.Sp
+For example, the following map file may be used to map the short names used
+in the example below to the full domain names:
 .Sp
 .Vb 4
 \&    # This is a comment
@@ -275,38 +279,48 @@ If the \fB\-u\fR flag is used, the outpu
 If \fBbuffchan\fR is invoked with \f(CW\*(C`\-f 2\*(C'\fR and given the following input:
 .PP
 .Vb 3
-\&    news/software/b/132 <1643@munnari.oz.au> foo uunet
-\&    news/software/b/133 <102060@litchi.foo.com> uunet munnari
-\&    comp/sources/unix/2002 <999@news.foo.com> foo uunet munnari
+\&    news.software.nntp <1643@munnari.oz.au> foo uunet
+\&    news.software.nntp <102060@litchi.foo.com> uunet munnari
+\&    comp.sources.unix <999@news.foo.com> foo uunet munnari
 .Ve
 .PP
-Then the file \fIfoo\fR will have these lines:
+then the file \fIfoo\fR in \fIpathoutgoing\fR will have these lines:
 .PP
 .Vb 2
-\&    news/software/b/132 <1643@munnari.oz.au>
-\&    comp/sources/unix/2002 <999@news.foo.com>
+\&    news.software.nntp <1643@munnari.oz.au>
+\&    comp.sources.unix <999@news.foo.com>
 .Ve
 .PP
-the file \fImunnari\fR will have these lines:
+the file \fImunnari\fR in \fIpathoutgoing\fR will have these lines:
 .PP
 .Vb 2
-\&    news/software/b/133 <102060@litchi.foo.com>
-\&    comp/sources/unix/2002 <999@news.foo.com>
+\&    news.software.nntp <102060@litchi.foo.com>
+\&    comp.sources.unix <999@news.foo.com>
 .Ve
 .PP
-and the file \fIuunet\fR will have these lines:
+and the file \fIuunet\fR in \fIpathoutgoing\fR will have these lines:
 .PP
 .Vb 3
-\&    news/software/b/132 <1643@munnari.oz.au>
-\&    news/software/b/133 <102060@litchi.foo.com>
-\&    comp/sources/unix/2002 <999@news.foo.com>
+\&    news.software.nntp <1643@munnari.oz.au>
+\&    news.software.nntp <102060@litchi.foo.com>
+\&    comp.sources.unix <999@news.foo.com>
 .Ve
+.PP
+Using \fBbuffchan\fR this way can be done in \fInewsfeeds\fR with for instance:
+.PP
+.Vb 4
+\&    foo:*,@misc.*:Ap,Tm:buffchan!
+\&    munnari:*,@rec.*:Ap,Tm:buffchan!
+\&    uunet:*:Ap,Tm:buffchan!
+\&    buffchan!:*:Tx,WGm*:<pathbin>/buffchan \-f 2
+.Ve
+.PP
+It will generate the examples above.  See the \f(CW\*(C`W\*(C'\fR flag in \fBnewsfeeds\fR\|(5)
+for how to parameter the output.
 .SH "HISTORY"
 .IX Header "HISTORY"
 Written by Rich \f(CW$alz\fR <rsalz@uunet.uu.net> for InterNetNews.  Converted to
 \&\s-1POD\s0 by Russ Allbery <eagle@eyrie.org>.
-.PP
-\&\f(CW$Id:\fR buffchan.pod 9767 2014\-12\-07 21:13:43Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBctlinnd\fR\|(8), \fBfilechan\fR\|(8), \fBinn.conf\fR\|(5), \fBinnd\fR\|(8), \fBnewsfeeds\fR\|(5).
diff -Nurp inn-2.6.4/doc/man/buffindexed.conf.5 inn-2.6.5/doc/man/buffindexed.conf.5
--- inn-2.6.4/doc/man/buffindexed.conf.5	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/buffindexed.conf.5	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "BUFFINDEXED.CONF 5"
-.TH BUFFINDEXED.CONF 5 "2021-01-21" "INN 2.6.4" "InterNetNews Documentation"
+.TH BUFFINDEXED.CONF 5 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -289,8 +289,6 @@ user to read and write.
 .IX Header "HISTORY"
 Written by Katsuhiro Kondou <kondou@nec.co.jp> for InterNetNews.
 Converted to \s-1POD\s0 by Russ Allbery <eagle@eyrie.org>.
-.PP
-\&\f(CW$Id:\fR buffindexed.conf.pod 10525 2021\-01\-20 11:51:15Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBexpireover\fR\|(8), \fBinn.conf\fR\|(5), \fBinndf\fR\|(8), \fBmakehistory\fR\|(8).
diff -Nurp inn-2.6.4/doc/man/ckpasswd.8 inn-2.6.5/doc/man/ckpasswd.8
--- inn-2.6.4/doc/man/ckpasswd.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/ckpasswd.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "CKPASSWD 8"
-.TH CKPASSWD 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH CKPASSWD 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -220,25 +220,22 @@ vaguely.  That means each line should lo
 \&    username:pdIh9NCNslkq6
 .Ve
 .Sp
-(and each line may have an additional colon after the encrypted password
-and additional data; that data will be ignored by \fBckpasswd\fR).
-Lines starting with a number sign (\f(CW\*(C`#\*(C'\fR) are ignored.  \s-1INN\s0 does not
-come with a utility to create the encrypted passwords, but \fBhtpasswd\fR
-(which comes with Apache) can do so and it's a quick job with Perl
-(see the example script under \fB\-d\fR, or also below).  If using Apache's
-\&\fBhtpasswd\fR program, be sure to give it the \fB\-d\fR option so that it
-will use \fBcrypt\fR\|(3).
+(and each line may have an additional colon after the encrypted password and
+additional data; that data will be ignored by \fBckpasswd\fR).  Lines starting
+with a number sign (\f(CW\*(C`#\*(C'\fR) are ignored.  \s-1INN\s0 does not come with a utility to
+create the encrypted passwords, but \fBhtpasswd\fR (which comes with Apache) can
+do so and it's a quick job with Perl (see the one-line example script below).
 .Sp
-A line in \fIfilename\fR for the user \f(CW\*(C`user\*(C'\fR with the password \f(CW\*(C`pass\*(C'\fR
-would be \f(CW\*(C`user:LIfOpbjNaEQYE\*(C'\fR as obtained by the following command:
+A line in \fIfilename\fR for the user \f(CW\*(C`user\*(C'\fR with the password \f(CW\*(C`pass\*(C'\fR would be
+\&\f(CW\*(C`user:LIfOpbjNaEQYE\*(C'\fR as obtained with the following command:
 .Sp
 .Vb 2
 \&    % htpasswd \-nbd user pass
 \&    user:LIfOpbjNaEQYE
 .Ve
 .Sp
-In case \fBhtpasswd\fR is not installed or if you do not want to depend
-on it, another command involving Perl does a similar job:
+In case \fBhtpasswd\fR is not installed on your server, just use the following
+Perl command which does the same job:
 .Sp
 .Vb 2
 \&    % perl \-e \*(Aqprint "user:".crypt("pass", "LI")."\en";\*(Aq
@@ -325,8 +322,6 @@ it will print some sort of error message
 .SH "HISTORY"
 .IX Header "HISTORY"
 Written by Russ Allbery <eagle@eyrie.org> for InterNetNews.
-.PP
-\&\f(CW$Id:\fR ckpasswd.pod 9937 2015\-09\-02 12:44:39Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBcrypt\fR\|(3), \fBnnrpd\fR\|(8), \fBpam\fR\|(7), \fBreaders.conf\fR\|(5).
diff -Nurp inn-2.6.4/doc/man/clientlib.3 inn-2.6.5/doc/man/clientlib.3
--- inn-2.6.4/doc/man/clientlib.3	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/clientlib.3	1970-01-01 01:00:00.000000000 +0100
@@ -1,98 +0,0 @@
-.\" $Revision: 10281 $
-.TH CLIENTLIB 3
-.SH NAME
-clientlib \- NNTP clientlib part of InterNetNews library
-.SH SYNOPSIS
-.nf
-.ta \w'    unsigned long    'u
-.B "extern FILE	*ser_rd_fp;"
-.B "extern FILE	*ser_wr_fp;"
-.B "extern char	ser_line[];"
-
-.B "char *"
-.B "getserverbyfile(char *file UNUSED);"
-
-.B "int"
-.B "server_init(char *host, int port);"
-
-.B "int"
-.B "handle_server_response(int response, char *host);"
-
-.B "void"
-.B "put_server(const char *buff);"
-
-.B "int"
-.B "get_server(char *buff, int buffsize);"
-
-.B "void"
-.B "close_server(void);"
-.fi
-.SH DESCRIPTION
-The routines described in this manual page are part of the InterNetNews
-library,
-.IR libinn (3).
-They are replacements for the ``clientlib'' part of the NNTP distribution,
-and are intended to be used in building programs like
-.IR rrn .
-.PP
-.I Getserverbyfile
-calls
-.I GetConfigValue
-to get the name of the local NNTP server.
-It returns a pointer to static space.
-The
-.I file
-parameter is ignored.
-.PP
-.I Server_init
-opens a connect to the NNTP server at the specified
-.IR host .
-It returns the server's response code or \-1 on error.
-If a connection was made, then
-.I ser_rd_fp
-and
-.I ser_wr_fp
-can be used to read from and write to the server, respectively, and
-.I ser_line
-will contain the server's response.
-.I Ser_line
-can also be used in other routines.
-.PP
-.I Handle_server_response
-decodes the
-.IR response ,
-which comes from the server on
-.IR host.
-If the client is authorized, it returns 0.
-A client that is only allowed to read is authorized, but
-.I handle_server_response
-will print a message on the standard output.
-If the client is not authorized to talk to the server, then a message is
-printed and the routine returns \-1.
-.PP
-.I Put_server
-sends the text in
-.I buff
-to the server, adding the necessary NNTP line terminators, and flushing
-the I/O buffer.
-.PP
-.I Get_server
-reads a line of text from the server into
-.IR buff ,
-reading at most
-.I buffsize
-characters.
-Any trailing \er\en terminators are stripped off.
-.I Get_server
-returns \-1 on error.
-.PP
-.I Close_server
-sends a ``quit'' command to the server and closes the connection.
-.SH HISTORY
-Written by Rich $alz <rsalz@uunet.uu.net> for InterNetNews.
-.de R$
-This is revision \\$3, dated \\$4.
-..
-.R$ $Id: clientlib.3 10281 2018-05-14 12:33:11Z iulius $
-.SH "SEE ALSO"
-libinn(3).
diff -Nurp inn-2.6.4/doc/man/cnfsheadconf.8 inn-2.6.5/doc/man/cnfsheadconf.8
--- inn-2.6.4/doc/man/cnfsheadconf.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/cnfsheadconf.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "CNFSHEADCONF 8"
-.TH CNFSHEADCONF 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH CNFSHEADCONF 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -165,8 +165,6 @@ Prompt for modifications to make to cycb
 .IX Header "HISTORY"
 Written by Katsuhiro Kondou <kondou@nec.co.jp> for InterNetNews.  Converted
 to \s-1POD\s0 by Julien Elie.
-.PP
-\&\f(CW$Id:\fR cnfsheadconf.pod 8545 2009\-07\-03 21:56:39Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBcycbuff.conf\fR\|(5), \fBinn.conf\fR\|(5), \fBstorage.conf\fR\|(5).
diff -Nurp inn-2.6.4/doc/man/cnfsstat.8 inn-2.6.5/doc/man/cnfsstat.8
--- inn-2.6.4/doc/man/cnfsstat.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/cnfsstat.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "CNFSSTAT 8"
-.TH CNFSSTAT 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH CNFSSTAT 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -199,8 +199,6 @@ storage and the \fIhistory\fR file.
 .IX Header "HISTORY"
 Written by Katsuhiro Kondou <kondou@nec.co.jp> for InterNetNews.  Converted
 to \s-1POD\s0 by Julien Elie.
-.PP
-\&\f(CW$Id:\fR cnfsstat.pod 9721 2014\-09\-24 17:35:46Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBcycbuff.conf\fR\|(5), \fBhistory\fR\|(5), \fBinn.conf\fR\|(5), \fBrc.news\fR\|(8), \fBstorage.conf\fR\|(5).
diff -Nurp inn-2.6.4/doc/man/control.ctl.5 inn-2.6.5/doc/man/control.ctl.5
--- inn-2.6.4/doc/man/control.ctl.5	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/control.ctl.5	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "CONTROL.CTL 5"
-.TH CONTROL.CTL 5 "2018-05-14" "INN 2.6.4" "InterNetNews Documentation"
+.TH CONTROL.CTL 5 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -486,8 +486,6 @@ could have added them to the \fIlocalgro
 .IX Header "HISTORY"
 Written by Rich \f(CW$alz\fR <rsalz@uunet.uu.net> for InterNetNews.  Rewritten in
 \&\s-1POD\s0 by Russ Allbery <eagle@eyrie.org>.
-.PP
-\&\f(CW$Id:\fR control.ctl.pod 10283 2018\-05\-14 12:43:05Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBcontrolchan\fR\|(8), \fBinn.conf\fR\|(5), \fBinnd\fR\|(8), \fBnewsfeeds\fR\|(5), \fBnewsgroups\fR\|(5),
diff -Nurp inn-2.6.4/doc/man/controlchan.8 inn-2.6.5/doc/man/controlchan.8
--- inn-2.6.4/doc/man/controlchan.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/controlchan.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "CONTROLCHAN 8"
-.TH CONTROLCHAN 8 "2018-05-14" "INN 2.6.4" "InterNetNews Documentation"
+.TH CONTROLCHAN 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -218,8 +218,6 @@ Gives usage information.
 .IX Header "HISTORY"
 Written by Katsuhiro Kondou <kondou@nec.co.jp> for InterNetNews.  Converted to
 \&\s-1POD\s0 by Julien Elie.
-.PP
-\&\f(CW$Id:\fR controlchan.pod 10283 2018\-05\-14 12:43:05Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBcontrol.ctl\fR\|(5), \fBinn.conf\fR\|(5).
diff -Nurp inn-2.6.4/doc/man/convdate.1 inn-2.6.5/doc/man/convdate.1
--- inn-2.6.4/doc/man/convdate.1	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/convdate.1	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "CONVDATE 1"
-.TH CONVDATE 1 "2016-10-07" "INN 2.6.4" "InterNetNews Documentation"
+.TH CONVDATE 1 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -222,8 +222,6 @@ determine (or at least override) the loc
 .IX Header "HISTORY"
 Written by Rich \f(CW$alz\fR <rsalz@uunet.uu.net>, rewritten and updated by Russ
 Allbery <eagle@eyrie.org> for the \fB\-d\fR and \fB\-l\fR flags.
-.PP
-\&\f(CW$Id:\fR convdate.pod 9971 2015\-12\-10 20:30:10Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBactive.times\fR\|(5).
diff -Nurp inn-2.6.4/doc/man/ctlinnd.8 inn-2.6.5/doc/man/ctlinnd.8
--- inn-2.6.4/doc/man/ctlinnd.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/ctlinnd.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "CTLINND 8"
-.TH CTLINND 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH CTLINND 8 "2022-02-18" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -590,9 +590,7 @@ server replies are limited to 4\ \s-1KB\
 .IX Header "HISTORY"
 Written by Rich \f(CW$alz\fR <rsalz@uunet.uu.net> for InterNetNews.  Rewritten in
 \&\s-1POD\s0 by Russ Allbery <eagle@eyrie.org>.
-.PP
-\&\f(CW$Id:\fR ctlinnd.pod 9767 2014\-12\-07 21:13:43Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBactive\fR\|(5), \fBactive.times\fR\|(5), \fBbuffchan\fR\|(8), \fBincoming.conf\fR\|(5), \fBinnd\fR\|(8),
-\&\fBinndcomm\fR\|(3), \fBinn.conf\fR\|(5), \fBnewsfeeds\fR\|(5), \fBnnrpd\fR\|(8).
+\&\fBinn.conf\fR\|(5), \fBlibinn_inndcomm\fR\|(3), \fBnewsfeeds\fR\|(5), \fBnnrpd\fR\|(8).
diff -Nurp inn-2.6.4/doc/man/cvtbatch.8 inn-2.6.5/doc/man/cvtbatch.8
--- inn-2.6.4/doc/man/cvtbatch.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/cvtbatch.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "CVTBATCH 8"
-.TH CVTBATCH 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH CVTBATCH 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -180,8 +180,6 @@ followed by the message-ID of the articl
 .IX Header "HISTORY"
 Written by Rich \f(CW$alz\fR <rsalz@uunet.uu.net> for InterNetNews.  Converted
 to \s-1POD\s0 by Julien Elie.
-.PP
-\&\f(CW$Id:\fR cvtbatch.pod 8704 2009\-11\-03 18:51:44Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBgrephistory\fR\|(1), \fBnewsfeeds\fR\|(5).
diff -Nurp inn-2.6.4/doc/man/cycbuff.conf.5 inn-2.6.5/doc/man/cycbuff.conf.5
--- inn-2.6.4/doc/man/cycbuff.conf.5	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/cycbuff.conf.5	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "CYCBUFF.CONF 5"
-.TH CYCBUFF.CONF 5 "2018-01-28" "INN 2.6.4" "InterNetNews Documentation"
+.TH CYCBUFF.CONF 5 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -204,6 +204,8 @@ the buffer in kilobytes (1\ \s-1KB\s0 is
 device, it should be <size>\ *\ 1024\ bytes long.
 .Sp
 If you're trying to stay under 2\ \s-1GB,\s0 keep your sizes below \f(CW2097152\fR.
+.Sp
+Note that CNFSv4 supports files and partitions up to 16\ \s-1TB.\s0
 .IP "\fImetacycbuff\fR:<name>:<buffer>[,<buffer>,...][:<mode>]" 4
 .IX Item "metacycbuff:<name>:<buffer>[,<buffer>,...][:<mode>]"
 Specifies a collection of \s-1CNFS\s0 buffers that make up a single logical
@@ -347,8 +349,6 @@ where \f(CW\*(C`ONE\*(C'\fR will be what
 .IX Header "HISTORY"
 Written by Katsuhiro Kondou <kondou@nec.co.jp> for InterNetNews.
 Rewritten into \s-1POD\s0 by Russ Allbery <eagle@eyrie.org>.
-.PP
-\&\f(CW$Id:\fR cycbuff.conf.pod 10230 2018\-01\-28 21:22:21Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBctlinnd\fR\|(8), \fBinnd\fR\|(8), \fBnnrpd\fR\|(8), \fBsm\fR\|(1), \fBstorage.conf\fR\|(5).
diff -Nurp inn-2.6.4/doc/man/dbz.3 inn-2.6.5/doc/man/dbz.3
--- inn-2.6.4/doc/man/dbz.3	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/dbz.3	1970-01-01 01:00:00.000000000 +0100
@@ -1,303 +0,0 @@
-.TH DBZ 3 "6 Sep 1997"
-.BY "INN"
-.SH NAME
-dbzinit, dbzfresh, dbzagain, dbzclose, dbzexists, dbzfetch, dbzstore, dbzsync, dbzsize, dbzgetoptions, dbzsetoptions, dbzdebug \- database routines
-.SH SYNOPSIS
-.nf
-.B #include <inn/dbz.h>
-.PP
-.B "bool dbzinit(const char *base)"
-.PP
-.B "bool dbzclose(void)"
-.PP
-.B "bool dbzfresh(const char *base, long size)"
-.PP
-.B "bool dbzagain(const char *base, const char *oldbase)"
-.PP
-.B "bool dbzexists(const HASH key)"
-.PP
-.B "off_t dbzfetch(const HASH key)"
-.B "bool dbzfetch(const HASH key, void *ivalue)"
-.PP
-.B "DBZSTORE_RESULT dbzstore(const HASH key, off_t offset)"
-.B "DBZSTORE_RESULT dbzstore(const HASH key, void *ivalue)"
-.PP
-.B "bool dbzsync(void)"
-.PP
-.B "long dbzsize(long nentries)"
-.PP
-.B "void dbzgetoptions(dbzoptions *opt)"
-.PP
-.B "void dbzsetoptions(const dbzoptions opt)"
-.PP
-.SH DESCRIPTION
-These functions provide an indexing system for rapid random access to a
-text file (the
-.I base 
-.IR file ).
-.PP
-.I Dbz
-stores offsets into the base text file for rapid retrieval.  All retrievals
-are keyed on a hash value that is generated by the 
-.I HashMessageID()
-function.
-.PP
-.I Dbzinit
-opens a database,
-an index into the base file
-.IR base ,
-consisting of files
-.IB base .dir
-,
-.IB base .index
-, and
-.IB base .hash
-which must already exist.
-(If the database is new, they should be zero-length files.)
-Subsequent accesses go to that database until
-.I dbzclose
-is called to close the database.
-.PP
-.I Dbzfetch
-searches the database for the specified
-.IR key ,
-returning the corresponding
-.I value
-if any, if
-.I <\-\-enable\-tagged\-hash at configure>
-is specified.  If
-.I <\-\-enable\-tagged\-hash at configure>
-is not specified, it returns true and content of
-.I ivalue
-is set.
-.I Dbzstore
-stores the
-.I key - value
-pair in the database, if
-.I <\-\-enable\-tagged\-hash at configure>
-is specified.  If
-.I <\-\-enable\-tagged\-hash at configure>
-is not specified, it stores the content of
-.IR ivalue .
-.I Dbzstore
-will fail unless the database files are writable.
-.I Dbzexists 
-will verify whether or not the given hash exists or not.  Dbz is 
-optimized for this operation and it may be significantly faster than
-.IR dbzfetch() .
-.PP
-.I Dbzfresh
-is a variant of
-.I dbzinit
-for creating a new database with more control over details.
-.PP
-.IR Dbzfresh 's
-.I size
-parameter specifies the size of the first hash table within the database,
-in key-value pairs.
-Performance will be best if the number of key-value pairs stored in the 
-database does not exceed about 2/3 of
-.IR size .
-(The
-.I dbzsize
-function, given the expected number of key-value pairs,
-will suggest a database size that meets these criteria.)
-Assuming that an
-.I fseek
-offset is 4 bytes,
-the
-.B .index
-file will be
-.I 4 * size
-bytes.  The 
-.B .hash
-file will be
-.I DBZ_INTERNAL_HASH_SIZE * size
-bytes
-(the
-.B .dir
-file is tiny and roughly constant in size)
-until
-the number of key-value pairs exceeds about 80% of
-.IR size .
-(Nothing awful will happen if the database grows beyond 100% of
-.IR size ,
-but accesses will slow down quite a bit and the 
-.B .index
-and 
-.B .hash
-files will grow somewhat.)
-.PP
-.I Dbz
-stores up to 
-.SM DBZ_INTERNAL_HASH_SIZE
-bytes of the message-id's hash in the 
-.B .hash
-file to confirm a hit.  This eliminates the need to read the base file to
-handle collisions.  This replaces the tagmask feature in previous dbz 
-releases.
-.PP
-A
-.I size
-of ``0''
-given to
-.I dbzfresh
-is synonymous with the local default;
-the normal default is suitable for tables of 5,000,000
-key-value pairs.
-Calling
-.I dbzinit(name)
-with the empty name is equivalent to calling
-.IR dbzfresh(name,\ 0) .
-.PP
-When databases are regenerated periodically, as in news,
-it is simplest to pick the parameters for a new database based on the old one.
-This also permits some memory of past sizes of the old database, so that
-a new database size can be chosen to cover expected fluctuations.
-.I Dbzagain
-is a variant of
-.I dbzinit
-for creating a new database as a new generation of an old database.
-The database files for
-.I oldbase
-must exist.
-.I Dbzagain
-is equivalent to calling
-.I dbzfresh
-with a
-.I size
-equal to the result of applying
-.I dbzsize
-to the largest number of entries in the
-.I oldbase
-database and its previous 10 generations.
-.PP
-When many accesses are being done by the same program,
-.I dbz
-is massively faster if its first hash table is in memory.
-If the ``pag_incore'' flag is set to INCORE_MEM,
-an attempt is made to read the table in when
-the database is opened, and
-.I dbzclose
-writes it out to disk again (if it was read successfully and
-has been modified).
-.I Dbzsetoptions
-can be used to set the 
-.B pag_incore 
-and 
-.B exists_incore 
-flag to new value which should be ``INCORE_NO'', ``INCORE_MEM'', or
-\&``INCORE_MMAP'' for the
-.B .hash
-and
-.B .index 
-files separately; this does not affect the status of a database that has 
-already been opened.  The default is ``INCORE_NO'' for the 
-.B .index 
-file and ``INCORE_MMAP'' for the 
-.B .hash 
-file.  The attempt to read the table in may fail due to memory shortage;
-in this case
-.I dbz
-fails with an error.
-.IR Store s
-to an in-memory database are not (in general) written out to the file
-until
-.IR dbzclose
-or
-.IR dbzsync ,
-so if robustness in the presence of crashes
-or concurrent accesses is crucial, in-memory databases
-should probably be avoided or the 
-.B writethrough
-option should be set to ``true'';
-.PP
-If the
-.B nonblock
-option is ``true'', then writes to the 
-.B .hash
-and 
-.B .index
-files will be done using non-blocking I/O.  This can be significantly faster if
-your platform supports non-blocking I/O with files.
-.PP
-.I Dbzsync
-causes all buffers etc. to be flushed out to the files.
-It is typically used as a precaution against crashes or concurrent accesses
-when a
-.IR dbz -using
-process will be running for a long time.
-It is a somewhat expensive operation,
-especially
-for an in-memory database.
-.PP
-Concurrent reading of databases is fairly safe,
-but there is no (inter)locking,
-so concurrent updating is not.
-.PP
-An open database occupies three
-.I stdio
-streams and two file descriptors;
-Memory consumption is negligible (except for
-.I stdio
-buffers) except for in-memory databases.
-.SH SEE ALSO
-dbm(3), history(5), libinn(3)
-.SH DIAGNOSTICS
-Functions returning
-.I bool
-values return ``true'' for success, ``false'' for failure.
-Functions returning
-.I off_t
-values return a value with
-.I \-1
-for failure.
-.I Dbzinit
-attempts to have
-.I errno
-set plausibly on return, but otherwise this is not guaranteed.
-An
-.I errno
-of
-.B EDOM
-from
-.I dbzinit
-indicates that the database did not appear to be in
-.I dbz
-format.
-.PP
-If 
-.SM DBZTEST
-is defined at compile-time then a 
-.I main()
-function will be included.  This will do performance tests and integrity test.
-.SH HISTORY
-The original
-.I dbz
-was written by
-Jon Zeeff (zeeff@b-tech.ann-arbor.mi.us).
-Later contributions by David Butler and Mark Moraes.
-Extensive reworking,
-including this documentation,
-by Henry Spencer (henry@zoo.toronto.edu) as
-part of the C News project.
-MD5 code borrowed from RSA.  Extensive reworking to remove backwards
-compatibility and to add hashes into dbz files by Clayton O'Neill (coneill@oneill.net)
-.SH BUGS
-.PP
-Unlike
-.IR dbm ,
-.I dbz
-will refuse 
-to 
-.I dbzstore
-with a key already in the database.
-The user is responsible for avoiding this.
-.PP
-The RFC5322 case mapper implements only a first approximation to the
-hideously-complex RFC5322 case rules.
-.PP
-.I Dbz
-no longer tries to be call-compatible with
-.I dbm
-in any way.
diff -Nurp inn-2.6.4/doc/man/distrib.pats.5 inn-2.6.5/doc/man/distrib.pats.5
--- inn-2.6.4/doc/man/distrib.pats.5	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/distrib.pats.5	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "DISTRIB.PATS 5"
-.TH DISTRIB.PATS 5 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH DISTRIB.PATS 5 "2022-02-18" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -157,7 +157,7 @@ should be an arbitrary integer greater t
 the file is only important if groups have equal weight (in which case, the
 first matching line will be used).
 .PP
-The second field is either the name of a newsgroup or a \fBuwildmat\fR\|(3)\-style
+The second field is either the name of a newsgroup or a \fIuwildmat\fR\-style
 pattern to specify a set of newsgroups.
 .PP
 The third field is the value that should be used for the Distribution:
@@ -181,8 +181,6 @@ in \fBdistributions\fR\|(5).
 .IX Header "HISTORY"
 Written by Rich \f(CW$alz\fR <rsalz@uunet.uu.net> for InterNetNews.  Converted to
 \&\s-1POD\s0 by Russ Allbery <eagle@eyrie.org>.
-.PP
-\&\f(CW$Id:\fR distrib.pats.pod 9767 2014\-12\-07 21:13:43Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
-\&\fBdistributions\fR\|(5), \fBinn.conf\fR\|(5), \fBnewsfeeds\fR\|(5), \fBnnrpd\fR\|(8), \fBuwildmat\fR\|(3).
+\&\fBdistributions\fR\|(5), \fBinn.conf\fR\|(5), \fBlibinn_uwildmat\fR\|(3), \fBnewsfeeds\fR\|(5), \fBnnrpd\fR\|(8).
diff -Nurp inn-2.6.4/doc/man/distributions.5 inn-2.6.5/doc/man/distributions.5
--- inn-2.6.4/doc/man/distributions.5	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/distributions.5	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "DISTRIBUTIONS 5"
-.TH DISTRIBUTIONS 5 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH DISTRIBUTIONS 5 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -178,8 +178,6 @@ if \fBdistrib.pats\fR\|(5) is correctly
 .SH "HISTORY"
 .IX Header "HISTORY"
 Written by Julien Elie for InterNetNews.
-.PP
-\&\f(CW$Id:\fR distributions.pod 9137 2010\-10\-29 18:09:12Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBdistrib.pats\fR\|(5), \fBnewsfeeds\fR\|(5), \fBnnrpd\fR\|(8).
diff -Nurp inn-2.6.4/doc/man/docheckgroups.8 inn-2.6.5/doc/man/docheckgroups.8
--- inn-2.6.4/doc/man/docheckgroups.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/docheckgroups.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "DOCHECKGROUPS 8"
-.TH DOCHECKGROUPS 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH DOCHECKGROUPS 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -313,8 +313,6 @@ The list of local newsgroups along with
 .SH "HISTORY"
 .IX Header "HISTORY"
 Documentation written by Julien Elie for InterNetNews.
-.PP
-\&\f(CW$Id:\fR docheckgroups.pod 8357 2009\-02\-27 17:56:00Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBactive\fR\|(5), \fBcontrolchan\fR\|(8), \fBctlinnd\fR\|(8), \fBmod\-active\fR\|(8), \fBnewsgroups\fR\|(5).
diff -Nurp inn-2.6.4/doc/man/domain.8 inn-2.6.5/doc/man/domain.8
--- inn-2.6.4/doc/man/domain.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/domain.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "DOMAIN 8"
-.TH DOMAIN 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH DOMAIN 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -186,8 +186,6 @@ If so, the example above should reflect
 .SH "HISTORY"
 .IX Header "HISTORY"
 This documentation was written by Jeffrey M.\ Vinocur <jeff@litech.org>.
-.PP
-\&\f(CW$Id:\fR domain.pod 8200 2008\-11\-30 13:31:30Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBnnrpd\fR\|(8), \fBreaders.conf\fR\|(5)
diff -Nurp inn-2.6.4/doc/man/expire.8 inn-2.6.5/doc/man/expire.8
--- inn-2.6.4/doc/man/expire.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/expire.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "EXPIRE 8"
-.TH EXPIRE 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH EXPIRE 8 "2022-02-18" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -186,7 +186,7 @@ to the specified \fIfile\fR.
 .IP "\fB\-h\fR \fIfile\fR" 4
 .IX Item "-h file"
 To specify an alternate input text history file, use the \fB\-h\fR flag.
-\&\fBexpire\fR uses the old \fBdbz\fR\|(3) database to determine the size of the
+\&\fBexpire\fR uses the old \fIdbz\fR database to determine the size of the
 new one.  (If the \fB\-d\fR flag is not used, the output filename will be
 the same as the input filename with an extension of \f(CW\*(C`.n\*(C'\fR.)
 .Sp
@@ -267,9 +267,7 @@ is specified, the file \fIpathetc\fR/exp
 .IX Header "HISTORY"
 Written by Rich \f(CW$alz\fR <rsalz@uunet.uu.net> for InterNetNews.  Converted to
 \&\s-1POD\s0 by Julien Elie.
-.PP
-\&\f(CW$Id:\fR expire.pod 8573 2009\-08\-18 13:49:54Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
-\&\fBctlinnd\fR\|(8), \fBdbz\fR\|(3), \fBexpire.ctl\fR\|(5), \fBhistory\fR\|(5), \fBinn.conf\fR\|(5), \fBinnd\fR\|(8),
-\&\fBinndcomm\fR\|(3), \fBnews.daily\fR\|(8).
+\&\fBctlinnd\fR\|(8), \fBexpire.ctl\fR\|(5), \fBhistory\fR\|(5), \fBinn.conf\fR\|(5), \fBinnd\fR\|(8), \fBlibinn_dbz\fR\|(3),
+\&\fBlibinn_inndcomm\fR\|(3), \fBnews.daily\fR\|(8).
diff -Nurp inn-2.6.4/doc/man/expire.ctl.5 inn-2.6.5/doc/man/expire.ctl.5
--- inn-2.6.4/doc/man/expire.ctl.5	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/expire.ctl.5	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "EXPIRE.CTL 5"
-.TH EXPIRE.CTL 5 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH EXPIRE.CTL 5 "2022-02-18" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -171,6 +171,7 @@ where <days> is a decimal number that sp
 a history record for a given message-ID is retained (from its original
 posting time), regardless of whether the article is present in the spool.
 (History entries for articles still present in the spool are always retained.)
+Setting it to \f(CW0\fR means history records will be retained forever.
 .PP
 The primary reason to retain a record of old articles is in case a peer
 offers old articles that were previously accepted but have already
@@ -202,7 +203,7 @@ All lines must be in the correct format
 same file.
 .PP
 Normally, a rule matches a newsgroup through the combination of the
-<pattern> and <flag> fields.  <pattern> is a \fBuwildmat\fR\|(3)\-style pattern,
+<pattern> and <flag> fields.  <pattern> is a \fIuwildmat\fR\-style pattern,
 specifying the newsgroups to which the line is applied.  Note that the
 last matching entry will be used, so general patterns (such as defaults
 for all groups where <pattern> is \f(CW\*(C`*\*(C'\fR) should appear at the beginning of
@@ -316,9 +317,7 @@ When \fIgroupbaseexpiry\fR is false, for
 .IX Header "HISTORY"
 Written by Rich \f(CW$alz\fR <rsalz@uunet.uu.net> for InterNetNews.  Converted to
 \&\s-1POD\s0 by Russ Allbery <eagle@eyrie.org>.
-.PP
-\&\f(CW$Id:\fR expire.ctl.pod 9767 2014\-12\-07 21:13:43Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
-\&\fBexpire\fR\|(8), \fBexpireover\fR\|(8), \fBinn.conf\fR\|(5), \fBinnd\fR\|(8), \fBnews.daily\fR\|(8),
-\&\fBstorage.conf\fR\|(5), \fBuwildmat\fR\|(3).
+\&\fBexpire\fR\|(8), \fBexpireover\fR\|(8), \fBinn.conf\fR\|(5), \fBinnd\fR\|(8), \fBlibinn_uwildmat\fR\|(3),
+\&\fBnews.daily\fR\|(8), \fBstorage.conf\fR\|(5).
diff -Nurp inn-2.6.4/doc/man/expireover.8 inn-2.6.5/doc/man/expireover.8
--- inn-2.6.4/doc/man/expireover.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/expireover.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "EXPIREOVER 8"
-.TH EXPIREOVER 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH EXPIREOVER 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -267,8 +267,6 @@ when they first enter the newsgroup.
 Written by Rob Robertson <rob@violet.berkeley.edu> and Rich \f(CW$alz\fR
 <rsalz@uunet.uu.net> (with help from Dave Lawrence <tale@uunet.uu.net>)
 for InterNetNews.
-.PP
-\&\f(CW$Id:\fR expireover.pod 8571 2009\-08\-17 19:10:07Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBactive\fR\|(5), \fBctlinnd\fR\|(8), \fBexpire\fR\|(8), \fBexpire.ctl\fR\|(5), \fBinn.conf\fR\|(5),
diff -Nurp inn-2.6.4/doc/man/expirerm.8 inn-2.6.5/doc/man/expirerm.8
--- inn-2.6.4/doc/man/expirerm.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/expirerm.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "EXPIRERM 8"
-.TH EXPIRERM 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH EXPIRERM 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -159,8 +159,6 @@ sent to the news administrator.  If ther
 .IX Header "HISTORY"
 Written by Landon Curt Noll <chongo@toad.com> and Rich \f(CW$alz\fR
 <rsalz@uunet.uu.net>.  Converted to \s-1POD\s0 by Julien Elie.
-.PP
-\&\f(CW$Id:\fR expirerm.pod 8573 2009\-08\-18 13:49:54Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBexpire\fR\|(8), \fBfastrm\fR\|(8), \fBnewslog\fR\|(5).
diff -Nurp inn-2.6.4/doc/man/fastrm.1 inn-2.6.5/doc/man/fastrm.1
--- inn-2.6.4/doc/man/fastrm.1	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/fastrm.1	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "FASTRM 1"
-.TH FASTRM 1 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH FASTRM 1 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -309,8 +309,6 @@ general fast file removal program.
 .IX Header "HISTORY"
 \&\fBfastrm\fR was originally written by <kre@munnari.oz.au>.  This manual page
 was rewritten in \s-1POD\s0 by Russ Allbery <eagle@eyrie.org> for InterNetNews.
-.PP
-\&\f(CW$Id:\fR fastrm.pod 9767 2014\-12\-07 21:13:43Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBexpirerm\fR\|(8).
diff -Nurp inn-2.6.4/doc/man/filechan.8 inn-2.6.5/doc/man/filechan.8
--- inn-2.6.4/doc/man/filechan.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/filechan.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,149 +1,250 @@
-.\" $Revision: 5909 $
-.TH FILECHAN 8
-.SH NAME
-filechan \- file-writing backend for InterNetNews
-.SH SYNOPSIS
-.B filechan
-[
-.BI \-d " directory"
-]
-[
-.BI \-f " num_fields"
-]
-[
-.BI \-m " mapfile"
-]
-[
-.BI \-p " pidfile"
-]
-.SH DESCRIPTION
-.I Filechan
-reads lines from standard input and copies certain fields in
-each line into files named by other fields within the line.
-.I Filechan
-is intended to be called by
-.IR innd (8)
-as a channel feed.
-(It is not a full exploder and does not accept commands; see
-.IR newsfeeds (5)
-for a description of the difference, and
-.IR buffchan (8)
-for an exploder program.)
-.PP
-.I Filechan
-input is interpreted as a sequence of lines.
-Each line contains a fixed number of initial fields, followed by a
-variable number of filename fields.
-All fields in a line are separated by whitespace.
-The default number of initial fields is one.
-.PP
-For each line of input,
-.I filechan
-writes the initial fields, separated by whitespace and followed by a
-newline, to each of the files named in the filename fields.
-When writing to a file,
-.I filechan
-opens it in append mode and tries to lock it and change the
-ownership to the user and group who owns the directory where the file is
-being written.
-.PP
-Because the time window in which a file is open is very small, complicated
-flushing and locking protocols are not needed; a
-.IR mv (1)
-followed by a
-.IR sleep (1)
-for a couple of seconds is sufficient.
-.SH OPTIONS
-.TP
-.B \-f num_fields
-The ``\fB\-f\fP'' flag may be
-used to specify a different number of initial fields.
-.TP
-.B \-d directory
-By default,
-.I filechan
-writes its output into the directory
-.IR <pathoutgoing\ in\ inn.conf> .
-The ``\fB\-d\fP'' flag may be used to specify a directory the program should
-change to before starting.
-.TP
-.B \-p pidfile
-If the ``\fB\-p\fP'' flag is used, the program will write a line containing
-its process ID (in text) to the specified file.
-.TP
-.B \-m mapfile
-A map file may be specified by using the ``\fB\-m\fP'' flag.
-Blank lines and lines starting with a number sign (``#'') are ignored.
-All other lines should have two host names separated by a colon.
-The first field is the name that may appear in the input stream;
-the second field names the file to be used when the name in the first
-field appears.
-For example, the following map file may be used to map the short
-names used in the example below to the full domain names:
-.PP
-.RS
-.nf
-# This is a comment
-uunet:news.uu.net
-foo:foo.com
-munnari:munnari.oz.au
-.fi
-.RE
-.SH EXAMPLES
-If
-.I filechan
-is invoked with ``\fB\-f 2\fP'' and given the following input:
-.PP
-.RS
-.nf
-news/software/b/132 <1643@munnari.oz.au> foo uunet
-news/software/b/133 <102060@litchi.foo.com> uunet munnari
-comp/sources/unix/2002 <999@news.foo.com> foo uunet munnari
-.fi
-.RE
-.PP
-Then the file
-.I foo
-will have these lines:
-.PP
-.RS
-.nf
-news/software/b/132 <1643@munnari.oz.au>
-comp/sources/unix/2002 <999@news.foo.com>
-.fi
-.RE
-.sp
-the file
-.I munnari
-will have these lines:
-.PP
-.RS
-.nf
-news/software/b/133 <102060@litchi.foo.com>
-comp/sources/unix/2002 <999@news.foo.com>
-.fi
-.RE
-.sp
-and the file
-.I uunet
-will have these lines:
-.PP
-.RS
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
 .nf
-news/software/b/132 <1643@munnari.oz.au>
-news/software/b/133 <102060@litchi.foo.com>
-comp/sources/unix/2002 <999@news.foo.com>
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
 .fi
-.RE
-.SH HISTORY
-Written by Robert Elz <kre@munnari.oz.au>, flags added by Rich $alz
-<rsalz@uunet.uu.net>.
-.de R$
-This is revision \\$3, dated \\$4.
 ..
-.R$ $Id: filechan.8 5909 2002-12-03 05:17:18Z vinocur $
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+.    ds C`
+.    ds C'
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\"
+.\" If the F register is >0, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
+..
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+.    if \nF \{\
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
+..
+.        if !\nF==2 \{\
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
+.\}
+.rr rF
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "FILECHAN 8"
+.TH FILECHAN 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+filechan \- File\-writing backend for INN
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+\&\fBfilechan\fR [\fB\-d\fR \fIdirectory\fR] [\fB\-f\fR \fInum-fields\fR] [\fB\-m\fR \fImap-file\fR]
+[\fB\-p\fR \fIpid-file\fR]
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\fBfilechan\fR reads lines from standard input and copies the initial fields in
+each line to the files named by the remaining fields on the line.  \fBfilechan\fR
+is intended to be called by \fBinnd\fR as a channel feed.  (It is not a full
+exploder and does not accept commands; see \fBnewsfeeds\fR\|(5) for a description
+of the difference, and \fBbuffchan\fR\|(8) for an exploder program.)
+.PP
+The input is interpreted as a sequence of lines.  Each line contains a fixed
+number of initial fields, followed by a variable number of filename fields.
+All fields in a line are separated by whitespace and do not contain any
+whitespace.  The default number of initial fields is one.
+.PP
+For each line of input, \fBfilechan\fR writes the initial fields, separated
+by a space and followed by a newline, to each of the files named in the
+filename fields.  When writing to a file, \fBfilechan\fR opens it in append
+mode and tries to lock it and change the ownership to the user and group
+owning the directory where the file is being written.
+.PP
+Because the time window in which a file is open is very small, complicated
+flushing and locking protocols have not been implemented and are not
+necessarily needed for the way \fBfilechan\fR is called and works; \fBmv\fR\|(1)
+followed by \fBsleep\fR\|(1) for a couple of seconds is sufficient.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+.IP "\fB\-d\fR \fIdirectory\fR" 4
+.IX Item "-d directory"
+By default, \fBfilechan\fR writes its output into the \fIpathoutgoing\fR directory.
+This flag may be used to specify a directory the program should change to
+before starting.
+.IP "\fB\-f\fR \fInum-fields\fR" 4
+.IX Item "-f num-fields"
+This flag specifies a different number of initial fields.
+.IP "\fB\-m\fR \fImap-file\fR" 4
+.IX Item "-m map-file"
+A map file may be specified by using this flag.  Blank lines and lines
+starting with a number sign (\f(CW\*(C`#\*(C'\fR) are ignored.  All other lines should have
+two host names separated by a colon.  The first field is the name that may
+appear in the input stream; the second field names the file to be used when
+the name in the first field appears.
+.Sp
+For example, the following map file may be used to map the short names used
+in the example below to the full domain names:
+.Sp
+.Vb 4
+\&    # This is a comment.
+\&    uunet:news.uu.net
+\&    foo:foo.com
+\&    munnari:munnari.oz.au
+.Ve
+.IP "\fB\-p\fR \fIpid-file\fR" 4
+.IX Item "-p pid-file"
+If this flag is used, \fBfilechan\fR will write a line containing its process \s-1ID\s0
+(in text) to the specified file.
+.SH "EXAMPLES"
+.IX Header "EXAMPLES"
+If \fBfilechan\fR is invoked with \f(CW\*(C`\-f 2\*(C'\fR and given the following input:
+.PP
+.Vb 3
+\&    news.software.nntp <1643@munnari.oz.au> foo uunet
+\&    news.software.nntp <102060@litchi.foo.com> uunet munnari
+\&    comp.sources.unix <999@news.foo.com> foo uunet munnari
+.Ve
+.PP
+then the file \fIfoo\fR in \fIpathoutgoing\fR will have these lines:
+.PP
+.Vb 2
+\&    news.software.nntp <1643@munnari.oz.au>
+\&    comp.sources.unix <999@news.foo.com>
+.Ve
+.PP
+the file \fImunnari\fR in \fIpathoutgoing\fR will have these lines:
+.PP
+.Vb 2
+\&    news.software.nntp <102060@litchi.foo.com>
+\&    comp.sources.unix <999@news.foo.com>
+.Ve
+.PP
+and the file \fIuunet\fR in \fIpathoutgoing\fR will have these lines:
+.PP
+.Vb 3
+\&    news.software.nntp <1643@munnari.oz.au>
+\&    news.software.nntp <102060@litchi.foo.com>
+\&    comp.sources.unix <999@news.foo.com>
+.Ve
+.PP
+Using \fBfilechan\fR this way can be done in \fInewsfeeds\fR with for instance:
+.PP
+.Vb 4
+\&    foo:*,@misc.*:Ap,Tm:filechan!
+\&    munnari:*,@rec.*:Ap,Tm:filechan!
+\&    uunet:*:Ap,Tm:filechan!
+\&    filechan!:*:Tc,WGm*:<pathbin>/filechan \-f 2
+.Ve
+.PP
+It will generate the examples above.  See the \f(CW\*(C`W\*(C'\fR flag in \fBnewsfeeds\fR\|(5)
+for how to parameter the output.
+.SH "HISTORY"
+.IX Header "HISTORY"
+Written by Robert Elz <kre@munnari.oz.au>, flags added by Rich \f(CW$alz\fR
+<rsalz@uunet.uu.net>.  Rewritten into \s-1POD\s0 by Julien Elie.
 .SH "SEE ALSO"
-buffchan(8),
-inn.conf(5),
-innd(8),
-newsfeeds(5).
+.IX Header "SEE ALSO"
+\&\fBbuffchan\fR\|(8), \fBnewsfeeds\fR\|(5).
diff -Nurp inn-2.6.4/doc/man/getlist.1 inn-2.6.5/doc/man/getlist.1
--- inn-2.6.4/doc/man/getlist.1	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/getlist.1	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "GETLIST 1"
-.TH GETLIST 1 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH GETLIST 1 "2022-02-18" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -162,7 +162,7 @@ For more information on the formats of t
 The listing files other than the \fIactive\fR file are common extensions to the
 \&\s-1NNTP\s0 protocol and may not be available on all servers.  For instance, \f(CW\*(C`counts\*(C'\fR
 \&\f(CW\*(C`distributions\*(C'\fR, \f(CW\*(C`headers\*(C'\fR, \f(CW\*(C`moderators\*(C'\fR, \f(CW\*(C`motd\*(C'\fR, \f(CW\*(C`overview.fmt\*(C'\fR and
-\&\f(CW\*(C`subscriptions\*(C'\fR, amongst other, may be available.  Moreover, a \fBuwildmat\fR\|(3)
+\&\f(CW\*(C`subscriptions\*(C'\fR, amongst other, may be available.  Moreover, a \fIuwildmat\fR
 pattern \fIpattern\fR may also be usable for some of these listing files.
 .PP
 For more information on the formats of these files, see \fBdistributions\fR\|(5),
@@ -177,7 +177,7 @@ is mentioned just before the flag of thi
 .PP
 The \fIpattern\fR parameter may be used with a \fIlist\fR value of \f(CW\*(C`active\*(C'\fR,
 \&\f(CW\*(C`active.times\*(C'\fR or \f(CW\*(C`newsgroups\*(C'\fR to limit the output.  If given, only
-entries corresponding to newsgroups that match the \fBuwildmat\fR\|(3) pattern
+entries corresponding to newsgroups that match the \fIuwildmat\fR pattern
 \&\fIpattern\fR will be printed.
 .PP
 If the \fIlist\fR parameter is \f(CW\*(C`active\*(C'\fR, a third parameter, \fItypes\fR, may
@@ -234,10 +234,8 @@ to protect it from the shell.
 .IX Header "HISTORY"
 Written by Landon Curt Noll <chongo@toad.com> for InterNetNews.  Rewritten
 in \s-1POD\s0 by Russ Allbery <eagle@eyrie.org>.
-.PP
-\&\f(CW$Id:\fR getlist.pod 9767 2014\-12\-07 21:13:43Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBactive\fR\|(5), \fBactive.times\fR\|(5), \fBdistrib.pats\fR\|(5), \fBdistributions\fR\|(5), \fBinn.conf\fR\|(5),
-\&\fBmoderators\fR\|(5), \fBmotd.news\fR\|(5), \fBnewsgroups\fR\|(5), \fBnnrpd\fR\|(8), \fBpasswd.nntp\fR\|(5),
-\&\fBsubscriptions\fR\|(5), \fBuwildmat\fR\|(3).
+\&\fBlibinn_uwildmat\fR\|(3), \fBmoderators\fR\|(5), \fBmotd.news\fR\|(5), \fBnewsgroups\fR\|(5), \fBnnrpd\fR\|(8),
+\&\fBpasswd.nntp\fR\|(5), \fBsubscriptions\fR\|(5).
diff -Nurp inn-2.6.4/doc/man/grephistory.1 inn-2.6.5/doc/man/grephistory.1
--- inn-2.6.4/doc/man/grephistory.1	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/grephistory.1	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "GREPHISTORY 1"
-.TH GREPHISTORY 1 "2016-10-07" "INN 2.6.4" "InterNetNews Documentation"
+.TH GREPHISTORY 1 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -242,8 +242,6 @@ It matches the number recorded in histor
 .IX Header "HISTORY"
 Written by Rich \f(CW$alz\fR <rsalz@uunet.uu.net> for InterNetNews.  Rewritten in
 \&\s-1POD\s0 by Russ Allbery <eagle@eyrie.org>.
-.PP
-\&\f(CW$Id:\fR grephistory.pod 9971 2015\-12\-10 20:30:10Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBhistory\fR\|(5), \fBinn.conf\fR\|(5), \fBsm\fR\|(1).
diff -Nurp inn-2.6.4/doc/man/history.5 inn-2.6.5/doc/man/history.5
--- inn-2.6.4/doc/man/history.5	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/history.5	2022-02-18 20:36:57.000000000 +0100
@@ -1,91 +1,202 @@
-.\" $Revision: 10283 $
-.TH HISTORY 5
-.SH NAME
-history \- record of current and recently expired Usenet articles
-.SH DESCRIPTION
-The file
-.I <pathdb in inn.conf>/history
-keeps a record of all articles currently stored in the news system,
-as well as those that have been received but since expired.
-In a typical production environment, this file will be many megabytes.
-.PP
-The file consists of text lines.
-Each line corresponds to one article.
-The file is normally kept sorted in the order in which articles are
-received, although this is not a requirement.
-.IR Innd (8)
-appends a new line each time it files an article, and
-.IR expire (8)
-builds a new version of the file by removing old articles and purging
-old entries.
-.PP
-Each line consists of two or three fields separated by a tab, shown below
-as
-.IR \et :
-.RS
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
 .nf
-[Hash]         \et   date
-[Hash]         \et   date   \et   token
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
 .fi
-.RE
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+.    ds C`
+.    ds C'
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\"
+.\" If the F register is >0, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
+..
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+.    if \nF \{\
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
+..
+.        if !\nF==2 \{\
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
+.\}
+.rr rF
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "HISTORY 5"
+.TH HISTORY 5 "2022-02-18" "INN 2.6.5" "InterNetNews Documentation"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+history \- Record of current and recently expired Usenet articles
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+The file \fIpathdb\fR/history keeps a record of all articles currently
+stored in the news system, as well as those that have been received but
+since expired.  In a typical production environment, this file will be
+many megabytes.
 .PP
-The
-.I Hash
-field is the ASCII representation of the hash of the Message-ID header.  
-This is directly used for the key of the
-.IR dbz (3).
-.PP
-The
-.I date
-field consists of three sub-fields separated by a tilde.
-All sub-fields are the text representation of the number of seconds since
-the epoch \(em
-.IR i.e. ,
-a
-.IR time_t ;
-see
-.IR gettimeofday (2).
-The first sub-field is the article's arrival date.
-If copies of the article are still present then the second sub-field is
-either the value of the article's Expires header, or a hyphen if no
-expiration date was specified.
-If an article has been expired then the second sub-field will be a hyphen.
-The third sub-field is the value of the article's Date header, recording
-when the article was posted.
-.PP
-The
-.I token
-field is a token of the article.
-This field is empty if the article has been expired.
+The file consists of text lines.  Each line corresponds to one article.
+The file is normally kept sorted in the order in which articles are
+received, although this is not a requirement.  \fBinnd\fR appends a new
+line each time it files an article, and \fBexpire\fR builds a new version
+of the file by removing old articles and purging old entries.
+.PP
+Each line consists of two or three fields separated by a tab, shown
+below as \f(CW\*(C` \et \*(C'\fR:
+.PP
+.Vb 2
+\&    [hash] \et date
+\&    [hash] \et date \et @token@
+.Ve
+.PP
+The \fIhash\fR field is the \s-1ASCII\s0 representation of the hash of the
+Message-ID.  This is directly used for the key of the \fIdbz\fR.
+.PP
+The \fIdate\fR field consists of three sub-fields separated by a tilde.
+All sub-fields are the text representation of the number of seconds
+since the epoch, that is to say a \fItime_t\fR like in \f(CWgettimeofday(2)\fR.
+The first sub-field is the article's arrival date.  If copies of the
+article are still present, then the second sub-field is either the value
+of the article's Expires header field, or a hyphen if no expiration
+date was specified.  If an article has been expired, then the second
+sub-field will be a hyphen.  The third sub-field is the value of the
+article's Date header field, recording when the article was posted.
 .PP
-For example, an article whose Message-ID was
-<7q2saq$sal$1@isrv4.pa.vix.com>, posted on 26 Aug 1999 08:02:34 GMT and
-received at 26 Aug 1999 08:06:54 GMT, could have a
-history line (broken into three lines for display) like the
-following:
-.RS
-.nf
-[E6184A5BC2898A35A3140B149DE91D5C]  \et
-    935678987~-~935678821  \et
-    @030154574F00000000000007CE3B000004BA@
-.fi
-.RE
+The \fItoken\fR field is a token of the article.  This field is empty if
+the article has been expired.
 .PP
-In addition to the text file, there is a
-.IR dbz (3)
-database associated with the file that uses the Message-ID field as a key
-to determine the offset in the text file where the associated line begins.
-For historical reasons, the key includes the trailing \e0 byte
-(which is not stored in the text file).
-.SH HISTORY
-Written by Rich $alz <rsalz@uunet.uu.net> for InterNetNews.
-.de R$
-This is revision \\$3, dated \\$4.
-..
-.R$ $Id: history.5 10283 2018-05-14 12:43:05Z iulius $
+For example, an article whose Message-ID was
+<7q2saq$sal$1@isrv4.pa.vix.com>, posted on 26 Aug 1999 08:02:34 \s-1GMT\s0
+and received at 26 Aug 1999 08:06:54 \s-1GMT,\s0 could have a history line
+(broken into three lines for display) like the following:
+.PP
+.Vb 3
+\&    [E6184A5BC2898A35A3140B149DE91D5C] \et
+\&        935678987~\-~935678821 \et
+\&        @030154574F00000000000007CE3B000004BA@
+.Ve
+.PP
+In addition to the text file, there is a \fIdbz\fR database associated
+with the file that uses the Message-ID field as a key to determine the
+offset in the text file where the associated line begins.  For historical
+reasons, the key includes the trailing \f(CW\*(C`\e0\*(C'\fR byte (which is not stored
+in the text file).
+.SH "HISTORY"
+.IX Header "HISTORY"
+Written by Rich \f(CW$alz\fR <rsalz@uunet.uu.net> for InterNetNews.  Rewritten
+into \s-1POD\s0 by Julien Elie.
 .SH "SEE ALSO"
-dbz(3),
-expire(8),
-inn.conf(5),
-innd(8),
-makehistory(8).
+.IX Header "SEE ALSO"
+\&\fBexpire\fR\|(8), \fBinn.conf\fR\|(5), \fBinnd\fR\|(8), \fBlibinn_dbz\fR\|(3), \fBmakehistory\fR\|(8).
diff -Nurp inn-2.6.4/doc/man/ident.8 inn-2.6.5/doc/man/ident.8
--- inn-2.6.4/doc/man/ident.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/ident.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "IDENT 8"
-.TH IDENT 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH IDENT 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -191,8 +191,6 @@ network whose machines respond to ident
 .SH "HISTORY"
 .IX Header "HISTORY"
 This documentation was written by Jeffrey M.\ Vinocur <jeff@litech.org>.
-.PP
-\&\f(CW$Id:\fR ident.pod 8200 2008\-11\-30 13:31:30Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBnnrpd\fR\|(8), \fBreaders.conf\fR\|(5)
diff -Nurp inn-2.6.4/doc/man/incoming.conf.5 inn-2.6.5/doc/man/incoming.conf.5
--- inn-2.6.4/doc/man/incoming.conf.5	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/incoming.conf.5	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,13 +133,34 @@
 .\" ========================================================================
 .\"
 .IX Title "INCOMING.CONF 5"
-.TH INCOMING.CONF 5 "2018-01-28" "INN 2.6.4" "InterNetNews Documentation"
+.TH INCOMING.CONF 5 "2022-02-18" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
 .nh
 .SH "NAME"
 incoming.conf \- Configuration of incoming news feeds
+.SH "IN A NUTSHELL"
+.IX Header "IN A NUTSHELL"
+The \fIincoming.conf\fR file configures from which remote peers \fBinnd\fR accepts
+\&\s-1NNTP\s0 feeds.
+.PP
+A common entry to allow \f(CW\*(C`news.server.com\*(C'\fR as an incoming peer is:
+.PP
+.Vb 3
+\&    peer news.server.com {
+\&        hostname: "news.server.com"
+\&    }
+.Ve
+.PP
+The port used for incoming feeds is the one \fBinnd\fR is listening on.
+.PP
+After any changes, run \f(CW\*(C`inncheck\*(C'\fR to perform basic syntax checks, and reload
+this configuration file with the following command:
+.PP
+.Vb 1
+\&    ctlinnd reload incoming.conf \*(Aqnew peer\*(Aq
+.Ve
 .SH "DESCRIPTION"
 .IX Header "DESCRIPTION"
 The file \fIpathetc\fR/incoming.conf consists of three types of entries:
@@ -313,8 +334,6 @@ This key requires a boolean value.  It d
 .IX Header "HISTORY"
 Written by Fabien Tassin <fta@sofaraway.org> for InterNetNews.  Converted to
 \&\s-1POD\s0 by Julien Elie.
-.PP
-\&\f(CW$Id:\fR incoming.conf.pod 10179 2017\-09\-18 20:13:48Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
-\&\fBinn.conf\fR\|(5), \fBinnd\fR\|(8), \fBnewsfeeds\fR\|(5), \fBuwildmat\fR\|(3).
+\&\fBinn.conf\fR\|(5), \fBinnd\fR\|(8), \fBlibinn_uwildmat\fR\|(3), \fBnewsfeeds\fR\|(5).
diff -Nurp inn-2.6.4/doc/man/inews.1 inn-2.6.5/doc/man/inews.1
--- inn-2.6.4/doc/man/inews.1	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/inews.1	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "INEWS 1"
-.TH INEWS 1 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH INEWS 1 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -259,8 +259,6 @@ Unix news clients or by themselves.
 .IX Header "HISTORY"
 Written by Rich \f(CW$alz\fR <rsalz@uunet.uu.net> for InterNetNews.  Rewritten in
 \&\s-1POD\s0 by Russ Allbery <eagle@eyrie.org>.
-.PP
-\&\f(CW$Id:\fR inews.pod 9767 2014\-12\-07 21:13:43Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBinn.conf\fR\|(5), \fBpasswd.nntp\fR\|(5), \fBrnews\fR\|(1).
diff -Nurp inn-2.6.4/doc/man/inn-radius.conf.5 inn-2.6.5/doc/man/inn-radius.conf.5
--- inn-2.6.4/doc/man/inn-radius.conf.5	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/inn-radius.conf.5	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "INN-RADIUS.CONF 5"
-.TH INN-RADIUS.CONF 5 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH INN-RADIUS.CONF 5 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -228,8 +228,6 @@ The shared secret with the \s-1RADIUS\s0
 .IX Header "HISTORY"
 This documentation was written by Russ Allbery <eagle@eyrie.org> based on
 the comments in the sample \fIinn\-radius.conf\fR file by Yury B.\ Razbegin.
-.PP
-\&\f(CW$Id:\fR inn\-radius.conf.pod 9940 2015\-09\-04 12:58:15Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBradius\fR\|(8).
diff -Nurp inn-2.6.4/doc/man/inn.conf.5 inn-2.6.5/doc/man/inn.conf.5
--- inn-2.6.4/doc/man/inn.conf.5	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/inn.conf.5	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "INN.CONF 5"
-.TH INN.CONF 5 "2021-01-21" "INN 2.6.4" "InterNetNews Documentation"
+.TH INN.CONF 5 "2022-02-18" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -162,12 +162,12 @@ other lines specify parameters, and shou
 \&    <name>: <value>
 .Ve
 .PP
-(Any amount of whitespace can be put after the colon and is optional.)  If
-the value contains embedded whitespace or any of the characters \f(CW\*(C`[]<\*(C'\fR\*(L"\e:>,
-it must be enclosed in double quotes (\*(R"").  A backslash (\f(CW\*(C`\e\*(C'\fR) can be used
-to escape quotes and backslashes inside double quotes.  <name> is
-case-sensitive; \f(CW\*(C`server\*(C'\fR is not the same as \f(CW\*(C`Server\*(C'\fR or \f(CW\*(C`SERVER\*(C'\fR.
-(\fIinn.conf\fR parameters are generally all in lowercase.)
+(Any amount of whitespace can be put after the colon and is optional.)  If the
+value contains embedded whitespace or any of the characters \f(CW\*(C`[]<>{}"\e:;\*(C'\fR,
+it must be enclosed in double quotes ("").  A backslash (\f(CW\*(C`\e\*(C'\fR) can be used to
+escape quotes and backslashes inside double quotes.  <name> is case-sensitive;
+\&\f(CW\*(C`server\*(C'\fR is not the same as \f(CW\*(C`Server\*(C'\fR or \f(CW\*(C`SERVER\*(C'\fR.  (\fIinn.conf\fR parameters
+are generally all in lowercase.)
 .PP
 If <name> occurs more than once in the file, the first value is used.
 Some parameters specified in the file may be overridden by environment
@@ -510,8 +510,8 @@ be set.
 .ie n .IP """hisv6""" 4
 .el .IP "\f(CWhisv6\fR" 4
 .IX Item "hisv6"
-Stores history data in the \s-1INN\s0 history v6 format:  \fBhistory\fR\|(5) text
-file and a number of \fBdbz\fR\|(3) database files; this may be in true history
+Stores history data in the \s-1INN\s0 history v6 format: \fBhistory\fR\|(5) text
+file and a number of \fIdbz\fR database files; this may be in true history
 v6 format, or tagged hash format, depending on the build
 options.  Separation of these two is a project which has not yet been
 undertaken.
@@ -680,7 +680,7 @@ This setting is ignored unless \fIovmeth
 .IP "\fIovgrouppat\fR" 4
 .IX Item "ovgrouppat"
 If set, restricts the overview data stored by \s-1INN\s0 to only the newsgroups
-matching this comma-separated list of \fBuwildmat\fR\|(3) expressions.  Newsgroups not
+matching this comma-separated list of \fIuwildmat\fR expressions.  Newsgroups not
 matching this setting may not be readable, and if \fIgroupbaseexpiry\fR is
 set to true and the storage method for these newsgroups does not have
 self-expire functionality, storing overview data will fail.
@@ -1136,9 +1136,35 @@ The path to a file containing the server
 \&\s-1TLS\s0 clients.  This parameter is only used if \fBnnrpd\fR is built with \s-1TLS/SSL\s0
 support.  The default value is \fIpathetc\fR/cert.pem.
 .Sp
-Note that unlike Apache's \fISSLCertificateFile\fR directive, \fItlscertfile\fR
-should not contain a concatenation of certificates.  Instead, if you have
-a certificate authority root certificate, set \fItlscafile\fR to its path.
+If you want to use a complete certificate chain, you can directly put
+it in \fItlscertfile\fR (like Apache's \fISSLCertificateFile\fR directive).
+Alternately, you can put a single certificate in \fItlscertfile\fR and use
+\&\fItlscafile\fR for additional certificates needed to complete the chain,
+like a separate authority root certificate.
+.Sp
+More concretly, when using Let's\ Encrypt certificates, Certbot's
+files can be installed as follows:
+.Sp
+.Vb 3
+\&    tlscapath:      /etc/letsencrypt/live/news.server.com
+\&    tlscertfile:    /etc/letsencrypt/live/news.server.com/fullchain.pem
+\&    tlskeyfile:     /etc/letsencrypt/live/news.server.com/privkey.pem
+.Ve
+.Sp
+or:
+.Sp
+.Vb 4
+\&    tlscapath:      /etc/letsencrypt/live/news.server.com
+\&    tlscafile:      /etc/letsencrypt/live/news.server.com/chain.pem
+\&    tlscertfile:    /etc/letsencrypt/live/news.server.com/cert.pem
+\&    tlskeyfile:     /etc/letsencrypt/live/news.server.com/privkey.pem
+.Ve
+.Sp
+Make sure that the permission rights are properly set so that the
+news user or the news group can read these directories and files
+(typically, he should access \fI/etc/letsencrypt/live/news.server.com\fR and
+\&\fI/etc/letsencrypt/archive/news.server.com\fR where the real keys are located,
+and the private key should not be world-readable).
 .IP "\fItlskeyfile\fR" 4
 .IX Item "tlskeyfile"
 The path to a file containing the encryption key for the server
@@ -1203,10 +1229,10 @@ the server will choose following its own
 .IX Item "tlsprotocols"
 The list of \s-1TLS/SSL\s0 protocol versions to support.  Valid protocols are
 \&\fBSSLv2\fR, \fBSSLv3\fR, \fBTLSv1\fR, \fBTLSv1.1\fR, \fBTLSv1.2\fR and \fBTLSv1.3\fR.
-The default value is to only allow \s-1TLS\s0 protocols:
+The default value is to only allow secure \s-1TLS\s0 protocols:
 .Sp
 .Vb 1
-\&    tlsprotocols: [ TLSv1 TLSv1.1 TLSv1.2 TLSv1.3 ]
+\&    tlsprotocols: [ TLSv1.2 TLSv1.3 ]
 .Ve
 .Sp
 Note that the listed protocols will be enabled only if the OpenSSL
@@ -1214,6 +1240,9 @@ library \s-1INN\s0 has been built with,
 protocols more recent than TLSv1.3, they will be automatically enabled
 (which anyway is fine regarding security, as newer protocols are supposed
 to be more secure).
+.Sp
+\&\f(CW\*(C`SSLv2\*(C'\fR was formally deprecated by \s-1RFC\s0\ 6176 in 2011, \f(CW\*(C`SSLv3\*(C'\fR
+by \s-1RFC\s0\ 7568 in 2015, \f(CW\*(C`TLSv1.0\*(C'\fR and \f(CW\*(C`TLSv1.1\*(C'\fR by \s-1RFC\s0\ 8996 in 2021.
 .SS "Monitoring"
 .IX Subsection "Monitoring"
 These parameters control the behavior of \fBinnwatch\fR\|(8), the program that
@@ -1414,6 +1443,12 @@ environments, see \fBsetbuf\fR\|(3)).
 .IX Item "maxforks"
 How many times to attempt a \fBfork\fR\|(2) before giving up.  The default value
 is \f(CW10\fR.
+.IP "\fImaxlisten\fR" 4
+.IX Item "maxlisten"
+How many incoming connections can queue up in the listen backlog for
+\&\fBinnd\fR, \fBnnrpd\fR and the \f(CW\*(C`ovdb\*(C'\fR overview storage method.  The default
+value is \f(CW128\fR and should be raised in case you notice that some
+connection requests get dropped.
 .IP "\fInicekids\fR" 4
 .IX Item "nicekids"
 If set to anything other than \f(CW0\fR, all child processes of \fBinnd\fR\|(8) will
@@ -1562,11 +1597,10 @@ values for reference.
 .IX Header "HISTORY"
 Written by Rich \f(CW$alz\fR <rsalz@uunet.uu.net> for InterNetNews and since
 modified, updated, and reorganized by innumerable other people.
-.PP
-\&\f(CW$Id:\fR inn.conf.pod 10523 2021\-01\-17 21:52:00Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
-\&\fBinews\fR\|(1), \fBinnd\fR\|(8), \fBinnwatch\fR\|(8), \fBmakehistory\fR\|(8), \fBnnrpd\fR\|(8), \fBrnews\fR\|(1).
+\&\fBinews\fR\|(1), \fBinnd\fR\|(8), \fBinnwatch\fR\|(8), \fBlibinn_dbz\fR\|(3), \fBlibinn_uwildmat\fR\|(3),
+\&\fBmakehistory\fR\|(8), \fBnnrpd\fR\|(8), \fBrnews\fR\|(1).
 .PP
 Nearly every program in \s-1INN\s0 uses this file to one degree or another.  The
 above are just the major and most frequently mentioned ones.
diff -Nurp inn-2.6.4/doc/man/innbind.8 inn-2.6.5/doc/man/innbind.8
--- inn-2.6.4/doc/man/innbind.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/innbind.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "INNBIND 8"
-.TH INNBIND 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH INNBIND 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -343,8 +343,6 @@ to bind the IPv4 socket on file descript
 .SH "HISTORY"
 .IX Header "HISTORY"
 Written by Russ Allbery <eagle@eyrie.org> for InterNetNews.
-.PP
-\&\f(CW$Id:\fR innbind.pod 9767 2014\-12\-07 21:13:43Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBinet_aton\fR\|(3), \fBinet_pton\fR\|(3), \fBinnd\fR\|(8), \fBnnrpd\fR\|(8).
diff -Nurp inn-2.6.4/doc/man/inncheck.8 inn-2.6.5/doc/man/inncheck.8
--- inn-2.6.4/doc/man/inncheck.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/inncheck.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "INNCHECK 8"
-.TH INNCHECK 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH INNCHECK 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -278,8 +278,6 @@ relevant lines yourself, or merge the va
 .IX Header "HISTORY"
 Written by Brendan Kehoe <brendan@cygnus.com> and Rich Salz
 <rsalz@uunet.uu.net> for InterNetNews.  Converted to \s-1POD\s0 by Julien Elie.
-.PP
-\&\f(CW$Id:\fR inncheck.pod 9428 2012\-06\-15 18:18:45Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBactive\fR\|(5), \fBcontrol.ctl\fR\|(5), \fBexpire.ctl\fR\|(5), \fBhistory\fR\|(5), \fBincoming.conf\fR\|(5),
diff -Nurp inn-2.6.4/doc/man/innconfval.1 inn-2.6.5/doc/man/innconfval.1
--- inn-2.6.4/doc/man/innconfval.1	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/innconfval.1	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "INNCONFVAL 1"
-.TH INNCONFVAL 1 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH INNCONFVAL 1 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -232,8 +232,6 @@ Print \s-1INN\s0's version.  This is equ
 .SH "HISTORY"
 .IX Header "HISTORY"
 Written by Rich \f(CW$alz\fR <rsalz@uunet.uu.net> for InterNetNews.
-.PP
-\&\f(CW$Id:\fR innconfval.pod 9288 2011\-07\-22 23:08:57Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBinn.conf\fR\|(5), \fBINN::Config\fR\|(3pm).
diff -Nurp inn-2.6.4/doc/man/innd.8 inn-2.6.5/doc/man/innd.8
--- inn-2.6.4/doc/man/innd.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/innd.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "INND 8"
-.TH INND 8 "2021-01-21" "INN 2.6.4" "InterNetNews Documentation"
+.TH INND 8 "2022-02-18" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -238,6 +238,11 @@ would open the server up for all sorts o
 value of \fIartcutoff\fR in \fIinn.conf\fR.  This option, if given, overrides
 the value of that setting.  If \fIdays\fR is 0, this check is suppressed and
 \&\fBinnd\fR will accept articles regardless of how old they are.
+.Sp
+Note that rejected articles are remembered during the number of days
+specified by the \f(CW\*(C`/remember/\*(C'\fR line in \fBexpire.ctl\fR\|(5).  You'll have to
+wait that number of days before being able to inject again an article
+with the same previously rejected Message-ID.
 .IP "\fB\-C\fR" 4
 .IX Item "-C"
 This flag tells \fBinnd\fR to accept and propagate but not actually process
@@ -602,10 +607,8 @@ disables source routing.
 .SH "HISTORY"
 .IX Header "HISTORY"
 Written by Rich \f(CW$alz\fR <rsalz@uunet.uu.net> for InterNetNews.
-.PP
-\&\f(CW$Id:\fR innd.pod 10523 2021\-01\-17 21:52:00Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
-\&\fBactive\fR\|(5), \fBctlinnd\fR\|(8), \fBdbz\fR\|(3), \fBhistory\fR\|(5), \fBincoming.conf\fR\|(5), \fBinn.conf\fR\|(5),
-\&\fBinnbind\fR\|(8), \fBinnfeed\fR\|(8), \fBinnstat\fR\|(8), \fBnewsfeeds\fR\|(5), \fBnnrpd\fR\|(8), \fBrnews\fR\|(1),
-\&\fBsyslog\fR\|(3).
+\&\fBactive\fR\|(5), \fBctlinnd\fR\|(8), \fBhistory\fR\|(5), \fBincoming.conf\fR\|(5), \fBinn.conf\fR\|(5), \fBinnbind\fR\|(8),
+\&\fBinnfeed\fR\|(8), \fBinnstat\fR\|(8), \fBlibinn_dbz\fR\|(3), \fBlibinn_inndcomm\fR\|(3), \fBnewsfeeds\fR\|(5),
+\&\fBnnrpd\fR\|(8), \fBrnews\fR\|(1), \fBsyslog\fR\|(3).
diff -Nurp inn-2.6.4/doc/man/inndcomm.3 inn-2.6.5/doc/man/inndcomm.3
--- inn-2.6.4/doc/man/inndcomm.3	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/inndcomm.3	1970-01-01 01:00:00.000000000 +0100
@@ -1,142 +0,0 @@
-.\" $Revision: 7901 $
-.TH INNDCOMM 3
-.SH NAME
-inndcomm \- INND communication part of InterNetNews library
-.SH SYNOPSIS
-.nf
-.ta \w'    unsigned long    'u
-.B
-#include "inn/inndcomm.h"
-
-.B "int"
-.B "ICCopen()"
-
-.B "int"
-.B "ICCclose()"
-
-.B "void"
-.B "ICCsettimeout(i)"
-.B "    int	i;"
-
-.B "int"
-.B "ICCcommand(cmd, argv, replyp)"
-.B "    char	cmd;"
-.B "    char	*argv[];"
-.B "    char	**replyp;"
-
-.B "int"
-.B "ICCcancel(mesgid)"
-.B "    char	*mesgid;"
-
-.B "int"
-.B "ICCreserve(why)"
-.B "    char	*why;"
-
-.B "int"
-.B "ICCpause(why)"
-.B "    char	*why;"
-
-.B "int"
-.B "ICCgo(why)"
-.B "    char	*why;"
-
-.B "extern char *ICCfailure;"
-.fi
-.SH DESCRIPTION
-The routines described in this manual page are part of the InterNetNews
-library,
-.IR libinn (3).
-They are used to send commands to a running
-.IR innd (8)
-daemon on the local host.
-The letters ``ICC'' stand for
-.IR I nnd
-.IR C ontrol
-.IR C ommand.
-.PP
-.I ICCopen
-creates a
-Unix-domain datagram socket and binds it to the server's control socket, if
-.I <HAVE_UNIX_DOMAIN_SOCKETS in include/config.h>
-is defined.  Otherwise it creates
-a named pipe for communicating with the server.
-It returns \-1 on failure or zero on success.
-This routine must be called before any other routine.
-.PP
-.I ICCclose
-closes any descriptors that have been created by
-.IR ICCopen .
-It returns \-1 on failure or zero on success.
-.PP
-.I ICCsettimeout
-can be called before any of the following routines to determine how long
-the library should wait before giving up on getting the server's reply.
-This is done by setting and catching a SIGALRM
-.IR signal (2).
-If the timeout is less then zero then no reply will be waited for.
-The SC_SHUTDOWN, SC_XABORT, and SC_XEXEC commands do not get a reply either.
-The default, which can be obtained by setting the timeout to zero, is to
-wait until the server replies.
-.PP
-.I ICCcommand
-sends the command
-.I cmd
-with parameters
-.I argv
-to the server.
-It returns \-1 on error.
-If the server replies, and
-.I replyp
-is not NULL, it will be filled in with an allocated buffer that contains
-the full text of the server's reply.
-This buffer is a string in the form of ``<digits><space><text>''
-where ``digits'' is the text value of the recommended exit code;
-zero indicates success.
-Replies longer then 4000 bytes will be truncated.
-The possible values of
-.I cmd
-are defined in the ``inn/inndcomm.h'' header file.
-The parameters for each command are described in
-.IR ctlinnd (8).
-This routine returns \-1 on communication failure, or the exit status
-sent by the server which will never be negative.
-.PP
-.I ICCcancel
-sends a ``cancel'' message to the server.
-.I Mesgid
-is the Message-ID of the article that should be cancelled.
-The return value is the same as for
-.IR ICCcommand .
-.PP
-.IR ICCpause ,
-.IR ICCreserve ,
-and
-.I ICCgo
-send a ``pause,'' ``reserve,'' or ``go'' command to the server, respectively.
-If
-.I ICCreserve
-is used, then the
-.I why
-value used in the
-.I ICCpause
-invocation must match; the value used in the
-.I ICCgo
-invocation must always match that the one used in the
-.I ICCpause
-invocation.
-The return value for all three routines is the same as for
-.IR ICCcommand .
-.PP
-If any routine described above fails, the
-.I ICCfailure
-variable will identify the system call that failed.
-.SH HISTORY
-Written by Rich $alz <rsalz@uunet.uu.net> for InterNetNews.
-.de R$
-This is revision \\$3, dated \\$4.
-..
-.R$ $Id: inndcomm.3 7901 2008-06-22 20:34:26Z iulius $
-.SH "SEE ALSO"
-ctlinnd(8),
-innd(8),
-libinn(3).
diff -Nurp inn-2.6.4/doc/man/inndf.8 inn-2.6.5/doc/man/inndf.8
--- inn-2.6.4/doc/man/inndf.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/inndf.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "INNDF 8"
-.TH INNDF 8 "2018-05-14" "INN 2.6.4" "InterNetNews Documentation"
+.TH INNDF 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -247,8 +247,6 @@ newsadmin.
 Katsuhiro Kondou added the \fB\-n\fR and \fB\-o\fR options.  Russ Allbery added
 reporting of percentage free disk space.  Support for \fB\-f\fR and \fB\-F\fR was
 added by Fabien Tassin <fta@sofaraway.org>.
-.PP
-\&\f(CW$Id:\fR inndf.pod 10283 2018\-05\-14 12:43:05Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBdf\fR\|(1), \fBinnwatch.ctl\fR\|(5), \fBinnstat\fR\|(8).
diff -Nurp inn-2.6.4/doc/man/innfeed.8 inn-2.6.5/doc/man/innfeed.8
--- inn-2.6.4/doc/man/innfeed.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/innfeed.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "INNFEED 8"
-.TH INNFEED 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH INNFEED 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -557,8 +557,6 @@ Written by James Brister <brister@vix.co
 .PP
 Earlier versions of \fBinnfeed\fR (up to 0.10.1) were shipped separately;
 \&\fBinnfeed\fR is now part of \s-1INN\s0 and shares the same version number.
-.PP
-\&\f(CW$Id:\fR innfeed.pod 9588 2013\-12\-19 17:46:41Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBctlinnd\fR\|(8), \fBinn.conf\fR\|(5), \fBinnfeed.conf\fR\|(5), \fBinnd\fR\|(8), \fBprocbatch\fR\|(8).
diff -Nurp inn-2.6.4/doc/man/innfeed.conf.5 inn-2.6.5/doc/man/innfeed.conf.5
--- inn-2.6.4/doc/man/innfeed.conf.5	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/innfeed.conf.5	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,13 +133,44 @@
 .\" ========================================================================
 .\"
 .IX Title "INNFEED.CONF 5"
-.TH INNFEED.CONF 5 "2018-01-28" "INN 2.6.4" "InterNetNews Documentation"
+.TH INNFEED.CONF 5 "2022-02-18" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
 .nh
 .SH "NAME"
 innfeed.conf \- Configuration file for innfeed
+.SH "IN A NUTSHELL"
+.IX Header "IN A NUTSHELL"
+The \fIinnfeed.conf\fR file configures to which remote peers \fBinnfeed\fR sends
+\&\s-1NNTP\s0 feeds.
+.PP
+A common entry to parameter \f(CW\*(C`news.server.com\*(C'\fR as an outgoing feed is:
+.PP
+.Vb 3
+\&    peer news.server.com {
+\&        ip\-name: "news.server.com"
+\&    }
+.Ve
+.PP
+If standard \s-1NNTP\s0 port 119 is not used, you may specify an alternate port as
+follows:
+.PP
+.Vb 4
+\&    peer news.server.com {
+\&        ip\-name: "news.server.com"
+\&        port\-number: 433
+\&    }
+.Ve
+.PP
+After any changes, run \f(CW\*(C`inncheck\*(C'\fR to perform basic syntax checks, and
+reload this configuration file with the following command which makes \fBinnd\fR
+respawn a new instance of \fBinnfeed\fR (assuming \f(CW\*(C`innfeed!\*(C'\fR is the name of the
+corresponding channel feed in \fInewsfeeds\fR):
+.PP
+.Vb 1
+\&    ctlinnd flush innfeed!
+.Ve
 .SH "DESCRIPTION"
 .IX Header "DESCRIPTION"
 The configuration file \fIinnfeed.conf\fR in \fIpathetc\fR is used to control
@@ -791,8 +822,6 @@ Earlier versions of \fBinnfeed\fR (up to
 \&\fBinnfeed\fR is now part of \s-1INN\s0 and shares the same version number.
 Please note that the \fIinnfeed.conf\fR format has changed dramatically since
 version\ 0.9.3.
-.PP
-\&\f(CW$Id:\fR innfeed.conf.pod 10179 2017\-09\-18 20:13:48Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBinn.conf\fR\|(5), \fBinnfeed\fR\|(8), \fBnewsfeeds\fR\|(5).
diff -Nurp inn-2.6.4/doc/man/innmail.1 inn-2.6.5/doc/man/innmail.1
--- inn-2.6.4/doc/man/innmail.1	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/innmail.1	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "INNMAIL 1"
-.TH INNMAIL 1 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH INNMAIL 1 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -190,8 +190,6 @@ particularly sane addresses if they may
 \&\fBinnmail\fR was written by James Brister <brister@vix.com> for
 InterNetNews.  This manual page was originally written by Jeffrey
 M. Vinocur.
-.PP
-\&\f(CW$Id:\fR innmail.pod 7851 2008\-05\-26 19:33:08Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBinn.conf\fR\|(5), \fBmail\fR\|(1).
diff -Nurp inn-2.6.4/doc/man/innreport.8 inn-2.6.5/doc/man/innreport.8
--- inn-2.6.4/doc/man/innreport.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/innreport.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,39 +1,275 @@
-.TH innreport 8
-.SH NAME
-innreport \- summarize INN log files.
-.SH SYNOPSIS
-innreport -f innreport.conf [ -[no]options ] [ logfiles ]
-.SH DESCRIPTION
-.I Innreport
-is a
-.IR perl (1)
-script that summarizes INN log files. It is normally invoked by
-.IR scanlogs (8).
-Supported programs are
-.IR innd (8), 
-.IR innfeed (1), 
-.IR innxmit (8), 
-.I nntplink, 
-.IR nnrpd (8), 
-.IR batcher (8), 
-.IR rnews (1) 
-and a few others.
-.SH OPTIONS
-There are lots of 'em. Run innreport with ``\-h'' or ``\-help'' to get full
-details.
-.SH HISTORY
-Written by Fabien Tassin <fta@sofaraway.org> for InterNetNews. 
-.de R$
-This is revision \\$3, dated \\$4.
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
 ..
-.R$ $Id: innreport.8 8242 2008-12-21 10:29:55Z iulius $
-
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+.    ds C`
+.    ds C'
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\"
+.\" If the F register is >0, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
+..
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+.    if \nF \{\
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
+..
+.        if !\nF==2 \{\
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
+.\}
+.rr rF
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "INNREPORT 8"
+.TH INNREPORT 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+innreport \- Summarize INN log files
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+\&\fBinnreport\fR \fB\-f\fR \fIconfig-file\fR [\fB\-config\fR] [\fB\-help\fR] [\fB\-v\fR]
+[\fB\-\fR[\fBno\fR]\fBarchive\fR] [\fB\-\fR[\fBno\fR]\fBcasesensitive\fR] [\fB\-\fR[\fBno\fR]\fBgraph\fR]
+[\fB\-\fR[\fBno\fR]\fBhtml\fR] [\fB\-\fR[\fBno\fR]\fBhtml-unknown\fR] [\fB\-\fR[\fBno\fR]\fBnotdaily\fR]
+[\fB\-\fR[\fBno\fR]\fBunknown\fR] [\fB\-cycle\fR \fInum-cycle\fR] [\fB\-dir\fR \fIhttp-dir\fR]
+[\fB\-index\fR \fIindex-file\fR] [\fB\-maxunrec\fR \fInum-lines\fR]
+[\fB\-path\fR \fIpictures-dir\fR] [\fB\-separator\fR \fIchar\fR]
+[\fB\-webpath\fR \fIpictures-path\fR] \fIlog-file\fR [\fIlog-file\fR ...]
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\fBinnreport\fR is a Perl script that summarizes \s-1INN\s0 log files, with optional
+\&\s-1HTML\s0 output and graphs.  It is normally invoked by \fBscanlogs\fR\|(8) which includes
+the output of \fBinnreport\fR in daily Usenet reports.
+.PP
+Supported programs are \fBbatcher\fR, \fBcnfsstat\fR, \fBcontrolchan\fR, \fBinnd\fR,
+\&\fBinnfeed\fR, \fBinnxmit\fR, \fBnnrpd\fR, \fBnntplink\fR (an external program),
+\&\fBoverchan\fR, \fBperl-nocem\fR and \fBrnews\fR.
+.PP
+\&\fBinnreport\fR also updates the count of newsgroups not locally carried
+by the news server, and for which articles have been received, in the
+\&\fIunwanted.log\fR log file.  If that update should not be done, as it should
+occur only once a day while parsing daily logs, the \fB\-notdaily\fR flag should
+be given to \fBinnreport\fR.
+.PP
+If you want \fBinnreport\fR to generate graphs in its \s-1HTML\s0 reports, you need
+the Perl graphic library \fI\s-1GD\s0.pm\fR.
+.PP
+At least one non-empty log file to parse should be given at the end of the
+command line invoking \fBinnreport\fR.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+Only one option is mandatory:
+.IP "\fB\-f\fR \fIconfig-file\fR" 4
+.IX Item "-f config-file"
+Full path to the configuration file.  It is usually \fIinnreport.conf\fR in
+\&\fIpathetc\fR, but there is no default value.  This file lists the options
+to use for the report.  The options given in command line when calling
+\&\fBinnreport\fR take precedence over the ones in the configuration file.
+.PP
+The other options are optional.  Prepending \f(CW\*(C`no\*(C'\fR in front of boolean
+options permits unsetting them.  For example, use \fB\-nograph\fR to remove
+the feature \fB\-graph\fR enables.
+.IP "\fB\-archive\fR or \fB\-a\fR" 4
+.IX Item "-archive or -a"
+Sets whether \s-1HTML\s0 pages and graphs should be archived if \s-1HTML\s0 reports
+are enabled.  When this option is set, which is the default, a date will
+be added in the file name of each report and each graph.  Otherwise, only
+the latest \s-1HTML\s0 report is kept.
+.IP "\fB\-casesensitive\fR" 4
+.IX Item "-casesensitive"
+Whether to do case sensitive searches in news log files for predetermined
+patterns.  This option is enabled by default.
+.IP "\fB\-config\fR" 4
+.IX Item "-config"
+Prints to standard output configuration information for \fBinnreport\fR,
+and exits.
+.IP "\fB\-cycle\fR or \fB\-c\fR \fInum-cycle\fR" 4
+.IX Item "-cycle or -c num-cycle"
+Sets how many report files should be kept if \s-1HTML\s0 reports are enabled
+and archived.  The default is \f(CW0\fR, meaning all archives are kept.
+.IP "\fB\-dir\fR or \fB\-d\fR \fIhttp-dir\fR" 4
+.IX Item "-dir or -d http-dir"
+Sets the directory for web pages if \s-1HTML\s0 reports are enabled.  The default
+is the value of \fIpathhttp\fR as set in \fIinn.conf\fR.
+.IP "\fB\-graph\fR or \fB\-g\fR" 4
+.IX Item "-graph or -g"
+If the Perl graphic library \fI\s-1GD\s0.pm\fR is installed and \s-1HTML\s0 reports are
+enabled, graphs are also generated in \s-1PNG\s0 if supported by \f(CW\*(C`GD\*(C'\fR, which is
+the case in modern versions (\s-1GIF\s0 will otherwise be generated).  The default
+is to enable graph generation.
+.IP "\fB\-help\fR or \fB\-h\fR" 4
+.IX Item "-help or -h"
+Prints to standard output a help message with all the options recognized
+by \fBinnreport\fR, and exits.
+.IP "\fB\-html\fR" 4
+.IX Item "-html"
+Besides the plain text report printed to standard output, \fBinnreport\fR
+generates \s-1HTML\s0 reports if this option is enabled.  This option is disabled
+by default (that is to say \fB\-nohtml\fR is the default).
+.IP "\fB\-html\-unknown\fR" 4
+.IX Item "-html-unknown"
+Whether to report unknown entries from news log files in \s-1HTML\s0 reports,
+when enabled.  This option takes by default the same value as the one for
+text plain reports (as set with the \fIunknown\fR option).
+.IP "\fB\-index\fR or \fB\-i\fR" 4
+.IX Item "-index or -i"
+Sets the name of the index web page if \s-1HTML\s0 reports are enabled.  The default
+is \f(CW\*(C`index.html\*(C'\fR.
+.IP "\fB\-maxunrec\fR \fInum-lines\fR" 4
+.IX Item "-maxunrec num-lines"
+How many unrecognized entries from news log files to report, when the
+\&\fB\-unknown\fR or \fB\-html\-unknown\fR options are set.  The default is \f(CW50\fR.
+Using \f(CW\*(C`\-1\*(C'\fR means there is no limit.
+.IP "\fB\-notdaily\fR" 4
+.IX Item "-notdaily"
+Whether to defer daily actions for this run of \fBinnreport\fR.  Some actions
+should be performed only once a day for a log file (notably \fIunwanted.log\fR).
+This option is disabled by default, meaning that all actions are always done,
+as we assume a default setup of running \fBscanlogs\fR daily.
+.IP "\fB\-path\fR or \fB\-p\fR \fIpictures-dir\fR" 4
+.IX Item "-path or -p pictures-dir"
+Sets the directory for pictures if \s-1HTML\s0 reports are enabled, and graphs
+are wanted.  The default is \fIpathhttp\fR/\fIpics\fR.
+.Sp
+If both \fB\-dir\fR and \fB\-webpath\fR are used, and \fB\-path\fR isn't, the directory
+used for pictures defaults to \fIhttp-dir as set with \f(BI\-dir\fI\fR/\fIpictures-path as set with \f(BI\-webpath\fI\fR.
+.IP "\fB\-separator\fR or \fB\-s\fR \fIchar\fR" 4
+.IX Item "-separator or -s char"
+Sets the separator between hours, minutes and seconds in file names if
+\&\s-1HTML\s0 reports are enabled and archived.  The default is \f(CW\*(C`.\*(C'\fR as \f(CW\*(C`:\*(C'\fR may
+not be properly read by all web browsers.  Be careful \fInot\fR to use \f(CW\*(C`/\*(C'\fR
+as a separator, and to use only a valid file name character.
+.IP "\fB\-unknown\fR" 4
+.IX Item "-unknown"
+Whether to report unknown entries from news log files in plain text reports.
+This option is enabled by default.
+.IP "\fB\-v\fR" 4
+.IX Item "-v"
+Prints to standard output the version number of \fBinnreport\fR, and exits.
+.IP "\fB\-webpath\fR or \fB\-w\fR \fIpictures-path\fR" 4
+.IX Item "-webpath or -w pictures-path"
+Sets the web path for pictures in \s-1HTML\s0 pages if \s-1HTML\s0 reports are enabled,
+and graphs are wanted.  The default is \f(CW\*(C`pics\*(C'\fR.  It can be a relative path
+or an absolute path.  If an absolute path is used, you have to set \fB\-path\fR
+appropriately; otherwise it will not be computed right.
+.SH "HISTORY"
+.IX Header "HISTORY"
+Written by Fabien Tassin <fta@sofaraway.org> for InterNetNews.  Rewritten into
+\&\s-1POD\s0 by Julien Elie.
 .SH "SEE ALSO"
-innd(8),
-innfeed(8),
-innxmit(8),
-news.daily(8),
-newslog(5),
-nnrpd(8),
-scanlogs(8),
-writelog(8).
+.IX Header "SEE ALSO"
+\&\fBinnreport.conf\fR\|(5), \fBnews.daily\fR\|(8), \fBnewslog\fR\|(5), \fBscanlogs\fR\|(8).
diff -Nurp inn-2.6.4/doc/man/innreport.conf.5 inn-2.6.5/doc/man/innreport.conf.5
--- inn-2.6.4/doc/man/innreport.conf.5	1970-01-01 01:00:00.000000000 +0100
+++ inn-2.6.5/doc/man/innreport.conf.5	2022-02-18 20:36:57.000000000 +0100
@@ -0,0 +1,413 @@
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+.    ds C`
+.    ds C'
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\"
+.\" If the F register is >0, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
+..
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+.    if \nF \{\
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
+..
+.        if !\nF==2 \{\
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
+.\}
+.rr rF
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "INNREPORT.CONF 5"
+.TH INNREPORT.CONF 5 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+innreport.conf \- Configuration file for innreport
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+The file \fIpathetc\fR/innreport.conf permits configuring the behaviour of
+\&\fBinnreport\fR.  It consists of a series of lines; blank lines and what follows
+a number sign (\f(CW\*(C`#\*(C'\fR) in a line are ignored.  The structure of this file is:
+.PP
+.Vb 9
+\&    section default {
+\&        libpath        "/path/to/libraries";
+\&        logpath        "/path/to/logs";
+\&        module         "innreport_inn";
+\&        unwanted_log   "unwanted.log";
+\&        text           true;
+\&        html           true;  # Enable HTML reports.
+\&        # Other options to set.
+\&    };
+.Ve
+.PP
+Only this very section needs being configured.  It begins with \f(CW\*(C`section
+default {\*(C'\fR and ends with \f(CW\*(C`};\*(C'\fR.  Each line in the section consists of an
+option name followed with one or more spaces or tabulations, its value and
+a semi-colon \f(CW\*(C`;\*(C'\fR.
+.PP
+Other sections are present in the configuration file to parameter the
+display, how and what to report, but should not be changed (unless you
+precisely know what you are doing).
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+The following options can be set in the \f(CW\*(C`default\*(C'\fR section of the
+configuration file:
+.IP "\fIarchive\fR" 4
+.IX Item "archive"
+Sets whether \s-1HTML\s0 pages and graphs should be archived if \s-1HTML\s0 reports are
+enabled.  When this option is set to \f(CW\*(C`true\*(C'\fR, which is the default, a date
+will be added in the file name of each report and each graph.  Otherwise,
+only the latest \s-1HTML\s0 report is kept.
+.Sp
+Use of the \fB\-\fR[\fBno\fR]\fBarchive\fR flag with \fBinnreport\fR\|(8) takes precedence
+over the configuration file.
+.IP "\fIcasesensitive\fR" 4
+.IX Item "casesensitive"
+When this option is set to \f(CW\*(C`true\*(C'\fR, which is the default, case sensitive
+searches are done in news log files for predetermined patterns.
+.Sp
+Use of the \fB\-\fR[\fBno\fR]\fBcasesensitive\fR flag with \fBinnreport\fR\|(8) takes precedence
+over the configuration file.
+.IP "\fIcycle\fR" 4
+.IX Item "cycle"
+Sets how many report files should be kept if \s-1HTML\s0 reports are enabled and
+archived.  The default is \f(CW0\fR, meaning all archives are kept.  The value
+\&\f(CW\*(C`none\*(C'\fR also means \f(CW0\fR.
+.Sp
+Use of the \fB\-cycle\fR flag with \fBinnreport\fR\|(8) takes precedence over the
+configuration file.
+.IP "\fIencoding\fR" 4
+.IX Item "encoding"
+Specifies the character set to use in \s-1XML\s0 and Content-Type declarations of
+\&\s-1HTML\s0 reports.  The default is \f(CW\*(C`ISO\-8859\-1\*(C'\fR.
+.IP "\fIfooter\fR" 4
+.IX Item "footer"
+Specifies a text to append to the end of the latest \f(CW\*(C`<div>\*(C'\fR tag of each
+\&\s-1HTML\s0 report, where the version of \fBinnreport\fR is displayed.  This option
+is unset by default.
+.IP "\fIgraph\fR" 4
+.IX Item "graph"
+If the Perl graphic library \fI\s-1GD\s0.pm\fR is installed and \s-1HTML\s0 reports are
+enabled, graphs are also generated in \s-1PNG\s0 if supported by \f(CW\*(C`GD\*(C'\fR, which is
+the case in modern versions (\s-1GIF\s0 will otherwise be generated).  This option
+is set to \f(CW\*(C`true\*(C'\fR by default, meaning to enable graph generation.
+.Sp
+Use of the \fB\-\fR[\fBno\fR]\fBgraph\fR flag with \fBinnreport\fR\|(8) takes precedence over
+the configuration file.
+.IP "\fIgraph_bg\fR" 4
+.IX Item "graph_bg"
+Specifies the background colour of graphs in \s-1HTML\s0 reports as an \s-1HTML\s0
+hexadecimal colour value.  The default is \f(CW\*(C`#FFFFFF\*(C'\fR (white).
+.IP "\fIgraph_fg\fR" 4
+.IX Item "graph_fg"
+Specifies the foreground colour of graphs in \s-1HTML\s0 reports as an \s-1HTML\s0
+hexadecimal colour value.  The default is \f(CW\*(C`#000000\*(C'\fR (black).
+.IP "\fIgraph_width\fR" 4
+.IX Item "graph_width"
+Sets the width in pixels of graphs in \s-1HTML\s0 reports.  The default is \f(CW550\fR.
+.IP "\fIhtml\fR" 4
+.IX Item "html"
+This is a mandatory option with no default value.  It serves two purposes:
+generating \s-1HTML\s0 reports besides the plain text report printed to standard
+output, and configuring in the sections other than \f(CW\*(C`default\*(C'\fR in the
+configuration file whether a section of the report should be present in the
+\&\s-1HTML\s0 output.
+.Sp
+If set to \f(CW\*(C`true\*(C'\fR, and the \fB\-nohtml\fR flag not given when calling
+\&\fBinnreport\fR, \s-1HTML\s0 reports will be generated.  These reports will not contain
+sections individually having \fIhtml\fR set to \f(CW\*(C`false\*(C'\fR in the configuration
+file (by default, everything is present in the \s-1HTML\s0 reports).  Otherwise,
+if the \fB\-nohtml\fR flag is given, no \s-1HTML\s0 reports will be generated.
+.Sp
+If set to \f(CW\*(C`false\*(C'\fR, and the \fB\-html\fR flag not given when calling \fBinnreport\fR,
+no \s-1HTML\s0 reports will be generated.  Otherwise, if the \fB\-html\fR flag is
+given, \s-1HTML\s0 reports will be generated but only the sections individually
+having \fIhtml\fR set to \f(CW\*(C`true\*(C'\fR in the configuration file will be present in
+the reports.
+.IP "\fIhtml_body\fR" 4
+.IX Item "html_body"
+Specifies additional elements to append to the \f(CW\*(C`<body>\*(C'\fR tag of \s-1HTML\s0
+reports.  This option is unset by default.
+.Sp
+Note that using this option leads to invalid \s-1XHTML.\s0  You should provide a
+custom \s-1CSS\s0 file with the \fIhtml_css_url\fR option instead.
+.IP "\fIhtml_css_url\fR" 4
+.IX Item "html_css_url"
+Specifies the name of a \s-1CSS\s0 file to use to apply a custom style to \s-1HTML\s0
+reports.  The file is located in the directory set with the \fIhtml_dir\fR
+option.  It may also be a \s-1URL,\s0 in which case the file may be in another
+location.
+.Sp
+If unset, which is the default, \fBinnreport\fR creates a default
+\&\fIinnreport.css\fR custom style sheet in \fIhtml_dir\fR and uses it for \s-1HTML\s0
+reports.
+.Sp
+In case you wish to supply your own style, take a look at what is defined
+in the default \s-1CSS\s0 and the \s-1HTML\s0 reports, and adapt it for your needs.
+Across several \fBinnreport\fR releases that may change classes, make sure
+to keep old class definitions for backward compatibility with previously
+generated \s-1HTML\s0 reports still referring to that custom file.
+.IP "\fIhtml_dir\fR" 4
+.IX Item "html_dir"
+Sets the directory for web pages if \s-1HTML\s0 reports are enabled.  The default
+is the value of \fIpathhttp\fR as set in \fIinn.conf\fR.
+.Sp
+Use of the \fB\-dir\fR flag with \fBinnreport\fR\|(8) takes precedence over the
+configuration file.
+.IP "\fIhtml_file_extension\fR" 4
+.IX Item "html_file_extension"
+Defines the file extension of generated \s-1HTML\s0 reports, if enabled.  A dot
+(\f(CW\*(C`.\*(C'\fR) should begin the extension.  The default is \f(CW\*(C`.html\*(C'\fR.
+.Sp
+You may want to use \f(CW\*(C`.xhtml\*(C'\fR instead to let the web server serve correct
+\&\s-1MIME\s0 type, as \fBinnreport\fR generates \s-1XHTML\s0\ 1.1 pages.
+.IP "\fIhtml_footer_file\fR" 4
+.IX Item "html_footer_file"
+Specifies the name of a file in \fIhtml_dir\fR whose contents will be appended
+just before the \f(CW\*(C`</body>\*(C'\fR tag of each \s-1HTML\s0 report.  This option is
+unset by default.
+.IP "\fIhtml_header_file\fR" 4
+.IX Item "html_header_file"
+Specifies the name of a file in \fIhtml_dir\fR whose contents will be appended
+just after the \f(CW\*(C`<body>\*(C'\fR tag of each \s-1HTML\s0 report.  This option is unset
+by default.
+.IP "\fIhtml-unknown\fR" 4
+.IX Item "html-unknown"
+Whether to report unknown entries from news log files in \s-1HTML\s0 reports,
+when set to \f(CW\*(C`true\*(C'\fR.  This option takes by default the same value as the
+one for text plain reports (as set with the \fIunknown\fR option).
+.Sp
+Use of the \fB\-\fR[\fBno\fR]\fBhtml-unknown\fR flag with \fBinnreport\fR\|(8) takes precedence
+over the configuration file.
+.IP "\fIhtml_xsl_url\fR" 4
+.IX Item "html_xsl_url"
+Specifies the name of an \s-1XSL\s0 file to use to apply styling operations to
+\&\s-1HTML\s0 reports.  The file is located in the directory set with the \fIhtml_dir\fR
+option.  It may also be a \s-1URL,\s0 in which case the file may be in another
+location.
+.Sp
+This option is unset by default.  When set, a corresponding \s-1XML\s0 style sheet
+declaration is added to \s-1HTML\s0 reports.  It may be useful for \s-1XHTML\s0 compliance
+with older browsers (see <https://www.w3.org/MarkUp/2004/xhtml\-faq#ie>).
+.Sp
+More generally, if you are interested in \s-1XSL\s0 transformation, you may want to
+have a look at \fIinnreport\-filter.xslt\fR provided in the \fIcontrib\fR directory.
+.IP "\fIimg_dir\fR" 4
+.IX Item "img_dir"
+Sets the web path for pictures in \s-1HTML\s0 pages if \s-1HTML\s0 reports are enabled,
+and graphs are wanted.  The path is relative to the directory set with the
+\&\fIhtml_dir\fR option.  The default is \f(CW\*(C`pics\*(C'\fR.
+.Sp
+Use of the \fB\-webpath\fR flag with \fBinnreport\fR\|(8) takes precedence over the
+configuration file.
+.IP "\fIindex\fR" 4
+.IX Item "index"
+Sets the name of the index web page if \s-1HTML\s0 reports are enabled.  The default
+is \f(CW\*(C`index.html\*(C'\fR.
+.Sp
+You may want to use \f(CW\*(C`index.xhtml\*(C'\fR instead to let the web server serve
+correct \s-1MIME\s0 type, as \fBinnreport\fR generates \s-1XHTML\s0\ 1.1 pages.
+.Sp
+Use of the \fB\-index\fR flag with \fBinnreport\fR\|(8) takes precedence over the
+configuration file.
+.IP "\fIlibpath\fR" 4
+.IX Item "libpath"
+Defines the directory in which the Perl module set with the \fImodule\fR
+option is located.  This option is mandatory, and usually set to the same
+value as \fIpathlib\fR in \fIinn.conf\fR.
+.IP "\fIlogpath\fR" 4
+.IX Item "logpath"
+Defines the directory in which the log file for newsgroups not locally carried
+by the news server, as set with the \fIunwanted_log\fR option, is located.
+This option is mandatory, and usually set to the same value as \fIpathlog\fR
+in \fIinn.conf\fR.
+.IP "\fImax_unknown\fR" 4
+.IX Item "max_unknown"
+How many unrecognized entries from news log files to report, when the
+\&\fIunknown\fR or \fIhtml-unknown\fR options are set.  The default is \f(CW50\fR.
+Using \f(CW\*(C`\-1\*(C'\fR means there is no limit.
+.Sp
+Use of the \fB\-maxunrec\fR flag with \fBinnreport\fR\|(8) takes precedence over the
+configuration file.
+.IP "\fImodule\fR" 4
+.IX Item "module"
+Defines the Perl module used by \fBinnreport\fR to parse and summarize log files.
+This option is mandatory, and usually set to \f(CW\*(C`innreport_inn\*(C'\fR.  This value
+should not normally be changed unless you know exactly what you are doing.
+The Perl module that will be loaded is \fI\fImodule\fI.pm\fR located in the
+directory set with the \fIlibpath\fR option.
+.IP "\fIseparator\fR" 4
+.IX Item "separator"
+Sets the separator between hours, minutes and seconds in file names if
+\&\s-1HTML\s0 reports are enabled and archived.  The default is \f(CW\*(C`.\*(C'\fR as \f(CW\*(C`:\*(C'\fR may
+not be properly read by all web browsers.  Be careful \fInot\fR to use \f(CW\*(C`/\*(C'\fR
+as a separator, and to use only a valid file name character.
+.Sp
+Use of the \fB\-separator\fR flag with \fBinnreport\fR\|(8) takes precedence over the
+configuration file.
+.IP "\fItext\fR" 4
+.IX Item "text"
+This is a mandatory option with no default value.
+.Sp
+If set to \f(CW\*(C`true\*(C'\fR, \fBinnreport\fR will print its text report to standard output.
+This report will not contain sections individually having \fItext\fR set to
+\&\f(CW\*(C`false\*(C'\fR in the configuration file (by default, everything is present in
+the text report).
+.Sp
+If set to \f(CW\*(C`false\*(C'\fR, \fBinnreport\fR will only print to standard output the
+sections individually having \fItext\fR set to \f(CW\*(C`true\*(C'\fR in the configuration file
+(by default, the text report will be empty).
+.IP "\fItitle\fR" 4
+.IX Item "title"
+Specifies the text to use as first words of text and \s-1HTML\s0 reports as well
+as in the title of \s-1HTML\s0 reports.  By default, \f(CW\*(C`Daily Usenet report\*(C'\fR is used.
+.IP "\fItransparent\fR" 4
+.IX Item "transparent"
+If set to \f(CW\*(C`true\*(C'\fR, the background of generated graphs in \s-1HTML\s0 reports will
+be transparent.  The default is \f(CW\*(C`false\*(C'\fR.
+.IP "\fIunknown\fR" 4
+.IX Item "unknown"
+Whether to report unknown entries from news log files in plain text reports,
+when set to \f(CW\*(C`true\*(C'\fR.  This option is enabled by default.
+.Sp
+Use of the \fB\-\fR[\fBno\fR]\fBunknown\fR flag with \fBinnreport\fR\|(8) takes precedence
+over the configuration file.
+.IP "\fIunwanted_log\fR" 4
+.IX Item "unwanted_log"
+Defines the name of the file used by \fBinnreport\fR to maintain a count of
+the number of articles that were rejected because they were posted to
+newsgroups that do not exist in the \fIactive\fR file of the news server.
+This file is updated by \fBinnreport\fR while processing the \fInews.notice\fR
+log file and it is maintained in reverse numeric order (the most popular
+rejected group first).
+.Sp
+This option is mandatory, and usually set to \f(CW\*(C`unwanted.log\*(C'\fR.  This value
+should not normally be changed unless you know exactly what you are doing.
+The file is located in the directory set with the \fIlogpath\fR option.
+.Sp
+Note that \fIlogtrash\fR has to be set to true in \fIinn.conf\fR for this file
+to be generated.
+.SH "HISTORY"
+.IX Header "HISTORY"
+Written by Julien Elie for InterNetNews.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+\&\fBinnreport\fR\|(8).
diff -Nurp inn-2.6.4/doc/man/innstat.8 inn-2.6.5/doc/man/innstat.8
--- inn-2.6.4/doc/man/innstat.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/innstat.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,23 +1,176 @@
-.TH INNSTAT 8
-.SH NAME
-innstat \- print snapshot of INN system
-.SH SYNOPSIS
-.B innstat
-.SH DESCRIPTION
-The
-.I innstat
-script prints a snapshot of the INN system.
-It displays the operating mode of the server,
-as well as disk usage and the status of all log and lock files.
-.SH HISTORY
-Written by Landon Curt Noll <chongo@toad.com> and Rich $alz
-<rsalz@uunet.uu.net> for InterNetNews.
-.de R$
-This is revision \\$3, dated \\$4.
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
 ..
-.R$ $Id: innstat.8 584 1998-04-09 15:16:17Z mibsoft $
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+.    ds C`
+.    ds C'
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\"
+.\" If the F register is >0, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
+..
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+.    if \nF \{\
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
+..
+.        if !\nF==2 \{\
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
+.\}
+.rr rF
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "INNSTAT 8"
+.TH INNSTAT 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+innstat \- Print snapshot of INN system
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+\&\fBinnstat\fR
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+The \fBinnstat\fR script prints a snapshot of the \s-1INN\s0 system.  It is notably
+run by \fBnews.daily\fR, which integrates its output in daily Usenet reports.
+.PP
+\&\fBinnstat\fR displays the following information:
+.IP "\(bu" 4
+the operating mode of the server, as returned by \f(CW\*(C`ctlinnd mode\*(C'\fR;
+.IP "\(bu" 4
+the disk usage of several directories: \fIpatharticles\fR, \fIpathdb\fR, \fIpathetc\fR,
+\&\fIpathincoming\fR, \fIpathlog\fR, \fIpathoutgoing\fR, \fIpathoverview\fR, and \fIpathtmp\fR.
+If used, the disk usage of the \fIpatharchive\fR and \fIpathhttp\fR directories
+are also reported;
+.IP "\(bu" 4
+the overview buffer usage, if using the buffindexed overview;
+.IP "\(bu" 4
+the size of all batch files in \fIpathoutgoing\fR;
+.IP "\(bu" 4
+the size of the \fIerrlog\fR, \fInews\fR, \fInews.crit\fR, \fInews.err\fR, and
+\&\fInews.notice\fR log files in \fIpathlog\fR;
+.IP "\(bu" 4
+the size of all lock files in \fIpathrun\fR;
+.IP "\(bu" 4
+the current open connections from remote servers to \fBinnd\fR.
+.SH "HISTORY"
+.IX Header "HISTORY"
+Written by Landon Curt Noll <chongo@toad.com> and Rich \f(CW$alz\fR
+<rsalz@uunet.uu.net> for InterNetNews.  Rewritten into \s-1POD\s0 by Julien Elie.
 .SH "SEE ALSO"
-innd(8),
-news.daily(8),
-newslog(5),
-nnrpd(8)
+.IX Header "SEE ALSO"
+\&\fBinndf\fR\|(8), \fBnews.daily\fR\|(8), \fBnewslog\fR\|(5).
diff -Nurp inn-2.6.4/doc/man/innupgrade.8 inn-2.6.5/doc/man/innupgrade.8
--- inn-2.6.4/doc/man/innupgrade.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/innupgrade.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "INNUPGRADE 8"
-.TH INNUPGRADE 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH INNUPGRADE 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -244,5 +244,3 @@ alternate file.
 .SH "HISTORY"
 .IX Header "HISTORY"
 Written by Russ Allbery <eagle@eyrie.org> for InterNetNews.
-.PP
-\&\f(CW$Id:\fR innupgrade.pod 9767 2014\-12\-07 21:13:43Z iulius $
diff -Nurp inn-2.6.4/doc/man/innwatch.8 inn-2.6.5/doc/man/innwatch.8
--- inn-2.6.4/doc/man/innwatch.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/innwatch.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "INNWATCH 8"
-.TH INNWATCH 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH INNWATCH 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -146,10 +146,12 @@ innwatch \- Monitor the state of INN and
 [\fB\-t\fR \fIseconds\fR]
 .SH "DESCRIPTION"
 .IX Header "DESCRIPTION"
-\&\fBinnwatch\fR is normally started by \fBrc.news\fR.  Every
-\&\fIinnwatchsleeptime\fR seconds, as set in \fIinn.conf\fR, it examines the load
-average, and the number of free blocks and inodes on the spool partition,
-as described by its control file, \fIinnwatch.ctl\fR in \fIpathetc\fR.
+\&\fBinnwatch\fR is normally started and stopped by \fBrc.news\fR when
+\&\fIdoinnwatch\fR is set to true in \fIinn.conf\fR.  Every \fIinnwatchsleeptime\fR
+seconds, as set in \fIinn.conf\fR as well as other parameters tuning its
+behaviour, \fBinnwatch\fR examines the load average, and the number of
+free blocks and inodes on the spool partition, as described by its
+control file, \fIinnwatch.ctl\fR in \fIpathetc\fR.
 .PP
 If the load gets too high, or the disk gets too full, it throttles
 the server.  When the condition restores, it unblocks the server.
@@ -183,8 +185,6 @@ set in \fIinn.conf\fR.
 Written by Mike Cooper <mcooper@usc.edu>, with modifications by
 <kre@munnari.oz.au>, Steve Groom <stevo@elroy.jpl.nasa.gov> and
 Christophe Wolfhugel <wolf@pasteur.fr>.  Converted to \s-1POD\s0 by Julien Elie.
-.PP
-\&\f(CW$Id:\fR innwatch.pod 9722 2014\-09\-24 17:47:12Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBinn.conf\fR\|(5), \fBinnwatch.ctl\fR\|(5), \fBnewslog\fR\|(5), \fBrc.news\fR\|(8).
diff -Nurp inn-2.6.4/doc/man/innwatch.ctl.5 inn-2.6.5/doc/man/innwatch.ctl.5
--- inn-2.6.4/doc/man/innwatch.ctl.5	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/innwatch.ctl.5	2022-02-18 20:36:57.000000000 +0100
@@ -1,226 +1,340 @@
-.\" $Revision: 5909 $
-.TH INNWATCH.CTL 5
-.SH NAME
-innwatch.ctl \- control Usenet supervision by innwatch
-.SH DESCRIPTION
-The file
-.I <pathetc in inn.conf>/innwatch.ctl
-is used to determine what actions are taken during the periodic
-supervisions by
-.IR innwatch .
-.PP
-The file consists of a series of lines; blank lines and lines beginning
-with a number sign (``#'') are ignored.
-All other lines consist of seven fields, each preceded by a delimiting
-character, for example:
-.sp 1
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
 .nf
-.RS
-:label:state:condition:test:limit:command:reason
-.RE
-or
-.RS
-@label@state@condition@test@limit@command@reason
-.RE
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
 .fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+.    ds C`
+.    ds C'
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\"
+.\" If the F register is >0, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
+..
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+.    if \nF \{\
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
+..
+.        if !\nF==2 \{\
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
+.\}
+.rr rF
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "INNWATCH.CTL 5"
+.TH INNWATCH.CTL 5 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+innwatch.ctl \- List of supervisory actions taken by innwatch
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+The file \fIpathetc\fR/innwatch.ctl is used to determine what actions are
+taken during the periodic supervisions by \fBinnwatch\fR.
 .PP
-The delimiter can be any one of several non-alphanumeric characters that does
-not appear elsewhere in the line; there is no way to quote it to
-include it in any of the fields.
-Any of ``!'', ``,'', ``:'', ``@'', ``;'', or ``?'' is a good choice.
-Each line can have a different delimiter; the first character on each line
-is the delimiter for that line.
-White space surrounding delimiters, except before the first, is ignored,
-and does not form part of the fields; white space within fields is
-permitted.
+The file consists of a series of lines; blank lines and lines beginning
+with a number sign (\f(CW\*(C`#\*(C'\fR) are ignored.  All other lines consist of
+seven fields, each preceded by a delimiting character, for example:
+.PP
+.Vb 1
+\&    !state!when!condition!test!limit!command!reason
+.Ve
+.PP
+or:
+.PP
+.Vb 1
+\&    @state@when@condition@test@limit@command@reason
+.Ve
+.PP
+The delimiter can be any one of several non-alphanumeric characters that
+does not appear elsewhere in the line; there is no way to quote it to
+include it in any of the fields.  Any of \f(CW\*(C`!\*(C'\fR, \f(CW\*(C`,\*(C'\fR, \f(CW\*(C`:\*(C'\fR, \f(CW\*(C`@\*(C'\fR, \f(CW\*(C`;\*(C'\fR,
+or \f(CW\*(C`?\*(C'\fR is a good choice.  Each line can have a different delimiter; the
+first character on each line is the delimiter for that line.  White space
+surrounding delimiters, except before the first, is ignored, and does
+not form part of the fields; white space within fields is permitted.
 All delimiters must be present.
 .PP
-The first field is a label for this control line.
-It is used as an internal state indicator and in
-.I ctlinnd
-messages to control the server.
-If this field is empty, the line number is used.
+The first field is the state to enter if the condition for this
+control line is true.  It is used as an internal state indicator and
+in \fBctlinnd\fR messages to control the server.  If this field is empty,
+the line number is used.
 .PP
 The second field specifies when this control line should be used.
-It consists of a list of labels
-and special indicators,
-separated by whitespace.
-If the current state matches against any of the labels in this field,
-this line will be used as described below.
-The values that may be used are:
-.IP "\-"
-This line matches if the current state is the same as the label on
-this line, or if the current state is ``run'', the initial state.
-This is also the default state if this field is empty.
-.IP "+"
-This line matches if the current state is ``run''.
-.IP "*"
+It consists of a list of states and special indicators, separated by
+whitespace.  If the current state matches against any of the states in
+this field, this line will be used as described below.  The values that
+may be used are:
+.ie n .IP """\-""" 4
+.el .IP "\f(CW\-\fR" 4
+.IX Item "-"
+This line matches if the current state is the same as the label on this
+line, or if the current state is \f(CW\*(C`run\*(C'\fR, the initial state.  This is
+also the default state if this field is empty.
+.ie n .IP """+""" 4
+.el .IP "\f(CW+\fR" 4
+.IX Item "+"
+This line matches if the current state is \f(CW\*(C`run\*(C'\fR.
+.ie n .IP """*""" 4
+.el .IP "\f(CW*\fR" 4
+.IX Item "*"
 This line always matches.
-.IP "label"
-This line matches if the current state is the specified ``label''.
-.IP "\-label"
-This line matches if the current state is not the specified ``label''.
-.PP
-The third field specifies a shell command that is invoked if this line matches.
-Do not use any shell filename expansion characters such as ``*'', ``?'',
-or ``['' (even quoted, they're not likely to work as intended).
+.ie n .IP """label""" 4
+.el .IP "\f(CWlabel\fR" 4
+.IX Item "label"
+This line matches if the current state is the specified \f(CW\*(C`label\*(C'\fR.
+.ie n .IP """\-label""" 4
+.el .IP "\f(CW\-label\fR" 4
+.IX Item "-label"
+This line matches if the current state is not the specified \f(CW\*(C`label\*(C'\fR.
+.PP
+The third field specifies a shell command that is invoked if this
+line matches.  Do not use any shell filename expansion characters
+such as \f(CW\*(C`*\*(C'\fR, \f(CW\*(C`?\*(C'\fR, or \f(CW\*(C`[\*(C'\fR (even quoted, they're not likely to work
+as intended).  The command is executed with its current directory set
+to the news spool articles directory (\fIpatharticles\fR).
+.PP
 If the command succeeds, as indicated by its exit status, it is expected
-to have printed a single integer to standard output.
-This gives the value of this control line, to be used below.
-If the command fails, the line is ignored.
-The command is executed with its current directory set to the news spool
-articles directory,
-.IR <patharticles\ in\ inn.conf> .
-.PP
-The fourth field specifies the operator to use to test the value returned above.
-It should be one of the two letter numeric test operators defined in
-.IR test (1)
-such as ``eq'', ``lt'' and the like.
-The leading dash (``\-'') should not be included.
-.PP
-The fifth field specifies a constant with which to compare the value using
-the operator just defined.
-This is done by invoking the command:
-.sp 1
-.RS
-test value -operator constant
-.RE
-.sp 1
-The line is said to ``succeed'' if it returns true.
+to have printed a single integer to standard output.  This gives the
+value of this control line, to be used below.  If the command fails,
+the line is ignored.
+.PP
+The fourth field specifies the operator to use to test the value returned
+above.  It should be one of the two letter numeric test operators defined
+in \fBtest\fR\|(1) such as \f(CW\*(C`eq\*(C'\fR, \f(CW\*(C`lt\*(C'\fR and the like.  The leading dash (\f(CW\*(C`\-\*(C'\fR)
+should not be included.
+.PP
+The fifth field specifies a constant with which to compare the value
+using the operator just defined.  This is done by invoking the command:
+.PP
+.Vb 1
+\&    test value \-operator constant
+.Ve
 .PP
-The sixth field specifies what should be done if the line succeeds,
-and in some cases if it fails.
-Any of the following words may be used:
-.IP throttle
-Causes
-.I innwatch
-to throttle the server if this line succeeds.
-It also sets the state to the value of the line's label.
-If the line fails, and the state was previously equal to
-the label on this line (that is, this line had previously succeeded),
-then a
-.I go
-command will be sent to the server, and
-.I innwatch
-will return to the ``run'' state.
-The ``throttle'' is only performed if the current state is ``run'' or a
-state other than the label of this line, regardless of whether the command
-succeeds.
-.IP pause
-Is identical to ``throttle'' except that the server is paused.
-.IP shutdown
-Sends a ``shutdown'' command to the server.
-It is for emergency use only.
-.IP flush
-Sends a ``flush'' command to the server.
-.IP go
-Causes
-.I innwatch
-to send a ``go'' command to the server and to set the state to ``run''.
-.IP exit
-Causes
-.I innwatch
-to exit.
+The line is said to \fIsucceed\fR if it returns true.
 .PP
-.IP skip
+The sixth field specifies what should be done if the line succeeds,
+and in some cases if it fails.  Any of the following words may be used:
+.ie n .IP """throttle""" 4
+.el .IP "\f(CWthrottle\fR" 4
+.IX Item "throttle"
+Causes \fBinnwatch\fR to throttle the server if this line succeeds.  It also
+sets the state to the value of the line's label.  If the line fails,
+and the state was previously equal to the label on this line (that is,
+this line had previously succeeded), then a \f(CW\*(C`ctlinnd go\*(C'\fR command will
+be sent to the server, and \fBinnwatch\fR will return to the \f(CW\*(C`run\*(C'\fR state.
+The \f(CW\*(C`ctlinnd throttle\*(C'\fR command is only performed if the current state
+is \f(CW\*(C`run\*(C'\fR or a state other than the label of this line, regardless of
+whether the command succeeds.
+.ie n .IP """pause""" 4
+.el .IP "\f(CWpause\fR" 4
+.IX Item "pause"
+Is identical to \f(CW\*(C`throttle\*(C'\fR except that the server is paused via the
+\&\f(CW\*(C`ctlinnd pause\*(C'\fR command.
+.ie n .IP """shutdown""" 4
+.el .IP "\f(CWshutdown\fR" 4
+.IX Item "shutdown"
+Sends a \f(CW\*(C`ctlinnd shutdown\*(C'\fR command to the server.  It is for emergency
+use only.
+.ie n .IP """flush""" 4
+.el .IP "\f(CWflush\fR" 4
+.IX Item "flush"
+Sends a \f(CW\*(C`ctlinnd flush\*(C'\fR command to the server.
+.ie n .IP """go""" 4
+.el .IP "\f(CWgo\fR" 4
+.IX Item "go"
+Causes \fBinnwatch\fR to send a \f(CW\*(C`ctlinnd go\*(C'\fR command to the server and
+to set the state to \f(CW\*(C`run\*(C'\fR.
+.ie n .IP """exit""" 4
+.el .IP "\f(CWexit\fR" 4
+.IX Item "exit"
+Causes \fBinnwatch\fR to exit.
+.ie n .IP """skip""" 4
+.el .IP "\f(CWskip\fR" 4
+.IX Item "skip"
 The remainder of the control file is skipped for the current pass.
 .PP
-The last field specifies the reason that is used in those
-.I ctlinnd
-commands that require one.
-More strictly, it is part of the reason \(em
-.I innwatch
-appends some information to it.
+The last field specifies the reason that is used in those \f(CW\*(C`ctlinnd\*(C'\fR
+commands that require one.  More strictly, it is part of the reason,
+as \fBinnwatch\fR appends some information to it.
+.PP
 In order to enable other sites to recognize the state of the local
-.I innd
-server, this field should usually be set to one of several standard
-values.
-Use ``No\ space'' if the server is rejecting articles because of a lack
-of filesystem resources.
-Use ``loadav'' if the server is rejecting articles because of a lack
-of CPU resources.
-.PP
-Once
-.I innwatch
-has taken some action as a consequence of its control line, it skips the
-rest of the control file for this pass.
-If the action was to restart the server (that is, issue a ``go'' command),
-then the next pass will commence almost immediately, so that
-.I innwatch
+\&\fBinnd\fR server, this field should usually be set to one of several
+standard values.  Use for instance \f(CW\*(C`No space\*(C'\fR if the server is
+rejecting articles because of a lack of filesystem resources, or
+\&\f(CW\*(C`loadav\*(C'\fR if the server is rejecting articles because of a lack of
+\&\s-1CPU\s0 resources.
+.PP
+Once \fBinnwatch\fR has taken some action as a consequence of its control
+line, it skips the rest of the control file for this pass.  If the action
+was to restart the server (that is, issue a \f(CW\*(C`ctlinnd go\*(C'\fR command),
+then the next pass will commence almost immediately, so that \fBinnwatch\fR
 can discover any other condition that may mean that the server should
 be suspended again.
-.SH EXAMPLES
-.RS
-.nf
-@@@inndf .@lt@10000@throttle@No space
-@@@inndf -i .@lt@1000@throttle@No space (inodes)
-.fi
-.RE
+.SH "EXAMPLES"
+.IX Header "EXAMPLES"
+.Vb 2
+\&    !!! inndf . ! lt ! 10000 ! throttle ! No space (spool)
+\&    !!! inndf \-i . ! lt ! 1000 ! throttle ! No space (inodes)
+.Ve
 .PP
 The first line causes the server to be throttled if the free space drops
-below 10000 units
-(using whatever units
-.IR inndf (8)
-uses), and restarted again when free space increases above the threshold.
+below 10000 units (using whatever units \fBinndf\fR uses), and restarted
+again when free space increases above the threshold.
 .PP
 The second line does the same for inodes.
 .PP
-The next three lines act as a group and should
-appear in the following order.
-It is easier to explain them, however, if they are described from the last up.
-.PP
-.RS
-.nf
-!load!load hiload!loadavg!lt!5!go!
-:hiload:+ load:loadavg:gt:8:throttle:loadav
-/load/+/loadavg/ge/6/pause/loadav
-.fi
-.RE
-.PP
-The final line causes the server to be paused if
-.I innwatch
-is in the ``run'' state and the load average rises to, or above, six.
-The state is set to ``load'' when this happens.
-The previous line causes the server to be throttled when
-.I innwatch
-is in the ``run'' or ``load'' state, and the load average rises above eight.
-The state is set to ``hiload'' when this happens.
-Note that
-.I innwatch
-can switch the server from ``paused'' to ``throttled'' if the load average
-rises from below six to between six and seven, and then to above eight.
-The first line causes the server to be sent a ``go'' command if
-.I innwatch
-is in the ``load'' or ``hiload'' state, and the load average drops below five.
-.PP
-Note that all three lines assume a mythical command
-.I loadavg
-that is assumed to print the current load average as an integer.
-In more practical circumstances, a pipe of
-.I uptime
-into
-.I awk
-is more likely to be useful.
-.SH BUGS
-This file must be tailored for each individual site, the sample supplied
-is truly no more than a sample.
-The file should be ordered so that the more common problems are tested first.
-.PP
-The ``run'' state is not actually identified by the label with that three
-letter name, and using it will not work as expected.
-.PP
-Using an ``unusual'' character for the delimiter such as ``('', ``*'',
-``&'', ``\(ga'', ``\(aa'', and the like, is likely to lead to obscure and
-hard to locate bugs.
-.SH HISTORY
-Written by <kre@munnari.oz.au> for InterNetNews.
-.de R$
-This is revision \\$3, dated \\$4.
-..
-.R$ $Id: innwatch.ctl.5 5909 2002-12-03 05:17:18Z vinocur $
+The next three lines act as a group and should appear in the following
+order.  It is easier to explain them, however, if they are described
+from the last up.
+.PP
+.Vb 3
+\&    ! load ! load hiload ! loadavg ! lt ! 5 ! go ! loadav
+\&    : hiload : + load : loadavg : gt : 8 : throttle : loadav
+\&    / load / + / loadavg / gt / 6 / pause / loadav
+.Ve
+.PP
+The final line causes the server to be paused if \fBinnwatch\fR is in the
+\&\f(CW\*(C`run\*(C'\fR state and the load average rises to, or above, six.  The state is
+set to \f(CW\*(C`load\*(C'\fR when this happens.  The previous line causes the server
+to be throttled when \fBinnwatch\fR is in the \f(CW\*(C`run\*(C'\fR or \f(CW\*(C`load\*(C'\fR state,
+and the load average rises above eight.  The state is set to \f(CW\*(C`hiload\*(C'\fR
+when this happens.  Note that \fBinnwatch\fR can switch the server from
+\&\f(CW\*(C`pause\*(C'\fR to \f(CW\*(C`throttle\*(C'\fR if the load average rises from below six to
+between six and seven, and then to above eight.  The first line causes
+the server to be sent a \f(CW\*(C`ctlinnd go\*(C'\fR command if \fBinnwatch\fR is in the
+\&\f(CW\*(C`load\*(C'\fR or \f(CW\*(C`hiload\*(C'\fR state, and the load average drops below five.
+.PP
+Note that all three lines assume a mythical command \f(CW\*(C`loadavg\*(C'\fR that
+is assumed to print the current load average as an integer.  In more
+practical circumstances, a pipe of \fBuptime\fR into \s-1AWK\s0 is more likely
+to be useful.
+.SH "BUGS"
+.IX Header "BUGS"
+The \f(CW\*(C`run\*(C'\fR state is not actually identified by the label with that
+three letter name, and using it will not work as expected (\f(CW\*(C`go\*(C'\fR is
+the wanted state in that case).
+.PP
+Using an \fIunusual\fR character for the delimiter such as \f(CW\*(C`(\*(C'\fR, \f(CW\*(C`*\*(C'\fR,
+\&\f(CW\*(C`&\*(C'\fR, \f(CW\*(C`\`\*(C'\fR, \f(CW\*(C`\*(Aq\*(C'\fR, and the like, is likely to lead to obscure and hard
+to locate bugs.
+.SH "HISTORY"
+.IX Header "HISTORY"
+Written by <kre@munnari.oz.au> for InterNetNews.  Rewritten into \s-1POD\s0
+by Julien Elie.
 .SH "SEE ALSO"
-inn.conf(5),
-innd(8),
-inndf(8),
-ctlinnd(8),
-news.daily(8).
+.IX Header "SEE ALSO"
+\&\fBctlinnd\fR\|(8), \fBinndf\fR\|(8), \fBnews.daily\fR\|(8), \fBrc.news\fR\|(8).
diff -Nurp inn-2.6.4/doc/man/innxbatch.8 inn-2.6.5/doc/man/innxbatch.8
--- inn-2.6.4/doc/man/innxbatch.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/innxbatch.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,126 +1,250 @@
-.TH INNXBATCH 8
-.SH NAME
-innxbatch \- send xbatched Usenet articles to a remote NNTP server
-.SH SYNOPSIS
-.I innxbatch
-[
-.B \-D
-]
-[
-.BI \-t " timeout"
-]
-[
-.BI \-T " timeout"
-]
-[
-.B \-v
-]
-.I host
-.I file ...
-.SH DESCRIPTION
-.I Innxbatch
-connects to the NNTP server at the specified
-.I host
-and sends it the specified xbatch files, using the XBATCH extension to
-the NNTP protocol. It is normally invoked by a script run out of
-.IR cron (8)
-that uses
-.IR shlock (1)
-to lock the host name, followed by a
-.IR ctlinnd (8)
-command to flush the batchfile.
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+.    ds C`
+.    ds C'
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\"
+.\" If the F register is >0, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
+..
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+.    if \nF \{\
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
+..
+.        if !\nF==2 \{\
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
+.\}
+.rr rF
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "INNXBATCH 8"
+.TH INNXBATCH 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+innxbatch, sendxbatches \- Send xbatched Usenet articles to a remote NNTP
+server
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+\&\fBinnxbatch\fR [\fB\-Dv\fR] [\fB\-t\fR \fItimeout\fR] [\fB\-T\fR \fItimeout\fR] \fIhost\fR \fIfile\fR
+[\fIfile\fR ...]
+.PP
+\&\fBinnxbatch\fR \fB\-i\fR [\fB\-Dv\fR] [\fB\-t\fR \fItimeout\fR] [\fB\-T\fR \fItimeout\fR] \fIhost\fR
+.PP
+\&\fBsendxbatches\fR \fIsitename\fR \fIhost\fR \fIfile\fR [\fIfile\fR ...]
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\fBinnxbatch\fR connects to port 119 of the \s-1NNTP\s0 server at the specified \fIhost\fR,
+and sends it the specified xbatch files, using the \s-1XBATCH\s0 extension to the
+\&\s-1NNTP\s0 protocol.  These files are specified either from the command line or
+from standard input if \fBi\fR is used.
 .PP
 Each file is removed after it has been successfully transferred.
 .PP
-If a communication error such as a
-.IR write (2)
-failure, or an unexpected reply from the remote server occurs,
-.I innxbatch
-will stop sending and leave all remaining files untouched for later retry.
-
-
-.SH OPTIONS
-.TP
-.B \-t seconds
-.I Innxbatch
-normally blocks until the connection is made.
-To specify a timeout on how long to try to make the connection, use
-the ``\-t'' flag.
-.TP
-.B \-T seconds
-To specify the total amount of time that should be allowed for article
-transfers, use the ``\-T'' flag.
-.br
+If a communication error such as a \fBwrite\fR\|(2) failure, or an unexpected reply
+from the remote server occurs, \fBinnxbatch\fR will stop sending and leave
+all remaining files untouched for later retry.
+.PP
+If authentication credentials are present for the remote server in the
+\&\fIpasswd.nntp\fR file in \fIpathetc\fR, then \fBinnxbatch\fR will use them to
+authenticate.
+.PP
+\&\fBinnxbatch\fR does not use itself any file locking.  At worst, a batch could be
+transmitted twice in parallel by two independent invocations of \fBinnxbatch\fR.
+To prevent this, it should be invoked by a script run out of \fBcron\fR\|(8) that uses
+\&\fBshlock\fR\|(1) to lock the host name, followed by a \f(CW\*(C`ctlinnd flush\*(C'\fR command to
+flush the batch file.  \fBsendxbatches\fR is such a wrapper around \fBinnxbatch\fR.
+It will ensure only one instance is run, flush \fIsitename\fR (as used in the
+\&\fInewsfeeds\fR entry) and send to \fIhost\fR the files given as arguments.
+.PP
+As the \s-1XBATCH\s0 extension is not a standardized \s-1NNTP\s0 command, some news
+servers do not recognize it.  Instead of using \fBinnxbatch\fR, you may consider
+\&\fBinnfeed\fR, or if that is not possible, \fBnntpsend\fR.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+.IP "\fB\-D\fR" 4
+.IX Item "-D"
+Prints debugging information on standard error.  This will show the protocol
+transactions between \fBinnxbatch\fR and the \s-1NNTP\s0 server on the remote host.
+.IP "\fB\-i\fR" 4
+.IX Item "-i"
+Reads batch file names from standard input.  For each successfully transmitted
+batch, an \f(CW\*(C`OK\*(C'\fR is printed on stdout to indicate that another file name
+is expected.
+.IP "\fB\-t\fR \fItimeout\fR" 4
+.IX Item "-t timeout"
+Specifies a timeout in seconds on how long to try to make the connection.
+Otherwise, \fBinnxbatch\fR normally blocks until the connection is made.
+.IP "\fB\-T\fR \fItimeout\fR" 4
+.IX Item "-T timeout"
+Specifies the total amount of time in seconds that should be allowed for
+article transfers.
+.Sp
 The default is to wait until an I/O error occurs, or all the articles have
-been transferred. If the ``\-T'' flag is used, the time is checked
-just before each article is started; it will not abort a transfer that
-is in progress.
-.TP
-.B \-v
-Upon exit,
-.I innxbatch
-reports transfer and CPU usage statistics via
-.IR syslog (3).
-If the ``\-v'' flag is used, they will also be printed on the standard
+been transferred.  If this flag is used, the time is checked just before
+each article is started; it will not abort a transfer that is in progress.
+.IP "\fB\-v\fR" 4
+.IX Item "-v"
+Upon exit, \fBinnxbatch\fR reports transfer and \s-1CPU\s0 usage statistics via
+\&\fBsyslog\fR\|(3).  If this flag is used, they will also be printed on the standard
 output.
-.TP
-.B \-D
-Use the ``\-D'' flag to print debugging information on standard error.
-This will show the protocol transactions between
-.I innxbatch
-and the NNTP server on the remote host.
-.SH EXAMPLES
-A sample
-.I newsfeeds(5)
-entry to produce appropriate xbatch files (thanks to Karsten Leipold
-<poldi@dfn.de>):
-.sp 1
-.nf
-  nase\e
-    :*\e
-    :Tc,Wnb\e
-.ds R$ <pathbin in inn.conf>
-    :\*(R$/batcher \e
-.ds R$ <$ac_cv_path_COMPRESS in config.cache>
-.ds P$ <pathoutgoing in inn.conf>
-       -p "(\*(R$ >\e
-       \*(P$/nase.\e$\e$)" \e
-       nase.do.main
-.fi
-.sp 1
-A sample script to invoke
-.I innxbatch(8)
-is:
-.sp 1
-.nf
-  #!/bin/sh
-  ##  SH script to send xbatches for a site, wrapped around innxbatch
-  ##  Invocation:
-  ##     sendxbatches.sh <sitename> <hostname> <xbatch file name> ...
-
-  if [ $# -le 3 ]
-  then
-	echo "usage: $0 <sitename> <hostname> <xbatch file name>"
-	exit 1
-  fi
-
-  . <pathbin in inn.conf>/innshellvars
-
-  site="$1"; host="$2"; shift; shift
-
-  ctlinnd flush "$site" \e
-  && sleep 5 \e
-  && exec $NEWSBIN/innxbatch -v -D "$host" $*
-.fi
-.SH HISTORY
-Written by Stefan Petri <petri@ibr.cs.tu-bs.de>, modelled after
-.IR innxmit (8)
-and the XBATCH patch for the nntp reference implementation.
+.SH "EXAMPLES"
+.IX Header "EXAMPLES"
+A sample \fInewsfeeds\fR entry to produce appropriate xbatch files is:
+.PP
+.Vb 5
+\&    nase\e
+\&        :*\e
+\&        :Tc,Wnb\e
+\&        :<pathbin>/batcher \-p "(<$COMPRESS in <pathlib>/innshellvars>\e
+\&            > <pathoutgoing>/nase.\e$\e$)" nase.do.main
+.Ve
+.PP
+A sample script to invoke \fBinnxbatch\fR\|(8) is:
+.PP
+.Vb 12
+\&    #! /bin/sh
+\&    #  Send xbatches for a site, wrapped around innxbatch.
+\&    if [ $# \-lt 3 ]
+\&    then
+\&        echo "usage: $0 <sitename> <hostname> <xbatch file name> ..."
+\&        exit 1
+\&    fi
+\&    . <pathlib>/innshellvars
+\&    site="$1"; host="$2"; shift; shift
+\&    ctlinnd flush "$site" \e
+\&    && sleep 5 \e
+\&    && exec ${NEWSBIN}/innxbatch \-v \-D "$host" $*
+.Ve
+.PP
+You can use \fBsendxbatches\fR, already shipped with \s-1INN,\s0 doing locking.
+An example of call is:
+.PP
+.Vb 1
+\&    sendxbatches nase remote.news.server.name <pathoutgoing>/nase*
+.Ve
+.SH "HISTORY"
+.IX Header "HISTORY"
+Written by Stefan Petri <petri@ibr.cs.tu\-bs.de>, modelled after \fBinnxmit\fR
+and the \s-1XBATCH\s0 patch for the \s-1NNTP\s0 reference implementation.  Examples from
+Karsten Leipold <poldi@dfn.de>.  Rewritten into \s-1POD\s0 by Julien Elie.
 .SH "SEE ALSO"
-ctlinnd(8),
-inn.conf(5),
-innd(8),
-innxmit(8),
-newsfeeds(5),
-nntpsend(8),
-shlock(1).
+.IX Header "SEE ALSO"
+\&\fBctlinnd\fR\|(8), \fBinnxmit\fR\|(8), \fBnewsfeeds\fR\|(5), \fBnntpsend\fR\|(8), \fBpasswd.nntp\fR\|(5), \fBshlock\fR\|(1).
diff -Nurp inn-2.6.4/doc/man/innxmit.8 inn-2.6.5/doc/man/innxmit.8
--- inn-2.6.4/doc/man/innxmit.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/innxmit.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "INNXMIT 8"
-.TH INNXMIT 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH INNXMIT 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -147,7 +147,8 @@ innxmit \- Send Usenet articles to a rem
 .SH "DESCRIPTION"
 .IX Header "DESCRIPTION"
 \&\fBinnxmit\fR connects to the \s-1NNTP\s0 server at the specified \fIhost\fR
-(validating itself via \fIpasswd.nntp\fR if possible) and sends it the
+(validating itself via \fIpasswd.nntp\fR if authentication credentials
+are present for the remote server in that file) and sends it the
 articles specified in the batch file named \fIfile\fR.  It is normally
 invoked by a script run out of \fBcron\fR\|(8) that uses \fBshlock\fR to lock the
 host name, followed by a \fBctlinnd\fR command to flush the batch file.
@@ -247,8 +248,6 @@ If the \fB\-v\fR flag is used, they will
 .IX Header "HISTORY"
 Written by Rich \f(CW$alz\fR <rsalz@uunet.uu.net> for InterNetNews. Converted to \s-1POD\s0
 by Julien Elie.
-.PP
-\&\f(CW$Id:\fR innxmit.pod 9588 2013\-12\-19 17:46:41Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBctlinnd\fR\|(8), \fBinn.conf\fR\|(5), \fBinnd\fR\|(8), \fBnewsfeeds\fR\|(5), \fBpasswd.nntp\fR\|(5), \fBshlock\fR\|(1).
diff -Nurp inn-2.6.4/doc/man/libauth.3 inn-2.6.5/doc/man/libauth.3
--- inn-2.6.4/doc/man/libauth.3	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/libauth.3	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "libauth 3"
-.TH libauth 3 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH libauth 3 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -200,8 +200,6 @@ respectively?
 .SH "HISTORY"
 .IX Header "HISTORY"
 Written by Jeffrey M.\ Vinocur <jeff@litech.org> for InterNetNews.
-.PP
-\&\f(CW$Id:\fR libauth.pod 8200 2008\-11\-30 13:31:30Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBnnrpd\fR\|(8), \fBreaders.conf\fR\|(5), \fIdoc/external\-auth\fR
diff -Nurp inn-2.6.4/doc/man/libinn.3 inn-2.6.5/doc/man/libinn.3
--- inn-2.6.4/doc/man/libinn.3	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/libinn.3	2022-02-18 20:36:57.000000000 +0100
@@ -1,473 +1,417 @@
-.\" $Revision: 10304 $
-.TH LIBINN 3
-.SH NAME
-libinn \- InterNetNews library routines
-.SH SYNOPSIS
-.nf
-.ta \w'    unsigned long    'u
-.B
-#include "inn/libinn.h"
-
-.B "char *"
-.B "GenerateMessageID(domain)"
-.B "    char    *domain;"
-
-.B "void"
-.B "HeaderCleanFrom(from)"
-.B "    char	*from;"
-
-.B "FILE *"
-.B "CAopen(FromServer, ToServer)"
-.B "    FILE	*FromServer;"
-.B "    FILE	*ToServer;"
-
-.B "FILE *"
-.B "CAlistopen(FromServer, ToServer, request)"
-.B "    FILE	*FromServer;"
-.B "    FILE	*ToServer;"
-.B "    char	*request;"
-
-.B "void"
-.B "CAclose()"
-
-.B "struct _DDHANDLE *"
-.B "DDstart(FromServer, ToServer)"
-.B "    FILE	*FromServer;"
-.B "    FILE	*ToServer;"
-
-.B "void"
-.B "DDcheck(h, group)"
-.B "    DDHANDLE	*h;"
-.B "    char	*group;"
-
-.B "char *"
-.B "DDend(h)"
-.B "    DDHANDLE	*h;"
-
-.B "void"
-.B "fdflag_close_exec(fd, flag)"
-.B "    int	fd;"
-.B "    bool	flag;"
-
-.B "int"
-.B "fdflag_nonblocking(fd, flag)"
-.B "    socket_type	fd;"
-.B "    bool	flag;"
-
-.B "bool"
-.B "inn_lock_file(fd, type, flag)"
-.B "    int	fd;"
-.B "    LOCKTYPE	type;"
-.B "    bool	block;"
-
-.B "char *"
-.B "inn_getfqdn(domain)"
-.B "    const char *domain;"
-
-.B "char *"
-.B "GetModeratorAddress(FromServer, ToServer, group, moderatormailer)"
-.B "    FILE	*FromServer;"
-.B "    FILE	*ToServer;"
-.B "    char	*group;"
-.B "    char	*moderatormailer;"
-
-.B "int"
-.B "GetResourceUsage(usertime, systime)"
-.B "    double	*usertime;"
-.B "    double	*systime;"
-
-.B "int"
-.B "NNTPlocalopen(FromServerp, ToServerp, errbuff, len)"
-.B "    FILE	**FromServerp;"
-.B "    FILE	**ToServerp;"
-.B "    char	*errbuff;"
-.B "    size_t  len;"
-
-.B "int"
-.B "NNTPremoteopen(port, FromServerp, ToServerp, errbuff, len)"
-.B "    int	port;"
-.B "    FILE	**FromServerp;"
-.B "    FILE	**ToServerp;"
-.B "    char	*errbuff;"
-.B "    size_t  len;"
-
-.B "int"
-.B "NNTPconnect(host, port, FromServerp, ToServerp, errbuff, len)"
-.B "    char	*host;"
-.B "    int	port;"
-.B "    FILE	**FromServerp;"
-.B "    FILE	**ToServerp;"
-.B "    char	*errbuff;"
-.B "    size_t  len;"
-
-.B "int"
-.B "NNTPsendarticle(text, ToServer, Terminate)"
-.B "    char	*text;"
-.B "    FILE	*ToServer;"
-.B "    int	Terminate;"
-
-.B "int"
-.B "NNTPsendpassword(server, FromServer, ToServer)"
-.B "    char	*server;"
-.B "    FILE	*FromServer;"
-.B "    FILE	*ToServer;"
-
-.B "void"
-.B "Radix32(value, p)
-.B "    unsigned long	value;"
-.B "    char	*p;"
-
-.B "char *"
-.B "ReadInFile(name, Sbp)"
-.B "    char	*name;"
-.B "    struct stat	*Sbp;"
-
-.B "char *"
-.B "ReadInDescriptor(fd, Sbp)"
-.B "    int	fd;"
-.B "    struct stat	*Sbp;"
-
-.B "HASH"
-.B "HashMessageID(MessageID)"
-.B "    const char *MessageID;"
-.fi
-.SH DESCRIPTION
-.I Libinn
-is a library of utility routines for manipulating Usenet articles and
-related data.
-.PP
-.I GenerateMessageID
-uses the current time, process-ID, and fully qualified domain name, which is
-passed as an argument and used if local host can not be resolved or it is
-different from ``domain'' set in
-.IR inn.conf ,
-to create a Message-ID header that is highly likely to be unique.
-The returned value points to static space that is reused on subsequent calls.
-.PP
-.I HeaderCleanFrom
-removes the extraneous information from the value of a ``From'' or ``Reply-To''
-header and leaves just the official mailing address.
-In particular, the following transformations are made to the
-.I from
-parameter:
-.RS
-.nf
-.ta \w'stuff <address>  'u
-address	-->  address
-address (stuff)	-->  address
-stuff <address>	-->  address
-.fi
-.RE
-The transformations are simple, based on RFC\ 5536 which limits the format
-of the header.
-.PP
-.I CAopen
-and
-.I CAclose
-provide news clients with access to the active file; the ``CA'' stands for
-.IR C lient
-.IR A ctive.
-.I CAopen
-opens the
-.I active
-file for reading.
-It returns a pointer to an open FILE, or NULL on error.
-If a local or NFS-mounted copy exists,
-.I CAopen
-will use that file.
-The
-.I FromServer
-and
-.I ToServer
-parameters should be FILE's connected to the NNTP server for input and
-output, respectively.
-See
-.I NNTPremoteopen
-or
-.IR NNTPlocalopen ,
-below.
-If either parameter is NULL, then
-.I CAopen
-will just return NULL if the file is not locally available.
-If they are not NULL,
-.I CAopen
-will use them to query the NNTP server using
-the ``list'' command to make a local temporary copy.
-.PP
-The
-.I CAlistopen
-sends a ``list'' command to the server and returns a temporary file
-containing the results.
-The
-.I request
-parameter, if not NULL, will be sent as an argument to the command.
-Unlike
-.IR CAopen ,
-this routine will never use a locally-available copy of the active file.
-.PP
-.I CAclose
-closes the active file and removes any temporary file that might have
-been created by
-.I CAopen
-or
-.IR CAlistopen .
-.PP
-.I fdflag_close_exec
-can make a descriptor ``close-on-exec'' so that it is not shared
-with any child processes.
-If the flag is non-zero, the file is so marked; if zero, the ``close-on-exec''
-mode is cleared.
-.PP
-.IR DDstart ,
-.IR DDcheck ,
-and
-.I DDend
-are used to set the Distribution header; the ``DD'' stands for
-.IR D efault
-.IR D istribution.
-The
-.I distrib.pats
-file is consulted to determine the proper value for the Distribution
-header after all newsgroups have been checked.
-.I DDstart
-begins the parsing.
-It returns a pointer to an opaque handle that should be used on subsequent
-calls.
-The
-.I FromServer
-and
-.I ToServer
-parameters should be FILE's connected to the NNTP server for input and
-output, respectively.
-If either parameter is NULL, then an empty default will ultimately be returned
-if the file is not locally available.
-.PP
-.I DDcheck
-should be called
-with the handle,
-.IR h ,
-returned by
-.I DDstart
-and a newgroups,
-.IR group ,
-to check.
-It can be called as often as necessary.
-.PP
-.I DDend
-releases any state maintained in the handle and returns an allocated copy
-of the text that should be used for the Distribution header.
-.PP
-.I fdflag_nonblocking
-enables (if
-.I flag
-is non-zero) or disables (if
-.I flag
-is zero) non-blocking I/O on the indicated descriptor.
-It returns \-1 on failure or zero on success.
-.PP
-.I inn_lock_file
-tries to lock the file descriptor
-.IR fd .
-If
-.I block
-is true it will block until the lock can be made, otherwise
-it will return false if the file cannot be locked.
-.I type
-is one of: INN_LOCK_READ, INN_LOCK_WRITE, or INN_LOCK_UNLOCK.
-It returns false on failure or true on success.
-.PP
-.I inn_getfqdn
-returns the fully qualified domain name of the local host.
-.I Domain
-is used to qualify the local host name if local host can not be resolved
-in DNS.
-The returned value points to newly-allocated memory that the caller is
-responsible for freeing,
-or NULL on error.
-.PP
-.I GetModeratorAddress
-returns the mailing address of the moderator for specified
-.I group
-or NULL on error.
-.I Moderatormailer
-is used as its address, if there is no matched moderator.
-See
-.IR moderators (5)
-for details on how the address is determined.
-.I GetModeratorAddress
-does no checking to see if the specified group is actually moderated.
-The returned value points to static space that is reused on subsequent
-calls.
-The
-.I FromServer
-and
-.I ToServer
-parameters should be FILE's connected to the NNTP server for input and
-output, respectively.  If either of these parameters is NULL, then an
-attempt to get the list from a local copy is made.
-.PP
-.I GetResourceUsage
-fills in the
-.I usertime
-and
-.I systime
-parameters with the total user and system time used by the current
-process and any children it may have spawned.
-If
-.I <HAVE_GETRUSAGE in include/config.h>
-is defined, it gets the values by doing a
-.IR getrusage (2)
-system call; otherwise it calls
-.IR times (2).
-It returns \-1 on failure, or zero on success.
-.PP
-.I NNTPlocalopen
-opens a connection to the private port of an InterNetNews server running on
-the local host, if
-.I <HAVE_UNIX_DOMAIN_SOCKETS in include/config.h>
-is defined. 
-It returns \-1 on failure, or zero on success.
-.I FromServerp
-and
-.I ToServerp
-will be filled in with FILE's which can be used to communicate
-with the server.
-.I Errbuff
-can either be NULL or a pointer to a buffer at least 512 bytes long.
-If not NULL, and the server refuses the connection, then it will be
-filled in with the text of the server's reply.
-.I Len
-should be the length of the buffer.
-This routine is not for general use.
-If
-.I <HAVE_UNIX_DOMAIN_SOCKETS in include/config.h>
-is not defined, this
-is a stub routine, for compatibility with systems that have Unix-domain
-stream sockets.
-It always returns \-1.
-.PP
-.I NNTPremoteopen
-does the same except that it uses ``innconf->server''
-as the local server, and opens a connection to the
-.IR port .
-Any client program can use this routine.
-It returns \-1 on failure, or zero on success.
-.PP
-.I NNTPconnect
-is the same as
-.I NNTPremoteopen
-except that the desired host is given as the
-.I host
-parameter.
-.PP
-.I NNTPsendarticle
-writes
-.I text
-on
-.I ToServer
-using NNTP conventions for line termination.
-The text should consist of one or more lines ending with a newline.
-If
-.I Terminate
-is non-zero, then the routine will also write the NNTP data-termination
-marker on the stream.
-It returns \-1 on failure, or zero on success.
-.PP
-.I NNTPsendpassword
-sends authentication information to an NNTP server by finding the appropriate
-entry in the
-.I passwd.nntp
-file.
-.I Server
-contains the name of the host; ``innconf->server'' will be used if
-.I server
-is NULL.
-.I FromServer
-and
-.I ToServer
-should be FILE's that are connected to the server.
-No action is taken if the specified host is not listed in the password file.
-.PP
-.I Radix32
-converts the number in
-.I value
-into a radix-32 string into the buffer pointed to by
-.IR p .
-The number is split into five-bit pieces and each pieces is converted
-into a character using the alphabet
-.I "0..9a..v"
-to represent the numbers 0..32.
-Only the lowest 32 bits of
-.I value
-are used, so
-.I p
-need only point to a buffer of eight bytes (seven characters and the
-trailing \e0).
-.PP
-.I ReadInFile
-reads the file named
-.I name
-into allocated memory, appending a terminating \e0 byte.
-It returns a pointer to the space, or NULL on error.
-If
-.I Sbp
-is not NULL, it is taken as the address of a place to store the results
-of a
-.IR stat (2)
-call.
-.PP
-.I ReadInDescriptor
-performs the same function as
-.I ReadInFile
-except that
-.I fd
-refers to an already-open file.
-.PP
-.I HashMessageID
-returns hashed message-id using MD5.
-.SH EXAMPLES
-.RS
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
 .nf
-char	*p;
-char	frombuff[256], errbuff[256];
-FILE	*F;
-FILE	*ToServer;
-FILE	*FromServer;
-int	port = 119;
-
-strlcpy(frombuff, HDR(HDR__FROM), sizeof(frombuff));
-HeaderCleanFrom(frombuff);
-
-if ((F = CAopen(FromServer, ToServer)) == NULL)
-    Fatal("Can't open active file");
-
-/* Don't pass the file on to our children. */
-fdflag_close_exec(fileno(F), true);
-
-/* Make a local copy. */
-p = ReadInDescriptor(fileno(F), (struct stat *)NULL);
-
-/* Close the file. */
-CAclose();
-
-if (NNTPremoteopen(port, &FromServer, &ToServer, errbuff, sizeof(errbuff)) < 0)
-    Fatal("Can't connect to server");
-
-if ((p = GetModeratorAddress(NULL, NULL, "comp.sources.unix",
-                             "%s@example.com")) == NULL)
-    Fatal("Can't find moderator's address");
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
 .fi
-.RE
-.SH HISTORY
-Written by Rich $alz <rsalz@uunet.uu.net> for InterNetNews.
-.de R$
-This is revision \\$3, dated \\$4.
 ..
-.R$ $Id: libinn.3 10304 2018-12-02 14:05:50Z iulius $
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+.    ds C`
+.    ds C'
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\"
+.\" If the F register is >0, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
+..
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+.    if \nF \{\
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
+..
+.        if !\nF==2 \{\
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
+.\}
+.rr rF
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "libinn 3"
+.TH libinn 3 "2022-02-18" "INN 2.6.5" "InterNetNews Documentation"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+libinn \- InterNetNews library routines
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+.Vb 1
+\&    #include "inn/libinn.h"
+\&
+\&    #define ISWHITE(c) ...
+\&
+\&    /* Headers\-related routines. */
+\&    extern char *GenerateMessageID(char *domain);
+\&    extern void HeaderCleanFrom(char *from);
+\&    extern struct _DDHANDLE *DDstart(FILE *FromServer, FILE *ToServer);
+\&    extern void DDcheck(struct _DDHANDLE *h, char *group);
+\&    extern char *DDend(struct _DDHANDLE *h);
+\&
+\&    /* Opening the active file on a client. */
+\&    extern FILE *CAopen(FILE *FromServer, FILE *ToServer);
+\&    extern FILE *CAlistopen(FILE *FromServer, FILE *ToServer,
+\&                            const char *request);
+\&    extern void CAclose(void);
+\&
+\&    /* File locking. */
+\&    enum inn_locktype
+\&    {
+\&        INN_LOCK_READ,
+\&        INN_LOCK_WRITE,
+\&        INN_LOCK_UNLOCK
+\&    };
+\&
+\&    extern bool inn_lock_file(int fd, enum inn_locktype type,
+\&                              bool block);
+\&
+\&    /* NNTP functions. */
+\&    extern int NNTPlocalopen(FILE **FromServerp, FILE **ToServerp,
+\&                             char *errbuff, size_t len);
+\&    extern int NNTPremoteopen(int port, FILE **FromServerp,
+\&                              FILE **ToServerp, char *errbuff,
+\&                              size_t len);
+\&    extern int NNTPconnect(const char *host, int port,
+\&                           FILE **FromServerp, FILE **ToServerp,
+\&                           char *errbuff, size_t len);
+\&    extern int NNTPsendarticle(char *text, FILE *ToServer,
+\&                               bool terminate);
+\&    extern int NNTPsendpassword(char *server, FILE *FromServer,
+\&                                FILE *ToServer);
+\&
+\&    /* Hash functions. */
+\&    typedef struct {
+\&        char hash[16];
+\&    } HASH;
+\&
+\&    extern HASH HashMessageID(const char *MessageID);
+\&
+\&    /* Other useful functions. */
+\&    extern char *inn_getfqdn(const char *domain);
+\&    extern char *GetModeratorAddress(FILE *FromServer, FILE *ToServer,
+\&                                     char *group, char *moderatormailer);
+\&
+\&    /* Miscellaneous. */
+\&    extern int GetResourceUsage(double *usertime, double *systime);
+\&    extern void Radix32(unsigned long value, char *buff);
+\&    extern char *ReadInDescriptor(int fd, struct stat *Sbp);
+\&    extern char *ReadInFile(const char *name, struct stat *Sbp);
+\&
+\&    /* Setting or clearing file descriptor flags. */
+\&    #include "inn/fdflag.h"
+\&
+\&    bool fdflag_close_exec(int fd, bool flag);
+\&    bool fdflag_nonblocking(socket_type fd, bool flag);
+.Ve
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\fIlibinn\fR is a library of utility routines for manipulating Usenet articles
+and related data.  The whole documentation of \fIlibinn\fR routines is split
+into several specific man pages besides this one: \fBlibinn_clientlib\fR\|(3),
+\&\fBlibinn_dbz\fR\|(3), \fBlibinn_inndcomm\fR\|(3), \fBlibinn_list\fR\|(3), \fBlibinn_qio\fR\|(3),
+\&\fBlibinn_tst\fR\|(3) and \fBlibinn_uwildmat\fR\|(3).
+.SS "\s-1MACROS\s0"
+.IX Subsection "MACROS"
+\&\f(CW\*(C`ISWHITE\*(C'\fR is a macro which tests whether its char argument is a space or a
+tabulation.
+.SS "HEADERS-RELATED \s-1ROUTINES\s0"
+.IX Subsection "HEADERS-RELATED ROUTINES"
+\&\fBGenerateMessageID\fR uses the current time, process-ID, and fully qualified
+domain name, which is passed as an argument and used if local host cannot
+be resolved or is different from \fIdomain\fR set in \fIinn.conf\fR, to create a
+Message-ID header field that is highly likely to be unique.  The returned
+value points to static space that is reused on subsequent calls.
+.PP
+\&\fBHeaderCleanFrom\fR removes the extraneous information from the value of a From
+or Reply-To header field and leaves just the official mailing address.  In
+particular, the following transformations are made to the \fIfrom\fR parameter:
+.IP "\(bu" 4
+address \-\-> address
+.IP "\(bu" 4
+address (stuff) \-\-> address
+.IP "\(bu" 4
+stuff <address> \-\-> address
+.PP
+The transformations are simple, based on \s-1RFC\s0\ 5536 which limits the format
+of the header field.
+.PP
+\&\fBDDstart\fR, \fBDDcheck\fR, and \fBDDend\fR are used to set the Distribution header
+field; the \f(CW\*(C`DD\*(C'\fR stands for \fIDefault Distribution\fR.  The \fIdistrib.pats\fR
+file is consulted to determine the proper value for the Distribution header
+field after all newsgroups have been checked.  \fBDDstart\fR begins the parsing.
+It returns a pointer to an opaque handle that should be used on subsequent
+calls.  The \fIFromServer\fR and \fIToServer\fR parameters should be \f(CW\*(C`FILE\*(C'\fR's
+connected to the \s-1NNTP\s0 server for input and output, respectively.  If either
+parameter is \s-1NULL,\s0 then an empty default will ultimately be returned if the
+file is not locally available.
+.PP
+\&\fBDDcheck\fR should be called with the handle, \fIh\fR, returned by \fBDDstart\fR and
+a newsgroup, \fIgroup\fR, to check.  It can be called as often as necessary.
+.PP
+\&\fBDDend\fR releases any state maintained in the handle and returns an allocated
+copy of the text that should be used for the Distribution header field.
+.SS "\s-1CLIENT ACTIVE FILE\s0"
+.IX Subsection "CLIENT ACTIVE FILE"
+\&\fBCAopen\fR and \fBCAclose\fR provide news clients with access to the \fIactive\fR
+file; the \f(CW\*(C`CA\*(C'\fR stands for \fIClient Active\fR.  \fBCAopen\fR opens the \fIactive\fR
+file for reading.  It returns a pointer to an open \f(CW\*(C`FILE\*(C'\fR, or \s-1NULL\s0 on
+error.  If a local or NFS-mounted copy exists, \fBCAopen\fR will use that file.
+The \fIFromServer\fR and \fIToServer\fR parameters should be \f(CW\*(C`FILE\*(C'\fR's connected
+to the \s-1NNTP\s0 server for input and output, respectively.  See \fBNNTPremoteopen\fR
+or \fBNNTPlocalopen\fR, below.  If either parameter is \s-1NULL,\s0 then \fBCAopen\fR will
+just return \s-1NULL\s0 if the file is not locally available.  If they are not \s-1NULL,\s0
+\&\fBCAopen\fR will use them to query the \s-1NNTP\s0 server using the \s-1LIST\s0 command to
+make a local temporary copy.
+.PP
+The \fBCAlistopen\fR sends a \s-1LIST\s0 command to the server and returns a temporary
+file containing the results.  The \fIrequest\fR parameter, if not \s-1NULL,\s0 will be
+sent as an argument to the command.  Unlike \fBCAopen\fR, this routine will never
+use a locally-available copy of the \fIactive\fR file.
+.PP
+\&\fBCAclose\fR closes the \fIactive\fR file and removes any temporary file that might
+have been created by \fBCAopen\fR or \fBCAlistopen\fR.
+.SS "\s-1FILE LOCKING\s0"
+.IX Subsection "FILE LOCKING"
+\&\fBinn_lock_file\fR tries to lock the file descriptor \fIfd\fR.  If \fIblock\fR is
+true, it will block until the lock can be made, otherwise it will return
+false if the file cannot be locked.  \fItype\fR is one of \f(CW\*(C`INN_LOCK_READ\*(C'\fR,
+\&\f(CW\*(C`INN_LOCK_WRITE\*(C'\fR or \f(CW\*(C`INN_LOCK_UNLOCK\*(C'\fR.  It returns false on failure or true
+on success.
+.SS "\s-1NNTP FUNCTIONS\s0"
+.IX Subsection "NNTP FUNCTIONS"
+\&\fBNNTPlocalopen\fR opens a connection to the private port of an InterNetNews
+server running on the local host, if \f(CW\*(C`HAVE_UNIX_DOMAIN_SOCKETS\*(C'\fR in
+\&\fIinclude/config.h\fR is defined.  It returns \f(CW\*(C`\-1\*(C'\fR on failure, or \f(CW0\fR on
+success.  \fIFromServerp\fR and \fIToServerp\fR will be filled in with \f(CW\*(C`FILE\*(C'\fR's
+which can be used to communicate with the server.  \fIerrbuff\fR can either be
+\&\s-1NULL\s0 or a pointer to a buffer at least 512 bytes long.  If not \s-1NULL,\s0 and the
+server refuses the connection, then it will be filled in with the text of
+the server's reply.  \fIlen\fR should be the length of the \fIerrbuff\fR buffer.
+This routine is not for general use.  If \f(CW\*(C`HAVE_UNIX_DOMAIN_SOCKETS\*(C'\fR in
+\&\fIinclude/config.h\fR is not defined, this is a stub routine, for compatibility
+with systems that have Unix-domain stream sockets, and it then always returns
+\&\f(CW\*(C`\-1\*(C'\fR.
+.PP
+\&\fBNNTPremoteopen\fR does the same, except that it uses the \fIserver\fR parameter
+set in \fIinn.conf\fR as the local server, and opens a connection to the \fIport\fR.
+Any client program can use this routine.  It returns \f(CW\*(C`\-1\*(C'\fR on failure, or \f(CW0\fR
+on success.
+.PP
+\&\fBNNTPconnect\fR is the same as \fBNNTPremoteopen\fR except that the desired host
+is given as the \fIhost\fR parameter.
+.PP
+\&\fBNNTPsendarticle\fR writes \fItext\fR on \fIToServer\fR using \s-1NNTP\s0 conventions for
+line termination.  The text should consist of one or more lines ending with
+a newline.  If \fIterminate\fR is true, then the routine will also write the \s-1NNTP\s0
+data-termination marker on the stream.  It returns \f(CW\*(C`\-1\*(C'\fR on failure, or \f(CW0\fR
+on success.
+.PP
+\&\fBNNTPsendpassword\fR sends authentication information to an \s-1NNTP\s0 server by
+finding the appropriate entry in the \fIpasswd.nntp\fR file.  \fIserver\fR contains
+the name of the host; the \fIserver\fR parameter in \fIinn.conf\fR will be used if
+\&\fIserver\fR is \s-1NULL.\s0  \fIFromServer\fR and \fIToServer\fR should be \f(CW\*(C`FILE\*(C'\fR's that
+are connected to the server.  No action is taken if the specified host is not
+listed in the password file.
+.SS "\s-1HASHES\s0"
+.IX Subsection "HASHES"
+\&\fBHashMessageID\fR returns hashed Message-ID using \s-1MD5.\s0
+.SS "\s-1OTHER USEFUL FUNCTIONS\s0"
+.IX Subsection "OTHER USEFUL FUNCTIONS"
+\&\fBinn_getfqdn\fR returns the fully qualified domain name of the local host.
+\&\fIdomain\fR is used to qualify the local host name if local host cannot be
+resolved in \s-1DNS.\s0  The returned value points to newly-allocated memory that the
+caller is responsible for freeing, or \s-1NULL\s0 on error.
+.PP
+\&\fBGetModeratorAddress\fR returns the mailing address of the moderator for
+specified \fIgroup\fR or \s-1NULL\s0 on error.  \fImoderatormailer\fR is used as its
+address, if there is no matched moderator.  See \fBmoderators\fR\|(5) for details on
+how the address is determined.  \fBGetModeratorAddress\fR does no checking to
+see if the specified group is actually moderated.  The returned value points
+to static space that is reused on subsequent calls.  The \fIFromServer\fR and
+\&\fIToServer\fR parameters should be \f(CW\*(C`FILE\*(C'\fR's connected to the \s-1NNTP\s0 server for
+input and output, respectively.  If either of these parameters is \s-1NULL,\s0 then
+an attempt to get the list from a local copy is made.
+.SS "\s-1MISCELLANEOUS\s0"
+.IX Subsection "MISCELLANEOUS"
+\&\fBGetResourceUsage\fR fills in the \fIusertime\fR and \fIsystime\fR parameters with
+the total user and system time used by the current process and any children
+it may have spawned.  If \f(CW\*(C`HAVE_GETRUSAGE\*(C'\fR in \fIinclude/config.h\fR is defined,
+it gets the values by doing a \fBgetrusage\fR\|(2) system call; otherwise it calls
+\&\fBtimes\fR\|(2).  It returns \f(CW\*(C`\-1\*(C'\fR on failure, or \f(CW0\fR on success.
+.PP
+\&\fBRadix32\fR converts the number in \fIvalue\fR into a radix\-32 string into the
+buffer pointed to by \fIbuff\fR.  The number is split into five-bit pieces and
+each piece is converted into a character using the alphabet \f(CW\*(C`0..9a..v\*(C'\fR to
+represent the numbers \f(CW0..32\fR.  Only the lowest 32 bits of \fIvalue\fR are used,
+so \fIbuff\fR needs only pointing to a buffer of eight bytes (seven characters
+and the trailing \f(CW\*(C`\e0\*(C'\fR).
+.PP
+\&\fBReadInFile\fR reads the file named \fIname\fR into allocated memory, appending a
+terminating \f(CW\*(C`\e0\*(C'\fR byte.  It returns a pointer to the space, or \s-1NULL\s0 on error.
+If \fISbp\fR is not \s-1NULL,\s0 it is taken as the address of a place to store the
+results of a \fBstat\fR\|(2) call.
+.PP
+\&\fBReadInDescriptor\fR performs the same function as \fBReadInFile\fR except that
+\&\fIfd\fR refers to an already-open file.
+.SS "\s-1FILE DESCRIPTOR FLAGS\s0"
+.IX Subsection "FILE DESCRIPTOR FLAGS"
+\&\fBfdflag_close_exec\fR can make a descriptor \fIclose-on-exec\fR so that it is not
+shared with any child processes.  If the flag is true, the file is so marked;
+if false, the \fIclose-on-exec\fR mode is cleared.  It returns false on failure
+(or when the function is unsupported) or true on success.
+.PP
+\&\fBfdflag_nonblocking\fR enables (if \fIflag\fR is true) or disables (if \fIflag\fR
+is false) non-blocking I/O on the indicated \f(CW\*(C`socket_type\*(C'\fR (which can be a
+non-socket file descriptor on \s-1UNIX\s0 systems, but a \f(CW\*(C`socket_type\*(C'\fR is expected
+on Windows).  It returns false on failure or true on success.
+.SH "EXAMPLES"
+.IX Header "EXAMPLES"
+.Vb 2
+\&    #include "inn/fdflag.h"
+\&    #include "inn/libinn.h"
+\&
+\&    char *p;
+\&    char frombuff[256], errbuff[256];
+\&    FILE *F;
+\&    FILE *ToServer;
+\&    FILE *FromServer;
+\&    int port = 119;
+\&
+\&    strlcpy(frombuff, HDR(HDR_\|_FROM), sizeof(frombuff));
+\&    HeaderCleanFrom(frombuff);
+\&
+\&    if ((F = CAopen(FromServer, ToServer)) == NULL)
+\&        Fatal("Can\*(Aqt open active file");
+\&
+\&    /* Don\*(Aqt pass the file on to our children. */
+\&    fdflag_close_exec(fileno(F), true);
+\&
+\&    /* Make a local copy. */
+\&    p = ReadInDescriptor(fileno(F), (struct stat *) NULL);
+\&
+\&    /* Close the file. */
+\&    CAclose();
+\&
+\&    if (NNTPremoteopen(port, &FromServer, &ToServer, errbuff,
+\&                       sizeof(errbuff)) < 0)
+\&        Fatal("Can\*(Aqt connect to server");
+\&
+\&    if ((p = GetModeratorAddress(NULL, NULL, "comp.sources.unix",
+\&                                 "%s@example.com")) == NULL)
+\&        Fatal("Can\*(Aqt find moderator\*(Aqs address");
+.Ve
+.SH "HISTORY"
+.IX Header "HISTORY"
+Written by Rich \f(CW$alz\fR <rsalz@uunet.uu.net> for InterNetNews.  Rewritten into
+\&\s-1POD\s0 by Julien Elie.
 .SH "SEE ALSO"
-active(5),
-dbz(3z),
-inn.conf(5),
-inndcomm(3),
-moderators(5),
-passwd.nntp(5).
+.IX Header "SEE ALSO"
+\&\fBactive\fR\|(5), \fBinn.conf\fR\|(5), \fBlibinn_clientlib\fR\|(3), \fBlibinn_dbz\fR\|(3),
+\&\fBlibinn_inndcomm\fR\|(3), \fBlibinn_list\fR\|(3), \fBlibinn_qio\fR\|(3), \fBlibinn_tst\fR\|(3),
+\&\fBlibinn_uwildmat\fR\|(3), \fBmoderators\fR\|(5), \fBpasswd.nntp\fR\|(5).
diff -Nurp inn-2.6.4/doc/man/libinn_clientlib.3 inn-2.6.5/doc/man/libinn_clientlib.3
--- inn-2.6.4/doc/man/libinn_clientlib.3	1970-01-01 01:00:00.000000000 +0100
+++ inn-2.6.5/doc/man/libinn_clientlib.3	2022-02-18 20:36:57.000000000 +0100
@@ -0,0 +1,199 @@
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+.    ds C`
+.    ds C'
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\"
+.\" If the F register is >0, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
+..
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+.    if \nF \{\
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
+..
+.        if !\nF==2 \{\
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
+.\}
+.rr rF
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "libinn_clientlib 3"
+.TH libinn_clientlib 3 "2022-02-18" "INN 2.6.5" "InterNetNews Documentation"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+clientlib \- NNTP clientlib part of InterNetNews library
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+.Vb 1
+\&    #include <inn/libinn.h>
+\&
+\&    extern FILE *ser_rd_fp;
+\&    extern FILE *ser_wr_fp;
+\&    extern char ser_line[];
+\&
+\&    extern char *getserverbyfile(char *file UNUSED);
+\&    extern int server_init(char *host, int port);
+\&    extern int handle_server_response(int response, char *host);
+\&    extern void put_server(const char *text);
+\&    extern int get_server(char *buff, int buffsize);
+\&    extern void close_server(void);
+.Ve
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+The routines described in this manual page are part of the InterNetNews
+library, \fBlibinn\fR\|(3).  They are replacements for the \fIclientlib\fR part of
+the \s-1NNTP\s0 distribution, and are intended to be used in building news clients.
+.PP
+The \fBgetserverbyfile\fR function retrieves the value of the \fIserver\fR parameter
+in \fIinn.conf\fR (or the value of the \f(CW\*(C`NNTPSERVER\*(C'\fR environment variable if set)
+as the name of the local \s-1NNTP\s0 server.  It returns a pointer to static space.
+The \fIfile\fR parameter is ignored (\fIinn.conf\fR is forced).
+.PP
+The \fBserver_init\fR function opens a connection to the \s-1NNTP\s0 server at
+the specified \fIhost\fR, in reader mode.  It returns the server's response
+code or \f(CW\*(C`\-1\*(C'\fR on error.  If a connection was made, then \fIser_rd_fp\fR and
+\&\fIser_wr_fp\fR can be used to read from and write to the server, respectively,
+and \fIser_line\fR will contain the server's response (though you should use
+the more convenient \fBput_server\fR and \fBget_server\fR functions instead).
+.PP
+The \fBhandle_server_response\fR function decodes the \fIresponse\fR code,
+which comes from the server on \fIhost\fR.  If the client is authorized,
+it returns \f(CW0\fR.  A client that is only allowed to read is authorized,
+but \fBhandle_server_response\fR will print a message on the standard output.
+If the client is not authorized to talk to the server, then a message is
+printed and the routine returns \f(CW\*(C`\-1\*(C'\fR.
+.PP
+The \fBput_server\fR function sends \fItext\fR to the server, adding the necessary
+\&\s-1NNTP\s0 line terminators, and flushing the I/O buffer.
+.PP
+The \fBget_server\fR function reads a line of text from the server into \fIbuff\fR,
+reading at most \fIbuffsize\fR characters.  Any trailing \f(CW\*(C`\er\en\*(C'\fR terminators
+are stripped off.  \fBget_server\fR returns \f(CW\*(C`\-1\*(C'\fR on error, \f(CW0\fR on success.
+.PP
+The \fBclose_server\fR function sends a \f(CW\*(C`QUIT\*(C'\fR command to the server and
+closes the connection.
+.SH "HISTORY"
+.IX Header "HISTORY"
+Written by Rich \f(CW$alz\fR <rsalz@uunet.uu.net> for InterNetNews.  Rewritten into
+\&\s-1POD\s0 by Julien Elie.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+\&\fBlibinn\fR\|(3).
diff -Nurp inn-2.6.4/doc/man/libinn_dbz.3 inn-2.6.5/doc/man/libinn_dbz.3
--- inn-2.6.4/doc/man/libinn_dbz.3	1970-01-01 01:00:00.000000000 +0100
+++ inn-2.6.5/doc/man/libinn_dbz.3	2022-02-18 20:36:57.000000000 +0100
@@ -0,0 +1,314 @@
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+.    ds C`
+.    ds C'
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\"
+.\" If the F register is >0, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
+..
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+.    if \nF \{\
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
+..
+.        if !\nF==2 \{\
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
+.\}
+.rr rF
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "libinn_dbz 3"
+.TH libinn_dbz 3 "2022-02-18" "INN 2.6.5" "InterNetNews Documentation"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+dbz \- Database routines for InterNetNews
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+.Vb 1
+\&    #include <inn/dbz.h>
+\&
+\&    #define DBZMAXKEY              ...
+\&    #define DBZ_INTERNAL_HASH_SIZE ...
+\&
+\&    typedef enum
+\&    {
+\&        DBZSTORE_OK,
+\&        DBZSTORE_EXISTS,
+\&        DBZSTORE_ERROR
+\&    } DBZSTORE_RESULT;
+\&
+\&    typedef enum
+\&    {
+\&        INCORE_NO,
+\&        INCORE_MEM,
+\&        INCORE_MMAP
+\&    } dbz_incore_val;
+\&
+\&    typedef struct {
+\&        bool writethrough;
+\&        dbz_incore_val pag_incore;
+\&        dbz_incore_val exists_incore;
+\&        bool nonblock;
+\&    } dbzoptions;
+\&
+\&    typedef struct {
+\&        char hash[DBZ_INTERNAL_HASH_SIZE];
+\&    } _\|_attribute_\|_((_\|_packed_\|_)) erec;
+\&
+\&    extern bool dbzinit(const char *name);
+\&    extern bool dbzclose(void);
+\&
+\&    extern bool dbzfresh(const char *name, off_t size);
+\&    extern bool dbzagain(const char *name, const char *oldname);
+\&    extern bool dbzexists(const HASH key);
+\&    extern bool dbzfetch(const HASH key, off_t *value);
+\&    extern DBZSTORE_RESULT dbzstore(const HASH key, off_t data);
+\&    extern bool dbzsync(void);
+\&    extern long dbzsize(off_t contents);
+\&    extern void dbzsetoptions(const dbzoptions options);
+\&    extern void dbzgetoptions(dbzoptions *options);
+.Ve
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+These functions provide an indexing system for rapid random access to a text
+file, hereafter named the \fIbase\fR file.
+.PP
+\&\fIdbz\fR stores offsets into the base file for rapid retrieval.  All retrievals
+are keyed on a hash value that is generated by the \fBHashMessageID\fR function
+in \fBlibinn\fR\|(3).
+.PP
+\&\fBdbzinit\fR opens a database, an index into the base file \fIname\fR, consisting
+of files \fIname\fR\fI.dir\fR, \fIname\fR\fI.index\fR, and \fIname\fR\fI.hash\fR which must
+already exist.  (If the database is new, they should be zero-length files.)
+Subsequent accesses go to that database until \fBdbzclose\fR is called to close
+the database.  When tagged hash format is used (if \fB\-\-enable\-tagged\-hash\fR was
+given at configure time), a \fIname\fR\fI.pag\fR file is used instead of \fI.index\fR
+and \fI.hash\fR.
+.PP
+\&\fBdbzfetch\fR searches the database for the specified \fIkey\fR, assigning the
+offset of the base file for the corresponding \fIkey\fR to \fIvalue\fR, if any.
+.PP
+\&\fBdbzstore\fR stores the \fIkey\fR\-\fIdata\fR pair in the database.  It will
+return \f(CW\*(C`DBZSTORE_EXISTS\*(C'\fR for duplicates (already existing entries), and
+\&\f(CW\*(C`DBZSTORE_OK\*(C'\fR for success.  It will fail with \f(CW\*(C`DBZSTORE_ERROR\*(C'\fR if the
+database files are not writable or not opened, or if any other error occurs.
+.PP
+\&\fBdbzexists\fR will verify whether or not the given hash exists or not.  \fIdbz\fR
+is optimized for this operation and it may be significantly faster than
+\&\fBdbzfetch\fR.
+.PP
+\&\fBdbzfresh\fR is a variant of \fBdbzinit\fR for creating a new database with
+more control over details.  The \fIsize\fR parameter specifies the size of
+the first hash table within the database, in number of key-value pairs.
+Performance will be best if the number of key-value pairs stored in the
+database does not exceed about 2/3 of \fIsize\fR.  (The \fBdbzsize\fR function,
+given the expected number of key-value pairs, will suggest a database size
+that meets these criteria.)  Assuming that an \fIfseek\fR offset is 4 bytes,
+the \fI.index\fR file will be 4 * \fIsize\fR bytes.  The \fI.hash\fR file will be
+\&\f(CW\*(C`DBZ_INTERNAL_HASH_SIZE\*(C'\fR * \fIsize\fR bytes (the \fI.dir\fR file is tiny and
+roughly constant in size) until the number of key-value pairs exceeds about
+80% of \fIsize\fR.  (Nothing awful will happen if the database grows beyond 100%
+of \fIsize\fR, but accesses will slow down quite a bit and the \fI.index\fR and
+\&\fI.hash\fR files will grow somewhat.)
+.PP
+\&\fIdbz\fR stores up to \f(CW\*(C`DBZ_INTERNAL_HASH_SIZE\*(C'\fR bytes (by default, 4 bytes
+if tagged hash format is used, 6 otherwise) of the Message-ID's hash in the
+\&\fI.hash\fR file to confirm a hit.  This eliminates the need to read the base
+file to handle collisions.
+.PP
+A \fIsize\fR of \f(CW0\fR given to \fBdbzfresh\fR is synonymous with the local default;
+the normal default is suitable for tables of 5,000,000 key-value pairs.
+That default value is used by \fBdbzinit\fR.
+.PP
+When databases are regenerated periodically, as it is the case for the
+\&\fIhistory\fR file, it is simplest to pick the parameters for a new database
+based on the old one.  This also permits some memory of past sizes of the
+old database, so that a new database size can be chosen to cover expected
+fluctuations.  \fBdbzagain\fR is a variant of \fBdbzinit\fR for creating a new
+database as a new generation of an old database.  The database files for
+\&\fIoldname\fR must exist.  \fBdbzagain\fR is equivalent to calling \fBdbzfresh\fR with
+a \fIsize\fR equal to the result of applying \fBdbzsize\fR to the largest number of
+entries in the \fIoldname\fR database and its previous 10 generations.
+.PP
+When many accesses are being done by the same program, \fIdbz\fR is massively
+faster if its first hash table is in memory.  If the \fIpag_incore\fR flag
+is set to \f(CW\*(C`INCORE_MEM\*(C'\fR, an attempt is made to read the table in when the
+database is opened, and \fBdbzclose\fR writes it out to disk again (if it was
+read successfully and has been modified).  \fBdbzsetoptions\fR can be used to
+set the \fIpag_incore\fR and \fIexists_incore\fR flags to different values which
+should be \f(CW\*(C`INCORE_NO\*(C'\fR (read from disk), \f(CW\*(C`INCORE_MEM\*(C'\fR (read from memory)
+or \f(CW\*(C`INCORE_MMAP\*(C'\fR (read from a mmap'ed file) for the \fI.hash\fR and \fI.index\fR
+files separately; this does not affect the status of a database that has
+already been opened.  The default is \f(CW\*(C`INCORE_NO\*(C'\fR for the \fI.index\fR file and
+\&\f(CW\*(C`INCORE_MMAP\*(C'\fR for the \fI.hash\fR file.  The attempt to read the table in may
+fail due to memory shortage; in this case \fIdbz\fR fails with an error.  Stores
+to an in-memory database are not (in general) written out to the file until
+\&\fBdbzclose\fR or \fBdbzsync\fR, so if robustness in the presence of crashes or
+concurrent accesses is crucial, in-memory databases should probably be avoided
+or the \fIwritethrough\fR option should be set to true (telling to systematically
+write to the filesystem in addition to updating the in-memory database).
+.PP
+If the \fInonblock\fR option is true, then writes to the \fI.hash\fR and \fI.index\fR
+files will be done using non-blocking I/O.  This can be significantly faster
+if your platform supports non-blocking I/O with files.  It is only applicable
+if you're not mmap'ing the database.
+.PP
+\&\fBdbzsync\fR causes all buffers etc. to be flushed out to the files.  It is
+typically used as a precaution against crashes or concurrent accesses when
+a \fIdbz\fR\-using process will be running for a long time.  It is a somewhat
+expensive operation, especially for an in-memory database.
+.PP
+Concurrent reading of databases is fairly safe, but there is no
+(inter)locking, so concurrent updating is not.
+.PP
+An open database occupies three \fIstdio\fR streams and two file descriptors;
+Memory consumption is negligible except for in-memory databases (and \fIstdio\fR
+buffers).
+.SH "DIAGNOSTICS"
+.IX Header "DIAGNOSTICS"
+Functions returning \fIbool\fR values return true for success, false for failure.
+.PP
+\&\fBdbzinit\fR attempts to have \fIerrno\fR set plausibly on return, but otherwise
+this is not guaranteed.  An \fIerrno\fR of \f(CW\*(C`EDOM\*(C'\fR from \fBdbzinit\fR indicates that
+the database did not appear to be in \fIdbz\fR format.
+.PP
+If \f(CW\*(C`DBZTEST\*(C'\fR is defined at compile-time, then a \fB\fBmain()\fB\fR function will be
+included.  This will do performance tests and integrity test.
+.SH "BUGS"
+.IX Header "BUGS"
+Unlike \fIdbm\fR, \fIdbz\fR will refuse to \fBdbzstore\fR with a key already in the
+database.  The user is responsible for avoiding this.
+.PP
+The \s-1RFC5322\s0 case mapper implements only a first approximation to the
+hideously-complex \s-1RFC5322\s0 case rules.
+.PP
+\&\fIdbz\fR no longer tries to be call-compatible with \fIdbm\fR in any way.
+.SH "HISTORY"
+.IX Header "HISTORY"
+The original \fIdbz\fR was written by Jon Zeeff <zeeff@b\-tech.ann\-arbor.mi.us>.
+Later contributions by David Butler and Mark Moraes.  Extensive reworking,
+including this documentation, by Henry Spencer <henry@zoo.toronto.edu> as part
+of the C News project.  \s-1MD5\s0 code borrowed from \s-1RSA.\s0  Extensive reworking to
+remove backwards compatibility and to add hashes into \fIdbz\fR files by Clayton
+O'Neill <coneill@oneill.net>.  Rewritten into \s-1POD\s0 by Julien Elie.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+\&\fBdbm\fR\|(3), \fBhistory\fR\|(5), \fBlibinn\fR\|(3).
diff -Nurp inn-2.6.4/doc/man/libinn_inndcomm.3 inn-2.6.5/doc/man/libinn_inndcomm.3
--- inn-2.6.4/doc/man/libinn_inndcomm.3	1970-01-01 01:00:00.000000000 +0100
+++ inn-2.6.5/doc/man/libinn_inndcomm.3	2022-02-18 20:36:57.000000000 +0100
@@ -0,0 +1,255 @@
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+.    ds C`
+.    ds C'
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\"
+.\" If the F register is >0, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
+..
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+.    if \nF \{\
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
+..
+.        if !\nF==2 \{\
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
+.\}
+.rr rF
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "libinn_inndcomm 3"
+.TH libinn_inndcomm 3 "2022-02-18" "INN 2.6.5" "InterNetNews Documentation"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+inndcomm \- Routines for managing innd control commands
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+.Vb 1
+\&    #include <inn/inndcomm.h>
+\&
+\&    #define SC_ADDHIST ...
+\&    #define SC_ALLOW ...
+\&    #define SC_BEGIN ...
+\&    #define SC_CANCEL ...
+\&    #define SC_CHANGEGROUP ...
+\&    #define SC_CHECKFILE ...
+\&    #define SC_DROP ...
+\&    #define SC_FEEDINFO ...
+\&    #define SC_FLUSH ...
+\&    #define SC_FLUSHLOGS ...
+\&    #define SC_GO ...
+\&    #define SC_HANGUP ...
+\&    #define SC_LOGMODE ...
+\&    #define SC_LOWMARK ...
+\&    #define SC_MODE ...
+\&    #define SC_NAME ...
+\&    #define SC_NEWGROUP ...
+\&    #define SC_PARAM ...
+\&    #define SC_PAUSE ...
+\&    #define SC_PERL ...
+\&    #define SC_PYTHON ...
+\&    #define SC_READERS ...
+\&    #define SC_REJECT ...
+\&    #define SC_RELOAD ...
+\&    #define SC_RENUMBER ...
+\&    #define SC_RESERVE ...
+\&    #define SC_RMGROUP ...
+\&    #define SC_SEND ...
+\&    #define SC_SHUTDOWN ...
+\&    #define SC_STATHIST ...
+\&    #define SC_STATUS ...
+\&    #define SC_SIGNAL ...
+\&    #define SC_THROTTLE ...
+\&    #define SC_TIMER ...
+\&    #define SC_TRACE ...
+\&    #define SC_XABORT ...
+\&    #define SC_XEXEC ...
+\&
+\&    #define MAX_REASON_LEN ...
+\&
+\&    extern int ICCopen(void);
+\&    extern int ICCclose(void);
+\&    extern void ICCsettimeout(int i);
+\&    extern int ICCcommand(char cmd, const char *argv[], char **replyp);
+\&    extern int ICCcancel(const char *msgid);
+\&    extern int ICCpause(const char *why);
+\&    extern int ICCreserve(const char *why);
+\&    extern int ICCgo(const char *why);
+\&
+\&    extern const char *ICCfailure;
+.Ve
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+The routines described in this manual page are part of the InterNetNews
+library, \fBlibinn\fR\|(3).  They are used to send commands to a running \fBinnd\fR
+daemon on the local host.  The letters \f(CW\*(C`ICC\*(C'\fR stand for \fBI\fRnnd \fBC\fRontrol
+\&\fBC\fRommand.
+.PP
+The \fBICCopen\fR function creates a Unix-domain datagram socket and binds it
+to the server's control socket, if such sockets are supported.  Otherwise,
+it creates a named pipe for communicating with the server.  It returns
+\&\f(CW\*(C`\-1\*(C'\fR on failure or \f(CW0\fR on success.  This routine must be called before
+any other routine.
+.PP
+The \fBICCclose\fR function closes any descriptors that have been created
+by \fBICCopen\fR.  It returns \f(CW\*(C`\-1\*(C'\fR on failure or \f(CW0\fR on success.
+.PP
+The \fBICCsettimeout\fR function can be called before any of the following
+routines to determine how long the library should wait before giving up
+on getting the server's reply.  This is done by setting and catching a
+\&\s-1SIGALRM\s0 \fBsignal\fR\|(2).  If the timeout is less than zero, then no reply will
+be waited for.  The \fB\s-1SC_SHUTDOWN\s0\fR, \fB\s-1SC_XABORT\s0\fR, and \fB\s-1SC_XEXEC\s0\fR commands
+do not get a reply either.  The default, which can be obtained by setting
+the timeout to <0>, is to wait during 2 minutes.
+.PP
+The \fBICCcommand\fR function sends the command \fIcmd\fR with parameters \fIargv\fR
+to the server.  It returns \f(CW\*(C`\-1\*(C'\fR on error.  If the server replies, and
+\&\fIreplyp\fR is not \s-1NULL,\s0 it will be filled in with an allocated buffer that
+contains the full text of the server's reply.  This buffer is a string in
+the form of "\fIdigits\fR \fItext\fR" where \fIdigits\fR is the text value of the
+recommended exit code (usually \f(CW1\fR, followed with \fItext\fR, giving the
+reason of the failure); a \f(CW0\fR value indicates success.  Replies longer
+than 64KB will be truncated.  The possible values of \fIcmd\fR are defined
+in the \fIinn/inndcomm.h\fR header file, and also in the \s-1SYNOPSIS\s0 of this
+man page.  The parameters for each command are described in \fBctlinnd\fR\|(8).
+This routine returns \f(CW\*(C`\-1\*(C'\fR on communication failure, or the exit status
+sent by the server which will never be negative.
+.PP
+The \fBICCcancel\fR function sends a \f(CW\*(C`cancel\*(C'\fR message to the server.
+Its \fImsgid\fR argument is the Message-ID of the article that should be
+cancelled.  The return value is the same as for \fBICCcommand\fR.
+.PP
+The \fBICCpause\fR, \fBICCreserve\fR, and \fBICCgo\fR functions send a \f(CW\*(C`pause\*(C'\fR,
+\&\f(CW\*(C`reserve\*(C'\fR, or \f(CW\*(C`go\*(C'\fR command to the server, respectively.  If \fBICCreserve\fR
+is used, then the \fIwhy\fR value used in the \fBICCpause\fR invocation must match;
+the value used in the \fBICCgo\fR invocation must always match the one used
+in the \fBICCpause\fR invocation.  The return value for all three routines is
+the same as for \fBICCcommand\fR.
+.PP
+If any routine described above fails, the \fIICCfailure\fR variable will
+identify the system call that failed.
+.SH "HISTORY"
+.IX Header "HISTORY"
+Written by Rich \f(CW$alz\fR <rsalz@uunet.uu.net> for InterNetNews.  Rewritten into
+\&\s-1POD\s0 by Julien Elie.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+\&\fBctlinnd\fR\|(8), \fBinnd\fR\|(8), \fBlibinn\fR\|(3).
diff -Nurp inn-2.6.4/doc/man/libinn_list.3 inn-2.6.5/doc/man/libinn_list.3
--- inn-2.6.4/doc/man/libinn_list.3	1970-01-01 01:00:00.000000000 +0100
+++ inn-2.6.5/doc/man/libinn_list.3	2022-02-18 20:36:57.000000000 +0100
@@ -0,0 +1,219 @@
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+.    ds C`
+.    ds C'
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\"
+.\" If the F register is >0, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
+..
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+.    if \nF \{\
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
+..
+.        if !\nF==2 \{\
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
+.\}
+.rr rF
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "libinn_list 3"
+.TH libinn_list 3 "2022-02-18" "INN 2.6.5" "InterNetNews Documentation"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+list \- list routines
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+.Vb 1
+\&    #include <inn/list.h>
+\&
+\&    struct node {
+\&        struct node *succ;
+\&        struct node *pred;
+\&    };
+\&
+\&    struct list {
+\&        struct node *head;
+\&        struct node *tail;
+\&        struct node *tailpred;
+\&    };
+\&
+\&    void list_new(struct list *list);
+\&
+\&    struct node *list_addhead(struct list *list, struct node *node);
+\&
+\&    struct node *list_addtail(struct list *list, struct node *node);
+\&
+\&    struct node *list_head(struct list *list);
+\&
+\&    struct node *list_tail(struct list *list);
+\&
+\&    struct node *list_succ(struct node *node);
+\&
+\&    struct node *list_pred(struct node *node);
+\&
+\&    struct node *list_remhead(struct list *list);
+\&
+\&    struct node *list_remtail(struct list *list);
+\&
+\&    struct node *list_remove(struct node *node);
+\&
+\&    struct node *list_insert(struct list *list, struct node *node, struct node *pred);
+\&
+\&    bool list_isempty(struct list *list);
+.Ve
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\fBlist_new\fR initialises the list header \fIlist\fR so as to create an
+empty list.
+.PP
+\&\fBlist_addhead\fR adds \fInode\fR to the head of \fIlist\fR, returning the node
+just added.
+.PP
+\&\fBlist_addtail\fR adds \fInode\fR to the tail of \fIlist\fR, returning the node
+just added.
+.PP
+\&\fBlist_head\fR returns a pointer to the the node at the head of \fIlist\fR
+or \fB\s-1NULL\s0\fR if the list is empty.
+.PP
+\&\fBlist_tail\fR returns a pointer to the the node at the tail of \fIlist\fR
+or \fB\s-1NULL\s0\fR if the list is empty.
+.PP
+\&\fBlist_succ\fR returns the next (successor) node on the list after
+\&\fInode\fR or \fB\s-1NULL\s0\fR if \fInode\fR was the final node.
+.PP
+\&\fBlist_pred\fR returns the previous (predecessor) node on the list before
+\&\fInode\fR or \fB\s-1NULL\s0\fR if \fInode\fR was the first node.
+.PP
+\&\fBlist_remhead\fR removes the first node from \fIlist\fR and returns it to
+the caller. If the list is empty \fB\s-1NULL\s0\fR is returned.
+.PP
+\&\fBlist_remtail\fR removes the last node from \fIlist\fR and returns it to
+the caller. If the list is empty \fB\s-1NULL\s0\fR is returned.
+.PP
+\&\fBlist_remove\fR removes \fInode\fR from the list it is on and returns it
+to the caller.
+.PP
+\&\fBlist_insert\fR inserts \fInode\fR onto \fIlist\fR after the node \fIpred\fR. If
+\&\fIpred\fR is \fB\s-1NULL\s0\fR then \fInode\fR is added to the head of \fIlist\fR.
+.SH "HISTORY"
+.IX Header "HISTORY"
+Written by Alex Kiernan <alex.kiernan@thus.net> for InterNetNews\ 2.4.0.
diff -Nurp inn-2.6.4/doc/man/libinn_qio.3 inn-2.6.5/doc/man/libinn_qio.3
--- inn-2.6.4/doc/man/libinn_qio.3	1970-01-01 01:00:00.000000000 +0100
+++ inn-2.6.5/doc/man/libinn_qio.3	2022-02-18 20:36:57.000000000 +0100
@@ -0,0 +1,245 @@
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+.    ds C`
+.    ds C'
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\"
+.\" If the F register is >0, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
+..
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+.    if \nF \{\
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
+..
+.        if !\nF==2 \{\
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
+.\}
+.rr rF
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "libinn_qio 3"
+.TH libinn_qio 3 "2022-02-18" "INN 2.6.5" "InterNetNews Documentation"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+qio \- Quick I/O routines for reading files
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+.Vb 1
+\&    #include <inn/qio.h>
+\&
+\&    QIOSTATE *QIOopen(const char *name);
+\&
+\&    QIOSTATE *QIOfdopen(int> I<fd);
+\&
+\&    void QIOclose(QIOSTATE *qp);
+\&
+\&    char *QIOread(QIOSTATE *qp);
+\&
+\&    int QIOfileno(QIOSTATE *qp);
+\&
+\&    size_t QIOlength(QIOSTATE *qp);
+\&
+\&    int QIOrewind(QIOSTATE *qp);
+\&
+\&    off_t QIOtell(QIOSTATE *qp);
+\&
+\&    bool QIOerror(QIOSTATE *qp);
+\&
+\&    bool QIOtoolong(QIOSTATE *qp);
+.Ve
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+The routines described in this manual page are part of \fBlibinn\fR\|(3).  They
+are used to provide quick read access to files; the \s-1QIO\s0 routines use
+buffering adapted to the block size of the device, similar to stdio, but
+with a more convenient syntax for reading newline-terminated lines.  \s-1QIO\s0
+is short for \*(L"Quick I/O\*(R" (a bit of a misnomer, as \s-1QIO\s0 provides read-only
+access to files only).
+.PP
+The \s-1QIOSTATE\s0 structure returned by \fBQIOopen\fR and \fBQIOfdopen\fR is the
+analog to stdio's \s-1FILE\s0 structure and should be treated as a black box by
+all users of these routines.  Only the above \s-1API\s0 should be used.
+.PP
+\&\fBQIOopen\fR opens the given file for reading with a buffer size of 32KiB.
+Returns a pointer to use for subsequent calls, or \s-1NULL\s0 on error.
+\&\fBQIOfdopen\fR performs the same operation except on an already-open file
+descriptor (\fIfd\fR must designate a file open for reading).
+.PP
+\&\fBQIOclose\fR closes the open file and releases any resources used by the
+\&\s-1QIOSTATE\s0 structure.  The \s-1QIOSTATE\s0 pointer should not be used again after
+it has been passed to this function.
+.PP
+\&\fBQIOread\fR reads the next newline-terminated line in the file and returns
+a pointer to it, with the trailing newline replaced by nul.  The returned
+pointer is a pointer into a buffer in the \s-1QIOSTATE\s0 object and therefore
+will remain valid until \fBQIOclose\fR is called on that object.  If \s-1EOF\s0 is
+reached, an error occurs, or if the line is longer than the buffer size
+(32KiB), \s-1NULL\s0 is returned instead.  To distinguish between the error
+cases, use \fBQIOerror\fR and \fBQIOtoolong\fR.
+.PP
+\&\fBQIOfileno\fR returns the descriptor of the open file.
+.PP
+\&\fBQIOlength\fR returns the length in bytes of the last line returned by
+\&\fBQIOread\fR.  Its return value is only defined after a successful call to
+\&\fBQIOread\fR.
+.PP
+\&\fBQIOrewind\fR sets the read pointer back to the beginning of the file and
+reads the first block of the file in anticipation of future reads.  It
+returns 0 if successful and \-1 on error.
+.PP
+\&\fBQIOtell\fR returns the current value of the read pointer (the \fBlseek\fR\|(2)
+offset at which the next line will start).
+.PP
+\&\fBQIOerror\fR returns true if there was an error in the last call to
+\&\fBQIOread\fR, false otherwise.  \fBQIOtoolong\fR returns true if there was an
+error and the error was that the line was too long.  If \fBQIOread\fR returns
+\&\s-1NULL,\s0 these functions should be called to determine what happened.  If
+\&\fBQIOread\fR returned \s-1NULL\s0 and \fBQIOerror\fR is false, \s-1EOF\s0 was reached.  Note
+that if \fBQIOtoolong\fR returns true, the next call to \fBQIOread\fR will try
+to read the remainder of the line and will likely return a partial line;
+users of this library should in general treat long lines as fatal errors.
+.SH "EXAMPLES"
+.IX Header "EXAMPLES"
+This block of code opens \fI/etc/motd\fR and reads it a line at a time,
+printing out each line preceded by its offset in the file.
+.PP
+.Vb 3
+\&    QIOSTATE *qp;
+\&    off_t offset;
+\&    char *p;
+\&
+\&    qp = QIOopen("/etc/motd");
+\&    if (qp == NULL) {
+\&        perror("Open error");
+\&        exit(1);
+\&    }
+\&    for (p = QIOread(qp); p != NULL; p = QIOread(qp))
+\&        printf("%ld: %s\en", (unsigned long) QIOtell(qp), p);
+\&    if (QIOerror(qp)) {
+\&        perror("Read error");
+\&        exit(1);
+\&    }
+\&    QIOclose(qp);
+.Ve
+.SH "HISTORY"
+.IX Header "HISTORY"
+Written by Rich \f(CW$alz\fR <rsalz@uunet.uu.net> for InterNetNews.  Updated by
+Russ Allbery <eagle@eyrie.org>.
diff -Nurp inn-2.6.4/doc/man/libinn_tst.3 inn-2.6.5/doc/man/libinn_tst.3
--- inn-2.6.4/doc/man/libinn_tst.3	1970-01-01 01:00:00.000000000 +0100
+++ inn-2.6.5/doc/man/libinn_tst.3	2022-02-18 20:36:57.000000000 +0100
@@ -0,0 +1,212 @@
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+.    ds C`
+.    ds C'
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\"
+.\" If the F register is >0, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
+..
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+.    if \nF \{\
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
+..
+.        if !\nF==2 \{\
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
+.\}
+.rr rF
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "libinn_tst 3"
+.TH libinn_tst 3 "2022-02-18" "INN 2.6.5" "InterNetNews Documentation"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+tst \- ternary search trie functions
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+.Vb 1
+\&    #include <inn/tst.h>
+\&
+\&    struct tst;
+\&
+\&    struct tst *tst_init(int node_line_width);
+\&
+\&    void tst_cleanup(struct tst *tst);
+\&
+\&    int tst_insert(struct tst *tst, const unsigned char *key, void *data, int option, void **exist_ptr);
+\&
+\&    void *tst_search(struct tst *tst, const unsigned char *key);
+\&
+\&    void *tst_delete(struct tst *tst, const unsigned char *key);
+.Ve
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\fBtst_init\fR allocates memory for members of \fIstruct tst\fR, and
+allocates the first \fInode_line_width\fR nodes. A \s-1NULL\s0 pointer is
+returned by \fBtst_init\fR if any part of the memory allocation fails. On
+success, a pointer to a \fIstruct tst\fR is returned.
+.PP
+The value for \fInode_line_width\fR must be chosen very carefully. One
+node is required for every character in the tree. If you choose a
+value that is too small, your application will spend too much time
+calling \fBmalloc\fR\|(3) and your node space will be too spread out. Too large
+a value is just a waste of space.
+.PP
+\&\fBtst_cleanup\fR frees all memory allocated to nodes, internal structures,
+as well as \fItst\fR itself.
+.PP
+\&\fBtst_insert\fR inserts the string \fIkey\fR into the tree. Behavior when a
+duplicate key is inserted is controlled by \fIoption\fR. If \fIkey\fR is
+already in the tree then \fB\s-1TST_DUPLICATE_KEY\s0\fR is returned, and the
+data pointer for the existing key is placed in \fIexist_ptr\fR.  If
+\&\fIoption\fR is set to \fB\s-1TST_REPLACE\s0\fR then the existing data pointer for
+the existing key is replaced by \fIdata\fR.  Note that the old data
+pointer will still be placed in \fIexist_ptr\fR.
+.PP
+If a duplicate key is encountered and \fIoption\fR is not set to
+\&\fB\s-1TST_REPLACE\s0\fR then \fB\s-1TST_DUPLICATE_KEY\s0\fR is returned. If \fIkey\fR is
+zero length then \fB\s-1TST_NULL_KEY\s0\fR is returned. A successful insert or
+replace returns \fB\s-1TST_OK\s0\fR. A return value of \fB\s-1TST_ERROR\s0\fR indicates
+that a memory allocation error occurred while trying to grow the node
+free.
+.PP
+Note that the \fIdata\fR argument must never be \fB\s-1NULL\s0\fR. If it is, then
+calls to \fBtst_search\fR will fail for a key that exists because the
+data value was set to \fB\s-1NULL\s0\fR, which is what \fBtst_search\fR returns. If
+you just want a simple existence tree, use the \fBtst\fR pointer as the
+data pointer.
+.PP
+\&\fBtst_search\fR finds the string \fIkey\fR in the tree if it exists and
+returns the data pointer associated with that key.
+.PP
+If \fIkey\fR is not found then \fB\s-1NULL\s0\fR is returned, otherwise the data pointer
+associated with \fIkey\fR is returned.
+.PP
+\&\fBtst_delete\fR deletes the string \fIkey\fR from the tree if it exists and
+returns the data pointer assocaited with that key.
+.PP
+If \fIkey\fR is not found then \fB\s-1NULL\s0\fR is returned, otherwise the data
+pointer associated with \fIkey\fR is returned.
+.SH "HISTORY"
+.IX Header "HISTORY"
+Converted to \s-1POD\s0 from Peter A.\ Friend's ternary search trie
+documentation by Alex Kiernan <alex.kiernan@thus.net> for
+InterNetNews\ 2.4.0.
diff -Nurp inn-2.6.4/doc/man/libinn_uwildmat.3 inn-2.6.5/doc/man/libinn_uwildmat.3
--- inn-2.6.4/doc/man/libinn_uwildmat.3	1970-01-01 01:00:00.000000000 +0100
+++ inn-2.6.5/doc/man/libinn_uwildmat.3	2022-02-18 20:36:57.000000000 +0100
@@ -0,0 +1,297 @@
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+.    ds C`
+.    ds C'
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\"
+.\" If the F register is >0, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
+..
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+.    if \nF \{\
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
+..
+.        if !\nF==2 \{\
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
+.\}
+.rr rF
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "libinn_uwildmat 3"
+.TH libinn_uwildmat 3 "2022-02-18" "INN 2.6.5" "InterNetNews Documentation"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+uwildmat, uwildmat_simple, uwildmat_poison \- Perform wildmat matching
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+.Vb 1
+\&    #include <inn/libinn.h>
+\&
+\&    bool uwildmat(const char *text, const char *pattern);
+\&
+\&    bool uwildmat_simple(const char *text, const char *pattern);
+\&
+\&    enum uwildmat uwildmat_poison(const char *text, const char *pattern);
+.Ve
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\fBuwildmat\fR compares \fItext\fR against the wildmat expression \fIpattern\fR,
+returning true if and only if the expression matches the text.  \f(CW\*(C`@\*(C'\fR has
+no special meaning in \fIpattern\fR when passed to \fBuwildmat\fR.  Both \fItext\fR
+and \fIpattern\fR are assumed to be in the \s-1UTF\-8\s0 character encoding, although
+malformed \s-1UTF\-8\s0 sequences are treated in a way that attempts to be mostly
+compatible with single-octet character sets like \s-1ISO 8859\-1.\s0  (In other
+words, if you try to match \s-1ISO 8859\-1\s0 text with these routines everything
+should work as expected unless the \s-1ISO 8859\-1\s0 text contains valid \s-1UTF\-8\s0
+sequences, which thankfully is somewhat rare.)
+.PP
+\&\fBuwildmat_simple\fR is identical to \fBuwildmat\fR except that neither \f(CW\*(C`!\*(C'\fR
+nor \f(CW\*(C`,\*(C'\fR have any special meaning and \fIpattern\fR is always treated as a
+single pattern.  This function exists solely to support legacy interfaces
+like \s-1NNTP\s0's \s-1XPAT\s0 command, and should be avoided when implementing new
+features.
+.PP
+\&\fBuwildmat_poison\fR works similarly to \fBuwildmat\fR, except that \f(CW\*(C`@\*(C'\fR as the
+first character of one of the patterns in the expression (see below)
+\&\*(L"poisons\*(R" the match if it matches.  \fBuwildmat_poison\fR returns
+\&\fB\s-1UWILDMAT_MATCH\s0\fR if the expression matches the text, \fB\s-1UWILDMAT_FAIL\s0\fR if
+it doesn't, and \fB\s-1UWILDMAT_POISON\s0\fR if the expression doesn't match because
+a poisoned pattern matched the text.  These enumeration constants are
+defined in the \fBinn/libinn.h\fR header.
+.SH "WILDMAT EXPRESSIONS"
+.IX Header "WILDMAT EXPRESSIONS"
+A wildmat expression follows rules similar to those of shell filename
+wildcards but with some additions and changes.  A wildmat \fIexpression\fR is
+composed of one or more wildmat \fIpatterns\fR separated by commas.  Each
+character in the wildmat pattern matches a literal occurrence of that same
+character in the text, with the exception of the following metacharacters:
+.IP "?" 8
+Matches any single character (including a single \s-1UTF\-8\s0 multibyte
+character, so \f(CW\*(C`?\*(C'\fR can match more than one byte).
+.IP "*" 8
+Matches any sequence of zero or more characters.
+.IP "\e" 8
+.IX Item ""
+Turns off any special meaning of the following character; the following
+character will match itself in the text.  \f(CW\*(C`\e\*(C'\fR will escape any character,
+including another backslash or a comma that otherwise would separate a
+pattern from the next pattern in an expression.  Note that \f(CW\*(C`\e\*(C'\fR is not
+special inside a character range (no metacharacters are).
+.IP "[...]" 8
+A character set, which matches any single character that falls within that
+set.  The presence of a character between the brackets adds that character
+to the set; for example, \f(CW\*(C`[amv]\*(C'\fR specifies the set containing the
+characters \f(CW\*(C`a\*(C'\fR, \f(CW\*(C`m\*(C'\fR, and \f(CW\*(C`v\*(C'\fR.  A range of characters may be specified
+using \f(CW\*(C`\-\*(C'\fR; for example, \f(CW\*(C`[0\-5abc]\*(C'\fR is equivalent to \f(CW\*(C`[012345abc]\*(C'\fR.  The
+order of characters is as defined in the \s-1UTF\-8\s0 character set, and if the
+start character of such a range falls after the ending character of the
+range in that ranking the results of attempting a match with that pattern
+are undefined.
+.Sp
+In order to include a literal \f(CW\*(C`]\*(C'\fR character in the set, it must be the
+first character of the set (possibly following \f(CW\*(C`^\*(C'\fR); for example, \f(CW\*(C`[]a]\*(C'\fR
+matches either \f(CW\*(C`]\*(C'\fR or \f(CW\*(C`a\*(C'\fR.  To include a literal \f(CW\*(C`\-\*(C'\fR character in the
+set, it must be either the first or the last character of the set.
+Backslashes have no special meaning inside a character set, nor do any
+other of the wildmat metacharacters.
+.IP "[^...]" 8
+A negated character set.  Follows the same rules as a character set above,
+but matches any character \fBnot\fR contained in the set.  So, for example,
+\&\f(CW\*(C`[^]\-]\*(C'\fR matches any character except \f(CW\*(C`]\*(C'\fR and \f(CW\*(C`\-\*(C'\fR.
+.PP
+In addition, \f(CW\*(C`!\*(C'\fR (and possibly \f(CW\*(C`@\*(C'\fR) have special meaning as the first
+character of a pattern; see below.
+.PP
+When matching a wildmat expression against some text, each comma-separated
+pattern is matched in order from left to right.  In order to match, the
+pattern must match the whole text; in regular expression terminology, it's
+implicitly anchored at both the beginning and the end.  For example, the
+pattern \f(CW\*(C`a\*(C'\fR matches only the text \f(CW\*(C`a\*(C'\fR; it doesn't match \f(CW\*(C`ab\*(C'\fR or \f(CW\*(C`ba\*(C'\fR
+or even \f(CW\*(C`aa\*(C'\fR.  If none of the patterns match, the whole expression
+doesn't match.  Otherwise, whether the expression matches is determined
+entirely by the rightmost matching pattern; the expression matches the
+text if and only if the rightmost matching pattern is not negated.
+.PP
+For example, consider the text \f(CW\*(C`news.misc\*(C'\fR.  The expression \f(CW\*(C`*\*(C'\fR matches
+this text, of course, as does \f(CW\*(C`comp.*,news.*\*(C'\fR (because the second pattern
+matches).  \f(CW\*(C`news.*,!news.misc\*(C'\fR does not match this text because both
+patterns match, meaning that the rightmost takes precedence, and the
+rightmost matching pattern is negated.  \f(CW\*(C`news.*,!news.misc,*.misc\*(C'\fR does
+match this text, since the rightmost matching pattern is not negated.
+.PP
+Note that the expression \f(CW\*(C`!news.misc\*(C'\fR can't match anything.  Either the
+pattern doesn't match, in which case no patterns match and the expression
+doesn't match, or the pattern does match, in which case because it's
+negated the expression doesn't match.  \f(CW\*(C`*,!news.misc\*(C'\fR, on the other hand,
+is a useful pattern that matches anything except \f(CW\*(C`news.misc\*(C'\fR.
+.PP
+\&\f(CW\*(C`!\*(C'\fR has significance only as the first character of a pattern; anywhere
+else in the pattern, it matches a literal \f(CW\*(C`!\*(C'\fR in the text like any other
+non-metacharacter.
+.PP
+If the \fBuwildmat_poison\fR interface is used, then \f(CW\*(C`@\*(C'\fR behaves the same as
+\&\f(CW\*(C`!\*(C'\fR except that if an expression fails to match because the rightmost
+matching pattern began with \f(CW\*(C`@\*(C'\fR, \fB\s-1UWILDMAT_POISON\s0\fR is returned instead of
+\&\fB\s-1UWILDMAT_FAIL\s0\fR.
+.PP
+If the \fBuwildmat_simple\fR interface is used, the matching rules are the
+same as above except that none of \f(CW\*(C`!\*(C'\fR, \f(CW\*(C`@\*(C'\fR, or \f(CW\*(C`,\*(C'\fR have any special
+meaning at all and only match those literal characters.
+.SH "BUGS"
+.IX Header "BUGS"
+All of these functions internally convert the passed arguments to const
+unsigned char pointers.  The only reason why they take regular char
+pointers instead of unsigned char is for the convenience of \s-1INN\s0 and other
+callers that may not be using unsigned char everywhere they should.  In a
+future revision, the public interface should be changed to just take
+unsigned char pointers.
+.SH "HISTORY"
+.IX Header "HISTORY"
+Written by Rich \f(CW$alz\fR <rsalz@uunet.uu.net> in 1986, and posted to Usenet
+several times since then, most notably in comp.sources.misc in
+March, 1991.
+.PP
+Lars Mathiesen <thorinn@diku.dk> enhanced the multi-asterisk failure
+mode in early 1991.
+.PP
+Rich and Lars increased the efficiency of star patterns and reposted it to
+comp.sources.misc in April, 1991.
+.PP
+Robert Elz <kre@munnari.oz.au> added minus sign and close bracket handling
+in June, 1991.
+.PP
+Russ Allbery <eagle@eyrie.org> added support for comma-separated patterns
+and the \f(CW\*(C`!\*(C'\fR and \f(CW\*(C`@\*(C'\fR metacharacters to the core wildmat routines in July,
+2000.  He also added support for \s-1UTF\-8\s0 characters, changed the default
+behavior to assume that both the text and the pattern are in \s-1UTF\-8,\s0 and
+largely rewrote this documentation to expand and clarify the description
+of how a wildmat expression matches.
+.PP
+Please note that the interfaces to these functions are named \fBuwildmat\fR
+and the like rather than \fBwildmat\fR to distinguish them from the
+\&\fBwildmat\fR function provided by Rich \f(CW$alz\fR's original implementation.
+While this code is heavily based on Rich's original code, it has
+substantial differences, including the extension to support \s-1UTF\-8\s0
+characters, and has noticeable functionality changes.  Any bugs present in
+it aren't Rich's fault.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+\&\fBgrep\fR\|(1), \fBfnmatch\fR\|(3), \fBregex\fR\|(3), \fBregexp\fR\|(3).
diff -Nurp inn-2.6.4/doc/man/libinnhist.3 inn-2.6.5/doc/man/libinnhist.3
--- inn-2.6.4/doc/man/libinnhist.3	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/libinnhist.3	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "libinnhist 3"
-.TH libinnhist 3 "2018-05-14" "INN 2.6.4" "InterNetNews Documentation"
+.TH libinnhist 3 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -430,5 +430,3 @@ type \fBtime_t\fR and will not be modifi
 .SH "HISTORY"
 .IX Header "HISTORY"
 Written by Alex Kiernan <alexk@demon.net> for InterNetNews\ 2.4.0.
-.PP
-\&\f(CW$Id:\fR libinnhist.pod 10283 2018\-05\-14 12:43:05Z iulius $
diff -Nurp inn-2.6.4/doc/man/libstorage.3 inn-2.6.5/doc/man/libstorage.3
--- inn-2.6.4/doc/man/libstorage.3	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/libstorage.3	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "libstorage 3"
-.TH libstorage 3 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH libstorage 3 "2022-02-18" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -361,7 +361,7 @@ are ignored by \fBSMstore\fR.)  If \fIar
 its value as article's arrival time; otherwise \fBSMstore\fR uses the current
 time for it.  \fBSMstore\fR returns the token type or returns \fB\s-1TOKEN_EMPTY\s0\fR
 if the article is not stored because some error occurs or simply does not
-match any \fBuwildmat\fR\|(3) expression in \fIstorage.conf\fR.  \fBSMstore\fR fails if
+match any \fIuwildmat\fR expression in \fIstorage.conf\fR.  \fBSMstore\fR fails if
 \&\fB\s-1SM_RDWR\s0\fR has not been set to true with \fBSMsetup\fR.
 .PP
 The \fBSMretrieve\fR function retrieves an article specified with \fItoken\fR.
@@ -549,8 +549,6 @@ method.
 .IX Header "HISTORY"
 Written by Katsuhiro Kondou <kondou@nec.co.jp> for InterNetNews.
 Converted to \s-1POD\s0 by Julien Elie.
-.PP
-\&\f(CW$Id:\fR libstorage.pod 9073 2010\-05\-31 19:00:23Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
-\&\fBexpire\fR\|(8), \fBfastrm\fR\|(8), \fBinn.conf\fR\|(5), \fBstorage.conf\fR\|(5).
+\&\fBexpire\fR\|(8), \fBfastrm\fR\|(8), \fBinn.conf\fR\|(5), \fBlibinn_uwildmat\fR\|(3), \fBstorage.conf\fR\|(5).
diff -Nurp inn-2.6.4/doc/man/list.3 inn-2.6.5/doc/man/list.3
--- inn-2.6.4/doc/man/list.3	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/list.3	1970-01-01 01:00:00.000000000 +0100
@@ -1,221 +0,0 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
-.\"
-.\" Standard preamble:
-.\" ========================================================================
-.de Sp \" Vertical space (when we can't use .PP)
-.if t .sp .5v
-.if n .sp
-..
-.de Vb \" Begin verbatim text
-.ft CW
-.nf
-.ne \\$1
-..
-.de Ve \" End verbatim text
-.ft R
-.fi
-..
-.\" Set up some character translations and predefined strings.  \*(-- will
-.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
-.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
-.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
-.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
-.\" nothing in troff, for use with C<>.
-.tr \(*W-
-.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
-.ie n \{\
-.    ds -- \(*W-
-.    ds PI pi
-.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
-.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
-.    ds L" ""
-.    ds R" ""
-.    ds C` ""
-.    ds C' ""
-'br\}
-.el\{\
-.    ds -- \|\(em\|
-.    ds PI \(*p
-.    ds L" ``
-.    ds R" ''
-.    ds C`
-.    ds C'
-'br\}
-.\"
-.\" Escape single quotes in literal strings from groff's Unicode transform.
-.ie \n(.g .ds Aq \(aq
-.el       .ds Aq '
-.\"
-.\" If the F register is >0, we'll generate index entries on stderr for
-.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
-.\" entries marked with X<> in POD.  Of course, you'll have to process the
-.\" output yourself in some meaningful fashion.
-.\"
-.\" Avoid warning from groff about undefined register 'F'.
-.de IX
-..
-.nr rF 0
-.if \n(.g .if rF .nr rF 1
-.if (\n(rF:(\n(.g==0)) \{\
-.    if \nF \{\
-.        de IX
-.        tm Index:\\$1\t\\n%\t"\\$2"
-..
-.        if !\nF==2 \{\
-.            nr % 0
-.            nr F 2
-.        \}
-.    \}
-.\}
-.rr rF
-.\"
-.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
-.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
-.    \" fudge factors for nroff and troff
-.if n \{\
-.    ds #H 0
-.    ds #V .8m
-.    ds #F .3m
-.    ds #[ \f1
-.    ds #] \fP
-.\}
-.if t \{\
-.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
-.    ds #V .6m
-.    ds #F 0
-.    ds #[ \&
-.    ds #] \&
-.\}
-.    \" simple accents for nroff and troff
-.if n \{\
-.    ds ' \&
-.    ds ` \&
-.    ds ^ \&
-.    ds , \&
-.    ds ~ ~
-.    ds /
-.\}
-.if t \{\
-.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
-.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
-.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
-.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
-.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
-.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
-.\}
-.    \" troff and (daisy-wheel) nroff accents
-.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
-.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
-.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
-.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
-.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
-.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
-.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
-.ds ae a\h'-(\w'a'u*4/10)'e
-.ds Ae A\h'-(\w'A'u*4/10)'E
-.    \" corrections for vroff
-.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
-.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
-.    \" for low resolution devices (crt and lpr)
-.if \n(.H>23 .if \n(.V>19 \
-\{\
-.    ds : e
-.    ds 8 ss
-.    ds o a
-.    ds d- d\h'-1'\(ga
-.    ds D- D\h'-1'\(hy
-.    ds th \o'bp'
-.    ds Th \o'LP'
-.    ds ae ae
-.    ds Ae AE
-.\}
-.rm #[ #] #H #V #F C
-.\" ========================================================================
-.\"
-.IX Title "list 3"
-.TH list 3 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
-.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
-.\" way too many mistakes in technical documents.
-.if n .ad l
-.nh
-.SH "NAME"
-list \- list routines
-.SH "SYNOPSIS"
-.IX Header "SYNOPSIS"
-.Vb 1
-\&    #include <inn/list.h>
-\&
-\&    struct node {
-\&        struct node *succ;
-\&        struct node *pred;
-\&    };
-\&
-\&    struct list {
-\&        struct node *head;
-\&        struct node *tail;
-\&        struct node *tailpred;
-\&    };
-\&
-\&    void list_new(struct list *list);
-\&
-\&    struct node *list_addhead(struct list *list, struct node *node);
-\&
-\&    struct node *list_addtail(struct list *list, struct node *node);
-\&
-\&    struct node *list_head(struct list *list);
-\&
-\&    struct node *list_tail(struct list *list);
-\&
-\&    struct node *list_succ(struct node *node);
-\&
-\&    struct node *list_pred(struct node *node);
-\&
-\&    struct node *list_remhead(struct list *list);
-\&
-\&    struct node *list_remtail(struct list *list);
-\&
-\&    struct node *list_remove(struct node *node);
-\&
-\&    struct node *list_insert(struct list *list, struct node *node, struct node *pred);
-\&
-\&    bool list_isempty(struct list *list);
-.Ve
-.SH "DESCRIPTION"
-.IX Header "DESCRIPTION"
-\&\fBlist_new\fR initialises the list header \fIlist\fR so as to create an
-empty list.
-.PP
-\&\fBlist_addhead\fR adds \fInode\fR to the head of \fIlist\fR, returning the node
-just added.
-.PP
-\&\fBlist_addtail\fR adds \fInode\fR to the tail of \fIlist\fR, returning the node
-just added.
-.PP
-\&\fBlist_head\fR returns a pointer to the the node at the head of \fIlist\fR
-or \fB\s-1NULL\s0\fR if the list is empty.
-.PP
-\&\fBlist_tail\fR returns a pointer to the the node at the tail of \fIlist\fR
-or \fB\s-1NULL\s0\fR if the list is empty.
-.PP
-\&\fBlist_succ\fR returns the next (successor) node on the list after
-\&\fInode\fR or \fB\s-1NULL\s0\fR if \fInode\fR was the final node.
-.PP
-\&\fBlist_pred\fR returns the previous (predecessor) node on the list before
-\&\fInode\fR or \fB\s-1NULL\s0\fR if \fInode\fR was the first node.
-.PP
-\&\fBlist_remhead\fR removes the first node from \fIlist\fR and returns it to
-the caller. If the list is empty \fB\s-1NULL\s0\fR is returned.
-.PP
-\&\fBlist_remtail\fR removes the last node from \fIlist\fR and returns it to
-the caller. If the list is empty \fB\s-1NULL\s0\fR is returned.
-.PP
-\&\fBlist_remove\fR removes \fInode\fR from the list it is on and returns it
-to the caller.
-.PP
-\&\fBlist_insert\fR inserts \fInode\fR onto \fIlist\fR after the node \fIpred\fR. If
-\&\fIpred\fR is \fB\s-1NULL\s0\fR then \fInode\fR is added to the head of \fIlist\fR.
-.SH "HISTORY"
-.IX Header "HISTORY"
-Written by Alex Kiernan <alex.kiernan@thus.net> for InterNetNews\ 2.4.0.
-.PP
-\&\f(CW$Id:\fR list.pod 9073 2010\-05\-31 19:00:23Z iulius $
diff -Nurp inn-2.6.4/doc/man/mailpost.8 inn-2.6.5/doc/man/mailpost.8
--- inn-2.6.4/doc/man/mailpost.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/mailpost.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "MAILPOST 8"
-.TH MAILPOST 8 "2018-01-28" "INN 2.6.4" "InterNetNews Documentation"
+.TH MAILPOST 8 "2022-02-18" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -155,11 +155,12 @@ whitespace-separated list of group names
 (at least one newsgroup must be specified).
 .PP
 Before feeding the article to \fBinews\fR, it checks that the article has
-not been seen before, and it changes some header fields (cleans up some
-address headers, removes a few ones like X\-Complaints-To: and X\-Trace:,
-and puts \f(CW\*(C`X\-\*(C'\fR in front of unknown header fields).  The Received: and
-*\-To: header fields are also altered to prevent spamming the gateway (the
-name of the news server or the domain name from \fIinn.conf\fR are removed).
+not been seen before, and it changes some header fields (cleaning up some
+address header fields, removing a few ones like X\-Complaints-To and X\-Trace,
+and putting \f(CW\*(C`X\-\*(C'\fR in front of unknown header fields).  The Received and *\-To
+header fields are also altered to prevent spamming the gateway (the name
+of the news server or the domain name set in \fIfromhost\fR, \fIpathhost\fR and
+\&\fIdomain\fR in \fIinn.conf\fR are removed).
 .PP
 If the article has been seen before (\fBmailpost\fR records the message-ID of
 each article it handles), then the article will be dropped with a non-zero
@@ -170,32 +171,56 @@ Normally, \fBmailpost\fR is run by \fBse
 .PP
 .Vb 2
 \&    local\-mail\-wreck\-bikes: "|<pathbin in inn.conf>/mailpost
-\&        \-b /var/tmp \-t /var/tmp \-d local local.mail.rec.bicycles.racing"
+\&        \-b /var/spool/mailpost \-t /tmp \-d local local.bicycles.racing"
 .Ve
 .PP
 The \fB\-b\fR and \fB\-t\fR flags are useful to change the directories used by
 \&\fBmailpost\fR by default.  As a matter of fact, though it is recommended to
-run \fBmailpost\fR as the news user, it is as often as not run as another
-user, for instance the mail user.  Therefore, you should make sure to
-create and set to be writable by the user that \fBmailpost\fR runs as the
-directories where to put the database and the temporary files.
+run \fBmailpost\fR as the news user, it is as often as not run as another user,
+notably the mail user.  Therefore, you should make sure to create and set to
+be writable by the user that \fBmailpost\fR runs as the directories where to put
+the database and the temporary files.  Also, \fBmailpost\fR must be executable by
+that user.
 .PP
-Instead of \fI/var/tmp\fR, the mail spool directory can be specified,
+Instead of \fI/var/spool/mailpost\fR, the mail spool directory can be specified,
 or any other directory where the \fBmailpost\fR process has write access.
+.PP
+A common practice to gateway a newsgroup to a mailing-list is to create a
+moderated newsgroup (running for instance the command \f(CW\*(C`ctlinnd newgroup
+local.bicycles.racing m\*(C'\fR) and set the moderation address for this newsgroup
+in the \fImoderators\fR file in \fIpathetc\fR to the mailing-list address.  If you
+add an \fB\-a\fR flag in the above example, then on the one hand, when a message
+is sent to the mailing-list, \fBmailpost\fR will be run, mark it as approved,
+and the message will directly reach the newsgroup.  On the other hand, when
+a message is posted to the newsgroup, it normally does not have an Approved
+header field, so it will be sent (by \fBnnrpd\fR) to the mailing-list address
+configured in the \fImoderators\fR file, which means the message reaches the
+mailing-list and, like any other messages posted to the mailing-list, it will
+be processed by \fBmailpost\fR, approved, and finally reach the newsgroup.
 .SH "OPTIONS"
 .IX Header "OPTIONS"
 .IP "\fB\-a\fR \fIaddr\fR" 4
 .IX Item "-a addr"
-If the \fB\-a\fR flag is used, the value given is added to the article as
-an Approved: header.
+If the \fB\-a\fR flag is used, \fIaddr\fR (which is usually the e\-mail address of
+the poster) is added to the article as the body of an Approved header field.
+It is useful if one of the newsgroup to which the article should be posted is
+moderated.  (Of course, this flag should be added only if you are supposed to
+auto-approve your posts.)
+.Sp
+Be sure that the reader connection made by \fBinews\fR to post the article
+is allowed to post approved articles (see the \f(CW\*(C`A\*(C'\fR letter in the \fIaccess\fR
+parameter of access blocks in \fIreaders.conf\fR).
 .IP "\fB\-b\fR \fIdatabase\fR" 4
 .IX Item "-b database"
-If the \fB\-b\fR flag is used, then it defines the location of the
-persistent database used to store the message-IDs of articles sent on.
-This is to prevent articles looping around if a news-to-mail gateway
-sends them back here.  This option may be required if the \fBmailpost\fR
-process does not have write access to the news database directory.
-The default value is \fIpathdb\fR as set in \fIinn.conf\fR.
+If the \fB\-b\fR flag is used, then it defines the location of the persistent
+database used to store the message-IDs of articles sent on.  This is to
+prevent articles looping around if a news-to-mail gateway sends them back
+here.  This option may be required if the \fBmailpost\fR process does not have
+write access to the news database directory (notably when it is executed as
+the mail user).  The default value is \fIpathdb\fR as set in \fIinn.conf\fR.
+.Sp
+Make sure the specified location exists and is writable by the user
+\&\fBmailpost\fR runs as.
 .IP "\fB\-c\fR \fIwait-time\fR" 4
 .IX Item "-c wait-time"
 The \fB\-c\fR flag indicates a length of time to sleep before posting.  If
@@ -207,8 +232,8 @@ anywhere from tens to hundreds of second
 long mail can be delayed on its way to your system.
 .IP "\fB\-d\fR \fIdistribution\fR" 4
 .IX Item "-d distribution"
-If the \fB\-d\fR flag is used, the value given is added to the article as a
-Distribution: header.
+If the \fB\-d\fR flag is used, the value given is added to the article as the body
+of the Distribution header field.
 .IP "\fB\-f\fR \fIaddr\fR" 4
 .IX Item "-f addr"
 The \fB\-f\fR flag is a synonym for the \fB\-r\fR flag.
@@ -238,19 +263,22 @@ A heuristic is used to determine a reaso
 The \fB\-r\fR flag indicates what to use if no other value can be determined.
 .IP "\fB\-t\fR \fItempdir\fR" 4
 .IX Item "-t tempdir"
-If the \fB\-t\fR flag is used, then it defines the location of the
-directory to use to temporarily store error messages that are sent to
-the newsmaster.  This option may be required if the default value refers
-to a path that does not exist or the \fBmailpost\fR process does not have
-write access to.  Two paths are tried by default:  \fIpathtmp\fR as set
-in \fIinn.conf\fR, and then \fI/var/tmp\fR if \fIpathtmp\fR is not writable.
+If the \fB\-t\fR flag is used, then it defines the location of the directory to
+use to temporarily store error messages that are sent to the newsmaster.  This
+option may be required if the default value refers to a path that does not
+exist or the \fBmailpost\fR process does not have write access to (notably when
+it is executed as the mail user).  Two paths are tried by default: \fIpathtmp\fR
+as set in \fIinn.conf\fR, and then \fI/var/tmp\fR if \fIpathtmp\fR is not writable.
+.Sp
+Make sure the specified location exists and is writable by the user
+\&\fBmailpost\fR runs as.
 .IP "\fB\-x\fR \fIheader\fR[\fB:\fR\fIheader\fR...]" 4
 .IX Item "-x header[:header...]"
 A colon-separated list of additional header fields which should be
 treated as known header fields; these header fields will be passed
 through to \fBinews\fR without having \f(CW\*(C`X\-\*(C'\fR prepended.
 .Sp
-Known header fields are:
+By default, known header fields are:
 .Sp
 .Vb 10
 \&    Archive
@@ -276,11 +304,11 @@ Known header fields are:
 .IX Item "-z header[:header...]"
 A colon-separated list of additional header fields which should be removed.
 .Sp
-Removed header fields are:
+By default, removed header fields are:
 .Sp
 .Vb 2
-\&    X\-Trace
 \&    X\-Complaints\-To
+\&    X\-Trace
 .Ve
 .SH "FILES"
 .IX Header "FILES"
@@ -292,10 +320,9 @@ The Perl script itself used to feed an e
 The default database files which record previously seen message-IDs.
 .SH "HISTORY"
 .IX Header "HISTORY"
-Written by Paul Vixie long ago and then hacked up by James Brister for
-\&\s-1INN\s0 integration.
-.PP
-\&\f(CW$Id:\fR mailpost.in 10171 2017\-07\-22 14:01:37Z iulius $
+Written by Paul Vixie long ago and then hacked up by James Brister for \s-1INN\s0
+integration.  Documentation improved by Julien Elie.
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
-\&\fBactive\fR\|(5), \fBinews\fR\|(1), \fBinn.conf\fR\|(5), \fBnnrpd\fR\|(8), \fBuwildmat\fR\|(3).
+\&\fBinews\fR\|(1), \fBinn.conf\fR\|(5), \fBlibinn_uwildmat\fR\|(3), \fBmoderators\fR\|(5), \fBnnrpd\fR\|(8),
+\&\fBreaders.conf\fR\|(5).
diff -Nurp inn-2.6.4/doc/man/makedbz.8 inn-2.6.5/doc/man/makedbz.8
--- inn-2.6.4/doc/man/makedbz.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/makedbz.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "MAKEDBZ 8"
-.TH MAKEDBZ 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH MAKEDBZ 8 "2022-02-18" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -145,7 +145,7 @@ makedbz \- Rebuild dbz files
 \&\fBmakedbz\fR [\fB\-io\fR] [\fB\-f\fR \fIfilename\fR] [\fB\-s\fR \fIsize\fR]
 .SH "DESCRIPTION"
 .IX Header "DESCRIPTION"
-\&\fBmakedbz\fR rebuilds \fBdbz\fR\|(3) database.  The default name of the text
+\&\fBmakedbz\fR rebuilds \fIdbz\fR database.  The default name of the text
 file is \fIpathdb\fR/history; to specify a different name, use the \fB\-f\fR flag.
 .SH "OPTIONS"
 .IX Header "OPTIONS"
@@ -175,13 +175,11 @@ should be the estimated eventual size of
 of the old file.)
 .Sp
 For more information, see the discussion of \fBdbzfresh\fR and \fBdbzsize\fR
-in \fBdbz\fR\|(3).
+in \fBlibinn_dbz\fR\|(3).
 .SH "HISTORY"
 .IX Header "HISTORY"
 Written by Katsuhiro Kondou <kondou@nec.co.jp> for InterNetNews.  Converted to
 \&\s-1POD\s0 by Julien Elie.
-.PP
-\&\f(CW$Id:\fR makedbz.pod 9934 2015\-08\-28 19:28:56Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
-\&\fBdbz\fR\|(3), \fBhistory\fR\|(5).
+\&\fBhistory\fR\|(5), \fBlibinn_dbz\fR\|(3).
diff -Nurp inn-2.6.4/doc/man/makehistory.8 inn-2.6.5/doc/man/makehistory.8
--- inn-2.6.4/doc/man/makehistory.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/makehistory.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "MAKEHISTORY 8"
-.TH MAKEHISTORY 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH MAKEHISTORY 8 "2022-02-18" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -148,7 +148,7 @@ makehistory \- Initialize or rebuild INN
 .IX Header "DESCRIPTION"
 \&\fBmakehistory\fR rebuilds the \fBhistory\fR\|(5) text file, which contains a list of
 message-IDs of articles already seen by the server.  It can also be used
-to rebuild the overview database.  Note that even though the \fBdbz\fR\|(3) indices
+to rebuild the overview database.  Note that even though the \fIdbz\fR indices
 for the \fIhistory\fR file are also rebuilt by \fBmakehistory\fR, it is useful
 to run \fBmakedbz\fR\|(8) after \fBmakehistory\fR\|(8) in order to improve the efficiency
 of the indices (\fBmakehistory\fR does not know how large to make the hash
@@ -318,9 +318,7 @@ Where temporary files are written unless
 .IX Header "HISTORY"
 Originally written by Rich \f(CW$alz\fR <rsalz@uunet.uu.net> for InterNetNews and
 updated by various other people since.
-.PP
-\&\f(CW$Id:\fR makehistory.pod 8534 2009\-06\-23 18:08:14Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
-\&\fBactive\fR\|(5), \fBctlinnd\fR\|(8), \fBdbz\fR\|(3), \fBhistory\fR\|(5), \fBinn.conf\fR\|(5), \fBinnd\fR\|(8),
+\&\fBactive\fR\|(5), \fBctlinnd\fR\|(8), \fBhistory\fR\|(5), \fBinn.conf\fR\|(5), \fBinnd\fR\|(8), \fBlibinn_dbz\fR\|(3),
 \&\fBmakedbz\fR\|(8), \fBovdb_init\fR\|(8), \fBoverchan\fR\|(8).
diff -Nurp inn-2.6.4/doc/man/mod-active.8 inn-2.6.5/doc/man/mod-active.8
--- inn-2.6.4/doc/man/mod-active.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/mod-active.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "MOD-ACTIVE 8"
-.TH MOD-ACTIVE 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH MOD-ACTIVE 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff -Nurp inn-2.6.4/doc/man/moderators.5 inn-2.6.5/doc/man/moderators.5
--- inn-2.6.4/doc/man/moderators.5	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/moderators.5	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "MODERATORS 5"
-.TH MODERATORS 5 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH MODERATORS 5 "2022-02-18" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -147,7 +147,7 @@ it is not passed off to \fBinnd\fR for n
 via e\-mail to the submission address for that newsgroup.  The submission
 address is determined using this configuration file.
 .PP
-The file \fIpathetc\fR/moderators is a list of associations between \fBuwildmat\fR\|(3)
+The file \fIpathetc\fR/moderators is a list of associations between \fIuwildmat\fR
 patterns matching newsgroups and the submission address for those
 newsgroups.  Blank lines and lines starting with a number sign (\f(CW\*(C`#\*(C'\fR) are
 ignored.  All other lines should consist of two fields separated by a
@@ -157,7 +157,7 @@ colon:
 \&    <pattern>:<address>
 .Ve
 .PP
-The first field is a \fBuwildmat\fR\|(3) pattern matching the group or groups to
+The first field is a \fIuwildmat\fR pattern matching the group or groups to
 which this line applies.  The first matching line is used, so more
 specific patterns should be listed before general patterns.
 .PP
@@ -217,8 +217,6 @@ pairs should therefore not be created.
 .IX Header "HISTORY"
 Written by Rich \f(CW$alz\fR <rsalz@uunet.uu.net> for InterNetNews.  Rewritten in
 \&\s-1POD\s0 by Russ Allbery <eagle@eyrie.org>.
-.PP
-\&\f(CW$Id:\fR moderators.pod 9767 2014\-12\-07 21:13:43Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
-\&\fBinn.conf\fR\|(5), \fBnnrpd\fR\|(8), \fBuwildmat\fR\|(3).
+\&\fBinn.conf\fR\|(5), \fBlibinn_uwildmat\fR\|(3), \fBnnrpd\fR\|(8).
diff -Nurp inn-2.6.4/doc/man/motd.news.5 inn-2.6.5/doc/man/motd.news.5
--- inn-2.6.4/doc/man/motd.news.5	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/motd.news.5	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "MOTD.NEWS 5"
-.TH MOTD.NEWS 5 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH MOTD.NEWS 5 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -169,8 +169,6 @@ to news clients.
 .SH "HISTORY"
 .IX Header "HISTORY"
 Rewritten in \s-1POD\s0 by Russ Allbery <eagle@eyrie.org> for InterNetNews.
-.PP
-\&\f(CW$Id:\fR motd.news.pod 9767 2014\-12\-07 21:13:43Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBinn.conf\fR\|(5).
diff -Nurp inn-2.6.4/doc/man/news.daily.8 inn-2.6.5/doc/man/news.daily.8
--- inn-2.6.4/doc/man/news.daily.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/news.daily.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "NEWS.DAILY 8"
-.TH NEWS.DAILY 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH NEWS.DAILY 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -335,8 +335,6 @@ will then use this path as the directory
 \&\fBnews.daily\fR and this manual page were written by Landon Curt Noll <chongo@toad.com>
 and Rich \f(CW$alz\fR <rsalz@uunet.uu.net> for InterNetNews.  It was converted to \s-1POD\s0 by
 Julien Elie.
-.PP
-\&\f(CW$Id:\fR news.daily.pod 9628 2014\-05\-14 17:22:01Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBactive\fR\|(5), \fBctlinnd\fR\|(8), \fBexpire\fR\|(8), \fBexpire.ctl\fR\|(5), \fBexpireover\fR\|(8), \fBexpirerm\fR\|(8), \fBfastrm\fR\|(8),
diff -Nurp inn-2.6.4/doc/man/news2mail.8 inn-2.6.5/doc/man/news2mail.8
--- inn-2.6.4/doc/man/news2mail.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/news2mail.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "NEWS2MAIL 8"
-.TH NEWS2MAIL 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH NEWS2MAIL 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -212,8 +212,6 @@ as for the envelope-from address (which
 \&\fBnews2mail\fR was written by Brian Kantor in 1998.  This man page was written
 by James Brister and converted to \s-1POD\s0 by Julien Elie.  The third optional
 field in \fInews2mail.cf\fR was added by D.\ Stussy in 2008.
-.PP
-\&\f(CW$Id:\fR news2mail.pod 8199 2008\-11\-30 13:30:47Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBinnd\fR\|(8), \fBnewsfeeds\fR\|(5).
diff -Nurp inn-2.6.4/doc/man/newsfeeds.5 inn-2.6.5/doc/man/newsfeeds.5
--- inn-2.6.4/doc/man/newsfeeds.5	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/newsfeeds.5	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,13 +133,62 @@
 .\" ========================================================================
 .\"
 .IX Title "NEWSFEEDS 5"
-.TH NEWSFEEDS 5 "2018-05-14" "INN 2.6.4" "InterNetNews Documentation"
+.TH NEWSFEEDS 5 "2022-02-18" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
 .nh
 .SH "NAME"
 newsfeeds \- Determine where Usenet articles are sent
+.SH "IN A NUTSHELL"
+.IX Header "IN A NUTSHELL"
+The \fInewsfeeds\fR file configures what \fBinnd\fR does with incoming accepted
+articles.
+.PP
+A minimalist \fInewsfeeds\fR file which parameters an outgoing \s-1NNTP\s0 feed to
+\&\f(CW\*(C`news.server.com\*(C'\fR, using path identity \f(CW\*(C`server\*(C'\fR (as it appears in Path
+header fields), of all the articles you receive is:
+.PP
+.Vb 2
+\&    # Mandatory line, with no exclusion patterns defined.
+\&    ME:::
+\&
+\&    # A real\-time feed through innfeed of all your articles.
+\&    news.server.com/server\e
+\&        :*\e
+\&        :Tm:innfeed!
+\&
+\&    # The channel feed entry for innfeed.
+\&    # Change "/usr/lib/news/bin" to the directory path
+\&    # of the innfeed program.
+\&    innfeed!:!*:Tc,Wnm*:/usr/lib/news/bin/innfeed
+.Ve
+.PP
+In order to find an external feed, you can ask in the news.admin.peering
+newsgroup.  Several news administrators will certainly respond and gracefully
+provide you with a news feed.
+.PP
+Other entries may be added in \fInewsfeeds\fR depending on your needs.  See the
+examples below and also in the \fBarchive\fR\|(8), \fBcontrolchan\fR\|(8), \fBnews2mail\fR\|(8),
+\&\fBninpaths\fR\|(8) and \fBperl\-nocem\fR\|(8) man pages for the most widely used.
+.PP
+If you exclude local hierarchies or newsgroups from the feed, make sure to add
+\&\f(CW\*(C`!control,!control.*\*(C'\fR so that cancel articles or any kind of control articles
+related to excluded hierarchies or newsgroups are not propagated to the remote
+peer.  Its \fInewsfeeds\fR entry then looks like:
+.PP
+.Vb 3
+\&    news.server.com/server\e
+\&        :*,!local.*,@*bina*,!control,!control.*\e
+\&        :Tm:innfeed!
+.Ve
+.PP
+After any changes, run \f(CW\*(C`inncheck\*(C'\fR to perform basic syntax checks, and reload
+this configuration file with the following command:
+.PP
+.Vb 1
+\&    ctlinnd reload newsfeeds \*(Aqnew peer\*(Aq
+.Ve
 .SH "DESCRIPTION"
 .IX Header "DESCRIPTION"
 The file \fIpathetc\fR/newsfeeds specifies how incoming articles should be
@@ -223,7 +272,7 @@ significant in site names.
 The comma-separated \fIpattern\fR specifies which groups to send to the site;
 it is interpreted to build a \*(L"subscription list\*(R" for the site.  The
 default subscription is to get all groups carried by the server.  It is a
-\&\fBuwildmat\fR\|(3) pattern supporting poison (\f(CW\*(C`@\*(C'\fR) wildcards; see the \fBuwildmat\fR\|(3)
+\&\fIuwildmat\fR pattern supporting poison (\f(CW\*(C`@\*(C'\fR) wildcards; see the libinn_uwildmat
 man page for full details on the pattern matching language.  \fIpattern\fR
 will be matched against every newsgroup carried by the server and all
 newsgroups that match will be added to the subscription list for the site.
@@ -456,7 +505,7 @@ If a site is being fed by a file, channe
 server will normally start trying to write the information as soon as
 possible.  Providing a buffer may give better system performance and help
 smooth out overall load if a large batch of news comes in.  The value of
-the this flag should be two numbers separated by a slash.  \fIhigh\fR
+this flag should be two numbers separated by a slash.  \fIhigh\fR
 specifies the point at which the server can start draining the feed's I/O
 buffer, and \fIlow\fR specifies when to stop writing and begin buffering
 again; the units are bytes.  The default is to do no buffering, sending
@@ -522,15 +571,16 @@ in moderated groups are sent; if \fIstat
 unmoderated groups are sent.
 .IP "\fBO\fR \fIoriginator\fR" 4
 .IX Item "O originator"
-If this flag is specified, an article will only be sent to this site if it
-contains an Injection-Info: header (or an X\-Trace: header if no
-Injection-Info: header is found) and the first field of this header matches
-\&\fIoriginator\fR.  \fIoriginator\fR is a \fBuwildmat\fR\|(3) expression without commas
-or a list of such expressions, separated by \f(CW\*(C`/\*(C'\fR.  The article is never
-sent if the first character of the pattern begins with \f(CW\*(C`@\*(C'\fR and the rest
-of the pattern matches.  One use of this flag is to restrict the feed to
-locally generated posts by using an \fIoriginator\fR pattern that matches
-the Injection-Info: header added by the local server.
+If this flag is specified, an article will only be sent to this site
+if it contains an Injection-Info header field (or an X\-Trace header
+field if no Injection-Info header field is found) and the first
+field of this header field matches \fIoriginator\fR.  \fIoriginator\fR is a
+\&\fIuwildmat\fR expression without commas or a list of such expressions,
+separated by \f(CW\*(C`/\*(C'\fR.  The article is never sent if the first character
+of the pattern begins with \f(CW\*(C`@\*(C'\fR and the rest of the pattern matches.
+One use of this flag is to restrict the feed to locally generated posts
+by using an \fIoriginator\fR pattern that matches the Injection-Info
+header field added by the local server.
 .IP "\fBP\fR \fIpriority\fR" 4
 .IX Item "P priority"
 The nice priority that this channel or program feed should receive.  This
@@ -923,18 +973,17 @@ entry for \fBcontrolchan\fR\|(8).  Make
 .PP
 .Vb 3
 \&    controlchan!\e
-\&        :!*,control,control.*,!control.cancel/!collabra\-internal\e
+\&        :!*,control,control.*,!control.cancel\e
 \&        :AC,Tc,Wnsm:<pathbin in inn.conf>/controlchan
 .Ve
 .PP
 This program only wants information about articles posted to a control
 newsgroup other than control.cancel, which due to the sorting of control
 messages described in \fBinnd\fR\|(8) will send it all control messages except for
-cancel messages.  In this case, we also exclude any article with a
-distribution of \f(CW\*(C`collabra\-internal\*(C'\fR.  \fBcontrolchan\fR gets the storage
-\&\s-1API\s0 token, the name of the sending site (for processing old-style ihave
-and sendme control messages, be sure to read about \fIlogipaddr\fR in
-\&\fBcontrolchan\fR\|(8)), and the message \s-1ID\s0 for each article.
+cancel messages.  \fBcontrolchan\fR gets the storage \s-1API\s0 token, the name of the
+sending site (for processing old-style ihave and sendme control messages,
+be sure to read about \fIlogipaddr\fR in \fBcontrolchan\fR\|(8)), and the message \s-1ID\s0 for
+each article.
 .PP
 For many other examples, including examples of the special \f(CW\*(C`ME\*(C'\fR site
 entry, see the example \fInewsfeeds\fR file distributed with \s-1INN.\s0  Also see the
@@ -944,9 +993,7 @@ the standard newsfeeds entries used by m
 .IX Header "HISTORY"
 Written by Rich \f(CW$alz\fR <rsalz@uunet.uu.net> for InterNetNews.  Reformatted
 and rewritten in \s-1POD\s0 by Russ Allbery <eagle@eyrie.org>.
-.PP
-\&\f(CW$Id:\fR newsfeeds.pod 10283 2018\-05\-14 12:43:05Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBactive\fR\|(5), \fBbuffchan\fR\|(8), \fBcontrolchan\fR\|(8), \fBctlinnd\fR\|(8), \fBinn.conf\fR\|(5), \fBinnd\fR\|(8),
-\&\fBinnfeed\fR\|(8), \fBinnxmit\fR\|(8), \fBnntpsend\fR\|(8), \fBuwildmat\fR\|(3).
+\&\fBinnfeed\fR\|(8), \fBinnxmit\fR\|(8), \fBlibinn_uwildmat\fR\|(3), \fBnntpsend\fR\|(8).
diff -Nurp inn-2.6.4/doc/man/newsgroups.5 inn-2.6.5/doc/man/newsgroups.5
--- inn-2.6.4/doc/man/newsgroups.5	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/newsgroups.5	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "NEWSGROUPS 5"
-.TH NEWSGROUPS 5 "2016-11-06" "INN 2.6.4" "InterNetNews Documentation"
+.TH NEWSGROUPS 5 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -261,8 +261,6 @@ the policies by which the \fInewsgroups\
 <https://ftp.isc.org/pub/usenet/CONFIG/> is maintained; they were originally
 written by David Lawrence <tale@isc.org> and updated by Russ Allbery
 <eagle@eyrie.org>.
-.PP
-\&\f(CW$Id:\fR newsgroups.pod 10097 2016\-11\-04 22:19:07Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBactive\fR\|(5), \fBcontrolchan\fR\|(8), \fBctlinnd\fR\|(8), \fBgetlist\fR\|(1), \fBnnrpd\fR\|(8).
diff -Nurp inn-2.6.4/doc/man/newslog.5 inn-2.6.5/doc/man/newslog.5
--- inn-2.6.4/doc/man/newslog.5	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/newslog.5	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "NEWSLOG 5"
-.TH NEWSLOG 5 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH NEWSLOG 5 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -382,11 +382,9 @@ They can be used by programs which \s-1P
 Written by Landon Curt Noll <chongo@toad.com> and Rich \f(CW$alz\fR
 <rsalz@uunet.uu.net> for InterNetNews.  Rewritten and converted
 to \s-1POD\s0 by Julien Elie.
-.PP
-\&\f(CW$Id:\fR newslog.pod 9903 2015\-06\-20 17:20:46Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
-\&\fBcontrol.ctl\fR\|(5), \fBctlinnd\fR\|(8), \fBexpire\fR\|(8), \fBexpireover\fR\|(8), \fBexpirerm\fR\|(8), \fBinn.conf\fR\|(5),
-\&\fBinnd\fR\|(8), \fBinnfeed.conf\fR\|(5), \fBinnreport\fR\|(8), \fBinnreport.conf\fR\|(5), \fBnews.daily\fR\|(8),
-\&\fBnnrpd\fR\|(8), \fBnntpsend\fR\|(8), \fBscanlogs\fR\|(8), \fBsend\-nntp\fR\|(8), \fBsend\-uucp\fR\|(8), \fBsyslog.conf\fR\|(5),
-\&\fBtally.control\fR\|(8).
+\&\fBcontrol.ctl\fR\|(5), \fBctlinnd\fR\|(8), \fBexpire\fR\|(8), \fBexpireover\fR\|(8), \fBexpirerm\fR\|(8),
+\&\fBinn.conf\fR\|(5), \fBinnd\fR\|(8), \fBinnfeed.conf\fR\|(5), \fBinnreport\fR\|(8), \fBinnreport.conf\fR\|(5),
+\&\fBnews.daily\fR\|(8), \fBnnrpd\fR\|(8), \fBnntpsend\fR\|(8), \fBscanlogs\fR\|(8), \fBsend\-ihave\fR\|(8),
+\&\fBsend\-nntp\fR\|(8), \fBsend\-uucp\fR\|(8), \fBsyslog.conf\fR\|(5), \fBtally.control\fR\|(8).
diff -Nurp inn-2.6.4/doc/man/ninpaths.8 inn-2.6.5/doc/man/ninpaths.8
--- inn-2.6.4/doc/man/ninpaths.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/ninpaths.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "NINPATHS 8"
-.TH NINPATHS 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH NINPATHS 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -169,7 +169,7 @@ all steps that follow with the full path
 Do not change the name of the \f(CW\*(C`path\*(C'\fR subdirectory because it is used
 by \fBsendinpaths\fR.
 .IP "2." 4
-Set up a channel feed using an entry like:
+Set up a channel feed using a \fInewsfeeds\fR entry like:
 .Sp
 .Vb 1
 \&    inpaths!:*:Tc,WP:<pathbin>/ninpaths \-p \-d <pathlog>/path/inpaths.%d
@@ -302,8 +302,6 @@ program, which is posted to alt.sources
 The idea and some implementation details for \fBninpaths\fR come from the
 original \fBinpaths\fR program, but most of the code has been rewritten for
 clarity.  This program is in the public domain.
-.PP
-\&\f(CW$Id:\fR ninpaths.pod 9383 2011\-12\-25 20:56:10Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBnewsfeeds\fR\|(5), \fBsendinpaths\fR\|(8).
diff -Nurp inn-2.6.4/doc/man/nnrpd.8 inn-2.6.5/doc/man/nnrpd.8
--- inn-2.6.4/doc/man/nnrpd.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/nnrpd.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "NNRPD 8"
-.TH NNRPD 8 "2020-11-22" "INN 2.6.4" "InterNetNews Documentation"
+.TH NNRPD 8 "2022-02-18" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -177,6 +177,12 @@ When \fInnrpdloadlimit\fR in \fIinn.conf
 connections if the load average is greater than that value (typically
 \&\f(CW16\fR).  \fBnnrpd\fR can also prevent high-volume posters from abusing
 your resources.  See the discussion of exponential backoff in \fBinn.conf\fR\|(5).
+.PP
+\&\fBnnrpd\fR injects articles into the local server running \fBinnd\fR through a
+\&\s-1UNIX\s0 domain socket, or an \s-1INET\s0 domain socket if not supported.  If another
+server should be used for injection, you can set it with the \fInnrpdposthost\fR
+parameter in \fIinn.conf\fR.  In case authentication credentials are requested
+during the injection, \fBnnrpd\fR will use the \fIpasswd.nntp\fR file in \fIpathetc\fR.
 .SH "OPTIONS"
 .IX Header "OPTIONS"
 .IP "\fB\-4\fR \fIaddress\fR" 4
@@ -325,9 +331,35 @@ You then have to set these \fIinn.conf\f
 \&    tlskeyfile:     <pathetc>/key.pem
 .Ve
 .PP
-Note that unlike Apache's \fISSLCertificateFile\fR directive, \fItlscertfile\fR
-should not contain a concatenation of certificates.  Instead, if you have
-a certificate authority root certificate, set \fItlscafile\fR to its path.
+If you want to use a complete certificate chain, you can directly put
+it in \fItlscertfile\fR (like Apache's \fISSLCertificateFile\fR directive).
+Alternately, you can put a single certificate in \fItlscertfile\fR and use
+\&\fItlscafile\fR for additional certificates needed to complete the chain,
+like a separate authority root certificate.
+.PP
+More concretly, when using Let's\ Encrypt certificates, Certbot's
+files can be installed as follows:
+.PP
+.Vb 3
+\&    tlscapath:      /etc/letsencrypt/live/news.server.com
+\&    tlscertfile:    /etc/letsencrypt/live/news.server.com/fullchain.pem
+\&    tlskeyfile:     /etc/letsencrypt/live/news.server.com/privkey.pem
+.Ve
+.PP
+or:
+.PP
+.Vb 4
+\&    tlscapath:      /etc/letsencrypt/live/news.server.com
+\&    tlscafile:      /etc/letsencrypt/live/news.server.com/chain.pem
+\&    tlscertfile:    /etc/letsencrypt/live/news.server.com/cert.pem
+\&    tlskeyfile:     /etc/letsencrypt/live/news.server.com/privkey.pem
+.Ve
+.PP
+Make sure that the permission rights are properly set so that the
+news user or the news group can read these directories and files
+(typically, he should access \fI/etc/letsencrypt/live/news.server.com\fR and
+\&\fI/etc/letsencrypt/archive/news.server.com\fR where the real keys are located,
+and the private key should not be world-readable).
 .PP
 There are two common ways for a news client to negotiate a \s-1TLS\s0
 connection:  either via the use of a dedicated port (usually 563)
@@ -389,9 +421,9 @@ Note that \s-1OVER\s0 should be used ins
 .IP "4." 4
 A new command, \s-1XPAT\s0 \fIheader\fR \fImessage-ID\fR|\fIrange\fR \fIpattern\fR
 [\fIpattern\fR ...], is provided.  The first argument is the case-insensitive
-name of the header to be searched.  The second argument is either an article
-range or a single message-ID, as specified in \s-1RFC\s0\ 2980.  The third
-argument is a \fBuwildmat\fR\|(3)\-style pattern; if there are additional arguments,
+name of the header field to be searched.  The second argument is either an
+article range or a single message-ID, as specified in \s-1RFC\s0\ 2980.  The third
+argument is a \fIuwildmat\fR\-style pattern; if there are additional arguments,
 they are joined together separated by a single space to form the complete
 pattern.  This command is similar to the \s-1XHDR\s0 command.  It returns a \f(CW221\fR
 response code, followed by the text response of all article numbers that
@@ -411,8 +443,7 @@ Written by Rich \f(CW$alz\fR <rsalz@uune
 support added by Rob Robertston <rob@violet.berkeley.edu> and Rich in
 January, 1993.  Exponential backoff (for posting) added by Dave Hayes in
 Febuary 1998.
-.PP
-\&\f(CW$Id:\fR nnrpd.pod 10373 2020\-05\-21 21:00:33Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
-\&\fBctlinnd\fR\|(8), \fBinnd\fR\|(8), \fBinn.conf\fR\|(5), \fBreaders.conf\fR\|(5), \fBsignal\fR\|(2), \fBuwildmat\fR\|(3).
+\&\fBctlinnd\fR\|(8), \fBinnd\fR\|(8), \fBinn.conf\fR\|(5), \fBlibinn_uwildmat\fR\|(3), \fBnnrpd.track\fR\|(5),
+\&\fBpasswd.nntp\fR\|(5), \fBreaders.conf\fR\|(5), \fBsignal\fR\|(2).
diff -Nurp inn-2.6.4/doc/man/nnrpd.track.5 inn-2.6.5/doc/man/nnrpd.track.5
--- inn-2.6.4/doc/man/nnrpd.track.5	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/nnrpd.track.5	2022-02-18 20:36:57.000000000 +0100
@@ -1,55 +1,179 @@
-.\" $Revision: 10179 $
-.TH NNRPD.TRACK 5
-.SH NAME
-nnrpd.track \- file to specify hosts to be tracked by nnrpd.
-.SH DESCRIPTION
-This file, which is located in
-.I <pathetc in inn.conf>,
-specifies which hosts are to have their activities recorded during an
-.I nnrpd
-session.
-The
-.I nnrpd
-server reads it when first spawned by
-.IR innd ,
-provided
-.I readertrack
-in
-.I inn.conf
-is true; otherwise this file is not used.
-.PP
-Entries consist of one host specification per line, each line having two
-fields, separated by a colon:
-.RS
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
 .nf
-
-host:identity
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
 .fi
-.RE
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+.    ds C`
+.    ds C'
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\"
+.\" If the F register is >0, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
+..
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+.    if \nF \{\
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
+..
+.        if !\nF==2 \{\
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
+.\}
+.rr rF
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "NNRPD.TRACK 5"
+.TH NNRPD.TRACK 5 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+nnrpd.track \- Specify hosts to be tracked by nnrpd
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+This file, which is located in \fIpathetc\fR, specifies which hosts are to
+have their activities recorded during an \fBnnrpd\fR session.  The \fBnnrpd\fR
+server reads it when first spawned by \fBinnd\fR, provided \fIreadertrack\fR
+in \fIinn.conf\fR is true; otherwise this file is not used.
 .PP
-The first field is either one of the FQDNs of a host, or a domain name (in 
-the form *.domain.com).
+Entries consist of one host specification per line, each line having
+two fields, separated by a colon:
+.PP
+.Vb 1
+\&    host:identity
+.Ve
+.PP
+The first field is either one of the FQDNs of a host, or a domain name
+(in the form \f(CW\*(C`*.domain.com\*(C'\fR).
 .PP
 The second field is simply a segment of text which may be used to
-more easily identify the client, typically an e-mail address or other
-identifying mark.
+more easily identify the client, typically an e\-mail address or
+other identifying mark.  Each post of tracked hosts will have an
+entry associated with \fIidentity\fR in the log message recorded to the
+\&\fIpathlog\fR/tracklogs directory, and every posted article will be saved
+in the \fIpathlog\fR/trackposts directory.
 .PP
-For example:
-.RS
-.nf
-
-nasty.foo.com:nasty@foo.com
-*.bar.com:VeryNastyClient
-.fi
-.RE
+An example of \fInnrpd.track\fR file is:
 .PP
+.Vb 2
+\&    nasty.foo.com:nasty@foo.com
+\&    *.bar.com:VeryNastyClient
+.Ve
+.SH "HISTORY"
+.IX Header "HISTORY"
 Written by Steve Carrie <stephenc@uk.uu.net> for InterNetNews.
-.de R$
-This is revision \\$3, dated \\$4.
-..
-.R$ $Id: nnrpd.track.5 10179 2017-09-18 20:13:48Z iulius $
+Rewritten into \s-1POD\s0 by Julien Elie.
 .SH "SEE ALSO"
-inn.conf(5),
-innd(8),
-newsfeeds(5),
-nnrpd(8),
+.IX Header "SEE ALSO"
+\&\fBinn.conf\fR\|(5), \fBnnrpd\fR\|(8).
diff -Nurp inn-2.6.4/doc/man/nntpget.1 inn-2.6.5/doc/man/nntpget.1
--- inn-2.6.4/doc/man/nntpget.1	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/nntpget.1	2022-02-18 20:36:57.000000000 +0100
@@ -1,90 +1,217 @@
-.\" $Revision: 10283 $
-.TH NNTPGET 1
-.SH NAME
-nntpget \- get Usenet articles from a remote NNTP server
-.SH SYNOPSIS
-.I nntpget
-[
-.BI \-d " dist"
-]
-[
-.BI \-f " file"
-]
-[
-.BI \-n " newsgroups"
-]
-[
-.BI \-t " timestring"
-]
-[
-.B \-o
-]
-[
-.BI \-u " file"
-]
-[
-.B \-v
-]
-.I host
-.SH DESCRIPTION
-.I Nntpget
-connects to the NNTP server at the specified
-.I host
-and retrieves articles from it. The Message-ID's of the desired articles
-are read from standard input. The articles are sent to standard output.
-.SH OPTIONS
-.TP
-.B \-o
-The ``\-o'' option may be used only if the command is executed on the
-host where the
-.IR innd (8)
-server is running.
-If this option is used,
-.I nntpget
-connects to the specified remote
-.I host
-to retrieve articles.
-Any article not present in the local
-.I history
-database is then fetched from the remote site and offered to the local server.
-.TP
-.B \-v
-If the ``\fB\-v\fP'' option is used with the ``\fB\-o\fP'' option then the
-Message-ID
-of each article will be sent to standard output as it is processed.
-.TP
-.B \-f
-The list of article Message-ID's is normally read from standard input.
-If the ``\fB\-f\fP'' option is used, then a ``newnews'' command is used
-to retrieve
-all articles newer then the modification date of the specified
-.IR file .
-.TP
-.B \-u
-The ``\fB\-u\fP'' option is like ``\fB\-f\fP'' except that if the transfer
-succeeds, the file will be updated with a statistics line, modifying its
-timestamp so that it can be used in later invocations.
-.TP
-.B \-t
-If the ``\-t'' option is used, then the specified
-.I timestring
-is used as the time and date parameter to the ``newnews'' command.
-.TP
-.B \-n
-If either the ``\fB\-u\fP'' or ``\fB\-f\fP'' options are used, then 
-the ``\fB\-n\fP'' option
-may be used to specify a newsgroup list. The default is ``*''.
-.TP
-.B \-d
-The ``\fB\-d\fP'' option may be
-used to specify a distribution list when using the ``\fB\-u\fP''
-or ``\fB\-f\fP'' options.
-The default is no distribution list.
-.SH HISTORY
-Written by Rich $alz <rsalz@uunet.uu.net> for InterNetNews.
-.de R$
-This is revision \\$3, dated \\$4.
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
 ..
-.R$ $Id: nntpget.1 10283 2018-05-14 12:43:05Z iulius $
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+.    ds C`
+.    ds C'
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\"
+.\" If the F register is >0, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
+..
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+.    if \nF \{\
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
+..
+.        if !\nF==2 \{\
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
+.\}
+.rr rF
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "NNTPGET 1"
+.TH NNTPGET 1 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+nntpget \- Get Usenet articles from a remote NNTP server
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+\&\fBnntpget\fR [\fB\-ov\fR] [\fB\-d\fR \fIdist\fR] [\fB\-f\fR \fIfile\fR] [\fB\-n\fR \fInewsgroups\fR]
+[\fB\-t\fR \fItimestring\fR] [\fB\-u\fR \fIfile\fR] \fIhost\fR
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\fBnntpget\fR connects to the \s-1NNTP\s0 server at the specified \fIhost\fR and retrieves
+articles from it.  The Message-IDs of the desired articles are read from
+standard input.  The articles are sent to standard output.
+.PP
+Instead of reading Message-IDs from standard output, the \fB\-d\fR, \fB\-f\fR,
+\&\fB\-n\fR, \fB\-t\fR and \fB\-u\fR options make use of the \f(CW\*(C`NEWNEWS\*(C'\fR command, which
+may not be available on the remote server.  Only one of the \fB\-f\fR, \fB\-t\fR
+or \fB\-u\fR option may be given at the same time; \fB\-d\fR and \fB\-n\fR can be
+specified only if one of the other three options is in use.
+.PP
+If authentication credentials are present for the remote server in the
+\&\fIpasswd.nntp\fR file in \fIpathetc\fR, then \fBnntpget\fR will use them to
+authenticate.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+.IP "\fB\-d\fR \fIdist\fR" 4
+.IX Item "-d dist"
+This option may be used to specify a distribution list when using the \fB\-f\fR,
+\&\fB\-t\fR or \fB\-u\fR options.  The default is no distribution list.
+.IP "\fB\-f\fR \fIfile\fR" 4
+.IX Item "-f file"
+The list of article Message-IDs is normally read from standard input.
+If this option is used, then a \f(CW\*(C`NEWNEWS\*(C'\fR command is used to retrieve all
+articles newer than the modification date of the specified \fIfile\fR.
+.IP "\fB\-n\fR \fInewsgroups\fR" 4
+.IX Item "-n newsgroups"
+If either the \fB\-f\fR, \fB\-t\fR or \fB\-u\fR options are used, then this option may be
+used to limit the responses to only the newsgroups (if any) whose names match
+the list.  The default is \f(CW\*(C`*\*(C'\fR, that is to say all newsgroups are wanted.
+.Sp
+The \fInewsgroups\fR list can contain several patterns and wildmat characters.
+For instance \f(CW\*(C`misc.*,!*.test\*(C'\fR is a valid list that will be given to the
+\&\f(CW\*(C`NEWNEWS\*(C'\fR command.
+.IP "\fB\-o\fR" 4
+.IX Item "-o"
+This option may be used only if the command is executed on the host where the
+\&\fBinnd\fR server is running.  If this option is used, \fBnntpget\fR connects to
+the specified remote \fIhost\fR to retrieve articles.  Any article not present
+in the local \fIhistory\fR database is then fetched from the remote site and
+offered to the local server.
+.Sp
+Articles are not written to standard output.  Only processed Message-IDs are,
+if the \fB\-v\fR option is also used.
+.IP "\fB\-t\fR \fItimestring\fR" 4
+.IX Item "-t timestring"
+If this option is used, then the specified \fItimestring\fR is used as the time
+and date parameter to the \f(CW\*(C`NEWNEWS\*(C'\fR command.  Only the articles arrived
+in the remote server since that timestamp are retrieved.
+.Sp
+The \fItimestring\fR is specified as \f(CW\*(C`yyyymmdd hhmmss GMT\*(C'\fR where \f(CW\*(C`yyyy\*(C'\fR is the
+year, \f(CW\*(C`mm\*(C'\fR the month, \f(CW\*(C`dd\*(C'\fR the day of the month, \f(CW\*(C`hh\*(C'\fR the hours in the
+24\-hour clock, \f(CW\*(C`mm\*(C'\fR the minutes, and \f(CW\*(C`ss\*(C'\fR the seconds.  The token \f(CW\*(C`GMT\*(C'\fR
+specifies that the date and time are given in Coordinated Universal Time.
+.IP "\fB\-u\fR \fIfile\fR" 4
+.IX Item "-u file"
+This option is like \fB\-f\fR except that if the transfer succeeds, the file
+will be updated with a statistics line, modifying its timestamp so that it
+can be used in later invocations.
+.IP "\fB\-v\fR" 4
+.IX Item "-v"
+If this option is used with \fB\-o\fR, then the Message-ID of each article will
+be sent to standard output as it is processed.
+.SH "HISTORY"
+.IX Header "HISTORY"
+Written by Rich \f(CW$alz\fR <rsalz@uunet.uu.net> for InterNetNews.  Rewritten into
+\&\s-1POD\s0 by Julien Elie.
 .SH "SEE ALSO"
-innd(8).
+.IX Header "SEE ALSO"
+\&\fBinnd\fR\|(8), \fBpasswd.nntp\fR\|(5).
diff -Nurp inn-2.6.4/doc/man/nntpsend.8 inn-2.6.5/doc/man/nntpsend.8
--- inn-2.6.4/doc/man/nntpsend.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/nntpsend.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "NNTPSEND 8"
-.TH NNTPSEND 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH NNTPSEND 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -248,8 +248,6 @@ defaults to \f(CW180\fR.
 .IX Header "HISTORY"
 Written by Landon Curt Noll <chongo@toad.com> and Rich \f(CW$alz\fR
 <rsalz@uunet.uu.net> for InterNetNews.  Converted to \s-1POD\s0 by Julien Elie.
-.PP
-\&\f(CW$Id:\fR nntpsend.pod 9588 2013\-12\-19 17:46:41Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBinn.conf\fR\|(5), \fBinnxmit\fR\|(1), \fBnewsfeeds\fR\|(5), \fBnntpsend.ctl\fR\|(5), \fBshlock\fR\|(1),
diff -Nurp inn-2.6.4/doc/man/nntpsend.ctl.5 inn-2.6.5/doc/man/nntpsend.ctl.5
--- inn-2.6.4/doc/man/nntpsend.ctl.5	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/nntpsend.ctl.5	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "NNTPSEND.CTL 5"
-.TH NNTPSEND.CTL 5 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH NNTPSEND.CTL 5 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -168,8 +168,6 @@ See \fBnntpsend\fR\|(8) for an example o
 .IX Header "HISTORY"
 Written by Landon Curt Noll <chongo@toad.com> for InterNetNews.  Converted to
 \&\s-1POD\s0 by Julien Elie.
-.PP
-\&\f(CW$Id:\fR nntpsend.ctl.pod 9071 2010\-05\-31 17:41:32Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBinnxmit\fR\|(1), \fBnewsfeeds\fR\|(5), \fBnntpsend\fR\|(8), \fBshrinkfile\fR\|(1).
diff -Nurp inn-2.6.4/doc/man/ovdb.5 inn-2.6.5/doc/man/ovdb.5
--- inn-2.6.4/doc/man/ovdb.5	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/ovdb.5	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "OVDB 5"
-.TH OVDB 5 "2021-01-21" "INN 2.6.4" "InterNetNews Documentation"
+.TH OVDB 5 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -466,8 +466,6 @@ legacy \fIov3.c\fR file.
 .SH "HISTORY"
 .IX Header "HISTORY"
 Written by Heath Kehoe <hakehoe@avalon.net> for InterNetNews.
-.PP
-\&\f(CW$Id:\fR ovdb.pod 10525 2021\-01\-20 11:51:15Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBinn.conf\fR\|(5), \fBinnd\fR\|(8), \fBmakehistory\fR\|(8), \fBnnrpd\fR\|(8), \fBovdb_init\fR\|(8),
diff -Nurp inn-2.6.4/doc/man/ovdb_init.8 inn-2.6.5/doc/man/ovdb_init.8
--- inn-2.6.4/doc/man/ovdb_init.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/ovdb_init.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "OVDB_INIT 8"
-.TH OVDB_INIT 8 "2018-03-18" "INN 2.6.4" "InterNetNews Documentation"
+.TH OVDB_INIT 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -225,8 +225,6 @@ Note that the \fB\-u\fR option can be us
 .SH "HISTORY"
 .IX Header "HISTORY"
 Written by Heath Kehoe <hakehoe@avalon.net> for InterNetNews.
-.PP
-\&\f(CW$Id:\fR ovdb_init.pod 10241 2018\-02\-04 15:38:19Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBovdb\fR\|(5), \fBmakehistory\fR\|(8), \fBrc.news\fR\|(8).
diff -Nurp inn-2.6.4/doc/man/ovdb_monitor.8 inn-2.6.5/doc/man/ovdb_monitor.8
--- inn-2.6.4/doc/man/ovdb_monitor.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/ovdb_monitor.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "OVDB_MONITOR 8"
-.TH OVDB_MONITOR 8 "2018-03-18" "INN 2.6.4" "InterNetNews Documentation"
+.TH OVDB_MONITOR 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -162,8 +162,6 @@ automatically takes care of stopping \fB
 .SH "HISTORY"
 .IX Header "HISTORY"
 Written by Heath Kehoe <hakehoe@avalon.net> for InterNetNews.
-.PP
-\&\f(CW$Id:\fR ovdb_monitor.pod 10241 2018\-02\-04 15:38:19Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBovdb\fR\|(5), \fBovdb_init\fR\|(8), \fBrc.news\fR\|(8).
diff -Nurp inn-2.6.4/doc/man/ovdb_server.8 inn-2.6.5/doc/man/ovdb_server.8
--- inn-2.6.4/doc/man/ovdb_server.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/ovdb_server.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "OVDB_SERVER 8"
-.TH OVDB_SERVER 8 "2018-01-28" "INN 2.6.4" "InterNetNews Documentation"
+.TH OVDB_SERVER 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -160,8 +160,6 @@ exiting itself.
 .SH "HISTORY"
 .IX Header "HISTORY"
 Written by Heath Kehoe <hakehoe@avalon.net> for InterNetNews.
-.PP
-\&\f(CW$Id:\fR ovdb_server.pod 10191 2017\-11\-25 21:11:53Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBovdb\fR\|(5), \fBovdb_init\fR\|(8), \fBrc.news\fR\|(8).
diff -Nurp inn-2.6.4/doc/man/ovdb_stat.8 inn-2.6.5/doc/man/ovdb_stat.8
--- inn-2.6.4/doc/man/ovdb_stat.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/ovdb_stat.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "OVDB_STAT 8"
-.TH OVDB_STAT 8 "2018-03-18" "INN 2.6.4" "InterNetNews Documentation"
+.TH OVDB_STAT 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -210,8 +210,6 @@ because it may leave stale locks in the
 .SH "HISTORY"
 .IX Header "HISTORY"
 Written by Heath Kehoe <hakehoe@avalon.net> for InterNetNews.
-.PP
-\&\f(CW$Id:\fR ovdb_stat.pod 10241 2018\-02\-04 15:38:19Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBovdb\fR\|(5).
diff -Nurp inn-2.6.4/doc/man/overchan.8 inn-2.6.5/doc/man/overchan.8
--- inn-2.6.4/doc/man/overchan.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/overchan.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "OVERCHAN 8"
-.TH OVERCHAN 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH OVERCHAN 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -182,8 +182,6 @@ single space.
 Written by Rob Robertson <rob@violet.berkeley.edu> and Rich \f(CW$alz\fR
 <rsalz@uunet.uu.net> for InterNetNews.  Man page rewritten in \s-1POD\s0 by Russ
 Allbery <eagle@eyrie.org>.
-.PP
-\&\f(CW$Id:\fR overchan.pod 9767 2014\-12\-07 21:13:43Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBinn.conf\fR\|(5), \fBinnd\fR\|(8), \fBnewsfeeds\fR\|(5)
diff -Nurp inn-2.6.4/doc/man/passwd.nntp.5 inn-2.6.5/doc/man/passwd.nntp.5
--- inn-2.6.4/doc/man/passwd.nntp.5	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/passwd.nntp.5	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "PASSWD.NNTP 5"
-.TH PASSWD.NNTP 5 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH PASSWD.NNTP 5 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -144,7 +144,7 @@ passwd.nntp \- Passwords for connecting
 .IX Header "DESCRIPTION"
 The file \fIpathetc\fR/passwd.nntp contains host / name / password
 triplets for use when authenticating client programs to \s-1NNTP\s0 servers.
-This file is normally interpreted by \fBNNTPsendpassword()\fR in \fBlibinn\fR\|(3).
+This file is normally interpreted by \f(CW\*(C`NNTPsendpassword()\*(C'\fR in \fBlibinn\fR\|(3).
 Blank lines and lines beginning with a number sign (\f(CW\*(C`#\*(C'\fR) are ignored.
 All other lines should consist of three or four fields separated by
 colons:
@@ -172,18 +172,19 @@ are described in \s-1RFC\s0\ 4643.)
 .PP
 For example:
 .PP
-.Vb 3
-\&    ##  UUNET needs a password, MIT doesn\*(Aqt.
-\&    mit.edu:bbn::authinfo
+.Vb 2
+\&    mit.edu:bbn:mypasswd
 \&    uunet.uu.net:bbn:yoyoma:authinfo
 .Ve
 .PP
 This file should not be world-readable.
+.PP
+\&\fBactsync\fR, \fBgetlist\fR, \fBinews\fR, \fBinnxbatch\fR, \fBinnxmit\fR, \fBnnrpd\fR,
+\&\fBnntpget\fR and \fBrnews\fR make use of \fIpassd.nntp\fR when needing to connect
+to a remote server.
 .SH "HISTORY"
 .IX Header "HISTORY"
 Written by Rich \f(CW$alz\fR <rsalz@uunet.uu.net> for InterNetNews.
-.PP
-\&\f(CW$Id:\fR passwd.nntp.pod 8821 2009\-11\-20 17:32:37Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBinn.conf\fR\|(5), \fBinnd\fR\|(8), \fBlibinn\fR\|(3).
diff -Nurp inn-2.6.4/doc/man/perl-nocem.8 inn-2.6.5/doc/man/perl-nocem.8
--- inn-2.6.4/doc/man/perl-nocem.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/perl-nocem.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "PERL-NOCEM 8"
-.TH PERL-NOCEM 8 "2020-11-22" "INN 2.6.4" "InterNetNews Documentation"
+.TH PERL-NOCEM 8 "2022-02-18" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -142,7 +142,7 @@
 perl\-nocem \- A NoCeM\-on\-spool implementation for INN\ 2.x
 .SH "SYNOPSIS"
 .IX Header "SYNOPSIS"
-perl-nocem
+\&\fBperl-nocem\fR
 .SH "DESCRIPTION"
 .IX Header "DESCRIPTION"
 NoCeM, which is pronounced \fINo See 'Em\fR, is a protocol enabling
@@ -162,32 +162,38 @@ on the criteria they use.
 .PP
 Processing NoCeM notices is easy to set up:
 .IP "1." 4
-Import the keys of the NoCeM issuers you trust in order to check
-the authenticity of their notices.  You can do:
+If not already done, install GnuPG, or an equivalent implementation of the
+OpenPGP standard, to be able to verify the signature of NoCeM notices.
+It will provide the \fBgpg\fR and \fBgpgv\fR programs.  If GnuPG was already
+installed when \s-1INN\s0 was configured, then the paths to these programs were taken
+into account.  Otherwise, you have to set the \f(CW$gpg\fR and \f(CW$gpgv\fR variables
+in \fIpathlib\fR/perl/INN/Config.pm to the paths to these programs.
+.Sp
+All still active NoCeM issuers use rather modern \s-1PGP\s0 keys accepted by both
+GnuPG 1.x and 2.x versions.  It is no longer needed to explicitly use \fBgpg1\fR
+to process NoCeM notices.
+.IP "2." 4
+Import the keys of the NoCeM issuers you trust in order to check the
+authenticity of their notices.  You can run the following command:
 .Sp
 .Vb 4
-\&    gpg1 \-\-no\-default\-keyring \-\-primary\-keyring <pathetc>/pgp/ncmring.gpg \e
-\&         \-\-no\-options \-\-allow\-non\-selfsigned\-uid \-\-no\-permission\-warning \e
-\&         \-\-batch \-\-import <key\-file>
+\&    gpg \-\-no\-default\-keyring \-\-allow\-non\-selfsigned\-uid \e
+\&        \-\-primary\-keyring <pathetc>/pgp/ncmring.gpg \-\-no\-options \e
+\&        \-\-no\-permission\-warning \-\-batch \-\-import <key\-file>
 \&    chmod 644 <pathetc>/pgp/ncmring.gpg
 .Ve
 .Sp
-where <pathetc> is the value of the \fIpathetc\fR parameter set in
-\&\fIinn.conf\fR and <key\-file> the file containing the key(s) to import.
-The keyring must be located in <pathetc>/pgp/ncmring.gpg; you only
-have to create the directory <pathetc>/pgp before using \fBgpg\fR (it will
-automatically generate the \fIncmring.gpg\fR file) and make sure the news
-user can read this file, once generated.
-.Sp
-As a few NoCeM issuers are still using old PGP-generated keys, you
-may have to use \fBgpg1\fR with various legacy options in command-line
-(like in the example above) instead of more recent versions of \fBgpg\fR
-that no longer accept such keys.
-.Sp
-The keys of NoCeM issuers can be found in the web site of \fIThe NoCeM Registry\fR:
-<http://rosalind.home.xs4all.nl/nocemreg/nocemreg.html>.  You can even
-download there a unique file which contains all the keys.
-.IP "2." 4
+where <pathetc> is the value of the \fIpathetc\fR parameter set in \fIinn.conf\fR
+and <key\-file> the file containing the key(s) to import.  The keyring must
+be located in \fI<pathetc>/pgp/ncmring.gpg\fR; you only have to create the
+directory \fI<pathetc>/pgp\fR before using \fBgpg\fR (it will automatically
+generate the \fIncmring.gpg\fR file) and make sure the news user can read this
+file, once generated.
+.Sp
+The keys of NoCeM issuers can be found in the web site of \fIThe NoCeM
+Registry\fR:  <http://rosalind.home.xs4all.nl/nocemreg/nocemreg.html>.
+You can even download there a unique file which contains all the keys.
+.IP "3." 4
 Create a \fInocem.ctl\fR config file in \fIpathetc\fR indicating the NoCeM issuers
 and notices you want to follow.  This permission file contains lines like:
 .Sp
@@ -197,15 +203,19 @@ and notices you want to follow.  This pe
 .Ve
 .Sp
 This will remove all articles for which the issuer (first part of the line,
-before the colon \f(CW\*(C`:\*(C'\fR) has issued NoCeM notices corresponding to the
-criteria specified after the colon.
-.Sp
-You will also find information about that on the web site of
-\&\fIThe NoCeM Registry\fR.
-.IP "3." 4
+before the colon \f(CW\*(C`:\*(C'\fR) has issued NoCeM notices corresponding to the criteria
+specified after the colon.  Usually, you just keep the lines corresponding to
+the keys previously installed.
+.Sp
+You will also find information about that on the web site of \fIThe NoCeM
+Registry\fR.  Note that \s-1INN\s0 is shipped with an up-to-date \fInocem.ctl\fR file
+already configured with the current NoCeM issuers.  (Only the keys installed
+at the previous step are not included, so as to leave you the choice of whom
+to trust, and download the most recent ones, in case they have changed.)
+.IP "4." 4
 Add to the \fInewsfeeds\fR file an entry like this one in order to feed
 \&\fBperl-nocem\fR the NoCeM notices posted to alt.nocem.misc and
-news.lists.filters:
+news.lists.filters, the usual groups where notices are sent:
 .Sp
 .Vb 3
 \&    nocem!\e
@@ -213,13 +223,14 @@ news.lists.filters:
 \&        :Tc,Wf,Ap:<pathbin>/perl\-nocem
 .Ve
 .Sp
-with the correct path to \fBperl-nocem\fR, located in <pathbin>.  Then, reload
-the \fInewsfeeds\fR file (\f(CW\*(C`ctlinnd reload newsfeeds \*(AqNoCeM channel feed\*(Aq\*(C'\fR).
+with the correct path to \fBperl-nocem\fR, located in <pathbin>.  Then, run
+\&\f(CW\*(C`inncheck\*(C'\fR to ensure the syntax of the modified \fInewsfeeds\fR file is correct,
+and reload it (via \f(CW\*(C`ctlinnd reload newsfeeds \*(AqNoCeM channel feed\*(Aq\*(C'\fR).
 .Sp
 Note that you should at least carry news.lists.filters on your news
 server (or other newsgroups where NoCeM notices are sent) if you wish
 to process them.
-.IP "4." 4
+.IP "5." 4
 Everything should now work.  However, do not hesitate to manually test
 \&\fBperl-nocem\fR with a NoCeM notice, using:
 .Sp
@@ -248,11 +259,11 @@ The configuration file which specifies t
 The keyring which contains the public keys of trusted NoCeM issuers.
 .SH "BUGS"
 .IX Header "BUGS"
-The Subject: header is not checked for the @@NCM string and there is no
-check for the presence of the References: header.
+The Subject header field body is not checked for the \f(CW@@NCM\fR string and
+there is no check for the presence of the References header field.
 .PP
-The Newsgroups: pseudo header is not checked, but this can be done in
-\&\fBlocal_want_cancel_id()\fR.
+The Newsgroups pseudo header field body is not checked, but this can
+be done in \f(CW\*(C`local_want_cancel_id()\*(C'\fR.
 .PP
 The Hierarchies: header is ignored.
 .SH "HISTORY"
@@ -260,8 +271,6 @@ The Hierarchies: header is ignored.
 Copyright 2000 by Miquel van Smoorenburg <miquels@cistron.nl>.
 .PP
 Copyright 2001 by Marco d'Itri <md@linux.it>.
-.PP
-\&\f(CW$Id:\fR perl\-nocem.in 10399 2020\-11\-12 20:24:35Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBgpg\fR\|(1), \fBgpgv\fR\|(1), \fBgrephistory\fR\|(1), \fBinn.conf\fR\|(5), \fBnewsfeeds\fR\|(5), \fBpgp\fR\|(1).
diff -Nurp inn-2.6.4/doc/man/pgpverify.1 inn-2.6.5/doc/man/pgpverify.1
--- inn-2.6.4/doc/man/pgpverify.1	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/pgpverify.1	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "PGPVERIFY 1"
-.TH PGPVERIFY 1 "2021-01-21" "INN 2.6.4" "InterNetNews Documentation"
+.TH PGPVERIFY 1 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff -Nurp inn-2.6.4/doc/man/procbatch.8 inn-2.6.5/doc/man/procbatch.8
--- inn-2.6.4/doc/man/procbatch.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/procbatch.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "PROCBATCH 8"
-.TH PROCBATCH 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH PROCBATCH 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -261,8 +261,6 @@ Clayton O'Neill.
 .PP
 This manual page was written by Florian Schlichting, with the help of a
 memo by Russ Allbery.
-.PP
-\&\f(CW$Id:\fR procbatch.pod 9371 2011\-09\-04 09:21:43Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBfilechan\fR\|(8), \fBinnfeed\fR\|(8), \fBinnxmit\fR\|(8), \fBnews.daily\fR\|(8).
diff -Nurp inn-2.6.4/doc/man/prunehistory.8 inn-2.6.5/doc/man/prunehistory.8
--- inn-2.6.4/doc/man/prunehistory.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/prunehistory.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "PRUNEHISTORY 8"
-.TH PRUNEHISTORY 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH PRUNEHISTORY 8 "2022-02-18" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -151,10 +151,10 @@ them with spaces, so that the size and p
 does not change.  This has an effect similar to expiring the article, in
 that it is still mentioned in the history database but cannot be retrieved.
 .PP
-\&\fBprunehistory\fR reads the standard input.  The input is taken as a set of lines.
-Blank lines and lines starting with a number sign (\f(CW\*(C`#\*(C'\fR) are ignored.  All other
-lines should consist of a message-ID followed by zero or more other fields
-(which are ignored).  The message-ID is used as the \fBdbz\fR\|(3) key to get
+\&\fBprunehistory\fR reads the standard input.  The input is taken as a set of
+lines.  Blank lines and lines starting with a number sign (\f(CW\*(C`#\*(C'\fR) are ignored.
+All other lines should consist of a message-ID followed by zero or more other
+fields (which are ignored).  The message-ID is used as the \fIdbz\fR key to get
 an offset into the text file.  Since \fBinnd\fR only appends to the text file,
 \&\fBprunehistory\fR does not need to have any interaction with it.
 .SH "OPTIONS"
@@ -173,8 +173,6 @@ a different name, use the \fB\-f\fR flag
 .IX Header "HISTORY"
 Written by Rich \f(CW$alz\fR <rsalz@uunet.uu.net> for InterNetNews.  Converted to
 \&\s-1POD\s0 by Julien Elie.
-.PP
-\&\f(CW$Id:\fR prunehistory.pod 9447 2012\-12\-07 19:01:45Z eagle $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
-\&\fBdbz\fR\|(3), \fBhistory\fR\|(5), \fBinnd\fR\|(8).
+\&\fBhistory\fR\|(5), \fBinnd\fR\|(8), \fBlibinn_dbz\fR\|(3).
diff -Nurp inn-2.6.4/doc/man/pullnews.1 inn-2.6.5/doc/man/pullnews.1
--- inn-2.6.4/doc/man/pullnews.1	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/pullnews.1	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "PULLNEWS 1"
-.TH PULLNEWS 1 "2018-05-14" "INN 2.6.4" "InterNetNews Documentation"
+.TH PULLNEWS 1 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -438,8 +438,6 @@ rewritten in \s-1POD\s0 by Russ Allbery
 Geraint A.\ Edwards greatly improved \fBpullnews\fR, adding no more than 16\ new
 recognized flags, fixing some bugs and integrating the \fBbackupfeed\fR
 contrib script by Kai Henningsen, adding again 6\ other flags.
-.PP
-\&\f(CW$Id:\fR pullnews.pod 10283 2018\-05\-14 12:43:05Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBincoming.conf\fR\|(5), \fBrnews\fR\|(1).
diff -Nurp inn-2.6.4/doc/man/qio.3 inn-2.6.5/doc/man/qio.3
--- inn-2.6.4/doc/man/qio.3	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/qio.3	1970-01-01 01:00:00.000000000 +0100
@@ -1,247 +0,0 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
-.\"
-.\" Standard preamble:
-.\" ========================================================================
-.de Sp \" Vertical space (when we can't use .PP)
-.if t .sp .5v
-.if n .sp
-..
-.de Vb \" Begin verbatim text
-.ft CW
-.nf
-.ne \\$1
-..
-.de Ve \" End verbatim text
-.ft R
-.fi
-..
-.\" Set up some character translations and predefined strings.  \*(-- will
-.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
-.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
-.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
-.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
-.\" nothing in troff, for use with C<>.
-.tr \(*W-
-.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
-.ie n \{\
-.    ds -- \(*W-
-.    ds PI pi
-.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
-.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
-.    ds L" ""
-.    ds R" ""
-.    ds C` ""
-.    ds C' ""
-'br\}
-.el\{\
-.    ds -- \|\(em\|
-.    ds PI \(*p
-.    ds L" ``
-.    ds R" ''
-.    ds C`
-.    ds C'
-'br\}
-.\"
-.\" Escape single quotes in literal strings from groff's Unicode transform.
-.ie \n(.g .ds Aq \(aq
-.el       .ds Aq '
-.\"
-.\" If the F register is >0, we'll generate index entries on stderr for
-.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
-.\" entries marked with X<> in POD.  Of course, you'll have to process the
-.\" output yourself in some meaningful fashion.
-.\"
-.\" Avoid warning from groff about undefined register 'F'.
-.de IX
-..
-.nr rF 0
-.if \n(.g .if rF .nr rF 1
-.if (\n(rF:(\n(.g==0)) \{\
-.    if \nF \{\
-.        de IX
-.        tm Index:\\$1\t\\n%\t"\\$2"
-..
-.        if !\nF==2 \{\
-.            nr % 0
-.            nr F 2
-.        \}
-.    \}
-.\}
-.rr rF
-.\"
-.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
-.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
-.    \" fudge factors for nroff and troff
-.if n \{\
-.    ds #H 0
-.    ds #V .8m
-.    ds #F .3m
-.    ds #[ \f1
-.    ds #] \fP
-.\}
-.if t \{\
-.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
-.    ds #V .6m
-.    ds #F 0
-.    ds #[ \&
-.    ds #] \&
-.\}
-.    \" simple accents for nroff and troff
-.if n \{\
-.    ds ' \&
-.    ds ` \&
-.    ds ^ \&
-.    ds , \&
-.    ds ~ ~
-.    ds /
-.\}
-.if t \{\
-.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
-.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
-.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
-.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
-.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
-.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
-.\}
-.    \" troff and (daisy-wheel) nroff accents
-.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
-.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
-.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
-.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
-.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
-.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
-.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
-.ds ae a\h'-(\w'a'u*4/10)'e
-.ds Ae A\h'-(\w'A'u*4/10)'E
-.    \" corrections for vroff
-.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
-.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
-.    \" for low resolution devices (crt and lpr)
-.if \n(.H>23 .if \n(.V>19 \
-\{\
-.    ds : e
-.    ds 8 ss
-.    ds o a
-.    ds d- d\h'-1'\(ga
-.    ds D- D\h'-1'\(hy
-.    ds th \o'bp'
-.    ds Th \o'LP'
-.    ds ae ae
-.    ds Ae AE
-.\}
-.rm #[ #] #H #V #F C
-.\" ========================================================================
-.\"
-.IX Title "qio 3"
-.TH qio 3 "2021-01-04" "INN 2.6.4" "InterNetNews Documentation"
-.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
-.\" way too many mistakes in technical documents.
-.if n .ad l
-.nh
-.SH "NAME"
-qio \- Quick I/O routines for reading files
-.SH "SYNOPSIS"
-.IX Header "SYNOPSIS"
-.Vb 1
-\&    #include <inn/qio.h>
-\&
-\&    QIOSTATE *QIOopen(const char *name);
-\&
-\&    QIOSTATE *QIOfdopen(int> I<fd);
-\&
-\&    void QIOclose(QIOSTATE *qp);
-\&
-\&    char *QIOread(QIOSTATE *qp);
-\&
-\&    int QIOfileno(QIOSTATE *qp);
-\&
-\&    size_t QIOlength(QIOSTATE *qp);
-\&
-\&    int QIOrewind(QIOSTATE *qp);
-\&
-\&    off_t QIOtell(QIOSTATE *qp);
-\&
-\&    bool QIOerror(QIOSTATE *qp);
-\&
-\&    bool QIOtoolong(QIOSTATE *qp);
-.Ve
-.SH "DESCRIPTION"
-.IX Header "DESCRIPTION"
-The routines described in this manual page are part of \fBlibinn\fR\|(3).  They
-are used to provide quick read access to files; the \s-1QIO\s0 routines use
-buffering adapted to the block size of the device, similar to stdio, but
-with a more convenient syntax for reading newline-terminated lines.  \s-1QIO\s0
-is short for \*(L"Quick I/O\*(R" (a bit of a misnomer, as \s-1QIO\s0 provides read-only
-access to files only).
-.PP
-The \s-1QIOSTATE\s0 structure returned by \fBQIOopen\fR and \fBQIOfdopen\fR is the
-analog to stdio's \s-1FILE\s0 structure and should be treated as a black box by
-all users of these routines.  Only the above \s-1API\s0 should be used.
-.PP
-\&\fBQIOopen\fR opens the given file for reading with a buffer size of 32KiB.
-Returns a pointer to use for subsequent calls, or \s-1NULL\s0 on error.
-\&\fBQIOfdopen\fR performs the same operation except on an already-open file
-descriptor (\fIfd\fR must designate a file open for reading).
-.PP
-\&\fBQIOclose\fR closes the open file and releases any resources used by the
-\&\s-1QIOSTATE\s0 structure.  The \s-1QIOSTATE\s0 pointer should not be used again after
-it has been passed to this function.
-.PP
-\&\fBQIOread\fR reads the next newline-terminated line in the file and returns
-a pointer to it, with the trailing newline replaced by nul.  The returned
-pointer is a pointer into a buffer in the \s-1QIOSTATE\s0 object and therefore
-will remain valid until \fBQIOclose\fR is called on that object.  If \s-1EOF\s0 is
-reached, an error occurs, or if the line is longer than the buffer size
-(32KiB), \s-1NULL\s0 is returned instead.  To distinguish between the error
-cases, use \fBQIOerror\fR and \fBQIOtoolong\fR.
-.PP
-\&\fBQIOfileno\fR returns the descriptor of the open file.
-.PP
-\&\fBQIOlength\fR returns the length in bytes of the last line returned by
-\&\fBQIOread\fR.  Its return value is only defined after a successful call to
-\&\fBQIOread\fR.
-.PP
-\&\fBQIOrewind\fR sets the read pointer back to the beginning of the file and
-reads the first block of the file in anticipation of future reads.  It
-returns 0 if successful and \-1 on error.
-.PP
-\&\fBQIOtell\fR returns the current value of the read pointer (the \fBlseek\fR\|(2)
-offset at which the next line will start).
-.PP
-\&\fBQIOerror\fR returns true if there was an error in the last call to
-\&\fBQIOread\fR, false otherwise.  \fBQIOtoolong\fR returns true if there was an
-error and the error was that the line was too long.  If \fBQIOread\fR returns
-\&\s-1NULL,\s0 these functions should be called to determine what happened.  If
-\&\fBQIOread\fR returned \s-1NULL\s0 and \fBQIOerror\fR is false, \s-1EOF\s0 was reached.  Note
-that if \fBQIOtoolong\fR returns true, the next call to \fBQIOread\fR will try
-to read the remainder of the line and will likely return a partial line;
-users of this library should in general treat long lines as fatal errors.
-.SH "EXAMPLES"
-.IX Header "EXAMPLES"
-This block of code opens \fI/etc/motd\fR and reads it a line at a time,
-printing out each line preceded by its offset in the file.
-.PP
-.Vb 3
-\&    QIOSTATE *qp;
-\&    off_t offset;
-\&    char *p;
-\&
-\&    qp = QIOopen("/etc/motd");
-\&    if (qp == NULL) {
-\&        perror("Open error");
-\&        exit(1);
-\&    }
-\&    for (p = QIOread(qp); p != NULL; p = QIOread(qp))
-\&        printf("%ld: %s\en", (unsigned long) QIOtell(qp), p);
-\&    if (QIOerror(qp)) {
-\&        perror("Read error");
-\&        exit(1);
-\&    }
-\&    QIOclose(qp);
-.Ve
-.SH "HISTORY"
-.IX Header "HISTORY"
-Written by Rich \f(CW$alz\fR <rsalz@uunet.uu.net> for InterNetNews.  Updated by
-Russ Allbery <eagle@eyrie.org>.
-.PP
-\&\f(CW$Id:\fR qio.pod 10457 2020\-12\-19 06:10:49Z eagle $
diff -Nurp inn-2.6.4/doc/man/radius.8 inn-2.6.5/doc/man/radius.8
--- inn-2.6.4/doc/man/radius.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/radius.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "RADIUS 8"
-.TH RADIUS 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH RADIUS 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -196,8 +196,6 @@ implement it correctly.
 .IX Header "HISTORY"
 The \s-1RADIUS\s0 authenticator was originally written by Aidan Cully.  This
 documentation was written by Russ Allbery <eagle@eyrie.org>.
-.PP
-\&\f(CW$Id:\fR radius.pod 9940 2015\-09\-04 12:58:15Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBinn\-radius.conf\fR\|(5), \fBnnrpd\fR\|(8), \fBreaders.conf\fR\|(5).
diff -Nurp inn-2.6.4/doc/man/rc.news.8 inn-2.6.5/doc/man/rc.news.8
--- inn-2.6.4/doc/man/rc.news.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/rc.news.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "RC.NEWS 8"
-.TH RC.NEWS 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH RC.NEWS 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -216,8 +216,6 @@ user \s-1ID.\s0
 .PP
 This manual page written by Jeffrey M.\ Vinocur <jeff@litech.org> for
 InterNetNews.
-.PP
-\&\f(CW$Id:\fR rc.news.pod 9723 2014\-09\-24 17:54:24Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBctlinnd\fR\|(8), \fBcnfsstat\fR\|(8), \fBexpirerm\fR\|(8), \fBinn.conf\fR\|(5), \fBinnwatch\fR\|(8), \fBovdb\fR\|(5).
diff -Nurp inn-2.6.4/doc/man/readers.conf.5 inn-2.6.5/doc/man/readers.conf.5
--- inn-2.6.4/doc/man/readers.conf.5	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/readers.conf.5	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,13 +133,87 @@
 .\" ========================================================================
 .\"
 .IX Title "READERS.CONF 5"
-.TH READERS.CONF 5 "2018-05-14" "INN 2.6.4" "InterNetNews Documentation"
+.TH READERS.CONF 5 "2022-02-18" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
 .nh
 .SH "NAME"
 readers.conf \- Access control and configuration for nnrpd
+.SH "IN A NUTSHELL"
+.IX Header "IN A NUTSHELL"
+The \fIreaders.conf\fR file parameters who is allowed to connect as a news
+reader and what they're allowed to do after they connect.  Bear in mind
+that in \fIreaders.conf\fR, authentication and authorization are configured in
+different blocks.  First, a user is authenticated, and assigned an identity
+(in an \f(CW\*(C`auth\*(C'\fR block).  Then this identity is authorized to access certain
+newsgroups with certain rights (in an \f(CW\*(C`access\*(C'\fR block).
+.PP
+As for authentication, your \f(CW\*(C`auth\*(C'\fR block for password users could look like
+this:
+.PP
+.Vb 4
+\&    auth "foreignokay" {
+\&        auth: "ckpasswd \-f <pathdb in inn.conf>/newsusers"
+\&        default: "<unauthenticated>"
+\&    }
+.Ve
+.PP
+See the documentation of the \fB\-f\fR flag in the \fBckpasswd\fR\|(8) man page for how to
+generate passwords and make use of this \fInewsusers\fR file.
+.PP
+This way, with the \f(CW\*(C`foreignokay\*(C'\fR authentication block, a user successfully
+authenticated as user \f(CW\*(C`myusername\*(C'\fR will be assigned the identity
+\&\f(CW\*(C`myusername\*(C'\fR.  If authentication fails, it will be assigned the default
+identity \f(CW\*(C`<unauthenticated>\*(C'\fR that will later be checked in \f(CW\*(C`access\*(C'\fR
+blocks.
+.PP
+Authentication blocks are checked from the last one in the \fIreaders.conf\fR
+file to the first one (bottom up).  As soon as one matches, the corresponding
+identity is assigned to the user.
+.PP
+As for authorization, let's do something in an \f(CW\*(C`access\*(C'\fR block for people
+successfully authenticated with passwords:
+.PP
+.Vb 4
+\&    access "authenticatedpeople" {
+\&        users: "*"
+\&        newsgroups: "*,!junk,!control,!control.*"
+\&    }
+.Ve
+.PP
+And then something like one of the following two, depending on whether
+unauthenticated users get any access:
+.PP
+.Vb 4
+\&    access "restrictive" {
+\&        users: "<unauthenticated>"
+\&        newsgroups: "!*"
+\&    }
+\&
+\&    access "readonly" {
+\&        users: "<unauthenticated>"
+\&        read: "local.*"
+\&        post: "!*"
+\&    }
+.Ve
+.PP
+Please note that the \f(CW\*(C`authenticatedpeople\*(C'\fR block must appear in
+\&\fIreaders.conf\fR before \f(CW\*(C`restrictive\*(C'\fR or \f(CW\*(C`readonly\*(C'\fR blocks because access
+blocks are checked from the last one in the \fIreaders.conf\fR file to the first
+one (bottom up).  As soon as one matches the identity previously assigned
+by an authentication block, it is chosen.  The \f(CW\*(C`authenticatedpeople\*(C'\fR access
+block matches every user that has not been assigned \f(CW\*(C`<unauthenticated>\*(C'\fR
+as identity.
+.PP
+More examples and features are detailed below in this man page (notably
+without any password file, with \s-1PAM,\s0 with Perl or Python hooks).
+.PP
+You don't need to reload anything after modifying \fIreaders.conf\fR; every
+time a news client connects to the server, a new \fBnnrpd\fR process is spawned
+and reads its configuration from disk.  Nonetheless, after any changes,
+you can run \f(CW\*(C`inncheck\*(C'\fR to perform basic syntax checks against the modified
+\&\fIreaders.conf\fR file.
 .SH "DESCRIPTION"
 .IX Header "DESCRIPTION"
 \&\fIreaders.conf\fR in \fIpathetc\fR specifies access control for \fBnnrpd\fR\|(8).  It
@@ -783,12 +857,12 @@ access, not posting access.
 Here's a similar example for a news server that accepts connections from
 anywhere but requires the user to specify a username and password.  The
 username and password are first checked against an external database of
-usernames and passwords, and then against the system shadow password file:
+usernames and passwords, and then make use of \s-1PAM:\s0
 .PP
 .Vb 4
 \&    auth all {
-\&        auth: "ckpasswd \-d <pathdb in inn.conf>/newsusers"
-\&        auth: "ckpasswd \-s"
+\&        auth: "ckpasswd \-f <pathdb in inn.conf>/newsusers"
+\&        auth: ckpasswd
 \&    }
 \&
 \&    access full {
@@ -802,16 +876,15 @@ they don't receive any valid identity an
 access groups (even ones with \f(CW\*(C`users: *\*(C'\fR).  Such users receive nothing
 but authentication-required responses from nnrpd until they authenticate.
 .PP
-If they then later authenticate, the username and password are checked
-first by running \fBckpasswd\fR with the \fB\-d\fR option for an external dbm
-file of encrypted passwords, and then with the \fB\-s\fR option to check the
-shadow password database (note that this option may require ckpasswd to
-be setgid to a shadow group, and there are security considerations; see
-\&\fBckpasswd\fR\|(8) for details).  If both of those fail, the user will continue
-to have no identity; otherwise, an identity will be assigned (usually
-the supplied username, perhaps with a domain appended, although an
-authenticator technically can provide a completely different username
-for the identity), and the access group will match, giving full access.
+If they then later authenticate, the username and password are checked first
+by running \fBckpasswd\fR with the \fB\-f\fR option for an external file of encrypted
+passwords, and then uses \s-1PAM\s0 (if \s-1INN\s0 was built with \s-1PAM\s0 support) to check
+the password (and if that fails, it tries to check the password against the
+password field returned by \fBgetpwnam\fR\|(3)).  If both of those fail, the user
+will continue to have no identity; otherwise, an identity will be assigned
+(usually the supplied username, perhaps with a domain appended, although an
+authenticator technically can provide a completely different username for the
+identity), and the access group will match, giving full access.
 .PP
 It may be educational to consider how to combine the above examples;
 general groups always go first.  The order of the auth groups actually
@@ -829,7 +902,7 @@ password-restricted.
 .Vb 5
 \&    auth "example.com" {
 \&        hosts: "*.example.com"
-\&        auth: "ckpasswd \-d <pathdb in inn.conf>/newsusers"
+\&        auth: "ckpasswd \-f <pathdb in inn.conf>/newsusers"
 \&        default: "anonymous"
 \&    }
 \&
@@ -876,7 +949,7 @@ cannot.
 \&    auth shell {
 \&        hosts: *.shell.example.com
 \&        res: ident
-\&        auth: "ckpasswd \-s"
+\&        auth: ckpasswd
 \&        default: <FAIL>
 \&        default\-domain: shell.example.com
 \&    }
@@ -1006,9 +1079,7 @@ tunnel), use the localaddress: parameter
 .IX Header "HISTORY"
 Written by Aidan Cully <aidan@panix.com> for InterNetNews.  Substantially
 expanded by Russ Allbery <eagle@eyrie.org>.
-.PP
-\&\f(CW$Id:\fR readers.conf.pod 10283 2018\-05\-14 12:43:05Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
-\&\fBauth_krb5\fR\|(8), \fBckpasswd\fR\|(8), \fBinn.conf\fR\|(5), \fBinnd\fR\|(8), \fBnewsfeeds\fR\|(5),
-\&\fBnnrpd\fR\|(8), \fBuwildmat\fR\|(3).
+\&\fBauth_krb5\fR\|(8), \fBckpasswd\fR\|(8), \fBinn.conf\fR\|(5), \fBinnd\fR\|(8), \fBlibinn_uwildmat\fR\|(3),
+\&\fBnewsfeeds\fR\|(5), \fBnnrpd\fR\|(8).
diff -Nurp inn-2.6.4/doc/man/rnews.1 inn-2.6.5/doc/man/rnews.1
--- inn-2.6.4/doc/man/rnews.1	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/rnews.1	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "RNEWS 1"
-.TH RNEWS 1 "2020-11-22" "INN 2.6.4" "InterNetNews Documentation"
+.TH RNEWS 1 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -152,6 +152,10 @@ injecting articles received from other s
 generally use \fBinews\fR\|(1) instead.  It is also used to process spooled
 messages created by, for example, \fBnnrpd\fR while \fBinnd\fR is not available.
 .PP
+If authentication credentials are present for the remote server in
+the \fIpasswd.nntp\fR file in \fIpathetc\fR, then \fBrnews\fR will use them to
+authenticate.
+.PP
 The message is read from \fIfile\fR if given, spooled files (with the \fB\-U\fR
 flag) or standard input if no file is given.  Articles are sent to
 the server given in the \fB\-r\fR or \fB\-S\fR command line options if given,
@@ -271,8 +275,7 @@ them.  (Neither can the rest of \s-1INN\
 .IX Header "HISTORY"
 Written by Rich \f(CW$alz\fR <rsalz@uunet.uu.net> for InterNetNews.  Rewritten in
 \&\s-1POD\s0 by Russ Allbery <eagle@eyrie.org>.
-.PP
-\&\f(CW$Id:\fR rnews.pod 10382 2020\-05\-24 10:24:37Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
-\&\fBbzip2\fR\|(1), \fBcompress\fR\|(1), \fBgzip\fR\|(1), \fBinn.conf\fR\|(5), \fBinnd\fR\|(8), \fBnnrpd\fR\|(8).
+\&\fBbzip2\fR\|(1), \fBcompress\fR\|(1), \fBgzip\fR\|(1), \fBinn.conf\fR\|(5), \fBinnd\fR\|(8), \fBnnrpd\fR\|(8),
+\&\fBpasswd.nntp\fR\|(5).
diff -Nurp inn-2.6.4/doc/man/scanlogs.8 inn-2.6.5/doc/man/scanlogs.8
--- inn-2.6.4/doc/man/scanlogs.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/scanlogs.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "SCANLOGS 8"
-.TH SCANLOGS 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH SCANLOGS 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -185,8 +185,6 @@ See \fBnewslog\fR\|(5) for the list of l
 .IX Header "HISTORY"
 Written by Landon Curt Noll <chongo@toad.com> and Rich \f(CW$alz\fR
 <rsalz@uunet.uu.net> for InterNetNews.  Converted to \s-1POD\s0 by Julien Elie.
-.PP
-\&\f(CW$Id:\fR scanlogs.pod 9903 2015\-06\-20 17:20:46Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBinn.conf\fR\|(5), \fBinnreport\fR\|(8), \fBnews.daily\fR\|(8), \fBnewslog\fR\|(5), \fBshlock\fR\|(1),
diff -Nurp inn-2.6.4/doc/man/scanspool.8 inn-2.6.5/doc/man/scanspool.8
--- inn-2.6.4/doc/man/scanspool.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/scanspool.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "SCANSPOOL 8"
-.TH SCANSPOOL 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH SCANSPOOL 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -255,8 +255,6 @@ Continuation lines are not taken into ac
 .PP
 This manual page was written by Florian Schlichting, largely based on
 comments in the script.
-.PP
-\&\f(CW$Id:\fR scanspool.pod 9301 2011\-08\-04 21:09:11Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBactive\fR\|(5).
diff -Nurp inn-2.6.4/doc/man/send-ihave.8 inn-2.6.5/doc/man/send-ihave.8
--- inn-2.6.4/doc/man/send-ihave.8	1970-01-01 01:00:00.000000000 +0100
+++ inn-2.6.5/doc/man/send-ihave.8	2022-02-18 20:36:57.000000000 +0100
@@ -0,0 +1,253 @@
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+.    ds C`
+.    ds C'
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\"
+.\" If the F register is >0, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
+..
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+.    if \nF \{\
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
+..
+.        if !\nF==2 \{\
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
+.\}
+.rr rF
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "SEND-IHAVE 8"
+.TH SEND-IHAVE 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+send\-ihave \- Send ihave control messages to remote sites
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+\&\fBsend-ihave\fR [\fB\-d\fR] \fIsitename\fR[\fB:\fR\fIhostname\fR]
+[\fIsitename\fR[\fB:\fR\fIhostname\fR] ...]
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+Using \fBsend-ihave\fR is discouraged; the ihave and sendme control messages
+implement a predecessor of the \s-1NNTP\s0 protocol, and are now largely obsolete on
+the Internet but still see use in conjunction with some transport protocols
+such as \s-1UUCP.\s0
+.PP
+In case you really need using ihave and sendme control messages, and follow
+these instructions to set them up, please inform the \s-1INN\s0 maintainers of any
+documentation improvements that would have made the installation easier,
+notably missing or unclear steps.
+.PP
+The basic idea behind the ihave and sendme control messages is that you tell
+your \s-1UUCP\s0 peers what articles you have available via ihave control messages,
+and you respond with a sendme control message for the articles that you want.
+.PP
+\&\fBsend-ihave\fR processes the batch files written by \fBinnd\fR to send ihave
+control messages to remote \s-1NNTP\s0 sites.  The sites to be fed are specified
+by giving \f(CW\*(C`sitename:hostname\*(C'\fR pairs on the command line.  The \fIsitename\fR
+is the label the site has in the \fInewsfeeds\fR file, without its \f(CW\*(C`.ihave\*(C'\fR
+suffix.  The \fIhostname\fR is the real hostname of the remote site, a \s-1FQDN\s0
+(Fully Qualified Domain Name).  Normally, the \fIsitename\fR and the \fIhostname\fR
+are the same, and as such don't have to be specified as \f(CW\*(C`sitename:hostname\*(C'\fR
+pairs but just as \f(CW\*(C`sitename\*(C'\fR.
+.PP
+\&\fBsend-ihave\fR encapsulates Message-IDs in an ihave control message and uses
+\&\fBinews\fR to send the control message to a \f(CW\*(C`to.hostname\*(C'\fR pseudo-newsgroup.
+.PP
+The batch file generated by \fBsend-ihave\fR for a given site is named
+\&\fIsitename.ihave\fR in the \fIpathoutgoing\fR directory.  To prevent batch file
+corruption, \fBshlock\fR\|(1) is used ensure these files are not processed by two
+running instances in parallel.
+.PP
+For instance, to generate ihave control messages for \fInews.server.com\fR
+when receiving articles in the comp.* hierarchy, just add the following
+line in your \fInewsfeeds\fR file (and reload it):
+.PP
+.Vb 1
+\&    news.server.com.ihave:comp.*:Tf,Wm:
+.Ve
+.PP
+(Note that if you send \f(CW\*(C`*\*(C'\fR to \f(CW\*(C`news.server.com\*(C'\fR, you should add \f(CW\*(C`@to,@to.*\*(C'\fR
+to the end of the newsgroup pattern so that the ihave control message
+generated by \fBsend-ihave\fR isn't, itself, included in the list of articles
+in an ihave control message.  You may also want to add that pattern to
+the end of any entry processing control articles, like \fBcontrolchan\fR,
+or being fed a \f(CW\*(C`*\*(C'\fR pattern.)
+.PP
+Then, periodically run out of \fBcron\fR\|(1) the following command:
+.PP
+.Vb 1
+\&    send\-ihave news.server.com
+.Ve
+.PP
+\&\fBsend-ihave\fR will then post to the \f(CW\*(C`to.news.server.com\*(C'\fR pseudo-newsgroup
+an ihave control article containing a list of Message-IDs.  Several control
+articles may be posted, each one containing up to 1000 Message-IDs.
+.PP
+Make sure the \f(CW\*(C`to.news.server.com\*(C'\fR pseudo-newsgroup exists on your server (or
+the \f(CW\*(C`to\*(C'\fR pseudo-newsgroup if \fImergetogroups\fR is set to true in \fIinn.conf\fR),
+and that ihave control articles are not filtered (the default Cleanfeed
+configuration rejects them).  These control articles will be filed in the
+\&\f(CW\*(C`control\*(C'\fR pseudo-newsgroup (or \f(CW\*(C`control.ihave\*(C'\fR if it exists), or \f(CW\*(C`to\*(C'\fR
+if \fImergetogroups\fR is set to true.
+.PP
+You now have to propagate them with any method you want to the remote server.
+You probably already had one set up, in which case you only have to add
+the \f(CW\*(C`to.news.server.com\*(C'\fR newsgroup in the list of groups to feed it.
+(See how \fBsend\-uucp\fR\|(8) works to set up a \s-1UUCP\s0 feed.)
+.PP
+Besides sending ihave control messages, your news server needs processing the
+sendme control messages it receives from remote peers.  You have to add a
+\&\f(CW\*(C`sendme\*(C'\fR entry in \fIcontrol.ctl.local\fR with a \fBdoit\fR action to allow the
+processing of these messages matching a given From address.  \fBcontrolchan\fR
+will then generate a batch file named \fIpathname.work\fR in \fIpathoutgoing\fR,
+containing a list of storage tokens (\fIpathname\fR is taken from the Path header
+field body or the \s-1IP\s0 address of the remote peer, depending on the value
+of \fIlogipaddr\fR in \fIinn.conf\fR).  Finally, you'll have to set up \fBbatcher\fR\|(8)
+or \fBsend\-uucp\fR\|(8) to send the news batches to your remote peers.
+.PP
+Similarly, your news server needs processing the ihave control messages it
+receives from remote peers.  This step is the easiest to do.  Just add an
+\&\f(CW\*(C`ihave\*(C'\fR entry in \fIcontrol.ctl.local\fR like the one you added for \f(CW\*(C`sendme\*(C'\fR.
+\&\fBcontrolchan\fR will process these ihave control messages, and generate a
+sendme control article for each article present in the ihave control message
+but not in your local news server.  These sendme control articles are posted
+to the \f(CW\*(C`to.pathname\*(C'\fR pseudo-newsgroup, and will be propagated as described
+before.  (Note that there may be two different \f(CW\*(C`to\*(C'\fR groups to create because
+the \fIsitename\fR used in \fInewsfeeds\fR may not be the same as \fIpathname\fR.)
+.PP
+Beware that the ihave and sendme control messages are not signed.  You should
+enforce restrictions on who can send articles to \f(CW\*(C`to.*\*(C'\fR groups, either
+via \fIreaders.conf\fR or special rules in filter hooks, and on the \f(CW\*(C`ihave\*(C'\fR
+and \f(CW\*(C`sendme\*(C'\fR lines in \fIcontrol.ctl.local\fR.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+.IP "\fB\-d\fR" 4
+.IX Item "-d"
+The \fB\-d\fR flag causes \fBsend-ihave\fR to send output to stdout rather than
+the \fIsend\-ihave.log\fR log file in \fIpathlog\fR.
+.SH "HISTORY"
+.IX Header "HISTORY"
+Rewritten into \s-1POD\s0 by Julien Elie.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+\&\fBbatcher\fR\|(8), \fBcontrolchan\fR\|(8), \fBcontrol.ctl\fR\|(5), \fBinews\fR\|(1), \fBnewsfeeds\fR\|(5),
+\&\fBsend\-uucp\fR\|(8).
diff -Nurp inn-2.6.4/doc/man/send-nntp.8 inn-2.6.5/doc/man/send-nntp.8
--- inn-2.6.4/doc/man/send-nntp.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/send-nntp.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,84 +1,182 @@
-.TH SEND-UUCP 8
-.SH NAME
-send-nntp, send-ihave \- send Usenet articles to remote site
-.SH SYNOPSIS
-.B send-nntp
-[
-.B \-d
-]
-.B sitename:hostname | sitename
-[
-.B sitename:hostname | sitename ..
-]
-.PP
-.B send-ihave
-[
-.B \-d
-]
-.B sitename:hostname | sitename
-[
-.B sitename:hostname | sitename ..
-]
-.SH DESCRIPTION
-The send-* utilities are scripts that process the batch files written
-by
-.IR innd (8)
-to send Usenet articles to a remote NNTP site.
-.PP
-The sites to be fed may be specified by giving
-.I sitename
-.I hostname
-pairs on the command line.
-.PP
-The
-.I sitename
-is the label the site has in the
-.I newsfeeds
-file, the
-.I hostname
-is the real hostname of the remote site, a FQDN (Fully Qualified Domain Name).
-Normally, the
-.I sitename
-and the
-.I hostname
-are the same, and as such don't have to be specified as sitename:hostname
-pairs but just as a sitename.
-.PP
-.I send-nntp
-starts an innxmit to send the articles to the remote site.
-.PP
-.I send-ihave
-encapsulates the articles in an
-.I ihave
-control message and uses
-.I inews
-to send the articles to a
-.I to.sitename
-pseudo-group. Using
-.I send-ihave
-is discouraged, nobody uses it anymore and even the author of this manpage
-is unsure as to how it actually works or used to work.
-.PP
-.I send-*
-expect that the batchfile for a site is named
-.IR <pathoutgoing\ in\ inn.conf>/sitename .
-To prevent batchfile corruption,
-.IR shlock (1)
-is used to ``lock'' these files.
-.SH OPTIONS
-.TP
-.B "\-d"
-The ``\-d'' flag causes
-.I nntpsend
-to send output to stdout rather than the log file
-.IR <pathlog\ in\ inn.conf>/<program-name>.log .
-.SH NOTES
-You should probably not use send-nntp, but
-.IR innfeed ,
-or if that is not possible,
-.IR nntpsend .
-.PP
-The usual flags for a batch file for send-nntp are ``\fBTf,Wfm\fP''.
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+.    ds C`
+.    ds C'
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\"
+.\" If the F register is >0, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
+..
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+.    if \nF \{\
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
+..
+.        if !\nF==2 \{\
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
+.\}
+.rr rF
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "SEND-NNTP 8"
+.TH SEND-NNTP 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+send\-nntp \- Send Usenet articles to remote sites
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+\&\fBsend-nntp\fR [\fB\-d\fR] \fIsitename\fR[\fB:\fR[\fIport\fR\fB@\fR]\fIhostname\fR]
+[\fIsitename\fR[\fB:\fR[\fIport\fR\fB@\fR]\fIhostname\fR] ...]
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\fBsend-nntp\fR processes the batch files written by \fBinnd\fR to send Usenet
+articles to remote \s-1NNTP\s0 sites.  The sites to be fed are specified by
+giving \f(CW\*(C`sitename:hostname\*(C'\fR pairs on the command line.  The \fIsitename\fR
+is the label the site has in the \fInewsfeeds\fR file, the \fIhostname\fR is
+the real hostname of the remote site, a \s-1FQDN\s0 (Fully Qualified Domain Name).
+Normally, the \fIsitename\fR and the \fIhostname\fR are the same, and as such don't
+have to be specified as \f(CW\*(C`sitename:hostname\*(C'\fR pairs but just as \f(CW\*(C`sitename\*(C'\fR.
+.PP
+\&\fBsend-nntp\fR starts \fBinnxmit\fR to send the articles to remote sites.
+By default, \s-1NNTP\s0 port \f(CW119\fR is used to connect to remote sites.  In case
+another port should be used, it has to be prepended to \fIhostname\fR in a
+syntax like \f(CW\*(C`sitename:port@hostname\*(C'\fR.
+.PP
+The batch files generated by \fBsend-nntp\fR for a given site is named
+\&\fIsitename\fR in the \fIpathoutgoing\fR directory.  To prevent batch file
+corruption, \fBshlock\fR\|(1) is used ensure these files are not processed by two
+running instances in parallel.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+.IP "\fB\-d\fR" 4
+.IX Item "-d"
+The \fB\-d\fR flag causes \fBsend-nntp\fR to send output to stdout rather than
+the \fIsend\-nntp.log\fR log files in \fIpathlog\fR.
+.SH "NOTES"
+.IX Header "NOTES"
+You should probably not use \fBsend-nntp\fR, but \fBinnfeed\fR, or if that is not
+possible, \fBnntpsend\fR.  The usual flags for a batch file for \fBsend-nntp\fR
+are \f(CW\*(C`Tf,Wfm\*(C'\fR in \fInewsfeeds\fR.
+.SH "HISTORY"
+.IX Header "HISTORY"
+Rewritten into \s-1POD\s0 by Julien Elie.
 .SH "SEE ALSO"
-newsfeeds(5),
-nntpsend(8)
+.IX Header "SEE ALSO"
+\&\fBinnxmit\fR\|(8), \fBnewsfeeds\fR\|(5), \fBnntpsend\fR\|(8).
diff -Nurp inn-2.6.4/doc/man/send-uucp.8 inn-2.6.5/doc/man/send-uucp.8
--- inn-2.6.4/doc/man/send-uucp.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/send-uucp.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "SEND-UUCP 8"
-.TH SEND-UUCP 8 "2016-11-06" "INN 2.6.4" "InterNetNews Documentation"
+.TH SEND-UUCP 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -157,7 +157,7 @@ are over dial-up connections).
 .IX Header "OPTIONS"
 Any arguments provided to the program are interpreted as a list of sites
 specified in \fIsend\-uucp.cf\fR for which batches should be generated.  If no
-arguments are supplied then batches will be generated for all sites listed
+arguments are supplied, then batches will be generated for all sites listed
 in that configuration file.
 .SH "CONFIGURATION"
 .IX Header "CONFIGURATION"
@@ -240,6 +240,167 @@ is kept between 4\ \s-1KB\s0 and 1\ \s-1
 \&        :*,!junk,!control,!control.*/!foo\e
 \&        :Tf,Wnb,B4096/1024:
 .Ve
+.SH "SETTING UP UUCP FEEDS"
+.IX Header "SETTING UP UUCP FEEDS"
+Here are the steps to follow to set up a \s-1UUCP\s0 feed over \s-1SSH\s0 between
+two news servers, using the \s-1UUCP\s0 implementation available in Debian
+as the \f(CW\*(C`uucp\*(C'\fR package.  The mechanisms described below should be
+transposed if you use another \s-1UUCP\s0 implementation.  (And if you do,
+please inform the \s-1INN\s0 maintainers about how to set up a feed with another
+\&\s-1UUCP\s0 implementation, so that it can be added to this documentation.)
+.IP "1." 4
+First of all, make sure \fBrnews\fR is correctly installed setuid \f(CW\*(C`news\*(C'\fR,
+owned by group \f(CW\*(C`uucp\*(C'\fR, and mode \f(CW4550\fR.  This will allow the \s-1UUCP\s0
+subsystem to run \fBrnews\fR to process \s-1UUCP\s0 batches of news articles.
+The \f(CW\*(C`configure\*(C'\fR flag \fB\-\-enable\-uucp\-rnews\fR takes care of it when
+installing \s-1INN.\s0  Otherwise, you'll have to manually change the
+permissions on \fBrnews\fR.
+.IP "2." 4
+Install the \f(CW\*(C`uucp\*(C'\fR package.  It will notably provide \fBuucico\fR\|(8)
+and \fBuux\fR\|(1).
+.IP "3." 4
+Configure in \fI/etc/uucp/Poll\fR the remote news servers to poll, and
+the hours during which they are to be polled.  For instance, if you
+send to \f(CW\*(C`news.server.to.feed\*(C'\fR \s-1UUCP\s0 batches every 4 hours, you can use:
+.Sp
+.Vb 2
+\&    schedule news.server.to.feed 00
+\&    poll news.server.to.feed 00 04 08 12 16 20
+.Ve
+.Sp
+If sending is hourly, just list all the hours.
+.IP "4." 4
+Configure in \fI/etc/uucp/call\fR the credentials (usernames and passwords)
+to use when authenticating against remote news servers, one per line.
+For instance:
+.Sp
+.Vb 1
+\&    news.server.to.feed login password
+.Ve
+.IP "5." 4
+Configure in \fI/etc/uucp/config\fR the \s-1UUCP\s0 name of the local news server.
+For instance:
+.Sp
+.Vb 1
+\&    nodename my.news.server
+.Ve
+.IP "6." 4
+Check that \fI/etc/uucp/expire\fR fits your needs as for the number of days
+batches are retained as well as the configuration of daily reports.
+Default values are normally fine, though you may want to receive a
+daily report only if unusual things happen (and in that case, just set
+\&\f(CW$important_only\fR to \f(CW1\fR).
+.IP "7." 4
+Configure in \fI/etc/uucp/passwd\fR the credentials (usernames and passwords
+separated by a tabulation) remote news servers use when authenticating
+against the local news server, one per line.  For instance:
+.Sp
+.Vb 1
+\&    login<TAB>password
+.Ve
+.IP "8." 4
+Configure in \fI/etc/uucp/sys\fR how remote news servers connect to the
+local news server.  A typical entry to set an \s-1SSH\s0 connection is the
+following one where \fIpathbin\fR should be changed to the real path
+to \fBrnews\fR:
+.Sp
+.Vb 9
+\&    system news.server.to.feed
+\&    call\-login *
+\&    call\-password *
+\&    commands <pathbin>/rnews
+\&    time any
+\&    chat "" \ed\ed\er\ec ogin: \ed\eL word: \eP
+\&    chat\-timeout 120
+\&    protocol i
+\&    port ssh.news.server.to.feed
+.Ve
+.IP "9." 4
+Configure in \fI/etc/uucp/port\fR how to connect to remote news servers.
+A typical entry to set an \s-1SSH\s0 connection using a private key is:
+.Sp
+.Vb 5
+\&    port ssh.news.server.to.feed
+\&    type pipe
+\&    command /usr/bin/ssh \-a \-x \-q \-i <key_file> \-l uucp news.server.to.feed
+\&    reliable true
+\&    protocol etyig
+.Ve
+.Sp
+where \fIkey_file\fR is the private key to use for the \s-1SSH\s0 connection,
+like for instance \fI/var/spool/uucp/.ssh/id_private_key\fR.
+.IP "10." 4
+Make sure the administrators of remote news servers have added the
+public key related to \fIid_private_key\fR for connections to the \f(CW\*(C`uucp\*(C'\fR
+user of the remote news servers.
+.IP "11." 4
+Supposing the home directory of the \f(CW\*(C`uucp\*(C'\fR user is \fI/var/spool/uucp\fR,
+you need to configure the \s-1SSH\s0 keys in the \fI.ssh\fR subdirectory.  First,
+add the public keys of all remote news servers in \fIauthorized_keys\fR.
+A typical entry is:
+.Sp
+.Vb 1
+\&    no\-port\-forwarding,no\-X11\-forwarding,no\-agent\-forwarding,command="/usr/sbin/uucico \-l",from="news.server.to.feed" ssh\-rsa xxxyyyzzz uucp@news.server.to.feed
+.Ve
+.Sp
+This ensures the \s-1SSH\s0 connection will not be used for another goal than
+exchanging \s-1UUCP\s0 batches.
+.IP "12." 4
+Make sure \fIid_private_key\fR is correctly present, as set in
+\&\fI/etc/uucp/port\fR, and only readable by the \f(CW\*(C`uucp\*(C'\fR user.
+.IP "13." 4
+Manually run as the \f(CW\*(C`uucp\*(C'\fR user the command set in \fI/etc/uucp/port\fR
+so as to create the \fIknown_hosts\fR file so as to make sure the \s-1SSH\s0
+setting is fine.
+.Sp
+.Vb 1
+\&   /usr/bin/ssh \-a \-x \-q \-i <key_file> \-l uucp news.server.to.feed
+.Ve
+.IP "14." 4
+Parameter the feed to send to the remote servers.  A typical entry in
+\&\fInewsfeeds\fR to generate batches in \fIpathoutgoing\fR is:
+.Sp
+.Vb 1
+\&    news.server.to.feed/pathname:*:Tf,Wnb,B4096/1024:
+.Ve
+.IP "15." 4
+Set up the compression method, batch sizes and when to generate them
+in \fIsend\-uucp.cf\fR located in \fIpathetc\fR, as described earlier in this
+documentation.
+.Sp
+.Vb 1
+\&    news.server.to.feed   bzip2      1048576   3,7,11,15,19,23
+.Ve
+.IP "16." 4
+Check that \fBsend-uucp\fR is started hourly in crontab by the \f(CW\*(C`news\*(C'\fR user.
+For instance in \fI/etc/cron.d/inn2\fR:
+.Sp
+.Vb 1
+\&    52 * * * * news <pathbin>/send\-uucp
+.Ve
+.Sp
+It can be useful to set up a different launch time than your remote
+servers.  For instance, if you generate batches every hour at minute 52,
+a remote peer may do the same at minute 22.  This way, you may exchange
+articles more frequently, depending on when each other connects.
+.IP "17." 4
+Check that \s-1UUCP\s0 programs are automatically started in crontab (usually,
+\&\fBuudemon.hr\fR is called hourly in \fI/etc/cron.d/uucp\fR to poll remote
+news servers, and \fBuudemon.day\fR daily in \fI/etc/cron.daily/uucp\fR).
+.Sp
+Like for \fBsend-uucp\fR, adjust the launch time to maximize the number
+and the freshness of batches to exchanges.
+.IP "18." 4
+Check the logs in \fI/var/log/uucp\fR to ensure everything works fine,
+both polling and sending.
+.Sp
+You will see that \fBsend-uucp\fR prepares \fBrnews\fR batches named like
+\&\fID.0I8Y\fR, that are queued by \fBuux\fR.  When \fBuucico\fR is afterwards
+started from cron to transfer these batches, \fBuucico\fR takes available
+batches from the remote sites at the same time.  These received batches
+are then processed by \fBuuxqt\fR which calls \fBrnews\fR to inject them.
+.Sp
+That's all!
 .SH "FILES"
 .IX Header "FILES"
 .IP "\fIpathbin\fR/send\-uucp" 4
@@ -248,6 +409,9 @@ The Perl script itself used to create ne
 .IP "\fIpathetc\fR/send\-uucp.cf" 4
 .IX Item "pathetc/send-uucp.cf"
 The configuration file which specifies a list of sites to be processed.
+.IP "\fIpathlog\fR/send\-uucp.log" 4
+.IX Item "pathlog/send-uucp.log"
+The log file used if the syslog facility is not available.
 .SH "HISTORY"
 .IX Header "HISTORY"
 This program was originally written by Edvard Tuinder <ed@elm.net> and then
diff -Nurp inn-2.6.4/doc/man/sendinpaths.8 inn-2.6.5/doc/man/sendinpaths.8
--- inn-2.6.4/doc/man/sendinpaths.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/sendinpaths.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "SENDINPATHS 8"
-.TH SENDINPATHS 8 "2018-05-14" "INN 2.6.4" "InterNetNews Documentation"
+.TH SENDINPATHS 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -205,8 +205,6 @@ for two addresses:
 .SH "HISTORY"
 .IX Header "HISTORY"
 \&\fBsendinpaths\fR was written by Olaf Titz <olaf@bigred.inka.de>.
-.PP
-\&\f(CW$Id:\fR sendinpaths.pod 10283 2018\-05\-14 12:43:05Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBninpaths\fR\|(8).
diff -Nurp inn-2.6.4/doc/man/shlock.1 inn-2.6.5/doc/man/shlock.1
--- inn-2.6.4/doc/man/shlock.1	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/shlock.1	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "SHLOCK 1"
-.TH SHLOCK 1 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH SHLOCK 1 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -200,8 +200,6 @@ Written by Rich \f(CW$alz\fR <rsalz@uune
 a description of \s-1HDB UUCP\s0 locking given by Peter Honeyman, and
 improved by Berend Reitsma to solve a race condition.
 Converted to \s-1POD\s0 by Julien Elie.
-.PP
-\&\f(CW$Id:\fR shlock.pod 9303 2011\-08\-04 22:09:57Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBINN::Utils::Shlock\fR\|(3pm).
diff -Nurp inn-2.6.4/doc/man/shrinkfile.1 inn-2.6.5/doc/man/shrinkfile.1
--- inn-2.6.4/doc/man/shrinkfile.1	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/shrinkfile.1	2022-02-18 20:36:57.000000000 +0100
@@ -1,101 +1,224 @@
-.\" $Revision: 5909 $
-.TH SHRINKFILE 1
-.SH NAME
-shrinkfile \- shrink a file on a line boundary
-.SH SYNOPSIS
-.B shrinkfile
-[
-.B \-n
-]
-[
-.BI \-m " maxsize"
-]
-[
-.BI \-s " size"
-]
-[
-.B \-v
-]
-.I file...
-.SH DESCRIPTION
-The
-.I shrinkfile
-program shrinks files to a given 
-.I size
-if the size is larger than
-.IR maxsize ,
-preserving the data at the end of the file.
-Truncation is performed on line boundaries, where a line is a series
-of bytes ending with a newline, ``\en''.
-There is no line length restriction and files may contain any binary data.
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+.    ds C`
+.    ds C'
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\"
+.\" If the F register is >0, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
+..
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+.    if \nF \{\
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
+..
+.        if !\nF==2 \{\
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
+.\}
+.rr rF
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "SHRINKFILE 1"
+.TH SHRINKFILE 1 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+shrinkfile \- Shrink files on line boundaries
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+\&\fBshrinkfile\fR [\fB\-nv\fR] [\fB\-m\fR \fImaxsize\fR] [\fB\-s\fR \fIsize\fR] \fIfile\fR [\fIfile\fR
+\&...]
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+The \fBshrinkfile\fR program shrinks files to at most a given \fIsize\fR when their
+size is larger than \fImaxsize\fR, preserving the data at the end of the file.
+Truncation is performed on line boundaries, where a line is a series of
+bytes ending with a newline (\f(CW\*(C`\en\*(C'\fR).  There is no line length restriction
+and files may contain any binary data.
+.PP
+If the first line is longer than the absolute value of \fIsize\fR, the file
+will be truncated to zero length.
 .PP
-Temporary files are created in the
-.I <pathtmp in inn.conf>
+The maximum file size \fBshrinkfile\fR can handle is 2,147,483,647 bytes.
+.PP
+Temporary files are created in the \fIpathtmp\fR directory as set in \fIinn.conf\fR.
+The \f(CW\*(C`TMPDIR\*(C'\fR environment variable may be used to specify a different
 directory.
-The ``TMPDIR'' environment variable may be used to specify a
-different directory.
 .PP
-A newline will be added to any non-empty file that does not end with a newline.
-The maximum file size will not be exceeded by this addition.
-.SH OPTIONS
-.TP
-.B \-s
-By default, 
-.I size
-is assumed to be zero and files are truncated to zero bytes.
-By default,
-.I maxsize
-is the same as 
-.IR size .
-If
-.I maxsize
-is less than
-.IR size ,
-.I maxsize
-is reset to
-.IR size .
-The ``\fB\-s\fP'' flag may be used to change the truncation size.
-Because the program truncates only on line boundaries, the final size
-may be smaller then the specified truncation size.
-The
-.I size
-and
-.I maxsize
-parameter may end with a ``k'', ``m'', or ``g'', indicating
-kilobyte (1024), megabyte (1048576) or gigabyte (1073741824) lengths.
-Uppercase letters are also allowed.
-The maximum file size is 2147483647 bytes.
-.TP
-.B \-v
-If the ``\fB\-v\fP'' flag is used, then
-.I shrinkfile
-will print a status line if a file was shrunk.
-.TP
-.B \-n
-If the ``\fB\-n\fP'' flag is used, then
-.I shrinkfile
-will exit 0 if any file is larger than
-.I maxsize
-and exit 1 otherwise.
-No files will be altered.
-.SH EXAMPLES
+A newline will be added to any non-empty file that does not end with a
+newline, if naturally the resulting file size does not exceed \fIsize\fR
+by this addition.
 .PP
+This program is currently used by only \fBnntpsend\fR\|(8).
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+.IP "\fB\-m\fR \fImaxsize\fR" 4
+.IX Item "-m maxsize"
+This option sets the maximum size allowed before truncation occurs.
+.Sp
+By default, \fImaxsize\fR is the same as \fIsize\fR (as set with the \fB\-s\fR flag).
+If \fImaxsize\fR is less than \fIsize\fR, \fImaxsize\fR is reset to \fIsize\fR.
+.Sp
+This parameter may end with a \f(CW\*(C`k\*(C'\fR, \f(CW\*(C`m\*(C'\fR or \f(CW\*(C`g\*(C'\fR, indicating kilobyte (1,024
+bytes), megabyte (1,048,576 bytes) or gigabyte (1,073,741,824 bytes) lengths.
+Uppercase letters are also allowed.
+.IP "\fB\-n\fR" 4
+.IX Item "-n"
+This flag is used to determine if any file is too large.  No files will be
+altered in this mode.
+.Sp
+Exits with status code \f(CW0\fR if any file is larger than \fImaxsize\fR (as set
+with the \fB\-m\fR flag), and exits with status code \f(CW1\fR otherwise.
+.IP "\fB\-s\fR \fIsize\fR" 4
+.IX Item "-s size"
+By default, \fIsize\fR is assumed to be zero and files are truncated to zero
+bytes.  This flag may be used to change the truncation size.  Because the
+program truncates only on line boundaries, the final size may be smaller
+than the specified truncation size.
+.Sp
+This parameter may end with a \f(CW\*(C`k\*(C'\fR, \f(CW\*(C`m\*(C'\fR or \f(CW\*(C`g\*(C'\fR, indicating kilobyte (1,024
+bytes), megabyte (1,048,576 bytes) or gigabyte (1,073,741,824 bytes) lengths.
+Uppercase letters are also allowed.
+.IP "\fB\-v\fR" 4
+.IX Item "-v"
+Prints to standard output a status line if a file was shrunk.
+.SH "EXAMPLES"
+.IX Header "EXAMPLES"
 Example usage:
-.sp 1
-.RS
-.nf
-shrinkfile -s 4m curds
-shrinkfile -s 1g -v whey
-shrinkfile -s 500k -m 4m -v curds whey
-if shrinkfile -n -s 100m whey; then echo whey is way too big; fi
-.fi
-.RE
 .PP
-.SH HISTORY
-Written by Landon Curt Noll <chongo@toad.com> and Rich $alz
-<rsalz@uunet.uu.net> for InterNetNews.
-.de R$
-This is revision \\$3, dated \\$4.
-..
+.Vb 4
+\&    shrinkfile \-s 4m curds
+\&    shrinkfile \-s 1g \-v whey
+\&    shrinkfile \-s 500k \-m 4m \-v curds whey
+\&    if shrinkfile \-n \-s 100m whey; then echo "whey is way too big"; fi
+.Ve
+.PP
+The first command shrinks \fIcurds\fR to 4\ \s-1MB\s0 if bigger than this size.
+The second command shrinks \fIwhey\fR to 1\ \s-1GB\s0 and outputs a log line if the
+file is bigger than this size.  The third command shrinks both \fIcurds\fR and
+\&\fIwhey\fR to 500\ kB if bigger than 4\ \s-1MB,\s0 and outputs a log line for the
+files it has shrunk.  The fourth command just prints a sentence if \f(CW\*(C`whey\*(C'\fR
+is bigger than 100\ \s-1MB,\s0 without shrinking it.
+.SH "HISTORY"
+.IX Header "HISTORY"
+Written by Landon Curt Noll <chongo@toad.com> and Rich \f(CW$alz\fR
+<rsalz@uunet.uu.net> for InterNetNews.  Rewritten into \s-1POD\s0 by Julien Elie.
 .SH "SEE ALSO"
-inn.conf(5)
+.IX Header "SEE ALSO"
+\&\fBnntpsend\fR\|(8).
diff -Nurp inn-2.6.4/doc/man/simpleftp.1 inn-2.6.5/doc/man/simpleftp.1
--- inn-2.6.4/doc/man/simpleftp.1	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/simpleftp.1	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "SIMPLEFTP 1"
-.TH SIMPLEFTP 1 "2016-11-06" "INN 2.6.4" "InterNetNews Documentation"
+.TH SIMPLEFTP 1 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -173,8 +173,6 @@ with the same name in the local director
 .IX Header "HISTORY"
 Tossed off by David C Lawrence <tale@isc.org> for InterNetNews.
 Rewritten to use \f(CW\*(C`Net::FTP\*(C'\fR by Julien Elie.
-.PP
-\&\f(CW$Id:\fR simpleftp.pod 10097 2016\-11\-04 22:19:07Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBactsync\fR\|(8).
diff -Nurp inn-2.6.4/doc/man/sm.1 inn-2.6.5/doc/man/sm.1
--- inn-2.6.4/doc/man/sm.1	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/sm.1	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "SM 1"
-.TH SM 1 "2020-11-22" "INN 2.6.4" "InterNetNews Documentation"
+.TH SM 1 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -236,8 +236,6 @@ succeeded, you should run \fBsm\fR on on
 .IX Header "HISTORY"
 Written by Katsuhiro Kondou <kondou@nec.co.jp> for InterNetNews.
 Rewritten in \s-1POD\s0 by Russ Allbery <eagle@eyrie.org>.
-.PP
-\&\f(CW$Id:\fR sm.pod 10405 2020\-11\-21 07:02:43Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBctlinnd\fR\|(8), \fBgrephistory\fR\|(1), \fBhistory\fR\|(5), \fBrnews\fR\|(1), \fBstorage.conf\fR\|(5).
diff -Nurp inn-2.6.4/doc/man/storage.conf.5 inn-2.6.5/doc/man/storage.conf.5
--- inn-2.6.4/doc/man/storage.conf.5	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/storage.conf.5	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "STORAGE.CONF 5"
-.TH STORAGE.CONF 5 "2018-01-28" "INN 2.6.4" "InterNetNews Documentation"
+.TH STORAGE.CONF 5 "2022-02-18" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -209,15 +209,17 @@ permanent (since it is used in storage t
 for instance numbered sequentially in \fIstorage.conf\fR.
 .IP "\fInewsgroups\fR: <wildmat>" 4
 .IX Item "newsgroups: <wildmat>"
-What newsgroups are stored using this storage method.  <wildmat> is a \fBuwildmat\fR\|(3)
-pattern which is matched against the newsgroups an article is posted to.
-If \fIstoreonxref\fR in \fIinn.conf\fR is true, this pattern will be matched against
-the newsgroup names in the Xref: header; otherwise, it will be matched against
-the newsgroup names in the Newsgroups: header (see \fBinn.conf\fR\|(5) for discussion
-of the differences between these possibilities).  Poison wildmat expressions
-(expressions starting with \f(CW\*(C`@\*(C'\fR) are allowed and can be used to exclude certain
-group patterns:  articles crossposted to poisoned newsgroups will not be stored
-using this storage method.  The <wildmat> pattern is matched in order.
+What newsgroups are stored using this storage method.  <wildmat> is a
+\&\fIuwildmat\fR pattern which is matched against the newsgroups an article
+is posted to.  If \fIstoreonxref\fR in \fIinn.conf\fR is true, this pattern
+will be matched against the newsgroup names in the Xref header field
+body; otherwise, it will be matched against the newsgroup names in the
+Newsgroups header field body (see \fBinn.conf\fR\|(5) for discussion of the
+differences between these possibilities).  Poison wildmat expressions
+(expressions starting with \f(CW\*(C`@\*(C'\fR) are allowed and can be used to exclude
+certain group patterns: articles crossposted to poisoned newsgroups
+will not be stored using this storage method.  The <wildmat> pattern
+is matched in order.
 .Sp
 There is no default newsgroups pattern; if an entry should match all
 newsgroups, use an explicit \f(CW\*(C`newsgroups: *\*(C'\fR.
@@ -482,9 +484,7 @@ should never expire or through the spool
 .IX Header "HISTORY"
 Written by Katsuhiro Kondou <kondou@nec.co.jp> for InterNetNews.  Rewritten
 into \s-1POD\s0 by Julien Elie.
-.PP
-\&\f(CW$Id:\fR storage.conf.pod 10230 2018\-01\-28 21:22:21Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBcycbuff.conf\fR\|(5), \fBexpire.ctl\fR\|(5), \fBexpireover\fR\|(8), \fBinn.conf\fR\|(5), \fBinnd\fR\|(8),
-\&\fBuwildmat\fR\|(3).
+\&\fBlibinn_uwildmat\fR\|(3).
diff -Nurp inn-2.6.4/doc/man/subscriptions.5 inn-2.6.5/doc/man/subscriptions.5
--- inn-2.6.4/doc/man/subscriptions.5	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/subscriptions.5	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "SUBSCRIPTIONS 5"
-.TH SUBSCRIPTIONS 5 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH SUBSCRIPTIONS 5 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -183,8 +183,6 @@ users group, one might want to list it f
 .SH "HISTORY"
 .IX Header "HISTORY"
 Written by Bettina Fink <laura@hydrophil.de> for InterNetNews.
-.PP
-\&\f(CW$Id:\fR subscriptions.pod 9137 2010\-10\-29 18:09:12Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBnnrpd\fR\|(8).
diff -Nurp inn-2.6.4/doc/man/tally.control.8 inn-2.6.5/doc/man/tally.control.8
--- inn-2.6.4/doc/man/tally.control.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/tally.control.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "TALLY.CONTROL 8"
-.TH TALLY.CONTROL 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH TALLY.CONTROL 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -179,8 +179,6 @@ An example of lines which can be found i
 Written by Landon Curt Noll <chongo@toad.com> and Rich \f(CW$alz\fR
 <rsalz@uunet.uu.net> for InterNetNews.  Rewritten and converted
 to \s-1POD\s0 by Julien Elie.
-.PP
-\&\f(CW$Id:\fR tally.control.pod 8357 2009\-02\-27 17:56:00Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBcontrol.ctl\fR\|(5), \fBnews.daily\fR\|(8), \fBnewslog\fR\|(5), \fBscanlogs\fR\|(8).
diff -Nurp inn-2.6.4/doc/man/tdx-util.8 inn-2.6.5/doc/man/tdx-util.8
--- inn-2.6.4/doc/man/tdx-util.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/tdx-util.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "TDX-UTIL 8"
-.TH TDX-UTIL 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH TDX-UTIL 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -361,8 +361,6 @@ using the tradspool article storage meth
 .SH "HISTORY"
 .IX Header "HISTORY"
 Written by Russ Allbery <eagle@eyrie.org> for InterNetNews.
-.PP
-\&\f(CW$Id:\fR tdx\-util.pod 9767 2014\-12\-07 21:13:43Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBmakehistory\fR\|(8), \fBnnrpd\fR\|(8).
diff -Nurp inn-2.6.4/doc/man/tinyleaf.8 inn-2.6.5/doc/man/tinyleaf.8
--- inn-2.6.4/doc/man/tinyleaf.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/tinyleaf.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "TINYLEAF 8"
-.TH TINYLEAF 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
+.TH TINYLEAF 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -226,8 +226,6 @@ them to the processor when starting up w
 .SH "HISTORY"
 .IX Header "HISTORY"
 Written by Russ Allbery <eagle@eyrie.org> for InterNetNews.
-.PP
-\&\f(CW$Id:\fR tinyleaf.pod 9767 2014\-12\-07 21:13:43Z iulius $
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 \&\fBhosts_access\fR\|(5), \fBinetd\fR\|(8), \fBtcpd\fR\|(8).
diff -Nurp inn-2.6.4/doc/man/tst.3 inn-2.6.5/doc/man/tst.3
--- inn-2.6.4/doc/man/tst.3	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/tst.3	1970-01-01 01:00:00.000000000 +0100
@@ -1,214 +0,0 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
-.\"
-.\" Standard preamble:
-.\" ========================================================================
-.de Sp \" Vertical space (when we can't use .PP)
-.if t .sp .5v
-.if n .sp
-..
-.de Vb \" Begin verbatim text
-.ft CW
-.nf
-.ne \\$1
-..
-.de Ve \" End verbatim text
-.ft R
-.fi
-..
-.\" Set up some character translations and predefined strings.  \*(-- will
-.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
-.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
-.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
-.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
-.\" nothing in troff, for use with C<>.
-.tr \(*W-
-.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
-.ie n \{\
-.    ds -- \(*W-
-.    ds PI pi
-.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
-.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
-.    ds L" ""
-.    ds R" ""
-.    ds C` ""
-.    ds C' ""
-'br\}
-.el\{\
-.    ds -- \|\(em\|
-.    ds PI \(*p
-.    ds L" ``
-.    ds R" ''
-.    ds C`
-.    ds C'
-'br\}
-.\"
-.\" Escape single quotes in literal strings from groff's Unicode transform.
-.ie \n(.g .ds Aq \(aq
-.el       .ds Aq '
-.\"
-.\" If the F register is >0, we'll generate index entries on stderr for
-.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
-.\" entries marked with X<> in POD.  Of course, you'll have to process the
-.\" output yourself in some meaningful fashion.
-.\"
-.\" Avoid warning from groff about undefined register 'F'.
-.de IX
-..
-.nr rF 0
-.if \n(.g .if rF .nr rF 1
-.if (\n(rF:(\n(.g==0)) \{\
-.    if \nF \{\
-.        de IX
-.        tm Index:\\$1\t\\n%\t"\\$2"
-..
-.        if !\nF==2 \{\
-.            nr % 0
-.            nr F 2
-.        \}
-.    \}
-.\}
-.rr rF
-.\"
-.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
-.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
-.    \" fudge factors for nroff and troff
-.if n \{\
-.    ds #H 0
-.    ds #V .8m
-.    ds #F .3m
-.    ds #[ \f1
-.    ds #] \fP
-.\}
-.if t \{\
-.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
-.    ds #V .6m
-.    ds #F 0
-.    ds #[ \&
-.    ds #] \&
-.\}
-.    \" simple accents for nroff and troff
-.if n \{\
-.    ds ' \&
-.    ds ` \&
-.    ds ^ \&
-.    ds , \&
-.    ds ~ ~
-.    ds /
-.\}
-.if t \{\
-.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
-.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
-.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
-.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
-.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
-.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
-.\}
-.    \" troff and (daisy-wheel) nroff accents
-.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
-.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
-.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
-.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
-.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
-.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
-.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
-.ds ae a\h'-(\w'a'u*4/10)'e
-.ds Ae A\h'-(\w'A'u*4/10)'E
-.    \" corrections for vroff
-.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
-.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
-.    \" for low resolution devices (crt and lpr)
-.if \n(.H>23 .if \n(.V>19 \
-\{\
-.    ds : e
-.    ds 8 ss
-.    ds o a
-.    ds d- d\h'-1'\(ga
-.    ds D- D\h'-1'\(hy
-.    ds th \o'bp'
-.    ds Th \o'LP'
-.    ds ae ae
-.    ds Ae AE
-.\}
-.rm #[ #] #H #V #F C
-.\" ========================================================================
-.\"
-.IX Title "tst 3"
-.TH tst 3 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation"
-.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
-.\" way too many mistakes in technical documents.
-.if n .ad l
-.nh
-.SH "NAME"
-tst \- ternary search trie functions
-.SH "SYNOPSIS"
-.IX Header "SYNOPSIS"
-.Vb 1
-\&    #include <inn/tst.h>
-\&
-\&    struct tst;
-\&
-\&    struct tst *tst_init(int node_line_width);
-\&
-\&    void tst_cleanup(struct tst *tst);
-\&
-\&    int tst_insert(struct tst *tst, const unsigned char *key, void *data, int option, void **exist_ptr);
-\&
-\&    void *tst_search(struct tst *tst, const unsigned char *key);
-\&
-\&    void *tst_delete(struct tst *tst, const unsigned char *key);
-.Ve
-.SH "DESCRIPTION"
-.IX Header "DESCRIPTION"
-\&\fBtst_init\fR allocates memory for members of \fIstruct tst\fR, and
-allocates the first \fInode_line_width\fR nodes. A \s-1NULL\s0 pointer is
-returned by \fBtst_init\fR if any part of the memory allocation fails. On
-success, a pointer to a \fIstruct tst\fR is returned.
-.PP
-The value for \fInode_line_width\fR must be chosen very carefully. One
-node is required for every character in the tree. If you choose a
-value that is too small, your application will spend too much time
-calling \fBmalloc\fR\|(3) and your node space will be too spread out. Too large
-a value is just a waste of space.
-.PP
-\&\fBtst_cleanup\fR frees all memory allocated to nodes, internal structures,
-as well as \fItst\fR itself.
-.PP
-\&\fBtst_insert\fR inserts the string \fIkey\fR into the tree. Behavior when a
-duplicate key is inserted is controlled by \fIoption\fR. If \fIkey\fR is
-already in the tree then \fB\s-1TST_DUPLICATE_KEY\s0\fR is returned, and the
-data pointer for the existing key is placed in \fIexist_ptr\fR.  If
-\&\fIoption\fR is set to \fB\s-1TST_REPLACE\s0\fR then the existing data pointer for
-the existing key is replaced by \fIdata\fR.  Note that the old data
-pointer will still be placed in \fIexist_ptr\fR.
-.PP
-If a duplicate key is encountered and \fIoption\fR is not set to
-\&\fB\s-1TST_REPLACE\s0\fR then \fB\s-1TST_DUPLICATE_KEY\s0\fR is returned. If \fIkey\fR is
-zero length then \fB\s-1TST_NULL_KEY\s0\fR is returned. A successful insert or
-replace returns \fB\s-1TST_OK\s0\fR. A return value of \fB\s-1TST_ERROR\s0\fR indicates
-that a memory allocation error occurred while trying to grow the node
-free.
-.PP
-Note that the \fIdata\fR argument must never be \fB\s-1NULL\s0\fR. If it is, then
-calls to \fBtst_search\fR will fail for a key that exists because the
-data value was set to \fB\s-1NULL\s0\fR, which is what \fBtst_search\fR returns. If
-you just want a simple existence tree, use the \fBtst\fR pointer as the
-data pointer.
-.PP
-\&\fBtst_search\fR finds the string \fIkey\fR in the tree if it exists and
-returns the data pointer associated with that key.
-.PP
-If \fIkey\fR is not found then \fB\s-1NULL\s0\fR is returned, otherwise the data pointer
-associated with \fIkey\fR is returned.
-.PP
-\&\fBtst_delete\fR deletes the string \fIkey\fR from the tree if it exists and
-returns the data pointer assocaited with that key.
-.PP
-If \fIkey\fR is not found then \fB\s-1NULL\s0\fR is returned, otherwise the data
-pointer associated with \fIkey\fR is returned.
-.SH "HISTORY"
-.IX Header "HISTORY"
-Converted to \s-1POD\s0 from Peter A.\ Friend's ternary search trie
-documentation by Alex Kiernan <alex.kiernan@thus.net> for
-InterNetNews\ 2.4.0.
-.PP
-\&\f(CW$Id:\fR tst.pod 9073 2010\-05\-31 19:00:23Z iulius $
diff -Nurp inn-2.6.4/doc/man/uwildmat.3 inn-2.6.5/doc/man/uwildmat.3
--- inn-2.6.4/doc/man/uwildmat.3	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/uwildmat.3	1970-01-01 01:00:00.000000000 +0100
@@ -1,299 +0,0 @@
-.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
-.\"
-.\" Standard preamble:
-.\" ========================================================================
-.de Sp \" Vertical space (when we can't use .PP)
-.if t .sp .5v
-.if n .sp
-..
-.de Vb \" Begin verbatim text
-.ft CW
-.nf
-.ne \\$1
-..
-.de Ve \" End verbatim text
-.ft R
-.fi
-..
-.\" Set up some character translations and predefined strings.  \*(-- will
-.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
-.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
-.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
-.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
-.\" nothing in troff, for use with C<>.
-.tr \(*W-
-.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
-.ie n \{\
-.    ds -- \(*W-
-.    ds PI pi
-.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
-.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
-.    ds L" ""
-.    ds R" ""
-.    ds C` ""
-.    ds C' ""
-'br\}
-.el\{\
-.    ds -- \|\(em\|
-.    ds PI \(*p
-.    ds L" ``
-.    ds R" ''
-.    ds C`
-.    ds C'
-'br\}
-.\"
-.\" Escape single quotes in literal strings from groff's Unicode transform.
-.ie \n(.g .ds Aq \(aq
-.el       .ds Aq '
-.\"
-.\" If the F register is >0, we'll generate index entries on stderr for
-.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
-.\" entries marked with X<> in POD.  Of course, you'll have to process the
-.\" output yourself in some meaningful fashion.
-.\"
-.\" Avoid warning from groff about undefined register 'F'.
-.de IX
-..
-.nr rF 0
-.if \n(.g .if rF .nr rF 1
-.if (\n(rF:(\n(.g==0)) \{\
-.    if \nF \{\
-.        de IX
-.        tm Index:\\$1\t\\n%\t"\\$2"
-..
-.        if !\nF==2 \{\
-.            nr % 0
-.            nr F 2
-.        \}
-.    \}
-.\}
-.rr rF
-.\"
-.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
-.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
-.    \" fudge factors for nroff and troff
-.if n \{\
-.    ds #H 0
-.    ds #V .8m
-.    ds #F .3m
-.    ds #[ \f1
-.    ds #] \fP
-.\}
-.if t \{\
-.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
-.    ds #V .6m
-.    ds #F 0
-.    ds #[ \&
-.    ds #] \&
-.\}
-.    \" simple accents for nroff and troff
-.if n \{\
-.    ds ' \&
-.    ds ` \&
-.    ds ^ \&
-.    ds , \&
-.    ds ~ ~
-.    ds /
-.\}
-.if t \{\
-.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
-.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
-.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
-.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
-.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
-.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
-.\}
-.    \" troff and (daisy-wheel) nroff accents
-.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
-.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
-.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
-.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
-.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
-.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
-.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
-.ds ae a\h'-(\w'a'u*4/10)'e
-.ds Ae A\h'-(\w'A'u*4/10)'E
-.    \" corrections for vroff
-.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
-.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
-.    \" for low resolution devices (crt and lpr)
-.if \n(.H>23 .if \n(.V>19 \
-\{\
-.    ds : e
-.    ds 8 ss
-.    ds o a
-.    ds d- d\h'-1'\(ga
-.    ds D- D\h'-1'\(hy
-.    ds th \o'bp'
-.    ds Th \o'LP'
-.    ds ae ae
-.    ds Ae AE
-.\}
-.rm #[ #] #H #V #F C
-.\" ========================================================================
-.\"
-.IX Title "uwildmat 3"
-.TH uwildmat 3 "2018-05-14" "INN 2.6.4" "InterNetNews Documentation"
-.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
-.\" way too many mistakes in technical documents.
-.if n .ad l
-.nh
-.SH "NAME"
-uwildmat, uwildmat_simple, uwildmat_poison \- Perform wildmat matching
-.SH "SYNOPSIS"
-.IX Header "SYNOPSIS"
-.Vb 1
-\&    #include <inn/libinn.h>
-\&
-\&    bool uwildmat(const char *text, const char *pattern);
-\&
-\&    bool uwildmat_simple(const char *text, const char *pattern);
-\&
-\&    enum uwildmat uwildmat_poison(const char *text, const char *pattern);
-.Ve
-.SH "DESCRIPTION"
-.IX Header "DESCRIPTION"
-\&\fBuwildmat\fR compares \fItext\fR against the wildmat expression \fIpattern\fR,
-returning true if and only if the expression matches the text.  \f(CW\*(C`@\*(C'\fR has
-no special meaning in \fIpattern\fR when passed to \fBuwildmat\fR.  Both \fItext\fR
-and \fIpattern\fR are assumed to be in the \s-1UTF\-8\s0 character encoding, although
-malformed \s-1UTF\-8\s0 sequences are treated in a way that attempts to be mostly
-compatible with single-octet character sets like \s-1ISO 8859\-1.\s0  (In other
-words, if you try to match \s-1ISO 8859\-1\s0 text with these routines everything
-should work as expected unless the \s-1ISO 8859\-1\s0 text contains valid \s-1UTF\-8\s0
-sequences, which thankfully is somewhat rare.)
-.PP
-\&\fBuwildmat_simple\fR is identical to \fBuwildmat\fR except that neither \f(CW\*(C`!\*(C'\fR
-nor \f(CW\*(C`,\*(C'\fR have any special meaning and \fIpattern\fR is always treated as a
-single pattern.  This function exists solely to support legacy interfaces
-like \s-1NNTP\s0's \s-1XPAT\s0 command, and should be avoided when implementing new
-features.
-.PP
-\&\fBuwildmat_poison\fR works similarly to \fBuwildmat\fR, except that \f(CW\*(C`@\*(C'\fR as the
-first character of one of the patterns in the expression (see below)
-\&\*(L"poisons\*(R" the match if it matches.  \fBuwildmat_poison\fR returns
-\&\fB\s-1UWILDMAT_MATCH\s0\fR if the expression matches the text, \fB\s-1UWILDMAT_FAIL\s0\fR if
-it doesn't, and \fB\s-1UWILDMAT_POISON\s0\fR if the expression doesn't match because
-a poisoned pattern matched the text.  These enumeration constants are
-defined in the \fBinn/libinn.h\fR header.
-.SH "WILDMAT EXPRESSIONS"
-.IX Header "WILDMAT EXPRESSIONS"
-A wildmat expression follows rules similar to those of shell filename
-wildcards but with some additions and changes.  A wildmat \fIexpression\fR is
-composed of one or more wildmat \fIpatterns\fR separated by commas.  Each
-character in the wildmat pattern matches a literal occurrence of that same
-character in the text, with the exception of the following metacharacters:
-.IP "?" 8
-Matches any single character (including a single \s-1UTF\-8\s0 multibyte
-character, so \f(CW\*(C`?\*(C'\fR can match more than one byte).
-.IP "*" 8
-Matches any sequence of zero or more characters.
-.IP "\e" 8
-.IX Item ""
-Turns off any special meaning of the following character; the following
-character will match itself in the text.  \f(CW\*(C`\e\*(C'\fR will escape any character,
-including another backslash or a comma that otherwise would separate a
-pattern from the next pattern in an expression.  Note that \f(CW\*(C`\e\*(C'\fR is not
-special inside a character range (no metacharacters are).
-.IP "[...]" 8
-A character set, which matches any single character that falls within that
-set.  The presence of a character between the brackets adds that character
-to the set; for example, \f(CW\*(C`[amv]\*(C'\fR specifies the set containing the
-characters \f(CW\*(C`a\*(C'\fR, \f(CW\*(C`m\*(C'\fR, and \f(CW\*(C`v\*(C'\fR.  A range of characters may be specified
-using \f(CW\*(C`\-\*(C'\fR; for example, \f(CW\*(C`[0\-5abc]\*(C'\fR is equivalent to \f(CW\*(C`[012345abc]\*(C'\fR.  The
-order of characters is as defined in the \s-1UTF\-8\s0 character set, and if the
-start character of such a range falls after the ending character of the
-range in that ranking the results of attempting a match with that pattern
-are undefined.
-.Sp
-In order to include a literal \f(CW\*(C`]\*(C'\fR character in the set, it must be the
-first character of the set (possibly following \f(CW\*(C`^\*(C'\fR); for example, \f(CW\*(C`[]a]\*(C'\fR
-matches either \f(CW\*(C`]\*(C'\fR or \f(CW\*(C`a\*(C'\fR.  To include a literal \f(CW\*(C`\-\*(C'\fR character in the
-set, it must be either the first or the last character of the set.
-Backslashes have no special meaning inside a character set, nor do any
-other of the wildmat metacharacters.
-.IP "[^...]" 8
-A negated character set.  Follows the same rules as a character set above,
-but matches any character \fBnot\fR contained in the set.  So, for example,
-\&\f(CW\*(C`[^]\-]\*(C'\fR matches any character except \f(CW\*(C`]\*(C'\fR and \f(CW\*(C`\-\*(C'\fR.
-.PP
-In addition, \f(CW\*(C`!\*(C'\fR (and possibly \f(CW\*(C`@\*(C'\fR) have special meaning as the first
-character of a pattern; see below.
-.PP
-When matching a wildmat expression against some text, each comma-separated
-pattern is matched in order from left to right.  In order to match, the
-pattern must match the whole text; in regular expression terminology, it's
-implicitly anchored at both the beginning and the end.  For example, the
-pattern \f(CW\*(C`a\*(C'\fR matches only the text \f(CW\*(C`a\*(C'\fR; it doesn't match \f(CW\*(C`ab\*(C'\fR or \f(CW\*(C`ba\*(C'\fR
-or even \f(CW\*(C`aa\*(C'\fR.  If none of the patterns match, the whole expression
-doesn't match.  Otherwise, whether the expression matches is determined
-entirely by the rightmost matching pattern; the expression matches the
-text if and only if the rightmost matching pattern is not negated.
-.PP
-For example, consider the text \f(CW\*(C`news.misc\*(C'\fR.  The expression \f(CW\*(C`*\*(C'\fR matches
-this text, of course, as does \f(CW\*(C`comp.*,news.*\*(C'\fR (because the second pattern
-matches).  \f(CW\*(C`news.*,!news.misc\*(C'\fR does not match this text because both
-patterns match, meaning that the rightmost takes precedence, and the
-rightmost matching pattern is negated.  \f(CW\*(C`news.*,!news.misc,*.misc\*(C'\fR does
-match this text, since the rightmost matching pattern is not negated.
-.PP
-Note that the expression \f(CW\*(C`!news.misc\*(C'\fR can't match anything.  Either the
-pattern doesn't match, in which case no patterns match and the expression
-doesn't match, or the pattern does match, in which case because it's
-negated the expression doesn't match.  \f(CW\*(C`*,!news.misc\*(C'\fR, on the other hand,
-is a useful pattern that matches anything except \f(CW\*(C`news.misc\*(C'\fR.
-.PP
-\&\f(CW\*(C`!\*(C'\fR has significance only as the first character of a pattern; anywhere
-else in the pattern, it matches a literal \f(CW\*(C`!\*(C'\fR in the text like any other
-non-metacharacter.
-.PP
-If the \fBuwildmat_poison\fR interface is used, then \f(CW\*(C`@\*(C'\fR behaves the same as
-\&\f(CW\*(C`!\*(C'\fR except that if an expression fails to match because the rightmost
-matching pattern began with \f(CW\*(C`@\*(C'\fR, \fB\s-1UWILDMAT_POISON\s0\fR is returned instead of
-\&\fB\s-1UWILDMAT_FAIL\s0\fR.
-.PP
-If the \fBuwildmat_simple\fR interface is used, the matching rules are the
-same as above except that none of \f(CW\*(C`!\*(C'\fR, \f(CW\*(C`@\*(C'\fR, or \f(CW\*(C`,\*(C'\fR have any special
-meaning at all and only match those literal characters.
-.SH "BUGS"
-.IX Header "BUGS"
-All of these functions internally convert the passed arguments to const
-unsigned char pointers.  The only reason why they take regular char
-pointers instead of unsigned char is for the convenience of \s-1INN\s0 and other
-callers that may not be using unsigned char everywhere they should.  In a
-future revision, the public interface should be changed to just take
-unsigned char pointers.
-.SH "HISTORY"
-.IX Header "HISTORY"
-Written by Rich \f(CW$alz\fR <rsalz@uunet.uu.net> in 1986, and posted to Usenet
-several times since then, most notably in comp.sources.misc in
-March, 1991.
-.PP
-Lars Mathiesen <thorinn@diku.dk> enhanced the multi-asterisk failure
-mode in early 1991.
-.PP
-Rich and Lars increased the efficiency of star patterns and reposted it to
-comp.sources.misc in April, 1991.
-.PP
-Robert Elz <kre@munnari.oz.au> added minus sign and close bracket handling
-in June, 1991.
-.PP
-Russ Allbery <eagle@eyrie.org> added support for comma-separated patterns
-and the \f(CW\*(C`!\*(C'\fR and \f(CW\*(C`@\*(C'\fR metacharacters to the core wildmat routines in July,
-2000.  He also added support for \s-1UTF\-8\s0 characters, changed the default
-behavior to assume that both the text and the pattern are in \s-1UTF\-8,\s0 and
-largely rewrote this documentation to expand and clarify the description
-of how a wildmat expression matches.
-.PP
-Please note that the interfaces to these functions are named \fBuwildmat\fR
-and the like rather than \fBwildmat\fR to distinguish them from the
-\&\fBwildmat\fR function provided by Rich \f(CW$alz\fR's original implementation.
-While this code is heavily based on Rich's original code, it has
-substantial differences, including the extension to support \s-1UTF\-8\s0
-characters, and has noticeable functionality changes.  Any bugs present in
-it aren't Rich's fault.
-.PP
-\&\f(CW$Id:\fR uwildmat.pod 10283 2018\-05\-14 12:43:05Z iulius $
-.SH "SEE ALSO"
-.IX Header "SEE ALSO"
-\&\fBgrep\fR\|(1), \fBfnmatch\fR\|(3), \fBregex\fR\|(3), \fBregexp\fR\|(3).
diff -Nurp inn-2.6.4/doc/man/writelog.8 inn-2.6.5/doc/man/writelog.8
--- inn-2.6.4/doc/man/writelog.8	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/man/writelog.8	2022-02-18 20:36:57.000000000 +0100
@@ -1,38 +1,169 @@
-.TH WRITELOG 8
-.SH NAME
-writelog \- add a entry to an INN log file.
-.SH SYNOPSIS
-.B writelog
-.I name
-.I text...
-.SH DESCRIPTION
-.PP
-The
-.I writelog
-script is used to write a log entry or send it as mail.
-The
-.I name
-parameter specifies the name of the log file where the entry should
-be written.
-If it is the word ``mail'' then the entry is mailed to the news administrator,
-.IR <USER\ specified\ with\ \-\-with\-news\-master\ at\ configure> .
-The data that is written or sent consists of the
-.I text
-given on the command line, followed by standard input indented by
-four spaces.
-.IR Shlock (1)
-is used to avoid simultaneous updates to a single log file.
-.SH HISTORY
-Written by Landon Curt Noll <chongo@toad.com> and Rich $alz
-<rsalz@uunet.uu.net> for InterNetNews.
-.de R$
-This is revision \\$3, dated \\$4.
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+.    ds C`
+.    ds C'
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\"
+.\" If the F register is >0, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
+..
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+.    if \nF \{\
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
 ..
-.R$ $Id: writelog.8 5909 2002-12-03 05:17:18Z vinocur $
+.        if !\nF==2 \{\
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
+.\}
+.rr rF
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "WRITELOG 8"
+.TH WRITELOG 8 "2022-01-23" "INN 2.6.5" "InterNetNews Documentation"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+writelog \- Write or mail a log entry
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+\&\fBwritelog\fR \fIname\fR \fItext\fR
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+The \fBwritelog\fR script is used to write a log entry or send it as mail.
+.PP
+The \fIname\fR parameter specifies the name of the log file where the
+entry should be written.  If it is the word \f(CW\*(C`mail\*(C'\fR, then the entry is
+sent as the subject of a mail to the newsmaster address specified with
+\&\fB\-\-with\-news\-master\fR at configure time (the default address is \f(CW\*(C`usenet\*(C'\fR).
+.PP
+If \fIname\fR is \f(CW\*(C`/dev/null\*(C'\fR, the script does nothing and exits.
+.PP
+The data that is written to a log file consists of the \fItext\fR given on the
+command line, followed by standard input indented by four spaces.  When sent
+by mail, the subject is \fItext\fR and the body is standard input without
+indentation.
+.PP
+\&\fBshlock\fR\|(1) is used to avoid simultaneous updates to a single log file.
+.SH "HISTORY"
+.IX Header "HISTORY"
+Written by Landon Curt Noll <chongo@toad.com> and Rich \f(CW$alz\fR
+<rsalz@uunet.uu.net> for InterNetNews.  Rewritten into \s-1POD\s0 by Julien Elie.
 .SH "SEE ALSO"
-innd(8),
-innstat(8),
-news.daily(8),
-newslog(5),
-nnrpd(8),
-scanlogs(8).
+.IX Header "SEE ALSO"
+\&\fBinnd\fR\|(8), \fBinnstat\fR\|(8), \fBnews.daily\fR\|(8), \fBnewslog\fR\|(5), \fBnnrpd\fR\|(8), \fBscanlogs\fR\|(8).
diff -Nurp inn-2.6.4/doc/pod/Makefile inn-2.6.5/doc/pod/Makefile
--- inn-2.6.4/doc/pod/Makefile	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/Makefile	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: Makefile 9722 2014-09-24 17:47:12Z iulius $
-##
 ##  This Makefile contains rules to generate the files derived from POD
 ##  source.  Normal make commands at the top level of the source tree don't
 ##  recurse into this directory.  These targets are only used by
@@ -12,19 +10,23 @@ TEXT	= ../../HACKING ../../INSTALL ../..
 
 MAN1	= ../man/convdate.1 ../man/fastrm.1 ../man/getlist.1 \
 	../man/grephistory.1 ../man/inews.1 ../man/innconfval.1 \
-	../man/innmail.1 ../man/pullnews.1 ../man/rnews.1 \
-	../man/shlock.1 ../man/simpleftp.1 ../man/sm.1
+	../man/innmail.1 ../man/nntpget.1 ../man/pullnews.1 ../man/rnews.1 \
+	../man/shlock.1 ../man/shrinkfile.1 ../man/simpleftp.1 ../man/sm.1
 
-MAN3	= ../man/libauth.3 ../man/libinnhist.3 ../man/libstorage.3 \
-	../man/list.3 ../man/qio.3 \
-	../man/tst.3 ../man/uwildmat.3
+MAN3	= ../man/libinn.3 ../man/libinn_clientlib.3 ../man/libinn_dbz.3 \
+	../man/libinn_inndcomm.3 \
+	../man/libauth.3 ../man/libinnhist.3 ../man/libstorage.3 \
+	../man/libinn_list.3 ../man/libinn_qio.3 \
+	../man/libinn_tst.3 ../man/libinn_uwildmat.3
 
 MAN5	= ../man/active.5 ../man/active.times.5 ../man/buffindexed.conf.5 \
 	../man/control.ctl.5 ../man/cycbuff.conf.5 ../man/distrib.pats.5 \
-	../man/distributions.5 ../man/expire.ctl.5 ../man/incoming.conf.5 \
-	../man/inn.conf.5 ../man/innfeed.conf.5 ../man/moderators.5 \
+	../man/distributions.5 ../man/expire.ctl.5 ../man/history.5 \
+	../man/incoming.conf.5 ../man/inn.conf.5 ../man/innfeed.conf.5 \
+	../man/innreport.conf.5 ../man/innwatch.ctl.5 ../man/moderators.5 \
 	../man/motd.news.5 ../man/newsfeeds.5 ../man/newsgroups.5 \
-	../man/newslog.5 ../man/nntpsend.ctl.5 ../man/ovdb.5 \
+	../man/newslog.5 ../man/nnrpd.track.5 ../man/nntpsend.ctl.5 \
+	../man/ovdb.5 \
 	../man/passwd.nntp.5 ../man/inn-radius.conf.5 ../man/readers.conf.5 \
 	../man/storage.conf.5 ../man/subscriptions.5
 
@@ -33,10 +35,11 @@ MAN8	= ../man/actsync.8 ../man/archive.8
 	../man/ckpasswd.8 ../man/cnfsheadconf.8 ../man/cnfsstat.8 \
 	../man/controlchan.8 ../man/ctlinnd.8 ../man/cvtbatch.8 ../man/docheckgroups.8 \
 	../man/domain.8 ../man/expire.8 ../man/expireover.8 \
-	../man/expirerm.8 ../man/ident.8 \
+	../man/expirerm.8 ../man/filechan.8 ../man/ident.8 \
 	../man/innbind.8 ../man/inncheck.8 ../man/innd.8 ../man/inndf.8 \
-	../man/innfeed.8 ../man/innupgrade.8 ../man/innwatch.8 \
-	../man/innxmit.8 \
+	../man/innfeed.8 ../man/innreport.8 ../man/innstat.8 \
+	../man/innupgrade.8 \
+	../man/innwatch.8 ../man/innxbatch.8 ../man/innxmit.8 \
 	../man/makedbz.8 ../man/makehistory.8 ../man/mod-active.8 \
 	../man/news.daily.8 ../man/news2mail.8 ../man/ninpaths.8 \
 	../man/nnrpd.8 ../man/nntpsend.8 \
@@ -44,9 +47,9 @@ MAN8	= ../man/actsync.8 ../man/archive.8
 	../man/ovdb_stat.8 ../man/overchan.8 \
         ../man/procbatch.8 ../man/prunehistory.8 ../man/radius.8 \
 	../man/rc.news.8 ../man/scanlogs.8 ../man/scanspool.8 \
-	../man/sendinpaths.8 \
+	../man/send-ihave.8 ../man/send-nntp.8 ../man/sendinpaths.8 \
 	../man/tally.control.8 ../man/tdx-util.8 \
-	../man/tinyleaf.8
+	../man/tinyleaf.8 ../man/writelog.8
 
 ALL	= $(TEXT) $(MAN1) $(MAN3) $(MAN5) $(MAN8)
 
@@ -60,7 +63,7 @@ maintclean: distclean
 ../../HACKING:		hacking.pod		; $(POD2TEXT) $? > $@
 ../../INSTALL:		install.pod		; $(POD2TEXT) $? > $@
 ../../NEWS:		news.pod		; $(POD2TEXT) $? > $@
-../../README:		readme.pod		; $(POD2TEXT) $? > $@
+../../README:		../../readme.pod	; $(POD2TEXT) $? > $@
 ../checklist:		checklist.pod		; $(POD2TEXT) $? > $@
 ../external-auth:	external-auth.pod	; $(POD2TEXT) $? > $@
 ../hook-perl:		hook-perl.pod		; $(POD2TEXT) $? > $@
@@ -73,19 +76,25 @@ maintclean: distclean
 ../man/inews.1:		inews.pod		; $(POD2MAN) -s 1 $? > $@
 ../man/innconfval.1:	innconfval.pod		; $(POD2MAN) -s 1 $? > $@
 ../man/innmail.1:	innmail.pod		; $(POD2MAN) -s 1 $? > $@
+../man/nntpget.1:	nntpget.pod		; $(POD2MAN) -s 1 $? > $@
 ../man/pullnews.1:	pullnews.pod		; $(POD2MAN) -s 1 $? > $@
 ../man/rnews.1:		rnews.pod		; $(POD2MAN) -s 1 $? > $@
 ../man/shlock.1:	shlock.pod		; $(POD2MAN) -s 1 $? > $@
+../man/shrinkfile.1:	shrinkfile.pod		; $(POD2MAN) -s 1 $? > $@
 ../man/simpleftp.1:	simpleftp.pod		; $(POD2MAN) -s 1 $? > $@
 ../man/sm.1:		sm.pod			; $(POD2MAN) -s 1 $? > $@
 
 ../man/libauth.3:	libauth.pod		; $(POD2MAN) -s 3 $? > $@
+../man/libinn.3:	libinn.pod		; $(POD2MAN) -s 3 $? > $@
 ../man/libinnhist.3:	libinnhist.pod		; $(POD2MAN) -s 3 $? > $@
 ../man/libstorage.3:	libstorage.pod		; $(POD2MAN) -s 3 $? > $@
-../man/list.3:		list.pod		; $(POD2MAN) -s 3 $? > $@
-../man/qio.3:		qio.pod			; $(POD2MAN) -s 3 $? > $@
-../man/tst.3:		tst.pod			; $(POD2MAN) -s 3 $? > $@
-../man/uwildmat.3:	uwildmat.pod		; $(POD2MAN) -s 3 $? > $@
+../man/libinn_clientlib.3: libinn_clientlib.pod	; $(POD2MAN) -s 3 $? > $@
+../man/libinn_dbz.3:	libinn_dbz.pod		; $(POD2MAN) -s 3 $? > $@
+../man/libinn_inndcomm.3: libinn_inndcomm.pod	; $(POD2MAN) -s 3 $? > $@
+../man/libinn_list.3:	libinn_list.pod		; $(POD2MAN) -s 3 $? > $@
+../man/libinn_qio.3:	libinn_qio.pod		; $(POD2MAN) -s 3 $? > $@
+../man/libinn_tst.3:	libinn_tst.pod		; $(POD2MAN) -s 3 $? > $@
+../man/libinn_uwildmat.3: libinn_uwildmat.pod	; $(POD2MAN) -s 3 $? > $@
 
 ../man/active.5:	active.pod		; $(POD2MAN) -s 5 $? > $@
 ../man/active.times.5:	active.times.pod	; $(POD2MAN) -s 5 $? > $@
@@ -95,14 +104,18 @@ maintclean: distclean
 ../man/distrib.pats.5:	distrib.pats.pod	; $(POD2MAN) -s 5 $? > $@
 ../man/distributions.5:	distributions.pod	; $(POD2MAN) -s 5 $? > $@
 ../man/expire.ctl.5:	expire.ctl.pod		; $(POD2MAN) -s 5 $? > $@
+../man/history.5:	history.pod		; $(POD2MAN) -s 5 $? > $@
 ../man/incoming.conf.5:	incoming.conf.pod	; $(POD2MAN) -s 5 $? > $@
 ../man/inn.conf.5:	inn.conf.pod		; $(POD2MAN) -s 5 $? > $@
 ../man/innfeed.conf.5:	innfeed.conf.pod	; $(POD2MAN) -s 5 $? > $@
+../man/innreport.conf.5: innreport.conf.pod	; $(POD2MAN) -s 5 $? > $@
+../man/innwatch.ctl.5:	innwatch.ctl.pod	; $(POD2MAN) -s 5 $? > $@
 ../man/moderators.5:	moderators.pod		; $(POD2MAN) -s 5 $? > $@
 ../man/motd.news.5:	motd.news.pod		; $(POD2MAN) -s 5 $? > $@
 ../man/newsfeeds.5:	newsfeeds.pod		; $(POD2MAN) -s 5 $? > $@
 ../man/newsgroups.5:	newsgroups.pod		; $(POD2MAN) -s 5 $? > $@
 ../man/newslog.5:	newslog.pod		; $(POD2MAN) -s 5 $? > $@
+../man/nnrpd.track.5:	nnrpd.track.pod		; $(POD2MAN) -s 5 $? > $@
 ../man/nntpsend.ctl.5:	nntpsend.ctl.pod	; $(POD2MAN) -s 5 $? > $@
 ../man/ovdb.5:		ovdb.pod		; $(POD2MAN) -s 5 $? > $@
 ../man/passwd.nntp.5:	passwd.nntp.pod		; $(POD2MAN) -s 5 $? > $@
@@ -127,14 +140,18 @@ maintclean: distclean
 ../man/expire.8:	expire.pod		; $(POD2MAN) -s 8 $? > $@
 ../man/expireover.8:	expireover.pod		; $(POD2MAN) -s 8 $? > $@
 ../man/expirerm.8:	expirerm.pod		; $(POD2MAN) -s 8 $? > $@
+../man/filechan.8:	filechan.pod		; $(POD2MAN) -s 8 $? > $@
 ../man/ident.8:		ident.pod		; $(POD2MAN) -s 8 $? > $@
 ../man/innbind.8:	innbind.pod		; $(POD2MAN) -s 8 $? > $@
 ../man/inncheck.8:	inncheck.pod		; $(POD2MAN) -s 8 $? > $@
 ../man/innd.8:		innd.pod		; $(POD2MAN) -s 8 $? > $@
 ../man/inndf.8:		inndf.pod		; $(POD2MAN) -s 8 $? > $@
 ../man/innfeed.8:	innfeed.pod		; $(POD2MAN) -s 8 $? > $@
+../man/innreport.8:	innreport.pod		; $(POD2MAN) -s 8 $? > $@
+../man/innstat.8:	innstat.pod		; $(POD2MAN) -s 8 $? > $@
 ../man/innupgrade.8:	innupgrade.pod		; $(POD2MAN) -s 8 $? > $@
 ../man/innwatch.8:	innwatch.pod		; $(POD2MAN) -s 8 $? > $@
+../man/innxbatch.8:	innxbatch.pod		; $(POD2MAN) -s 8 $? > $@
 ../man/innxmit.8:	innxmit.pod		; $(POD2MAN) -s 8 $? > $@
 ../man/makedbz.8:	makedbz.pod		; $(POD2MAN) -s 8 $? > $@
 ../man/makehistory.8:	makehistory.pod		; $(POD2MAN) -s 8 $? > $@
@@ -155,7 +172,10 @@ maintclean: distclean
 ../man/rc.news.8:	rc.news.pod		; $(POD2MAN) -s 8 $? > $@
 ../man/scanlogs.8:	scanlogs.pod		; $(POD2MAN) -s 8 $? > $@
 ../man/scanspool.8:	scanspool.pod		; $(POD2MAN) -s 8 $? > $@
+../man/send-ihave.8:	send-ihave.pod		; $(POD2MAN) -s 8 $? > $@
+../man/send-nntp.8:	send-nntp.pod		; $(POD2MAN) -s 8 $? > $@
 ../man/sendinpaths.8:	sendinpaths.pod		; $(POD2MAN) -s 8 $? > $@
 ../man/tally.control.8:	tally.control.pod	; $(POD2MAN) -s 8 $? > $@
 ../man/tdx-util.8:	tdx-util.pod		; $(POD2MAN) -s 8 $? > $@
 ../man/tinyleaf.8:	tinyleaf.pod		; $(POD2MAN) -s 8 $? > $@
+../man/writelog.8:	writelog.pod		; $(POD2MAN) -s 8 $? > $@
diff -Nurp inn-2.6.4/doc/pod/active.pod inn-2.6.5/doc/pod/active.pod
--- inn-2.6.4/doc/pod/active.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/active.pod	2022-02-18 20:36:57.000000000 +0100
@@ -121,8 +121,6 @@ B<docheckgroups> called with the B<-u> f
 Written by Rich $alz <rsalz@uunet.uu.net> for InterNetNews.  Converted to
 POD by Russ Allbery <eagle@eyrie.org>.
 
-$Id: active.pod 9767 2014-12-07 21:13:43Z iulius $
-
 =head1 SEE ALSO
 
 active.times(5), actsync(8), controlchan(8), ctlinnd(8), docheckgroups(8),
diff -Nurp inn-2.6.4/doc/pod/active.times.pod inn-2.6.5/doc/pod/active.times.pod
--- inn-2.6.4/doc/pod/active.times.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/active.times.pod	2022-02-18 20:36:57.000000000 +0100
@@ -45,8 +45,6 @@ the time is not necessarily the same on
 Written by Rich $alz <rsalz@uunet.uu.net> for InterNetNews.  Converted to
 POD by Russ Allbery <eagle@eyrie.org>.
 
-$Id: active.times.pod 9971 2015-12-10 20:30:10Z iulius $
-
 =head1 SEE ALSO
 
 active(5), convdate(1), ctlinnd(8), getlist(1), inn.conf(5), innd(8),
diff -Nurp inn-2.6.4/doc/pod/actsync.pod inn-2.6.5/doc/pod/actsync.pod
--- inn-2.6.4/doc/pod/actsync.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/actsync.pod	2022-02-18 20:36:57.000000000 +0100
@@ -12,6 +12,30 @@ B<actsync> [B<-AkmT>] [B<-b> I<hostid>]
 
 B<actsyncd> I<config> [I<debug-level> [I<debug-format>]]
 
+=head1 IN A NUTSHELL
+
+These programs permit keeping the list of newsgroups your news server carry
+synchronized with an external source.
+
+For instance, you can decide to carry the same newsgroups as another news
+server or as the ones listed in a file from an external FTP site, and
+therefore synchronizing with the chosen source on a daily basis by running
+B<actsyncd> in a cron job.
+
+If you only want a subset of newsgroups from that source, it can be
+parametered in the F<actsync.ign> configuration file in the I<pathetc>
+directory.
+
+INN comes with a default configuration for fetching the list of newsgroups
+from C<ftp.isc.org>.  You can read about the policies used for maintaining
+that F<active> file at L<https://ftp.isc.org/pub/usenet/CONFIG/README>.
+Just make sure F<actsync.cfg> (the configuration file) and F<actsync.ign> (the
+synchronization rules) suit your needs, and run:
+
+    actsyncd <pathetc>/actsync.cfg
+
+You'll find more detailed examples of use below in this man page.
+
 =head1 DESCRIPTION
 
 B<actsync> permits one to synchronize, compare, or merge two F<active>
@@ -107,10 +131,10 @@ contain the following options:
     ignore_file=<ignore-file>
     flags=<actsync-options>
 
-The host=, ignore_file=, and flags= lines are mandatory.  Each keyword must
-start at the beginning of the line, and there may be no whitespace before
-the C<=> character.  Blank lines are ignored, as are comment lines that
-start with C<#>.  Any other lines may produce undefined results.
+The C<host=>, C<ignore_file=>, and C<flags=> lines are mandatory.
+Each keyword must start at the beginning of the line, and there may be no
+whitespace before the C<=> character.  Blank lines are ignored, as are comment
+lines that start with C<#>.  Any other lines may produce undefined results.
 
 The <host> setting refers to the second (remote) I<host> parameter to
 B<actsync>.  If <path-to-active> is provided, <host> is accessed as an FTP
@@ -119,18 +143,20 @@ C<.Z>, it will be automatically uncompre
 <ignore-file> names the ignore file used by B<actsync> (the B<-i> option).
 <actsync-options> contains any other flags that you wish to pass to B<actsync>.
 
-Note that one should not include B<-i> or B<-o> options in the flags=
-line; they are automatically taken care of by B<actsyncd>.
+Note that one should not include B<-i> or B<-o> options in the C<flags=> line;
+they are automatically taken care of by B<actsyncd>.
 
-One may produce a trial B<actsyncd> run without changing anything on the
-server by supplying the I<debug-level> argument:
+One may produce a trial B<actsyncd> run without changing anything on
+the server by supplying the I<debug-level> argument:
 
     actsyncd <pathetc>/actsync.cfg 2
 
 The I<debug-level> causes B<actsyncd> to run B<actsync> with a B<-v>
-I<debug-level> flag (overriding any B<-v> flag on the flags= line), not
-make any changes to the F<active> file, write a new F<active> file to
-standard output, and write debug messages to standard error.
+I<debug-level> flag (overriding any B<-v> flag on the C<flags=> line),
+not make any changes to the F<active> file, write a new F<active> file to
+standard output, and write debug messages to standard error.  Note that using
+I<debug-level> is only supported when synchronizing with another news server,
+not with FTP.
 
 If the I<debug-format> argument is also given to B<actsyncd>, the data
 written to standard output will be in B<-o I<debug-format>> instead of in
@@ -140,7 +166,7 @@ INN comes with default values of C<ftp.i
 C</pub/usenet/CONFIG/active.gz> for <path-to-active>.  You can read about the
 policies used for maintaining that F<active> file at
 L<https://ftp.isc.org/pub/usenet/CONFIG/README>.  Consider synchronizing
-from this file on a daily basis by using B<cron>.
+from this file on a daily basis by using a cron job.
 
 =head1 OPTIONS
 
@@ -163,7 +189,8 @@ second I<host> argument, or the only one
 
 =item B<-A>
 
-B<actsync> tries to authenticate before issuing the LIST command.
+B<actsync> tries to authenticate using the username and password information
+in passwd.nntp(5) before issuing the LIST command.
 
 =item B<-b> I<hostid>
 
@@ -241,7 +268,7 @@ one of two forms:
 If the rule begins with a C<c>, the rule requests certain newsgroups to be
 checked.  If the rule begins with an C<i>, the rule requests certain
 newsgroups to be ignored.  The <newsgroup> field may be a specific
-newsgroup, or a uwildmat(3) pattern.
+newsgroup, or a I<uwildmat> pattern.
 
 If one or more <type>s are specified, then the rule applies to the
 newsgroup only if it is of the specified type.  Types refer to the 4th field
@@ -255,7 +282,7 @@ of the F<active> file; that is, a type m
     =group.name
 
 Unlike F<active> files, the C<group.name> in an alias type may be a newsgroup
-name or a uwildmat(3) pattern.  Also, C<=> is equivalent to C<=*>.
+name or a I<uwildmat> pattern.  Also, C<=> is equivalent to C<=*>.
 
 On each rule line, no pattern type may be repeated.  For example, one
 may not have more than one type that begins with C<=>, per line.  However,
@@ -286,8 +313,8 @@ flag may be useful in conjunction with t
 
     actsync -i actsync.ign -I 2 -m host1 host2
 
-will keep all newsgroups currently on host1.  It will also only
-compare host1 groups with non-ignored newsgroups from host2.
+will keep all newsgroups currently on I<host1>.  It will also only
+compare I<host1> groups with non-ignored newsgroups from I<host2>.
 
 The default is C<-I 12>; newsgroups from both hosts are ignored per the
 file specified with B<-i>.
@@ -566,14 +593,14 @@ executed if C<-o x> is selected.
 
 =head1 EXAMPLES
 
-Determine the difference (but don't change anything) between your
-newsgroup set and uunet's set:
+Determine the difference (but don't change anything) between your newsgroup
+set and the one of another news server:
 
-    actsync news.uu.net
+    actsync news.server.com
 
 Same as above, with full debug and progress reports:
 
-    actsync -v 4 news.uu.net
+    actsync -v 4 news.server.com
 
 Force a site to have the same newsgroups as some other site:
 
@@ -582,11 +609,11 @@ Force a site to have the same newsgroups
 This may be useful to sync a slave site to its master, or to sync internal
 site to a gateway.
 
-Compare your site with uunet, disregarding local groups and certain local
-differences with uunet.  Produce a report if any differences were
+Compare your site with news.server.com, disregarding local groups and
+certain local differences with it.  Produce a report if any differences were
 encountered:
 
-    actsync -v 2 -i actsync.ign news.uu.net
+    actsync -v 2 -i actsync.ign news.server.com
 
 where F<actsync.ign> contains:
 
@@ -601,7 +628,7 @@ where F<actsync.ign> contains:
     i       nsa.*
 
     # These groups are local favorites, so keep them
-    # even if uunet does not carry them.
+    # even if news.server.com does not carry them.
     #
     i       ca.dump.bob.dorman
     i       ca.keep.bob.dorman
@@ -609,9 +636,9 @@ where F<actsync.ign> contains:
     i       alt.tv.dinosaurs.barney.love.love.love
     i       alt.sounds.*    =alt.binaries.sounds.*
 
-To interactively sync against news.uu.net, using the same ignore file:
+To interactively sync against news.server.com, using the same ignore file:
 
-    actsync -o xi -v 2 -i actsync.ign news.uu.net
+    actsync -o xi -v 2 -i actsync.ign news.server.com
 
 Based on newsgroups that you decided to keep, one could make changes to
 the F<actsync.ign> file:
@@ -627,7 +654,7 @@ the F<actsync.ign> file:
     i       nsa.*
 
     # These groups are local favorites, so keep them
-    # even if uunet does not carry them.
+    # even if news.server.com does not carry them.
     #
     i       ca.dump.bob.dorman
     i       alt.tv.dinosaurs.barney.die.die.die
@@ -645,7 +672,7 @@ Automatic processing may be set up by us
 file:
 
     # Host to sync off of (host2).
-    host=news.uu.net
+    host=news.server.com
 
     # Location of the ignore file.
     ignore_file=<pathetc in inn.conf>/actsync.ign
@@ -657,7 +684,7 @@ file:
     #
     # Automatic execs, report if something was done,
     # otherwise don't say anything, don't report
-    # uunet active file problems, just ignore
+    # news.server.com active file problems, just ignore
     # the affected entries.
     flags=-o x -v 2 -q 2
 
@@ -669,11 +696,12 @@ The command
 
     actsyncd <pathetc>/actsync.cfg 4 >cmd.log 2>dbg.log
 
-will operate in debug mode, not change the F<active> file, write
-B<ctlinnd> style commands to F<cmd.log>, and write debug statements to
-F<dbg.log>.
+will operate in debug mode, not change the F<active> file, write B<ctlinnd>
+style commands to F<cmd.log>, and write debug statements to F<dbg.log>.
+(Note that using I<debug-level> is only supported when synchronizing with
+another news server, not with FTP.)
 
-To check only the major hierarchies against news.uu,net, use the following
+To check only the major hierarchies against news.server.com, use the following
 F<actsync.ign> file:
 
     # By default, ignore everything.
@@ -695,7 +723,7 @@ F<actsync.ign> file:
 
 and the command:
 
-    actsync -i actsync.ign news.uu.net
+    actsync -i actsync.ign news.server.com
 
 To determine the differences between your old F<active> and your current
 default server:
@@ -774,8 +802,6 @@ Written by Landon Curt Noll <chongo@toad
 to support FTP fetching by David Lawrence <tale@isc.org>.  Converted to
 POD by Russ Allbery <eagle@eyrie.org>.
 
-$Id: actsync.pod 10097 2016-11-04 22:19:07Z iulius $
-
 By Landon Curt Noll <chongo@toad.com> (chongo was here /\../\).
 
 Copyright (c) Landon Curt Noll, 1993.  All rights reserved.
@@ -785,6 +811,7 @@ remains.  Use at your own risk.  No warr
 
 =head1 SEE ALSO
 
-active(5), ctlinnd(8), getlist(8), inn.conf(5), mod-active(8), simpleftp(1).
+active(5), ctlinnd(8), getlist(8), inn.conf(5), libinn_uwildmat(3),
+mod-active(8), passwd.nntp(5), simpleftp(1).
 
 =cut
diff -Nurp inn-2.6.4/doc/pod/archive.pod inn-2.6.5/doc/pod/archive.pod
--- inn-2.6.4/doc/pod/archive.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/archive.pod	2022-02-18 20:36:57.000000000 +0100
@@ -82,8 +82,8 @@ LF replaced by spaces).
 
 =item B<-p> I<pattern>
 
-Limits the targets taken from the Xref: header to the groups specified in
-I<pattern>.  I<pattern> is a uwildmat(3) pattern matching newsgroups that
+Limits the targets taken from the Xref header field to the groups specified in
+I<pattern>.  I<pattern> is a I<uwildmat> pattern matching newsgroups that
 you wish to have B<archive> handle.
 
 =item B<-r>
@@ -122,10 +122,8 @@ Replace <pathbin> and <patharchive> with
 Written by Rich $alz <rsalz@uunet.uu.net> for InterNetNews.  Converted to
 POD by Russ Allbery <eagle@eyrie.org>.
 
-$Id: archive.pod 9767 2014-12-07 21:13:43Z iulius $
-
 =head1 SEE ALSO
 
-inn.conf(5), newsfeeds(5).
+inn.conf(5), libinn_uwildmat(3), newsfeeds(5).
 
 =cut
diff -Nurp inn-2.6.4/doc/pod/auth_krb5.pod inn-2.6.5/doc/pod/auth_krb5.pod
--- inn-2.6.4/doc/pod/auth_krb5.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/auth_krb5.pod	2022-02-18 20:36:57.000000000 +0100
@@ -81,8 +81,6 @@ Originally written by Christopher S<P. L
 written by Russ Allbery <eagle@eyrie.org> based on Christopher's original
 F<README> file.
 
-$Id: auth_krb5.pod 9774 2015-01-04 21:50:10Z eagle $
-
 =head1 SEE ALSO
 
 ckpasswd(8), nnrpd(8), readers.conf(5).
diff -Nurp inn-2.6.4/doc/pod/batcher.pod inn-2.6.5/doc/pod/batcher.pod
--- inn-2.6.4/doc/pod/batcher.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/batcher.pod	2022-02-18 20:36:57.000000000 +0100
@@ -150,8 +150,6 @@ file as described above.
 Written by Rich $alz <rsalz@uunet.uu.net> for InterNetNews.  Rewritten by
 Russ Allbery <eagle@eyrie.org> in POD.
 
-$Id: batcher.pod 9767 2014-12-07 21:13:43Z iulius $
-
 =head1 SEE ALSO
 
 ctlinnd(8), inn.conf(5), newsfeeds(5), rnews(8), send-uucp(8), shlock(1).
diff -Nurp inn-2.6.4/doc/pod/buffchan.pod inn-2.6.5/doc/pod/buffchan.pod
--- inn-2.6.4/doc/pod/buffchan.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/buffchan.pod	2022-02-18 20:36:57.000000000 +0100
@@ -90,8 +90,9 @@ has been open for more than I<seconds> s
 
 =item B<-d> I<directory>
 
-This flag may be used to specify a directory the program should change to
-before starting.  If this flag is used, the default for the B<-s> flag
+By default, B<buffchan> writes its output into the I<pathoutgoing> directory.
+This flag may be used to specify a directory the program should change
+to before starting.  If this flag is used, the default for the B<-s> flag
 (see below) is changed to be a simple C<%s> (in other words, output files
 are considered to be relative to I<directory>).
 
@@ -122,7 +123,10 @@ In the map file, blank lines and lines s
 are ignored.  All other lines should have two host names separated by a
 colon.  The first field is the name that may appear in the input stream;
 the second field names the file to be used when the name in the first
-field appears.  For example:
+field appears.
+
+For example, the following map file may be used to map the short names used
+in the example below to the full domain names:
 
     # This is a comment
     uunet:news.uu.net
@@ -159,33 +163,41 @@ If the B<-u> flag is used, the output wi
 
 If B<buffchan> is invoked with C<-f 2> and given the following input:
 
-    news/software/b/132 <1643@munnari.oz.au> foo uunet
-    news/software/b/133 <102060@litchi.foo.com> uunet munnari
-    comp/sources/unix/2002 <999@news.foo.com> foo uunet munnari
+    news.software.nntp <1643@munnari.oz.au> foo uunet
+    news.software.nntp <102060@litchi.foo.com> uunet munnari
+    comp.sources.unix <999@news.foo.com> foo uunet munnari
+
+then the file F<foo> in I<pathoutgoing> will have these lines:
+
+    news.software.nntp <1643@munnari.oz.au>
+    comp.sources.unix <999@news.foo.com>
 
-Then the file F<foo> will have these lines:
+the file F<munnari> in I<pathoutgoing> will have these lines:
 
-    news/software/b/132 <1643@munnari.oz.au>
-    comp/sources/unix/2002 <999@news.foo.com>
+    news.software.nntp <102060@litchi.foo.com>
+    comp.sources.unix <999@news.foo.com>
 
-the file F<munnari> will have these lines:
+and the file F<uunet> in I<pathoutgoing> will have these lines:
 
-    news/software/b/133 <102060@litchi.foo.com>
-    comp/sources/unix/2002 <999@news.foo.com>
+    news.software.nntp <1643@munnari.oz.au>
+    news.software.nntp <102060@litchi.foo.com>
+    comp.sources.unix <999@news.foo.com>
 
-and the file F<uunet> will have these lines:
+Using B<buffchan> this way can be done in F<newsfeeds> with for instance:
 
-    news/software/b/132 <1643@munnari.oz.au>
-    news/software/b/133 <102060@litchi.foo.com>
-    comp/sources/unix/2002 <999@news.foo.com>
+    foo:*,@misc.*:Ap,Tm:buffchan!
+    munnari:*,@rec.*:Ap,Tm:buffchan!
+    uunet:*:Ap,Tm:buffchan!
+    buffchan!:*:Tx,WGm*:<pathbin>/buffchan -f 2
+
+It will generate the examples above.  See the C<W> flag in newsfeeds(5)
+for how to parameter the output.
 
 =head1 HISTORY
 
 Written by Rich $alz <rsalz@uunet.uu.net> for InterNetNews.  Converted to
 POD by Russ Allbery <eagle@eyrie.org>.
 
-$Id: buffchan.pod 9767 2014-12-07 21:13:43Z iulius $
-
 =head1 SEE ALSO
 
 ctlinnd(8), filechan(8), inn.conf(5), innd(8), newsfeeds(5).
diff -Nurp inn-2.6.4/doc/pod/buffindexed.conf.pod inn-2.6.5/doc/pod/buffindexed.conf.pod
--- inn-2.6.4/doc/pod/buffindexed.conf.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/buffindexed.conf.pod	2022-02-18 20:36:57.000000000 +0100
@@ -150,8 +150,6 @@ user to read and write.
 Written by Katsuhiro Kondou <kondou@nec.co.jp> for InterNetNews.
 Converted to POD by Russ Allbery <eagle@eyrie.org>.
 
-$Id: buffindexed.conf.pod 10525 2021-01-20 11:51:15Z iulius $
-
 =head1 SEE ALSO
 
 expireover(8), inn.conf(5), inndf(8), makehistory(8).
diff -Nurp inn-2.6.4/doc/pod/checklist.pod inn-2.6.5/doc/pod/checklist.pod
--- inn-2.6.4/doc/pod/checklist.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/checklist.pod	2022-02-18 20:36:57.000000000 +0100
@@ -1,37 +1,73 @@
 =head1 Introduction
 
-$Id: checklist.pod 10283 2018-05-14 12:43:05Z iulius $
+This is an installation checklist initially written by Rebecca Ore,
+intended to be the beginning of a different presentation of the information
+in F<INSTALL>, since getting started with installing INN can be complex.
+Further clarifications, updates, and expansion are welcome.
+
+This checklist explains the steps to follow for a standard installation with
+reasonable defaults.
+
+The first part of this documentation can be skipped if INN is already
+installed on your system.  Some distributions provide a package, which should
+be used in preference of building from stratch.
 
-This is an installation checklist written by Rebecca Ore, intended to be
-the beginning of a different presentation of the information in F<INSTALL>,
-since getting started with installing INN can be complex.  Further
-clarifications, updates, and expansion are welcome.
-
-=head1 Setup
+=head1 Compile (when installing from scratch)
 
 =over 4
 
 =item *
 
-Make sure there is a C<news> user (and a C<news> group to which the
-C<news> user belongs).  If necessary, you can use:
+Download the INN tarball and unpack.  Make sure that you download
+the last release from L<https://ftp.isc.org/isc/inn/> or a snapshot
+from L<https://ftp.isc.org/isc/inn/snapshots/>.
+
+=item *
+
+Make sure there is a C<news> user (and a C<news> group to which the C<news>
+user belongs).  If necessary, you can use:
 
     adduser --group --home /usr/local/news news
 
-where F</usr/local/news> is the home directory for the C<news> user.
-This directory will be passed to B<configure> via the B<--prefix>
-option.  It will also be set as I<pathnews> in F<inn.conf>.
+where F</usr/local/news> is the home directory for the C<news> user.  This
+directory will be passed to C<configure> via the B<--prefix> option.  It will
+also be set as I<pathnews> in F<inn.conf>.
 
 =item *
 
-Create a local mail alias for C<usenet> (editing your F<aliases> file
-for instance).
+Work out configure options (C<./configure --help> for a list).  If you
+aren't working out of F</usr/local/news>, or want to put some files on a
+different partition, you can set the directories now (or later in I<pathnews>
+in F<inn.conf> if you change your mind).  By default,
+B<--prefix=/usr/local/news> is used.
+
+You probably want B<--with-perl>.  You might want to compile in TLS support.
+You will need to have the relevant external libraries to compile (depending on
+whether you use OpenSSL for TLS access to your news server, Perl and/or Python
+for spam and abuse filtering, etc.) and to correctly set the right paths to
+external programs (like for GnuPG to verify the authenticity of Usenet control
+messages).
+
+    ./configure --with-perl --with-openssl ...
+    make
+
+    su
+    make install
+
+Note that if you update a previous installation of INN, you should use
+C<make update> instead of C<make install> to keep your configuration files.
+
+If you wish to use TLS, you can use C<make cert> to generate a self-signed
+certificate and a private key.
 
 =item *
 
 Make sure the directory F</usr/local/news> and its subdirectories
 are owned by C<news>, group C<news>.
 
+(If you ran C<make install> as root, all of the ownerships and permissions
+should be correct.)
+
 You want to be careful that things in that directory stay owned by
 C<news> S<-- but> you can't just C<chown -R news:news> after the install,
 because you may have binaries that are SUID root.  You can do the build
@@ -41,205 +77,197 @@ C<su news -s /bin/sh> to avoid creating
 maintenance once INN is working, you can generally be root.  However,
 it is always better to be accustomed to doing that as the news user.)
 
-=item *
-
-If necessary, add F<~news/bin> (that is to say I<pathbin>) to the news
-user's path and F<~news/share/man> (that is to say I<pathnews>/share/man)
-to the news user's MANPATH in your shell config files.  (You may want to
-do this, especially the second part, on your regular account; the
-man pages are very useful.)
-
-You can do this now or later, but you will certainly want the man pages
-to help with configuring INN.
-
-For bash, try:
-
-    PATH=<pathbin in inn.conf>:$PATH
-    export PATH
-    MANPATH=<pathnews in inn.conf>/share/man:$MANPATH
-    export MANPATH
-
-or csh:
-
-    setenv PATH <pathbin in inn.conf>:$PATH
-    setenv MANPATH <pathnews in inn.conf>/share/man:$MANPATH
-
-although if you don't already have MANPATH set, the above may give an
-error or override your defaults (making it so you can only read the news
-man pages); if C<echo $MANPATH> does not give some reasonable path,
-you'll need to look up what the default is for your system (such as
-F</usr/man> or F</usr/share/man>).
-
 =back
 
-=head1 Compile
+=head1 Parameter
 
 =over 4
 
 =item *
 
-Download the INN tarball and unpack.  Make sure that you download
-the last release from L<https://ftp.isc.org/isc/inn/> or a snapshot
-from L<https://ftp.isc.org/isc/inn/snapshots/>.
+Find F<INSTALL> and open a separate window for it.  A printout is probably a
+good idea S<-- it's> long but very helpful.  You'll find in F<INSTALL> more
+information and background about each step in this document.
 
 =item *
 
-Work out configure options (C<./configure --help> for a list).  If you
-aren't working out of F</usr/local/news>, or want to put some files on a
-different partition, you can set the directories now (or later in I<pathnews>
-in F<inn.conf> if you change your mind).  By default,
-B<--prefix=/usr/local/news> is used.
+Now it's time to work on the configuration files in your I<pathetc> directory.
+Start with F<inn.conf>; you must fill in or check I<organization> (which can
+be commented if you do not want to add a default Organization header field to
+every post from your server), your path identity in I<pathhost> (usually your
+fully qualified domain name), the NNTP server to use for posts (I<server>
+is commonly set to C<localhost>), the maximum size of articles you accept
+(I<maxartsize>, set to S<1 MB> by default), and the abuse e-mail address
+(I<complaints>).
 
-You probably want B<--with-perl>.  If you're not using NetBSD with
-cycbuffs or OpenBSD, perhaps B<--with-tagged-hash>.  You might want to
-compile in TLS/SSL and S<Berkeley DB>, if your system supports them.  You
-will need to have the relevant external libraries to compile (depending
-on whether you use OpenSSL for TLS/SSL access to your news server, GnuPG
-to verify the authenticity of Usenet control messages, Perl, Python, etc.).
+To store overview data, start with tradindexed overview method, already set
+by default in the I<ovmethod> parameter, but know that there are various other
+options with their own pros and cons, as detailed in F<INSTALL>.
 
-    ./configure --with-perl ...
-    make
+=item *
 
-    su
-    make install
+To store articles, start with traditional spool (named tradspool), but know
+that there are various other options with their own pros and cons, as detailed
+in F<INSTALL>.
 
-(If you do the last step as root, all of the ownerships and permissions
-will be correct.)
+The default F<storage.conf> file is already parametered to use that storage
+method.
 
-Note that if you update a previous installation of INN, you should use
-C<make update> instead of C<make install> to keep your configuration files.
+=item *
 
-If you wish to use TLS/SSL, you can use C<make cert> to generate
-a certificate and a private key.
+Configure in F<expire.ctl> how long articles should be kept in your news
+spool.  The default of 90 days maybe does not fit your needs.  You can use
+different values for specific newsgroups or hierarchies depending on your
+interest in them.
 
-=back
+=item *
 
-=head1 Configure
+Run C<< <pathbin in inn.conf>/inncheck -a -v -f --pedantic --perm >> and fix
+anything noted; B<inncheck> gives a rough check on the appropriateness of the
+configuration files as you go.
 
-=over 4
+Note that B<inncheck> is very conservative about permissions; there's no
+reason most of the config files can't be world-readable if you prefer that.
 
 =item *
 
-Find F<INSTALL> and open a separate window for it.  A printout is
-probably a good idea S<-- it's> long but very helpful.  Any time the
-instructions below ask you to make a decision, you can probably find
-help in F<INSTALL>.
+You can now import an F<active> file (I<pathdb in
+inn.conf>/active) and run B<inncheck> again.  You may want to look at
+L<https://ftp.isc.org/pub/usenet/CONFIG/active> and only keep the lines
+corresponding to the newsgroups you are interested in.  Also import a
+F<newsgroups> file which contains the descriptions of these newsgroups (see
+for instance L<https://ftp.isc.org/pub/usenet/CONFIG/newsgroups>).
+
+Note that it is not necessary to do that now.  INN is shipped with minimal
+F<active> and F<newsgroups> files and you can add newsgroups later with
+C<ctlinnd newgroup> or B<actsync> (have a look at the examples at the end of
+the actsync(8) man page for how to use it concretely).
 
 =item *
 
-Now it's time to work on the files in F<~news/etc> (the default I<pathetc>
-location set in F<inn.conf>).  Start with F<inn.conf>; you must fill
-in the default moderators address, your fully qualified domain names
-and path.  Fill in all the blanks.  Change the file descriptor limits
-to something like C<500>.
+Review the F<subscriptions> file, and update it according to the newsgroups
+you carry on your news server.  This file, which may be empty, is used by a
+few news clients to suggest newsgroups on the first time they connect to a
+news server.
 
 =item *
 
-If using cycbuffs (the CNFS storage method), open F<cycbuff.conf> in one
-window and a shell in another to create the cycbuff as described in
-F<INSTALL>.  As you create them, record in F<cycbuff.conf> the paths and
-sizes.  Save paths and sizes in a separate text file on another machine
-in case you ever blow away the wrong file.
-
-Name the metacycbuff, then configure F<storage.conf>.
+Create the cron jobs (especially B<news.daily>), the log files, and make the
+changes to your system's F<syslog.conf> as noted in F<INSTALL>.
 
 =item *
 
-In F<storage.conf>, be sure that all sizes of articles can be
-accommodated.  If you want to throw away large articles, do it explicitly
-by using the C<trash> storage method (you can also set a lower I<maxartsize>
-in F<inn.conf>).
+Create a local mail alias for C<usenet> (editing your F</etc/aliases> file for
+instance).  It will be useful for daily Usenet reports sent by B<news.daily>
+and other parts of the system.
 
 =item *
 
-The default options in F<expire.ctl> work fine if you have cycbuffs; if
-not, configure to suit (depending on your disk space and your interest
-in some hierarchies, you can define how long you keep articles in your
-news spool).
+If necessary, add the path to INN's binaries (as set in I<pathbin> in
+F<inn.conf>) to the news user's path and the path to INN's man pages (usually
+I<pathnews>/share/man) to the news user's C<MANPATH> in your shell config
+files.  (You may also want to do this, especially the second part, on your
+regular account; the man pages are very useful.)
 
-=item *
+You can do this now or later, but you will certainly want the man pages to
+help with configuring INN.
 
-Check over F<moderators> and F<control.ctl>.  You may want to also
-configure the process of newsgroup control messages (see the corresponding
-section in F<INSTALL>).
+For bash, try to add in your F<~/.bashrc> file:
 
-=item *
+    PATH=<pathbin in inn.conf>:$PATH
+    export PATH
+    MANPATH=<pathnews in inn.conf>/share/man:$MANPATH
+    export MANPATH
 
-Run C<< <pathbin in inn.conf>/inncheck -a -v -f --pedantic --perm >> and fix anything noted:
-B<inncheck> gives a rough check on the appropriateness of the configuration
-files as you go.  (It's the equivalent of C<perl -cw yourfile.pl> for
-Perl scripts.)
+or csh in your F<~/.cshrc> file:
 
-Note that B<inncheck> is very conservative about permissions; there's no
-reason most of the config files can't be world-readable if you prefer
-that.
+    setenv PATH <pathbin in inn.conf>:$PATH
+    setenv MANPATH <pathnews in inn.conf>/share/man:$MANPATH
+
+although if you don't already have C<MANPATH> set, the above may give an
+error or override your defaults (making it so you can only read the news
+man pages); if C<echo $MANPATH> does not give some reasonable path, you'll
+need to look up what the default is for your system (such as F</usr/man> or
+F</usr/share/man>).
 
 =item *
 
-You can now import an F<active> file (I<pathdb in inn.conf>/active) and run B<inncheck>
-again.  You may want to look at L<https://ftp.isc.org/pub/usenet/CONFIG/active>
-and only keep the lines corresponding to the newsgroups you are interested in.
-Also import a F<newsgroups> file which contains the descriptions of these
-newsgroups (see for instance L<https://ftp.isc.org/pub/usenet/CONFIG/newsgroups>).
+For the time being, we can see if everything initially works without worrying
+about feeds or reader access.
 
-Note that it is not necessary to do that now.  INN is shipped with minimal
-F<active> and F<newsgroups> files and you can add newsgroups later with
-C<ctlinnd newgroup> or B<actsync>.
+=back
 
-In case you need to create empty initial database files, import an F<active>
-file (owned by C<news>) and execute as the news user:
+=head1 Run
 
-    cd <pathdb in inn.conf>
+=over 4
 
-    touch newsgroups
-    touch active.times
+=item *
 
-    touch history
-    <pathbin in inn.conf>/makedbz -i
-    mv history.n.hash  history.hash
-    mv history.n.index history.index
-    mv history.n.dir   history.dir
+Start B<innd> by running I<pathbin>/rc.news B<as the news user>.  It
+is also what you should launch in your init scripts so that INN starts when
+your server boots:
 
-    chmod 644 *
+    su news -s /bin/sh -c <pathbin in inn.conf>/rc.news
 
-(However, it is not necessary to do that since INN takes care of these files
-during the setup.)
+Samples of init.d and systemd init scripts are present in the F<contrib>
+directory (and certainly already set up on your system if you installed INN
+with a package for your distrubtion).
 
 =item *
 
-Create the cron jobs (especially B<news.daily>), the log files, and make
-the changes to your system's F<syslog.conf> as noted in F<INSTALL>.  Also
-create the cron job for B<nntpsend> if you've chosen that over B<innfeed>.
+Check F<news.crit>, F<news.err> and F<news.notice> in your I<pathlog>
+directory to see if everything went well; also use C<ps> to see if B<innd>
+is running.
 
 =item *
 
-For the time being, we can see if everything initially works without
-worrying about feeds or reader access.
+C<telnet localhost 119> and you should see either a welcome banner or a C<no
+permission to talk> message.  If not, investigate.
+
+Send C<QUIT> to end the telnet connection.
+
+=item *
+
+When you complete your configuration, do not forget to reload changed files
+(see the C<ctlinnd reload> command in the ctlinnd(8) man page).  You can also
+see whether C<ctlinnd checkfile> reports any problems.
 
 =back
 
-=head1 Run
+=head1 Additional Configuration
+
+The following features are commonly used.  Though not mandatory, they are
+recommended and can of course be set up later.
 
 =over 4
 
 =item *
 
-Start B<innd> by running I<pathbin>/rc.news B<as the news user>.  It
-is also what you should launch in your init scripts:
+You may want to configure the process of newsgroup control messages to keep
+your list of newsgroups up to date (search for F<PGPKEYS> in F<INSTALL> to
+find the Section explaining that).  Also see controlchan(8) for how to set up
+the F<newsfeeds> entry.
 
-    su news -s /bin/sh -c <pathbin in inn.conf>/rc.news
+=item *
+
+You may want to configure the process of NoCeM notices used to cancel unwanted
+articles like spam (see the perl-nocem(8) man page).
 
-Check I<pathlog>/news.notice to see if everything went well; also use
-C<ps> to see if B<innd> is running.
+=item *
+
+You may want to install a spam and abuse filter.  Good choices
+are either Cleanfeed (a widely used Perl filter you can find at
+L<http://www.mixmin.net/cleanfeed/>) or PyClean (also a great Python filter
+you can find at L<https://github.com/crooks/PyClean>).
 
-C<telnet localhost 119> and you should see either a welcome banner or a
-C<no permission to talk> message.  If not, investigate.
+You need to have an INN installation built with Perl and/or Python support to
+be able to use these filters.
 
 =item *
 
-C<man ctlinnd> now; you'll use C<ctlinnd reload> as you complete your
-configuration.  You can also see whether C<ctlinnd checkfile> reports
-any problems.
+You may want to submit your Path header field statistics to
+L<http://top1000.anthologeek.net/>.  Have a look at the ninpaths(8) man page
+to see how to do that.
 
 =back
 
@@ -251,20 +279,23 @@ All of this can be done while INN is run
 
 =item *
 
-To get your incoming feeds working, edit F<incoming.conf>.  When done,
-C<ctlinnd reload incoming.conf 'reason'> (where C<reason> is some text
-that will show up in the logs S<-- anything> will do).
+The first step is to get a news feed.  You can ask for an external feed in
+the news.admin.peering newsgroup.  Several news administrators will certainly
+respond and gracefully provide you with a news feed.
 
 =item *
 
-To get your outgoing feeds working, decide whether to use B<innfeed> or
-B<nntpsend>.  Edit F<newsfeeds> and either F<innfeed.conf> or
-F<nntpsend.ctl>.
+To get your incoming feeds working, edit F<incoming.conf>.  When done,
+C<ctlinnd reload incoming.conf 'reason'> to reload that file (where C<reason>
+is some text that will show up in the logs S<-- anything> will do).  You'll
+find examples in the incoming.conf(5) man page for how to set up this file.
 
-In F<newsfeeds>, if using B<innfeed>, use the option which doesn't require
-you to do a separate B<innfeed> configuration unless you know more than I do.
+=item *
 
-Then C<ctlinnd reload newsfeeds 'reason'>.
+To get your outgoing feeds working, edit F<newsfeeds> and F<innfeed.conf>.
+When done, C<ctlinnd reload newsfeeds 'reason'> and C<ctlinnd flush innfeed!>
+to reload these configuration files.  You'll find examples in the newsfeeds(5)
+and innfeed.conf(5) man pages for how to set up these files.
 
 =back
 
@@ -274,67 +305,24 @@ Then C<ctlinnd reload newsfeeds 'reason'
 
 =item *
 
-In F<readers.conf>, remember that auth and access blocks can be separated.
-
-Begin with auth.  Your auth for password users could look like this:
-
-    auth "foreignokay" {
-        auth: "ckpasswd -d <pathdb in inn.conf>/newsusers"
-        default: "<unauthenticated>"
-    }
-
-There is a Perl script in the ckpasswd(8) man page if you want to
-do authentications by password and have the appropriate libraries.
-Copy it to I<pathbin>, name the file something like F<makepasswd.pl>
-and change the internal paths to whatever you're using and wherever
-you're putting the newsusers database.  The standard Apache B<htpasswd>
-tool also works just fine to create INN password files.  For instance,
-a line for the newsusers database corresponding to the user C<user>
-with the password C<pass> would be C<user:LIfOpbjNaEQYE> as obtained
-by the following command:
-
-    % htpasswd -nbd user pass
-    user:LIfOpbjNaEQYE
-
-In case B<htpasswd> is not installed or if you do not want to depend
-on it, another command involving Perl does a similar job:
-
-    % perl -e 'print "user:".crypt("pass", "LI")."\n";'
-    user:LIfOpbjNaEQYE
-
-Follow with the access stanzas.  Something for people with passwords:
-
-    access "generalpeople" {
-        users: "*"
-        newsgroups: "*,!junk,!control,!control.*"
-    }
-
-And then something like one of the following two, depending on whether
-unauthenticated users get any access:
-
-    access "restrictive" {
-        users: "<unauthenticated>"
-        newsgroups: "!*"
-    }
-
-    access "readonly" {
-        users: "<unauthenticated>"
-        read: "local.*"
-        post: "!*"
-    }
+In F<readers.conf>, remember that authentication and authorization
+are configured in different blocks.  You'll find useful examples in the
+readers.conf(5) man page.  Also have a look at the description of the B<-f>
+flag in the ckpasswd(8) man page, if you need to set up a password file.
 
-You don't need to reload anything after modifying F<readers.conf>; every
-time an B<nnrpd> launches, it reads its configuration from disk.
+You don't need to reload anything after modifying F<readers.conf>; every time
+a news client connects to the server, a new B<nnrpd> process is spawned and
+reads its configuration from disk.
 
 =item *
 
-If you wish to use TLS/SSL for your readers, you can either use the same
+If you wish to use TLS for your readers, you can either use the same
 F<readers.conf> file or use two different files (for instance F<readers.conf>
-and F<readers-ssl.conf>).  The syntax is similar for both these files.
-You then need to start a second B<nnrpd> to listen to these connections
-to NNTPS port 563 and put something like that in your init scripts:
+and F<readers-tls.conf>).  The syntax is similar for both files.  You then
+need to start a second B<nnrpd> to listen to these connections to NNTPS port
+563 and put something like that in your init scripts:
 
-    su news -s /bin/sh -c '<pathbin>/nnrpd -D -c <pathetc>/readers-ssl.conf -p 563 -S'
+    su news -s /bin/sh -c '<pathbin>/nnrpd -D -c <pathetc>/readers-tls.conf -p 563 -S'
 
 Note that a news client which supports the STARTTLS command can also use
 the conventional NNTP port 119 to dynamically upgrade from unencrypted
diff -Nurp inn-2.6.4/doc/pod/ckpasswd.pod inn-2.6.5/doc/pod/ckpasswd.pod
--- inn-2.6.4/doc/pod/ckpasswd.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/ckpasswd.pod	2022-02-18 20:36:57.000000000 +0100
@@ -83,23 +83,20 @@ vaguely.  That means each line should lo
 
     username:pdIh9NCNslkq6
 
-(and each line may have an additional colon after the encrypted password
-and additional data; that data will be ignored by B<ckpasswd>).
-Lines starting with a number sign (C<#>) are ignored.  INN does not
-come with a utility to create the encrypted passwords, but B<htpasswd>
-(which comes with Apache) can do so and it's a quick job with Perl
-(see the example script under B<-d>, or also below).  If using Apache's
-B<htpasswd> program, be sure to give it the B<-d> option so that it
-will use crypt(3).
+(and each line may have an additional colon after the encrypted password and
+additional data; that data will be ignored by B<ckpasswd>).  Lines starting
+with a number sign (C<#>) are ignored.  INN does not come with a utility to
+create the encrypted passwords, but B<htpasswd> (which comes with Apache) can
+do so and it's a quick job with Perl (see the one-line example script below).
 
-A line in I<filename> for the user C<user> with the password C<pass>
-would be C<user:LIfOpbjNaEQYE> as obtained by the following command:
+A line in I<filename> for the user C<user> with the password C<pass> would be
+C<user:LIfOpbjNaEQYE> as obtained with the following command:
 
     % htpasswd -nbd user pass
     user:LIfOpbjNaEQYE
 
-In case B<htpasswd> is not installed or if you do not want to depend
-on it, another command involving Perl does a similar job:
+In case B<htpasswd> is not installed on your server, just use the following
+Perl command which does the same job:
 
     % perl -e 'print "user:".crypt("pass", "LI")."\n";'
     user:LIfOpbjNaEQYE
@@ -187,8 +184,6 @@ it will print some sort of error message
 
 Written by Russ Allbery <eagle@eyrie.org> for InterNetNews.
 
-$Id: ckpasswd.pod 9937 2015-09-02 12:44:39Z iulius $
-
 =head1 SEE ALSO
 
 crypt(3), nnrpd(8), pam(7), readers.conf(5).
diff -Nurp inn-2.6.4/doc/pod/cnfsheadconf.pod inn-2.6.5/doc/pod/cnfsheadconf.pod
--- inn-2.6.4/doc/pod/cnfsheadconf.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/cnfsheadconf.pod	2022-02-18 20:36:57.000000000 +0100
@@ -37,8 +37,6 @@ Prompt for modifications to make to cycb
 Written by Katsuhiro Kondou <kondou@nec.co.jp> for InterNetNews.  Converted
 to POD by Julien Elie.
 
-$Id: cnfsheadconf.pod 8545 2009-07-03 21:56:39Z iulius $
-
 =head1 SEE ALSO
 
 cycbuff.conf(5), inn.conf(5), storage.conf(5).
diff -Nurp inn-2.6.4/doc/pod/cnfsstat.pod inn-2.6.5/doc/pod/cnfsstat.pod
--- inn-2.6.4/doc/pod/cnfsstat.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/cnfsstat.pod	2022-02-18 20:36:57.000000000 +0100
@@ -78,8 +78,6 @@ storage and the F<history> file.
 Written by Katsuhiro Kondou <kondou@nec.co.jp> for InterNetNews.  Converted
 to POD by Julien Elie.
 
-$Id: cnfsstat.pod 9721 2014-09-24 17:35:46Z iulius $
-
 =head1 SEE ALSO
 
 cycbuff.conf(5), history(5), inn.conf(5), rc.news(8), storage.conf(5).
diff -Nurp inn-2.6.4/doc/pod/control.ctl.pod inn-2.6.5/doc/pod/control.ctl.pod
--- inn-2.6.4/doc/pod/control.ctl.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/control.ctl.pod	2022-02-18 20:36:57.000000000 +0100
@@ -362,8 +362,6 @@ could have added them to the F<localgrou
 Written by Rich $alz <rsalz@uunet.uu.net> for InterNetNews.  Rewritten in
 POD by Russ Allbery <eagle@eyrie.org>.
 
-$Id: control.ctl.pod 10283 2018-05-14 12:43:05Z iulius $
-
 =head1 SEE ALSO
 
 controlchan(8), inn.conf(5), innd(8), newsfeeds(5), newsgroups(5),
diff -Nurp inn-2.6.4/doc/pod/controlchan.pod inn-2.6.5/doc/pod/controlchan.pod
--- inn-2.6.4/doc/pod/controlchan.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/controlchan.pod	2022-02-18 20:36:57.000000000 +0100
@@ -81,8 +81,6 @@ Gives usage information.
 Written by Katsuhiro Kondou <kondou@nec.co.jp> for InterNetNews.  Converted to
 POD by Julien Elie.
 
-$Id: controlchan.pod 10283 2018-05-14 12:43:05Z iulius $
-
 =head1 SEE ALSO
 
 control.ctl(5), inn.conf(5).
diff -Nurp inn-2.6.4/doc/pod/convdate.pod inn-2.6.5/doc/pod/convdate.pod
--- inn-2.6.4/doc/pod/convdate.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/convdate.pod	2022-02-18 20:36:57.000000000 +0100
@@ -94,8 +94,6 @@ determine (or at least override) the loc
 Written by Rich $alz <rsalz@uunet.uu.net>, rewritten and updated by Russ
 Allbery <eagle@eyrie.org> for the B<-d> and B<-l> flags.
 
-$Id: convdate.pod 9971 2015-12-10 20:30:10Z iulius $
-
 =head1 SEE ALSO
 
 active.times(5).
diff -Nurp inn-2.6.4/doc/pod/ctlinnd.pod inn-2.6.5/doc/pod/ctlinnd.pod
--- inn-2.6.4/doc/pod/ctlinnd.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/ctlinnd.pod	2022-02-18 20:36:57.000000000 +0100
@@ -496,11 +496,9 @@ server replies are limited to S<4 KB> on
 Written by Rich $alz <rsalz@uunet.uu.net> for InterNetNews.  Rewritten in
 POD by Russ Allbery <eagle@eyrie.org>.
 
-$Id: ctlinnd.pod 9767 2014-12-07 21:13:43Z iulius $
-
 =head1 SEE ALSO
 
 active(5), active.times(5), buffchan(8), incoming.conf(5), innd(8),
-inndcomm(3), inn.conf(5), newsfeeds(5), nnrpd(8).
+inn.conf(5), libinn_inndcomm(3), newsfeeds(5), nnrpd(8).
 
 =cut
diff -Nurp inn-2.6.4/doc/pod/cvtbatch.pod inn-2.6.5/doc/pod/cvtbatch.pod
--- inn-2.6.4/doc/pod/cvtbatch.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/cvtbatch.pod	2022-02-18 20:36:57.000000000 +0100
@@ -48,8 +48,6 @@ followed by the message-ID of the articl
 Written by Rich $alz <rsalz@uunet.uu.net> for InterNetNews.  Converted
 to POD by Julien Elie.
 
-$Id: cvtbatch.pod 8704 2009-11-03 18:51:44Z iulius $
-
 =head1 SEE ALSO
 
 grephistory(1), newsfeeds(5).
diff -Nurp inn-2.6.4/doc/pod/cycbuff.conf.pod inn-2.6.5/doc/pod/cycbuff.conf.pod
--- inn-2.6.4/doc/pod/cycbuff.conf.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/cycbuff.conf.pod	2022-02-18 20:36:57.000000000 +0100
@@ -70,6 +70,8 @@ device, it should be S<< <size> * 1024 b
 
 If you're trying to stay under S<2 GB>, keep your sizes below C<2097152>.
 
+Note that CNFSv4 supports files and partitions up to S<16 TB>.
+
 =item I<metacycbuff>:<name>:<buffer>[,<buffer>,...][:<mode>]
 
 Specifies a collection of CNFS buffers that make up a single logical
@@ -219,8 +221,6 @@ where C<ONE> will be whatever you called
 Written by Katsuhiro Kondou <kondou@nec.co.jp> for InterNetNews.
 Rewritten into POD by Russ Allbery <eagle@eyrie.org>.
 
-$Id: cycbuff.conf.pod 10230 2018-01-28 21:22:21Z iulius $
-
 =head1 SEE ALSO
 
 ctlinnd(8), innd(8), nnrpd(8), sm(1), storage.conf(5).
diff -Nurp inn-2.6.4/doc/pod/distrib.pats.pod inn-2.6.5/doc/pod/distrib.pats.pod
--- inn-2.6.4/doc/pod/distrib.pats.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/distrib.pats.pod	2022-02-18 20:36:57.000000000 +0100
@@ -17,7 +17,7 @@ should be an arbitrary integer greater t
 the file is only important if groups have equal weight (in which case, the
 first matching line will be used).
 
-The second field is either the name of a newsgroup or a uwildmat(3)-style
+The second field is either the name of a newsgroup or a I<uwildmat>-style
 pattern to specify a set of newsgroups.
 
 The third field is the value that should be used for the Distribution:
@@ -43,10 +43,8 @@ in distributions(5).
 Written by Rich $alz <rsalz@uunet.uu.net> for InterNetNews.  Converted to
 POD by Russ Allbery <eagle@eyrie.org>.
 
-$Id: distrib.pats.pod 9767 2014-12-07 21:13:43Z iulius $
-
 =head1 SEE ALSO
 
-distributions(5), inn.conf(5), newsfeeds(5), nnrpd(8), uwildmat(3).
+distributions(5), inn.conf(5), libinn_uwildmat(3), newsfeeds(5), nnrpd(8).
 
 =cut
diff -Nurp inn-2.6.4/doc/pod/distributions.pod inn-2.6.5/doc/pod/distributions.pod
--- inn-2.6.4/doc/pod/distributions.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/distributions.pod	2022-02-18 20:36:57.000000000 +0100
@@ -40,8 +40,6 @@ if distrib.pats(5) is correctly configur
 
 Written by Julien Elie for InterNetNews.
 
-$Id: distributions.pod 9137 2010-10-29 18:09:12Z iulius $
-
 =head1 SEE ALSO
 
 distrib.pats(5), newsfeeds(5), nnrpd(8).
diff -Nurp inn-2.6.4/doc/pod/docheckgroups.pod inn-2.6.5/doc/pod/docheckgroups.pod
--- inn-2.6.4/doc/pod/docheckgroups.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/docheckgroups.pod	2022-02-18 20:36:57.000000000 +0100
@@ -186,8 +186,6 @@ The list of local newsgroups along with
 
 Documentation written by Julien Elie for InterNetNews.
 
-$Id: docheckgroups.pod 8357 2009-02-27 17:56:00Z iulius $
-
 =head1 SEE ALSO
 
 active(5), controlchan(8), ctlinnd(8), mod-active(8), newsgroups(5).
diff -Nurp inn-2.6.4/doc/pod/domain.pod inn-2.6.5/doc/pod/domain.pod
--- inn-2.6.4/doc/pod/domain.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/domain.pod	2022-02-18 20:36:57.000000000 +0100
@@ -51,8 +51,6 @@ If so, the example above should reflect
 
 This documentation was written by Jeffrey S<M. Vinocur> <jeff@litech.org>.
 
-$Id: domain.pod 8200 2008-11-30 13:31:30Z iulius $
-
 =head1 SEE ALSO
 
 nnrpd(8), readers.conf(5)
diff -Nurp inn-2.6.4/doc/pod/expire.ctl.pod inn-2.6.5/doc/pod/expire.ctl.pod
--- inn-2.6.4/doc/pod/expire.ctl.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/expire.ctl.pod	2022-02-18 20:36:57.000000000 +0100
@@ -31,6 +31,7 @@ where <days> is a decimal number that sp
 a history record for a given message-ID is retained (from its original
 posting time), regardless of whether the article is present in the spool.
 (History entries for articles still present in the spool are always retained.)
+Setting it to C<0> means history records will be retained forever.
 
 The primary reason to retain a record of old articles is in case a peer
 offers old articles that were previously accepted but have already
@@ -58,7 +59,7 @@ I<groupbaseexpiry>, and therefore the tw
 same file.
 
 Normally, a rule matches a newsgroup through the combination of the
-<pattern> and <flag> fields.  <pattern> is a uwildmat(3)-style pattern,
+<pattern> and <flag> fields.  <pattern> is a I<uwildmat>-style pattern,
 specifying the newsgroups to which the line is applied.  Note that the
 last matching entry will be used, so general patterns (such as defaults
 for all groups where <pattern> is C<*>) should appear at the beginning of
@@ -169,11 +170,9 @@ When I<groupbaseexpiry> is false, for cl
 Written by Rich $alz <rsalz@uunet.uu.net> for InterNetNews.  Converted to
 POD by Russ Allbery <eagle@eyrie.org>.
 
-$Id: expire.ctl.pod 9767 2014-12-07 21:13:43Z iulius $
-
 =head1 SEE ALSO
 
-expire(8), expireover(8), inn.conf(5), innd(8), news.daily(8),
-storage.conf(5), uwildmat(3).
+expire(8), expireover(8), inn.conf(5), innd(8), libinn_uwildmat(3),
+news.daily(8), storage.conf(5).
 
 =cut
diff -Nurp inn-2.6.4/doc/pod/expire.pod inn-2.6.5/doc/pod/expire.pod
--- inn-2.6.4/doc/pod/expire.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/expire.pod	2022-02-18 20:36:57.000000000 +0100
@@ -55,7 +55,7 @@ to the specified I<file>.
 =item B<-h> I<file>
 
 To specify an alternate input text history file, use the B<-h> flag.
-B<expire> uses the old dbz(3) database to determine the size of the
+B<expire> uses the old I<dbz> database to determine the size of the
 new one.  (If the B<-d> flag is not used, the output filename will be
 the same as the input filename with an extension of C<.n>.)
 
@@ -151,11 +151,9 @@ is specified, the file I<pathetc>/expire
 Written by Rich $alz <rsalz@uunet.uu.net> for InterNetNews.  Converted to
 POD by Julien Elie.
 
-$Id: expire.pod 8573 2009-08-18 13:49:54Z iulius $
-
 =head1 SEE ALSO
 
-ctlinnd(8), dbz(3), expire.ctl(5), history(5), inn.conf(5), innd(8),
-inndcomm(3), news.daily(8).
+ctlinnd(8), expire.ctl(5), history(5), inn.conf(5), innd(8), libinn_dbz(3),
+libinn_inndcomm(3), news.daily(8).
 
 =cut
diff -Nurp inn-2.6.4/doc/pod/expireover.pod inn-2.6.5/doc/pod/expireover.pod
--- inn-2.6.4/doc/pod/expireover.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/expireover.pod	2022-02-18 20:36:57.000000000 +0100
@@ -145,8 +145,6 @@ Written by Rob Robertson <rob@violet.ber
 <rsalz@uunet.uu.net> (with help from Dave Lawrence <tale@uunet.uu.net>)
 for InterNetNews.
 
-$Id: expireover.pod 8571 2009-08-17 19:10:07Z iulius $
-
 =head1 SEE ALSO
 
 active(5), ctlinnd(8), expire(8), expire.ctl(5), inn.conf(5),
diff -Nurp inn-2.6.4/doc/pod/expirerm.pod inn-2.6.5/doc/pod/expirerm.pod
--- inn-2.6.4/doc/pod/expirerm.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/expirerm.pod	2022-02-18 20:36:57.000000000 +0100
@@ -24,8 +24,6 @@ I<file> is renamed to I<pathlog>/expire.
 Written by Landon Curt Noll <chongo@toad.com> and Rich $alz
 <rsalz@uunet.uu.net>.  Converted to POD by Julien Elie.
 
-$Id: expirerm.pod 8573 2009-08-18 13:49:54Z iulius $
-
 =head1 SEE ALSO
 
 expire(8), fastrm(8), newslog(5).
diff -Nurp inn-2.6.4/doc/pod/external-auth.pod inn-2.6.5/doc/pod/external-auth.pod
--- inn-2.6.4/doc/pod/external-auth.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/external-auth.pod	2022-02-18 20:36:57.000000000 +0100
@@ -113,6 +113,4 @@ you write, and F<ident.c> as an example
 Written by Aidan Cully for InterNetNews.  This documentation was rewritten
 in POD by Jeffrey S<M. Vinocur> <jeff@litech.org>.
 
-$Id: external-auth.pod 8200 2008-11-30 13:31:30Z iulius $
-
 =cut
diff -Nurp inn-2.6.4/doc/pod/fastrm.pod inn-2.6.5/doc/pod/fastrm.pod
--- inn-2.6.4/doc/pod/fastrm.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/fastrm.pod	2022-02-18 20:36:57.000000000 +0100
@@ -181,8 +181,6 @@ general fast file removal program.
 B<fastrm> was originally written by <kre@munnari.oz.au>.  This manual page
 was rewritten in POD by Russ Allbery <eagle@eyrie.org> for InterNetNews.
 
-$Id: fastrm.pod 9767 2014-12-07 21:13:43Z iulius $
-
 =head1 SEE ALSO
 
 expirerm(8).
diff -Nurp inn-2.6.4/doc/pod/filechan.pod inn-2.6.5/doc/pod/filechan.pod
--- inn-2.6.4/doc/pod/filechan.pod	1970-01-01 01:00:00.000000000 +0100
+++ inn-2.6.5/doc/pod/filechan.pod	2022-02-18 20:36:57.000000000 +0100
@@ -0,0 +1,114 @@
+=head1 NAME
+
+filechan - File-writing backend for INN
+
+=head1 SYNOPSIS
+
+B<filechan> [B<-d> I<directory>] [B<-f> I<num-fields>] [B<-m> I<map-file>]
+[B<-p> I<pid-file>]
+
+=head1 DESCRIPTION
+
+B<filechan> reads lines from standard input and copies the initial fields in
+each line to the files named by the remaining fields on the line.  B<filechan>
+is intended to be called by B<innd> as a channel feed.  (It is not a full
+exploder and does not accept commands; see newsfeeds(5) for a description
+of the difference, and buffchan(8) for an exploder program.)
+
+The input is interpreted as a sequence of lines.  Each line contains a fixed
+number of initial fields, followed by a variable number of filename fields.
+All fields in a line are separated by whitespace and do not contain any
+whitespace.  The default number of initial fields is one.
+
+For each line of input, B<filechan> writes the initial fields, separated
+by a space and followed by a newline, to each of the files named in the
+filename fields.  When writing to a file, B<filechan> opens it in append
+mode and tries to lock it and change the ownership to the user and group
+owning the directory where the file is being written.
+
+Because the time window in which a file is open is very small, complicated
+flushing and locking protocols have not been implemented and are not
+necessarily needed for the way B<filechan> is called and works; mv(1)
+followed by sleep(1) for a couple of seconds is sufficient.
+
+=head1 OPTIONS
+
+=over 4
+
+=item B<-d> I<directory>
+
+By default, B<filechan> writes its output into the I<pathoutgoing> directory.
+This flag may be used to specify a directory the program should change to
+before starting.
+
+=item B<-f> I<num-fields>
+
+This flag specifies a different number of initial fields.
+
+=item B<-m> I<map-file>
+
+A map file may be specified by using this flag.  Blank lines and lines
+starting with a number sign (C<#>) are ignored.  All other lines should have
+two host names separated by a colon.  The first field is the name that may
+appear in the input stream; the second field names the file to be used when
+the name in the first field appears.
+
+For example, the following map file may be used to map the short names used
+in the example below to the full domain names:
+
+    # This is a comment.
+    uunet:news.uu.net
+    foo:foo.com
+    munnari:munnari.oz.au
+
+=item B<-p> I<pid-file>
+
+If this flag is used, B<filechan> will write a line containing its process ID
+(in text) to the specified file.
+
+=back
+
+=head1 EXAMPLES
+
+If B<filechan> is invoked with C<-f 2> and given the following input:
+
+    news.software.nntp <1643@munnari.oz.au> foo uunet
+    news.software.nntp <102060@litchi.foo.com> uunet munnari
+    comp.sources.unix <999@news.foo.com> foo uunet munnari
+
+then the file F<foo> in I<pathoutgoing> will have these lines:
+
+    news.software.nntp <1643@munnari.oz.au>
+    comp.sources.unix <999@news.foo.com>
+
+the file F<munnari> in I<pathoutgoing> will have these lines:
+
+    news.software.nntp <102060@litchi.foo.com>
+    comp.sources.unix <999@news.foo.com>
+
+and the file F<uunet> in I<pathoutgoing> will have these lines:
+
+    news.software.nntp <1643@munnari.oz.au>
+    news.software.nntp <102060@litchi.foo.com>
+    comp.sources.unix <999@news.foo.com>
+
+Using B<filechan> this way can be done in F<newsfeeds> with for instance:
+
+    foo:*,@misc.*:Ap,Tm:filechan!
+    munnari:*,@rec.*:Ap,Tm:filechan!
+    uunet:*:Ap,Tm:filechan!
+    filechan!:*:Tc,WGm*:<pathbin>/filechan -f 2
+
+It will generate the examples above.  See the C<W> flag in newsfeeds(5)
+for how to parameter the output.
+
+=head1 HISTORY
+
+Written by Robert Elz <kre@munnari.oz.au>, flags added by Rich $alz
+<rsalz@uunet.uu.net>.  Rewritten into POD by Julien Elie.
+
+=head1 SEE ALSO
+
+buffchan(8), newsfeeds(5).
+
+=cut
diff -Nurp inn-2.6.4/doc/pod/getlist.pod inn-2.6.5/doc/pod/getlist.pod
--- inn-2.6.4/doc/pod/getlist.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/getlist.pod	2022-02-18 20:36:57.000000000 +0100
@@ -25,7 +25,7 @@ active.times(5), distrib.pats(5) and new
 The listing files other than the F<active> file are common extensions to the
 NNTP protocol and may not be available on all servers.  For instance, C<counts>
 C<distributions>, C<headers>, C<moderators>, C<motd>, C<overview.fmt> and
-C<subscriptions>, amongst other, may be available.  Moreover, a uwildmat(3)
+C<subscriptions>, amongst other, may be available.  Moreover, a I<uwildmat>
 pattern I<pattern> may also be usable for some of these listing files.
 
 For more information on the formats of these files, see distributions(5),
@@ -40,7 +40,7 @@ is mentioned just before the flag of thi
 
 The I<pattern> parameter may be used with a I<list> value of C<active>,
 C<active.times> or C<newsgroups> to limit the output.  If given, only
-entries corresponding to newsgroups that match the uwildmat(3) pattern
+entries corresponding to newsgroups that match the I<uwildmat> pattern
 I<pattern> will be printed.
 
 If the I<list> parameter is C<active>, a third parameter, I<types>, may
@@ -102,12 +102,10 @@ to protect it from the shell.
 Written by Landon Curt Noll <chongo@toad.com> for InterNetNews.  Rewritten
 in POD by Russ Allbery <eagle@eyrie.org>.
 
-$Id: getlist.pod 9767 2014-12-07 21:13:43Z iulius $
-
 =head1 SEE ALSO
 
 active(5), active.times(5), distrib.pats(5), distributions(5), inn.conf(5),
-moderators(5), motd.news(5), newsgroups(5), nnrpd(8), passwd.nntp(5),
-subscriptions(5), uwildmat(3).
+libinn_uwildmat(3), moderators(5), motd.news(5), newsgroups(5), nnrpd(8),
+passwd.nntp(5), subscriptions(5).
 
 =cut
diff -Nurp inn-2.6.4/doc/pod/grephistory.pod inn-2.6.5/doc/pod/grephistory.pod
--- inn-2.6.4/doc/pod/grephistory.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/grephistory.pod	2022-02-18 20:36:57.000000000 +0100
@@ -112,8 +112,6 @@ It matches the number recorded in histor
 Written by Rich $alz <rsalz@uunet.uu.net> for InterNetNews.  Rewritten in
 POD by Russ Allbery <eagle@eyrie.org>.
 
-$Id: grephistory.pod 9971 2015-12-10 20:30:10Z iulius $
-
 =head1 SEE ALSO
 
 history(5), inn.conf(5), sm(1).
diff -Nurp inn-2.6.4/doc/pod/hacking.pod inn-2.6.5/doc/pod/hacking.pod
--- inn-2.6.4/doc/pod/hacking.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/hacking.pod	2022-02-18 20:36:57.000000000 +0100
@@ -8,14 +8,14 @@ contributors, and secondarily as documen
 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 check out the current
-development tree using Subversion from:
+considerably easier to integrate your work.  You can check out or clone
+the current development tree using Git from:
 
-    <https://inn.eyrie.org/svn/>
+    <https://github.com/InterNetNews/inn.git>
 
-or view it with Trac source browser at:
+or browse the current development source on Github at:
 
-    <https://inn.eyrie.org/trac/browser/>
+    <https://github.com/InterNetNews/inn>
 
 You will need S<autoconf 2.64> or later to use the development tree.  After
 checking out the tree, run C<./autogen> to generate the necessary autoconf
@@ -62,7 +62,7 @@ F<include/config.h.in>, run C<autoheader
 both, you can run C<./autogen>.  Please don't include patches to either
 F<configure> or F<include/config.h.in> when sending patches to INN;
 instead, note in your patch that those files must be regenerated.  These
-(and all other) generated files should not be checked into Subversion.
+(and all other) generated files should not be checked into Git.
 
 At the time of this writing, S<autoconf 2.64> or later is required.
 
@@ -551,9 +551,7 @@ Other multiline comments in the source a
     /* This is a
        multiline comment. */
 
-Comments before functions saying what they do are nice to have.  In
-general, the RCS/SVN C<Id> tag is on the first line of each source file
-since it's useful to know when a file was last modified.
+Comments before functions saying what they do are nice to have.
 
 =item *
 
@@ -736,6 +734,8 @@ so as to be sure they work fine (especia
 B<--enable-tagged-hash>, B<--enable-keywords>, B<--enable-largefiles>
 and B<--enable-reduced-depends>).
 
+Update F<INSTALL> with the list of supported systems.
+
 =item 3.
 
 Update copyright years in F<LICENSE>.
@@ -768,17 +768,15 @@ L<https://www.gnu.org/software/libtool/m
 
 =item 7.
 
-If making a major release, branch the source tree by creating a new
-directory under F<branches> in Subversion named after the major release.
-This branch will be used for minor releases based on that major release
-and can be done a little while before the C<.0> release of that major
-release.
+If making a major release, create a new branch in Git named after the
+major release.  This branch will be used for minor releases based on
+that major release and can be done a little while before the C<.0>
+release of that major release.
 
-    svn copy -r ZZZZ -m "Branch Y.Y.0 release." \
-        file:///srv/svn/inn/trunk file:///srv/svn/inn/branches/Y.Y
+    git checkout -b Y.Y
 
 Then, in that newly created branch, remove the first paragraph in
-F<doc/pod/readme.pod> which deals with development versions.
+F<readme.pod> which deals with development versions.
 
 =item 8.
 
@@ -811,15 +809,7 @@ differences; otherwise, fix the F<MANIFE
 
 Run C<make release> for a final release, C<support/mksnapshot BETA b1> for
 the first beta version of a new release, or C<support/mksnapshot RC rc1>
-for the first release candidate version of a new release.  Note that you
-need to have a copy of B<svn2cl> from L<https://arthurdejong.org/svn2cl/>
-to do this; at least version 0.7 is required.  Start the F<ChangeLog> at
-the time of the previous release.  (Eventually, the script will be smart
-enough to do this for you.)
-
-Check that the F<ChangeLog> file is correct; otherwise, regenerate it or
-manually edit it.  Then run again C<make release> or any other command
-you used.
+for the first release candidate version of a new release.
 
 =item 10.
 
@@ -874,25 +864,30 @@ C<webmaster>).
 
 =item 14.
 
-After the ISC web site has been updated with links towards the new
-release, send an announce on inn-announce and in news.software.nntp
-(with a possible crosspost to news.admin.announce).
+Publish a release in GitHub, based on the commit used to generate the release
+tarball.  Include the description from F<NEWS>, and attach the tarball as well
+as its signature.
 
-=item 15.
+GitHub will create the appropriate annotated tag when publishing the release.
 
-Tag the checked-out tree that was used for generating the release with a
-release tag by copying it to F<tags> in Subversion.
+=item 15.
 
-    svn copy -r ZZZZ -m "Tag Y.Y.Y release." \
-        file:///srv/svn/inn/branches/Y.Y file:///srv/svn/inn/tags/Y.Y.Y
+After ftp.isc.org has correctly mirrored the release, send an announce
+on inn-announce and in news.software.nntp (with a possible crosspost to
+news.admin.announce).
+
+The ISC web site does not need being updated as it does not directly link to
+the release, nor mention the version of the last release.  (Just check the
+information at L<https://www.isc.org/othersoftware/#INN> is still available
+and accurate, though.)
 
 =item 16.
 
 Bump revision numbers to reflect the one of the following release,
-especially in F<doc/pod/install.pod> and F<doc/pod/readme.pod>
+especially in F<doc/pod/install.pod> and F<readme.pod>
 for major releases, F<configure.ac> and F<Makefile.global.in> for both
-minor and major releases.  The release versions in the Trac wiki should
-also be updated.
+minor and major releases.  The release versions in the GitHub bug tracker
+should also be updated.
 
 =item 17.
 
@@ -927,18 +922,17 @@ a lot of interesting discussion of why N
 A collection of documents about the Usenet article format, including
 most of the relevant RFCs and Internet-Drafts.
 
-=item L<http://www.ietf.org/mail-archive/web/usefor/current/maillist.html>
+=item L<https://mailarchive.ietf.org/arch/browse/usefor/>
 
 The archives for the USEFOR IETF working group, the working group for the
 S<RFC 1036> replacement (the format of Usenet articles), now published as
 S<RFC 5536> and S<RFC 5537>.
 
-=item L<http://www.mibsoftware.com/userkt/inn/dev/>
+=item L<http://www.mibsoftware.com/userkt/userkt.html>
 
-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.  However, please note that INN development now uses Subversion.
+Forrest Cavalier provides several tools related to earlier versions
+of INN (2.0 to 2.3.x).  His web site is a great source of information
+about Usenet in general.
 
 =item L<http://tools.ietf.org/html/draft-lutchann-ipv6-intro-00>
 
@@ -947,6 +941,4 @@ technical details as needed, useful when
 
 =back
 
-$Id: hacking.pod 10531 2021-01-20 11:59:59Z iulius $
-
 =cut
diff -Nurp inn-2.6.4/doc/pod/history.pod inn-2.6.5/doc/pod/history.pod
--- inn-2.6.4/doc/pod/history.pod	1970-01-01 01:00:00.000000000 +0100
+++ inn-2.6.5/doc/pod/history.pod	2022-02-18 20:36:57.000000000 +0100
@@ -0,0 +1,64 @@
+=head1 NAME
+
+history - Record of current and recently expired Usenet articles
+
+=head1 DESCRIPTION
+
+The file I<pathdb>/history keeps a record of all articles currently
+stored in the news system, as well as those that have been received but
+since expired.  In a typical production environment, this file will be
+many megabytes.
+
+The file consists of text lines.  Each line corresponds to one article.
+The file is normally kept sorted in the order in which articles are
+received, although this is not a requirement.  B<innd> appends a new
+line each time it files an article, and B<expire> builds a new version
+of the file by removing old articles and purging old entries.
+
+Each line consists of two or three fields separated by a tab, shown
+below as C< \t >:
+
+    [hash] \t date
+    [hash] \t date \t @token@
+
+The I<hash> field is the ASCII representation of the hash of the
+Message-ID.  This is directly used for the key of the I<dbz>.
+
+The I<date> field consists of three sub-fields separated by a tilde.
+All sub-fields are the text representation of the number of seconds
+since the epoch, that is to say a I<time_t> like in C<gettimeofday(2)>.
+The first sub-field is the article's arrival date.  If copies of the
+article are still present, then the second sub-field is either the value
+of the article's Expires header field, or a hyphen if no expiration
+date was specified.  If an article has been expired, then the second
+sub-field will be a hyphen.  The third sub-field is the value of the
+article's Date header field, recording when the article was posted.
+
+The I<token> field is a token of the article.  This field is empty if
+the article has been expired.
+
+For example, an article whose Message-ID was
+<7q2saq$sal$1@isrv4.pa.vix.com>, posted on 26 Aug 1999 08:02:34 GMT
+and received at 26 Aug 1999 08:06:54 GMT, could have a history line
+(broken into three lines for display) like the following:
+
+    [E6184A5BC2898A35A3140B149DE91D5C] \t
+        935678987~-~935678821 \t
+        @030154574F00000000000007CE3B000004BA@
+
+In addition to the text file, there is a I<dbz> database associated
+with the file that uses the Message-ID field as a key to determine the
+offset in the text file where the associated line begins.  For historical
+reasons, the key includes the trailing C<\0> byte (which is not stored
+in the text file).
+
+=head1 HISTORY
+
+Written by Rich $alz <rsalz@uunet.uu.net> for InterNetNews.  Rewritten
+into POD by Julien Elie.
+
+=head1 SEE ALSO
+
+expire(8), inn.conf(5), innd(8), libinn_dbz(3), makehistory(8).
+
+=cut
diff -Nurp inn-2.6.4/doc/pod/hook-perl.pod inn-2.6.5/doc/pod/hook-perl.pod
--- inn-2.6.4/doc/pod/hook-perl.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/hook-perl.pod	2022-02-18 20:36:57.000000000 +0100
@@ -679,6 +679,4 @@ Usenet daily.  It uses F<filter_nnrpd.pl
 
 =back
 
-$Id: hook-perl.pod 10445 2020-12-09 21:09:12Z iulius $
-
 =cut
diff -Nurp inn-2.6.4/doc/pod/hook-python.pod inn-2.6.5/doc/pod/hook-python.pod
--- inn-2.6.4/doc/pod/hook-python.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/hook-python.pod	2022-02-18 20:36:57.000000000 +0100
@@ -500,7 +500,7 @@ client is closed, the method C<access_cl
 
 =head2 Writing a Python B<nnrpd> Authentication Module
 
-You need to create a F<nnrpd_auth.py> module in INN's filter directory
+You need to create an F<nnrpd_auth.py> module in INN's filter directory
 (see the I<pathfilter> setting in F<inn.conf>) where you should define a
 class holding certain methods depending on which hooks you want to use.
 
@@ -712,6 +712,4 @@ an extremely powerful spam filter on Use
 
 =back
 
-$Id: hook-python.pod 10282 2018-05-14 12:42:14Z iulius $
-
 =cut
diff -Nurp inn-2.6.4/doc/pod/ident.pod inn-2.6.5/doc/pod/ident.pod
--- inn-2.6.4/doc/pod/ident.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/ident.pod	2022-02-18 20:36:57.000000000 +0100
@@ -61,8 +61,6 @@ network whose machines respond to ident
 
 This documentation was written by Jeffrey S<M. Vinocur> <jeff@litech.org>.
 
-$Id: ident.pod 8200 2008-11-30 13:31:30Z iulius $
-
 =head1 SEE ALSO
 
 nnrpd(8), readers.conf(5)
diff -Nurp inn-2.6.4/doc/pod/incoming.conf.pod inn-2.6.5/doc/pod/incoming.conf.pod
--- inn-2.6.4/doc/pod/incoming.conf.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/incoming.conf.pod	2022-02-18 20:36:57.000000000 +0100
@@ -2,6 +2,24 @@
 
 incoming.conf - Configuration of incoming news feeds
 
+=head1 IN A NUTSHELL
+
+The I<incoming.conf> file configures from which remote peers B<innd> accepts
+NNTP feeds.
+
+A common entry to allow C<news.server.com> as an incoming peer is:
+
+    peer news.server.com {
+        hostname: "news.server.com"
+    }
+
+The port used for incoming feeds is the one B<innd> is listening on.
+
+After any changes, run C<inncheck> to perform basic syntax checks, and reload
+this configuration file with the following command:
+
+    ctlinnd reload incoming.conf 'new peer'
+
 =head1 DESCRIPTION
 
 The file I<pathetc>/incoming.conf consists of three types of entries:
@@ -185,10 +203,8 @@ This key requires a boolean value.  It d
 Written by Fabien Tassin <fta@sofaraway.org> for InterNetNews.  Converted to
 POD by Julien Elie.
 
-$Id: incoming.conf.pod 10179 2017-09-18 20:13:48Z iulius $
-
 =head1 SEE ALSO
 
-inn.conf(5), innd(8), newsfeeds(5), uwildmat(3).
+inn.conf(5), innd(8), libinn_uwildmat(3), newsfeeds(5).
 
 =cut
diff -Nurp inn-2.6.4/doc/pod/inews.pod inn-2.6.5/doc/pod/inews.pod
--- inn-2.6.4/doc/pod/inews.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/inews.pod	2022-02-18 20:36:57.000000000 +0100
@@ -135,8 +135,6 @@ Unix news clients or by themselves.
 Written by Rich $alz <rsalz@uunet.uu.net> for InterNetNews.  Rewritten in
 POD by Russ Allbery <eagle@eyrie.org>.
 
-$Id: inews.pod 9767 2014-12-07 21:13:43Z iulius $
-
 =head1 SEE ALSO
 
 inn.conf(5), passwd.nntp(5), rnews(1).
diff -Nurp inn-2.6.4/doc/pod/inn-radius.conf.pod inn-2.6.5/doc/pod/inn-radius.conf.pod
--- inn-2.6.4/doc/pod/inn-radius.conf.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/inn-radius.conf.pod	2022-02-18 20:36:57.000000000 +0100
@@ -102,8 +102,6 @@ The shared secret with the RADIUS server
 This documentation was written by Russ Allbery <eagle@eyrie.org> based on
 the comments in the sample F<inn-radius.conf> file by Yury S<B. Razbegin>.
 
-$Id: inn-radius.conf.pod 9940 2015-09-04 12:58:15Z iulius $
-
 =head1 SEE ALSO
 
 radius(8).
diff -Nurp inn-2.6.4/doc/pod/inn.conf.pod inn-2.6.5/doc/pod/inn.conf.pod
--- inn-2.6.4/doc/pod/inn.conf.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/inn.conf.pod	2022-02-18 20:36:57.000000000 +0100
@@ -22,12 +22,12 @@ other lines specify parameters, and shou
 
     <name>: <value>
 
-(Any amount of whitespace can be put after the colon and is optional.)  If
-the value contains embedded whitespace or any of the characters C<[]<>"\:>,
-it must be enclosed in double quotes ("").  A backslash (C<\>) can be used
-to escape quotes and backslashes inside double quotes.  <name> is
-case-sensitive; C<server> is not the same as C<Server> or C<SERVER>.
-(F<inn.conf> parameters are generally all in lowercase.)
+(Any amount of whitespace can be put after the colon and is optional.)  If the
+value contains embedded whitespace or any of the characters C<< []<>{}"\:; >>,
+it must be enclosed in double quotes ("").  A backslash (C<\>) can be used to
+escape quotes and backslashes inside double quotes.  <name> is case-sensitive;
+C<server> is not the same as C<Server> or C<SERVER>.  (F<inn.conf> parameters
+are generally all in lowercase.)
 
 If <name> occurs more than once in the file, the first value is used.
 Some parameters specified in the file may be overridden by environment
@@ -416,8 +416,8 @@ be set.
 
 =item C<hisv6>
 
-Stores history data in the INN history v6 format:  history(5) text
-file and a number of dbz(3) database files; this may be in true history
+Stores history data in the INN history v6 format: history(5) text
+file and a number of I<dbz> database files; this may be in true history
 v6 format, or tagged hash format, depending on the build
 options.  Separation of these two is a project which has not yet been
 undertaken.
@@ -589,7 +589,7 @@ This setting is ignored unless I<ovmetho
 =item I<ovgrouppat>
 
 If set, restricts the overview data stored by INN to only the newsgroups
-matching this comma-separated list of uwildmat(3) expressions.  Newsgroups not
+matching this comma-separated list of I<uwildmat> expressions.  Newsgroups not
 matching this setting may not be readable, and if I<groupbaseexpiry> is
 set to true and the storage method for these newsgroups does not have
 self-expire functionality, storing overview data will fail.
@@ -1114,9 +1114,31 @@ The path to a file containing the server
 TLS clients.  This parameter is only used if B<nnrpd> is built with TLS/SSL
 support.  The default value is I<pathetc>/cert.pem.
 
-Note that unlike Apache's I<SSLCertificateFile> directive, I<tlscertfile>
-should not contain a concatenation of certificates.  Instead, if you have
-a certificate authority root certificate, set I<tlscafile> to its path.
+If you want to use a complete certificate chain, you can directly put
+it in I<tlscertfile> (like Apache's I<SSLCertificateFile> directive).
+Alternately, you can put a single certificate in I<tlscertfile> and use
+I<tlscafile> for additional certificates needed to complete the chain,
+like a separate authority root certificate.
+
+More concretly, when using S<Let's Encrypt> certificates, Certbot's
+files can be installed as follows:
+
+    tlscapath:      /etc/letsencrypt/live/news.server.com
+    tlscertfile:    /etc/letsencrypt/live/news.server.com/fullchain.pem
+    tlskeyfile:     /etc/letsencrypt/live/news.server.com/privkey.pem
+
+or:
+
+    tlscapath:      /etc/letsencrypt/live/news.server.com
+    tlscafile:      /etc/letsencrypt/live/news.server.com/chain.pem
+    tlscertfile:    /etc/letsencrypt/live/news.server.com/cert.pem
+    tlskeyfile:     /etc/letsencrypt/live/news.server.com/privkey.pem
+
+Make sure that the permission rights are properly set so that the
+news user or the news group can read these directories and files
+(typically, he should access F</etc/letsencrypt/live/news.server.com> and
+F</etc/letsencrypt/archive/news.server.com> where the real keys are located,
+and the private key should not be world-readable).
 
 =item I<tlskeyfile>
 
@@ -1194,9 +1216,9 @@ the server will choose following its own
 
 The list of TLS/SSL protocol versions to support.  Valid protocols are
 B<SSLv2>, B<SSLv3>, B<TLSv1>, B<TLSv1.1>, B<TLSv1.2> and B<TLSv1.3>.
-The default value is to only allow TLS protocols:
+The default value is to only allow secure TLS protocols:
 
-    tlsprotocols: [ TLSv1 TLSv1.1 TLSv1.2 TLSv1.3 ]
+    tlsprotocols: [ TLSv1.2 TLSv1.3 ]
 
 Note that the listed protocols will be enabled only if the OpenSSL
 library INN has been built with, supports them.  In case OpenSSL supports
@@ -1204,6 +1226,9 @@ protocols more recent than TLSv1.3, they
 (which anyway is fine regarding security, as newer protocols are supposed
 to be more secure).
 
+C<SSLv2> was formally deprecated by S<RFC 6176> in 2011, C<SSLv3>
+by S<RFC 7568> in 2015, C<TLSv1.0> and C<TLSv1.1> by S<RFC 8996> in 2021.
+
 =back
 
 =head2 Monitoring
@@ -1452,6 +1477,13 @@ environments, see setbuf(3)).
 How many times to attempt a fork(2) before giving up.  The default value
 is C<10>.
 
+=item I<maxlisten>
+
+How many incoming connections can queue up in the listen backlog for
+B<innd>, B<nnrpd> and the C<ovdb> overview storage method.  The default
+value is C<128> and should be raised in case you notice that some
+connection requests get dropped.
+
 =item I<nicekids>
 
 If set to anything other than C<0>, all child processes of innd(8) will
@@ -1628,11 +1660,10 @@ values for reference.
 Written by Rich $alz <rsalz@uunet.uu.net> for InterNetNews and since
 modified, updated, and reorganized by innumerable other people.
 
-$Id: inn.conf.pod 10523 2021-01-17 21:52:00Z iulius $
-
 =head1 SEE ALSO
 
-inews(1), innd(8), innwatch(8), makehistory(8), nnrpd(8), rnews(1).
+inews(1), innd(8), innwatch(8), libinn_dbz(3), libinn_uwildmat(3),
+makehistory(8), nnrpd(8), rnews(1).
 
 Nearly every program in INN uses this file to one degree or another.  The
 above are just the major and most frequently mentioned ones.
diff -Nurp inn-2.6.4/doc/pod/innbind.pod inn-2.6.5/doc/pod/innbind.pod
--- inn-2.6.4/doc/pod/innbind.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/innbind.pod	2022-02-18 20:36:57.000000000 +0100
@@ -217,8 +217,6 @@ to bind the IPv4 socket on file descript
 
 Written by Russ Allbery <eagle@eyrie.org> for InterNetNews.
 
-$Id: innbind.pod 9767 2014-12-07 21:13:43Z iulius $
-
 =head1 SEE ALSO
 
 inet_aton(3), inet_pton(3), innd(8), nnrpd(8).
diff -Nurp inn-2.6.4/doc/pod/inncheck.pod inn-2.6.5/doc/pod/inncheck.pod
--- inn-2.6.4/doc/pod/inncheck.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/inncheck.pod	2022-02-18 20:36:57.000000000 +0100
@@ -142,8 +142,6 @@ relevant lines yourself, or merge the va
 Written by Brendan Kehoe <brendan@cygnus.com> and Rich Salz
 <rsalz@uunet.uu.net> for InterNetNews.  Converted to POD by Julien Elie.
 
-$Id: inncheck.pod 9428 2012-06-15 18:18:45Z iulius $
-
 =head1 SEE ALSO
 
 active(5), control.ctl(5), expire.ctl(5), history(5), incoming.conf(5),
diff -Nurp inn-2.6.4/doc/pod/innconfval.pod inn-2.6.5/doc/pod/innconfval.pod
--- inn-2.6.4/doc/pod/innconfval.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/innconfval.pod	2022-02-18 20:36:57.000000000 +0100
@@ -101,8 +101,6 @@ Print INN's version.  This is equivalent
 
 Written by Rich $alz <rsalz@uunet.uu.net> for InterNetNews.
 
-$Id: innconfval.pod 9288 2011-07-22 23:08:57Z iulius $
-
 =head1 SEE ALSO
 
 inn.conf(5), INN::Config(3pm).
diff -Nurp inn-2.6.4/doc/pod/innd.pod inn-2.6.5/doc/pod/innd.pod
--- inn-2.6.4/doc/pod/innd.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/innd.pod	2022-02-18 20:36:57.000000000 +0100
@@ -109,6 +109,11 @@ value of I<artcutoff> in F<inn.conf>.  T
 the value of that setting.  If I<days> is 0, this check is suppressed and
 B<innd> will accept articles regardless of how old they are.
 
+Note that rejected articles are remembered during the number of days
+specified by the C</remember/> line in expire.ctl(5).  You'll have to
+wait that number of days before being able to inject again an article
+with the same previously rejected Message-ID.
+
 =item B<-C>
 
 This flag tells B<innd> to accept and propagate but not actually process
@@ -502,12 +507,10 @@ disables source routing.
 
 Written by Rich $alz <rsalz@uunet.uu.net> for InterNetNews.
 
-$Id: innd.pod 10523 2021-01-17 21:52:00Z iulius $
-
 =head1 SEE ALSO
 
-active(5), ctlinnd(8), dbz(3), history(5), incoming.conf(5), inn.conf(5),
-innbind(8), innfeed(8), innstat(8), newsfeeds(5), nnrpd(8), rnews(1),
-syslog(3).
+active(5), ctlinnd(8), history(5), incoming.conf(5), inn.conf(5), innbind(8),
+innfeed(8), innstat(8), libinn_dbz(3), libinn_inndcomm(3), newsfeeds(5),
+nnrpd(8), rnews(1), syslog(3).
 
 =cut
diff -Nurp inn-2.6.4/doc/pod/inndf.pod inn-2.6.5/doc/pod/inndf.pod
--- inn-2.6.4/doc/pod/inndf.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/inndf.pod	2022-02-18 20:36:57.000000000 +0100
@@ -113,8 +113,6 @@ Katsuhiro Kondou added the B<-n> and B<-
 reporting of percentage free disk space.  Support for B<-f> and B<-F> was
 added by Fabien Tassin <fta@sofaraway.org>.
 
-$Id: inndf.pod 10283 2018-05-14 12:43:05Z iulius $
-
 =head1 SEE ALSO
 
 df(1), innwatch.ctl(5), innstat(8).
diff -Nurp inn-2.6.4/doc/pod/innfeed.conf.pod inn-2.6.5/doc/pod/innfeed.conf.pod
--- inn-2.6.4/doc/pod/innfeed.conf.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/innfeed.conf.pod	2022-02-18 20:36:57.000000000 +0100
@@ -2,6 +2,32 @@
 
 innfeed.conf - Configuration file for innfeed
 
+=head1 IN A NUTSHELL
+
+The I<innfeed.conf> file configures to which remote peers B<innfeed> sends
+NNTP feeds.
+
+A common entry to parameter C<news.server.com> as an outgoing feed is:
+
+    peer news.server.com {
+        ip-name: "news.server.com"
+    }
+
+If standard NNTP port 119 is not used, you may specify an alternate port as
+follows:
+
+    peer news.server.com {
+        ip-name: "news.server.com"
+        port-number: 433
+    }
+
+After any changes, run C<inncheck> to perform basic syntax checks, and
+reload this configuration file with the following command which makes B<innd>
+respawn a new instance of B<innfeed> (assuming C<innfeed!> is the name of the
+corresponding channel feed in F<newsfeeds>):
+
+    ctlinnd flush innfeed!
+
 =head1 DESCRIPTION
 
 The configuration file F<innfeed.conf> in I<pathetc> is used to control
@@ -729,8 +755,6 @@ B<innfeed> is now part of INN and shares
 Please note that the F<innfeed.conf> format has changed dramatically since
 S<version 0.9.3>.
 
-$Id: innfeed.conf.pod 10179 2017-09-18 20:13:48Z iulius $
-
 =head1 SEE ALSO
 
 inn.conf(5), innfeed(8), newsfeeds(5).
diff -Nurp inn-2.6.4/doc/pod/innfeed.pod inn-2.6.5/doc/pod/innfeed.pod
--- inn-2.6.4/doc/pod/innfeed.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/innfeed.pod	2022-02-18 20:36:57.000000000 +0100
@@ -476,8 +476,6 @@ POD by Julien Elie.
 Earlier versions of B<innfeed> (up to 0.10.1) were shipped separately;
 B<innfeed> is now part of INN and shares the same version number.
 
-$Id: innfeed.pod 9588 2013-12-19 17:46:41Z iulius $
-
 =head1 SEE ALSO
 
 ctlinnd(8), inn.conf(5), innfeed.conf(5), innd(8), procbatch(8).
diff -Nurp inn-2.6.4/doc/pod/innmail.pod inn-2.6.5/doc/pod/innmail.pod
--- inn-2.6.4/doc/pod/innmail.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/innmail.pod	2022-02-18 20:36:57.000000000 +0100
@@ -61,8 +61,6 @@ B<innmail> was written by James Brister
 InterNetNews.  This manual page was originally written by Jeffrey
 M. Vinocur.
 
-$Id: innmail.pod 7851 2008-05-26 19:33:08Z iulius $
-
 =head1 SEE ALSO
 
 inn.conf(5), mail(1).
diff -Nurp inn-2.6.4/doc/pod/innreport.conf.pod inn-2.6.5/doc/pod/innreport.conf.pod
--- inn-2.6.4/doc/pod/innreport.conf.pod	1970-01-01 01:00:00.000000000 +0100
+++ inn-2.6.5/doc/pod/innreport.conf.pod	2022-02-18 20:36:57.000000000 +0100
@@ -0,0 +1,312 @@
+=head1 NAME
+
+innreport.conf - Configuration file for innreport
+
+=head1 DESCRIPTION
+
+The file I<pathetc>/innreport.conf permits configuring the behaviour of
+B<innreport>.  It consists of a series of lines; blank lines and what follows
+a number sign (C<#>) in a line are ignored.  The structure of this file is:
+
+    section default {
+        libpath        "/path/to/libraries";
+        logpath        "/path/to/logs";
+        module         "innreport_inn";
+        unwanted_log   "unwanted.log";
+        text           true;
+        html           true;  # Enable HTML reports.
+        # Other options to set.
+    };
+
+Only this very section needs being configured.  It begins with C<section
+default {> and ends with C<};>.  Each line in the section consists of an
+option name followed with one or more spaces or tabulations, its value and
+a semi-colon C<;>.
+
+Other sections are present in the configuration file to parameter the
+display, how and what to report, but should not be changed (unless you
+precisely know what you are doing).
+
+=head1 OPTIONS
+
+The following options can be set in the C<default> section of the
+configuration file:
+
+=over 4
+
+=item I<archive>
+
+Sets whether HTML pages and graphs should be archived if HTML reports are
+enabled.  When this option is set to C<true>, which is the default, a date
+will be added in the file name of each report and each graph.  Otherwise,
+only the latest HTML report is kept.
+
+Use of the B<->[B<no>]B<archive> flag with innreport(8) takes precedence
+over the configuration file.
+
+=item I<casesensitive>
+
+When this option is set to C<true>, which is the default, case sensitive
+searches are done in news log files for predetermined patterns.
+
+Use of the B<->[B<no>]B<casesensitive> flag with innreport(8) takes precedence
+over the configuration file.
+
+=item I<cycle>
+
+Sets how many report files should be kept if HTML reports are enabled and
+archived.  The default is C<0>, meaning all archives are kept.  The value
+C<none> also means C<0>.
+
+Use of the B<-cycle> flag with innreport(8) takes precedence over the
+configuration file.
+
+=item I<encoding>
+
+Specifies the character set to use in XML and Content-Type declarations of
+HTML reports.  The default is C<ISO-8859-1>.
+
+=item I<footer>
+
+Specifies a text to append to the end of the latest C<< <div> >> tag of each
+HTML report, where the version of B<innreport> is displayed.  This option
+is unset by default.
+
+=item I<graph>
+
+If the Perl graphic library F<GD.pm> is installed and HTML reports are
+enabled, graphs are also generated in PNG if supported by C<GD>, which is
+the case in modern versions (GIF will otherwise be generated).  This option
+is set to C<true> by default, meaning to enable graph generation.
+
+Use of the B<->[B<no>]B<graph> flag with innreport(8) takes precedence over
+the configuration file.
+
+=item I<graph_bg>
+
+Specifies the background colour of graphs in HTML reports as an HTML
+hexadecimal colour value.  The default is C<#FFFFFF> (white).
+
+=item I<graph_fg>
+
+Specifies the foreground colour of graphs in HTML reports as an HTML
+hexadecimal colour value.  The default is C<#000000> (black).
+
+=item I<graph_width>
+
+Sets the width in pixels of graphs in HTML reports.  The default is C<550>.
+
+=item I<html>
+
+This is a mandatory option with no default value.  It serves two purposes:
+generating HTML reports besides the plain text report printed to standard
+output, and configuring in the sections other than C<default> in the
+configuration file whether a section of the report should be present in the
+HTML output.
+
+If set to C<true>, and the B<-nohtml> flag not given when calling
+B<innreport>, HTML reports will be generated.  These reports will not contain
+sections individually having I<html> set to C<false> in the configuration
+file (by default, everything is present in the HTML reports).  Otherwise,
+if the B<-nohtml> flag is given, no HTML reports will be generated.
+
+If set to C<false>, and the B<-html> flag not given when calling B<innreport>,
+no HTML reports will be generated.  Otherwise, if the B<-html> flag is
+given, HTML reports will be generated but only the sections individually
+having I<html> set to C<true> in the configuration file will be present in
+the reports.
+
+=item I<html_body>
+
+Specifies additional elements to append to the C<< <body> >> tag of HTML
+reports.  This option is unset by default.
+
+Note that using this option leads to invalid XHTML.  You should provide a
+custom CSS file with the I<html_css_url> option instead.
+
+=item I<html_css_url>
+
+Specifies the name of a CSS file to use to apply a custom style to HTML
+reports.  The file is located in the directory set with the I<html_dir>
+option.  It may also be a URL, in which case the file may be in another
+location.
+
+If unset, which is the default, B<innreport> creates a default
+F<innreport.css> custom style sheet in I<html_dir> and uses it for HTML
+reports.
+
+In case you wish to supply your own style, take a look at what is defined
+in the default CSS and the HTML reports, and adapt it for your needs.
+Across several B<innreport> releases that may change classes, make sure
+to keep old class definitions for backward compatibility with previously
+generated HTML reports still referring to that custom file.
+
+=item I<html_dir>
+
+Sets the directory for web pages if HTML reports are enabled.  The default
+is the value of I<pathhttp> as set in F<inn.conf>.
+
+Use of the B<-dir> flag with innreport(8) takes precedence over the
+configuration file.
+
+=item I<html_file_extension>
+
+Defines the file extension of generated HTML reports, if enabled.  A dot
+(C<.>) should begin the extension.  The default is C<.html>.
+
+You may want to use C<.xhtml> instead to let the web server serve correct
+MIME type, as B<innreport> generates S<XHTML 1.1> pages.
+
+=item I<html_footer_file>
+
+Specifies the name of a file in I<html_dir> whose contents will be appended
+just before the C<< </body> >> tag of each HTML report.  This option is
+unset by default.
+
+=item I<html_header_file>
+
+Specifies the name of a file in I<html_dir> whose contents will be appended
+just after the C<< <body> >> tag of each HTML report.  This option is unset
+by default.
+
+=item I<html-unknown>
+
+Whether to report unknown entries from news log files in HTML reports,
+when set to C<true>.  This option takes by default the same value as the
+one for text plain reports (as set with the I<unknown> option).
+
+Use of the B<->[B<no>]B<html-unknown> flag with innreport(8) takes precedence
+over the configuration file.
+
+=item I<html_xsl_url>
+
+Specifies the name of an XSL file to use to apply styling operations to
+HTML reports.  The file is located in the directory set with the I<html_dir>
+option.  It may also be a URL, in which case the file may be in another
+location.
+
+This option is unset by default.  When set, a corresponding XML style sheet
+declaration is added to HTML reports.  It may be useful for XHTML compliance
+with older browsers (see L<https://www.w3.org/MarkUp/2004/xhtml-faq#ie>).
+
+More generally, if you are interested in XSL transformation, you may want to
+have a look at F<innreport-filter.xslt> provided in the F<contrib> directory.
+
+=item I<img_dir>
+
+Sets the web path for pictures in HTML pages if HTML reports are enabled,
+and graphs are wanted.  The path is relative to the directory set with the
+I<html_dir> option.  The default is C<pics>.
+
+Use of the B<-webpath> flag with innreport(8) takes precedence over the
+configuration file.
+
+=item I<index>
+
+Sets the name of the index web page if HTML reports are enabled.  The default
+is C<index.html>.
+
+You may want to use C<index.xhtml> instead to let the web server serve
+correct MIME type, as B<innreport> generates S<XHTML 1.1> pages.
+
+Use of the B<-index> flag with innreport(8) takes precedence over the
+configuration file.
+
+=item I<libpath>
+
+Defines the directory in which the Perl module set with the I<module>
+option is located.  This option is mandatory, and usually set to the same
+value as I<pathlib> in F<inn.conf>.
+
+=item I<logpath>
+
+Defines the directory in which the log file for newsgroups not locally carried
+by the news server, as set with the I<unwanted_log> option, is located.
+This option is mandatory, and usually set to the same value as I<pathlog>
+in F<inn.conf>.
+
+=item I<max_unknown>
+
+How many unrecognized entries from news log files to report, when the
+I<unknown> or I<html-unknown> options are set.  The default is C<50>.
+Using C<-1> means there is no limit.
+
+Use of the B<-maxunrec> flag with innreport(8) takes precedence over the
+configuration file.
+
+=item I<module>
+
+Defines the Perl module used by B<innreport> to parse and summarize log files.
+This option is mandatory, and usually set to C<innreport_inn>.  This value
+should not normally be changed unless you know exactly what you are doing.
+The Perl module that will be loaded is F<< I<module>.pm >> located in the
+directory set with the I<libpath> option.
+
+=item I<separator>
+
+Sets the separator between hours, minutes and seconds in file names if
+HTML reports are enabled and archived.  The default is C<.> as C<:> may
+not be properly read by all web browsers.  Be careful I<not> to use C</>
+as a separator, and to use only a valid file name character.
+
+Use of the B<-separator> flag with innreport(8) takes precedence over the
+configuration file.
+
+=item I<text>
+
+This is a mandatory option with no default value.
+
+If set to C<true>, B<innreport> will print its text report to standard output.
+This report will not contain sections individually having I<text> set to
+C<false> in the configuration file (by default, everything is present in
+the text report).
+
+If set to C<false>, B<innreport> will only print to standard output the
+sections individually having I<text> set to C<true> in the configuration file
+(by default, the text report will be empty).
+
+=item I<title>
+
+Specifies the text to use as first words of text and HTML reports as well
+as in the title of HTML reports.  By default, C<Daily Usenet report> is used.
+
+=item I<transparent>
+
+If set to C<true>, the background of generated graphs in HTML reports will
+be transparent.  The default is C<false>.
+
+=item I<unknown>
+
+Whether to report unknown entries from news log files in plain text reports,
+when set to C<true>.  This option is enabled by default.
+
+Use of the B<->[B<no>]B<unknown> flag with innreport(8) takes precedence
+over the configuration file.
+
+=item I<unwanted_log>
+
+Defines the name of the file used by B<innreport> to maintain a count of
+the number of articles that were rejected because they were posted to
+newsgroups that do not exist in the F<active> file of the news server.
+This file is updated by B<innreport> while processing the F<news.notice>
+log file and it is maintained in reverse numeric order (the most popular
+rejected group first).
+
+This option is mandatory, and usually set to C<unwanted.log>.  This value
+should not normally be changed unless you know exactly what you are doing.
+The file is located in the directory set with the I<logpath> option.
+
+Note that I<logtrash> has to be set to true in F<inn.conf> for this file
+to be generated.
+
+=back
+
+=head1 HISTORY
+
+Written by Julien Elie for InterNetNews.
+
+=head1 SEE ALSO
+
+innreport(8).
+
+=cut
diff -Nurp inn-2.6.4/doc/pod/innreport.pod inn-2.6.5/doc/pod/innreport.pod
--- inn-2.6.4/doc/pod/innreport.pod	1970-01-01 01:00:00.000000000 +0100
+++ inn-2.6.5/doc/pod/innreport.pod	2022-02-18 20:36:57.000000000 +0100
@@ -0,0 +1,170 @@
+=head1 NAME
+
+innreport - Summarize INN log files
+
+=head1 SYNOPSIS
+
+B<innreport> B<-f> I<config-file> [B<-config>] [B<-help>] [B<-v>]
+[B<->[B<no>]B<archive>] [B<->[B<no>]B<casesensitive>] [B<->[B<no>]B<graph>]
+[B<->[B<no>]B<html>] [B<->[B<no>]B<html-unknown>] [B<->[B<no>]B<notdaily>]
+[B<->[B<no>]B<unknown>] [B<-cycle> I<num-cycle>] [B<-dir> I<http-dir>]
+[B<-index> I<index-file>] [B<-maxunrec> I<num-lines>]
+[B<-path> I<pictures-dir>] [B<-separator> I<char>]
+[B<-webpath> I<pictures-path>] I<log-file> [I<log-file> ...]
+
+=head1 DESCRIPTION
+
+B<innreport> is a Perl script that summarizes INN log files, with optional
+HTML output and graphs.  It is normally invoked by scanlogs(8) which includes
+the output of B<innreport> in daily Usenet reports.
+
+Supported programs are B<batcher>, B<cnfsstat>, B<controlchan>, B<innd>,
+B<innfeed>, B<innxmit>, B<nnrpd>, B<nntplink> (an external program),
+B<overchan>, B<perl-nocem> and B<rnews>.
+
+B<innreport> also updates the count of newsgroups not locally carried
+by the news server, and for which articles have been received, in the
+F<unwanted.log> log file.  If that update should not be done, as it should
+occur only once a day while parsing daily logs, the B<-notdaily> flag should
+be given to B<innreport>.
+
+If you want B<innreport> to generate graphs in its HTML reports, you need
+the Perl graphic library F<GD.pm>.
+
+At least one non-empty log file to parse should be given at the end of the
+command line invoking B<innreport>.
+
+=head1 OPTIONS
+
+Only one option is mandatory:
+
+=over 4
+
+=item B<-f> I<config-file>
+
+Full path to the configuration file.  It is usually F<innreport.conf> in
+I<pathetc>, but there is no default value.  This file lists the options
+to use for the report.  The options given in command line when calling
+B<innreport> take precedence over the ones in the configuration file.
+
+=back
+
+The other options are optional.  Prepending C<no> in front of boolean
+options permits unsetting them.  For example, use B<-nograph> to remove
+the feature B<-graph> enables.
+
+=over 4
+
+=item B<-archive> or B<-a>
+
+Sets whether HTML pages and graphs should be archived if HTML reports
+are enabled.  When this option is set, which is the default, a date will
+be added in the file name of each report and each graph.  Otherwise, only
+the latest HTML report is kept.
+
+=item B<-casesensitive>
+
+Whether to do case sensitive searches in news log files for predetermined
+patterns.  This option is enabled by default.
+
+=item B<-config>
+
+Prints to standard output configuration information for B<innreport>,
+and exits.
+
+=item B<-cycle> or B<-c> I<num-cycle>
+
+Sets how many report files should be kept if HTML reports are enabled
+and archived.  The default is C<0>, meaning all archives are kept.
+
+=item B<-dir> or B<-d> I<http-dir>
+
+Sets the directory for web pages if HTML reports are enabled.  The default
+is the value of I<pathhttp> as set in F<inn.conf>.
+
+=item B<-graph> or B<-g>
+
+If the Perl graphic library F<GD.pm> is installed and HTML reports are
+enabled, graphs are also generated in PNG if supported by C<GD>, which is
+the case in modern versions (GIF will otherwise be generated).  The default
+is to enable graph generation.
+
+=item B<-help> or B<-h>
+
+Prints to standard output a help message with all the options recognized
+by B<innreport>, and exits.
+
+=item B<-html>
+
+Besides the plain text report printed to standard output, B<innreport>
+generates HTML reports if this option is enabled.  This option is disabled
+by default (that is to say B<-nohtml> is the default).
+
+=item B<-html-unknown>
+
+Whether to report unknown entries from news log files in HTML reports,
+when enabled.  This option takes by default the same value as the one for
+text plain reports (as set with the I<unknown> option).
+
+=item B<-index> or B<-i>
+
+Sets the name of the index web page if HTML reports are enabled.  The default
+is C<index.html>.
+
+=item B<-maxunrec> I<num-lines>
+
+How many unrecognized entries from news log files to report, when the
+B<-unknown> or B<-html-unknown> options are set.  The default is C<50>.
+Using C<-1> means there is no limit.
+
+=item B<-notdaily>
+
+Whether to defer daily actions for this run of B<innreport>.  Some actions
+should be performed only once a day for a log file (notably F<unwanted.log>).
+This option is disabled by default, meaning that all actions are always done,
+as we assume a default setup of running B<scanlogs> daily.
+
+=item B<-path> or B<-p> I<pictures-dir>
+
+Sets the directory for pictures if HTML reports are enabled, and graphs
+are wanted.  The default is I<pathhttp>/F<pics>.
+
+If both B<-dir> and B<-webpath> are used, and B<-path> isn't, the directory
+used for pictures defaults to I<< http-dir as set with B<-dir> >>/I<<
+pictures-path as set with B<-webpath> >>.
+
+=item B<-separator> or B<-s> I<char>
+
+Sets the separator between hours, minutes and seconds in file names if
+HTML reports are enabled and archived.  The default is C<.> as C<:> may
+not be properly read by all web browsers.  Be careful I<not> to use C</>
+as a separator, and to use only a valid file name character.
+
+=item B<-unknown>
+
+Whether to report unknown entries from news log files in plain text reports.
+This option is enabled by default.
+
+=item B<-v>
+
+Prints to standard output the version number of B<innreport>, and exits.
+
+=item B<-webpath> or B<-w> I<pictures-path>
+
+Sets the web path for pictures in HTML pages if HTML reports are enabled,
+and graphs are wanted.  The default is C<pics>.  It can be a relative path
+or an absolute path.  If an absolute path is used, you have to set B<-path>
+appropriately; otherwise it will not be computed right.
+
+=back
+
+=head1 HISTORY
+
+Written by Fabien Tassin <fta@sofaraway.org> for InterNetNews.  Rewritten into
+POD by Julien Elie.
+
+=head1 SEE ALSO
+
+innreport.conf(5), news.daily(8), newslog(5), scanlogs(8).
+
+=cut
diff -Nurp inn-2.6.4/doc/pod/innstat.pod inn-2.6.5/doc/pod/innstat.pod
--- inn-2.6.4/doc/pod/innstat.pod	1970-01-01 01:00:00.000000000 +0100
+++ inn-2.6.5/doc/pod/innstat.pod	2022-02-18 20:36:57.000000000 +0100
@@ -0,0 +1,61 @@
+=head1 NAME
+
+innstat - Print snapshot of INN system
+
+=head1 SYNOPSIS
+
+B<innstat>
+
+=head1 DESCRIPTION
+
+The B<innstat> script prints a snapshot of the INN system.  It is notably
+run by B<news.daily>, which integrates its output in daily Usenet reports.
+
+B<innstat> displays the following information:
+
+=over 4
+
+=item *
+
+the operating mode of the server, as returned by C<ctlinnd mode>;
+
+=item *
+
+the disk usage of several directories: I<patharticles>, I<pathdb>, I<pathetc>,
+I<pathincoming>, I<pathlog>, I<pathoutgoing>, I<pathoverview>, and I<pathtmp>.
+If used, the disk usage of the I<patharchive> and I<pathhttp> directories
+are also reported;
+
+=item *
+
+the overview buffer usage, if using the buffindexed overview;
+
+=item *
+
+the size of all batch files in I<pathoutgoing>;
+
+=item *
+
+the size of the F<errlog>, F<news>, F<news.crit>, F<news.err>, and
+F<news.notice> log files in I<pathlog>;
+
+=item *
+
+the size of all lock files in I<pathrun>;
+
+=item *
+
+the current open connections from remote servers to B<innd>.
+
+=back
+
+=head1 HISTORY
+
+Written by Landon Curt Noll <chongo@toad.com> and Rich $alz
+<rsalz@uunet.uu.net> for InterNetNews.  Rewritten into POD by Julien Elie.
+
+=head1 SEE ALSO
+
+inndf(8), news.daily(8), newslog(5).
+
+=cut
diff -Nurp inn-2.6.4/doc/pod/innupgrade.pod inn-2.6.5/doc/pod/innupgrade.pod
--- inn-2.6.4/doc/pod/innupgrade.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/innupgrade.pod	2022-02-18 20:36:57.000000000 +0100
@@ -120,6 +120,4 @@ alternate file.
 
 Written by Russ Allbery <eagle@eyrie.org> for InterNetNews.
 
-$Id: innupgrade.pod 9767 2014-12-07 21:13:43Z iulius $
-
 =cut
diff -Nurp inn-2.6.4/doc/pod/innwatch.ctl.pod inn-2.6.5/doc/pod/innwatch.ctl.pod
--- inn-2.6.4/doc/pod/innwatch.ctl.pod	1970-01-01 01:00:00.000000000 +0100
+++ inn-2.6.5/doc/pod/innwatch.ctl.pod	2022-02-18 20:36:57.000000000 +0100
@@ -0,0 +1,206 @@
+=head1 NAME
+
+innwatch.ctl - List of supervisory actions taken by innwatch
+
+=head1 DESCRIPTION
+
+The file I<pathetc>/innwatch.ctl is used to determine what actions are
+taken during the periodic supervisions by B<innwatch>.
+
+The file consists of a series of lines; blank lines and lines beginning
+with a number sign (C<#>) are ignored.  All other lines consist of
+seven fields, each preceded by a delimiting character, for example:
+
+    !state!when!condition!test!limit!command!reason
+
+or:
+
+    @state@when@condition@test@limit@command@reason
+
+The delimiter can be any one of several non-alphanumeric characters that
+does not appear elsewhere in the line; there is no way to quote it to
+include it in any of the fields.  Any of C<!>, C<,>, C<:>, C<@>, C<;>,
+or C<?> is a good choice.  Each line can have a different delimiter; the
+first character on each line is the delimiter for that line.  White space
+surrounding delimiters, except before the first, is ignored, and does
+not form part of the fields; white space within fields is permitted.
+All delimiters must be present.
+
+The first field is the state to enter if the condition for this
+control line is true.  It is used as an internal state indicator and
+in B<ctlinnd> messages to control the server.  If this field is empty,
+the line number is used.
+
+The second field specifies when this control line should be used.
+It consists of a list of states and special indicators, separated by
+whitespace.  If the current state matches against any of the states in
+this field, this line will be used as described below.  The values that
+may be used are:
+
+=over 4
+
+=item C<->
+
+This line matches if the current state is the same as the label on this
+line, or if the current state is C<run>, the initial state.  This is
+also the default state if this field is empty.
+
+=item C<+>
+
+This line matches if the current state is C<run>.
+
+=item C<*>
+
+This line always matches.
+
+=item C<label>
+
+This line matches if the current state is the specified C<label>.
+
+=item C<-label>
+
+This line matches if the current state is not the specified C<label>.
+
+=back
+
+The third field specifies a shell command that is invoked if this
+line matches.  Do not use any shell filename expansion characters
+such as C<*>, C<?>, or C<[> (even quoted, they're not likely to work
+as intended).  The command is executed with its current directory set
+to the news spool articles directory (I<patharticles>).
+
+If the command succeeds, as indicated by its exit status, it is expected
+to have printed a single integer to standard output.  This gives the
+value of this control line, to be used below.  If the command fails,
+the line is ignored.
+
+The fourth field specifies the operator to use to test the value returned
+above.  It should be one of the two letter numeric test operators defined
+in test(1) such as C<eq>, C<lt> and the like.  The leading dash (C<->)
+should not be included.
+
+The fifth field specifies a constant with which to compare the value
+using the operator just defined.  This is done by invoking the command:
+
+    test value -operator constant
+
+The line is said to I<succeed> if it returns true.
+
+The sixth field specifies what should be done if the line succeeds,
+and in some cases if it fails.  Any of the following words may be used:
+
+=over 4
+
+=item C<throttle>
+
+Causes B<innwatch> to throttle the server if this line succeeds.  It also
+sets the state to the value of the line's label.  If the line fails,
+and the state was previously equal to the label on this line (that is,
+this line had previously succeeded), then a C<ctlinnd go> command will
+be sent to the server, and B<innwatch> will return to the C<run> state.
+The C<ctlinnd throttle> command is only performed if the current state
+is C<run> or a state other than the label of this line, regardless of
+whether the command succeeds.
+
+=item C<pause>
+
+Is identical to C<throttle> except that the server is paused via the
+C<ctlinnd pause> command.
+
+=item C<shutdown>
+
+Sends a C<ctlinnd shutdown> command to the server.  It is for emergency
+use only.
+
+=item C<flush>
+
+Sends a C<ctlinnd flush> command to the server.
+
+=item C<go>
+
+Causes B<innwatch> to send a C<ctlinnd go> command to the server and
+to set the state to C<run>.
+
+=item C<exit>
+
+Causes B<innwatch> to exit.
+
+=item C<skip>
+
+The remainder of the control file is skipped for the current pass.
+
+=back
+
+The last field specifies the reason that is used in those C<ctlinnd>
+commands that require one.  More strictly, it is part of the reason,
+as B<innwatch> appends some information to it.
+
+In order to enable other sites to recognize the state of the local
+B<innd> server, this field should usually be set to one of several
+standard values.  Use for instance C<No space> if the server is
+rejecting articles because of a lack of filesystem resources, or
+C<loadav> if the server is rejecting articles because of a lack of
+CPU resources.
+
+Once B<innwatch> has taken some action as a consequence of its control
+line, it skips the rest of the control file for this pass.  If the action
+was to restart the server (that is, issue a C<ctlinnd go> command),
+then the next pass will commence almost immediately, so that B<innwatch>
+can discover any other condition that may mean that the server should
+be suspended again.
+
+=head1 EXAMPLES
+
+    !!! inndf . ! lt ! 10000 ! throttle ! No space (spool)
+    !!! inndf -i . ! lt ! 1000 ! throttle ! No space (inodes)
+
+The first line causes the server to be throttled if the free space drops
+below 10000 units (using whatever units B<inndf> uses), and restarted
+again when free space increases above the threshold.
+
+The second line does the same for inodes.
+
+The next three lines act as a group and should appear in the following
+order.  It is easier to explain them, however, if they are described
+from the last up.
+
+    ! load ! load hiload ! loadavg ! lt ! 5 ! go ! loadav
+    : hiload : + load : loadavg : gt : 8 : throttle : loadav
+    / load / + / loadavg / gt / 6 / pause / loadav
+
+The final line causes the server to be paused if B<innwatch> is in the
+C<run> state and the load average rises to, or above, six.  The state is
+set to C<load> when this happens.  The previous line causes the server
+to be throttled when B<innwatch> is in the C<run> or C<load> state,
+and the load average rises above eight.  The state is set to C<hiload>
+when this happens.  Note that B<innwatch> can switch the server from
+C<pause> to C<throttle> if the load average rises from below six to
+between six and seven, and then to above eight.  The first line causes
+the server to be sent a C<ctlinnd go> command if B<innwatch> is in the
+C<load> or C<hiload> state, and the load average drops below five.
+
+Note that all three lines assume a mythical command C<loadavg> that
+is assumed to print the current load average as an integer.  In more
+practical circumstances, a pipe of B<uptime> into AWK is more likely
+to be useful.
+
+=head1 BUGS
+
+The C<run> state is not actually identified by the label with that
+three letter name, and using it will not work as expected (C<go> is
+the wanted state in that case).
+
+Using an I<unusual> character for the delimiter such as C<(>, C<*>,
+C<&>, C<`>, C<'>, and the like, is likely to lead to obscure and hard
+to locate bugs.
+
+=head1 HISTORY
+
+Written by <kre@munnari.oz.au> for InterNetNews.  Rewritten into POD
+by Julien Elie.
+
+=head1 SEE ALSO
+
+ctlinnd(8), inndf(8), news.daily(8), rc.news(8).
+
+=cut
diff -Nurp inn-2.6.4/doc/pod/innwatch.pod inn-2.6.5/doc/pod/innwatch.pod
--- inn-2.6.4/doc/pod/innwatch.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/innwatch.pod	2022-02-18 20:36:57.000000000 +0100
@@ -9,10 +9,12 @@ B<innwatch> [B<-f> I<ctlfile>] [B<-i> I<
 
 =head1 DESCRIPTION
 
-B<innwatch> is normally started by B<rc.news>.  Every
-I<innwatchsleeptime> seconds, as set in F<inn.conf>, it examines the load
-average, and the number of free blocks and inodes on the spool partition,
-as described by its control file, F<innwatch.ctl> in I<pathetc>.
+B<innwatch> is normally started and stopped by B<rc.news> when
+I<doinnwatch> is set to true in F<inn.conf>.  Every I<innwatchsleeptime>
+seconds, as set in F<inn.conf> as well as other parameters tuning its
+behaviour, B<innwatch> examines the load average, and the number of
+free blocks and inodes on the spool partition, as described by its
+control file, F<innwatch.ctl> in I<pathetc>.
 
 If the load gets too high, or the disk gets too full, it throttles
 the server.  When the condition restores, it unblocks the server.
@@ -56,8 +58,6 @@ Written by Mike Cooper <mcooper@usc.edu>
 <kre@munnari.oz.au>, Steve Groom <stevo@elroy.jpl.nasa.gov> and
 Christophe Wolfhugel <wolf@pasteur.fr>.  Converted to POD by Julien Elie.
 
-$Id: innwatch.pod 9722 2014-09-24 17:47:12Z iulius $
-
 =head1 SEE ALSO
 
 inn.conf(5), innwatch.ctl(5), newslog(5), rc.news(8).
diff -Nurp inn-2.6.4/doc/pod/innxbatch.pod inn-2.6.5/doc/pod/innxbatch.pod
--- inn-2.6.4/doc/pod/innxbatch.pod	1970-01-01 01:00:00.000000000 +0100
+++ inn-2.6.5/doc/pod/innxbatch.pod	2022-02-18 20:36:57.000000000 +0100
@@ -0,0 +1,121 @@
+=head1 NAME
+
+innxbatch, sendxbatches - Send xbatched Usenet articles to a remote NNTP
+server
+
+=head1 SYNOPSIS
+
+B<innxbatch> [B<-Dv>] [B<-t> I<timeout>] [B<-T> I<timeout>] I<host> I<file>
+[I<file> ...]
+
+B<innxbatch> B<-i> [B<-Dv>] [B<-t> I<timeout>] [B<-T> I<timeout>] I<host>
+
+B<sendxbatches> I<sitename> I<host> I<file> [I<file> ...]
+
+=head1 DESCRIPTION
+
+B<innxbatch> connects to port 119 of the NNTP server at the specified I<host>,
+and sends it the specified xbatch files, using the XBATCH extension to the
+NNTP protocol.  These files are specified either from the command line or
+from standard input if B<i> is used.
+
+Each file is removed after it has been successfully transferred.
+
+If a communication error such as a write(2) failure, or an unexpected reply
+from the remote server occurs, B<innxbatch> will stop sending and leave
+all remaining files untouched for later retry.
+
+If authentication credentials are present for the remote server in the
+F<passwd.nntp> file in I<pathetc>, then B<innxbatch> will use them to
+authenticate.
+
+B<innxbatch> does not use itself any file locking.  At worst, a batch could be
+transmitted twice in parallel by two independent invocations of B<innxbatch>.
+To prevent this, it should be invoked by a script run out of cron(8) that uses
+shlock(1) to lock the host name, followed by a C<ctlinnd flush> command to
+flush the batch file.  B<sendxbatches> is such a wrapper around B<innxbatch>.
+It will ensure only one instance is run, flush I<sitename> (as used in the
+F<newsfeeds> entry) and send to I<host> the files given as arguments.
+
+As the XBATCH extension is not a standardized NNTP command, some news
+servers do not recognize it.  Instead of using B<innxbatch>, you may consider
+B<innfeed>, or if that is not possible, B<nntpsend>.
+
+=head1 OPTIONS
+
+=over 4
+
+=item B<-D>
+
+Prints debugging information on standard error.  This will show the protocol
+transactions between B<innxbatch> and the NNTP server on the remote host.
+
+=item B<-i>
+
+Reads batch file names from standard input.  For each successfully transmitted
+batch, an C<OK> is printed on stdout to indicate that another file name
+is expected.
+
+=item B<-t> I<timeout>
+
+Specifies a timeout in seconds on how long to try to make the connection.
+Otherwise, B<innxbatch> normally blocks until the connection is made.
+
+=item B<-T> I<timeout>
+
+Specifies the total amount of time in seconds that should be allowed for
+article transfers.
+
+The default is to wait until an I/O error occurs, or all the articles have
+been transferred.  If this flag is used, the time is checked just before
+each article is started; it will not abort a transfer that is in progress.
+
+=item B<-v>
+
+Upon exit, B<innxbatch> reports transfer and CPU usage statistics via
+syslog(3).  If this flag is used, they will also be printed on the standard
+output.
+
+=back
+
+=head1 EXAMPLES
+
+A sample F<newsfeeds> entry to produce appropriate xbatch files is:
+
+    nase\
+        :*\
+        :Tc,Wnb\
+        :<pathbin>/batcher -p "(<$COMPRESS in <pathlib>/innshellvars>\
+            > <pathoutgoing>/nase.\$\$)" nase.do.main
+
+A sample script to invoke innxbatch(8) is:
+
+    #! /bin/sh
+    #  Send xbatches for a site, wrapped around innxbatch.
+    if [ $# -lt 3 ]
+    then
+        echo "usage: $0 <sitename> <hostname> <xbatch file name> ..."
+        exit 1
+    fi
+    . <pathlib>/innshellvars
+    site="$1"; host="$2"; shift; shift
+    ctlinnd flush "$site" \
+    && sleep 5 \
+    && exec ${NEWSBIN}/innxbatch -v -D "$host" $*
+
+You can use B<sendxbatches>, already shipped with INN, doing locking.
+An example of call is:
+
+    sendxbatches nase remote.news.server.name <pathoutgoing>/nase*
+
+=head1 HISTORY
+
+Written by Stefan Petri <petri@ibr.cs.tu-bs.de>, modelled after B<innxmit>
+and the XBATCH patch for the NNTP reference implementation.  Examples from
+Karsten Leipold <poldi@dfn.de>.  Rewritten into POD by Julien Elie.
+
+=head1 SEE ALSO
+
+ctlinnd(8), innxmit(8), newsfeeds(5), nntpsend(8), passwd.nntp(5), shlock(1).
+
+=cut
diff -Nurp inn-2.6.4/doc/pod/innxmit.pod inn-2.6.5/doc/pod/innxmit.pod
--- inn-2.6.4/doc/pod/innxmit.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/innxmit.pod	2022-02-18 20:36:57.000000000 +0100
@@ -10,7 +10,8 @@ B<innxmit> [B<-acdHlprsv>] [B<-P> I<port
 =head1 DESCRIPTION
 
 B<innxmit> connects to the NNTP server at the specified I<host>
-(validating itself via F<passwd.nntp> if possible) and sends it the
+(validating itself via F<passwd.nntp> if authentication credentials
+are present for the remote server in that file) and sends it the
 articles specified in the batch file named I<file>.  It is normally
 invoked by a script run out of cron(8) that uses B<shlock> to lock the
 host name, followed by a B<ctlinnd> command to flush the batch file.
@@ -126,8 +127,6 @@ If the B<-v> flag is used, they will als
 Written by Rich $alz <rsalz@uunet.uu.net> for InterNetNews. Converted to POD
 by Julien Elie.
 
-$Id: innxmit.pod 9588 2013-12-19 17:46:41Z iulius $
-
 =head1 SEE ALSO
 
 ctlinnd(8), inn.conf(5), innd(8), newsfeeds(5), passwd.nntp(5), shlock(1).
diff -Nurp inn-2.6.4/doc/pod/install.pod inn-2.6.5/doc/pod/install.pod
--- inn-2.6.4/doc/pod/install.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/install.pod	2022-02-18 20:36:57.000000000 +0100
@@ -49,12 +49,13 @@ INN has been confirmed to work on recent
 operating systems:
 
     AIX (including 7.2)
-    FreeBSD (including 12.1)
-    Linux (including 3.16, 4.19 and 5.10 kernels, glibc 2.19, 2.28 and 2.31)
-    macOS (including 11)
-    NetBSD (including 9.0)
-    OpenBSD (including 6.8)
-    Oracle Solaris (including 10 and 11)
+    FreeBSD (including 12.1 and 13.0)
+    Linux (including 3.16, 4.19, 5.10 and 5.15 kernels,
+           glibc 2.19, 2.28, 2.31 and 2.33)
+    macOS (including 11 and 12)
+    NetBSD (including 9.2)
+    OpenBSD (including 6.8 and 7.0)
+    Oracle Solaris (including 10 1/13 and 11.3)
 
 Current versions of INN may also work on other operating systems like
 HP-UX, OpenServer, SCO, UnixWare or UX/4800, as well as old versions of
@@ -187,25 +188,31 @@ Released versions of INN are available f
 New major releases will be announced on <inn-announce@lists.isc.org> (see
 F<README>) when they're made.
 
-If you want a more cutting-edge version, you can obtain current
-snapshots from L<https://ftp.isc.org/isc/inn/snapshots/>.  These
-are snapshots of the INN Subversion 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, 2020, would be named F<inn-CURRENT-20200406.tar.gz> and
-F<inn-STABLE-20200406.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.)
+If you want a more cutting-edge version, you can obtain current snapshots
+from L<https://ftp.isc.org/isc/inn/snapshots/>.  These are snapshots
+of the INN Git tree taken daily; there are two snapshots made each
+night in the F<daily> subdirectory (one of the current development
+branch, and one of the stable branch consisting of bug fixes to the
+previous major release), and also daily snapshots at the top level of
+the directory, updated only when the code changes in one of the two
+branches.  They are stored in date format in the F<daily> subdirectory;
+in other words the snapshots from April 6th, 2020, would be named
+F<inn-CURRENT-20200406.tar.gz> and F<inn-STABLE-20200406.tar.gz>.
+At the top level of the directory, the INN version number is used
+followed with either the C<git describe> version number for the stable
+branch or the date for the main branch.  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
-F<< inn-<version> >> or F<< inn-<BRANCH>-<date> >> where the source
-resides.
+Extracting the source distribution will create a directory named F<<
+inn-<version> >>, F<< inn-<BRANCH>-<date> >>, F<< inn-<stable branch
+version>-<git version> >> or F<< inn-<main branch version>-<date> >>
+where the source resides.
 
 =head1 Installing INN
 
@@ -554,8 +561,8 @@ are not backed up because this confuses
 (such as Linux) and the symbolic links for the libraries may point to
 the C<.OLD> versions.  Nonetheless, reverting to a previous version of
 INN should work fine for official releases (that is to say releases
-that are not daily STABLE or CURRENT snapshots) because a proper
-versioning is done, during the release of a new version.
+that are not daily snapshots) because a proper versioning is done during
+the release of a new version.
 
 If you are configuring TLS/SSL support for newsreaders, you must make a
 certificate and private key at least once.  Type:
@@ -786,7 +793,7 @@ will match that article whereas the patt
 will not match that article.  An article posted only to misc.bar will fail
 to match either pattern.
 
-See uwildmat(3) for full details on wildmat patterns.
+See libinn_uwildmat(3) for full details on wildmat patterns.
 
 In all INN configuration files, blank lines and lines beginning with a
 C<#> symbol are considered comments and are ignored.  Be careful, not all
@@ -1289,7 +1296,7 @@ needed when you edit F<expire.ctl> a bit
 
 F<expire.ctl> sets the expiration policy for articles stored on the
 server.  Be careful, since the default configuration will expire most
-articles after 15 days; in most circumstances this deletion is
+articles after 90 days; in most circumstances this deletion is
 I<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.)
@@ -1674,6 +1681,12 @@ or if you do not have a B<start-stop-dae
 
     su news -s /bin/sh -c 'killall nnrpd'
 
+And also, an additional cleaning if a separate TLS B<nnrpd> daemon was
+started as explained above:
+
+    # Clean the PID file of the nnrpd daemon we started on port 563.
+    #rm -f <pathrun>/nnrpd-563.pid
+
 =head1 Processing Newsgroup Control Messages
 
 Control messages are specially-formatted messages that tell news servers
@@ -1739,6 +1752,4 @@ listed in F<control.ctl>.  If a hierarch
 may have to remove all the user IDs except the one that matches the
 F<control.ctl> entry using C<gpg --edit-key> and the C<delkey> command.
 
-$Id: install.pod 10535 2021-01-20 17:55:18Z iulius $
-
 =cut
diff -Nurp inn-2.6.4/doc/pod/libauth.pod inn-2.6.5/doc/pod/libauth.pod
--- inn-2.6.4/doc/pod/libauth.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/libauth.pod	2022-02-18 20:36:57.000000000 +0100
@@ -64,8 +64,6 @@ respectively?
 
 Written by Jeffrey S<M. Vinocur> <jeff@litech.org> for InterNetNews.
 
-$Id: libauth.pod 8200 2008-11-30 13:31:30Z iulius $
-
 =head1 SEE ALSO
 
 nnrpd(8), readers.conf(5), F<doc/external-auth>
diff -Nurp inn-2.6.4/doc/pod/libinn.pod inn-2.6.5/doc/pod/libinn.pod
--- inn-2.6.4/doc/pod/libinn.pod	1970-01-01 01:00:00.000000000 +0100
+++ inn-2.6.5/doc/pod/libinn.pod	2022-02-18 20:36:57.000000000 +0100
@@ -0,0 +1,300 @@
+=head1 NAME
+
+libinn - InterNetNews library routines
+
+=head1 SYNOPSIS
+
+    #include "inn/libinn.h"
+
+    #define ISWHITE(c) ...
+
+    /* Headers-related routines. */
+    extern char *GenerateMessageID(char *domain);
+    extern void HeaderCleanFrom(char *from);
+    extern struct _DDHANDLE *DDstart(FILE *FromServer, FILE *ToServer);
+    extern void DDcheck(struct _DDHANDLE *h, char *group);
+    extern char *DDend(struct _DDHANDLE *h);
+
+    /* Opening the active file on a client. */
+    extern FILE *CAopen(FILE *FromServer, FILE *ToServer);
+    extern FILE *CAlistopen(FILE *FromServer, FILE *ToServer,
+                            const char *request);
+    extern void CAclose(void);
+
+    /* File locking. */
+    enum inn_locktype
+    {
+        INN_LOCK_READ,
+        INN_LOCK_WRITE,
+        INN_LOCK_UNLOCK
+    };
+
+    extern bool inn_lock_file(int fd, enum inn_locktype type,
+                              bool block);
+
+    /* NNTP functions. */
+    extern int NNTPlocalopen(FILE **FromServerp, FILE **ToServerp,
+                             char *errbuff, size_t len);
+    extern int NNTPremoteopen(int port, FILE **FromServerp,
+                              FILE **ToServerp, char *errbuff,
+                              size_t len);
+    extern int NNTPconnect(const char *host, int port,
+                           FILE **FromServerp, FILE **ToServerp,
+                           char *errbuff, size_t len);
+    extern int NNTPsendarticle(char *text, FILE *ToServer,
+                               bool terminate);
+    extern int NNTPsendpassword(char *server, FILE *FromServer,
+                                FILE *ToServer);
+
+    /* Hash functions. */
+    typedef struct {
+        char hash[16];
+    } HASH;
+
+    extern HASH HashMessageID(const char *MessageID);
+
+    /* Other useful functions. */
+    extern char *inn_getfqdn(const char *domain);
+    extern char *GetModeratorAddress(FILE *FromServer, FILE *ToServer,
+                                     char *group, char *moderatormailer);
+
+    /* Miscellaneous. */
+    extern int GetResourceUsage(double *usertime, double *systime);
+    extern void Radix32(unsigned long value, char *buff);
+    extern char *ReadInDescriptor(int fd, struct stat *Sbp);
+    extern char *ReadInFile(const char *name, struct stat *Sbp);
+
+    /* Setting or clearing file descriptor flags. */
+    #include "inn/fdflag.h"
+
+    bool fdflag_close_exec(int fd, bool flag);
+    bool fdflag_nonblocking(socket_type fd, bool flag);
+
+=head1 DESCRIPTION
+
+I<libinn> is a library of utility routines for manipulating Usenet articles
+and related data.  The whole documentation of I<libinn> routines is split
+into several specific man pages besides this one: libinn_clientlib(3),
+libinn_dbz(3), libinn_inndcomm(3), libinn_list(3), libinn_qio(3),
+libinn_tst(3) and libinn_uwildmat(3).
+
+=head2 MACROS
+
+C<ISWHITE> is a macro which tests whether its char argument is a space or a
+tabulation.
+
+=head2 HEADERS-RELATED ROUTINES
+
+B<GenerateMessageID> uses the current time, process-ID, and fully qualified
+domain name, which is passed as an argument and used if local host cannot
+be resolved or is different from I<domain> set in F<inn.conf>, to create a
+Message-ID header field that is highly likely to be unique.  The returned
+value points to static space that is reused on subsequent calls.
+
+B<HeaderCleanFrom> removes the extraneous information from the value of a From
+or Reply-To header field and leaves just the official mailing address.  In
+particular, the following transformations are made to the I<from> parameter:
+
+=over 4
+
+=item *
+
+address --> address
+
+=item *
+
+address (stuff) --> address
+
+=item *
+
+stuff <address> --> address
+
+=back
+
+The transformations are simple, based on S<RFC 5536> which limits the format
+of the header field.
+
+B<DDstart>, B<DDcheck>, and B<DDend> are used to set the Distribution header
+field; the C<DD> stands for I<Default Distribution>.  The F<distrib.pats>
+file is consulted to determine the proper value for the Distribution header
+field after all newsgroups have been checked.  B<DDstart> begins the parsing.
+It returns a pointer to an opaque handle that should be used on subsequent
+calls.  The I<FromServer> and I<ToServer> parameters should be C<FILE>'s
+connected to the NNTP server for input and output, respectively.  If either
+parameter is NULL, then an empty default will ultimately be returned if the
+file is not locally available.
+
+B<DDcheck> should be called with the handle, I<h>, returned by B<DDstart> and
+a newsgroup, I<group>, to check.  It can be called as often as necessary.
+
+B<DDend> releases any state maintained in the handle and returns an allocated
+copy of the text that should be used for the Distribution header field.
+
+=head2 CLIENT ACTIVE FILE
+
+B<CAopen> and B<CAclose> provide news clients with access to the F<active>
+file; the C<CA> stands for I<Client Active>.  B<CAopen> opens the F<active>
+file for reading.  It returns a pointer to an open C<FILE>, or NULL on
+error.  If a local or NFS-mounted copy exists, B<CAopen> will use that file.
+The I<FromServer> and I<ToServer> parameters should be C<FILE>'s connected
+to the NNTP server for input and output, respectively.  See B<NNTPremoteopen>
+or B<NNTPlocalopen>, below.  If either parameter is NULL, then B<CAopen> will
+just return NULL if the file is not locally available.  If they are not NULL,
+B<CAopen> will use them to query the NNTP server using the LIST command to
+make a local temporary copy.
+
+The B<CAlistopen> sends a LIST command to the server and returns a temporary
+file containing the results.  The I<request> parameter, if not NULL, will be
+sent as an argument to the command.  Unlike B<CAopen>, this routine will never
+use a locally-available copy of the F<active> file.
+
+B<CAclose> closes the F<active> file and removes any temporary file that might
+have been created by B<CAopen> or B<CAlistopen>.
+
+=head2 FILE LOCKING
+
+B<inn_lock_file> tries to lock the file descriptor I<fd>.  If I<block> is
+true, it will block until the lock can be made, otherwise it will return
+false if the file cannot be locked.  I<type> is one of C<INN_LOCK_READ>,
+C<INN_LOCK_WRITE> or C<INN_LOCK_UNLOCK>.  It returns false on failure or true
+on success.
+
+=head2 NNTP FUNCTIONS
+
+B<NNTPlocalopen> opens a connection to the private port of an InterNetNews
+server running on the local host, if C<HAVE_UNIX_DOMAIN_SOCKETS> in
+F<include/config.h> is defined.  It returns C<-1> on failure, or C<0> on
+success.  I<FromServerp> and I<ToServerp> will be filled in with C<FILE>'s
+which can be used to communicate with the server.  I<errbuff> can either be
+NULL or a pointer to a buffer at least 512 bytes long.  If not NULL, and the
+server refuses the connection, then it will be filled in with the text of
+the server's reply.  I<len> should be the length of the I<errbuff> buffer.
+This routine is not for general use.  If C<HAVE_UNIX_DOMAIN_SOCKETS> in
+F<include/config.h> is not defined, this is a stub routine, for compatibility
+with systems that have Unix-domain stream sockets, and it then always returns
+C<-1>.
+
+B<NNTPremoteopen> does the same, except that it uses the I<server> parameter
+set in F<inn.conf> as the local server, and opens a connection to the I<port>.
+Any client program can use this routine.  It returns C<-1> on failure, or C<0>
+on success.
+
+B<NNTPconnect> is the same as B<NNTPremoteopen> except that the desired host
+is given as the I<host> parameter.
+
+B<NNTPsendarticle> writes I<text> on I<ToServer> using NNTP conventions for
+line termination.  The text should consist of one or more lines ending with
+a newline.  If I<terminate> is true, then the routine will also write the NNTP
+data-termination marker on the stream.  It returns C<-1> on failure, or C<0>
+on success.
+
+B<NNTPsendpassword> sends authentication information to an NNTP server by
+finding the appropriate entry in the F<passwd.nntp> file.  I<server> contains
+the name of the host; the I<server> parameter in F<inn.conf> will be used if
+I<server> is NULL.  I<FromServer> and I<ToServer> should be C<FILE>'s that
+are connected to the server.  No action is taken if the specified host is not
+listed in the password file.
+
+=head2 HASHES
+
+B<HashMessageID> returns hashed Message-ID using MD5.
+
+=head2 OTHER USEFUL FUNCTIONS
+
+B<inn_getfqdn> returns the fully qualified domain name of the local host.
+I<domain> is used to qualify the local host name if local host cannot be
+resolved in DNS.  The returned value points to newly-allocated memory that the
+caller is responsible for freeing, or NULL on error.
+
+B<GetModeratorAddress> returns the mailing address of the moderator for
+specified I<group> or NULL on error.  I<moderatormailer> is used as its
+address, if there is no matched moderator.  See moderators(5) for details on
+how the address is determined.  B<GetModeratorAddress> does no checking to
+see if the specified group is actually moderated.  The returned value points
+to static space that is reused on subsequent calls.  The I<FromServer> and
+I<ToServer> parameters should be C<FILE>'s connected to the NNTP server for
+input and output, respectively.  If either of these parameters is NULL, then
+an attempt to get the list from a local copy is made.
+
+=head2 MISCELLANEOUS
+
+B<GetResourceUsage> fills in the I<usertime> and I<systime> parameters with
+the total user and system time used by the current process and any children
+it may have spawned.  If C<HAVE_GETRUSAGE> in F<include/config.h> is defined,
+it gets the values by doing a getrusage(2) system call; otherwise it calls
+times(2).  It returns C<-1> on failure, or C<0> on success.
+
+B<Radix32> converts the number in I<value> into a radix-32 string into the
+buffer pointed to by I<buff>.  The number is split into five-bit pieces and
+each piece is converted into a character using the alphabet C<0..9a..v> to
+represent the numbers C<0..32>.  Only the lowest 32 bits of I<value> are used,
+so I<buff> needs only pointing to a buffer of eight bytes (seven characters
+and the trailing C<\0>).
+
+B<ReadInFile> reads the file named I<name> into allocated memory, appending a
+terminating C<\0> byte.  It returns a pointer to the space, or NULL on error.
+If I<Sbp> is not NULL, it is taken as the address of a place to store the
+results of a stat(2) call.
+
+B<ReadInDescriptor> performs the same function as B<ReadInFile> except that
+I<fd> refers to an already-open file.
+
+=head2 FILE DESCRIPTOR FLAGS
+
+B<fdflag_close_exec> can make a descriptor I<close-on-exec> so that it is not
+shared with any child processes.  If the flag is true, the file is so marked;
+if false, the I<close-on-exec> mode is cleared.  It returns false on failure
+(or when the function is unsupported) or true on success.
+
+B<fdflag_nonblocking> enables (if I<flag> is true) or disables (if I<flag>
+is false) non-blocking I/O on the indicated C<socket_type> (which can be a
+non-socket file descriptor on UNIX systems, but a C<socket_type> is expected
+on Windows).  It returns false on failure or true on success.
+
+=head1 EXAMPLES
+
+    #include "inn/fdflag.h"
+    #include "inn/libinn.h"
+
+    char *p;
+    char frombuff[256], errbuff[256];
+    FILE *F;
+    FILE *ToServer;
+    FILE *FromServer;
+    int port = 119;
+
+    strlcpy(frombuff, HDR(HDR__FROM), sizeof(frombuff));
+    HeaderCleanFrom(frombuff);
+
+    if ((F = CAopen(FromServer, ToServer)) == NULL)
+        Fatal("Can't open active file");
+
+    /* Don't pass the file on to our children. */
+    fdflag_close_exec(fileno(F), true);
+
+    /* Make a local copy. */
+    p = ReadInDescriptor(fileno(F), (struct stat *) NULL);
+
+    /* Close the file. */
+    CAclose();
+
+    if (NNTPremoteopen(port, &FromServer, &ToServer, errbuff,
+                       sizeof(errbuff)) < 0)
+        Fatal("Can't connect to server");
+
+    if ((p = GetModeratorAddress(NULL, NULL, "comp.sources.unix",
+                                 "%s@example.com")) == NULL)
+        Fatal("Can't find moderator's address");
+
+=head1 HISTORY
+
+Written by Rich $alz <rsalz@uunet.uu.net> for InterNetNews.  Rewritten into
+POD by Julien Elie.
+
+=head1 SEE ALSO
+
+active(5), inn.conf(5), libinn_clientlib(3), libinn_dbz(3),
+libinn_inndcomm(3), libinn_list(3), libinn_qio(3), libinn_tst(3),
+libinn_uwildmat(3), moderators(5), passwd.nntp(5).
+
+=cut
diff -Nurp inn-2.6.4/doc/pod/libinn_clientlib.pod inn-2.6.5/doc/pod/libinn_clientlib.pod
--- inn-2.6.4/doc/pod/libinn_clientlib.pod	1970-01-01 01:00:00.000000000 +0100
+++ inn-2.6.5/doc/pod/libinn_clientlib.pod	2022-02-18 20:36:57.000000000 +0100
@@ -0,0 +1,64 @@
+=head1 NAME
+
+clientlib - NNTP clientlib part of InterNetNews library
+
+=head1 SYNOPSIS
+
+    #include <inn/libinn.h>
+
+    extern FILE *ser_rd_fp;
+    extern FILE *ser_wr_fp;
+    extern char ser_line[];
+
+    extern char *getserverbyfile(char *file UNUSED);
+    extern int server_init(char *host, int port);
+    extern int handle_server_response(int response, char *host);
+    extern void put_server(const char *text);
+    extern int get_server(char *buff, int buffsize);
+    extern void close_server(void);
+
+=head1 DESCRIPTION
+
+The routines described in this manual page are part of the InterNetNews
+library, libinn(3).  They are replacements for the I<clientlib> part of
+the NNTP distribution, and are intended to be used in building news clients.
+
+The B<getserverbyfile> function retrieves the value of the I<server> parameter
+in F<inn.conf> (or the value of the C<NNTPSERVER> environment variable if set)
+as the name of the local NNTP server.  It returns a pointer to static space.
+The I<file> parameter is ignored (F<inn.conf> is forced).
+
+The B<server_init> function opens a connection to the NNTP server at
+the specified I<host>, in reader mode.  It returns the server's response
+code or C<-1> on error.  If a connection was made, then I<ser_rd_fp> and
+I<ser_wr_fp> can be used to read from and write to the server, respectively,
+and I<ser_line> will contain the server's response (though you should use
+the more convenient B<put_server> and B<get_server> functions instead).
+
+The B<handle_server_response> function decodes the I<response> code,
+which comes from the server on I<host>.  If the client is authorized,
+it returns C<0>.  A client that is only allowed to read is authorized,
+but B<handle_server_response> will print a message on the standard output.
+If the client is not authorized to talk to the server, then a message is
+printed and the routine returns C<-1>.
+
+The B<put_server> function sends I<text> to the server, adding the necessary
+NNTP line terminators, and flushing the I/O buffer.
+
+The B<get_server> function reads a line of text from the server into I<buff>,
+reading at most I<buffsize> characters.  Any trailing C<\r\n> terminators
+are stripped off.  B<get_server> returns C<-1> on error, C<0> on success.
+
+The B<close_server> function sends a C<QUIT> command to the server and
+closes the connection.
+
+=head1 HISTORY
+
+Written by Rich $alz <rsalz@uunet.uu.net> for InterNetNews.  Rewritten into
+POD by Julien Elie.
+
+=head1 SEE ALSO
+
+libinn(3).
+
+=cut
diff -Nurp inn-2.6.4/doc/pod/libinn_dbz.pod inn-2.6.5/doc/pod/libinn_dbz.pod
--- inn-2.6.4/doc/pod/libinn_dbz.pod	1970-01-01 01:00:00.000000000 +0100
+++ inn-2.6.5/doc/pod/libinn_dbz.pod	2022-02-18 20:36:57.000000000 +0100
@@ -0,0 +1,181 @@
+=head1 NAME
+
+dbz - Database routines for InterNetNews
+
+=head1 SYNOPSIS
+
+    #include <inn/dbz.h>
+
+    #define DBZMAXKEY              ...
+    #define DBZ_INTERNAL_HASH_SIZE ...
+
+    typedef enum
+    {
+        DBZSTORE_OK,
+        DBZSTORE_EXISTS,
+        DBZSTORE_ERROR
+    } DBZSTORE_RESULT;
+
+    typedef enum
+    {
+        INCORE_NO,
+        INCORE_MEM,
+        INCORE_MMAP
+    } dbz_incore_val;
+
+    typedef struct {
+        bool writethrough;
+        dbz_incore_val pag_incore;
+        dbz_incore_val exists_incore;
+        bool nonblock;
+    } dbzoptions;
+
+    typedef struct {
+        char hash[DBZ_INTERNAL_HASH_SIZE];
+    } __attribute__((__packed__)) erec;
+
+    extern bool dbzinit(const char *name);
+    extern bool dbzclose(void);
+
+    extern bool dbzfresh(const char *name, off_t size);
+    extern bool dbzagain(const char *name, const char *oldname);
+    extern bool dbzexists(const HASH key);
+    extern bool dbzfetch(const HASH key, off_t *value);
+    extern DBZSTORE_RESULT dbzstore(const HASH key, off_t data);
+    extern bool dbzsync(void);
+    extern long dbzsize(off_t contents);
+    extern void dbzsetoptions(const dbzoptions options);
+    extern void dbzgetoptions(dbzoptions *options);
+
+=head1 DESCRIPTION
+
+These functions provide an indexing system for rapid random access to a text
+file, hereafter named the I<base> file.
+
+I<dbz> stores offsets into the base file for rapid retrieval.  All retrievals
+are keyed on a hash value that is generated by the B<HashMessageID> function
+in libinn(3).
+
+B<dbzinit> opens a database, an index into the base file I<name>, consisting
+of files I<name>F<.dir>, I<name>F<.index>, and I<name>F<.hash> which must
+already exist.  (If the database is new, they should be zero-length files.)
+Subsequent accesses go to that database until B<dbzclose> is called to close
+the database.  When tagged hash format is used (if B<--enable-tagged-hash> was
+given at configure time), a I<name>F<.pag> file is used instead of F<.index>
+and F<.hash>.
+
+B<dbzfetch> searches the database for the specified I<key>, assigning the
+offset of the base file for the corresponding I<key> to I<value>, if any.
+
+B<dbzstore> stores the I<key>-I<data> pair in the database.  It will
+return C<DBZSTORE_EXISTS> for duplicates (already existing entries), and
+C<DBZSTORE_OK> for success.  It will fail with C<DBZSTORE_ERROR> if the
+database files are not writable or not opened, or if any other error occurs.
+
+B<dbzexists> will verify whether or not the given hash exists or not.  I<dbz>
+is optimized for this operation and it may be significantly faster than
+B<dbzfetch>.
+
+B<dbzfresh> is a variant of B<dbzinit> for creating a new database with
+more control over details.  The I<size> parameter specifies the size of
+the first hash table within the database, in number of key-value pairs.
+Performance will be best if the number of key-value pairs stored in the
+database does not exceed about 2/3 of I<size>.  (The B<dbzsize> function,
+given the expected number of key-value pairs, will suggest a database size
+that meets these criteria.)  Assuming that an I<fseek> offset is 4 bytes,
+the F<.index> file will be 4 * I<size> bytes.  The F<.hash> file will be
+C<DBZ_INTERNAL_HASH_SIZE> * I<size> bytes (the F<.dir> file is tiny and
+roughly constant in size) until the number of key-value pairs exceeds about
+80% of I<size>.  (Nothing awful will happen if the database grows beyond 100%
+of I<size>, but accesses will slow down quite a bit and the F<.index> and
+F<.hash> files will grow somewhat.)
+
+I<dbz> stores up to C<DBZ_INTERNAL_HASH_SIZE> bytes (by default, 4 bytes
+if tagged hash format is used, 6 otherwise) of the Message-ID's hash in the
+F<.hash> file to confirm a hit.  This eliminates the need to read the base
+file to handle collisions.
+
+A I<size> of C<0> given to B<dbzfresh> is synonymous with the local default;
+the normal default is suitable for tables of 5,000,000 key-value pairs.
+That default value is used by B<dbzinit>.
+
+When databases are regenerated periodically, as it is the case for the
+F<history> file, it is simplest to pick the parameters for a new database
+based on the old one.  This also permits some memory of past sizes of the
+old database, so that a new database size can be chosen to cover expected
+fluctuations.  B<dbzagain> is a variant of B<dbzinit> for creating a new
+database as a new generation of an old database.  The database files for
+I<oldname> must exist.  B<dbzagain> is equivalent to calling B<dbzfresh> with
+a I<size> equal to the result of applying B<dbzsize> to the largest number of
+entries in the I<oldname> database and its previous 10 generations.
+
+When many accesses are being done by the same program, I<dbz> is massively
+faster if its first hash table is in memory.  If the I<pag_incore> flag
+is set to C<INCORE_MEM>, an attempt is made to read the table in when the
+database is opened, and B<dbzclose> writes it out to disk again (if it was
+read successfully and has been modified).  B<dbzsetoptions> can be used to
+set the I<pag_incore> and I<exists_incore> flags to different values which
+should be C<INCORE_NO> (read from disk), C<INCORE_MEM> (read from memory)
+or C<INCORE_MMAP> (read from a mmap'ed file) for the F<.hash> and F<.index>
+files separately; this does not affect the status of a database that has
+already been opened.  The default is C<INCORE_NO> for the F<.index> file and
+C<INCORE_MMAP> for the F<.hash> file.  The attempt to read the table in may
+fail due to memory shortage; in this case I<dbz> fails with an error.  Stores
+to an in-memory database are not (in general) written out to the file until
+B<dbzclose> or B<dbzsync>, so if robustness in the presence of crashes or
+concurrent accesses is crucial, in-memory databases should probably be avoided
+or the I<writethrough> option should be set to true (telling to systematically
+write to the filesystem in addition to updating the in-memory database).
+
+If the I<nonblock> option is true, then writes to the F<.hash> and F<.index>
+files will be done using non-blocking I/O.  This can be significantly faster
+if your platform supports non-blocking I/O with files.  It is only applicable
+if you're not mmap'ing the database.
+
+B<dbzsync> causes all buffers etc. to be flushed out to the files.  It is
+typically used as a precaution against crashes or concurrent accesses when
+a I<dbz>-using process will be running for a long time.  It is a somewhat
+expensive operation, especially for an in-memory database.
+
+Concurrent reading of databases is fairly safe, but there is no
+(inter)locking, so concurrent updating is not.
+
+An open database occupies three I<stdio> streams and two file descriptors;
+Memory consumption is negligible except for in-memory databases (and I<stdio>
+buffers).
+
+=head1 DIAGNOSTICS
+
+Functions returning I<bool> values return true for success, false for failure.
+
+B<dbzinit> attempts to have I<errno> set plausibly on return, but otherwise
+this is not guaranteed.  An I<errno> of C<EDOM> from B<dbzinit> indicates that
+the database did not appear to be in I<dbz> format.
+
+If C<DBZTEST> is defined at compile-time, then a B<main()> function will be
+included.  This will do performance tests and integrity test.
+
+=head1 BUGS
+
+Unlike I<dbm>, I<dbz> will refuse to B<dbzstore> with a key already in the
+database.  The user is responsible for avoiding this.
+
+The RFC5322 case mapper implements only a first approximation to the
+hideously-complex RFC5322 case rules.
+
+I<dbz> no longer tries to be call-compatible with I<dbm> in any way.
+
+=head1 HISTORY
+
+The original I<dbz> was written by Jon Zeeff <zeeff@b-tech.ann-arbor.mi.us>.
+Later contributions by David Butler and Mark Moraes.  Extensive reworking,
+including this documentation, by Henry Spencer <henry@zoo.toronto.edu> as part
+of the C News project.  MD5 code borrowed from RSA.  Extensive reworking to
+remove backwards compatibility and to add hashes into I<dbz> files by Clayton
+O'Neill <coneill@oneill.net>.  Rewritten into POD by Julien Elie.
+
+=head1 SEE ALSO
+
+dbm(3), history(5), libinn(3).
+
+=cut
diff -Nurp inn-2.6.4/doc/pod/libinn_inndcomm.pod inn-2.6.5/doc/pod/libinn_inndcomm.pod
--- inn-2.6.4/doc/pod/libinn_inndcomm.pod	1970-01-01 01:00:00.000000000 +0100
+++ inn-2.6.5/doc/pod/libinn_inndcomm.pod	2022-02-18 20:36:57.000000000 +0100
@@ -0,0 +1,120 @@
+=head1 NAME
+
+inndcomm - Routines for managing innd control commands
+
+=head1 SYNOPSIS
+
+    #include <inn/inndcomm.h>
+
+    #define SC_ADDHIST ...
+    #define SC_ALLOW ...
+    #define SC_BEGIN ...
+    #define SC_CANCEL ...
+    #define SC_CHANGEGROUP ...
+    #define SC_CHECKFILE ...
+    #define SC_DROP ...
+    #define SC_FEEDINFO ...
+    #define SC_FLUSH ...
+    #define SC_FLUSHLOGS ...
+    #define SC_GO ...
+    #define SC_HANGUP ...
+    #define SC_LOGMODE ...
+    #define SC_LOWMARK ...
+    #define SC_MODE ...
+    #define SC_NAME ...
+    #define SC_NEWGROUP ...
+    #define SC_PARAM ...
+    #define SC_PAUSE ...
+    #define SC_PERL ...
+    #define SC_PYTHON ...
+    #define SC_READERS ...
+    #define SC_REJECT ...
+    #define SC_RELOAD ...
+    #define SC_RENUMBER ...
+    #define SC_RESERVE ...
+    #define SC_RMGROUP ...
+    #define SC_SEND ...
+    #define SC_SHUTDOWN ...
+    #define SC_STATHIST ...
+    #define SC_STATUS ...
+    #define SC_SIGNAL ...
+    #define SC_THROTTLE ...
+    #define SC_TIMER ...
+    #define SC_TRACE ...
+    #define SC_XABORT ...
+    #define SC_XEXEC ...
+
+    #define MAX_REASON_LEN ...
+
+    extern int ICCopen(void);
+    extern int ICCclose(void);
+    extern void ICCsettimeout(int i);
+    extern int ICCcommand(char cmd, const char *argv[], char **replyp);
+    extern int ICCcancel(const char *msgid);
+    extern int ICCpause(const char *why);
+    extern int ICCreserve(const char *why);
+    extern int ICCgo(const char *why);
+
+    extern const char *ICCfailure;
+
+=head1 DESCRIPTION
+
+The routines described in this manual page are part of the InterNetNews
+library, libinn(3).  They are used to send commands to a running B<innd>
+daemon on the local host.  The letters C<ICC> stand for B<I>nnd B<C>ontrol
+B<C>ommand.
+
+The B<ICCopen> function creates a Unix-domain datagram socket and binds it
+to the server's control socket, if such sockets are supported.  Otherwise,
+it creates a named pipe for communicating with the server.  It returns
+C<-1> on failure or C<0> on success.  This routine must be called before
+any other routine.
+
+The B<ICCclose> function closes any descriptors that have been created
+by B<ICCopen>.  It returns C<-1> on failure or C<0> on success.
+
+The B<ICCsettimeout> function can be called before any of the following
+routines to determine how long the library should wait before giving up
+on getting the server's reply.  This is done by setting and catching a
+SIGALRM signal(2).  If the timeout is less than zero, then no reply will
+be waited for.  The B<SC_SHUTDOWN>, B<SC_XABORT>, and B<SC_XEXEC> commands
+do not get a reply either.  The default, which can be obtained by setting
+the timeout to <0>, is to wait during 2 minutes.
+
+The B<ICCcommand> function sends the command I<cmd> with parameters I<argv>
+to the server.  It returns C<-1> on error.  If the server replies, and
+I<replyp> is not NULL, it will be filled in with an allocated buffer that
+contains the full text of the server's reply.  This buffer is a string in
+the form of "I<digits> I<text>" where I<digits> is the text value of the
+recommended exit code (usually C<1>, followed with I<text>, giving the
+reason of the failure); a C<0> value indicates success.  Replies longer
+than 64KB will be truncated.  The possible values of I<cmd> are defined
+in the F<inn/inndcomm.h> header file, and also in the SYNOPSIS of this
+man page.  The parameters for each command are described in ctlinnd(8).
+This routine returns C<-1> on communication failure, or the exit status
+sent by the server which will never be negative.
+
+The B<ICCcancel> function sends a C<cancel> message to the server.
+Its I<msgid> argument is the Message-ID of the article that should be
+cancelled.  The return value is the same as for B<ICCcommand>.
+
+The B<ICCpause>, B<ICCreserve>, and B<ICCgo> functions send a C<pause>,
+C<reserve>, or C<go> command to the server, respectively.  If B<ICCreserve>
+is used, then the I<why> value used in the B<ICCpause> invocation must match;
+the value used in the B<ICCgo> invocation must always match the one used
+in the B<ICCpause> invocation.  The return value for all three routines is
+the same as for B<ICCcommand>.
+
+If any routine described above fails, the I<ICCfailure> variable will
+identify the system call that failed.
+
+=head1 HISTORY
+
+Written by Rich $alz <rsalz@uunet.uu.net> for InterNetNews.  Rewritten into
+POD by Julien Elie.
+
+=head1 SEE ALSO
+
+ctlinnd(8), innd(8), libinn(3).
+
+=cut
diff -Nurp inn-2.6.4/doc/pod/libinn_list.pod inn-2.6.5/doc/pod/libinn_list.pod
--- inn-2.6.4/doc/pod/libinn_list.pod	1970-01-01 01:00:00.000000000 +0100
+++ inn-2.6.5/doc/pod/libinn_list.pod	2022-02-18 20:36:57.000000000 +0100
@@ -0,0 +1,83 @@
+=head1 NAME
+
+list - list routines
+
+=head1 SYNOPSIS
+
+    #include <inn/list.h>
+
+    struct node {
+        struct node *succ;
+        struct node *pred;
+    };
+
+    struct list {
+        struct node *head;
+        struct node *tail;
+        struct node *tailpred;
+    };
+
+    void list_new(struct list *list);
+
+    struct node *list_addhead(struct list *list, struct node *node);
+
+    struct node *list_addtail(struct list *list, struct node *node);
+
+    struct node *list_head(struct list *list);
+
+    struct node *list_tail(struct list *list);
+
+    struct node *list_succ(struct node *node);
+
+    struct node *list_pred(struct node *node);
+
+    struct node *list_remhead(struct list *list);
+
+    struct node *list_remtail(struct list *list);
+
+    struct node *list_remove(struct node *node);
+
+    struct node *list_insert(struct list *list, struct node *node, struct node *pred);
+
+    bool list_isempty(struct list *list);
+
+=head1 DESCRIPTION
+
+B<list_new> initialises the list header I<list> so as to create an
+empty list.
+
+B<list_addhead> adds I<node> to the head of I<list>, returning the node
+just added.
+
+B<list_addtail> adds I<node> to the tail of I<list>, returning the node
+just added.
+
+B<list_head> returns a pointer to the the node at the head of I<list>
+or B<NULL> if the list is empty.
+
+B<list_tail> returns a pointer to the the node at the tail of I<list>
+or B<NULL> if the list is empty.
+
+B<list_succ> returns the next (successor) node on the list after
+I<node> or B<NULL> if I<node> was the final node.
+
+B<list_pred> returns the previous (predecessor) node on the list before
+I<node> or B<NULL> if I<node> was the first node.
+
+B<list_remhead> removes the first node from I<list> and returns it to
+the caller. If the list is empty B<NULL> is returned.
+
+B<list_remtail> removes the last node from I<list> and returns it to
+the caller. If the list is empty B<NULL> is returned.
+
+B<list_remove> removes I<node> from the list it is on and returns it
+to the caller.
+
+B<list_insert> inserts I<node> onto I<list> after the node I<pred>. If
+I<pred> is B<NULL> then I<node> is added to the head of I<list>.
+
+=head1 HISTORY
+
+Written by Alex Kiernan <alex.kiernan@thus.net> for S<InterNetNews 2.4.0>.
+
+=cut
diff -Nurp inn-2.6.4/doc/pod/libinn_qio.pod inn-2.6.5/doc/pod/libinn_qio.pod
--- inn-2.6.4/doc/pod/libinn_qio.pod	1970-01-01 01:00:00.000000000 +0100
+++ inn-2.6.5/doc/pod/libinn_qio.pod	2022-02-18 20:36:57.000000000 +0100
@@ -0,0 +1,108 @@
+=head1 NAME
+
+qio - Quick I/O routines for reading files
+
+=head1 SYNOPSIS
+
+    #include <inn/qio.h>
+
+    QIOSTATE *QIOopen(const char *name);
+
+    QIOSTATE *QIOfdopen(int> I<fd);
+
+    void QIOclose(QIOSTATE *qp);
+
+    char *QIOread(QIOSTATE *qp);
+
+    int QIOfileno(QIOSTATE *qp);
+
+    size_t QIOlength(QIOSTATE *qp);
+
+    int QIOrewind(QIOSTATE *qp);
+
+    off_t QIOtell(QIOSTATE *qp);
+
+    bool QIOerror(QIOSTATE *qp);
+
+    bool QIOtoolong(QIOSTATE *qp);
+
+=head1 DESCRIPTION
+
+The routines described in this manual page are part of libinn(3).  They
+are used to provide quick read access to files; the QIO routines use
+buffering adapted to the block size of the device, similar to stdio, but
+with a more convenient syntax for reading newline-terminated lines.  QIO
+is short for "Quick I/O" (a bit of a misnomer, as QIO provides read-only
+access to files only).
+
+The QIOSTATE structure returned by B<QIOopen> and B<QIOfdopen> is the
+analog to stdio's FILE structure and should be treated as a black box by
+all users of these routines.  Only the above API should be used.
+
+B<QIOopen> opens the given file for reading with a buffer size of 32KiB.
+Returns a pointer to use for subsequent calls, or NULL on error.
+B<QIOfdopen> performs the same operation except on an already-open file
+descriptor (I<fd> must designate a file open for reading).
+
+B<QIOclose> closes the open file and releases any resources used by the
+QIOSTATE structure.  The QIOSTATE pointer should not be used again after
+it has been passed to this function.
+
+B<QIOread> reads the next newline-terminated line in the file and returns
+a pointer to it, with the trailing newline replaced by nul.  The returned
+pointer is a pointer into a buffer in the QIOSTATE object and therefore
+will remain valid until B<QIOclose> is called on that object.  If EOF is
+reached, an error occurs, or if the line is longer than the buffer size
+(32KiB), NULL is returned instead.  To distinguish between the error
+cases, use B<QIOerror> and B<QIOtoolong>.
+
+B<QIOfileno> returns the descriptor of the open file.
+
+B<QIOlength> returns the length in bytes of the last line returned by
+B<QIOread>.  Its return value is only defined after a successful call to
+B<QIOread>.
+
+B<QIOrewind> sets the read pointer back to the beginning of the file and
+reads the first block of the file in anticipation of future reads.  It
+returns 0 if successful and -1 on error.
+
+B<QIOtell> returns the current value of the read pointer (the lseek(2)
+offset at which the next line will start).
+
+B<QIOerror> returns true if there was an error in the last call to
+B<QIOread>, false otherwise.  B<QIOtoolong> returns true if there was an
+error and the error was that the line was too long.  If B<QIOread> returns
+NULL, these functions should be called to determine what happened.  If
+B<QIOread> returned NULL and B<QIOerror> is false, EOF was reached.  Note
+that if B<QIOtoolong> returns true, the next call to B<QIOread> will try
+to read the remainder of the line and will likely return a partial line;
+users of this library should in general treat long lines as fatal errors.
+
+=head1 EXAMPLES
+
+This block of code opens F</etc/motd> and reads it a line at a time,
+printing out each line preceded by its offset in the file.
+
+    QIOSTATE *qp;
+    off_t offset;
+    char *p;
+
+    qp = QIOopen("/etc/motd");
+    if (qp == NULL) {
+        perror("Open error");
+        exit(1);
+    }
+    for (p = QIOread(qp); p != NULL; p = QIOread(qp))
+        printf("%ld: %s\n", (unsigned long) QIOtell(qp), p);
+    if (QIOerror(qp)) {
+        perror("Read error");
+        exit(1);
+    }
+    QIOclose(qp);
+
+=head1 HISTORY
+
+Written by Rich $alz <rsalz@uunet.uu.net> for InterNetNews.  Updated by
+Russ Allbery <eagle@eyrie.org>.
+
+=cut
diff -Nurp inn-2.6.4/doc/pod/libinn_tst.pod inn-2.6.5/doc/pod/libinn_tst.pod
--- inn-2.6.4/doc/pod/libinn_tst.pod	1970-01-01 01:00:00.000000000 +0100
+++ inn-2.6.5/doc/pod/libinn_tst.pod	2022-02-18 20:36:57.000000000 +0100
@@ -0,0 +1,76 @@
+=head1 NAME
+
+tst - ternary search trie functions
+
+=head1 SYNOPSIS
+
+    #include <inn/tst.h>
+
+    struct tst;
+
+    struct tst *tst_init(int node_line_width);
+
+    void tst_cleanup(struct tst *tst);
+
+    int tst_insert(struct tst *tst, const unsigned char *key, void *data, int option, void **exist_ptr);
+
+    void *tst_search(struct tst *tst, const unsigned char *key);
+
+    void *tst_delete(struct tst *tst, const unsigned char *key);
+
+=head1 DESCRIPTION
+
+B<tst_init> allocates memory for members of I<struct tst>, and
+allocates the first I<node_line_width> nodes. A NULL pointer is
+returned by B<tst_init> if any part of the memory allocation fails. On
+success, a pointer to a I<struct tst> is returned.
+
+The value for I<node_line_width> must be chosen very carefully. One
+node is required for every character in the tree. If you choose a
+value that is too small, your application will spend too much time
+calling malloc(3) and your node space will be too spread out. Too large
+a value is just a waste of space.
+
+B<tst_cleanup> frees all memory allocated to nodes, internal structures,
+as well as I<tst> itself.
+
+B<tst_insert> inserts the string I<key> into the tree. Behavior when a
+duplicate key is inserted is controlled by I<option>. If I<key> is
+already in the tree then B<TST_DUPLICATE_KEY> is returned, and the
+data pointer for the existing key is placed in I<exist_ptr>.  If
+I<option> is set to B<TST_REPLACE> then the existing data pointer for
+the existing key is replaced by I<data>.  Note that the old data
+pointer will still be placed in I<exist_ptr>.
+
+If a duplicate key is encountered and I<option> is not set to
+B<TST_REPLACE> then B<TST_DUPLICATE_KEY> is returned. If I<key> is
+zero length then B<TST_NULL_KEY> is returned. A successful insert or
+replace returns B<TST_OK>. A return value of B<TST_ERROR> indicates
+that a memory allocation error occurred while trying to grow the node
+free.
+
+Note that the I<data> argument must never be B<NULL>. If it is, then
+calls to B<tst_search> will fail for a key that exists because the
+data value was set to B<NULL>, which is what B<tst_search> returns. If
+you just want a simple existence tree, use the B<tst> pointer as the
+data pointer.
+
+B<tst_search> finds the string I<key> in the tree if it exists and
+returns the data pointer associated with that key.
+
+If I<key> is not found then B<NULL> is returned, otherwise the data pointer
+associated with I<key> is returned.
+
+B<tst_delete> deletes the string I<key> from the tree if it exists and
+returns the data pointer assocaited with that key.
+
+If I<key> is not found then B<NULL> is returned, otherwise the data
+pointer associated with I<key> is returned.
+
+=head1 HISTORY
+
+Converted to POD from Peter S<A. Friend>'s ternary search trie
+documentation by Alex Kiernan <alex.kiernan@thus.net> for
+S<InterNetNews 2.4.0>.
+
+=cut
diff -Nurp inn-2.6.4/doc/pod/libinn_uwildmat.pod inn-2.6.5/doc/pod/libinn_uwildmat.pod
--- inn-2.6.4/doc/pod/libinn_uwildmat.pod	1970-01-01 01:00:00.000000000 +0100
+++ inn-2.6.5/doc/pod/libinn_uwildmat.pod	2022-02-18 20:36:57.000000000 +0100
@@ -0,0 +1,177 @@
+=head1 NAME
+
+uwildmat, uwildmat_simple, uwildmat_poison - Perform wildmat matching
+
+=head1 SYNOPSIS
+
+    #include <inn/libinn.h>
+
+    bool uwildmat(const char *text, const char *pattern);
+
+    bool uwildmat_simple(const char *text, const char *pattern);
+
+    enum uwildmat uwildmat_poison(const char *text, const char *pattern);
+
+=head1 DESCRIPTION
+
+B<uwildmat> compares I<text> against the wildmat expression I<pattern>,
+returning true if and only if the expression matches the text.  C<@> has
+no special meaning in I<pattern> when passed to B<uwildmat>.  Both I<text>
+and I<pattern> are assumed to be in the UTF-8 character encoding, although
+malformed UTF-8 sequences are treated in a way that attempts to be mostly
+compatible with single-octet character sets like ISO 8859-1.  (In other
+words, if you try to match ISO 8859-1 text with these routines everything
+should work as expected unless the ISO 8859-1 text contains valid UTF-8
+sequences, which thankfully is somewhat rare.)
+
+B<uwildmat_simple> is identical to B<uwildmat> except that neither C<!>
+nor C<,> have any special meaning and I<pattern> is always treated as a
+single pattern.  This function exists solely to support legacy interfaces
+like NNTP's XPAT command, and should be avoided when implementing new
+features.
+
+B<uwildmat_poison> works similarly to B<uwildmat>, except that C<@> as the
+first character of one of the patterns in the expression (see below)
+"poisons" the match if it matches.  B<uwildmat_poison> returns
+B<UWILDMAT_MATCH> if the expression matches the text, B<UWILDMAT_FAIL> if
+it doesn't, and B<UWILDMAT_POISON> if the expression doesn't match because
+a poisoned pattern matched the text.  These enumeration constants are
+defined in the B<inn/libinn.h> header.
+
+=head1 WILDMAT EXPRESSIONS
+
+A wildmat expression follows rules similar to those of shell filename
+wildcards but with some additions and changes.  A wildmat I<expression> is
+composed of one or more wildmat I<patterns> separated by commas.  Each
+character in the wildmat pattern matches a literal occurrence of that same
+character in the text, with the exception of the following metacharacters:
+
+=over 8
+
+=item ?
+
+Matches any single character (including a single UTF-8 multibyte
+character, so C<?> can match more than one byte).
+
+=item *Z<>
+
+Matches any sequence of zero or more characters.
+
+=item \
+
+Turns off any special meaning of the following character; the following
+character will match itself in the text.  C<\> will escape any character,
+including another backslash or a comma that otherwise would separate a
+pattern from the next pattern in an expression.  Note that C<\> is not
+special inside a character range (no metacharacters are).
+
+=item [...]
+
+A character set, which matches any single character that falls within that
+set.  The presence of a character between the brackets adds that character
+to the set; for example, C<[amv]> specifies the set containing the
+characters C<a>, C<m>, and C<v>.  A range of characters may be specified
+using C<->; for example, C<[0-5abc]> is equivalent to C<[012345abc]>.  The
+order of characters is as defined in the UTF-8 character set, and if the
+start character of such a range falls after the ending character of the
+range in that ranking the results of attempting a match with that pattern
+are undefined.
+
+In order to include a literal C<]> character in the set, it must be the
+first character of the set (possibly following C<^>); for example, C<[]a]>
+matches either C<]> or C<a>.  To include a literal C<-> character in the
+set, it must be either the first or the last character of the set.
+Backslashes have no special meaning inside a character set, nor do any
+other of the wildmat metacharacters.
+
+=item [^...]
+
+A negated character set.  Follows the same rules as a character set above,
+but matches any character B<not> contained in the set.  So, for example,
+C<[^]-]> matches any character except C<]> and C<->.
+
+=back
+
+In addition, C<!> (and possibly C<@>) have special meaning as the first
+character of a pattern; see below.
+
+When matching a wildmat expression against some text, each comma-separated
+pattern is matched in order from left to right.  In order to match, the
+pattern must match the whole text; in regular expression terminology, it's
+implicitly anchored at both the beginning and the end.  For example, the
+pattern C<a> matches only the text C<a>; it doesn't match C<ab> or C<ba>
+or even C<aa>.  If none of the patterns match, the whole expression
+doesn't match.  Otherwise, whether the expression matches is determined
+entirely by the rightmost matching pattern; the expression matches the
+text if and only if the rightmost matching pattern is not negated.
+
+For example, consider the text C<news.misc>.  The expression C<*> matches
+this text, of course, as does C<comp.*,news.*> (because the second pattern
+matches).  C<news.*,!news.misc> does not match this text because both
+patterns match, meaning that the rightmost takes precedence, and the
+rightmost matching pattern is negated.  C<news.*,!news.misc,*.misc> does
+match this text, since the rightmost matching pattern is not negated.
+
+Note that the expression C<!news.misc> can't match anything.  Either the
+pattern doesn't match, in which case no patterns match and the expression
+doesn't match, or the pattern does match, in which case because it's
+negated the expression doesn't match.  C<*,!news.misc>, on the other hand,
+is a useful pattern that matches anything except C<news.misc>.
+
+C<!> has significance only as the first character of a pattern; anywhere
+else in the pattern, it matches a literal C<!> in the text like any other
+non-metacharacter.
+
+If the B<uwildmat_poison> interface is used, then C<@> behaves the same as
+C<!> except that if an expression fails to match because the rightmost
+matching pattern began with C<@>, B<UWILDMAT_POISON> is returned instead of
+B<UWILDMAT_FAIL>.
+
+If the B<uwildmat_simple> interface is used, the matching rules are the
+same as above except that none of C<!>, C<@>, or C<,> have any special
+meaning at all and only match those literal characters.
+
+=head1 BUGS
+
+All of these functions internally convert the passed arguments to const
+unsigned char pointers.  The only reason why they take regular char
+pointers instead of unsigned char is for the convenience of INN and other
+callers that may not be using unsigned char everywhere they should.  In a
+future revision, the public interface should be changed to just take
+unsigned char pointers.
+
+=head1 HISTORY
+
+Written by Rich $alz <rsalz@uunet.uu.net> in 1986, and posted to Usenet
+several times since then, most notably in comp.sources.misc in
+March, 1991.
+
+Lars Mathiesen <thorinn@diku.dk> enhanced the multi-asterisk failure
+mode in early 1991.
+
+Rich and Lars increased the efficiency of star patterns and reposted it to
+comp.sources.misc in April, 1991.
+
+Robert Elz <kre@munnari.oz.au> added minus sign and close bracket handling
+in June, 1991.
+
+Russ Allbery <eagle@eyrie.org> added support for comma-separated patterns
+and the C<!> and C<@> metacharacters to the core wildmat routines in July,
+2000.  He also added support for UTF-8 characters, changed the default
+behavior to assume that both the text and the pattern are in UTF-8, and
+largely rewrote this documentation to expand and clarify the description
+of how a wildmat expression matches.
+
+Please note that the interfaces to these functions are named B<uwildmat>
+and the like rather than B<wildmat> to distinguish them from the
+B<wildmat> function provided by Rich $alz's original implementation.
+While this code is heavily based on Rich's original code, it has
+substantial differences, including the extension to support UTF-8
+characters, and has noticeable functionality changes.  Any bugs present in
+it aren't Rich's fault.
+
+=head1 SEE ALSO
+
+grep(1), fnmatch(3), regex(3), regexp(3).
+
+=cut
diff -Nurp inn-2.6.4/doc/pod/libinnhist.pod inn-2.6.5/doc/pod/libinnhist.pod
--- inn-2.6.4/doc/pod/libinnhist.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/libinnhist.pod	2022-02-18 20:36:57.000000000 +0100
@@ -302,6 +302,4 @@ type B<time_t> and will not be modified
 
 Written by Alex Kiernan <alexk@demon.net> for S<InterNetNews 2.4.0>.
 
-$Id: libinnhist.pod 10283 2018-05-14 12:43:05Z iulius $
-
 =cut
diff -Nurp inn-2.6.4/doc/pod/libstorage.pod inn-2.6.5/doc/pod/libstorage.pod
--- inn-2.6.4/doc/pod/libstorage.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/libstorage.pod	2022-02-18 20:36:57.000000000 +0100
@@ -226,7 +226,7 @@ are ignored by B<SMstore>.)  If I<arrive
 its value as article's arrival time; otherwise B<SMstore> uses the current
 time for it.  B<SMstore> returns the token type or returns B<TOKEN_EMPTY>
 if the article is not stored because some error occurs or simply does not
-match any uwildmat(3) expression in F<storage.conf>.  B<SMstore> fails if
+match any I<uwildmat> expression in F<storage.conf>.  B<SMstore> fails if
 B<SM_RDWR> has not been set to true with B<SMsetup>.
 
 The B<SMretrieve> function retrieves an article specified with I<token>.
@@ -436,10 +436,8 @@ method.
 Written by Katsuhiro Kondou <kondou@nec.co.jp> for InterNetNews.
 Converted to POD by Julien Elie.
 
-$Id: libstorage.pod 9073 2010-05-31 19:00:23Z iulius $
-
 =head1 SEE ALSO
 
-expire(8), fastrm(8), inn.conf(5), storage.conf(5).
+expire(8), fastrm(8), inn.conf(5), libinn_uwildmat(3), storage.conf(5).
 
 =cut
diff -Nurp inn-2.6.4/doc/pod/list.pod inn-2.6.5/doc/pod/list.pod
--- inn-2.6.4/doc/pod/list.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/list.pod	1970-01-01 01:00:00.000000000 +0100
@@ -1,85 +0,0 @@
-=head1 NAME
-
-list - list routines
-
-=head1 SYNOPSIS
-
-    #include <inn/list.h>
-
-    struct node {
-        struct node *succ;
-        struct node *pred;
-    };
-
-    struct list {
-        struct node *head;
-        struct node *tail;
-        struct node *tailpred;
-    };
-
-    void list_new(struct list *list);
-
-    struct node *list_addhead(struct list *list, struct node *node);
-
-    struct node *list_addtail(struct list *list, struct node *node);
-
-    struct node *list_head(struct list *list);
-
-    struct node *list_tail(struct list *list);
-
-    struct node *list_succ(struct node *node);
-
-    struct node *list_pred(struct node *node);
-
-    struct node *list_remhead(struct list *list);
-
-    struct node *list_remtail(struct list *list);
-
-    struct node *list_remove(struct node *node);
-
-    struct node *list_insert(struct list *list, struct node *node, struct node *pred);
-
-    bool list_isempty(struct list *list);
-
-=head1 DESCRIPTION
-
-B<list_new> initialises the list header I<list> so as to create an
-empty list.
-
-B<list_addhead> adds I<node> to the head of I<list>, returning the node
-just added.
-
-B<list_addtail> adds I<node> to the tail of I<list>, returning the node
-just added.
-
-B<list_head> returns a pointer to the the node at the head of I<list>
-or B<NULL> if the list is empty.
-
-B<list_tail> returns a pointer to the the node at the tail of I<list>
-or B<NULL> if the list is empty.
-
-B<list_succ> returns the next (successor) node on the list after
-I<node> or B<NULL> if I<node> was the final node.
-
-B<list_pred> returns the previous (predecessor) node on the list before
-I<node> or B<NULL> if I<node> was the first node.
-
-B<list_remhead> removes the first node from I<list> and returns it to
-the caller. If the list is empty B<NULL> is returned.
-
-B<list_remtail> removes the last node from I<list> and returns it to
-the caller. If the list is empty B<NULL> is returned.
-
-B<list_remove> removes I<node> from the list it is on and returns it
-to the caller.
-
-B<list_insert> inserts I<node> onto I<list> after the node I<pred>. If
-I<pred> is B<NULL> then I<node> is added to the head of I<list>.
-
-=head1 HISTORY
-
-Written by Alex Kiernan <alex.kiernan@thus.net> for S<InterNetNews 2.4.0>.
-
-$Id: list.pod 9073 2010-05-31 19:00:23Z iulius $
-
-=cut
diff -Nurp inn-2.6.4/doc/pod/makedbz.pod inn-2.6.5/doc/pod/makedbz.pod
--- inn-2.6.4/doc/pod/makedbz.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/makedbz.pod	2022-02-18 20:36:57.000000000 +0100
@@ -8,7 +8,7 @@ B<makedbz> [B<-io>] [B<-f> I<filename>]
 
 =head1 DESCRIPTION
 
-B<makedbz> rebuilds dbz(3) database.  The default name of the text
+B<makedbz> rebuilds I<dbz> database.  The default name of the text
 file is I<pathdb>/history; to specify a different name, use the B<-f> flag.
 
 =head1 OPTIONS
@@ -44,7 +44,7 @@ should be the estimated eventual size of
 of the old file.)
 
 For more information, see the discussion of B<dbzfresh> and B<dbzsize>
-in dbz(3).
+in libinn_dbz(3).
 
 =back
 
@@ -53,10 +53,8 @@ in dbz(3).
 Written by Katsuhiro Kondou <kondou@nec.co.jp> for InterNetNews.  Converted to
 POD by Julien Elie.
 
-$Id: makedbz.pod 9934 2015-08-28 19:28:56Z iulius $
-
 =head1 SEE ALSO
 
-dbz(3), history(5).
+history(5), libinn_dbz(3).
 
 =cut
diff -Nurp inn-2.6.4/doc/pod/makehistory.pod inn-2.6.5/doc/pod/makehistory.pod
--- inn-2.6.4/doc/pod/makehistory.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/makehistory.pod	2022-02-18 20:36:57.000000000 +0100
@@ -11,7 +11,7 @@ B<makehistory> [B<-abFIOSx>] [B<-f> I<fi
 
 B<makehistory> rebuilds the history(5) text file, which contains a list of
 message-IDs of articles already seen by the server.  It can also be used
-to rebuild the overview database.  Note that even though the dbz(3) indices
+to rebuild the overview database.  Note that even though the I<dbz> indices
 for the F<history> file are also rebuilt by B<makehistory>, it is useful
 to run makedbz(8) after makehistory(8) in order to improve the efficiency
 of the indices (B<makehistory> does not know how large to make the hash
@@ -196,11 +196,9 @@ Where temporary files are written unless
 Originally written by Rich $alz <rsalz@uunet.uu.net> for InterNetNews and
 updated by various other people since.
 
-$Id: makehistory.pod 8534 2009-06-23 18:08:14Z iulius $
-
 =head1 SEE ALSO
 
-active(5), ctlinnd(8), dbz(3), history(5), inn.conf(5), innd(8),
+active(5), ctlinnd(8), history(5), inn.conf(5), innd(8), libinn_dbz(3),
 makedbz(8), ovdb_init(8), overchan(8).
 
 =cut
diff -Nurp inn-2.6.4/doc/pod/moderators.pod inn-2.6.5/doc/pod/moderators.pod
--- inn-2.6.4/doc/pod/moderators.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/moderators.pod	2022-02-18 20:36:57.000000000 +0100
@@ -9,7 +9,7 @@ it is not passed off to B<innd> for norm
 via e-mail to the submission address for that newsgroup.  The submission
 address is determined using this configuration file.
 
-The file I<pathetc>/moderators is a list of associations between uwildmat(3)
+The file I<pathetc>/moderators is a list of associations between I<uwildmat>
 patterns matching newsgroups and the submission address for those
 newsgroups.  Blank lines and lines starting with a number sign (C<#>) are
 ignored.  All other lines should consist of two fields separated by a
@@ -17,7 +17,7 @@ colon:
 
     <pattern>:<address>
 
-The first field is a uwildmat(3) pattern matching the group or groups to
+The first field is a I<uwildmat> pattern matching the group or groups to
 which this line applies.  The first matching line is used, so more
 specific patterns should be listed before general patterns.
 
@@ -76,10 +76,8 @@ pairs should therefore not be created.
 Written by Rich $alz <rsalz@uunet.uu.net> for InterNetNews.  Rewritten in
 POD by Russ Allbery <eagle@eyrie.org>.
 
-$Id: moderators.pod 9767 2014-12-07 21:13:43Z iulius $
-
 =head1 SEE ALSO
 
-inn.conf(5), nnrpd(8), uwildmat(3).
+inn.conf(5), libinn_uwildmat(3), nnrpd(8).
 
 =cut
diff -Nurp inn-2.6.4/doc/pod/motd.news.pod inn-2.6.5/doc/pod/motd.news.pod
--- inn-2.6.4/doc/pod/motd.news.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/motd.news.pod	2022-02-18 20:36:57.000000000 +0100
@@ -33,8 +33,6 @@ to news clients.
 
 Rewritten in POD by Russ Allbery <eagle@eyrie.org> for InterNetNews.
 
-$Id: motd.news.pod 9767 2014-12-07 21:13:43Z iulius $
-
 =head1 SEE ALSO
 
 inn.conf(5).
diff -Nurp inn-2.6.4/doc/pod/news.daily.pod inn-2.6.5/doc/pod/news.daily.pod
--- inn-2.6.4/doc/pod/news.daily.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/news.daily.pod	2022-02-18 20:36:57.000000000 +0100
@@ -247,8 +247,6 @@ B<news.daily> and this manual page were
 and Rich $alz <rsalz@uunet.uu.net> for InterNetNews.  It was converted to POD by
 Julien Elie.
 
-$Id: news.daily.pod 9628 2014-05-14 17:22:01Z iulius $
-
 =head1 SEE ALSO
 
 active(5), ctlinnd(8), expire(8), expire.ctl(5), expireover(8), expirerm(8), fastrm(8),
diff -Nurp inn-2.6.4/doc/pod/news.pod inn-2.6.5/doc/pod/news.pod
--- inn-2.6.4/doc/pod/news.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/news.pod	2022-02-18 20:36:57.000000000 +0100
@@ -1,3 +1,116 @@
+=head1 Changes in 2.6.5
+
+=over 2
+
+=item *
+
+A new step in INN development has been achieved with the migration of the
+INN project to GitHub.  We now make use of the features GitHub provides:
+issue tracker, pull requests, continuous integration, a user-friendly
+interface to browse the code, etc.  Our Subversion repository has
+therefore been migrated to Git, and our Trac tickets to the GitHub
+issue tracker.
+
+=item *
+
+An up-to-date F<nocem.ctl> file is provided with this release.
+You should manually update your F<nocem.ctl> file with the new
+information recorded about NoCeM issuers, and make sure the right PGP
+keys are present on your system.
+
+=item *
+
+Up-to-date F<control.ctl> and F<moderators> files are provided with this
+release.  You should manually update them (notably for the fido7.* hierarchy).
+
+=item *
+
+Added a stricter validation of article numbers given in NNTP commands
+so that numbers superior to 2^31 are correctly considered invalid.
+Thanks to Richard Kettlewell for the patch.
+
+=item *
+
+Added a check in B<rc.news> for the existence of the I<pathrun>
+directory.  INN won't start until this directory is writable.
+Previously, it bailed out quickly after starting, without clear logs
+about why it failed.
+
+=item *
+
+Fixed parallel builds using C<make -j>.  Thanks to Richard Kettlewell
+for the path.
+
+=item *
+
+B<nnrpd> now properly gathers timer statistics when a compression layer
+is active.
+
+=item *
+
+B<nnrpd> now properly discards data received from a news client after
+a timeout when a TLS layer is active.  It previously tried to read
+incoming data before closing the socket, leading to decoding errors
+from an underlying compression or SASL layer.
+
+=item *
+
+B<innfeed> and B<ovdb_stat> now generate status reports in valid HTML syntax.
+
+=item *
+
+Fixed a bug in the buffindexed overview that prevented it from working
+on several systems, amongst them FreeBSD.  Unsupported, and useless,
+permission bits were given to semaphores.
+
+=item *
+
+Fixed the detection of library paths at configure time: multilib
+directories (F<lib32> or F<lib64>) are now also used if they exist,
+even it the system does not use multilib.  It will notably fix the
+detection of the S<OpenSSL 3.0.0> library.
+
+=item *
+
+The I<tlscertfile> parameter in F<inn.conf> now permits the use of
+a complete certificate chain, instead of necessarily having to use
+I<tlscafile> for additional certificates.
+
+=item *
+
+Added support for the new S<OpenSSL 3.0.0> API, which deprecated a
+few functions.
+
+=item *
+
+The F<inn.conf> default value for I<tlsprotocols> no longer contains
+TLS versions 1.0 and 1.1, which have been deprecated by S<RFC 8996>.
+
+=item *
+
+A new F<inn.conf> parameter has been added to tune the length of the
+queue of pending connections to B<innd>, B<nnrpd> and the C<ovdb>
+overview storage method: the I<maxlisten> parameter now permits
+configuring their listen backlog, whose previously hard-coded values
+were C<128> for B<nnrpd> and C<25> for the others, which was not high
+enough for some uses.  The default value is now C<128> for all of them,
+and configurable in F<inn.conf>.  Thanks to Kevin Bowling for the patch.
+
+=item *
+
+The name of seven man pages for routines built in libinn(3) are now prefixed
+with F<libinn_> so as not to consume namespace and conflict with other
+packages (notably, the list(3) and uwildmat(3) man pages are now named
+libinn_list(3) and libinn_uwildmat(3)).
+
+=item *
+
+Other minor bug fixes and documentation improvements, notably a revised
+installation checklist and a section summarizing the most used configuration
+at the beginning of a few complex man pages.
+
+=back
+
 =head1 Changes in 2.6.4
 
 =over 2
@@ -17,20 +130,20 @@ or later expects.  Thanks to Michael Bae
 
 =item *
 
-B<cnfsstat> now also returns information about retired CNFS buffers,
-that is to say buffers mentioned in F<cycbuff.conf> as a cycbuff but
-not declared in a metacycbuff.
+B<cnfsstat> now also returns information about retired CNFS buffers:
+buffers mentioned in F<cycbuff.conf> as a cycbuff but not declared in a
+metacycbuff.
 
 =item *
 
-Switch default B<innreport> behaviour to common practice of externalizing
-CSS into a separate file.  Its name can be configured with the
-I<html_css_url> parameter in F<innreport.conf>.  If this parameter
-is unset, the default F<innreport.css> file name will be used and
+Switch default B<innreport> behaviour to the common practice of
+externalizing CSS into a separate file.  Its name can be configured with
+the I<html_css_url> parameter in F<innreport.conf>.  If this parameter is
+unset, the default F<innreport.css> file name will be used and
 B<innreport> will generate this CSS file for you.  Previously generated
-reports are kept untouched, though, and will still contain inline CSS
-if you had not already set the I<html_css_url> parameter in previous
-INN versions.  Thanks to Richard Kettlewell for the patch.
+reports are kept untouched, though, and will still contain inline CSS if
+you had not already set the I<html_css_url> parameter in previous INN
+versions.  Thanks to Richard Kettlewell for the patch.
 
 =item *
 
@@ -54,7 +167,7 @@ be parsed for some reason.
 
 =item *
 
-Added new B<-d> flag to B<rnews> to log via syslog the message-ID and the
+Added new B<-d> flag to B<rnews> to log via syslog the Message-ID and the
 Path header value of each article rejected as a duplicate.
 
 =item *
@@ -79,7 +192,7 @@ or later; NIST P-256 was enforced instea
 =item *
 
 A new F<inn.conf> parameter has been added to fine-tune the cipher suites
-to use with S<TLS 1.3>:  the I<tlsciphers13> now permits configuring
+to use with S<TLS 1.3>: the I<tlsciphers13> now permits configuring
 them.  A separate cipher suite configuration parameter is needed for
 S<TLS 1.3> because S<TLS 1.3> cipher suites are not compatible with
 S<TLS 1.2>, and vice-versa.  In order to avoid issues where legacy
@@ -136,7 +249,7 @@ high load average.
 
 A new I<syntaxchecks> parameter has been added in F<inn.conf>.
 It permits controlling the level of checks performed by B<innd> and
-B<nnrpd>.  Up to now, only one check can be enabled/disabled:  when
+B<nnrpd>.  Up to now, only one check can be enabled/disabled: when
 I<laxmid> is mentioned in the values of this new parameter, INN accepts
 Message-IDs that contain C<..> in the left part, as well as Message-IDs
 with two C<@> (such Message-IDs would otherwise be considered as
@@ -155,10 +268,10 @@ ovdb databases.
 
 =item *
 
-B<mailpost> now removes empty header fields before attempting to post
-articles, and keeps trace of them in the X-Mailpost-Empty-Hdrs: newly
-generated header field body.  Also, B<mailpost> now sanitizes header
-fields with regards to empty continuation header lines.  Thanks to
+B<mailpost> now removes empty header fields before attempting
+to post articles, and keeps trace of them in the newly generated
+X-Mailpost-Empty-Hdrs header field body.  Also, B<mailpost> now sanitizes
+header fields with regards to empty continuation header lines.  Thanks to
 Kamil Jonca for these bug reports.
 
 =item *
@@ -178,7 +291,7 @@ the whole header field, as it was wrongl
 
 Added support for GnuPG's B<gpg> binary (in addition to B<gpgv>)
 in B<pgpverify>.  Indeed, B<gpg> still validates signatures made
-with weak digest algorithms like MD5 whereas B<gpgv> no longer do.
+with weak digest algorithms like MD5 whereas B<gpgv> no longer does.
 Thanks to Thomas Hochstein for the patch, which permits validating
 control articles for hierarchies that are still using old PGP keys.
 
@@ -216,7 +329,7 @@ Other minor bug fixes and documentation
 
 =item *
 
-B<nnrpd> now uses C<-0000> as the time zone for Date: and Injection-Date:
+B<nnrpd> now uses C<-0000> as the time zone for Date and Injection-Date
 header fields it generates.  It was previously using C<+0000>, wrongly
 systematically indicating a local time zone at Universal Time when
 I<localtime> is set to false (which is the default) in F<readers.conf>.
@@ -226,12 +339,12 @@ true and UTC is really the local time zo
 =item *
 
 Julien Elie has implemented in B<nnrpd> the new COMPRESS command
-described in draft-murchison-nntp-compress that extends the NNTP protocol
-to allow a connection to be effectively and efficiently compressed.
-News clients that also support that extension will be able to benefit
-from that bandwidth optimization and improvement in speed.  Moreover,
-using COMPRESS is more secure than TLS-level compression, as far as
-authentication credentials are concerned.
+described in the I<draft-murchison-nntp-compress> Internet-Draft that
+extends the NNTP protocol to allow a connection to be effectively and
+efficiently compressed.  News clients that also support that extension
+will be able to benefit from that bandwidth optimization and improvement
+in speed.  Moreover, using COMPRESS is more secure than TLS-level
+compression, as far as authentication credentials are concerned.
 
 =item *
 
@@ -253,13 +366,13 @@ Thanks to Marcus Jodorf for the bug repo
 
 =item *
 
-Fixed slow B<nnrpd> responses for a few NNTP commands.  The TCP_NODELAY
+Fixed slow B<nnrpd> responses for a few NNTP commands.  The C<TCP_NODELAY>
 option was unconditionally set whereas only BSD/OS systems needed it.
 Thanks to Christian Mock for having discovered that.
 
 =item *
 
-Articles containing a Received: or a Posted: header field are no longer
+Articles containing a Received or a Posted header field are no longer
 rejected by B<nnrpd> at injection time.
 
 =item *
@@ -336,7 +449,7 @@ and F<mailpost-msgid.pag> from I<pathtmp
 =item *
 
 If you have been using TLS/SSL with B<nnrpd> before, be aware that the
-default value of a few F<inn.conf> parameters have changed:  the server
+default value of a few F<inn.conf> parameters have changed: the server
 now decides the preferred cipher (instead of the client), and only TLS
 protocols are allowed (using the flawed SSLv2 and SSLv3 protocols is
 now disabled).  If you want to change these settings, the respective
@@ -345,22 +458,22 @@ to your needs.
 
 =item *
 
-The B<--with-kerberos> configure flag used to add S<Kerberos v5>
+The B<--with-kerberos> C<configure> flag used to add S<Kerberos v5>
 support has been renamed to B<--with-krb5>.
 
 =item *
 
-The B<--with-berkeleydb> configure flag used to add S<Berkeley DB>
+The B<--with-berkeleydb> C<configure> flag used to add S<Berkeley DB>
 support has been renamed to B<--with-bdb>.
 
 =item *
 
-The B<--enable-ipv6> configure flag no longer exists.  IPv6 is now
+The B<--enable-ipv6> C<configure> flag no longer exists.  IPv6 is now
 unconditionally enabled, if available.
 
 =item *
 
-$HOME is no longer exported as an environment variable by B<innshellvars>,
+C<$HOME> is no longer exported as an environment variable by B<innshellvars>,
 B<innshellvars.tcl> and the Perl module C<INN::Config>.  It was previously
 overriding the default user home directory with I<pathnews>.  If you use
 these scripts in your own scripts, you will have to take care of that change.
@@ -380,12 +493,13 @@ that they are properly working.
 
 =item *
 
-The Injection-Date: and Injection-Info: headers are now generated by B<nnrpd>
-at injection time instead of the NNTP-Posting-Date:, NNTP-Posting-Host:,
-X-Complaints-To: and X-Trace: headers.  Local scripts that were using
-(for authentication, privacy, etc.) these now deprecated headers should
-be updated.  Also note that the Path: header of locally posted articles
-can also contain the contents of the deprecated NNTP-Posting-Host: field.
+The Injection-Date and Injection-Info header fields are now generated
+by B<nnrpd> at injection time instead of the NNTP-Posting-Date,
+NNTP-Posting-Host, X-Complaints-To and X-Trace header fields.  Local
+scripts that were using (for authentication, privacy, etc.) these now
+deprecated header fields should be updated.  Also note that the Path
+header field of locally posted articles can also contain the contents
+of the deprecated NNTP-Posting-Host header field.
 
 =item *
 
@@ -399,18 +513,18 @@ F<readers.conf>, if these parameters are
 
 The default values of a few F<inn.conf> parameters have changed to make
 use of the vastly expanded storage and RAM commonly available today:
-datamovethreshold (from 8192 to 16384), msgidcachesize (from 16000
-to 64000), overcachesize (from 64 to 128), and wireformat (now enabled
-by default).
+I<datamovethreshold> (from C<8192> to C<16384>), I<msgidcachesize> (from
+C<16000> to C<64000>), I<overcachesize> (from C<64> to C<128>), and
+I<wireformat> (now enabled by default).
 
 The generation of status reports and performance timings are now also
-enabled by default:  logstatus and nnrpdoverstats parameters, with a
-frequency of 10 minutes (status and timer parameters).
+enabled by default: I<logstatus> and I<nnrpdoverstats> parameters, with a
+frequency of 10 minutes (I<status> and I<timer> parameters).
 
 =item *
 
-The default value of max-queue-size has changed from 5 to 20, and
-use-mmap now defaults to true for F<innfeed.conf>.
+The default value of I<max-queue-size> has changed from C<5> to C<20>, and
+I<use-mmap> now defaults to true for F<innfeed.conf>.
 
 =back
 
@@ -429,44 +543,44 @@ be sent by authenticated peers.  See the
 
 =item *
 
-The Lines: header is no longer generated by B<nnrpd> at injection time.
+The Lines header field is no longer generated by B<nnrpd> at injection time.
 
 =item *
 
-The Injection-Date: header is now generated by B<nnrpd> at injection time
-instead of the deprecated NNTP-Posting-Date: header, when I<addinjectiondate>
-is set to true.  Note that I<addnntppostingdate> has been renamed to
-I<addinjectiondate> in F<inn.conf>.
+The Injection-Date header field is now generated by B<nnrpd> at injection
+time instead of the deprecated NNTP-Posting-Date header field, when
+I<addinjectiondate> is set to true.  Note that I<addnntppostingdate>
+has been renamed to I<addinjectiondate> in F<inn.conf>.
 
 =item *
 
-The Injection-Info: header is now generated by B<nnrpd> at injection time
-instead of the deprecated NNTP-Posting-Host: (when I<addinjectionpostinghost>
-is set to true), X-Complaints-To: and X-Trace: headers.  Note that
+The Injection-Info header field is now generated by B<nnrpd> at injection time
+instead of the deprecated NNTP-Posting-Host (when I<addinjectionpostinghost>
+is set to true), X-Complaints-To and X-Trace header fields.  Note that
 I<addnntppostinghost> has been renamed to I<addinjectionpostinghost>
-in F<inn.conf>.  The Path: header of locally posted articles now also
-contains the contents of the NNTP-Posting-Host: header.
+in F<inn.conf>.  The Path header field of locally posted articles now also
+contains the contents of the NNTP-Posting-Host header field.
 
 =item *
 
 A new I<addinjectionpostingaccount> parameter has been added in
-F<inn.conf>.  When set to true, the Injection-Info: header field
-contains an additional posting-account attribute that mentions the
+F<inn.conf>.  When set to true, the Injection-Info header field
+contains an additional I<posting-account> attribute that mentions the
 username assigned to the user at connection time or after authentication.
 The default value for this parameter is false.
 
 =item *
 
-A few headers are now considered as obsolete by B<nnrpd> at injection
-time:  NNTP-Posting-Date:, NNTP-Posting-Host:, X-Complaints-To:, X-Trace:,
-Also-Control:, Article-Names:, Article-Updates:, and See-Also: headers.
+A few header fields are now considered as obsolete by B<nnrpd> at injection
+time: NNTP-Posting-Date, NNTP-Posting-Host, X-Complaints-To, X-Trace,
+Also-Control, Article-Names, Article-Updates, and See-Also header fields.
 
-Besides, B<nnrpd> will similarly reject obsolete sendsys, senduuname and
-version control messages.
+Besides, B<nnrpd> will similarly reject obsolete I<sendsys>, I<senduuname>
+and I<version> control messages.
 
 =item *
 
-The presence of a Subject: header field beginning with C<cmsg > no longer
+The presence of a Subject header field beginning with C<cmsg > no longer
 causes an article to be interpreted as a control message by B<nnrpd>
 at injection time.
 
@@ -493,15 +607,15 @@ Kettlewell for having fixed the issue.
 =item *
 
 Building with Libtool is no longer optional.  The B<--enable-libtool>
-option to B<configure> has been removed.
+option to C<configure> has been removed.
 
 =item *
 
-DESTDIR and non-root installs are now properly supported and documented
-in INSTALL.  The C<make install>, C<make update> and C<make cert>
-steps properly obey DESTDIR.  Besides, it is no longer a requirement
+C<DESTDIR> and non-root installs are now properly supported and documented
+in F<INSTALL>.  The C<make install>, C<make update> and C<make cert>
+steps properly obey C<DESTDIR>.  Besides, it is no longer a requirement
 that the installation step be done by the superuser, as long as the
-user executing the install has supplied a DESTDIR value that points
+user executing the install has supplied a C<DESTDIR> value that points
 to a writable directory, I<and> the person or process performing the
 install corrects the file ownerships when INN is installed on the system
 on which it's going to run.  Thanks to James Ralston for this support.
@@ -516,7 +630,7 @@ B<--with-bdb-include>, B<--with-bdb-lib>
 B<--with-sasl-include>, B<--with-sasl-lib>, B<--with-krb5>,
 B<--with-krb5-include>, B<--with-krb5-lib>, B<--with-openssl>,
 B<--with-openssl-include>, B<--with-openssl-lib>, B<--with-zlib>,
-B<--with-zlib-include>, or B<--with-zlib-lib> configure flags (the
+B<--with-zlib-include>, or B<--with-zlib-lib> C<configure> flags (the
 flags ending with C<-include> and C<-lib> are new in S<INN 2.6.0>).
 
 =item *
@@ -525,14 +639,14 @@ If the S<Berkeley DB>, Cyrus SASL, S<Ker
 and crypto libraries are found at configure time, INN will now be
 built with support for them unless respectively the B<--without-bdb>,
 B<--without-sasl>, B<--without-krb5>, or B<--without-openssl> flags
-are explicitly passed to configure.
+are explicitly passed to C<configure>.
 
 Note that it was already the default behaviour for zlib support when
 S<Berkeley DB> support was also enabled.
 
 =item *
 
-The configure flag B<--enable-reduced-depends> has been added to request
+The C<configure> flag B<--enable-reduced-depends> has been added to request
 that library probes assume shared libraries are in use and dependencies
 of libraries should not be probed.  It therefore tries to minimize the
 shared library dependencies of the resulting binaries on platforms with
@@ -561,6 +675,11 @@ version of the rra-c-util package mainta
 
 Other minor bug fixes and documentation improvements.
 
+=item *
+
+All of the applicable bug fixes from the S<INN 2.5> STABLE series are also
+included in S<INN 2.6>.
+
 =back
 
 =head1 Changes in 2.5.5
@@ -570,7 +689,7 @@ Other minor bug fixes and documentation
 =item *
 
 New F<inn.conf> parameters used by B<nnrpd> to fine-tune the TLS/SSL
-configuration have been added:  I<tlsciphers>, I<tlscompression>,
+configuration have been added: I<tlsciphers>, I<tlscompression>,
 I<tlseccurve>, I<tlspreferserverciphers>, and I<tlsprotocols>.
 Many thanks to Christian Mock for his contribution that permits
 tightening the level of security provided by TLS/SSL.
@@ -609,7 +728,7 @@ use, in case it is not the default F<inn
 
 Add new B<-t> flag to B<mailpost> to change, if needed, the default
 directory to use to temporarily store error messages that are sent to
-the newsmaster.  Two paths are now tried by default:  I<pathtmp> as
+the newsmaster.  Two paths are now tried by default: I<pathtmp> as
 set in F<inn.conf>, and then F</var/tmp> if I<pathtmp> is not writable.
 
 =item *
@@ -631,7 +750,7 @@ taint mode was unproperly declared.
 =item *
 
 Several improvements have been contributed to B<pullnews> by Geraint
-Edwards:  the new B<-a> flag adds the Diablo-compatible hashfeed
+Edwards: the new B<-a> flag adds the Diablo-compatible hashfeed
 ability, the new B<-B> flag triggers header-only feeding, the B<-m>
 flag now permits removing headers matching (or not) a given regexp,
 and B<rnews> reporting is improved.
@@ -706,7 +825,7 @@ Thanks to Steve Crook for this addition.
 
 =item *
 
-INN now properly builds fine with S<< B<flex> 2.5.36 >> (this version
+INN now properly builds fine with S<Flex 2.5.36> (this version
 introduced a change of type for a variable used by INN).
 
 =item *
@@ -738,7 +857,7 @@ Fixed a segfault occurring in B<innd> on
 =item *
 
 Fixed a segfault occurring in B<nnrpd> when a res block was used in
-F<readers.conf> without the program: key.
+F<readers.conf> without the I<program> key.
 
 =item *
 
@@ -781,8 +900,8 @@ issue.
 =item *
 
 When building INN with S<Berkeley DB> support, no longer add
-F<-L/usr/lib> to the linker include flags; unconditionally adding it
-may break the build on systems using lib32 and lib64 directories.
+C<-L/usr/lib> to the linker include flags; unconditionally adding it
+may break the build on systems using F<lib32> and F<lib64> directories.
 
 =item *
 
@@ -794,15 +913,15 @@ not displayed to news clients before the
 =item *
 
 Other minor bug fixes and documentation improvements (like the addition
-in the F<readers.conf> man page of the log: and program: parameters in
-res blocks, and the include directive).
+in the F<readers.conf> man page of the I<log> and I<program> parameters in
+res blocks, and the I<include> directive).
 
 =back
 
 =head1 Changes in 2.5.3
 
-Please note that the HTML_STATUS compile-time option has been replaced
-with the I<htmlstatus> parameter in F<inn.conf>.  If you used HTML_STATUS,
+Please note that the C<HTML_STATUS> compile-time option has been replaced
+with the I<htmlstatus> parameter in F<inn.conf>.  If you used C<HTML_STATUS>,
 you should set I<htmlstatus> accordingly.
 
 A confusion in the name of a key in F<innfeed.conf> existed in the source
@@ -858,14 +977,14 @@ session.
 Fixed a regression that occurred in S<INN 2.5.0> when leading whitespace
 characters have been made significant in header field bodies.  It could
 lead INN to drop articles and throttle itself when running as a slave
-because Xref: header fields generated by other news servers, or even S<INN
+because Xref header fields generated by other news servers, or even S<INN
 2.4.6>, could contain (valid) leading whitespace.  Thanks to Matija Nalis
 for having caught this bug.
 
 =item *
 
 Fixed an invalid C<431> response to CHECK commands when B<innd> is paused:
-the message-ID of the article to defer was missing.  Also fixed another
+the Message-ID of the article to defer was missing.  Also fixed another
 issue in the messages B<innd> replied; when an error occurred during a
 write on a channel, a trailing extra junk byte was added to the reply.
 Thanks to River Tarnell for these bug reports.
@@ -905,7 +1024,7 @@ the previous output of B<cnfsstat>.
 =item *
 
 A single header field line is limited to 998 bytes, per S<RFC 5536>.  B<innd>
-was previously accepting, and also generating Xref: header field lines,
+was previously accepting, and also generating Xref header field lines,
 up to 1022 bytes.  Now, B<nnrpd> (acting as an injecting agent) rejects
 articles which contain header field lines whose length exceeds 998 bytes.
 And B<innd> (acting as a relaying or serving agent) no longer checks that.
@@ -936,11 +1055,11 @@ Fixed an issue on systems which do not h
 be usable on such systems.  Many thanks to Dennis Davis for the bug report.
 
 A wrapper around B<shlock> is now called in Perl scripts.  The
-INN::Utils::Shlock module has been added for that use.
+C<INN::Utils::Shlock> module has been added for that use.
 
 =item *
 
-Fixed an issue in the Python access hook for B<nnrpd>:  it has not been
+Fixed an issue in the Python access hook for B<nnrpd>: it has not been
 working since S<Python 2.5> on 64-bit platforms, owing to a change to
 Python's C API, using a new Py_ssize_t type definition instead of int.
 Thanks to Raphael Barrois for the patch.
@@ -952,29 +1071,29 @@ properly save and restore the stack poin
 
 =item *
 
-The Injection-Date: header, when present, is now used by B<innd> and
+The Injection-Date header field, when present, is now used by B<innd> and
 B<makehistory> to determine the posting date of an article.  Otherwise,
-the Date: header is used.
+the Date header field is used.
 
 =item *
 
 B<controlchan> now imposes a date cutoff on processing control articles.
 The I<artcutoff> parameter set in F<inn.conf> is used.  Otherwise, without
 that cutoff, old control articles could be maliciously reinjected into
-Usenet, and replayed.  (An unsigned Injection-Date: header field could be
-added to an article that only had a Date: header field.)  A new B<-c> flag
+Usenet, and replayed.  (An unsigned Injection-Date header field could be
+added to an article that only had a Date header field.)  A new B<-c> flag
 has been added to B<controlchan> to disable the cutoff check, if needed
 (usually when manually invoking the program).
 
 =item *
 
-B<nnrpd> no longer adds or updates the Path: header field when an article is
+B<nnrpd> no longer adds or updates the Path header field when an article is
 forwarded to a moderator.  It could otherwise lead to rejects at injection
 time when the article was approved by the moderator.
 
 =item *
 
-The X-Trace: header field was not properly generated when an article
+The X-Trace header field was not properly generated when an article
 was locally posted.  The field mentioning the IP address was skipped,
 resulting in a wrong syntax for this header.  The local "127.0.0.1" IP
 address is now used.  Besides, C<localhost> is now mentioned instead of
@@ -982,7 +1101,7 @@ an obscure C<stdin> in injection header
 
 =item *
 
-Fixed a bug in the frequency B<innfeed> logs its status:  too many useless
+Fixed a bug in the frequency B<innfeed> logs its status: too many useless
 lines were written to F<news.notice>.  Thanks to Florian Schlichting for
 the fix.
 
@@ -1005,13 +1124,13 @@ in F<innfeed.conf>.  Thanks to Dieter St
 =item *
 
 Implement an upper limit to the number of file descriptors B<innd>
-can handle.  At most (FD_SETSIZE-1) file descriptors can be used.  This
+can handle.  At most C<(FD_SETSIZE-1)> file descriptors can be used.  This
 upper limit now overrides any superior number set with I<rlimitnofile>
 in F<inn.conf>.  Thanks to Steve Crook for the bug report.
 
 =item *
 
-A default timeout on outgoing sockets (using NNTPconnect) has been added
+A default timeout on outgoing sockets (using C<NNTPconnect>) has been added
 by Florian Schlichting.  For a long time, there have been occasional
 problems with B<actsync> (and probably other programs) that would hang
 until manually killed or restarted.
@@ -1023,7 +1142,7 @@ B<innd> reports the errors found in F<in
 
 =item *
 
-B<pullnews> no longer stops processing newsgroups when an error occur during
+B<pullnews> no longer stops processing newsgroups when an error occurs during
 its run (for instance when a newsgroup mentioned in the configuration file
 is removed from an upstream server).  Besides, it can now use authentication
 when posting to the downstream server.
@@ -1053,7 +1172,7 @@ It is now possible to run a script at th
 B<innshellvars> scripts.  If a file named F<innshellvars.local>,
 F<innshellvars.pl.local> or F<innshellvars.tcl.local> is present and
 executable in I<pathetc>, then it will be executed by the corresponding
-B<innshellvars> script (respectively shell, INN::Config Perl module,
+B<innshellvars> script (respectively shell, C<INN::Config> Perl module,
 and Tcl).  A typical use is to add or override variables.
 
 =item *
@@ -1079,10 +1198,10 @@ F<newsfeeds> thanks to Alexander Bartoli
 
 =item *
 
-B<docheckgroups> no longer uses awk.  On a few systems, the script was
-failing because of the presence of an old version of awk that has a limit
+B<docheckgroups> no longer uses AWK.  On a few systems, the script was
+failing because of the presence of an old version of AWK that has a limit
 in the size of the input it can handle.  Processing large newsgroups files
-was consequently impossible.  B<docheckgroups> now uses Perl instead of awk,
+was consequently impossible.  B<docheckgroups> now uses Perl instead of AWK,
 which solves the issue reported by S<John F. Morse>.
 
 =item *
@@ -1105,7 +1224,7 @@ version of INN.
 
 A new version of F<innreport.conf> is shipped with S<INN 2.5.2> but, in
 order to preserve any local changes, will not be automatically installed
-with make update.  The changes are minor and not mandatory for the
+with C<make update>.  The changes are minor and not mandatory for the
 upgrade.
 
 =over 2
@@ -1119,7 +1238,7 @@ three commands (IHAVE, CHECK and TAKETHI
 interoperability reasons, to return a reject code (respectively C<435>,
 C<438>, and C<439>) when the command contains a syntax error instead of
 C<501>.  The mandatory username argument for authenticated peers is not
-enforced in S<INN 2.5.2> but will be be enforced by S<INN 2.6.0> when it
+enforced in S<INN 2.5.2> but will be enforced by S<INN 2.6.0> when it
 is released.
 
 Major improvements are:
@@ -1166,13 +1285,13 @@ final CRLF, as the username/password, in
 
 =item *
 
-The syntax of message-IDs is now based on S<RFC 5536> (USEFOR) instead of
+The syntax of Message-IDs is now based on S<RFC 5536> (USEFOR) instead of
 S<RFC 1036>.  The major change is that quoted-pairs have been removed from
 the syntax.
 
 =item *
 
-The Perl and Python filters for B<innd> now check the message-ID of
+The Perl and Python filters for B<innd> now check the Message-ID of
 articles arriving through TAKETHIS.  Only CHECK and IHAVE commands
 previously used them.
 
@@ -1185,14 +1304,14 @@ except for history hashes.
 
 =item *
 
-The new Archive:, Archive-At:, Comments:, and Summary: header fields
+The new Archive, Archive-At, Comments, and Summary header fields
 defined in S<RFC 5064> and S<RFC 5536> can be used in B<innd> filters.
-B<nnrpd> now checks at injection time that an article does not contain an
-Injection-Info: header, that an Injection-Date: header (if provided) is
-valid, and that the Path: header does not contain C<.POSTED>.  Note that
-INN does not yet generate these two injection fields or include the new
-Path: header field C<.POSTED> keyword.  These new features will be in the
-next major release of INN.
+B<nnrpd> now checks at injection time that an article does not contain
+an Injection-Info header field, that an Injection-Date header field (if
+provided) is valid, and that the Path header field body does not contain
+C<.POSTED>.  Note that INN does not yet generate these two injection
+fields or include the new C<.POSTED> keyword in Path header fields.
+These new features will be in the next major release of INN.
 
 =item *
 
@@ -1211,7 +1330,7 @@ before its status.
 A new flag has been added to F<newsfeeds> entries: C<Aj>, when present,
 says to feed articles accepted and filed in C<junk> (due to I<wanttrash>)
 to peers based on their F<newsfeeds> feed patterns applied to the
-Newsgroups: header as though the article were accepted and all those
+Newsgroups header field as though the article were accepted and all those
 groups were locally carried.  This is useful if you want to run INN with a
 minimal F<active> file and propagate all posts.  Thanks to Andrew Gierth
 for the patch.
@@ -1240,8 +1359,8 @@ script developed by Olaf Titz and Marco
 =item *
 
 The B<O> flag in F<newsfeeds> now relies on the contents of the
-Injection-Info: header field if it is present to determine the origin of
-an article.  It falls back on X-Trace: if there is no Injection-Info:
+Injection-Info header field if it is present to determine the origin of
+an article.  It falls back on X-Trace if there is no Injection-Info
 header field.
 
 =item *
@@ -1272,19 +1391,19 @@ password, conforming to S<RFC 4643>.
 
 =item *
 
-The keyword generation code now generates a Keywords: header only if the
-original article does not already have one.  The generated Keywords:
-header no longer begins with a comma.  If keyword generation is set to
-true in F<inn.conf> but the Keywords: header is not stored in the
+The keyword generation code now generates a Keywords header field only if the
+original article does not already have one.  The generated Keywords
+header field no longer begins with a comma.  If keyword generation is set to
+true in F<inn.conf> but the Keywords header field is not stored in the
 overview, the news administrator is warned and keyword generation
 deactivated, since it exists only to populate the overview data.
 
 =item *
 
 Two segfaults in keyword generation were fixed.  The first occurred when
-an article already had a Keywords: header longer than the I<keylimit>
+an article already had a Keywords header field longer than the I<keylimit>
 parameter.  The second was caused by a possible invalid pointer beyond the
-newly allocated Keywords: header.
+newly allocated Keywords header field.
 
 =item *
 
@@ -1356,10 +1475,10 @@ the name of a standardized header field
 
 =item *
 
-Fixed a bug in how B<innd> was parsing Message-ID: and Supersedes: headers
-which contained trailing whitespace.  The article was corrupted by an
-unexpected "\r" in the middle of the header.  B<nnrpd> now checks the
-syntax of the Message-ID: header field, if present.
+Fixed a bug in how B<innd> was parsing Message-ID and Supersedes header
+field bodies which contained trailing whitespace.  The article was
+corrupted by an unexpected "\r" in the middle of the header.  B<nnrpd>
+now checks the syntax of the Message-ID header field, if present.
 
 =item *
 
@@ -1374,7 +1493,7 @@ into a space when generating overview da
 =item *
 
 Fixed a bug in the generation of overview data which may corrupt
-previously generated overview data when a pseudo Xref: header field is
+previously generated overview data when a pseudo Xref header field is
 injected in an extra overview field.
 
 =item *
@@ -1388,7 +1507,7 @@ fixed.  Thanks to Dieter Stussy for the
 =item *
 
 Fixed a bug when HDR, XHDR and XPAT were used when I<virtualhost> was set
-to true in F<readers.conf>.  The Xref: header of articles posted to only
+to true in F<readers.conf>.  The Xref header field of articles posted to only
 one newsgroup appeared empty.
 
 =item *
@@ -1414,7 +1533,7 @@ patch.
 =item *
 
 Fixed a bug in the F<newsfeeds> B<C> flag: the count of followup groups
-was one less than the real number.  When the value of the Followup-To:
+was one less than the real number.  When the value of the Followup-To
 header field is C<poster>, it is no longer considered to be a followup.
 Thanks to Dieter Stussy for the patch.
 
@@ -1447,8 +1566,8 @@ Florian Schlichting for the patch.
 
 B<innconfval> no longer maps NULL string or list values to an empty string
 or list and instead maps them to undefined values.  This fixes an issue
-reported by Kamil Jonca: B<nnrpd> was inserting an empty Organization:
-header when the I<organization> parameter in F<inn.conf> was unset.
+reported by Kamil Jonca: B<nnrpd> was inserting an empty Organization
+header field when the I<organization> parameter in F<inn.conf> was unset.
 
 =item *
 
@@ -1470,7 +1589,7 @@ was used.
 Fixed a segfault in the keyword generation code which was assuming
 that an article was nul-terminated.  Fixed another segfault in the
 keyword generation code when an article already contained a
-Keywords: header.  Thanks to Nix for the bug reports.
+Keywords header field.  Thanks to Nix for the bug reports.
 
 =item *
 
@@ -1503,7 +1622,7 @@ logged as C<localhost>.
 
 =item *
 
-Fixed a bug in the timecaf storage method:  only the first 65535 articles
+Fixed a bug in the timecaf storage method: only the first 65535 articles
 could be retrievable in a CAF, though everything was properly stored.  (A
 Crunched Article File contains all the articles that arrive to the news
 server during 256 seconds.)
@@ -1539,10 +1658,10 @@ initialized with that new version.
 
 =item *
 
-B<grephistory -l> now returns the contents of the expires history field
-as well as the hash of the message-ID.  Besides, when the storage API
-token does not exist, B<grephistory -v> now also returns the hash
-of the requested message-ID.
+C<grephistory -l> now returns the contents of the expires history field
+as well as the hash of the Message-ID.  Besides, when the storage API
+token does not exist, C<grephistory -v> now also returns the hash
+of the requested Message-ID.
 
 =item *
 
@@ -1554,7 +1673,7 @@ This new feature is from Christopher Bie
 The previous behaviour was to check whether the cancel message is
 from the same person as the original post, which is extremely easy
 to spoof; besides, S<RFC 5537> (USEPRO) mentions that "cancel control
-messages are not required to contain From: and Sender: header fields
+messages are not required to contain From and Sender header fields
 matching the target message.  This requirement only encouraged cancel
 issuers to conceal their identity and provided no security".
 
@@ -1566,8 +1685,8 @@ arrival time; it is now according to its
 Otherwise, unnecessary data may be kept too long in the F<history>
 file.
 
-To achieve that, the HISremember() function in history API now
-expects a fourth parameter:  the article posting time.
+To achieve that, the C<HISremember()> function in history API now
+expects a fourth parameter: the article posting time.
 
 Note that article expiration has not changed and is still based
 on arrival time, unless the B<-p> flag is passed to B<expire>
@@ -1609,7 +1728,7 @@ flag has been added to B<cnfsstat> so as
 
 =item *
 
-The default path for TLS certificates has changed from I<pathnews>/lib
+The default path for TLS certificates has changed from I<pathnews>/F<lib>
 to I<pathetc>.  It only affects new INN installations or generations of
 certificates with C<make cert>.  Besides, a default value has been
 added to I<tlscapath> because it is required by B<nnrpd> when TLS
@@ -1668,7 +1787,7 @@ it is strongly recommended by S<RFC 3977
 =item *
 
 The F<overview.fmt> file is no longer used by INN.  Two new parameters
-have been added to F<inn.conf>:  I<extraoverviewadvertised> and
+have been added to F<inn.conf>: I<extraoverviewadvertised> and
 I<extraoverviewhidden>.  Although B<innupgrade> takes care of the
 change during C<make update>, you should make sure that your overview
 database is consistent with all the fields declared in F<overview.fmt>
@@ -1684,7 +1803,7 @@ changes backported to this new version.
 
 =item *
 
-The $SPOOLBASE variable has been renamed to $SPOOLDIR in B<innshellvars>
+The C<$SPOOLBASE> variable has been renamed to C<$SPOOLDIR> in B<innshellvars>
 in order to be more consistent.  It impacts shell scripts only.  If you
 import B<innshellvars> and use that variable in your scripts, you will
 have to rename it.
@@ -1698,7 +1817,7 @@ support for GnuPG and should be used ins
 
 The B<auth_smb> authenticator program to check passwords with an SMB
 authentication is no longer included in INN.  It was a stripped-down
-version of pam_smbpass, wasn't maintained, and likely had security
+version of pam_smbpass(5), wasn't maintained, and likely had security
 problems.  To authenticate to an SMB server such as Samba, use PAM and
 B<ckpasswd>'s PAM support instead.
 
@@ -1757,7 +1876,7 @@ man page.
 =item *
 
 Alexander Bartolich has greatly improved B<innreport> and especially
-its XHTML output (a XSL transformation is also provided, if needed,
+its XHTML output (an XSL transformation is also provided, if needed,
 in F<innreport-filter.xslt>, in the F<contrib> directory).
 
 =item *
@@ -1784,7 +1903,7 @@ better IPv6 support to some utilities.
 
 =item *
 
-INN now uses S<autoconf 2.61> or later for configuration.  As a result,
+INN now uses S<Autoconf 2.61> or later for configuration.  As a result,
 some C<configure> options have changed slightly and more of the standard
 B<--*dir> options should be supported in lieu of the old INN-specific
 options.  See C<configure --help> for the available options.
@@ -1808,7 +1927,7 @@ B<controlchan> recognizes the new applic
 described in USEPRO and can handle character set conversions of newsgroup
 descriptions.  The C<MIME::Parser> and C<Encode> modules are used.
 Processing control messages has been greatly improved, especially
-checkgroups:  the F<active> and F<newsgroups> files are now properly
+checkgroups: the F<active> and F<newsgroups> files are now properly
 updated when they are processed, and all matching lines in F<control.ctl>
 for a given checkgroups are honoured (which for instance allows using
 both B<drop> and B<doit> actions for the same checkgroups message).
@@ -1847,9 +1966,9 @@ starting from scratch and emulating the
 
 =item *
 
-If I<strippath> is set in F<readers.conf>, the whole user-supplied Path:
-header will now be stripped.  Previously, the final component of the
-user-supplied Path: would still be retained.
+If I<strippath> is set in F<readers.conf>, the whole user-supplied Path
+header field will now be stripped.  Previously, the final component of the
+user-supplied Path header field body would still be retained.
 
 =item *
 
@@ -1887,7 +2006,7 @@ Support for I<runasuser> and I<runasgrou
 allows setting the news user and the news group under which the news server
 runs.  Thanks to Ivan Shmakov for this feature.
 
-New other options have been added to configuration files:  I<ignore> in
+New other options have been added to configuration files: I<ignore> in
 F<incoming.conf>, I<logstatus>, I<nnrpdflags> and I<verifygroups> in
 F<inn.conf>, and I<log-time-format> in F<innfeed.conf>.
 
@@ -1900,7 +2019,7 @@ in F<inn.conf>.
 =item *
 
 The F<sasl.conf> file has been removed in favour of new parameters in
-F<inn.conf> to deal with TLS support:  I<tlscafile>, I<tlscapath>,
+F<inn.conf> to deal with TLS support: I<tlscafile>, I<tlscapath>,
 I<tlscertfile> and I<tlskeyfile>.
 
 =item *
@@ -1936,10 +2055,15 @@ functions as well as more of the portabi
 
 =item *
 
-A lot of work has been done on documentation:  improvements of existing
+A lot of work has been done on documentation: improvements of existing
 documents, new documentation, and proof-reading.  Sample configuration
 files are also more detailed.
 
+=item *
+
+All of the applicable bug fixes from the S<INN 2.4 STABLE> series are also
+included in S<INN 2.5>.
+
 =back
 
 =head1 Changes in 2.4.6
@@ -2004,13 +2128,13 @@ status file.  It was not correctly initi
 
 =item *
 
-Fixed a permission issue:  XHDR and XPAT were not checking the rights
-the user had to read articles when accessing them by their message-ID.
+Fixed a permission issue: XHDR and XPAT were not checking the rights
+the user had to read articles when accessing them by their Message-ID.
 
 =item *
 
 Fixed a bug in the replies of XHDR, XOVER and XPAT when the newsgroup
-is empty.  Two initial replies were sent instead of one:  the right C<420>
+is empty.  Two initial replies were sent instead of one: the right C<420>
 code followed by a wrong C<224> code.
 
 =item *
@@ -2041,7 +2165,11 @@ for Usenet daily reports.
 =item *
 
 An updated F<moderators> file with information about the aioe.*, perl.*
-and si.* hierarchies is provided; F<control.ctl> is also up to date.
+and si.* hierarchies is provided.
+
+=item *
+
+An updated F<control.ctl> file is provided.
 
 =item *
 
@@ -2060,15 +2188,15 @@ Other minor bugs have also been fixed.
 
 =item *
 
-Fixed the "alarm signal" around C<SSL_read> in B<nnrpd>:  it allows
+Fixed the "alarm signal" around C<SSL_read> in B<nnrpd>: it allows
 a proper disconnection of news clients which were previously hanging
-when posting an article through a SSL connection.  Moreover, the
+when posting an article through an SSL connection.  Moreover, the
 I<clienttimeout> parameter now works on SSL connections.  Thanks to
 Matija Nalis for the patch.
 
 =item *
 
-SO_KEEPALIVE is now implemented for SSL TCP connections on systems
+C<SO_KEEPALIVE> is now implemented for SSL TCP connections on systems
 which support it, allowing system detection and closing the dead
 TCP SSL connections automatically after system-specified time.  Thanks
 to Matija Nalis for the patch.
@@ -2076,7 +2204,7 @@ to Matija Nalis for the patch.
 =item *
 
 Fixed a segmentation fault when an article of a size greater than remaining
-stack is retrieved via SSL.  Thanks to Chris Caputo for this patch.
+in the stack is retrieved via SSL.  Thanks to Chris Caputo for this patch.
 
 =item *
 
@@ -2093,8 +2221,11 @@ Many thanks to David Hlacik for its bug
 
 The F<nnrpd.py> stub file in order to test Python B<nnrpd> hooks, as
 mentioned in their documentation, is now installed; only F<INN.py> was
-previously installed in I<pathfilter>.  Also fixed a bug in F<INN.py>
-and add missing methods to it.
+previously installed in I<pathfilter>.
+
+=item *
+
+Fixed a bug in F<INN.py> and add missing methods to it.
 
 =item *
 
@@ -2107,8 +2238,8 @@ Fixed a hang in Perl hooks on (at least)
 
 =item *
 
-Fixed a compilation problem on some platforms because of AF_INET6 which
-was not inside a HAVE_INET6 block in B<innfeed>.
+Fixed a compilation problem on some platforms because of C<AF_INET6> which
+was not inside a C<HAVE_INET6> block in B<innfeed>.
 
 =item *
 
@@ -2135,7 +2266,7 @@ samples.  Thanks to Matija Nalis for thi
 
 =item *
 
-New samples for Python B<nnrpd> hooks are shipped with INN:  F<nnrpd_access.py>
+New samples for Python B<nnrpd> hooks are shipped with INN: F<nnrpd_access.py>
 for access control and F<nnrpd_dynamic.py> for dynamic access control.  The
 F<nnrpd_auth.py> script is now only used for authorization control.  See the
 F<readers.conf> man page for more information (especially the I<python_auth>,
@@ -2180,10 +2311,10 @@ S<Perl 5.10> support has been added to I
 
 =item *
 
-Some news clients hang when posting an article through a SSL connection:
+Some news clients hang when posting an article through an SSL connection:
 it seems that B<nnrpd>'s SSL routines make it wrongly wait for data
-completion.  In order to fix the problem, the select() wait is now
-just bypassed.  However, the IDLE timer stat is currently not collected
+completion.  In order to fix the problem, the C<select()> wait is now
+just bypassed.  However, the idle timer stat is currently not collected
 for such connections.  Thanks to Kachun Lee for this workaround.
 
 =item *
@@ -2195,7 +2326,7 @@ if arguments were passed to B<gzip> or B
 
 Fixed a bug in B<mailpost> and B<pullnews> which prevented useful error
 messages to be seen.  Also add the B<-x> flag to B<pullnews> in order
-to insert Xref: headers in articles which lack one.
+to insert Xref header fields in articles which lack one.
 
 =item *
 
@@ -2217,10 +2348,10 @@ implementation in INN.
 
 =item *
 
-B<innd> now listen on separate sockets for IPv4 and IPv6 connections
-if the IPV6_V6ONLY socket option is available.  There might also be
+B<innd> now listens on separate sockets for IPv4 and IPv6 connections
+if the C<IPV6_V6ONLY> socket option is available.  There might also be
 operating systems that still have separate IPv4 and IPv6 TCP implementations,
-and advanced features like TCP SACK might not be available on v6 sockets.
+and advanced features like TCP C<SACK> might not be available on v6 sockets.
 Thanks to Miquel van Smoorenburg for this patch.
 
 =item *
@@ -2232,18 +2363,18 @@ host.  Thanks to Miquel van Smoorenburg
 
 =item *
 
-Added a I<nnrpdflags> parameter to F<inn.conf> (modelled on the concept
+Added an I<nnrpdflags> parameter to F<inn.conf> (modelled on the concept
 of I<innflags>) to permit passing of command line arguments to instances
 of B<nnrpd> spawned from B<innd>.
 
 =item *
 
 A new F<inn.conf> parameter called I<pathcluster> has been added:
-it allows appending a common name to the Path: header
+it allows appending a common name to the Path header field body
 on all incoming articles.  I<pathhost> and I<pathalias> (if set)
 are still appended to the path as usual, but I<pathcluster>
 is always appended as the last element (e.g. on the leftmost
-side of the Path: header).  Thanks to Miquel van Smoorenburg for
+side of the Path header field body).  Thanks to Miquel van Smoorenburg for
 this feature.
 
 =item *
@@ -2255,7 +2386,7 @@ is no longer shipped with S<Perl 5> and
 
 B<perl-nocem> will now check for a timeout and re-open the socket
 if required.  Additionally, B<perl-nocem> will switch to
-cancel_ctlinnd in case cancel_nntp fails after sending
+C<cancel_ctlinnd> in case C<cancel_nntp> fails after sending
 the Message-ID.  Thanks to Christoph Biedl for the patch.  A more
 detailed documentation has also been written for perl-nocem(8).
 
@@ -2300,7 +2431,7 @@ David Canzi for the patch.
 
 =item *
 
-In response to a LIST [file] command, if the file does not exist,
+In response to a LIST [I<file>] command, if the file does not exist,
 we assume it is not maintained and return C<503> instead of C<215> and
 an empty file.  Moreover, capability to LIST ACTIVE.TIMES for a wildmat
 pattern as its third argument has been added in order to select wanted
@@ -2331,18 +2462,18 @@ Other minor bug fixes and documentation
 
 =item *
 
-Previous versions of INN had an optimization for handling XHDR Newsgroups
-that used the Xref: header from overview.  While this does make the command
-much faster, it doesn't produce accurate results and breaks the NNTP
-protocol, so this optimization has been removed.
+Previous versions of INN had an optimization for handling C<XHDR Newsgroups>
+that used the Xref header field from overview.  While this does make
+the command much faster, it doesn't produce accurate results and breaks
+the NNTP protocol, so this optimization has been removed.
 
 =item *
 
 Fixed a bug in B<innd> that allowed it to accept articles with duplicated
-headers if the header occurred an odd number of times.  Modified the
-programs for rebuilding overview to use the last Xref: header if there
-are multiple ones to avoid problems with spools that contain such invalid
-articles.
+header fields if the header field occurred an odd number of times.
+Modified the programs for rebuilding overview to use the last Xref
+header field if there are multiple ones to avoid problems with spools
+that contain such invalid articles.
 
 =item *
 
@@ -2424,9 +2555,9 @@ authentication capability of news reader
 =item *
 
 If a user is not authorized to approve articles (using the C<A> I<access>
-control in F<readers.conf>), articles that include Approved: headers will be
-rejected even if posted to unmoderated groups.  Some other site may
-consider that group to be moderated.
+control in F<readers.conf>), articles that include an Approved header field
+will be rejected even if posted to unmoderated groups.  Some other site
+may consider that group to be moderated.
 
 =item *
 
@@ -2477,15 +2608,15 @@ Many other, more minor bugs have also be
 
 =item *
 
-SECURITY:  Handle the special filing of control messages into per-type
+SECURITY: Handle the special filing of control messages into per-type
 newsgroups more robustly.  This closes a potentially exploitable buffer
 overflow.  Thanks to Dan Riley for his excellent bug report.
 
 =item *
 
-Fixed article handling in B<innd> so that articles without a Path: header
+Fixed article handling in B<innd> so that articles without a Path header field
 (arising from peers sending malformatted articles or injecting
-malformatted articles through rnews) would not cause B<innd> to crash.  (This
+malformatted articles through B<rnews>) would not cause B<innd> to crash.  (This
 was not exploitable.)
 
 =item *
@@ -2494,9 +2625,10 @@ Fixed a serious bug in XPAT handling, th
 
 =item *
 
-C<configure> now looks for B<sendmail> only in F</usr/sbin> and F</usr/lib>, not on
-the user's path.  This should reduce the need for B<--with-sendmail> if your
-preferred B<sendmail> is in a standard location.
+C<configure> now looks for B<sendmail> only in F</usr/sbin> and
+F</usr/lib>, not on the user's path.  This should reduce the need
+for B<--with-sendmail> if your preferred B<sendmail> is in a standard
+location.
 
 =item *
 
@@ -2562,12 +2694,12 @@ with a cleaner interface to the underlyi
 
 If you use Perl authentication for B<nnrpd> (if I<nnrpdperlauth> in
 F<inn.conf> is true), there have been major changes.  See "Changes to
-Perl Authentication Support for nnrpd" in F<doc/hook-perl> for details.
+Perl Authentication Support for B<nnrpd>" in F<doc/hook-perl> for details.
 
 Similarly, if you use Python authentication for B<nnrpd> (if
 I<nnrpdpythonauth> in F<inn.conf> is true), there have been major changes.
 See "Changes to Python Authentication and Access Control Support for
-nnrpd" in F<doc/hook-python> for details.
+B<nnrpd>" in F<doc/hook-python> for details.
 
 If you use B<send-uucp>, it has been completely rewritten and now takes a
 configuration file to specify its behavior.  See its man page for more
@@ -2611,12 +2743,12 @@ sections in F<doc/hook-perl> and F<doc/h
 =item *
 
 B<nnrpd> now optionally supports article injection via IHAVE, see
-readers.conf(5).  Any articles injected this way must have Date, From,
-Message-ID, Newsgroups, Path, and Subject headers.  X-Trace and
+readers.conf(5).  Any articles injected this way must have Date,
+From, Message-ID, Newsgroups, Path, and Subject headers.  X-Trace and
 X-Complaints-To headers will be added if the appropriate options are set
-in F<readers.conf>, but other headers will not be modified/inserted (e.g.
-NNTP-Posting-Host, NNTP-Posting-Date, Organization, Lines, Cc, Bcc, and To
-headers).
+in F<readers.conf>, but other header fields will not be modified/inserted
+(e.g. NNTP-Posting-Host, NNTP-Posting-Date, Organization, Lines, Cc,
+Bcc, and To header fields).
 
 =item *
 
@@ -2652,7 +2784,7 @@ received before a lower-numbered message
 
 =item *
 
-Several other, more minor protocol issues have been fixed:  connections
+Several other, more minor protocol issues have been fixed: connections
 rejected due to the connection rate limiting in B<innd> receive C<400> replies
 instead of C<504> or C<505>, and ARTICLE without an argument will always either
 retrieve the current article or return a C<423> error, never advance the
@@ -2692,7 +2824,7 @@ that it did.
 
 =item *
 
-Two C<configure> options have changed names:  B<--with-tmp-path> is now
+Two C<configure> options have changed names: B<--with-tmp-path> is now
 B<--with-tmp-dir>, and B<--with-largefiles> is now B<--enable-largefiles>, to
 improve consistency and better match the C<autoconf> option guidelines.
 
@@ -2713,7 +2845,7 @@ See "CANCEL FEEDS" in innd(8) for detail
 
 Two new options, I<nfsreader> and I<nfswriter>, have been added to
 F<inn.conf> to aid in building NFS based shared reader/writer platforms.
-On the writer server configure I<nfswriter> to true and on all of the readers
+On the writer server, configure I<nfswriter> to true and on all of the readers,
 configure I<nfsreader> to true; these options add calls to force data out to
 the NFS server and force it to be read directly from the NFS server at the
 appropriate moments.  Note that it has only been tested on S<Solaris 8>,
@@ -2724,7 +2856,7 @@ method.
 
 A new option, I<tradindexedmmap>, has been added to F<inn.conf>.  If set
 to true (the default), then the tradindexed overview method will use
-mmap() to access its overview data (in 2.3 you couldn't control this; it
+C<mmap()> to access its overview data (in 2.3 you couldn't control this; it
 always used mmap).
 
 =item *
@@ -2774,21 +2906,22 @@ also included in S<INN 2.4>.
 
 =item *
 
-Clients using POST are no longer permitted to provide an Injector-Info:
-header.
+Clients using POST are no longer permitted to provide an Injector-Info
+header field.
 
 =item *
 
-Fixed a bug causing posts with Followup-To: set to a moderated group to be
-rejected if the posting user didn't have permission to approve postings.
+Fixed a bug causing posts with a Followup-To header field set to a
+moderated group to be rejected if the posting user didn't have permission
+to approve postings.
 
 =item *
 
-Fixed bugs in B<inncheck> with setuid B<rnews> or setgid B<inews>, in B<innconfval>
-with F<inn.conf> parameters containing shell metacharacters but no spaces,
-and in F<parsedate.y> with some versions of B<yacc>.  Fixed a variety of
-size-related printf format warnings (e.g., C<%d> vs. C<%ld>) thanks to the work
-of Winfried Szukalski.
+Fixed bugs in B<inncheck> with setuid B<rnews> or setgid B<inews>, in
+B<innconfval> with F<inn.conf> parameters containing shell metacharacters
+but no spaces, and in F<parsedate.y> with some versions of B<yacc>.
+Fixed a variety of size-related printf format warnings (e.g., C<%d>
+vs. C<%ld>) thanks to the work of Winfried Szukalski.
 
 =back
 
@@ -2809,12 +2942,15 @@ searches for the header "newsgroup" matc
 =item *
 
 Made CNFS more robust against crashes by actually syncing the cycbuff
-headers to disk as was originally intended.  Fixed a memory leak in the
-tradspool code.
+headers to disk as was originally intended.
 
 =item *
 
-Two bugs in B<pgpverify> when using GnuPG were fixed:  it now correctly checks
+Fixed a memory leak in the tradspool code.
+
+=item *
+
+Two bugs in B<pgpverify> when using GnuPG were fixed: it now correctly checks
 for B<gpgv> (rather than B<pgp>) when told to use GnuPG and expects the keyring
 to be F<pubring.gpg> (not F<pubring.pgp>).
 
@@ -2831,8 +2967,8 @@ ReiserFS.
 =item *
 
 Various bugs in the header handling in B<nnrpd> have been fixed, including
-hangs when using virtual domains and improper processing of folded headers
-under certain circumstances.
+hangs when using virtual domains and improper processing of folded header
+fields under certain circumstances.
 
 =item *
 
@@ -2855,7 +2991,7 @@ if you were previously using PGP.
 
 =item *
 
-Users can no longer post articles containing Approved: headers to
+Users can no longer post articles containing Approved header fields to
 moderated groups by default; they must be specifically given that
 permission with the I<access> parameter in F<readers.conf>.  See the man page
 for more details.
@@ -2981,9 +3117,6 @@ Many other varied bug fixes and document
 
 =head1 Upgrading from 2.2 to 2.3
 
-There may be additional things to watch out for not listed here; if you
-run across any, please let <inn-bugs@isc.org> know about them.
-
 Simply doing a C<make update> is not sufficient to upgrade; the history and
 overview information will also have to be regenerated, since the formats
 of both files have changed between 2.2 and 2.3.  Regardless of whether you
@@ -3138,14 +3271,15 @@ There is preliminary support for news re
 =item *
 
 To simplify anti-abuse filtering, and to be more compliant with news
-standards and proposed standards, INN now treats as control messages only
-articles containing a Control: header.  A Subject: line beginning with
-C<cmsg > is no longer sufficient for a message to be considered a control
-message, and the Also-Control: header is no longer supported.
+standards and proposed standards, INN now treats as control messages
+only articles containing a Control header field.  A Subject header field
+body beginning with C<cmsg > is no longer sufficient for a message to
+be considered a control message, and the Also-Control header field is
+no longer supported.
 
 =item *
 
-The INN build system no longer uses subst.  (This will be transparent to
+The INN build system no longer uses C<subst>.  (This will be transparent to
 most users; it's an improvement and modernization of how INN is
 configured.)
 
@@ -3207,7 +3341,7 @@ Lots of bug fixes.
 =item *
 
 Various minor bug fixes and a Y2K bug fix.  The Y2K bug is in version
-version 2.2.1 only and will show up after S<Jan 1st>, 2000 when a news reader
+2.2.1 only and will show up after S<Jan 1st>, 2000 when a news reader
 issues a NEWNEWS command for a date prior to the year 2000.
 
 =back
@@ -3239,16 +3373,17 @@ storms.
 
 =item *
 
-Support for B<actsyncd> to fetch F<active> file with B<ftp>; configured by default
-to use <ftp://ftp.isc.org/pub/usenet/CONFIG/active.Z> if you run B<actsyncd>.
-Be sure to read the manual page for B<actsync> to configure an F<actsync.ign>
-file for your site, and test B<simpleftp> if you do not C<configure> with B<wget>
-or B<ncftp>.  Also see L<https://ftp.isc.org/pub/usenet/CONFIG/README>.
+Support for B<actsyncd> to fetch F<active> file with B<ftp>; configured
+by default to use <ftp://ftp.isc.org/pub/usenet/CONFIG/active.Z> if
+you run B<actsyncd>.  Be sure to read the manual page for B<actsync> to
+configure an F<actsync.ign> file for your site, and test B<simpleftp>
+if you do not C<configure> with B<wget> or B<ncftp>.  Also see
+L<https://ftp.isc.org/pub/usenet/CONFIG/README>.
 
 =item *
 
-Some options to C<configure> are now moved to F<inn.conf> (I<merge-to-groups> and
-I<pgp-verify>, without the hyphen).
+Some options to C<configure> are now moved to F<inn.conf>
+(I<merge-to-groups> and I<pgp-verify>, without the hyphen).
 
 =item *
 
@@ -3275,6 +3410,4 @@ directory, for now).
 
 =back
 
-$Id: news.pod 10532 2021-01-20 12:00:42Z iulius $
-
 =cut
diff -Nurp inn-2.6.4/doc/pod/news2mail.pod inn-2.6.5/doc/pod/news2mail.pod
--- inn-2.6.4/doc/pod/news2mail.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/news2mail.pod	2022-02-18 20:36:57.000000000 +0100
@@ -79,8 +79,6 @@ B<news2mail> was written by Brian Kantor
 by James Brister and converted to POD by Julien Elie.  The third optional
 field in F<news2mail.cf> was added by S<D. Stussy> in 2008.
 
-$Id: news2mail.pod 8199 2008-11-30 13:30:47Z iulius $
-
 =head1 SEE ALSO
 
 innd(8), newsfeeds(5).
diff -Nurp inn-2.6.4/doc/pod/newsfeeds.pod inn-2.6.5/doc/pod/newsfeeds.pod
--- inn-2.6.4/doc/pod/newsfeeds.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/newsfeeds.pod	2022-02-18 20:36:57.000000000 +0100
@@ -2,6 +2,50 @@
 
 newsfeeds - Determine where Usenet articles are sent
 
+=head1 IN A NUTSHELL
+
+The I<newsfeeds> file configures what B<innd> does with incoming accepted
+articles.
+
+A minimalist F<newsfeeds> file which parameters an outgoing NNTP feed to
+C<news.server.com>, using path identity C<server> (as it appears in Path
+header fields), of all the articles you receive is:
+
+    # Mandatory line, with no exclusion patterns defined.
+    ME:::
+
+    # A real-time feed through innfeed of all your articles.
+    news.server.com/server\
+        :*\
+        :Tm:innfeed!
+
+    # The channel feed entry for innfeed.
+    # Change "/usr/lib/news/bin" to the directory path
+    # of the innfeed program.
+    innfeed!:!*:Tc,Wnm*:/usr/lib/news/bin/innfeed
+
+In order to find an external feed, you can ask in the news.admin.peering
+newsgroup.  Several news administrators will certainly respond and gracefully
+provide you with a news feed.
+
+Other entries may be added in F<newsfeeds> depending on your needs.  See the
+examples below and also in the archive(8), controlchan(8), news2mail(8),
+ninpaths(8) and perl-nocem(8) man pages for the most widely used.
+
+If you exclude local hierarchies or newsgroups from the feed, make sure to add
+C<!control,!control.*> so that cancel articles or any kind of control articles
+related to excluded hierarchies or newsgroups are not propagated to the remote
+peer.  Its F<newsfeeds> entry then looks like:
+
+    news.server.com/server\
+        :*,!local.*,@*bina*,!control,!control.*\
+        :Tm:innfeed!
+
+After any changes, run C<inncheck> to perform basic syntax checks, and reload
+this configuration file with the following command:
+
+    ctlinnd reload newsfeeds 'new peer'
+
 =head1 DESCRIPTION
 
 The file I<pathetc>/newsfeeds specifies how incoming articles should be
@@ -83,7 +127,7 @@ significant in site names.
 The comma-separated I<pattern> specifies which groups to send to the site;
 it is interpreted to build a "subscription list" for the site.  The
 default subscription is to get all groups carried by the server.  It is a
-uwildmat(3) pattern supporting poison (C<@>) wildcards; see the uwildmat(3)
+I<uwildmat> pattern supporting poison (C<@>) wildcards; see the libinn_uwildmat
 man page for full details on the pattern matching language.  I<pattern>
 will be matched against every newsgroup carried by the server and all
 newsgroups that match will be added to the subscription list for the site.
@@ -330,7 +374,7 @@ If a site is being fed by a file, channe
 server will normally start trying to write the information as soon as
 possible.  Providing a buffer may give better system performance and help
 smooth out overall load if a large batch of news comes in.  The value of
-the this flag should be two numbers separated by a slash.  I<high>
+this flag should be two numbers separated by a slash.  I<high>
 specifies the point at which the server can start draining the feed's I/O
 buffer, and I<low> specifies when to stop writing and begin buffering
 again; the units are bytes.  The default is to do no buffering, sending
@@ -411,15 +455,16 @@ unmoderated groups are sent.
 
 =item B<O> I<originator>
 
-If this flag is specified, an article will only be sent to this site if it
-contains an Injection-Info: header (or an X-Trace: header if no
-Injection-Info: header is found) and the first field of this header matches
-I<originator>.  I<originator> is a uwildmat(3) expression without commas
-or a list of such expressions, separated by C</>.  The article is never
-sent if the first character of the pattern begins with C<@> and the rest
-of the pattern matches.  One use of this flag is to restrict the feed to
-locally generated posts by using an I<originator> pattern that matches
-the Injection-Info: header added by the local server.
+If this flag is specified, an article will only be sent to this site
+if it contains an Injection-Info header field (or an X-Trace header
+field if no Injection-Info header field is found) and the first
+field of this header field matches I<originator>.  I<originator> is a
+I<uwildmat> expression without commas or a list of such expressions,
+separated by C</>.  The article is never sent if the first character
+of the pattern begins with C<@> and the rest of the pattern matches.
+One use of this flag is to restrict the feed to locally generated posts
+by using an I<originator> pattern that matches the Injection-Info
+header field added by the local server.
 
 =item B<P> I<priority>
 
@@ -814,17 +859,16 @@ Finally, another very useful example of
 entry for controlchan(8).  Make sure its path is properly set.
 
     controlchan!\
-        :!*,control,control.*,!control.cancel/!collabra-internal\
+        :!*,control,control.*,!control.cancel\
         :AC,Tc,Wnsm:<pathbin in inn.conf>/controlchan
 
 This program only wants information about articles posted to a control
 newsgroup other than control.cancel, which due to the sorting of control
 messages described in innd(8) will send it all control messages except for
-cancel messages.  In this case, we also exclude any article with a
-distribution of C<collabra-internal>.  B<controlchan> gets the storage
-API token, the name of the sending site (for processing old-style ihave
-and sendme control messages, be sure to read about I<logipaddr> in
-controlchan(8)), and the message ID for each article.
+cancel messages.  B<controlchan> gets the storage API token, the name of the
+sending site (for processing old-style ihave and sendme control messages,
+be sure to read about I<logipaddr> in controlchan(8)), and the message ID for
+each article.
 
 For many other examples, including examples of the special C<ME> site
 entry, see the example F<newsfeeds> file distributed with INN.  Also see the
@@ -836,11 +880,9 @@ the standard newsfeeds entries used by m
 Written by Rich $alz <rsalz@uunet.uu.net> for InterNetNews.  Reformatted
 and rewritten in POD by Russ Allbery <eagle@eyrie.org>.
 
-$Id: newsfeeds.pod 10283 2018-05-14 12:43:05Z iulius $
-
 =head1 SEE ALSO
 
 active(5), buffchan(8), controlchan(8), ctlinnd(8), inn.conf(5), innd(8),
-innfeed(8), innxmit(8), nntpsend(8), uwildmat(3).
+innfeed(8), innxmit(8), libinn_uwildmat(3), nntpsend(8).
 
 =cut
diff -Nurp inn-2.6.4/doc/pod/newsgroups.pod inn-2.6.5/doc/pod/newsgroups.pod
--- inn-2.6.4/doc/pod/newsgroups.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/newsgroups.pod	2022-02-18 20:36:57.000000000 +0100
@@ -120,8 +120,6 @@ L<https://ftp.isc.org/pub/usenet/CONFIG/
 written by David Lawrence <tale@isc.org> and updated by Russ Allbery
 <eagle@eyrie.org>.
 
-$Id: newsgroups.pod 10097 2016-11-04 22:19:07Z iulius $
-
 =head1 SEE ALSO
 
 active(5), controlchan(8), ctlinnd(8), getlist(1), nnrpd(8).
diff -Nurp inn-2.6.4/doc/pod/newslog.pod inn-2.6.5/doc/pod/newslog.pod
--- inn-2.6.4/doc/pod/newslog.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/newslog.pod	2022-02-18 20:36:57.000000000 +0100
@@ -247,13 +247,11 @@ Written by Landon Curt Noll <chongo@toad
 <rsalz@uunet.uu.net> for InterNetNews.  Rewritten and converted
 to POD by Julien Elie.
 
-$Id: newslog.pod 9903 2015-06-20 17:20:46Z iulius $
-
 =head1 SEE ALSO
 
-control.ctl(5), ctlinnd(8), expire(8), expireover(8), expirerm(8), inn.conf(5),
-innd(8), innfeed.conf(5), innreport(8), innreport.conf(5), news.daily(8),
-nnrpd(8), nntpsend(8), scanlogs(8), send-nntp(8), send-uucp(8), syslog.conf(5),
-tally.control(8).
+control.ctl(5), ctlinnd(8), expire(8), expireover(8), expirerm(8),
+inn.conf(5), innd(8), innfeed.conf(5), innreport(8), innreport.conf(5),
+news.daily(8), nnrpd(8), nntpsend(8), scanlogs(8), send-ihave(8),
+send-nntp(8), send-uucp(8), syslog.conf(5), tally.control(8).
 
 =cut
diff -Nurp inn-2.6.4/doc/pod/ninpaths.pod inn-2.6.5/doc/pod/ninpaths.pod
--- inn-2.6.4/doc/pod/ninpaths.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/ninpaths.pod	2022-02-18 20:36:57.000000000 +0100
@@ -38,7 +38,7 @@ by B<sendinpaths>.
 
 =item 2.
 
-Set up a channel feed using an entry like:
+Set up a channel feed using a F<newsfeeds> entry like:
 
     inpaths!:*:Tc,WP:<pathbin>/ninpaths -p -d <pathlog>/path/inpaths.%d
 
@@ -178,8 +178,6 @@ The idea and some implementation details
 original B<inpaths> program, but most of the code has been rewritten for
 clarity.  This program is in the public domain.
 
-$Id: ninpaths.pod 9383 2011-12-25 20:56:10Z iulius $
-
 =head1 SEE ALSO
 
 newsfeeds(5), sendinpaths(8).
diff -Nurp inn-2.6.4/doc/pod/nnrpd.pod inn-2.6.5/doc/pod/nnrpd.pod
--- inn-2.6.4/doc/pod/nnrpd.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/nnrpd.pod	2022-02-18 20:36:57.000000000 +0100
@@ -41,6 +41,12 @@ connections if the load average is great
 C<16>).  B<nnrpd> can also prevent high-volume posters from abusing
 your resources.  See the discussion of exponential backoff in inn.conf(5).
 
+B<nnrpd> injects articles into the local server running B<innd> through a
+UNIX domain socket, or an INET domain socket if not supported.  If another
+server should be used for injection, you can set it with the I<nnrpdposthost>
+parameter in F<inn.conf>.  In case authentication credentials are requested
+during the injection, B<nnrpd> will use the F<passwd.nntp> file in I<pathetc>.
+
 =head1 OPTIONS
 
 =over 4
@@ -205,9 +211,31 @@ You then have to set these F<inn.conf> p
     tlscertfile:    <pathetc>/cert.pem
     tlskeyfile:     <pathetc>/key.pem
 
-Note that unlike Apache's I<SSLCertificateFile> directive, I<tlscertfile>
-should not contain a concatenation of certificates.  Instead, if you have
-a certificate authority root certificate, set I<tlscafile> to its path.
+If you want to use a complete certificate chain, you can directly put
+it in I<tlscertfile> (like Apache's I<SSLCertificateFile> directive).
+Alternately, you can put a single certificate in I<tlscertfile> and use
+I<tlscafile> for additional certificates needed to complete the chain,
+like a separate authority root certificate.
+
+More concretly, when using S<Let's Encrypt> certificates, Certbot's
+files can be installed as follows:
+
+    tlscapath:      /etc/letsencrypt/live/news.server.com
+    tlscertfile:    /etc/letsencrypt/live/news.server.com/fullchain.pem
+    tlskeyfile:     /etc/letsencrypt/live/news.server.com/privkey.pem
+
+or:
+
+    tlscapath:      /etc/letsencrypt/live/news.server.com
+    tlscafile:      /etc/letsencrypt/live/news.server.com/chain.pem
+    tlscertfile:    /etc/letsencrypt/live/news.server.com/cert.pem
+    tlskeyfile:     /etc/letsencrypt/live/news.server.com/privkey.pem
+
+Make sure that the permission rights are properly set so that the
+news user or the news group can read these directories and files
+(typically, he should access F</etc/letsencrypt/live/news.server.com> and
+F</etc/letsencrypt/archive/news.server.com> where the real keys are located,
+and the private key should not be world-readable).
 
 There are two common ways for a news client to negotiate a TLS
 connection:  either via the use of a dedicated port (usually 563)
@@ -276,9 +304,9 @@ Note that OVER should be used instead of
 
 A new command, XPAT I<header> I<message-ID>|I<range> I<pattern>
 [I<pattern> ...], is provided.  The first argument is the case-insensitive
-name of the header to be searched.  The second argument is either an article
-range or a single message-ID, as specified in S<RFC 2980>.  The third
-argument is a uwildmat(3)-style pattern; if there are additional arguments,
+name of the header field to be searched.  The second argument is either an
+article range or a single message-ID, as specified in S<RFC 2980>.  The third
+argument is a I<uwildmat>-style pattern; if there are additional arguments,
 they are joined together separated by a single space to form the complete
 pattern.  This command is similar to the XHDR command.  It returns a C<221>
 response code, followed by the text response of all article numbers that
@@ -308,10 +336,9 @@ support added by Rob Robertston <rob@vio
 January, 1993.  Exponential backoff (for posting) added by Dave Hayes in
 Febuary 1998.
 
-$Id: nnrpd.pod 10373 2020-05-21 21:00:33Z iulius $
-
 =head1 SEE ALSO
 
-ctlinnd(8), innd(8), inn.conf(5), readers.conf(5), signal(2), uwildmat(3).
+ctlinnd(8), innd(8), inn.conf(5), libinn_uwildmat(3), nnrpd.track(5),
+passwd.nntp(5), readers.conf(5), signal(2).
 
 =cut
diff -Nurp inn-2.6.4/doc/pod/nnrpd.track.pod inn-2.6.5/doc/pod/nnrpd.track.pod
--- inn-2.6.4/doc/pod/nnrpd.track.pod	1970-01-01 01:00:00.000000000 +0100
+++ inn-2.6.5/doc/pod/nnrpd.track.pod	2022-02-18 20:36:57.000000000 +0100
@@ -0,0 +1,41 @@
+=head1 NAME
+
+nnrpd.track - Specify hosts to be tracked by nnrpd
+
+=head1 DESCRIPTION
+
+This file, which is located in I<pathetc>, specifies which hosts are to
+have their activities recorded during an B<nnrpd> session.  The B<nnrpd>
+server reads it when first spawned by B<innd>, provided I<readertrack>
+in F<inn.conf> is true; otherwise this file is not used.
+
+Entries consist of one host specification per line, each line having
+two fields, separated by a colon:
+
+    host:identity
+
+The first field is either one of the FQDNs of a host, or a domain name
+(in the form C<*.domain.com>).
+
+The second field is simply a segment of text which may be used to
+more easily identify the client, typically an e-mail address or
+other identifying mark.  Each post of tracked hosts will have an
+entry associated with I<identity> in the log message recorded to the
+I<pathlog>/tracklogs directory, and every posted article will be saved
+in the I<pathlog>/trackposts directory.
+
+An example of F<nnrpd.track> file is:
+
+    nasty.foo.com:nasty@foo.com
+    *.bar.com:VeryNastyClient
+
+=head1 HISTORY
+
+Written by Steve Carrie <stephenc@uk.uu.net> for InterNetNews.
+Rewritten into POD by Julien Elie.
+
+=head1 SEE ALSO
+
+inn.conf(5), nnrpd(8).
+
+=cut
diff -Nurp inn-2.6.4/doc/pod/nntpget.pod inn-2.6.5/doc/pod/nntpget.pod
--- inn-2.6.4/doc/pod/nntpget.pod	1970-01-01 01:00:00.000000000 +0100
+++ inn-2.6.5/doc/pod/nntpget.pod	2022-02-18 20:36:57.000000000 +0100
@@ -0,0 +1,95 @@
+=head1 NAME
+
+nntpget - Get Usenet articles from a remote NNTP server
+
+=head1 SYNOPSIS
+
+B<nntpget> [B<-ov>] [B<-d> I<dist>] [B<-f> I<file>] [B<-n> I<newsgroups>]
+[B<-t> I<timestring>] [B<-u> I<file>] I<host>
+
+=head1 DESCRIPTION
+
+B<nntpget> connects to the NNTP server at the specified I<host> and retrieves
+articles from it.  The Message-IDs of the desired articles are read from
+standard input.  The articles are sent to standard output.
+
+Instead of reading Message-IDs from standard output, the B<-d>, B<-f>,
+B<-n>, B<-t> and B<-u> options make use of the C<NEWNEWS> command, which
+may not be available on the remote server.  Only one of the B<-f>, B<-t>
+or B<-u> option may be given at the same time; B<-d> and B<-n> can be
+specified only if one of the other three options is in use.
+
+If authentication credentials are present for the remote server in the
+F<passwd.nntp> file in I<pathetc>, then B<nntpget> will use them to
+authenticate.
+
+=head1 OPTIONS
+
+=over 4
+
+=item B<-d> I<dist>
+
+This option may be used to specify a distribution list when using the B<-f>,
+B<-t> or B<-u> options.  The default is no distribution list.
+
+=item B<-f> I<file>
+
+The list of article Message-IDs is normally read from standard input.
+If this option is used, then a C<NEWNEWS> command is used to retrieve all
+articles newer than the modification date of the specified I<file>.
+
+=item B<-n> I<newsgroups>
+
+If either the B<-f>, B<-t> or B<-u> options are used, then this option may be
+used to limit the responses to only the newsgroups (if any) whose names match
+the list.  The default is C<*>, that is to say all newsgroups are wanted.
+
+The I<newsgroups> list can contain several patterns and wildmat characters.
+For instance C<misc.*,!*.test> is a valid list that will be given to the
+C<NEWNEWS> command.
+
+=item B<-o>
+
+This option may be used only if the command is executed on the host where the
+B<innd> server is running.  If this option is used, B<nntpget> connects to
+the specified remote I<host> to retrieve articles.  Any article not present
+in the local F<history> database is then fetched from the remote site and
+offered to the local server.
+
+Articles are not written to standard output.  Only processed Message-IDs are,
+if the B<-v> option is also used.
+
+=item B<-t> I<timestring>
+
+If this option is used, then the specified I<timestring> is used as the time
+and date parameter to the C<NEWNEWS> command.  Only the articles arrived
+in the remote server since that timestamp are retrieved.
+
+The I<timestring> is specified as C<yyyymmdd hhmmss GMT> where C<yyyy> is the
+year, C<mm> the month, C<dd> the day of the month, C<hh> the hours in the
+24-hour clock, C<mm> the minutes, and C<ss> the seconds.  The token C<GMT>
+specifies that the date and time are given in Coordinated Universal Time.
+
+=item B<-u> I<file>
+
+This option is like B<-f> except that if the transfer succeeds, the file
+will be updated with a statistics line, modifying its timestamp so that it
+can be used in later invocations.
+
+=item B<-v>
+
+If this option is used with B<-o>, then the Message-ID of each article will
+be sent to standard output as it is processed.
+
+=back
+
+=head1 HISTORY
+
+Written by Rich $alz <rsalz@uunet.uu.net> for InterNetNews.  Rewritten into
+POD by Julien Elie.
+
+=head1 SEE ALSO
+
+innd(8), passwd.nntp(5).
+
+=cut
diff -Nurp inn-2.6.4/doc/pod/nntpsend.ctl.pod inn-2.6.5/doc/pod/nntpsend.ctl.pod
--- inn-2.6.4/doc/pod/nntpsend.ctl.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/nntpsend.ctl.pod	2022-02-18 20:36:57.000000000 +0100
@@ -33,8 +33,6 @@ See nntpsend(8) for an example of F<nntp
 Written by Landon Curt Noll <chongo@toad.com> for InterNetNews.  Converted to
 POD by Julien Elie.
 
-$Id: nntpsend.ctl.pod 9071 2010-05-31 17:41:32Z iulius $
-
 =head1 SEE ALSO
 
 innxmit(1), newsfeeds(5), nntpsend(8), shrinkfile(1).
diff -Nurp inn-2.6.4/doc/pod/nntpsend.pod inn-2.6.5/doc/pod/nntpsend.pod
--- inn-2.6.4/doc/pod/nntpsend.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/nntpsend.pod	2022-02-18 20:36:57.000000000 +0100
@@ -116,8 +116,6 @@ defaults to C<180>.
 Written by Landon Curt Noll <chongo@toad.com> and Rich $alz
 <rsalz@uunet.uu.net> for InterNetNews.  Converted to POD by Julien Elie.
 
-$Id: nntpsend.pod 9588 2013-12-19 17:46:41Z iulius $
-
 =head1 SEE ALSO
 
 inn.conf(5), innxmit(1), newsfeeds(5), nntpsend.ctl(5), shlock(1),
diff -Nurp inn-2.6.4/doc/pod/ovdb.pod inn-2.6.5/doc/pod/ovdb.pod
--- inn-2.6.4/doc/pod/ovdb.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/ovdb.pod	2022-02-18 20:36:57.000000000 +0100
@@ -370,8 +370,6 @@ legacy F<ov3.c> file.
 
 Written by Heath Kehoe <hakehoe@avalon.net> for InterNetNews.
 
-$Id: ovdb.pod 10525 2021-01-20 11:51:15Z iulius $
-
 =head1 SEE ALSO
 
 inn.conf(5), innd(8), makehistory(8), nnrpd(8), ovdb_init(8),
diff -Nurp inn-2.6.4/doc/pod/ovdb_init.pod inn-2.6.5/doc/pod/ovdb_init.pod
--- inn-2.6.4/doc/pod/ovdb_init.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/ovdb_init.pod	2022-02-18 20:36:57.000000000 +0100
@@ -137,8 +137,6 @@ Note that the B<-u> option can be used e
 
 Written by Heath Kehoe <hakehoe@avalon.net> for InterNetNews.
 
-$Id: ovdb_init.pod 10241 2018-02-04 15:38:19Z iulius $
-
 =head1 SEE ALSO
 
 ovdb(5), makehistory(8), rc.news(8).
diff -Nurp inn-2.6.4/doc/pod/ovdb_monitor.pod inn-2.6.5/doc/pod/ovdb_monitor.pod
--- inn-2.6.4/doc/pod/ovdb_monitor.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/ovdb_monitor.pod	2022-02-18 20:36:57.000000000 +0100
@@ -27,8 +27,6 @@ automatically takes care of stopping B<o
 
 Written by Heath Kehoe <hakehoe@avalon.net> for InterNetNews.
 
-$Id: ovdb_monitor.pod 10241 2018-02-04 15:38:19Z iulius $
-
 =head1 SEE ALSO
 
 ovdb(5), ovdb_init(8), rc.news(8).
diff -Nurp inn-2.6.4/doc/pod/ovdb_server.pod inn-2.6.5/doc/pod/ovdb_server.pod
--- inn-2.6.4/doc/pod/ovdb_server.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/ovdb_server.pod	2022-02-18 20:36:57.000000000 +0100
@@ -25,8 +25,6 @@ exiting itself.
 
 Written by Heath Kehoe <hakehoe@avalon.net> for InterNetNews.
 
-$Id: ovdb_server.pod 10191 2017-11-25 21:11:53Z iulius $
-
 =head1 SEE ALSO
 
 ovdb(5), ovdb_init(8), rc.news(8).
diff -Nurp inn-2.6.4/doc/pod/ovdb_stat.pod inn-2.6.5/doc/pod/ovdb_stat.pod
--- inn-2.6.4/doc/pod/ovdb_stat.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/ovdb_stat.pod	2022-02-18 20:36:57.000000000 +0100
@@ -92,8 +92,6 @@ because it may leave stale locks in the
 
 Written by Heath Kehoe <hakehoe@avalon.net> for InterNetNews.
 
-$Id: ovdb_stat.pod 10241 2018-02-04 15:38:19Z iulius $
-
 =head1 SEE ALSO
 
 ovdb(5).
diff -Nurp inn-2.6.4/doc/pod/overchan.pod inn-2.6.5/doc/pod/overchan.pod
--- inn-2.6.4/doc/pod/overchan.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/overchan.pod	2022-02-18 20:36:57.000000000 +0100
@@ -43,8 +43,6 @@ Written by Rob Robertson <rob@violet.ber
 <rsalz@uunet.uu.net> for InterNetNews.  Man page rewritten in POD by Russ
 Allbery <eagle@eyrie.org>.
 
-$Id: overchan.pod 9767 2014-12-07 21:13:43Z iulius $
-
 =head1 SEE ALSO
 
 inn.conf(5), innd(8), newsfeeds(5)
diff -Nurp inn-2.6.4/doc/pod/passwd.nntp.pod inn-2.6.5/doc/pod/passwd.nntp.pod
--- inn-2.6.4/doc/pod/passwd.nntp.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/passwd.nntp.pod	2022-02-18 20:36:57.000000000 +0100
@@ -6,7 +6,7 @@ passwd.nntp - Passwords for connecting t
 
 The file I<pathetc>/passwd.nntp contains host / name / password
 triplets for use when authenticating client programs to NNTP servers.
-This file is normally interpreted by NNTPsendpassword() in libinn(3).
+This file is normally interpreted by C<NNTPsendpassword()> in libinn(3).
 Blank lines and lines beginning with a number sign (C<#>) are ignored.
 All other lines should consist of three or four fields separated by
 colons:
@@ -32,18 +32,19 @@ are described in S<RFC 4643>.)
 
 For example:
 
-    ##  UUNET needs a password, MIT doesn't.
-    mit.edu:bbn::authinfo
+    mit.edu:bbn:mypasswd
     uunet.uu.net:bbn:yoyoma:authinfo
 
 This file should not be world-readable.
 
+B<actsync>, B<getlist>, B<inews>, B<innxbatch>, B<innxmit>, B<nnrpd>,
+B<nntpget> and B<rnews> make use of F<passd.nntp> when needing to connect
+to a remote server.
+
 =head1 HISTORY
 
 Written by Rich $alz <rsalz@uunet.uu.net> for InterNetNews.
 
-$Id: passwd.nntp.pod 8821 2009-11-20 17:32:37Z iulius $
-
 =head1 SEE ALSO
 
 inn.conf(5), innd(8), libinn(3).
diff -Nurp inn-2.6.4/doc/pod/procbatch.pod inn-2.6.5/doc/pod/procbatch.pod
--- inn-2.6.4/doc/pod/procbatch.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/procbatch.pod	2022-02-18 20:36:57.000000000 +0100
@@ -135,8 +135,6 @@ Clayton O'Neill.
 This manual page was written by Florian Schlichting, with the help of a
 memo by Russ Allbery.
 
-$Id: procbatch.pod 9371 2011-09-04 09:21:43Z iulius $
-
 =head1 SEE ALSO
 
 filechan(8), innfeed(8), innxmit(8), news.daily(8).
diff -Nurp inn-2.6.4/doc/pod/prunehistory.pod inn-2.6.5/doc/pod/prunehistory.pod
--- inn-2.6.4/doc/pod/prunehistory.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/prunehistory.pod	2022-02-18 20:36:57.000000000 +0100
@@ -14,10 +14,10 @@ them with spaces, so that the size and p
 does not change.  This has an effect similar to expiring the article, in
 that it is still mentioned in the history database but cannot be retrieved.
 
-B<prunehistory> reads the standard input.  The input is taken as a set of lines.
-Blank lines and lines starting with a number sign (C<#>) are ignored.  All other
-lines should consist of a message-ID followed by zero or more other fields
-(which are ignored).  The message-ID is used as the dbz(3) key to get
+B<prunehistory> reads the standard input.  The input is taken as a set of
+lines.  Blank lines and lines starting with a number sign (C<#>) are ignored.
+All other lines should consist of a message-ID followed by zero or more other
+fields (which are ignored).  The message-ID is used as the I<dbz> key to get
 an offset into the text file.  Since B<innd> only appends to the text file,
 B<prunehistory> does not need to have any interaction with it.
 
@@ -44,10 +44,8 @@ a different name, use the B<-f> flag.
 Written by Rich $alz <rsalz@uunet.uu.net> for InterNetNews.  Converted to
 POD by Julien Elie.
 
-$Id: prunehistory.pod 9447 2012-12-07 19:01:45Z eagle $
-
 =head1 SEE ALSO
 
-dbz(3), history(5), innd(8).
+history(5), innd(8), libinn_dbz(3).
 
 =cut
diff -Nurp inn-2.6.4/doc/pod/pullnews.pod inn-2.6.5/doc/pod/pullnews.pod
--- inn-2.6.4/doc/pod/pullnews.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/pullnews.pod	2022-02-18 20:36:57.000000000 +0100
@@ -338,8 +338,6 @@ Geraint S<A. Edwards> greatly improved B
 recognized flags, fixing some bugs and integrating the B<backupfeed>
 contrib script by Kai Henningsen, adding again S<6 other> flags.
 
-$Id: pullnews.pod 10283 2018-05-14 12:43:05Z iulius $
-
 =head1 SEE ALSO
 
 incoming.conf(5), rnews(1).
diff -Nurp inn-2.6.4/doc/pod/qio.pod inn-2.6.5/doc/pod/qio.pod
--- inn-2.6.4/doc/pod/qio.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/qio.pod	1970-01-01 01:00:00.000000000 +0100
@@ -1,110 +0,0 @@
-=head1 NAME
-
-qio - Quick I/O routines for reading files
-
-=head1 SYNOPSIS
-
-    #include <inn/qio.h>
-
-    QIOSTATE *QIOopen(const char *name);
-
-    QIOSTATE *QIOfdopen(int> I<fd);
-
-    void QIOclose(QIOSTATE *qp);
-
-    char *QIOread(QIOSTATE *qp);
-
-    int QIOfileno(QIOSTATE *qp);
-
-    size_t QIOlength(QIOSTATE *qp);
-
-    int QIOrewind(QIOSTATE *qp);
-
-    off_t QIOtell(QIOSTATE *qp);
-
-    bool QIOerror(QIOSTATE *qp);
-
-    bool QIOtoolong(QIOSTATE *qp);
-
-=head1 DESCRIPTION
-
-The routines described in this manual page are part of libinn(3).  They
-are used to provide quick read access to files; the QIO routines use
-buffering adapted to the block size of the device, similar to stdio, but
-with a more convenient syntax for reading newline-terminated lines.  QIO
-is short for "Quick I/O" (a bit of a misnomer, as QIO provides read-only
-access to files only).
-
-The QIOSTATE structure returned by B<QIOopen> and B<QIOfdopen> is the
-analog to stdio's FILE structure and should be treated as a black box by
-all users of these routines.  Only the above API should be used.
-
-B<QIOopen> opens the given file for reading with a buffer size of 32KiB.
-Returns a pointer to use for subsequent calls, or NULL on error.
-B<QIOfdopen> performs the same operation except on an already-open file
-descriptor (I<fd> must designate a file open for reading).
-
-B<QIOclose> closes the open file and releases any resources used by the
-QIOSTATE structure.  The QIOSTATE pointer should not be used again after
-it has been passed to this function.
-
-B<QIOread> reads the next newline-terminated line in the file and returns
-a pointer to it, with the trailing newline replaced by nul.  The returned
-pointer is a pointer into a buffer in the QIOSTATE object and therefore
-will remain valid until B<QIOclose> is called on that object.  If EOF is
-reached, an error occurs, or if the line is longer than the buffer size
-(32KiB), NULL is returned instead.  To distinguish between the error
-cases, use B<QIOerror> and B<QIOtoolong>.
-
-B<QIOfileno> returns the descriptor of the open file.
-
-B<QIOlength> returns the length in bytes of the last line returned by
-B<QIOread>.  Its return value is only defined after a successful call to
-B<QIOread>.
-
-B<QIOrewind> sets the read pointer back to the beginning of the file and
-reads the first block of the file in anticipation of future reads.  It
-returns 0 if successful and -1 on error.
-
-B<QIOtell> returns the current value of the read pointer (the lseek(2)
-offset at which the next line will start).
-
-B<QIOerror> returns true if there was an error in the last call to
-B<QIOread>, false otherwise.  B<QIOtoolong> returns true if there was an
-error and the error was that the line was too long.  If B<QIOread> returns
-NULL, these functions should be called to determine what happened.  If
-B<QIOread> returned NULL and B<QIOerror> is false, EOF was reached.  Note
-that if B<QIOtoolong> returns true, the next call to B<QIOread> will try
-to read the remainder of the line and will likely return a partial line;
-users of this library should in general treat long lines as fatal errors.
-
-=head1 EXAMPLES
-
-This block of code opens F</etc/motd> and reads it a line at a time,
-printing out each line preceded by its offset in the file.
-
-    QIOSTATE *qp;
-    off_t offset;
-    char *p;
-
-    qp = QIOopen("/etc/motd");
-    if (qp == NULL) {
-        perror("Open error");
-        exit(1);
-    }
-    for (p = QIOread(qp); p != NULL; p = QIOread(qp))
-        printf("%ld: %s\n", (unsigned long) QIOtell(qp), p);
-    if (QIOerror(qp)) {
-        perror("Read error");
-        exit(1);
-    }
-    QIOclose(qp);
-
-=head1 HISTORY
-
-Written by Rich $alz <rsalz@uunet.uu.net> for InterNetNews.  Updated by
-Russ Allbery <eagle@eyrie.org>.
-
-$Id: qio.pod 10457 2020-12-19 06:10:49Z eagle $
-
-=cut
diff -Nurp inn-2.6.4/doc/pod/radius.pod inn-2.6.5/doc/pod/radius.pod
--- inn-2.6.4/doc/pod/radius.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/radius.pod	2022-02-18 20:36:57.000000000 +0100
@@ -67,8 +67,6 @@ implement it correctly.
 The RADIUS authenticator was originally written by Aidan Cully.  This
 documentation was written by Russ Allbery <eagle@eyrie.org>.
 
-$Id: radius.pod 9940 2015-09-04 12:58:15Z iulius $
-
 =head1 SEE ALSO
 
 inn-radius.conf(5), nnrpd(8), readers.conf(5).
diff -Nurp inn-2.6.4/doc/pod/rc.news.pod inn-2.6.5/doc/pod/rc.news.pod
--- inn-2.6.4/doc/pod/rc.news.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/rc.news.pod	2022-02-18 20:36:57.000000000 +0100
@@ -99,8 +99,6 @@ user ID.
 This manual page written by Jeffrey S<M. Vinocur> <jeff@litech.org> for
 InterNetNews.
 
-$Id: rc.news.pod 9723 2014-09-24 17:54:24Z iulius $
-
 =head1 SEE ALSO
 
 ctlinnd(8), cnfsstat(8), expirerm(8), inn.conf(5), innwatch(8), ovdb(5).
diff -Nurp inn-2.6.4/doc/pod/readers.conf.pod inn-2.6.5/doc/pod/readers.conf.pod
--- inn-2.6.4/doc/pod/readers.conf.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/readers.conf.pod	2022-02-18 20:36:57.000000000 +0100
@@ -2,6 +2,75 @@
 
 readers.conf - Access control and configuration for nnrpd
 
+=head1 IN A NUTSHELL
+
+The F<readers.conf> file parameters who is allowed to connect as a news
+reader and what they're allowed to do after they connect.  Bear in mind
+that in F<readers.conf>, authentication and authorization are configured in
+different blocks.  First, a user is authenticated, and assigned an identity
+(in an C<auth> block).  Then this identity is authorized to access certain
+newsgroups with certain rights (in an C<access> block).
+
+As for authentication, your C<auth> block for password users could look like
+this:
+
+    auth "foreignokay" {
+        auth: "ckpasswd -f <pathdb in inn.conf>/newsusers"
+        default: "<unauthenticated>"
+    }
+
+See the documentation of the B<-f> flag in the ckpasswd(8) man page for how to
+generate passwords and make use of this F<newsusers> file.
+
+This way, with the C<foreignokay> authentication block, a user successfully
+authenticated as user C<myusername> will be assigned the identity
+C<myusername>.  If authentication fails, it will be assigned the default
+identity C<< <unauthenticated> >> that will later be checked in C<access>
+blocks.
+
+Authentication blocks are checked from the last one in the F<readers.conf>
+file to the first one (bottom up).  As soon as one matches, the corresponding
+identity is assigned to the user.
+
+As for authorization, let's do something in an C<access> block for people
+successfully authenticated with passwords:
+
+    access "authenticatedpeople" {
+        users: "*"
+        newsgroups: "*,!junk,!control,!control.*"
+    }
+
+And then something like one of the following two, depending on whether
+unauthenticated users get any access:
+
+    access "restrictive" {
+        users: "<unauthenticated>"
+        newsgroups: "!*"
+    }
+
+    access "readonly" {
+        users: "<unauthenticated>"
+        read: "local.*"
+        post: "!*"
+    }
+
+Please note that the C<authenticatedpeople> block must appear in
+F<readers.conf> before C<restrictive> or C<readonly> blocks because access
+blocks are checked from the last one in the F<readers.conf> file to the first
+one (bottom up).  As soon as one matches the identity previously assigned
+by an authentication block, it is chosen.  The C<authenticatedpeople> access
+block matches every user that has not been assigned C<< <unauthenticated> >>
+as identity.
+
+More examples and features are detailed below in this man page (notably
+without any password file, with PAM, with Perl or Python hooks).
+
+You don't need to reload anything after modifying F<readers.conf>; every
+time a news client connects to the server, a new B<nnrpd> process is spawned
+and reads its configuration from disk.  Nonetheless, after any changes,
+you can run C<inncheck> to perform basic syntax checks against the modified
+F<readers.conf> file.
+
 =head1 DESCRIPTION
 
 F<readers.conf> in I<pathetc> specifies access control for nnrpd(8).  It
@@ -681,11 +750,11 @@ access, not posting access.
 Here's a similar example for a news server that accepts connections from
 anywhere but requires the user to specify a username and password.  The
 username and password are first checked against an external database of
-usernames and passwords, and then against the system shadow password file:
+usernames and passwords, and then make use of PAM:
 
     auth all {
-        auth: "ckpasswd -d <pathdb in inn.conf>/newsusers"
-        auth: "ckpasswd -s"
+        auth: "ckpasswd -f <pathdb in inn.conf>/newsusers"
+        auth: ckpasswd
     }
 
     access full {
@@ -698,16 +767,15 @@ they don't receive any valid identity an
 access groups (even ones with C<users: *>).  Such users receive nothing
 but authentication-required responses from nnrpd until they authenticate.
 
-If they then later authenticate, the username and password are checked
-first by running B<ckpasswd> with the B<-d> option for an external dbm
-file of encrypted passwords, and then with the B<-s> option to check the
-shadow password database (note that this option may require ckpasswd to
-be setgid to a shadow group, and there are security considerations; see
-ckpasswd(8) for details).  If both of those fail, the user will continue
-to have no identity; otherwise, an identity will be assigned (usually
-the supplied username, perhaps with a domain appended, although an
-authenticator technically can provide a completely different username
-for the identity), and the access group will match, giving full access.
+If they then later authenticate, the username and password are checked first
+by running B<ckpasswd> with the B<-f> option for an external file of encrypted
+passwords, and then uses PAM (if INN was built with PAM support) to check
+the password (and if that fails, it tries to check the password against the
+password field returned by getpwnam(3)).  If both of those fail, the user
+will continue to have no identity; otherwise, an identity will be assigned
+(usually the supplied username, perhaps with a domain appended, although an
+authenticator technically can provide a completely different username for the
+identity), and the access group will match, giving full access.
 
 It may be educational to consider how to combine the above examples;
 general groups always go first.  The order of the auth groups actually
@@ -724,7 +792,7 @@ password-restricted.
 
     auth "example.com" {
         hosts: "*.example.com"
-        auth: "ckpasswd -d <pathdb in inn.conf>/newsusers"
+        auth: "ckpasswd -f <pathdb in inn.conf>/newsusers"
         default: "anonymous"
     }
 
@@ -769,7 +837,7 @@ cannot.
     auth shell {
         hosts: *.shell.example.com
         res: ident
-        auth: "ckpasswd -s"
+        auth: ckpasswd
         default: <FAIL>
         default-domain: shell.example.com
     }
@@ -911,11 +979,9 @@ tunnel), use the localaddress: parameter
 Written by Aidan Cully <aidan@panix.com> for InterNetNews.  Substantially
 expanded by Russ Allbery <eagle@eyrie.org>.
 
-$Id: readers.conf.pod 10283 2018-05-14 12:43:05Z iulius $
-
 =head1 SEE ALSO
 
-auth_krb5(8), ckpasswd(8), inn.conf(5), innd(8), newsfeeds(5),
-nnrpd(8), uwildmat(3).
+auth_krb5(8), ckpasswd(8), inn.conf(5), innd(8), libinn_uwildmat(3),
+newsfeeds(5), nnrpd(8).
 
 =cut
diff -Nurp inn-2.6.4/doc/pod/readme.pod inn-2.6.5/doc/pod/readme.pod
--- inn-2.6.4/doc/pod/readme.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/readme.pod	1970-01-01 01:00:00.000000000 +0100
@@ -1,305 +0,0 @@
-=head1 Welcome to S<INN 2.6>!
-
-This work is sponsored by Internet Systems Consortium.
-
-Please see F<INSTALL> for installation instructions, F<NEWS> for what's
-changed from the previous release, and F<LICENSE> for the copyright,
-license, and distribution terms.
-
-=head1 What is INN?
-
-INN (InterNetNews), originally written by Rich Salz, is an extremely
-flexible and configurable Usenet / Netnews news server.  For a complete
-description of the protocols behind Usenet and Netnews, see S<RFC 3977>
-(NNTP), S<RFC 4642> updated by S<RFC 8143> (TLS/NNTP), S<RFC 4643>
-(NNTP authentication), S<RFC 4644> (streaming NNTP feeds), S<RFC 5536>
-(USEFOR), S<RFC 5537> (USEPRO), S<RFC 6048> (NNTP LIST additions)
-and S<RFC 8054> (NNTP compression) or their replacements.
-
-In brief, Netnews is a set of protocols for exchanging messages between
-a decentralized network of news servers.  News articles are organized
-into newsgroups, which are themselves organized into hierarchies.
-Each individual news server stores locally all articles it has received
-for a given newsgroup, making access to stored articles extremely fast.
-Netnews does not require any central server; instead, each news server
-passes along articles it receives to all of the news servers it peers
-with, those servers pass the articles along to their peers, and so on,
-resulting in "flood fill" propagation of news articles.
-
-A news server performs three basic functions:  it accepts articles from
-other servers and stores them on disk, sends articles it has received out
-to other servers, and offers stored news articles to readers on demand.
-It additionally has to perform some periodic maintenance tasks, such as
-deleting older articles to make room for new ones.
-
-Originally, a news server would just store all of the news articles it had
-received in a file system.  Users could then read news by reading the
-article files on disk (or more commonly using news reading software that
-did this efficiently).  These days, news servers are almost always
-stand-alone systems and news reading is supported via network connections.
-A user who wants to read a newsgroup opens that newsgroup in their
-newsreader software, which opens a network connection to the news server
-and sends requests for articles and related information.  The protocol
-that a newsreader uses to talk to a news server and that a news server
-uses to talk to another news server over TCP/IP is called NNTP (Network
-News Transport Protocol).
-
-INN supports accepting articles via either NNTP connections or via UUCP.
-B<innd>, the heart of INN, handles NNTP feeding connections directly;
-UUCP newsfeeds use B<rnews> (included in INN) to hand articles off to
-innd.  Other parts of INN handle feeding articles out to other news
-servers, most commonly B<innfeed> (for real-time outgoing feeds) or
-B<nntpsend> and B<innxmit> (used to send batches of news created by innd
-to a remote site via TCP/IP).  INN can also handle outgoing UUCP feeds.
-
-The part of INN that handles connections from newsreaders is B<nnrpd>.
-
-Also included in INN are a wide variety of supporting programs to handle
-periodic maintenance and recovery from crashes, process special control
-messages, maintain the list of active newsgroups, and generate and record
-a staggering variety of statistics and summary information on the usage
-and performance of the server.
-
-INN also supports an extremely powerful filtering system that allows the
-server administrator to reject unwanted articles (such as spam and other
-abuses of Usenet).
-
-INN is free software, supported by Internet Systems Consortium and
-volunteers around the world.  See L<"Supporting the INN Effort"> below.
-
-=head1 Prerequisites
-
-Compiling INN requires an S<ANSI C> compiler (gcc is recommended).  INN was
-originally written in S<K&R C>, but supporting pre-ANSI compilers has become
-enough of a headache that a lot of the newer parts of INN will no longer
-compile with a non-ANSI compiler.  gcc itself will compile with most
-vendor non-ANSI compilers, however, so if you're stuck with one,
-installing gcc is highly recommended.  Not only will it let you build INN,
-it will make installing lots of other software much easier.  You may also
-need GNU make (particularly if your system make is BSD-derived), although
-most SysV make programs should work fine.  Compiling INN also currently
-requires a yacc implementation (bison will do fine).
-
-INN uses GNU autoconf to probe the capabilities of your system, and
-therefore should compile on nearly any Unix system.  It does, however,
-make extensive use of mmap(), which can cause problems on some older
-operating systems.  See F<INSTALL> for a list of systems it is known to
-work on.  If you encounter problems compiling or running INN, or if you
-successfully run INN on a platform that isn't listed in F<INSTALL>, please
-let us know (see L<"Reporting Bugs"> below).
-
-S<Perl 5.004_03> or later is required to build INN and use the embedded Perl
-filter support (which is highly recommended; some excellent spam filters
-have been written for INN).  Since all versions of Perl previous to 5.004
-are buggy (including security problems) and have fewer features, installing
-S<Perl 5.004_03> or later (like at least S<Perl 5.8.0>) is recommended.
-
-If you want to enable PGP verification of control messages (highly
-recommended), you will need to have a PGP implementation installed.  See
-F<INSTALL> for more details.
-
-=head1 Getting Started
-
-A news server can be a fairly complicated piece of software to set up just
-because of the wide variety of pieces that have to be configured (who is
-authorized to read from the server, what newsgroups it carries, and how
-the articles are stored on disk at a bare minimum, and if the server isn't
-completely stand-alone S<-- and> very few servers S<are --> both incoming and
-outgoing feeds have to be set up and tested).  Be prepared to take some
-time to understand what's going on and how all the pieces fit together.
-If you have any specific suggestions for documentation, or comments about
-things that are unclear, please send them to the INN maintainers (see
-L<"Reporting Bugs"> below).
-
-See F<INSTALL> for step-by-step instructions for setting up and
-configuring a news server.
-
-INN also comes with a very complete set of man pages; there is a man page
-for every configuration file and program that comes with INN.  (If you
-find one that doesn't have a man page, that's a bug.  Please do report
-it.)  When trying to figure out some specific problem, reading the man
-pages for all of the configuration files involved is a very good start.
-
-=head1 Reporting Bugs
-
-We're interested in all bug reports.  Not just on the programs, but on the
-documentation too.  Please send I<all> such reports to
-
-    inn-workers@lists.isc.org
-
-(patches are certainly welcome, see below).  Even if you post to Usenet,
-please CC the above address.
-
-If you have general "how do I do this" questions or problems configuring
-your server that you don't believe are due to a bug in INN, you should
-post them to news.software.nntp.  A lot of experienced INN users,
-including several of the INN maintainers, read that newsgroup regularly.
-Please don't send general questions to the above addresses; those
-addresses are specifically for INN, and the INN maintainers usually won't
-have time to answer general questions.
-
-=head1 Contributing Code
-
-If you have a patch or a utility that you'd like to be considered for
-inclusion into INN, please mail it to
-
-    inn-workers@lists.isc.org
-
-in the body of the message (not as an attachment because the mailing-list
-might strip it), or put it on a webpage and send a link.  Patches included
-with a bug report as described above should follow the same procedure.
-
-Have fun!
-
-=head1 Mailing Lists
-
-There are various INN-related mailing lists you can join or send messages
-to if you like.  Some of them you must be a member of before you can send
-mail to them (thank the spammers for that policy), and one of them is
-read-only (no postings allowed).
-
-=over 24
-
-=item inn-announce@lists.isc.org
-
-Where announcements about INN are set (only maintainers may post).
-
-=item inn-workers@lists.isc.org
-
-Discussion of INN development.  It is also where to send bug reports
-and patches for consideration for inclusion into INN (postings by
-members only).  If you're an INN expert and have the time to help
-out other users, we encourage you to join this mailing list to answer
-questions.  (You may also want to read the newsgroup news.software.nntp,
-which gets a lot of INN-related questions.)
-
-=item inn-committers@lists.isc.org
-
-Subversion commit messages for INN are sent to this list (only the automated
-messages are sent here, no regular posting).
-
-=item inn-bugs@lists.isc.org
-
-Trac tickets for INN are sent to this list (only the automated messages
-are sent here, no regular posting).  Bug reports should be sent to
-the inn-workers mailing list.
-
-=back
-
-To join these lists, send a subscription request to the C<-request>
-address.  The addresses for the above lists are:
-
-   inn-announce-request@lists.isc.org
-   inn-workers-request@lists.isc.org
-   inn-committers-request@lists.isc.org
-   inn-bugs-request@lists.isc.org
-
-=head1 Who's Responsible / Who to Thank
-
-See F<CONTRIBUTORS> for a long list of past contributors as well as people
-from the inn-workers mailing list who have dedicated a lot of time and
-effort to getting this new version together.  They deserve a big round of
-applause.  They've certainly got our thanks.
-
-This product includes software developed by UUNET Technologies, Inc. and
-by the University of California, Berkeley and its contributors.
-
-Last, but certainly not least, Rich Salz, the original author of INN
-deserves a lion's share of the credit for writing INN in the first place
-and making it the most popular news server software on the planet (no NNTP
-yet to the moon, but we plan to be there first).
-
-=head1 Related Packages
-
-INN users may also be interested in the following software packages that
-work with INN or are based on it.  Please note that none of this software
-is developed or maintained by ISC; we don't support it and generally can't
-answer questions about it.
-
-=over 4
-
-=item Cleanfeed
-
-URL:  L<https://www.mixmin.net/cleanfeed/> (maintained by Steve Crook)
-
-Cleanfeed is an extremely powerful spam filter, probably the most widely
-used spam filter on Usenet currently.  It catches excessive multiposting
-and a host of other things, and is highly configurable.  Note that it
-requires that INN be built with Perl support (the B<--with-perl> option to
-configure).
-
-Cleanfeed was originally developed by Jeremy Nixon who maintained it
-until 1998.  Then Marco d'Itri until 2002.  Steve Crook has been
-maintaining it since 2007.
-
-A Python-based variant of Cleanfeed, named PyClean, also exists and
-can be found at L<https://github.com/crooks/PyClean>.
-
-=item GUP (Group Update Program)
-
-URL:  L<https://tracker.debian.org/pkg/gup>
-
-GUP provides a way for your peers to update their F<newsfeeds> entries as
-they want without having to ask you to edit the configuration file all the
-time.  It's useful when feeding peers take limited and very specific
-feeds that change periodically.
-
-=item innduct
-
-URL:  L<https://www.chiark.greenend.org.uk/ucgi/~ian/git-manpage/innduct.git/innduct.8> (maintained by Ian Jackson)
-
-A possible replacement for B<innfeed>, B<innxmit> and B<nntpsend>
-that quickly and reliably streams Usenet article to a remote site.
-B<innduct> is designed to be robust and not to lose any articles (when
-offered to peers) in case it unexpectedly dies, contrary to B<innfeed>.
-It also permits a realtime feed, contrary to B<innxmit> or B<nntpsend>.
-
-=item NewsPortal
-
-URL:  L<https://amrhein.eu/newsportal/doc/>
-
-A PHP-based web news reader that works as a front-end to a regular news
-server such as INN and lets people read and post without learning a news
-reader.
-
-=item PersonalINN
-
-URL:  L<http://www.ritual.org/summer/pinn/>
-
-PersonalINN is a version of INN modified for personal use and with a
-friendly GUI built on top of it.  It is available for NEXTSTEP or OPENSTEP
-only, unfortunately.
-
-=item suck
-
-URL:  L<https://github.com/lazarus-pkgs/suck>
-
-B<suck> is a separate package for downloading a news feed via a reading
-connection (rather than via a direct NNTP or UUCP feed) and sending
-outgoing local posts via POST.  It's intended primarily for personal or
-small-organization news servers who get their news via an ISP and are too
-small to warrant setting up a regular news feed.
-
-=back
-
-=head1 Supporting the INN Effort
-
-Note that INN is supported by Internet Systems Consortium, and although it
-is free for use and redistribution and incorporation into vendor products
-and export and anything else you can think of, it costs money to produce.
-That money comes from ISPs, hardware and software vendors, companies who
-make extensive use of the software, and generally kind-hearted folk such
-as yourself.
-
-Internet Systems Consortium has also commissioned a DHCP server
-implementation and handles the official support/release of BIND.  You can
-learn more about the ISC's goals and accomplishments from the web page at
-L<https://www.isc.org/>.
-
-                                        Russ Allbery
-                                        Katsuhiro Kondou
-                                        <inn@isc.org>
-
-$Id: readme.pod 10359 2020-03-08 21:47:11Z eagle $
-
-=cut
diff -Nurp inn-2.6.4/doc/pod/rnews.pod inn-2.6.5/doc/pod/rnews.pod
--- inn-2.6.4/doc/pod/rnews.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/rnews.pod	2022-02-18 20:36:57.000000000 +0100
@@ -15,6 +15,10 @@ injecting articles received from other s
 generally use inews(1) instead.  It is also used to process spooled
 messages created by, for example, B<nnrpd> while B<innd> is not available.
 
+If authentication credentials are present for the remote server in
+the F<passwd.nntp> file in I<pathetc>, then B<rnews> will use them to
+authenticate.
+
 The message is read from I<file> if given, spooled files (with the B<-U>
 flag) or standard input if no file is given.  Articles are sent to
 the server given in the B<-r> or B<-S> command line options if given,
@@ -153,10 +157,9 @@ them.  (Neither can the rest of INN at p
 Written by Rich $alz <rsalz@uunet.uu.net> for InterNetNews.  Rewritten in
 POD by Russ Allbery <eagle@eyrie.org>.
 
-$Id: rnews.pod 10382 2020-05-24 10:24:37Z iulius $
-
 =head1 SEE ALSO
 
-bzip2(1), compress(1), gzip(1), inn.conf(5), innd(8), nnrpd(8).
+bzip2(1), compress(1), gzip(1), inn.conf(5), innd(8), nnrpd(8),
+passwd.nntp(5).
 
 =cut
diff -Nurp inn-2.6.4/doc/pod/scanlogs.pod inn-2.6.5/doc/pod/scanlogs.pod
--- inn-2.6.4/doc/pod/scanlogs.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/scanlogs.pod	2022-02-18 20:36:57.000000000 +0100
@@ -57,8 +57,6 @@ See newslog(5) for the list of log files
 Written by Landon Curt Noll <chongo@toad.com> and Rich $alz
 <rsalz@uunet.uu.net> for InterNetNews.  Converted to POD by Julien Elie.
 
-$Id: scanlogs.pod 9903 2015-06-20 17:20:46Z iulius $
-
 =head1 SEE ALSO
 
 inn.conf(5), innreport(8), news.daily(8), newslog(5), shlock(1),
diff -Nurp inn-2.6.4/doc/pod/scanspool.pod inn-2.6.5/doc/pod/scanspool.pod
--- inn-2.6.4/doc/pod/scanspool.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/scanspool.pod	2022-02-18 20:36:57.000000000 +0100
@@ -169,8 +169,6 @@ B<scanspool> was written by Landon Curt
 This manual page was written by Florian Schlichting, largely based on
 comments in the script.
 
-$Id: scanspool.pod 9301 2011-08-04 21:09:11Z iulius $
-
 =head1 SEE ALSO
 
 active(5).
diff -Nurp inn-2.6.4/doc/pod/send-ihave.pod inn-2.6.5/doc/pod/send-ihave.pod
--- inn-2.6.4/doc/pod/send-ihave.pod	1970-01-01 01:00:00.000000000 +0100
+++ inn-2.6.5/doc/pod/send-ihave.pod	2022-02-18 20:36:57.000000000 +0100
@@ -0,0 +1,121 @@
+=head1 NAME
+
+send-ihave - Send ihave control messages to remote sites
+
+=head1 SYNOPSIS
+
+B<send-ihave> [B<-d>] I<sitename>[B<:>I<hostname>]
+[I<sitename>[B<:>I<hostname>] ...]
+
+=head1 DESCRIPTION
+
+Using B<send-ihave> is discouraged; the ihave and sendme control messages
+implement a predecessor of the NNTP protocol, and are now largely obsolete on
+the Internet but still see use in conjunction with some transport protocols
+such as UUCP.
+
+In case you really need using ihave and sendme control messages, and follow
+these instructions to set them up, please inform the INN maintainers of any
+documentation improvements that would have made the installation easier,
+notably missing or unclear steps.
+
+The basic idea behind the ihave and sendme control messages is that you tell
+your UUCP peers what articles you have available via ihave control messages,
+and you respond with a sendme control message for the articles that you want.
+
+B<send-ihave> processes the batch files written by B<innd> to send ihave
+control messages to remote NNTP sites.  The sites to be fed are specified
+by giving C<sitename:hostname> pairs on the command line.  The I<sitename>
+is the label the site has in the F<newsfeeds> file, without its C<.ihave>
+suffix.  The I<hostname> is the real hostname of the remote site, a FQDN
+(Fully Qualified Domain Name).  Normally, the I<sitename> and the I<hostname>
+are the same, and as such don't have to be specified as C<sitename:hostname>
+pairs but just as C<sitename>.
+
+B<send-ihave> encapsulates Message-IDs in an ihave control message and uses
+B<inews> to send the control message to a C<to.hostname> pseudo-newsgroup.
+
+The batch file generated by B<send-ihave> for a given site is named
+F<sitename.ihave> in the I<pathoutgoing> directory.  To prevent batch file
+corruption, shlock(1) is used ensure these files are not processed by two
+running instances in parallel.
+
+For instance, to generate ihave control messages for F<news.server.com>
+when receiving articles in the comp.* hierarchy, just add the following
+line in your F<newsfeeds> file (and reload it):
+
+    news.server.com.ihave:comp.*:Tf,Wm:
+
+(Note that if you send C<*> to C<news.server.com>, you should add C<@to,@to.*>
+to the end of the newsgroup pattern so that the ihave control message
+generated by B<send-ihave> isn't, itself, included in the list of articles
+in an ihave control message.  You may also want to add that pattern to
+the end of any entry processing control articles, like B<controlchan>,
+or being fed a C<*> pattern.)
+
+Then, periodically run out of cron(1) the following command:
+
+    send-ihave news.server.com
+
+B<send-ihave> will then post to the C<to.news.server.com> pseudo-newsgroup
+an ihave control article containing a list of Message-IDs.  Several control
+articles may be posted, each one containing up to 1000 Message-IDs.
+
+Make sure the C<to.news.server.com> pseudo-newsgroup exists on your server (or
+the C<to> pseudo-newsgroup if I<mergetogroups> is set to true in F<inn.conf>),
+and that ihave control articles are not filtered (the default Cleanfeed
+configuration rejects them).  These control articles will be filed in the
+C<control> pseudo-newsgroup (or C<control.ihave> if it exists), or C<to>
+if I<mergetogroups> is set to true.
+
+You now have to propagate them with any method you want to the remote server.
+You probably already had one set up, in which case you only have to add
+the C<to.news.server.com> newsgroup in the list of groups to feed it.
+(See how send-uucp(8) works to set up a UUCP feed.)
+
+Besides sending ihave control messages, your news server needs processing the
+sendme control messages it receives from remote peers.  You have to add a
+C<sendme> entry in F<control.ctl.local> with a B<doit> action to allow the
+processing of these messages matching a given From address.  B<controlchan>
+will then generate a batch file named F<pathname.work> in I<pathoutgoing>,
+containing a list of storage tokens (I<pathname> is taken from the Path header
+field body or the IP address of the remote peer, depending on the value
+of I<logipaddr> in F<inn.conf>).  Finally, you'll have to set up batcher(8)
+or send-uucp(8) to send the news batches to your remote peers.
+
+Similarly, your news server needs processing the ihave control messages it
+receives from remote peers.  This step is the easiest to do.  Just add an
+C<ihave> entry in F<control.ctl.local> like the one you added for C<sendme>.
+B<controlchan> will process these ihave control messages, and generate a
+sendme control article for each article present in the ihave control message
+but not in your local news server.  These sendme control articles are posted
+to the C<to.pathname> pseudo-newsgroup, and will be propagated as described
+before.  (Note that there may be two different C<to> groups to create because
+the I<sitename> used in F<newsfeeds> may not be the same as I<pathname>.)
+
+Beware that the ihave and sendme control messages are not signed.  You should
+enforce restrictions on who can send articles to C<to.*> groups, either
+via F<readers.conf> or special rules in filter hooks, and on the C<ihave>
+and C<sendme> lines in F<control.ctl.local>.
+
+=head1 OPTIONS
+
+=over 4
+
+=item B<-d>
+
+The B<-d> flag causes B<send-ihave> to send output to stdout rather than
+the F<send-ihave.log> log file in I<pathlog>.
+
+=back
+
+=head1 HISTORY
+
+Rewritten into POD by Julien Elie.
+
+=head1 SEE ALSO
+
+batcher(8), controlchan(8), control.ctl(5), inews(1), newsfeeds(5),
+send-uucp(8).
+
+=cut
diff -Nurp inn-2.6.4/doc/pod/send-nntp.pod inn-2.6.5/doc/pod/send-nntp.pod
--- inn-2.6.4/doc/pod/send-nntp.pod	1970-01-01 01:00:00.000000000 +0100
+++ inn-2.6.5/doc/pod/send-nntp.pod	2022-02-18 20:36:57.000000000 +0100
@@ -0,0 +1,55 @@
+=head1 NAME
+
+send-nntp - Send Usenet articles to remote sites
+
+=head1 SYNOPSIS
+
+B<send-nntp> [B<-d>] I<sitename>[B<:>[I<port>B<@>]I<hostname>]
+[I<sitename>[B<:>[I<port>B<@>]I<hostname>] ...]
+
+=head1 DESCRIPTION
+
+B<send-nntp> processes the batch files written by B<innd> to send Usenet
+articles to remote NNTP sites.  The sites to be fed are specified by
+giving C<sitename:hostname> pairs on the command line.  The I<sitename>
+is the label the site has in the F<newsfeeds> file, the I<hostname> is
+the real hostname of the remote site, a FQDN (Fully Qualified Domain Name).
+Normally, the I<sitename> and the I<hostname> are the same, and as such don't
+have to be specified as C<sitename:hostname> pairs but just as C<sitename>.
+
+B<send-nntp> starts B<innxmit> to send the articles to remote sites.
+By default, NNTP port C<119> is used to connect to remote sites.  In case
+another port should be used, it has to be prepended to I<hostname> in a
+syntax like C<sitename:port@hostname>.
+
+The batch files generated by B<send-nntp> for a given site is named
+F<sitename> in the I<pathoutgoing> directory.  To prevent batch file
+corruption, shlock(1) is used ensure these files are not processed by two
+running instances in parallel.
+
+=head1 OPTIONS
+
+=over 4
+
+=item B<-d>
+
+The B<-d> flag causes B<send-nntp> to send output to stdout rather than
+the F<send-nntp.log> log files in I<pathlog>.
+
+=back
+
+=head1 NOTES
+
+You should probably not use B<send-nntp>, but B<innfeed>, or if that is not
+possible, B<nntpsend>.  The usual flags for a batch file for B<send-nntp>
+are C<Tf,Wfm> in F<newsfeeds>.
+
+=head1 HISTORY
+
+Rewritten into POD by Julien Elie.
+
+=head1 SEE ALSO
+
+innxmit(8), newsfeeds(5), nntpsend(8).
+
+=cut
diff -Nurp inn-2.6.4/doc/pod/sendinpaths.pod inn-2.6.5/doc/pod/sendinpaths.pod
--- inn-2.6.4/doc/pod/sendinpaths.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/sendinpaths.pod	2022-02-18 20:36:57.000000000 +0100
@@ -79,8 +79,6 @@ for two addresses:
 
 B<sendinpaths> was written by Olaf Titz <olaf@bigred.inka.de>.
 
-$Id: sendinpaths.pod 10283 2018-05-14 12:43:05Z iulius $
-
 =head1 SEE ALSO
 
 ninpaths(8).
diff -Nurp inn-2.6.4/doc/pod/shlock.pod inn-2.6.5/doc/pod/shlock.pod
--- inn-2.6.4/doc/pod/shlock.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/shlock.pod	2022-02-18 20:36:57.000000000 +0100
@@ -73,8 +73,6 @@ a description of HDB UUCP locking given
 improved by Berend Reitsma to solve a race condition.
 Converted to POD by Julien Elie.
 
-$Id: shlock.pod 9303 2011-08-04 22:09:57Z iulius $
-
 =head1 SEE ALSO
 
 INN::Utils::Shlock(3pm).
diff -Nurp inn-2.6.4/doc/pod/shrinkfile.pod inn-2.6.5/doc/pod/shrinkfile.pod
--- inn-2.6.4/doc/pod/shrinkfile.pod	1970-01-01 01:00:00.000000000 +0100
+++ inn-2.6.5/doc/pod/shrinkfile.pod	2022-02-18 20:36:57.000000000 +0100
@@ -0,0 +1,98 @@
+=head1 NAME
+
+shrinkfile - Shrink files on line boundaries
+
+=head1 SYNOPSIS
+
+B<shrinkfile> [B<-nv>] [B<-m> I<maxsize>] [B<-s> I<size>] I<file> [I<file>
+...]
+
+=head1 DESCRIPTION
+
+The B<shrinkfile> program shrinks files to at most a given I<size> when their
+size is larger than I<maxsize>, preserving the data at the end of the file.
+Truncation is performed on line boundaries, where a line is a series of
+bytes ending with a newline (C<\n>).  There is no line length restriction
+and files may contain any binary data.
+
+If the first line is longer than the absolute value of I<size>, the file
+will be truncated to zero length.
+
+The maximum file size B<shrinkfile> can handle is 2,147,483,647 bytes.
+
+Temporary files are created in the I<pathtmp> directory as set in F<inn.conf>.
+The C<TMPDIR> environment variable may be used to specify a different
+directory.
+
+A newline will be added to any non-empty file that does not end with a
+newline, if naturally the resulting file size does not exceed I<size>
+by this addition.
+
+This program is currently used by only nntpsend(8).
+
+=head1 OPTIONS
+
+=over 4
+
+=item B<-m> I<maxsize>
+
+This option sets the maximum size allowed before truncation occurs.
+
+By default, I<maxsize> is the same as I<size> (as set with the B<-s> flag).
+If I<maxsize> is less than I<size>, I<maxsize> is reset to I<size>.
+
+This parameter may end with a C<k>, C<m> or C<g>, indicating kilobyte (1,024
+bytes), megabyte (1,048,576 bytes) or gigabyte (1,073,741,824 bytes) lengths.
+Uppercase letters are also allowed.
+
+=item B<-n>
+
+This flag is used to determine if any file is too large.  No files will be
+altered in this mode.
+
+Exits with status code C<0> if any file is larger than I<maxsize> (as set
+with the B<-m> flag), and exits with status code C<1> otherwise.
+
+=item B<-s> I<size>
+
+By default, I<size> is assumed to be zero and files are truncated to zero
+bytes.  This flag may be used to change the truncation size.  Because the
+program truncates only on line boundaries, the final size may be smaller
+than the specified truncation size.
+
+This parameter may end with a C<k>, C<m> or C<g>, indicating kilobyte (1,024
+bytes), megabyte (1,048,576 bytes) or gigabyte (1,073,741,824 bytes) lengths.
+Uppercase letters are also allowed.
+
+=item B<-v>
+
+Prints to standard output a status line if a file was shrunk.
+
+=back
+
+=head1 EXAMPLES
+
+Example usage:
+
+    shrinkfile -s 4m curds
+    shrinkfile -s 1g -v whey
+    shrinkfile -s 500k -m 4m -v curds whey
+    if shrinkfile -n -s 100m whey; then echo "whey is way too big"; fi
+
+The first command shrinks F<curds> to S<4 MB> if bigger than this size.
+The second command shrinks F<whey> to S<1 GB> and outputs a log line if the
+file is bigger than this size.  The third command shrinks both F<curds> and
+F<whey> to S<500 kB> if bigger than S<4 MB>, and outputs a log line for the
+files it has shrunk.  The fourth command just prints a sentence if C<whey>
+is bigger than S<100 MB>, without shrinking it.
+
+=head1 HISTORY
+
+Written by Landon Curt Noll <chongo@toad.com> and Rich $alz
+<rsalz@uunet.uu.net> for InterNetNews.  Rewritten into POD by Julien Elie.
+
+=head1 SEE ALSO
+
+nntpsend(8).
+
+=cut
diff -Nurp inn-2.6.4/doc/pod/simpleftp.pod inn-2.6.5/doc/pod/simpleftp.pod
--- inn-2.6.4/doc/pod/simpleftp.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/simpleftp.pod	2022-02-18 20:36:57.000000000 +0100
@@ -37,8 +37,6 @@ with the same name in the local director
 Tossed off by David C Lawrence <tale@isc.org> for InterNetNews.
 Rewritten to use C<Net::FTP> by Julien Elie.
 
-$Id: simpleftp.pod 10097 2016-11-04 22:19:07Z iulius $
-
 =head1 SEE ALSO
 
 actsync(8).
diff -Nurp inn-2.6.4/doc/pod/sm.pod inn-2.6.5/doc/pod/sm.pod
--- inn-2.6.4/doc/pod/sm.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/sm.pod	2022-02-18 20:36:57.000000000 +0100
@@ -112,8 +112,6 @@ succeeded, you should run B<sm> on one t
 Written by Katsuhiro Kondou <kondou@nec.co.jp> for InterNetNews.
 Rewritten in POD by Russ Allbery <eagle@eyrie.org>.
 
-$Id: sm.pod 10405 2020-11-21 07:02:43Z iulius $
-
 =head1 SEE ALSO
 
 ctlinnd(8), grephistory(1), history(5), rnews(1), storage.conf(5).
diff -Nurp inn-2.6.4/doc/pod/storage.conf.pod inn-2.6.5/doc/pod/storage.conf.pod
--- inn-2.6.4/doc/pod/storage.conf.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/storage.conf.pod	2022-02-18 20:36:57.000000000 +0100
@@ -71,15 +71,17 @@ for instance numbered sequentially in F<
 
 =item I<newsgroups>: <wildmat>
 
-What newsgroups are stored using this storage method.  <wildmat> is a uwildmat(3)
-pattern which is matched against the newsgroups an article is posted to.
-If I<storeonxref> in F<inn.conf> is true, this pattern will be matched against
-the newsgroup names in the Xref: header; otherwise, it will be matched against
-the newsgroup names in the Newsgroups: header (see inn.conf(5) for discussion
-of the differences between these possibilities).  Poison wildmat expressions
-(expressions starting with C<@>) are allowed and can be used to exclude certain
-group patterns:  articles crossposted to poisoned newsgroups will not be stored
-using this storage method.  The <wildmat> pattern is matched in order.
+What newsgroups are stored using this storage method.  <wildmat> is a
+I<uwildmat> pattern which is matched against the newsgroups an article
+is posted to.  If I<storeonxref> in F<inn.conf> is true, this pattern
+will be matched against the newsgroup names in the Xref header field
+body; otherwise, it will be matched against the newsgroup names in the
+Newsgroups header field body (see inn.conf(5) for discussion of the
+differences between these possibilities).  Poison wildmat expressions
+(expressions starting with C<@>) are allowed and can be used to exclude
+certain group patterns: articles crossposted to poisoned newsgroups
+will not be stored using this storage method.  The <wildmat> pattern
+is matched in order.
 
 There is no default newsgroups pattern; if an entry should match all
 newsgroups, use an explicit C<newsgroups: *>.
@@ -349,11 +351,9 @@ should never expire or through the spool
 Written by Katsuhiro Kondou <kondou@nec.co.jp> for InterNetNews.  Rewritten
 into POD by Julien Elie.
 
-$Id: storage.conf.pod 10230 2018-01-28 21:22:21Z iulius $
-
 =head1 SEE ALSO
 
 cycbuff.conf(5), expire.ctl(5), expireover(8), inn.conf(5), innd(8),
-uwildmat(3).
+libinn_uwildmat(3).
 
 =cut
diff -Nurp inn-2.6.4/doc/pod/subscriptions.pod inn-2.6.5/doc/pod/subscriptions.pod
--- inn-2.6.4/doc/pod/subscriptions.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/subscriptions.pod	2022-02-18 20:36:57.000000000 +0100
@@ -46,8 +46,6 @@ users group, one might want to list it f
 
 Written by Bettina Fink <laura@hydrophil.de> for InterNetNews.
 
-$Id: subscriptions.pod 9137 2010-10-29 18:09:12Z iulius $
-
 =head1 SEE ALSO
 
 nnrpd(8).
diff -Nurp inn-2.6.4/doc/pod/tally.control.pod inn-2.6.5/doc/pod/tally.control.pod
--- inn-2.6.4/doc/pod/tally.control.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/tally.control.pod	2022-02-18 20:36:57.000000000 +0100
@@ -48,8 +48,6 @@ Written by Landon Curt Noll <chongo@toad
 <rsalz@uunet.uu.net> for InterNetNews.  Rewritten and converted
 to POD by Julien Elie.
 
-$Id: tally.control.pod 8357 2009-02-27 17:56:00Z iulius $
-
 =head1 SEE ALSO
 
 control.ctl(5), news.daily(8), newslog(5), scanlogs(8).
diff -Nurp inn-2.6.4/doc/pod/tdx-util.pod inn-2.6.5/doc/pod/tdx-util.pod
--- inn-2.6.4/doc/pod/tdx-util.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/tdx-util.pod	2022-02-18 20:36:57.000000000 +0100
@@ -229,8 +229,6 @@ using the tradspool article storage meth
 
 Written by Russ Allbery <eagle@eyrie.org> for InterNetNews.
 
-$Id: tdx-util.pod 9767 2014-12-07 21:13:43Z iulius $
-
 =head1 SEE ALSO
 
 makehistory(8), nnrpd(8).
diff -Nurp inn-2.6.4/doc/pod/tinyleaf.pod inn-2.6.5/doc/pod/tinyleaf.pod
--- inn-2.6.4/doc/pod/tinyleaf.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/tinyleaf.pod	2022-02-18 20:36:57.000000000 +0100
@@ -91,8 +91,6 @@ them to the processor when starting up w
 
 Written by Russ Allbery <eagle@eyrie.org> for InterNetNews.
 
-$Id: tinyleaf.pod 9767 2014-12-07 21:13:43Z iulius $
-
 =head1 SEE ALSO
 
 hosts_access(5), inetd(8), tcpd(8).
diff -Nurp inn-2.6.4/doc/pod/tst.pod inn-2.6.5/doc/pod/tst.pod
--- inn-2.6.4/doc/pod/tst.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/tst.pod	1970-01-01 01:00:00.000000000 +0100
@@ -1,78 +0,0 @@
-=head1 NAME
-
-tst - ternary search trie functions
-
-=head1 SYNOPSIS
-
-    #include <inn/tst.h>
-
-    struct tst;
-
-    struct tst *tst_init(int node_line_width);
-
-    void tst_cleanup(struct tst *tst);
-
-    int tst_insert(struct tst *tst, const unsigned char *key, void *data, int option, void **exist_ptr);
-
-    void *tst_search(struct tst *tst, const unsigned char *key);
-
-    void *tst_delete(struct tst *tst, const unsigned char *key);
-
-=head1 DESCRIPTION
-
-B<tst_init> allocates memory for members of I<struct tst>, and
-allocates the first I<node_line_width> nodes. A NULL pointer is
-returned by B<tst_init> if any part of the memory allocation fails. On
-success, a pointer to a I<struct tst> is returned.
-
-The value for I<node_line_width> must be chosen very carefully. One
-node is required for every character in the tree. If you choose a
-value that is too small, your application will spend too much time
-calling malloc(3) and your node space will be too spread out. Too large
-a value is just a waste of space.
-
-B<tst_cleanup> frees all memory allocated to nodes, internal structures,
-as well as I<tst> itself.
-
-B<tst_insert> inserts the string I<key> into the tree. Behavior when a
-duplicate key is inserted is controlled by I<option>. If I<key> is
-already in the tree then B<TST_DUPLICATE_KEY> is returned, and the
-data pointer for the existing key is placed in I<exist_ptr>.  If
-I<option> is set to B<TST_REPLACE> then the existing data pointer for
-the existing key is replaced by I<data>.  Note that the old data
-pointer will still be placed in I<exist_ptr>.
-
-If a duplicate key is encountered and I<option> is not set to
-B<TST_REPLACE> then B<TST_DUPLICATE_KEY> is returned. If I<key> is
-zero length then B<TST_NULL_KEY> is returned. A successful insert or
-replace returns B<TST_OK>. A return value of B<TST_ERROR> indicates
-that a memory allocation error occurred while trying to grow the node
-free.
-
-Note that the I<data> argument must never be B<NULL>. If it is, then
-calls to B<tst_search> will fail for a key that exists because the
-data value was set to B<NULL>, which is what B<tst_search> returns. If
-you just want a simple existence tree, use the B<tst> pointer as the
-data pointer.
-
-B<tst_search> finds the string I<key> in the tree if it exists and
-returns the data pointer associated with that key.
-
-If I<key> is not found then B<NULL> is returned, otherwise the data pointer
-associated with I<key> is returned.
-
-B<tst_delete> deletes the string I<key> from the tree if it exists and
-returns the data pointer assocaited with that key.
-
-If I<key> is not found then B<NULL> is returned, otherwise the data
-pointer associated with I<key> is returned.
-
-=head1 HISTORY
-
-Converted to POD from Peter S<A. Friend>'s ternary search trie
-documentation by Alex Kiernan <alex.kiernan@thus.net> for
-S<InterNetNews 2.4.0>.
-
-$Id: tst.pod 9073 2010-05-31 19:00:23Z iulius $
-
-=cut
diff -Nurp inn-2.6.4/doc/pod/uwildmat.pod inn-2.6.5/doc/pod/uwildmat.pod
--- inn-2.6.4/doc/pod/uwildmat.pod	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/doc/pod/uwildmat.pod	1970-01-01 01:00:00.000000000 +0100
@@ -1,179 +0,0 @@
-=head1 NAME
-
-uwildmat, uwildmat_simple, uwildmat_poison - Perform wildmat matching
-
-=head1 SYNOPSIS
-
-    #include <inn/libinn.h>
-
-    bool uwildmat(const char *text, const char *pattern);
-
-    bool uwildmat_simple(const char *text, const char *pattern);
-
-    enum uwildmat uwildmat_poison(const char *text, const char *pattern);
-
-=head1 DESCRIPTION
-
-B<uwildmat> compares I<text> against the wildmat expression I<pattern>,
-returning true if and only if the expression matches the text.  C<@> has
-no special meaning in I<pattern> when passed to B<uwildmat>.  Both I<text>
-and I<pattern> are assumed to be in the UTF-8 character encoding, although
-malformed UTF-8 sequences are treated in a way that attempts to be mostly
-compatible with single-octet character sets like ISO 8859-1.  (In other
-words, if you try to match ISO 8859-1 text with these routines everything
-should work as expected unless the ISO 8859-1 text contains valid UTF-8
-sequences, which thankfully is somewhat rare.)
-
-B<uwildmat_simple> is identical to B<uwildmat> except that neither C<!>
-nor C<,> have any special meaning and I<pattern> is always treated as a
-single pattern.  This function exists solely to support legacy interfaces
-like NNTP's XPAT command, and should be avoided when implementing new
-features.
-
-B<uwildmat_poison> works similarly to B<uwildmat>, except that C<@> as the
-first character of one of the patterns in the expression (see below)
-"poisons" the match if it matches.  B<uwildmat_poison> returns
-B<UWILDMAT_MATCH> if the expression matches the text, B<UWILDMAT_FAIL> if
-it doesn't, and B<UWILDMAT_POISON> if the expression doesn't match because
-a poisoned pattern matched the text.  These enumeration constants are
-defined in the B<inn/libinn.h> header.
-
-=head1 WILDMAT EXPRESSIONS
-
-A wildmat expression follows rules similar to those of shell filename
-wildcards but with some additions and changes.  A wildmat I<expression> is
-composed of one or more wildmat I<patterns> separated by commas.  Each
-character in the wildmat pattern matches a literal occurrence of that same
-character in the text, with the exception of the following metacharacters:
-
-=over 8
-
-=item ?
-
-Matches any single character (including a single UTF-8 multibyte
-character, so C<?> can match more than one byte).
-
-=item *Z<>
-
-Matches any sequence of zero or more characters.
-
-=item \
-
-Turns off any special meaning of the following character; the following
-character will match itself in the text.  C<\> will escape any character,
-including another backslash or a comma that otherwise would separate a
-pattern from the next pattern in an expression.  Note that C<\> is not
-special inside a character range (no metacharacters are).
-
-=item [...]
-
-A character set, which matches any single character that falls within that
-set.  The presence of a character between the brackets adds that character
-to the set; for example, C<[amv]> specifies the set containing the
-characters C<a>, C<m>, and C<v>.  A range of characters may be specified
-using C<->; for example, C<[0-5abc]> is equivalent to C<[012345abc]>.  The
-order of characters is as defined in the UTF-8 character set, and if the
-start character of such a range falls after the ending character of the
-range in that ranking the results of attempting a match with that pattern
-are undefined.
-
-In order to include a literal C<]> character in the set, it must be the
-first character of the set (possibly following C<^>); for example, C<[]a]>
-matches either C<]> or C<a>.  To include a literal C<-> character in the
-set, it must be either the first or the last character of the set.
-Backslashes have no special meaning inside a character set, nor do any
-other of the wildmat metacharacters.
-
-=item [^...]
-
-A negated character set.  Follows the same rules as a character set above,
-but matches any character B<not> contained in the set.  So, for example,
-C<[^]-]> matches any character except C<]> and C<->.
-
-=back
-
-In addition, C<!> (and possibly C<@>) have special meaning as the first
-character of a pattern; see below.
-
-When matching a wildmat expression against some text, each comma-separated
-pattern is matched in order from left to right.  In order to match, the
-pattern must match the whole text; in regular expression terminology, it's
-implicitly anchored at both the beginning and the end.  For example, the
-pattern C<a> matches only the text C<a>; it doesn't match C<ab> or C<ba>
-or even C<aa>.  If none of the patterns match, the whole expression
-doesn't match.  Otherwise, whether the expression matches is determined
-entirely by the rightmost matching pattern; the expression matches the
-text if and only if the rightmost matching pattern is not negated.
-
-For example, consider the text C<news.misc>.  The expression C<*> matches
-this text, of course, as does C<comp.*,news.*> (because the second pattern
-matches).  C<news.*,!news.misc> does not match this text because both
-patterns match, meaning that the rightmost takes precedence, and the
-rightmost matching pattern is negated.  C<news.*,!news.misc,*.misc> does
-match this text, since the rightmost matching pattern is not negated.
-
-Note that the expression C<!news.misc> can't match anything.  Either the
-pattern doesn't match, in which case no patterns match and the expression
-doesn't match, or the pattern does match, in which case because it's
-negated the expression doesn't match.  C<*,!news.misc>, on the other hand,
-is a useful pattern that matches anything except C<news.misc>.
-
-C<!> has significance only as the first character of a pattern; anywhere
-else in the pattern, it matches a literal C<!> in the text like any other
-non-metacharacter.
-
-If the B<uwildmat_poison> interface is used, then C<@> behaves the same as
-C<!> except that if an expression fails to match because the rightmost
-matching pattern began with C<@>, B<UWILDMAT_POISON> is returned instead of
-B<UWILDMAT_FAIL>.
-
-If the B<uwildmat_simple> interface is used, the matching rules are the
-same as above except that none of C<!>, C<@>, or C<,> have any special
-meaning at all and only match those literal characters.
-
-=head1 BUGS
-
-All of these functions internally convert the passed arguments to const
-unsigned char pointers.  The only reason why they take regular char
-pointers instead of unsigned char is for the convenience of INN and other
-callers that may not be using unsigned char everywhere they should.  In a
-future revision, the public interface should be changed to just take
-unsigned char pointers.
-
-=head1 HISTORY
-
-Written by Rich $alz <rsalz@uunet.uu.net> in 1986, and posted to Usenet
-several times since then, most notably in comp.sources.misc in
-March, 1991.
-
-Lars Mathiesen <thorinn@diku.dk> enhanced the multi-asterisk failure
-mode in early 1991.
-
-Rich and Lars increased the efficiency of star patterns and reposted it to
-comp.sources.misc in April, 1991.
-
-Robert Elz <kre@munnari.oz.au> added minus sign and close bracket handling
-in June, 1991.
-
-Russ Allbery <eagle@eyrie.org> added support for comma-separated patterns
-and the C<!> and C<@> metacharacters to the core wildmat routines in July,
-2000.  He also added support for UTF-8 characters, changed the default
-behavior to assume that both the text and the pattern are in UTF-8, and
-largely rewrote this documentation to expand and clarify the description
-of how a wildmat expression matches.
-
-Please note that the interfaces to these functions are named B<uwildmat>
-and the like rather than B<wildmat> to distinguish them from the
-B<wildmat> function provided by Rich $alz's original implementation.
-While this code is heavily based on Rich's original code, it has
-substantial differences, including the extension to support UTF-8
-characters, and has noticeable functionality changes.  Any bugs present in
-it aren't Rich's fault.
-
-$Id: uwildmat.pod 10283 2018-05-14 12:43:05Z iulius $
-
-=head1 SEE ALSO
-
-grep(1), fnmatch(3), regex(3), regexp(3).
-
-=cut
diff -Nurp inn-2.6.4/doc/pod/writelog.pod inn-2.6.5/doc/pod/writelog.pod
--- inn-2.6.4/doc/pod/writelog.pod	1970-01-01 01:00:00.000000000 +0100
+++ inn-2.6.5/doc/pod/writelog.pod	2022-02-18 20:36:57.000000000 +0100
@@ -0,0 +1,36 @@
+=head1 NAME
+
+writelog - Write or mail a log entry
+
+=head1 SYNOPSIS
+
+B<writelog> I<name> I<text>
+
+=head1 DESCRIPTION
+
+The B<writelog> script is used to write a log entry or send it as mail.
+
+The I<name> parameter specifies the name of the log file where the
+entry should be written.  If it is the word C<mail>, then the entry is
+sent as the subject of a mail to the newsmaster address specified with
+B<--with-news-master> at configure time (the default address is C<usenet>).
+
+If I<name> is C</dev/null>, the script does nothing and exits.
+
+The data that is written to a log file consists of the I<text> given on the
+command line, followed by standard input indented by four spaces.  When sent
+by mail, the subject is I<text> and the body is standard input without
+indentation.
+
+shlock(1) is used to avoid simultaneous updates to a single log file.
+
+=head1 HISTORY
+
+Written by Landon Curt Noll <chongo@toad.com> and Rich $alz
+<rsalz@uunet.uu.net> for InterNetNews.  Rewritten into POD by Julien Elie.
+
+=head1 SEE ALSO
+
+innd(8), innstat(8), news.daily(8), newslog(5), nnrpd(8), scanlogs(8).
+
+=cut
diff -Nurp inn-2.6.4/expire/Makefile inn-2.6.5/expire/Makefile
--- inn-2.6.4/expire/Makefile	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/expire/Makefile	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: Makefile 10100 2016-11-04 22:24:26Z iulius $
-
 include ../Makefile.global
 
 top           = ..
diff -Nurp inn-2.6.4/expire/convdate.c inn-2.6.5/expire/convdate.c
--- inn-2.6.4/expire/convdate.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/expire/convdate.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: convdate.c 9019 2010-03-19 21:27:15Z iulius $
-**
+/*
 **  Convert date strings and numbers to numbers and strings.
 */
 
diff -Nurp inn-2.6.4/expire/expire.c inn-2.6.5/expire/expire.c
--- inn-2.6.4/expire/expire.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/expire/expire.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: expire.c 10153 2017-06-05 12:28:01Z iulius $
-**
+/*
 **  Expire news articles.
 */
 
diff -Nurp inn-2.6.4/expire/expireover.c inn-2.6.5/expire/expireover.c
--- inn-2.6.4/expire/expireover.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/expire/expireover.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: expireover.c 10009 2016-05-05 12:39:19Z iulius $
-**
+/*
 **  Expire the overview database.
 **
 **  This program handles the nightly expiration of overview information.  If
diff -Nurp inn-2.6.4/expire/expirerm.in inn-2.6.5/expire/expirerm.in
--- inn-2.6.4/expire/expirerm.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/expire/expirerm.in	2022-02-18 20:36:57.000000000 +0100
@@ -1,8 +1,6 @@
 #! /bin/sh
 # fixscript will replace this line with code to load innshellvars
 
-##  $Id: expirerm.in 8572 2009-08-18 13:47:40Z iulius $
-##
 ##  Remove articles listed by expire -z.
 ##  Remove all files specified in the input file.
 
diff -Nurp inn-2.6.4/expire/fastrm.c inn-2.6.5/expire/fastrm.c
--- inn-2.6.4/expire/fastrm.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/expire/fastrm.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: fastrm.c 10283 2018-05-14 12:43:05Z iulius $
-**
+/*
 **  Delete a list of filenames or tokens from stdin.
 **
 **  Originally written by <kre@munnari.oz.au> (to only handle files).
diff -Nurp inn-2.6.4/expire/grephistory.c inn-2.6.5/expire/grephistory.c
--- inn-2.6.4/expire/grephistory.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/expire/grephistory.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: grephistory.c 10153 2017-06-05 12:28:01Z iulius $
-**
+/*
 **  Get data from history database.
 */
 
diff -Nurp inn-2.6.4/expire/makedbz.c inn-2.6.5/expire/makedbz.c
--- inn-2.6.4/expire/makedbz.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/expire/makedbz.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: makedbz.c 10153 2017-06-05 12:28:01Z iulius $
-**
+/*
 **  Rebuild dbz file for history db.
 */
 
diff -Nurp inn-2.6.4/expire/makehistory.c inn-2.6.5/expire/makehistory.c
--- inn-2.6.4/expire/makehistory.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/expire/makehistory.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: makehistory.c 10513 2021-01-15 22:34:56Z iulius $
-**
+/*
 **  Rebuild history/overview databases.
 */
 
@@ -214,7 +213,10 @@ FlushOverTmpFile(void)
     if (fd < 0) {
         syswarn("cannot create temporary file");
         OVclose();
-        Fork ? _exit(1) : exit(1);
+        if (Fork)
+            _exit(1);
+        else
+            exit(1);
     }
     close(fd);
     snprintf(temp, sizeof(temp), "exec %s -T %s -t'%c' -o %s %s",
@@ -224,8 +226,11 @@ FlushOverTmpFile(void)
     if (i != 0) {
         syswarn("cannot sort temporary overview file (%s exited %d)",
                 INN_PATH_SORT, i);
-	OVclose();
-	Fork ? _exit(1) : exit(1);
+        OVclose();
+        if (Fork)
+            _exit(1);
+        else
+            exit(1);
     }
 
     /* don't need old path anymore. */
@@ -236,8 +241,11 @@ FlushOverTmpFile(void)
     /* read sorted lines. */
     if ((qp = QIOopen(SortedTmpPath)) == NULL) {
         syswarn("cannot open sorted overview file %s", SortedTmpPath);
-	OVclose();
-	Fork ? _exit(1) : exit(1);
+        OVclose();
+        if (Fork)
+            _exit(1);
+        else
+            exit(1);
     }
 
     for (count = 1; ; ++count) {
@@ -281,17 +289,23 @@ FlushOverTmpFile(void)
 	if (OVadd(token, r, strlen(r), arrived, expires) == OVADDFAILED) {
 	    if (OVctl(OVSPACE, (void *)&f) && (int)(f+0.01f) == OV_NOSPACE) {
                 warn("no space left for overview");
-		OVclose();
-		Fork ? _exit(1) : exit(1);
-	    }
+                OVclose();
+                if (Fork)
+                    _exit(1);
+                else
+                    exit(1);
+            }
             warn("cannot write overview data \"%.40s\"", q);
 	}
     }
     /* Check for errors and close. */
     if (QIOerror(qp)) {
         syswarn("cannot read sorted overview file %s", SortedTmpPath);
-	OVclose();
-	Fork ? _exit(1) : exit(1);
+        OVclose();
+        if (Fork)
+            _exit(1);
+        else
+            exit(1);
     }
     QIOclose(qp);
     /* unlink sorted tmp file */
diff -Nurp inn-2.6.4/expire/prunehistory.c inn-2.6.5/expire/prunehistory.c
--- inn-2.6.4/expire/prunehistory.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/expire/prunehistory.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: prunehistory.c 10153 2017-06-05 12:28:01Z iulius $
-**
+/*
 **  Prune file names from history file.
 */
 
diff -Nurp inn-2.6.4/frontends/Makefile inn-2.6.5/frontends/Makefile
--- inn-2.6.4/frontends/Makefile	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/frontends/Makefile	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: Makefile 10428 2020-11-24 07:20:05Z iulius $
-
 include ../Makefile.global
 
 top           = ..
diff -Nurp inn-2.6.4/frontends/cnfsheadconf.in inn-2.6.5/frontends/cnfsheadconf.in
--- inn-2.6.4/frontends/cnfsheadconf.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/frontends/cnfsheadconf.in	2022-02-18 20:36:57.000000000 +0100
@@ -1,8 +1,6 @@
 #! /usr/bin/perl -w
 # fixscript will replace this line with code to load INN::Config
 
-#  $Id: cnfsheadconf.in 9216 2011-07-05 18:30:57Z iulius $
-#
 #  Copyright Andreas Lamrecht 1998
 #  <Andreas.Lamprect@siemens.at>
 #
diff -Nurp inn-2.6.4/frontends/cnfsstat.in inn-2.6.5/frontends/cnfsstat.in
--- inn-2.6.4/frontends/cnfsstat.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/frontends/cnfsstat.in	2022-02-18 20:36:57.000000000 +0100
@@ -1,8 +1,6 @@
 #! /usr/bin/perl -w
 # fixscript will replace this line with code to load INN::Config
 
-#  $Id: cnfsstat.in 10350 2019-10-27 14:14:22Z iulius $
-#
 #  Copyright Andreas Lamrecht 1998
 #  <Andreas.Lamprect@siemens.at>
 #
diff -Nurp inn-2.6.4/frontends/ctlinnd.c inn-2.6.5/frontends/ctlinnd.c
--- inn-2.6.4/frontends/ctlinnd.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/frontends/ctlinnd.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: ctlinnd.c 10153 2017-06-05 12:28:01Z iulius $
-**
+/*
 **  Send control messages to the InterNetNews daemon.
 */
 
diff -Nurp inn-2.6.4/frontends/encode.c inn-2.6.5/frontends/encode.c
--- inn-2.6.4/frontends/encode.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/frontends/encode.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: encode.c 6119 2003-01-13 07:59:39Z rra $
-**
+/*
 **  Produce a seven-bit printable encoding of stdin on stdout.
 **  From @(#)encode.c 1.3 5/15/85, distributed with B2.11 News.
 **
diff -Nurp inn-2.6.4/frontends/feedone.c inn-2.6.5/frontends/feedone.c
--- inn-2.6.4/frontends/feedone.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/frontends/feedone.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: feedone.c 10022 2016-05-05 12:49:59Z iulius $
-**
+/*
 **  Connect to the NNTP server and feed one article.
 */
 
diff -Nurp inn-2.6.4/frontends/getlist.c inn-2.6.5/frontends/getlist.c
--- inn-2.6.4/frontends/getlist.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/frontends/getlist.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: getlist.c 10014 2016-05-05 12:42:31Z iulius $
-**
+/*
 **  Send a LIST command to an NNTP server and print the results.
 */
 
diff -Nurp inn-2.6.4/frontends/inews.c inn-2.6.5/frontends/inews.c
--- inn-2.6.4/frontends/inews.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/frontends/inews.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: inews.c 10365 2020-05-10 12:58:37Z iulius $
-**
+/*
 **  Send an article (prepared by someone on the local site) to the
 **  master news server.
 */
diff -Nurp inn-2.6.4/frontends/innconfval.c inn-2.6.5/frontends/innconfval.c
--- inn-2.6.4/frontends/innconfval.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/frontends/innconfval.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: innconfval.c 7585 2006-11-21 09:37:51Z eagle $
-**
+/*
 **  Get a config value from INN.
 */
 
diff -Nurp inn-2.6.4/frontends/mailpost.in inn-2.6.5/frontends/mailpost.in
--- inn-2.6.4/frontends/mailpost.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/frontends/mailpost.in	2022-02-18 20:36:57.000000000 +0100
@@ -3,8 +3,6 @@
 
 # mailpost - Yet another mail-to-news filter
 # vixie 14jun92 [original]
-#
-# $Id: mailpost.in 10171 2017-07-22 14:01:37Z iulius $
 
 use Getopt::Std;
 use IPC::Open3;
@@ -659,11 +657,12 @@ whitespace-separated list of group names
 (at least one newsgroup must be specified).
 
 Before feeding the article to B<inews>, it checks that the article has
-not been seen before, and it changes some header fields (cleans up some
-address headers, removes a few ones like X-Complaints-To: and X-Trace:,
-and puts C<X-> in front of unknown header fields).  The Received: and
-*-To: header fields are also altered to prevent spamming the gateway (the
-name of the news server or the domain name from F<inn.conf> are removed).
+not been seen before, and it changes some header fields (cleaning up some
+address header fields, removing a few ones like X-Complaints-To and X-Trace,
+and putting C<X-> in front of unknown header fields).  The Received and *-To
+header fields are also altered to prevent spamming the gateway (the name
+of the news server or the domain name set in I<fromhost>, I<pathhost> and
+I<domain> in F<inn.conf> are removed).
 
 If the article has been seen before (B<mailpost> records the message-ID of
 each article it handles), then the article will be dropped with a non-zero
@@ -673,35 +672,59 @@ newsmaster (selected at configure time a
 Normally, B<mailpost> is run by sendmail(8) via an alias entry:
 
     local-mail-wreck-bikes: "|<pathbin in inn.conf>/mailpost
-        -b /var/tmp -t /var/tmp -d local local.mail.rec.bicycles.racing"
+        -b /var/spool/mailpost -t /tmp -d local local.bicycles.racing"
 
 The B<-b> and B<-t> flags are useful to change the directories used by
 B<mailpost> by default.  As a matter of fact, though it is recommended to
-run B<mailpost> as the news user, it is as often as not run as another
-user, for instance the mail user.  Therefore, you should make sure to
-create and set to be writable by the user that B<mailpost> runs as the
-directories where to put the database and the temporary files.
+run B<mailpost> as the news user, it is as often as not run as another user,
+notably the mail user.  Therefore, you should make sure to create and set to
+be writable by the user that B<mailpost> runs as the directories where to put
+the database and the temporary files.  Also, B<mailpost> must be executable by
+that user.
 
-Instead of F</var/tmp>, the mail spool directory can be specified,
+Instead of F</var/spool/mailpost>, the mail spool directory can be specified,
 or any other directory where the B<mailpost> process has write access.
 
+A common practice to gateway a newsgroup to a mailing-list is to create a
+moderated newsgroup (running for instance the command C<ctlinnd newgroup
+local.bicycles.racing m>) and set the moderation address for this newsgroup
+in the F<moderators> file in I<pathetc> to the mailing-list address.  If you
+add an B<-a> flag in the above example, then on the one hand, when a message
+is sent to the mailing-list, B<mailpost> will be run, mark it as approved,
+and the message will directly reach the newsgroup.  On the other hand, when
+a message is posted to the newsgroup, it normally does not have an Approved
+header field, so it will be sent (by B<nnrpd>) to the mailing-list address
+configured in the F<moderators> file, which means the message reaches the
+mailing-list and, like any other messages posted to the mailing-list, it will
+be processed by B<mailpost>, approved, and finally reach the newsgroup.
+
 =head1 OPTIONS
 
 =over 4
 
 =item B<-a> I<addr>
 
-If the B<-a> flag is used, the value given is added to the article as
-an Approved: header.
+If the B<-a> flag is used, I<addr> (which is usually the e-mail address of
+the poster) is added to the article as the body of an Approved header field.
+It is useful if one of the newsgroup to which the article should be posted is
+moderated.  (Of course, this flag should be added only if you are supposed to
+auto-approve your posts.)
+
+Be sure that the reader connection made by B<inews> to post the article
+is allowed to post approved articles (see the C<A> letter in the I<access>
+parameter of access blocks in F<readers.conf>).
 
 =item B<-b> I<database>
 
-If the B<-b> flag is used, then it defines the location of the
-persistent database used to store the message-IDs of articles sent on.
-This is to prevent articles looping around if a news-to-mail gateway
-sends them back here.  This option may be required if the B<mailpost>
-process does not have write access to the news database directory.
-The default value is I<pathdb> as set in F<inn.conf>.
+If the B<-b> flag is used, then it defines the location of the persistent
+database used to store the message-IDs of articles sent on.  This is to
+prevent articles looping around if a news-to-mail gateway sends them back
+here.  This option may be required if the B<mailpost> process does not have
+write access to the news database directory (notably when it is executed as
+the mail user).  The default value is I<pathdb> as set in F<inn.conf>.
+
+Make sure the specified location exists and is writable by the user
+B<mailpost> runs as.
 
 =item B<-c> I<wait-time>
 
@@ -715,8 +738,8 @@ long mail can be delayed on its way to y
 
 =item B<-d> I<distribution>
 
-If the B<-d> flag is used, the value given is added to the article as a
-Distribution: header.
+If the B<-d> flag is used, the value given is added to the article as the body
+of the Distribution header field.
 
 =item B<-f> I<addr>
 
@@ -754,12 +777,15 @@ The B<-r> flag indicates what to use if
 
 =item B<-t> I<tempdir>
 
-If the B<-t> flag is used, then it defines the location of the
-directory to use to temporarily store error messages that are sent to
-the newsmaster.  This option may be required if the default value refers
-to a path that does not exist or the B<mailpost> process does not have
-write access to.  Two paths are tried by default:  I<pathtmp> as set
-in F<inn.conf>, and then F</var/tmp> if I<pathtmp> is not writable.
+If the B<-t> flag is used, then it defines the location of the directory to
+use to temporarily store error messages that are sent to the newsmaster.  This
+option may be required if the default value refers to a path that does not
+exist or the B<mailpost> process does not have write access to (notably when
+it is executed as the mail user).  Two paths are tried by default: I<pathtmp>
+as set in F<inn.conf>, and then F</var/tmp> if I<pathtmp> is not writable.
+
+Make sure the specified location exists and is writable by the user
+B<mailpost> runs as.
 
 =item B<-x> I<header>[B<:>I<header>...]
 
@@ -767,7 +793,7 @@ A colon-separated list of additional hea
 treated as known header fields; these header fields will be passed
 through to B<inews> without having C<X-> prepended.
 
-Known header fields are:
+By default, known header fields are:
 
     Archive
     Archived-At
@@ -792,10 +818,10 @@ Known header fields are:
 
 A colon-separated list of additional header fields which should be removed.
 
-Removed header fields are:
+By default, removed header fields are:
 
-    X-Trace
     X-Complaints-To
+    X-Trace
 
 =back
 
@@ -815,14 +841,12 @@ The default database files which record
 
 =head1 HISTORY
 
-Written by Paul Vixie long ago and then hacked up by James Brister for
-INN integration.
-
-$Id: mailpost.in 10171 2017-07-22 14:01:37Z iulius $
+Written by Paul Vixie long ago and then hacked up by James Brister for INN
+integration.  Documentation improved by Julien Elie.
 
 =head1 SEE ALSO
 
-active(5), inews(1), inn.conf(5), nnrpd(8), uwildmat(3).
+inews(1), inn.conf(5), libinn_uwildmat(3), moderators(5), nnrpd(8),
+readers.conf(5).
 
 =cut
-
diff -Nurp inn-2.6.4/frontends/ovdb_server.c inn-2.6.5/frontends/ovdb_server.c
--- inn-2.6.4/frontends/ovdb_server.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/frontends/ovdb_server.c	2022-02-18 20:36:57.000000000 +0100
@@ -678,7 +678,7 @@ main(int argc, char *argv[])
 
     if(ret != 0)
         sysdie("cannot bind socket");
-    if(listen(listensock, MAXLISTEN) < 0)
+    if(listen(listensock, innconf->maxlisten) < 0)
         sysdie("cannot listen on socket");
 
     pidfile = concatpath(innconf->pathrun, OVDB_SERVER_PIDFILE);
diff -Nurp inn-2.6.4/frontends/ovdb_stat.c inn-2.6.5/frontends/ovdb_stat.c
--- inn-2.6.4/frontends/ovdb_stat.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/frontends/ovdb_stat.c	2022-02-18 20:36:57.000000000 +0100
@@ -187,10 +187,10 @@ static void display_data(void *p, struct
     int i;
 
     if (html)
-	puts("<table border=0 cellpadding=1>");
+	puts("<table>");
     for (i = 0; tab[i].type != END; i++) {
         if (html) {
-            printf("<tr><td align=right>");
+            printf("<tr><td style=\"text-align:right\">");
             print_value(i, p, tab, "<td>");
             printf("<td>%s\n", tab[i].desc);
         } else {
@@ -207,7 +207,7 @@ static void start_table(const char *labe
     int i;
     if(html) {
 	printf("<h2>%s</h2>\n", label);
-	puts("<table border=0 cellpadding=1>\n<tr bgcolor=#3399aa>");
+	puts("<table>\n<tr style=\"background-color: #3399aa\">");
 	for(i = 0; tab[i].type != END; i++)
 	    printf("<th colspan=2>%s\n", tab[i].desc);
     }
@@ -220,7 +220,7 @@ static void display_row(void *p, struct
     if (html) {
 	puts("<tr>");
 	for (i = 0; tab[i].type != END; i++) {
-            printf("<td align=right>");
+            printf("<td style=\"text-align:right\">");
             print_value(i, p, tab, "<td>");
             printf("\n");
 	}
@@ -748,8 +748,12 @@ Usage:\n\
 	goto out;
     }
 
-    if(html)
-	puts("<html><head><title>ovdb_stat</title></head><body><p>");
+    if(html) {
+        puts("<!DOCTYPE html>\n<html lang=\"en\"><head>");
+        puts("<title>ovdb_stat</title>\n");
+        puts("<style>table tr td { padding:1px; border:0; }</style>\n");
+        puts("</head><body><p>");
+    }
     if(disp_lock)
 	display_lock();
     if(disp_log)
@@ -765,15 +769,16 @@ Usage:\n\
 
     if(getgs || getcount || getinfo) {
 	if(html) {
-	    puts("<table border=0 cellpadding=1 width=90%>\n<tr bgcolor=#3399aa>");
+	    puts("<table style=\"width:90%\">\n<tr style=\"background-color: #3399aa\">");
 	    puts("<th rowspan=2>Group");
 	    if(getgs)
 		puts("<th colspan=4>Groupstats");
 	    if(getcount)
 		puts("<th colspan=3>Counted");
-	    if(getinfo)
+	    if(getinfo) {
 		puts("<th>Status<th colspan=2>Current<th colspan=2>Pending");
-	    puts("<th rowspan=2>Expired<th rowspan=2>Expire PID<tr bgcolor=#3399aa>");
+		puts("<th rowspan=2>Expired<th rowspan=2>Expire PID<tr style=\"background-color: #3399aa\">");
+            }
 	    if(getgs)
 		puts("<th>Low<th>High<th>Count<th>Flag");
 	    if(getcount)
diff -Nurp inn-2.6.4/frontends/pullnews.in inn-2.6.5/frontends/pullnews.in
--- inn-2.6.4/frontends/pullnews.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/frontends/pullnews.in	2022-02-18 20:36:57.000000000 +0100
@@ -6,10 +6,9 @@
 # Start Date:   Sat, 10 Oct 1998 21:40:11 +0200
 # Project:      INN
 # File:         pullnews
-# RCSId:        $Id: pullnews.in 9796 2015-03-18 20:46:20Z iulius $
 #
 # History:
-#               Full changelog can be found in the Subversion repository of the
+#               Full changelog can be found in the Git commit history of the
 #               INN project.  Major changes are:
 #
 #               January 2010:  Geraint A. Edwards added header-only feeding (-B);
@@ -66,10 +65,6 @@ require 5.004;
 
 $0 =~ s!.*/!!;
 
-my $rcsID =<<'EOM';
-$Id: pullnews.in 9796 2015-03-18 20:46:20Z iulius $
-EOM
-
 $SIG{INT} = \&outtaHere;
 $SIG{QUIT} = \&bail;
 
diff -Nurp inn-2.6.4/frontends/rnews.c inn-2.6.5/frontends/rnews.c
--- inn-2.6.4/frontends/rnews.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/frontends/rnews.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: rnews.c 10382 2020-05-24 10:24:37Z iulius $
-**
+/*
 **  A front-end for InterNetNews.
 **
 **  Read UUCP batches and offer them up NNTP-style.  Because we may end
diff -Nurp inn-2.6.4/frontends/sm.c inn-2.6.5/frontends/sm.c
--- inn-2.6.4/frontends/sm.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/frontends/sm.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: sm.c 10405 2020-11-21 07:02:43Z iulius $
-**
+/*
 **  Provide a command line interface to the storage manager.
 */
 
diff -Nurp inn-2.6.4/frontends/sys2nf.c inn-2.6.5/frontends/sys2nf.c
--- inn-2.6.4/frontends/sys2nf.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/frontends/sys2nf.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: sys2nf.c 10032 2016-05-05 13:31:40Z iulius $
-**
+/*
 **  Read a C news "sys" file and split it up into a set of INN
 **  newsfeeds entries.  Also works with B news.
 **
diff -Nurp inn-2.6.4/history/Makefile inn-2.6.5/history/Makefile
--- inn-2.6.4/history/Makefile	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/history/Makefile	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: Makefile 10423 2020-11-22 21:15:35Z iulius $
-
 include ../Makefile.global
 
 # This version number should be increased with every change to the library
@@ -8,7 +6,7 @@ include ../Makefile.global
 # recover from make update.  We can't use .OLD extensions for the shared
 # library since ldconfig will think .OLD sorts after the regular library and
 # will point the binaries at the old library.
-LTVERSION     = 3:4:0
+LTVERSION     = 3:5:0
 
 top           = ..
 CFLAGS        = $(GCFLAGS) -I.
diff -Nurp inn-2.6.4/history/buildconfig.in inn-2.6.5/history/buildconfig.in
--- inn-2.6.4/history/buildconfig.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/history/buildconfig.in	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,5 @@
 #! /usr/bin/perl
 
-##  $Id: buildconfig.in 6803 2004-05-18 00:48:58Z rra $
-##
 ##  Generate linkage code and makefiles for storage and overview methods.
 ##
 ##  Goes through all subdirectories of the current directory and finds
diff -Nurp inn-2.6.4/history/his.c inn-2.6.5/history/his.c
--- inn-2.6.4/history/his.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/history/his.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: his.c 10305 2018-12-02 14:21:56Z iulius $
-**
+/*
 **  API to history routines 
 **
 **  Copyright (c) 2001, Thus plc 
diff -Nurp inn-2.6.4/history/hisinterface.h inn-2.6.5/history/hisinterface.h
--- inn-2.6.4/history/hisinterface.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/history/hisinterface.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: hisinterface.h 8571 2009-08-17 19:10:07Z iulius $
-**
+/*
 ** Interface to history API modules
 */
 
diff -Nurp inn-2.6.4/history/hisv6/hisv6.c inn-2.6.5/history/hisv6/hisv6.c
--- inn-2.6.4/history/hisv6/hisv6.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/history/hisv6/hisv6.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: hisv6.c 10305 2018-12-02 14:21:56Z iulius $
-**
+/*
 **  History v6 implementation against the history API.
 **
 **  Copyright (c) 2001, Thus plc 
diff -Nurp inn-2.6.4/history/hisv6/hisv6.h inn-2.6.5/history/hisv6/hisv6.h
--- inn-2.6.4/history/hisv6/hisv6.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/history/hisv6/hisv6.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: hisv6.h 8571 2009-08-17 19:10:07Z iulius $
-**
+/*
 ** Internal history API interface exposed to HISxxx
 */
 
diff -Nurp inn-2.6.4/include/Makefile inn-2.6.5/include/Makefile
--- inn-2.6.4/include/Makefile	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/Makefile	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: Makefile 9794 2015-03-17 20:49:15Z iulius $
-##
 ##  Currently just handles creation of the automatically generated header
 ##  files.  Eventually, rules for installing INN's header files will go
 ##  here.
diff -Nurp inn-2.6.4/include/clibrary.h inn-2.6.5/include/clibrary.h
--- inn-2.6.4/include/clibrary.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/clibrary.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: clibrary.h 10444 2020-12-09 21:06:15Z iulius $
- *
+/*
  * Standard system includes and portability adjustments.
  *
  * Declarations of routines and variables in the C library.  Including this
@@ -12,9 +11,9 @@
  *     #include <stdarg.h>
  *     #include <stdbool.h>
  *     #include <stddef.h>
+ *     #include <stdint.h>
  *     #include <stdio.h>
  *     #include <stdlib.h>
- *     #include <stdint.h>
  *     #include <string.h>
  *     #include <strings.h>
  *     #include <sys/types.h>
@@ -27,7 +26,7 @@
  * which can be found at <https://www.eyrie.org/~eagle/software/rra-c-util/>.
  *
  * Written by Russ Allbery <eagle@eyrie.org>
- * Copyright 2014, 2016, 2018, 2020 Russ Allbery <eagle@eyrie.org>
+ * Copyright 2014, 2016, 2018, 2020-2021 Russ Allbery <eagle@eyrie.org>
  * Copyright 2006-2011, 2013-2014
  *     The Board of Trustees of the Leland Stanford Junior University
  *
diff -Nurp inn-2.6.4/include/conffile.h inn-2.6.5/include/conffile.h
--- inn-2.6.4/include/conffile.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/conffile.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: conffile.h 9782 2015-01-07 21:34:22Z iulius $
-**
+/*
 **  Data structures, functions and cetera used for config file parsing.
 */
 
diff -Nurp inn-2.6.4/include/inn/buffer.h inn-2.6.5/include/inn/buffer.h
--- inn-2.6.4/include/inn/buffer.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/inn/buffer.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: buffer.h 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * Counted, reusable memory buffer.
  *
  * A buffer is an allocated block of memory with a known size and a separate
diff -Nurp inn-2.6.4/include/inn/concat.h inn-2.6.5/include/inn/concat.h
--- inn-2.6.4/include/inn/concat.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/inn/concat.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: concat.h 10100 2016-11-04 22:24:26Z iulius $
- *
+/*
  * Prototypes for string concatenation with dynamic memory allocation.
  *
  * The canonical version of this file *used to be* maintained in the
diff -Nurp inn-2.6.4/include/inn/confparse.h inn-2.6.5/include/inn/confparse.h
--- inn-2.6.4/include/inn/confparse.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/inn/confparse.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: confparse.h 8832 2009-11-30 19:45:20Z iulius $
-**
+/*
 **  Configuration file parsing interface.
 */
 
diff -Nurp inn-2.6.4/include/inn/dbz.h inn-2.6.5/include/inn/dbz.h
--- inn-2.6.4/include/inn/dbz.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/inn/dbz.h	2022-02-18 20:36:57.000000000 +0100
@@ -7,13 +7,13 @@
 
 BEGIN_DECLS
 
-/* This is the number of bytes of the md5 to actually store in
- * the .pag file.  This number directly effects the collision
+/* This is the number of bytes of the MD5 to actually store in
+ * the .pag file.  This number directly affects the collision
  * rate and memory usage.  You can probably set this number as
- * low as 5 w/o problems and some sites may want to set it as
+ * low as 4 w/o problems and some sites may want to set it as
  * high as 8.  Anything higher than that is probably not useful.
- * Note at the internal hash size isn't the only factor that
- * effects collision rate.  The table index is used as an implicit
+ * Note that the internal hash size isn't the only factor that
+ * affects collision rate.  The table index is used as an implicit
  * part of the hash value stored also.
  */
 #ifdef	DO_TAGGED_HASH
@@ -29,7 +29,7 @@ typedef enum {INCORE_NO, INCORE_MEM, INC
 typedef struct {
     /* Whether to write to the filesystem in addition to updating the incore
        copy.  This will replace a single large write to disk when dbzsync is
-       called.  */
+       called. */
     bool             writethrough;
     /* Whether to do hash lookups from disk, memory or a mmap'ed file */
     dbz_incore_val   pag_incore;
@@ -41,7 +41,7 @@ typedef struct {
 
 #if !defined(lint) && (defined(__SUNPRO_C) || defined(_nec_ews))
 #pragma pack(1)
-#endif /* nor lint, nor __SUNPRO_C, nor sgi, nor _nec_ews */
+#endif
 /* Leave the __attribute__ ((__packed__)) on there because removing it
  * might change the layout of the data structure on disk on some platform,
  * thus invalidating old history files.
@@ -52,7 +52,7 @@ typedef struct {
 } __attribute__ ((__packed__)) erec;
 #if !defined(lint) && (defined(__SUNPRO_C) || defined(_nec_ews))
 #pragma pack()
-#endif /* nor lint, nor__SUNPRO_C, nor _nec_ews */
+#endif
 
 /* standard dbm functions */
 extern bool dbzinit(const char *name);
diff -Nurp inn-2.6.4/include/inn/defines.h inn-2.6.5/include/inn/defines.h
--- inn-2.6.4/include/inn/defines.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/inn/defines.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: defines.h 9778 2015-01-07 20:50:16Z iulius $
-**
+/*
 **  Portable defines used by other INN header files.
 **
 **  In order to make the libraries built by INN usable by other software,
diff -Nurp inn-2.6.4/include/inn/dispatch.h inn-2.6.5/include/inn/dispatch.h
--- inn-2.6.4/include/inn/dispatch.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/inn/dispatch.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: dispatch.h 9782 2015-01-07 21:34:22Z iulius $
-**
+/*
 **  Dispatch cvectors of commands to functions.
 **
 **  This is a generic command dispatching system designed primary to handle
diff -Nurp inn-2.6.4/include/inn/fdflag.h inn-2.6.5/include/inn/fdflag.h
--- inn-2.6.4/include/inn/fdflag.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/inn/fdflag.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: fdflag.h 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * Prototypes for setting or clearing file descriptor flags.
  *
  * The canonical version of this file is maintained in the rra-c-util package,
diff -Nurp inn-2.6.4/include/inn/hashtab.h inn-2.6.5/include/inn/hashtab.h
--- inn-2.6.4/include/inn/hashtab.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/inn/hashtab.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: hashtab.h 9767 2014-12-07 21:13:43Z iulius $
-**
+/*
 **  Generic hash table interface.
 **
 **  Written by Russ Allbery <eagle@eyrie.org>
diff -Nurp inn-2.6.4/include/inn/history.h inn-2.6.5/include/inn/history.h
--- inn-2.6.4/include/inn/history.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/inn/history.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: history.h 8908 2010-01-20 21:29:23Z iulius $
-**
+/*
 **  Interface to history API
 */
 
diff -Nurp inn-2.6.4/include/inn/innconf.h inn-2.6.5/include/inn/innconf.h
--- inn-2.6.4/include/inn/innconf.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/inn/innconf.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: innconf.h 10301 2018-11-11 14:42:17Z iulius $
-**
+/*
 **  inn.conf parser interface.
 **
 **  The interface to reading inn.conf configuration files and managing the
@@ -15,7 +14,7 @@
 /*
 **  This structure is organized in the same order as the variables contained
 **  in it are mentioned in the inn.conf documentation, and broken down into
-**  the same sections.  Note that due to the implementation, only three types
+**  the same sections.  Note that due to the implementation, only five types
 **  of variables are permissible here:  char *, bool, struct vector *, long
 **  and unsigned long.
 */
@@ -177,6 +176,7 @@ struct innconf {
     unsigned long keepmmappedthreshold; /* Threshold for keeping mmap in buffindexed */
     unsigned long maxcmdreadsize; /* Max NNTP command read size used by innd */
     unsigned long maxforks;     /* Give up after this many fork failure. */
+    unsigned long maxlisten;    /* Max listen() backlog */
     long nicekids;              /* Child processes get niced to this */
     unsigned long nicenewnews;  /* If NEWNEWS command is used, nice to this */
     unsigned long nicennrpd;    /* nnrpd is niced to this */
diff -Nurp inn-2.6.4/include/inn/inndcomm.h inn-2.6.5/include/inn/inndcomm.h
--- inn-2.6.4/include/inn/inndcomm.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/inn/inndcomm.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: inndcomm.h 10150 2017-06-05 12:25:44Z iulius $
-**
+/*
 **  Here be values used for communicating with the server once it is
 **  running.
 */
diff -Nurp inn-2.6.4/include/inn/libinn.h inn-2.6.5/include/inn/libinn.h
--- inn-2.6.4/include/inn/libinn.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/inn/libinn.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: libinn.h 10304 2018-12-02 14:05:50Z iulius $
-**
+/*
 **  Here be declarations of functions in the InterNetNews library.
 */
 
@@ -31,7 +30,7 @@ struct in_addr;
 BEGIN_DECLS
 
 /*
-**  TIME AND DATE PARSING, GENERATION, AND HANDLING
+**  Time and date parsing, generation and handling.
 */
 extern int      Argify(char *line, char ***argvp);
 extern int      nArgify(char *line, char ***argvp, int n);
@@ -45,7 +44,7 @@ extern time_t   parsedate_rfc5322_lax(co
 
 
 /*
-**  WILDMAT MATCHING
+**  Wildmat matching.
 */
 enum uwildmat {
     UWILDMAT_FAIL   = 0,
@@ -60,7 +59,7 @@ extern enum uwildmat    uwildmat_poison(
 
 
 /*
-**  FILE LOCKING
+**  File locking.
 */
 enum inn_locktype {
     INN_LOCK_READ,
@@ -74,7 +73,7 @@ extern bool     inn_lock_range(int fd, e
 
 
 /*
-**  MISCELLANEOUS UTILITY FUNCTIONS
+**  Miscellaneous utility functions.
 */
 extern void     daemonize(const char *path);
 extern int      getfdlimit(void);
@@ -117,10 +116,11 @@ extern int      NNTPremoteopen(int port,
                                FILE **ToServerp, char *errbuff, size_t len);
 extern int      NNTPconnect(const char *host, int port, FILE **FromServerp,
                             FILE **ToServerp, char *errbuff, size_t len);
-extern int      NNTPsendarticle(char *, FILE *F, bool Terminate);
+extern int      NNTPsendarticle(char *text, FILE *ToServer, bool terminate);
 extern int      NNTPsendpassword(char *server, FILE *FromServer,
                                  FILE *ToServer);
 
+
 /* clientlib compatibility functions. */
 extern char *   getserverbyfile(char *file);
 extern int      server_init(char *host, int port);
@@ -129,6 +129,7 @@ extern void     put_server(const char *t
 extern int      get_server(char *buff, int buffsize);
 extern void     close_server(void);
 
+
 /* Opening the active file on a client. */
 extern FILE *   CAopen(FILE *FromServer, FILE *ToServer);
 extern FILE *   CAlistopen(FILE *FromServer, FILE *ToServer,
@@ -137,6 +138,8 @@ extern FILE *   CA_listopen(char *pathna
 			    const char *request);
 extern void     CAclose(void);
 
+
+/* Other useful functions. */
 /* Return the fully-qualified domain name of the local system in
    newly-allocated memory, or NULL if it cannot be discovered.  The caller is
    responsible for freeing.  If the host's domain cannot be found in DNS, use
@@ -152,7 +155,7 @@ extern char *   GetModeratorAddress(FILE
 #define DBZ_DIR         3
 #define DBZ_BASE        4
 
-/* Hash functions */
+/* Hash functions. */
 typedef struct {
     char        hash[16];
 } HASH;
@@ -165,12 +168,13 @@ extern char *   HashToText(const HASH ha
 extern HASH     TextToHash(const char *text);
 extern int      HashCompare(const HASH *h1, const HASH *h2);
 
+
 /* Miscellaneous. */
 extern int      dbzneedfilecount(void);
 extern bool     MakeDirectory(char *Name, bool Recurse);
 extern int      xread(int fd, char *p, off_t i);
 extern int      GetResourceUsage(double *usertime, double *systime);
-extern void     Radix32(unsigned long, char *buff);
+extern void     Radix32(unsigned long value, char *buff);
 extern char *   ReadInDescriptor(int fd, struct stat *Sbp);
 extern char *   ReadInFile(const char *name, struct stat *Sbp);
 extern FILE *   xfopena(const char *p);
diff -Nurp inn-2.6.4/include/inn/list.h inn-2.6.5/include/inn/list.h
--- inn-2.6.4/include/inn/list.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/inn/list.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,3 @@
-/*  $Id: list.h 6168 2003-01-21 06:27:32Z alexk $
-**
-*/
-
 #ifndef INN_LIST_H
 #define INN_LIST_H 1
 
diff -Nurp inn-2.6.4/include/inn/macros.h inn-2.6.5/include/inn/macros.h
--- inn-2.6.4/include/inn/macros.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/inn/macros.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: macros.h 10246 2018-02-16 21:12:42Z iulius $
- *
+/*
  * Some standard helpful macros.
  *
  * The canonical version of this file is maintained in the rra-c-util package,
@@ -33,10 +32,10 @@
 #define ARRAY_END(array)  (&(array)[ARRAY_SIZE(array)])
 
 /* Used to name the elements of the array passed to pipe. */
-#define PIPE_READ  0
-#define PIPE_WRITE 1
+#define PIPE_READ         0
+#define PIPE_WRITE        1
 
 /* Used for unused parameters to silence gcc warnings. */
-#define UNUSED __attribute__((__unused__))
+#define UNUSED            __attribute__((__unused__))
 
 #endif /* INN_MACROS_H */
diff -Nurp inn-2.6.4/include/inn/md5.h inn-2.6.5/include/inn/md5.h
--- inn-2.6.4/include/inn/md5.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/inn/md5.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: md5.h 7130 2005-01-09 20:45:24Z rra $
-**
+/*
 **  RSA Data Security, Inc. MD5 Message-Digest Algorithm
 **
 **  LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
diff -Nurp inn-2.6.4/include/inn/messages.h inn-2.6.5/include/inn/messages.h
--- inn-2.6.4/include/inn/messages.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/inn/messages.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: messages.h 10246 2018-02-16 21:12:42Z iulius $
- *
+/*
  * Prototypes for message and error reporting (possibly fatal).
  *
  * The canonical version of this file is maintained in the rra-c-util package,
diff -Nurp inn-2.6.4/include/inn/mmap.h inn-2.6.5/include/inn/mmap.h
--- inn-2.6.4/include/inn/mmap.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/inn/mmap.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: mmap.h 7599 2007-02-09 02:46:39Z eagle $
-**
+/*
 **  Manipulation routines for memory-mapped pages.
 **
 **  Written by Alex Kiernan (alex.kiernan@thus.net)
diff -Nurp inn-2.6.4/include/inn/network-innbind.h inn-2.6.5/include/inn/network-innbind.h
--- inn-2.6.4/include/inn/network-innbind.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/inn/network-innbind.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: network-innbind.h 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * Prototypes for network connection utility functions using innbind.
  *
  * This file is heavily based on include/inn/network.h.
diff -Nurp inn-2.6.4/include/inn/network.h inn-2.6.5/include/inn/network.h
--- inn-2.6.4/include/inn/network.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/inn/network.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: network.h 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * Prototypes for network connection utility functions.
  *
  * The canonical version of this file is maintained in the rra-c-util package,
diff -Nurp inn-2.6.4/include/inn/newsuser.h inn-2.6.5/include/inn/newsuser.h
--- inn-2.6.4/include/inn/newsuser.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/inn/newsuser.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: newsuser.h 9782 2015-01-07 21:34:22Z iulius $
-**
+/*
 **  Declarations of functions to ensure running as "news" user/group.
 **
 **  By Ivan Shmakov, 2007.
diff -Nurp inn-2.6.4/include/inn/nntp.h inn-2.6.5/include/inn/nntp.h
--- inn-2.6.4/include/inn/nntp.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/inn/nntp.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: nntp.h 9978 2015-12-11 20:39:56Z iulius $
-**
+/*
 **  NNTP codes and utility functions for speaking the NNTP protocol.
 **
 **  The nntp_code enum defines NNTP codes for every response supported by INN.
diff -Nurp inn-2.6.4/include/inn/options.h inn-2.6.5/include/inn/options.h
--- inn-2.6.4/include/inn/options.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/inn/options.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: options.h 10382 2020-05-24 10:24:37Z iulius $
-**
+/*
 **  Compile-time INN configuration.
 **
 **  This header contains all the definitions of compile-time constants that
@@ -23,9 +22,9 @@
 **  do the reverse to disable.
 */
 
-/* A null-terminated list of uwildmat(3) patterns matching illegal
-   distributions.  inews and nnrpd will reject posts with a distribution
-   matching one of these patterns. */
+/* A null-terminated list of uwildmat patterns matching illegal distributions.
+   inews and nnrpd will reject posts with a distribution matching one of these
+   patterns. */
 #define BAD_DISTRIBS            "*.*", NULL
 
 /* Default timeout period for ctlinnd, overridden by the -t flag.  If set to
@@ -66,9 +65,6 @@
    throttle.) */
 #define IO_ERROR_COUNT          50
 
-/* Length of listen queue for innd. */
-#define MAXLISTEN               25
-
 /* The standard NNTP port. */
 #define NNTP_PORT               119
 
diff -Nurp inn-2.6.4/include/inn/ov.h inn-2.6.5/include/inn/ov.h
--- inn-2.6.4/include/inn/ov.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/inn/ov.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,6 +1,3 @@
-/*  $Id: ov.h 9782 2015-01-07 21:34:22Z iulius $
-*/
-
 #ifndef INN_OV_H
 #define INN_OV_H 1
 
diff -Nurp inn-2.6.4/include/inn/overview.h inn-2.6.5/include/inn/overview.h
--- inn-2.6.4/include/inn/overview.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/inn/overview.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: overview.h 9782 2015-01-07 21:34:22Z iulius $
-**
+/*
 **  Overview API for storing and retrieving overview information.
 **
 **  This header defines the overview API, which consists of a set of functions
diff -Nurp inn-2.6.4/include/inn/paths.h.in inn-2.6.5/include/inn/paths.h.in
--- inn-2.6.4/include/inn/paths.h.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/inn/paths.h.in	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,4 @@
-/*  $Id: paths.h.in 10382 2020-05-24 10:24:37Z iulius $ -*- c -*-
+/*  -*- c -*-
 **  @configure_input@
 **
 **  Here be #define's for filenames, socket names, environment variables,
diff -Nurp inn-2.6.4/include/inn/qio.h inn-2.6.5/include/inn/qio.h
--- inn-2.6.4/include/inn/qio.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/inn/qio.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: qio.h 10457 2020-12-19 06:10:49Z eagle $
-**
+/*
 **  Quick I/O package.
 **
 **  The interface to the Quick I/O package, optimized for reading through
diff -Nurp inn-2.6.4/include/inn/sequence.h inn-2.6.5/include/inn/sequence.h
--- inn-2.6.4/include/inn/sequence.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/inn/sequence.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: sequence.h 4871 2001-07-09 08:09:58Z alexk $
-**
+/*
 **  Sequence space arithmetic routines.
 **
 **  This is a set of routines for implementing so called sequence
diff -Nurp inn-2.6.4/include/inn/storage.h inn-2.6.5/include/inn/storage.h
--- inn-2.6.4/include/inn/storage.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/inn/storage.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: storage.h 9877 2015-05-24 13:59:15Z iulius $
-**
+/*
 **  Here be declarations related to the storage subsystem.
 */
 
diff -Nurp inn-2.6.4/include/inn/timer.h inn-2.6.5/include/inn/timer.h
--- inn-2.6.4/include/inn/timer.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/inn/timer.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: timer.h 9782 2015-01-07 21:34:22Z iulius $
-**
+/*
 **  Timer library interface.
 **
 **  An interface to a simple profiling library.  An application can declare
diff -Nurp inn-2.6.4/include/inn/tst.h inn-2.6.5/include/inn/tst.h
--- inn-2.6.4/include/inn/tst.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/inn/tst.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: tst.h 6083 2002-12-27 07:24:36Z rra $
-**
+/*
 **  Ternary search trie implementation.
 **
 **  This implementation is based on the implementation by Peter A. Friend
diff -Nurp inn-2.6.4/include/inn/utility.h inn-2.6.5/include/inn/utility.h
--- inn-2.6.4/include/inn/utility.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/inn/utility.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: utility.h 7155 2005-04-10 06:27:34Z rra $
-**
+/*
 **  INN utility functions.
 **
 **  This is a collection of miscellaneous utility functions that aren't
diff -Nurp inn-2.6.4/include/inn/vector.h inn-2.6.5/include/inn/vector.h
--- inn-2.6.4/include/inn/vector.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/inn/vector.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: vector.h 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * Prototypes for vector handling.
  *
  * A vector is a list of strings, with dynamic resizing of the list as new
diff -Nurp inn-2.6.4/include/inn/wire.h inn-2.6.5/include/inn/wire.h
--- inn-2.6.4/include/inn/wire.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/inn/wire.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: wire.h 8718 2009-11-08 00:06:54Z iulius $
-**
+/*
 **  Wire format article utilities.
 **
 **  Originally written by Alex Kiernan (alex.kiernan@thus.net)
diff -Nurp inn-2.6.4/include/inn/xmalloc.h inn-2.6.5/include/inn/xmalloc.h
--- inn-2.6.4/include/inn/xmalloc.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/inn/xmalloc.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: xmalloc.h 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * Prototypes for malloc routines with failure handling.
  *
  * The canonical version of this file is maintained in the rra-c-util package,
diff -Nurp inn-2.6.4/include/inn/xwrite.h inn-2.6.5/include/inn/xwrite.h
--- inn-2.6.4/include/inn/xwrite.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/inn/xwrite.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: xwrite.h 10246 2018-02-16 21:12:42Z iulius $
- *
+/*
  * Prototypes for write and writev replacements to handle partial writes.
  *
  * The canonical version of this file is maintained in the rra-c-util package,
diff -Nurp inn-2.6.4/include/innperl.h inn-2.6.5/include/innperl.h
--- inn-2.6.4/include/innperl.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/innperl.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: innperl.h 9933 2015-08-28 19:27:38Z iulius $
-**
+/*
 **  Declarations for embedded Perl.
 */
 
diff -Nurp inn-2.6.4/include/portable/alloca.h inn-2.6.5/include/portable/alloca.h
--- inn-2.6.4/include/portable/alloca.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/portable/alloca.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: alloca.h 9767 2014-12-07 21:13:43Z iulius $
-**
+/*
 **  Replacement implementation of alloca.
 **
 **  Written by Russ Allbery <eagle@eyrie.org>
diff -Nurp inn-2.6.4/include/portable/getaddrinfo.h inn-2.6.5/include/portable/getaddrinfo.h
--- inn-2.6.4/include/portable/getaddrinfo.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/portable/getaddrinfo.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: getaddrinfo.h 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * Replacement implementation of getaddrinfo.
  *
  * This is an implementation of the getaddrinfo family of functions for
@@ -63,16 +62,16 @@ struct addrinfo {
 #    define AI_ADDRCONFIG  0x0040
 
 /* Error return codes from RFC 3493. */
-#    define EAI_AGAIN    1  /* Temporary name resolution failure */
-#    define EAI_BADFLAGS 2  /* Invalid value in ai_flags parameter */
-#    define EAI_FAIL     3  /* Permanent name resolution failure */
-#    define EAI_FAMILY   4  /* Address family not recognized */
-#    define EAI_MEMORY   5  /* Memory allocation failure */
-#    define EAI_NONAME   6  /* nodename or servname unknown */
-#    define EAI_SERVICE  7  /* Service not recognized for socket type */
-#    define EAI_SOCKTYPE 8  /* Socket type not recognized */
-#    define EAI_SYSTEM   9  /* System error occurred, see errno */
-#    define EAI_OVERFLOW 10 /* An argument buffer overflowed */
+#    define EAI_AGAIN      1  /* Temporary name resolution failure */
+#    define EAI_BADFLAGS   2  /* Invalid value in ai_flags parameter */
+#    define EAI_FAIL       3  /* Permanent name resolution failure */
+#    define EAI_FAMILY     4  /* Address family not recognized */
+#    define EAI_MEMORY     5  /* Memory allocation failure */
+#    define EAI_NONAME     6  /* nodename or servname unknown */
+#    define EAI_SERVICE    7  /* Service not recognized for socket type */
+#    define EAI_SOCKTYPE   8  /* Socket type not recognized */
+#    define EAI_SYSTEM     9  /* System error occurred, see errno */
+#    define EAI_OVERFLOW   10 /* An argument buffer overflowed */
 
 BEGIN_DECLS
 
diff -Nurp inn-2.6.4/include/portable/getnameinfo.h inn-2.6.5/include/portable/getnameinfo.h
--- inn-2.6.4/include/portable/getnameinfo.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/portable/getnameinfo.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: getnameinfo.h 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * Replacement implementation of getnameinfo.
  *
  * This is an implementation of the getnameinfo function for systems that lack
diff -Nurp inn-2.6.4/include/portable/macros.h inn-2.6.5/include/portable/macros.h
--- inn-2.6.4/include/portable/macros.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/portable/macros.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: macros.h 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * Portability macros used in include files.
  *
  * The canonical version of this file is maintained in the rra-c-util package,
diff -Nurp inn-2.6.4/include/portable/mmap.h inn-2.6.5/include/portable/mmap.h
--- inn-2.6.4/include/portable/mmap.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/portable/mmap.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: mmap.h 9718 2014-09-22 19:18:44Z iulius $
-**
+/*
 **  Portability wrapper around <sys/mman.h>.
 **
 **  This header file includes <sys/mman.h> and then sets up various
diff -Nurp inn-2.6.4/include/portable/sd-daemon.h inn-2.6.5/include/portable/sd-daemon.h
--- inn-2.6.4/include/portable/sd-daemon.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/portable/sd-daemon.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,17 +1,24 @@
-/* $Id: sd-daemon.h 10523 2021-01-17 21:52:00Z iulius $
- *
+/*
  * Portability wrapper around systemd-daemon headers.
  *
- * Currently, only sd_listen_fds and sd_notify are guaranteed to be provided
- * by this interface.  This takes the approach of stubbing out these functions
- * if the libsystemd-daemon library is not available, rather than providing a
- * local implementation, on the grounds that anyone who wants systemd status
- * reporting should be able to build with the systemd libraries.
+ * Currently, only sd_is_socket, sd_listen_fds, sd_notify, and sd_notifyf are
+ * guaranteed to be provided by this interface.  This takes the approach of
+ * stubbing out these functions if the libsystemd-daemon library is not
+ * available, rather than providing a local implementation, on the grounds
+ * that anyone who wants systemd status reporting should be able to build with
+ * the systemd libraries.  In particular, sd_is_socket always returns false
+ * and does not perform its intended function.
+ *
+ * The stubs for sd_notify and sd_notifyf provided as functions, rather than
+ * using #define, to allow for the variadic function and to avoid compiler
+ * warnings when they are used without assigning the return value as is
+ * recommended in the sd_notify(3) man page.
  *
  * The canonical version of this file is maintained in the rra-c-util package,
  * which can be found at <https://www.eyrie.org/~eagle/software/rra-c-util/>.
  *
  * Written by Russ Allbery <eagle@eyrie.org>
+ * Copyright 2021 Russ Allbery <eagle@eyrie.org>
  * Copyright 2014
  *     The Board of Trustees of the Leland Stanford Junior University
  *
@@ -26,13 +33,21 @@
 #ifndef PORTABLE_SD_DAEMON_H
 #define PORTABLE_SD_DAEMON_H 1
 
+#include "config.h"
+#include "portable/macros.h"
+
+BEGIN_DECLS
+
 #ifdef HAVE_SD_NOTIFY
 #    include <systemd/sd-daemon.h>
 #else
-#    define SD_LISTEN_FDS_START        3
-#    define sd_is_socket(fd, f, t, l)  0
-#    define sd_listen_fds(u)           0
-#    define sd_notify(u, s)            0
+#    define SD_LISTEN_FDS_START       3
+#    define sd_is_socket(fd, f, t, l) 0
+#    define sd_listen_fds(u)          0
+int sd_notify(int, const char *);
+int sd_notifyf(int, const char *, ...);
 #endif
 
+END_DECLS
+
 #endif /* !PORTABLE_SD_DAEMON_H */
diff -Nurp inn-2.6.4/include/portable/setproctitle.h inn-2.6.5/include/portable/setproctitle.h
--- inn-2.6.4/include/portable/setproctitle.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/portable/setproctitle.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: setproctitle.h 9700 2014-09-21 09:15:25Z iulius $
-**
+/*
 **  Set things up for setproctitle portably.
 **
 **  If the system supports setproctitle, we need to define away
diff -Nurp inn-2.6.4/include/portable/socket-unix.h inn-2.6.5/include/portable/socket-unix.h
--- inn-2.6.4/include/portable/socket-unix.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/portable/socket-unix.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: socket-unix.h 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * Portability wrapper around <sys/un.h>.
  *
  * This wrapper exists primarily to define SUN_LEN if not defined by the
diff -Nurp inn-2.6.4/include/portable/socket.h inn-2.6.5/include/portable/socket.h
--- inn-2.6.4/include/portable/socket.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/portable/socket.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: socket.h 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * Portability wrapper around <sys/socket.h> and friends.
  *
  * This header file is the equivalent of:
diff -Nurp inn-2.6.4/include/portable/stdbool.h inn-2.6.5/include/portable/stdbool.h
--- inn-2.6.4/include/portable/stdbool.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/portable/stdbool.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: stdbool.h 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * Portability wrapper around <stdbool.h>.
  *
  * Provides the bool and _Bool types and the true and false constants,
diff -Nurp inn-2.6.4/include/portable/uio.h inn-2.6.5/include/portable/uio.h
--- inn-2.6.4/include/portable/uio.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/include/portable/uio.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: uio.h 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * Portability wrapper around <sys/uio.h>.
  *
  * Provides a definition of the iovec struct for platforms that don't have it
diff -Nurp inn-2.6.4/innd/Makefile inn-2.6.5/innd/Makefile
--- inn-2.6.4/innd/Makefile	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innd/Makefile	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: Makefile 10523 2021-01-17 21:52:00Z iulius $
-
 include ../Makefile.global
 
 top	        = ..
@@ -78,9 +76,9 @@ art.o: art.c ../include/config.h ../incl
   ../include/portable/stdbool.h ../include/portable/macros.h \
   ../include/inn/innconf.h ../include/inn/md5.h ../include/inn/ov.h \
   ../include/inn/history.h ../include/inn/storage.h \
-  ../include/inn/options.h ../include/inn/overview.h \
-  ../include/inn/storage.h ../include/inn/vector.h ../include/inn/wire.h \
-  innd.h ../include/portable/sd-daemon.h ../include/portable/socket.h \
+  ../include/inn/options.h ../include/inn/storage.h \
+  ../include/inn/vector.h ../include/inn/wire.h innd.h \
+  ../include/portable/sd-daemon.h ../include/portable/socket.h \
   ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \
   ../include/inn/buffer.h ../include/inn/messages.h ../include/inn/timer.h \
   ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \
diff -Nurp inn-2.6.4/innd/art.c inn-2.6.5/innd/art.c
--- inn-2.6.4/innd/art.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innd/art.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: art.c 10513 2021-01-15 22:34:56Z iulius $
-**
+/*
 **  Article-processing.
 */
 
diff -Nurp inn-2.6.4/innd/cc.c inn-2.6.5/innd/cc.c
--- inn-2.6.4/innd/cc.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innd/cc.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: cc.c 10523 2021-01-17 21:52:00Z iulius $
-**
+/*
 **  Routines for the control channel.
 **
 **  Create a Unix-domain datagram socket that processes on the local server
diff -Nurp inn-2.6.4/innd/chan.c inn-2.6.5/innd/chan.c
--- inn-2.6.4/innd/chan.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innd/chan.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: chan.c 10523 2021-01-17 21:52:00Z iulius $
-**
+/*
 **  I/O channel (and buffer) processing.
 **
 **  This file is the heart of innd.  Everything innd does is represented by
diff -Nurp inn-2.6.4/innd/icd.c inn-2.6.5/innd/icd.c
--- inn-2.6.4/innd/icd.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innd/icd.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: icd.c 9659 2014-08-30 08:08:11Z iulius $
-**
+/*
 **  Routines to read and write the active file.
 */
 
diff -Nurp inn-2.6.4/innd/innd.c inn-2.6.5/innd/innd.c
--- inn-2.6.4/innd/innd.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innd/innd.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: innd.c 10514 2021-01-15 22:35:44Z iulius $
-**
+/*
 **  Variable definitions, miscellany, and main().
 */
 
@@ -481,7 +480,7 @@ main(int ac, char *av[])
 	    case 't':	Mode = OMthrottled;	break;
 	    }
 	    if (Mode != OMrunning)
-                ModeReason = concat(OMpaused ? "Paus" : "Throttl",
+                ModeReason = concat(Mode == OMpaused ? "Paus" : "Throttl",
                                     "ed from the command line", (char *) 0);
 	    break;
 	case 'N':
diff -Nurp inn-2.6.4/innd/innd.h inn-2.6.5/innd/innd.h
--- inn-2.6.4/innd/innd.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innd/innd.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: innd.h 10523 2021-01-17 21:52:00Z iulius $
-**
+/*
 **  Many of the data types used here have abbreviations, such as CT for a
 **  channel type.  Here are a list of the conventions and meanings:
 **
diff -Nurp inn-2.6.4/innd/keywords.c inn-2.6.5/innd/keywords.c
--- inn-2.6.4/innd/keywords.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innd/keywords.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: keywords.c 9363 2011-08-21 23:22:01Z eagle $
-**
+/*
 **  Optional keyword generation code.
 **
 **  Additional code for sake of manufacturing Keywords: headers out of air in
diff -Nurp inn-2.6.4/innd/lc.c inn-2.6.5/innd/lc.c
--- inn-2.6.4/innd/lc.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innd/lc.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: lc.c 9841 2015-05-02 16:27:37Z iulius $
-**
+/*
 **  Routines for the local connect channel.  Create a Unix-domain stream
 **  socket that processes on the local server connect to.  Once the
 **  connection is set up, we speak NNTP.  The connect channel is used only
@@ -91,7 +90,7 @@ LCsetup(void)
     }
 
     /* Set it up to wait for connections. */
-    if (listen(i, MAXLISTEN) < 0) {
+    if (listen(i, innconf->maxlisten) < 0) {
 	syslog(L_FATAL, "%s cant listen %s %m", LogName, LCpath);
 	exit(1);
     }
diff -Nurp inn-2.6.4/innd/nc.c inn-2.6.5/innd/nc.c
--- inn-2.6.4/innd/nc.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innd/nc.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: nc.c 10305 2018-12-02 14:21:56Z iulius $
-**
+/*
 **  Routines for the NNTP channel.  Other channels get the descriptors which
 **  we turn into NNTP channels, and over which we speak NNTP.
 */
diff -Nurp inn-2.6.4/innd/newsfeeds.c inn-2.6.5/innd/newsfeeds.c
--- inn-2.6.4/innd/newsfeeds.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innd/newsfeeds.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: newsfeeds.c 10122 2016-11-25 22:39:35Z iulius $
-**
+/*
 **  Routines for the in-core data structures for the newsfeeds file.
 */
 
diff -Nurp inn-2.6.4/innd/ng.c inn-2.6.5/innd/ng.c
--- inn-2.6.4/innd/ng.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innd/ng.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: ng.c 9911 2015-07-04 21:32:56Z iulius $
-**
+/*
 **  Routine for the in-core data structures for the active and newsfeeds
 **  files.
 */
diff -Nurp inn-2.6.4/innd/perl.c inn-2.6.5/innd/perl.c
--- inn-2.6.4/innd/perl.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innd/perl.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: perl.c 10305 2018-12-02 14:21:56Z iulius $
-**
+/*
 **  Perl filtering support for innd.
 **
 **  Originally written by Christophe Wolfhugel <wolf@pasteur.fr> (although
diff -Nurp inn-2.6.4/innd/proc.c inn-2.6.5/innd/proc.c
--- inn-2.6.4/innd/proc.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innd/proc.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: proc.c 9904 2015-06-20 17:23:51Z iulius $
-**
+/*
 **  Process control routines.
 */
 
diff -Nurp inn-2.6.4/innd/python.c inn-2.6.5/innd/python.c
--- inn-2.6.4/innd/python.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innd/python.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: python.c 10442 2020-12-09 21:04:31Z iulius $
-**
+/*
 **  Embed Python in the style of innd's Perl stuff.
 **
 **  Written by G.J. Andruk <meowing@banet.net> patterned after Tcl/Perl work
diff -Nurp inn-2.6.4/innd/rc.c inn-2.6.5/innd/rc.c
--- inn-2.6.4/innd/rc.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innd/rc.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: rc.c 10523 2021-01-17 21:52:00Z iulius $
-**
+/*
 **  Routines for the remote connect channel.  Create an Internet stream
 **  socket that processes connect to.  If the incoming site is not one of
 **  our feeds, then we optionally pass the connection off to the standard
@@ -1513,8 +1512,6 @@ RCwritelist(char *filename)
         if (*p == '/')
 	   q = p + 1;
 
-    fprintf (F, "##  $Id: rc.c 10523 2021-01-17 21:52:00Z iulius $\n");
-    fprintf (F, "##\n");
     fprintf (F, "##  %s -- Configuration of incoming news feeds\n", q);
     free(r);
     fprintf (F, "##\n\n");
@@ -1839,7 +1836,7 @@ RCsetup(void)
     for (i = 0; i < count; i++) {
         if (fds[i] < 0)
             continue;
-        if (listen(fds[i], MAXLISTEN) < 0) {
+        if (listen(fds[i], innconf->maxlisten) < 0) {
             if (i != 0 && errno == EADDRINUSE)
                 continue;
             syswarn("SERVER cant listen to socket");
diff -Nurp inn-2.6.4/innd/site.c inn-2.6.5/innd/site.c
--- inn-2.6.4/innd/site.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innd/site.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: site.c 10305 2018-12-02 14:21:56Z iulius $
-**
+/*
 **  Routines to implement site-feeding.  Mainly working with channels to
 **  do buffering and determine what to send.
 */
diff -Nurp inn-2.6.4/innd/status.c inn-2.6.5/innd/status.c
--- inn-2.6.4/innd/status.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innd/status.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: status.c 10305 2018-12-02 14:21:56Z iulius $
-**
+/*
 **  Periodic status reporting.
 */
 #include "config.h"
@@ -285,6 +284,10 @@ STATUSsummary(void)
   fprintf (F, "               Perl filtering: %s\n", 
 	   PerlFilterActive ? "enabled" : "disabled");
 #endif
+#ifdef DO_PYTHON
+  fprintf (F, "             Python filtering: %s\n",
+           PythonFilterActive ? "enabled" : "disabled");
+#endif
 
   fputc ('\n', F) ;
 
diff -Nurp inn-2.6.4/innd/tinyleaf.c inn-2.6.5/innd/tinyleaf.c
--- inn-2.6.4/innd/tinyleaf.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innd/tinyleaf.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: tinyleaf.c 9767 2014-12-07 21:13:43Z iulius $
-**
+/*
 **  An extremely lightweight receive-only NNTP server.
 **
 **  Copyright 2003, 2004 Russ Allbery <eagle@eyrie.org>
diff -Nurp inn-2.6.4/innd/util.c inn-2.6.5/innd/util.c
--- inn-2.6.4/innd/util.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innd/util.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: util.c 9941 2015-09-05 18:03:04Z eagle $
-**
+/*
 **  Various miscellaneous utility functions for innd internal use.
 */
 
diff -Nurp inn-2.6.4/innd/wip.c inn-2.6.5/innd/wip.c
--- inn-2.6.4/innd/wip.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innd/wip.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: wip.c 8709 2009-11-06 21:47:11Z iulius $
-**
+/*
 ** Routines for keeping track of incoming articles, articles that haven't
 ** acked from a duplex channel feed, and history caching.
 **
diff -Nurp inn-2.6.4/innfeed/Makefile inn-2.6.5/innfeed/Makefile
--- inn-2.6.4/innfeed/Makefile	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innfeed/Makefile	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: Makefile 10100 2016-11-04 22:24:26Z iulius $
-
 include ../Makefile.global
 
 top	      = ..
diff -Nurp inn-2.6.4/innfeed/article.c inn-2.6.5/innfeed/article.c
--- inn-2.6.4/innfeed/article.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innfeed/article.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: article.c 10009 2016-05-05 12:39:19Z iulius $
-**
+/*
 **  The Article class for innfeed.
 **
 **  Written by James Brister <brister@vix.com>
diff -Nurp inn-2.6.4/innfeed/article.h inn-2.6.5/innfeed/article.h
--- inn-2.6.4/innfeed/article.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innfeed/article.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: article.h 6647 2004-01-25 20:06:42Z rra $
-**
+/*
 **  The public interface to articles.
 **
 **  Written by James Brister <brister@vix.com>
diff -Nurp inn-2.6.4/innfeed/buffer.c inn-2.6.5/innfeed/buffer.c
--- inn-2.6.4/innfeed/buffer.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innfeed/buffer.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: buffer.c 10009 2016-05-05 12:39:19Z iulius $
-**
+/*
 **  The Buffer class for innfeed.
 **
 **  Written by James Brister <brister@vix.com>
diff -Nurp inn-2.6.4/innfeed/buffer.h inn-2.6.5/innfeed/buffer.h
--- inn-2.6.4/innfeed/buffer.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innfeed/buffer.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: buffer.h 7284 2005-06-07 06:38:08Z eagle $
-**
+/*
 **  The public interface to the Buffer class.
 **
 **  Written by James Brister <brister@vix.com>
diff -Nurp inn-2.6.4/innfeed/config_l.c inn-2.6.5/innfeed/config_l.c
--- inn-2.6.4/innfeed/config_l.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innfeed/config_l.c	2022-02-18 20:36:57.000000000 +0100
@@ -485,8 +485,7 @@ int yy_flex_debug = 0;
 char *yytext;
 #line 1 "configfile.l"
 #line 2 "configfile.l"
-/*  $Id: configfile.l 10305 2018-12-02 14:21:56Z iulius $
-**
+/*
 **  A flex input file for the innfeed config file.
 **
 **  Written by James Brister <brister@vix.com>
@@ -550,9 +549,9 @@ struct includeFile {
 } include_stack[MAX_INCLUDE_DEPTH];
 int include_stack_ptr = 0;
 
-#line 554 "lex.yy.c"
+#line 553 "lex.yy.c"
 
-#line 556 "lex.yy.c"
+#line 555 "lex.yy.c"
 
 #define INITIAL 0
 #define incl 1
@@ -773,10 +772,10 @@ YY_DECL
 		}
 
 	{
-#line 73 "configfile.l"
+#line 72 "configfile.l"
 
 
-#line 780 "lex.yy.c"
+#line 779 "lex.yy.c"
 
 	while ( /*CONSTCOND*/1 )		/* loops until end-of-file is reached */
 		{
@@ -837,42 +836,42 @@ do_action:	/* This label is used only to
 case 1:
 /* rule 1 can match eol */
 YY_RULE_SETUP
-#line 75 "configfile.l"
+#line 74 "configfile.l"
 lineCount++ ;
 	YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 77 "configfile.l"
+#line 76 "configfile.l"
 { return (COLON) ; }
 	YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 79 "configfile.l"
+#line 78 "configfile.l"
 { return (LBRACE) ; }
 	YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 81 "configfile.l"
+#line 80 "configfile.l"
 { return (RBRACE) ; }
 	YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 83 "configfile.l"
+#line 82 "configfile.l"
 { return (PEER) ; }
 	YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 85 "configfile.l"
+#line 84 "configfile.l"
 BEGIN(incl);
 	YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 87 "configfile.l"
+#line 86 "configfile.l"
 /* eat the whitespace before include filename */
 	YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 89 "configfile.l"
+#line 88 "configfile.l"
 {
   if (include_stack_ptr == MAX_INCLUDE_DEPTH - 1)
     {
@@ -907,7 +906,7 @@ YY_RULE_SETUP
 	YY_BREAK
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(incl):
-#line 121 "configfile.l"
+#line 120 "configfile.l"
 {
   if ( include_stack_ptr <= 0 )
     yyterminate();
@@ -921,22 +920,22 @@ case YY_STATE_EOF(incl):
 	YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 132 "configfile.l"
+#line 131 "configfile.l"
 { return (GROUP) ; }
 	YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 134 "configfile.l"
+#line 133 "configfile.l"
 { (void) 0 ; }
 	YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 136 "configfile.l"
+#line 135 "configfile.l"
 { (void) 1 ; }
 	YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 138 "configfile.l"
+#line 137 "configfile.l"
 {
 	switch (yytext[2]) {
 		case '\\': yylval.chr = '\\' ; break ;
@@ -952,19 +951,19 @@ YY_RULE_SETUP
 	YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 151 "configfile.l"
+#line 150 "configfile.l"
 { yylval.chr = yytext[1] ; return (CHAR) ; }
 	YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 153 "configfile.l"
+#line 152 "configfile.l"
 { yylval.chr = (char)strtol(&yytext[2], (char **)NULL, 8);
 			  return (CHAR) ;}
 	YY_BREAK
 case 15:
 /* rule 15 can match eol */
 YY_RULE_SETUP
-#line 156 "configfile.l"
+#line 155 "configfile.l"
 {{
 	size_t i ;
 
@@ -1056,17 +1055,17 @@ YY_RULE_SETUP
 	YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 245 "configfile.l"
+#line 244 "configfile.l"
 { yylval.integer = atoi (yytext) ; return (IVAL) ; }
 	YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 247 "configfile.l"
+#line 246 "configfile.l"
 { yylval.real = atof (yytext) ; return (RVAL) ; }
 	YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 249 "configfile.l"
+#line 248 "configfile.l"
 {
   yylval.name = xstrdup (yytext) ;
   if (strcasecmp (yylval.name,"false") == 0)
@@ -1079,10 +1078,10 @@ YY_RULE_SETUP
 	YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 259 "configfile.l"
+#line 258 "configfile.l"
 ECHO;
 	YY_BREAK
-#line 1086 "lex.yy.c"
+#line 1085 "lex.yy.c"
 
 	case YY_END_OF_BUFFER:
 		{
@@ -2088,7 +2087,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 259 "configfile.l"
+#line 258 "configfile.l"
 
 
 
diff -Nurp inn-2.6.4/innfeed/config_y.c inn-2.6.5/innfeed/config_y.c
--- inn-2.6.4/innfeed/config_y.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innfeed/config_y.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 3.3.2.  */
+/* A Bison parser, made by GNU Bison 3.7.5.  */
 
 /* Bison implementation for Yacc-like parsers in C
 
-   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation,
+   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
    Inc.
 
    This program is free software: you can redistribute it and/or modify
@@ -34,6 +34,10 @@
 /* C LALR(1) parser skeleton written by Richard Stallman, by
    simplifying the original so-called "semantic" parser.  */
 
+/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
+   especially those whose name start with YY_ or yy_.  They are
+   private implementation details that can be changed or removed.  */
+
 /* All symbols defined below should begin with yy or YY, to avoid
    infringing on user name space.  This should be done even for local
    variables, as they might otherwise be expanded by user macros.
@@ -41,14 +45,11 @@
    define necessary library symbols; they are noted "INFRINGES ON
    USER NAME SPACE" below.  */
 
-/* Undocumented macros, especially those whose name start with YY_,
-   are private implementation details.  Do not rely on them.  */
-
-/* Identify Bison output.  */
-#define YYBISON 1
+/* Identify Bison output, and Bison version.  */
+#define YYBISON 30705
 
-/* Bison version.  */
-#define YYBISON_VERSION "3.3.2"
+/* Bison version string.  */
+#define YYBISON_VERSION "3.7.5"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -66,10 +67,9 @@
 
 
 /* First part of user prologue.  */
-#line 1 "configfile.y" /* yacc.c:337  */
+#line 1 "configfile.y"
 
-/*  $Id: configfile.y 10394 2020-11-12 20:10:14Z iulius $
-**
+/*
 **  A yacc input file for the innfeed config file.
 **
 **  Written by James Brister <brister@vix.com>
@@ -722,7 +722,17 @@ static int doCallbacks (void)
 
 static char *key ;
 
-#line 726 "y.tab.c" /* yacc.c:337  */
+#line 726 "y.tab.c"
+
+# ifndef YY_CAST
+#  ifdef __cplusplus
+#   define YY_CAST(Type, Val) static_cast<Type> (Val)
+#   define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
+#  else
+#   define YY_CAST(Type, Val) ((Type) (Val))
+#   define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
+#  endif
+# endif
 # ifndef YY_NULLPTR
 #  if defined __cplusplus
 #   if 201103L <= __cplusplus
@@ -735,16 +745,8 @@ static char *key ;
 #  endif
 # endif
 
-/* Enabling verbose error messages.  */
-#ifdef YYERROR_VERBOSE
-# undef YYERROR_VERBOSE
-# define YYERROR_VERBOSE 1
-#else
-# define YYERROR_VERBOSE 0
-#endif
-
-/* In a future release of Bison, this section will be replaced
-   by #include "y.tab.h".  */
+/* Use api.header.include to #include this header
+   instead of duplicating it here.  */
 #ifndef YY_YY_Y_TAB_H_INCLUDED
 # define YY_YY_Y_TAB_H_INCLUDED
 /* Debug traces.  */
@@ -755,29 +757,38 @@ static char *key ;
 extern int yydebug;
 #endif
 
-/* Token type.  */
+/* Token kinds.  */
 #ifndef YYTOKENTYPE
 # define YYTOKENTYPE
   enum yytokentype
   {
-    PEER = 258,
-    GROUP = 259,
-    IVAL = 260,
-    RVAL = 261,
-    NAME = 262,
-    XSTRING = 263,
-    SCOPE = 264,
-    COLON = 265,
-    LBRACE = 266,
-    RBRACE = 267,
-    TRUEBVAL = 268,
-    FALSEBVAL = 269,
-    CHAR = 270,
-    WORD = 271,
-    IP_ADDRESS = 272
+    YYEMPTY = -2,
+    YYEOF = 0,                     /* "end of file"  */
+    YYerror = 256,                 /* error  */
+    YYUNDEF = 257,                 /* "invalid token"  */
+    PEER = 258,                    /* PEER  */
+    GROUP = 259,                   /* GROUP  */
+    IVAL = 260,                    /* IVAL  */
+    RVAL = 261,                    /* RVAL  */
+    NAME = 262,                    /* NAME  */
+    XSTRING = 263,                 /* XSTRING  */
+    SCOPE = 264,                   /* SCOPE  */
+    COLON = 265,                   /* COLON  */
+    LBRACE = 266,                  /* LBRACE  */
+    RBRACE = 267,                  /* RBRACE  */
+    TRUEBVAL = 268,                /* TRUEBVAL  */
+    FALSEBVAL = 269,               /* FALSEBVAL  */
+    CHAR = 270,                    /* CHAR  */
+    WORD = 271,                    /* WORD  */
+    IP_ADDRESS = 272               /* IP_ADDRESS  */
   };
+  typedef enum yytokentype yytoken_kind_t;
 #endif
-/* Tokens.  */
+/* Token kinds.  */
+#define YYEMPTY -2
+#define YYEOF 0
+#define YYerror 256
+#define YYUNDEF 257
 #define PEER 258
 #define GROUP 259
 #define IVAL 260
@@ -796,10 +807,9 @@ extern int yydebug;
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-
 union YYSTYPE
 {
-#line 657 "configfile.y" /* yacc.c:352  */
+#line 656 "configfile.y"
 
     scope *scp ;
     value *val ;
@@ -809,9 +819,9 @@ union YYSTYPE
     char *string ;
     char chr ;
 
-#line 813 "y.tab.c" /* yacc.c:352  */
-};
+#line 823 "y.tab.c"
 
+};
 typedef union YYSTYPE YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define YYSTYPE_IS_DECLARED 1
@@ -823,6 +833,41 @@ extern YYSTYPE yylval;
 int yyparse (void);
 
 #endif /* !YY_YY_Y_TAB_H_INCLUDED  */
+/* Symbol kind.  */
+enum yysymbol_kind_t
+{
+  YYSYMBOL_YYEMPTY = -2,
+  YYSYMBOL_YYEOF = 0,                      /* "end of file"  */
+  YYSYMBOL_YYerror = 1,                    /* error  */
+  YYSYMBOL_YYUNDEF = 2,                    /* "invalid token"  */
+  YYSYMBOL_PEER = 3,                       /* PEER  */
+  YYSYMBOL_GROUP = 4,                      /* GROUP  */
+  YYSYMBOL_IVAL = 5,                       /* IVAL  */
+  YYSYMBOL_RVAL = 6,                       /* RVAL  */
+  YYSYMBOL_NAME = 7,                       /* NAME  */
+  YYSYMBOL_XSTRING = 8,                    /* XSTRING  */
+  YYSYMBOL_SCOPE = 9,                      /* SCOPE  */
+  YYSYMBOL_COLON = 10,                     /* COLON  */
+  YYSYMBOL_LBRACE = 11,                    /* LBRACE  */
+  YYSYMBOL_RBRACE = 12,                    /* RBRACE  */
+  YYSYMBOL_TRUEBVAL = 13,                  /* TRUEBVAL  */
+  YYSYMBOL_FALSEBVAL = 14,                 /* FALSEBVAL  */
+  YYSYMBOL_CHAR = 15,                      /* CHAR  */
+  YYSYMBOL_WORD = 16,                      /* WORD  */
+  YYSYMBOL_IP_ADDRESS = 17,                /* IP_ADDRESS  */
+  YYSYMBOL_YYACCEPT = 18,                  /* $accept  */
+  YYSYMBOL_input = 19,                     /* input  */
+  YYSYMBOL_20_1 = 20,                      /* $@1  */
+  YYSYMBOL_scope = 21,                     /* scope  */
+  YYSYMBOL_entries = 22,                   /* entries  */
+  YYSYMBOL_entry = 23,                     /* entry  */
+  YYSYMBOL_24_2 = 24,                      /* $@2  */
+  YYSYMBOL_25_3 = 25,                      /* $@3  */
+  YYSYMBOL_26_4 = 26,                      /* $@4  */
+  YYSYMBOL_value = 27                      /* value  */
+};
+typedef enum yysymbol_kind_t yysymbol_kind_t;
+
 
 
 
@@ -830,28 +875,87 @@ int yyparse (void);
 # undef short
 #endif
 
-#ifdef YYTYPE_UINT8
-typedef YYTYPE_UINT8 yytype_uint8;
-#else
-typedef unsigned char yytype_uint8;
+/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
+   <limits.h> and (if available) <stdint.h> are included
+   so that the code can choose integer types of a good width.  */
+
+#ifndef __PTRDIFF_MAX__
+# include <limits.h> /* INFRINGES ON USER NAME SPACE */
+# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
+#  include <stdint.h> /* INFRINGES ON USER NAME SPACE */
+#  define YY_STDINT_H
+# endif
 #endif
 
-#ifdef YYTYPE_INT8
-typedef YYTYPE_INT8 yytype_int8;
+/* Narrow types that promote to a signed type and that can represent a
+   signed or unsigned integer of at least N bits.  In tables they can
+   save space and decrease cache pressure.  Promoting to a signed type
+   helps avoid bugs in integer arithmetic.  */
+
+#ifdef __INT_LEAST8_MAX__
+typedef __INT_LEAST8_TYPE__ yytype_int8;
+#elif defined YY_STDINT_H
+typedef int_least8_t yytype_int8;
 #else
 typedef signed char yytype_int8;
 #endif
 
-#ifdef YYTYPE_UINT16
-typedef YYTYPE_UINT16 yytype_uint16;
+#ifdef __INT_LEAST16_MAX__
+typedef __INT_LEAST16_TYPE__ yytype_int16;
+#elif defined YY_STDINT_H
+typedef int_least16_t yytype_int16;
 #else
-typedef unsigned short yytype_uint16;
+typedef short yytype_int16;
 #endif
 
-#ifdef YYTYPE_INT16
-typedef YYTYPE_INT16 yytype_int16;
+/* Work around bug in HP-UX 11.23, which defines these macros
+   incorrectly for preprocessor constants.  This workaround can likely
+   be removed in 2023, as HPE has promised support for HP-UX 11.23
+   (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
+   <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>.  */
+#ifdef __hpux
+# undef UINT_LEAST8_MAX
+# undef UINT_LEAST16_MAX
+# define UINT_LEAST8_MAX 255
+# define UINT_LEAST16_MAX 65535
+#endif
+
+#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
+typedef __UINT_LEAST8_TYPE__ yytype_uint8;
+#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
+       && UINT_LEAST8_MAX <= INT_MAX)
+typedef uint_least8_t yytype_uint8;
+#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
+typedef unsigned char yytype_uint8;
 #else
-typedef short yytype_int16;
+typedef short yytype_uint8;
+#endif
+
+#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
+typedef __UINT_LEAST16_TYPE__ yytype_uint16;
+#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
+       && UINT_LEAST16_MAX <= INT_MAX)
+typedef uint_least16_t yytype_uint16;
+#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
+typedef unsigned short yytype_uint16;
+#else
+typedef int yytype_uint16;
+#endif
+
+#ifndef YYPTRDIFF_T
+# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
+#  define YYPTRDIFF_T __PTRDIFF_TYPE__
+#  define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
+# elif defined PTRDIFF_MAX
+#  ifndef ptrdiff_t
+#   include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+#  endif
+#  define YYPTRDIFF_T ptrdiff_t
+#  define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
+# else
+#  define YYPTRDIFF_T long
+#  define YYPTRDIFF_MAXIMUM LONG_MAX
+# endif
 #endif
 
 #ifndef YYSIZE_T
@@ -859,7 +963,7 @@ typedef short yytype_int16;
 #  define YYSIZE_T __SIZE_TYPE__
 # elif defined size_t
 #  define YYSIZE_T size_t
-# elif ! defined YYSIZE_T
+# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
 #  define YYSIZE_T size_t
 # else
@@ -867,7 +971,20 @@ typedef short yytype_int16;
 # endif
 #endif
 
-#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+#define YYSIZE_MAXIMUM                                  \
+  YY_CAST (YYPTRDIFF_T,                                 \
+           (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1)  \
+            ? YYPTRDIFF_MAXIMUM                         \
+            : YY_CAST (YYSIZE_T, -1)))
+
+#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
+
+
+/* Stored state numbers (used for stacks). */
+typedef yytype_int8 yy_state_t;
+
+/* State numbers in computations.  */
+typedef int yy_state_fast_t;
 
 #ifndef YY_
 # if defined YYENABLE_NLS && YYENABLE_NLS
@@ -881,38 +998,37 @@ typedef short yytype_int16;
 # endif
 #endif
 
-#ifndef YY_ATTRIBUTE
-# if (defined __GNUC__                                               \
-      && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__)))  \
-     || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
-#  define YY_ATTRIBUTE(Spec) __attribute__(Spec)
-# else
-#  define YY_ATTRIBUTE(Spec) /* empty */
-# endif
-#endif
 
 #ifndef YY_ATTRIBUTE_PURE
-# define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
+# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
+#  define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
+# else
+#  define YY_ATTRIBUTE_PURE
+# endif
 #endif
 
 #ifndef YY_ATTRIBUTE_UNUSED
-# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
+# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
+#  define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
+# else
+#  define YY_ATTRIBUTE_UNUSED
+# endif
 #endif
 
 /* Suppress unused-variable warnings by "using" E.  */
 #if ! defined lint || defined __GNUC__
-# define YYUSE(E) ((void) (E))
+# define YY_USE(E) ((void) (E))
 #else
-# define YYUSE(E) /* empty */
+# define YY_USE(E) /* empty */
 #endif
 
 #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
 /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
-    _Pragma ("GCC diagnostic push") \
-    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                            \
+    _Pragma ("GCC diagnostic push")                                     \
+    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")              \
     _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
-# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END      \
     _Pragma ("GCC diagnostic pop")
 #else
 # define YY_INITIAL_VALUE(Value) Value
@@ -925,8 +1041,22 @@ typedef short yytype_int16;
 # define YY_INITIAL_VALUE(Value) /* Nothing. */
 #endif
 
+#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
+# define YY_IGNORE_USELESS_CAST_BEGIN                          \
+    _Pragma ("GCC diagnostic push")                            \
+    _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
+# define YY_IGNORE_USELESS_CAST_END            \
+    _Pragma ("GCC diagnostic pop")
+#endif
+#ifndef YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_END
+#endif
+
+
+#define YY_ASSERT(E) ((void) (0 && (E)))
 
-#if ! defined yyoverflow || YYERROR_VERBOSE
+#if !defined yyoverflow
 
 /* The parser invokes alloca or malloc; define the necessary symbols.  */
 
@@ -991,8 +1121,7 @@ void free (void *); /* INFRINGES ON USER
 #   endif
 #  endif
 # endif
-#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
-
+#endif /* !defined yyoverflow */
 
 #if (! defined yyoverflow \
      && (! defined __cplusplus \
@@ -1001,17 +1130,17 @@ void free (void *); /* INFRINGES ON USER
 /* A type that is properly aligned for any stack member.  */
 union yyalloc
 {
-  yytype_int16 yyss_alloc;
+  yy_state_t yyss_alloc;
   YYSTYPE yyvs_alloc;
 };
 
 /* The size of the maximum gap between one aligned stack and the next.  */
-# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
 
 /* The size of an array large to enough to hold all stacks, each with
    N elements.  */
 # define YYSTACK_BYTES(N) \
-     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+     ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
       + YYSTACK_GAP_MAXIMUM)
 
 # define YYCOPY_NEEDED 1
@@ -1024,11 +1153,11 @@ union yyalloc
 # define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
     do                                                                  \
       {                                                                 \
-        YYSIZE_T yynewbytes;                                            \
+        YYPTRDIFF_T yynewbytes;                                         \
         YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
         Stack = &yyptr->Stack_alloc;                                    \
-        yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
-        yyptr += yynewbytes / sizeof (*yyptr);                          \
+        yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
+        yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \
       }                                                                 \
     while (0)
 
@@ -1040,12 +1169,12 @@ union yyalloc
 # ifndef YYCOPY
 #  if defined __GNUC__ && 1 < __GNUC__
 #   define YYCOPY(Dst, Src, Count) \
-      __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
+      __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
 #  else
 #   define YYCOPY(Dst, Src, Count)              \
       do                                        \
         {                                       \
-          YYSIZE_T yyi;                         \
+          YYPTRDIFF_T yyi;                      \
           for (yyi = 0; yyi < (Count); yyi++)   \
             (Dst)[yyi] = (Src)[yyi];            \
         }                                       \
@@ -1068,17 +1197,20 @@ union yyalloc
 /* YYNSTATES -- Number of states.  */
 #define YYNSTATES  33
 
-#define YYUNDEFTOK  2
+/* YYMAXUTOK -- Last valid token kind.  */
 #define YYMAXUTOK   272
 
+
 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
    as returned by yylex, with out-of-bounds checking.  */
-#define YYTRANSLATE(YYX)                                                \
-  ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+#define YYTRANSLATE(YYX)                                \
+  (0 <= (YYX) && (YYX) <= YYMAXUTOK                     \
+   ? YY_CAST (yysymbol_kind_t, yytranslate[YYX])        \
+   : YYSYMBOL_YYUNDEF)
 
 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
    as returned by yylex.  */
-static const yytype_uint8 yytranslate[] =
+static const yytype_int8 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -1112,44 +1244,58 @@ static const yytype_uint8 yytranslate[]
 
 #if YYDEBUG
   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
-static const yytype_uint16 yyrline[] =
+static const yytype_int16 yyrline[] =
 {
-       0,   684,   684,   684,   690,   692,   693,   694,   701,   701,
-     708,   708,   715,   723,   723,   730,   736,   741,   747,   753,
-     758,   763
+       0,   683,   683,   683,   689,   691,   692,   693,   700,   700,
+     707,   707,   714,   722,   722,   729,   735,   740,   746,   752,
+     757,   762
 };
 #endif
 
-#if YYDEBUG || YYERROR_VERBOSE || 0
+/** Accessing symbol of state STATE.  */
+#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
+
+#if YYDEBUG || 0
+/* The user-facing name of the symbol whose (internal) number is
+   YYSYMBOL.  No bounds checking.  */
+static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
+
 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
 static const char *const yytname[] =
 {
-  "$end", "error", "$undefined", "PEER", "GROUP", "IVAL", "RVAL", "NAME",
-  "XSTRING", "SCOPE", "COLON", "LBRACE", "RBRACE", "TRUEBVAL", "FALSEBVAL",
-  "CHAR", "WORD", "IP_ADDRESS", "$accept", "input", "$@1", "scope",
-  "entries", "entry", "$@2", "$@3", "$@4", "value", YY_NULLPTR
+  "\"end of file\"", "error", "\"invalid token\"", "PEER", "GROUP",
+  "IVAL", "RVAL", "NAME", "XSTRING", "SCOPE", "COLON", "LBRACE", "RBRACE",
+  "TRUEBVAL", "FALSEBVAL", "CHAR", "WORD", "IP_ADDRESS", "$accept",
+  "input", "$@1", "scope", "entries", "entry", "$@2", "$@3", "$@4",
+  "value", YY_NULLPTR
 };
+
+static const char *
+yysymbol_name (yysymbol_kind_t yysymbol)
+{
+  return yytname[yysymbol];
+}
 #endif
 
-# ifdef YYPRINT
+#ifdef YYPRINT
 /* YYTOKNUM[NUM] -- (External) token number corresponding to the
    (internal) symbol number NUM (which must be that of a token).  */
-static const yytype_uint16 yytoknum[] =
+static const yytype_int16 yytoknum[] =
 {
        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
      265,   266,   267,   268,   269,   270,   271,   272
 };
-# endif
+#endif
 
-#define YYPACT_NINF -12
+#define YYPACT_NINF (-12)
 
-#define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-12)))
+#define yypact_value_is_default(Yyn) \
+  ((Yyn) == YYPACT_NINF)
 
-#define YYTABLE_NINF -5
+#define YYTABLE_NINF (-5)
 
-#define yytable_value_is_error(Yytable_value) \
+#define yytable_value_is_error(Yyn) \
   0
 
   /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
@@ -1165,7 +1311,7 @@ static const yytype_int8 yypact[] =
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
      Performed when YYTABLE does not specify something else to do.  Zero
      means the default is an error.  */
-static const yytype_uint8 yydefact[] =
+static const yytype_int8 yydefact[] =
 {
        2,     0,     5,     1,     0,     7,     0,     0,    13,     6,
        0,     0,     0,     0,     8,    10,    12,     0,     5,     5,
@@ -1182,7 +1328,7 @@ static const yytype_int8 yypgoto[] =
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int8 yydefgoto[] =
 {
-      -1,     1,     2,    28,    29,     9,    18,    19,    13,    27
+       0,     1,     2,    28,    29,     9,    18,    19,    13,    27
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -1206,7 +1352,7 @@ static const yytype_int8 yycheck[] =
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
      symbol of state STATE-NUM.  */
-static const yytype_uint8 yystos[] =
+static const yytype_int8 yystos[] =
 {
        0,    19,    20,     0,    22,     1,     3,     4,    16,    23,
       16,    16,    16,    26,    11,    11,    11,    10,    24,    25,
@@ -1215,7 +1361,7 @@ static const yytype_uint8 yystos[] =
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
-static const yytype_uint8 yyr1[] =
+static const yytype_int8 yyr1[] =
 {
        0,    18,    20,    19,    21,    22,    22,    22,    24,    23,
       25,    23,    23,    26,    23,    27,    27,    27,    27,    27,
@@ -1223,7 +1369,7 @@ static const yytype_uint8 yyr1[] =
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
-static const yytype_uint8 yyr2[] =
+static const yytype_int8 yyr2[] =
 {
        0,     2,     0,     2,     1,     0,     2,     2,     0,     6,
        0,     6,     3,     0,     4,     1,     1,     1,     1,     1,
@@ -1231,10 +1377,10 @@ static const yytype_uint8 yyr2[] =
 };
 
 
+enum { YYENOMEM = -2 };
+
 #define yyerrok         (yyerrstatus = 0)
 #define yyclearin       (yychar = YYEMPTY)
-#define YYEMPTY         (-2)
-#define YYEOF           0
 
 #define YYACCEPT        goto yyacceptlab
 #define YYABORT         goto yyabortlab
@@ -1260,10 +1406,9 @@ static const yytype_uint8 yyr2[] =
       }                                                           \
   while (0)
 
-/* Error token number */
-#define YYTERROR        1
-#define YYERRCODE       256
-
+/* Backward compatibility with an undocumented macro.
+   Use YYerror or YYUNDEF. */
+#define YYERRCODE YYUNDEF
 
 
 /* Enable debugging if requested.  */
@@ -1281,18 +1426,18 @@ do {
 } while (0)
 
 /* This macro is provided for backward compatibility. */
-#ifndef YY_LOCATION_PRINT
-# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-#endif
+# ifndef YY_LOCATION_PRINT
+#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
 
 
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
+# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)                    \
 do {                                                                      \
   if (yydebug)                                                            \
     {                                                                     \
       YYFPRINTF (stderr, "%s ", Title);                                   \
       yy_symbol_print (stderr,                                            \
-                  Type, Value); \
+                  Kind, Value); \
       YYFPRINTF (stderr, "\n");                                           \
     }                                                                     \
 } while (0)
@@ -1303,17 +1448,20 @@ do {
 `-----------------------------------*/
 
 static void
-yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep)
+yy_symbol_value_print (FILE *yyo,
+                       yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
 {
   FILE *yyoutput = yyo;
-  YYUSE (yyoutput);
+  YY_USE (yyoutput);
   if (!yyvaluep)
     return;
 # ifdef YYPRINT
-  if (yytype < YYNTOKENS)
-    YYPRINT (yyo, yytoknum[yytype], *yyvaluep);
+  if (yykind < YYNTOKENS)
+    YYPRINT (yyo, yytoknum[yykind], *yyvaluep);
 # endif
-  YYUSE (yytype);
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+  YY_USE (yykind);
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 }
 
 
@@ -1322,12 +1470,13 @@ yy_symbol_value_print (FILE *yyo, int yy
 `---------------------------*/
 
 static void
-yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep)
+yy_symbol_print (FILE *yyo,
+                 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
 {
   YYFPRINTF (yyo, "%s %s (",
-             yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
+             yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
 
-  yy_symbol_value_print (yyo, yytype, yyvaluep);
+  yy_symbol_value_print (yyo, yykind, yyvaluep);
   YYFPRINTF (yyo, ")");
 }
 
@@ -1337,7 +1486,7 @@ yy_symbol_print (FILE *yyo, int yytype,
 `------------------------------------------------------------------*/
 
 static void
-yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
+yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
 {
   YYFPRINTF (stderr, "Stack now");
   for (; yybottom <= yytop; yybottom++)
@@ -1360,21 +1509,21 @@ do {
 `------------------------------------------------*/
 
 static void
-yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
+yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp,
+                 int yyrule)
 {
-  unsigned long yylno = yyrline[yyrule];
+  int yylno = yyrline[yyrule];
   int yynrhs = yyr2[yyrule];
   int yyi;
-  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
              yyrule - 1, yylno);
   /* The symbols being reduced.  */
   for (yyi = 0; yyi < yynrhs; yyi++)
     {
       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
       yy_symbol_print (stderr,
-                       yystos[yyssp[yyi + 1 - yynrhs]],
-                       &yyvsp[(yyi + 1) - (yynrhs)]
-                                              );
+                       YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
+                       &yyvsp[(yyi + 1) - (yynrhs)]);
       YYFPRINTF (stderr, "\n");
     }
 }
@@ -1389,8 +1538,8 @@ do {
    multiple parsers can coexist.  */
 int yydebug;
 #else /* !YYDEBUG */
-# define YYDPRINTF(Args)
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YYDPRINTF(Args) ((void) 0)
+# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
 # define YY_STACK_PRINT(Bottom, Top)
 # define YY_REDUCE_PRINT(Rule)
 #endif /* !YYDEBUG */
@@ -1413,254 +1562,30 @@ int yydebug;
 #endif
 
 
-#if YYERROR_VERBOSE
-
-# ifndef yystrlen
-#  if defined __GLIBC__ && defined _STRING_H
-#   define yystrlen strlen
-#  else
-/* Return the length of YYSTR.  */
-static YYSIZE_T
-yystrlen (const char *yystr)
-{
-  YYSIZE_T yylen;
-  for (yylen = 0; yystr[yylen]; yylen++)
-    continue;
-  return yylen;
-}
-#  endif
-# endif
-
-# ifndef yystpcpy
-#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
-#   define yystpcpy stpcpy
-#  else
-/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
-   YYDEST.  */
-static char *
-yystpcpy (char *yydest, const char *yysrc)
-{
-  char *yyd = yydest;
-  const char *yys = yysrc;
 
-  while ((*yyd++ = *yys++) != '\0')
-    continue;
 
-  return yyd - 1;
-}
-#  endif
-# endif
 
-# ifndef yytnamerr
-/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
-   quotes and backslashes, so that it's suitable for yyerror.  The
-   heuristic is that double-quoting is unnecessary unless the string
-   contains an apostrophe, a comma, or backslash (other than
-   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
-   null, do not copy; instead, return the length of what the result
-   would have been.  */
-static YYSIZE_T
-yytnamerr (char *yyres, const char *yystr)
-{
-  if (*yystr == '"')
-    {
-      YYSIZE_T yyn = 0;
-      char const *yyp = yystr;
-
-      for (;;)
-        switch (*++yyp)
-          {
-          case '\'':
-          case ',':
-            goto do_not_strip_quotes;
-
-          case '\\':
-            if (*++yyp != '\\')
-              goto do_not_strip_quotes;
-            else
-              goto append;
-
-          append:
-          default:
-            if (yyres)
-              yyres[yyn] = *yyp;
-            yyn++;
-            break;
-
-          case '"':
-            if (yyres)
-              yyres[yyn] = '\0';
-            return yyn;
-          }
-    do_not_strip_quotes: ;
-    }
-
-  if (! yyres)
-    return yystrlen (yystr);
-
-  return (YYSIZE_T) (yystpcpy (yyres, yystr) - yyres);
-}
-# endif
-
-/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
-   about the unexpected token YYTOKEN for the state stack whose top is
-   YYSSP.
-
-   Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is
-   not large enough to hold the message.  In that case, also set
-   *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
-   required number of bytes is too large to store.  */
-static int
-yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
-                yytype_int16 *yyssp, int yytoken)
-{
-  YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
-  YYSIZE_T yysize = yysize0;
-  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
-  /* Internationalized format string. */
-  const char *yyformat = YY_NULLPTR;
-  /* Arguments of yyformat. */
-  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
-  /* Number of reported tokens (one for the "unexpected", one per
-     "expected"). */
-  int yycount = 0;
-
-  /* There are many possibilities here to consider:
-     - If this state is a consistent state with a default action, then
-       the only way this function was invoked is if the default action
-       is an error action.  In that case, don't check for expected
-       tokens because there are none.
-     - The only way there can be no lookahead present (in yychar) is if
-       this state is a consistent state with a default action.  Thus,
-       detecting the absence of a lookahead is sufficient to determine
-       that there is no unexpected or expected token to report.  In that
-       case, just report a simple "syntax error".
-     - Don't assume there isn't a lookahead just because this state is a
-       consistent state with a default action.  There might have been a
-       previous inconsistent state, consistent state with a non-default
-       action, or user semantic action that manipulated yychar.
-     - Of course, the expected token list depends on states to have
-       correct lookahead information, and it depends on the parser not
-       to perform extra reductions after fetching a lookahead from the
-       scanner and before detecting a syntax error.  Thus, state merging
-       (from LALR or IELR) and default reductions corrupt the expected
-       token list.  However, the list is correct for canonical LR with
-       one exception: it will still contain any token that will not be
-       accepted due to an error action in a later state.
-  */
-  if (yytoken != YYEMPTY)
-    {
-      int yyn = yypact[*yyssp];
-      yyarg[yycount++] = yytname[yytoken];
-      if (!yypact_value_is_default (yyn))
-        {
-          /* Start YYX at -YYN if negative to avoid negative indexes in
-             YYCHECK.  In other words, skip the first -YYN actions for
-             this state because they are default actions.  */
-          int yyxbegin = yyn < 0 ? -yyn : 0;
-          /* Stay within bounds of both yycheck and yytname.  */
-          int yychecklim = YYLAST - yyn + 1;
-          int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
-          int yyx;
-
-          for (yyx = yyxbegin; yyx < yyxend; ++yyx)
-            if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
-                && !yytable_value_is_error (yytable[yyx + yyn]))
-              {
-                if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
-                  {
-                    yycount = 1;
-                    yysize = yysize0;
-                    break;
-                  }
-                yyarg[yycount++] = yytname[yyx];
-                {
-                  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
-                  if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
-                    yysize = yysize1;
-                  else
-                    return 2;
-                }
-              }
-        }
-    }
-
-  switch (yycount)
-    {
-# define YYCASE_(N, S)                      \
-      case N:                               \
-        yyformat = S;                       \
-      break
-    default: /* Avoid compiler warnings. */
-      YYCASE_(0, YY_("syntax error"));
-      YYCASE_(1, YY_("syntax error, unexpected %s"));
-      YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
-      YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
-      YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
-      YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
-# undef YYCASE_
-    }
-
-  {
-    YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
-    if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
-      yysize = yysize1;
-    else
-      return 2;
-  }
-
-  if (*yymsg_alloc < yysize)
-    {
-      *yymsg_alloc = 2 * yysize;
-      if (! (yysize <= *yymsg_alloc
-             && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
-        *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
-      return 1;
-    }
-
-  /* Avoid sprintf, as that infringes on the user's name space.
-     Don't have undefined behavior even if the translation
-     produced a string with the wrong number of "%s"s.  */
-  {
-    char *yyp = *yymsg;
-    int yyi = 0;
-    while ((*yyp = *yyformat) != '\0')
-      if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
-        {
-          yyp += yytnamerr (yyp, yyarg[yyi++]);
-          yyformat += 2;
-        }
-      else
-        {
-          yyp++;
-          yyformat++;
-        }
-  }
-  return 0;
-}
-#endif /* YYERROR_VERBOSE */
 
 /*-----------------------------------------------.
 | Release the memory associated to this symbol.  |
 `-----------------------------------------------*/
 
 static void
-yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
+yydestruct (const char *yymsg,
+            yysymbol_kind_t yykind, YYSTYPE *yyvaluep)
 {
-  YYUSE (yyvaluep);
+  YY_USE (yyvaluep);
   if (!yymsg)
     yymsg = "Deleting";
-  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+  YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
 
   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-  YYUSE (yytype);
+  YY_USE (yykind);
   YY_IGNORE_MAYBE_UNINITIALIZED_END
 }
 
 
-
-
-/* The lookahead symbol.  */
+/* Lookahead token kind.  */
 int yychar;
 
 /* The semantic value of the lookahead symbol.  */
@@ -1669,6 +1594,8 @@ YYSTYPE yylval;
 int yynerrs;
 
 
+
+
 /*----------.
 | yyparse.  |
 `----------*/
@@ -1676,43 +1603,36 @@ int yynerrs;
 int
 yyparse (void)
 {
-    int yystate;
+    yy_state_fast_t yystate = 0;
     /* Number of tokens to shift before error messages enabled.  */
-    int yyerrstatus;
+    int yyerrstatus = 0;
 
-    /* The stacks and their tools:
-       'yyss': related to states.
-       'yyvs': related to semantic values.
-
-       Refer to the stacks through separate pointers, to allow yyoverflow
+    /* Refer to the stacks through separate pointers, to allow yyoverflow
        to reallocate them elsewhere.  */
 
-    /* The state stack.  */
-    yytype_int16 yyssa[YYINITDEPTH];
-    yytype_int16 *yyss;
-    yytype_int16 *yyssp;
+    /* Their size.  */
+    YYPTRDIFF_T yystacksize = YYINITDEPTH;
 
-    /* The semantic value stack.  */
-    YYSTYPE yyvsa[YYINITDEPTH];
-    YYSTYPE *yyvs;
-    YYSTYPE *yyvsp;
+    /* The state stack: array, bottom, top.  */
+    yy_state_t yyssa[YYINITDEPTH];
+    yy_state_t *yyss = yyssa;
+    yy_state_t *yyssp = yyss;
 
-    YYSIZE_T yystacksize;
+    /* The semantic value stack: array, bottom, top.  */
+    YYSTYPE yyvsa[YYINITDEPTH];
+    YYSTYPE *yyvs = yyvsa;
+    YYSTYPE *yyvsp = yyvs;
 
   int yyn;
+  /* The return value of yyparse.  */
   int yyresult;
-  /* Lookahead token as an internal (translated) token number.  */
-  int yytoken = 0;
+  /* Lookahead symbol kind.  */
+  yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
   /* The variables used to return semantic value and location from the
      action routines.  */
   YYSTYPE yyval;
 
-#if YYERROR_VERBOSE
-  /* Buffer for error messages, and its allocated size.  */
-  char yymsgbuf[128];
-  char *yymsg = yymsgbuf;
-  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
-#endif
+
 
 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
 
@@ -1720,15 +1640,8 @@ yyparse (void)
      Keep to zero when no symbol should be popped.  */
   int yylen = 0;
 
-  yyssp = yyss = yyssa;
-  yyvsp = yyvs = yyvsa;
-  yystacksize = YYINITDEPTH;
-
   YYDPRINTF ((stderr, "Starting parse\n"));
 
-  yystate = 0;
-  yyerrstatus = 0;
-  yynerrs = 0;
   yychar = YYEMPTY; /* Cause a token to be read.  */
   goto yysetstate;
 
@@ -1743,10 +1656,15 @@ yynewstate:
 
 
 /*--------------------------------------------------------------------.
-| yynewstate -- set current state (the top of the stack) to yystate.  |
+| yysetstate -- set current state (the top of the stack) to yystate.  |
 `--------------------------------------------------------------------*/
 yysetstate:
-  *yyssp = (yytype_int16) yystate;
+  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+  YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
+  YY_IGNORE_USELESS_CAST_BEGIN
+  *yyssp = YY_CAST (yy_state_t, yystate);
+  YY_IGNORE_USELESS_CAST_END
+  YY_STACK_PRINT (yyss, yyssp);
 
   if (yyss + yystacksize - 1 <= yyssp)
 #if !defined yyoverflow && !defined YYSTACK_RELOCATE
@@ -1754,23 +1672,23 @@ yysetstate:
 #else
     {
       /* Get the current used size of the three stacks, in elements.  */
-      YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1);
+      YYPTRDIFF_T yysize = yyssp - yyss + 1;
 
 # if defined yyoverflow
       {
         /* Give user a chance to reallocate the stack.  Use copies of
            these so that the &'s don't force the real ones into
            memory.  */
+        yy_state_t *yyss1 = yyss;
         YYSTYPE *yyvs1 = yyvs;
-        yytype_int16 *yyss1 = yyss;
 
         /* Each stack pointer address is followed by the size of the
            data in use in that stack, in bytes.  This used to be a
            conditional around just the two extra args, but that might
            be undefined if yyoverflow is a macro.  */
         yyoverflow (YY_("memory exhausted"),
-                    &yyss1, yysize * sizeof (*yyssp),
-                    &yyvs1, yysize * sizeof (*yyvsp),
+                    &yyss1, yysize * YYSIZEOF (*yyssp),
+                    &yyvs1, yysize * YYSIZEOF (*yyvsp),
                     &yystacksize);
         yyss = yyss1;
         yyvs = yyvs1;
@@ -1784,14 +1702,15 @@ yysetstate:
         yystacksize = YYMAXDEPTH;
 
       {
-        yytype_int16 *yyss1 = yyss;
+        yy_state_t *yyss1 = yyss;
         union yyalloc *yyptr =
-          (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+          YY_CAST (union yyalloc *,
+                   YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
         if (! yyptr)
           goto yyexhaustedlab;
         YYSTACK_RELOCATE (yyss_alloc, yyss);
         YYSTACK_RELOCATE (yyvs_alloc, yyvs);
-# undef YYSTACK_RELOCATE
+#  undef YYSTACK_RELOCATE
         if (yyss1 != yyssa)
           YYSTACK_FREE (yyss1);
       }
@@ -1800,16 +1719,16 @@ yysetstate:
       yyssp = yyss + yysize - 1;
       yyvsp = yyvs + yysize - 1;
 
-      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
-                  (unsigned long) yystacksize));
+      YY_IGNORE_USELESS_CAST_BEGIN
+      YYDPRINTF ((stderr, "Stack size increased to %ld\n",
+                  YY_CAST (long, yystacksize)));
+      YY_IGNORE_USELESS_CAST_END
 
       if (yyss + yystacksize - 1 <= yyssp)
         YYABORT;
     }
 #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
 
-  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
-
   if (yystate == YYFINAL)
     YYACCEPT;
 
@@ -1830,18 +1749,29 @@ yybackup:
 
   /* Not known => get a lookahead token if don't already have one.  */
 
-  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
+  /* YYCHAR is either empty, or end-of-input, or a valid lookahead.  */
   if (yychar == YYEMPTY)
     {
-      YYDPRINTF ((stderr, "Reading a token: "));
+      YYDPRINTF ((stderr, "Reading a token\n"));
       yychar = yylex ();
     }
 
   if (yychar <= YYEOF)
     {
-      yychar = yytoken = YYEOF;
+      yychar = YYEOF;
+      yytoken = YYSYMBOL_YYEOF;
       YYDPRINTF ((stderr, "Now at end of input.\n"));
     }
+  else if (yychar == YYerror)
+    {
+      /* The scanner already issued an error message, process directly
+         to error recovery.  But do not keep the error token as
+         lookahead, it is too special and may lead us to an endless
+         loop in error recovery. */
+      yychar = YYUNDEF;
+      yytoken = YYSYMBOL_YYerror;
+      goto yyerrlab1;
+    }
   else
     {
       yytoken = YYTRANSLATE (yychar);
@@ -1869,15 +1799,13 @@ yybackup:
 
   /* Shift the lookahead token.  */
   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
-
-  /* Discard the shifted token.  */
-  yychar = YYEMPTY;
-
   yystate = yyn;
   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
   YY_IGNORE_MAYBE_UNINITIALIZED_END
 
+  /* Discard the shifted token.  */
+  yychar = YYEMPTY;
   goto yynewstate;
 
 
@@ -1912,71 +1840,71 @@ yyreduce:
   YY_REDUCE_PRINT (yyn);
   switch (yyn)
     {
-        case 2:
-#line 684 "configfile.y" /* yacc.c:1652  */
-    { 	
+  case 2: /* $@1: %empty  */
+#line 683 "configfile.y"
+       { 	
 		lineCount = 1 ;
 		addScope (NULL,"",newScope ("")) ;
 		topScope = currScope ;
 	}
-#line 1923 "y.tab.c" /* yacc.c:1652  */
+#line 1851 "y.tab.c"
     break;
 
-  case 3:
-#line 688 "configfile.y" /* yacc.c:1652  */
-    { if (!doCallbacks()) YYABORT ; }
-#line 1929 "y.tab.c" /* yacc.c:1652  */
+  case 3: /* input: $@1 entries  */
+#line 687 "configfile.y"
+                  { if (!doCallbacks()) YYABORT ; }
+#line 1857 "y.tab.c"
     break;
 
-  case 7:
-#line 694 "configfile.y" /* yacc.c:1652  */
-    {
+  case 7: /* entries: entries error  */
+#line 693 "configfile.y"
+                        {
 		errbuff = xmalloc (strlen(SYNTAX_ERROR) + 12) ;
 		sprintf (errbuff,SYNTAX_ERROR,lineCount) ;
 		YYABORT ;
 	}
-#line 1939 "y.tab.c" /* yacc.c:1652  */
+#line 1867 "y.tab.c"
     break;
 
-  case 8:
-#line 701 "configfile.y" /* yacc.c:1652  */
-    {
+  case 8: /* $@2: %empty  */
+#line 700 "configfile.y"
+                         {
 		errbuff = addScope (currScope,(yyvsp[-1].name),newScope ("peer")) ;
                 free ((yyvsp[-1].name)) ;
 		if (errbuff != NULL) YYABORT ;
 	}
-#line 1949 "y.tab.c" /* yacc.c:1652  */
+#line 1877 "y.tab.c"
     break;
 
-  case 9:
-#line 705 "configfile.y" /* yacc.c:1652  */
-    {
+  case 9: /* entry: PEER WORD LBRACE $@2 scope RBRACE  */
+#line 704 "configfile.y"
+                       {
 		currScope = currScope->parent ;
 	}
-#line 1957 "y.tab.c" /* yacc.c:1652  */
+#line 1885 "y.tab.c"
     break;
 
-  case 10:
-#line 708 "configfile.y" /* yacc.c:1652  */
-    {
+  case 10: /* $@3: %empty  */
+#line 707 "configfile.y"
+                            {
 		errbuff = addScope (currScope,(yyvsp[-1].name),newScope ("group")) ;
                 free ((yyvsp[-1].name)) ;
 		if (errbuff != NULL) YYABORT ;
 	}
-#line 1967 "y.tab.c" /* yacc.c:1652  */
+#line 1895 "y.tab.c"
     break;
 
-  case 11:
-#line 712 "configfile.y" /* yacc.c:1652  */
-    {
+  case 11: /* entry: GROUP WORD LBRACE $@3 scope RBRACE  */
+#line 711 "configfile.y"
+                       {
 		currScope = currScope->parent ;
 	}
-#line 1975 "y.tab.c" /* yacc.c:1652  */
+#line 1903 "y.tab.c"
     break;
 
-  case 12:
-#line 715 "configfile.y" /* yacc.c:1652  */
-    {
+  case 12: /* entry: WORD WORD LBRACE  */
+#line 714 "configfile.y"
+                           {
 		errbuff = xmalloc (strlen(UNKNOWN_SCOPE_TYPE) + 15 +
 					  strlen ((yyvsp[-2].name))) ;
 		sprintf (errbuff,UNKNOWN_SCOPE_TYPE,lineCount,(yyvsp[-2].name)) ;
@@ -1984,95 +1912,96 @@ yyreduce:
                 free ((yyvsp[-1].name)) ;
 		YYABORT ;
 	}
-#line 1988 "y.tab.c" /* yacc.c:1652  */
+#line 1916 "y.tab.c"
     break;
 
-  case 13:
-#line 723 "configfile.y" /* yacc.c:1652  */
-    { 
+  case 13: /* $@4: %empty  */
+#line 722 "configfile.y"
+               { 
 		if ((errbuff = keyOk((yyvsp[0].name))) != NULL) {
 			YYABORT ;
 		} else
 			key = (yyvsp[0].name) ;
 	}
-#line 1999 "y.tab.c" /* yacc.c:1652  */
+#line 1927 "y.tab.c"
     break;
 
-  case 15:
-#line 730 "configfile.y" /* yacc.c:1652  */
-    {
+  case 15: /* value: WORD  */
+#line 729 "configfile.y"
+             {
 		if ((errbuff = addString (currScope, key, (yyvsp[0].name))) != NULL)
 			YYABORT ;
                 free (key) ;
                 free ((yyvsp[0].name)) ;
 	}
-#line 2010 "y.tab.c" /* yacc.c:1652  */
+#line 1938 "y.tab.c"
     break;
 
-  case 16:
-#line 736 "configfile.y" /* yacc.c:1652  */
-    {
+  case 16: /* value: IVAL  */
+#line 735 "configfile.y"
+               {
 		if ((errbuff = addInteger(currScope, key, (yyvsp[0].integer))) != NULL)
 			YYABORT; 
                 free (key) ;
 	}
-#line 2020 "y.tab.c" /* yacc.c:1652  */
+#line 1948 "y.tab.c"
     break;
 
-  case 17:
-#line 741 "configfile.y" /* yacc.c:1652  */
-    {
+  case 17: /* value: TRUEBVAL  */
+#line 740 "configfile.y"
+                   {
 		if ((errbuff = addBoolean (currScope, key, 1)) != NULL)
 			YYABORT ; 
                 free (key) ;
                 free ((yyvsp[0].name)) ;
 	}
-#line 2031 "y.tab.c" /* yacc.c:1652  */
+#line 1959 "y.tab.c"
     break;
 
-  case 18:
-#line 747 "configfile.y" /* yacc.c:1652  */
-    {
+  case 18: /* value: FALSEBVAL  */
+#line 746 "configfile.y"
+                    {
 		if ((errbuff = addBoolean (currScope, key, 0)) != NULL)
 			YYABORT ; 
                 free (key) ;
                 free ((yyvsp[0].name)) ;
 	}
-#line 2042 "y.tab.c" /* yacc.c:1652  */
+#line 1970 "y.tab.c"
     break;
 
-  case 19:
-#line 753 "configfile.y" /* yacc.c:1652  */
-    {
+  case 19: /* value: RVAL  */
+#line 752 "configfile.y"
+               {
 		if ((errbuff = addReal (currScope, key, (yyvsp[0].real))) != NULL)
 			YYABORT ; 
                 free (key) ;
 	}
-#line 2052 "y.tab.c" /* yacc.c:1652  */
+#line 1980 "y.tab.c"
     break;
 
-  case 20:
-#line 758 "configfile.y" /* yacc.c:1652  */
-    { 
+  case 20: /* value: XSTRING  */
+#line 757 "configfile.y"
+                  { 
 		if ((errbuff = addString (currScope, key, (yyvsp[0].string))) != NULL)
 			YYABORT;
                 free (key) ;
 	}
-#line 2062 "y.tab.c" /* yacc.c:1652  */
+#line 1990 "y.tab.c"
     break;
 
-  case 21:
-#line 763 "configfile.y" /* yacc.c:1652  */
-    {
+  case 21: /* value: CHAR  */
+#line 762 "configfile.y"
+               {
 		if ((errbuff = addChar (currScope, key, (yyvsp[0].chr))) != NULL)
 			YYABORT ;
                 free (key) ;
         }
-#line 2072 "y.tab.c" /* yacc.c:1652  */
+#line 2000 "y.tab.c"
     break;
 
 
-#line 2076 "y.tab.c" /* yacc.c:1652  */
+#line 2004 "y.tab.c"
+
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -2086,11 +2015,10 @@ yyreduce:
      case of YYERROR or YYBACKUP, subsequent parser actions might lead
      to an incorrect destructor call or verbose syntax error message
      before the lookahead is translated.  */
-  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+  YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
 
   YYPOPSTACK (yylen);
   yylen = 0;
-  YY_STACK_PRINT (yyss, yyssp);
 
   *++yyvsp = yyval;
 
@@ -2114,50 +2042,14 @@ yyreduce:
 yyerrlab:
   /* Make sure we have latest lookahead translation.  See comments at
      user semantic actions for why this is necessary.  */
-  yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
-
+  yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
   /* If not already recovering from an error, report this error.  */
   if (!yyerrstatus)
     {
       ++yynerrs;
-#if ! YYERROR_VERBOSE
       yyerror (YY_("syntax error"));
-#else
-# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
-                                        yyssp, yytoken)
-      {
-        char const *yymsgp = YY_("syntax error");
-        int yysyntax_error_status;
-        yysyntax_error_status = YYSYNTAX_ERROR;
-        if (yysyntax_error_status == 0)
-          yymsgp = yymsg;
-        else if (yysyntax_error_status == 1)
-          {
-            if (yymsg != yymsgbuf)
-              YYSTACK_FREE (yymsg);
-            yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
-            if (!yymsg)
-              {
-                yymsg = yymsgbuf;
-                yymsg_alloc = sizeof yymsgbuf;
-                yysyntax_error_status = 2;
-              }
-            else
-              {
-                yysyntax_error_status = YYSYNTAX_ERROR;
-                yymsgp = yymsg;
-              }
-          }
-        yyerror (yymsgp);
-        if (yysyntax_error_status == 2)
-          goto yyexhaustedlab;
-      }
-# undef YYSYNTAX_ERROR
-#endif
     }
 
-
-
   if (yyerrstatus == 3)
     {
       /* If just tried and failed to reuse lookahead token after an
@@ -2206,13 +2098,14 @@ yyerrorlab:
 yyerrlab1:
   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
 
+  /* Pop stack until we find a state that shifts the error token.  */
   for (;;)
     {
       yyn = yypact[yystate];
       if (!yypact_value_is_default (yyn))
         {
-          yyn += YYTERROR;
-          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+          yyn += YYSYMBOL_YYerror;
+          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
             {
               yyn = yytable[yyn];
               if (0 < yyn)
@@ -2226,7 +2119,7 @@ yyerrlab1:
 
 
       yydestruct ("Error: popping",
-                  yystos[yystate], yyvsp);
+                  YY_ACCESSING_SYMBOL (yystate), yyvsp);
       YYPOPSTACK (1);
       yystate = *yyssp;
       YY_STACK_PRINT (yyss, yyssp);
@@ -2238,7 +2131,7 @@ yyerrlab1:
 
 
   /* Shift the error token.  */
-  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+  YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
 
   yystate = yyn;
   goto yynewstate;
@@ -2260,20 +2153,20 @@ yyabortlab:
   goto yyreturn;
 
 
-#if !defined yyoverflow || YYERROR_VERBOSE
+#if !defined yyoverflow
 /*-------------------------------------------------.
 | yyexhaustedlab -- memory exhaustion comes here.  |
 `-------------------------------------------------*/
 yyexhaustedlab:
   yyerror (YY_("memory exhausted"));
   yyresult = 2;
-  /* Fall through.  */
+  goto yyreturn;
 #endif
 
 
-/*-----------------------------------------------------.
-| yyreturn -- parsing is finished, return the result.  |
-`-----------------------------------------------------*/
+/*-------------------------------------------------------.
+| yyreturn -- parsing is finished, clean up and return.  |
+`-------------------------------------------------------*/
 yyreturn:
   if (yychar != YYEMPTY)
     {
@@ -2290,20 +2183,18 @@ yyreturn:
   while (yyssp != yyss)
     {
       yydestruct ("Cleanup: popping",
-                  yystos[*yyssp], yyvsp);
+                  YY_ACCESSING_SYMBOL (+*yyssp), yyvsp);
       YYPOPSTACK (1);
     }
 #ifndef yyoverflow
   if (yyss != yyssa)
     YYSTACK_FREE (yyss);
 #endif
-#if YYERROR_VERBOSE
-  if (yymsg != yymsgbuf)
-    YYSTACK_FREE (yymsg);
-#endif
+
   return yyresult;
 }
-#line 770 "configfile.y" /* yacc.c:1918  */
+
+#line 769 "configfile.y"
 
 
 int yyerror (const char *s)
diff -Nurp inn-2.6.4/innfeed/config_y.h inn-2.6.5/innfeed/config_y.h
--- inn-2.6.4/innfeed/config_y.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innfeed/config_y.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 3.3.2.  */
+/* A Bison parser, made by GNU Bison 3.7.5.  */
 
 /* Bison interface for Yacc-like parsers in C
 
-   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation,
+   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
    Inc.
 
    This program is free software: you can redistribute it and/or modify
@@ -31,8 +31,9 @@
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
-/* Undocumented macros, especially those whose name start with YY_,
-   are private implementation details.  Do not rely on them.  */
+/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
+   especially those whose name start with YY_ or yy_.  They are
+   private implementation details that can be changed or removed.  */
 
 #ifndef YY_YY_Y_TAB_H_INCLUDED
 # define YY_YY_Y_TAB_H_INCLUDED
@@ -44,29 +45,38 @@
 extern int yydebug;
 #endif
 
-/* Token type.  */
+/* Token kinds.  */
 #ifndef YYTOKENTYPE
 # define YYTOKENTYPE
   enum yytokentype
   {
-    PEER = 258,
-    GROUP = 259,
-    IVAL = 260,
-    RVAL = 261,
-    NAME = 262,
-    XSTRING = 263,
-    SCOPE = 264,
-    COLON = 265,
-    LBRACE = 266,
-    RBRACE = 267,
-    TRUEBVAL = 268,
-    FALSEBVAL = 269,
-    CHAR = 270,
-    WORD = 271,
-    IP_ADDRESS = 272
+    YYEMPTY = -2,
+    YYEOF = 0,                     /* "end of file"  */
+    YYerror = 256,                 /* error  */
+    YYUNDEF = 257,                 /* "invalid token"  */
+    PEER = 258,                    /* PEER  */
+    GROUP = 259,                   /* GROUP  */
+    IVAL = 260,                    /* IVAL  */
+    RVAL = 261,                    /* RVAL  */
+    NAME = 262,                    /* NAME  */
+    XSTRING = 263,                 /* XSTRING  */
+    SCOPE = 264,                   /* SCOPE  */
+    COLON = 265,                   /* COLON  */
+    LBRACE = 266,                  /* LBRACE  */
+    RBRACE = 267,                  /* RBRACE  */
+    TRUEBVAL = 268,                /* TRUEBVAL  */
+    FALSEBVAL = 269,               /* FALSEBVAL  */
+    CHAR = 270,                    /* CHAR  */
+    WORD = 271,                    /* WORD  */
+    IP_ADDRESS = 272               /* IP_ADDRESS  */
   };
+  typedef enum yytokentype yytoken_kind_t;
 #endif
-/* Tokens.  */
+/* Token kinds.  */
+#define YYEMPTY -2
+#define YYEOF 0
+#define YYerror 256
+#define YYUNDEF 257
 #define PEER 258
 #define GROUP 259
 #define IVAL 260
@@ -85,10 +95,9 @@ extern int yydebug;
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-
 union YYSTYPE
 {
-#line 657 "configfile.y" /* yacc.c:1921  */
+#line 656 "configfile.y"
 
     scope *scp ;
     value *val ;
@@ -98,9 +107,9 @@ union YYSTYPE
     char *string ;
     char chr ;
 
-#line 102 "y.tab.h" /* yacc.c:1921  */
-};
+#line 111 "y.tab.h"
 
+};
 typedef union YYSTYPE YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define YYSTYPE_IS_DECLARED 1
diff -Nurp inn-2.6.4/innfeed/configfile.h inn-2.6.5/innfeed/configfile.h
--- inn-2.6.4/innfeed/configfile.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innfeed/configfile.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: configfile.h 7084 2004-12-22 20:33:24Z rra $
-**
+/*
 **  Interface to innfeed's configuration file parser.
 **
 **  Written by James Brister <brister@vix.com>
diff -Nurp inn-2.6.4/innfeed/configfile.l inn-2.6.5/innfeed/configfile.l
--- inn-2.6.4/innfeed/configfile.l	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innfeed/configfile.l	2022-02-18 20:36:57.000000000 +0100
@@ -1,6 +1,5 @@
 %{
-/*  $Id: configfile.l 10305 2018-12-02 14:21:56Z iulius $
-**
+/*
 **  A flex input file for the innfeed config file.
 **
 **  Written by James Brister <brister@vix.com>
diff -Nurp inn-2.6.4/innfeed/configfile.y inn-2.6.5/innfeed/configfile.y
--- inn-2.6.4/innfeed/configfile.y	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innfeed/configfile.y	2022-02-18 20:36:57.000000000 +0100
@@ -1,6 +1,5 @@
 %{
-/*  $Id: configfile.y 10394 2020-11-12 20:10:14Z iulius $
-**
+/*
 **  A yacc input file for the innfeed config file.
 **
 **  Written by James Brister <brister@vix.com>
diff -Nurp inn-2.6.4/innfeed/connection.c inn-2.6.5/innfeed/connection.c
--- inn-2.6.4/innfeed/connection.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innfeed/connection.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: connection.c 10283 2018-05-14 12:43:05Z iulius $
-**
+/*
 **  The implementation of the innfeed Connection class.
 **
 **  Written by James Brister <brister@vix.com>
diff -Nurp inn-2.6.4/innfeed/connection.h inn-2.6.5/innfeed/connection.h
--- inn-2.6.4/innfeed/connection.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innfeed/connection.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: connection.h 8276 2009-01-08 19:15:52Z iulius $
-**
+/*
 **  The public interface to the Connection class.
 **
 **  Written by James Brister <brister@vix.com>
diff -Nurp inn-2.6.4/innfeed/endpoint.c inn-2.6.5/innfeed/endpoint.c
--- inn-2.6.4/innfeed/endpoint.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innfeed/endpoint.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: endpoint.c 9895 2015-06-14 10:08:21Z iulius $
-**
+/*
 **  The implementation of the innfeed EndPoint object class.
 **
 **  Written by James Brister <brister@vix.com>
diff -Nurp inn-2.6.4/innfeed/endpoint.h inn-2.6.5/innfeed/endpoint.h
--- inn-2.6.4/innfeed/endpoint.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innfeed/endpoint.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: endpoint.h 9212 2011-06-24 17:54:10Z iulius $
-**
+/*
 **  The public interface to the Endpoint class.
 **
 **  Written by James Brister <brister@vix.com>
diff -Nurp inn-2.6.4/innfeed/host.c inn-2.6.5/innfeed/host.c
--- inn-2.6.4/innfeed/host.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innfeed/host.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: host.c 10305 2018-12-02 14:21:56Z iulius $
-**
+/*
 **  The implementation of the innfeed Host class.
 **
 **  Written by James Brister <brister@vix.com>
@@ -3284,13 +3283,16 @@ static void hostLogStatus (void)
 
       if (genHtml)
         {
-          fprintf (fp, "<HTML>\n"
-		       "<HEAD>\n"
-		       "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"300;\">\n"
-		       "</HEAD>\n"
-		       "<BODY>\n") ;
-	  fprintf (fp, "\n");
-	  fprintf (fp, "<PRE>\n");
+          fprintf(fp, "<!DOCTYPE html>\n"
+                      "<html lang=\"en\">\n"
+                      "<head>\n");
+          fprintf(fp, "<meta http-equiv=\"refresh\" content=\"%lu\">\n",
+                      (unsigned long) statsPeriod);
+          fprintf(fp, "<title>%s: outgoing feeds</title>\n",
+                      innconf->pathhost);
+          fprintf(fp, "</head>\n"
+                      "<body>\n"
+                      "<pre>\n");
 	}
 
       fprintf (fp,"innfeed from %s\npid %d started %s\n\nUpdated: %s\n",
@@ -3304,13 +3306,13 @@ static void hostLogStatus (void)
       
       if (genHtml)
       {
-        fprintf (fp, "</PRE>\n");
-        fprintf (fp,"<UL>\n");
+        fprintf (fp,"</pre>\n\n");
+        fprintf (fp,"<ul>\n");
         for (h = gHostList ; h != NULL ; h = h->next)
-          fprintf (fp,"<LI><A href=\"#%s\">%s</A></LI>\n",
+          fprintf (fp,"<li><a href=\"#%s\">%s</a></li>\n",
                    h->params->peerName, h->params->peerName);
-        fprintf (fp,"</UL>\n\n");
-        fprintf (fp,"<PRE>\n");
+        fprintf (fp,"</ul>\n\n");
+        fprintf (fp,"<pre>\n");
       }
 
       mainLogStatus (fp) ;
@@ -3330,7 +3332,7 @@ Default peer configuration parameters:
      backlog factor: 1.1
 */
       fprintf(fp,"%sDefault peer configuration parameters:%s\n",
-              genHtml ? "<B>" : "", genHtml ? "</B>" : "") ;
+              genHtml ? "<strong>" : "", genHtml ? "</strong>" : "") ;
       fprintf(fp,"    article timeout: %-5u     initial connections: %u\n",
 	    defaultParams->articleTimeout,
 	    defaultParams->initialConnections) ;
@@ -3374,7 +3376,7 @@ Default peer configuration parameters:
 
       fprintf (fp,"\n") ;
       fprintf(fp,"%sglobal (process)%s\n",
-              genHtml ? "<B>" : "", genHtml ? "</B>" : "") ;
+              genHtml ? "<strong>" : "", genHtml ? "</strong>" : "") ;
       
       fprintf (fp, "   seconds: %ld\n", sec) ;
       if (sec == 0) sec = 1 ;
@@ -3427,9 +3429,9 @@ Default peer configuration parameters:
 
       if (genHtml) 
 	{
-          fprintf (fp,"</PRE>\n") ;
-          fprintf (fp,"</BODY>\n") ;
-          fprintf (fp,"</HTML>\n") ;
+          fprintf (fp,"</pre>\n") ;
+          fprintf (fp,"</body>\n") ;
+          fprintf (fp,"</html>\n") ;
 	}
       
       fclose (fp) ;
@@ -3442,7 +3444,7 @@ Default peer configuration parameters:
  * format of the output is:
  *
  * sitename
- *    Addr 1: IPv4  12.0.0.42
+ *   Addr 1 : IPv4  12.0.0.42
  *   seconds: 351       art. timeout: 400          ip name: foo.bar
  *   offered: 1194     resp. timeout: 240             port: 119
  *  accepted: 178     want streaming: yes      active cxns: 6
@@ -3460,7 +3462,7 @@ Default peer configuration parameters:
  *accpt size: 121.1 MB drop-deferred: false   defer length: 0
  *rejct size: 27.1 MB  min-queue-cxn: false
  *                 backlog low limit: 1000000
- *                backlog high limit: 2000000     (factor 2.0)
+ *                backlog high limit: 2000000 (factor 2.0)
  *                 backlog shrinkage: 0 bytes (from current file)
  *   offered:  1.13 art/s   accepted:  0.69 art/s (101.71 KB/s)
  *   refused:  0.01 art/s   rejected:  0.42 art/s (145.11 KB/s)
@@ -3479,7 +3481,7 @@ static void hostPrintStatus (Host host,
   ASSERT (fp != NULL) ;
 
   if (genHtml)
-    fprintf (fp,"<A name=\"%s\"><B>%s</B></A>",host->params->peerName,
+    fprintf (fp,"<strong id=\"%s\">%s</strong>",host->params->peerName,
              host->params->peerName);
   else
     fprintf (fp,"%s",host->params->peerName);
@@ -3555,9 +3557,9 @@ static void hostPrintStatus (Host host,
 	   host->params->dynamicMethod,
 	   100.0 * host->blNone / cnt) ;
 
-  fprintf (fp, "[overflow]: %-7ld  dyn b'log low: %-3.1f%%        >0%%-25%%: %-3.1f%%\n",
+  fprintf (fp, "[overflow]: %-7ld  dyn b'log low: %-3.1f%%        %s0%%-25%%: %-3.1f%%\n",
 	   (long) host->gArtsQueueOverflow, 
-	   host->params->dynBacklogLowWaterMark,
+	   host->params->dynBacklogLowWaterMark, genHtml ? "&gt;" : ">",
 	   100.0 * host->blQuartile[0] / cnt) ;
 
   fprintf (fp, "[on_close]: %-7ld dyn b'log high: %-3.1f%%        25%%-50%%: %-3.1f%%\n",
@@ -3570,10 +3572,10 @@ static void hostPrintStatus (Host host,
 	   host->backlogFilter*100.0*(1.0-host->params->dynBacklogFilter),
 	   100.0 * host->blQuartile[2] / cnt) ;
 
-  fprintf (fp, " unspooled: %-7ld dyn b'log fltr: %-3.1f       75%%-<100%%: %-3.1f%%\n",
+  fprintf (fp, " unspooled: %-7ld dyn b'log fltr: %-3.1f       75%%-%s100%%: %-3.1f%%\n",
 	   (long) host->gArtsFromTape,
 	   host->params->dynBacklogLowWaterMark,
-	   100.0 * host->blQuartile[3] / cnt) ;
+	   genHtml ? "&lt;" : "<", 100.0 * host->blQuartile[3] / cnt) ;
 
   fprintf (fp, "  no queue: %-7ld avr.cxns queue: %-3.1f             full: %-3.1f%%\n",
 	   (long) host->gNoQueue,
diff -Nurp inn-2.6.4/innfeed/host.h inn-2.6.5/innfeed/host.h
--- inn-2.6.4/innfeed/host.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innfeed/host.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: host.h 10283 2018-05-14 12:43:05Z iulius $
-**
+/*
 **  The public interface to the Host class.
 **
 **  Written by James Brister <brister@vix.com>
diff -Nurp inn-2.6.4/innfeed/imap_connection.c inn-2.6.5/innfeed/imap_connection.c
--- inn-2.6.4/innfeed/imap_connection.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innfeed/imap_connection.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: imap_connection.c 10306 2018-12-02 14:26:13Z iulius $
-**
+/*
 **  Feed articles to an IMAP server via LMTP and IMAP.
 **
 **  Written by Tim Martin.
diff -Nurp inn-2.6.4/innfeed/innfeed.h inn-2.6.5/innfeed/innfeed.h
--- inn-2.6.4/innfeed/innfeed.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innfeed/innfeed.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: innfeed.h 9923 2015-07-14 16:48:11Z iulius $
-**
+/*
 **  innfeed's configuration values.
 **
 **  Written by James Brister <brister@vix.com>
diff -Nurp inn-2.6.4/innfeed/innlistener.c inn-2.6.5/innfeed/innlistener.c
--- inn-2.6.4/innfeed/innlistener.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innfeed/innlistener.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: innlistener.c 10152 2017-06-05 12:27:29Z iulius $
-**
+/*
 **  The implementation of the innfeed InnListener class.
 **
 **  Written by James Brister <brister@vix.com>
@@ -77,7 +76,7 @@ static bool inited = false ;
 void listenerLogStatus (FILE *fp)
 {
   fprintf (fp,"%sListener Status:%s\n",
-           genHtml ? "<B>" : "", genHtml ? "</B>" : "") ;
+           genHtml ? "<strong>" : "", genHtml ? "</strong>" : "") ;
   fprintf (fp,"    Dropped article file: %s\n",dropArtFile) ;
   fprintf (fp,"   Dropped article count: %ld\n",(long) droppedCount) ;
   fprintf (fp,"\n") ;
diff -Nurp inn-2.6.4/innfeed/innlistener.h inn-2.6.5/innfeed/innlistener.h
--- inn-2.6.4/innfeed/innlistener.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innfeed/innlistener.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: innlistener.h 6647 2004-01-25 20:06:42Z rra $
-**
+/*
 **  The public interface to the InnListener class.
 **
 **  Written by James Brister <brister@vix.com>
diff -Nurp inn-2.6.4/innfeed/main.c inn-2.6.5/innfeed/main.c
--- inn-2.6.4/innfeed/main.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innfeed/main.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: main.c 10153 2017-06-05 12:28:01Z iulius $
-**
+/*
 **  Main routines for the innfeed program.
 **
 **  Written by James Brister <brister@vix.com>
@@ -964,7 +963,7 @@ static void mainCleanup (void)
 void mainLogStatus (FILE *fp)
 {
   fprintf (fp,"%sGlobal configuration parameters:%s\n",
-           genHtml ? "<B>" : "", genHtml ? "</B>" : "") ;
+           genHtml ? "<strong>" : "", genHtml ? "</strong>" : "") ;
   fprintf (fp,"          Mode: ") ;
   if (InputFile != NULL)
     fprintf (fp,"Funnel file") ;
diff -Nurp inn-2.6.4/innfeed/misc.c inn-2.6.5/innfeed/misc.c
--- inn-2.6.4/innfeed/misc.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innfeed/misc.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: misc.c 10305 2018-12-02 14:21:56Z iulius $
-**
+/*
 **  Helper routines for the innfeed program.
 **
 **  Written by James Brister <brister@vix.com>
diff -Nurp inn-2.6.4/innfeed/misc.h inn-2.6.5/innfeed/misc.h
--- inn-2.6.4/innfeed/misc.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innfeed/misc.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: misc.h 10283 2018-05-14 12:43:05Z iulius $
-**
+/*
 **  Miscellaneous utility functions for innfeed.
 **
 **  Written by James Brister <brister@vix.com>
diff -Nurp inn-2.6.4/innfeed/procbatch.in inn-2.6.5/innfeed/procbatch.in
--- inn-2.6.4/innfeed/procbatch.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innfeed/procbatch.in	2022-02-18 20:36:57.000000000 +0100
@@ -3,7 +3,6 @@
 
 # Author:       James Brister <brister@vix.com> -- berkeley-unix --
 # Start Date:   Thu May 16 10:32:02 1996 +0200
-# RCSId:        $Id: procbatch.in 9371 2011-09-04 09:21:43Z iulius $
 #
 # Description: Take a file of the form generated by innd in the outgoing
 #              directory ("Wnm*") and separate it into tape files for innfeed.
diff -Nurp inn-2.6.4/innfeed/tape.c inn-2.6.5/innfeed/tape.c
--- inn-2.6.4/innfeed/tape.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innfeed/tape.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: tape.c 9695 2014-09-20 05:53:22Z iulius $
-**
+/*
 **  The implementation of the innfeed Tape class.
 **
 **  Written by James Brister <brister@vix.com>
@@ -485,7 +484,7 @@ void gPrintTapeInfo (FILE *fp, unsigned
 void tapeLogGlobalStatus (FILE *fp)
 {
   fprintf (fp,"%sBacklog file global values:%s\n",
-           genHtml ? "<B>" : "", genHtml ? "</B>" : "") ;
+           genHtml ? "<strong>" : "", genHtml ? "</strong>" : "") ;
   fprintf (fp,"        directory: %s\n",tapeDirectory) ;
   fprintf (fp,"    rotate period: %-3ld seconds\n",(long) rotatePeriod) ;
   fprintf (fp,"checkpoint period: %-3ld seconds\n",(long) tapeCkPtPeriod) ;
diff -Nurp inn-2.6.4/innfeed/tape.h inn-2.6.5/innfeed/tape.h
--- inn-2.6.4/innfeed/tape.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innfeed/tape.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: tape.h 6647 2004-01-25 20:06:42Z rra $
-**
+/*
 **  The public interface to the Tape class.
 **
 **  Written by James Brister <brister@vix.com>
diff -Nurp inn-2.6.4/innfeed/testListener.pl inn-2.6.5/innfeed/testListener.pl
--- inn-2.6.4/innfeed/testListener.pl	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/innfeed/testListener.pl	2022-02-18 20:36:57.000000000 +0100
@@ -4,7 +4,6 @@
 # Start Date:   Wed Jan  3 00:09:01 1996
 # Project:      INN -- innfeed
 # File:         testListener.pl
-# RCSId:        $Id: testListener.pl 8290 2009-01-17 08:15:31Z iulius $
 # Description:  Generate news files for testing the innfeed feeder.
 #
 #               Run like this:
diff -Nurp inn-2.6.4/lib/Makefile inn-2.6.5/lib/Makefile
--- inn-2.6.4/lib/Makefile	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/Makefile	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: Makefile 10498 2021-01-05 16:11:07Z iulius $
-
 include ../Makefile.global
 
 # This version number should be increased with every change to the library
@@ -8,19 +6,20 @@ include ../Makefile.global
 # recover from make update.  We can't use .OLD extensions for the shared
 # library since ldconfig will think .OLD sorts after the regular library and
 # will point the binaries at the old library.
-LTVERSION     = 6:1:0
+LTVERSION     = 7:0:1
 
 top	= ..
 CFLAGS  = $(GCFLAGS)
 
 # The base library files that are always compiled and included.
-SOURCES       = argparse.c buffer.c cleanfrom.c clientactive.c clientlib.c \
+SOURCES       = argparse.c artnumber.c buffer.c cleanfrom.c clientactive.c \
+	        clientlib.c                                                \
 	      	commands.c concat.c conffile.c confparse.c daemonize.c	   \
 	      	date.c dbz.c defdist.c dispatch.c fdflag.c fdlimit.c	   \
 	      	getfqdn.c getmodaddr.c hash.c hashtab.c headers.c hex.c	   \
 	      	innconf.c inndcomm.c list.c localopen.c lockfile.c	   \
 	      	makedir.c md5.c messageid.c messages.c mmap.c network.c	   \
-	      	network-innbind.c newsuser.c nntp.c numbers.c qio.c        \
+	        network-innbind.c newsuser.c nntp.c qio.c                  \
 		radix32.c readin.c					   \
 	      	remopen.c reservedfd.c resource.c sendarticle.c sendpass.c \
 	      	sequence.c timer.c tst.c uwildmat.c vector.c wire.c	   \
@@ -30,7 +29,7 @@ SOURCES       = argparse.c buffer.c clea
 EXTRA_SOURCES = alloca.c asprintf.c fseeko.c ftello.c getaddrinfo.c	   \
 		getnameinfo.c getpagesize.c inet_aton.c inet_ntoa.c	   \
 		inet_ntop.c mkstemp.c pread.c pwrite.c            \
-	        reallocarray.c setenv.c                                    \
+	        reallocarray.c sd-daemon.c setenv.c                        \
 		seteuid.c setproctitle.c snprintf.c strcasecmp.c strlcat.c \
 		strlcpy.c strspn.c strtok.c symlink.c
 
@@ -103,6 +102,13 @@ argparse.o: argparse.c ../include/config
   ../include/portable/stdbool.h ../include/inn/innconf.h \
   ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \
   ../include/inn/xwrite.h
+artnumber.o: artnumber.c ../include/config.h ../include/inn/defines.h \
+  ../include/inn/system.h ../include/inn/macros.h \
+  ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \
+  ../include/inn/defines.h ../include/inn/options.h ../include/clibrary.h \
+  ../include/config.h ../include/inn/macros.h \
+  ../include/portable/stdbool.h ../include/inn/libinn.h \
+  ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h
 buffer.o: buffer.c ../include/config.h ../include/inn/defines.h \
   ../include/inn/system.h ../include/inn/macros.h \
   ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \
@@ -346,22 +352,22 @@ mmap.o: mmap.c ../include/config.h ../in
 network.o: network.c ../include/config.h ../include/inn/defines.h \
   ../include/inn/system.h ../include/inn/macros.h \
   ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \
-  ../include/inn/defines.h ../include/inn/options.h ../include/clibrary.h \
-  ../include/config.h ../include/inn/macros.h \
-  ../include/portable/stdbool.h ../include/portable/socket.h \
-  ../include/portable/macros.h ../include/portable/getaddrinfo.h \
-  ../include/portable/getnameinfo.h ../include/inn/fdflag.h \
+  ../include/inn/defines.h ../include/inn/options.h \
+  ../include/portable/socket.h ../include/portable/macros.h \
+  ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \
+  ../include/clibrary.h ../include/config.h ../include/inn/macros.h \
+  ../include/portable/stdbool.h ../include/inn/fdflag.h \
   ../include/inn/portable-socket.h ../include/inn/innconf.h \
   ../include/inn/messages.h ../include/inn/network.h \
   ../include/inn/xmalloc.h ../include/inn/xwrite.h
 network-innbind.o: network-innbind.c ../include/config.h \
   ../include/inn/defines.h ../include/inn/system.h ../include/inn/macros.h \
   ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \
-  ../include/inn/defines.h ../include/inn/options.h ../include/clibrary.h \
-  ../include/config.h ../include/inn/macros.h \
-  ../include/portable/stdbool.h ../include/portable/socket.h \
-  ../include/portable/macros.h ../include/portable/getaddrinfo.h \
-  ../include/portable/getnameinfo.h ../include/inn/innconf.h \
+  ../include/inn/defines.h ../include/inn/options.h \
+  ../include/portable/socket.h ../include/portable/macros.h \
+  ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \
+  ../include/clibrary.h ../include/config.h ../include/inn/macros.h \
+  ../include/portable/stdbool.h ../include/inn/innconf.h \
   ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \
   ../include/inn/xwrite.h ../include/inn/messages.h \
   ../include/inn/network.h ../include/inn/portable-socket.h \
@@ -385,13 +391,6 @@ nntp.o: nntp.c ../include/config.h ../in
   ../include/inn/portable-socket.h ../include/inn/nntp.h \
   ../include/inn/vector.h ../include/inn/libinn.h ../include/inn/concat.h \
   ../include/inn/xmalloc.h ../include/inn/xwrite.h
-numbers.o: numbers.c ../include/config.h ../include/inn/defines.h \
-  ../include/inn/system.h ../include/inn/macros.h \
-  ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \
-  ../include/inn/defines.h ../include/inn/options.h ../include/clibrary.h \
-  ../include/config.h ../include/inn/macros.h \
-  ../include/portable/stdbool.h ../include/inn/libinn.h \
-  ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h
 qio.o: qio.c ../include/config.h ../include/inn/defines.h \
   ../include/inn/system.h ../include/inn/macros.h \
   ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \
@@ -551,11 +550,11 @@ ftello.o: ftello.c ../include/config.h .
 getaddrinfo.o: getaddrinfo.c ../include/config.h ../include/inn/defines.h \
   ../include/inn/system.h ../include/inn/macros.h \
   ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \
-  ../include/inn/defines.h ../include/inn/options.h ../include/clibrary.h \
-  ../include/config.h ../include/inn/macros.h \
-  ../include/portable/stdbool.h ../include/portable/socket.h \
-  ../include/portable/macros.h ../include/portable/getaddrinfo.h \
-  ../include/portable/getnameinfo.h
+  ../include/inn/defines.h ../include/inn/options.h \
+  ../include/portable/socket.h ../include/portable/macros.h \
+  ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \
+  ../include/clibrary.h ../include/config.h ../include/inn/macros.h \
+  ../include/portable/stdbool.h
 getnameinfo.o: getnameinfo.c ../include/config.h ../include/inn/defines.h \
   ../include/inn/system.h ../include/inn/macros.h \
   ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \
@@ -571,27 +570,27 @@ getpagesize.o: getpagesize.c ../include/
 inet_aton.o: inet_aton.c ../include/config.h ../include/inn/defines.h \
   ../include/inn/system.h ../include/inn/macros.h \
   ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \
-  ../include/inn/defines.h ../include/inn/options.h ../include/clibrary.h \
-  ../include/config.h ../include/inn/macros.h \
-  ../include/portable/stdbool.h ../include/portable/socket.h \
-  ../include/portable/macros.h ../include/portable/getaddrinfo.h \
-  ../include/portable/getnameinfo.h
+  ../include/inn/defines.h ../include/inn/options.h \
+  ../include/portable/socket.h ../include/portable/macros.h \
+  ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \
+  ../include/clibrary.h ../include/config.h ../include/inn/macros.h \
+  ../include/portable/stdbool.h
 inet_ntoa.o: inet_ntoa.c ../include/config.h ../include/inn/defines.h \
   ../include/inn/system.h ../include/inn/macros.h \
   ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \
-  ../include/inn/defines.h ../include/inn/options.h ../include/clibrary.h \
-  ../include/config.h ../include/inn/macros.h \
-  ../include/portable/stdbool.h ../include/portable/socket.h \
-  ../include/portable/macros.h ../include/portable/getaddrinfo.h \
-  ../include/portable/getnameinfo.h
+  ../include/inn/defines.h ../include/inn/options.h \
+  ../include/portable/socket.h ../include/portable/macros.h \
+  ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \
+  ../include/clibrary.h ../include/config.h ../include/inn/macros.h \
+  ../include/portable/stdbool.h
 inet_ntop.o: inet_ntop.c ../include/config.h ../include/inn/defines.h \
   ../include/inn/system.h ../include/inn/macros.h \
   ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \
-  ../include/inn/defines.h ../include/inn/options.h ../include/clibrary.h \
-  ../include/config.h ../include/inn/macros.h \
-  ../include/portable/stdbool.h ../include/portable/socket.h \
-  ../include/portable/macros.h ../include/portable/getaddrinfo.h \
-  ../include/portable/getnameinfo.h
+  ../include/inn/defines.h ../include/inn/options.h \
+  ../include/portable/socket.h ../include/portable/macros.h \
+  ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \
+  ../include/clibrary.h ../include/config.h ../include/inn/macros.h \
+  ../include/portable/stdbool.h
 mkstemp.o: mkstemp.c ../include/config.h ../include/inn/defines.h \
   ../include/inn/system.h ../include/inn/macros.h \
   ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \
@@ -616,6 +615,11 @@ reallocarray.o: reallocarray.c ../includ
   ../include/inn/defines.h ../include/inn/options.h ../include/clibrary.h \
   ../include/config.h ../include/inn/macros.h \
   ../include/portable/stdbool.h
+sd-daemon.o: sd-daemon.c ../include/portable/macros.h \
+  ../include/portable/sd-daemon.h ../include/config.h \
+  ../include/inn/defines.h ../include/inn/system.h ../include/inn/macros.h \
+  ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \
+  ../include/inn/defines.h ../include/inn/options.h
 setenv.o: setenv.c ../include/config.h ../include/inn/defines.h \
   ../include/inn/system.h ../include/inn/macros.h \
   ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \
diff -Nurp inn-2.6.4/lib/argparse.c inn-2.6.5/lib/argparse.c
--- inn-2.6.4/lib/argparse.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/argparse.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: argparse.c 8674 2009-10-21 17:38:42Z iulius $
-**
+/*
 **  Routines for parsing arguments.
 */
 
diff -Nurp inn-2.6.4/lib/artnumber.c inn-2.6.5/lib/artnumber.c
--- inn-2.6.4/lib/artnumber.c	1970-01-01 01:00:00.000000000 +0100
+++ inn-2.6.5/lib/artnumber.c	2022-02-18 20:36:57.000000000 +0100
@@ -0,0 +1,97 @@
+/*
+**  Routines for article numbers:  manipulation and checks.
+*/
+
+#include "config.h"
+#include "clibrary.h"
+#include <ctype.h>
+
+#include "inn/libinn.h"
+
+
+/*
+**  Check if the argument is a valid article number according to RFC 3977,
+**  that is to say it contains from 1 to 16 digits and must lie in the range
+**  0-2,147,483,647.
+*/
+bool
+IsValidArticleNumber(const char *string)
+{
+    int len = 0, digit;
+    const unsigned char *p;
+    unsigned long v = 0;
+
+    /* Not NULL. */
+    if (string == NULL)
+        return false;
+
+    p = (const unsigned char *) string;
+   
+    for (; *p != '\0'; p++) {
+        len++;
+        if (!isdigit((unsigned char) *p))
+            return false;
+        digit = *p - '0';
+        if(v > (0x7FFFFFFFul - digit) / 10)
+            return false;
+        v = 10 * v + digit;
+    }
+
+    if (len > 0 && len < 17)
+        return true;
+    else
+        return false;
+}
+
+
+/*
+**  Return true if the provided string is a valid range, that is to say:
+** 
+**    - An article number.
+**    - An article number followed by a dash to indicate all following.
+**    - An article number followed by a dash followed by another article
+**      number.
+**
+**  In addition to RFC 3977, we also accept:
+**    - A dash followed by an article number to indicate all previous.
+**    - A dash for everything.
+*/
+bool
+IsValidRange(char *string)
+{
+    char *p;
+    bool valid;
+
+    /* Not NULL. */
+    if (string == NULL)
+        return false;
+
+    /* Just a dash. */
+    if (strcmp(string, "-") == 0)
+        return true;
+
+    p = string;
+
+    /* Begins with a dash.  There must be a number after. */
+    if (*string == '-') {
+        p++;
+        return IsValidArticleNumber(p);
+    }
+
+    /* Got just a single number? */
+    if ((p = strchr(string, '-')) == NULL)
+        return IsValidArticleNumber(string);
+
+    /* "-" becomes "\0" and we parse the low water mark. */
+    *p++ = '\0';
+    if (*p == '\0') {
+        /* Ends with a dash. */
+        valid = IsValidArticleNumber(string);
+    } else {
+        valid = (IsValidArticleNumber(string) && IsValidArticleNumber(p));
+    }
+
+    p--;
+    *p = '-';
+    return valid;
+}
diff -Nurp inn-2.6.4/lib/asprintf.c inn-2.6.5/lib/asprintf.c
--- inn-2.6.4/lib/asprintf.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/asprintf.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: asprintf.c 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * Replacement for a missing asprintf and vasprintf.
  *
  * Provides the same functionality as the standard GNU library routines
diff -Nurp inn-2.6.4/lib/buffer.c inn-2.6.5/lib/buffer.c
--- inn-2.6.4/lib/buffer.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/buffer.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: buffer.c 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * Counted, reusable memory buffer.
  *
  * A buffer is an allocated block of memory with a known size and a separate
diff -Nurp inn-2.6.4/lib/cleanfrom.c inn-2.6.5/lib/cleanfrom.c
--- inn-2.6.4/lib/cleanfrom.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/cleanfrom.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,3 @@
-/*  $Id: cleanfrom.c 7585 2006-11-21 09:37:51Z eagle $
-**
-*/
-
 #include "config.h"
 #include "clibrary.h"
 #include "inn/libinn.h"
diff -Nurp inn-2.6.4/lib/clientactive.c inn-2.6.5/lib/clientactive.c
--- inn-2.6.4/lib/clientactive.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/clientactive.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,3 @@
-/*  $Id: clientactive.c 9496 2013-06-25 17:40:26Z iulius $
-**
-*/
-
 #include "config.h"
 #include "clibrary.h"
 #include <errno.h>
diff -Nurp inn-2.6.4/lib/clientlib.c inn-2.6.5/lib/clientlib.c
--- inn-2.6.4/lib/clientlib.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/clientlib.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: clientlib.c 10365 2020-05-10 12:58:37Z iulius $
-**
+/*
 **  Routines compatible with the NNTP "clientlib" routines.
 */
 #include "config.h"
diff -Nurp inn-2.6.4/lib/commands.c inn-2.6.5/lib/commands.c
--- inn-2.6.4/lib/commands.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/commands.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: commands.c 9019 2010-03-19 21:27:15Z iulius $
-**
+/*
 **  Routines for NNTP commands:  manipulation and checks.
 */
 
diff -Nurp inn-2.6.4/lib/concat.c inn-2.6.5/lib/concat.c
--- inn-2.6.4/lib/concat.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/concat.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: concat.c 10100 2016-11-04 22:24:26Z iulius $
- *
+/*
  * Concatenate strings with dynamic memory allocation.
  *
  * Usage:
diff -Nurp inn-2.6.4/lib/conffile.c inn-2.6.5/lib/conffile.c
--- inn-2.6.4/lib/conffile.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/conffile.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: conffile.c 10012 2016-05-05 12:41:10Z iulius $
-**
+/*
 **  Routines for reading in incoming.conf-style config files.
 */
 
diff -Nurp inn-2.6.4/lib/confparse.c inn-2.6.5/lib/confparse.c
--- inn-2.6.4/lib/confparse.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/confparse.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: confparse.c 10010 2016-05-05 12:40:00Z iulius $
-**
+/*
 **  Parse a standard block-structured configuration file syntax.
 **
 **  Herein are all the parsing and access functions for the configuration
diff -Nurp inn-2.6.4/lib/daemonize.c inn-2.6.5/lib/daemonize.c
--- inn-2.6.4/lib/daemonize.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/daemonize.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: daemonize.c 7585 2006-11-21 09:37:51Z eagle $
-**
+/*
 **  Become a long-running daemon.
 **
 **  Usage:
diff -Nurp inn-2.6.4/lib/date.c inn-2.6.5/lib/date.c
--- inn-2.6.4/lib/date.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/date.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: date.c 9971 2015-12-10 20:30:10Z iulius $
-**
+/*
 **  Date parsing and conversion routines.
 **
 **  Provides various date parsing and conversion routines, including
diff -Nurp inn-2.6.4/lib/dbz.c inn-2.6.5/lib/dbz.c
--- inn-2.6.4/lib/dbz.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/dbz.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: dbz.c 10283 2018-05-14 12:43:05Z iulius $
-**
+/*
 **  dbz database implementation V6.1.1
 **
 **  Copyright 1988 Jon Zeeff (zeeff@b-tech.ann-arbor.mi.us)
@@ -37,7 +36,7 @@
 **  
 **  The basic format of the database is two hash tables, each in it's own
 **  file.  One contains the offsets into the history text file, and the other
-**  contains a hash of the message id.  A value is stored by indexing into the
+**  contains a hash of the Message-ID.  A value is stored by indexing into the
 **  tables using a hash value computed from the key; collisions are resolved
 **  by linear probing (just search forward for an empty slot, wrapping around
 **  to the beginning of the table if necessary).  Linear probing is a
@@ -173,7 +172,7 @@ static int canttag_warned;		/* flag to c
 
 /* A new, from-scratch database, not built as a rebuild of an old one, needs
  * to know table size.  Normally the user supplies this info, but there have
- * to be defaults.  Making this too small can have devestating effects on
+ * to be defaults.  Making this too small can have devastating effects on
  * history speed for the current history implementation whereas making it too
  * big just wastes disk space, so err on the side of caution.  This may still
  * be a bit too small.  Assume people using tagged hash are running somewhat
@@ -891,7 +890,7 @@ okayvalue(of_t value)
 }
 #endif
 
-/* dbzexists - check if the given message-id is in the database */
+/* dbzexists - check if the given Message-ID is in the database */
 bool
 dbzexists(const HASH key)
 {
@@ -915,8 +914,9 @@ dbzexists(const HASH key)
 /*
  * dbzfetch - get offset of an entry from the database
  *
- * Returns the offset of the text file for input key,
- * or -1 if NOTFOUND or error occurs.
+ * Returns true if the entry is found, and sets in the value argument the
+ * offset of the text file for input key.
+ * Returns false otherwise or if an error occurred.
  */
 bool
 dbzfetch(const HASH key, off_t *value)
diff -Nurp inn-2.6.4/lib/defdist.c inn-2.6.5/lib/defdist.c
--- inn-2.6.4/lib/defdist.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/defdist.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,3 @@
-/*  $Id: defdist.c 8725 2009-11-08 18:29:06Z iulius $
-**
-*/
-
 #include "config.h"
 #include "clibrary.h"
 #include <ctype.h>
diff -Nurp inn-2.6.4/lib/dispatch.c inn-2.6.5/lib/dispatch.c
--- inn-2.6.4/lib/dispatch.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/dispatch.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: dispatch.c 6376 2003-06-01 23:24:34Z rra $
-**
+/*
 **  Dispatch cvectors of commands to functions.
 **
 **  This is a generic command dispatching system designed primary to handle
diff -Nurp inn-2.6.4/lib/fdflag.c inn-2.6.5/lib/fdflag.c
--- inn-2.6.4/lib/fdflag.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/fdflag.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: fdflag.c 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * Set or clear file descriptor flags.
  *
  * Simple functions (wrappers around fcntl) to set or clear file descriptor
diff -Nurp inn-2.6.4/lib/fdlimit.c inn-2.6.5/lib/fdlimit.c
--- inn-2.6.4/lib/fdlimit.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/fdlimit.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: fdlimit.c 9754 2014-12-01 21:08:28Z iulius $
-**
+/*
 **  Portably determine or set the limit on open file descriptors.
 **
 **  Pretty much all platforms these days have getrlimit and setrlimit, so
diff -Nurp inn-2.6.4/lib/fseeko.c inn-2.6.5/lib/fseeko.c
--- inn-2.6.4/lib/fseeko.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/fseeko.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: fseeko.c 3680 2000-07-29 22:54:52Z rra $
-**
+/*
 **  Replacement for a missing fseeko.
 **
 **  fseeko is a version of fseek that takes an off_t instead of a long.  For
diff -Nurp inn-2.6.4/lib/ftello.c inn-2.6.5/lib/ftello.c
--- inn-2.6.4/lib/ftello.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/ftello.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: ftello.c 3681 2000-07-29 22:55:18Z rra $
-**
+/*
 **  Replacement for a missing ftello.
 **
 **  ftello is a version of ftell that returns an off_t instead of a long.
diff -Nurp inn-2.6.4/lib/getaddrinfo.c inn-2.6.5/lib/getaddrinfo.c
--- inn-2.6.4/lib/getaddrinfo.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/getaddrinfo.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: getaddrinfo.c 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * Replacement for a missing getaddrinfo.
  *
  * This is an implementation of getaddrinfo for systems that don't have one so
diff -Nurp inn-2.6.4/lib/getfqdn.c inn-2.6.5/lib/getfqdn.c
--- inn-2.6.4/lib/getfqdn.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/getfqdn.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: getfqdn.c 10304 2018-12-02 14:05:50Z iulius $
-**
+/*
 **  Discover the fully-qualified domain name of the local host.
 */
 
diff -Nurp inn-2.6.4/lib/getmodaddr.c inn-2.6.5/lib/getmodaddr.c
--- inn-2.6.4/lib/getmodaddr.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/getmodaddr.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,3 @@
-/*  $Id: getmodaddr.c 10040 2016-07-31 20:01:43Z iulius $
-**
-*/
-
 #include "config.h"
 #include "clibrary.h"
 #include <errno.h>
diff -Nurp inn-2.6.4/lib/getnameinfo.c inn-2.6.5/lib/getnameinfo.c
--- inn-2.6.4/lib/getnameinfo.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/getnameinfo.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: getnameinfo.c 10444 2020-12-09 21:06:15Z iulius $
- *
+/*
  * Replacement for a missing getnameinfo.
  *
  * This is an implementation of getnameinfo for systems that don't have one so
@@ -174,10 +173,21 @@ lookup_service(unsigned short port, char
         }
     }
 
-    /* Just convert the port number to ASCII. */
+    /*
+     * Just convert the port number to ASCII.  Suppress warnings here because
+     * GCC 10 isn't smart enough to realize that the return status is checked
+     * for truncation, a GCC warning introduced in GCC 7.
+     */
+#if defined(__GNUC__) && __GNUC__ > 6 && !defined(__clang__)
+#    pragma GCC diagnostic push
+#    pragma GCC diagnostic ignored "-Wformat-truncation"
+#endif
     status = snprintf(service, servicelen, "%hu", port);
     if (status < 0 || (socklen_t) status >= servicelen)
         return EAI_OVERFLOW;
+#if defined(__GNUC__) && __GNUC__ > 6 && !defined(__clang__)
+#    pragma GCC diagnostic pop
+#endif
     return 0;
 }
 
diff -Nurp inn-2.6.4/lib/getpagesize.c inn-2.6.5/lib/getpagesize.c
--- inn-2.6.4/lib/getpagesize.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/getpagesize.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: getpagesize.c 10397 2020-11-12 20:22:51Z iulius $
-**
+/*
 **  Replacement for a missing getpagesize.
 **
 **  Provides getpagesize implemented in terms of sysconf for those systems
diff -Nurp inn-2.6.4/lib/hashtab.c inn-2.6.5/lib/hashtab.c
--- inn-2.6.4/lib/hashtab.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/hashtab.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: hashtab.c 10153 2017-06-05 12:28:01Z iulius $
-**
+/*
 **  Generic hash table implementation.
 **
 **  Written by Russ Allbery <eagle@eyrie.org>
diff -Nurp inn-2.6.4/lib/headers.c inn-2.6.5/lib/headers.c
--- inn-2.6.4/lib/headers.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/headers.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: headers.c 10326 2019-02-04 14:22:34Z iulius $
-**
+/*
 **  Routines for headers:  manipulation and checks.
 */
 
diff -Nurp inn-2.6.4/lib/hex.c inn-2.6.5/lib/hex.c
--- inn-2.6.4/lib/hex.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/hex.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: hex.c 7155 2005-04-10 06:27:34Z rra $
-**
+/*
 **  Convert data to or from an ASCII hex representation.
 **
 **  Converts arbitrary binary data to or from a representation as an ASCII
diff -Nurp inn-2.6.4/lib/inet_aton.c inn-2.6.5/lib/inet_aton.c
--- inn-2.6.4/lib/inet_aton.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/inet_aton.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: inet_aton.c 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * Replacement for a missing inet_aton.
  *
  * Provides the same functionality as the standard library routine
diff -Nurp inn-2.6.4/lib/inet_ntoa.c inn-2.6.5/lib/inet_ntoa.c
--- inn-2.6.4/lib/inet_ntoa.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/inet_ntoa.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: inet_ntoa.c 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * Replacement for a missing or broken inet_ntoa.
  *
  * Provides the same functionality as the standard library routine inet_ntoa
diff -Nurp inn-2.6.4/lib/inet_ntop.c inn-2.6.5/lib/inet_ntop.c
--- inn-2.6.4/lib/inet_ntop.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/inet_ntop.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: inet_ntop.c 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * Replacement for a missing inet_ntop.
  *
  * Provides an implementation of inet_ntop that only supports IPv4 addresses
diff -Nurp inn-2.6.4/lib/innconf.c inn-2.6.5/lib/innconf.c
--- inn-2.6.4/lib/innconf.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/innconf.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: innconf.c 10304 2018-12-02 14:05:50Z iulius $
-**
+/*
 **  Manage the global innconf struct.
 **
 **  The functions in this file collapse the parse tree for inn.conf into the
@@ -118,6 +117,7 @@ const struct config config_table[] = {
     { K(groupbaseexpiry),         BOOL    (true) },
     { K(mailcmd),                 STRING  (NULL) },
     { K(maxforks),                UNUMBER   (10) },
+    { K(maxlisten),               UNUMBER  (128) },
     { K(mta),                     STRING  (NULL) },
     { K(nicekids),                NUMBER     (4) },
     { K(ovmethod),                STRING  (NULL) },
diff -Nurp inn-2.6.4/lib/inndcomm.c inn-2.6.5/lib/inndcomm.c
--- inn-2.6.4/lib/inndcomm.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/inndcomm.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: inndcomm.c 10283 2018-05-14 12:43:05Z iulius $
-**
+/*
 **  Library routines to let other programs control innd.
 */
 
diff -Nurp inn-2.6.4/lib/list.c inn-2.6.5/lib/list.c
--- inn-2.6.4/lib/list.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/list.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,3 @@
-/*  $Id: list.c 6168 2003-01-21 06:27:32Z alexk $
-**
-*/
-
 #include "config.h"
 #include "clibrary.h"
 
diff -Nurp inn-2.6.4/lib/localopen.c inn-2.6.5/lib/localopen.c
--- inn-2.6.4/lib/localopen.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/localopen.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,3 @@
-/*  $Id: localopen.c 9761 2014-12-04 20:47:19Z iulius $
-**
-*/
-
 #include "config.h"
 #include "clibrary.h"
 #include <errno.h>
diff -Nurp inn-2.6.4/lib/lockfile.c inn-2.6.5/lib/lockfile.c
--- inn-2.6.4/lib/lockfile.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/lockfile.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: lockfile.c 7585 2006-11-21 09:37:51Z eagle $
-**
+/*
 **  Lock a file or a range in a file.
 **
 **  Provides inn_lock_file and inn_lock_range functions to lock or unlock a
diff -Nurp inn-2.6.4/lib/md5.c inn-2.6.5/lib/md5.c
--- inn-2.6.4/lib/md5.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/md5.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: md5.c 4154 2000-10-31 16:28:53Z kondou $
-**
+/*
 **  RSA Data Security, Inc. MD5 Message-Digest Algorithm
 **
 **  The standard MD5 message digest routines, from RSA Data Security, Inc.
diff -Nurp inn-2.6.4/lib/messageid.c inn-2.6.5/lib/messageid.c
--- inn-2.6.4/lib/messageid.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/messageid.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: messageid.c 10304 2018-12-02 14:05:50Z iulius $
-**
+/*
 **  Routines for message-IDs:  generation and checks.
 */
 
diff -Nurp inn-2.6.4/lib/messages.c inn-2.6.5/lib/messages.c
--- inn-2.6.4/lib/messages.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/messages.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: messages.c 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * Message and error reporting (possibly fatal).
  *
  * Usage:
diff -Nurp inn-2.6.4/lib/mkstemp.c inn-2.6.5/lib/mkstemp.c
--- inn-2.6.4/lib/mkstemp.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/mkstemp.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: mkstemp.c 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * Replacement for a missing mkstemp.
  *
  * Provides the same functionality as the library function mkstemp for those
diff -Nurp inn-2.6.4/lib/mmap.c inn-2.6.5/lib/mmap.c
--- inn-2.6.4/lib/mmap.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/mmap.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: mmap.c 7599 2007-02-09 02:46:39Z eagle $
-**
+/*
 **  Manipulation routines for memory-mapped pages.
 **
 **  Written by Alex Kiernan (alex.kiernan@thus.net)
diff -Nurp inn-2.6.4/lib/network-innbind.c inn-2.6.5/lib/network-innbind.c
--- inn-2.6.4/lib/network-innbind.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/network-innbind.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: network-innbind.c 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * Utility functions for network connections using innbind.
  *
  * This is a collection of utility functions for network connections and
diff -Nurp inn-2.6.4/lib/network.c inn-2.6.5/lib/network.c
--- inn-2.6.4/lib/network.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/network.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: network.c 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * Utility functions for network connections.
  *
  * This is a collection of utility functions for network connections and
diff -Nurp inn-2.6.4/lib/newsuser.c inn-2.6.5/lib/newsuser.c
--- inn-2.6.4/lib/newsuser.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/newsuser.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: newsuser.c 9981 2016-01-10 14:59:10Z iulius $
- *
+/*
  * Ensure running as "news" user/group.
  *
  * By Ivan Shmakov, 2007.
diff -Nurp inn-2.6.4/lib/nntp.c inn-2.6.5/lib/nntp.c
--- inn-2.6.4/lib/nntp.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/nntp.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: nntp.c 9695 2014-09-20 05:53:22Z iulius $
-**
+/*
 **  Utility functions for speaking the NNTP protocol.
 **
 **  These functions speak the NNTP protocol over stdio FILEs.  So far, only
diff -Nurp inn-2.6.4/lib/numbers.c inn-2.6.5/lib/numbers.c
--- inn-2.6.4/lib/numbers.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/numbers.c	1970-01-01 01:00:00.000000000 +0100
@@ -1,92 +0,0 @@
-/*  $Id: numbers.c 9019 2010-03-19 21:27:15Z iulius $
-**
-**  Routines for numbers:  manipulation and checks.
-*/
-
-#include "config.h"
-#include "clibrary.h"
-#include <ctype.h>
-
-#include "inn/libinn.h"
-
-
-/*
-**  Check if the argument is a valid article number according to RFC 3977,
-**  that is to say it contains from 1 to 16 digits.
-*/
-bool
-IsValidArticleNumber(const char *string)
-{
-    int len = 0;
-    const unsigned char *p;
-
-    /* Not NULL. */
-    if (string == NULL)
-        return false;
-
-    p = (const unsigned char *) string;
-   
-    for (; *p != '\0'; p++) {
-        len++;
-        if (!isdigit((unsigned char) *p))
-            return false;
-    }
-
-    if (len > 0 && len < 17)
-        return true;
-    else
-        return false;
-}
-
-
-/*
-**  Return true if the provided string is a valid range, that is to say:
-** 
-**    - An article number.
-**    - An article number followed by a dash to indicate all following.
-**    - An article number followed by a dash followed by another article
-**      number.
-**
-**  In addition to RFC 3977, we also accept:
-**    - A dash followed by an article number to indicate all previous.
-**    - A dash for everything.
-*/
-bool
-IsValidRange(char *string)
-{
-    char *p;
-    bool valid;
-
-    /* Not NULL. */
-    if (string == NULL)
-        return false;
-
-    /* Just a dash. */
-    if (strcmp(string, "-") == 0)
-        return true;
-
-    p = string;
-
-    /* Begins with a dash.  There must be a number after. */
-    if (*string == '-') {
-        p++;
-        return IsValidArticleNumber(p);
-    }
-
-    /* Got just a single number? */
-    if ((p = strchr(string, '-')) == NULL)
-        return IsValidArticleNumber(string);
-
-    /* "-" becomes "\0" and we parse the low water mark. */
-    *p++ = '\0';
-    if (*p == '\0') {
-        /* Ends with a dash. */
-        valid = IsValidArticleNumber(string);
-    } else {
-        valid = (IsValidArticleNumber(string) && IsValidArticleNumber(p));
-    }
-
-    p--;
-    *p = '-';
-    return valid;
-}
diff -Nurp inn-2.6.4/lib/perl.c inn-2.6.5/lib/perl.c
--- inn-2.6.4/lib/perl.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/perl.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: perl.c 10229 2018-01-28 21:21:21Z iulius $
-**
+/*
 **  Embedded Perl support for INN.
 **
 **  Originally written by Christophe Wolfhugel <wolf@pasteur.fr> (although
diff -Nurp inn-2.6.4/lib/pread.c inn-2.6.5/lib/pread.c
--- inn-2.6.4/lib/pread.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/pread.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: pread.c 9767 2014-12-07 21:13:43Z iulius $
-**
+/*
 **  Replacement for a missing pread.
 **
 **  Written by Russ Allbery <eagle@eyrie.org>
diff -Nurp inn-2.6.4/lib/pwrite.c inn-2.6.5/lib/pwrite.c
--- inn-2.6.4/lib/pwrite.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/pwrite.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: pwrite.c 9767 2014-12-07 21:13:43Z iulius $
-**
+/*
 **  Replacement for a missing pwrite.
 **
 **  Written by Russ Allbery <eagle@eyrie.org>
diff -Nurp inn-2.6.4/lib/qio.c inn-2.6.5/lib/qio.c
--- inn-2.6.4/lib/qio.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/qio.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: qio.c 10457 2020-12-19 06:10:49Z eagle $
-**
+/*
 **  Quick I/O package.
 **
 **  A set of routines optimized for reading through files line by line.
diff -Nurp inn-2.6.4/lib/radix32.c inn-2.6.5/lib/radix32.c
--- inn-2.6.4/lib/radix32.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/radix32.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: radix32.c 7585 2006-11-21 09:37:51Z eagle $
-**
+/*
 **  Radix-32 strings divide a number into five-bit nibbles and use the
 **  alphabet 0..9a..v to represent 0..32.
 */
diff -Nurp inn-2.6.4/lib/readin.c inn-2.6.5/lib/readin.c
--- inn-2.6.4/lib/readin.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/readin.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,3 @@
-/*  $Id: readin.c 7585 2006-11-21 09:37:51Z eagle $
-**
-*/
-
 #include "config.h"
 #include "clibrary.h"
 #include <errno.h>
diff -Nurp inn-2.6.4/lib/reallocarray.c inn-2.6.5/lib/reallocarray.c
--- inn-2.6.4/lib/reallocarray.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/reallocarray.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: reallocarray.c 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * Replacement for a missing reallocarray.
  *
  * Provides the same functionality as the OpenBSD library function
diff -Nurp inn-2.6.4/lib/remopen.c inn-2.6.5/lib/remopen.c
--- inn-2.6.4/lib/remopen.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/remopen.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: remopen.c 9691 2014-09-17 16:31:35Z iulius $
-**
+/*
 **  Open a connection to a remote NNTP server.
 */
 
diff -Nurp inn-2.6.4/lib/reservedfd.c inn-2.6.5/lib/reservedfd.c
--- inn-2.6.4/lib/reservedfd.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/reservedfd.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,3 @@
-/*  $Id: reservedfd.c 7585 2006-11-21 09:37:51Z eagle $
-**
-*/
-
 #include "config.h"
 #include "clibrary.h"
 #include <fcntl.h>
diff -Nurp inn-2.6.4/lib/resource.c inn-2.6.5/lib/resource.c
--- inn-2.6.4/lib/resource.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/resource.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,3 @@
-/*  $Id: resource.c 9754 2014-12-01 21:08:28Z iulius $
-**
-*/
-
 #include "config.h"
 #include "clibrary.h"
 #include "inn/libinn.h"
diff -Nurp inn-2.6.4/lib/sd-daemon.c inn-2.6.5/lib/sd-daemon.c
--- inn-2.6.4/lib/sd-daemon.c	1970-01-01 01:00:00.000000000 +0100
+++ inn-2.6.5/lib/sd-daemon.c	2022-02-18 20:36:57.000000000 +0100
@@ -0,0 +1,40 @@
+/*
+ * Stubs for systemd library functions.
+ *
+ * Provides empty stubs for sd_notify and sd_notifyf that do nothing and
+ * return 0, similar to the behavior of the proper library functions if not
+ * run under systemd.  Unsetting the environment (the first argument) is not
+ * supported.
+ *
+ * The canonical version of this file is maintained in the rra-c-util package,
+ * which can be found at <https://www.eyrie.org/~eagle/software/rra-c-util/>.
+ *
+ * Copyright 2021 Russ Allbery <eagle@eyrie.org>
+ *
+ * Copying and distribution of this file, with or without modification, are
+ * permitted in any medium without royalty provided the copyright notice and
+ * this notice are preserved.  This file is offered as-is, without any
+ * warranty.
+ *
+ * SPDX-License-Identifier: FSFAP
+ */
+
+#include "portable/macros.h"
+#include "portable/sd-daemon.h"
+
+/* Used for unused parameters to silence gcc warnings. */
+#define UNUSED __attribute__((__unused__))
+
+
+int
+sd_notify(int unset_environment UNUSED, const char *state UNUSED)
+{
+    return 0;
+}
+
+
+int
+sd_notifyf(int unset_environment UNUSED, const char *state UNUSED, ...)
+{
+    return 0;
+}
diff -Nurp inn-2.6.4/lib/sendarticle.c inn-2.6.5/lib/sendarticle.c
--- inn-2.6.4/lib/sendarticle.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/sendarticle.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,3 @@
-/*  $Id: sendarticle.c 8903 2010-01-17 18:21:56Z iulius $
-**
-*/
-
 #include "config.h"
 #include "clibrary.h"
 #include "inn/libinn.h"
diff -Nurp inn-2.6.4/lib/sendpass.c inn-2.6.5/lib/sendpass.c
--- inn-2.6.4/lib/sendpass.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/sendpass.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,3 @@
-/*  $Id: sendpass.c 9229 2011-07-07 11:43:41Z iulius $
-**
-*/
-
 #include "config.h"
 #include "clibrary.h"
 #include <ctype.h>
diff -Nurp inn-2.6.4/lib/sequence.c inn-2.6.5/lib/sequence.c
--- inn-2.6.4/lib/sequence.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/sequence.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: sequence.c 4871 2001-07-09 08:09:58Z alexk $
-**
+/*
 **  Sequence space arithmetic routines.
 **
 **  This is a set of routines for implementing so called sequence
diff -Nurp inn-2.6.4/lib/setenv.c inn-2.6.5/lib/setenv.c
--- inn-2.6.4/lib/setenv.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/setenv.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: setenv.c 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * Replacement for a missing setenv.
  *
  * Provides the same functionality as the standard library routine setenv for
diff -Nurp inn-2.6.4/lib/seteuid.c inn-2.6.5/lib/seteuid.c
--- inn-2.6.4/lib/seteuid.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/seteuid.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: seteuid.c 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * Replacement for a missing seteuid.
  *
  * Some systems don't have seteuid but do have setreuid.  setreuid with -1
diff -Nurp inn-2.6.4/lib/setproctitle.c inn-2.6.5/lib/setproctitle.c
--- inn-2.6.4/lib/setproctitle.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/setproctitle.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: setproctitle.c 10063 2016-09-04 12:53:12Z iulius $
-**
+/*
 **  Replacement for a missing setproctitle.
 **
 **  Provides the same functionality as the BSD function setproctitle on hosts
diff -Nurp inn-2.6.4/lib/snprintf.c inn-2.6.5/lib/snprintf.c
--- inn-2.6.4/lib/snprintf.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/snprintf.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: snprintf.c 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * Replacement for a missing snprintf or vsnprintf.
  *
  * The following implementation of snprintf was taken mostly verbatim from
diff -Nurp inn-2.6.4/lib/strcasecmp.c inn-2.6.5/lib/strcasecmp.c
--- inn-2.6.4/lib/strcasecmp.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/strcasecmp.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,9 +1,7 @@
 #include "config.h"
 #include "clibrary.h"
 
-
-/*  $Revision: 6118 $
- *
+/*
  * Copyright (c) 1987 Regents of the University of California.
  * All rights reserved.
  *
diff -Nurp inn-2.6.4/lib/strlcat.c inn-2.6.5/lib/strlcat.c
--- inn-2.6.4/lib/strlcat.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/strlcat.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: strlcat.c 10098 2016-11-04 22:19:40Z iulius $
- *
+/*
  * Replacement for a missing strlcat.
  *
  * Provides the same functionality as the *BSD function strlcat, originally
diff -Nurp inn-2.6.4/lib/strlcpy.c inn-2.6.5/lib/strlcpy.c
--- inn-2.6.4/lib/strlcpy.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/strlcpy.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: strlcpy.c 10098 2016-11-04 22:19:40Z iulius $
- *
+/*
  * Replacement for a missing strlcpy.
  *
  * Provides the same functionality as the *BSD function strlcpy, originally
diff -Nurp inn-2.6.4/lib/strspn.c inn-2.6.5/lib/strspn.c
--- inn-2.6.4/lib/strspn.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/strspn.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: strspn.c 6118 2003-01-13 06:44:24Z rra $
-**
+/*
 **  This file has been modified to get it to compile more easily
 **  on pre-4.4BSD systems.  Rich $alz, June 1991.
 */
diff -Nurp inn-2.6.4/lib/strtok.c inn-2.6.5/lib/strtok.c
--- inn-2.6.4/lib/strtok.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/strtok.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: strtok.c 6118 2003-01-13 06:44:24Z rra $
-**
+/*
 **  This file has been modified to get it to compile more easily
 **  on pre-4.4BSD systems.  Rich $alz, June 1991.
 */
diff -Nurp inn-2.6.4/lib/symlink.c inn-2.6.5/lib/symlink.c
--- inn-2.6.4/lib/symlink.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/symlink.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: symlink.c 6613 2004-01-12 00:49:30Z rra $
-**
+/*
 **  Replacement symlink that always fails for systems without it.
 **
 **  This is basically a hack to make code in INN simpler and more
diff -Nurp inn-2.6.4/lib/timer.c inn-2.6.5/lib/timer.c
--- inn-2.6.4/lib/timer.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/timer.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: timer.c 10069 2016-09-04 13:15:36Z iulius $
-**
+/*
 **  Timer functions, to gather profiling data.
 **
 **  These functions log profiling information about where the server spends
diff -Nurp inn-2.6.4/lib/tst.c inn-2.6.5/lib/tst.c
--- inn-2.6.4/lib/tst.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/tst.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: tst.c 7585 2006-11-21 09:37:51Z eagle $
-**
+/*
 **  Ternary search trie implementation.
 **
 **  A ternary search trie stores key/value pairs where the key is a
diff -Nurp inn-2.6.4/lib/uwildmat.c inn-2.6.5/lib/uwildmat.c
--- inn-2.6.4/lib/uwildmat.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/uwildmat.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: uwildmat.c 10326 2019-02-04 14:22:34Z iulius $
-**
+/*
 **  wildmat pattern matching with Unicode UTF-8 extensions.
 **
 **  Do shell-style pattern matching for ?, \, [], and * characters.  Might not
diff -Nurp inn-2.6.4/lib/vector.c inn-2.6.5/lib/vector.c
--- inn-2.6.4/lib/vector.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/vector.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: vector.c 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * Vector handling (counted lists of char *'s).
  *
  * A vector is a table for handling a list of strings with less overhead than
diff -Nurp inn-2.6.4/lib/wire.c inn-2.6.5/lib/wire.c
--- inn-2.6.4/lib/wire.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/wire.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: wire.c 8942 2010-02-04 21:24:42Z iulius $
-**
+/*
 **  Wire format article utilities.
 **
 **  Originally written by Alex Kiernan (alex.kiernan@thus.net)
diff -Nurp inn-2.6.4/lib/xfopena.c inn-2.6.5/lib/xfopena.c
--- inn-2.6.4/lib/xfopena.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/xfopena.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,3 @@
-/*  $Id: xfopena.c 7585 2006-11-21 09:37:51Z eagle $
-**
-*/
-
 #include "config.h"
 #include "clibrary.h"
 #include <fcntl.h>
diff -Nurp inn-2.6.4/lib/xmalloc.c inn-2.6.5/lib/xmalloc.c
--- inn-2.6.4/lib/xmalloc.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/xmalloc.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: xmalloc.c 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * malloc routines with failure handling.
  *
  * Usage:
@@ -203,7 +202,7 @@ x_strndup(const char *s, size_t size, co
     char *copy;
 
     /* Don't assume that the source string is nul-terminated. */
-    for (p = s; (size_t)(p - s) < size && *p != '\0'; p++)
+    for (p = s; (size_t) (p - s) < size && *p != '\0'; p++)
         ;
     length = p - s;
     copy = malloc(length + 1);
diff -Nurp inn-2.6.4/lib/xsignal.c inn-2.6.5/lib/xsignal.c
--- inn-2.6.4/lib/xsignal.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/xsignal.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: xsignal.c 9905 2015-06-20 20:51:22Z iulius $
-**
+/*
 **  A reliable implementation of signal for System V systems.
 **
 **  Two functions are provided, xsignal and xsignal_norestart.  The former
@@ -19,6 +18,24 @@ typedef void (*sig_handler_type)(int);
 
 #ifdef HAVE_SIGACTION
 
+/* We mask signals when not in select().
+ *
+ * This excludes the possibility of a signal handler accessing data that
+ * the main code is mutating.
+ * 
+ * signals_masked is signal mask we run with outside select(). It is
+ * initialised to the signal mask that held on entry, with the signals
+ * we handle added.
+ * 
+ * signals_unmasked is signal mask we run with during select(). It is
+ * initialised to the signal mask that held on entry, with the signals
+ * we handle removed.
+ * 
+ * Both sets are intended to be arguments to SIG_SETMASK, not
+ * to SIG_BLOCK or SIG_UNBLOCK.
+ * 
+ * Signals that are ignored or set to SIG_DFL are never masked.
+ */
 static bool signal_masking = false;
 static int signal_max;
 static sigset_t signals_masked, signals_unmasked;
@@ -31,12 +48,20 @@ set_signal_handled(int signum, sig_handl
 {
     if (signal_masking) {
         if (signum > signal_max) {
+            /* We track the maximum handled signal so that
+             * we can efficiently reconfigure signals in
+             * xsignal_forked(). */
             signal_max = signum;
         }
         if (sigfunc != SIG_IGN && sigfunc != SIG_DFL) {
+            /* Block handled signals except during select, when
+             * we permit them. */
             sigaddset(&signals_masked, signum);
+            sigdelset(&signals_unmasked, signum);
         } else {
+            /* Never block ignored/defaulted signals. */
             sigdelset(&signals_masked, signum);
+            sigdelset(&signals_unmasked, signum);
         }
         xsignal_mask();
     }
diff -Nurp inn-2.6.4/lib/xwrite.c inn-2.6.5/lib/xwrite.c
--- inn-2.6.4/lib/xwrite.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/lib/xwrite.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: xwrite.c 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * write and writev replacements to handle partial writes.
  *
  * Usage:
diff -Nurp inn-2.6.4/m4/aux-libs.m4 inn-2.6.5/m4/aux-libs.m4
--- inn-2.6.4/m4/aux-libs.m4	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/m4/aux-libs.m4	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 dnl aux-libs.m4 -- Search for libraries and store them a variable.
-dnl $Id: aux-libs.m4 6544 2003-12-26 03:23:31Z rra $
 dnl
 dnl Search for a particular library, and if found, add that library to the
 dnl specified variable (the third argument) and run the commands given in the
diff -Nurp inn-2.6.4/m4/bdb.m4 inn-2.6.5/m4/bdb.m4
--- inn-2.6.4/m4/bdb.m4	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/m4/bdb.m4	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 dnl Find the compiler and linker flags for the Berkeley DB library.
-dnl $Id: bdb.m4 10306 2018-12-02 14:26:13Z iulius $
 dnl
 dnl Finds the compiler and linker flags for linking with the Berkeley DB
 dnl library.  Provides the --with-bdb, --with-bdb-lib, and --with-bdb-include
@@ -11,12 +10,13 @@ dnl BDB_CPPFLAGS, BDB_LDFLAGS, and BDB_L
 dnl to set CPPFLAGS, LDFLAGS, and LIBS to include the Berkeley DB library,
 dnl saving the current values first, and INN_LIB_BDB_RESTORE to restore those
 dnl settings to before the last INN_LIB_BDB_SWITCH.  Defines HAVE_BDB and sets
-dnl inn_use_BDB to true if the library is found.
+dnl inn_use_BDB to true.
 dnl
 dnl Provides the INN_LIB_BDB_OPTIONAL macro, which should be used if Berkeley
 dnl DB support is optional.  This macro will still always set the substitution
-dnl variables, but they'll be empty unless --with-bdb is given.  Defines
-dnl HAVE_BDB and sets inn_use_BDB to true if the Berkeley DB library is found.
+dnl variables, but they'll be empty if the Berkeley DB library is not found or
+dnl if --without-bdb is given.  Defines HAVE_BDB and sets inn_use_BDB to true
+dnl if the Berkeley DB library is found and --without-bdb is not given.
 dnl
 dnl This file also provides INN_LIB_BDB_NDBM, which checks whether the
 dnl Berkeley DB library has ndbm support.  It then defines HAVE_BDB_NDBM and
@@ -30,7 +30,7 @@ dnl The canonical version of this file i
 dnl package, available at <https://www.eyrie.org/~eagle/software/rra-c-util/>.
 dnl
 dnl Written by Russ Allbery <eagle@eyrie.org>
-dnl Copyright 2018 Russ Allbery <eagle@eyrie.org>
+dnl Copyright 2018, 2022 Russ Allbery <eagle@eyrie.org>
 dnl Copyright 2013
 dnl     The Board of Trustees of the Leland Stanford Junior University
 dnl
diff -Nurp inn-2.6.4/m4/cc-c-o.m4 inn-2.6.5/m4/cc-c-o.m4
--- inn-2.6.4/m4/cc-c-o.m4	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/m4/cc-c-o.m4	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 dnl cc-c-o.m4 -- Checks whether -o can be used with -c.
-dnl $Id: cc-c-o.m4 8407 2009-04-11 17:16:06Z iulius $
 dnl
 dnl Used to check whether -o can be provided with -c with the chosen compiler.
 dnl We need this if we're not using libtool so that object files can be built
diff -Nurp inn-2.6.4/m4/cc-flags.m4 inn-2.6.5/m4/cc-flags.m4
--- inn-2.6.4/m4/cc-flags.m4	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/m4/cc-flags.m4	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 dnl Check whether the compiler supports particular flags.
-dnl $Id: cc-flags.m4 10520 2021-01-17 21:48:06Z iulius $
 dnl
 dnl Provides INN_PROG_CC_FLAG and INN_PROG_LD_FLAG, which checks whether a
 dnl compiler supports a given flag for either compilation or linking,
@@ -9,7 +8,7 @@ dnl
 dnl The canonical version of this file is maintained in the rra-c-util
 dnl package, available at <https://www.eyrie.org/~eagle/software/rra-c-util/>.
 dnl
-dnl Copyright 2016-2020 Russ Allbery <eagle@eyrie.org>
+dnl Copyright 2016-2021 Russ Allbery <eagle@eyrie.org>
 dnl Copyright 2006, 2009, 2016
 dnl     by Internet Systems Consortium, Inc. ("ISC")
 dnl
diff -Nurp inn-2.6.4/m4/compress.m4 inn-2.6.5/m4/compress.m4
--- inn-2.6.4/m4/compress.m4	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/m4/compress.m4	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 dnl compress.m4 -- Log compression handling.
-dnl $Id: compress.m4 9075 2010-06-05 08:38:06Z iulius $
 dnl
 dnl By default, INN compresses logs with gzip, but some people may want to use
 dnl compress instead, and others may want to use bzip2, or even not compress
diff -Nurp inn-2.6.4/m4/inet-ntoa.m4 inn-2.6.5/m4/inet-ntoa.m4
--- inn-2.6.4/m4/inet-ntoa.m4	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/m4/inet-ntoa.m4	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 dnl Check for a working inet_ntoa.
-dnl $Id: inet-ntoa.m4 10246 2018-02-16 21:12:42Z iulius $
 dnl
 dnl Check whether inet_ntoa is present and working.  Since calling inet_ntoa
 dnl involves passing small structs on the stack, present and working versions
diff -Nurp inn-2.6.4/m4/iov-max.m4 inn-2.6.5/m4/iov-max.m4
--- inn-2.6.4/m4/iov-max.m4	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/m4/iov-max.m4	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 dnl iov-max.m4 -- Probe for the maximum number of iovecs accepted by writev.
-dnl $Id: iov-max.m4 10352 2019-10-31 01:37:59Z eagle $
 dnl
 dnl Check for the maximum number of elements in an iovec (IOV_MAX).  SVr4
 dnl systems appear to use that name for this limit (checked Solaris 2.6, IRIX
diff -Nurp inn-2.6.4/m4/krb5-config.m4 inn-2.6.5/m4/krb5-config.m4
--- inn-2.6.4/m4/krb5-config.m4	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/m4/krb5-config.m4	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 dnl Use krb5-config to get link paths for Kerberos libraries.
-dnl $Id: krb5-config.m4 10520 2021-01-17 21:48:06Z iulius $
 dnl
 dnl Provides one macro, INN_KRB5_CONFIG, which attempts to get compiler and
 dnl linker flags for a library via krb5-config and sets the appropriate shell
@@ -12,7 +11,7 @@ dnl The canonical version of this file i
 dnl package, available at <https://www.eyrie.org/~eagle/software/rra-c-util/>.
 dnl
 dnl Written by Russ Allbery <eagle@eyrie.org>
-dnl Copyright 2018 Russ Allbery <eagle@eyrie.org>
+dnl Copyright 2018, 2021 Russ Allbery <eagle@eyrie.org>
 dnl Copyright 2011-2012
 dnl     The Board of Trustees of the Leland Stanford Junior University
 dnl
diff -Nurp inn-2.6.4/m4/krb5.m4 inn-2.6.5/m4/krb5.m4
--- inn-2.6.4/m4/krb5.m4	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/m4/krb5.m4	2022-02-18 20:36:57.000000000 +0100
@@ -106,134 +106,130 @@ dnl Check for a header using a file exis
 dnl AC_CHECK_HEADERS.  This is used if there were arguments to configure
 dnl specifying the Kerberos header path, since we may have one header in the
 dnl default include path and another under our explicitly-configured Kerberos
-dnl location.  Sets inn_krb5_header_found to true if the header is found.
+dnl location.  The second argument is run if the header was found.
 AC_DEFUN([_INN_LIB_KRB5_CHECK_HEADER],
 [AC_MSG_CHECKING([for $1])
  AS_IF([test -f "${inn_krb5_incroot}/$1"],
-    [inn_krb5_header_found=true
-     AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_$1]), [1],
+    [AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_$1]), [1],
         [Define to 1 if you have the <$1> header file.])
-     AC_MSG_RESULT([yes])],
+     AC_MSG_RESULT([yes])
+     $2],
     [AC_MSG_RESULT([no])])])
 
 dnl Check for the com_err header.  Internal helper macro since we need
-dnl to do the same checks in multiple places.  Sets inn_krb5_header_found
-dnl to true if one header is found.
+dnl to do the same checks in multiple places.
 AC_DEFUN([_INN_LIB_KRB5_CHECK_HEADER_COM_ERR],
 [AS_IF([test x"$inn_krb5_incroot" = x],
-   [AC_CHECK_HEADERS([et/com_err.h kerberosv5/com_err.h],
-                     [inn_krb5_header_found=true])],
-       [_INN_LIB_KRB5_CHECK_HEADER([et/com_err.h])
-        _INN_LIB_KRB5_CHECK_HEADER([kerberosv5/com_err.h])])])
+    [AC_CHECK_HEADERS([et/com_err.h kerberosv5/com_err.h])],
+        [_INN_LIB_KRB5_CHECK_HEADER([et/com_err.h])
+         _INN_LIB_KRB5_CHECK_HEADER([kerberosv5/com_err.h])])])
 
 dnl Check for the main Kerberos header.  Internal helper macro since we need
-dnl to do the same checks in multiple places.  Sets inn_krb5_header_found
-dnl to true if one header is found.
+dnl to do the same checks in multiple places.  The first argument is run if
+dnl some header was found, and the second if no header was found.
+dnl header could not be found.
 AC_DEFUN([_INN_LIB_KRB5_CHECK_HEADER_KRB5],
-[AS_IF([test x"$inn_krb5_incroot" = x],
+[inn_krb5_found_header=
+ AS_IF([test x"$inn_krb5_incroot" = x],
      [AC_CHECK_HEADERS([krb5.h kerberosv5/krb5.h krb5/krb5.h],
-                       [inn_krb5_header_found=true])],
-     [_INN_LIB_KRB5_CHECK_HEADER([krb5.h])
-      _INN_LIB_KRB5_CHECK_HEADER([kerberosv5/krb5.h])
-      _INN_LIB_KRB5_CHECK_HEADER([krb5/krb5.h])])])
+         [inn_krb5_found_header=true])],
+     [_INN_LIB_KRB5_CHECK_HEADER([krb5.h],
+         [inn_krb5_found_header=true])
+      _INN_LIB_KRB5_CHECK_HEADER([kerberosv5/krb5.h],
+         [inn_krb5_found_header=true])
+      _INN_LIB_KRB5_CHECK_HEADER([krb5/krb5.h],
+         [inn_krb5_found_header=true])])
+ AS_IF([test x"$inn_krb5_found_header" = xtrue], [$1], [$2])])
 
 dnl Does the appropriate library checks for reduced-dependency Kerberos
 dnl linkage.  The single argument, if true, says to fail if Kerberos could not
 dnl be found.
 AC_DEFUN([_INN_LIB_KRB5_REDUCED],
-[inn_krb5_header_found=false
- _INN_LIB_KRB5_CHECK_HEADER_KRB5
- AS_IF([test x"$inn_krb5_header_found" = xtrue],
-     [INN_LIB_KRB5_SWITCH
-      AC_CHECK_LIB([krb5], [krb5_init_context],
-         [KRB5_LIBS="-lkrb5"
-          LIBS="$KRB5_LIBS $LIBS"
-          AC_CHECK_FUNCS([krb5_get_error_message],
-             [AC_CHECK_FUNCS([krb5_free_error_message])],
-             [AC_CHECK_FUNCS([krb5_get_error_string], [],
-                 [AC_CHECK_FUNCS([krb5_get_err_txt], [],
-                     [AC_CHECK_LIB([ksvc], [krb5_svc_get_msg],
-                         [KRB5_LIBS="$KRB5_LIBS -lksvc"
-                          AC_DEFINE([HAVE_KRB5_SVC_GET_MSG], [1])
-                          AC_CHECK_HEADERS([ibm_svc/krb5_svc.h], [], [],
-                             [INN_INCLUDES_KRB5])],
-                         [inn_krb5_header_found=false
-                          _INN_LIB_KRB5_CHECK_HEADER_COM_ERR
-                          AS_IF([test x"$inn_krb5_header_found" = xtrue],
-                             [AC_CHECK_LIB([com_err], [com_err],
-                                 [KRB5_LIBS="$KRB5_LIBS -lcom_err"],
-                                 [AS_IF([test x"$1" = xtrue],
-                                     [AC_MSG_ERROR([cannot find usable com_err library])],
-                                     [KRB5_LIBS=""])])],
-                             [AS_IF([test x"$1" = xtrue],
-                                 [AC_MSG_ERROR([cannot find usable com_err header])])])])])])])],
-         [AS_IF([test x"$1" = xtrue],
-             [AC_MSG_ERROR([cannot find usable Kerberos library])])])],
-     [AS_IF([test x"$1" = xtrue],
-         [AC_MSG_ERROR([cannot find usable Kerberos header])])])
- INN_LIB_KRB5_RESTORE])
-
-dnl Does the appropriate library checks for Kerberos linkage when we don't
-dnl have krb5-config or reduced dependencies.  The single argument, if true,
-dnl says to fail if Kerberos could not be found.
-AC_DEFUN([_INN_LIB_KRB5_MANUAL],
-[inn_krb5_header_found=false
- _INN_LIB_KRB5_CHECK_HEADER_KRB5
- AS_IF([test x"$inn_krb5_header_found" = xtrue],
-    [INN_LIB_KRB5_SWITCH
-     inn_krb5_extra=
-     LIBS=
-     AC_SEARCH_LIBS([res_search], [resolv], [],
-        [AC_SEARCH_LIBS([__res_search], [resolv])])
-     AC_SEARCH_LIBS([gethostbyname], [nsl])
-     AC_SEARCH_LIBS([socket], [socket], [],
-        [AC_CHECK_LIB([nsl], [socket], [LIBS="-lnsl -lsocket $LIBS"], [],
-            [-lsocket])])
-     AC_SEARCH_LIBS([crypt], [crypt])
-     AC_SEARCH_LIBS([roken_concat], [roken])
-     inn_krb5_extra="$LIBS"
-     LIBS="$inn_krb5_save_LIBS"
-     AC_CHECK_LIB([krb5], [krb5_init_context],
-        [KRB5_LIBS="-lkrb5 -lasn1 -lcom_err -lcrypto $inn_krb5_extra"],
-        [AC_CHECK_LIB([krb5support], [krb5int_getspecific],
-            [inn_krb5_extra="-lkrb5support $inn_krb5_extra"],
-            [AC_CHECK_LIB([pthreads], [pthread_setspecific],
-                [inn_krb5_pthread="-lpthreads"],
-                [AC_CHECK_LIB([pthread], [pthread_setspecific],
-                    [inn_krb5_pthread="-lpthread"])])
-             AC_CHECK_LIB([krb5support], [krb5int_setspecific],
-                [inn_krb5_extra="-lkrb5support $inn_krb5_extra $inn_krb5_pthread"],
-                [], [$inn_krb5_pthread $inn_krb5_extra])],
-            [$inn_krb5_extra])
-         AC_CHECK_LIB([com_err], [error_message],
-            [inn_krb5_extra="-lcom_err $inn_krb5_extra"], [], [$inn_krb5_extra])
-         AC_CHECK_LIB([ksvc], [krb5_svc_get_msg],
-            [inn_krb5_extra="-lksvc $inn_krb5_extra"], [], [$inn_krb5_extra])
-         AC_CHECK_LIB([k5crypto], [krb5int_hash_md5],
-            [inn_krb5_extra="-lk5crypto $inn_krb5_extra"], [], [$inn_krb5_extra])
-         AC_CHECK_LIB([k5profile], [profile_get_values],
-            [inn_krb5_extra="-lk5profile $inn_krb5_extra"], [], [$inn_krb5_extra])
-         AC_CHECK_LIB([krb5], [krb5_cc_default],
-            [KRB5_LIBS="-lkrb5 $inn_krb5_extra"],
-            [AS_IF([test x"$1" = xtrue],
-                [AC_MSG_ERROR([cannot find usable Kerberos library])])],
-            [$inn_krb5_extra])],
-        [-lasn1 -lcom_err -lcrypto $inn_krb5_extra])
+[INN_LIB_KRB5_SWITCH
+ AC_CHECK_LIB([krb5], [krb5_init_context],
+    [KRB5_LIBS="-lkrb5"
      LIBS="$KRB5_LIBS $LIBS"
      AC_CHECK_FUNCS([krb5_get_error_message],
         [AC_CHECK_FUNCS([krb5_free_error_message])],
         [AC_CHECK_FUNCS([krb5_get_error_string], [],
             [AC_CHECK_FUNCS([krb5_get_err_txt], [],
-                [AC_CHECK_FUNCS([krb5_svc_get_msg],
-                    [AC_CHECK_HEADERS([ibm_svc/krb5_svc.h], [], [],
+                [AC_CHECK_LIB([ksvc], [krb5_svc_get_msg],
+                    [KRB5_LIBS="$KRB5_LIBS -lksvc"
+                     AC_DEFINE([HAVE_KRB5_SVC_GET_MSG], [1])
+                     AC_CHECK_HEADERS([ibm_svc/krb5_svc.h], [], [],
                         [INN_INCLUDES_KRB5])],
-                    [inn_krb5_header_found=false
-                     _INN_LIB_KRB5_CHECK_HEADER_COM_ERR
-                     AS_IF([test x"$inn_krb5_header_found" != xtrue],
+                    [AC_CHECK_LIB([com_err], [com_err],
+                        [KRB5_LIBS="$KRB5_LIBS -lcom_err"],
                         [AS_IF([test x"$1" = xtrue],
-                            [AC_MSG_ERROR([cannot find usable com_err header])])])])])])])],
-     [AS_IF([test x"$1" = xtrue],
-         [AC_MSG_ERROR([cannot find usable Kerberos header])])])
+                            [AC_MSG_ERROR([cannot find usable com_err library])],
+                            [KRB5_LIBS=""])])
+                     _INN_LIB_KRB5_CHECK_HEADER_COM_ERR])])])])
+     _INN_LIB_KRB5_CHECK_HEADER_KRB5([],
+        [KRB5_CPPFLAGS=
+         KRB5_LIBS=
+         AS_IF([test x"$1" = xtrue],
+            [AC_MSG_ERROR([cannot find usable Kerberos header])])])],
+    [AS_IF([test x"$1" = xtrue],
+        [AC_MSG_ERROR([cannot find usable Kerberos library])])])
+ INN_LIB_KRB5_RESTORE])
+
+dnl Does the appropriate library checks for Kerberos linkage when we don't
+dnl have krb5-config or reduced dependencies.  The single argument, if true,
+dnl says to fail if Kerberos could not be found.
+AC_DEFUN([_INN_LIB_KRB5_MANUAL],
+[INN_LIB_KRB5_SWITCH
+ inn_krb5_extra=
+ LIBS=
+ AC_SEARCH_LIBS([res_search], [resolv], [],
+    [AC_SEARCH_LIBS([__res_search], [resolv])])
+ AC_SEARCH_LIBS([gethostbyname], [nsl])
+ AC_SEARCH_LIBS([socket], [socket], [],
+    [AC_CHECK_LIB([nsl], [socket], [LIBS="-lnsl -lsocket $LIBS"], [],
+        [-lsocket])])
+ AC_SEARCH_LIBS([crypt], [crypt])
+ AC_SEARCH_LIBS([roken_concat], [roken])
+ inn_krb5_extra="$LIBS"
+ LIBS="$inn_krb5_save_LIBS"
+ AC_CHECK_LIB([krb5], [krb5_init_context],
+    [KRB5_LIBS="-lkrb5 -lasn1 -lcom_err -lcrypto $inn_krb5_extra"],
+    [AC_CHECK_LIB([krb5support], [krb5int_getspecific],
+        [inn_krb5_extra="-lkrb5support $inn_krb5_extra"],
+        [AC_CHECK_LIB([pthreads], [pthread_setspecific],
+            [inn_krb5_pthread="-lpthreads"],
+            [AC_CHECK_LIB([pthread], [pthread_setspecific],
+                [inn_krb5_pthread="-lpthread"])])
+         AC_CHECK_LIB([krb5support], [krb5int_setspecific],
+            [inn_krb5_extra="-lkrb5support $inn_krb5_extra $inn_krb5_pthread"],
+            [], [$inn_krb5_pthread $inn_krb5_extra])],
+        [$inn_krb5_extra])
+     AC_CHECK_LIB([com_err], [error_message],
+        [inn_krb5_extra="-lcom_err $inn_krb5_extra"], [], [$inn_krb5_extra])
+     AC_CHECK_LIB([ksvc], [krb5_svc_get_msg],
+        [inn_krb5_extra="-lksvc $inn_krb5_extra"], [], [$inn_krb5_extra])
+     AC_CHECK_LIB([k5crypto], [krb5int_hash_md5],
+        [inn_krb5_extra="-lk5crypto $inn_krb5_extra"], [], [$inn_krb5_extra])
+     AC_CHECK_LIB([k5profile], [profile_get_values],
+        [inn_krb5_extra="-lk5profile $inn_krb5_extra"], [], [$inn_krb5_extra])
+     AC_CHECK_LIB([krb5], [krb5_cc_default],
+        [KRB5_LIBS="-lkrb5 $inn_krb5_extra"],
+        [AS_IF([test x"$1" = xtrue],
+            [AC_MSG_ERROR([cannot find usable Kerberos library])])],
+        [$inn_krb5_extra])],
+    [-lasn1 -lcom_err -lcrypto $inn_krb5_extra])
+ LIBS="$KRB5_LIBS $LIBS"
+ AC_CHECK_FUNCS([krb5_get_error_message],
+     [AC_CHECK_FUNCS([krb5_free_error_message])],
+     [AC_CHECK_FUNCS([krb5_get_error_string], [],
+         [AC_CHECK_FUNCS([krb5_get_err_txt], [],
+             [AC_CHECK_FUNCS([krb5_svc_get_msg],
+                 [AC_CHECK_HEADERS([ibm_svc/krb5_svc.h], [], [],
+                     [INN_INCLUDES_KRB5])],
+                 [_INN_LIB_KRB5_CHECK_HEADER_COM_ERR])])])])
+ _INN_LIB_KRB5_CHECK_HEADER_KRB5([],
+    [KRB5_CPPFLAGS=
+     KRB5_LIBS=
+     AS_IF([test x"$1" = xtrue],
+        [AC_MSG_ERROR([cannot find usable Kerberos header])])])
  INN_LIB_KRB5_RESTORE])
 
 dnl Sanity-check the results of krb5-config and be sure we can really link a
@@ -243,7 +239,12 @@ dnl check.
 AC_DEFUN([_INN_LIB_KRB5_CHECK],
 [INN_LIB_KRB5_SWITCH
  AC_CHECK_FUNC([krb5_init_context],
-    [INN_LIB_KRB5_RESTORE],
+    [_INN_LIB_KRB5_CHECK_HEADER_KRB5([INN_LIB_KRB5_RESTORE],
+        [INN_LIB_KRB5_RESTORE
+         KRB5_CPPFLAGS=
+         KRB5_LIBS=
+         _INN_LIB_KRB5_PATHS
+         _INN_LIB_KRB5_MANUAL([$1])])],
     [INN_LIB_KRB5_RESTORE
      KRB5_CPPFLAGS=
      KRB5_LIBS=
@@ -255,26 +256,17 @@ dnl additional probing we need to do to
 dnl falls back on the manual checks.
 AC_DEFUN([_INN_LIB_KRB5_CONFIG],
 [INN_KRB5_CONFIG([${inn_krb5_root}], [krb5], [KRB5],
-    [inn_krb5_header_found=false
-     _INN_LIB_KRB5_CHECK_HEADER_KRB5
-     AS_IF([test x"$inn_krb5_header_found" = xtrue],
-        [_INN_LIB_KRB5_CHECK([$1])
-         INN_LIB_KRB5_SWITCH
-         AC_CHECK_FUNCS([krb5_get_error_message],
-             [AC_CHECK_FUNCS([krb5_free_error_message])],
-             [AC_CHECK_FUNCS([krb5_get_error_string], [],
-                 [AC_CHECK_FUNCS([krb5_get_err_txt], [],
-                     [AC_CHECK_FUNCS([krb5_svc_get_msg],
-                         [AC_CHECK_HEADERS([ibm_svc/krb5_svc.h], [], [],
-                             [INN_INCLUDES_KRB5])],
-                         [inn_krb5_header_found=false
-                          _INN_LIB_KRB5_CHECK_HEADER_COM_ERR
-                          AS_IF([test x"$inn_krb5_header_found" != xtrue],
-                             [AS_IF([test x"$1" = xtrue],
-                                 [AC_MSG_ERROR([cannot find usable com_err header])])])])])])])
-         INN_LIB_KRB5_RESTORE],
-         [AS_IF([test x"$1" = xtrue],
-             [AC_MSG_ERROR([cannot find usable Kerberos header])])])],
+    [_INN_LIB_KRB5_CHECK([$1])
+     INN_LIB_KRB5_SWITCH
+     AC_CHECK_FUNCS([krb5_get_error_message],
+         [AC_CHECK_FUNCS([krb5_free_error_message])],
+         [AC_CHECK_FUNCS([krb5_get_error_string], [],
+             [AC_CHECK_FUNCS([krb5_get_err_txt], [],
+                 [AC_CHECK_FUNCS([krb5_svc_get_msg],
+                     [AC_CHECK_HEADERS([ibm_svc/krb5_svc.h], [], [],
+                         [INN_INCLUDES_KRB5])],
+                     [_INN_LIB_KRB5_CHECK_HEADER_COM_ERR])])])])
+     INN_LIB_KRB5_RESTORE],
     [_INN_LIB_KRB5_PATHS
      _INN_LIB_KRB5_MANUAL([$1])])])
 
@@ -304,7 +296,7 @@ AC_DEFUN([_INN_LIB_KRB5_INTERNAL],
  AS_CASE([$KRB5_LIBS], [*-lcom_err*], [inn_krb5_uses_com_err=true])
  AM_CONDITIONAL([KRB5_USES_COM_ERR],
     [test x"$inn_krb5_uses_com_err" = xtrue])
- KRB5_CPPFLAGS_WARNINGS=`AS_ECHO(["$KRB5_CPPFLAGS"]) | sed -e 's/-I/-isystem /g'`])
+ KRB5_CPPFLAGS_WARNINGS=`AS_ECHO(["$KRB5_CPPFLAGS"]) | sed 's/-I/-isystem /g'`])
 
 dnl The main macro for packages with mandatory Kerberos support.
 AC_DEFUN([INN_LIB_KRB5],
diff -Nurp inn-2.6.4/m4/large-fpos.m4 inn-2.6.5/m4/large-fpos.m4
--- inn-2.6.4/m4/large-fpos.m4	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/m4/large-fpos.m4	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 dnl large-fpos.m4 -- Check for an off_t-compatible fpos_t.
-dnl $Id: large-fpos.m4 8312 2009-01-31 20:35:04Z iulius $
 dnl
 dnl Some operating systems (most notably BSDI) support large files but don't
 dnl have the fseeko and ftello functions.  However, fseeko and ftello can be
diff -Nurp inn-2.6.4/m4/lib-depends.m4 inn-2.6.5/m4/lib-depends.m4
--- inn-2.6.4/m4/lib-depends.m4	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/m4/lib-depends.m4	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 dnl Provides option to change library probes.
-dnl $Id: lib-depends.m4 10246 2018-02-16 21:12:42Z iulius $
 dnl
 dnl This file provides INN_ENABLE_REDUCED_DEPENDS, which adds the configure
 dnl option --enable-reduced-depends to request that library probes assume
diff -Nurp inn-2.6.4/m4/lib-helper.m4 inn-2.6.5/m4/lib-helper.m4
--- inn-2.6.4/m4/lib-helper.m4	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/m4/lib-helper.m4	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 dnl Helper functions to manage compiler variables.
-dnl $Id: lib-helper.m4 10306 2018-12-02 14:26:13Z iulius $
 dnl
 dnl These are a wide variety of helper macros to make it easier to construct
 dnl standard macros to probe for a library and to set library-specific
diff -Nurp inn-2.6.4/m4/lib-pathname.m4 inn-2.6.5/m4/lib-pathname.m4
--- inn-2.6.4/m4/lib-pathname.m4	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/m4/lib-pathname.m4	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 dnl Determine the library path name.
-dnl $Id: lib-pathname.m4 10520 2021-01-17 21:48:06Z iulius $
 dnl
 dnl Red Hat systems and some other Linux systems use lib64 and lib32 rather
 dnl than just lib in some circumstances.  This file provides an Autoconf
@@ -10,13 +9,11 @@ dnl the compilation environment.  If a s
 dnl suffix will be appended, to allow for adding a subdirectory of the library
 dnl directory.
 dnl
-dnl This file also provides the Autoconf macro INN_SET_LIBDIR, which sets the
-dnl libdir variable to PREFIX/lib{,32,64} as appropriate.
-dnl
 dnl The canonical version of this file is maintained in the rra-c-util
 dnl package, available at <https://www.eyrie.org/~eagle/software/rra-c-util/>.
 dnl
 dnl Written by Russ Allbery <eagle@eyrie.org>
+dnl Copyright 2021 Russ Allbery <eagle@eyrie.org>
 dnl Copyright 2008-2009
 dnl     The Board of Trustees of the Leland Stanford Junior University
 dnl
@@ -38,9 +35,9 @@ dnl see.
 AC_DEFUN([_INN_LIB_ARCH_NAME],
 [inn_lib_arch_name=lib
  AC_CHECK_SIZEOF([long])
- AS_IF([test "$ac_cv_sizeof_long" -eq 4 && test -d /usr/lib32],
+ AS_IF([test "$ac_cv_sizeof_long" -eq 4],
      [inn_lib_arch_name=lib32],
-     [AS_IF([test "$ac_cv_sizeof_long" -eq 8 && test -d /usr/lib64],
+     [AS_IF([test "$ac_cv_sizeof_long" -eq 8],
          [inn_lib_arch_name=lib64])])])
 
 dnl Set VARIABLE to -LPREFIX/lib{,32,64} or -LPREFIX/lib{,32,64}/SUFFIX as
@@ -55,10 +52,3 @@ AC_DEFUN([INN_SET_LDFLAGS],
         [$1="[$]$1 -L$2/lib"],
         [$1="[$]$1 -L$2/lib/$3"])])
  $1=`AS_ECHO(["[$]$1"]) | sed -e 's/^ *//'`])
-
-dnl Set libdir to PREFIX/lib{,32,64} as appropriate.
-AC_DEFUN([INN_SET_LIBDIR],
-[AC_REQUIRE([_INN_LIB_ARCH_NAME])
- AS_IF([test -d "$1/$inn_lib_arch_name"],
-    [libdir="$1/${inn_lib_arch_name}"],
-    [libdir="$1/lib"])])
diff -Nurp inn-2.6.4/m4/mmap.m4 inn-2.6.5/m4/mmap.m4
--- inn-2.6.4/m4/mmap.m4	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/m4/mmap.m4	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 dnl mmap.m4 -- Probe for mmap properties.
-dnl $Id: mmap.m4 10397 2020-11-12 20:22:51Z iulius $
 dnl
 dnl The mmap macro that comes with Autoconf doesn't do anything useful.
 dnl Define a new INN_FUNC_MMAP that probes for a working mmap that supports
diff -Nurp inn-2.6.4/m4/modes.m4 inn-2.6.5/m4/modes.m4
--- inn-2.6.4/m4/modes.m4	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/m4/modes.m4	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 dnl modes.m4 -- Setting file and installation modes.
-dnl $Id: modes.m4 10520 2021-01-17 21:48:06Z iulius $
 dnl
 dnl INN defaults to a umask of 002 for historical reasons, but offers an
 dnl option to change them.  It also has some programs that are occasionally
diff -Nurp inn-2.6.4/m4/openssl.m4 inn-2.6.5/m4/openssl.m4
--- inn-2.6.4/m4/openssl.m4	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/m4/openssl.m4	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 dnl Find the compiler and linker flags for OpenSSL.
-dnl $Id: openssl.m4 10306 2018-12-02 14:26:13Z iulius $
 dnl
 dnl Finds the compiler and linker flags for linking with both the OpenSSL SSL
 dnl library and its crypto library.  Provides the --with-openssl,
@@ -14,13 +13,14 @@ dnl SSL or crypto libraries, saving the
 dnl INN_LIB_OPENSSL_RESTORE and INN_LIB_CRYPTO_RESTORE to restore those
 dnl settings to before the last INN_LIB_OPENSSL_SWITCH or
 dnl INN_LIB_CRYPTO_SWITCH.  Defines HAVE_OPENSSL and sets inn_use_OPENSSL to
-dnl true if the library is found.
+dnl true.
 dnl
 dnl Provides the INN_LIB_OPENSSL_OPTIONAL macro, which should be used if
 dnl OpenSSL support is optional.  This macro will still set the substitution
-dnl variables and shell variables described above, but they'll be empty unless
-dnl OpenSSL libraries are detected.  HAVE_OPENSSL will be defined only if the
-dnl library is found.
+dnl variables and shell variables described above, but they'll be empty if
+dnl OpenSSL libraries are not found or if --without-openssl is given.
+dnl HAVE_OPENSSL will be defined if the library is found and --without-openssl
+dnl is not given.
 dnl
 dnl Depends on INN_ENABLE_REDUCED_DEPENDS and the lib-helper.m4 framework.
 dnl
@@ -28,7 +28,7 @@ dnl The canonical version of this file i
 dnl package, available at <https://www.eyrie.org/~eagle/software/rra-c-util/>.
 dnl
 dnl Written by Russ Allbery <eagle@eyrie.org>
-dnl Copyright 2016, 2018 Russ Allbery <eagle@eyrie.org>
+dnl Copyright 2016, 2018, 2022 Russ Allbery <eagle@eyrie.org>
 dnl Copyright 2010, 2013
 dnl     The Board of Trustees of the Leland Stanford Junior University
 dnl
diff -Nurp inn-2.6.4/m4/pam-const.m4 inn-2.6.5/m4/pam-const.m4
--- inn-2.6.4/m4/pam-const.m4	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/m4/pam-const.m4	2022-02-18 20:36:57.000000000 +0100
@@ -1,12 +1,11 @@
 dnl Determine whether PAM uses const in prototypes.
-dnl $Id: pam-const.m4 10450 2020-12-09 21:55:08Z iulius $
 dnl
 dnl Linux marks several PAM arguments const, including the argument to
 dnl pam_get_item and some arguments to conversation functions, which Solaris
-dnl doesn't.  Mac OS X, OS X and macOS mark the first argument to pam_strerror
-dnl const, and other platforms don't.  This test tries to determine which
-dnl style is in use to select whether to declare variables const and how
-dnl to prototype functions in order to avoid compiler warnings.
+dnl doesn't.  Mac OS X, OS X, and macOS mark the first argument to
+dnl pam_strerror const, and other platforms don't.  This test tries to
+dnl determine which style is in use to select whether to declare variables
+dnl const and how to prototype functions in order to avoid compiler warnings.
 dnl
 dnl Since this is just for compiler warnings, it's not horribly important if
 dnl we guess wrong.  This test is ugly, but it seems to work.
diff -Nurp inn-2.6.4/m4/paths.m4 inn-2.6.5/m4/paths.m4
--- inn-2.6.4/m4/paths.m4	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/m4/paths.m4	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 dnl paths.m4 -- Configure various paths used by INN.
-dnl $Id: paths.m4 8495 2009-05-24 12:28:19Z iulius $
 dnl
 dnl INN has quite a few more configurable paths than autoconf supports by
 dnl default.  The regular --*dir options are honored where appropriate, but
diff -Nurp inn-2.6.4/m4/perl.m4 inn-2.6.5/m4/perl.m4
--- inn-2.6.4/m4/perl.m4	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/m4/perl.m4	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 dnl Probe for Perl properties and, optionally, flags for embedding Perl.
-dnl $Id: perl.m4 10520 2021-01-17 21:48:06Z iulius $
 dnl
 dnl Provides the following macros:
 dnl
@@ -26,7 +25,7 @@ dnl
 dnl The canonical version of this file is maintained in the rra-c-util
 dnl package, available at <https://www.eyrie.org/~eagle/software/rra-c-util/>.
 dnl
-dnl Copyright 2016, 2018 Russ Allbery <eagle@eyrie.org>
+dnl Copyright 2016, 2018, 2021 Russ Allbery <eagle@eyrie.org>
 dnl Copyright 2006, 2009, 2011 Internet Systems Consortium, Inc. ("ISC")
 dnl Copyright 1998-2003 The Internet Software Consortium
 dnl
@@ -96,10 +95,12 @@ AC_DEFUN([INN_LIB_PERL],
  inn_perl_core_libs=`AS_ECHO(["$inn_perl_core_libs"]) | sed 's/ -lc / /'`
  AS_CASE([$host],
     [*-linux*],
-        [inn_perl_core_libs=`AS_ECHO(["$inn_perl_core_libs"]) | sed 's/ -lgdbm / /'`],
+        [inn_perl_core_libs=`AS_ECHO(["$inn_perl_core_libs"]) \
+            | sed 's/ -lgdbm / /'`],
     [*-cygwin*],
         [inn_perl_libname=`"$PERL" -MConfig -e 'print $Config{libperl}'`
-         inn_perl_libname=`AS_ECHO(["$inn_perl_libname"]) | sed 's/^lib//; s/\.a$//'`
+         inn_perl_libname=`AS_ECHO(["$inn_perl_libname"]) \
+            | sed 's/^lib//; s/\.a$//'`
          inn_perl_core_libs="${inn_perl_core_libs}-l$inn_perl_libname"])
  inn_perl_core_libs=`AS_ECHO(["$inn_perl_core_libs"]) | sed 's/^  *//'`
  inn_perl_core_libs=`AS_ECHO(["$inn_perl_core_libs"]) | sed 's/  *$//'`
diff -Nurp inn-2.6.4/m4/prog-ensure.m4 inn-2.6.5/m4/prog-ensure.m4
--- inn-2.6.4/m4/prog-ensure.m4	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/m4/prog-ensure.m4	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 dnl prog-ensure.m4 -- Require that a program be found in the PATH.
-dnl $Id: prog-ensure.m4 8475 2009-05-17 20:30:23Z iulius $
 dnl
 dnl This is a version of AC_PATH_PROG that requires that the program being
 dnl searched for is found in the user's PATH.
diff -Nurp inn-2.6.4/m4/python.m4 inn-2.6.5/m4/python.m4
--- inn-2.6.4/m4/python.m4	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/m4/python.m4	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 dnl Probe for Python properties and, optionally, flags for embedding Python.
-dnl $Id: python.m4 10521 2021-01-17 21:48:51Z iulius $
 dnl
 dnl Provides the following macros:
 dnl
@@ -28,16 +27,22 @@ dnl way.  (It cannot be run automaticall
 dnl mandatory minimum version argument, which should be provided by the
 dnl calling configure script.)
 dnl
-dnl This macro uses the distutils.sysconfig module shipped with Python 2.2.0
-dnl and later to find the compiler and linker flags to use to embed Python.
-dnl It also expects libpython to be in the main library location, which it is
-dnl since Python 2.3.0.
+dnl For Python 3, this macro uses the sysconfig module to find the compiler
+dnl and linker flags to use to embed Python.  If the sysconfig module is not
+dnl present, it falls back on using the distutils.sysconfig module shipped
+dnl with Python 2.2.0 and later until its removal in Python 3.12.0.
+dnl
+dnl sysconfig.get_paths() in Python 2.7 as packaged in Debian buster returns
+dnl an include path in /usr/local/include, suitable for user-built extensions,
+dnl not the path in /usr/include required for including Python.h.  Therefore,
+dnl always use distutils.sysconfig for Python 2.
 dnl
 dnl The canonical version of this file is maintained in the rra-c-util
 dnl package, available at <https://www.eyrie.org/~eagle/software/rra-c-util/>.
 dnl
-dnl Copyright 2018 Russ Allbery <eagle@eyrie.org>
-dnl Copyright 2009, 2011, 2015, 2018 Julien ��LIE <julien@trigofacile.com>
+dnl Copyright 2018, 2021 Russ Allbery <eagle@eyrie.org>
+dnl Copyright 2009, 2011, 2015, 2018, 2021
+dnl     Julien ��LIE <julien@trigofacile.com>
 dnl Copyright 1998-2003 The Internet Software Consortium
 dnl
 dnl Permission to use, copy, modify, and distribute this software for any
@@ -69,7 +74,7 @@ if len(sys.argv) > 2 and sys.argv[2]:
         three_okay = True
 assert(two_okay or three_okay)
 ]])
-        
+
 dnl Check for the path to Python and ensure it meets our minimum version
 dnl requirement.  The first argument specifies the minimum Python 2 version
 dnl and the second argument specifies the minimum Python 3 (or later) version.
@@ -118,20 +123,32 @@ AC_DEFUN([INN_LIB_PYTHON],
 [AC_SUBST([PYTHON_CPPFLAGS])
  AC_SUBST([PYTHON_LIBS])
  AC_MSG_CHECKING([for flags to link with Python])
- py_include=`$PYTHON -c 'import distutils.sysconfig; \
-     print(distutils.sysconfig.get_python_inc())'`
+ AS_IF(["$PYTHON" -c 'import sysconfig' >/dev/null 2>&1],
+     [py_include=`$PYTHON -c 'import sysconfig; \
+          print(sysconfig.get_paths("posix_prefix").get("include", ""))'`
+      py_libdir=`$PYTHON -c 'import sysconfig; \
+          print(" -L".join(sysconfig.get_config_vars("LIBDIR")))'`
+      py_ldlibrary=`$PYTHON -c 'import sysconfig; \
+          print(sysconfig.get_config_vars("LDLIBRARY")@<:@0@:>@)'`
+      py_linkage=`$PYTHON -c 'import sysconfig;                      \
+          print(" ".join(sysconfig.get_config_vars(                  \
+              "LIBS", "LIBC", "LIBM", "LOCALMODLIBS", "BASEMODLIBS", \
+              "LINKFORSHARED", "LDFLAGS")))'`],
+     [py_include=`$PYTHON -c 'import distutils.sysconfig; \
+          print(distutils.sysconfig.get_python_inc())'`
+      py_libdir=`$PYTHON -c 'import distutils.sysconfig; \
+          print(" -L".join(distutils.sysconfig.get_config_vars("LIBDIR")))'`
+      py_ldlibrary=`$PYTHON -c 'import distutils.sysconfig; \
+          print(distutils.sysconfig.get_config_vars("LDLIBRARY")@<:@0@:>@)'`
+      py_linkage=`$PYTHON -c 'import distutils.sysconfig;            \
+          print(" ".join(distutils.sysconfig.get_config_vars(        \
+              "LIBS", "LIBC", "LIBM", "LOCALMODLIBS", "BASEMODLIBS", \
+              "LINKFORSHARED", "LDFLAGS")))'`])
  PYTHON_CPPFLAGS="-I$py_include"
- py_libdir=`$PYTHON -c 'import distutils.sysconfig; \
-     print(" -L".join(distutils.sysconfig.get_config_vars("LIBDIR")))'`
- py_ldlibrary=`$PYTHON -c 'import distutils.sysconfig; \
-     print(distutils.sysconfig.get_config_vars("LDLIBRARY")@<:@0@:>@)'`
- py_linkage=`$PYTHON -c 'import distutils.sysconfig;            \
-     print(" ".join(distutils.sysconfig.get_config_vars(        \
-         "LIBS", "LIBC", "LIBM", "LOCALMODLIBS", "BASEMODLIBS", \
-         "LINKFORSHARED", "LDFLAGS")))'`
- py_libpython=`AS_ECHO(["$py_ldlibrary"]) | sed "s/^lib//" | sed "s/\.@<:@a-z@:>@*$//"`
+ py_libpython=`AS_ECHO(["$py_ldlibrary"]) \
+    | sed -e 's/^lib//' -e 's/\.@<:@a-z@:>@*$//'`
  PYTHON_LIBS="-L$py_libdir -l$py_libpython $py_linkage"
- PYTHON_LIBS=`AS_ECHO(["$PYTHON_LIBS"]) | sed -e 's/[ \\t]*/ /g'`
+ PYTHON_LIBS=`AS_ECHO(["$PYTHON_LIBS"]) | sed 's/ @<:@ \\t@:>@*/ /g'`
  AC_MSG_RESULT([$PYTHON_LIBS])
  inn_python_save_CPPFLAGS="$CPPFLAGS"
  inn_python_save_LIBS="$LIBS"
diff -Nurp inn-2.6.4/m4/sasl.m4 inn-2.6.5/m4/sasl.m4
--- inn-2.6.4/m4/sasl.m4	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/m4/sasl.m4	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,6 @@
 dnl Find the compiler and linker flags for Cyrus SASL.
-dnl $Id: sasl.m4 10306 2018-12-02 14:26:13Z iulius $
 dnl
-dnl Finds the compiler and linker flags for linking with the Cyrus SASL
+dnl Finds the compiler and linker flags for linking with v2 of the Cyrus SASL
 dnl library.  Provides the --with-sasl, --with-sasl-lib, and
 dnl --with-sasl-include configure options to specify non-standard paths to the
 dnl Cyrus SASL library.
@@ -11,14 +10,14 @@ dnl SASL_CPPFLAGS, SASL_LDFLAGS, and SAS
 dnl INN_LIB_SASL_SWITCH to set CPPFLAGS, LDFLAGS, and LIBS to include the
 dnl Cyrus SASL v2 library, saving the current values first, and
 dnl INN_LIB_SASL_RESTORE to restore those settings to before the last
-dnl INN_LIB_SASL_SWITCH.  Defines HAVE_SASL and sets inn_use_SASL to true if
-dnl the library is found and is version two.
+dnl INN_LIB_SASL_SWITCH.  Defines HAVE_SASL and sets inn_use_SASL to true.
 dnl
 dnl Provides the INN_LIB_SASL_OPTIONAL macro, which should be used if Cyrus
 dnl SASL support is optional.  This macro will still always set the
-dnl substitution variables, but they'll be empty unless --with-sasl is given.
-dnl Defines HAVE_SASL and sets inn_use_SASL to true if the Cyrus SASL library
-dnl is found and is version two.
+dnl substitution variables, but they'll be empty if the Cyrus SASL library was
+dnl not found or if --without-sasl was given.  Defines HAVE_SASL and sets
+dnl inn_use_SASL to true if the Cyrus SASL library is found and --without-sasl
+dnl is not given.
 dnl
 dnl Depends on the lib-helper.m4 framework.
 dnl
@@ -26,7 +25,7 @@ dnl The canonical version of this file i
 dnl package, available at <https://www.eyrie.org/~eagle/software/rra-c-util/>.
 dnl
 dnl Written by Russ Allbery <eagle@eyrie.org>
-dnl Copyright 2018 Russ Allbery <eagle@eyrie.org>
+dnl Copyright 2018, 2022 Russ Allbery <eagle@eyrie.org>
 dnl Copyright 2013
 dnl     The Board of Trustees of the Leland Stanford Junior University
 dnl
diff -Nurp inn-2.6.4/m4/sendfd.m4 inn-2.6.5/m4/sendfd.m4
--- inn-2.6.4/m4/sendfd.m4	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/m4/sendfd.m4	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 dnl sendfd.m4 -- Check whether I_SENDFD/I_RECVFD is supported.
-dnl $Id: sendfd.m4 9762 2014-12-07 18:33:37Z iulius $
 dnl
 dnl Check whether the system supports STREAMS and can send and receive file
 dnl descriptors via the I_SENDFD and I_RECVFD ioctls.  Provides
diff -Nurp inn-2.6.4/m4/sendmail.m4 inn-2.6.5/m4/sendmail.m4
--- inn-2.6.4/m4/sendmail.m4	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/m4/sendmail.m4	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 dnl sendmail.m4 -- Checks for the path to sendmail.
-dnl $Id: sendmail.m4 9749 2014-11-23 21:45:56Z iulius $
 dnl
 dnl We have a custom probe for sendmail since we want to look in non-standard
 dnl locations for it, and another custom macro to allow users to override the
diff -Nurp inn-2.6.4/m4/snprintf.m4 inn-2.6.5/m4/snprintf.m4
--- inn-2.6.4/m4/snprintf.m4	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/m4/snprintf.m4	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 dnl Test for a working C99 snprintf.
-dnl $Id: snprintf.m4 10396 2020-11-12 20:19:41Z iulius $
 dnl
 dnl Check for a working snprintf.  Some systems have an snprintf that doesn't
 dnl nul-terminate if the buffer isn't large enough.  Others return -1 if the
diff -Nurp inn-2.6.4/m4/socket-unix.m4 inn-2.6.5/m4/socket-unix.m4
--- inn-2.6.4/m4/socket-unix.m4	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/m4/socket-unix.m4	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 dnl Various checks for UNIX domain socket support and macros.
-dnl $Id: socket-unix.m4 10246 2018-02-16 21:12:42Z iulius $
 dnl
 dnl This is a collection of various Autoconf macros for checking UNIX domain
 dnl socket properties.  The macros provided are:
@@ -12,6 +11,7 @@ dnl
 dnl The canonical version of this file is maintained in the rra-c-util
 dnl package, available at <https://www.eyrie.org/~eagle/software/rra-c-util/>.
 dnl
+dnl Copyright 2021 Russ Allbery <eagle@eyrie.org>
 dnl Copyright 2009
 dnl     The Board of Trustees of the Leland Stanford Junior University
 dnl Copyright 2004-2009 Internet Systems Consortium, Inc. ("ISC")
@@ -36,6 +36,7 @@ dnl SPDX-License-Identifier: ISC
 
 dnl Source used by INN_MACRO_SUN_LEN.
 AC_DEFUN([_INN_MACRO_SUN_LEN_SOURCE], [[
+#include <string.h>
 #include <sys/types.h>
 #include <sys/un.h>
 
diff -Nurp inn-2.6.4/m4/socket.m4 inn-2.6.5/m4/socket.m4
--- inn-2.6.4/m4/socket.m4	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/m4/socket.m4	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 dnl Various checks for socket support and macros.
-dnl $Id: socket.m4 10397 2020-11-12 20:22:51Z iulius $
 dnl
 dnl This is a collection of various Autoconf macros for checking networking
 dnl and socket properties.  The macros provided are:
@@ -12,7 +11,7 @@ dnl
 dnl The canonical version of this file is maintained in the rra-c-util
 dnl package, available at <https://www.eyrie.org/~eagle/software/rra-c-util/>.
 dnl
-dnl Copyright 2017, 2020 Russ Allbery <eagle@eyrie.org>
+dnl Copyright 2017, 2020-2021 Russ Allbery <eagle@eyrie.org>
 dnl Copyright 2008-2009, 2011
 dnl     The Board of Trustees of the Leland Stanford Junior University
 dnl Copyright 2004-2009 Internet Systems Consortium, Inc. ("ISC")
@@ -71,6 +70,7 @@ AC_DEFUN([INN_FUNC_GETADDRINFO_ADDRCONFI
 dnl Source used by INN_MACRO_IN6_ARE_ADDR_EQUAL.  Test borrowed from a bug
 dnl report by tmoestl@gmx.net for glibc.
 AC_DEFUN([_INN_MACRO_IN6_ARE_ADDR_EQUAL_SOURCE], [[
+#include <string.h>
 #include <sys/types.h>
 #include <sys/socket.h>
 #include <netinet/in.h>
diff -Nurp inn-2.6.4/m4/syslog.m4 inn-2.6.5/m4/syslog.m4
--- inn-2.6.4/m4/syslog.m4	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/m4/syslog.m4	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 dnl syslog.m4 -- Options and probes for syslog behavior.
-dnl $Id: syslog.m4 8594 2009-08-21 08:19:13Z iulius $
 dnl
 dnl Normally, INN just logs everything to the news facility, but some systems
 dnl don't have that so we have to probe and see if we should use local1
diff -Nurp inn-2.6.4/m4/systemd.m4 inn-2.6.5/m4/systemd.m4
--- inn-2.6.4/m4/systemd.m4	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/m4/systemd.m4	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 dnl Probe for systemd libraries and installation paths.
-dnl $Id: systemd.m4 10484 2021-01-04 07:12:59Z iulius $
 dnl
 dnl Provides the INN_WITH_SYSTEMD_UNITDIR macro, which adds the
 dnl --with-systemdsystemunitdir configure flag, sets the systemdsystemunitdir
@@ -7,9 +6,10 @@ dnl substitution variable, and provides
 dnl to use to control whether to install unit files.
 dnl
 dnl Provides the INN_LIB_SYSTEMD_DAEMON_OPTIONAL macro, which sets
-dnl SYSTEMD_CFLAGS and SYSTEMD_LIBS substitution variables if
-dnl libsystemd-daemon is available and defines HAVE_SD_NOTIFY.  pkg-config
-dnl support for libsystemd-daemon is required for it to be detected.
+dnl SYSTEMD_CFLAGS and SYSTEMD_LIBS substitution variables if libsystemd is
+dnl available and defines HAVE_SD_NOTIFY.  Adds sd-daemon.c to LIBOBJS if
+dnl libsystemd is not available.  pkg-config support for libsystemd-daemon is
+dnl required for it to be detected.
 dnl
 dnl Depends on the Autoconf macros that come with pkg-config.
 dnl
@@ -17,7 +17,7 @@ dnl The canonical version of this file i
 dnl package, available at <https://www.eyrie.org/~eagle/software/rra-c-util/>.
 dnl
 dnl Written by Russ Allbery <eagle@eyrie.org>
-dnl Copyright 2015 Russ Allbery <eagle@eyrie.org>
+dnl Copyright 2015, 2021 Russ Allbery <eagle@eyrie.org>
 dnl Copyright 2013-2014
 dnl     The Board of Trustees of the Leland Stanford Junior University
 dnl
@@ -55,4 +55,5 @@ AC_DEFUN([INN_LIB_SYSTEMD_DAEMON_OPTIONA
     [PKG_CHECK_EXISTS([libsystemd-daemon],
         [PKG_CHECK_MODULES([SYSTEMD], [libsystemd-daemon])
          AC_DEFINE([HAVE_SD_NOTIFY], 1,
-            [Define if sd_notify is available.])])])])
+            [Define if sd_notify is available.])],
+        [AC_LIBOBJ([sd-daemon])])])])
diff -Nurp inn-2.6.4/m4/users.m4 inn-2.6.5/m4/users.m4
--- inn-2.6.4/m4/users.m4	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/m4/users.m4	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 dnl users.m4 -- The usernames built into INN at compile time.
-dnl $Id: users.m4 8495 2009-05-24 12:28:19Z iulius $
 dnl
 dnl INN allows the user and group INN will run as to be specified, as well as
 dnl the user to receive nightly reports and the like.
diff -Nurp inn-2.6.4/m4/vamacros.m4 inn-2.6.5/m4/vamacros.m4
--- inn-2.6.4/m4/vamacros.m4	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/m4/vamacros.m4	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 dnl Check for support for variadic macros.
-dnl $Id: vamacros.m4 10246 2018-02-16 21:12:42Z iulius $
 dnl
 dnl This file defines two macros for probing for compiler support for variadic
 dnl macros.  Provided are INN_C_C99_VAMACROS, which checks for support for the
diff -Nurp inn-2.6.4/m4/zlib.m4 inn-2.6.5/m4/zlib.m4
--- inn-2.6.4/m4/zlib.m4	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/m4/zlib.m4	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 dnl Find the compiler and linker flags for the zlib library.
-dnl $Id: zlib.m4 10306 2018-12-02 14:26:13Z iulius $
 dnl
 dnl Finds the compiler and linker flags for linking with the zlib library.
 dnl Provides the --with-zlib, --with-zlib-lib, and --with-zlib-include
@@ -10,13 +9,13 @@ dnl ZLIB_CPPFLAGS, ZLIB_LDFLAGS, and ZLI
 dnl INN_LIB_ZLIB_SWITCH to set CPPFLAGS, LDFLAGS, and LIBS to include the
 dnl zlib library, saving the current values first, and INN_LIB_ZLIB_RESTORE
 dnl to restore those settings to before the last INN_LIB_ZLIB_SWITCH.
-dnl Defines HAVE_ZLIB and sets inn_use_ZLIB to true if the library is found.
+dnl Defines HAVE_ZLIB and sets inn_use_ZLIB to true.
 dnl
 dnl Provides the INN_LIB_ZLIB_OPTIONAL macro, which should be used if zlib
 dnl support is optional.  This macro will still always set the substitution
-dnl variables, but they'll be empty unless --with-zlib is given.
-dnl Defines HAVE_ZLIB and sets inn_use_ZLIB to true if the zlib library
-dnl is found.
+dnl variables, but they'll be empty if zlib is not found or if --without-zlib
+dnl is given.  Defines HAVE_ZLIB and sets inn_use_ZLIB to true if the zlib
+dnl library is found and --without-zlib is not given.
 dnl
 dnl Depends on the lib-helper.m4 framework.
 dnl
@@ -24,7 +23,7 @@ dnl The canonical version of this file i
 dnl package, available at <https://www.eyrie.org/~eagle/software/rra-c-util/>.
 dnl
 dnl Written by Russ Allbery <eagle@eyrie.org>
-dnl Copyright 2018 Russ Allbery <eagle@eyrie.org>
+dnl Copyright 2018, 2022 Russ Allbery <eagle@eyrie.org>
 dnl Copyright 2013
 dnl     The Board of Trustees of the Leland Stanford Junior University
 dnl
diff -Nurp inn-2.6.4/nnrpd/Makefile inn-2.6.5/nnrpd/Makefile
--- inn-2.6.4/nnrpd/Makefile	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/nnrpd/Makefile	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: Makefile 10149 2017-06-05 12:24:58Z iulius $
-
 include ../Makefile.global
 
 top		= ..
@@ -82,9 +80,8 @@ article.o: article.c ../include/config.h
   ../include/inn/qio.h ../include/inn/libinn.h ../include/inn/concat.h \
   ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \
   ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h \
-  ../include/inn/vector.h ../include/inn/timer.h \
-  ../include/inn/ov.h ../include/inn/history.h ../include/inn/storage.h \
-  tls.h cache.h
+  ../include/inn/vector.h ../include/inn/timer.h ../include/inn/ov.h \
+  ../include/inn/history.h ../include/inn/storage.h tls.h cache.h
 auth-ext.o: auth-ext.c ../include/config.h ../include/inn/defines.h \
   ../include/inn/system.h ../include/inn/macros.h \
   ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \
@@ -118,9 +115,9 @@ commands.o: commands.c ../include/config
   ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \
   ../include/inn/xwrite.h ../include/inn/nntp.h ../include/inn/paths.h \
   ../include/inn/storage.h ../include/inn/options.h \
-  ../include/inn/vector.h ../include/inn/timer.h \
-  ../include/inn/fdflag.h ../include/inn/portable-socket.h \
-  ../include/inn/ov.h ../include/inn/history.h ../include/inn/storage.h \
+  ../include/inn/vector.h ../include/inn/timer.h ../include/inn/fdflag.h \
+  ../include/inn/portable-socket.h ../include/inn/ov.h \
+  ../include/inn/history.h ../include/inn/storage.h \
   ../include/inn/innconf.h ../include/inn/messages.h \
   ../include/inn/version.h tls.h
 group.o: group.c ../include/config.h ../include/inn/defines.h \
@@ -134,8 +131,8 @@ group.o: group.c ../include/config.h ../
   ../include/inn/qio.h ../include/inn/libinn.h ../include/inn/concat.h \
   ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \
   ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h \
-  ../include/inn/vector.h ../include/inn/timer.h \
-  ../include/inn/ov.h ../include/inn/history.h ../include/inn/storage.h
+  ../include/inn/vector.h ../include/inn/timer.h ../include/inn/ov.h \
+  ../include/inn/history.h ../include/inn/storage.h
 line.o: line.c ../include/config.h ../include/inn/defines.h \
   ../include/inn/system.h ../include/inn/macros.h \
   ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \
@@ -147,8 +144,7 @@ line.o: line.c ../include/config.h ../in
   ../include/inn/qio.h ../include/inn/libinn.h ../include/inn/concat.h \
   ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \
   ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h \
-  ../include/inn/vector.h ../include/inn/timer.h \
-  tls.h
+  ../include/inn/vector.h ../include/inn/timer.h tls.h
 list.o: list.c ../include/config.h ../include/inn/defines.h \
   ../include/inn/system.h ../include/inn/macros.h \
   ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \
@@ -160,8 +156,8 @@ list.o: list.c ../include/config.h ../in
   ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \
   ../include/inn/xwrite.h ../include/inn/nntp.h ../include/inn/paths.h \
   ../include/inn/storage.h ../include/inn/options.h \
-  ../include/inn/vector.h ../include/inn/timer.h \
-  ../include/inn/ov.h ../include/inn/history.h ../include/inn/storage.h \
+  ../include/inn/vector.h ../include/inn/timer.h ../include/inn/ov.h \
+  ../include/inn/history.h ../include/inn/storage.h \
   ../include/inn/innconf.h ../include/inn/messages.h
 misc.o: misc.c ../include/config.h ../include/inn/defines.h \
   ../include/inn/system.h ../include/inn/macros.h \
@@ -174,9 +170,8 @@ misc.o: misc.c ../include/config.h ../in
   ../include/inn/qio.h ../include/inn/libinn.h ../include/inn/concat.h \
   ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \
   ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h \
-  ../include/inn/vector.h ../include/inn/timer.h \
-  tls.h \
-  ../include/inn/ov.h ../include/inn/history.h ../include/inn/storage.h
+  ../include/inn/vector.h ../include/inn/timer.h tls.h ../include/inn/ov.h \
+  ../include/inn/history.h ../include/inn/storage.h
 newnews.o: newnews.c ../include/config.h ../include/inn/defines.h \
   ../include/inn/system.h ../include/inn/macros.h \
   ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \
@@ -189,27 +184,25 @@ newnews.o: newnews.c ../include/config.h
   ../include/inn/qio.h ../include/inn/libinn.h ../include/inn/concat.h \
   ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \
   ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h \
-  ../include/inn/vector.h ../include/inn/timer.h \
-  ../include/inn/ov.h ../include/inn/history.h ../include/inn/storage.h \
-  cache.h
+  ../include/inn/vector.h ../include/inn/timer.h ../include/inn/ov.h \
+  ../include/inn/history.h ../include/inn/storage.h cache.h
 nnrpd.o: nnrpd.c ../include/config.h ../include/inn/defines.h \
   ../include/inn/system.h ../include/inn/macros.h \
   ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \
-  ../include/inn/defines.h ../include/inn/options.h \
-  ../include/portable/alloca.h ../include/clibrary.h ../include/config.h \
-  ../include/inn/macros.h ../include/portable/stdbool.h \
-  ../include/portable/setproctitle.h ../include/portable/macros.h \
-  ../include/portable/socket.h ../include/portable/getaddrinfo.h \
-  ../include/portable/getnameinfo.h ../include/inn/innconf.h \
-  ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \
-  ../include/inn/xwrite.h ../include/inn/messages.h \
-  ../include/inn/network.h ../include/inn/portable-socket.h \
-  ../include/inn/network-innbind.h ../include/inn/newsuser.h \
-  ../include/inn/ov.h ../include/inn/history.h ../include/inn/storage.h \
-  ../include/inn/options.h ../include/inn/version.h nnrpd.h \
-  ../include/inn/qio.h ../include/inn/nntp.h ../include/inn/paths.h \
-  ../include/inn/storage.h ../include/inn/vector.h ../include/inn/timer.h \
-  tls.h
+  ../include/inn/defines.h ../include/inn/options.h ../include/clibrary.h \
+  ../include/config.h ../include/inn/macros.h \
+  ../include/portable/stdbool.h ../include/portable/setproctitle.h \
+  ../include/portable/macros.h ../include/portable/socket.h \
+  ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \
+  ../include/inn/innconf.h ../include/inn/libinn.h ../include/inn/concat.h \
+  ../include/inn/xmalloc.h ../include/inn/xwrite.h \
+  ../include/inn/messages.h ../include/inn/network.h \
+  ../include/inn/portable-socket.h ../include/inn/network-innbind.h \
+  ../include/inn/newsuser.h ../include/inn/ov.h ../include/inn/history.h \
+  ../include/inn/storage.h ../include/inn/options.h \
+  ../include/inn/version.h nnrpd.h ../include/inn/qio.h \
+  ../include/inn/nntp.h ../include/inn/paths.h ../include/inn/storage.h \
+  ../include/inn/vector.h ../include/inn/timer.h tls.h
 perl.o: perl.c ../include/config.h ../include/inn/defines.h \
   ../include/inn/system.h ../include/inn/macros.h \
   ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \
@@ -221,8 +214,7 @@ perl.o: perl.c ../include/config.h ../in
   ../include/inn/qio.h ../include/inn/libinn.h ../include/inn/concat.h \
   ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \
   ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h \
-  ../include/inn/vector.h ../include/inn/timer.h \
-  post.h \
+  ../include/inn/vector.h ../include/inn/timer.h post.h \
   ../include/ppport.h \
   ../include/innperl.h
 perm.o: perm.c ../include/config.h ../include/inn/defines.h \
@@ -239,8 +231,7 @@ perm.o: perm.c ../include/config.h ../in
   ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \
   ../include/inn/xwrite.h ../include/inn/nntp.h ../include/inn/paths.h \
   ../include/inn/storage.h ../include/inn/options.h \
-  ../include/inn/vector.h ../include/inn/timer.h \
-  tls.h
+  ../include/inn/vector.h ../include/inn/timer.h tls.h
 post.o: post.c ../include/config.h ../include/inn/defines.h \
   ../include/inn/system.h ../include/inn/macros.h \
   ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \
@@ -252,9 +243,8 @@ post.o: post.c ../include/config.h ../in
   ../include/inn/qio.h ../include/inn/libinn.h ../include/inn/concat.h \
   ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \
   ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h \
-  ../include/inn/vector.h ../include/inn/timer.h \
-  ../include/inn/ov.h ../include/inn/history.h ../include/inn/storage.h \
-  post.h
+  ../include/inn/vector.h ../include/inn/timer.h ../include/inn/ov.h \
+  ../include/inn/history.h ../include/inn/storage.h post.h
 python.o: python.c ../include/config.h ../include/inn/defines.h \
   ../include/inn/system.h ../include/inn/macros.h \
   ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \
@@ -266,8 +256,7 @@ python.o: python.c ../include/config.h .
   ../include/inn/qio.h ../include/inn/libinn.h ../include/inn/concat.h \
   ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \
   ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h \
-  ../include/inn/vector.h ../include/inn/timer.h \
-  ../include/inn/hashtab.h
+  ../include/inn/vector.h ../include/inn/timer.h ../include/inn/hashtab.h
 sasl.o: sasl.c ../include/config.h ../include/inn/defines.h \
   ../include/inn/system.h ../include/inn/macros.h \
   ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \
@@ -279,9 +268,8 @@ sasl.o: sasl.c ../include/config.h ../in
   ../include/inn/qio.h ../include/inn/libinn.h ../include/inn/concat.h \
   ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \
   ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h \
-  ../include/inn/vector.h ../include/inn/timer.h \
-  ../include/inn/ov.h ../include/inn/history.h ../include/inn/storage.h \
-  tls.h
+  ../include/inn/vector.h ../include/inn/timer.h ../include/inn/ov.h \
+  ../include/inn/history.h ../include/inn/storage.h tls.h
 tls.o: tls.c ../include/config.h ../include/inn/defines.h \
   ../include/inn/system.h ../include/inn/macros.h \
   ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \
@@ -293,8 +281,8 @@ tls.o: tls.c ../include/config.h ../incl
   ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \
   ../include/inn/xwrite.h ../include/inn/nntp.h ../include/inn/paths.h \
   ../include/inn/storage.h ../include/inn/options.h \
-  ../include/inn/vector.h ../include/inn/timer.h \
-  ../include/inn/innconf.h tls.h
+  ../include/inn/vector.h ../include/inn/timer.h ../include/inn/innconf.h \
+  tls.h
 track.o: track.c ../include/config.h ../include/inn/defines.h \
   ../include/inn/system.h ../include/inn/macros.h \
   ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \
diff -Nurp inn-2.6.4/nnrpd/article.c inn-2.6.5/nnrpd/article.c
--- inn-2.6.4/nnrpd/article.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/nnrpd/article.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: article.c 10149 2017-06-05 12:24:58Z iulius $
-**
+/*
 **  Article-related routines.
 */
 
@@ -78,6 +77,8 @@ PushIOvHelper(struct iovec* vec, int* co
         }
 
         *countp = 0;
+
+        TMRstop(TMR_NNTPWRITE);
         return;
     }
 #endif /* HAVE_ZLIB */
@@ -98,18 +99,19 @@ Again:
 	    result = SSL_writev(tls_conn, vec, *countp);
 	    switch (SSL_get_error(tls_conn, result)) {
 	    case SSL_ERROR_NONE:
-	    case SSL_ERROR_SYSCALL:
 		break;
 	    case SSL_ERROR_WANT_WRITE:
 		goto Again;
 		break;
-	    case SSL_ERROR_SSL:
-		SSL_shutdown(tls_conn);
+            case SSL_ERROR_ZERO_RETURN:
+                SSL_shutdown(tls_conn);
+                /* fallthrough */
+            case SSL_ERROR_SSL:
+            case SSL_ERROR_SYSCALL:
+                /* SSL_shutdown() must not be called. */
 		tls_conn = NULL;
 		errno = ECONNRESET;
 		break;
-	    case SSL_ERROR_ZERO_RETURN:
-		break;
 	    }
 	} else
 #endif /* HAVE_OPENSSL */
diff -Nurp inn-2.6.4/nnrpd/auth-ext.c inn-2.6.5/nnrpd/auth-ext.c
--- inn-2.6.4/nnrpd/auth-ext.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/nnrpd/auth-ext.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: auth-ext.c 10467 2020-12-24 22:33:03Z eagle $
-**
+/*
 **  External authenticator support.
 **
 **  Run an external resolver or authenticator to determine the username of the
diff -Nurp inn-2.6.4/nnrpd/cache.c inn-2.6.5/nnrpd/cache.c
--- inn-2.6.4/nnrpd/cache.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/nnrpd/cache.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: cache.c 8709 2009-11-06 21:47:11Z iulius $
-**
+/*
 **  Message-ID to storage token cache.
 **
 **  Written by Alex Kiernan (alex.kiernan@thus.net).
diff -Nurp inn-2.6.4/nnrpd/cache.h inn-2.6.5/nnrpd/cache.h
--- inn-2.6.4/nnrpd/cache.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/nnrpd/cache.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: cache.h 8014 2008-09-07 11:54:42Z iulius $
-**
+/*
 **  Message-ID to storage token cache.
 */
 
diff -Nurp inn-2.6.4/nnrpd/commands.c inn-2.6.5/nnrpd/commands.c
--- inn-2.6.4/nnrpd/commands.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/nnrpd/commands.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: commands.c 10342 2019-05-30 14:18:48Z iulius $
-**
+/*
 **  Miscellaneous commands.
 */
 #include "config.h"
diff -Nurp inn-2.6.4/nnrpd/group.c inn-2.6.5/nnrpd/group.c
--- inn-2.6.4/nnrpd/group.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/nnrpd/group.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: group.c 8904 2010-01-17 19:45:19Z iulius $
-**
+/*
 **  Newsgroups and the active file.
 */
 
diff -Nurp inn-2.6.4/nnrpd/line.c inn-2.6.5/nnrpd/line.c
--- inn-2.6.4/nnrpd/line.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/nnrpd/line.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: line.c 9979 2015-12-11 20:40:29Z iulius $
-**
+/*
 **  Line by line reading support from sockets/pipes.
 **
 **  Written by Alex Kiernan <alex.kiernan@thus.net>.
@@ -49,6 +48,11 @@ line_free(struct line *line)
 static void
 alarmHandler(int s UNUSED)
 {
+    /* Send the close_notify shutdown alert to the news reader.
+     * No need to call again SSL_shutdown() to complete the bidirectional
+     * shutdown handshake as we do not expect more data to process.  Just
+     * close the underlying connection without waiting for the response.
+     * Such a unidirectional shutdown is allowed per OpenSSL documentation. */
     SSL_shutdown(tls_conn);
     tls_conn = NULL;
     errno = ECONNRESET;
@@ -80,6 +84,8 @@ line_reset(struct line *line)
 
 /*
 **  Timeout is used only if HAVE_OPENSSL is defined.
+**  Returns -2 on timeout, -1 on read error, and otherwise the number of
+**  bytes read.
 */
 static ssize_t
 line_doread(void *p, size_t len, int timeout UNUSED)
@@ -129,17 +135,20 @@ line_doread(void *p, size_t len, int tim
                 n = SSL_read(tls_conn, p, len);
                 alarm(0);
                 if (tls_conn == NULL) {
+                    n = -2; /* timeout */
                     break;
                 }
 		err = SSL_get_error(tls_conn, n);
 		switch (err) {
+                case SSL_ERROR_ZERO_RETURN:
+                    SSL_shutdown(tls_conn);
+                    /* fallthrough */
 		case SSL_ERROR_SYSCALL:
-		    break;
-		    
 		case SSL_ERROR_SSL:
-		    SSL_shutdown(tls_conn);
+		    /* SSL_shutdown() must not be called. */
 		    tls_conn = NULL;
 		    errno = ECONNRESET;
+                    n = -1;
 		    break;
 		}
 	    } while (err == SSL_ERROR_WANT_READ);
@@ -336,9 +345,12 @@ line_read(struct line *line, int timeout
                                 line->allocated - (where - line->start), 
                                 timeout);
 
-	    /* Give timeout for read errors. */
+	    /* Give timeout to both real timeouts (count == -2) and
+             * read errors (count == -1). */
 	    if (count < 0) {
-		sysnotice("%s can't read", Client.host);
+                if (count == -1) {
+                    sysnotice("%s can't read", Client.host);
+                }
 		return RTtimeout;
 	    }
 	    /* If we hit EOF, terminate the string and send it back. */
diff -Nurp inn-2.6.4/nnrpd/list.c inn-2.6.5/nnrpd/list.c
--- inn-2.6.4/nnrpd/list.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/nnrpd/list.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: list.c 9145 2010-10-30 09:44:46Z iulius $
-**
+/*
 **  LIST commands.
 */
 
diff -Nurp inn-2.6.4/nnrpd/misc.c inn-2.6.5/nnrpd/misc.c
--- inn-2.6.4/nnrpd/misc.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/nnrpd/misc.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: misc.c 10305 2018-12-02 14:21:56Z iulius $
-**
+/*
 **  Miscellaneous support routines.
 */
 
diff -Nurp inn-2.6.4/nnrpd/newnews.c inn-2.6.5/nnrpd/newnews.c
--- inn-2.6.4/nnrpd/newnews.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/nnrpd/newnews.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: newnews.c 10012 2016-05-05 12:41:10Z iulius $
-**
+/*
 **  The NEWNEWS command.
 */
 #include "config.h"
diff -Nurp inn-2.6.4/nnrpd/nnrpd.c inn-2.6.5/nnrpd/nnrpd.c
--- inn-2.6.4/nnrpd/nnrpd.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/nnrpd/nnrpd.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: nnrpd.c 10320 2018-12-29 13:46:28Z iulius $
-**
+/*
 **  NNTP server for readers (NNRP) for InterNetNews.
 **
 **  This server doesn't do any real load-limiting, except for what has
@@ -7,7 +6,6 @@
 */
 
 #include "config.h"
-#include "portable/alloca.h"
 #include "clibrary.h"
 #include "portable/setproctitle.h"
 #include "portable/socket.h"
@@ -708,6 +706,7 @@ write_buffer(const char *buff, ssize_t l
                 sysnotice("deflate() failed: %d; %s", r,
                           zstream_out->msg != NULL ? zstream_out->msg :
                           "no detail");
+                TMRstop(TMR_NNTPWRITE);
                 return;
             }
         } while (r == Z_OK && zstream_out->avail_out == 0);
@@ -734,6 +733,7 @@ write_buffer(const char *buff, ssize_t l
                 sysnotice("sasl_encode() failed: %s; %s",
                           sasl_errstring(r, NULL, NULL),
                           ed != NULL ? ed : "no detail");
+                TMRstop(TMR_NNTPWRITE);
                 return;
             }
         } else
@@ -756,18 +756,19 @@ Again:
 	    r = SSL_write(tls_conn, out, outlen);
 	    switch (SSL_get_error(tls_conn, r)) {
 	    case SSL_ERROR_NONE:
-	    case SSL_ERROR_SYSCALL:
 		break;
 	    case SSL_ERROR_WANT_WRITE:
 		goto Again;
 		break;
+            case SSL_ERROR_ZERO_RETURN:
+                SSL_shutdown(tls_conn);
+                /* fallthrough */
 	    case SSL_ERROR_SSL:
-		SSL_shutdown(tls_conn);
+            case SSL_ERROR_SYSCALL:
+                /* SSL_shutdown() must not be called. */
 		tls_conn = NULL;
 		errno = ECONNRESET;
 		break;
-	    case SSL_ERROR_ZERO_RETURN:
-		break;
 	    }
 	} else
 #endif /* HAVE_OPENSSL */
@@ -1190,7 +1191,7 @@ main(int argc, char *argv[])
         FD_ZERO(&lfdset);
 
         for (j = 0; j < lfdcount; j++) {
-            if (listen(lfds[j], 128) < 0) {
+            if (listen(lfds[j], innconf->maxlisten) < 0) {
                 if (j != 0 && errno == EADDRINUSE)
                     continue;
                 syslog(L_ERROR, "can't listen to socket");
@@ -1446,7 +1447,6 @@ main(int argc, char *argv[])
     /* Main dispatch loop. */
     for (timeout = innconf->initialtimeout, av = NULL, ac = 0; ;
 			timeout = clienttimeout) {
-        alloca_free();
 	TMRstart(TMR_NNTPWRITE);
 	fflush(stdout);
 	TMRstop(TMR_NNTPWRITE);
diff -Nurp inn-2.6.4/nnrpd/nnrpd.h inn-2.6.5/nnrpd/nnrpd.h
--- inn-2.6.4/nnrpd/nnrpd.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/nnrpd/nnrpd.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: nnrpd.h 10306 2018-12-02 14:26:13Z iulius $
-**
+/*
 **  NetNews Reading Protocol server.
 */
 
diff -Nurp inn-2.6.4/nnrpd/perl.c inn-2.6.5/nnrpd/perl.c
--- inn-2.6.4/nnrpd/perl.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/nnrpd/perl.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: perl.c 10305 2018-12-02 14:21:56Z iulius $
-**
+/*
 **  Embedded Perl support for INN.
 **
 **  Originally written by Christophe Wolfhugel <wolf@pasteur.fr> (although
diff -Nurp inn-2.6.4/nnrpd/perm.c inn-2.6.5/nnrpd/perm.c
--- inn-2.6.4/nnrpd/perm.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/nnrpd/perm.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: perm.c 10117 2016-11-06 14:23:27Z iulius $
-**
+/*
 **  How to figure out where a user comes from, and what that user can do once
 **  we know who sie is.
 */
diff -Nurp inn-2.6.4/nnrpd/post.c inn-2.6.5/nnrpd/post.c
--- inn-2.6.4/nnrpd/post.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/nnrpd/post.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: post.c 10477 2020-12-31 22:46:07Z eagle $
-**
+/*
 **  Check article, send it to the local server.
 */
 #include "config.h"
diff -Nurp inn-2.6.4/nnrpd/post.h inn-2.6.5/nnrpd/post.h
--- inn-2.6.4/nnrpd/post.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/nnrpd/post.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: post.h 10038 2016-06-01 20:08:10Z iulius $
-**
+/*
 **  NetNews Reading Protocol server.
 */
 
diff -Nurp inn-2.6.4/nnrpd/python.c inn-2.6.5/nnrpd/python.c
--- inn-2.6.4/nnrpd/python.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/nnrpd/python.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: python.c 10447 2020-12-09 21:19:29Z iulius $
-**
+/*
 **  python.c:  Embed Python in the style of nnrpd's Perl stuff
 **             (authentication, authorization and dynamic hooks
 **             only at this point).
diff -Nurp inn-2.6.4/nnrpd/sasl.c inn-2.6.5/nnrpd/sasl.c
--- inn-2.6.4/nnrpd/sasl.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/nnrpd/sasl.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,5 @@
 /*
 ** AUTHINFO SASL functionality.
-**
-** $Id: sasl.c 10117 2016-11-06 14:23:27Z iulius $
 */
 
 #include "config.h"
diff -Nurp inn-2.6.4/nnrpd/tls.c inn-2.6.5/nnrpd/tls.c
--- inn-2.6.4/nnrpd/tls.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/nnrpd/tls.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: tls.c 10348 2019-09-17 19:01:33Z iulius $
-**
+/*
 **  tls.c -- TLS functions.
 **  Copyright (C) 2000 Kenichi Okada <okada@opaopa.org>.
 **
@@ -47,7 +46,7 @@ const char   *tls_cipher_name = NULL;
 int	tls_cipher_usebits = 0;
 int	tls_cipher_algbits = 0;
 
-
+/* Set this value higher (from 1 to 4) to obtain more logs. */
 int tls_loglevel = 0;
 
 
@@ -95,10 +94,22 @@ apps_ssl_info_callback(const SSL *s, int
 
 
 /*
+**  Now that safe prime groups have been supported since OpenSSL 1.1.0,
+**  these groups and the following functions to deal with them are only kept
+**  for older OpenSSL versions.
+*/
+#if OPENSSL_VERSION_NUMBER < 0x010100000L
+/*
 **  Hardcoded DH parameter files.
 **  These are pre-defined DH groups recommended by RFC 7919 (Appendix A),
 **  that have been audited and therefore supposed to be more
 **  resistant to attacks than ones randomly generated.
+**  They are FIPS-140 compliant and impractical to attack by construction.
+**
+**  There isn't any need to support user-specific files because of the
+**  safe choice of these domain parameters from RFC 7919.
+**  In case they appear to no longer be secure in the future, they'll
+**  be changed in a future INN release.
 */
 static const char file_ffdhe2048[] = \
 "-----BEGIN DH PARAMETERS-----\n\
@@ -186,9 +197,6 @@ load_dh_buffer (const char *buffer, size
 **
 **  EDH keying is slightly less efficient than static RSA keying,
 **  but it offers Perfect Forward Secrecy (PFS).
-**
-**  FIXME:  support user-specified files, to eliminate risk of
-**  "small group" attacks.
 */
 static DH *
 tmp_dh_cb(SSL *s UNUSED, int export UNUSED, int keylength UNUSED)
@@ -200,7 +208,9 @@ tmp_dh_cb(SSL *s UNUSED, int export UNUS
     static DH *ffdhe8192 = NULL;
     int level = 2; /* Default security level. */
 
-    /* Security levels have been introduced in OpenSSL 1.1.0. */
+    /* Security levels have been introduced in OpenSSL 1.1.0.
+     * Well, as this part of code is no longer active for that version,
+     * only keep it for possible future re-use. */
 #if OPENSSL_VERSION_NUMBER >= 0x010100000L && !defined(LIBRESSL_VERSION_NUMBER)
     level = SSL_get_security_level(s);
 #endif
@@ -236,6 +246,7 @@ tmp_dh_cb(SSL *s UNUSED, int export UNUS
 
     return r;
 }
+#endif /* OpenSSL < 1.1.0 */
 
 
 /*
@@ -389,9 +400,8 @@ set_cert_stuff(SSL_CTX * ctx, char *cert
     struct stat buf;
 
     if (cert_file != NULL) {
-	if (SSL_CTX_use_certificate_file(ctx, cert_file,
-					 SSL_FILETYPE_PEM) <= 0) {
-	    syslog(L_ERROR, "unable to get certificate from '%s'", cert_file);
+	if (SSL_CTX_use_certificate_chain_file(ctx, cert_file) <= 0) {
+	    syslog(L_ERROR, "unable to get certificates from '%s'", cert_file);
 	    return (0);
 	}
 	if (key_file == NULL)
@@ -430,10 +440,13 @@ set_cert_stuff(SSL_CTX * ctx, char *cert
 }
 
 
-#ifdef HAVE_OPENSSL_ECC
+#if defined(HAVE_OPENSSL_ECC) && OPENSSL_VERSION_NUMBER < 0x01010100fL
 /*
 **  Provide an ECKEY from a curve name.
 **  Accepts a NULL pointer as the name.
+**  The EC_KEY_new_by_curve_name() function has been deprecated in
+**  OpenSSL 3.0.0; another mechanism to select groups has been available
+**  since OpenSSL 1.1.1.
 **
 **  Returns the key, or NULL on error.
 */
@@ -502,9 +515,6 @@ tls_init_serverengine(int verifydepth, i
     struct stat buf;
     size_t  tls_protos = 0;
     size_t  i;
-#ifdef HAVE_OPENSSL_ECC
-    EC_KEY *eckey;
-#endif
 
     if (tls_serverengine)
       return (0);				/* Already running. */
@@ -568,7 +578,13 @@ tls_init_serverengine(int verifydepth, i
     if (stat("/dev/urandom", &buf) == 0)
       RAND_load_file("/dev/urandom", 16 * 1024);
 
+/* Safe prime groups were introduced in OpenSSL 1.1.0. */
+#if OPENSSL_VERSION_NUMBER < 0x010100000L
     SSL_CTX_set_tmp_dh_callback(CTX, tmp_dh_cb);
+#else
+    SSL_CTX_set_dh_auto(CTX, 1);
+#endif
+
     SSL_CTX_set_options(CTX, SSL_OP_SINGLE_DH_USE);
 
 #ifdef HAVE_OPENSSL_ECC
@@ -577,9 +593,19 @@ tls_init_serverengine(int verifydepth, i
     /* We set a curve here by name if provided
      * or we use OpenSSL (>= 1.0.2) auto-selection
      * or we default to NIST P-256. */
-    eckey = eckey_from_name(tls_ec_curve);
-    if (eckey != NULL) {
-        SSL_CTX_set_tmp_ecdh(CTX, eckey);
+    if (tls_ec_curve != NULL) {
+# if OPENSSL_VERSION_NUMBER < 0x01010100fL
+        /* A new mechanism to select groups has been introduced
+         * in OpenSSL 1.1.1. */
+        EC_KEY *eckey;
+        eckey = eckey_from_name(tls_ec_curve);
+        if (eckey != NULL) {
+            SSL_CTX_set_tmp_ecdh(CTX, eckey);
+        }
+# else
+        if (!SSL_CTX_set1_groups_list(CTX, tls_ec_curve))
+            syslog(L_ERROR, "tlseccurve '%s' not found", tls_ec_curve);
+# endif
     } else {
 # if OPENSSL_VERSION_NUMBER < 0x010100000L
 #  if OPENSSL_VERSION_NUMBER >= 0x01000200fL
@@ -628,21 +654,26 @@ tls_init_serverengine(int verifydepth, i
             }
         }
     } else {
-        /* Default value:  allow only TLS protocols. */
-        tls_protos = (INN_TLS_TLSv1 | INN_TLS_TLSv1_1 | INN_TLS_TLSv1_2
-                      | INN_TLS_TLSv1_3);
+        /* Default value:  allow only secure TLS protocols. */
+        tls_protos = (INN_TLS_TLSv1_2 | INN_TLS_TLSv1_3);
     }
 
     if ((tls_protos & INN_TLS_SSLv2) == 0) {
+#ifdef SSL_OP_NO_SSLv2
         SSL_CTX_set_options(CTX, SSL_OP_NO_SSLv2);
+#endif
     }
 
     if ((tls_protos & INN_TLS_SSLv3) == 0) {
+#ifdef SSL_OP_NO_SSLv3
         SSL_CTX_set_options(CTX, SSL_OP_NO_SSLv3);
+#endif
     }
 
     if ((tls_protos & INN_TLS_TLSv1) == 0) {
+#ifdef SSL_OP_NO_TLSv1
         SSL_CTX_set_options(CTX, SSL_OP_NO_TLSv1);
+#endif
     }
 
     if ((tls_protos & INN_TLS_TLSv1_1) == 0) {
@@ -760,8 +791,13 @@ tls_init(void)
 
 
 /*
-**  Taken from OpenSSL apps/s_cb.c.
+**  Taken from OpenSSL apps/lib/s_cb.c.
+**
+**  The prototype of the callback function changed with BIO_set_callback_ex()
+**  introduced in OpenSSL 1.1.1
 */
+#if OPENSSL_VERSION_NUMBER < 0x01010100fL \
+    || defined(LIBRESSL_VERSION_NUMBER)
 static long
 bio_dump_cb(BIO * bio, int cmd, const char *argp, int argi, long argl UNUSED,
             long ret)
@@ -783,7 +819,42 @@ bio_dump_cb(BIO * bio, int cmd, const ch
     }
     return (ret);
 }
+#else
+static long
+bio_dump_cb(BIO * bio, int cmd, const char *argp, size_t len, int argi UNUSED,
+            long argl UNUSED, int ret, size_t *processed)
+{
+    if (!do_dump)
+	return (ret);
 
+    if (cmd == (BIO_CB_READ | BIO_CB_RETURN)) {
+        if (ret > 0 && processed != NULL) {
+            syslog(L_NOTICE, "read from %08lX [%08lX] (%lu bytes => %lu (0x%lX))",
+                   (unsigned long) bio, (unsigned long) argp,
+                   (unsigned long) len, (unsigned long) *processed,
+                   (unsigned long) *processed);
+            tls_dump(argp, (int) *processed);
+        } else {
+            syslog(L_NOTICE, "read from %08lX [%08lX] (%lu bytes => %d (0x%lX))",
+                   (unsigned long) bio, (unsigned long) argp,
+                   (unsigned long) len, ret, (unsigned long) ret);
+        }
+    } else if (cmd == (BIO_CB_WRITE | BIO_CB_RETURN)) {
+        if (ret > 0 && processed != NULL) {
+            syslog(L_NOTICE, "write to %08lX [%08lX] (%lu bytes => %lu (0x%lX))",
+                   (unsigned long) bio, (unsigned long) argp,
+                   (unsigned long) len, (unsigned long) *processed,
+                   (unsigned long) *processed);
+            tls_dump(argp, (int) *processed);
+        } else {
+            syslog(L_NOTICE, "write to %08lX [%08lX] (%lu bytes => %d (0x%lX))",
+                   (unsigned long) bio, (unsigned long) argp,
+                   (unsigned long) len, ret, (unsigned long) ret);
+        }
+    }
+    return (ret);
+}
+#endif
 
 /*
 **  This is the actual startup routine for the connection.  We expect
@@ -848,8 +919,16 @@ tls_start_servertls(int readfd, int writ
     /* We do have an SSL_set_fd() and now suddenly a BIO_ routine is called?
      * Well there is a BIO below the SSL routines that is automatically
      * created for us, so we can use it for debugging purposes. */
-    if (tls_loglevel >= 3)
-	BIO_set_callback(SSL_get_rbio(tls_conn), bio_dump_cb);
+    if (tls_loglevel >= 3) {
+        /* BIO_set_callback() was deprecated in OpenSSL 3.0.0.
+         * BIO_set_callback_ex() was introduced in OpenSSL 1.1.1. */
+#if OPENSSL_VERSION_NUMBER < 0x01010100fL \
+    || defined(LIBRESSL_VERSION_NUMBER)
+        BIO_set_callback(SSL_get_rbio(tls_conn), bio_dump_cb);
+#else
+        BIO_set_callback_ex(SSL_get_rbio(tls_conn), bio_dump_cb);
+#endif
+    }
 
     /* Dump the negotiation for loglevels 3 and 4. */
     if (tls_loglevel >= 3)
diff -Nurp inn-2.6.4/nnrpd/tls.h inn-2.6.5/nnrpd/tls.h
--- inn-2.6.4/nnrpd/tls.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/nnrpd/tls.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: tls.h 10309 2018-12-02 14:35:10Z iulius $
-**
+/*
 **  tls.h -- TLS functions.
 **  Copyright (C) 2000 Kenichi Okada <okada@opaopa.org>.
 **
@@ -12,13 +11,10 @@
 #ifndef TLS_H
 #define TLS_H
 
-/* When building with "make warnings", ensure that INN does not
- * use deprecated interfaces from OpenSSL. */
-#if defined(DEBUG)
-# define OPENSSL_API_COMPAT 0x010100000L
-#endif
-
+/* OpenSSL uses _Noreturn when C11 features are recognized. */
+#pragma GCC diagnostic ignored "-Wc99-c11-compat"
 #include <openssl/lhash.h>
+#pragma GCC diagnostic warning "-Wc99-c11-compat"
 #include <openssl/bn.h>
 #include <openssl/dh.h>
 #include <openssl/err.h>
diff -Nurp inn-2.6.4/nnrpd/track.c inn-2.6.5/nnrpd/track.c
--- inn-2.6.4/nnrpd/track.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/nnrpd/track.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: track.c 8034 2008-09-20 07:13:18Z iulius $
-**
+/*
 **  User and post tracking database.
 */
 
diff -Nurp inn-2.6.4/nnrpd/zlib.c inn-2.6.5/nnrpd/zlib.c
--- inn-2.6.4/nnrpd/zlib.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/nnrpd/zlib.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: zlib.c 10135 2017-01-12 21:09:58Z iulius $
-**
+/*
 **  COMPRESS functionality.  RFC 8054.
 */
 
diff -Nurp inn-2.6.4/perl/INN/Config.pm.in inn-2.6.5/perl/INN/Config.pm.in
--- inn-2.6.4/perl/INN/Config.pm.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/perl/INN/Config.pm.in	2022-02-18 20:36:57.000000000 +0100
@@ -1,8 +1,5 @@
-##  $Id: Config.pm.in 10283 2018-05-14 12:43:05Z iulius $
-##
 ##  Perl module which sets up any and all variables that an
 ##  INN Perl script might need.
-##
 
 package INN::Config;
 
@@ -277,8 +274,6 @@ F<innshellvars.pl> was written by James
 for InterNetNews in 1996.  It was converted to the INN::Config Perl
 module by Julien Elie in 2007.
 
-$Id: Config.pm.in 10283 2018-05-14 12:43:05Z iulius $
-
 =head1 SEE ALSO
 
 inn.conf(5), innconfval(1), perl(1).
diff -Nurp inn-2.6.4/perl/INN/Utils/Shlock.pm.in inn-2.6.5/perl/INN/Utils/Shlock.pm.in
--- inn-2.6.4/perl/INN/Utils/Shlock.pm.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/perl/INN/Utils/Shlock.pm.in	2022-02-18 20:36:57.000000000 +0100
@@ -1,11 +1,9 @@
 #! /usr/bin/perl -w
 # fixscript will replace this line with code to load INN::Config
 
-##  $Id: Shlock.pm.in 9408 2012-05-28 18:42:29Z iulius $
 ##
 ##  Perl module for wrapping the shlock program shipped with INN.
 ##
-
 package INN::Utils::Shlock;
 
 use strict;
@@ -181,8 +179,6 @@ This function returns C<1> on success, C
 
 Documentation written by Julien Elie for InterNetNews.
 
-$Id: Shlock.pm.in 9408 2012-05-28 18:42:29Z iulius $
-
 =head1 SEE ALSO
 
 perl(1), shlock(1).
diff -Nurp inn-2.6.4/perl/Makefile inn-2.6.5/perl/Makefile
--- inn-2.6.4/perl/Makefile	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/perl/Makefile	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: Makefile 9303 2011-08-04 22:09:57Z iulius $
-
 include ../Makefile.global
 
 top	      = ..
@@ -11,7 +9,7 @@ EXTRA         = INN/Config.pm
 ##  The double underscore '__' will be converted into two colons '::'
 ##  during the install process (otherwise, make would complain in this
 ##  file, and we cannot generate the right file with '::' in the
-##  Subversion man directory because it would always be regenerated:
+##  doc/man directory because it would always be regenerated:
 ##  the file containing '__' would indeed not be found).
 MAN           = ../doc/man/INN__Config.3pm \
 		../doc/man/INN__Utils__Shlock.3pm
diff -Nurp inn-2.6.4/readme.pod inn-2.6.5/readme.pod
--- inn-2.6.4/readme.pod	1970-01-01 01:00:00.000000000 +0100
+++ inn-2.6.5/readme.pod	2022-02-18 20:36:57.000000000 +0100
@@ -0,0 +1,430 @@
+=encoding utf8
+
+=head1 Welcome to the InterNetNews project!
+
+=head2 INN 2.6
+
+Our C<2.6> branch is for the maintenance of the most recently released
+stable version.  Head to the C<main> branch for the current development
+of the next major release of INN.
+
+This work is sponsored by Internet Systems Consortium.
+
+The official homepage of the project is
+L<https://www.isc.org/othersoftware/>.
+
+You'll also find very useful information about INN on L<Russ Allbery's
+web site|https://www.eyrie.org/~eagle/software/inn/>.
+
+Please see:
+
+=over 4
+
+=item *
+
+L<CHECKLIST|https://www.eyrie.org/~eagle/software/inn/docs-2.6/checklist.html>
+for a quick overview of all the installation steps and pointers to
+documentation,
+
+=item *
+
+L<INSTALL|https://www.eyrie.org/~eagle/software/inn/docs-2.6/install.html>
+for full installation instructions,
+
+=item *
+
+L<FAQ|https://www.eyrie.org/~eagle/faqs/inn.html> for INN FAQ,
+
+=item *
+
+L<NEWS|https://www.eyrie.org/~eagle/software/inn/docs-2.6/news.html>
+for what's changed from the previous release,
+
+=item *
+
+and
+L<LICENSE|https://www.eyrie.org/~eagle/software/inn/docs-2.6/license.html>
+for the copyright, license, and distribution terms.
+
+=back
+
+These files can also be found in the F<doc> or F<doc/pod> directories if not
+present at top-level.
+
+=head1 What is INN?
+
+INN (InterNetNews), originally written by Rich Salz, is a very
+full-featured and extremely flexible and configurable Usenet / Netnews
+news server.  For a complete description of the protocols behind Usenet
+and Netnews, see S<RFC 3977> (NNTP), S<RFC 4642> updated by S<RFC 8143>
+(TLS/NNTP), S<RFC 4643> (NNTP authentication), S<RFC 4644> (streaming
+NNTP feeds), S<RFC 5536> (USEFOR), S<RFC 5537> (USEPRO), S<RFC 6048>
+(NNTP LIST additions) and S<RFC 8054> (NNTP compression) or their
+replacements.
+
+In brief, Netnews is a set of protocols for exchanging messages between
+a decentralized network of news servers.  News articles are organized
+into newsgroups, which are themselves organized into hierarchies.
+Each individual news server stores locally all articles it has received
+for a given newsgroup, making access to stored articles extremely fast.
+Netnews does not require any central server; instead, each news server
+passes along articles it receives to all of the news servers it peers
+with, those servers pass the articles along to their peers, and so on,
+resulting in "flood fill" propagation of news articles.
+
+A news server performs three basic functions:  it accepts articles from
+other servers and stores them on disk, sends articles it has received out
+to other servers, and offers stored news articles to readers on demand.
+It additionally has to perform some periodic maintenance tasks, such as
+deleting older articles to make room for new ones.
+
+Originally, a news server would just store all of the news articles it had
+received in a file system.  Users could then read news by reading the
+article files on disk (or more commonly using news reading software that
+did this efficiently).  These days, news servers are almost always
+stand-alone systems and news reading is supported via network connections.
+A user who wants to read a newsgroup opens that newsgroup in their
+newsreader software, which opens a network connection to the news server
+and sends requests for articles and related information.  The protocol
+that a newsreader uses to talk to a news server and that a news server
+uses to talk to another news server over TCP/IP is called NNTP (Network
+News Transport Protocol).
+
+INN supports accepting articles via either NNTP connections or via UUCP.
+B<innd>, the heart of INN, handles NNTP feeding connections directly;
+UUCP newsfeeds use B<rnews> (included in INN) to hand articles off to
+B<innd>.  Other parts of INN handle feeding articles out to other news
+servers, most commonly B<innfeed> (for real-time outgoing feeds) or
+B<nntpsend> and B<innxmit> (used to send batches of news created by B<innd>
+to a remote site via TCP/IP).  INN can also handle outgoing UUCP feeds.
+
+The part of INN that handles connections from newsreaders is B<nnrpd>.
+
+Also included in INN are a wide variety of supporting programs to handle
+periodic maintenance and recovery from crashes, process special control
+messages, maintain the list of active newsgroups, and generate and record
+a staggering variety of statistics and summary information on the usage
+and performance of the server.
+
+INN also supports an extremely powerful filtering system that allows the
+server administrator to reject unwanted articles (such as spam and other
+abuses of Usenet).
+
+INN is free software, supported by Internet Systems Consortium and
+volunteers around the world.  See L<"Supporting the INN Effort"> below.
+
+=head1 Prerequisites
+
+Compiling INN requires an S<ANSI C> compiler (B<gcc> is recommended).  INN was
+originally written in S<K&R C>, but supporting pre-ANSI compilers has become
+enough of a headache that a lot of the newer parts of INN will no longer
+compile with a non-ANSI compiler.  B<gcc> itself will compile with most
+vendor non-ANSI compilers, however, so if you're stuck with one,
+installing B<gcc> is highly recommended.  Not only will it let you build INN,
+it will make installing lots of other software much easier.  You may also
+need GNU B<make> (particularly if your system B<make> is BSD-derived), although
+most SysV B<make> programs should work fine.  Compiling INN also currently
+requires a B<yacc> implementation (B<bison> will do fine).
+
+INN uses GNU B<autoconf> to probe the capabilities of your
+system, and therefore should compile on nearly any Unix
+system.  It does, however, make extensive use of mmap(),
+which can cause problems on some older operating systems.  See
+L<INSTALL|https://www.eyrie.org/~eagle/software/inn/docs-2.6/install.html>
+for a list of systems it is known to work on.  If you encounter problems
+compiling or running INN, or if you successfully run INN on a platform
+that isn't listed in F<INSTALL>, please let us know (see L<"Reporting
+Bugs"> below).
+
+S<Perl 5.004_03> or later is required to build INN and use the embedded
+Perl filtering and authentication hook support (which is highly
+recommended; some excellent spam filters have been written for INN).
+Since all versions of Perl previous to 5.004 are buggy (including
+security problems) and have fewer features, installing S<Perl 5.004_03>
+or later (like at least S<Perl 5.8.0>) is recommended.  Depending on
+what language you want to write your filters and authentication hooks in,
+you may also want to install S<Python 2.3.0> or later, or S<Python 3.3.0>
+or later.
+
+For support for authenticated control messages, you will need either PGP
+or GnuPG, the latter being recommended.  See F<INSTALL> for more details.
+
+For the C<ovdb> overview storage method, you'll need S<Berkeley DB 4.4>
+or later (4.7 or later recommended).  If you have zlib available,
+you can also compress overview before it's stored into C<ovdb>,
+and enable the COMPRESS capability, an NNTP extension.  For support
+for news reading over TLS, you'll need OpenSSL.  To support SASL
+authentication to B<nnrpd> or to feed newsgroups to an IMAP server with
+SASL authentication, you'll need the Cyrus SASL libraries.  INN can
+also check passwords against a Kerberos KDC; for this, you will need
+Kerberos libraries.
+
+=head1 Getting Started
+
+A news server can be a fairly complicated piece of software to set up just
+because of the wide variety of pieces that have to be configured (who is
+authorized to read from the server, what newsgroups it carries, and how
+the articles are stored on disk at a bare minimum, and if the server isn't
+completely stand-alone S<-- and> very few servers S<are --> both incoming and
+outgoing feeds have to be set up and tested).  Be prepared to take some
+time to understand what's going on and how all the pieces fit together.
+If you have any specific suggestions for documentation, or comments about
+things that are unclear, please send them to the INN maintainers (see
+L<"Reporting Bugs"> below).
+
+=head2 Download
+
+Source code tarballs of the official releases can be downloaded from
+L<https://downloads.isc.org/isc/inn/>.  The InterNetNews project does
+not distribute releases in binary form.  Yet, precompiled versions may
+exist on your operating system.
+
+When installing a new INN server, you may wish to download the latest
+snapshot of the stable branch rather than the last official release,
+so that to pick up possible bug fixes.
+
+=head2 Build and Install
+
+See
+L<INSTALL|https://www.eyrie.org/~eagle/software/inn/docs-2.6/install.html>
+for step-by-step instructions for setting up and configuring a news
+server.
+
+=head2 Documentation
+
+INN also comes with a very complete set of man pages; there is a man page
+for every configuration file and program that comes with INN.  (If you
+find one that doesn't have a man page, that's a bug.  Please do report
+it.)  When trying to figure out some specific problem, reading the man
+pages for all of the configuration files involved is a very good start.
+
+URL:  L<https://www.eyrie.org/~eagle/software/inn/docs-2.6/> (online
+documentation)
+
+=head1 Reporting Bugs
+
+We're interested in all bug reports.  Not just on the programs, but on the
+documentation too.  Please use the GitHub issue tracker to send such bug
+reports, or alternatively send them to
+
+    inn-workers@lists.isc.org
+
+(patches are certainly welcome, see below).  Even if you post to Usenet,
+please CC the above address.
+
+If you have general "how do I do this" questions or problems configuring
+your server that you don't believe are due to a bug in INN, you should
+post them to news.software.nntp.  A lot of experienced INN users,
+including several of the INN maintainers, read that newsgroup regularly.
+Please don't send general questions to the above addresses; those
+addresses are specifically for INN, and the INN maintainers usually won't
+have time to answer general questions.
+
+=head1 Testing and Development
+
+=head2 Source Code
+
+INN is maintained using the Git version control system.
+The official InterNetNews Git repository is located at
+L<https://github.com/InterNetNews/inn>.  A local copy of the current
+development source can be obtained by cloning it using a Git client:
+
+    git clone https://github.com/InterNetNews/inn.git
+
+You can also download L<daily
+snapshots|https://archives.eyrie.org/software/inn/snapshots/> produced
+only if the current code compiles and passes the test suite, so they
+have undergone at least some basic validation, although they've not
+been tested by a human.
+
+=head2 Contributing Code
+
+If you have a patch or a utility that you'd like to be considered for
+inclusion into INN, please make a GitHub pull request, or alternatively
+mail it to
+
+    inn-workers@lists.isc.org
+
+in the body of the message (not as an attachment because the mailing-list
+might strip it), or put it on a webpage and send a link.  Patches included
+with a bug report as described above should follow the same procedure.
+
+Please submit all patches against the current main branch, not against a
+stable release.  The development version of INN is often much different
+than the last stable release.
+
+Also please take a look at
+L<HACKING|https://www.eyrie.org/~eagle/software/inn/docs-2.6/hacking.html>
+for information about development and coding style.
+
+Have fun!
+
+=head1 Mailing Lists
+
+There are various INN-related mailing lists you can join or send messages
+to if you like.  Some of them you must be a member of before you can send
+mail to them (thank the spammers for that policy), and one of them is
+read-only (no postings allowed).
+
+=over 8
+
+=item inn-announce@lists.isc.org
+
+Where announcements about INN are sent (only maintainers may post).
+
+URL:  L<https://lists.isc.org/mailman/listinfo/inn-announce>
+
+=item inn-workers@lists.isc.org
+
+Discussion of INN development.  If you prefer not to use GitHub to create
+an issue or a pull request, it is also where to send bug reports and
+patches for consideration for inclusion into INN (postings by members
+only).  If you're an INN expert and have the time to help out other
+users, we encourage you to join this mailing list to answer questions.
+(You may also want to read the newsgroup news.software.nntp, which gets
+a lot of INN-related questions.)
+
+URL:  L<https://lists.isc.org/mailman/listinfo/inn-workers>
+
+=item inn-committers@lists.isc.org
+
+Git commit messages for INN are sent to this list (only the automated
+messages are sent here, no regular posting).
+
+URL:  L<https://lists.isc.org/mailman/listinfo/inn-committers>
+
+=item inn-bugs@lists.isc.org
+
+This list used to receive Trac issues for INN, before the migration to GitHub
+(only the automated messages were sent here, no regular posting).  Bug reports
+should be sent to the inn-workers mailing list, or a GitHub issue created.
+
+URL:  L<https://lists.isc.org/mailman/listinfo/inn-bugs>
+
+=back
+
+To join these lists, send a subscription request to the C<-request>
+address.  The addresses for the above lists are:
+
+   inn-announce-request@lists.isc.org
+   inn-workers-request@lists.isc.org
+   inn-committers-request@lists.isc.org
+   inn-bugs-request@lists.isc.org
+
+You can alternatively join them from the subscription form in their
+public web pages.
+
+=head1 Who's Responsible / Who to Thank
+
+See
+L<CONTRIBUTORS|https://www.eyrie.org/~eagle/software/inn/docs-2.6/contributors.html>
+for a long list of past contributors as well as people from the
+inn-workers mailing list who have dedicated a lot of time and effort to
+getting this new version together.  They deserve a big round of applause.
+They've certainly got our thanks.
+
+This product includes software developed by UUNET Technologies, Inc. and
+by the University of California, Berkeley and its contributors.
+
+Last, but certainly not least, Rich Salz, the original author of INN
+deserves a lion's share of the credit for writing INN in the first place
+and making it the most popular news server software on the planet (no NNTP
+yet to the moon, but we plan to be there first).
+
+=head1 Related Packages
+
+INN users may also be interested in the following software packages that
+work with INN or are based on it.  Please note that none of this software
+is developed or maintained by ISC; we don't support it and generally can't
+answer questions about it.
+
+=over 4
+
+=item Cleanfeed
+
+URL:  L<https://www.mixmin.net/cleanfeed/> (maintained by Steve Crook)
+
+Cleanfeed is an extremely powerful spam filter, probably the most widely
+used spam filter on Usenet currently.  It catches excessive multiposting
+and a host of other things, and is highly configurable.  Note that it
+requires that INN be built with Perl support (the B<--with-perl> option to
+configure).
+
+Cleanfeed was originally developed by Jeremy Nixon who maintained it
+until 1998.  Then Marco d'Itri until 2002.  Steve Crook has been
+maintaining it since 2007.
+
+A Python-based variant of Cleanfeed, named PyClean, also exists and
+can be found at L<https://github.com/crooks/PyClean>.
+
+=item GUP (Group Update Program)
+
+URL:  L<https://tracker.debian.org/pkg/gup>
+
+GUP provides a way for your peers to update their F<newsfeeds> entries as
+they want without having to ask you to edit the configuration file all the
+time.  It's useful when feeding peers take limited and very specific
+feeds that change periodically.
+
+=item innduct
+
+URL:  L<https://www.chiark.greenend.org.uk/ucgi/~ian/git-manpage/innduct.git/innduct.8> (maintained by Ian Jackson)
+
+A possible replacement for B<innfeed>, B<innxmit> and B<nntpsend>
+that quickly and reliably streams Usenet article to a remote site.
+B<innduct> is designed to be robust and not to lose any articles (when
+offered to peers) in case it unexpectedly dies, contrary to B<innfeed>.
+It also permits a realtime feed, contrary to B<innxmit> or B<nntpsend>.
+
+=item NewsPortal
+
+URL:  L<https://gitlab.com/yamo-nntp/newsportal>
+
+A PHP-based web news reader that works as a front-end to a regular news
+server such as INN and lets people read and post without learning a news
+reader.
+
+NewsPortal was originally written by Florian Amrhein
+L<https://amrhein.eu/newsportal/doc/> and is now maintained by St��phane
+Gr��goire who notably did a great job fixing a few bugs and adapting
+it for use on smartphones.
+
+=item PersonalINN
+
+URL:  L<http://www.ritual.org/summer/pinn/>
+
+PersonalINN is a version of INN modified for personal use and with a
+friendly GUI built on top of it.  It is available for NEXTSTEP or OPENSTEP
+only, unfortunately.
+
+=item suck
+
+URL:  L<https://github.com/lazarus-pkgs/suck>
+
+B<suck> is a separate package for downloading a news feed via a reading
+connection (rather than via a direct NNTP or UUCP feed) and sending
+outgoing local posts via POST.  It's intended primarily for personal or
+small-organization news servers who get their news via an ISP and are too
+small to warrant setting up a regular news feed.
+
+=back
+
+=head1 Supporting the INN Effort
+
+Note that INN is supported by Internet Systems Consortium, and although it
+is free for use and redistribution and incorporation into vendor products
+and export and anything else you can think of, it costs money to produce.
+That money comes from ISPs, hardware and software vendors, companies who
+make extensive use of the software, and generally kind-hearted folk such
+as yourself.
+
+Internet Systems Consortium has also commissioned a DHCP server
+implementation and handles the official support/release of BIND.  You can
+learn more about the ISC's goals and accomplishments from the web page at
+L<https://www.isc.org/>.
+
+                                        Russ Allbery
+                                        Katsuhiro Kondou
+                                        <inn@isc.org>
+
+=cut
diff -Nurp inn-2.6.4/samples/INN.py inn-2.6.5/samples/INN.py
--- inn-2.6.4/samples/INN.py	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/samples/INN.py	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: INN.py 8250 2008-12-23 12:00:46Z iulius $
-##
 ##  This module supplies stub Python functions corresponding to the ones
 ##  provided by innd.  It is not used by the server; it is only here so
 ##  that you can test your filter scripts before loading.
diff -Nurp inn-2.6.4/samples/Makefile inn-2.6.5/samples/Makefile
--- inn-2.6.4/samples/Makefile	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/samples/Makefile	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: Makefile 7650 2007-08-20 10:08:33Z iulius $
-##
 ##  All the actual installation work of any files in the samples directory
 ##  is done via the site directory, so that one can maintain one's news
 ##  configuration in the site directory and use make commands to update the
diff -Nurp inn-2.6.4/samples/actsync.cfg inn-2.6.5/samples/actsync.cfg
--- inn-2.6.4/samples/actsync.cfg	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/samples/actsync.cfg	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: actsync.cfg 10283 2018-05-14 12:43:05Z iulius $
-##
 ##  Sample actsync configuration file.
 ##
 ##  It permits synchronizing, comparing, or merging active files.
diff -Nurp inn-2.6.4/samples/actsync.ign inn-2.6.5/samples/actsync.ign
--- inn-2.6.4/samples/actsync.ign	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/samples/actsync.ign	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: actsync.ign 7664 2007-09-02 12:58:07Z iulius $
-##
 ##  Sample actsync ignore file.
 ##
 ##  It defines synchronization rules (which newsgroups will be
diff -Nurp inn-2.6.4/samples/buffindexed.conf.in inn-2.6.5/samples/buffindexed.conf.in
--- inn-2.6.4/samples/buffindexed.conf.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/samples/buffindexed.conf.in	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: buffindexed.conf.in 7651 2007-08-20 10:28:34Z iulius $
-##
 ##  Configuration for the buffindexed overview method.
 ##
 ##  It specifies the buffers that the buffindexed overview method
diff -Nurp inn-2.6.4/samples/control.ctl inn-2.6.5/samples/control.ctl
--- inn-2.6.4/samples/control.ctl	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/samples/control.ctl	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,5 @@
 ##  control.ctl - Access control for control messages.
-##  Last modified: 2020-12-24
+##  Last modified: 2021-11-28
 ##
 ##  Based on rone's unified control.ctl file.
 ##
@@ -9,8 +9,8 @@
 ##      <http://usenet.trigofacile.com/hierarchies/>
 ##
 ##  Please copy usenet-config@isc.org on any updates to this file so that
-##  it can be updated in the INN Subversion repository and on ftp.isc.org.
-##  For changes to a public hierarchy, please also post the changes to
+##  it can be updated in the INN Git repository and on ftp.isc.org.  For
+##  changes to a public hierarchy, please also post the changes to
 ##  news.admin.hierarchies.
 ##
 ##  The canonical version of this file can be found in the latest INN
@@ -66,7 +66,7 @@
 ##     field to "mail" or "doit=mail" or "doit=<log file>" or whatever you
 ##     prefer (replacing <log file> with the name of an appropriate log
 ##     file).
-## 
+##
 ##   * A number of hierarchies are for local use only but have leaked out
 ##     into the general stream.  In this config file, they are set so that
 ##     the groups will be easy to remove, and are marked with a comment of
@@ -79,7 +79,7 @@
 ##
 ##     If you have permission to carry any of the hierarchies so listed in
 ##     this file, you should change the entries for those hierarchies
-##     below. 
+##     below.
 ##
 ##   * Some hierarchies are marked as *HISTORIC*.  These hierarchies
 ##     aren't entirely defunct, but they are very low-traffic, not widely
@@ -318,17 +318,16 @@ newgroup:system@asuvax.eas.asu.edu:az.*:
 rmgroup:system@asuvax.eas.asu.edu:az.*:doit
 
 ## BA (San Francisco Bay Area, USA)
-# Contact: ba-mod@panix.com
-# URL: http://www.panix.com/~babm/ba/
+#
+# This hierarchy is still in use but has no active maintainers as of
+# October of 2021.  No control messages are currently being issued for
+# it.
+#
+# This hierarchy is still in use, but it has no active maintainer.
+# Control messages for this hierarchy should not be honored without
+# confirming that the sender is the new hierarchy maintainer.
+#
 # Admin group: ba.config
-# Key URL: http://www.panix.com/~babm/ba/ba-mod.asc
-# Key fingerprint: 3C B6 7A 3B 34 53 C0 58  D2 FB 65 E8 E9 6F CD 46
-# *PGP*   See comment at top of file.
-newgroup:*:ba.*:drop
-rmgroup:*:ba.*:drop
-checkgroups:ba-mod@panix.com:ba.*:verify-ba.config
-newgroup:ba-mod@panix.com:ba.*:verify-ba.config
-rmgroup:ba-mod@panix.com:ba.*:verify-ba.config
 
 ## BACKBONE (*LOCAL* -- ruhr.de/ruhrgebiet.individual.net in Germany)
 # Contact: admin@ruhr.de
@@ -623,9 +622,9 @@ rmgroup:news@supernews.net:codewarrior.*
 
 ## COMP, HUMANITIES, MISC, NEWS, REC, SCI, SOC, TALK (The Big Eight)
 # Contact: board@big-8.org
-# URL: http://www.big-8.org/
+# URL: https://www.big-8.org/
 # Admin group: news.announce.newgroups
-# Key fingerprint: F5 35 58 D3 55 64 10 14  07 C6 95 53 13 6F D4 07
+# Key fingerprint: 8E18 1BEF 0BE6 3896 2C1A  5C98 FAFE 7B55 0C18 C8B7
 # *PGP*   See comment at top of file.
 newgroup:*:comp.*|humanities.*|misc.*|news.*|rec.*|sci.*|soc.*|talk.*:drop
 rmgroup:*:comp.*|humanities.*|misc.*|news.*|rec.*|sci.*|soc.*|talk.*:drop
@@ -874,7 +873,7 @@ rmgroup:*:example.*:drop
 # lists into fa.* newsgroups, but that site does not appear to be issuing
 # any control messages for those groups.
 #
-# This hierarchy is still in use, but it has no active maintainer. 
+# This hierarchy is still in use, but it has no active maintainer.
 # Control messages for this hierarchy should not be honored without
 # confirming that the sender is the new hierarchy maintainer.
 
@@ -892,7 +891,7 @@ rmgroup:ffm.admin@arcor.de:ffm.*:verify-
 
 ## FIDO (FidoNet)
 #
-# This hierarchy is still in use, but it has no active maintainer. 
+# This hierarchy is still in use, but it has no active maintainer.
 # Control messages for this hierarchy should not be honored without
 # confirming that the sender is the new hierarchy maintainer.
 
@@ -916,15 +915,15 @@ newgroup:fido.ger@news.fu-berlin.de:fido
 rmgroup:fido.ger@news.fu-berlin.de:fido.ger.*:verify-fido.ger@news.fu-berlin.de
 
 ## FIDO7 (Russian FidoNet)
-# URL: http://www.fido7.ru/
+# URL: http://www.fido7.org/
 # Admin group: fido7.postmasters
-# Key URL: http://www.fido7.ru/pgpcontrol.html
+# Key URL: http://www.fido7.org/pgpcontrol.html
 # *PGP*   See comment at top of file.
 newgroup:*:fido7.*:drop
 rmgroup:*:fido7.*:drop
-checkgroups:newgroups-request@fido7.ru:fido7.*:verify-fido7.announce.newgroups
-newgroup:newgroups-request@fido7.ru:fido7.*:verify-fido7.announce.newgroups
-rmgroup:newgroups-request@fido7.ru:fido7.*:verify-fido7.announce.newgroups
+checkgroups:newgroups-request@fido7.org:fido7.*:verify-fido7.announce.newgroups
+newgroup:newgroups-request@fido7.org:fido7.*:verify-fido7.announce.newgroups
+rmgroup:newgroups-request@fido7.org:fido7.*:verify-fido7.announce.newgroups
 
 ## FINET (Finland and Finnish language alternative newsgroups)
 checkgroups:*@*.fi:finet.*:doit
@@ -1348,7 +1347,7 @@ rmgroup:news@linux.or.jp:jlug.*:verify-n
 ## JUNK (*RESERVED* -- Used for unwanted newsgroups)
 #
 # The junk newsgroup is reserved by RFC 5536 and MUST NOT be used.  It is
-# used by some implementations to store messages to unwanted newsgroups. 
+# used by some implementations to store messages to unwanted newsgroups.
 # The junk.* hierarchy is not reserved by RFC 5536, but it's marked
 # reserved here because, given the special meaning of the junk group,
 # using it for any other purpose would be confusing and might trigger
@@ -1411,7 +1410,7 @@ rmgroup:usenet@film.rlss.okayama-u.ac.jp
 
 ## KIEL (Kiel, Germany)
 #
-# This hierarchy is still in use, but it has no active maintainer. 
+# This hierarchy is still in use, but it has no active maintainer.
 # Control messages for this hierarchy should not be honored without
 # confirming that the sender is the new hierarchy maintainer.
 #
@@ -1629,7 +1628,7 @@ rmgroup:*:nasa.*:doit
 
 ## NC (North Carolina, USA)
 #
-# This hierarchy is still in use, but it has no active maintainer. 
+# This hierarchy is still in use, but it has no active maintainer.
 # Control messages for this hierarchy should not be honored without
 # confirming that the sender is the new hierarchy maintainer.
 
@@ -1653,7 +1652,7 @@ rmgroup:*:ncu.*:doit
 
 ## NERSC (National Energy Research Scientific Computing Center)
 #
-# This hierarchy is still in use, but it has no active maintainer. 
+# This hierarchy is still in use, but it has no active maintainer.
 # Control messages for this hierarchy should not be honored without
 # confirming that the sender is the new hierarchy maintainer.
 #
@@ -1662,24 +1661,14 @@ rmgroup:*:ncu.*:doit
 ## NET (*HISTORIC* -- Usenet 2)
 #
 # This was a failed experiment in a different newsgroup creation policy and
-# administrative policy which has now been almost entirely abandoned.  The
-# information is retained here for the few sites still using it, but sites
-# not already carrying the groups probably won't be interested.
+# administrative policy which has now been abandoned.
 #
 # (This was also the original unmoderated Usenet hierarchy from before the
 # Great Renaming.  The groups that used to be in net.* in the 1980s are now
 # in the Big Eight hierarchies.)
 #
-# URL: http://www.usenet2.org
-# Admin group: net.config
-# Key URL: http://www.usenet2.org/control@usenet2.org.asc
-# Key fingerprint: D7 D3 5C DB 18 6A 29 79  BF 74 D4 58 A3 78 9D 22
-# *PGP*   See comment at top of file.
 newgroup:*:net.*:drop
 rmgroup:*:net.*:drop
-#checkgroups:control@usenet2.org:net.*:verify-control@usenet2.org
-#newgroup:control@usenet2.org:net.*:verify-control@usenet2.org
-#rmgroup:control@usenet2.org:net.*:verify-control@usenet2.org
 
 ## NETINS (*LOCAL* -- netINS, Inc)
 # Contact: news@netins.net
@@ -1819,7 +1808,7 @@ rmgroup:control@usenet.no:no.alt.*:verif
 
 ## NORD (Northern Germany)
 #
-# This hierarchy is still in use, but it has no active maintainer. 
+# This hierarchy is still in use, but it has no active maintainer.
 # Control messages for this hierarchy should not be honored without
 # confirming that the sender is the new hierarchy maintainer.
 
@@ -1964,7 +1953,7 @@ rmgroup:news@nortel.ca:ott.*:doit
 
 ## OWL (Ostwestfalen-Lippe, Germany)
 #
-# This hierarchy is still in use, but it has no active maintainer. 
+# This hierarchy is still in use, but it has no active maintainer.
 # Control messages for this hierarchy should not be honored without
 # confirming that the sender is the new hierarchy maintainer.
 #
@@ -2493,7 +2482,7 @@ rmgroup:usenet@rocky.ucdavis.edu:ucd.*:d
 
 ## UFRA (Unterfranken, Deutschland)
 #
-# This hierarchy is still in use, but it has no active maintainer. 
+# This hierarchy is still in use, but it has no active maintainer.
 # Control messages for this hierarchy should not be honored without
 # confirming that the sender is the new hierarchy maintainer.
 #
@@ -2703,7 +2692,7 @@ rmgroup:*:worldonline.*:doit
 
 ## WPG (Winnipeg, Manitoba, Canada)
 #
-# This hierarchy is still in use, but it has no active maintainer. 
+# This hierarchy is still in use, but it has no active maintainer.
 # Control messages for this hierarchy should not be honored without
 # confirming that the sender is the new hierarchy maintainer.
 
diff -Nurp inn-2.6.4/samples/control.ctl.local inn-2.6.5/samples/control.ctl.local
--- inn-2.6.4/samples/control.ctl.local	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/samples/control.ctl.local	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: control.ctl.local 8456 2009-05-09 17:43:11Z iulius $
-##
 ##  Sample control.ctl.local file.
 ##
 ##  It defines local access control for control messages.
diff -Nurp inn-2.6.4/samples/cycbuff.conf inn-2.6.5/samples/cycbuff.conf
--- inn-2.6.4/samples/cycbuff.conf	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/samples/cycbuff.conf	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: cycbuff.conf 7651 2007-08-20 10:28:34Z iulius $
-##
 ##  Configuration file for INN CNFS storage method.
 ##
 ##  This file defines the cyclical buffers that make up the storage pools
diff -Nurp inn-2.6.4/samples/distrib.pats inn-2.6.5/samples/distrib.pats
--- inn-2.6.4/samples/distrib.pats	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/samples/distrib.pats	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: distrib.pats 8636 2009-09-28 19:57:30Z iulius $
-##
 ##  Sample distrib.pats file.
 ##
 ##  It specifies the default Distribution: header for newsgroups.
@@ -10,8 +8,8 @@
 ##  All articles are matched against all patterns.  The value to be used is
 ##  the one with the highest weight.
 ##      <weight>        The weight assigned to this match, integer.
-##      <pattern>       Newsgroup name or single wildmat(3) pattern.
-##      <value>         Value of Distribution: header, encoded in UTF-8.
+##      <pattern>       Newsgroup name or single uwildmat pattern.
+##      <value>         Body of Distribution header field, encoded in UTF-8.
 ##
 ##  See the distrib.pats man page for more information.
 
diff -Nurp inn-2.6.4/samples/distributions inn-2.6.5/samples/distributions
--- inn-2.6.4/samples/distributions	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/samples/distributions	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: distributions 9028 2010-03-21 20:10:46Z iulius $
-##
 ##  Sample distributions configuration file.
 ##
 ##  It contains recommended values for the Distribution: header.
diff -Nurp inn-2.6.4/samples/expire.ctl inn-2.6.5/samples/expire.ctl
--- inn-2.6.4/samples/expire.ctl	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/samples/expire.ctl	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: expire.ctl 8571 2009-08-17 19:10:07Z iulius $
-##
 ##  Sample configuration file for article expiration.
 ##
 ##  Format:
@@ -31,12 +29,12 @@
 ##  account articles whose posting date is one day into the future).
 /remember/:11
 
-##  Keep for 1-15 days, allow Expires: headers to work.  This entry uses
+##  Keep for 1-90 days, allow Expires header fields to work.  This entry uses
 ##  the syntax appropriate when groupbaseexpiry is true in inn.conf.  Times
 ##  are based on the arrival time (unless -p is used).
-*:A:1:15:never
+*:A:1:90:never
 
-##  Keep for 1-15 days, allow Expires: headers to work.  This is an entry
+##  Keep for 1-90 days, allow Expires header fields to work.  This is an entry
 ##  based on storage class, used when groupbaseexpiry is false.  Times
 ##  are based on the arrival time (unless -p is used).
-#0:1:15:never
+#0:1:90:never
diff -Nurp inn-2.6.4/samples/filter_innd.pl inn-2.6.5/samples/filter_innd.pl
--- inn-2.6.4/samples/filter_innd.pl	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/samples/filter_innd.pl	2022-02-18 20:36:57.000000000 +0100
@@ -1,9 +1,5 @@
-#
-# $Id: filter_innd.pl 9205 2011-06-13 15:08:31Z iulius $
-#
 # Sample Perl filtering file for the innd hooks.
 # 
-
 # This file gets loaded at innd process startup, and everytime a
 # "ctlinnd reload filter.perl 'reason'" or a
 # "ctlinnd reload all 'reason'" is done.
diff -Nurp inn-2.6.4/samples/filter_innd.py inn-2.6.5/samples/filter_innd.py
--- inn-2.6.4/samples/filter_innd.py	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/samples/filter_innd.py	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: filter_innd.py 10282 2018-05-14 12:42:14Z iulius $
-##
 ##  This is a sample filter for the Python innd hook.
 ##
 ##  See the INN Python Filtering and Authentication Hooks documentation
diff -Nurp inn-2.6.4/samples/filter_nnrpd.pl inn-2.6.5/samples/filter_nnrpd.pl
--- inn-2.6.4/samples/filter_nnrpd.pl	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/samples/filter_nnrpd.pl	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: filter_nnrpd.pl 9480 2013-06-06 20:04:56Z iulius $
-##
 ##  This is a sample filter for the Perl nnrpd hook.
 ##
 ##  See the INN Perl Filtering and Authentication Hooks documentation
diff -Nurp inn-2.6.4/samples/incoming.conf inn-2.6.5/samples/incoming.conf
--- inn-2.6.4/samples/incoming.conf	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/samples/incoming.conf	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: incoming.conf 10179 2017-09-18 20:13:48Z iulius $
-##
 ##  incoming.conf -- Configuration of incoming news feeds
 ##
 ##  This file consists of three types of entries:  key/value, peer and group.
diff -Nurp inn-2.6.4/samples/inn-radius.conf inn-2.6.5/samples/inn-radius.conf
--- inn-2.6.4/samples/inn-radius.conf	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/samples/inn-radius.conf	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-# $Id: inn-radius.conf 9940 2015-09-04 12:58:15Z iulius $
-#
 # Sample RADIUS configuration file for the RADIUS readers.conf
 # authenticator.  If you're not using that authenticator, this file is not
 # used.
diff -Nurp inn-2.6.4/samples/inn.conf.in inn-2.6.5/samples/inn.conf.in
--- inn-2.6.4/samples/inn.conf.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/samples/inn.conf.in	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: inn.conf.in 10301 2018-11-11 14:42:17Z iulius $
-##
 ##  inn.conf -- INN configuration data
 ##
 ##  Format:
@@ -145,7 +143,7 @@ backofftrigger:              10000
 #tlscompression:             false
 #tlseccurve:
 #tlspreferserverciphers:     true
-#tlsprotocols:               [ TLSv1 TLSv1.1 TLSv1.2 TLSv1.3 ]
+#tlsprotocols:               [ TLSv1.2 TLSv1.3 ]
 
 # Monitoring
 
@@ -188,6 +186,7 @@ icdsynccount:                10
 keepmmappedthreshold:        1024
 #maxcmdreadsize:
 maxforks:                    10
+maxlisten:                   128
 nicekids:                    4
 nicenewnews:                 0
 nicennrpd:                   0
diff -Nurp inn-2.6.4/samples/innfeed.conf inn-2.6.5/samples/innfeed.conf
--- inn-2.6.4/samples/innfeed.conf	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/samples/innfeed.conf	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: innfeed.conf 9923 2015-07-14 16:48:11Z iulius $
-##
 ##  innfeed.conf - Configuration file for innfeed
 ##
 ##  Format:
diff -Nurp inn-2.6.4/samples/innreport.conf.in inn-2.6.5/samples/innreport.conf.in
--- inn-2.6.4/samples/innreport.conf.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/samples/innreport.conf.in	2022-02-18 20:36:57.000000000 +0100
@@ -3,9 +3,8 @@
 #
 # Sample file for INN.
 #
-# (c) 1997, 1998, 1999 by Fabien Tassin <fta@sofaraway.org>
-#
-# $Id: innreport.conf.in 10385 2020-06-13 15:21:43Z iulius $
+# (c) 1997-1999 by Fabien Tassin <fta@sofaraway.org>.
+# Enhanced by several contributors since then.
 ######################################################################
 
 # Default parameters
@@ -13,25 +12,25 @@ section default {
 	libpath         "@libdir@";
 	logpath		"@LOGDIR@";
 	unknown		true;        # want unknown entries.
-        html-unknown    true;        # want unknown entries in HTML reports. 
+        html-unknown    true;        # want unknown entries in HTML reports.
 	max_unknown     50;          # max unknown entries to display.
-	casesensitive   true;
+	casesensitive   true;        # use case sensitive search patterns.
 	module		"innreport_inn";  # ${libpath}/${module}.pm
 	unwanted_log	"unwanted.log";   # ${logpath}/${unwanted_log}
-	text            true;
-	html            false;
-	graph           true;  # need 'html'
+	text            true;  # generate text reports.
+	html            false; # generate HTML reports.
+	graph           true;  # need 'html'.
 	archive		true;  # use false to keep only the latest HTML report.
 
-      # Change to .xhtml to let Apache serve correct MIME type.
+      # Change to .xhtml to let the web server serve correct MIME type.
 	index			"index.html"; # name of the HTML index file.
-      # html_file_extension	".html";
+	html_file_extension	".html";      # extension to HTML file names.
 
-      # html_dir        "@HTTPDIR@"; # default to pathhttp in inn.conf.
-	img_dir         "pics";      # images will go to ${html_dir}/${img_dir}
+	html_dir	"@HTTPDIR@"; # default to pathhttp in inn.conf.
+	img_dir		"pics";      # ${html_dir}/${img_dir}
 	cycle		none;        # use a number or 'none'.
         separator       ".";         # use a valid filename character.
-	title		"Daily Usenet report";
+	title		"Daily Usenet report";  # title for reports.
       # title	        "Daily Usenet report for <a href=\"news/stats/\">news.y.z</a>";
       # footer		"Local contact: <a href=\"mailto:x@y.z\">x@y.z</a>";
 
@@ -45,14 +44,16 @@ section default {
       # Character set used in XML and Content-Type declaration.
       # html_encoding	"ISO-8859-1";
 
-      # URL to CSS file.  If undefined, a default style sheet is generated.
+      # Name or URL to CSS file.
+      # If undefined, a default style sheet is generated.
       # html_css_url    "innreport.css";
 
-      # URL to XSL file.  See <http://www.w3.org/MarkUp/2004/xhtml-faq#ie>.
+      # Name or URL to XSL file.
+      # See <https://www.w3.org/MarkUp/2004/xhtml-faq#ie>.
       # html_xsl_url    "";
 
-        graph_width	550;         # graph width (in pixels)
-        transparent	true;        # graph background transparent ?
+        graph_width	550;         # graph width (in pixels).
+        transparent	false;       # graph background transparent?
         graph_fg        "#000000";   # graph foreground color.
         graph_bg        "#FFFFFF";   # graph background color.
 };
@@ -78,7 +79,6 @@ section index {
 			 total(%nntplink_accepted) + total(%innxmit_accepted) |
 			 bytes(total(%innfeed_accepted_size) +
 			 total(%innfeed_rejected_size) +
-			 total(%innxmit_bytes) +
 			 total(%innxmit_accepted_size) +
 			 total(%innxmit_rejected_size))";
 	};
@@ -1723,36 +1723,30 @@ section innxmit_volume {
 		name		"TotalVol";
 		format		"%9s";
 		value		"bytes($innxmit_accepted_size{$key} +
-	                               $innxmit_rejected_size{$key} +
-                                       $innxmit_bytes{$key})";
+	                               $innxmit_rejected_size{$key})";
 		total		"bytes(total(%innxmit_accepted_size) +
-                                       total(%innxmit_rejected_size) +
-                                       total(%innxmit_bytes))";
+                                       total(%innxmit_rejected_size))";
 	};
 	column {
 		name		"KB/s";
 		format_name	"%5s";
 		format		"%5.1f";
 		value		"($innxmit_accepted_size{$key} +
-                                  $innxmit_rejected_size{$key} +
-                                  $innxmit_bytes{$key}) /
+                                  $innxmit_rejected_size{$key}) /
                                     $innxmit_times{$key} / 1024";
 		total		"(total(%innxmit_accepted_size) +
-                                  total(%innxmit_rejected_size) +
-                                  total(%innxmit_bytes)) /
+                                  total(%innxmit_rejected_size)) /
                                     total(%innxmit_times) / 1024";
 	};
 	column {
 		name		"Vol/Art";
 		format		"%9s";
 		value		"bytes(($innxmit_accepted_size{$key} +
-                                        $innxmit_rejected_size{$key} +
-                                        $innxmit_bytes{$key}) /
+                                        $innxmit_rejected_size{$key}) /
                                          ($innxmit_accepted{$key} +
                                           $innxmit_rejected{$key}))";
 		total		"bytes((total(%innxmit_accepted_size) +
-                                        total(%innxmit_rejected_size) +
-        	                        total(%innxmit_bytes)) /
+                                        total(%innxmit_rejected_size)) /
                                          (total(%innxmit_accepted) +
 	                                  total(%innxmit_rejected)))";
 	};
@@ -1889,8 +1883,8 @@ section innxmit_unwanted {
         title   "Sites fed by innxmit rejecting bad articles:";
 	data    "%innxmit_badart";
 	sort    "$innxmit_badart{$b} <=> $innxmit_badart{$a}";
+        numbering true;
         column {
-	numbering true;
                 name          "Server";
                 format        "%-23.23s";
 		value         "$key";
@@ -2222,8 +2216,8 @@ section nnrpd_resource {
 	sort    "$nnrpd_resource_elapsed{$b} <=> $nnrpd_resource_elapsed{$a}";
         column {
                 name          "System";
-                format        "%-40.40s";
-		format_total  "TOTAL: %-33.33s";
+                format        "%-39.39s";
+		format_total  "TOTAL: %-32.32s";
 		value         "$key";
                 total         "$num";
         };
@@ -2388,12 +2382,12 @@ section nnrpd_timeout {
 };
 
 section nnrpd_hierarchy {
-        title   "Newsgroup request counts (by category):";
+        title   "Newsgroup request counts (by hierarchy):";
 	data    "%nnrpd_hierarchy";
 	sort    "$nnrpd_hierarchy{$b} <=> $nnrpd_hierarchy{$a}";
 	numbering true;
         column {
-                name          "Category";
+                name          "Hierarchy";
                 format        "%-64.64s";
 		value         "$key";
 		format_total  "TOTAL: %-57.57s";
diff -Nurp inn-2.6.4/samples/innreport.css inn-2.6.5/samples/innreport.css
--- inn-2.6.4/samples/innreport.css	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/samples/innreport.css	2022-02-18 20:36:57.000000000 +0100
@@ -1,6 +1,4 @@
 /*
-**  $Id: innreport.css 10385 2020-06-13 15:21:43Z iulius $
-**
 **  innreport.css -- for parameter html_css_url in innreport.conf
 **
 **  Style created by Alexander Bartolich, 2008.
diff -Nurp inn-2.6.4/samples/innshellvars.local inn-2.6.5/samples/innshellvars.local
--- inn-2.6.4/samples/innshellvars.local	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/samples/innshellvars.local	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: innshellvars.local 10283 2018-05-14 12:43:05Z iulius $
-##
 ##  Sample innshellvars.local script.
 ##
 ##  It permits adding or overriding variables defined by
diff -Nurp inn-2.6.4/samples/innshellvars.pl.local inn-2.6.5/samples/innshellvars.pl.local
--- inn-2.6.4/samples/innshellvars.pl.local	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/samples/innshellvars.pl.local	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: innshellvars.pl.local 10283 2018-05-14 12:43:05Z iulius $
-##
 ##  Sample innshellvars.pl.local script.
 ##
 ##  It permits adding or overriding variables defined by
diff -Nurp inn-2.6.4/samples/innshellvars.tcl.local inn-2.6.5/samples/innshellvars.tcl.local
--- inn-2.6.4/samples/innshellvars.tcl.local	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/samples/innshellvars.tcl.local	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: innshellvars.tcl.local 10283 2018-05-14 12:43:05Z iulius $
-##
 ##  Sample innshellvars.tcl.local script.
 ##
 ##  It permits adding or overriding variables defined by
diff -Nurp inn-2.6.4/samples/innwatch.ctl inn-2.6.5/samples/innwatch.ctl
--- inn-2.6.4/samples/innwatch.ctl	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/samples/innwatch.ctl	2022-02-18 20:36:57.000000000 +0100
@@ -1,20 +1,18 @@
-##  $Id: innwatch.ctl 10305 2018-12-02 14:21:56Z iulius $
-##
 ##  Sample control file for innwatch.
 ##
 ##  Indicates what to run to test the state of the news system, and what
 ##  to do about it.  Format:
-##	!state!when!condition!test!limit!command!reason/comment
+##      !state!when!condition!test!limit!command!reason/comment
 ##  where
-##	<!>		Delimiter; pick from [!,:@;?].
-##	<state>		State to enter if true.
-##	<when>		States we must be in to match.
-##	<condition>	Command to run to test condition.
-##	<test>		Operator to use in test(1) condition.
-##	<limit>		Value to test against.
-##	<command>	Command for innwatch to perform; use exit,
-##			flush, go, pause, shutdown, skip, or throttle.
-##	<reason>	Used in ctlinnd command (if needed).
+##      <!>             Delimiter; pick from [!,:@;?].
+##      <state>         State to enter if true.
+##      <when>          States we must be in to match.
+##      <condition>     Command to run to test condition.
+##      <test>          Operator to use in test(1) condition.
+##      <limit>         Value to test against.
+##      <command>       Command for innwatch to perform; use exit,
+##                      flush, go, pause, shutdown, skip, or throttle.
+##      <reason>        Used in ctlinnd command (if needed).
 ##
 ##  See the innwatch.ctl man page for more information.
 
@@ -22,7 +20,7 @@
 !!! test -f ${LOCKS}/innd.pid && echo 0 || echo 1 ! eq ! 1 ! exit ! innd dead
 
 ##  If another innwatch has started, exit.
-!!! cat ${LOCKS}/LOCK.${PROGNAME} ! ne ! $$ ! exit ! innwatch replaced
+!!! test -f ${LOCKS}/LOCK.${PROGNAME} && cat ${LOCKS}/LOCK.${PROGNAME} || echo 0 ! ne ! $$ ! exit ! innwatch replaced
 
 ##  Next test the load average.  Above first threshold pause, above higher
 ##  threshold throttle, below restart limit undo whatever was done.
@@ -30,8 +28,8 @@
 !hiload!+ load! uptime | tr -d ,. | awk '{ print $(NF - 2) }' ! gt ! ${INNWATCHHILOAD} ! throttle ! loadav
 !load!+! uptime | tr -d ,. | awk '{ print $(NF - 2) }' ! gt ! ${INNWATCHPAUSELOAD} ! pause ! loadav
 
-## Uncomment these to keep overchan backlog in check.  Assumes your overchan
-## feed is named 'overview!'.
+##  Uncomment these to keep overchan backlog in check.  Assumes your overchan
+##  feed is named 'overview!'.
 #::overblog:ctlinnd feedinfo overview!|awk 'NR==1{print $7}':lt:100000:go:overviewbacklog
 #:overblog:+:ctlinnd feedinfo overview!|awk 'NR==1{print $7}':gt:400000:throttle:overviewbacklog
 
diff -Nurp inn-2.6.4/samples/localgroups inn-2.6.5/samples/localgroups
--- inn-2.6.4/samples/localgroups	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/samples/localgroups	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: localgroups 8441 2009-05-03 22:12:50Z iulius $
-##
 ##  Put your local newsgroups, along with their descriptions,
 ##  in this file (formatted like the newsgroups file) if you want
 ##  them to be recognized by docheckgroups.  They would otherwise
diff -Nurp inn-2.6.4/samples/moderators inn-2.6.5/samples/moderators
--- inn-2.6.4/samples/moderators	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/samples/moderators	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: moderators 8211 2008-12-06 12:56:46Z iulius $
-##
 ##  moderators - Mailing addresses for moderators.
 ##
 ##  Whenever possible, the master moderator database at moderators.isc.org
@@ -22,7 +20,7 @@
 
 ##  Public hierarchies with exceptions.
 aioe.*:%s-newsgroup@aioe.org
-fido7.*:%s@fido7.ru
+fido7.*:%s@fido7.org
 ffm.*:%s@moderators.arcornews.de
 fj.*:%s@moderators.fj-news.org
 medlux.*:%s@news.medlux.ru
diff -Nurp inn-2.6.4/samples/news2mail.cf inn-2.6.5/samples/news2mail.cf
--- inn-2.6.4/samples/news2mail.cf	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/samples/news2mail.cf	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: news2mail.cf 8198 2008-11-30 12:37:18Z iulius $
-##
 ##  Sample news2mail configuration file.
 ##
 ##  Format is:
diff -Nurp inn-2.6.4/samples/newsfeeds.in inn-2.6.5/samples/newsfeeds.in
--- inn-2.6.4/samples/newsfeeds.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/samples/newsfeeds.in	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: newsfeeds.in 9501 2013-07-01 17:32:45Z iulius $
-##
 ##  newsfeeds - determine where Usenet articles get sent
 ##
 ##  Format:
@@ -41,14 +39,13 @@
 ##  feeds and distributions affect *incoming* feeds (including local posts).
 
 # Empty default subscription list, reject all incoming articles (including
-# locally posted articles) with a distribution of "local" or
-# "collabra-internal", accept all others (including articles that do not
-# have a Distribution: header field).
-ME:!*/!local,!collabra-internal::
+# locally posted articles) with a distribution of "local", accept all others
+# (including articles that do not have a Distribution header field).
+ME:!*/!local::
 
 # The same as the above, but would reject all posts that have
 # news.example.com in the path (posts passing through that site).
-#ME/news.example.com:!*/!local,!collabra-internal::
+#ME/news.example.com:!*/!local::
 
 # An empty ME entry is possible, in which case no exclusion patterns
 # will be defined.
@@ -137,6 +134,11 @@ controlchan!\
 #news2mail!:!*:Ac,Tc,Wn*:@bindir@/news2mail
 #list-big-red-ants/lists.ucsd.edu:!*,rec.pets.red-ants:Ap,Tm:news2mail!
 
+# Example of an exploder feed.  See buffchan(8) for more details.
+#foo:news.*:Ap,Tm:buffchan!
+#uunet:*:Ap,Tm:buffchan!
+#buffchan!:*:Tx,WGm*:@bindir@/buffchan -f 2
+
 # Capture all local postings (with a distribution of "foo" and no more
 # than two sites in the Path: header) using a local program (that doesn't
 # come with INN).
diff -Nurp inn-2.6.4/samples/nnrpd.py inn-2.6.5/samples/nnrpd.py
--- inn-2.6.4/samples/nnrpd.py	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/samples/nnrpd.py	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: nnrpd.py 8250 2008-12-23 12:00:46Z iulius $
-##
 ##  This module supplies stub Python functions corresponding to the ones
 ##  provided by nnrpd.  It is not used by the server; it is only here so
 ##  that you can test your filter scripts before loading.
diff -Nurp inn-2.6.4/samples/nnrpd.track inn-2.6.5/samples/nnrpd.track
--- inn-2.6.4/samples/nnrpd.track	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/samples/nnrpd.track	2022-02-18 20:36:57.000000000 +0100
@@ -1,14 +1,17 @@
-##  $Revision: 513 $    
-##  nnrpd.track - file to specify which hosts to be tracked by nnrpd
+##  Configuration file to specify which hosts nnrpd has to track
+##
 ##  Format:
 ##      <host>:<identity>
 ##  Where:
 ##      <host>          Wildcard name or IP address
 ##      <identity>      String to be displayed in the logs
 ##
-## By adding a host to this file, it will be tracked using the
-## nnrpd tracking system if enabled in inn.conf(5). Each read/post
-## will have an entry logged with the <identity> in the log message
+##  By adding a host to this file, it will be tracked using the
+##  nnrpd tracking system if readertrack is set to true in inn.conf(5).
+##  Each post will have an entry associated with <identity> in the log
+##  message recorded to the <pathlog>/tracklogs directory.
 ##
+##  See the nnrpd.track man page for more information.
+
 # nasty.foo.com:nasty@foo.com
 # *.bar.com:VeryNastyClient
diff -Nurp inn-2.6.4/samples/nnrpd_access.py inn-2.6.5/samples/nnrpd_access.py
--- inn-2.6.4/samples/nnrpd_access.py	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/samples/nnrpd_access.py	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: nnrpd_access.py 10282 2018-05-14 12:42:14Z iulius $
-##
 ##  This is a sample access module for the Python nnrpd hook.
 ##
 ##  See the INN Python Filtering and Authentication Hooks documentation
diff -Nurp inn-2.6.4/samples/nnrpd_access_wrapper.py inn-2.6.5/samples/nnrpd_access_wrapper.py
--- inn-2.6.4/samples/nnrpd_access_wrapper.py	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/samples/nnrpd_access_wrapper.py	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: nnrpd_access_wrapper.py 10282 2018-05-14 12:42:14Z iulius $
-##
 ##  Example wrapper for support of old Python authentication scripts,
 ##  by Erik Klavon.
 ##
diff -Nurp inn-2.6.4/samples/nnrpd_auth.py inn-2.6.5/samples/nnrpd_auth.py
--- inn-2.6.4/samples/nnrpd_auth.py	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/samples/nnrpd_auth.py	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: nnrpd_auth.py 10282 2018-05-14 12:42:14Z iulius $
-##
 ##  This is a sample authentication module for the Python nnrpd hook.
 ##
 ##  See the INN Python Filtering and Authentication Hooks documentation
diff -Nurp inn-2.6.4/samples/nnrpd_auth_wrapper.py inn-2.6.5/samples/nnrpd_auth_wrapper.py
--- inn-2.6.4/samples/nnrpd_auth_wrapper.py	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/samples/nnrpd_auth_wrapper.py	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: nnrpd_auth_wrapper.py 10282 2018-05-14 12:42:14Z iulius $
-##
 ##  Example wrapper for support of old Python authentication scripts,
 ##  by Erik Klavon.
 ##
diff -Nurp inn-2.6.4/samples/nnrpd_dynamic.py inn-2.6.5/samples/nnrpd_dynamic.py
--- inn-2.6.4/samples/nnrpd_dynamic.py	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/samples/nnrpd_dynamic.py	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: nnrpd_dynamic.py 10282 2018-05-14 12:42:14Z iulius $
-##
 ##  This is a sample dynamic access module for the Python nnrpd hook.
 ##
 ##  See the INN Python Filtering and Authentication Hooks documentation
diff -Nurp inn-2.6.4/samples/nnrpd_dynamic_wrapper.py inn-2.6.5/samples/nnrpd_dynamic_wrapper.py
--- inn-2.6.4/samples/nnrpd_dynamic_wrapper.py	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/samples/nnrpd_dynamic_wrapper.py	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: nnrpd_dynamic_wrapper.py 10282 2018-05-14 12:42:14Z iulius $
-##
 ##  Example wrapper for support of old Python authentication scripts,
 ##  by Erik Klavon.
 ##
diff -Nurp inn-2.6.4/samples/nntpsend.ctl inn-2.6.5/samples/nntpsend.ctl
--- inn-2.6.4/samples/nntpsend.ctl	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/samples/nntpsend.ctl	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: nntpsend.ctl 10179 2017-09-18 20:13:48Z iulius $
-##
 ##  Sample nntpsend configuration file.
 ##
 ##  Format:
diff -Nurp inn-2.6.4/samples/nocem.ctl inn-2.6.5/samples/nocem.ctl
--- inn-2.6.4/samples/nocem.ctl	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/samples/nocem.ctl	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: nocem.ctl 9513 2013-07-26 20:30:29Z iulius $
-##
 ##  Configuration file for perl-nocem(8).
 ##  This file specifies the NoCeM issuers and notices you want to follow.
 ##
@@ -16,10 +14,9 @@
 ##
 ##  See the perl-nocem man page for more information.
 
-alba-nocem@albasani.net:spam,Content-Based.Detlef-B,Content-Based.Selzer-M
 bleachbot@httrack.com:spam,site
 news@uni-berlin.de:Admincancel
-nl-cancel@a3.xs4all.nl:spam,mmf,binary
 nocem@aioe.org:aioe-spam
 nocem@arcor.de:spam
+nocem@novabbs.com:spam
 pgpmoose@killfile.org:pgpmoose-forged-moderation
diff -Nurp inn-2.6.4/samples/passwd.nntp inn-2.6.5/samples/passwd.nntp
--- inn-2.6.4/samples/passwd.nntp	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/samples/passwd.nntp	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: passwd.nntp 10283 2018-05-14 12:43:05Z iulius $
-##
 ##  Sample passwd.nntp configuration file.
 ##
 ##  It permits authenticating on remote NNTP servers.
diff -Nurp inn-2.6.4/samples/readers.conf inn-2.6.5/samples/readers.conf
--- inn-2.6.4/samples/readers.conf	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/samples/readers.conf	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: readers.conf 7828 2008-05-07 07:58:22Z iulius $
-##
 ##  readers.conf - Access control and configuration for nnrpd
 ##
 ##  Format:
@@ -22,37 +20,26 @@
 ##  details.  Only one of newsgroups or read/post may be used in a single
 ##  access group.
 ##
-##  If the connecting host is not matched by any hosts: parameter of any
+##  If the connecting host is not matched by any "hosts" parameter of any
 ##  auth group, it will be denied access.  auth groups assign an identity
 ##  string to connections, access groups grant privileges to identity
-##  strings matched by their users: parameters.
+##  strings matched by their "users" parameters.
 ##
 ##  In all cases, the last match found is used, so put defaults first.
 ##
 ##  For a news server that allows connections from anyone within a
 ##  particular domain or IP address range, just uncomment the "local" auth
-##  group and the "local" access group below and adjust the hosts: and
-##  default: parameters of the auth group and the users: parameter of the
+##  group and the "local" access group below and adjust the "hosts" and
+##  "default" parameters of the auth group and the "users" parameter of the
 ##  access group for your local network and domain name.  That's all there
 ##  is to it.
 ##
 ##  For more complicated configurations, read the comments on the examples
-##  and also see the examples and explanations in readers.conf(5).  The
-##  examples in readers.conf(5) include setups that require the user to
-##  log in with a username and password (the example in this file only
-##  uses simple host-based authentication).
-##
-##  NOTE: Unlike in previous versions of INN, nnrpd will now refuse any
-##  post from anyone to a moderated newsgroup that contains an Approved:
-##  header unless their access block has an access: key containing the
-##  "A" flag.  This is to prevent abuse of moderated groups, but it means
-##  that if you support any newsgroup moderators, you need to make sure
-##  to add such a line to the access group that affects them.  See the
-##  access group for localhost below for an example.
+##  and also see the examples and explanations in readers.conf(5).
 
 # The only groups enabled by default (the rest of this file is
 # commented-out examples).  This assigns the identity of <localhost> to
-# the local machine
+# the local machine.
 
 auth "localhost" {
     hosts: "localhost, 127.0.0.1, ::1, stdin"
@@ -90,17 +77,28 @@ access "localhost" {
 #    default: "<read>@example.com"
 #}
 
-# This auth group matches the systems at a guest institution that should
-# be allowed to read the example.events.* hierarchy but nothing else.
+# This auth group applies to all authenticated users against the passwords
+# present in the /home/news/db/users file.  See the ckpasswd(8) documentation
+# for how to set up this file.  You may also want to use "ckpasswd" without
+# any argument, in which case PAM authentication is used (as already set in
+# your system).
+# Remember that auth groups are processed from the last one in this file to
+# the first one (bottom up).  As soon as an auth group matches, the user is
+# assigned the corresponding identity.  Besides, his identity may be different
+# when he connects (he has not yet sent any authentication commands), and when
+# he has authenticated himself.
+# Authenticated users will be allowed to read the example.events.* hierarchy
+# but nothing else.  They will be given their username as identity (for the
+# "users" parameter in access groups).
 
 #auth "events-only" {
-#    hosts: "*.example.org"
-#    default: "<events-only>@example.org"
+#    hosts: "*"
+#    auth: "ckpasswd -f /home/news/db/users"
 #}
 
 # Finally, this auth group matches some particular systems which have been
 # abusing the server.  Note that it doesn't assign them an identity at
-# all; the "empty" identity created in this fashion won't match any users:
+# all; the "empty" identity created in this fashion won't match any "users"
 # parameters.  Note also that it's last, so anything matching this entry
 # will take precedent over everything above it.
 
@@ -109,7 +107,7 @@ access "localhost" {
 #}
 
 
-# Now for the access groups.  All of our access groups should have users:
+# Now for the access groups.  All of our access groups should have "users"
 # parameters so there are no access groups that match connections without
 # an identity (such as are generated by the "abusers" entry above).
 # First, the default case of local users, who get to read and post to
@@ -129,8 +127,11 @@ access "localhost" {
 
 # Finally, the events-only people who get to read and post but only to a
 # specific hierarchy.
+# Beware to exclude known identities that should not be given that access
+# group (for instance <localhost> if you have a special auth group for it).
+# The last access block matching the identity in this file is used.
 
 #access "events-only" {
-#    users: "<events-only>@example.org"
+#    users: "*,!<localhost>"
 #    newsgroups: "example.events.*"
 #}
diff -Nurp inn-2.6.4/samples/send-uucp.cf inn-2.6.5/samples/send-uucp.cf
--- inn-2.6.4/samples/send-uucp.cf	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/samples/send-uucp.cf	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: send-uucp.cf 7650 2007-08-20 10:08:33Z iulius $
-##
 ##  Configuration file for send-uucp(8).
 ##
 ##  It specifies to which remote UUCP sites news batches from the outgoing
diff -Nurp inn-2.6.4/samples/startup_innd.pl inn-2.6.5/samples/startup_innd.pl
--- inn-2.6.4/samples/startup_innd.pl	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/samples/startup_innd.pl	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-# 
-# RCSId:        $Id: startup_innd.pl 42 1997-08-04 04:03:43Z gpalmer $
 # Description:	Sample startup code for Perl hooks in INN. This file, after
 #		it's installed in the right spot, will be loaded when
 #		innd starts up. The following functions should be defined
diff -Nurp inn-2.6.4/samples/storage.conf inn-2.6.5/samples/storage.conf
--- inn-2.6.4/samples/storage.conf	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/samples/storage.conf	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: storage.conf 7651 2007-08-20 10:28:34Z iulius $
-##
 ##  Rules for where INN should store incoming articles.
 ##
 ##  This file is used to determine which storage method articles are sent
diff -Nurp inn-2.6.4/scripts/Makefile inn-2.6.5/scripts/Makefile
--- inn-2.6.4/scripts/Makefile	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/scripts/Makefile	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: Makefile 7688 2007-09-20 21:53:55Z iulius $
-##
 ##  Files that can be handled by fixscript (and need to be so handled) need
 ##  a rule to build them from the .in version, and then all files need an
 ##  installation rule.  Do the installation rules individually so as to
diff -Nurp inn-2.6.4/scripts/inncheck.in inn-2.6.5/scripts/inncheck.in
--- inn-2.6.4/scripts/inncheck.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/scripts/inncheck.in	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,6 @@
 #! /usr/bin/perl -w
 # fixscript will replace this line with code to load INN::Config
 
-##  $Id: inncheck.in 10256 2018-03-08 16:16:50Z iulius $
 ##  Sanity-check the configuration of an INN system
 ##  by Brendan Kehoe <brendan@cygnus.com> and Rich $alz.
 
@@ -31,6 +30,7 @@ my %paths = (
     'innd',		"$INN::Config::innd",
     'innddir',		"$INN::Config::pathrun",
     'innfeed.conf',     "$INN::Config::pathetc/innfeed.conf",
+    'inn-radius.conf',  "$INN::Config::pathetc/inn-radius.conf",
     'moderators',	"$INN::Config::pathetc/moderators",
     'most_logs',	"$INN::Config::pathlog",
     'newsbin',		"$INN::Config::pathbin",
@@ -77,6 +77,7 @@ my %modes = (
     'incoming.conf',	[0400, 0660],
     'inn.conf',		[0400, 0664],
     'innfeed.conf',	[0400, 0660],
+    'inn-radius.conf',  [0400, 0660],
     'moderators',	[0400, 0664],
     'newsfeeds',	[0400, 0664],
     'passwd.nntp',	[0400, 0660],
@@ -243,7 +244,7 @@ parse_config
         if ($word eq '}') {
             $parse_error = 0;
             if (scalar @groups == 0) {
-                eprint "$file:$line: extra closing brace";
+                eprint "$file:$line: extra closing brace\n";
             } else {
                 $return{$group->{'name'}} = $group;
                 $group = pop @groups;
diff -Nurp inn-2.6.4/scripts/innmail.in inn-2.6.5/scripts/innmail.in
--- inn-2.6.4/scripts/innmail.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/scripts/innmail.in	2022-02-18 20:36:57.000000000 +0100
@@ -5,7 +5,6 @@
 # Start Date:   Fri, 25 Apr 1997 14:11:23 +0200
 # Project:      INN
 # File:         innmail.pl
-# RCSId:        $Id: innmail.in 9216 2011-07-05 18:30:57Z iulius $
 # Description:  A simple replacement for UCB Mail to avoid nasty security
 #		problems. 
 # 
diff -Nurp inn-2.6.4/scripts/innreport.in inn-2.6.5/scripts/innreport.in
--- inn-2.6.4/scripts/innreport.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/scripts/innreport.in	2022-02-18 20:36:57.000000000 +0100
@@ -6,8 +6,6 @@
 #   innreport:  Perl script to summarize news log files
 #               (with optional HTML output and graphs).
 #
-# $Id: innreport.in 10385 2020-06-13 15:21:43Z iulius $
-#
 # Copyright (c) 1996-2001, Fabien Tassin <fta@sofaraway.org>.
 #
 # Checkpoints tracking was improved by Jim Dutton in 2006.
@@ -16,13 +14,13 @@
 #
 ##########################################################################
 #
-# Usage:  innreport -f config_file [-[no]options] logfile [logfile2 [...]]
+# Usage: innreport -f config_file [-[no]options] logfile [logfile2 ...]
 #   where options are:
 #     -h (or -help)      : this help page
-#     -html              : HTML output
 #     -v                 : display the version number of innreport
 #     -f config_file     : name of the configuration file
 #     -config            : print innreport configuration information
+#     -html              : HTML output
 #     -g                 : want graphs [default]
 #     -graph             : an alias for option -g
 #     -d directory       : directory for Web pages
@@ -31,32 +29,33 @@
 #     -path directory    : an alias for option -p
 #     -w directory       : pictures path (web space)
 #     -webpath directory : an alias for option -w
-#     -i                 : name of index page
-#     -index             : an alias for option -i
-#     -a                 : want to archive HTML results
+#     -i filename        : name of index page
+#     -index filename    : an alias for option -i
+#     -a                 : want to archive HTML results [default]
 #     -archive           : an alias for option -a
 #     -c number          : how many report files to keep (0 = all)
 #     -cycle number      : an alias for option -c
 #     -s char            : separator for filename
 #     -separator char    : an alias for option -s
-#     -unknown           : Unknown entries from news log file
-#     -maxunrec          : Max number of unrecognized line to display
+#     -unknown           : Unknown entries from logs in text output [default]
+#     -html-unknown      : Unknown entries from logs in HTML output [default]
+#     -maxunrec number   : Max number of unrecognized lines to display
 #     -casesensitive     : Case sensitive
 #     -notdaily          : Never perform daily actions
 #
 # Use "no" in front of boolean options to unset them.
-# For example, "-html" is set by default.  Use "-nohtml" to remove this
+# For example, "-graph" is set by default.  Use "-nograph" to remove this
 # feature.
 #
 ##########################################################################
 #
 # ABSOLUTELY NO WARRANTY WITH THIS PACKAGE.  USE IT AT YOUR OWN RISKS.
 #
-# Note:  You need the Perl graphic library GD.pm if you want the graphs.
-#        GD is available on all good CPAN ftp sites.  For instance:
-#            <http://search.cpan.org/dist/GD/GD.pm>.
-#        Note:  innreport will create PNG or GIF files depending upon
-#               the GD version.
+# Note: You need the Perl graphic library GD.pm if you want the graphs.
+#       GD is available on all good CPAN ftp sites.  For instance:
+#           <https://metacpan.org/pod/GD>.
+#       Note: innreport will create PNG or GIF files depending upon
+#             the GD version.
 #
 # Documentation:  for a short explanation of the different options, you
 #        can read the usage (obtained with the -h or -help switch).
@@ -73,13 +72,13 @@
 # ${PATHBIN}/innreport -f ${PATHETC}/innreport.conf ${OLD_SYSLOG} ${OLD_LOG}
 #
 #
-# Report:  Please report bugs (preferably) to the INN mailing list
-#          (see README) or directly to the author (do not forget to
-#          include the result of the "-config" switch, the parameters
-#          passed on the command line and the INN version).
-#          Please also report unknown entries.
-#          Be sure your are using the latest version of this script before
-#          any report.
+# Report: Please report bugs (preferably) to the INN mailing list
+#         (see README).  Do not forget to include the result of the
+#         "-config" switch, the parameters passed on the command line
+#         and the INN version).
+#         Please also report unknown entries.
+#         Be sure your are using the latest version of this script before
+#         any report.
 #
 ##########################################################################
 
@@ -230,7 +229,7 @@ $index = $ref{'index'} if defined $ref{'
 
 $ARCHIVE = &GetValue ($output{'default'}{'archive'})
   if defined $output{'default'}{'archive'};
-$ARCHIVE = $ARCHIVE eq 'true';
+$ARCHIVE = 1 if $ARCHIVE eq 'true';
 $ARCHIVE = 0 if defined $ref{'a'} || defined $ref{'archive'};
 $ARCHIVE = 1 if ($ref{'a'} || $ref{'archive'}) && $HTML;
 $ARCHIVE = 0 unless $HTML;
@@ -354,7 +353,7 @@ my $current_year;
 my $HTML_header = '';
 my $HTML_footer = '';
 
-my $xmax = &GetValue ($output{'default'}{'graph_width'})   # Graph size..
+my $xmax = &GetValue ($output{'default'}{'graph_width'})   # Graph size.
   if defined $output{'default'}{'graph_width'};
 $xmax = 550 unless $xmax;
 
@@ -710,7 +709,7 @@ sub ms2time($) {
   return sprintf '%02d:%02d:%02d.%03d', $hour, $min, $sec, $ms;
 }
 
-# Rotate the archive files..
+# Rotate the archive files.
 sub Rotate {
   # Usage: &Rotate ($max_files, "$directory", "prefix", "suffix");
   my ($max, $rep, $prefix, $suffix) = @_;
@@ -793,10 +792,10 @@ sub ConvDate($$) {
 sub filenamecmp {
   my ($la, $lb) = ($a, $b);
   my ($ya) = $la =~ m/news-notice\.(\d+)\./o;
-  $ya += 100  if $ya < 90; # Try to pacify the year 2000 !
+  $ya += 100  if $ya < 90; # Try to pacify the year 2000!
   $ya += 1900 if $ya < 1900; # xx -> xxxx
   my ($yb) = $lb =~ m/news-notice\.(\d+)\./o;
-  $yb += 100  if $yb < 90; # Try to pacify the year 2000 !
+  $yb += 100  if $yb < 90; # Try to pacify the year 2000!
   $yb += 1900 if $yb < 1900; # xx -> xxxx
 
   $la =~ s/news-notice\.(\d+)\./$ya\./;
@@ -925,9 +924,10 @@ sub GetHTMLFooter() {
 
   return <<EOF;
 <div class="ir-pageFooter">
-  <div class="ir-versionNotice">innreport from $INN::Config::version
-  based on work (c) 1996-1999 by Fabien Tassin
-  &lt;<a href="mailto:fta\@sofaraway.org">fta\@sofaraway.org</a>&gt;$footer
+  <div class="ir-versionNotice"><em>innreport</em> from $INN::Config::version
+  based on initial work (&copy;) 1996-2001 by Fabien Tassin
+  &lt;<a href="mailto:fta\@sofaraway.org">fta\@sofaraway.org</a>&gt;
+  and enhanced by several contributors since then$footer
   </div>
 </div>
 $HTML_footer
@@ -1106,7 +1106,7 @@ sub Make_Index($$$$) {
       foreach $k (keys (%data)) {
 	my @res = split /\|/, $data{$k};
 	my ($year) = $k =~ m/^news-notice\.(\d+)\.\d+\.\d+-\d+.\d+.\d+$HTML_EXTENSION/;
-	next unless $year; # bad filename.. strange.
+	next unless $year; # bad filename... strange.
 	my ($start, $end) =
 	  $res[$date_idx - 1] =~ m/^(\w+\s+\d+ \S+) -- (\w+\s+\d+ \S+)$/o;
         if (!defined($start))
@@ -1126,7 +1126,7 @@ sub Make_Index($$$$) {
           warn "Time range 0 in DB file ignored: $k" if ($DEBUG);
           next;
         }
-	# 31/12 - 1/1 ?
+	# 31/12 - 1/1?
         if ($end_sec < $start_sec) {
           $end_sec = &ConvDate ($year+1 . ' ' . $end, 0);
         }
@@ -1351,7 +1351,7 @@ sub Graph3d {
   $image->line ($ml, $size * $d + $mt,
 		$xmax - $mr - $rx, $size * $d + $mt, $black);
 
-  # Graduations..
+  # Graduations.
   my $nn = 10;
   for $k (1 .. ($nn - 1)) {
     $image->dashedLine ($ml + $rx + $k * ($xmax - $ml - $mr - $rx) / $nn,
@@ -1457,14 +1457,14 @@ sub Histo($$$$$$$$) {
   my $max = 0;
   my $ymax = 300;
   my $nb = 0;
-  # A hugly hack to convert hashes to lists..
+  # A hugly hack to convert hashes to lists
   # and to adjust the first and the last value...
-  # this function should be rewritten..
+  # This function should be rewritten.
   my (@a, @b, $kk);
   foreach $kk (sort keys (%$val1))   {
     if (defined $$val1{$kk}) {
       $nb++;
-      # Arg... the following MUST be removed !!!!!!!!!
+      # Arg... the following MUST be removed!!!!!!!!!
       $$val1{$kk} = $$val1{$kk} / $innreport_inn::inn_flow_time{$kk} * 3600
 	if ($innreport_inn::inn_flow_time{$kk} != 3600) &&
 	   ($innreport_inn::inn_flow_time{$kk} != 0);
@@ -1956,12 +1956,12 @@ sub Chrono {
       $t += $mm;
       $t += $d if $i == 0 || $i == 2 || $i == 4 ||
 		  $i == 6 || $i == 7 || $i == 9 || $i == 11; # 31 days months
-      if ($i == 1) {  # february ?
+      if ($i == 1) {  # February?
 	$t -= 2 * $d;
 	$t += $d unless (1970 + int ($t / $y)) % 4;
       }
       $i++;
-      $i = 0 if $i == 12; # Happy New Year !!
+      $i = 0 if $i == 12; # Happy New Year!!
     }
   }
   else {
@@ -1989,12 +1989,12 @@ sub Chrono {
       $t += $mm;
       $t += $d if ($i == 0 || $i == 2 || $i == 4 ||
 		   $i == 6 || $i == 7 || $i == 9 || $i == 11); # 31 days months
-      if ($i == 1) {  # february ?
+      if ($i == 1) {  # February?
 	$t -= 2 * $d;
 	$t += $d unless (1970 + int ($t / $y)) % 4;
       }
       $i++;
-      $i = 0 if $i == 12; # Happy New Year !!
+      $i = 0 if $i == 12; # Happy New Year!!
     }
   }
 
@@ -2145,25 +2145,25 @@ sub Write_Results {
 	       $output{$report}{'skip'} =~ m/^true$/io;
   my ($TEXT, $HTML, $DOUBLE);
 
-  # Need a text report ?
+  # Need a text report?
   $TEXT = defined $output{$report}{'text'} ? $output{$report}{'text'} :
     (defined $output{'default'}{'text'} ? $output{'default'}{'text'} : '');
   die "Error in config file. Field 'text' is mandatory.\n" unless $TEXT;
   $TEXT = ($TEXT =~ m/^true$/io) ? 1 : 0;
 
-  # Need an html report ?
+  # Need an HTML report?
   if ($HTML_output) {
     $HTML = defined $output{$report}{'html'} ? $output{$report}{'html'} :
       (defined $output{'default'}{'html'} ? $output{'default'}{'html'} : '');
     die "Error in config file. Field 'html' is mandatory.\n" unless $HTML;
     $HTML = ($HTML =~ m/^true$/io) ? 1 : 0;
   }
-  # Double table ?
+  # Double table?
   $DOUBLE = defined $output{$report}{'double'} ?
     $output{$report}{'double'} : 0;
   $DOUBLE = ($DOUBLE =~ m/^true$/io) ? 1 : 0;
 
-  # Want to truncate the report ?
+  # Want to truncate the report?
   my $TOP = defined $output{$report}{'top'} ? $output{$report}{'top'} : -1;
   my $TOP_HTML = defined $output{$report}{'top_html'} ?
                    $output{$report}{'top_html'} : $TOP;
@@ -2264,7 +2264,7 @@ sub Write_Results {
 	  my $whtml = defined $$i{'html'} ? $$i{'html'} : 1;
 	  $whtml = $whtml =~ m/^(1|true)$/io ? 1 : 0;
 
-	  # is it the primary key ?
+	  # Is it the primary key?
 	  $p = 0;
 	  $p = 1 if defined $$i{'primary'} && $$i{'primary'} =~ m/true/;
 
@@ -2575,7 +2575,7 @@ sub Write_Results {
 	  }
 	}
         elsif ($type eq 'piechart') {
-	  print "Sorry, graph type 'piechart' not supported yet..\n";
+	  print "Sorry, graph type 'piechart' not supported yet.\n";
 	}
         else {
 	  die "Error in section $report section 'graph'. " .
@@ -2935,8 +2935,8 @@ sub Usage {
 
 sub Version {
   print "\nThis is innreport from $INN::Config::version\n\n";
-  print "Copyright 1996-1999, Fabien Tassin <fta\@sofaraway.org>\n";
-  print "Enhanced by several contributors since then\n";
+  print "Copyright 1996-2001, Fabien Tassin <fta\@sofaraway.org>.\n";
+  print "Enhanced by several contributors since then.\n";
   exit 0;
 }
 
@@ -2963,7 +2963,7 @@ sub Summary {
   print "    case_sensitive=" .
                       ($CASE_SENSITIVE?"yes":"no") . ", want_unknown=" .
 		      ($WANT_UNKNOWN?"yes":"no") .
-                      ", max_unrecog=$MAX_UNRECOGNIZED\n";
+                      ", max_unrecognized=$MAX_UNRECOGNIZED\n";
   print "  Paths:\n";
   print "    html_dir=$HTML_dir\n";
   print "    img_dir=$IMG_dir\n";
@@ -2973,8 +2973,7 @@ sub Summary {
   print "    perl version $::Config{baserev} "
             . "patchlevel $::Config{patchlevel} "
             . "subversion $::Config{subversion}\n";
-  print "    libperl=$::Config{libperl}, useshrplib=$::Config{useshrplib}, "
-       . "bincompat3=$::Config{bincompat3}\n";
+  print "    libperl=$::Config{libperl}, useshrplib=$::Config{useshrplib}\n";
   print "    osname=$::Config{osname}, osvers=$::Config{osvers}, "
         . "archname=$::Config{archname}\n";
   print "    uname=$::Config{myuname}\n\n";
diff -Nurp inn-2.6.4/scripts/innreport_inn.pm inn-2.6.5/scripts/innreport_inn.pm
--- inn-2.6.4/scripts/innreport_inn.pm	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/scripts/innreport_inn.pm	2022-02-18 20:36:57.000000000 +0100
@@ -1,15 +1,10 @@
 ##########################################################################
-# INN module for innreport (3.*).
-#
-# $Id: innreport_inn.pm 10442 2020-12-09 21:04:31Z iulius $
-#
-# Sample file tested with INN 2.5, 2.4, 2.3, 2.2, 1.7.2 and 1.5.1.
+# INN module for innreport.
 #
 # (c) 1997-2001 by Fabien Tassin <fta@sofaraway.org>.
-# See innreport for more information.
-#
-# Version 3.1.0.
+# Enhanced by several contributors since then.
 #
+# See innreport documentation for more information.
 ##########################################################################
 
 # TODO: add the map file.
@@ -875,6 +870,8 @@ sub collect($$$$$$) {
     return 1 if $left =~ /^filter: Reloading bad files/o;
     return 1 if $left =~ /^filter: Saved EMP database/o;
     return 1 if $left =~ /^filter: Restored EMP database/o;
+    # PyClean status reports
+    return 1 if $left =~ /^python: pyclean successfully hooked into INN/o;
   }
   ########
   ## innfeed
@@ -1165,19 +1162,19 @@ sub collect($$$$$$) {
       my $server = $1;
       $server = lc $server unless $CASE_SENSITIVE;
       $innxmit_ihfail{$server} = 1;
-      if ($left = /436 \S+ NNTP \S+ out of space/o) {
+      if ($left =~ /436 \S+ NNTP \S+ out of space/o) {
 	$innxmit_nospace{$server}++;
 	return 1;
       }
-      if ($left = /400 \S+ space/o) {
+      if ($left =~ /400 \S+ space/o) {
 	$innxmit_nospace{$server}++;
 	return 1;
       }
-      if ($left = /400 Bad file/o) {
+      if ($left =~ /400 Bad file/o) {
 	$innxmit_crefused{$server}++;
 	return 1;
       }
-      if ($left = /480 Transfer permission denied/o) {
+      if ($left =~ /480 Transfer permission denied/o) {
 	$innxmit_crefused{$server}++;
 	return 1;
       }
@@ -1664,6 +1661,15 @@ sub collect($$$$$$) {
       $nnrpd_timeout{$cust}++;
       return 1;
     }
+    # can't read (without any other argument, it's a timeout)
+    if ($left =~ /(\S+) can\'t read$/o) {
+      my $cust = $1;
+      $cust = lc $cust unless $CASE_SENSITIVE;
+      my $dom = &host2dom($cust);
+      $nnrpd_dom_timeout{$dom}++;
+      $nnrpd_timeout{$cust}++;
+      return 1;
+    }
     # can't read: Connection timed out
     if ($left =~ /(\S+) can\'t read: Connection timed out$/o) {
       my $cust = $1;
@@ -1749,10 +1755,9 @@ sub collect($$$$$$) {
     return 1 if $left =~ /^\S+ newnews /o;
     # cant fopen (ignored too)
     return 1 if $left =~ /^\S+ cant fopen /o;
-    # can't read: No route to host
-    return 1 if $left =~ /can\'t read: No route to host/o;
-    # can't read: Broken pipe
-    return 1 if $left =~ /can\'t read: Broken pipe/o;
+    # can't read: ... (skip any English or localized strings not already
+    # dealt with above)
+    return 1 if $left =~ /can\'t read: /o;
     # eof in post
     return 1 if $left =~ /^\S+ EOF in post$/o;
     # ioctl: ...
diff -Nurp inn-2.6.4/scripts/innshellvars.in inn-2.6.5/scripts/innshellvars.in
--- inn-2.6.4/scripts/innshellvars.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/scripts/innshellvars.in	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 #! /bin/sh
-##  $Id: innshellvars.in 10245 2018-02-16 21:11:59Z iulius $
 ##  Set up any and all shell variables that an INN shell script
 ##  might need.  Also sets umask.
 
diff -Nurp inn-2.6.4/scripts/innshellvars.pl.in inn-2.6.5/scripts/innshellvars.pl.in
--- inn-2.6.4/scripts/innshellvars.pl.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/scripts/innshellvars.pl.in	2022-02-18 20:36:57.000000000 +0100
@@ -6,7 +6,6 @@
 # Start Date:   Sat, 24 Aug 1996 22:08:19 +0200
 # Project:      INN 
 # File:         innshellvars.pl
-# RCSId:        $Id: innshellvars.pl.in 10245 2018-02-16 21:11:59Z iulius $
 # Description:  Set up any and all variables that an INN perl script
 #               might need.  Also sets umask.
 #
diff -Nurp inn-2.6.4/scripts/innshellvars.tcl.in inn-2.6.5/scripts/innshellvars.tcl.in
--- inn-2.6.4/scripts/innshellvars.tcl.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/scripts/innshellvars.tcl.in	2022-02-18 20:36:57.000000000 +0100
@@ -4,7 +4,6 @@
 # Start Date:   Sat, 24 Aug 1996 23:45:34 +0200
 # Project:      INN
 # File:         innshellvars.tcl
-# RCSId:        $Id: innshellvars.tcl.in 10245 2018-02-16 21:11:59Z iulius $
 # Description:  Set up any and all variables that an INN tcl script
 #               might need.  Also sets umask.
 
diff -Nurp inn-2.6.4/scripts/innstat.in inn-2.6.5/scripts/innstat.in
--- inn-2.6.4/scripts/innstat.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/scripts/innstat.in	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,6 @@
 #! /bin/sh
 # fixscript will replace this line with code to load innshellvars
 
-##  $Id: innstat.in 10196 2017-11-28 20:48:45Z iulius $
 ##  Display status of INN.
 ##  Written by Landon Curt Noll <chongo@toad.com>.
 
diff -Nurp inn-2.6.4/scripts/innupgrade.in inn-2.6.5/scripts/innupgrade.in
--- inn-2.6.4/scripts/innupgrade.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/scripts/innupgrade.in	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,5 @@
 #! /usr/bin/perl -w -T
 
-##  $Id: innupgrade.in 9477 2013-05-24 16:21:15Z iulius $
-##
 ##  Convert INN configuration files to the current syntax.
 ##
 ##  Intended to be run during a major version upgrade, this script tries to
@@ -70,7 +68,14 @@ use Getopt::Long qw(GetOptions);
 
            'motd.news'        => 'motd.nnrpd',       # Rename in INN 2.5.3.
            'radius.conf'      => 'inn-radius.conf',  # Rename in INN 2.5.4.
-           'radius.conf.5'    => ''
+           'radius.conf.5'    => '',
+           'clientlib.3'      => '',                 # Removed in INN 2.6.5.
+           'dbz.3'            => '',
+           'inndcomm.3'       => '',
+           'list.3'           => '',
+           'qio.3'            => '',
+           'tst.3'            => '',
+           'uwildmat.3'       => '',
           );
 
 # Clean up inn.conf for the new parser in INN 2.4.  Null keys (keys without
diff -Nurp inn-2.6.4/scripts/innwatch.in inn-2.6.5/scripts/innwatch.in
--- inn-2.6.4/scripts/innwatch.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/scripts/innwatch.in	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,6 @@
 #! /bin/sh
 # fixscript will replace this line with code to load innshellvars
 
-##  $Id: innwatch.in 9729 2014-10-03 16:27:33Z iulius $
 ##  Watch the state of the system relative to the news subsystem.
 ##  As controlled by the control file, when space or inodes are almost
 ##  exhausted, innd is throttled or paused, similarly if the load is
diff -Nurp inn-2.6.4/scripts/news.daily.in inn-2.6.5/scripts/news.daily.in
--- inn-2.6.4/scripts/news.daily.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/scripts/news.daily.in	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,6 @@
 #! /bin/sh
 # fixscript will replace this line with code to load innshellvars
 
-##  $Id: news.daily.in 9633 2014-05-14 17:55:01Z iulius $
 ##  Daily news maintenance.
 ##  Optional arguments:
 ##      delayrm              Delay unlink files, then do it quicker (expire -z)
diff -Nurp inn-2.6.4/scripts/rc.news.in inn-2.6.5/scripts/rc.news.in
--- inn-2.6.4/scripts/rc.news.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/scripts/rc.news.in	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,6 @@
 #! /bin/sh
 # fixscript will replace this line with code to load innshellvars
 
-##  $Revision: 10505 $
 ##  News boot script.  Runs as "news" user.  Run from rc.whatever as:
 ##     su news -s /bin/sh -c /path/to/rc.news >/dev/console
 ##
@@ -85,6 +84,12 @@ MAIL="${MAILCMD} -s 'Boot-time Usenet wa
 ##  RFLAG is set below; set INNFLAGS in inn.conf(5)
 RFLAG=""
 
+##  Be sure ${PATHRUN} exists and is writable.
+if [ ! -w ${PATHRUN} ] ; then
+    echo "No ${PATHRUN} directory writable by the news user found!"
+    exit 1
+fi
+
 ##  Clean shutdown or already running?
 if [ -f ${SERVERPID} ] ; then
     if kill -0 `cat ${SERVERPID}` 2>/dev/null; then
diff -Nurp inn-2.6.4/scripts/scanlogs.in inn-2.6.5/scripts/scanlogs.in
--- inn-2.6.4/scripts/scanlogs.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/scripts/scanlogs.in	2022-02-18 20:36:57.000000000 +0100
@@ -1,8 +1,6 @@
 #! /bin/sh
 # fixscript will replace this line with code to load innshellvars
 
-##  $Id: scanlogs.in 9903 2015-06-20 17:20:46Z iulius $
-##
 ##  Summarize INN log files and rotate them.
 ##  Used by news.daily.
 ##
diff -Nurp inn-2.6.4/scripts/simpleftp.in inn-2.6.5/scripts/simpleftp.in
--- inn-2.6.4/scripts/simpleftp.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/scripts/simpleftp.in	2022-02-18 20:36:57.000000000 +0100
@@ -2,8 +2,6 @@
 
 # simpleftp - Rudimentary FTP client.
 #
-# $Id: simpleftp.in 9196 2011-04-16 08:21:13Z iulius $
-#
 # Author: David Lawrence <tale@isc.org>.
 #         Rewritten by Julien Elie to use Net::FTP.
 #
diff -Nurp inn-2.6.4/scripts/tally.control.in inn-2.6.5/scripts/tally.control.in
--- inn-2.6.4/scripts/tally.control.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/scripts/tally.control.in	2022-02-18 20:36:57.000000000 +0100
@@ -1,8 +1,6 @@
 #! /bin/sh
 # fixscript will replace this line with code to load innshellvars
 
-##  $Id: tally.control.in 7658 2007-08-26 08:20:53Z iulius $
-##
 ##  Tally and update the newgroup/rmgroup control logs.
 ##
 ##  Merge in a log that contains newgroup/rmgroup control messages so that
diff -Nurp inn-2.6.4/scripts/writelog.in inn-2.6.5/scripts/writelog.in
--- inn-2.6.4/scripts/writelog.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/scripts/writelog.in	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,6 @@
 #! /bin/sh
 # fixscript will replace this line with code to load innshellvars
 
-##  $Revision: 2677 $
 ##  Write a log file entry, by either mailing it or writing it safely.
 ##  Usage:
 ##	writelog name text... <input
diff -Nurp inn-2.6.4/site/Makefile inn-2.6.5/site/Makefile
--- inn-2.6.4/site/Makefile	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/site/Makefile	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,3 @@
-##  $Revision: 9832 $
 include ../Makefile.global
 top = ..
 
@@ -114,7 +113,7 @@ diff:
 
 ##  Show changes between files here and installed versions.
 diff-installed:
-	@$(MAKE) COPY_RPRI=-${DIFF} COPY_RPUB=-${DIFF} COPY_XPRI=-${DIFF} COPY_XPUB=-${DIFF} $(ALL_INSTALLED)
+	@$(MAKE) COPY_RPRI=-${DIFF} COPY_RPUB=-${DIFF} COPY_XPRI=-${DIFF} COPY_XPUB=-${DIFF} COPY_WXPUB=-${DIFF} $(ALL_INSTALLED)
 
 ##  Show what would be copied from samples directory.
 what:
@@ -184,6 +183,7 @@ COPY_RPRI	= $(CP_RPRI)
 COPY_RPUB	= $(CP_RPUB)
 COPY_XPRI	= $(CP_XPRI)
 COPY_XPUB	= $(CP_XPUB)
+COPY_WXPUB	= $(CP_WXPUB)
 
 ##  Files to copy.
 $D$(PATH_INNDHOSTS):	incoming.conf	; $(COPY_RPRI) $? $@
@@ -204,9 +204,9 @@ $D$(PATHETC)/nntpsend.ctl: nntpsend.ctl
 $D$(PATHETC)/news2mail.cf: news2mail.cf	; $(COPY_RPUB) $? $@
 $D$(PATHETC)/innreport.conf: innreport.conf	; $(COPY_RPUB) $? $@
 $D$(PATHHTTP)/innreport.css: innreport.css	; $(COPY_RPUB) $? $@
-$D$(PATHETC)/innshellvars.local: innshellvars.local	; $(COPY_XPUB) $? $@
-$D$(PATHETC)/innshellvars.pl.local: innshellvars.pl.local	; $(COPY_XPUB) $? $@
-$D$(PATHETC)/innshellvars.tcl.local: innshellvars.tcl.local	; $(COPY_XPUB) $? $@
+$D$(PATHETC)/innshellvars.local: innshellvars.local	; $(COPY_WXPUB) $? $@
+$D$(PATHETC)/innshellvars.pl.local: innshellvars.pl.local	; $(COPY_WXPUB) $? $@
+$D$(PATHETC)/innshellvars.tcl.local: innshellvars.tcl.local	; $(COPY_WXPUB) $? $@
 $D$(PATHETC)/localgroups: localgroups	; $(COPY_RPUB) $? $@
 $D$(PATH_STORAGECONF): storage.conf	; $(COPY_RPUB) $? $@
 $D$(PATH_CYCBUFFCONFIG): cycbuff.conf	; $(COPY_RPUB) $? $@
diff -Nurp inn-2.6.4/site/getsafe.sh inn-2.6.5/site/getsafe.sh
--- inn-2.6.4/site/getsafe.sh	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/site/getsafe.sh	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 #! /bin/sh 
-##  $Revision: 847 $
 ##
 ##  Safely get a file from the samples directory.  Usage:
 ##	getsafe <sample> <localfile>
diff -Nurp inn-2.6.4/storage/Makefile inn-2.6.5/storage/Makefile
--- inn-2.6.4/storage/Makefile	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/storage/Makefile	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: Makefile 10423 2020-11-22 21:15:35Z iulius $
-
 include ../Makefile.global
 
 # This version number should be increased with every change to the library
@@ -8,7 +6,7 @@ include ../Makefile.global
 # recover from make update.  We can't use .OLD extensions for the shared
 # library since ldconfig will think .OLD sorts after the regular library and
 # will point the binaries at the old library.
-LTVERSION     = 3:4:0
+LTVERSION     = 3:5:0
 
 top	      = ..
 CFLAGS	      = $(GCFLAGS) -I. $(BDB_CPPFLAGS)
diff -Nurp inn-2.6.4/storage/buffindexed/buffindexed.c inn-2.6.5/storage/buffindexed/buffindexed.c
--- inn-2.6.4/storage/buffindexed/buffindexed.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/storage/buffindexed/buffindexed.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: buffindexed.c 10513 2021-01-15 22:34:56Z iulius $
-**
+/*
 **  Overview buffer and index method.
 */
 
@@ -315,7 +314,7 @@ static off_t mmapwrite(int fd, void *buf
   if ((addr = mmap(NULL, len, PROT_READ|PROT_WRITE, MAP_SHARED, fd, mmapoffset)) == MAP_FAILED) {
     return -1;
   }
-  memcpy(addr+pagefudge, buf, nbyte);
+  memcpy((char *)addr+pagefudge, buf, nbyte);
   munmap(addr, len);
   return nbyte;
 }
diff -Nurp inn-2.6.4/storage/buffindexed/buffindexed.h inn-2.6.5/storage/buffindexed/buffindexed.h
--- inn-2.6.4/storage/buffindexed/buffindexed.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/storage/buffindexed/buffindexed.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,6 +1,3 @@
-/*  $Id: buffindexed.h 9782 2015-01-07 21:34:22Z iulius $
-*/
-
 #ifndef _BUFFINDEXED_H_
 #define _BUFFINDEXED_H_
 
diff -Nurp inn-2.6.4/storage/buffindexed/shmem.c inn-2.6.5/storage/buffindexed/shmem.c
--- inn-2.6.4/storage/buffindexed/shmem.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/storage/buffindexed/shmem.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,8 +1,4 @@
-/*
-** $Id: shmem.c 10305 2018-12-02 14:21:56Z iulius $
-*/
-
-/* shared memory control utility */
+/* Shared memory control utility. */
 
 #include "config.h"
 #include "clibrary.h"
@@ -28,10 +24,15 @@
 # define MAP_FAILED ((caddr_t)-1)
 #endif
 
-static int smcGetSemaphore(const char *name)
+/* Only use these 6 useful and portable symbolic constants.
+ * Setting the executable bit does not work on all systems, like FreeBSD. */
+#define SEM_RWPERMS (S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH)
+
+static int
+smcGetSemaphore(const char *name)
 {
-    key_t kt = ftok( (char *)name, 0 );
-    int   id = semget(kt, 0, S_IRWXU|S_IRWXG|S_IRWXO);
+    key_t kt = ftok((char *) name, 0);
+    int id = semget(kt, 0, SEM_RWPERMS);
 
     if (id < 0) {
         syswarn("semget failed to get semaphore for %s", name);
@@ -42,12 +43,12 @@ static int smcGetSemaphore(const char *n
 static int smcCreateSemaphore(const char *name)
 {
     key_t kt = ftok( (char *)name, 0 );
-    int   id = semget(kt, 2, IPC_CREAT|S_IRWXU|S_IRWXG|S_IRWXO);
+    int id = semget(kt, 2, IPC_CREAT | SEM_RWPERMS);
 
     if (id < 0) {
         if (errno == EACCES || errno == EINVAL) {
             /* looks like a wrong semaphore exists. remove it. */
-            id = semget(kt, 0, S_IRWXU|S_IRWXG|S_IRWXO);
+            id = semget(kt, 0, SEM_RWPERMS);
             if (id < 0) {
                 /* couldn't even retrieve it. */
                 syswarn("cant get semaphore using %s", name);
@@ -70,7 +71,7 @@ static int smcCreateSemaphore(const char
             }
 #endif
             /* and retry creating it */
-            id = semget(kt, 2, IPC_CREAT|S_IRWXU|S_IRWXG|S_IRWXO);
+            id = semget(kt, 2, IPC_CREAT | SEM_RWPERMS);
         }
     }
     if (id < 0)
@@ -150,7 +151,7 @@ smcd_t* smcGetShmemBuffer(const char *na
     key_t   fk = ftok( (char *)name, 0 );
 
     /* create shared memory buffer */
-    shmid = shmget(fk, size, S_IRWXU|S_IRGRP|S_IROTH);
+    shmid = shmget(fk, size, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
     if (shmid < 0) {
         /* this is normal */
         return NULL;
@@ -198,10 +199,11 @@ smcd_t* smcCreateShmemBuffer(const char
     key_t   fk = ftok( (char *)name, 0 );
 
     /* create shared memory buffer */
-    shmid = shmget(fk, size, IPC_CREAT|S_IRWXU|S_IRGRP|S_IROTH);
+    shmid =
+        shmget(fk, size, IPC_CREAT | S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
     if (shmid < 0) {
         /* try to get existing segment */
-        shmid = shmget(fk, 4, S_IRWXU|S_IRGRP|S_IROTH);
+        shmid = shmget(fk, 4, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
         if (shmid >= 0) {
             syswarn("shmem segment already exists name %s", name);
             /* try to delete old segment */
@@ -210,7 +212,8 @@ smcd_t* smcCreateShmemBuffer(const char
                 return NULL;
             }
             notice("recreating another shmem segment");
-            shmid = shmget(fk, size, IPC_CREAT|S_IRWXU|S_IRGRP|S_IROTH);
+            shmid = shmget(fk, size,
+                           IPC_CREAT | S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
         }
     }
     if (shmid < 0) {
diff -Nurp inn-2.6.4/storage/buffindexed/shmem.h inn-2.6.5/storage/buffindexed/shmem.h
--- inn-2.6.4/storage/buffindexed/shmem.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/storage/buffindexed/shmem.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,5 @@
 /*
-** shared memory control utility
+** Shared memory control utility.
 */
 
 #ifndef SHMEM_H
diff -Nurp inn-2.6.4/storage/buildconfig.in inn-2.6.5/storage/buildconfig.in
--- inn-2.6.4/storage/buildconfig.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/storage/buildconfig.in	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,5 @@
 #! /usr/bin/perl
 
-##  $Id: buildconfig.in 8817 2009-11-17 18:57:19Z iulius $
-##
 ##  Generate linkage code and makefiles for storage and overview methods.
 ##
 ##  Goes through all subdirectories of the current directory and finds
diff -Nurp inn-2.6.4/storage/cnfs/cnfs-private.h inn-2.6.5/storage/cnfs/cnfs-private.h
--- inn-2.6.4/storage/cnfs/cnfs-private.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/storage/cnfs/cnfs-private.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: cnfs-private.h 10397 2020-11-12 20:22:51Z iulius $
-**
+/*
 **  CNFS disk/file mode header file.
 */
 
diff -Nurp inn-2.6.4/storage/cnfs/cnfs.c inn-2.6.5/storage/cnfs/cnfs.c
--- inn-2.6.4/storage/cnfs/cnfs.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/storage/cnfs/cnfs.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: cnfs.c 10342 2019-05-30 14:18:48Z iulius $
-**
+/*
 **  Storage manager module for Cyclic News File System method.
 */
 
diff -Nurp inn-2.6.4/storage/cnfs/cnfs.h inn-2.6.5/storage/cnfs/cnfs.h
--- inn-2.6.4/storage/cnfs/cnfs.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/storage/cnfs/cnfs.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: cnfs.h 8817 2009-11-17 18:57:19Z iulius $
-**
+/*
 **  Storage manager module header for Cyclic News File System method.
 */
 
diff -Nurp inn-2.6.4/storage/expire.c inn-2.6.5/storage/expire.c
--- inn-2.6.4/storage/expire.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/storage/expire.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: expire.c 10413 2020-11-21 09:15:14Z iulius $
-**
+/*
 **  Code for overview-driven expiration.
 **
 **  In order to expire on a per-newsgroup (instead of per-storage-class)
diff -Nurp inn-2.6.4/storage/interface.c inn-2.6.5/storage/interface.c
--- inn-2.6.4/storage/interface.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/storage/interface.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: interface.c 9353 2011-08-20 20:08:29Z iulius $
-**
+/*
 **  Storage Manager interface.
 */
 #include "config.h"
diff -Nurp inn-2.6.4/storage/interface.h inn-2.6.5/storage/interface.h
--- inn-2.6.4/storage/interface.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/storage/interface.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: interface.h 8817 2009-11-17 18:57:19Z iulius $
-**
+/*
 **  Storage Manager interface header
 */
 
diff -Nurp inn-2.6.4/storage/ov.c inn-2.6.5/storage/ov.c
--- inn-2.6.4/storage/ov.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/storage/ov.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: ov.c 9201 2011-06-11 06:01:07Z iulius $
-**
+/*
 **  The implementation of the overview API.
 **
 **  This code handles calls to the overview API by passing them along to the
diff -Nurp inn-2.6.4/storage/ovdb/ovdb-private.h inn-2.6.5/storage/ovdb/ovdb-private.h
--- inn-2.6.4/storage/ovdb/ovdb-private.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/storage/ovdb/ovdb-private.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,6 +1,3 @@
-/*  $Id: ovdb-private.h 10306 2018-12-02 14:26:13Z iulius $
-*/
-
 #ifdef HAVE_BDB
 
 #include <db.h>
diff -Nurp inn-2.6.4/storage/ovdb/ovdb.c inn-2.6.5/storage/ovdb/ovdb.c
--- inn-2.6.4/storage/ovdb/ovdb.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/storage/ovdb/ovdb.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: ovdb.c 10513 2021-01-15 22:34:56Z iulius $
- *
+/*
  * ovdb.c
  * ovdb 2.00
  * Overview storage using Berkeley DB 4.4 or higher
@@ -1265,10 +1264,10 @@ bool ovdb_getlock(int mode)
 	lockfd = open(lockfn,
 		mode == OVDB_LOCK_NORMAL ? O_RDWR : O_CREAT|O_RDWR, 0660);
 	if(lockfd == -1) {
-	    free(lockfn);
 	    if(errno == ENOENT)
                 warn("OVDB: can not open database unless ovdb_monitor is"
-                     " running");
+                     " running; %s not found", lockfn);
+            free(lockfn);
 	    return false;
 	}
 	fdflag_close_exec(lockfd, true);
diff -Nurp inn-2.6.4/storage/ovdb/ovdb.h inn-2.6.5/storage/ovdb/ovdb.h
--- inn-2.6.4/storage/ovdb/ovdb.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/storage/ovdb/ovdb.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,6 +1,3 @@
-/*  $Id: ovdb.h 9782 2015-01-07 21:34:22Z iulius $
-*/
-
 #ifndef _OVDB_H_
 #define _OVDB_H_
 
diff -Nurp inn-2.6.4/storage/overdata.c inn-2.6.5/storage/overdata.c
--- inn-2.6.4/storage/overdata.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/storage/overdata.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: overdata.c 9019 2010-03-19 21:27:15Z iulius $
-**
+/*
 **  Overview data processing.
 **
 **  Here be routines for creating and checking the overview data, the
diff -Nurp inn-2.6.4/storage/overview.c inn-2.6.5/storage/overview.c
--- inn-2.6.4/storage/overview.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/storage/overview.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: overview.c 10513 2021-01-15 22:34:56Z iulius $
-**
+/*
 **  The implementation of the overview API.
 **
 **  This code handles calls to the overview API by passing them along to the
diff -Nurp inn-2.6.4/storage/ovinterface.h inn-2.6.5/storage/ovinterface.h
--- inn-2.6.4/storage/ovinterface.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/storage/ovinterface.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: ovinterface.h 10413 2020-11-21 09:15:14Z iulius $
-**
+/*
 **  Overview interface header
 */
 
diff -Nurp inn-2.6.4/storage/timecaf/caf.c inn-2.6.5/storage/timecaf/caf.c
--- inn-2.6.4/storage/timecaf/caf.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/storage/timecaf/caf.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: caf.c 10342 2019-05-30 14:18:48Z iulius $
-**
+/*
 **  Library routines needed for handling CAF (Crunched Article Files)
 **  Written by Richard Todd (rmtodd@mailhost.ecn.uoknor.edu) 3/24/96,
 **  modified extensively since then.  Altered to work with storage manager
diff -Nurp inn-2.6.4/storage/timecaf/caf.h inn-2.6.5/storage/timecaf/caf.h
--- inn-2.6.4/storage/timecaf/caf.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/storage/timecaf/caf.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: caf.h 8625 2009-09-07 09:05:20Z iulius $
-**
+/*
 ** Declarations needed for handling CAF (Crunched Article Files)
 ** Written by Richard Todd (rmtodd@mailhost.ecn.uoknor.edu) 3/24/96
 */
diff -Nurp inn-2.6.4/storage/timecaf/timecaf.c inn-2.6.5/storage/timecaf/timecaf.c
--- inn-2.6.4/storage/timecaf/timecaf.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/storage/timecaf/timecaf.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: timecaf.c 9870 2015-05-17 17:23:07Z iulius $
-**
+/*
 **  Like the timehash storage method (and heavily inspired by it), but uses
 **  the CAF library to store multiple articles in a single file.
 */
diff -Nurp inn-2.6.4/storage/timecaf/timecaf.h inn-2.6.5/storage/timecaf/timecaf.h
--- inn-2.6.4/storage/timecaf/timecaf.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/storage/timecaf/timecaf.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: timecaf.h 8817 2009-11-17 18:57:19Z iulius $
-**
+/*
 **  timecaf -- like the timehash storage method (and heavily inspired
 **  by it), but uses the CAF library to store multiple articles in a
 **  single file.
diff -Nurp inn-2.6.4/storage/timehash/timehash.c inn-2.6.5/storage/timehash/timehash.c
--- inn-2.6.4/storage/timehash/timehash.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/storage/timehash/timehash.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: timehash.c 10184 2017-11-04 15:34:52Z iulius $
-**
+/*
 **  Storage manager module for timehash method.
 */
 
diff -Nurp inn-2.6.4/storage/timehash/timehash.h inn-2.6.5/storage/timehash/timehash.h
--- inn-2.6.4/storage/timehash/timehash.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/storage/timehash/timehash.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: timehash.h 8817 2009-11-17 18:57:19Z iulius $
-**
+/*
 **  Storage manager module header for timehash method.
 */
 
diff -Nurp inn-2.6.4/storage/tradindexed/tdx-cache.c inn-2.6.5/storage/tradindexed/tdx-cache.c
--- inn-2.6.4/storage/tradindexed/tdx-cache.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/storage/tradindexed/tdx-cache.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: tdx-cache.c 8993 2010-03-14 20:41:19Z iulius $
-**
+/*
 **  Cache functions for open overview data files.
 **
 **  This code maintains a cache of open overview data files to avoid some of
diff -Nurp inn-2.6.4/storage/tradindexed/tdx-data.c inn-2.6.5/storage/tradindexed/tdx-data.c
--- inn-2.6.4/storage/tradindexed/tdx-data.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/storage/tradindexed/tdx-data.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: tdx-data.c 9659 2014-08-30 08:08:11Z iulius $
-**
+/*
 **  Overview data file handling for the tradindexed overview method.
 **
 **  Implements the handling of the .IDX and .DAT files for the tradindexed
diff -Nurp inn-2.6.4/storage/tradindexed/tdx-group.c inn-2.6.5/storage/tradindexed/tdx-group.c
--- inn-2.6.4/storage/tradindexed/tdx-group.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/storage/tradindexed/tdx-group.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: tdx-group.c 9859 2015-05-14 13:25:42Z iulius $
-**
+/*
 **  Group index handling for the tradindexed overview method.
 **
 **  Implements the handling of the group.index file for the tradindexed
diff -Nurp inn-2.6.4/storage/tradindexed/tdx-private.h inn-2.6.5/storage/tradindexed/tdx-private.h
--- inn-2.6.4/storage/tradindexed/tdx-private.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/storage/tradindexed/tdx-private.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: tdx-private.h 8458 2009-05-12 06:12:42Z iulius $
-**
+/*
 **  Private APIs for the tradindexed overview method.
 */
 
diff -Nurp inn-2.6.4/storage/tradindexed/tdx-structure.h inn-2.6.5/storage/tradindexed/tdx-structure.h
--- inn-2.6.4/storage/tradindexed/tdx-structure.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/storage/tradindexed/tdx-structure.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: tdx-structure.h 9857 2015-05-14 13:19:07Z iulius $
-**
+/*
 **  Data structures for the tradindexed overview method.
 **
 **  This header defines the data structures used by the tradindexed overview
diff -Nurp inn-2.6.4/storage/tradindexed/tdx-util.c inn-2.6.5/storage/tradindexed/tdx-util.c
--- inn-2.6.4/storage/tradindexed/tdx-util.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/storage/tradindexed/tdx-util.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: tdx-util.c 9019 2010-03-19 21:27:15Z iulius $
-**
+/*
 **  Utility for managing a tradindexed overview spool.
 **
 **  This utility can manipulate a tradindexed overview spool in various ways,
@@ -130,6 +129,8 @@ dump_overview(const char *group, ARTNUM
             puts("Article not found");
         else
             warn("cannot open search in %s: %lu - %lu", group, low, high);
+        tdx_search_close(search);
+        tdx_index_close(index);
         return;
     }
     while (tdx_search(search, &article)) {
@@ -157,7 +158,6 @@ dump_overview(const char *group, ARTNUM
         printf("\n");
     }
     tdx_search_close(search);
-    tdx_data_close(data);
     tdx_index_close(index);
 }
 
diff -Nurp inn-2.6.4/storage/tradindexed/tradindexed.c inn-2.6.5/storage/tradindexed/tradindexed.c
--- inn-2.6.4/storage/tradindexed/tradindexed.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/storage/tradindexed/tradindexed.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: tradindexed.c 10513 2021-01-15 22:34:56Z iulius $
-**
+/*
 **  Interface implementation for the tradindexed overview method.
 **
 **  This code converts between the internal interface used by the tradindexed
diff -Nurp inn-2.6.4/storage/tradindexed/tradindexed.h inn-2.6.5/storage/tradindexed/tradindexed.h
--- inn-2.6.4/storage/tradindexed/tradindexed.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/storage/tradindexed/tradindexed.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: tradindexed.h 7585 2006-11-21 09:37:51Z eagle $
-**
+/*
 **  Public interface for the tradindexed overview method.
 **
 **  The exact API specified here must match the expectations of the overview
diff -Nurp inn-2.6.4/storage/tradspool/tradspool.c inn-2.6.5/storage/tradspool/tradspool.c
--- inn-2.6.4/storage/tradspool/tradspool.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/storage/tradspool/tradspool.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: tradspool.c 9841 2015-05-02 16:27:37Z iulius $
-**
+/*
 **  Storage manager module for traditional spool format.
 */
 
diff -Nurp inn-2.6.4/storage/tradspool/tradspool.h inn-2.6.5/storage/tradspool/tradspool.h
--- inn-2.6.4/storage/tradspool/tradspool.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/storage/tradspool/tradspool.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: tradspool.h 8817 2009-11-17 18:57:19Z iulius $
-**
+/*
 **  Storage manager module header for traditional spool format.
 */
 
diff -Nurp inn-2.6.4/storage/trash/trash.c inn-2.6.5/storage/trash/trash.c
--- inn-2.6.4/storage/trash/trash.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/storage/trash/trash.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: trash.c 8817 2009-11-17 18:57:19Z iulius $
-**
+/*
 **  Storage manager module for trash method.
 */
 #include "config.h"
diff -Nurp inn-2.6.4/storage/trash/trash.h inn-2.6.5/storage/trash/trash.h
--- inn-2.6.4/storage/trash/trash.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/storage/trash/trash.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: trash.h 8817 2009-11-17 18:57:19Z iulius $
-**
+/*
 **  Storage manager module header for trash method.
 */
 
diff -Nurp inn-2.6.4/support/config.guess inn-2.6.5/support/config.guess
--- inn-2.6.4/support/config.guess	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/support/config.guess	2022-02-18 20:36:57.000000000 +0100
@@ -1,12 +1,14 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
-#   Copyright 1992-2021 Free Software Foundation, Inc.
+#   Copyright 1992-2022 Free Software Foundation, Inc.
 
-timestamp='2021-01-01'
+# shellcheck disable=SC2006,SC2268 # see below for rationale
+
+timestamp='2022-01-09'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
+# the Free Software Foundation, either version 3 of the License, or
 # (at your option) any later version.
 #
 # This program is distributed in the hope that it will be useful, but
@@ -32,7 +34,15 @@ timestamp='2021-01-01'
 # Please send patches to <config-patches@gnu.org>.
 
 
-me=$(echo "$0" | sed -e 's,.*/,,')
+# The "shellcheck disable" line above the timestamp inhibits complaints
+# about features and limitations of the classic Bourne shell that were
+# superseded or lifted in POSIX.  However, this script identifies a wide
+# variety of pre-POSIX systems that do not have POSIX shells at all, and
+# even some reasonably current systems (Solaris 10 as case-in-point) still
+# have a pre-POSIX /bin/sh.
+
+
+me=`echo "$0" | sed -e 's,.*/,,'`
 
 usage="\
 Usage: $0 [OPTION]
@@ -50,7 +60,7 @@ version="\
 GNU config.guess ($timestamp)
 
 Originally written by Per Bothner.
-Copyright 1992-2021 Free Software Foundation, Inc.
+Copyright 1992-2022 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -84,6 +94,9 @@ if test $# != 0; then
   exit 1
 fi
 
+# Just in case it came from the environment.
+GUESS=
+
 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a
 # compiler to aid in system detection is discouraged as it requires
 # temporary files to be created and, as you can see below, it is a
@@ -102,8 +115,8 @@ set_cc_for_build() {
     # prevent multiple calls if $tmp is already set
     test "$tmp" && return 0
     : "${TMPDIR=/tmp}"
-    # shellcheck disable=SC2039
-    { tmp=$( (umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null) && test -n "$tmp" && test -d "$tmp" ; } ||
+    # shellcheck disable=SC2039,SC3028
+    { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
 	{ test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } ||
 	{ tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } ||
 	{ echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; }
@@ -112,7 +125,7 @@ set_cc_for_build() {
 	,,)    echo "int x;" > "$dummy.c"
 	       for driver in cc gcc c89 c99 ; do
 		   if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
-		       CC_FOR_BUILD="$driver"
+		       CC_FOR_BUILD=$driver
 		       break
 		   fi
 	       done
@@ -131,12 +144,12 @@ if test -f /.attbin/uname ; then
 	PATH=$PATH:/.attbin ; export PATH
 fi
 
-UNAME_MACHINE=$( (uname -m) 2>/dev/null) || UNAME_MACHINE=unknown
-UNAME_RELEASE=$( (uname -r) 2>/dev/null) || UNAME_RELEASE=unknown
-UNAME_SYSTEM=$( (uname -s) 2>/dev/null) || UNAME_SYSTEM=unknown
-UNAME_VERSION=$( (uname -v) 2>/dev/null) || UNAME_VERSION=unknown
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
 
-case "$UNAME_SYSTEM" in
+case $UNAME_SYSTEM in
 Linux|GNU|GNU/*)
 	LIBC=unknown
 
@@ -157,7 +170,8 @@ Linux|GNU|GNU/*)
 	#endif
 	#endif
 	EOF
-	eval "$($CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g')"
+	cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
+	eval "$cc_set_libc"
 
 	# Second heuristic to detect musl libc.
 	if [ "$LIBC" = unknown ] &&
@@ -176,7 +190,7 @@ esac
 
 # Note: order is significant - the case branches are not exclusive.
 
-case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
+case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in
     *:NetBSD:*:*)
 	# NetBSD (nbsd) targets should (where applicable) match one or
 	# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
@@ -188,12 +202,11 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAM
 	#
 	# Note: NetBSD doesn't particularly care about the vendor
 	# portion of the name.  We always set it to "unknown".
-	sysctl="sysctl -n hw.machine_arch"
-	UNAME_MACHINE_ARCH=$( (uname -p 2>/dev/null || \
-	    "/sbin/$sysctl" 2>/dev/null || \
-	    "/usr/sbin/$sysctl" 2>/dev/null || \
-	    echo unknown))
-	case "$UNAME_MACHINE_ARCH" in
+	UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
+	    /sbin/sysctl -n hw.machine_arch 2>/dev/null || \
+	    /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \
+	    echo unknown)`
+	case $UNAME_MACHINE_ARCH in
 	    aarch64eb) machine=aarch64_be-unknown ;;
 	    armeb) machine=armeb-unknown ;;
 	    arm*) machine=arm-unknown ;;
@@ -201,15 +214,15 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAM
 	    sh3eb) machine=sh-unknown ;;
 	    sh5el) machine=sh5le-unknown ;;
 	    earmv*)
-		arch=$(echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,')
-		endian=$(echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p')
-		machine="${arch}${endian}"-unknown
+		arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
+		endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'`
+		machine=${arch}${endian}-unknown
 		;;
-	    *) machine="$UNAME_MACHINE_ARCH"-unknown ;;
+	    *) machine=$UNAME_MACHINE_ARCH-unknown ;;
 	esac
 	# The Operating System including object format, if it has switched
 	# to ELF recently (or will in the future) and ABI.
-	case "$UNAME_MACHINE_ARCH" in
+	case $UNAME_MACHINE_ARCH in
 	    earm*)
 		os=netbsdelf
 		;;
@@ -230,10 +243,10 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAM
 		;;
 	esac
 	# Determine ABI tags.
-	case "$UNAME_MACHINE_ARCH" in
+	case $UNAME_MACHINE_ARCH in
 	    earm*)
 		expr='s/^earmv[0-9]/-eabi/;s/eb$//'
-		abi=$(echo "$UNAME_MACHINE_ARCH" | sed -e "$expr")
+		abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"`
 		;;
 	esac
 	# The OS release
@@ -241,76 +254,82 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAM
 	# thus, need a distinct triplet. However, they do not need
 	# kernel version information, so it can be replaced with a
 	# suitable tag, in the style of linux-gnu.
-	case "$UNAME_VERSION" in
+	case $UNAME_VERSION in
 	    Debian*)
 		release='-gnu'
 		;;
 	    *)
-		release=$(echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2)
+		release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2`
 		;;
 	esac
 	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
 	# contains redundant information, the shorter form:
 	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
-	echo "$machine-${os}${release}${abi-}"
-	exit ;;
+	GUESS=$machine-${os}${release}${abi-}
+	;;
     *:Bitrig:*:*)
-	UNAME_MACHINE_ARCH=$(arch | sed 's/Bitrig.//')
-	echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE"
-	exit ;;
+	UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
+	GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE
+	;;
     *:OpenBSD:*:*)
-	UNAME_MACHINE_ARCH=$(arch | sed 's/OpenBSD.//')
-	echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE"
-	exit ;;
+	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+	GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE
+	;;
+    *:SecBSD:*:*)
+	UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'`
+	GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE
+	;;
     *:LibertyBSD:*:*)
-	UNAME_MACHINE_ARCH=$(arch | sed 's/^.*BSD\.//')
-	echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE"
-	exit ;;
+	UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
+	GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE
+	;;
     *:MidnightBSD:*:*)
-	echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE
+	;;
     *:ekkoBSD:*:*)
-	echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE
+	;;
     *:SolidBSD:*:*)
-	echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE
+	;;
     *:OS108:*:*)
-	echo "$UNAME_MACHINE"-unknown-os108_"$UNAME_RELEASE"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE
+	;;
     macppc:MirBSD:*:*)
-	echo powerpc-unknown-mirbsd"$UNAME_RELEASE"
-	exit ;;
+	GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE
+	;;
     *:MirBSD:*:*)
-	echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE
+	;;
     *:Sortix:*:*)
-	echo "$UNAME_MACHINE"-unknown-sortix
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-sortix
+	;;
     *:Twizzler:*:*)
-	echo "$UNAME_MACHINE"-unknown-twizzler
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-twizzler
+	;;
     *:Redox:*:*)
-	echo "$UNAME_MACHINE"-unknown-redox
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-redox
+	;;
     mips:OSF1:*.*)
-	echo mips-dec-osf1
-	exit ;;
+	GUESS=mips-dec-osf1
+	;;
     alpha:OSF1:*:*)
+	# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+	trap '' 0
 	case $UNAME_RELEASE in
 	*4.0)
-		UNAME_RELEASE=$(/usr/sbin/sizer -v | awk '{print $3}')
+		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
 		;;
 	*5.*)
-		UNAME_RELEASE=$(/usr/sbin/sizer -v | awk '{print $4}')
+		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
 		;;
 	esac
 	# According to Compaq, /usr/sbin/psrinfo has been available on
 	# OSF/1 and Tru64 systems produced since 1995.  I hope that
 	# covers most systems running today.  This code pipes the CPU
 	# types through head -n 1, so we only detect the type of CPU 0.
-	ALPHA_CPU_TYPE=$(/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1)
-	case "$ALPHA_CPU_TYPE" in
+	ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+	case $ALPHA_CPU_TYPE in
 	    "EV4 (21064)")
 		UNAME_MACHINE=alpha ;;
 	    "EV4.5 (21064)")
@@ -347,68 +366,69 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAM
 	# A Tn.n version is a released field test version.
 	# A Xn.n version is an unreleased experimental baselevel.
 	# 1.2 uses "1.2" for uname -r.
-	echo "$UNAME_MACHINE"-dec-osf"$(echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz)"
-	# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
-	exitcode=$?
-	trap '' 0
-	exit $exitcode ;;
+	OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
+	GUESS=$UNAME_MACHINE-dec-osf$OSF_REL
+	;;
     Amiga*:UNIX_System_V:4.0:*)
-	echo m68k-unknown-sysv4
-	exit ;;
+	GUESS=m68k-unknown-sysv4
+	;;
     *:[Aa]miga[Oo][Ss]:*:*)
-	echo "$UNAME_MACHINE"-unknown-amigaos
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-amigaos
+	;;
     *:[Mm]orph[Oo][Ss]:*:*)
-	echo "$UNAME_MACHINE"-unknown-morphos
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-morphos
+	;;
     *:OS/390:*:*)
-	echo i370-ibm-openedition
-	exit ;;
+	GUESS=i370-ibm-openedition
+	;;
     *:z/VM:*:*)
-	echo s390-ibm-zvmoe
-	exit ;;
+	GUESS=s390-ibm-zvmoe
+	;;
     *:OS400:*:*)
-	echo powerpc-ibm-os400
-	exit ;;
+	GUESS=powerpc-ibm-os400
+	;;
     arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
-	echo arm-acorn-riscix"$UNAME_RELEASE"
-	exit ;;
+	GUESS=arm-acorn-riscix$UNAME_RELEASE
+	;;
     arm*:riscos:*:*|arm*:RISCOS:*:*)
-	echo arm-unknown-riscos
-	exit ;;
+	GUESS=arm-unknown-riscos
+	;;
     SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
-	echo hppa1.1-hitachi-hiuxmpp
-	exit ;;
+	GUESS=hppa1.1-hitachi-hiuxmpp
+	;;
     Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
 	# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
-	if test "$( (/bin/universe) 2>/dev/null)" = att ; then
-		echo pyramid-pyramid-sysv3
-	else
-		echo pyramid-pyramid-bsd
-	fi
-	exit ;;
+	case `(/bin/universe) 2>/dev/null` in
+	    att) GUESS=pyramid-pyramid-sysv3 ;;
+	    *)   GUESS=pyramid-pyramid-bsd   ;;
+	esac
+	;;
     NILE*:*:*:dcosx)
-	echo pyramid-pyramid-svr4
-	exit ;;
+	GUESS=pyramid-pyramid-svr4
+	;;
     DRS?6000:unix:4.0:6*)
-	echo sparc-icl-nx6
-	exit ;;
+	GUESS=sparc-icl-nx6
+	;;
     DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
-	case $(/usr/bin/uname -p) in
-	    sparc) echo sparc-icl-nx7; exit ;;
-	esac ;;
+	case `/usr/bin/uname -p` in
+	    sparc) GUESS=sparc-icl-nx7 ;;
+	esac
+	;;
     s390x:SunOS:*:*)
-	echo "$UNAME_MACHINE"-ibm-solaris2"$(echo "$UNAME_RELEASE" | sed -e 's/[^.]*//')"
-	exit ;;
+	SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+	GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL
+	;;
     sun4H:SunOS:5.*:*)
-	echo sparc-hal-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
-	exit ;;
+	SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+	GUESS=sparc-hal-solaris2$SUN_REL
+	;;
     sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
-	echo sparc-sun-solaris2"$(echo "$UNAME_RELEASE" | sed -e 's/[^.]*//')"
-	exit ;;
+	SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+	GUESS=sparc-sun-solaris2$SUN_REL
+	;;
     i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
-	echo i386-pc-auroraux"$UNAME_RELEASE"
-	exit ;;
+	GUESS=i386-pc-auroraux$UNAME_RELEASE
+	;;
     i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
 	set_cc_for_build
 	SUN_ARCH=i386
@@ -417,47 +437,50 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAM
 	# This test works for both compilers.
 	if test "$CC_FOR_BUILD" != no_compiler_found; then
 	    if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
-		(CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+		(CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \
 		grep IS_64BIT_ARCH >/dev/null
 	    then
 		SUN_ARCH=x86_64
 	    fi
 	fi
-	echo "$SUN_ARCH"-pc-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
-	exit ;;
+	SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+	GUESS=$SUN_ARCH-pc-solaris2$SUN_REL
+	;;
     sun4*:SunOS:6*:*)
 	# According to config.sub, this is the proper way to canonicalize
 	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
 	# it's likely to be more like Solaris than SunOS4.
-	echo sparc-sun-solaris3"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
-	exit ;;
+	SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+	GUESS=sparc-sun-solaris3$SUN_REL
+	;;
     sun4*:SunOS:*:*)
-	case "$(/usr/bin/arch -k)" in
+	case `/usr/bin/arch -k` in
 	    Series*|S4*)
-		UNAME_RELEASE=$(uname -v)
+		UNAME_RELEASE=`uname -v`
 		;;
 	esac
 	# Japanese Language versions have a version number like `4.1.3-JL'.
-	echo sparc-sun-sunos"$(echo "$UNAME_RELEASE"|sed -e 's/-/_/')"
-	exit ;;
+	SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'`
+	GUESS=sparc-sun-sunos$SUN_REL
+	;;
     sun3*:SunOS:*:*)
-	echo m68k-sun-sunos"$UNAME_RELEASE"
-	exit ;;
+	GUESS=m68k-sun-sunos$UNAME_RELEASE
+	;;
     sun*:*:4.2BSD:*)
-	UNAME_RELEASE=$( (sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null)
+	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
 	test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3
-	case "$(/bin/arch)" in
+	case `/bin/arch` in
 	    sun3)
-		echo m68k-sun-sunos"$UNAME_RELEASE"
+		GUESS=m68k-sun-sunos$UNAME_RELEASE
 		;;
 	    sun4)
-		echo sparc-sun-sunos"$UNAME_RELEASE"
+		GUESS=sparc-sun-sunos$UNAME_RELEASE
 		;;
 	esac
-	exit ;;
+	;;
     aushp:SunOS:*:*)
-	echo sparc-auspex-sunos"$UNAME_RELEASE"
-	exit ;;
+	GUESS=sparc-auspex-sunos$UNAME_RELEASE
+	;;
     # The situation for MiNT is a little confusing.  The machine name
     # can be virtually everything (everything which is not
     # "atarist" or "atariste" at least should have a processor
@@ -467,41 +490,41 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAM
     # MiNT.  But MiNT is downward compatible to TOS, so this should
     # be no problem.
     atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
-	echo m68k-atari-mint"$UNAME_RELEASE"
-	exit ;;
+	GUESS=m68k-atari-mint$UNAME_RELEASE
+	;;
     atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
-	echo m68k-atari-mint"$UNAME_RELEASE"
-	exit ;;
+	GUESS=m68k-atari-mint$UNAME_RELEASE
+	;;
     *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
-	echo m68k-atari-mint"$UNAME_RELEASE"
-	exit ;;
+	GUESS=m68k-atari-mint$UNAME_RELEASE
+	;;
     milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
-	echo m68k-milan-mint"$UNAME_RELEASE"
-	exit ;;
+	GUESS=m68k-milan-mint$UNAME_RELEASE
+	;;
     hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
-	echo m68k-hades-mint"$UNAME_RELEASE"
-	exit ;;
+	GUESS=m68k-hades-mint$UNAME_RELEASE
+	;;
     *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
-	echo m68k-unknown-mint"$UNAME_RELEASE"
-	exit ;;
+	GUESS=m68k-unknown-mint$UNAME_RELEASE
+	;;
     m68k:machten:*:*)
-	echo m68k-apple-machten"$UNAME_RELEASE"
-	exit ;;
+	GUESS=m68k-apple-machten$UNAME_RELEASE
+	;;
     powerpc:machten:*:*)
-	echo powerpc-apple-machten"$UNAME_RELEASE"
-	exit ;;
+	GUESS=powerpc-apple-machten$UNAME_RELEASE
+	;;
     RISC*:Mach:*:*)
-	echo mips-dec-mach_bsd4.3
-	exit ;;
+	GUESS=mips-dec-mach_bsd4.3
+	;;
     RISC*:ULTRIX:*:*)
-	echo mips-dec-ultrix"$UNAME_RELEASE"
-	exit ;;
+	GUESS=mips-dec-ultrix$UNAME_RELEASE
+	;;
     VAX*:ULTRIX*:*:*)
-	echo vax-dec-ultrix"$UNAME_RELEASE"
-	exit ;;
+	GUESS=vax-dec-ultrix$UNAME_RELEASE
+	;;
     2020:CLIX:*:* | 2430:CLIX:*:*)
-	echo clipper-intergraph-clix"$UNAME_RELEASE"
-	exit ;;
+	GUESS=clipper-intergraph-clix$UNAME_RELEASE
+	;;
     mips:*:*:UMIPS | mips:*:*:RISCos)
 	set_cc_for_build
 	sed 's/^	//' << EOF > "$dummy.c"
@@ -526,78 +549,79 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAM
 	}
 EOF
 	$CC_FOR_BUILD -o "$dummy" "$dummy.c" &&
-	  dummyarg=$(echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p') &&
-	  SYSTEM_NAME=$("$dummy" "$dummyarg") &&
+	  dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+	  SYSTEM_NAME=`"$dummy" "$dummyarg"` &&
 	    { echo "$SYSTEM_NAME"; exit; }
-	echo mips-mips-riscos"$UNAME_RELEASE"
-	exit ;;
+	GUESS=mips-mips-riscos$UNAME_RELEASE
+	;;
     Motorola:PowerMAX_OS:*:*)
-	echo powerpc-motorola-powermax
-	exit ;;
+	GUESS=powerpc-motorola-powermax
+	;;
     Motorola:*:4.3:PL8-*)
-	echo powerpc-harris-powermax
-	exit ;;
+	GUESS=powerpc-harris-powermax
+	;;
     Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
-	echo powerpc-harris-powermax
-	exit ;;
+	GUESS=powerpc-harris-powermax
+	;;
     Night_Hawk:Power_UNIX:*:*)
-	echo powerpc-harris-powerunix
-	exit ;;
+	GUESS=powerpc-harris-powerunix
+	;;
     m88k:CX/UX:7*:*)
-	echo m88k-harris-cxux7
-	exit ;;
+	GUESS=m88k-harris-cxux7
+	;;
     m88k:*:4*:R4*)
-	echo m88k-motorola-sysv4
-	exit ;;
+	GUESS=m88k-motorola-sysv4
+	;;
     m88k:*:3*:R3*)
-	echo m88k-motorola-sysv3
-	exit ;;
+	GUESS=m88k-motorola-sysv3
+	;;
     AViiON:dgux:*:*)
 	# DG/UX returns AViiON for all architectures
-	UNAME_PROCESSOR=$(/usr/bin/uname -p)
+	UNAME_PROCESSOR=`/usr/bin/uname -p`
 	if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110
 	then
 	    if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \
 	       test "$TARGET_BINARY_INTERFACE"x = x
 	    then
-		echo m88k-dg-dgux"$UNAME_RELEASE"
+		GUESS=m88k-dg-dgux$UNAME_RELEASE
 	    else
-		echo m88k-dg-dguxbcs"$UNAME_RELEASE"
+		GUESS=m88k-dg-dguxbcs$UNAME_RELEASE
 	    fi
 	else
-	    echo i586-dg-dgux"$UNAME_RELEASE"
+	    GUESS=i586-dg-dgux$UNAME_RELEASE
 	fi
-	exit ;;
+	;;
     M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
-	echo m88k-dolphin-sysv3
-	exit ;;
+	GUESS=m88k-dolphin-sysv3
+	;;
     M88*:*:R3*:*)
 	# Delta 88k system running SVR3
-	echo m88k-motorola-sysv3
-	exit ;;
+	GUESS=m88k-motorola-sysv3
+	;;
     XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
-	echo m88k-tektronix-sysv3
-	exit ;;
+	GUESS=m88k-tektronix-sysv3
+	;;
     Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
-	echo m68k-tektronix-bsd
-	exit ;;
+	GUESS=m68k-tektronix-bsd
+	;;
     *:IRIX*:*:*)
-	echo mips-sgi-irix"$(echo "$UNAME_RELEASE"|sed -e 's/-/_/g')"
-	exit ;;
+	IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'`
+	GUESS=mips-sgi-irix$IRIX_REL
+	;;
     ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
-	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
-	exit ;;               # Note that: echo "'$(uname -s)'" gives 'AIX '
+	GUESS=romp-ibm-aix    # uname -m gives an 8 hex-code CPU id
+	;;                    # Note that: echo "'`uname -s`'" gives 'AIX '
     i*86:AIX:*:*)
-	echo i386-ibm-aix
-	exit ;;
+	GUESS=i386-ibm-aix
+	;;
     ia64:AIX:*:*)
 	if test -x /usr/bin/oslevel ; then
-		IBM_REV=$(/usr/bin/oslevel)
+		IBM_REV=`/usr/bin/oslevel`
 	else
-		IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
+		IBM_REV=$UNAME_VERSION.$UNAME_RELEASE
 	fi
-	echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV"
-	exit ;;
+	GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV
+	;;
     *:AIX:2:3)
 	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
 		set_cc_for_build
@@ -612,68 +636,68 @@ EOF
 			exit(0);
 			}
 EOF
-		if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=$("$dummy")
+		if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"`
 		then
-			echo "$SYSTEM_NAME"
+			GUESS=$SYSTEM_NAME
 		else
-			echo rs6000-ibm-aix3.2.5
+			GUESS=rs6000-ibm-aix3.2.5
 		fi
 	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
-		echo rs6000-ibm-aix3.2.4
+		GUESS=rs6000-ibm-aix3.2.4
 	else
-		echo rs6000-ibm-aix3.2
+		GUESS=rs6000-ibm-aix3.2
 	fi
-	exit ;;
+	;;
     *:AIX:*:[4567])
-	IBM_CPU_ID=$(/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }')
+	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
 	if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then
 		IBM_ARCH=rs6000
 	else
 		IBM_ARCH=powerpc
 	fi
 	if test -x /usr/bin/lslpp ; then
-		IBM_REV=$(/usr/bin/lslpp -Lqc bos.rte.libc |
-			   awk -F: '{ print $3 }' | sed s/[0-9]*$/0/)
+		IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \
+			   awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
 	else
-		IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
+		IBM_REV=$UNAME_VERSION.$UNAME_RELEASE
 	fi
-	echo "$IBM_ARCH"-ibm-aix"$IBM_REV"
-	exit ;;
+	GUESS=$IBM_ARCH-ibm-aix$IBM_REV
+	;;
     *:AIX:*:*)
-	echo rs6000-ibm-aix
-	exit ;;
+	GUESS=rs6000-ibm-aix
+	;;
     ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*)
-	echo romp-ibm-bsd4.4
-	exit ;;
+	GUESS=romp-ibm-bsd4.4
+	;;
     ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
-	echo romp-ibm-bsd"$UNAME_RELEASE"   # 4.3 with uname added to
-	exit ;;                             # report: romp-ibm BSD 4.3
+	GUESS=romp-ibm-bsd$UNAME_RELEASE    # 4.3 with uname added to
+	;;                                  # report: romp-ibm BSD 4.3
     *:BOSX:*:*)
-	echo rs6000-bull-bosx
-	exit ;;
+	GUESS=rs6000-bull-bosx
+	;;
     DPX/2?00:B.O.S.:*:*)
-	echo m68k-bull-sysv3
-	exit ;;
+	GUESS=m68k-bull-sysv3
+	;;
     9000/[34]??:4.3bsd:1.*:*)
-	echo m68k-hp-bsd
-	exit ;;
+	GUESS=m68k-hp-bsd
+	;;
     hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
-	echo m68k-hp-bsd4.4
-	exit ;;
+	GUESS=m68k-hp-bsd4.4
+	;;
     9000/[34678]??:HP-UX:*:*)
-	HPUX_REV=$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//')
-	case "$UNAME_MACHINE" in
+	HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'`
+	case $UNAME_MACHINE in
 	    9000/31?)            HP_ARCH=m68000 ;;
 	    9000/[34]??)         HP_ARCH=m68k ;;
 	    9000/[678][0-9][0-9])
 		if test -x /usr/bin/getconf; then
-		    sc_cpu_version=$(/usr/bin/getconf SC_CPU_VERSION 2>/dev/null)
-		    sc_kernel_bits=$(/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null)
-		    case "$sc_cpu_version" in
+		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+		    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+		    case $sc_cpu_version in
 		      523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
 		      528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
 		      532)                      # CPU_PA_RISC2_0
-			case "$sc_kernel_bits" in
+			case $sc_kernel_bits in
 			  32) HP_ARCH=hppa2.0n ;;
 			  64) HP_ARCH=hppa2.0w ;;
 			  '') HP_ARCH=hppa2.0 ;;   # HP-UX 10.20
@@ -715,7 +739,7 @@ EOF
 		    exit (0);
 		}
 EOF
-		    (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=$("$dummy")
+		    (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"`
 		    test -z "$HP_ARCH" && HP_ARCH=hppa
 		fi ;;
 	esac
@@ -740,12 +764,12 @@ EOF
 		HP_ARCH=hppa64
 	    fi
 	fi
-	echo "$HP_ARCH"-hp-hpux"$HPUX_REV"
-	exit ;;
+	GUESS=$HP_ARCH-hp-hpux$HPUX_REV
+	;;
     ia64:HP-UX:*:*)
-	HPUX_REV=$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//')
-	echo ia64-hp-hpux"$HPUX_REV"
-	exit ;;
+	HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'`
+	GUESS=ia64-hp-hpux$HPUX_REV
+	;;
     3050*:HI-UX:*:*)
 	set_cc_for_build
 	sed 's/^	//' << EOF > "$dummy.c"
@@ -773,38 +797,38 @@ EOF
 	  exit (0);
 	}
 EOF
-	$CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=$("$dummy") &&
+	$CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` &&
 		{ echo "$SYSTEM_NAME"; exit; }
-	echo unknown-hitachi-hiuxwe2
-	exit ;;
+	GUESS=unknown-hitachi-hiuxwe2
+	;;
     9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*)
-	echo hppa1.1-hp-bsd
-	exit ;;
+	GUESS=hppa1.1-hp-bsd
+	;;
     9000/8??:4.3bsd:*:*)
-	echo hppa1.0-hp-bsd
-	exit ;;
+	GUESS=hppa1.0-hp-bsd
+	;;
     *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
-	echo hppa1.0-hp-mpeix
-	exit ;;
+	GUESS=hppa1.0-hp-mpeix
+	;;
     hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*)
-	echo hppa1.1-hp-osf
-	exit ;;
+	GUESS=hppa1.1-hp-osf
+	;;
     hp8??:OSF1:*:*)
-	echo hppa1.0-hp-osf
-	exit ;;
+	GUESS=hppa1.0-hp-osf
+	;;
     i*86:OSF1:*:*)
 	if test -x /usr/sbin/sysversion ; then
-	    echo "$UNAME_MACHINE"-unknown-osf1mk
+	    GUESS=$UNAME_MACHINE-unknown-osf1mk
 	else
-	    echo "$UNAME_MACHINE"-unknown-osf1
+	    GUESS=$UNAME_MACHINE-unknown-osf1
 	fi
-	exit ;;
+	;;
     parisc*:Lites*:*:*)
-	echo hppa1.1-hp-lites
-	exit ;;
+	GUESS=hppa1.1-hp-lites
+	;;
     C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
-	echo c1-convex-bsd
-	exit ;;
+	GUESS=c1-convex-bsd
+	;;
     C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
 	if getsysinfo -f scalar_acc
 	then echo c32-convex-bsd
@@ -812,17 +836,18 @@ EOF
 	fi
 	exit ;;
     C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
-	echo c34-convex-bsd
-	exit ;;
+	GUESS=c34-convex-bsd
+	;;
     C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
-	echo c38-convex-bsd
-	exit ;;
+	GUESS=c38-convex-bsd
+	;;
     C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
-	echo c4-convex-bsd
-	exit ;;
+	GUESS=c4-convex-bsd
+	;;
     CRAY*Y-MP:*:*:*)
-	echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
+	CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+	GUESS=ymp-cray-unicos$CRAY_REL
+	;;
     CRAY*[A-Z]90:*:*:*)
 	echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \
 	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
@@ -830,114 +855,129 @@ EOF
 	      -e 's/\.[^.]*$/.X/'
 	exit ;;
     CRAY*TS:*:*:*)
-	echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
+	CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+	GUESS=t90-cray-unicos$CRAY_REL
+	;;
     CRAY*T3E:*:*:*)
-	echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
+	CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+	GUESS=alphaev5-cray-unicosmk$CRAY_REL
+	;;
     CRAY*SV1:*:*:*)
-	echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
+	CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+	GUESS=sv1-cray-unicos$CRAY_REL
+	;;
     *:UNICOS/mp:*:*)
-	echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
+	CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+	GUESS=craynv-cray-unicosmp$CRAY_REL
+	;;
     F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
-	FUJITSU_PROC=$(uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz)
-	FUJITSU_SYS=$(uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///')
-	FUJITSU_REL=$(echo "$UNAME_RELEASE" | sed -e 's/ /_/')
-	echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-	exit ;;
+	FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
+	FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
+	FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'`
+	GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}
+	;;
     5000:UNIX_System_V:4.*:*)
-	FUJITSU_SYS=$(uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///')
-	FUJITSU_REL=$(echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/')
-	echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-	exit ;;
+	FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
+	FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
+	GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}
+	;;
     i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
-	echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE"
-	exit ;;
+	GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE
+	;;
     sparc*:BSD/OS:*:*)
-	echo sparc-unknown-bsdi"$UNAME_RELEASE"
-	exit ;;
+	GUESS=sparc-unknown-bsdi$UNAME_RELEASE
+	;;
     *:BSD/OS:*:*)
-	echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE
+	;;
     arm:FreeBSD:*:*)
-	UNAME_PROCESSOR=$(uname -p)
+	UNAME_PROCESSOR=`uname -p`
 	set_cc_for_build
 	if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
 	    | grep -q __ARM_PCS_VFP
 	then
-	    echo "${UNAME_PROCESSOR}"-unknown-freebsd"$(echo ${UNAME_RELEASE}|sed -e 's/[-(].*//')"-gnueabi
+	    FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+	    GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi
 	else
-	    echo "${UNAME_PROCESSOR}"-unknown-freebsd"$(echo ${UNAME_RELEASE}|sed -e 's/[-(].*//')"-gnueabihf
+	    FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+	    GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf
 	fi
-	exit ;;
+	;;
     *:FreeBSD:*:*)
-	UNAME_PROCESSOR=$(/usr/bin/uname -p)
-	case "$UNAME_PROCESSOR" in
+	UNAME_PROCESSOR=`/usr/bin/uname -p`
+	case $UNAME_PROCESSOR in
 	    amd64)
 		UNAME_PROCESSOR=x86_64 ;;
 	    i386)
 		UNAME_PROCESSOR=i586 ;;
 	esac
-	echo "$UNAME_PROCESSOR"-unknown-freebsd"$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')"
-	exit ;;
+	FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+	GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL
+	;;
     i*:CYGWIN*:*)
-	echo "$UNAME_MACHINE"-pc-cygwin
-	exit ;;
+	GUESS=$UNAME_MACHINE-pc-cygwin
+	;;
     *:MINGW64*:*)
-	echo "$UNAME_MACHINE"-pc-mingw64
-	exit ;;
+	GUESS=$UNAME_MACHINE-pc-mingw64
+	;;
     *:MINGW*:*)
-	echo "$UNAME_MACHINE"-pc-mingw32
-	exit ;;
+	GUESS=$UNAME_MACHINE-pc-mingw32
+	;;
     *:MSYS*:*)
-	echo "$UNAME_MACHINE"-pc-msys
-	exit ;;
+	GUESS=$UNAME_MACHINE-pc-msys
+	;;
     i*:PW*:*)
-	echo "$UNAME_MACHINE"-pc-pw32
-	exit ;;
+	GUESS=$UNAME_MACHINE-pc-pw32
+	;;
+    *:SerenityOS:*:*)
+        GUESS=$UNAME_MACHINE-pc-serenity
+        ;;
     *:Interix*:*)
-	case "$UNAME_MACHINE" in
+	case $UNAME_MACHINE in
 	    x86)
-		echo i586-pc-interix"$UNAME_RELEASE"
-		exit ;;
+		GUESS=i586-pc-interix$UNAME_RELEASE
+		;;
 	    authenticamd | genuineintel | EM64T)
-		echo x86_64-unknown-interix"$UNAME_RELEASE"
-		exit ;;
+		GUESS=x86_64-unknown-interix$UNAME_RELEASE
+		;;
 	    IA64)
-		echo ia64-unknown-interix"$UNAME_RELEASE"
-		exit ;;
+		GUESS=ia64-unknown-interix$UNAME_RELEASE
+		;;
 	esac ;;
     i*:UWIN*:*)
-	echo "$UNAME_MACHINE"-pc-uwin
-	exit ;;
+	GUESS=$UNAME_MACHINE-pc-uwin
+	;;
     amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
-	echo x86_64-pc-cygwin
-	exit ;;
+	GUESS=x86_64-pc-cygwin
+	;;
     prep*:SunOS:5.*:*)
-	echo powerpcle-unknown-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
-	exit ;;
+	SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+	GUESS=powerpcle-unknown-solaris2$SUN_REL
+	;;
     *:GNU:*:*)
 	# the GNU system
-	echo "$(echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,')-unknown-$LIBC$(echo "$UNAME_RELEASE"|sed -e 's,/.*$,,')"
-	exit ;;
+	GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'`
+	GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'`
+	GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL
+	;;
     *:GNU/*:*:*)
 	# other systems with GNU libc and userland
-	echo "$UNAME_MACHINE-unknown-$(echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]")$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')-$LIBC"
-	exit ;;
+	GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"`
+	GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+	GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC
+	;;
     *:Minix:*:*)
-	echo "$UNAME_MACHINE"-unknown-minix
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-minix
+	;;
     aarch64:Linux:*:*)
-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+	;;
     aarch64_be:Linux:*:*)
 	UNAME_MACHINE=aarch64_be
-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+	;;
     alpha:Linux:*:*)
-	case $(sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null) in
+	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in
 	  EV5)   UNAME_MACHINE=alphaev5 ;;
 	  EV56)  UNAME_MACHINE=alphaev56 ;;
 	  PCA56) UNAME_MACHINE=alphapca56 ;;
@@ -948,63 +988,63 @@ EOF
 	esac
 	objdump --private-headers /bin/sh | grep -q ld.so.1
 	if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-	exit ;;
-    arc:Linux:*:* | arceb:Linux:*:*)
-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+	;;
+    arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*)
+	GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+	;;
     arm*:Linux:*:*)
 	set_cc_for_build
 	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
 	    | grep -q __ARM_EABI__
 	then
-	    echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+	    GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
 	else
 	    if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
 		| grep -q __ARM_PCS_VFP
 	    then
-		echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi
+		GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi
 	    else
-		echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf
+		GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf
 	    fi
 	fi
-	exit ;;
+	;;
     avr32*:Linux:*:*)
-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+	;;
     cris:Linux:*:*)
-	echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-axis-linux-$LIBC
+	;;
     crisv32:Linux:*:*)
-	echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-axis-linux-$LIBC
+	;;
     e2k:Linux:*:*)
-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+	;;
     frv:Linux:*:*)
-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+	;;
     hexagon:Linux:*:*)
-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+	;;
     i*86:Linux:*:*)
-	echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-pc-linux-$LIBC
+	;;
     ia64:Linux:*:*)
-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+	;;
     k1om:Linux:*:*)
-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+	;;
     loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*)
-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+	;;
     m32r*:Linux:*:*)
-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+	;;
     m68*:Linux:*:*)
-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+	;;
     mips:Linux:*:* | mips64:Linux:*:*)
 	set_cc_for_build
 	IS_GLIBC=0
@@ -1049,65 +1089,66 @@ EOF
 	#endif
 	#endif
 EOF
-	eval "$($CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI')"
+	cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'`
+	eval "$cc_set_vars"
 	test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; }
 	;;
     mips64el:Linux:*:*)
-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+	;;
     openrisc*:Linux:*:*)
-	echo or1k-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=or1k-unknown-linux-$LIBC
+	;;
     or32:Linux:*:* | or1k*:Linux:*:*)
-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+	;;
     padre:Linux:*:*)
-	echo sparc-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=sparc-unknown-linux-$LIBC
+	;;
     parisc64:Linux:*:* | hppa64:Linux:*:*)
-	echo hppa64-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=hppa64-unknown-linux-$LIBC
+	;;
     parisc:Linux:*:* | hppa:Linux:*:*)
 	# Look for CPU level
-	case $(grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2) in
-	  PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;;
-	  PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;;
-	  *)    echo hppa-unknown-linux-"$LIBC" ;;
+	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+	  PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;;
+	  PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;;
+	  *)    GUESS=hppa-unknown-linux-$LIBC ;;
 	esac
-	exit ;;
+	;;
     ppc64:Linux:*:*)
-	echo powerpc64-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=powerpc64-unknown-linux-$LIBC
+	;;
     ppc:Linux:*:*)
-	echo powerpc-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=powerpc-unknown-linux-$LIBC
+	;;
     ppc64le:Linux:*:*)
-	echo powerpc64le-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=powerpc64le-unknown-linux-$LIBC
+	;;
     ppcle:Linux:*:*)
-	echo powerpcle-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=powerpcle-unknown-linux-$LIBC
+	;;
     riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*)
-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+	;;
     s390:Linux:*:* | s390x:Linux:*:*)
-	echo "$UNAME_MACHINE"-ibm-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-ibm-linux-$LIBC
+	;;
     sh64*:Linux:*:*)
-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+	;;
     sh*:Linux:*:*)
-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+	;;
     sparc:Linux:*:* | sparc64:Linux:*:*)
-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+	;;
     tile*:Linux:*:*)
-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+	;;
     vax:Linux:*:*)
-	echo "$UNAME_MACHINE"-dec-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-dec-linux-$LIBC
+	;;
     x86_64:Linux:*:*)
 	set_cc_for_build
 	LIBCABI=$LIBC
@@ -1116,71 +1157,71 @@ EOF
 		(CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
 		grep IS_X32 >/dev/null
 	    then
-		LIBCABI="$LIBC"x32
+		LIBCABI=${LIBC}x32
 	    fi
 	fi
-	echo "$UNAME_MACHINE"-pc-linux-"$LIBCABI"
-	exit ;;
+	GUESS=$UNAME_MACHINE-pc-linux-$LIBCABI
+	;;
     xtensa*:Linux:*:*)
-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+	;;
     i*86:DYNIX/ptx:4*:*)
 	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
 	# earlier versions are messed up and put the nodename in both
 	# sysname and nodename.
-	echo i386-sequent-sysv4
-	exit ;;
+	GUESS=i386-sequent-sysv4
+	;;
     i*86:UNIX_SV:4.2MP:2.*)
 	# Unixware is an offshoot of SVR4, but it has its own version
 	# number series starting with 2...
 	# I am not positive that other SVR4 systems won't match this,
 	# I just have to hope.  -- rms.
 	# Use sysv4.2uw... so that sysv4* matches it.
-	echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION"
-	exit ;;
+	GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION
+	;;
     i*86:OS/2:*:*)
 	# If we were able to find `uname', then EMX Unix compatibility
 	# is probably installed.
-	echo "$UNAME_MACHINE"-pc-os2-emx
-	exit ;;
+	GUESS=$UNAME_MACHINE-pc-os2-emx
+	;;
     i*86:XTS-300:*:STOP)
-	echo "$UNAME_MACHINE"-unknown-stop
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-stop
+	;;
     i*86:atheos:*:*)
-	echo "$UNAME_MACHINE"-unknown-atheos
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-atheos
+	;;
     i*86:syllable:*:*)
-	echo "$UNAME_MACHINE"-pc-syllable
-	exit ;;
+	GUESS=$UNAME_MACHINE-pc-syllable
+	;;
     i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
-	echo i386-unknown-lynxos"$UNAME_RELEASE"
-	exit ;;
+	GUESS=i386-unknown-lynxos$UNAME_RELEASE
+	;;
     i*86:*DOS:*:*)
-	echo "$UNAME_MACHINE"-pc-msdosdjgpp
-	exit ;;
+	GUESS=$UNAME_MACHINE-pc-msdosdjgpp
+	;;
     i*86:*:4.*:*)
-	UNAME_REL=$(echo "$UNAME_RELEASE" | sed 's/\/MP$//')
+	UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'`
 	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
-		echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL"
+		GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL
 	else
-		echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL"
+		GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL
 	fi
-	exit ;;
+	;;
     i*86:*:5:[678]*)
 	# UnixWare 7.x, OpenUNIX and OpenServer 6.
-	case $(/bin/uname -X | grep "^Machine") in
+	case `/bin/uname -X | grep "^Machine"` in
 	    *486*)	     UNAME_MACHINE=i486 ;;
 	    *Pentium)	     UNAME_MACHINE=i586 ;;
 	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
 	esac
-	echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+	;;
     i*86:*:3.2:*)
 	if test -f /usr/options/cb.name; then
-		UNAME_REL=$(sed -n 's/.*Version //p' </usr/options/cb.name)
-		echo "$UNAME_MACHINE"-pc-isc"$UNAME_REL"
+		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+		GUESS=$UNAME_MACHINE-pc-isc$UNAME_REL
 	elif /bin/uname -X 2>/dev/null >/dev/null ; then
-		UNAME_REL=$( (/bin/uname -X|grep Release|sed -e 's/.*= //'))
+		UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
 		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
 		(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
 			&& UNAME_MACHINE=i586
@@ -1188,11 +1229,11 @@ EOF
 			&& UNAME_MACHINE=i686
 		(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
 			&& UNAME_MACHINE=i686
-		echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL"
+		GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL
 	else
-		echo "$UNAME_MACHINE"-pc-sysv32
+		GUESS=$UNAME_MACHINE-pc-sysv32
 	fi
-	exit ;;
+	;;
     pc:*:*:*)
 	# Left here for compatibility:
 	# uname -m prints for DJGPP always 'pc', but it prints nothing about
@@ -1200,37 +1241,37 @@ EOF
 	# Note: whatever this is, it MUST be the same as what config.sub
 	# prints for the "djgpp" host, or else GDB configure will decide that
 	# this is a cross-build.
-	echo i586-pc-msdosdjgpp
-	exit ;;
+	GUESS=i586-pc-msdosdjgpp
+	;;
     Intel:Mach:3*:*)
-	echo i386-pc-mach3
-	exit ;;
+	GUESS=i386-pc-mach3
+	;;
     paragon:*:*:*)
-	echo i860-intel-osf1
-	exit ;;
+	GUESS=i860-intel-osf1
+	;;
     i860:*:4.*:*) # i860-SVR4
 	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
-	  echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4
+	  GUESS=i860-stardent-sysv$UNAME_RELEASE    # Stardent Vistra i860-SVR4
 	else # Add other i860-SVR4 vendors below as they are discovered.
-	  echo i860-unknown-sysv"$UNAME_RELEASE"  # Unknown i860-SVR4
+	  GUESS=i860-unknown-sysv$UNAME_RELEASE     # Unknown i860-SVR4
 	fi
-	exit ;;
+	;;
     mini*:CTIX:SYS*5:*)
 	# "miniframe"
-	echo m68010-convergent-sysv
-	exit ;;
+	GUESS=m68010-convergent-sysv
+	;;
     mc68k:UNIX:SYSTEM5:3.51m)
-	echo m68k-convergent-sysv
-	exit ;;
+	GUESS=m68k-convergent-sysv
+	;;
     M680?0:D-NIX:5.3:*)
-	echo m68k-diab-dnix
-	exit ;;
+	GUESS=m68k-diab-dnix
+	;;
     M68*:*:R3V[5678]*:*)
 	test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
     3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
 	OS_REL=''
 	test -r /etc/.relid \
-	&& OS_REL=.$(sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid)
+	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
 	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
 	  && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
 	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
@@ -1241,7 +1282,7 @@ EOF
     NCR*:*:4.2:* | MPRAS*:*:4.2:*)
 	OS_REL='.3'
 	test -r /etc/.relid \
-	    && OS_REL=.$(sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid)
+	    && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
 	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
 	    && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
 	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
@@ -1249,118 +1290,118 @@ EOF
 	/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
 	    && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
     m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
-	echo m68k-unknown-lynxos"$UNAME_RELEASE"
-	exit ;;
+	GUESS=m68k-unknown-lynxos$UNAME_RELEASE
+	;;
     mc68030:UNIX_System_V:4.*:*)
-	echo m68k-atari-sysv4
-	exit ;;
+	GUESS=m68k-atari-sysv4
+	;;
     TSUNAMI:LynxOS:2.*:*)
-	echo sparc-unknown-lynxos"$UNAME_RELEASE"
-	exit ;;
+	GUESS=sparc-unknown-lynxos$UNAME_RELEASE
+	;;
     rs6000:LynxOS:2.*:*)
-	echo rs6000-unknown-lynxos"$UNAME_RELEASE"
-	exit ;;
+	GUESS=rs6000-unknown-lynxos$UNAME_RELEASE
+	;;
     PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
-	echo powerpc-unknown-lynxos"$UNAME_RELEASE"
-	exit ;;
+	GUESS=powerpc-unknown-lynxos$UNAME_RELEASE
+	;;
     SM[BE]S:UNIX_SV:*:*)
-	echo mips-dde-sysv"$UNAME_RELEASE"
-	exit ;;
+	GUESS=mips-dde-sysv$UNAME_RELEASE
+	;;
     RM*:ReliantUNIX-*:*:*)
-	echo mips-sni-sysv4
-	exit ;;
+	GUESS=mips-sni-sysv4
+	;;
     RM*:SINIX-*:*:*)
-	echo mips-sni-sysv4
-	exit ;;
+	GUESS=mips-sni-sysv4
+	;;
     *:SINIX-*:*:*)
 	if uname -p 2>/dev/null >/dev/null ; then
-		UNAME_MACHINE=$( (uname -p) 2>/dev/null)
-		echo "$UNAME_MACHINE"-sni-sysv4
+		UNAME_MACHINE=`(uname -p) 2>/dev/null`
+		GUESS=$UNAME_MACHINE-sni-sysv4
 	else
-		echo ns32k-sni-sysv
+		GUESS=ns32k-sni-sysv
 	fi
-	exit ;;
+	;;
     PENTIUM:*:4.0*:*)	# Unisys `ClearPath HMP IX 4000' SVR4/MP effort
 			# says <Richard.M.Bartel@ccMail.Census.GOV>
-	echo i586-unisys-sysv4
-	exit ;;
+	GUESS=i586-unisys-sysv4
+	;;
     *:UNIX_System_V:4*:FTX*)
 	# From Gerald Hewes <hewes@openmarket.com>.
 	# How about differentiating between stratus architectures? -djm
-	echo hppa1.1-stratus-sysv4
-	exit ;;
+	GUESS=hppa1.1-stratus-sysv4
+	;;
     *:*:*:FTX*)
 	# From seanf@swdc.stratus.com.
-	echo i860-stratus-sysv4
-	exit ;;
+	GUESS=i860-stratus-sysv4
+	;;
     i*86:VOS:*:*)
 	# From Paul.Green@stratus.com.
-	echo "$UNAME_MACHINE"-stratus-vos
-	exit ;;
+	GUESS=$UNAME_MACHINE-stratus-vos
+	;;
     *:VOS:*:*)
 	# From Paul.Green@stratus.com.
-	echo hppa1.1-stratus-vos
-	exit ;;
+	GUESS=hppa1.1-stratus-vos
+	;;
     mc68*:A/UX:*:*)
-	echo m68k-apple-aux"$UNAME_RELEASE"
-	exit ;;
+	GUESS=m68k-apple-aux$UNAME_RELEASE
+	;;
     news*:NEWS-OS:6*:*)
-	echo mips-sony-newsos6
-	exit ;;
+	GUESS=mips-sony-newsos6
+	;;
     R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
 	if test -d /usr/nec; then
-		echo mips-nec-sysv"$UNAME_RELEASE"
+		GUESS=mips-nec-sysv$UNAME_RELEASE
 	else
-		echo mips-unknown-sysv"$UNAME_RELEASE"
+		GUESS=mips-unknown-sysv$UNAME_RELEASE
 	fi
-	exit ;;
+	;;
     BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
-	echo powerpc-be-beos
-	exit ;;
+	GUESS=powerpc-be-beos
+	;;
     BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
-	echo powerpc-apple-beos
-	exit ;;
+	GUESS=powerpc-apple-beos
+	;;
     BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
-	echo i586-pc-beos
-	exit ;;
+	GUESS=i586-pc-beos
+	;;
     BePC:Haiku:*:*)	# Haiku running on Intel PC compatible.
-	echo i586-pc-haiku
-	exit ;;
+	GUESS=i586-pc-haiku
+	;;
     x86_64:Haiku:*:*)
-	echo x86_64-unknown-haiku
-	exit ;;
+	GUESS=x86_64-unknown-haiku
+	;;
     SX-4:SUPER-UX:*:*)
-	echo sx4-nec-superux"$UNAME_RELEASE"
-	exit ;;
+	GUESS=sx4-nec-superux$UNAME_RELEASE
+	;;
     SX-5:SUPER-UX:*:*)
-	echo sx5-nec-superux"$UNAME_RELEASE"
-	exit ;;
+	GUESS=sx5-nec-superux$UNAME_RELEASE
+	;;
     SX-6:SUPER-UX:*:*)
-	echo sx6-nec-superux"$UNAME_RELEASE"
-	exit ;;
+	GUESS=sx6-nec-superux$UNAME_RELEASE
+	;;
     SX-7:SUPER-UX:*:*)
-	echo sx7-nec-superux"$UNAME_RELEASE"
-	exit ;;
+	GUESS=sx7-nec-superux$UNAME_RELEASE
+	;;
     SX-8:SUPER-UX:*:*)
-	echo sx8-nec-superux"$UNAME_RELEASE"
-	exit ;;
+	GUESS=sx8-nec-superux$UNAME_RELEASE
+	;;
     SX-8R:SUPER-UX:*:*)
-	echo sx8r-nec-superux"$UNAME_RELEASE"
-	exit ;;
+	GUESS=sx8r-nec-superux$UNAME_RELEASE
+	;;
     SX-ACE:SUPER-UX:*:*)
-	echo sxace-nec-superux"$UNAME_RELEASE"
-	exit ;;
+	GUESS=sxace-nec-superux$UNAME_RELEASE
+	;;
     Power*:Rhapsody:*:*)
-	echo powerpc-apple-rhapsody"$UNAME_RELEASE"
-	exit ;;
+	GUESS=powerpc-apple-rhapsody$UNAME_RELEASE
+	;;
     *:Rhapsody:*:*)
-	echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE"
-	exit ;;
+	GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE
+	;;
     arm64:Darwin:*:*)
-	echo aarch64-apple-darwin"$UNAME_RELEASE"
-	exit ;;
+	GUESS=aarch64-apple-darwin$UNAME_RELEASE
+	;;
     *:Darwin:*:*)
-	UNAME_PROCESSOR=$(uname -p)
+	UNAME_PROCESSOR=`uname -p`
 	case $UNAME_PROCESSOR in
 	    unknown) UNAME_PROCESSOR=powerpc ;;
 	esac
@@ -1394,109 +1435,119 @@ EOF
 	    # uname -m returns i386 or x86_64
 	    UNAME_PROCESSOR=$UNAME_MACHINE
 	fi
-	echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE"
-	exit ;;
+	GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE
+	;;
     *:procnto*:*:* | *:QNX:[0123456789]*:*)
-	UNAME_PROCESSOR=$(uname -p)
+	UNAME_PROCESSOR=`uname -p`
 	if test "$UNAME_PROCESSOR" = x86; then
 		UNAME_PROCESSOR=i386
 		UNAME_MACHINE=pc
 	fi
-	echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE"
-	exit ;;
+	GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE
+	;;
     *:QNX:*:4*)
-	echo i386-pc-qnx
-	exit ;;
+	GUESS=i386-pc-qnx
+	;;
     NEO-*:NONSTOP_KERNEL:*:*)
-	echo neo-tandem-nsk"$UNAME_RELEASE"
-	exit ;;
+	GUESS=neo-tandem-nsk$UNAME_RELEASE
+	;;
     NSE-*:NONSTOP_KERNEL:*:*)
-	echo nse-tandem-nsk"$UNAME_RELEASE"
-	exit ;;
+	GUESS=nse-tandem-nsk$UNAME_RELEASE
+	;;
     NSR-*:NONSTOP_KERNEL:*:*)
-	echo nsr-tandem-nsk"$UNAME_RELEASE"
-	exit ;;
+	GUESS=nsr-tandem-nsk$UNAME_RELEASE
+	;;
     NSV-*:NONSTOP_KERNEL:*:*)
-	echo nsv-tandem-nsk"$UNAME_RELEASE"
-	exit ;;
+	GUESS=nsv-tandem-nsk$UNAME_RELEASE
+	;;
     NSX-*:NONSTOP_KERNEL:*:*)
-	echo nsx-tandem-nsk"$UNAME_RELEASE"
-	exit ;;
+	GUESS=nsx-tandem-nsk$UNAME_RELEASE
+	;;
     *:NonStop-UX:*:*)
-	echo mips-compaq-nonstopux
-	exit ;;
+	GUESS=mips-compaq-nonstopux
+	;;
     BS2000:POSIX*:*:*)
-	echo bs2000-siemens-sysv
-	exit ;;
+	GUESS=bs2000-siemens-sysv
+	;;
     DS/*:UNIX_System_V:*:*)
-	echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE"
-	exit ;;
+	GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE
+	;;
     *:Plan9:*:*)
 	# "uname -m" is not consistent, so use $cputype instead. 386
 	# is converted to i386 for consistency with other x86
 	# operating systems.
-	# shellcheck disable=SC2154
-	if test "$cputype" = 386; then
+	if test "${cputype-}" = 386; then
 	    UNAME_MACHINE=i386
-	else
-	    UNAME_MACHINE="$cputype"
+	elif test "x${cputype-}" != x; then
+	    UNAME_MACHINE=$cputype
 	fi
-	echo "$UNAME_MACHINE"-unknown-plan9
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-plan9
+	;;
     *:TOPS-10:*:*)
-	echo pdp10-unknown-tops10
-	exit ;;
+	GUESS=pdp10-unknown-tops10
+	;;
     *:TENEX:*:*)
-	echo pdp10-unknown-tenex
-	exit ;;
+	GUESS=pdp10-unknown-tenex
+	;;
     KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
-	echo pdp10-dec-tops20
-	exit ;;
+	GUESS=pdp10-dec-tops20
+	;;
     XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
-	echo pdp10-xkl-tops20
-	exit ;;
+	GUESS=pdp10-xkl-tops20
+	;;
     *:TOPS-20:*:*)
-	echo pdp10-unknown-tops20
-	exit ;;
+	GUESS=pdp10-unknown-tops20
+	;;
     *:ITS:*:*)
-	echo pdp10-unknown-its
-	exit ;;
+	GUESS=pdp10-unknown-its
+	;;
     SEI:*:*:SEIUX)
-	echo mips-sei-seiux"$UNAME_RELEASE"
-	exit ;;
+	GUESS=mips-sei-seiux$UNAME_RELEASE
+	;;
     *:DragonFly:*:*)
-	echo "$UNAME_MACHINE"-unknown-dragonfly"$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')"
-	exit ;;
+	DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+	GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL
+	;;
     *:*VMS:*:*)
-	UNAME_MACHINE=$( (uname -p) 2>/dev/null)
-	case "$UNAME_MACHINE" in
-	    A*) echo alpha-dec-vms ; exit ;;
-	    I*) echo ia64-dec-vms ; exit ;;
-	    V*) echo vax-dec-vms ; exit ;;
+	UNAME_MACHINE=`(uname -p) 2>/dev/null`
+	case $UNAME_MACHINE in
+	    A*) GUESS=alpha-dec-vms ;;
+	    I*) GUESS=ia64-dec-vms ;;
+	    V*) GUESS=vax-dec-vms ;;
 	esac ;;
     *:XENIX:*:SysV)
-	echo i386-pc-xenix
-	exit ;;
+	GUESS=i386-pc-xenix
+	;;
     i*86:skyos:*:*)
-	echo "$UNAME_MACHINE"-pc-skyos"$(echo "$UNAME_RELEASE" | sed -e 's/ .*$//')"
-	exit ;;
+	SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`
+	GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL
+	;;
     i*86:rdos:*:*)
-	echo "$UNAME_MACHINE"-pc-rdos
-	exit ;;
-    i*86:AROS:*:*)
-	echo "$UNAME_MACHINE"-pc-aros
-	exit ;;
+	GUESS=$UNAME_MACHINE-pc-rdos
+	;;
+    i*86:Fiwix:*:*)
+	GUESS=$UNAME_MACHINE-pc-fiwix
+	;;
+    *:AROS:*:*)
+	GUESS=$UNAME_MACHINE-unknown-aros
+	;;
     x86_64:VMkernel:*:*)
-	echo "$UNAME_MACHINE"-unknown-esx
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-esx
+	;;
     amd64:Isilon\ OneFS:*:*)
-	echo x86_64-unknown-onefs
-	exit ;;
+	GUESS=x86_64-unknown-onefs
+	;;
     *:Unleashed:*:*)
-	echo "$UNAME_MACHINE"-unknown-unleashed"$UNAME_RELEASE"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE
+	;;
 esac
 
+# Do we have a guess based on uname results?
+if test "x$GUESS" != x; then
+    echo "$GUESS"
+    exit
+fi
+
 # No uname command or uname output not recognized.
 set_cc_for_build
 cat > "$dummy.c" <<EOF
@@ -1536,7 +1587,7 @@ main ()
 #define __ARCHITECTURE__ "m68k"
 #endif
   int version;
-  version=$( (hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null);
+  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
   if (version < 4)
     printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
   else
@@ -1628,7 +1679,7 @@ main ()
 }
 EOF
 
-$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=$($dummy) &&
+$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` &&
 	{ echo "$SYSTEM_NAME"; exit; }
 
 # Apollos put the system type in the environment.
@@ -1636,7 +1687,7 @@ test -d /usr/apollo && { echo "$ISP-apol
 
 echo "$0: unable to guess system type" >&2
 
-case "$UNAME_MACHINE:$UNAME_SYSTEM" in
+case $UNAME_MACHINE:$UNAME_SYSTEM in
     mips:Linux | mips64:Linux)
 	# If we got here on MIPS GNU/Linux, output extra information.
 	cat >&2 <<EOF
@@ -1658,9 +1709,11 @@ and
   https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
 EOF
 
-year=$(echo $timestamp | sed 's,-.*,,')
+our_year=`echo $timestamp | sed 's,-.*,,'`
+thisyear=`date +%Y`
 # shellcheck disable=SC2003
-if test "$(expr "$(date +%Y)" - "$year")" -lt 3 ; then
+script_age=`expr "$thisyear" - "$our_year"`
+if test "$script_age" -lt 3 ; then
    cat >&2 <<EOF
 
 If $0 has already been updated, send the following data and any
@@ -1669,20 +1722,20 @@ provide the necessary information to han
 
 config.guess timestamp = $timestamp
 
-uname -m = $( (uname -m) 2>/dev/null || echo unknown)
-uname -r = $( (uname -r) 2>/dev/null || echo unknown)
-uname -s = $( (uname -s) 2>/dev/null || echo unknown)
-uname -v = $( (uname -v) 2>/dev/null || echo unknown)
-
-/usr/bin/uname -p = $( (/usr/bin/uname -p) 2>/dev/null)
-/bin/uname -X     = $( (/bin/uname -X) 2>/dev/null)
-
-hostinfo               = $( (hostinfo) 2>/dev/null)
-/bin/universe          = $( (/bin/universe) 2>/dev/null)
-/usr/bin/arch -k       = $( (/usr/bin/arch -k) 2>/dev/null)
-/bin/arch              = $( (/bin/arch) 2>/dev/null)
-/usr/bin/oslevel       = $( (/usr/bin/oslevel) 2>/dev/null)
-/usr/convex/getsysinfo = $( (/usr/convex/getsysinfo) 2>/dev/null)
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo               = `(hostinfo) 2>/dev/null`
+/bin/universe          = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch              = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
 
 UNAME_MACHINE = "$UNAME_MACHINE"
 UNAME_RELEASE = "$UNAME_RELEASE"
diff -Nurp inn-2.6.4/support/config.sub inn-2.6.5/support/config.sub
--- inn-2.6.4/support/config.sub	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/support/config.sub	2022-02-18 20:36:57.000000000 +0100
@@ -1,12 +1,14 @@
 #! /bin/sh
 # Configuration validation subroutine script.
-#   Copyright 1992-2021 Free Software Foundation, Inc.
+#   Copyright 1992-2022 Free Software Foundation, Inc.
 
-timestamp='2021-01-07'
+# shellcheck disable=SC2006,SC2268 # see below for rationale
+
+timestamp='2022-01-03'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
+# the Free Software Foundation, either version 3 of the License, or
 # (at your option) any later version.
 #
 # This program is distributed in the hope that it will be useful, but
@@ -50,7 +52,14 @@ timestamp='2021-01-07'
 #	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
 # It is wrong to echo any other type of specification.
 
-me=$(echo "$0" | sed -e 's,.*/,,')
+# The "shellcheck disable" line above the timestamp inhibits complaints
+# about features and limitations of the classic Bourne shell that were
+# superseded or lifted in POSIX.  However, this script identifies a wide
+# variety of pre-POSIX systems that do not have POSIX shells at all, and
+# even some reasonably current systems (Solaris 10 as case-in-point) still
+# have a pre-POSIX /bin/sh.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
 
 usage="\
 Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
@@ -67,7 +76,7 @@ Report bugs and patches to <config-patch
 version="\
 GNU config.sub ($timestamp)
 
-Copyright 1992-2021 Free Software Foundation, Inc.
+Copyright 1992-2022 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -112,9 +121,11 @@ esac
 
 # Split fields of configuration type
 # shellcheck disable=SC2162
+saved_IFS=$IFS
 IFS="-" read field1 field2 field3 field4 <<EOF
 $1
 EOF
+IFS=$saved_IFS
 
 # Separate into logical components for further validation
 case $1 in
@@ -163,6 +174,10 @@ case $1 in
 						basic_machine=$field1
 						basic_os=$field2
 						;;
+					zephyr*)
+						basic_machine=$field1-unknown
+						basic_os=$field2
+						;;
 					# Manufacturers
 					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
 					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
@@ -769,22 +784,22 @@ case $basic_machine in
 		vendor=hp
 		;;
 	i*86v32)
-		cpu=$(echo "$1" | sed -e 's/86.*/86/')
+		cpu=`echo "$1" | sed -e 's/86.*/86/'`
 		vendor=pc
 		basic_os=sysv32
 		;;
 	i*86v4*)
-		cpu=$(echo "$1" | sed -e 's/86.*/86/')
+		cpu=`echo "$1" | sed -e 's/86.*/86/'`
 		vendor=pc
 		basic_os=sysv4
 		;;
 	i*86v)
-		cpu=$(echo "$1" | sed -e 's/86.*/86/')
+		cpu=`echo "$1" | sed -e 's/86.*/86/'`
 		vendor=pc
 		basic_os=sysv
 		;;
 	i*86sol2)
-		cpu=$(echo "$1" | sed -e 's/86.*/86/')
+		cpu=`echo "$1" | sed -e 's/86.*/86/'`
 		vendor=pc
 		basic_os=solaris2
 		;;
@@ -917,14 +932,16 @@ case $basic_machine in
 		;;
 	leon-*|leon[3-9]-*)
 		cpu=sparc
-		vendor=$(echo "$basic_machine" | sed 's/-.*//')
+		vendor=`echo "$basic_machine" | sed 's/-.*//'`
 		;;
 
 	*-*)
 		# shellcheck disable=SC2162
+		saved_IFS=$IFS
 		IFS="-" read cpu vendor <<EOF
 $basic_machine
 EOF
+		IFS=$saved_IFS
 		;;
 	# We use `pc' rather than `unknown'
 	# because (1) that's what they normally are, and
@@ -1003,6 +1020,11 @@ case $cpu-$vendor in
 		;;
 
 	# Here we normalize CPU types with a missing or matching vendor
+	armh-unknown | armh-alt)
+		cpu=armv7l
+		vendor=alt
+		basic_os=${basic_os:-linux-gnueabihf}
+		;;
 	dpx20-unknown | dpx20-bull)
 		cpu=rs6000
 		vendor=bull
@@ -1084,7 +1106,7 @@ case $cpu-$vendor in
 		cpu=mipsisa64sb1el
 		;;
 	sh5e[lb]-*)
-		cpu=$(echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/')
+		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
 		;;
 	spur-*)
 		cpu=spur
@@ -1102,9 +1124,9 @@ case $cpu-$vendor in
 		cpu=x86_64
 		;;
 	xscale-* | xscalee[bl]-*)
-		cpu=$(echo "$cpu" | sed 's/^xscale/arm/')
+		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
 		;;
-	arm64-*)
+	arm64-* | aarch64le-*)
 		cpu=aarch64
 		;;
 
@@ -1165,7 +1187,7 @@ case $cpu-$vendor in
 			| alphapca5[67] | alpha64pca5[67] \
 			| am33_2.0 \
 			| amdgcn \
-			| arc | arceb \
+			| arc | arceb | arc32 | arc64 \
 			| arm | arm[lb]e | arme[lb] | armv* \
 			| avr | avr32 \
 			| asmjs \
@@ -1204,9 +1226,13 @@ case $cpu-$vendor in
 			| mips64vr5900 | mips64vr5900el \
 			| mipsisa32 | mipsisa32el \
 			| mipsisa32r2 | mipsisa32r2el \
+			| mipsisa32r3 | mipsisa32r3el \
+			| mipsisa32r5 | mipsisa32r5el \
 			| mipsisa32r6 | mipsisa32r6el \
 			| mipsisa64 | mipsisa64el \
 			| mipsisa64r2 | mipsisa64r2el \
+			| mipsisa64r3 | mipsisa64r3el \
+			| mipsisa64r5 | mipsisa64r5el \
 			| mipsisa64r6 | mipsisa64r6el \
 			| mipsisa64sb1 | mipsisa64sb1el \
 			| mipsisa64sr71k | mipsisa64sr71kel \
@@ -1283,35 +1309,37 @@ esac
 if test x$basic_os != x
 then
 
-# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just
+# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
 # set os.
 case $basic_os in
 	gnu/linux*)
 		kernel=linux
-		os=$(echo $basic_os | sed -e 's|gnu/linux|gnu|')
+		os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
 		;;
 	os2-emx)
 		kernel=os2
-		os=$(echo $basic_os | sed -e 's|os2-emx|emx|')
+		os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
 		;;
 	nto-qnx*)
 		kernel=nto
-		os=$(echo $basic_os | sed -e 's|nto-qnx|qnx|')
+		os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
 		;;
 	*-*)
 		# shellcheck disable=SC2162
+		saved_IFS=$IFS
 		IFS="-" read kernel os <<EOF
 $basic_os
 EOF
+		IFS=$saved_IFS
 		;;
 	# Default OS when just kernel was specified
 	nto*)
 		kernel=nto
-		os=$(echo $basic_os | sed -e 's|nto|qnx|')
+		os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
 		;;
 	linux*)
 		kernel=linux
-		os=$(echo $basic_os | sed -e 's|linux|gnu|')
+		os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
 		;;
 	*)
 		kernel=
@@ -1332,7 +1360,7 @@ case $os in
 		os=cnk
 		;;
 	solaris1 | solaris1.*)
-		os=$(echo $os | sed -e 's|solaris1|sunos4|')
+		os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
 		;;
 	solaris)
 		os=solaris2
@@ -1361,7 +1389,7 @@ case $os in
 		os=sco3.2v4
 		;;
 	sco3.2.[4-9]*)
-		os=$(echo $os | sed -e 's/sco3.2./sco3.2v/')
+		os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
 		;;
 	sco*v* | scout)
 		# Don't match below
@@ -1391,7 +1419,7 @@ case $os in
 		os=lynxos
 		;;
 	mac[0-9]*)
-		os=$(echo "$os" | sed -e 's|mac|macos|')
+		os=`echo "$os" | sed -e 's|mac|macos|'`
 		;;
 	opened*)
 		os=openedition
@@ -1400,10 +1428,10 @@ case $os in
 		os=os400
 		;;
 	sunos5*)
-		os=$(echo "$os" | sed -e 's|sunos5|solaris2|')
+		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
 		;;
 	sunos6*)
-		os=$(echo "$os" | sed -e 's|sunos6|solaris3|')
+		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
 		;;
 	wince*)
 		os=wince
@@ -1437,7 +1465,7 @@ case $os in
 		;;
 	# Preserve the version number of sinix5.
 	sinix5.*)
-		os=$(echo $os | sed -e 's|sinix|sysv|')
+		os=`echo "$os" | sed -e 's|sinix|sysv|'`
 		;;
 	sinix*)
 		os=sysv4
@@ -1683,12 +1711,15 @@ fi
 
 # Now, validate our (potentially fixed-up) OS.
 case $os in
-	# Sometimes we do "kernel-abi", so those need to count as OSes.
-	musl* | newlib* | uclibc*)
+	# Sometimes we do "kernel-libc", so those need to count as OSes.
+	musl* | newlib* | relibc* | uclibc*)
 		;;
-	# Likewise for "kernel-libc"
+	# Likewise for "kernel-abi"
 	eabi* | gnueabi*)
 		;;
+	# VxWorks passes extra cpu info in the 4th filed.
+	simlinux | simwindows | spe)
+		;;
 	# Now accept the basic system types.
 	# The portable systems comes first.
 	# Each alternative MUST end in a * to match a version number.
@@ -1704,12 +1735,12 @@ case $os in
 	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
 	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
 	     | mirbsd* | netbsd* | dicos* | openedition* | ose* \
-	     | bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \
+	     | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
 	     | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
 	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
 	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
 	     | udi* | lites* | ieee* | go32* | aux* | hcos* \
-	     | chorusrdb* | cegcc* | glidix* \
+	     | chorusrdb* | cegcc* | glidix* | serenity* \
 	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
 	     | midipix* | mingw32* | mingw64* | mint* \
 	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
@@ -1722,7 +1753,8 @@ case $os in
 	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
 	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
 	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
-	     | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx*)
+	     | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \
+	     | fiwix* )
 		;;
 	# This one is extra strict with allowed versions
 	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
@@ -1739,11 +1771,12 @@ esac
 # As a final step for OS-related things, validate the OS-kernel combination
 # (given a valid OS), if there is a kernel.
 case $kernel-$os in
-	linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* | linux-musl* | linux-uclibc* )
+	linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
+		   | linux-musl* | linux-relibc* | linux-uclibc* )
 		;;
 	uclinux-uclibc* )
 		;;
-	-dietlibc* | -newlib* | -musl* | -uclibc* )
+	-dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* )
 		# These are just libc implementations, not actual OSes, and thus
 		# require a kernel.
 		echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
@@ -1751,6 +1784,8 @@ case $kernel-$os in
 		;;
 	kfreebsd*-gnu* | kopensolaris*-gnu*)
 		;;
+	vxworks-simlinux | vxworks-simwindows | vxworks-spe)
+		;;
 	nto-qnx*)
 		;;
 	os2-emx)
diff -Nurp inn-2.6.4/support/fixconfig.in inn-2.6.5/support/fixconfig.in
--- inn-2.6.4/support/fixconfig.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/support/fixconfig.in	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,5 @@
 #! /bin/sh
 
-##  $Id: fixconfig.in 8471 2009-05-17 08:25:35Z iulius $
-##
 ##  Make variable substitutions in configuration files.
 ##
 ##  This script does something very similar to what config.status does, but
diff -Nurp inn-2.6.4/support/fixscript.in inn-2.6.5/support/fixscript.in
--- inn-2.6.4/support/fixscript.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/support/fixscript.in	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,5 @@
 #! /bin/sh
 
-##  $Id: fixscript.in 8560 2009-08-14 18:31:09Z iulius $
-##
 ##  Fix interpreter paths and INN variable load paths.
 ##
 ##  Scripts shipped with INN always have the invocation path for the
diff -Nurp inn-2.6.4/support/getc-tap-harness inn-2.6.5/support/getc-tap-harness
--- inn-2.6.4/support/getc-tap-harness	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/support/getc-tap-harness	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,5 @@
 #!/bin/sh
 
-##  $Id: getc-tap-harness 10311 2018-12-17 08:04:06Z iulius $
-##
 ##  Synchronize INN files maintained in c-tap-harness with upstream.
 ##
 ##  This script downloads the latest version of the files maintained
@@ -42,30 +40,19 @@ download ()
   else
     if [ "$2" = "tests" ] || [ "$2" = "tests/docs" ] || [ "$2" = "tests/tap" ]
     then
-      # Add the SVN Id keyword at the beginning of source code files,
-      # and update the path of included C header files.
+      # Update the path of included C header files.
       # Changes in shell, Perl and C files are not the same.
       # Also, do not modify the README file.
-      if [ "$3" = "libtap.sh" ]
-      then
-        sed -i -e "1 i \\
-# \$Id\$\\
-#" \
-               ${TEMP}
-      elif [ "$3" = "pod.t" ]
+      if [ "$3" = "pod.t" ]
       then
         # Apply specific changes to POD checking, so as to best suit
         # our needs.
-        sed -i -e "3 i \\
-# \$Id\$\\
-#" \
-               -e '5,9d' \
+        sed -i -e '5,9d' \
                ${TEMP}
         chmod 755 ${TEMP}
       elif [ "$3" != "README" ]
       then
-        sed -i -e '1 s/$/ \$Id\$\n */' \
-               -e 's/^#include <tests\/tap\//#include <tap\//g' \
+        sed -i -e 's/^#include <tests\/tap\//#include <tap\//g' \
                ${TEMP}
       fi
     fi
@@ -73,7 +60,7 @@ download ()
     # Specific additions to a few files.
     if [ "$3" = "basic.c" ]
     then
-      sed -i -e "58 i \\
+      sed -i -e "57 i \\
 /* Specific to the integration of C TAP Harness in INN. */\\
 #ifndef LIBTEST_NEW_FORMAT\\
 # include \"inn/libinn.h\"\\
@@ -133,9 +120,9 @@ ok_string(int n UNUSED, const char *want
 }\\
 #endif\\
 " \
-             -e "154 i \\
+             -e "153 i \\
 #ifndef INN_LIBINN_H" \
-             -e "188 i \\
+             -e "187 i \\
 #endif" \
              -e 's/^ok.int /new_ok(int /g' \
              -e 's/^skip.const /new_skip(const /g' \
@@ -146,7 +133,7 @@ ok_string(int n UNUSED, const char *want
 
     if [ "$3" = "basic.h" ]
     then
-      sed -i -e "77 i \\
+      sed -i -e "76 i \\
 #ifndef LIBTEST_NEW_FORMAT\\
 /* Specific to the integration of C TAP Harness in INN. */\\
 void ok(int n, int success);\\
@@ -172,14 +159,14 @@ void test_init(int count);\\
 # define skip new_skip\\
 # define ok_block new_ok_block\\
 # define skip_block new_skip_block" \
-             -e "92 i \\
+             -e "91 i \\
 #endif" \
              ${TEMP}
     fi
 
     if [ "$3" = "float.c" ]
     then
-      sed -i -e "51 i \\
+      sed -i -e "50 i \\
 #ifndef LIBTEST_NEW_FORMAT\\
 /* Specific to the integration of C TAP Harness in INN. */\\
 void\\
@@ -194,7 +181,7 @@ ok_double(int n UNUSED, double wanted, d
 
     if [ "$3" = "float.h" ]
     then
-      sed -i -e "39 i \\
+      sed -i -e "38 i \\
 #ifndef LIBTEST_NEW_FORMAT\\
 /* Specific to the integration of C TAP Harness in INN. */\\
 void ok_double(int n, double wanted, double seen);\\
@@ -203,7 +190,7 @@ void ok_double(int n, double wanted, dou
     fi
 
     mv -f ${TEMP} ../$2/$3
-    svn status ../$2/$3
+    git status --short ../$2/$3
   fi
 }
 
diff -Nurp inn-2.6.4/support/getrra-c-util inn-2.6.5/support/getrra-c-util
--- inn-2.6.4/support/getrra-c-util	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/support/getrra-c-util	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,5 @@
 #!/bin/sh
 
-##  $Id: getrra-c-util 10483 2021-01-04 07:12:27Z iulius $
-##
 ##  Synchronize INN files maintained in rra-c-util with upstream.
 ##
 ##  This script downloads the latest version of the files maintained
@@ -41,8 +39,7 @@ download ()
   then
     echo "File $1 does not exist in upstream package"
   else
-    # Add the SVN Id keyword at the beginning of source code files,
-    # and update the path of included C header files.
+    # Update the path of included C header files.
     # Change "RRA_" to "INN_", "rra_" to "inn_", and "UTIL_" to "INN_"
     # so as to keep a homogeneous naming convention in INN source code.
     # Changes in shell, m4 and C files are not the same.
@@ -50,8 +47,6 @@ download ()
     then
       sed -i -e 's/RRA_/INN_/g' \
              -e 's/rra_/inn_/g' \
-             -e '1 a\
-dnl \$Id\$' \
              ${TEMP}
 
       # Remove useless function for INN.
@@ -59,6 +54,7 @@ dnl \$Id\$' \
       then
         sed -i -e '/dnl Provides INN_PROG_CC_WARNINGS_FLAGS/,+6d' \
                -e '/dnl Determine the full set/,$d' \
+               -e '/test x"$CLANG" = xyes/,+1d' \
              ${TEMP}
       fi
     elif [ "$2" = "include/inn" ] || [ "$2" = "include/portable" ] \
@@ -68,10 +64,7 @@ dnl \$Id\$' \
       if [ "$3" = "xmalloc.t" ]
       then
         # Path should be updated in this shell script.
-        sed -i -e "3 i \\
-# \$Id\$\\
-#" \
-               -e 's/\$C_TAP_BUILD\/util/\$C_TAP_BUILD\/lib/g' \
+        sed -i -e 's/\$C_TAP_BUILD\/util/\$C_TAP_BUILD\/lib/g' \
                ${TEMP}
         chmod 755 ${TEMP}
       else
@@ -205,15 +198,21 @@ extern char * strtok(char *, const char
                -e 's/<portable\/\(.*\)>/"portable\/\1"/g' \
                -e 's/<tests\/tap\/\(.*\)>/"tap\/\1"/g' \
                -e 's/<tests\/util\/\(.*\)>/"lib\/\1"/g' \
-               -e '1 s/$/ \$Id\$\n */' \
                ${TEMP}
 
         # For compatibility with the integration of C TAP Harness in INN.
         if [ "$2" = "tests/lib" ] || [ "$2" = "tests/lib/network" ] \
           || [ "$3" = "process.c" ]
         then
-          sed -i -e "0,/^$/{s/^$/\n#define LIBTEST_NEW_FORMAT 1\n/}" \
-                 ${TEMP}
+          case "$3" in
+          fakewrite.c)
+              ;;
+          xmalloc.c)
+              ;;
+          *.c)
+              sed -i -e "0,/^$/{s/^$/\n#define LIBTEST_NEW_FORMAT 1\n/}" \
+                     ${TEMP}
+          esac
         fi
 
         # Rename a few symbols defined by autoconf since they're too likely
@@ -237,7 +236,7 @@ extern char * strtok(char *, const char
     fi
 
     mv -f ${TEMP} ../$2/$3
-    svn status ../$2/$3
+    git status --short ../$2/$3
   fi
 }
 
@@ -273,6 +272,7 @@ download portable/inet_ntop.c lib inet_n
 download portable/macros.h include/portable macros.h
 download portable/mkstemp.c lib mkstemp.c
 download portable/reallocarray.c lib reallocarray.c
+download portable/sd-daemon.c lib sd-daemon.c
 download portable/sd-daemon.h include/portable sd-daemon.h
 download portable/setenv.c lib setenv.c
 download portable/seteuid.c lib seteuid.c
diff -Nurp inn-2.6.4/support/indent inn-2.6.5/support/indent
--- inn-2.6.4/support/indent	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/support/indent	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,5 @@
 #! /bin/sh
 
-##  $Id: indent 5165 2002-03-02 01:43:53Z rra $
-##
 ##  Run indent on source files with INN options.
 ##
 ##  This is a simple wrapper around GNU indent to call it with all of the
diff -Nurp inn-2.6.4/support/makedepend inn-2.6.5/support/makedepend
--- inn-2.6.4/support/makedepend	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/support/makedepend	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,5 @@
 #! /bin/sh
 
-##  $Id: makedepend 9566 2013-11-11 13:01:42Z iulius $
-##
 ##  Generate dependencies for INN makefiles
 ##
 ##  This shell script automates the process of updating the dependencies in
diff -Nurp inn-2.6.4/support/mkchangelog inn-2.6.5/support/mkchangelog
--- inn-2.6.4/support/mkchangelog	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/support/mkchangelog	1970-01-01 01:00:00.000000000 +0100
@@ -1,25 +0,0 @@
-#! /usr/bin/perl -w
-
-##  $Id: mkchangelog 7516 2006-04-15 02:51:03Z eagle $
-##
-##  Generate a ChangeLog from svn log using svn2cl.
-##
-##  This script prompts the user for a date from which to pull log entries
-##  and the prefix to strip from file names and generates a ChangeLog file
-##  by running svn2cl.
-
-$| = 1;
-
-print "Enter prefix to strip from file names: ";
-my $prefix = <STDIN>;
-chomp $prefix;
-
-print "Enter date to start log at (YYYY-MM-DD): ";
-my $date = <STDIN>;
-chomp $date;
-
-print "\nRunning svn2cl....\n";
-my @options = qw(--strip-prefix=$prefix --reparagraph --group-by-day
-                 --separate-daylogs);
-system ('svn2cl', @options, '-r', "HEAD:{$date}") == 0
-    or die "svn2cl exited with status " . ($? >> 8) . "\n";
diff -Nurp inn-2.6.4/support/mkmanifest inn-2.6.5/support/mkmanifest
--- inn-2.6.4/support/mkmanifest	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/support/mkmanifest	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,5 @@
 #! /usr/bin/perl -w
 
-##  $Id: mkmanifest 10398 2020-11-12 20:23:42Z iulius $
-##
 ##  Generate a filename-only manifest from an INN tree.
 ##
 ##  This script generates a filename-only manifest from an INN tree, excluding
@@ -17,10 +15,12 @@ use vars qw(@FILES %IGNORE @IGNORE);
 use File::Find qw(find);
 
 # The following regex patterns match files to be ignored wherever they are in
-# the tree.  This is intended to handle files that CVS or Subversion ignores
-# by default.
-@IGNORE = (qr%(\A|/)\.cvsignore\Z%, qr/\.l?[ao]\Z/, qr%(\A|/)CVS(/|\Z)%,
-           qr%(\A|/)\.svn(/|\Z)%, qr%(\A|/)\.?\#%, qr%(\A|/)core\Z%,
+# the tree.  This is intended to handle files that CVS, Subversion or Git
+# ignores by default.
+@IGNORE = (qr%(\A|/)\.cvsignore\Z%, qr%(\A|/)CVS(/|\Z)%,
+           qr%(\A|/)\.svn(/|\Z)%,
+           qr%(\A|/)\.gitignore\Z%, qr%(\A|/)\.git(/|\Z)%,
+           qr/\.l?[ao]\Z/, qr%(\A|/)\.?\#%, qr%(\A|/)core\Z%,
            qr/\.(old|bak|orig|rej)$/, qr/~$/, qr%(\A|/)\.pure$%,
            qr%(\A|/)\.libs(/|\Z)%);
 
@@ -42,8 +42,8 @@ sub load_exclusions {
     }
 }
 
-# Build a list of all files in the tree that aren't ignored by .cvsignore
-# files or listed in ignore regexes.
+# Build a list of all files in the tree that aren't ignored by the version
+# control software or listed in ignore regexes.
 sub find_files {
     return if $_ eq '.';
     my $name = $File::Find::name;
@@ -67,8 +67,6 @@ __DATA__
 # The following additional files should be ignored.  The file names are
 # relative to the root of the tree.  Shell wildcards are supported.
 BOOTSTRAP
-CHANGES
-ChangeLog
 LIST.*
 Makefile.global
 README.*
@@ -182,7 +180,6 @@ innd/tinyleaf
 innfeed/imapfeed
 innfeed/innfeed
 innfeed/procbatch
-innfeed/version.c
 nnrpd/nnrpd
 perl/INN/Config.pm
 perl/INN/Utils/Shlock.pm
@@ -258,7 +255,6 @@ site/startup_innd.pl
 site/storage.conf
 site/subscriptions
 site/update
-snapshot.log
 storage/buildconfig
 storage/buffindexed/buffindexed_d
 storage/tradindexed/tdx-util
@@ -270,6 +266,7 @@ tests/clients/server-list
 tests/docs/pod.t
 tests/innd/artparse.t
 tests/innd/chan.t
+tests/lib/artnumber.t
 tests/lib/asprintf.t
 tests/lib/buffer.t
 tests/lib/concat.t
diff -Nurp inn-2.6.4/support/mksnapshot inn-2.6.5/support/mksnapshot
--- inn-2.6.4/support/mksnapshot	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/support/mksnapshot	2022-02-18 20:36:57.000000000 +0100
@@ -1,25 +1,24 @@
 #! /bin/sh
 
-##  $Id: mksnapshot 10290 2018-06-03 18:33:00Z eagle $
-##
 ##  Build a snapshot of the current tree.
 ##
-##  Meant to be run on a fresh Subversion checkout, this script does the
-##  necessary work to generate a snapshot.  It expects to be invoked from the
-##  top level of the source tree and leaves the generated snapshot in that
-##  same directory as a .tar.gz file.
+##  Meant to be run on a fresh Git checkout, this script does the necessary
+##  work to generate a snapshot.  It expects to be invoked from the top level
+##  of the source tree and leaves the generated snapshot in that same
+##  directory as a .tar.gz file.
 ##
 ##  Snapshot generation will fail if the tree will not compile or if make test
 ##  fails.  In either case, the output is left in snapshot.log.
 ##
 ##  This script takes one argument, a string representing what tree the
-##  snapshot is being taken from.  Generally this string is either CURRENT or
+##  snapshot is being taken from.  Generally this string is GIT, CURRENT, or
 ##  STABLE.  If this argument is BETA or RC, a second argument is needed: the
 ##  number of the beta version (for instance b1 or b2) or the release
 ##  candidate.
 ##
 ##  Examples of use:
 ##
+##    support/mksnapshot GIT
 ##    support/mksnapshot CURRENT
 ##    support/mksnapshot STABLE
 ##    support/mksnapshot BETA b1
@@ -81,7 +80,7 @@ else
 
     cat > README.snapshot <<EOF
 This is a snapshot of the current development version of INN, pulled
-automatically from the Subversion repository.  It was made on:
+automatically from the Git repository.  It was made on:
 
     `date -u +"%B %e, %Y @ %I:%M %p %Z"`
 
@@ -98,6 +97,17 @@ fi
 
 if [ "$tree" = "BETA" -o "$tree" = "RC" ] ; then
     make release RELEASENUMBER="$number" RELEASEEXTENSION="$extension"
+elif [ "$tree" = "GIT" ] ; then
+    BRANCH=$(git rev-parse --abbrev-ref HEAD)
+    if [ "$BRANCH" = main ] ; then
+        VERSION=$(grep -w '^VERSION' Makefile.global.in | awk '{ print $3 }')
+        VERSION=$(echo "$VERSION" | sed 's/.[0-9]*$//')
+        date=$(git log -1 --pretty=format:%cd --date=format:%Y%m%d)
+        SNAPDIR=inn-"$VERSION"-"$date"
+    else
+        SNAPDIR=inn-"$(git describe --tags)"
+    fi
+    make snapshot SNAPDIR="$SNAPDIR" SNAPDATE="$date"
 else
     make snapshot SNAPSHOT="$tree" SNAPDATE="$date"
 fi
diff -Nurp inn-2.6.4/support/mksystem inn-2.6.5/support/mksystem
--- inn-2.6.4/support/mksystem	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/support/mksystem	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,5 @@
 #! /bin/sh
 
-##  $Id: mksystem 9690 2014-09-15 20:07:40Z iulius $
-##
 ##  Create include/inn/system.h from include/config.h.
 ##
 ##  include/config.h is generated by autoconf and contains all of the test
diff -Nurp inn-2.6.4/support/mkversion inn-2.6.5/support/mkversion
--- inn-2.6.4/support/mkversion	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/support/mkversion	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,5 @@
 #! /bin/sh
 
-##  $Id: mkversion 7313 2005-06-11 19:28:03Z eagle $
-##
 ##  Create version.h from INN version information.
 ##
 ##  Makefile.global contains the INN version number and extra version
diff -Nurp inn-2.6.4/tests/Makefile inn-2.6.5/tests/Makefile
--- inn-2.6.4/tests/Makefile	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/Makefile	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-##  $Id: Makefile 10498 2021-01-05 16:11:07Z iulius $
-
 include ../Makefile.global
 
 top		= ..
@@ -15,7 +13,7 @@ LIBM_LDFLAGS    = '-lm'
 ##  list.  If they need other things compiled, those other things should be
 ##  added to EXTRA.
 
-TESTS	= authprogs/ident.t innd/artparse.t innd/chan.t lib/asprintf.t \
+TESTS	= authprogs/ident.t innd/artparse.t innd/chan.t lib/artnumber.t lib/asprintf.t \
 	lib/buffer.t lib/concat.t lib/conffile.t lib/confparse.t lib/date.t \
 	lib/dispatch.t lib/fdflag.t \
 	lib/getaddrinfo.t lib/getnameinfo.t lib/hash.t \
@@ -90,6 +88,9 @@ innd/artparse.t: innd/artparse-t.o innd/
 innd/chan.t: innd/chan-t.o innd/fakeinnd.o tap/basic.o $(INNOBJS)
 	$(LINK) innd/chan-t.o innd/fakeinnd.o tap/basic.o $(INNOBJS) $(INNDLIBS)
 
+lib/artnumber.t: lib/artnumber-t.o tap/basic.o $(LIBINN)
+	$(LINK) lib/artnumber-t.o tap/basic.o $(LIBINN)
+
 lib/asprintf.o: ../lib/asprintf.c
 	$(CC) $(CFLAGS) -DTESTING -c -o $@ ../lib/asprintf.c
 
diff -Nurp inn-2.6.4/tests/TESTS inn-2.6.5/tests/TESTS
--- inn-2.6.4/tests/TESTS	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/TESTS	2022-02-18 20:36:57.000000000 +0100
@@ -5,6 +5,7 @@ clients/getlist
 docs/pod
 innd/artparse
 innd/chan
+lib/artnumber
 lib/asprintf
 lib/buffer
 lib/concat
diff -Nurp inn-2.6.4/tests/authprogs/ckpasswd.t inn-2.6.5/tests/authprogs/ckpasswd.t
--- inn-2.6.4/tests/authprogs/ckpasswd.t	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/authprogs/ckpasswd.t	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 #! /bin/sh
-# $Id: ckpasswd.t 7183 2005-04-10 22:46:50Z rra $
 #
 # Test suite for ckpasswd.
 
diff -Nurp inn-2.6.4/tests/authprogs/domain.t inn-2.6.5/tests/authprogs/domain.t
--- inn-2.6.4/tests/authprogs/domain.t	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/authprogs/domain.t	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 #! /bin/sh
-# $Id: domain.t 7183 2005-04-10 22:46:50Z rra $
 #
 # Test suite for domain.
 
diff -Nurp inn-2.6.4/tests/authprogs/ident-t.c inn-2.6.5/tests/authprogs/ident-t.c
--- inn-2.6.4/tests/authprogs/ident-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/authprogs/ident-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,3 @@
-/* $Id: ident-t.c 10308 2018-12-02 14:33:59Z iulius $ */
 /* ident test suite. */
 
 #include "config.h"
diff -Nurp inn-2.6.4/tests/clients/getlist.t inn-2.6.5/tests/clients/getlist.t
--- inn-2.6.4/tests/clients/getlist.t	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/clients/getlist.t	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 #! /bin/sh
-# $Id: getlist.t 7169 2005-04-10 10:08:34Z rra $
 #
 # Test suite for getlist.
 
diff -Nurp inn-2.6.4/tests/clients/server-list.in inn-2.6.5/tests/clients/server-list.in
--- inn-2.6.4/tests/clients/server-list.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/clients/server-list.in	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,5 @@
 #!/usr/bin/perl -w
 
-##  $Id: server-list.in 7170 2005-04-10 10:24:12Z rra $
-##
 ##  Miniature server that just answers LIST queries.
 ##
 ##  This is a miniature NNTP server that listens to port 11119 on the IPv4
diff -Nurp inn-2.6.4/tests/data/etc/buffindexed.conf inn-2.6.5/tests/data/etc/buffindexed.conf
--- inn-2.6.4/tests/data/etc/buffindexed.conf	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/data/etc/buffindexed.conf	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,3 @@
 # buffindexed.conf -- Configuration for testing.
-# $Id: buffindexed.conf 7095 2004-12-23 07:12:29Z rra $
 
 0:ov-tmp/buffer:1024
diff -Nurp inn-2.6.4/tests/data/etc/inn-bfx.conf inn-2.6.5/tests/data/etc/inn-bfx.conf
--- inn-2.6.4/tests/data/etc/inn-bfx.conf	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/data/etc/inn-bfx.conf	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 # inn.conf -- Minimal inn.conf for testing the overview subsystem.
-# $Id: inn-bfx.conf 7370 2005-07-04 07:41:11Z eagle $
 
 domain:          news.example.com
 mta:             "/usr/sbin/sendmail -oi -oem %s"
diff -Nurp inn-2.6.4/tests/data/etc/inn-tdx.conf inn-2.6.5/tests/data/etc/inn-tdx.conf
--- inn-2.6.4/tests/data/etc/inn-tdx.conf	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/data/etc/inn-tdx.conf	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 # inn.conf -- Minimal inn.conf for testing the overview subsystem.
-# $Id: inn-tdx.conf 7372 2005-07-04 07:43:43Z eagle $
 
 domain:          news.example.com
 mta:             "/usr/sbin/sendmail -oi -oem %s"
diff -Nurp inn-2.6.4/tests/data/etc/inn.conf inn-2.6.5/tests/data/etc/inn.conf
--- inn-2.6.4/tests/data/etc/inn.conf	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/data/etc/inn.conf	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 # inn.conf -- Minimal inn.conf for testing the storage subsystem.
-# $Id: inn.conf 8718 2009-11-08 00:06:54Z iulius $
 
 domain:                 news.example.com
 mta:                    "/usr/sbin/sendmail -oi -oem %s"
diff -Nurp inn-2.6.4/tests/data/etc/storage.conf inn-2.6.5/tests/data/etc/storage.conf
--- inn-2.6.4/tests/data/etc/storage.conf	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/data/etc/storage.conf	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 # storage.conf -- Minimal storage.conf for testing storage methods.
-# $Id: storage.conf 7095 2004-12-23 07:12:29Z rra $
 
 #  By default, store everything in tradspool.
 method tradspool {
diff -Nurp inn-2.6.4/tests/data/overview/munge-data inn-2.6.5/tests/data/overview/munge-data
--- inn-2.6.4/tests/data/overview/munge-data	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/data/overview/munge-data	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,5 @@
 #!/usr/bin/perl
 
-##  $Id: munge-data 7095 2004-12-23 07:12:29Z rra $
-##
 ##  Munge .overview data into something suitable for test data.
 ##
 ##  This script isn't used regularly and is here only for the use of INN
diff -Nurp inn-2.6.4/tests/data/upgrade/overview.fmt inn-2.6.5/tests/data/upgrade/overview.fmt
--- inn-2.6.4/tests/data/upgrade/overview.fmt	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/data/upgrade/overview.fmt	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 ##  overview.fmt for testing its migration to inn.conf.
-##  $Id: overview.fmt 8409 2009-04-11 22:13:41Z iulius $
 
 Subject:
 
diff -Nurp inn-2.6.4/tests/docs/pod.t.in inn-2.6.5/tests/docs/pod.t.in
--- inn-2.6.4/tests/docs/pod.t.in	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/docs/pod.t.in	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,5 @@
 #!/usr/bin/perl
 #
-# $Id: pod.t.in 10510 2021-01-11 22:06:59Z iulius $
-#
 # Check all POD documents in the tree for POD formatting errors.
 #
 # Copyright 2016 Russ Allbery <eagle@eyrie.org>
diff -Nurp inn-2.6.4/tests/innd/artparse-t.c inn-2.6.5/tests/innd/artparse-t.c
--- inn-2.6.4/tests/innd/artparse-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/innd/artparse-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,3 @@
-/* $Id: artparse-t.c 9908 2015-06-25 20:00:51Z iulius $ */
 /* Test suite for ARTparse. */
 
 #include "config.h"
diff -Nurp inn-2.6.4/tests/innd/chan-t.c inn-2.6.5/tests/innd/chan-t.c
--- inn-2.6.4/tests/innd/chan-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/innd/chan-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,3 @@
-/* $Id: chan-t.c 9754 2014-12-01 21:08:28Z iulius $ */
 /* Test suite for general channel handling. */
 
 #include "config.h"
diff -Nurp inn-2.6.4/tests/innd/fakeinnd.c inn-2.6.5/tests/innd/fakeinnd.c
--- inn-2.6.4/tests/innd/fakeinnd.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/innd/fakeinnd.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,3 @@
-/* $Id: fakeinnd.c 10263 2018-03-10 14:51:53Z iulius $ */
 /* Global symbols and tables required for innd-related files to link. */
 
 /* This file is required in order to test various portions of innd from
diff -Nurp inn-2.6.4/tests/lib/artnumber-t.c inn-2.6.5/tests/lib/artnumber-t.c
--- inn-2.6.4/tests/lib/artnumber-t.c	1970-01-01 01:00:00.000000000 +0100
+++ inn-2.6.5/tests/lib/artnumber-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -0,0 +1,68 @@
+/*
+** IsValidArticleNumber & IsValidRange tests
+*/
+
+#define LIBTEST_NEW_FORMAT 1
+
+#include "inn/libinn.h"
+#include "tap/basic.h"
+#include "clibrary.h"
+#include <assert.h>
+
+static void
+testIsValidArticleNumber(void)
+{
+    is_bool(false, IsValidArticleNumber(""), "empty article number");
+    is_bool(false, IsValidArticleNumber(" "), "only whitespace");
+    is_bool(false, IsValidArticleNumber(" 1"), "leading whitespace");
+    is_bool(false, IsValidArticleNumber("1 "), "trailing whitespace");
+    is_bool(false, IsValidArticleNumber("wot"), "only non-digits");
+    is_bool(false, IsValidArticleNumber("wot123"), "leading non-digits");
+    is_bool(false, IsValidArticleNumber("123wot"), "trailing non-digits");
+    is_bool(false, IsValidArticleNumber("00000000000000001"), "too long");
+    is_bool(false, IsValidArticleNumber("2147483648"), "too big");
+    is_bool(false, IsValidArticleNumber("-1"), "negative");
+
+    is_bool(true, IsValidArticleNumber("0"), "zero");
+    is_bool(true, IsValidArticleNumber("1"), "one");
+    is_bool(true, IsValidArticleNumber("2147483647"), "maximum value");
+    is_bool(true, IsValidArticleNumber("0000000000000001"), "maximum length");
+}
+
+/* IsValidRange mutates its argument, so we must wrap it. */
+static int wrap_IsValidRange(const char *str) {
+    char buffer[256];
+    assert(strlen(str) < sizeof buffer);
+    strlcpy(buffer, str, sizeof buffer);
+    return IsValidRange(buffer);
+}
+
+static void
+testIsValidRange(void)
+{
+    is_bool(false, wrap_IsValidRange(""), "empty article range");
+    is_bool(false, wrap_IsValidRange("--"), "two dashes alone");
+    is_bool(false, wrap_IsValidRange("1 - 2"), "forbidden whitespace");
+    is_bool(false, wrap_IsValidRange("1-2-3"), "multiple bounds");
+    is_bool(false, wrap_IsValidRange("1--2"), "two dashes");
+    is_bool(false, wrap_IsValidRange("1-2-"), "excess trailing dash");
+    is_bool(false, wrap_IsValidRange("-1-2"), "excess leading dash");
+
+    is_bool(true, wrap_IsValidRange("-"), "single dash");
+    is_bool(true, wrap_IsValidRange("1-"), "unbounded above");
+    is_bool(true, wrap_IsValidRange("-2147483647"), "unbounded below");
+    is_bool(true, wrap_IsValidRange("2-99"), "fully bounded");
+    is_bool(true, wrap_IsValidRange("99-2"), "reverse bounds"); /* explicitly countenanced by RFC3977. */
+}
+
+
+int
+main(void)
+{
+    plan(14+12);
+
+    testIsValidArticleNumber();
+    testIsValidRange();
+
+    return 0;
+}
diff -Nurp inn-2.6.4/tests/lib/asprintf-t.c inn-2.6.5/tests/lib/asprintf-t.c
--- inn-2.6.4/tests/lib/asprintf-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/lib/asprintf-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: asprintf-t.c 10246 2018-02-16 21:12:42Z iulius $
- *
+/*
  * asprintf and vasprintf test suite.
  *
  * The canonical version of this file is maintained in the rra-c-util package,
diff -Nurp inn-2.6.4/tests/lib/buffer-t.c inn-2.6.5/tests/lib/buffer-t.c
--- inn-2.6.4/tests/lib/buffer-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/lib/buffer-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: buffer-t.c 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * buffer test suite.
  *
  * The canonical version of this file is maintained in the rra-c-util package,
diff -Nurp inn-2.6.4/tests/lib/concat-t.c inn-2.6.5/tests/lib/concat-t.c
--- inn-2.6.4/tests/lib/concat-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/lib/concat-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,8 +1,6 @@
 /*
  * concat test suite.
  *
- * $Id: concat-t.c 10098 2016-11-04 22:19:40Z iulius $
- *
  * The canonical version of this file *used to be* maintained in the
  * rra-c-util package, which can be found at
  * <https://www.eyrie.org/~eagle/software/rra-c-util/>.
diff -Nurp inn-2.6.4/tests/lib/conffile-t.c inn-2.6.5/tests/lib/conffile-t.c
--- inn-2.6.4/tests/lib/conffile-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/lib/conffile-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,3 @@
-/* $Id: conffile-t.c 9669 2014-09-03 17:18:22Z iulius $ */
 /* conffile test suite. */
 
 #include "config.h"
diff -Nurp inn-2.6.4/tests/lib/confparse-t.c inn-2.6.5/tests/lib/confparse-t.c
--- inn-2.6.4/tests/lib/confparse-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/lib/confparse-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,3 @@
-/* $Id: confparse-t.c 10308 2018-12-02 14:33:59Z iulius $ */
 /* confparse test suite. */
 
 #include "config.h"
diff -Nurp inn-2.6.4/tests/lib/date-t.c inn-2.6.5/tests/lib/date-t.c
--- inn-2.6.4/tests/lib/date-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/lib/date-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,3 @@
-/* $Id: date-t.c 10465 2020-12-24 22:26:47Z eagle $ */
 /* makedate test suite */
 
 #include "config.h"
diff -Nurp inn-2.6.4/tests/lib/dispatch-t.c inn-2.6.5/tests/lib/dispatch-t.c
--- inn-2.6.4/tests/lib/dispatch-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/lib/dispatch-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,3 @@
-/* $Id: dispatch-t.c 9669 2014-09-03 17:18:22Z iulius $ */
 /* dispatch test suite. */
 
 #include "config.h"
diff -Nurp inn-2.6.4/tests/lib/fakewrite.c inn-2.6.5/tests/lib/fakewrite.c
--- inn-2.6.4/tests/lib/fakewrite.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/lib/fakewrite.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: fakewrite.c 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * Fake write and writev functions for testing xwrite and xwritev.
  *
  * The canonical version of this file is maintained in the rra-c-util package,
@@ -28,8 +27,6 @@
  * SPDX-License-Identifier: MIT
  */
 
-#define LIBTEST_NEW_FORMAT 1
-
 #include "config.h"
 #include "clibrary.h"
 #include "portable/uio.h"
@@ -105,7 +102,7 @@ fake_pwrite(int fd UNUSED, const void *d
         errno = ENOSPC;
         return -1;
     }
-    if ((size_t)(256 - offset) < total)
+    if ((size_t) (256 - offset) < total)
         total = 256 - offset;
     memcpy(write_buffer + offset, data, total);
     return total;
diff -Nurp inn-2.6.4/tests/lib/fakewrite.h inn-2.6.5/tests/lib/fakewrite.h
--- inn-2.6.4/tests/lib/fakewrite.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/lib/fakewrite.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,11 +1,13 @@
-/* $Id: fakewrite.h 10246 2018-02-16 21:12:42Z iulius $
- *
+/*
  * Testing interface to fake write functions.
  *
  * This header defines the interfaces to fake write functions used to test
  * error handling wrappers around system write functions.
  *
- * Copyright 2000-2002, 2004, 2017 Russ Allbery <eagle@eyrie.org>
+ * The canonical version of this file is maintained in the rra-c-util package,
+ * which can be found at <https://www.eyrie.org/~eagle/software/rra-c-util/>.
+ *
+ * Copyright 2000-2002, 2004, 2017, 2021 Russ Allbery <eagle@eyrie.org>
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the "Software"),
@@ -28,8 +30,6 @@
  * SPDX-License-Identifier: MIT
  */
 
-#define LIBTEST_NEW_FORMAT 1
-
 #ifndef TESTS_INN_FAKEWRITE_H
 #define TESTS_INN_FAKEWRITE_H 1
 
diff -Nurp inn-2.6.4/tests/lib/fdflag-t.c inn-2.6.5/tests/lib/fdflag-t.c
--- inn-2.6.4/tests/lib/fdflag-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/lib/fdflag-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,11 +1,11 @@
-/* $Id: fdflag-t.c 10523 2021-01-17 21:52:00Z iulius $
- *
+/*
  * fdflag test suite.
  *
  * The canonical version of this file is maintained in the rra-c-util package,
  * which can be found at <https://www.eyrie.org/~eagle/software/rra-c-util/>.
  *
  * Written by Russ Allbery <eagle@eyrie.org>
+ * Copyright 2021 Russ Allbery <eagle@eyrie.org>
  * Copyright 2008-2009
  *     The Board of Trustees of the Leland Stanford Junior University
  *
@@ -37,6 +37,7 @@
 #include "clibrary.h"
 
 #include <errno.h>
+#include <signal.h>
 #include <sys/wait.h>
 
 #include "tap/basic.h"
@@ -58,6 +59,7 @@ main(void)
     /* Parent will create the socket first to get the port number. */
     memset(&sin, '\0', sizeof(sin));
     sin.sin_family = AF_INET;
+    inet_pton(AF_INET, "127.0.0.1", &sin.sin_addr);
     master = socket(AF_INET, SOCK_STREAM, 0);
     if (master == -1)
         sysbail("socket creation failed");
@@ -109,16 +111,23 @@ main(void)
         testnum += 2;
     } else {
         data = socket(AF_INET, SOCK_STREAM, 0);
-        if (data < 0)
+        if (data < 0) {
+            kill(child, SIGTERM);
             sysbail("child socket failed");
-        if (connect(data, (struct sockaddr *) &sin, sizeof(sin)) < 0)
+        }
+        if (connect(data, (struct sockaddr *) &sin, sizeof(sin)) < 0) {
+            kill(child, SIGTERM);
             sysbail("child connect failed");
-        if (read(data, buffer, sizeof(buffer)) < (ssize_t) sizeof(buffer))
+        }
+        if (read(data, buffer, sizeof(buffer)) < (ssize_t) sizeof(buffer)) {
+            kill(child, SIGTERM);
             sysbail("read failed");
+        }
         fclose(stderr);
-        /* Use of echo 'ok 7' does not display it on Solaris 11. */
+
+        /* For some reason, echo doesn't work on Solaris 11 but printf does. */
         execlp("sh", "sh", "-c",
-               "printf 'not ' >&8; printf 'ok 7\n'; echo 'ok 8' >&9",
+               "printf 'not ' >&8; printf 'ok 7\n'; printf 'ok 8\n' >&9",
                (char *) 0);
         sysbail("exec failed");
     }
diff -Nurp inn-2.6.4/tests/lib/getaddrinfo-t.c inn-2.6.5/tests/lib/getaddrinfo-t.c
--- inn-2.6.4/tests/lib/getaddrinfo-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/lib/getaddrinfo-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: getaddrinfo-t.c 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * getaddrinfo test suite.
  *
  * The canonical version of this file is maintained in the rra-c-util package,
diff -Nurp inn-2.6.4/tests/lib/getnameinfo-t.c inn-2.6.5/tests/lib/getnameinfo-t.c
--- inn-2.6.4/tests/lib/getnameinfo-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/lib/getnameinfo-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: getnameinfo-t.c 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * getnameinfo test suite.
  *
  * The canonical version of this file is maintained in the rra-c-util package,
diff -Nurp inn-2.6.4/tests/lib/hash-t.c inn-2.6.5/tests/lib/hash-t.c
--- inn-2.6.4/tests/lib/hash-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/lib/hash-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,3 @@
-/* $Id: hash-t.c 9669 2014-09-03 17:18:22Z iulius $ */
 /* hash test suite. */
 
 #include "config.h"
diff -Nurp inn-2.6.4/tests/lib/hashtab-t.c inn-2.6.5/tests/lib/hashtab-t.c
--- inn-2.6.4/tests/lib/hashtab-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/lib/hashtab-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,3 @@
-/* $Id: hashtab-t.c 10015 2016-05-05 12:43:09Z iulius $ */
 /* Test suite for lib/hashtab.c. */
 
 #include "config.h"
diff -Nurp inn-2.6.4/tests/lib/headers-t.c inn-2.6.5/tests/lib/headers-t.c
--- inn-2.6.4/tests/lib/headers-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/lib/headers-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,5 @@
 /*
 ** headers test suite.
-**
-** $Id: headers-t.c 10326 2019-02-04 14:22:34Z iulius $
 */
 
 #define LIBTEST_NEW_FORMAT 1
diff -Nurp inn-2.6.4/tests/lib/hex-t.c inn-2.6.5/tests/lib/hex-t.c
--- inn-2.6.4/tests/lib/hex-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/lib/hex-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,3 @@
-/* $Id: hex-t.c 9669 2014-09-03 17:18:22Z iulius $ */
 /* hex test suite. */
 
 #include "config.h"
diff -Nurp inn-2.6.4/tests/lib/inet_aton-t.c inn-2.6.5/tests/lib/inet_aton-t.c
--- inn-2.6.4/tests/lib/inet_aton-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/lib/inet_aton-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: inet_aton-t.c 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * inet_aton test suite.
  *
  * The canonical version of this file is maintained in the rra-c-util package,
diff -Nurp inn-2.6.4/tests/lib/inet_ntoa-t.c inn-2.6.5/tests/lib/inet_ntoa-t.c
--- inn-2.6.4/tests/lib/inet_ntoa-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/lib/inet_ntoa-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: inet_ntoa-t.c 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * inet_ntoa test suite.
  *
  * The canonical version of this file is maintained in the rra-c-util package,
diff -Nurp inn-2.6.4/tests/lib/inet_ntop-t.c inn-2.6.5/tests/lib/inet_ntop-t.c
--- inn-2.6.4/tests/lib/inet_ntop-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/lib/inet_ntop-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: inet_ntop-t.c 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * inet_ntop test suite.
  *
  * The canonical version of this file is maintained in the rra-c-util package,
diff -Nurp inn-2.6.4/tests/lib/innconf-t.c inn-2.6.5/tests/lib/innconf-t.c
--- inn-2.6.4/tests/lib/innconf-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/lib/innconf-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,3 @@
-/* $Id: innconf-t.c 10308 2018-12-02 14:33:59Z iulius $ */
 /* innconf test suite. */
 
 #include "config.h"
diff -Nurp inn-2.6.4/tests/lib/list-t.c inn-2.6.5/tests/lib/list-t.c
--- inn-2.6.4/tests/lib/list-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/lib/list-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,3 @@
-/* $Id: list-t.c 9669 2014-09-03 17:18:22Z iulius $ */
 /* Test suite for list routines. */
 
 #include "config.h"
diff -Nurp inn-2.6.4/tests/lib/md5-t.c inn-2.6.5/tests/lib/md5-t.c
--- inn-2.6.4/tests/lib/md5-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/lib/md5-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,3 @@
-/* $Id: md5-t.c 9827 2015-04-23 14:50:38Z iulius $ */
 /* MD5 hashing test suite. */
 
 #include "config.h"
diff -Nurp inn-2.6.4/tests/lib/messageid-t.c inn-2.6.5/tests/lib/messageid-t.c
--- inn-2.6.4/tests/lib/messageid-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/lib/messageid-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,5 @@
 /*
 ** messageid test suite.
-**
-** $Id: messageid-t.c 10149 2017-06-05 12:24:58Z iulius $
 */
 
 #define LIBTEST_NEW_FORMAT 1
diff -Nurp inn-2.6.4/tests/lib/messages-t.c inn-2.6.5/tests/lib/messages-t.c
--- inn-2.6.4/tests/lib/messages-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/lib/messages-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: messages-t.c 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * Test suite for error handling routines.
  *
  * The canonical version of this file is maintained in the rra-c-util package,
diff -Nurp inn-2.6.4/tests/lib/mkstemp-t.c inn-2.6.5/tests/lib/mkstemp-t.c
--- inn-2.6.4/tests/lib/mkstemp-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/lib/mkstemp-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: mkstemp-t.c 10246 2018-02-16 21:12:42Z iulius $
- *
+/*
  * mkstemp test suite.
  *
  * The canonical version of this file is maintained in the rra-c-util package,
diff -Nurp inn-2.6.4/tests/lib/network/addr-ipv4-t.c inn-2.6.5/tests/lib/network/addr-ipv4-t.c
--- inn-2.6.4/tests/lib/network/addr-ipv4-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/lib/network/addr-ipv4-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: addr-ipv4-t.c 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * Test network address functions for IPv4.
  *
  * The canonical version of this file is maintained in the rra-c-util package,
diff -Nurp inn-2.6.4/tests/lib/network/addr-ipv6-t.c inn-2.6.5/tests/lib/network/addr-ipv6-t.c
--- inn-2.6.4/tests/lib/network/addr-ipv6-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/lib/network/addr-ipv6-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: addr-ipv6-t.c 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * Test network address functions for IPv6.
  *
  * The canonical version of this file is maintained in the rra-c-util package,
diff -Nurp inn-2.6.4/tests/lib/network/client-t.c inn-2.6.5/tests/lib/network/client-t.c
--- inn-2.6.4/tests/lib/network/client-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/lib/network/client-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: client-t.c 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * Test suite for network client and read/write functions.
  *
  * The canonical version of this file is maintained in the rra-c-util package,
diff -Nurp inn-2.6.4/tests/lib/network/server-t.c inn-2.6.5/tests/lib/network/server-t.c
--- inn-2.6.4/tests/lib/network/server-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/lib/network/server-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: server-t.c 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * Test suite for network server functions.
  *
  * The canonical version of this file is maintained in the rra-c-util package,
diff -Nurp inn-2.6.4/tests/lib/pread-t.c inn-2.6.5/tests/lib/pread-t.c
--- inn-2.6.4/tests/lib/pread-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/lib/pread-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,3 @@
-/* $Id: pread-t.c 9669 2014-09-03 17:18:22Z iulius $ */
 /* pread test suite. */
 
 #include "config.h"
diff -Nurp inn-2.6.4/tests/lib/pwrite-t.c inn-2.6.5/tests/lib/pwrite-t.c
--- inn-2.6.4/tests/lib/pwrite-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/lib/pwrite-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,3 @@
-/* $Id: pwrite-t.c 9669 2014-09-03 17:18:22Z iulius $ */
 /* pwrite test suite. */
 
 #include "config.h"
diff -Nurp inn-2.6.4/tests/lib/qio-t.c inn-2.6.5/tests/lib/qio-t.c
--- inn-2.6.4/tests/lib/qio-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/lib/qio-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,3 @@
-/* $Id: qio-t.c 10457 2020-12-19 06:10:49Z eagle $ */
 /* Test suite for the Quick I/O library */
 
 #define LIBTEST_NEW_FORMAT 1
diff -Nurp inn-2.6.4/tests/lib/reallocarray-t.c inn-2.6.5/tests/lib/reallocarray-t.c
--- inn-2.6.4/tests/lib/reallocarray-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/lib/reallocarray-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: reallocarray-t.c 10246 2018-02-16 21:12:42Z iulius $
- *
+/*
  * reallocarray test suite.
  *
  * This does some simple sanity checks and checks some of the overflow
diff -Nurp inn-2.6.4/tests/lib/setenv-t.c inn-2.6.5/tests/lib/setenv-t.c
--- inn-2.6.4/tests/lib/setenv-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/lib/setenv-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: setenv-t.c 10246 2018-02-16 21:12:42Z iulius $
- *
+/*
  * setenv test suite.
  *
  * The canonical version of this file is maintained in the rra-c-util package,
diff -Nurp inn-2.6.4/tests/lib/snprintf-t.c inn-2.6.5/tests/lib/snprintf-t.c
--- inn-2.6.4/tests/lib/snprintf-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/lib/snprintf-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: snprintf-t.c 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * snprintf test suite.
  *
  * The canonical version of this file was maintained (until 2020) in the
diff -Nurp inn-2.6.4/tests/lib/strlcat-t.c inn-2.6.5/tests/lib/strlcat-t.c
--- inn-2.6.4/tests/lib/strlcat-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/lib/strlcat-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: strlcat-t.c 10098 2016-11-04 22:19:40Z iulius $
- *
+/*
  * strlcat test suite.
  *
  * The canonical version of this file *used to be* maintained in the
diff -Nurp inn-2.6.4/tests/lib/strlcpy-t.c inn-2.6.5/tests/lib/strlcpy-t.c
--- inn-2.6.4/tests/lib/strlcpy-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/lib/strlcpy-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: strlcpy-t.c 10098 2016-11-04 22:19:40Z iulius $
- *
+/*
  * strlcpy test suite.
  *
  * The canonical version of this file *used to be* maintained in the
diff -Nurp inn-2.6.4/tests/lib/tst-t.c inn-2.6.5/tests/lib/tst-t.c
--- inn-2.6.4/tests/lib/tst-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/lib/tst-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,3 @@
-/* $Id: tst-t.c 10015 2016-05-05 12:43:09Z iulius $ */
 /* Test suite for ternary search tries. */
 
 #include "config.h"
diff -Nurp inn-2.6.4/tests/lib/uwildmat-t.c inn-2.6.5/tests/lib/uwildmat-t.c
--- inn-2.6.4/tests/lib/uwildmat-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/lib/uwildmat-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/*  $Id: uwildmat-t.c 10326 2019-02-04 14:22:34Z iulius $
-**
+/*
 **  wildmat test suite.
 **
 **  As of March 11, 2001, this test suite achieves 100% coverage of the
diff -Nurp inn-2.6.4/tests/lib/vector-t.c inn-2.6.5/tests/lib/vector-t.c
--- inn-2.6.4/tests/lib/vector-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/lib/vector-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: vector-t.c 10246 2018-02-16 21:12:42Z iulius $
- *
+/*
  * vector test suite.
  *
  * The canonical version of this file is maintained in the rra-c-util package,
diff -Nurp inn-2.6.4/tests/lib/wire-t.c inn-2.6.5/tests/lib/wire-t.c
--- inn-2.6.4/tests/lib/wire-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/lib/wire-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,3 @@
-/* $Id: wire-t.c 10308 2018-12-02 14:33:59Z iulius $ */
 /* wire test suite. */
 
 #include "config.h"
diff -Nurp inn-2.6.4/tests/lib/xmalloc.c inn-2.6.5/tests/lib/xmalloc.c
--- inn-2.6.4/tests/lib/xmalloc.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/lib/xmalloc.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: xmalloc.c 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * Test suite for xmalloc and family.
  *
  * The canonical version of this file is maintained in the rra-c-util package,
@@ -30,8 +29,6 @@
  * SPDX-License-Identifier: MIT
  */
 
-#define LIBTEST_NEW_FORMAT 1
-
 #line 1 "xmalloc.c"
 
 #include "config.h"
diff -Nurp inn-2.6.4/tests/lib/xmalloc.t inn-2.6.5/tests/lib/xmalloc.t
--- inn-2.6.4/tests/lib/xmalloc.t	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/lib/xmalloc.t	2022-02-18 20:36:57.000000000 +0100
@@ -1,7 +1,5 @@
 #! /bin/sh
 #
-# $Id: xmalloc.t 10396 2020-11-12 20:19:41Z iulius $
-#
 # Test suite for xmalloc and friends.
 #
 # The canonical version of this file is maintained in the rra-c-util package,
diff -Nurp inn-2.6.4/tests/lib/xwrite-t.c inn-2.6.5/tests/lib/xwrite-t.c
--- inn-2.6.4/tests/lib/xwrite-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/lib/xwrite-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: xwrite-t.c 10246 2018-02-16 21:12:42Z iulius $
- *
+/*
  * Test suite for xwrite, xwritev, and xpwrite.
  *
  * The canonical version of this file is maintained in the rra-c-util package,
diff -Nurp inn-2.6.4/tests/nnrpd/auth-ext-t.c inn-2.6.5/tests/nnrpd/auth-ext-t.c
--- inn-2.6.4/tests/nnrpd/auth-ext-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/nnrpd/auth-ext-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,3 @@
-/* $Id: auth-ext-t.c 10467 2020-12-24 22:33:03Z eagle $ */
 /* Test suite for auth_external. */
 
 #define LIBTEST_NEW_FORMAT 1
diff -Nurp inn-2.6.4/tests/nnrpd/auth-test inn-2.6.5/tests/nnrpd/auth-test
--- inn-2.6.4/tests/nnrpd/auth-test	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/nnrpd/auth-test	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 #! /bin/sh
-# $Id: auth-test 10467 2020-12-24 22:33:03Z eagle $
 #
 # Test resolver and authenticator, used for testing nnrpd external auth.
 # Saves all of its input into a file named input in the current directory, as
diff -Nurp inn-2.6.4/tests/overview/api-t.c inn-2.6.5/tests/overview/api-t.c
--- inn-2.6.4/tests/overview/api-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/overview/api-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,3 @@
-/* $Id: api-t.c 10308 2018-12-02 14:33:59Z iulius $ */
 /* Test suite for overview API. */
 
 #include "config.h"
diff -Nurp inn-2.6.4/tests/overview/overchan.t inn-2.6.5/tests/overview/overchan.t
--- inn-2.6.4/tests/overview/overchan.t	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/overview/overchan.t	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 #! /bin/sh
-# $Id: overchan.t 7373 2005-07-04 07:45:16Z eagle $
 #
 # Test suite for overchan.
 
diff -Nurp inn-2.6.4/tests/overview/overview-t.c inn-2.6.5/tests/overview/overview-t.c
--- inn-2.6.4/tests/overview/overview-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/overview/overview-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,3 @@
-/* $Id: overview-t.c 10308 2018-12-02 14:33:59Z iulius $ */
 /* Overview test suite, usable for any of the overview methods. */
 
 /* Compile this program with OVTYPE defined to one of the valid overview
diff -Nurp inn-2.6.4/tests/overview/xref-t.c inn-2.6.5/tests/overview/xref-t.c
--- inn-2.6.4/tests/overview/xref-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/overview/xref-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,3 @@
-/* $Id: xref-t.c 10308 2018-12-02 14:33:59Z iulius $ */
 /* Test suite for storing overview data based on the Xref: header. */
 
 #include "config.h"
diff -Nurp inn-2.6.4/tests/runtests.c inn-2.6.5/tests/runtests.c
--- inn-2.6.4/tests/runtests.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/runtests.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: runtests.c 10523 2021-01-17 21:52:00Z iulius $
- *
+/*
  * Run a set of tests, reporting results.
  *
  * Test suite driver that runs a set of tests implementing a subset of the
@@ -157,13 +156,24 @@
 #endif
 
 /* Test status codes. */
-enum test_status { TEST_FAIL, TEST_PASS, TEST_SKIP, TEST_INVALID };
+enum test_status
+{
+    TEST_FAIL,
+    TEST_PASS,
+    TEST_SKIP,
+    TEST_INVALID
+};
 
 /* Really, just a boolean, but this is more self-documenting. */
-enum test_verbose { CONCISE = 0, VERBOSE = 1 };
+enum test_verbose
+{
+    CONCISE = 0,
+    VERBOSE = 1
+};
 
 /* Indicates the state of our plan. */
-enum plan_status {
+enum plan_status
+{
     PLAN_INIT,    /* Nothing seen yet. */
     PLAN_FIRST,   /* Plan seen before any tests. */
     PLAN_PENDING, /* Test seen and no plan yet. */
@@ -436,9 +446,9 @@ x_strndup(const char *s, size_t size, co
     char *copy;
 
     /* Don't assume that the source string is nul-terminated. */
-    for (p = s; (size_t)(p - s) < size && *p != '\0'; p++)
+    for (p = s; (size_t) (p - s) < size && *p != '\0'; p++)
         ;
-    len = (size_t)(p - s);
+    len = (size_t) (p - s);
     copy = (char *) malloc(len + 1);
     if (copy == NULL)
         sysdie("failed to strndup %lu bytes at %s line %d",
@@ -1140,13 +1150,11 @@ test_run(struct testset *ts, enum test_v
      * retrieve the exit status, and pass that information to test_analyze()
      * for eventual output.
      */
-    if (!ts->aborted) {
-        while (fgets(buffer, sizeof(buffer), output))
-            if (verbose)
-                printf("%s", buffer);
-    }
+    while (fgets(buffer, sizeof(buffer), output))
+        if (verbose)
+            printf("%s", buffer);
     fclose(output);
-    child = waitpid(testpid, &ts->status, WNOHANG);
+    child = waitpid(testpid, &ts->status, 0);
     if (child == (pid_t) -1) {
         if (!ts->reported) {
             puts("ABORTED");
diff -Nurp inn-2.6.4/tests/storage/archive.t inn-2.6.5/tests/storage/archive.t
--- inn-2.6.4/tests/storage/archive.t	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/storage/archive.t	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 #! /bin/sh
-# $Id: archive.t 7095 2004-12-23 07:12:29Z rra $
 #
 # Test suite for archive.
 
diff -Nurp inn-2.6.4/tests/storage/makehistory.t inn-2.6.5/tests/storage/makehistory.t
--- inn-2.6.4/tests/storage/makehistory.t	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/storage/makehistory.t	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 #! /bin/sh
-# $Id: makehistory.t 8023 2008-09-12 21:03:22Z iulius $
 #
 # Test suite for makehistory.
 
diff -Nurp inn-2.6.4/tests/storage/sm.t inn-2.6.5/tests/storage/sm.t
--- inn-2.6.4/tests/storage/sm.t	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/storage/sm.t	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 #! /bin/sh
-# $Id: sm.t 8309 2009-01-31 12:40:53Z iulius $
 #
 # Test suite for sm.
 
diff -Nurp inn-2.6.4/tests/tap/basic.c inn-2.6.5/tests/tap/basic.c
--- inn-2.6.4/tests/tap/basic.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/tap/basic.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: basic.c 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * Some utility routines for writing tests.
  *
  * Here are a variety of utility routines for writing tests compatible with
@@ -14,7 +13,7 @@
  * documentation is at <https://www.eyrie.org/~eagle/software/c-tap-harness/>.
  *
  * Written by Russ Allbery <eagle@eyrie.org>
- * Copyright 2009-2019 Russ Allbery <eagle@eyrie.org>
+ * Copyright 2009-2019, 2021 Russ Allbery <eagle@eyrie.org>
  * Copyright 2001-2002, 2004-2008, 2011-2014
  *     The Board of Trustees of the Leland Stanford Junior University
  *
@@ -411,7 +410,7 @@ finish(void)
 
     /* Print out the lazy plan if needed. */
     fflush(stderr);
-    if (_lazy && _planned > 0)
+    if (_lazy)
         printf("1..%lu\n", _planned);
 
     /* Print out a summary of the results. */
@@ -961,9 +960,9 @@ bstrndup(const char *s, size_t n)
     size_t length;
 
     /* Don't assume that the source string is nul-terminated. */
-    for (p = s; (size_t)(p - s) < n && *p != '\0'; p++)
+    for (p = s; (size_t) (p - s) < n && *p != '\0'; p++)
         ;
-    length = (size_t)(p - s);
+    length = (size_t) (p - s);
     copy = (char *) malloc(length + 1);
     if (copy == NULL)
         sysbail("failed to strndup %lu bytes", (unsigned long) length);
diff -Nurp inn-2.6.4/tests/tap/basic.h inn-2.6.5/tests/tap/basic.h
--- inn-2.6.4/tests/tap/basic.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/tap/basic.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: basic.h 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * Basic utility routines for the TAP protocol.
  *
  * This file is part of C TAP Harness.  The current version plus supporting
diff -Nurp inn-2.6.4/tests/tap/float.c inn-2.6.5/tests/tap/float.c
--- inn-2.6.4/tests/tap/float.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/tap/float.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: float.c 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * Utility routines for writing floating point tests.
  *
  * Currently provides only one function, which checks whether a double is
diff -Nurp inn-2.6.4/tests/tap/float.h inn-2.6.5/tests/tap/float.h
--- inn-2.6.4/tests/tap/float.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/tap/float.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: float.h 10268 2018-03-15 21:40:48Z iulius $
- *
+/*
  * Floating point check function for the TAP protocol.
  *
  * This file is part of C TAP Harness.  The current version plus supporting
diff -Nurp inn-2.6.4/tests/tap/libtap.sh inn-2.6.5/tests/tap/libtap.sh
--- inn-2.6.4/tests/tap/libtap.sh	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/tap/libtap.sh	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,3 @@
-# $Id: libtap.sh 10306 2018-12-02 14:26:13Z iulius $
-#
 # Shell function library for test cases.
 #
 # Note that while many of the functions in this library could benefit from
diff -Nurp inn-2.6.4/tests/tap/macros.h inn-2.6.5/tests/tap/macros.h
--- inn-2.6.4/tests/tap/macros.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/tap/macros.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: macros.h 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * Helpful macros for TAP header files.
  *
  * This is not, strictly speaking, related to TAP, but any TAP add-on is
diff -Nurp inn-2.6.4/tests/tap/messages.c inn-2.6.5/tests/tap/messages.c
--- inn-2.6.4/tests/tap/messages.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/tap/messages.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: messages.c 10246 2018-02-16 21:12:42Z iulius $
- *
+/*
  * Utility functions to test message handling.
  *
  * These functions set up a message handler to trap warn and notice output
diff -Nurp inn-2.6.4/tests/tap/messages.h inn-2.6.5/tests/tap/messages.h
--- inn-2.6.4/tests/tap/messages.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/tap/messages.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: messages.h 10246 2018-02-16 21:12:42Z iulius $
- *
+/*
  * Utility functions to test message handling.
  *
  * The canonical version of this file is maintained in the rra-c-util package,
diff -Nurp inn-2.6.4/tests/tap/process.c inn-2.6.5/tests/tap/process.c
--- inn-2.6.4/tests/tap/process.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/tap/process.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: process.c 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * Utility functions for tests that use subprocesses.
  *
  * Provides utility functions for subprocess manipulation.  Specifically,
diff -Nurp inn-2.6.4/tests/tap/process.h inn-2.6.5/tests/tap/process.h
--- inn-2.6.4/tests/tap/process.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/tap/process.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: process.h 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * Utility functions for tests that use subprocesses.
  *
  * The canonical version of this file is maintained in the rra-c-util package,
diff -Nurp inn-2.6.4/tests/tap/string.c inn-2.6.5/tests/tap/string.c
--- inn-2.6.4/tests/tap/string.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/tap/string.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: string.c 10246 2018-02-16 21:12:42Z iulius $
- *
+/*
  * String utilities for the TAP protocol.
  *
  * Additional string utilities that can't be included with C TAP Harness
diff -Nurp inn-2.6.4/tests/tap/string.h inn-2.6.5/tests/tap/string.h
--- inn-2.6.4/tests/tap/string.h	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/tap/string.h	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
-/* $Id: string.h 10396 2020-11-12 20:19:41Z iulius $
- *
+/*
  * String utilities for the TAP protocol.
  *
  * Additional string utilities that can't be included with C TAP Harness
diff -Nurp inn-2.6.4/tests/util/convdate.t inn-2.6.5/tests/util/convdate.t
--- inn-2.6.4/tests/util/convdate.t	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/util/convdate.t	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 #! /bin/sh
-# $Id: convdate.t 9971 2015-12-10 20:30:10Z iulius $
 #
 # Test suite for convdate.
 
diff -Nurp inn-2.6.4/tests/util/innbind-t.c inn-2.6.5/tests/util/innbind-t.c
--- inn-2.6.4/tests/util/innbind-t.c	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/util/innbind-t.c	2022-02-18 20:36:57.000000000 +0100
@@ -1,4 +1,3 @@
-/* $Id: innbind-t.c 10308 2018-12-02 14:33:59Z iulius $ */
 /* innbind test suite. */
 
 #include "config.h"
diff -Nurp inn-2.6.4/tests/util/inndf.t inn-2.6.5/tests/util/inndf.t
--- inn-2.6.4/tests/util/inndf.t	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/util/inndf.t	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 #! /bin/sh
-# $Id: inndf.t 10513 2021-01-15 22:34:56Z iulius $
 #
 # Test suite for inndf.
 
@@ -128,8 +127,8 @@ else
     echo "$out"
     printcount "not ok"
 fi
-out=`$inndf -o`
-if [ "$out" = "3.17% overview space used" ] ; then
+out=`$inndf -o | sed 's/\...%/\.00%/'`
+if [ "$out" = "3.00% overview space used" ] ; then
     printcount "ok"
 else
     echo "$out"
diff -Nurp inn-2.6.4/tests/util/innupgrade.t inn-2.6.5/tests/util/innupgrade.t
--- inn-2.6.4/tests/util/innupgrade.t	2021-01-21 22:53:07.000000000 +0100
+++ inn-2.6.5/tests/util/innupgrade.t	2022-02-18 20:36:57.000000000 +0100
@@ -1,5 +1,4 @@
 #! /bin/sh
-# $Id: innupgrade.t 9688 2014-09-11 11:28:00Z iulius $
 #
 # Test suite for innupgrade.