diff -Nurp inn-2.5.0/CONTRIBUTORS inn-2.5.1/CONTRIBUTORS --- inn-2.5.0/CONTRIBUTORS 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/CONTRIBUTORS 2009-10-12 11:24:04.000000000 -0700 @@ -79,7 +79,7 @@ Fabien Tassin: configuration file. Added support for nested profile timers. Jeremy Nixon: - Wrote the initial patch for Perl filtering of message IDs on IHAVE + Wrote the initial patch for Perl filtering of message-IDs on IHAVE or CHECK and other patches related to the filtering code. Karl Kleinpaste: @@ -270,4 +270,5 @@ D. Stussy, Alan Schwartz, Shalon Wood, N J. Thomas Halliley, Matija Nalis, Geraint A. Edwards, Alexander Bartolich, David Hlacik, Andreas Mattheiss, James Ralston, Wim Lewis, Johan van Selst, Wolfgang M. Weyand, Berend Reitsma, William Kronert, Petr Novopashenniy, -Steve Crook +Steve Crook, John F. Morse, Tim Woodall, Jonathan Kamens, Kamil Jonca, +S.P. Zeidler, Nix diff -Nurp inn-2.5.0/ChangeLog inn-2.5.1/ChangeLog --- inn-2.5.0/ChangeLog 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/ChangeLog 2009-10-12 11:24:04.000000000 -0700 @@ -1,8474 +1,470 @@ -2009-05-21 iulius +2009-10-10 iulius - * branches/2.5/doc/pod/hacking.pod, - branches/2.5/doc/pod/readme.pod: The first paragraph of README - should be removed when branching: it is a new STABLE release no - longer in active development. - - * branches/2.5/doc/pod/hacking.pod: INN 2.5 uses autoconf and - autoheader (in our autogen script) to be generated. - - * branches/2.5: Branch 2.5.0 release. - - * trunk/doc/FAQ, trunk/doc/pod/hacking.pod, trunk/doc/pod/news.pod: - Prepare INN 2.5.0 release and bump the number version in the FAQ. - - * trunk/support/config.guess: Update support files for autoconf to - their last stable version: - - * config.guess (s390x:SunOS:*:*): Add s390x-ibm-solaris*. - - * trunk/support/install-sh: Don't chown directories that already - exist. (Backport commit 6882.) - - * trunk/doc/pod/hacking.pod: * Mention Trac instead of ViewVC. - - * Add a link to nightly snapshots and update other links. - - * Add POD commands (especially B<>, C<> and F<>). - - * Explain how to update install-sh. - - * Update the section on how to make a release. - -2009-05-20 iulius - - * trunk/storage/tradindexed/tdx-data.c: It is pointless remapping - index files for tradindexed when articles have arrived - out-of-order. Only data files need to (holes in these files are - not filled). - -2009-05-19 eagle - - * trunk/doc/FAQ: Note the need to run ctlinnd renumber '' after - rebuilding history for versions of INN prior to 2.5. - -2009-05-18 iulius - - * trunk/doc/pod/auth_krb5.pod, trunk/doc/pod/checklist.pod, - trunk/doc/pod/inn.conf.pod, trunk/doc/pod/install.pod, - trunk/doc/pod/readers.conf.pod, trunk/m4/openssl.m4, - trunk/samples/inn.conf.in: Also mention TLS when SSL is used in - our documentation and public files. - - * trunk/doc/pod/nnrpd.pod: Update the documentation of nnrpd, - especially the part about RFC 977 and additions to the protocol - (which are now in RFC 3977, 4642 and 4643). - - * trunk/nnrpd/nnrpd.c: Better sentence to log. Thanks, D. Stussy. - -2009-05-18 eagle - - * trunk/storage/tradindexed/tdx-data.c, - trunk/storage/tradindexed/tdx-group.c: Minor coding style fixes - in the tradindexed code. - -2009-05-17 iulius - - * trunk/Makefile, trunk/Makefile.global.in, trunk/configure.ac, - trunk/m4/prog-ensure.m4: * Use Autoconf checks to find the path - to awk, egrep, 'mkdir -p' and sed. - - * Add the inn-workers mailing-list address for bugs reports. - - * trunk/doc/pod/innd.pod, trunk/doc/pod/nnrpd.pod, - trunk/innd/innd.c, trunk/nnrpd/nnrpd.c: Add a -4 flag to both - innd and nnrpd for IPv4 binding addresses, similarly to -6 for - IPv6. - - * trunk/Makefile, trunk/Makefile.global.in: Use $SED instead of sed - in Makefile. - - * trunk/support/install-sh: Update install-sh to its last stable - version. Backport special INN changes in it. - - * trunk/support/fixconfig.in: * Use a global sed replacement. + * * Mention --enable-keywords and --with-openssl in the default + inn.conf configuration file. - * '\@' is not portable according to Posix. Use '[@]' instead. - -2009-05-16 iulius - - * trunk/doc/pod/readme.pod: Perl 5.004 is needed at build time. - Mention that Perl 5.8.0 is recommended. - - * trunk/authprogs/radius.c, trunk/backends/innxbatch.c, - trunk/backends/innxmit.c, trunk/backends/nntpget.c, - trunk/include/inn/options.h, trunk/include/nntp.h, - trunk/innd/art.c, trunk/innd/nc.c, trunk/innfeed/innlistener.c, - trunk/lib/clientlib.c, trunk/lib/localopen.c, - trunk/lib/remopen.c: Use NNTP_MAXLEN_COMMAND instead of - NNTP_STRLEN. - - * trunk/doc/pod/ctlinnd.pod, trunk/doc/pod/news.daily.pod, - trunk/doc/pod/pullnews.pod, trunk/innd/art.c, trunk/innd/innd.h, - trunk/innd/util.c, trunk/lib/alloca.c, - trunk/tests/overview/api-t.c, trunk/tests/overview/overview-t.c: - Typos. + * No need to regenerate the overview when the keyword generation + code is used. - * trunk/TODO, trunk/doc/FAQ, trunk/doc/pod/readme.pod, - trunk/include/inn/nntp.h, trunk/include/nntp.h: Update references - of RFC 977 and RFC 1036 to new RFC 3977, 4642, 4643, 4644, 5536 - and 5537 when it applies. - - * trunk/doc/pod/passwd.nntp.pod: Update reference of AUTHINFO - commands to RFC 4643. - - * trunk/doc/pod/ctlinnd.pod, trunk/innd/cc.c: It is now useless to - reload the overview.fmt file because it does not exist any - longer. The overview configuration is in inn.conf. + * * Mention the OVER command instead of XOVER. - see #101 - - * trunk/nnrpd/nnrpd.c: Fix a bug in previous commit 8463: we have - to use select() for multiple sockets! Otherwise, we have a huge - CPU consumption. - -2009-05-15 iulius + * Mention the --enable-keywords configure option in inn.conf for + keyword generation. - * trunk/doc/pod/nnrpd.pod, trunk/innd/rc.c, trunk/nnrpd/nnrpd.c: - Remove the limitation nnrpd had to only listen to one socket. We - can now accept both IPv4 and IPv6 connections configured with the - "-b" and "-6" flags. - -2009-05-14 iulius - - * trunk/frontends/mailpost.in: Add a colon after the space - following a header name. SMTP does not require it whereas NNTP - does. + * * The "will" keyword was checked twice. - Thanks to D. Stussy for having pointed out that issue. - -2009-05-12 iulius - - * trunk/innd/art.c: Do not remember the message-ID of an article - when it is marked as "to be deferred". + * Fix a gcc warning (a signed/unsigned cast). - * trunk/doc/pod/inn.conf.pod, trunk/doc/pod/news.pod, - trunk/include/inn/innconf.h, trunk/innd/art.c, - trunk/lib/innconf.c, trunk/samples/inn.conf.in: Add a new - inn.conf option "verifygroups" to check whether all newsgroups a - message is posted to exist on the news server. - - * trunk/innfeed/host.c: Adjust old and new values for max - connexions during a reconfiguration of a host in innfeed. - - * trunk/storage/tradindexed/tdx-data.c, - trunk/storage/tradindexed/tdx-group.c, - trunk/storage/tradindexed/tdx-private.h: Add a proper remap of - overview data files when new articles are appended out-of-order - to these files. Static searches otherwise would fail. + * Fix a segfault in the keyword generation code for articles + already containing a Keywords: header. - See also commit 8451. - -2009-05-09 iulius - - * trunk/doc/pod/newsfeeds.pod: Mention that "A" flags are not - effective on funnel targets. + Thanks to Nix for the patch. - * trunk/samples/control.ctl, trunk/samples/control.ctl.local: - Encodings of newgroup/checkgroups descriptions of Usenet - hierarchies should be in control.ctl, and not control.ctl.local. +2009-10-09 iulius -2009-05-08 iulius - - * trunk/doc/pod/hook-perl.pod, trunk/doc/pod/readme.pod: * Mention - Paolo's Postfilter nnrpd hook script. + * Remove duplicate contents in news.daily, as for the run of expire + and expireover. - * Remove the link towards Marco's Cleanfeed (Steve's Cleanfeed is - now far better). + Also add a warning when the "lowmark" keyword is used without + "expireover". - * Rename News Gizmo to News Shogun. - - * trunk/scripts/news.daily.in: Fix a bug in news.daily: when the - server is throttled, it is not properly seen and it might end up - still being throttled after the run of news.daily. + Thanks to D. Stussy for the patch. - * trunk/doc/pod/news.daily.pod, trunk/scripts/news.daily.in: - innfeed dropped files in its spool will now be processed by - news.daily, running procbatch; a "noprocbatch" keyword has been - added to disable this automatic process. +2009-10-03 iulius - * trunk/tests/overview/xref-t.c: Fix a bug after the ok_block() - call: the number of the test was not incremented. + * Mention the bug-fix in the keyword generation code. -2009-05-07 jeff + * inndstart is no longer used (it was removed in INN 2.5.0) so we + mention it in our FAQ. - * trunk/doc/man/libstorage.3, trunk/storage/tradindexed/tdx-data.c: - Modify behavior of tradindexed (with OVSTATICSEARCH) to fix - corrupted XOVER responses caused by the mid-search attempt to - unmap and remap overview data in the hopes of making additional - data accessible. + * Fix a GNUism in news.daily (a directory and "-print" are needed). - Clarify documentation on behavior of OVSTATICSEARCH. - -2009-05-06 iulius + Thanks to S.P. Zeidler for the patch. - * trunk/scripts/innstat.in: Use $SORT as set at configure time. +2009-10-01 eagle - * trunk/lib/perl.c: Log a message in news.notice if INN believes - filter_innd.pl and filter_nnrpd.pl have been mixed up. - - * trunk/doc/pod/hook-perl.pod: Specify that "delete $hdr{header}" - will not always work in Perl innd filter hook. - - * trunk/innd/art.c: Log to news.notice when an article is rejected - with dontrejectfiltered set to true. - - * trunk/innd/art.c: The Af flag was not working for funnel entries. - - The problem is that at some point during ARTpropagate(), funnels - are removed in favour of what they point at (like innfeed!). - Therefore, if "news.server.org" has the Af flag, this flag is not - transmitted to "innfeed!" (because it handles more than one - site). And when it is time to send the article, "news.server.org" - is no longer known and the article ends up being transmitted to - "innfeed!" which sends it to "news.server.org". + * Update keyword code to match current article handling - Fix the code to check for the Af flag on funnels too. + We no longer copy the article out of the channel and + nul-terminate it, but the keyword generation code was assuming + that the article was nul-terminated. Modify KEYgenerate to take + an article length and use xmalloc/memcpy to make a copy rather + than strdup. Thanks to Nix for the report. -2009-05-04 iulius +2009-09-29 iulius - * trunk/frontends/mailpost.in: Do not use "\n" in syslog() calls. - And always log an error message, even though we are not running - in debug mode. - - * trunk/nnrpd/post.c: Fix a segfault in nnrpd when a NULL pointer - is passed as the first argument of MaxLength. Also see commit - 8396 for innd. - - * trunk/doc/pod/hook-perl.pod: Explain how to remove a header with - the Perl nnrpd filter hook. - - * trunk/nnrpd/perl.c: Fix a bug in nnrpd Perl filter hook: - undefining an header or setting it to an empty value ("") - generated an empty header line ("In-Reply-To: \r\n" for - instance). - - Doing that now totally removes the header. + * Bump version to INN 2.5.1. -2009-05-03 iulius + * Mention in Perl and Python hooks that UTF-8 should be used for + reject messages. - * trunk/samples/localgroups: Mention that localgroups is formatted - like the newsgroups file. +2009-09-28 iulius - * trunk/frontends/mailpost.in: Log the error to syslog in case the - e-mail version of the error isn't sent. - - Thanks to D. Stussy for the patch. + * Mention that active.times and distrib.pats should be encoded in + UTF-8, as well as ctlinnd and nnrpd arguments. -2009-05-01 iulius + * Add a function to validate the encoding of UTF-8 strings. + "ctlinnd pause", "ctlinnd readers", "ctlinnd reject", "ctlinnd + reserve", "ctlinnd throttle" and "nnrpd -r" commands now expect a + properly encoded reason. - * trunk/samples/incoming.conf: Also apply commit 8436 to the - incoming.conf sample file. +2009-09-11 iulius - * trunk/innd/art.c: Properly log the incoming peer name when there - is a reject because the headers of the article are not valid. - - Thanks to Petr Novopashenniy for having reported this issue. + * Update support files for autoconf to their last stable version. - * trunk/innd/art.c: Fix a bug during the parsing of message-IDs: - USEFOR allows leading and trailing white spaces in the - Message-Id: and Supersedes: headers. Articles containing such - white spaces were rejected by innd. - - Thanks to Petr Novopashenniy for having reported this issue. + * Update control.ctl to its last version. - * trunk/doc/pod/incoming.conf.pod, trunk/doc/pod/innbind.pod, - trunk/doc/pod/innd.pod: Clarify the use of IPv6 colon-separated - addresses in our documentation. +2009-09-09 iulius - * trunk/doc/pod/distrib.pats.pod, trunk/samples/distrib.pats, - trunk/samples/newsfeeds.in: Clarify how the newsfeeds "ME" entry - works against local distributions and local postings via nnrpd. + * Use new Autoconf 2.60 macros AC_TYPE_UINT16_T, AC_TYPE_UINT32_T, + AC_TYPE_LONG_LONG_INT and AC_TYPE_SSIZE_T. - Thanks to D. Stussy for having pointed out that potential - problem. + We do not need m4/int32.m4 any longer to define uint32_t (int32_t + is not used). -2009-04-28 iulius - - * trunk/innd/art.c: Fix an old typo: "Control" was always logged! - -2009-04-26 iulius - - * trunk/control/modules/checkgroups.pl: Be more precise in the mail - sent to the administrator after a checkgroups is handled by - controlchan (specify whether changes have been done, directly in - the mail body). + * Improve the changelog wording. - Also prevent mod-active normal output from being logged to - errlog. - -2009-04-25 iulius + compress does not have patent issues any longer. - * trunk/support/config.guess, trunk/support/config.sub: Update - support files for autoconf to their last stable version: - - * config.sub: Handle moxie. - - * config.guess (pc:*:*:*): Return i586-pc-msdosdjgpp, for - consistency with config.sub. +2009-09-07 iulius - * trunk/control/controlchan.in, - trunk/control/modules/checkgroups.pl, - trunk/doc/pod/control.ctl.pod, trunk/doc/pod/news.pod, - trunk/samples/control.ctl.local, trunk/scripts/innreport_inn.pm: - Many improvements to checkgroups handling: - - * Act on checkgroups control messages instead of sending mail; - - * Add the /maxdocheckgroups/ control.ctl option to specify the - maximum number of changes that could be made at one time before - bailing and mailing the changes to the admin; - - * Process all matching entries for a checkgroups and not the last - matching control.ctl entry. It especially allows to use "drop" - commands, combined with "mail" and "doit". To achieve that, - controlchan uses exclusion and drop patterns; - - * Fix a long-standing bug causing patterns not being properly - handled by docheckgroups: standard grep patterns were generated - by controlchan instead of *egrep* patterns! - - * Fix a long-standing bug causing multiple entries for the same - checkgroups sender not to be honoured (for instance aus.* and - canb.*) because the last one did not match the list of - newsgroups; - - * Fix two wrong log matches in innreport; + * Check that a CAF header contains at least 128 bytes for the free + bitmap header. Otherwise, increase the blocksize. - * Documentation improvements, with useful samples. - - close #3, #102 - - * trunk/control/docheckgroups.in: Fix a bug during checkgroups - process: when docheckgroups returned an empty file, it marked - everything as to be removed. - - * trunk/doc/pod/pullnews.pod: Typo. - - * trunk/support/mkmanifest: Remove obsolete files from the "make - manifest" support script. + On 64-bit systems, a CAF header can exceed the size of the + default bitmap, which prevents timecaf from working. -2009-04-24 iulius + * Update the maximum size of a CAF. Limits are 3.5GB or 262144 + articles in a CAF. - * trunk/control/docheckgroups.in: Fix a long-standing issue with - docheckgroups: patterns did not match newsgroups but newsgroups - along with their description! + * Remove trailing spaces. - * trunk/innd/ng.c: Check whether the high water mark is not - inferior to the low water mark of a newsgroup when running - "ctlinnd lowmark". + * Fix a documentation error about timecaf: it does not work per + newsgroup (though it used to). - Thanks to Steve Crook for the bug report. - - * trunk/CONTRIBUTORS, trunk/storage/buffindexed/buffindexed.c: The - low water mark was not properly set by expire on an empty - newsgroup when running a buffindexed overview. + FreeZoneIndexBytes does not exist; it is FreeZoneIndexSize. - Thanks to Steve Crook for the bug report. - -2009-04-19 iulius + Also remove trailing spaces. - * trunk/scripts/innreport.in: Silent Perl warnings when GD.pm is - not installed. + * Support for sequence numbers higher than 65535 (216-1) in the + timecaf storage method. We can now integrate up to (232-1) + articles in a mere CAF. A CAF contains all the articles that + arrive during 256 seconds. - Thanks to Alexander Bartolich for the patch. - - * trunk/nnrpd/group.c: LISTGROUP answers have been inversing low - and high water marks for empty newsgroups since commit 8374. Now - fixed. - -2009-04-18 iulius - - * trunk/lib/Makefile: A few declarations were missing to compile - libraries. - - * trunk/lib/perl.c: Do not try to destruct the Perl interpretor if - it has not been created yet! It can happen if innd exits at - startup because of a problem during its initialization. + Thanks to Kamil Jonca for the bug report and his patch. - Thanks to Petr Novopashenniy for having reported the bug. - - * trunk/innd/nc.c: Return 501 and not 435 in response to a HEAD or - STAT command when the argument is not a valid message-ID. + Also explain how to decode timecaf tokens and paths. - Note that we still keep 435 for IHAVE. We want to reject the - article so that it is considered as an unwanted article by the - other site. - -2009-04-13 iulius - - * trunk/control/perl-nocem.in: Silent a possible use of - uninitialized value (when the message-ID is not set). - -2009-04-12 iulius - - * trunk/backends/batcher.c, trunk/backends/buffchan.c, - trunk/backends/innxbatch.c, trunk/backends/innxmit.c, - trunk/configure.ac, trunk/expire/expireover.c, trunk/innd/cc.c, - trunk/innd/innd.c, trunk/innd/proc.c, trunk/nnrpd/nnrpd.c: - AC_TYPE_SIGNAL is being obsoleted by Autoconf. On modern systems, - the returned signal type is void. So we just use that type. - - * trunk/Makefile.global.in, trunk/support/fixscript.in: Find out a - working shell via configure. It will also allow the user to - modify it with the CONFIG_SHELL environment variable. + And use fixed 16-bit and 32-bit numbers for tokens; timecaf did + not work on systems where short ints were not 16-bit integers. - * trunk/doc/pod/innconfval.pod, trunk/lib/innconf.c: Return a - space-separated string for Bourne shell innconfval output. - - * trunk/Makefile, trunk/doc/pod/innupgrade.pod, - trunk/scripts/innupgrade.in, trunk/tests/util/innupgrade.t: - Rename obsolete programs and configuration files, appending - '.OLD' to their name. Remove obsolete man pages. + * Explain how to decode cnfs tokens. - The affected files are only those since INN 2.4.0. - - * trunk/doc/pod/innconfval.pod, trunk/lib/innconf.c: Return a - string instead of an array when "innconfval -s" is used because - pure Bourne shell does not recognize arrays. - - * trunk/Makefile, trunk/doc/Makefile, trunk/site/Makefile: Fix a - bug when "make -j" is used with a non-GNU make. In a GNU make, - the "cd" command is in effect only for the current command, which - is not the case with for instance a BSD-based make. - - * trunk/doc/pod/news.pod, trunk/scripts/innupgrade.in: innupgrade - was assuming that Xref:full was the eighth field in overview.fmt, - which might not always be the case. + Also remove trailing spaces. -2009-04-11 iulius + * Remove trailing spaces. - * trunk/scripts/innupgrade.in: $#_ in Perl returns the last index - of an array, and not the number of its elements! + * Convert tabs to spaces. - * trunk/scripts/inncheck.in, trunk/scripts/innupgrade.in: * Also - update scripts (forgotten from previous /large/ commit 8409). + * Explain how to decode tradspool tokens and paths. - see #101 + Also remove trailing spaces. - * trunk/MANIFEST, trunk/doc/man/Makefile, trunk/doc/man/inncheck.8, - trunk/doc/man/overview.fmt.5, trunk/doc/pod/ctlinnd.pod, - trunk/doc/pod/getlist.pod, trunk/doc/pod/inn.conf.pod, - trunk/doc/pod/makehistory.pod, trunk/doc/pod/news.pod, - trunk/doc/pod/nnrpd.pod, trunk/expire/Makefile, - trunk/expire/makehistory.c, trunk/include/inn/innconf.h, - trunk/include/inn/ov.h, trunk/include/inn/overview.h, - trunk/include/inn/paths.h.in, trunk/innd/Makefile, - trunk/innd/art.c, trunk/lib/innconf.c, trunk/nnrpd/list.c, - trunk/nnrpd/nnrpd.c, trunk/samples/inn.conf.in, - trunk/samples/overview.fmt, trunk/site, trunk/site/Makefile, - trunk/storage/Makefile, trunk/storage/expire.c, - trunk/storage/overdata.c, trunk/storage/tradindexed/tdx-util.c, - trunk/support/mkmanifest, trunk/tests/data/etc/inn.conf, - trunk/tests/data/etc/overview.fmt, - trunk/tests/data/upgrade/inn.conf.ok, - trunk/tests/data/upgrade/overview.fmt, - trunk/tests/innd/artparse-t.c, trunk/tests/lib/innconf-t.c: * Add - support for list values in inn.conf. - - * Remove the overview.fmt file and use two new inn.conf - parameters: extraoverviewadvertised and extraoverviewhidden. They - allow the news administrator to choose the overview fields he - wants to advertise to readers. - - * Add a new argument to overview_extra_fields: this function - returns either the additional fields to advertise (with ":full") - or all the additional fields to generate. - - * Xref is forced as the eighth field of the overview database. * - Be consistent with the responses of other LIST commands: no full - stop at the end of the initial response line. - - * Updated documentation, samples and test suite. + * ts.ng.db no longer exists; it is tradspool.map. - close #101 + Also remove trailing spaces. - * trunk/configure.ac: AC_USE_SYSTEM_EXTENSIONS is better than - AC_AIX in Autoconf (it is a superset of AC_AIX). - - * trunk/configure.ac, trunk/m4/cc-c-o.m4, trunk/tests/lib/qio-t.c: - Autoconf 2.61 uses HAVE_STRUCT_STAT_ST_BLKSIZE instead of - HAVE_ST_BLKSIZE and AS_MESSAGE_LOG_FD instead of AC_FD_CC. - -2009-04-11 eagle - - * trunk/doc/pod/inn.conf.pod: Move the note that NNTP-Posting-Host - isn't obfuscated to the correct option (addnntppostinghost, not - addnntppostingdate). Thanks, John F. Morse. - -2009-04-04 iulius - - * trunk/scripts/innupgrade.in, trunk/tests/data/upgrade/inn.conf, - trunk/tests/data/upgrade/inn.conf.ok: Silent innupgrade when - reaching a parameter which expects a list value. - - * trunk/control/modules/newgroup.pl: * Allow a repeated punctuation - in the name of a newsgroup. - - * Do not allow a newsgroup named "poster". - - * Top-level "control", "example", "junk" and "to" are now - rejected. + * Explain how to decode timehash tokens and paths. - * Comment a redundant check. + Also use fixed 16-bit and 32-bit numbers for tokens; timehash did + not work on systems where short ints were not 16-bit integers. - * trunk/control/modules/newgroup.pl: Reject newgroup control - articles which are incoherent between the announced status of the - newsgroup and the moderation flag in its description. + * Do not send 205 on exit when the client does not send QUIT. - * trunk/control/controlchan.in: Properly parse Control: headers - (newsgroups names are case-sensitive). - - * trunk/TODO, trunk/contrib/README, trunk/contrib/auth_pass.README, - trunk/doc/FAQ, trunk/doc/pod/hook-perl.pod, - trunk/doc/pod/hook-python.pod, trunk/doc/pod/install.pod, - trunk/doc/pod/readme.pod: * Consolidate INN mailing-lists and use - inn-workers instead of inn-bugs and inn-patches. - - * Mention Trac notifications in inn-bugs. + * Increase the CNFS blocksize from 512 bytes to 4096 bytes and the + size limit for a buffer from 1 TB to 16 TB. - * Fix a few https links to ISC. - -2009-04-03 iulius - - * trunk/innd/art.c, trunk/innd/nc.c: Remember the message-IDs of - rejected articles when the reject is done before ARTpost(). + Currently the CNFS storage method uses a 512 byte (1 sector)- + granularity for its "filesystem". That was great in the nineties, + but nowadays that is very limiting: - Also remember them when INN is rund in slave mode. + - most filesystems use 4K blocks, so a write to a 512 byte- CNFS + block can result in a read-modify-write cycle, slowing down + writes enormously (effectively making them synchronous) - With + larger devices, the block-bitmap at the start balloons in size - + The size limit of a CNFS file/partition is 2^31 * 512 = 1 TB. + (the block-offset is stored in the CNFS token as a signed + integer..) - We now properly parse all the headers (and for instance find out - the message-ID or the path of an article even though the relevant - headers come after an error has been triggered off). - - * trunk/innd/art.c: * Make the code more robust as for the use of - the distributions list (make sure it is not null). + So I have updated storage/cnfs/ to use 4K blocks. - * Fix a bug in the remembering of message-IDs (remembertrash was - not checked when an error occurs during storing). - - * trunk/innd/art.c: Allow an empty distributions list (otherwise, - the function always returns false). - - * trunk/innd/art.c: Log articles rejects even though the path or - the message-ID is unknown. - - * trunk/innd/util.c: Fix a segfault in innd when a NULL pointer is - passed as the first argument of MaxLength. + This introduces a new CNFS version in the CNFS header, version 4. + The header now includes a blocksize member, which is 4K by + default. The block offset is now encoded in the CNFS token as a + unsigned int. CNFSv4 supports files/partitions up to 16 TB with a + 4K blocksize. - Thanks to Petr Novopashenniy for the bug report. - - * trunk/innd/art.c, trunk/innd/innd.h, trunk/innd/nc.c: When the - news server is throttled, log the rejected article (with 400) in - the news log file. - -2009-03-28 iulius - - * trunk/innfeed/host.c, trunk/nnrpd/perl.c, trunk/nnrpd/python.c: - Remove useless xstrdup() calls in vector_add(). Memory has been - leaking in both innfeed (since commit 8176) and nnrpd (since a - long time). - -2009-03-26 iulius - - * trunk/LICENSE, trunk/MANIFEST, trunk/configure.ac, - trunk/include/clibrary.h, trunk/lib/Makefile, - trunk/lib/strerror.c, trunk/support/mkmanifest, - trunk/tests/Makefile, trunk/tests/TESTS, trunk/tests/lib, - trunk/tests/lib/strerror-t.c: Remove the replacement for a - missing strerror function. Modern systems have it (only ULTRIX is - reported not to). + If we want to support > 16TB with 4K blocks, that is doable by + stealing a few bits from the 'cycnum' value in the CNFS token. + The code was updated so that for CNFSv4 and up the cyclenumber + wraps on 2^24 instead of 2^32 (with one wrap per day, that's good + for 45000 years, so there is no problems there). So we have 8 + bits for that, but the rest of the code has not been written yet. - The test suite does not work on a few systems (the wording of the - reply to strerror(0) is not standardized). - -2009-03-23 iulius - - * trunk/BOOTSTRAP, trunk/configure.ac, trunk/doc/pod/hacking.pod, - trunk/doc/pod/news.pod: Require version 2.61 or later of Autoconf - (previously, Autoconf 2.59 or later was required). + The code works fine with existing CNFSv3 files/partitions. - Commit 8390 fixed a bug for the AC_FUNC_FSEEKO Autoconf macro - ($ac_cv_sys_largefile_source is used instead of - $ac_cv_func_fseek). - - * trunk/nnrpd/nnrpd.c: Add TCP_NODELAY to nnrpd in order to fix an - issue of slow downloading of overviews and slow answers on some - architectures (like BSD/OS). + cnfsstat and cnfsheadconf have also been updated to understand + CNFSv4. - Patch suggested by David Canzi. - - * trunk/configure.ac: The AC_FUNC_FSEEKO Autoconf macro changed and - now defines $ac_cv_sys_largefile_source instead of - $ac_cv_func_fseek. Support for large files has therefore been - broken on a few architectures (like FreeBSD) for a long time. - -2009-03-18 iulius - - * trunk/innd/art.c: Do not log 437/439 when the article is not - rejected. - - * trunk/CONTRIBUTORS, trunk/innd/art.c: inn_status.html was not - counting rejects during TAKETHIS (response code 439). - - * trunk/innd/art.c, trunk/scripts/innreport_inn.pm: Log right 439 - response codes in /news when TAKETHIS rejects a message - (it is not 437 like IHAVE). - - * trunk/innd/nc.c: When paused or throttled, do not hang incoming - connections (nnrpd was hanging without responding to a client - trying to post an article). + Right now a new CNFS file/device is always initialized with 4K + blocksize, but it would be trivial to make that configurable. + With larger blocksizes we might want to look at the CNFS write + padding though it is perhaps not useful to pad CNFS writes to + larger blocks than 4K. It doesn't do any harm though. - Thanks to Ray Banana for the bug report. + Thanks to Miquel van Smoorenburg for the CNFSv4 patch. -2009-03-17 eagle +2009-08-22 iulius - * trunk/doc/FAQ: Fix typo, thanks Geraint A. Edwards. + * Silent gcc warnings for a possibly uninitialized variable. -2009-03-16 iulius +2009-08-21 iulius - * trunk/doc/pod/inn.conf.pod, trunk/lib/innconf.c, - trunk/samples/inn.conf.in: Update innconf to reflect the changes - of commit 8383. Also decrease overcachesize from 128 to 64 - (previously 15). + * Use Autoconf quadrigraphs to properly encode brackets. -2009-03-15 iulius + * Mention ckpasswd(8) in the "see also" section of the + documentation for auth_krb5. - * trunk/doc/pod/inn.conf.pod, trunk/samples/inn.conf.in: Increase - the default settings of overcachesize from 15 to 128 and - msgidcachesize from 10000 to 16000. +2009-08-20 eagle - * trunk/nnrpd/sasl.c: Revert commit 8268 about AUTHINFO SASL: + * Avoid using markup in prunehistory NAME section - The knowledge acquired since the beginning of a session should - not be reset when no security layer has been negotiated during - the SASL exchange. - -2009-03-10 eagle - - * trunk/doc/FAQ: Current release is 2.4.6. + Avoid POD markup in the prunehistory NAME section. Not all + versions of pod2man will strip this markup when generating the + man page, and *roff markup in NAME confuses some man + implementations. -2009-03-09 iulius - - * trunk/doc/pod/news.pod: New change for INN 2.5.0 (RC1 right now). - - * trunk/lib/uwildmat.c: Silent a warning (unitialized value -- - which is initialized by design). - - * trunk/control/modules/newgroup.pl: Reactivate the check for a - proper newsgroup name. + * Recommend against using auth_krb5 - Also add a check for a non-empty description. + In the auth_krb5 man page, recommend using ckpasswd with PAM + support and a Kerberos PAM module instead of this authenticator. - * trunk/innfeed/connection.c: Remove a part of commit 7382: - - Whenever doSomeWrites is called with writes still pending, add a - work callback to do the write at the next opportunity. This - should eliminate a temporary connection deadlock state on - flushing, where the response to the IHAVE body arrived before we - finished writing it. Before, doSomeWrites would have failed to - call issueQUIT because writes were still pending, and then after - the writes complete, there's no code to go back and issue it - until the read timeout expires. + * Rewrite auth_krb5 to use modern Kerberos APIs - It appears that innfeed eats CPU with that callback: + Use krb5_get_init_creds_password and the current APIs and remove + a bunch of cruft that's unnecessary and uninteresting. The + library defaults will take care of things like building the + correct service principal. - PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND 25012 - news 103 4 8304K 14M run/1 19:08 96.68% 96.68% innfeed 24847 news - 95 0 30M 32M run/0 3:56 18.12% 18.12% innd + Add a call to krb5_verify_init_creds, although this will only + work if nnrpd is pointed to a keytab that it can read or if it's + run as root. Looking in a different keytab for a local key with + which to validate the credentials is left as future work and + requires additional configuration to point to the correct keytab. -2009-03-08 iulius - - * trunk/control/controlchan.in, - trunk/control/modules/checkgroups.pl: Add encodings to - checkgroups processing: controlchan now looks for the charset and - try to convert the descriptions into the local encoding. + * Strict aliasing cleanups in innd network code - Defaults are cp1252 for expected encodings (unless the charset is - properly set in the checkgroups message, or control.ctl dictates - another charset) and utf-8 for the local encoding. + gcc 4.4 is now stricter about aliasing checks and doesn't like + taking variables of type struct sockaddr_storage and casting them + or assigning pointers to them to other struct types and then + dereferencing or storing through those other pointers. It may + optimize the stores away, which would be bad. - close #4 - -2009-03-05 iulius - - * trunk/nnrpd/group.c, trunk/nnrpd/list.c: Fix a bug in the result - of LIST ACTIVE, GROUP and LISTGROUP when the newsgroup is empty. - If n is the common low/high mark, then low=n+1, high=n should be - returned (and not low=n, high=n-1). - - * trunk/innd/ng.c: When a newsgroup is empty, the high water mark - should be one less than the low water mark according to RFC 3977. + The primary affected code is the inetd query code. There, + allocate memory from the heap instead of the stack and use a + variable of type struct sockaddr *, which is cast to other + pointer types. gcc knows how to deal with that. - "ctlinnd renumber" must not assume the previous high water mark - in the active file was right. + Elsewhere, eliminate RCaddressmatch in favor of + network_sockaddr_equal, which does the same thing but is + aliasing-clean. Stop using SA_LEN to get the length of an address + for memcpy and instead just copy the full size of a + sockaddr_storage, which given that both the source and the + destination are sockaddr_storage variables will be safe. - * trunk/nnrpd/list.c: When a newsgroup is empty, the high water - mark should be one less than the low water mark according to RFC - 3977. Fix LIST ACTIVE to do that when possible. +2009-08-20 iulius -2009-03-01 iulius + * Convert makedbz(8) and prunehistory(8) documentation to POD. - * trunk/authprogs: Clean up auth_smb in svn:ignore. +2009-08-19 iulius - * trunk/frontends/mailpost.in: Return non-zero exit status on a few - other errors. + * Add examples in grephistory documentation. - * trunk/support/mksnapshot: Do not build INN when making a beta or - RC release. +2009-08-18 iulius - * trunk/Makefile, trunk/support/mkmanifest: Generate a changelog - file for beta and RC releases. + * * Return the contents of the expires history field when + "grephistory -l" is used. It was always empty. Also returns the + hash of the requested message-ID. - Exclude README.* files from being checked for in the MANIFEST. - - * trunk/m4/perl.m4: Add a warning at configure time if GD is not - installed as a Perl module. - -2009-02-28 iulius - - * trunk/MANIFEST, trunk/authprogs/Makefile, trunk/doc/man, - trunk/doc/man/Makefile, trunk/doc/pod/Makefile, - trunk/doc/pod/auth_smb.pod, trunk/doc/pod/readers.conf.pod, - trunk/support/mkmanifest: Remove residual traces of auth_smb in - INN. (Following commit 8365.) - -2009-02-28 eagle - - * trunk/LICENSE, trunk/authprogs/Makefile, - trunk/authprogs/auth_smb.c, trunk/authprogs/smbval, - trunk/doc/pod/news.pod: Remove auth_smb. This hasn't been - maintained since it was contributed apart from a single pass - through to clean up warnings and dead code. It was based on an - old version of the Samba login code that had known security - issues and probably therefore has security issues of its own. No - one currently working on INN has the necessary background or test - environment to test this code and keep it working. - - There are good PAM modules that do the same thing as this code. - Users who want to authenticate users against Samba or SMB servers - should use ckpasswd with PAM support and the pam_smbpass or - similar PAM module. - - * trunk/doc/pod/news.pod: Rephrase some of the NEWS entries for - 2.5.0 to be more idiomatic and rewrap some long lines. Add new - NEWS entries for improved IPv6 support, code cleanup, and the - improved test suite. - -2009-02-28 iulius - - * trunk/samples/control.ctl.local: Fix encodings for Russian and - Baltic languages. Thanks to Andrew A. Vasilyev for his valuable - information. - -2009-02-27 iulius - - * trunk/doc/pod/news.pod: Mention a fix for Perl 5.8.9 in the INN - 2.4.6 changelog. - - * trunk/frontends/mailpost.in: Return a non-zero exit status on - error. - - * trunk/frontends/mailpost.in: * Fix *again* an uninitialized - variable (when the body of the article is empty). + * Mention in documentation that "grephistory -l" returns nothing + when the storage API token does not exist. - * When an article contained CRLF, parsing was broken. - - * trunk/doc/pod/distributions.pod, trunk/doc/pod/docheckgroups.pod, - trunk/doc/pod/incoming.conf.pod, trunk/doc/pod/news.daily.pod, - trunk/doc/pod/newsgroups.pod, trunk/doc/pod/newslog.pod, - trunk/doc/pod/scanlogs.pod, trunk/doc/pod/shlock.pod, - trunk/doc/pod/simpleftp.pod, trunk/doc/pod/storage.conf.pod, - trunk/doc/pod/tally.control.pod, trunk/perl/INN/Config.pm.in, - trunk/scripts/simpleftp.in: Remove my email from documentation. - -2009-02-26 iulius - - * trunk/doc/pod/news.pod: Better changelog for INN 2.5.0 (release - candidate). Separate more clearly changes with upgrade - significance (in the upgrading section) and the regular summary - of changes section. - - * trunk/Makefile: With commit 8353: Add support for release - candidates generation. - - * trunk/support/mksnapshot: Add support for release candidates - generation. - -2009-02-25 iulius - - * trunk/doc/pod/news.pod: New changelog for INN 2.4.6. - - * trunk/doc/pod/news.pod: Old changelog fixes. - - * trunk/scripts/inncheck.in: rnews can be owned by the group uucp - if --enable-uucp-rnews is given to configure. - - * trunk/scripts/inncheck.in: Allow a range of permissions to be - checked, instead of a forced one. Therefore, we can have - different configurations, depending on the security the user - wants to enforce. - - * trunk/frontends/mailpost.in: Fix an uninitialized variable (when - the body of the article is empty). + * Fixed "grephistory -v" which does not work as expected when the + storage API token does not exist. -2009-02-22 iulius + * Convert expire(8) and expirerm(8) documentation to POD. - * trunk/innd/perl.c, trunk/nnrpd/perl.c: Add void casts to silence - "value computed is not used" warnings with gcc 4.3.2. + * Various fixes and homogenizations. - * trunk/doc/pod/news.pod: Proposal of changelog for INN 2.5.0. - -2009-02-21 iulius - - * trunk/doc/pod/makehistory.pod: Better wording. - - * trunk/doc/FAQ, trunk/doc/pod/makehistory.pod: Mention that - makehistory also generates dbz indices, contrary to what the man - page stated. Also fix a few typos and wrong command-line - commands. - - * trunk/expire/makehistory.c: Remove the "-e" flag from the - command-line parser of makehistory (oversight of commit 8022). - - * trunk/scripts/inncheck.in: Fix a bug in the check for the group - of the innbind program (inncheck was checking the group with the - news user instead). Also add a comment for unknown files in the - rnews directory (they may be backups ending with ".OLD"). - -2009-02-20 iulius - - * trunk/doc/pod/news.pod: Changelog for INN 2.4.6 ;-) - - * trunk/doc/pod/install.pod, trunk/doc/pod/ovdb.pod: Mention that - Berkeley DB 4.7 is recommended, as well as Python 2.5.0. - -2009-02-19 iulius - - * trunk/storage/tradindexed/tradindexed.c: A boolean value should - be returned by tradindexed_cancel (not a NULL pointer). - - * trunk/innfeed/Makefile: Update dependencies. - - * trunk/samples/control.ctl: Update to new upstream version: add - the grisbi.* hierarchy. - - * trunk/support/config.guess, trunk/support/config.sub: Update - support files for autoconf to their last stable version: * - config.guess (i*86:AROS:*:*): Detect AROS. * config.guess - (NCR*:*:4.2:*, MPRAS*:*:4.2:*): Add detection for NCR MPRAS. * - config.sub (aros, aros-*): Handle these. * config.sub: Handle - -kopensolaris*. * config.sub (sh[24]aeb): Handle big endian - variants. * config.sub (lm32): New. - - * trunk/nnrpd/post.c, trunk/scripts/innreport_inn.pm: Increment the - count of rejected posts when CLOSE is used in filter_nnrpd.pl. - Also fix a few messages processed by innreport as for postings - when CLOSE/DROP/SPOOL are used. - -2009-02-18 iulius - - * trunk/doc/pod/hook-perl.pod, trunk/nnrpd/post.c: Add the - possibility to close a connection via filter_nnrpd.pl (Perl nnrpd - filter hook). The returned string should begin with "CLOSE" to do - that. - - * trunk/perl/INN/Config.pm.in, trunk/scripts/innshellvars.in, - trunk/scripts/innshellvars.pl.in, - trunk/scripts/innshellvars.tcl.in: Export a "C" value for - LC_CTYPE so as to treat all input as a stream of bytes in our - scripts. Problems are for instance triggered off by docheckgroups - on UTF-8 systems when it receives a ISO-8859-15 checkgroups - control message: sed regexps do not match what they should. - - * trunk/control/docheckgroups.in: The pattern "a\+" is not - recognized by a few sed implementations. Therefore, we use "aa*" - instead. - -2009-02-14 eagle - - * trunk/LICENSE: Add new copyright year. - -2009-02-01 iulius - - * trunk/control/docheckgroups.in: Be more consistent in wording. - - * trunk/scripts/inncheck.in: Remove warnings from inncheck if - control.ctl contains lines for encoding settings. - - * trunk/control/controlchan.in, trunk/control/modules/newgroup.pl, - trunk/samples/control.ctl.local: Add encoding to newgroup - processing: controlchan now looks for the charset and try to - convert the description into the local encoding. Defaults are - cp1252 for expected encodings (unless the charset is properly set - in the newgroup message, or control.ctl dictates another charset) - and utf-8 for the local encoding. + * * History retention is now done, when possible, on posting times + and not arrival times. Otherwise, articles may be kept too long + in history. - Add a few encoding exceptions to control.ctl.local. + * HISremember in history API now has a fourth argument (the + article posting date). - (The man pages will be updated when checkgroups are also - processed the same way.) + * The default value for /remember/ is now 11 (artcutoff + 1 in + order to take into account articles posted one day into the + future). - see #4 - -2009-01-31 iulius - - * trunk/scripts/innupgrade.in: Better explanation for the reason - why innupgrade should be taint-safe. - - * trunk/m4/mmap.m4: Typo from previous commit... - - * trunk/m4/cc-flags.m4, trunk/m4/inet-ntoa.m4, trunk/m4/int32.m4, - trunk/m4/iov-max.m4, trunk/m4/large-fpos.m4, trunk/m4/mmap.m4, - trunk/m4/sendfd.m4, trunk/m4/snprintf.m4, trunk/m4/socket.m4, - trunk/m4/vamacros.m4: Change deprecated invocations of - AC_TRY_RUN, AC_TRY_LINK and AC_TRY_COMPILE to their new - equivalent AC_RUN_IFELSE, AC_LINK_IFELSE and AC_COMPILE_IFELSE - functions. Also use AC_LANG_SOURCE and AC_LANG_PROGRAM. - -2009-01-31 eagle - - * trunk/m4/getaddrinfo.m4: Use AC_RUN_IFELSE and AC_LANG_SOURCE in - the getaddrinfo check instead of the deprecated AC_TRY_RUN. - -2009-01-31 iulius - - * trunk/MANIFEST, trunk/configure.ac, - trunk/include/portable/socket.h, trunk/m4/getaddrinfo.m4: Make - use of the AI_ADDRCONFIG flag conditional (some systems like - BSD/OS do not support it properly). + * Documentation rewording and improvements. - * trunk/tests/storage/sm.t: Use "q" and "d" instead of "Q" in sed - patterns. + * Various homogenizations. - * trunk/scripts/innupgrade.in: Make innupgrade taint-safe; - otherwise, it is not run on a few systems like BSD/OS during - "make update". +2009-08-15 iulius - * trunk/innd/cc.c, trunk/innd/lc.c, trunk/innd/rc.c, - trunk/lib/inndcomm.c, trunk/lib/localopen.c: Fix compilation - issues when Unix domain sockets do not exist. + * Typo for logstatus, an inn.conf parameter. -2009-01-30 iulius + * Typo: occurance -> occurrence. - * trunk/support/install-sh: Add "-f" to the move command during - "make update". +2009-08-14 iulius - * trunk/innd/rc.c: Fix an unknown value for ai_flags. The problem - is found only on platforms without Unix domain sockets. - -2009-01-29 iulius - - * trunk/lib/getnameinfo.c, trunk/tests/lib/getnameinfo-t.c: Add a - few casts to silent gcc warnings during the build. - - * trunk/configure.ac, trunk/include/clibrary.h, - trunk/include/portable/setproctitle.h: setproctitle, strlcat and - strlcpy may exist as functions but without being prototyped (for - instance on BSD/OS). Add their prototype if it is needed. - - * trunk/nnrpd/tls.c, trunk/storage/timecaf/caf.c: Add two casts to - silent gcc warnings during the buid. - - * trunk/lib/confparse.c, trunk/storage/ov.c: Typos. - - * trunk/configure.ac: sys/mount.h requires sys/param.h on some - systems (a warning is issued by configure). - - * trunk/perl/Makefile: Generate INN::Config man page only when the - main file (.in) has changed. Otherwise, it is rebuilt during the - build. - -2009-01-20 eagle - - * trunk/doc/FAQ: Update the FAQ entry for the Cygwin port to not - reference a non-existent URL. - -2009-01-18 iulius - - * trunk/MANIFEST, trunk/control/controlchan.in, - trunk/doc/pod/control.ctl.pod, trunk/doc/pod/tally.control.pod, - trunk/samples/control.ctl.local, trunk/scripts/inncheck.in, - trunk/site, trunk/site/Makefile, trunk/support/mkmanifest: * Add - a local control.ctl file, named control.ctl.local. * Fix a bug in - controlchan: the time of modification of control.ctl is undefined - if the file does not exist and a control article is received. * - Update the documentation of control.ctl with especially an - example of use. * Also fix a typo in the documentation of - tally.control and control.ctl. * Add a syntax check for - control.ctl.local in inncheck. - - close #95 - - * trunk/innfeed/host.c: Fix an assertion failure in innfeed. - connections is a NULL-terminated array; cxn can then be NULL if - maxConnections connections are not open. - - Thanks to William Kronert for the bug report. - - * trunk/scripts/innreport.in: innreport created incorrect file - names at the start of the year: the change of year was not seen. - Instead of creating "Dec 31 04:15:02 -- Jan 2 04:15:03", it - generated a wrong "Jan 1 00:00:00 -- Dec 31 23:59:59". - - Thanks to Alexander Bartolich for the patch! + * A patch from Christopher Biedl to alter ARTcancelverify to check + whether at least one group in the cancel message can be found in + the article to be cancelled. - close #41 + The check for matching Sender: and From: headers is useless and + removed. -2009-01-17 iulius + * Add a restrictive umask before generating TLS certificates. - * trunk/scripts/innmail.in: Fix a check for the definition of - $opt_s (if it was "0", innmail sent the warning that there was no - subject). + * Typo: interpretor -> interpreter. - * trunk/frontends/scanspool.in, trunk/innfeed/procbatch.in, - trunk/innfeed/testListener.pl, trunk/scripts/innmail.in: Use - Getopt::Std instead of getopts.pl (which is not maintained by - Perl and produces spurious warnings). - - Thanks to William Kronert for the report. - - close #123 - -2009-01-12 eagle - - * trunk/m4/perl.m4: Call AC_MSG_RESULT before the warning for - missing Perl modules. - -2009-01-11 iulius - - * trunk/scripts/innreport.in: Add a sanity check in innreport a - division by zero in innreport.db: - - Jan 9 19:27:58 -- Jan 9 19:27:58 - - Thanks to Alexander Bartolich for the patch. +2009-08-05 iulius - * trunk/scripts/innreport.in: Fix a bug in innreport when the log - consists of only one line; then $last_date was never assigned to. - - Patch from Alexander Bartolich. - - see #41 (only the third problem) + * The README files provided with snapshots were still mentioning + the inn-bugs mailing-list instead of inn-workers. - * trunk/control/modules/checkgroups.pl, - trunk/control/modules/ihave.pl, trunk/control/modules/sendsys.pl: - * add a blank line in the mail output of checkgroups control - messages. * ihave control messages did not work (Perl error - because of the use of an unsupported syntax). * sendsys control - messages send the newsfeeds file (and not the newsgroups file). - - * trunk/support/makedepend: Fix a bug in "make depend": an empty - line could be created. - - Example: -- header.h \ -- + * A wrong source was logged to the news log for local postings, + especially when the local server was not listed in incoming.conf + (RChostname() then returned a wrong static buffer and ARTlog() + also did not handle the case of a local connection). - Remove it, so that we only have: -- header.h -- + Also fix the initialization of data->FeedsiteLength when needed. - * trunk/control/controlchan.in: Do not output temp to core because - it can lead to memory issues (or attacks/starvation). Instead, - use temporary files, which is incidentally the default for - MIME::Parser. controlchan is spawn during a long time, so it is - necessary. We purge the temporary files once used. + * Move dbz.h into the public inn directory (it is for instance used + by suck). - see #122 + However, it should be noted that if another history file format + is implemented in the future, it might cause problems to external + programs. -2009-01-10 iulius +2009-07-18 iulius - * trunk/configure.ac, trunk/m4/perl.m4: Add a warning at configure - time if MIME::Parser or Encode are missing. - - see #122 + * Log a checkgroups only once in innreport. Now that all + control.ctl matching lines are used, they were all logged by + innreport as a checkgroups. We only count for several doit + actions. - * trunk/control/controlchan.in, - trunk/control/modules/checkgroups.pl, - trunk/control/modules/ihave.pl, - trunk/control/modules/newgroup.pl, - trunk/control/modules/rmgroup.pl, - trunk/control/modules/sendme.pl, - trunk/control/modules/sendsys.pl, - trunk/control/modules/senduuname.pl, - trunk/control/modules/version.pl, trunk/doc/pod/install.pod, - trunk/doc/pod/news.pod: Use MIME::Parser in controlchan so that - we could decode MIME control headers (especially those which - contain application/news-groupinfo entities, as described in - USEPRO). - - Also fix a long-standing bug of uninitialized variables when some - headers were missing. - - Update INSTALL to mention the dependency on MIME::Parser. - - close #122 + * Do not act on a checkgroups when there isn't any matching + newsgroup. -2009-01-09 iulius +2009-07-08 iulius - * trunk/scripts/innreport.in: * Use of a modified version of time - parsing code that performs faster and more correctly. * Fix the - parsing during leap years. + * If innfeed is not used, news.daily reports an error message when + it tries to find out the pid of all the running instances of + innfeed. We now check for that. - Thanks to Alexander Bartolich for the patch. - - see #90 (Daylight savings time are still mishandled.) + Thanks to Andreas M. Kirchwitz for the patch. -2009-01-08 iulius +2009-07-03 iulius - * trunk/backends/actsyncd.in, trunk/m4/perl.m4, - trunk/support/fixscript.in: Change "tail -n -1" to "tail -n 1" - (after commit 8278). + * Convert the cnfsheadconf man page into POD. - * trunk/backends/actsyncd.in, trunk/m4/perl.m4, - trunk/support/fixscript.in: Use the "-n" option with head and - tail (already used in config.guess). + * When "-c" is not specified, cnfsheadconf exits. It now displays + the status of all CNFS buffers, as written in its documentation. - * trunk/CONTRIBUTORS, trunk/innfeed/connection.c, - trunk/innfeed/connection.h, trunk/innfeed/host.c: Fix an - assertion failure in innfeed. We have cases where all the - connections to a host are inactive and sleeping. Therefore, cxn - is still NULL and passed to cxnCheckstate(). - - Thanks to William Kronert for the bug report. + * * Use Math::BigInt rather than bigint.pl. - close #121 - - * trunk/innfeed/Makefile: Fix dependencies in innfeed: connection.c - was missing. - -2009-01-03 iulius - - * trunk/control/modules/ihave.pl, - trunk/control/modules/newgroup.pl, - trunk/control/modules/rmgroup.pl, - trunk/control/modules/sendsys.pl, trunk/control/perl-nocem.in, - trunk/control/signcontrol.in: * Mention that the newsgroups file - is in $INN::Config::pathdb when a mail is sent to the news - administrator. * Add " (Moderated)" to the end of an empty - newsgroup description if the newsgroups is moderated. * Remove - trailing useless spaces. - -2008-12-31 iulius - - * trunk/nnrpd/nnrpd.c: * Fix a bug with AUTHINFO USER in - CAPABILITIES: it was not properly advertised when INN was not - compiled with TLS support. And also AUTHINFO SASL when INN was - compiled with TLS support! * Do not advertise AUTHINFO SASL and - SASL if no mechanism is available. * Do not advertise AUTHINFO - SASL PLAIN, LOGIN and EXTERNAL unless a TLS layer is active. - - * trunk/nnrpd/sasl.c: Prevent AUTHINFO SASL LOGIN (now a legacy - mechanism) from being used if a TLS layer is not active. + * Use Math::BigFloat not to wrongly truncate numbers. - * trunk/nnrpd/perm.c: Advertise AUTHINFO SASL consider that a - client can authentify if SASL is available (even though there is - no auth:, res:, perl_auth: or python_auth: parameters). +2009-06-28 iulius - * trunk/nnrpd/sasl.c: Only AUTHINFO SASL PLAIN and AUTHINFO SASL - EXTERNAL are vulnerable. Other SASL mechanisms can be used - without an active TLS layer. - - * trunk/scripts/innreport_inn.pm: RFC 4643 states that usernames - and passwords can contain spaces. More generally, they are bytes - strings (without NUL, CR and LF). - - Now that AUTHINFO SASL is implemented, nnrpd supports that. This - patch fixes the decoding of the news.notice file: innreport - couldn't see usernames with spaces. + * * Add a "-v" flag to cnfsstat to see the output of consistency + checks for article storage and history. - Also see #30 (for AUTHINFO USER/PASS where both usernames and - passwords could contain spaces). + * Convert the cnfsstat man page into POD. -2008-12-30 iulius + * Update the NoCeM sample file. - * trunk/nnrpd/sasl.c: Fix a bug after successful AUTHINFO SASL: the - knowledge acquired since the beginning of the session was not - reset when no security layer was negotiated during the SASL - exchange. + * Use gzip instead of compress as the default UUCP batcher. -2008-12-27 iulius +2009-06-23 iulius - * trunk/nnrpd/commands.c, trunk/nnrpd/post.c: Typo and add a - warning about not changing a size without reporting it to Perl - and Python code. - - * trunk/nnrpd/commands.c, trunk/nnrpd/nnrpd.h, trunk/nnrpd/perl.c, - trunk/nnrpd/perm.c, trunk/nnrpd/python.c: Remove useless - intermediate variables to handle the response code of Perl and - Python authentication filters. We now have a pointer to the - response code that we can use in several functions. + * Add the -L flag to makehistory in order to specify a maximum load + average. If exceeded, the rebuild is paused until it decreases + below the specified load. - #see 107 - - * trunk/doc/pod/hook-perl.pod, trunk/doc/pod/hook-python.pod: Typo. - - * trunk/MANIFEST, trunk/doc/Makefile, trunk/doc/compliance-nntp: - Remove the document describing INN's compliance with standards. - It is now in a Trac report. - -2008-12-26 iulius - - * trunk/nnrpd/commands.c: Use 481 as the default value when no - Perl/Python auth hooks are used. - - * trunk/doc/pod/hook-perl.pod, trunk/doc/pod/hook-python.pod, - trunk/nnrpd/commands.c, trunk/nnrpd/nnrpd.h, trunk/nnrpd/perl.c, - trunk/nnrpd/perm.c, trunk/nnrpd/python.c, - trunk/samples/nnrpd_auth.pl.in, trunk/samples/nnrpd_auth.py: - Allow the user to send 403 response codes (with an error string) - with nnrpd Perl and Python filters. Only 281, 481 and 403 (as the - default value) are possible. + Patch by Jonathan Kamens. - * trunk/nnrpd/perl.c: Remove useless code in Perl authentication - hook. When 200 or 201, "code" should not be changed. When 481 is - returned, there is no need to change PERMneedauth (is has already - been set to true before the call of the function). +2009-06-21 iulius -2008-12-26 eagle + * Regenerate dependencies after commit 8531. - * trunk/doc/pod/hook-perl.pod: Correct the suggested response codes - for Perl authentication hooks to match RFC 4643. +2009-06-21 eagle -2008-12-25 iulius + * inn/storage.h depends on inn/defines.h and inn/options.h. - * trunk/nnrpd/perm.c: Return 400 and not 502 when reject_with: is - set in readers.conf. +2009-06-20 iulius - * trunk/nnrpd/perm.c: Send 400 instead of 502 when the server is - temporarily unavailable. Typos and final dots at the end of a few - error strings. + * Fix a bug in how perl-nocem parses its configuration file. A + condition was not right. -2008-12-24 iulius + * sasl.conf does not exist any longer. - * trunk/MANIFEST, trunk/doc/pod/getlist.pod, - trunk/include/inn/libinn.h, trunk/include/inn/nntp.h, - trunk/lib/Makefile, trunk/lib/commands.c, trunk/nnrpd/list.c, - trunk/nnrpd/nnrpd.c, trunk/nnrpd/nnrpd.h: Add the CAPABILITIES - command to nnrpd. Also check whether the possible keyword is - valid. + * * Change the default value for TLS certificates from to + . - Remove LIST EXTENSIONS. + * Add a default value to tlscapath: because it is required by + nnrpd when TLS is used. - close #91 + * Improve the TLS documentation. - * trunk/doc/compliance-nntp: Update the compliance NNTP document. - Mention RFC 3977, 4642, 4643 and 4644. + * * Fixed a segfault in imap_connection which can occur when SASL + is used (overflow in strlcpy). - Only innd does not check argument length (nnrpd does). LIST - EXTENSIONS is removed. XHDR is compliant with RFC 2980. innd and - nnrpd do not advertise IHAVE for the entire session. + * Owing to the US-CERT vulnerability note VU#238019, Cyrus SASL + library has slightly changed. imap_connection and nnrpd now + handle that change. Otherwise, some answers are too long to be + properly computed during SASL exchanges (because of a new null + character added by sasl_encode64). -2008-12-23 iulius + * The distributions file was not installed. It was an oversight. - * trunk/doc/pod/hook-python.pod, trunk/samples/filter_innd.py: Add - notes about buffers and memory views in documentation. Also fix a - wrong syntax to have access to a dictionary key. + * * Fixed a memory allocation problem when retrieving via + HDR/XHDR/XPAT the contents of an extra overview field absent from + the headers of an article. The NEWNEWS command was also affected + on very rare cases. Thanks to Tim Woodall for the bug report. - see #78 - - * trunk/samples/nnrpd_access_wrapper.py, - trunk/samples/nnrpd_auth_wrapper.py: Better Python syntax. - - * trunk/samples/INN.py, trunk/samples/filter_innd.py, - trunk/samples/nnrpd.py, trunk/samples/nnrpd_access.py, - trunk/samples/nnrpd_access_wrapper.py, - trunk/samples/nnrpd_auth.py, trunk/samples/nnrpd_auth_wrapper.py, - trunk/samples/nnrpd_dynamic.py, - trunk/samples/nnrpd_dynamic_wrapper.py: In Python samples: * - Remove tabulations for indentations (not allowed by Python 3.0 - when spaces are used for that purpose). * Add a comment for - "except Exception *as* errmsg" (new syntax). * Add a comment for - memoryview() instead of buffer() which is absent from Python 3.0. - * Remove occurrences of types.InstanceType (absent from Python - 3.0). * Use parenthesis for print(). * Add a hook to use - sys.intern() instead of intern() for Python 3.0. + * HDR/XHDR/XPAT answers are now robust when the overview database + is inconsistent. When the overview schema was modified without + the overview database being rebuilt, wrong results could be + returned for extra fields (especially a random portion of some + other header). The desired header name is now explicitly searched + in the overview information. In order to achieve that, the + overview_getheader() function was split into + overview_get_standard_header() and overview_get_extra_header(). + It allows to search by index for standard headers and to walk + extra overview fields. - All the samples are for directly use with Python 2.x. Commented - lines are present wherever the syntax has changed with Python - 3.x. - - see #78 + * Fixed a memory leak when requesting metadata information + (:bytes and :lines). -2008-12-22 iulius +2009-06-17 iulius - * trunk/backends/news2mail.in: Add a comma to separate addresses. - Otherwise, a broken To: header was generated by news2mail when - multiple addresses were used. - - close #73 + * Typo: "to precede" instead of "to preceede". -2008-12-21 iulius + * Mention to update install-sh to its last version. - * trunk/doc/pod/readme.pod: Remove an obsolete link (error 404) for - the suck package. + * Typos. - * trunk/LICENSE, trunk/MANIFEST, trunk/control, - trunk/control/Makefile, trunk/control/gpgverify.in, - trunk/support/mkmanifest: Remove gpgverify because it uses the - old attached signature verification method, which doesn't work - properly for new-style GnuPG signatures that require Hash headers - for attached signatures. + * * Fix an inaccuracy in the count of overview stats. - 23:21 news@trigofacile ~% gpgverify < checkgroups-1229673648.sig - zsh: exit 3 gpgverify < checkgroups-1229673648.sig - - Note that pgpverify also handles GnuPG signatures, recognizes - their new-style, and is shipped with INN. For that checkgroups, - it answers "[GNUPG:] GOODSIG", etc. Therefore, pgpverify should - be used instead of gpgverify. - - close #13 + * Also fix a potential segfault in case overview_getheader() + returns a NULL pointer (though it should not for the Message-ID). - * trunk/samples/innreport.conf.in, trunk/scripts/innreport.in: The - default value for HTML output is false. Add the html-unknown - parameter in innreport.conf. Use the new @HTTPDIR@ configure - variable instead of a hard-coded path. +2009-06-11 eagle - * trunk/doc/pod/hook-perl.pod, trunk/doc/pod/readme.pod: Mention - Steve Crook's Cleanfeed version. Remove obsolete Usenet II Filter - for innd. + * Link tinyleaf with $(LIBS), needed for networking libraries on + Solaris. - * trunk/MANIFEST, trunk/doc/man, trunk/doc/man/mod-active.8, - trunk/doc/pod/Makefile, trunk/doc/pod/mod-active.pod: Convert - mod-active(8) man page into POD. Mention that no syntax checking - is performed on group names by the script. +2009-06-09 iulius - * trunk/doc/man/innfeed.conf.5, trunk/innfeed/connection.c, - trunk/innfeed/endpoint.c, trunk/innfeed/host.c, - trunk/innfeed/imap_connection.c, trunk/innfeed/innlistener.c, - trunk/innfeed/main.c, trunk/innfeed/misc.c, trunk/innfeed/misc.h, - trunk/samples/innfeed.conf: Add a new log-time-format: parameter - for innfeed. Change ctime(3) to strftime(3). Update documentation - and innfeed.conf sample file. - - Thanks to Alexander Bartolich for the patch. - - close #97 + * Update the release date of INN 2.5.0. - * trunk/MANIFEST, trunk/backends/crosspost.c, - trunk/doc/man/innreport.8, trunk/doc/pod/install.pod, - trunk/samples/innreport.conf.in, trunk/scripts/innreport_inn.pm, - trunk/storage/tradspool/README.tradspool: Remove the crosspost - backend program (broken since INN 2.3.0, and not much useful - nowadays). Update documentation and innreport. - - close #96 +2009-06-06 iulius -2008-12-17 iulius + * Clarify a sentence about the difference between doit and mail for + a checkgroups. - * trunk/authprogs/radius.c: Fix the segfault of radius - authenticator when none of the radius servers respond. + * * Import new versions of a few m4 files provided by rra-c-util + 1.0. - Thanks to Matija Nalis for the patch. - - close #94 - -2008-12-15 iulius + * getaddrinfo.m4 is merged into socket.m4. - * trunk/scripts/innshellvars.tcl.in: Add $inn_db_home and - $inn_syslog_facility. Set umask. - - close #10 + * inncheck now recognizes the new "/maxdocheckgroups/" keyword in + control.ctl. -2008-12-14 iulius + * Use AS_HELP_STRING instead of obsolete AC_HELP_STRING. - * trunk/doc/pod/news.pod, trunk/scripts/innshellvars.in: Fix - exports. Add $UMASK and $SYSLOG_FACILITY. Rename $SPOOLBASE to - $SPOOLDIR. + * * Use AC_COMPILE_IFELSE instead of AC_EGREP_CPP. - see #10 + * Use AC_CACHE_CHECK instead of AC_MSG_CHECKING, AC_CACHE_VAL and + AC_MSG_RESULT. - * trunk/perl/INN/Config.pm.in, trunk/scripts/innshellvars.pl.in, - trunk/scripts/innshellvars.tcl.in: Add $path and $locks - variables. - - see #10 +2009-05-24 iulius - * trunk/scripts/innshellvars.tcl.in: Do the same thing as the shell - version of innshellvars: * Re-add $inn_newslbin. * New variable - $inn_home. * Export variables NEWSHOME, SPOOLDIR, MOST_LOGS, - NEWSBIN, NEWSETC, NEWSLIB, INNDDIR, NEWSLBIN in the environment.i - - Also fix $inn_controlprogs. - - see #10 - - * trunk/perl/INN/Config.pm.in, trunk/scripts/innshellvars.pl.in: Do - the same thing as the shell version of innshellvars: * Sets - umask. * New variable $home. * Export variables NEWSHOME, - SPOOLDIR, MOST_LOGS, NEWSBIN, NEWSETC, NEWSLIB, INNDDIR, NEWSLBIN - in the environment. - - see #10 - - * trunk/backends/actmerge.in, trunk/backends/actsync.c, - trunk/backends/actsyncd.in, trunk/doc/FAQ, - trunk/doc/pod/checklist.pod, trunk/doc/pod/inndf.pod, - trunk/doc/pod/innupgrade.pod, trunk/doc/pod/install.pod, - trunk/doc/pod/news.daily.pod: Be consistent in the documentation: - use I and friends instead of paths like - /usr/local/news/bin. - - close #5 - - * trunk/frontends/sys2nf.c: Use pathdb from inn.conf in sys2nf.c. - - see #5 - - * trunk/frontends/sys2nf.c: Fix a compilation issue. - - * trunk/doc/pod/inn.conf.pod: Add double quotes in the minimal - inn.conf. - - * trunk/tests/data/upgrade/inn.conf, - trunk/tests/data/upgrade/inn.conf.ok: Add test for innupgrade: - change nntpactsync to incominglogfrequency. - -2008-12-14 eagle - - * trunk/innfeed/endpoint.c: Remove dead code for historic BSD and - System V signal handling that Autoconf wasn't probing for and - reactivate the intended sigaction code for blocking signals that - had been compiled out. - - * trunk/expire/fastrm.c: Be consistent about NULL pointer checks - when freeing file lists. Not really a bug, but it makes it more - obvious the code is correct. - - * trunk/innd/util.c: Handle the second argument being NULL in a - call to MaxLength, which can happen in some pathological error - handling cases. Found by Saturn in 2007. - - * trunk/storage/tradindexed/tdx-group.c: In the tradindexed audit - code, make sure that we don't try to free a NULL vector. Found by - Saturn back in 2007. - - * trunk/innfeed/tape.c: Add a paranoia ASSERT in tape processing. I - don't think the article argument here could have ever been NULL, - but the function would definitely crash it if were and innfeed - uses an ASSERT elsewhere when that's the case. - - * trunk/storage/tradindexed/tdx-group.c: hashmap_load() can return - NULL in weird cases (missing active file), so check the return - value before using it when doing audits. Found by Saturn back in - 2007. - - * trunk/scripts/innshellvars.tcl.in: Remove inn_newslbin from - innshellvars.tcl. It's not present in the other versions and - isn't used by INN. Also set inn_newsetc (used elsewhere in the - file) from pathetc instead of hard-coding an /etc subdirectory of - pathnews. - - * trunk/doc/FAQ: Change multiple references from CVS to Subversion. - -2008-12-07 iulius - - * trunk/nnrpd/nnrpd.c: Prettier answer when the command does not - need any argument. - -2008-12-06 iulius - - * trunk/doc/pod/pullnews.pod, trunk/frontends/pullnews.in: * Add - "-O" option, which avoids downloading the whole article from - upstream if downstream already has it (adding small overhead by - using STAT); * Fix hostnames on command line (implemented, but - didn't work before); + Use admin-specified ordering of servers in - config file (useful when using timeouts and some servers are - faster/preferred); + Lock file is per-groupfile, not - per-unix-user, which allows running several pullnews with - different config files in parallel. - - Thanks to Matija Nalis for the patch. - - * trunk/m4/libtool.m4, trunk/m4/ltoptions.m4, trunk/m4/ltsugar.m4, - trunk/m4/ltversion.m4, trunk/m4/lt~obsolete.m4, - trunk/support/ltmain.sh: Update libtool to version 2.2.6a with - the necessary support for the -B flag in ltmain.sh. - - * trunk/support/config.guess, trunk/support/config.sub: Update - support files for autoconf to their last stable version. * - config.sub (z80, z80-*): Handle. * config.sub (cegcc, -cegcc*): - New. * config.guess: Add support for detecting x86_64 Solaris. * - config.guess (*:Interix*:[3456]*): Handle "genuineintel". * - config.guess (padre:Linux:*:*): New. * config.guess - (i86pc:SunOS:5.*:*, i86xen:SunOS:5.*:*): No need to invoke echo - as /usr/bin/echo. - - * trunk/samples/moderators: Add aioe.*, perl.* and si.* information - for moderated newsgroups. - - * trunk/samples/control.ctl: Update to new upstream version: * Add - demon.*, hacktic.* and news4us.*. * Change information for us.* - (now PGP-managed) and xs4all.*. * Mark easynet.*, efn.*, eug.*, - humanityquest.* and un.* as historic. * Mark info.* and uiuc.* as - defunct. - - * trunk/nnrpd/article.c: The check for an invalid newsgroup after - successful authentication should be done only if articles are - requested by message-IDs. - -2008-12-05 iulius - - * trunk/nnrpd/commands.c: Fix a bug introduced in revision 8061. - - When no group is selected and authentication occurs, articles - could not be retrieved by their message-IDs. - - Thanks to Fred Senault for having spotted that issue. - -2008-12-02 iulius - - * trunk/backends/mod-active.in: Fix a bug in mod-active for aliased - newsgroups. Only "=" was written to the active file. - - Thanks to D. Stussy for the patch. - -2008-12-01 iulius - - * trunk/innfeed/host.c: Fix a bug introduced in revision 7786. If - bindaddress6: is unset in innfeed.conf, force-ipv4: was not taken - into account. - -2008-11-30 iulius - - * trunk/innd/art.c, trunk/innd/innd.h: Use a buffer for the Lines: - header (to generate overview :lines metadata). - - * trunk/doc/pod/auth_krb5.pod, trunk/doc/pod/auth_smb.pod, - trunk/doc/pod/domain.pod, trunk/doc/pod/external-auth.pod, - trunk/doc/pod/hook-perl.pod, trunk/doc/pod/ident.pod, - trunk/doc/pod/incoming.conf.pod, trunk/doc/pod/libauth.pod, - trunk/doc/pod/pullnews.pod, trunk/doc/pod/radius.conf.pod, - trunk/doc/pod/rc.news.pod, trunk/doc/pod/tst.pod: Use S<> for - names. Missing =cut at the end of incoming.conf.pod. - - * trunk/doc/pod/news2mail.pod: Add a FILES section and credits to - D. Stussy. - - * trunk/MANIFEST, trunk/backends/news2mail.in, trunk/doc/man, - trunk/doc/man/news2mail.8, trunk/doc/pod/Makefile, - trunk/doc/pod/news2mail.pod, trunk/samples/news2mail.cf, - trunk/samples/newsfeeds.in: Add an optional third parameter to - news2mail, specifying the envelope-from address for e-mails sent - to lists. Also fix a long-standing bug about the use of the first - argument (in To:). Fix levels for syslog calls. - - Thanks to D. Stussy for the patch. - - Convert the documentation into POD. Update the samples files. Use - "Ap" and an exclusion of the list owner domain in newsfeeds. - -2008-11-29 iulius - - * trunk/doc/pod/inn.conf.pod: Typo for the name of - buffindexed.conf. Reported by Jens Kubieziel. - - * trunk/doc/pod/buffindexed.conf.pod, trunk/doc/pod/news.pod, - trunk/storage/buffindexed/buffindexed.c: Allow the use of buffers - larger than 2 GB with buffindexed. - - Patch from Kirill Berezin. - - Idea of the patch: - - if (mmapwrite(ovbuff->fd, &ovindexhead, sizeof(OVINDEXHEAD), - ovbuff->base + ov.blocknum * OV_BLOCKSIZE) != - sizeof(OVINDEXHEAD)) { - - This is a part of current ovsetcurindexblock function. Third - argument is the offset from the beginning of buffer: ovbuff->base - is off_t and ov.blocknum is unsigned int. For the case of INN - compiled without --enable-largefiles it works fine, but in other - case the size of off_t is 8 bytes and unsigned int still uses 4 - bytes. - - Now say we have a 5Gb buffer, which is roughly equal to 625000 - 8000 byte blocks, and we are going to access to block # 620000 - that is equal to offset of 4960000000 bytes, or about at very end - of the buffer. BUT C standard does not require to cast all parts - of statement to type of argument with longest size before - calculation of result, instead is requires a cast of arguments of - current operation only. As a result, because multiplication is - operation with higher priority and the size of blocknum is 4 - bytes and constant have no size hints, we will have an offset - somewhere in the beginning of buffer instead of very end of it. - To resolve such a limitation, a macro (OV_OFFSET) now calculates - the offset (changing blocknum type to off_t instead of unsigned - int). - - * trunk/storage/buffindexed/buffindexed.c: Rollback for the case of - error during group expiration. This fix requires a long - description. Expiration process for buffindexed method is - straightforward -- retrieve full chain of indexes, sort, look - through the chain and COPY data and indexes to keep in new - location (in other words create a new chain of indexes); update - group description with new chain location and free all blocks - allocated for old chain. This means it must be enough space to - copy all group's indexes and headers. - - For the case of error, for example not enough room available, - blocks allocated for old chain are freed, group description - remains unchanged and blocks allocated for new chain are still - allocated, but not linked to any group. Such a failure have a - very interesting outcomes. According to group description, first - block of a group exists and is valid, but in reality it is - unallocated and server free to write a header into it. And when - occasionally server writes a header into this location, - expiration process dumps a following error message: - - Nov 6 04:29:48 andromeda expireover[23091]: buffindexed: - ovgroupmmap ovbuff is null(ovindex is 12854, ovblock is 808793140 - - where the number of buffer is 12854, but it is not possible for a - server with buffers numbers 0, 1, 2 and 3. - - This patch changes error processing as follows: free just - allocated chain, keep old chain and group description as it was - before expiration. - - Patch from Kirill Berezin. - - * trunk/storage/buffindexed/buffindexed.c: Fixes lost - initialization of group descriptor after exipiration of all - articles for a group at once. - - Patch from Kirill Berezin. - - * trunk/storage/buffindexed/buffindexed.c: Data placement - optimization for buffindexed; the main idea is to place data as - tight as possible; current implementation scatters data over all - unavailable disk space. This fix leads to a drastic reduction of - expireover runtime (for instance from 9 hours to about 1 hour or - so). - - Patch from Kirill Berezin. - -2008-11-24 iulius - - * trunk/innd/rc.c, trunk/samples/incoming.conf: incoming.conf has - more than just names and addresses and use a more general short - description. - -2008-11-23 iulius - - * trunk/innd/icd.c: Prevent control.cancel from being removed. - Thanks to D. Stussy for having pointed that issue out. - -2008-11-23 eagle - - * trunk/support/mksnapshot: Snapshot actions were accidentally - commented out. - - * trunk/doc/pod/incoming.conf.pod: incoming.conf has more than just - names and addresses and use a more general short description. - -2008-11-22 iulius - - * trunk/MANIFEST, trunk/doc/man, trunk/doc/man/incoming.conf.5, - trunk/doc/pod/Makefile, trunk/doc/pod/incoming.conf.pod: Convert - into POD the incoming.conf man page. Add the ignore: parameter - and fix a few mistakes. - - * trunk/samples/incoming.conf: Typo. - - * trunk/innd/innd.h, trunk/innd/nc.c, trunk/innd/rc.c, - trunk/samples/incoming.conf: Add a new ignore: parameter in - incoming.conf. It compels innd to answer 435 and 438 to - IHAVE/CHECK commands from the remote peer so that it does not - send any articles. - - * trunk/doc/FAQ: Add a comment about the "to" newsgroup (mandatory - groups section) and alias newsgroups (renaming section). - - * trunk/backends/news2mail.in, trunk/backends/send-uucp.in, - trunk/control/controlchan.in, trunk/control/gpgverify.in, - trunk/control/perl-nocem.in, trunk/frontends/cnfsstat.in, - trunk/frontends/mailpost.in: Use the default native setlogsock - when Sys::Syslog is version >= 0.15. - -2008-11-22 eagle - - * trunk/doc/FAQ: Recommend creating junk with n rather than y, - matching the current default active file. - -2008-11-21 iulius - - * trunk/Makefile, trunk/support/mksnapshot: Use more portable make - functions in order to generate beta releases. - - * trunk/control/controlchan.in, trunk/doc/man/controlchan.8, - trunk/doc/pod/install.pod, trunk/doc/pod/newsfeeds.pod, - trunk/samples/newsfeeds.in: Add "AC" to the controlchan channel - feed in newsfeeds. Thanks to D. Stussy for this suggestion. - -2008-11-20 iulius - - * trunk/scripts/news.daily.in: Unreserve the server only if it was - reserved by expire. Be sure to also do that in case news.daily - exits. - - Thanks to D. Stussy for having pointed this issue out. - - * trunk/innd/status.c: Add the number of allowed connexions in the - status file of innd. - -2008-11-19 iulius - - * trunk/innd/status.c: Print multiple IP addresses in the - inn_status file in order to see the addresses of a connected - peer. Patch from D. Stussy. - - * trunk/innfeed/host.c: Show all addresses that innfeed thinks the - peer has. Patch from D. Stussy. - -2008-11-18 iulius - - * trunk/scripts/innreport.in: Check whether the config file is a - real file. Patch from Alexander Bartolich. - - * trunk/CONTRIBUTORS, trunk/backends/shlock.c: Fix a long-standing - bug in shlock. Thanks a lot to Berend Reitsma for his fix. - - The race condition is that there is a timewindow between the - discovery of an invalid lock and the removal of that lockfile. - The lockfile that is removed might be another file than the one - you checked. This can happen because another shlock might have - done the same check but did not yet remove the lockfile because - of OS scheduling. You will happily remove the file, create a new - lockfile and return success. If the OS then schedules the other - shlock again, it will continue to remove the lockfile, create a - new lockfile and return success too. At this point you have two - processes running within the locked part... - - * trunk/scripts/news.daily.in: When news.daily finishes, the news - server might have a "reserved" status in case expire was killed - during its expiry. (The news server is put back to running mode - -- not left throttled.) This means that when news.daily is run - for the next day's cycle, no article expiration takes place. - - Thanks to D. Stussy for having pointed that issue out. - -2008-11-17 iulius - - * trunk/MANIFEST, trunk/contrib/README, - trunk/contrib/innreport-filter.xslt: Add a filter for innreport's - HTML files in the contrib section. Thanks to Alexander Bartolich. - - * trunk/doc/pod/news.pod: Add information upgrade for innreport. - - * trunk/MANIFEST, trunk/samples/innreport.conf.in, - trunk/samples/innreport.css, trunk/site, trunk/site/Makefile, - trunk/support/mkmanifest: Add innreport.css and install it to - pathhttp. Thanks to Alexander Bartolich for his style. - - * trunk/Makefile.global.in, trunk/doc/pod/inn.conf.pod, - trunk/lib/innconf.c, trunk/m4/paths.m4, - trunk/samples/inn.conf.in, trunk/support/fixconfig.in: Add - support for --with-http-dir at configure time. It allows the user - to configure pathhttp in inn.conf (which was previously set to - pathlog). - - * trunk/MANIFEST, trunk/doc/man, trunk/doc/man/shlock.1, - trunk/doc/pod/Makefile, trunk/doc/pod/shlock.pod: Convert - documentation for shlock into POD. - - * trunk/scripts/innreport.in: Better escape of HTML and XML. Patch - from Alexander Bartolich. - - * trunk/scripts/innreport.in: Patch from Alexander Bartolich. Many - thanks to him! - - Function EscapeHTML sanitizes input from log files by replacing - special characters (especially non-ASCII characters) with - HTML-entities. - - Split EvalExpr into parts: - - PrepareEval takes an expression from innreport.conf (a string), - substitutes variable names and pseudo-functions, compiles the - code to an anonymous subroutine, and returns it together with - references to enclosure variables. EvalExpr and EvalHash call a - subroutine compiled by PrepareEval. - - All three functions provide diagnostic output (and throw an - exception on errors) if $DEBUG is true. - - All expression evolution is now done through PrepareEval. - - Functions ComputeTotal and ComputeTotalDouble now use a cache. - The performance gain is insignificant, but if $DEBUG is true then - modifications of the input parameter (a hash) can be detected. - - New Perl function Divide0 is available to innreport.conf as - "div0". It returns 0 if one of the divisors is 0. - - At the moment expressions in innreport.conf throw lots of - division-by-zero exceptions, so it is not possible to run - innreport if $DEBUG is true. - - * trunk/Makefile, trunk/support/mksnapshot: Add a README.beta file. - - * trunk/Makefile, trunk/support/mksnapshot: Add support for - generating beta releases. - - * trunk/doc/FAQ: Add information on modifying the X-Trace: header. - -2008-11-16 iulius - - * trunk/doc/pod/docheckgroups.pod, trunk/scripts/news.daily.in: - Typos. - - * trunk/doc/pod/news.pod, trunk/nnrpd/nnrpd.c: Fix a bug in nnrpd: - it was dropping its permissions to news too soon (before the - binding of the network socket). - - Remove that remark from the upgrade process. Add a few remarks on - inn.conf instead (TLS support without sasl.conf and - incominglogfrequency parameter). - -2008-11-15 iulius - - * trunk/doc/pod/hook-perl.pod, trunk/doc/pod/hook-python.pod, - trunk/innd/innd.c, trunk/innd/innd.h, - trunk/samples/filter_innd.py, trunk/tests/innd/fakeinnd.c: Add - access to five new headers within Perl and Python hooks for innd: - * X-User-ID * X-Auth-Sender * Original-NNTP-Posting-Host * - Original-Sender * NNTP-Posting-Path - - Also update the POD documentation and the Python sample. - - * trunk/frontends/pullnews.in: Two issues (and some minor tidy-ups) - resolved in pullnews: - - - when an article is foreshortened, pullnews warned of an out of - bounds subscript; - when an article number is not in group (423), - pullnews redundantly retried that article. - - Thanks to Geraint A. Edwards for the patch. - -2008-11-10 eagle - - * trunk/doc/pod/readers.conf.pod: Add another readers.conf example, - this one showing a hierarchy that's restricted to authenticated - users. - - * trunk/doc/pod/readme.pod: The old newsx link is completely dead. - - * trunk/doc/pod/news.pod: Drop the L<> markup for a link to the old - active.Z file on ftp.isc.org. I don't want to change this to .gz - (the current name) since that would be changing history, but - making this a link produces a broken link that shows up each time - I run a broken link check on the HTML documentation. This seems - the best compromise. - -2008-11-01 iulius - - * trunk/scripts/inncheck.in: Fix an undefined variable. - -2008-10-27 iulius - - * trunk/include/portable/socket.h, trunk/lib/network.c: Revert the - change of previous revision 8145. Add a portable declaration - instead. - -2008-10-25 iulius - - * trunk/innd/art.c: Fix a bug when articles were fed to innd via - IHAVE or TAKETHIS with an empty body: the article terminator was - not recognized. Therefore, subsequent NNTP commands were eaten - inside the article... - - Thanks to Wolfgang M. Weyand for having reported this issue. - - * trunk/doc/pod/active.pod, trunk/doc/pod/readme.pod, - trunk/doc/pod/sendinpaths.pod: New information for the TOP1000 - project. Update links and fix typos. - - * trunk/doc/pod/news.pod: First upgrade note for INN 2.5: nnrpd now - cannot bind to any port. - - * trunk/nnrpd/tls.c: Fix a cast which causes a compilation warning - on 64-bit architectures. - - * trunk/CONTRIBUTORS, trunk/lib/network.c: EAI_ADDRFAMILY was - obsoleted with RFC 3493. Thanks to Wolfgang M. Weyand for having - pointed that out (it causes compilation issues). - -2008-10-07 iulius - - * trunk/CONTRIBUTORS, trunk/scripts/innreport.in: Test for the - existence of 'img_dir' instead of 'html_dir'. Thanks to Wim Lewis - for the patch. - -2008-10-05 eagle - - * trunk/MANIFEST: Add doc/FAQ to the manifest. - - * trunk/doc/FAQ: Expand the Id keyword. - - * trunk/doc/FAQ: Merge FAQ into trunk. - -2008-09-27 iulius - - * trunk/nnrpd/article.c, trunk/nnrpd/commands.c, - trunk/nnrpd/group.c, trunk/nnrpd/misc.c, trunk/nnrpd/nnrpd.h, - trunk/nnrpd/perm.c, trunk/nnrpd/sasl.c: After a successful - AUTHINFO USER/PASS in an already selected newsgroup, make sure - the client still has read access to that newsgroup. - - * trunk/nnrpd/perm.c: Improve comments. - -2008-09-26 iulius - - * trunk/nnrpd/nnrpd.c: Switch the place between "range" and - "message-ID" in HELP. - - * trunk/nnrpd/group.c: Fix a bug which causes low and high counters - for the currently selected newsgroup to be changed even though - the group is not changed. - - * trunk/nnrpd/group.c, trunk/nnrpd/misc.c, trunk/nnrpd/post.c, - trunk/nnrpd/python.c, trunk/scripts/innreport_inn.pm: Fix a bug - since commit 6208 which made Python dynamic hooks not work. - Typos. - - * trunk/nnrpd/perl.c, trunk/nnrpd/python.c: On fatal failures - during authentication, use 400 and not 502 before closing the - connection. - - * trunk/nnrpd/article.c, trunk/nnrpd/commands.c, - trunk/nnrpd/group.c, trunk/nnrpd/newnews.c: Answer 480 instead of - 502 when the user can authenticate. - - * trunk/samples/nnrpd_auth.pl.in, trunk/samples/nnrpd_auth.py, - trunk/samples/nnrpd_auth_wrapper.py: When authentication fails, - return 481 and not 502 in nnrpd hooks. - - * trunk/nnrpd/perl.c: Fix indentation. - - * trunk/nnrpd/post.c, trunk/nnrpd/post.h, trunk/nnrpd/sasl.c: - Better comments. - -2008-09-23 iulius - - * trunk/nnrpd/sasl.c: * Properly set TLS negociation for the SASL - server. * Do not use the ANONYMOUS mechanism. - -2008-09-22 iulius - - * trunk/nnrpd/list.c: Use "n" instead of "j" and "x" for active - newsgroups flags. It is more useful for readers. - -2008-09-21 iulius - - * trunk/nnrpd/sasl.c: Correctly find out 504 or 482 for - base64-encoding. - - * trunk/nnrpd/Makefile, trunk/nnrpd/nnrpd.c, trunk/nnrpd/nnrpd.h, - trunk/nnrpd/sasl.c, trunk/scripts/innreport_inn.pm: * Restart the - SASL server after authentication failure. * Add PLAIN and LOGIN - mechanisms. * Reset the state of the NNTP protocol after a - security layer has been negotiated. - - * trunk/include/inn/nntp.h, trunk/nnrpd/line.c, - trunk/nnrpd/nnrpd.c, trunk/nnrpd/sasl.c: * It appears that - sasl_decode64() returns SASL_CONTINUE instead of SASL_BADPROT - when there is a base64-encoding error! Adapt AUTHINFO SASL for - that behaviour. Segfaults fixed in the process. * Convert "=" to - an empty string "" when a client answers only that. * Call - sasl_done() when the client exits in order to properly close the - SASL connection object. * Add NNTP_ERR_BASE64 for NNTP error code - 504. - - * trunk/nnrpd/commands.c, trunk/nnrpd/sasl.c: If authentication - will fail, send 502 with a better comment. - - * trunk/doc/pod/readers.conf.pod, trunk/nnrpd/commands.c, - trunk/nnrpd/list.c, trunk/nnrpd/misc.c, trunk/nnrpd/nnrpd.c, - trunk/nnrpd/nnrpd.h, trunk/nnrpd/perm.c, trunk/nnrpd/sasl.c: * - Check whether STARTTLS must be used before trying to - authenticate. Send 483 if that is the case. * Use require_ssl: - for an encrypted connection either from the beginning if the -S - flag is passed to nnrpd or after a successful use of STARTTLS. * - Reorganize how nnrpd parses auth blocks with that change to - require_ssl:. * Replace ClientSSL by - PERMcanauthenticatewithoutSSL in order to better be aware of the - real permissions. * Documentation update. - -2008-09-20 iulius - - * trunk/nnrpd/misc.c: Close the connection on STARTTLS failure - (during the negotiation). - - * trunk/nnrpd/misc.c, trunk/scripts/innreport_inn.pm: * STARTTLS is - not allowed (502) after AUTHINFO. * STARTTLS resets the current - newsgroup and article number. - - * trunk/nnrpd/article.c, trunk/nnrpd/group.c, trunk/nnrpd/nnrpd.h: - Use a common prototype. - - * trunk/nnrpd/group.c: Useless repbuff variable. - - * trunk/nnrpd/misc.c, trunk/nnrpd/tls.c, trunk/nnrpd/tls.h: * Do - not close the connection when TLS negotiation can not be - initiated. Therefore, send 580 and not 400, unless it is done at - initial connection by nnrpd -S. * Do not send 580 when - negotiation fails (382 has already been sent). - - * trunk/include/inn/nntp.h, trunk/include/nntp.h, - trunk/nnrpd/sasl.c: Return 482 instead of 483 after a failure in - AUTHINFO SASL. Add new NNTP_FAIL_PRIVACY_NEEDED 483 code. - - * trunk/nnrpd/tls.c: Bug-fix for TLS: return 1 when length is - right. - - * trunk/nnrpd/newnews.c, trunk/nnrpd/post.c, trunk/nnrpd/tls.c, - trunk/nnrpd/tls.h, trunk/nnrpd/track.c: Pretty comments. Also use - sizeof(buf) instead of 256 in a few TLS calls. - -2008-09-19 iulius - - * trunk/nnrpd/commands.c, trunk/nnrpd/nnrpd.c, trunk/nnrpd/sasl.c, - trunk/nnrpd/tls.c: * Return 400 instead of 503 (sic) at initial - connection if something goes wrong. * Return 400 instead of 580 - if STARTTLS fails and nnrpd exits. * Return 501 instead of 502 - when AUTHINFO has already been used and its syntax is incorrect. - * Do not log passwords if AUTHINFO PASS, AUTHINFO SASL PLAIN or - AUTHINFO SASL EXTERNAL are used. - -2008-09-17 iulius - - * trunk/nnrpd/article.c, trunk/nnrpd/commands.c, - trunk/nnrpd/group.c, trunk/nnrpd/list.c, trunk/nnrpd/nnrpd.c, - trunk/nnrpd/nnrpd.h, trunk/nnrpd/perm.c: Use Reply() and Printf() - at the right moment! Reply() can be traced (response codes) - whereas Printf() can not. - - * trunk/nnrpd/nnrpd.c: Initial connections were sometimes closed - without sending 502. Typos. - - * trunk/nnrpd/newnews.c: Return 501 instead of 502 when the syntax - of NEWNEWS is wrong and the user cannot use NEWNEWS. - -2008-09-16 iulius - - * trunk/nnrpd/commands.c, trunk/nnrpd/misc.c: Return 502 instead of - 483 when STARTTLS is used on an active TLS layer. Typos. - - * trunk/nnrpd/group.c, trunk/nnrpd/list.c: LIST HEADERS and LIST - NEWSGROUPS are mandatory. Prettier answers. - - * trunk/nnrpd/line.c, trunk/nnrpd/sasl.c, - trunk/scripts/innreport_inn.pm: Typos. - - * trunk/nnrpd/commands.c, trunk/nnrpd/group.c: GROUP and LISTGROUP - bug-fixes: * answer 501 instead of 502 when the syntax of the - command is not good; * send 502 instead of 480 when already - authenticated. - -2008-09-13 iulius - - * trunk/nnrpd/article.c: Answer 503 when the OVER MSGID capability - is used. Also fix the return codes of XOVER, which should be 224 - and not 423 when no articles are available. - -2008-09-12 iulius - - * trunk/MANIFEST, trunk/tests/data/overview/1-4stripped: Add a new - overview test file for :bytes and :lines when there is no Xref: - in the articles. - - * trunk/tests/data/overview/1-4, trunk/tests/storage/makehistory.t: - makehistory now creates :lines and :bytes by default. Add them to - the test suite. I have manually checked the expected result. - -2008-09-11 iulius - - * trunk/doc/pod/makehistory.pod, trunk/expire/makehistory.c: Remove - the -e flag because we need to always generate corerct overview - (with :bytes and :lines). Proof-read the documentation (and add - -S). - -2008-09-08 iulius - - * trunk/expire/makehistory.c: Correctly generate metadata - information when rebuilding the overview database. - -2008-09-07 iulius - - * trunk/nnrpd/commands.c, trunk/nnrpd/nnrpd.c, trunk/nnrpd/sasl.c: - * Return 503 (and not 501) in case INN is built without SASL, - when AUTHINFO SASL is asked. * Check the syntax of a mechanism. - - * trunk/nnrpd/commands.c, trunk/scripts/innreport_inn.pm: Better - differentiate IHAVE from POST in logs. - - * trunk/nnrpd/commands.c, trunk/nnrpd/nnrpd.c: * Fix the behaviour - of AUTHINFO PASS my password with spaces which was parsed as - AUTHINFO PASS my We now return 501. - - * The arguments of the program for AUTHINFO GENERIC are optional. - - * trunk/nnrpd/commands.c, trunk/nnrpd/sasl.c: It is 501 and not 500 - for unknown AUTHINFO variants (RFC 3977 & 4643). - - * trunk/lib/date.c, trunk/lib/sendarticle.c: Clarify the date - according to RFC 3977. - - * trunk/nnrpd/commands.c: * Instead of a strcasecmp on each - character of the string, use a global strstr. * Missing an answer - for AUTHINFO GENERIC: the server did not send a response when the - pipe failed. * More user-friendly answers for AUTHINFO commands. - - * trunk/nnrpd/cache.c, trunk/nnrpd/cache.h: BODY is a final lookup - (confusion with STAT). Also add (X)HDR and XPAT as final lookups. - - * trunk/nnrpd/nnrpd.c: * XPAT uses a pattern and not a wildmat as - the term refers to in RFC 3977. * When the usage is bad, it is - always because of a wrong number of arguments. - - * trunk/doc/pod/external-auth.pod, trunk/nnrpd/auth-ext.c: - Documentation improvements for external authentication: - - * Missing ".\r\n" after the output for authenticators. * Mention - the nnrpd timeout of 5 seconds. * Mention LocalPort. * User: is - case-insensitive. * Example with a domain. * Typo fixes. - -2008-09-06 iulius - - * trunk/nnrpd/article.c: Better check of the syntax of - ARTICLE/BODY/HEAD/STAT, NEXT/LAST, HDR/XHDR/XPAT and OVER/XOVER. - More user-friendly answers too. - - * trunk/MANIFEST, trunk/include/inn/libinn.h, trunk/lib/Makefile, - trunk/lib/headers.c, trunk/lib/messageid.c, trunk/lib/numbers.c, - trunk/nnrpd/article.c, trunk/nnrpd/group.c: Correctly parse an - article number (1 to 16 digits). Otherwise, if a range of length - 497 was given, it could lead to too long answers! - - * trunk/nnrpd/article.c: Return 501 and not 503 for "HDR :" or "HDR - :bad:metadata:name". - - * trunk/MANIFEST, trunk/include/inn/libinn.h, trunk/lib/Makefile, - trunk/lib/headers.c, trunk/nnrpd/article.c: Add a (very basic) - check of the requested header name. - - * trunk/nnrpd/article.c, trunk/nnrpd/list.c, trunk/nnrpd/nnrpd.c: * - Add support for HDR. * Correctly parse the arguments before - anything else. * Reject unimplemented metadata requests with 503. - * LIST HEADERS is implemented with a different output between - RANGE and MSGID. * Homogenize the HELP result with "wildmat" - everywhere (instead of "group_pattern" or "pat"). * More - user-friendly answers. * XHDR and XPAT were not checking the - permissions the user has to read articles when using a - message-ID. Now fixed. * Fix calls to ARTclose(). - -2008-09-05 iulius - - * trunk/nnrpd/article.c, trunk/nnrpd/nnrpd.c, trunk/nnrpd/nnrpd.h: - * Add support for OVER (though not the OVER MSGID capability). * - Correctly parse the arguments before anything else. * Fix XOVER - which could send empty replies with 224 (not allowed even by RFC - 2980). * More user-friendly answers. * Also fix a bug in the - replies of XOVER/XHDR/XPAT when the group is empty. Two initial - replies were sent (420 followed by 224). - -2008-09-04 iulius - - * trunk/innd/art.c, trunk/innd/innd.h: Correctly count :bytes - (without the first character of dot-stuffed lines). Also save the - right :lines value in the overview database. - - * trunk/innd/art.c, trunk/innd/innd.h: Better count of the :bytes - metadata: * CRLF counts for 2 octets; * the separating empty line - counts. - - Dot-stuffing is still counted, though it should not. - -2008-09-03 iulius - - * trunk/nnrpd/commands.c, trunk/nnrpd/newnews.c: Answer 403 and not - 503 when there is an internal problem. - -2008-09-02 iulius - - * trunk/nnrpd/commands.c, trunk/nnrpd/newnews.c, - trunk/nnrpd/nnrpd.c: Correctly parse the last argument of - NEWGROUPS and NEWNEWS so as to only allow GMT. - -2008-09-01 iulius - - * trunk/nnrpd/article.c: * Use 400 and not 503 before closing the - connection after an error with the history. * Do not use %.512s - but %.250s to printf a message-ID. * Be more explicit than - "Permission denied" when 502. * Use a break instead of a return - at one point (it allows to free a variable). * Typos. - - * trunk/nnrpd/commands.c: Improvements for IHAVE: - - * Check the argument of IHAVE (a message-ID) and return 501 if it - is not valid. * In the backoff code, only return codes for POST - were used. It now also returns the right codes for IHAVE. * Check - whether a message-ID is already in the history, so as to reject - it as a duplicate before the client can send it. * Typos. - -2008-08-31 iulius - - * trunk/nnrpd/article.c, trunk/nnrpd/group.c: Create a separate - function CMDisrange() to check whether a given string is a valid - range. Change the order of the checks on arguments in order to - answer 501 and not 4xx when the syntax is wrong. - - * trunk/nnrpd/article.c: Remove the final dot for NEXT/LAST - answers. Answer 501 (and not 420) when the syntax of the article - number is wrong. - - * trunk/nnrpd/article.c, trunk/nnrpd/group.c: If listgroup fails, - it must not have changed the selected newsgroup. - - * trunk/nnrpd/article.c: Strictly parse the provided range. - - * trunk/nnrpd/commands.c, trunk/nnrpd/nnrpd.c: In RFC 3977: - - o If it advertises the READER capability, it MUST return a 200 or - 201 response with the same meaning as for the initial greeting; - in this case, the command MUST NOT affect the server state in any - way. - - Therefore, we do not answer 502 to such a command. Sorry for my - revision 7975 which did that for nnrpd after a successful - authentication. Note that the same behaviour for innd is the - right thing to do after authentication because innd advertises - neither MODE-READER nor READER after that (so my revision 7974 is - right for innd). - - * trunk/nnrpd/commands.c, trunk/nnrpd/line.c, trunk/nnrpd/nnrpd.c, - trunk/nnrpd/nnrpd.h, trunk/nnrpd/sasl.c: Fix the count of the - length of the buffer. Commands whose length was 513 octets were - accepted. We now check how many characters are stripped - (especially CR which was not in the count). - - * trunk/Makefile.global.in: Tell people they should not do silly - things with ${INN_VERSION_STRING}. - - * trunk/nnrpd/commands.c, trunk/nnrpd/nnrpd.c, trunk/nnrpd/nnrpd.h, - trunk/nnrpd/perl.c, trunk/nnrpd/perm.c: Return the "right" - 200/201 code for the greeting. Well, we do our best to find out - whether posting will be allowed. PERMcanpostgreeting is a new - global variable (different from PERMcanpost, which is for the - current state). - - 200 if (the user can post right now) or (the user can - authenticate and there is an access group which provides posting - facilities). - - There is an access group which provides posting facilities when - (in an auth group, there is an access or dynamic Perl/Python - script) or (a newsgroups:/post: key is in an access group). This - check is too wide but at least we will return 201 only if the - user will never be able to post. - - * trunk/nnrpd/perm.c: Use the new PERMcanauthenticate global - boolean variable instead of a local canauthenticate integer. - -2008-08-29 iulius - - * trunk/nnrpd/commands.c: Fix a warning at compilation time because - of an unused argument. - -2008-08-28 iulius - - * trunk/lib/messageid.c, trunk/storage/overdata.c: Fix a bug for - correct printable characters. - - * trunk/MANIFEST, trunk/include/inn/libinn.h, trunk/lib/Makefile, - trunk/lib/genid.c, trunk/lib/messageid.c, trunk/nnrpd/article.c: - Add a new function IsValidMessageID(char *string) which returns - whether a string is a valid message-ID according to RFC 3977. - - * trunk/nnrpd/nnrpd.c: It is even better if we break at the right - place in the loop. Note that it could generate a problem only if - initial substrings of NNTP commands were real NNTP commands - (which is not the case). - - * trunk/nnrpd/nnrpd.c: Fix a subtle parsing issue: when the line is - too long, 501 was returned instead of 500 if the base command was - not followed by a space. - -2008-08-27 iulius - - * trunk/nnrpd/nnrpd.c: Oops... NEWGROUPS of course! - - * trunk/nnrpd/commands.c, trunk/nnrpd/group.c, trunk/nnrpd/list.c, - trunk/nnrpd/newnews.c, trunk/nnrpd/nnrpd.c, trunk/nnrpd/post.c, - trunk/nnrpd/sasl.c: Use upper case letters for NNTP commands. It - is clearer. Also put "wildmat" instead of "newsgroups" for - NEWNEWS and do not use initial capital letters for arguments in - the HELP result. - - * trunk/include/inn/nntp.h, trunk/nnrpd/line.c, - trunk/nnrpd/nnrpd.c, trunk/nnrpd/post.c, trunk/nnrpd/sasl.c: The - length of arguments is now checked: they do not exceed 497 - octets. Fix the return code when the line is too long: 500 must - be returned when there is no valid command (and not 501). - -2008-08-26 iulius - - * trunk/nnrpd/commands.c, trunk/nnrpd/nnrpd.h: Remove PERMpass - which is never used (dead code). - - * trunk/innd/nc.c, trunk/nnrpd/commands.c: If authentication fails, - do not close the connection but allow the user to authenticate - again. - - * trunk/nnrpd/commands.c: MODE READER cannot be used after a - successful authentication. - - * trunk/innd/nc.c: MODE READER cannot be used after a successful - authentication. - - * trunk/doc/pod/readers.conf.pod, trunk/nnrpd/commands.c: Remove - AUTHINFO SIMPLE because it has never been implemented the right - way. Other capabilities to authenticate are better, specified in - RFCs and implemented. - -2008-08-25 iulius - - * trunk/innd/innd.h, trunk/innd/nc.c, trunk/innd/rc.c, - trunk/nnrpd/commands.c, trunk/nnrpd/nnrpd.c, trunk/nnrpd/nnrpd.h, - trunk/nnrpd/perm.c, trunk/nnrpd/sasl.c: If a user is already - authenticated, return 502 if AUTHINFO is sent again, according to - RFC 4643. - - Also fix a bad answer in innd: AUTHINFO subcommands could return - 480... - -2008-08-24 iulius - - * trunk/nnrpd/group.c: Improve LISTGROUP so as to search only - within the range and not go through all the articles. - - Also fix two bugs: * the current group was not set if the group - was empty (this bug has always been around); * the new version of - LISTGROUP with its third argument (the range) did not work if no - group was set. - - * trunk/nnrpd/group.c, trunk/tests/storage/sm.t: Fix a cast to an - unsigned int. Fix the test suite because sm now returns real - headers (without the empty line at the end): it is the sed "Q" - option which should be used, and not "q". - - * trunk/nnrpd/article.c: Missing word in the answer for NEXT and - LAST. - - * trunk/nnrpd/group.c: Fix a bug in the result of GROUP for NFS - readers: the count could exceed the difference between the high - and the low water marks! - - * trunk/include/inn/nntp.h: Update comments for the list of NNTP - codes. - - * trunk/nnrpd/article.c, trunk/nnrpd/group.c, trunk/nnrpd/list.c, - trunk/nnrpd/nnrpd.c, trunk/nnrpd/nnrpd.h: Add support for the - official LISTGROUP command. A range can be specified as its third - argument. - - The range is now properly parsed: "42-12" is kept as "42-12" and - not changed to "42-". - - * trunk/nnrpd/article.c: Do not do useless time computations. - - * trunk/nnrpd/group.c: The lowmark must not be set to 1 if the - newsgroup is empty but previously contained articles. - - * trunk/doc/pod/inn.conf.pod, trunk/nnrpd/group.c: Clarify the use - of nfsreaderdelay. - - * trunk/nnrpd/group.c: Use 403 instead of 503 if the group - disappeared. Also use the preferred way to indicate an empty - group: lowmark = highmark + 1. - - * trunk/nnrpd/nnrpd.c: No argument allowed to HELP. - - * trunk/storage/cnfs/cnfs.c, trunk/storage/timecaf/timecaf.c, - trunk/storage/timehash/timehash.c, - trunk/storage/tradspool/tradspool.c: Article headers do not - contain their final \r\n. The result of (at least) HEAD was not - RFC-compliant. - - * trunk/include/inn/nntp.h, trunk/innd/nc.c: Return 403 in response - to MODE READER when the server is paused or throttled. Do not - close the connection. (400 was previously sent.) - - * trunk/nnrpd/commands.c, trunk/nnrpd/nnrpd.c: Revert changes of - revision 7956. MODE is a base command in RFC 3977 so 501 is the - right code to return after MODE, MODE FOO and MODE FOO BAR. - -2008-08-23 iulius - - * trunk/innd/nc.c: In transit mode, return "401 MODE-READER" if a - command only available in reader mode is received. If readers are - not allowed, return "502 Permission denied". - - * trunk/nnrpd/commands.c, trunk/nnrpd/nnrpd.c: Commands like - "MODE", "MODE FOO" and "MODE FOO BAR" must return a 500 error - code and not a 501 one. It is now fixed. - - * trunk/nnrpd/nnrpd.c, trunk/nnrpd/nnrpd.h: Add the QUIT command to - the list of available commands :-) - - Also fix a bug causing "QUIT other_argument" to be recognized as - QUIT whereas nnrpd must then send a 501 error code. - - * trunk/nnrpd/group.c, trunk/nnrpd/nnrpd.c: * LISTGROUP now returns - the right code 412 and not 481. * Specify in HELP that: - - "newsgroup" in LISTGROUP is an optional value; - active, - active.times and newsgroups in LIST have an optional third value. - * NEWGROUPS do not expect a fifth element. - - * trunk/include/inn/nntp.h, trunk/innd/nc.c, trunk/nnrpd/list.c, - trunk/nnrpd/nnrpd.c: * Do not display SLAVE in the result of - nnrpd's HELP command. * innd now recognizes DATE, LISTGROUP, - STARTTLS, XGTITLE, XHDR, XOVER and XPAT as reader commands. * - Remove NNTP_OK_EXTENSIONS (202) which is not RFC-compliant. * - LIST EXTENSIONS now returns 215 and not 202. * Add - NNTP_FAIL_WRONG_MODE (401) but nothing uses it (yet). - -2008-08-05 iulius - - * trunk/include/ppport.h, trunk/innd/perl.c: Fix the correct - handling of bodies (Perl regexps were sometimes not properly - working on SV * bodies). We now use a shared string. For Perl < - 5.7.1, fall back to a copy of such bodies. At least, that method - is reliable, even though it were 17% slower. - - Add support for PERL_REVISION (default to 5 because if it is not - defined, it must be 5 -- Perl 6 defines it). - - * trunk/tests/nnrpd/auth-test: Fix the test suite (collateral issue - after the migration to Lenny: not adding "\n" to the end of this - line prevents any error to be raised... not even one triggered by - "exit 1"). - -2008-08-03 iulius - - * trunk/innd/perl.c: * Fix a wrong length in hv_store(): "NewMode" - counts for 7 and not 4. * Add the lengths in newSVpv() for Perl - not to compute them. * Remove comments about work which has - already been done. - - * trunk/scripts/innreport_inn.pm: Change '\ ' to '\s' in the two - other regexps for timers. - -2008-08-02 iulius - - * trunk/doc/pod/install.pod: Clarify the use of the "usenet" - account. - - * trunk/CONTRIBUTORS, trunk/MANIFEST, trunk/doc/man, - trunk/doc/man/news.daily.8, trunk/doc/pod/Makefile, - trunk/doc/pod/install.pod, trunk/doc/pod/news.daily.pod, - trunk/scripts/news.daily.in: Add a keyword to news.daily in order - to supply another mail address than the one set at configure time - for Usenet daily reports. - - Thanks to James Ralston for having added this nomail option. - - Also fixed an inconsistency in available keywords (expirectl is - in fact expctl), update the documentation and rewrite the - news.daily one into POD. - - * trunk/doc/pod/actsync.pod, trunk/doc/pod/ctlinnd.pod, - trunk/doc/pod/expireover.pod: Minor typos in POD documentation. - -2008-07-20 iulius - - * trunk/lib/perl.c: Fix a compilation warning with Perl 5.10. - - * trunk/lib/perl.c: Use PERL_EXIT_DESTRUCT_END as specified in the - perlembed man page. Indeed, it has otherwise been causing - problems for applications that never call perl_run since perl - 5.7.2. This flag enables the running of END blocks if the - perl_parse fails; perl_destruct will return the exit value. - - * trunk/CONTRIBUTORS, trunk/innd/art.c: Fix a bug which causes innd - not to honour the Ad flag in newsfeeds. Thanks to Andreas - Mattheiss for his bug report. - -2008-07-12 iulius - - * trunk/samples/innreport.conf.in, trunk/scripts/innreport_inn.pm: - Bug-fixes: * Trailing comma after %innfeed_spooled with "Outgoing - feeds (innfeed) by Articles"; * Column "Total" of "Outgoing feeds - (innfeed) by Volume" tries to add two hashes which evaluates to a - constant 0; * Gracefully handle undefined hash elements in "NNRP - readership statistics (by domain)"; * Correct handling of - undefined values in %innd_time_min, %innd_time_max, - %innfeed_time_min, %innfeed_time_max, %nnrpd_time_min and - %nnrpd_time_max. - - Also added two error messages generated by perl-nocem. - - Thanks again, Alexander Bartolich, for this patch. - -2008-07-05 iulius - - * trunk/innd/status.c: Fix a bug in the IP address displayed for - localhost in innd's status file. It was not correctly initialized - (it is a local connection which does not use any IP address). - - * trunk/nnrpd/python.c: Use the same internal error codes as - perl.c. - -2008-06-29 iulius - - * trunk/backends/actsync.c, trunk/lib/perl.c: Use xasprintf instead - of asprintf. - - * trunk/doc/pod/hook-python.pod: Use initial capital letters in - head titles. - - * trunk/doc/pod/news.pod, trunk/lib/perl.c: Fixed a hang in Perl - hooks on (at least) HP/PA since Perl 5.10. On such architectures, - pthread_mutex_lock() hangs inside perl_parse() if - PERL_SYS_INIT3() hasn't been called. - - Also rewrite "do" and "eval" calls to use perl_eval_pv(). - -2008-06-27 iulius - - * trunk/scripts/innreport_inn.pm: Because of the imbalance created - by collect() the value of nnrpd_connect can get negative. And - since negative values are considered true by Perl the delete - statement might not be executed in some cases. Thanks to - Alexander Bartolich for this patch. - -2008-06-25 iulius - - * trunk/samples/innreport.conf.in, trunk/scripts/innreport_inn.pm: - * The expressions in innreport.conf don't check whether hash - elements exist. Initializing them with 0 in innreport_inn.pm is - better. - - * For two sections in innreport.conf there is a mismatch between - sort function and sorted hash. - - Thanks to Alexander Bartolich for this patch. - -2008-06-24 iulius - - * trunk/doc/pod/news.pod, trunk/scripts/innreport_inn.pm: Fix - another long-standing bug in innreport which prevented it from - correctly reporting innfeed log messages. - - * trunk/scripts/innreport_inn.pm: Suppress a few other nnrpd and - controlchan notices in innreport. - -2008-06-23 iulius - - * trunk/doc/pod/news.pod: Add changelog for innreport. - - * trunk/doc/pod/news.pod: Update the changelog for INN 2.4.5. - - * trunk/scripts/innreport_inn.pm: Suppress a few warnings in - innreport (especially from Python hooks and nnrpd). - - * trunk/scripts/innreport_inn.pm: Fix a long-standing bug in - innreport which prevented it from correctly reporting nnrpd log - messages. - -2008-06-22 iulius - - * trunk/site, trunk/site/Makefile, trunk/support/mkmanifest: Add - nnrpd_*.py from previous commit. Also fix nnrpd.py which was not - installed. - - * trunk/MANIFEST, trunk/samples/nnrpd_access.py, - trunk/samples/nnrpd_auth.py, trunk/samples/nnrpd_dynamic.py, - trunk/site, trunk/site/Makefile, trunk/support/mkmanifest: Update - the Python nnrpd filter. New samples for access and dynamic - hooks. - - * trunk/samples/filter_innd.py: Update the Python innd filter. - - * trunk/doc/man/inndcomm.3, trunk/doc/man/libstorage.3, - trunk/doc/pod/hook-python.pod, trunk/include/inn/storage.h, - trunk/innd/art.c, trunk/storage/timecaf/timecaf.c: Typo (canceled - -> cancelled). - - * trunk/samples/nnrpd_access_wrapper.py, - trunk/samples/nnrpd_auth_wrapper.py, - trunk/samples/nnrpd_dynamic_wrapper.py: Update old Python - wrappers. - - * trunk/samples/INN.py, trunk/samples/nnrpd.py: Update stub Python - scripts. Fix a compilation problem with INN.py (undefined - variable) and add missing methods. - - * trunk/doc/pod/hook-python.pod, trunk/doc/pod/nnrpd.pod, - trunk/doc/pod/readers.conf.pod: Update POD documentation for - Python hooks. It is a complete proof-reading. - - * trunk/innd/python.c, trunk/nnrpd/python.c: No need to check the - existence of methods not used by the hooked script. - - * trunk/innd/python.c, trunk/nnrpd/python.c: Fix an issue with - Python exception handling. - - * trunk/innd/python.c, trunk/nnrpd/python.c: Add more comments and - prettify existing ones. Fix a few typos. - - * trunk/nnrpd/python.c: And also dynamic_file! - - * trunk/nnrpd/python.c: Fix a segfault when one closes and then - reopens Python in the same process. files is still pointing to - the old freed memory and INN blithely tries to write to it. - Thanks to Russ Allbery for the patch. - -2008-06-21 iulius - - * trunk/innd/python.c: Better be more careful when decrementing the - reference count for these objects. - - * trunk/tests/storage/makehistory.t: On some systems, the overview - data is not generated in order. Fix the test suite for that. - - * trunk/doc/pod/readers.conf.pod: Better explanation of - virtualhost: in readers.conf. - -2008-06-12 iulius - - * trunk/scripts/innreport_inn.pm: Fix Perl warnings in the - innreport Perl module. Thanks, Alexander Bartolich, for the - patch. - -2008-06-11 iulius - - * trunk/support/config.guess, trunk/support/config.sub: Update - support files for autoconf to their last stable version. - -2008-06-10 iulius - - * trunk/perl/Makefile: Use the same section name as the extension - of the Perl module man page. - - * trunk/MANIFEST, trunk/Makefile, trunk/Makefile.global.in, - trunk/doc/man, trunk/doc/man/Makefile, trunk/perl/Makefile: - Generate INN::Config man page. - -2008-06-09 iulius - - * trunk/doc/man/Makefile: Use relative symbolic links when - possible. - - * trunk/innd/python.c: Fix a bug when reloading Python filters. - They might not be correctly reloaded. They must be reimported - before being reloaded. - - * trunk/nnrpd/python.c: I should not have committed this debugging - information. Sorry! - - * trunk/CONTRIBUTORS, trunk/nnrpd/python.c: Fix a segfault when - generating access groups with embedded Python filters for nnrpd. - Thanks to David Hlacik for the bug report. - - * trunk/CONTRIBUTORS, trunk/samples/innreport.conf.in, - trunk/scripts/innreport.in: Add support for XSL and the choice of - the extension for generated pages. Patch by Alexander Bartolich - - * trunk/scripts/innreport_inn.pm: Exclude some Python notices from - reports. - - * trunk/scripts/innreport_inn.pm: Declare some variables for Perl - warnings. Thanks, Alexander Bartolich. - - * trunk/scripts/innreport.in: Update the beginning of this file. - -2008-06-08 iulius - - * trunk/samples/innreport.conf.in, trunk/scripts/innreport.in: - innreport now generates XHTML 1.1 using a CSS. - checked standard - conformance with http://validator.w3.org/ and - http://jigsaw.w3.org/css-validator/ - checked visual appearance - with Firefox 2.0.0.14 - - Added four optional parameters to innreport.conf: - - html_xhtml11_icon (default: http://www.w3.org/Icons/valid-xhtml11 - - html_vcss_icon (default: - http://jigsaw.w3.org/css-validator/images/vcss) - html_encoding - (default: ISO-8859-1) - html_css_url - - If html_css_url is not specified then a style sheet is embedded - into HTML. This default CSS keeps the old arrangement of elements - but gives tables a cleaner appearance because of - "border-collapse:collapse". Header cells, line numbers and - odd/even lines are formatted with different background. - - Thanks a lot to Alexander Bartolich for this patch. - - * trunk/frontends/pullnews.in: Two minor issues resolved with this - patch by Geraint Edwards: * an off-by-one error on the limit to - the amount of articles to get; * when an article is not - available, we may have redundantly retried that article. - -2008-06-07 iulius - - * trunk/doc/pod/cycbuff.conf.pod, trunk/doc/pod/hook-perl.pod, - trunk/doc/pod/hook-python.pod, trunk/innd/python.c, - trunk/samples/filter_innd.pl: Fix the use of "ctlinnd reload - something 'reason'" in documentation. - -2008-06-05 iulius - - * trunk/doc/pod/hook-perl.pod, trunk/doc/pod/hook-python.pod, - trunk/innd/innd.c, trunk/innd/innd.h, - trunk/samples/filter_innd.py, trunk/tests/innd/fakeinnd.c: Add - access to several new headers within Perl and Python hooks for - innd. Thanks to Matija Nalis for the patch. - - Also update the POD documentation and the Python sample. - -2008-05-28 iulius - - * trunk/frontends/pullnews.in: Fix '-r -' check. Fix POSIX floor - include. Three typo/doc changes. - - Thanks again, Geraint A. Edwards. - -2008-05-27 iulius - - * trunk/doc/man/Makefile: Use relative links again for symbolic - links. - - * trunk/CONTRIBUTORS, trunk/MANIFEST, trunk/TODO, trunk/contrib, - trunk/contrib/Makefile, trunk/contrib/README, - trunk/contrib/backupfeed.in, trunk/doc/pod/pullnews.pod, - trunk/frontends/pullnews.in, trunk/support/mkmanifest: A new - improved version of pullnews. Great thanks to Geraint A. Edwards - for all his work. He added no more than 16 flags, fixed some bugs - and integrated the backupfeed contrib script by Kai Henningsen, - adding again 6 other flags. - - A long-standing but very minor bug in the -g option was - especially fixed and items from the to-do list implemented. - - From TODO: - - + reset highwater mark to match server (-w) + reset highwater - mark to zero (also -w) + add group to config (-G) + drop articles - with headers matching (or not matching) regexp (-m) - - From backupfeed: - - + pull only a proportion (factor) of articles (-f) + sleeps - between articles/groups (-z/-Z) + Path: fake hop insert (-F) + - NNTP connection timeout (-N) + overall session timeout (-S) - - Other new flags/features: - - -l logfile log to logfile (rather than /dev/null when rnews'ing!) - -s host:port add local port option (can use -p already) -t - retries attempt connect to upstream retries times -T retry_pause - wait between retries -k checkpt checkpoint the config file every - checkpt arts -C width when writing the progress bar - use width - columns -d debug_level self-explanatory -M max_arts only process - max_arts articles per run -H headers remove these headers from - articles -Q quietness set how quiet we are -R be a reader -n - no-op -P paths feed articles depending on number of hops in Path: - -2008-05-26 iulius - - * trunk/frontends/Makefile: clobber and distclean should not remove - man pages. - - * trunk/doc/pod/actsync.pod, trunk/doc/pod/archive.pod, - trunk/doc/pod/buffchan.pod, trunk/doc/pod/buffindexed.conf.pod, - trunk/doc/pod/checklist.pod, trunk/doc/pod/ctlinnd.pod, - trunk/doc/pod/distrib.pats.pod, trunk/doc/pod/distributions.pod, - trunk/doc/pod/expire.ctl.pod, trunk/doc/pod/external-auth.pod, - trunk/doc/pod/fastrm.pod, trunk/doc/pod/getlist.pod, - trunk/doc/pod/hacking.pod, trunk/doc/pod/hook-perl.pod, - trunk/doc/pod/hook-python.pod, trunk/doc/pod/inews.pod, - trunk/doc/pod/inn.conf.pod, trunk/doc/pod/inndf.pod, - trunk/doc/pod/innmail.pod, trunk/doc/pod/install.pod, - trunk/doc/pod/libinnhist.pod, trunk/doc/pod/list.pod, - trunk/doc/pod/moderators.pod, trunk/doc/pod/motd.news.pod, - trunk/doc/pod/news.pod, trunk/doc/pod/ninpaths.pod, - trunk/doc/pod/nnrpd.pod, trunk/doc/pod/ovdb.pod, - trunk/doc/pod/ovdb_init.pod, trunk/doc/pod/ovdb_monitor.pod, - trunk/doc/pod/ovdb_server.pod, trunk/doc/pod/ovdb_stat.pod, - trunk/doc/pod/overchan.pod, trunk/doc/pod/passwd.nntp.pod, - trunk/doc/pod/pullnews.pod, trunk/doc/pod/qio.pod, - trunk/doc/pod/rc.news.pod, trunk/doc/pod/readers.conf.pod, - trunk/doc/pod/readme.pod, trunk/doc/pod/rnews.pod, - trunk/doc/pod/sendinpaths.pod, trunk/doc/pod/subscriptions.pod, - trunk/doc/pod/tdx-util.pod, trunk/doc/pod/tst.pod: Add Id's and - =cut. Also fix some extra spaces. - -2008-05-25 iulius - - * trunk/control/modules/newgroup.pl: Fix a Perl warning. - - * trunk/backends/actsync.c: Hmm, it was only a problem of quietness - (it prints the problem but ignores the newsgroup). - - * trunk/backends/actsync.c: Fix a bug in actsync: the behaviour of - the -t flag was the opposite of what it should have been. - -2008-05-24 iulius - - * trunk/doc/man/Makefile: Fix dangling symlinks, at last! - - * trunk/doc/man/Makefile: Use a relative symlink instead of an - absolute one. - -2008-05-23 iulius - - * trunk/doc/pod/install.pod: Specify that it is possible for files - not to be backuped on update. Moreover, man pages are no longer - backuped. - - * trunk/Makefile.global.in: Add a variable for .OLD suffix. - - * trunk/Makefile, trunk/doc/man/Makefile, trunk/site/Makefile: Fix - DESTDIR support thanks to Ivan Shmakov. - -2008-05-22 iulius - - * trunk/nnrpd/Makefile, trunk/nnrpd/tls.c: When an article of a - size greater than remaining stack is retrieved via SSL, a - segmentation fault will occur due to the use of alloca(). The - below patch uses heap based realloc() instead of stack based - alloca(), with a static buffer growing as needed. It uses - realloc() instead of malloc() for performance reasons since this - function is called frequently. The caveat is that the memory is - never free()'ed, so if more correct code is desired, it should be - adjusted. - - Thanks to Chris for this patch. - -2008-05-20 iulius - - * trunk/nnrpd/line.c: Mark a variable UNUSED to silence gcc - warnings. - -2008-05-19 iulius - - * trunk/doc/pod/inn.conf.pod: Missing change for revision 7823. - - * trunk/CONTRIBUTORS, trunk/nnrpd/line.c: Implementation of the - "alarm signal" around SSL_read so that to prevent dead - connections from leading nnrpd processes to wait forever in - SSL_read(). "clienttimeout" now also works on SSL connections. - - Thanks to Matija Nalis for the patch. - - * trunk/nnrpd/tls.c: Implementation on systems that support it of - SO_KEEPALIVE in SSL TCP connections, allowing system detection - and closing the dead TCP SSL connections automatically after - system-specified time (usually at least 2 hours as recommended by - RFC (on Linux, see /proc/sys/net/ipv4/tcp_keepalive_*). - - Thanks to Matija Nalis for the patch. - -2008-05-14 iulius - - * trunk/innfeed/connection.c: Typo. - -2008-05-07 iulius - - * trunk/samples/incoming.conf, trunk/samples/readers.conf: Add IPv6 - localhost address ::1 to incoming.conf and readers.conf. - - * trunk/doc/pod/pullnews.pod, trunk/tests/overview/xref-t.c: $Id$ - was not recognized. - - * trunk/doc/pod/inn.conf.pod, trunk/include/inn/innconf.h, - trunk/innd/nc.c, trunk/lib/innconf.c, trunk/samples/inn.conf.in, - trunk/scripts/innupgrade.in, trunk/tests/overview/xref-t.c: - Change three inn.conf settings: - - articlemmap: false -> true hiscachesize: 0 -> 256 nntpactsync - renamed to incominglogfrequency - - innupgrade handles this renaming. - - * trunk/doc/pod/news.pod, trunk/doc/pod/ovdb.pod, - trunk/doc/pod/ovdb_init.pod: Generic boolean values are not - inside C<> in POD documentation. - -2008-05-06 iulius - - * trunk/configure.ac: Check for sys/select.h at configure time. - - * trunk/doc/pod/inn.conf.pod, trunk/lib/innconf.c, - trunk/samples/inn.conf.in, trunk/samples/innwatch.ctl, - trunk/scripts/innwatch.in: Change three inn.conf settings: - - clienttimeout: 600 -> 1800 innwatchbatchspace: 800 -> 4000 - innwatchspoolspace: 8000 -> 25000 - -2008-05-05 iulius - - * trunk/doc/pod/install.pod, trunk/doc/pod/ovdb.pod, - trunk/samples/ovdb.conf: Remove old occurrences of Berkeley DB < - 4.4 in documentation. - - * trunk/TODO, trunk/configure.ac, trunk/frontends/ovdb_server.c, - trunk/m4/zlib.m4: It is "Berkeley DB" and not "BerkeleyDB". - - * trunk/frontends/ovdb_init.c, trunk/frontends/ovdb_monitor.c, - trunk/frontends/ovdb_stat.c, trunk/storage/ovdb/ovdb-private.h, - trunk/storage/ovdb/ovdb.c: Remove support for Berkeley DB < 4.4. - The code will now we cleaner! - - * trunk/m4/berkeleydb.m4: Check for Berkeley DB in regular system - locations. - - * trunk/control/signcontrol.in, trunk/frontends/cnfsheadconf.in: - Fix a Perl warning in signcontrol. Remove warnings for - cnfsheadconf because there is one in a Perl module: - - Use of uninitialized value in addition (+) at - /usr/share/perl/5.8/bigint.pl line 220, line 48. - - * trunk/doc/pod/news.pod: Update the ChangeLog for Perl 5.10 - support. - - * trunk/CONTRIBUTORS, trunk/innd/perl.c, trunk/lib/perl.c, - trunk/nnrpd/perl.c: Perl 5.10 support for INN. Thanks, Jakub - Bogusz, for the patch. - -2008-04-30 iulius - - * trunk/doc/pod/news.pod: Update the ChangeLog for Berkeley DB 4.5 - (which works). - -2008-04-28 iulius - - * trunk/frontends/pullnews.in: Remove the redefinition of - Net::NNTP::new() so as to use the function provided by Net::NNTP - >= 2.18 since 1998. Also fix some warnings. - - * trunk/doc/pod/getlist.pod, trunk/frontends/getlist.c: Add a -R - flag to getlist in order to issue MODE READER. - - * trunk/MANIFEST, trunk/TODO, trunk/doc/man, - trunk/doc/man/Makefile, trunk/doc/pod/Makefile, - trunk/doc/pod/distributions.pod, trunk/samples/distributions, - trunk/site, trunk/site/Makefile, trunk/support/mkmanifest: Add - POD documentation for distributions(5) and a corresponding sample - file. - - * trunk/doc/pod/distrib.pats.pod, trunk/doc/pod/nnrpd.pod: Typos - and mention the distributions file. - - * trunk/doc/pod/getlist.pod: Mention that LIST ACTIVE is the - default value. - - * trunk/doc/pod/getlist.pod: * Add documentation for the -p flag; * - Mention more listing files. - - * trunk/doc/pod/convdate.pod: Specify the default behaviour of - convdate. - - * trunk/doc/pod/pullnews.pod, trunk/frontends/pullnews.in: Improve - documentation (especially a FILES section) and fix typos. - - * trunk/doc/pod/hacking.pod, trunk/doc/pod/hook-perl.pod, - trunk/doc/pod/install.pod, trunk/doc/pod/newslog.pod, - trunk/doc/pod/simpleftp.pod: Better PODification of the names of - Perl modules. - -2008-04-26 iulius - - * trunk/innfeed/host.c: Fix a bug in hostDeleteIpv4Addr(): after - innfeed has called that function, host->nextIpAddr can point - outside the host->ipAddrs[] array. - - * trunk/doc/man/innfeed.1, trunk/doc/pod/news.pod, - trunk/doc/pod/pullnews.pod: * Update the changelog for INN 2.4.4; - * Add documentation for -x to pullnews; * Fix a typo in the - documentation of innfeed. - - * trunk/frontends/mailpost.in, trunk/frontends/pullnews.in: Add - some more parenthesis. Both mailpost and pullnews were affected - by this bug. - - * trunk/MANIFEST, trunk/frontends/mailpost.in: Add inews(1) in the - "see also" section. Update the manifest. - -2008-04-25 iulius - - * trunk/doc/pod/Makefile, trunk/doc/pod/mailpost.pod, - trunk/frontends/Makefile, trunk/frontends/mailpost.in: Generate - the documentation of mailpost directly from its source. - - * trunk/CONTRIBUTORS, trunk/frontends/mailpost.in: Fix a bug when - mailpost either couldn't find the pathtmp directory or couldn't - write to it. Thanks, Nick Couchman, for having reported the bug. - - * trunk/doc/man/news2mail.8, trunk/doc/pod/install.pod, - trunk/doc/pod/rc.news.pod, trunk/innd/art.c, trunk/lib/innconf.c, - trunk/nnrpd/commands.c, trunk/scripts/inncheck.in, - trunk/scripts/innreport_inn.pm: Write "e-mail" instead of - "email". Also fix indentations. - - * trunk/doc/pod/mailpost.pod, trunk/frontends/mailpost.in: * Add - documentation for -h, -n and -o; * Add a list of known headers; * - Clarify the use of -b; * Fix /mailpost-msgid.db which is - /mailpost-msgid.dir and /mailpost-msgid.pag; * - Fix the usage of [newsgroups] which is not optional; * It is - $Database and not $lockfile in dbmopen/close; * Better formatting - of error mails; * Typos. - - * trunk/doc/man/innfeed.conf.5, trunk/innfeed/connection.c, - trunk/innfeed/host.c, trunk/innfeed/host.h, trunk/innfeed/main.c, - trunk/lib/network.c: bindaddress/bindaddress6 keys can now be set - on a per-peer basis in innfeed.conf. - - Setting "bindaddress6: none" is equivalent to "force-ipv4: true". - - Both bindaddress and bindaddress6 work simultaneously, using - bindaddress for IPv4 peer addresses and bindaddress6 for IPv6 - peer addresses. If a peer has IPv6 addresses, and at least one of - them works, it never falls back to IPv4. If none of the IPv6 - addresses works, it falls back to IPv4. - - Since the server cannot connect to an IPv4 address if it binds to - an IPv6 address and the other way around, hostIpAddr() has been - changed to take an extra "family" argument, so that IPv4 - addresses are skipped for IPv6 sockets and vice versa. - - Thanks to Miquel van Smoorenburg for this patch. - -2008-04-23 iulius - - * trunk/tests/util/inndf.t: Fix the test of inndf for IRIX. - - * trunk/storage/ovdb/ovdb.c: Remove an unnecessary variable (sequel - to the patch for the runasuser user). - -2008-04-18 iulius - - * trunk/LICENSE: Clarify RSA's license for lib/md5.c. - - * trunk/m4/mmap.m4: INN 2.5 did not build on some systems because - of HAVE_MSYNC_3_ARG not being set at configure time. malloc was - not found and a script failed. - - * trunk/configure.ac: Fix warnings at configure time when libtool - is not used. (libtool 2.2.2 added some tests.) - -2008-04-17 iulius - - * trunk/doc/pod/news.pod: Update the ChangeLog for INN 2.4.4 (new - features for bindaddress and bindaddress6, instead of - force-ipv4). - -2008-04-16 iulius - - * trunk/frontends/getlist.c: Print usage information instead of - exiting(1). - - * trunk/storage/ov.c: Fix a bug in OVcancel (undefined variable). - - * trunk/lib/dbz.c: This variable is used only if the system has - mmap. - -2008-04-15 iulius - - * trunk/CONTRIBUTORS, trunk/doc/history-innfeed, - trunk/doc/pod/hook-perl.pod: It is "ISC" and not "the ISC". - -2008-04-13 iulius - - * trunk/backends/Makefile, trunk/control/Makefile: Fix the name of - the man pages generated from ".in" files. - - * trunk/CONTRIBUTORS, trunk/doc/pod/news.pod: Changelog for INN - 2.4.4. - - * trunk/CONTRIBUTORS, trunk/frontends/inews.c: inews now tries to - authenticate if it does not receive a 200 return code after MODE - READER. Indeed, it might be able to post even with a 201 return - code (and also with another codes like 440 or 480 but such codes - are not RFC compliant in reply to MODE READER). - - Thanks to Alan Schwartz for the bug report. - - * trunk/doc/man/innfeed.conf.5: Fix escape characters in the - innfeed.conf man page. - -2008-04-12 iulius - - * trunk/m4/berkeleydb.m4, trunk/storage/ovdb/ovdb.c: INN now - supports Berkeley DB 4.6. Thanks to Marco d'Itri for the patch. - - * trunk/MANIFEST, trunk/Makefile.global.in, trunk/configure.ac, - trunk/m4/libtool.m4, trunk/m4/ltoptions.m4, trunk/m4/ltsugar.m4, - trunk/m4/ltversion.m4, trunk/m4/lt~obsolete.m4, - trunk/support/ltmain.sh: * Update libtool to version 2.2.2 with - the necessary support for the -B flag in ltmain.sh. * Add - LIBTOOLINST in order to use "mode=install" in the same way as - LIBTOOLCC and LIBTOOLLD. - - * trunk/tests/Makefile, trunk/tests/authprogs, trunk/tests/innd, - trunk/tests/nnrpd, trunk/tests/util: Fix compilation issues with - libtool: the right mode (link) should be specified. Ignore .libs - subdirectories in Subversion. - - * trunk/doc/pod/hacking.pod, trunk/support/ltmain.sh: Fix the - installation when compiling with libtool. The ltmain.sh script - needs a specific modification. - - * trunk/doc/pod/install.pod: Mention the start-stop-daemon utility. - Thanks, Marco d'Itri for this better command. - - * trunk/CONTRIBUTORS: Sorry for the typo. - -2008-04-11 iulius - - * trunk/TODO, trunk/authprogs/auth_krb5.c, trunk/contrib/README, - trunk/control/gpgverify.in, trunk/control/signcontrol.in, - trunk/doc/history-innfeed, trunk/doc/pod/fastrm.pod, - trunk/doc/pod/hook-perl.pod, trunk/doc/pod/hook-python.pod, - trunk/doc/pod/moderators.pod, trunk/samples/moderators, - trunk/support/mksnapshot: Add brackets around mail addresses. - - * trunk/CONTRIBUTORS: Update the list of contributors. - -2008-04-10 iulius - - * trunk/nnrpd/line.c: It seems that the SSL_read cannot be mixed - with select() as in the current code. SSL communicates in its own - data blocks and hand shaking. The do_readline using SSL_read - could return, but still with a partial line in the SSL_read - buffer. Then the server SSL routine would sit there waiting for - completion of that data block while nnrpd sat at the select() - routine waiting for more data from the server. - - (Without this patch, clients like Thunderbird, SeaMonkey or slrn - sometimes hang when posting using a SSL connection.) - - Here, we decide to just bypass the select() wait. Unlike innd - with multiple threads, the select on nnrpd is just waiting on a - single file descriptor, so it is not really essential with - blocked read like SSL_read. Using an alarm signal around SSL_read - for non active timeout, SSL works without dead locks. However, - without the select() wait, the IDLE timer stat won't be - collected... - - Patch from Kachun Lee. - -2008-04-09 iulius - - * trunk/innd/art.c: Use size_t instead of casting. - -2008-04-06 iulius - - * trunk/doc/pod/news.pod: Update changes for INN 2.5.0. - - * trunk/doc/pod/inn.conf.pod, trunk/doc/pod/innd.pod, - trunk/include/inn/innconf.h, trunk/innd/art.c, trunk/innd/cc.c, - trunk/innd/innd.c, trunk/innd/innd.h, trunk/innd/site.c, - trunk/lib/innconf.c, trunk/samples/inn.conf.in, - trunk/scripts/inncheck.in, trunk/tests/lib/innconf-t.c: This - patch adds a new inn.conf parameter called "pathcluster" which - allows to append 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). - - If the last pathname of the incoming article is the same as - "pathcluster", it is stripped from the path. - - Thanks to Miquel van Smoorenburg for this patch. - - * trunk/LICENSE: Update license information. - - * trunk/backends/innbind.c, trunk/lib/network.c: This patch makes - innd listen 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 available on v6 sockets. - - Thanks to Miquel van Smoorenburg for this patch. - -2008-04-03 iulius - - * trunk/samples/control.ctl: A more up-to-date control.ctl file - from the ISC. - - * trunk/m4/libtool.m4, trunk/support/config.guess, - trunk/support/config.sub, trunk/support/ltmain.sh: Update support - files for autoconf to their last stable version. Also update to - libtool 1.5.26. - - * trunk/doc/pod/news.pod: Fix some typos and podify the file. A bug - noted in 2.5 was fixed in 2.4.2. - - * trunk/doc/pod/hook-perl.pod, trunk/doc/pod/install.pod: Typos. - -2008-03-24 iulius - - * trunk/innd/Makefile, trunk/lib/Makefile: Update dependencies. - - * trunk/doc/pod/newsfeeds.pod, trunk/innd/art.c, trunk/innd/innd.h, - trunk/innd/newsfeeds.c, trunk/innd/site.c, - trunk/scripts/inncheck.in: Implementation of the Diablo hashfeed - algorithm. It allows to distribute the messages among several - peers (new Q flag for newsfeeds). - - Thanks to Miquel van Smoorenburg for this implementation in INN. - - Also fix inncheck after commit 7713 for the legacy Diablo - quickhash (which uses the Q flag too). - -2008-03-23 iulius - - * trunk/nnrpd/list.c: 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. - -2008-03-22 iulius - - * trunk/nnrpd/list.c, trunk/nnrpd/nnrpd.c: * Typo in the answer for - LIST MOTD (two final dots). * Add capability to LIST ACTIVE.TIMES - for a wildmat pattern as its third argument (LIST ACTIVE.TIMES - *nntp). * The "moderators" keyword was missing in the answer for - HELP. * Add more comments in the source code. - -2008-03-20 iulius - - * trunk/scripts/innreport_inn.pm: Suppress the report of the reload - of bad files for the new Cleanfeed version by Steve Crook. - - * trunk/doc/pod/checklist.pod, trunk/doc/pod/install.pod, - trunk/doc/pod/nnrpd.pod, trunk/doc/pod/readers.conf.pod: Clarify - the use of NNTPS (563) and NNTP (119) with STARTTLS. - - * trunk/doc/pod/newsfeeds.pod, trunk/innd/art.c, trunk/innd/innd.h, - trunk/innd/newsfeeds.c, trunk/innd/site.c: Implementation of the - Diablo Quickhash algorithm. It allows to distribute the messages - among several peers (new Q flag for newsfeeds). - - Thanks to Miquel van Smoorenburg for this implementation in INN. - -2008-02-05 eagle - - * trunk/innfeed/connection.c: Cycle remote addresses if creating a - socket failed, since we may have been trying to create an - AF_INET6 socket on a system that doesn't support IPv6. Thanks, D. - Stussy. - -2008-02-03 jeff - - * trunk/frontends/cnfsstat.in: Use "!" instead of "==0" to prevent - uninitialized variable warnings. - -2008-01-25 iulius - - * trunk/frontends/cnfsstat.in: Fix the warning of the use of an - uninitialized value in cnfsstat. - -2008-01-19 eagle - - * trunk/innd/innd.c: Fix a variable reference in catch_terminate in - the non-sigaction case. - -2008-01-15 iulius - - * trunk/expire/makehistory.c: Fix the inndf test (makehistory - should not check whether the news user is "news" for the test - suite). - - * trunk/MANIFEST, trunk/Makefile, trunk/doc/pod/hacking.pod, - trunk/doc/pod/install.pod, trunk/doc/pod/readme.pod, - trunk/support/mksnapshot: Subversion is currently used for INN - development. Remove references to CVS. - -2008-01-14 iulius - - * trunk/backends/innbind.c, trunk/frontends/inews.c, - trunk/lib/newsuser.c: Fix compilation errors when warnings are - on. (Following commit 7703 for runasnews/runasgroup.) - -2008-01-12 iulius - - * trunk/scripts/innreport_inn.pm: Do not report an unknown line - when a cancel feed is closed. Innreport does not (currently) - count such cancels. - - * trunk/MANIFEST, trunk/Makefile, trunk/Makefile.global.in, - trunk/backends/Makefile, trunk/backends/innbind.c, - trunk/doc/pod/inn.conf.pod, trunk/expire/Makefile, - trunk/expire/expire.c, trunk/expire/expireover.c, - trunk/expire/makedbz.c, trunk/expire/makehistory.c, - trunk/frontends/Makefile, trunk/frontends/inews.c, - trunk/frontends/ovdb_init.c, trunk/frontends/ovdb_monitor.c, - trunk/frontends/ovdb_stat.c, trunk/frontends/rnews.c, - trunk/include/inn/innconf.h, trunk/include/inn/newsuser.h, - trunk/innd/Makefile, trunk/innd/innd.c, trunk/lib/Makefile, - trunk/lib/innconf.c, trunk/lib/newsuser.c, trunk/m4/modes.m4, - trunk/m4/users.m4, trunk/nnrpd/Makefile, trunk/nnrpd/nnrpd.c, - trunk/nnrpd/tls.c, trunk/perl/INN/Config.pm.in, - trunk/samples/inn.conf.in, trunk/scripts/inncheck.in, - trunk/scripts/innshellvars.in, trunk/scripts/innshellvars.pl.in, - trunk/scripts/innshellvars.tcl.in, trunk/site/Makefile, - trunk/storage/Makefile, trunk/storage/ovdb/ovdb.c, - trunk/storage/tradindexed/tdx-util.c: Support for "runasuser" and - "runasgroup" options within inn.conf in order to set the news - user and the news group under which the news server runs. - - Remove all the occurrences of previous NEWSUSER and NEWSGRP in - the source code. Instead of them, a new library "newsuser.h" is - called whenever we have to ensure that the program is running as - the right news user/group (ensure_news_* functions). - - Many thanks to Ivan Shmakov for this patch. - -2007-12-26 jeff - - * trunk/doc/man/innfeed.conf.5, trunk/doc/pod/inn.conf.pod: Clarify - the new behavior where innfeed.conf's binaddress/bindaddress6 - inherit from inn.conf's sourceaddress/sourceaddress6 if unset. - -2007-12-13 eagle - - * trunk/doc/pod/install.pod: Add a trailing slash to the snapshots - URL to avoid HTML checker warnings. - -2007-12-12 iulius - - * trunk/frontends/ovdb_init.c: Patch daemonize-ovdb_init to make - ovdb_init properly close stdin/out/err when it becomes a daemon. - The issue was reported by Viktor Pilpenok and fixed by Marco - d'Itri. Thanks to both of them. - -2007-11-04 iulius - - * trunk/control/perl-nocem.in: * Typos. * Fix the count of the time - spent in do_nocem(): the $start and $diff variables were - consecutive. * Use "%d" instead of "$nr" in sprintf. * - Documentation fixes: * perl-nocem does not expect a message but a - token. * Add "--no-default-keyring" because gpg otherwise uses - the one in ~/.gnupg (strange). * It is news.lists.filters and not - news.lists.filter. - -2007-10-05 iulius - - * trunk/innd/Makefile, trunk/samples/inn.conf.in: Update - dependencies for compilation. Detabify inn.conf. - -2007-10-05 jeff - - * trunk/samples/inn.conf.in: Add example use of "nnrpdflags" (set - to empty string) - - * trunk/doc/pod/inn.conf.pod, trunk/doc/pod/nnrpd.pod, - trunk/include/inn/innconf.h, trunk/innd/rc.c, - trunk/lib/innconf.c: Add a "nnrpdflags" parameter to inn.conf - (modeled on the concept of "innflags") to permit passing of - commandline arguments to instances of nnrpd spawned from innd. - -2007-10-04 iulius - - * trunk/innfeed/procbatch.in: Initialize the value of $missing - (perl -w...). Fix some typos at the same time. - -2007-10-01 iulius - - * trunk/backends/send-uucp.in: Fix a bug in the display of the used - compressor (cunbatch was put if arguments were passed to gzip or - bzip2). - -2007-09-22 iulius - - * trunk/tests/util/inndf.t: df has special output on FreeBSD: - - # df -i . Filesystem 1K-blocks Used Avail Capacity iused ifree - %iused Mounted on /dev/da5s1d 69319818 55460910 8313324 87% - 131509 8841801 1% / - - Maybe on other systems too (but, well, let's wait for someone's - complaining about the test suite not working on its system). - - * trunk/tests/authprogs/ident-t.c, trunk/tests/lib/network-t.c: Fix - some types in the test suite (socklen_t is not necessarily - size_t). - - * trunk/tests/lib/xmalloc.t: Wrong lines in xmalloc's test. - - * trunk/lib/inet_ntop.c, trunk/tests/lib/inet_ntop-t.c: AF_INET was - undeclared in lib/inet_ntop.c (which broke the build of the test - suite). - -2007-09-21 iulius - - * trunk/innfeed/endpoint.c: Fix a problem with innfeed continuously - segfaulting on amd64 hardware (and possibly on lots of 64 bits - platforms); sig_atomic_t is indeed a long and not an integer - there. - - Patch from Ollivier Robert. Many thanks to him and also to Kai - Gallasch for having reported the problem and provided the FreeBSD - server to debug it. - -2007-09-20 iulius - - * trunk/configure.ac, trunk/perl/INN/Config.pm.in, - trunk/scripts/Makefile, trunk/scripts/inncheck.in, - trunk/scripts/innshellvars.in, trunk/scripts/innshellvars.pl.in, - trunk/scripts/innshellvars.tcl.in, trunk/scripts/news.daily.in: * - news.daily and inncheck are no longer generated at configure - time. * Fix a problem of uninitialized value in inncheck. - - * trunk/backends/news2mail.in, trunk/control/controlbatch.in, - trunk/control/controlchan.in, trunk/frontends/scanspool.in: - Change @bindir@ to (or equivalent) in comments. It will - be more homogeneous with the rest of INN. - - * trunk/backends/send-uucp.in, trunk/configure.ac, - trunk/perl/INN/Config.pm.in, trunk/scripts/innshellvars.in, - trunk/scripts/innshellvars.pl.in, - trunk/scripts/innshellvars.tcl.in: Fix the use of uustat in - send-uucp(8). The program is now searched at configure time and a - $uustat variable is provided by innshellvars and INN::Config. - - * trunk/doc/pod/simpleftp.pod, trunk/scripts/Makefile, - trunk/scripts/simpleftp.in: Rewrite simpleftp to use Net::FTP. - Indeed, ftp.pl is no longer shipped with Perl 5 and the script - does not work. - - * Add support for usernames, passwords and ports. * Fix typos in - the documentation. * Remove the use of fixscript on simpleftp. * - Perl warnings are now on. - -2007-09-19 iulius - - * trunk/innd/Makefile, trunk/lib/Makefile, trunk/nnrpd/Makefile, - trunk/support/makedepend: Better print of dependencies (there - were sometimes too many spaces). - -2007-09-18 iulius - - * trunk/MANIFEST, trunk/Makefile, trunk/Makefile.global.in, - trunk/backends/mod-active.in, trunk/backends/news2mail.in, - trunk/backends/send-uucp.in, trunk/configure.ac, - trunk/contrib/backlogstat.in, trunk/contrib/cleannewsgroups.in, - trunk/contrib/findreadgroups.in, trunk/contrib/makeexpctl.in, - trunk/contrib/makestorconf.in, trunk/contrib/thdexpire.in, - trunk/control/controlchan.in, trunk/control/gpgverify.in, - trunk/control/modules/checkgroups.pl, - trunk/control/modules/ihave.pl, - trunk/control/modules/newgroup.pl, - trunk/control/modules/rmgroup.pl, - trunk/control/modules/sendme.pl, - trunk/control/modules/sendsys.pl, - trunk/control/modules/senduuname.pl, - trunk/control/modules/version.pl, trunk/control/perl-nocem.in, - trunk/control/pgpverify.in, trunk/doc/pod/hacking.pod, - trunk/frontends/cnfsheadconf.in, trunk/frontends/cnfsstat.in, - trunk/frontends/mailpost.in, trunk/frontends/scanspool.in, - trunk/innfeed/procbatch.in, trunk/m4/paths.m4, trunk/perl, - trunk/perl/INN, trunk/perl/INN/Config.pm.in, trunk/perl/Makefile, - trunk/samples/nnrpd_access.pl.in, - trunk/samples/nnrpd_access_wrapper.pl.in, - trunk/samples/nnrpd_auth.pl.in, - trunk/samples/nnrpd_auth_wrapper.pl.in, - trunk/scripts/inncheck.in, trunk/scripts/innmail.in, - trunk/scripts/innreport.in, trunk/scripts/innshellvars.in, - trunk/scripts/innshellvars.pl.in, trunk/scripts/innupgrade.in, - trunk/scripts/simpleftp.in, trunk/support/fixconfig.in, - trunk/support/fixscript.in, trunk/support/mkmanifest: * Add a new - "perl" top-level directory to host, to start with, the module - INN::Config. * Convert all Perl scripts to use that module. * Add - a new --libperldir configure option to specify the installation - directory (by default @libdir@/perl). * Fix some declarations of - variables for "perl -w" not to complain. * Remove "lint food" - stuff. * Specify that innshellvars.pl is deprecated. - - Feel free to improve the first version of Config.pm and its - documentation. And do not hesitate to blame me in case I have - broken something (I hope not!). - - * trunk/backends/send-uucp.in, trunk/frontends/scanspool.in: Remove - unused variables, fix paths and another unaccurate newsfeeds - entry for control newsgroups. - - * trunk/contrib/makeexpctl.in: The $oldtime variable was not - defined. - - * trunk/control/pgpverify.in: Only fix typos. The new version using - INN::Config will soon be committed. This commit is only an - intermediate one so as to make changes easier to backport on the - STABLE pgpverify script, if need be. - -2007-09-17 iulius - - * trunk/scripts/innreport_inn.pm: Fix a typo which was preventing - innreport from counting the rejected size of articles. - -2007-09-17 eagle - - * trunk/tests/lib/innconf-t.c: Adjust for additional parameters in - inn.conf. - -2007-09-16 iulius - - * trunk/frontends/sys2nf.c: This file should also correctly convert - "*" (no need to feed control newsgroups). [Following revision - 7675.] - - * trunk/doc/man/Makefile: Add symlinks to localgroups(5) and - nocem.ctl(5). - - * trunk/doc/pod/innd.pod, trunk/doc/pod/newsfeeds.pod, - trunk/innd/art.c, trunk/samples/newsfeeds.in: * Checkgroups are - now properly propagated even though the news server does not - carry the groups they are posted to. * Improve documentation as - for the use of "!control,!control.*" regarding the propagation of - control articles. * Expand "control*" to "control,control.*" in - documentation and samples for more accuracy. * control.cancel is - mandatory for innd to start so cancel messages are not fed to - control. - -2007-09-15 iulius - - * trunk/doc/pod/active.pod, trunk/doc/pod/active.times.pod, - trunk/doc/pod/ckpasswd.pod, trunk/doc/pod/convdate.pod, - trunk/doc/pod/readers.conf.pod: Update "SEE ALSO" references and - add a word about docheckgroups and mod-active in active(5) and - active.times(5). - - * trunk/doc/pod/ctlinnd.pod, trunk/doc/pod/newslog.pod: * Clarify - the cancellation of articles before they arrive. * Add a - reference to innd logging in newslog(5). - - * trunk/doc/pod/inn.conf.pod, trunk/include/inn/innconf.h, - trunk/samples/inn.conf.in: * Sync the order of the parameters in - innconf.h and inn.conf.pod. * Remove nnrp*auth from the list of - parameters. They are now only mentioned as obsolete in the - beginning of the section. * Add a history section in - inn.conf.pod. * Add a subsection for SSL and TLS support since it - affects both reading and posting. - -2007-09-14 iulius - - * trunk/doc/pod/inn.conf.pod, trunk/lib/innconf.c, - trunk/samples/inn.conf.in: * Add stathist, tlscafile, tlscapath, - tlscertfile and tlskeyfile entries to the inn.conf sample. * - Little alphabetical reorganization of the inn.conf sample. * - Change the default value of tlskeyfile (key.pem instead of - cert.pem since it is what "make cert" generates). * Add an - innconf->pathcontrol default value in the innconf structure. * - Fix typos. * There is no longer a newsrequeue program. * NNTP - draft (15) gave birth to NNTP RFC 3977. - -2007-09-05 iulius - - * trunk/MANIFEST, trunk/control/docheckgroups.in, trunk/doc/man, - trunk/doc/man/Makefile, trunk/doc/pod/Makefile, - trunk/doc/pod/docheckgroups.pod, trunk/samples/localgroups, - trunk/site, trunk/site/Makefile, trunk/support/mkmanifest: First - step towards a better handling of checkgroups: an improved - version of docheckgroups. Hopefully it is backward compatible. - - * The -u flag permits to update the newsgroups file (with the - proper number of tabulations and an alphabetical sort), removing - obsolete descriptions and adding new ones. - - * A second argument on command-line permits to specify which - newsgroups should not be checked (it is pretty useful and will be - used to handle drops in control.ctl as for checkgroups - processing). - - * Detabify the script, use innshellvars' "${SORT}" instead of - "sort" and add more comments inside the script. - - * The output is displayed better (more spaces and rewording) and - mentions the possibility to use the -u flag and mod-active. - - * Fix a bug for moderated groups (" (Moderated)" should be - searched, and not "(Moderated)"). - - * A documentation (I hope enough detailed) for docheckgroups. It - was greatly missing. - - * A sample file for localgroups (with documentation). - -2007-09-04 iulius - - * trunk/backends/mod-active.in: Do not pause the news server when - there is no changes to do. Add a count (and display it) of the - number of changes to do. - - * trunk/backends/mod-active.in: Do not forget to chmod 0664 active - after having edited it. Otherwise, inncheck complains. - -2007-09-03 iulius - - * trunk/backends/actsyncd.in, trunk/doc/pod/actsync.pod: There is - no -x flag for actsyncd. Update the documentation accordingly. - - * trunk/backends/mod-active.in, trunk/doc/pod/hook-perl.pod, - trunk/doc/pod/newslog.pod, trunk/frontends/scanspool.in, - trunk/scripts/inncheck.in, trunk/scripts/scanlogs.in: * Add three - log files to scanlogs (controlbatch.log, perl-nocem.log and - send-ihave.log). * Change syslog(2) to syslog(3). * Use files - from innshellvars ($inn::activetimes instead of - $inn:pathdb/active.times for instance). - - * trunk/control/perl-nocem.in, trunk/doc/pod/actsync.pod, - trunk/doc/pod/buffindexed.conf.pod, - trunk/doc/pod/cycbuff.conf.pod, trunk/doc/pod/expireover.pod, - trunk/doc/pod/fastrm.pod, trunk/doc/pod/hook-perl.pod, - trunk/doc/pod/inndf.pod, trunk/doc/pod/makehistory.pod, - trunk/doc/pod/news.pod, trunk/doc/pod/newsfeeds.pod, - trunk/doc/pod/nnrpd.pod, trunk/doc/pod/ovdb_init.pod, - trunk/doc/pod/rc.news.pod, trunk/doc/pod/readers.conf.pod, - trunk/doc/pod/tdx-util.pod, trunk/doc/pod/tinyleaf.pod: * Mention - that actsyncd uses mod-active if there are commands for ctlinnd. - * Add a warning in buffindexed.conf.pod not to mistake - group.index in pathdb for group.index in pathoverview! * Detabify - perl-nocem. * Fix almost all occurrences of hard-written paths - (it is better to refer to inn.conf). - -2007-09-02 iulius - - * trunk/backends/send-uucp.in, trunk/control/perl-nocem.in, - trunk/doc/pod/active.times.pod, trunk/doc/pod/actsync.pod, - trunk/doc/pod/archive.pod, trunk/doc/pod/auth_krb5.pod, - trunk/doc/pod/batcher.pod, trunk/doc/pod/buffindexed.conf.pod, - trunk/doc/pod/checklist.pod, trunk/doc/pod/convdate.pod, - trunk/doc/pod/ctlinnd.pod, trunk/doc/pod/cycbuff.conf.pod, - trunk/doc/pod/fastrm.pod, trunk/doc/pod/hacking.pod, - trunk/doc/pod/hook-perl.pod, trunk/doc/pod/hook-python.pod, - trunk/doc/pod/inn.conf.pod, trunk/doc/pod/innbind.pod, - trunk/doc/pod/innd.pod, trunk/doc/pod/innupgrade.pod, - trunk/doc/pod/install.pod, trunk/doc/pod/libinnhist.pod, - trunk/doc/pod/list.pod, trunk/doc/pod/news.pod, - trunk/doc/pod/newsfeeds.pod, trunk/doc/pod/newsgroups.pod, - trunk/doc/pod/newslog.pod, trunk/doc/pod/nnrpd.pod, - trunk/doc/pod/ovdb.pod, trunk/doc/pod/ovdb_init.pod, - trunk/doc/pod/ovdb_stat.pod, trunk/doc/pod/passwd.nntp.pod, - trunk/doc/pod/qio.pod, trunk/doc/pod/radius.pod, - trunk/doc/pod/readme.pod, trunk/doc/pod/simpleftp.pod, - trunk/doc/pod/storage.conf.pod, trunk/doc/pod/tdx-util.pod, - trunk/doc/pod/tinyleaf.pod, trunk/samples/actsync.ign: Improve - paths in checklist. Improve the items list in cycbuff.conf, - INSTALL and storage.conf. Add a FILES section and "cd " - in actsync. Add a warning for tab-delimitation in newsgroups and - newslog. No space in a uwildmat pattern for clarity in INSTALL. - Use B<--xxx> instead of C<--xxx> for configure options in several - files. - - Add unbreakable spaces (S) to the following expressions: - ANSI C K&R C autoconf 2.59 podlators 1.25 RFC xxx Kerberos v5 - * 1024 bytes Perl xxx Python xxx INN 2.x option #x Solaris - x Berkeley DB xxx -- (starting and ending clauses between dashes) - xxx GB/MB/KB - - It really improves the reading (especially in HTML and man - pages). - -2007-08-31 iulius - - * trunk/support/mkmanifest: Exclude site/nocem.ctl from the - manifest. - -2007-08-30 iulius - - * trunk/MANIFEST, trunk/samples/newsfeeds.in, - trunk/samples/nocem.ctl, trunk/site, trunk/site/Makefile: Add a - sample file for nocem.ctl. Update the description for the UUCP - feed in newsfeeds. - - * trunk/backends/send-uucp.in, trunk/control/perl-nocem.in: Improve - POD documentation (FILES section, paths and a typo). - -2007-08-26 iulius - - * trunk/Makefile.global.in: Do not back up man pages during an - update since man complains about invalid file names: - - man: warning: /usr/share/man/man5/newslog.5.OLD: ignoring bogus - filename - - * trunk/MANIFEST, trunk/doc/man, trunk/doc/man/Makefile, - trunk/doc/man/newslog.5, trunk/doc/man/scanlogs.8, - trunk/doc/man/tally.control.8, trunk/doc/pod/Makefile, - trunk/doc/pod/newslog.pod, trunk/doc/pod/scanlogs.pod, - trunk/doc/pod/tally.control.pod: New POD documentation for - newslog(5), scanlogs(8) and tally.control(8) based upon previous - nroff documentation. Proof-reading, bunch of updates and new - presentation. - - * trunk/scripts/scanlogs.in, trunk/scripts/tally.control.in: Clean - out scanlogs a little: * definition of LOG and ERRLOG for - clarity; * remove two obsolete variables (TOP and NN); * remove - an obsolete program (tally.unwanted); * process innfeed log file - with a regexp to find its name; * fix the rotation of - send-nntp.log and send-uucp.log; * typos. - - * trunk/scripts/news.daily.in, trunk/storage/expire.c: More - consistent output from expiry programs, as said in newslog(5): no - indentation before "/program/ start" and "/program/ end" but four - spaces before the output from run programs. - - * trunk/innfeed/host.c, trunk/samples/innfeed.conf: If gen-html is - true in innfeed.conf, write the status file in pathhttp - (otherwise, write it in the pathlog directory, the previous - default behaviour). It is indeed more consistent with innd status - file written in HTML in pathhttp. - -2007-08-23 iulius - - * trunk/backends/batcher.c, trunk/innd/innd.c, trunk/innd/nc.c, - trunk/innfeed/endpoint.c, trunk/lib/innconf.c, - trunk/storage/timecaf/caf.c: Convert some size_t values to - properly compile on FreeBSD amd64. - -2007-08-22 iulius - - * trunk/authprogs/Makefile, trunk/backends/Makefile, - trunk/frontends/Makefile, trunk/innd/Makefile, - trunk/innfeed/Makefile, trunk/lib/Makefile, trunk/nnrpd/Makefile: - Update dependencies (make depend). Especially include/inn/nntp.h - and include/inn/hashtab.h. - - * trunk/tests/innd/chan-t.c, trunk/tests/lib/vector-t.c, - trunk/tests/overview/api-t.c, trunk/tests/overview/overview-t.c, - trunk/tests/overview/xref-t.c: Fix the remaining conditional - jumps or moves which depend on uninitialised values. The test - suite is now free from such problems. - -2007-08-21 iulius - - * trunk/tests/innd/artparse-t.c, trunk/tests/innd/chan-t.c: Fix the - initialization of Path in artparse.t and the NULL-ending of - cp->In.data in chan.t. - - Note that the behaviour of In buffers should be reviewed (the - meaning of .used and .left differs). - -2007-08-20 iulius - - * trunk/TODO, trunk/doc/pod/actsync.pod, - trunk/doc/pod/checklist.pod, trunk/doc/pod/install.pod, - trunk/innd/cc.c, trunk/lib/snprintf.c, trunk/samples/actsync.cfg, - trunk/samples/actsync.ign, trunk/samples/buffindexed.conf.in, - trunk/samples/cycbuff.conf, trunk/samples/storage.conf: Use "man - page" instead of "manpage" since it seems to be the default - spelling everywhere except for the ones I introduced in samples - and documentation. Also fix it in three other files. - - * trunk/MANIFEST, trunk/backends/send-uucp.in, - trunk/samples/Makefile, trunk/samples/newsfeeds.in, - trunk/samples/send-uucp.cf, trunk/site, trunk/site/Makefile, - trunk/support/mkmanifest: Improve POD documentation for - send-uucp(8): fix typos, mention the same Tf,Wnb flags as - newsfeeds does (and mention send-uucp in the newsfeeds sample), - bzip2 is now usable, fix an error in the batch hours in the - example, maxsize should not be '500,000' but '500000'. - - Add a sample configuration send-uucp.cf (based upon the work of - Marco d'Itri). - - * trunk/backends/Makefile, trunk/control/Makefile: Generate man - pages directly from perl-nocem.in, pgpverify.in and send-uucp.in. - -2007-08-19 iulius - - * trunk/control/perl-nocem.in: Free an unusable socket after the - timeout. Thanks to Christoph Biedl for the patch. Mention the - keyring in the documentation. - -2007-08-14 iulius - - * trunk/MANIFEST, trunk/samples, trunk/samples/Makefile, - trunk/samples/actsync.cfg, trunk/samples/actsync.ign, - trunk/samples/buffindexed.conf, - trunk/samples/buffindexed.conf.in, trunk/samples/cycbuff.conf, - trunk/samples/storage.conf, trunk/support/mkmanifest: Improve - some samples (especially documentation inside). buffindex.conf - has now a correct path to overview. Fix the sample cycbuff name - whose length was higher than 8 characters. - - * trunk/doc/pod/buffindexed.conf.pod, trunk/doc/pod/ckpasswd.pod, - trunk/doc/pod/ctlinnd.pod, trunk/doc/pod/cycbuff.conf.pod: - Improve POD documentation and correct typos. Add a note regarding - 2 GB cycbuffs. The length of a buffer name cannot be higher than - 8 characters. - - * trunk/backends/news2mail.in, trunk/control/controlbatch.in, - trunk/control/controlchan.in: Use @bindir@ and @sysconfdir@ - instead of @prefix@/bin and @prefix@/etc which may be different. - -2007-08-13 iulius - - * trunk/doc/pod/checklist.pod, trunk/doc/pod/install.pod: Improve - POD documentation for checklist and INSTALL. Amongst a lot of - other things: * typos; * mention the mail alias for usenet; * - make install should be done as root and maintenance work as news; - * manpages are in ~news/share/man (Autoconf changed the default - datarootdir); * SSL documentation (make cert, OpenSSL, - nnrpd/SSL); * a little more verbose checklist; * a section for - overview in INSTALL; * no need to run makedbz after a make - install; * clarify information about active; * new cron jobs - (rnews and flush the IP cache); * fix the URL to GNU make, and - add one for GnuPG; * improve the documentation for control - messages processing. - -2007-08-10 iulius - - * trunk/doc/pod/buffchan.pod, trunk/doc/pod/buffindexed.conf.pod, - trunk/doc/pod/storage.conf.pod: Typos. - - * trunk/Makefile.global.in, trunk/doc/pod/batcher.pod, - trunk/doc/pod/rnews.pod, trunk/frontends, - trunk/frontends/Makefile, trunk/m4/compress.m4, - trunk/scripts/inncheck.in, trunk/scripts/innshellvars.in, - trunk/scripts/innshellvars.pl.in, - trunk/scripts/innshellvars.tcl.in, trunk/support/mkmanifest: Add - support for bzip2-compressed batches (with bunbatch) and - documentation update. - - * trunk/frontends/feedone.c, trunk/innd/cc.c, trunk/innd/nc.c, - trunk/innfeed/imap_connection.c, trunk/innfeed/innlistener.c, - trunk/lib/confparse.c: Use x(v)asprintf instead of (v)asprintf in - previous commit. - -2007-08-09 iulius - - * trunk/lib/confparse.c: Missing va_end. - - * trunk/frontends/feedone.c, trunk/innd/cc.c, trunk/innd/nc.c, - trunk/innfeed/imap_connection.c, trunk/innfeed/innlistener.c, - trunk/lib/confparse.c: Use (v)asprintf instead of (v)snprintf. - - * trunk/backends/actsync.c: Use asprintf instead of snprintf twice. - Fix the count of ignored groups. - -2007-08-08 iulius - - * trunk/backends/actsync.c, trunk/doc/pod/actsync.pod: Add the <-w> - flag to actsync. It permits to pass a time out option to ctlinnd. - -2007-08-06 eagle - - * trunk/innd/chan.c: Helps to allocate the same amount of memory we - claim we're going to allocate. - -2007-08-06 iulius - - * trunk/scripts/innreport_inn.pm: Better innreport processing of - log files (especially for Python filtering and Cleanfeed - rejects). Add a NoCeM entry for perl-nocem. Only ncmspool was - previously parsed. - - * trunk/scripts/innreport_inn.pm: Update innreport to ignore the - new innd logstatus. - - * trunk/doc/pod/inn.conf.pod, trunk/include/inn/innconf.h, - trunk/innd/status.c, trunk/lib/innconf.c, - trunk/samples/inn.conf.in: Add a config directive (logstats) that - makes innd send its incoming stats to syslog, in the same format - as the channel closing message (and including a 'ME' line with - the totals), every seconds. - - It is indeed easier to process after than the inn_status.html - where the prettified sizes lack precision. - - Thanks to Fred Senault for the patch. - -2007-08-05 iulius - - * trunk/control/docheckgroups.in, - trunk/control/modules/checkgroups.pl, - trunk/control/modules/newgroup.pl, - trunk/control/modules/rmgroup.pl: docheckgroups now handles - wireformat articles (for using it manually from the spool) and - warns when there are missing or obsolete descriptions. - - Newgroup control messages for existing groups now change their - description. If a mail is sent to administrators, it reminds them - to update their newsgroups file. Now pretty print the newsgroups - file (from one to three tabulations between the name of the group - and its short description). Refuse the creation of to. groups. - - Checkgroups when there is nothing to change no longer result in - sending a blank mail to administrators. - - * trunk/control/perl-nocem.in, trunk/samples/newsfeeds.in: Improve - POD documentation for perl-nocem(8). Add a sample entry in - newsfeeds for the NoCeM channel feed. (Also fix @bindir@ for - controlchan in newsfeeds.) - -2007-08-04 iulius - - * trunk/control/perl-nocem.in: 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 Christoph Biedl for - the patch. - - * trunk/scripts/inncheck.in: Update newsfeeds and nntpsend allowed - flags. Fix the @libdir@ variable and permissions on some files. - -2007-08-02 iulius - - * trunk/doc/GPL, trunk/doc/history: Revert changes made by revision - 7625 for doc/history and doc/GPL. - - * trunk/MANIFEST, trunk/doc/man, trunk/doc/pod/Makefile, - trunk/doc/pod/active.pod, trunk/doc/pod/active.times.pod, - trunk/doc/pod/getlist.pod, trunk/doc/pod/newsgroups.pod: Add new - documentation for newsgroups(5). - - * trunk/backends/innbind.c, trunk/configure.ac, - trunk/doc/pod/innbind.pod, trunk/doc/pod/innd.pod, - trunk/doc/pod/install.pod: Allow innbind to bind port 563 - (NNTP/SSL for nnrpd). - - * trunk/backends/innxmit.c, trunk/backends/nntpget.c, - trunk/contrib/auth_pass.c, trunk/doc/GPL, trunk/doc/history, - trunk/expire/expire.c, trunk/frontends/ctlinnd.c, - trunk/frontends/inews.c, trunk/frontends/rnews.c, - trunk/innd/art.c, trunk/innd/cc.c, trunk/innd/icd.c, - trunk/innd/innd.c, trunk/innd/innd.h, trunk/innd/nc.c, - trunk/innd/ng.c, trunk/innfeed/connection.c, - trunk/innfeed/host.c, trunk/nnrpd/post.c, - trunk/scripts/inncheck.in, trunk/storage/timecaf/README.CAF: - Remove all occurrences of the control character FORM FEED - (Ctrl-L). - - * trunk/doc/pod/install.pod, trunk/doc/pod/storage.conf.pod, - trunk/samples/storage.conf: Mention the exactbool parameter in - INSTALL and the storage.conf sample. (And add the right - svn:keywords to the POD documentation.) - - * trunk/MANIFEST, trunk/doc/man, trunk/doc/man/storage.conf.5, - trunk/doc/pod/Makefile, trunk/doc/pod/storage.conf.pod: Convert - into POD and improve the storage.conf(5) man page. - - * trunk/doc/pod/active.times.pod, trunk/doc/pod/archive.pod, - trunk/doc/pod/auth_krb5.pod, trunk/doc/pod/auth_smb.pod: Improve - POD documentation and correct typos. - -2007-08-01 iulius - - * trunk/doc/pod/active.times.pod: convdate(1) can be useful here. - - * trunk/doc/pod/active.pod, trunk/doc/pod/active.times.pod, - trunk/doc/pod/install.pod: Improve POD documentation for - active(5) and active.times(5), adding more examples (a minimal - active file and an active.times line) and mentioning active.old. - The pseudogroup control.cancel is needed for INN to start. - - * trunk/tests/lib/hstrerror-t.c: Remove two unsuitable tests for - hstrerror.c. - - * trunk/doc/pod/buffindexed.conf.pod, trunk/doc/pod/checklist.pod, - trunk/doc/pod/ckpasswd.pod, trunk/doc/pod/grephistory.pod, - trunk/doc/pod/hook-python.pod, trunk/doc/pod/inn.conf.pod, - trunk/doc/pod/install.pod, trunk/doc/pod/libinnhist.pod, - trunk/doc/pod/news.pod, trunk/doc/pod/rc.news.pod: Fix errors and - warnings returned by podchecker(). - - * trunk/backends/actsync.c, trunk/doc/pod/actsync.pod, - trunk/samples/actsync.ign: Improve POD documentation for - actsync(8) and correct various typos. Add a new example (using - the type of a newsgroup) in actsync.ign sample. - - * trunk/tests/TESTS, trunk/tests/lib/hstrerror-t.c, - trunk/tests/overview/api-t.c, trunk/tests/overview/overview-t.c, - trunk/tests/overview/xref-t.c, trunk/tests/util/inndf.t: Add - existing lib/hstrerror.t and overview/overchan.t tests to the - list of tests to be executed. Fix two tests in lib/hstrerror.t - and add some clean up to other tests. - - * trunk/Makefile, trunk/Makefile.global.in, trunk/configure.ac: Fix - the path to OpenSSL binary (used by make cert). - - * trunk/configure.ac: Fix the setting of DO_PGPVERIFY (it was - always set to false at configure time). - - * trunk/BOOTSTRAP, trunk/CONTRIBUTORS, trunk/LICENSE, - trunk/configure.ac: Typos. - -2007-07-31 iulius - - * trunk/innd/rc.c: Group blocks in incoming.conf are now correctly - parsed and no longer cause segfaults. - - * trunk/MANIFEST, trunk/support/mkmanifest: Fix the pattern which - matches excluded files. - -2007-07-22 eagle - - * trunk/expire/makehistory.c: Revert a change that wasn't fully - tested yet. - - * trunk/expire/makehistory.c, trunk/innd/art.c, - trunk/storage/cnfs/cnfs.c, trunk/storage/interface.c, - trunk/storage/overview.c, trunk/storage/timecaf/timecaf.c, - trunk/storage/timehash/timehash.c, - trunk/storage/tradspool/tradspool.c: Initialize tokens before - returning them, even if we're setting the type to TOKEN_EMPTY. - - * trunk/m4/krb5.m4: Update for MIT Kerberos 1.6 and its - requirements for krb5support. Restructure the library probes to - reduce the number of checks required with Heimdal. - -2007-04-13 jeff - - * trunk/authprogs/radius.c: Switch xmalloc to xcalloc. Bug reported - by Erik Klavon. - -2007-02-10 eagle - - * trunk/innd/art.c, trunk/innd/innd.h, trunk/innd/nc.c: Improve - rejection logging. Catch several places where we rejected - articles without incrementing the rejected size count, uniformly - use ARTreject to increment the statistics, and count rejected - duplicates as part of the rejected article size since they're - also included in the count. - - Drop the unused third parameter to ARTreject. - - * trunk/lib/dbz.c: Use a temporary variable to be more careful - about signed to unsigned comparison with offsets. - - * trunk/lib/dbz.c: Don't use ints; we lose with large files on many - systems. Use xpwrite instead of pwrite to get complete writes. - Based on a patch by Chris Caputo. - - * trunk/storage/buffindexed/buffindexed.c: When calculating the - length of a buffer, cast the calculation to off_t since it may be - longer than unsigned long. Thanks, Kirill Berezin. - -2007-02-09 eagle - - * trunk/include/portable/getnameinfo.h: Add NI_MAXHOST and - NI_MAXSERV constants, which are part of the documented API. - - * trunk/include/inn/mmap.h, trunk/innd/icd.c, trunk/lib/dbz.c, - trunk/lib/mmap.c, trunk/storage/tradindexed/tdx-data.c, - trunk/storage/tradindexed/tdx-group.c: Rename msync_page to - inn_msync_page and use a #define wrapper with a different name - from the function so that we don't confuse the compiler. - -2007-01-16 eagle - - * trunk/innd/cc.c, trunk/lib/inndcomm.c: Fix incomplete checking of - packet sizes in the ctlinnd interface in the - no-Unix-domain-sockets case. This is a potential buffer overflow - in dead code since basically all systems INN builds on support - Unix domain sockets these days, but let's not have that code - sitting around anyway. - - Also track the buffer size more correctly in the client side of - this interface for the Unix domain socket case (we were thinking - it was smaller than it actually was). - - Thanks to zybadawg333@hushmail.com for the report. - -2006-12-19 eagle - - * trunk/samples/innreport.conf.in, trunk/scripts/innreport_inn.pm: - Fix a syntax error in the previous innreport work. Allow for both - the current logs with rejected size and the older logs without - it. Remove an extraneous column from the incoming volume report. - Fix a logic bug that caused none of the incoming sum variables to - be populated. - -2006-12-13 eagle - - * trunk/backends/innxbatch.c, trunk/backends/innxmit.c, - trunk/backends/nntpget.c, trunk/frontends/feedone.c, - trunk/frontends/inews.c, trunk/frontends/rnews.c, - trunk/include/nntp.h, trunk/innd/art.c, trunk/innd/nc.c, - trunk/innd/rc.c, trunk/innd/status.c, trunk/lib/clientlib.c, - trunk/lib/localopen.c, trunk/lib/remopen.c, trunk/lib/sendpass.c, - trunk/nnrpd/article.c, trunk/nnrpd/commands.c, - trunk/nnrpd/group.c, trunk/nnrpd/list.c, trunk/nnrpd/misc.c, - trunk/nnrpd/newnews.c, trunk/nnrpd/nnrpd.c, trunk/nnrpd/perl.c, - trunk/nnrpd/perm.c, trunk/nnrpd/post.c, trunk/nnrpd/python.c, - trunk/nnrpd/sasl.c, trunk/nnrpd/tls.c: Switch from the old - numeric constants for NNTP status codes to the new ones supplied - by include/inn/nntp.h. Patch from Adam J. Richter. - -2006-11-22 eagle - - * trunk/Makefile.global.in: Autoconf 2.60 likes to make some - variables relative to datarootdir, so set it as well; it will be - harmless with older versions of Autoconf. - - * trunk/CONTRIBUTORS, trunk/samples/innreport.conf.in, - trunk/scripts/innreport.in, trunk/scripts/innreport_inn.pm: Track - statistics separately for every connection in innreport and only - sum them together at the end of log processing. This allows us to - also track checkpoints and add checkpoint numbers to the totals - at the end of log processing if no intervening close was seen. - Based on work by Jim Dutton and Julien ÉLIE. - - * trunk/control/controlchan.in: Pring the newline and not $_, not - the other way around. - - * trunk/control/controlchan.in: When printing the blank line - between headers, don't also try to print $_; it's undefined at - that point. - - * trunk/include/inn/inndcomm.h, trunk/include/inn/ov.h, - trunk/include/inn/storage.h: Add header guards to headers that - were missing them. Patch from Adam J. Richter. - -2006-11-21 eagle - - * trunk/lib/network.c: The final argument to inet_pton should be a - pointer to an in6_addr, not to a sockaddr_in6. Fix network_source - for IPv6 bind addresses. - - * trunk/CONTRIBUTORS, trunk/MANIFEST, trunk/Makefile.global.in, - trunk/TODO, trunk/authprogs/Makefile, - trunk/authprogs/auth_krb5.c, trunk/authprogs/ckpasswd.c, - trunk/authprogs/domain.c, trunk/authprogs/ident.c, - trunk/authprogs/libauth.c, trunk/authprogs/radius.c, - trunk/backends/Makefile, trunk/backends/actsync.c, - trunk/backends/archive.c, trunk/backends/batcher.c, - trunk/backends/buffchan.c, trunk/backends/crosspost.c, - trunk/backends/cvtbatch.c, trunk/backends/filechan.c, - trunk/backends/innbind.c, trunk/backends/inndf.c, - trunk/backends/innxbatch.c, trunk/backends/innxmit.c, - trunk/backends/map.c, trunk/backends/nntpget.c, - trunk/backends/overchan.c, trunk/backends/shrinkfile.c, - trunk/configure.ac, trunk/contrib/respool.c, - trunk/doc/man/inndcomm.3, trunk/doc/man/libinn.3, - trunk/doc/man/libstorage.3, trunk/doc/pod/hacking.pod, - trunk/doc/pod/hook-perl.pod, trunk/doc/pod/uwildmat.pod, - trunk/expire/Makefile, trunk/expire/convdate.c, - trunk/expire/expire.c, trunk/expire/expireover.c, - trunk/expire/fastrm.c, trunk/expire/grephistory.c, - trunk/expire/makedbz.c, trunk/expire/makehistory.c, - trunk/expire/prunehistory.c, trunk/frontends/Makefile, - trunk/frontends/ctlinnd.c, trunk/frontends/feedone.c, - trunk/frontends/getlist.c, trunk/frontends/inews.c, - trunk/frontends/innconfval.c, trunk/frontends/ovdb_init.c, - trunk/frontends/ovdb_monitor.c, trunk/frontends/ovdb_server.c, - trunk/frontends/ovdb_stat.c, trunk/frontends/rnews.c, - trunk/frontends/sm.c, trunk/frontends/sys2nf.c, - trunk/history/Makefile, trunk/history/his.c, - trunk/history/hisv6/hisv6-private.h, trunk/history/hisv6/hisv6.c, - trunk/include, trunk/include/Makefile, trunk/include/dbz.h, - trunk/include/inn, trunk/include/inn/inndcomm.h, - trunk/include/inn/libinn.h, trunk/include/inn/options.h, - trunk/include/inn/ov.h, trunk/include/inn/overview.h, - trunk/include/inn/paths.h.in, trunk/include/inn/storage.h, - trunk/include/inndcomm.h, trunk/include/libinn.h, - trunk/include/ov.h, trunk/include/paths.h.in, - trunk/include/storage.h, trunk/innd/Makefile, trunk/innd/art.c, - trunk/innd/cc.c, trunk/innd/icd.c, trunk/innd/innd.c, - trunk/innd/innd.h, trunk/innd/keywords.c, trunk/innd/lc.c, - trunk/innd/nc.c, trunk/innd/newsfeeds.c, trunk/innd/ng.c, - trunk/innd/python.c, trunk/innd/rc.c, trunk/innd/status.c, - trunk/innd/tinyleaf.c, trunk/innd/util.c, trunk/innfeed/Makefile, - trunk/innfeed/article.c, trunk/innfeed/buffer.c, - trunk/innfeed/configfile.l, trunk/innfeed/configfile.y, - trunk/innfeed/connection.c, trunk/innfeed/endpoint.c, - trunk/innfeed/host.c, trunk/innfeed/imap_connection.c, - trunk/innfeed/innlistener.c, trunk/innfeed/main.c, - trunk/innfeed/misc.c, trunk/innfeed/tape.c, trunk/lib/Makefile, - trunk/lib/buffer.c, trunk/lib/cleanfrom.c, - trunk/lib/clientactive.c, trunk/lib/clientlib.c, - trunk/lib/concat.c, trunk/lib/conffile.c, trunk/lib/confparse.c, - trunk/lib/daemonize.c, trunk/lib/date.c, trunk/lib/dbz.c, - trunk/lib/defdist.c, trunk/lib/fdflags.c, trunk/lib/fdlimit.c, - trunk/lib/genid.c, trunk/lib/getfqdn.c, trunk/lib/getmodaddr.c, - trunk/lib/hash.c, trunk/lib/hashtab.c, trunk/lib/innconf.c, - trunk/lib/inndcomm.c, trunk/lib/localopen.c, - trunk/lib/lockfile.c, trunk/lib/makedir.c, trunk/lib/messages.c, - trunk/lib/network.c, trunk/lib/nntp.c, trunk/lib/perl.c, - trunk/lib/qio.c, trunk/lib/radix32.c, trunk/lib/readin.c, - trunk/lib/remopen.c, trunk/lib/reservedfd.c, - trunk/lib/resource.c, trunk/lib/sendarticle.c, - trunk/lib/sendpass.c, trunk/lib/timer.c, trunk/lib/tst.c, - trunk/lib/uwildmat.c, trunk/lib/vector.c, trunk/lib/wire.c, - trunk/lib/xfopena.c, trunk/lib/xmalloc.c, trunk/lib/xsignal.c, - trunk/lib/xwrite.c, trunk/m4/paths.m4, trunk/nnrpd/Makefile, - trunk/nnrpd/article.c, trunk/nnrpd/cache.c, trunk/nnrpd/cache.h, - trunk/nnrpd/commands.c, trunk/nnrpd/group.c, trunk/nnrpd/list.c, - trunk/nnrpd/newnews.c, trunk/nnrpd/nnrpd.c, trunk/nnrpd/nnrpd.h, - trunk/nnrpd/perl.c, trunk/nnrpd/perm.c, trunk/nnrpd/post.c, - trunk/storage/Makefile, trunk/storage/buffindexed/buffindexed.c, - trunk/storage/buffindexed/shmem.c, trunk/storage/cnfs/cnfs.c, - trunk/storage/expire.c, trunk/storage/interface.c, - trunk/storage/interface.h, trunk/storage/ov.c, - trunk/storage/ovdb/ovdb.c, trunk/storage/overdata.c, - trunk/storage/overview.c, trunk/storage/ovinterface.h, - trunk/storage/timecaf/caf.c, trunk/storage/timecaf/timecaf.c, - trunk/storage/timehash/timehash.c, - trunk/storage/tradindexed/tdx-cache.c, - trunk/storage/tradindexed/tdx-data.c, - trunk/storage/tradindexed/tdx-group.c, - trunk/storage/tradindexed/tdx-private.h, - trunk/storage/tradindexed/tdx-structure.h, - trunk/storage/tradindexed/tdx-util.c, - trunk/storage/tradindexed/tradindexed.c, - trunk/storage/tradindexed/tradindexed.h, - trunk/storage/tradspool/tradspool.c, trunk/storage/trash/trash.c, - trunk/support/mkmanifest, trunk/tests/innd/artparse-t.c, - trunk/tests/innd/chan-t.c, trunk/tests/lib/buffer-t.c, - trunk/tests/lib/concat-t.c, trunk/tests/lib/confparse-t.c, - trunk/tests/lib/date-t.c, trunk/tests/lib/fakewrite.c, - trunk/tests/lib/getnameinfo-t.c, trunk/tests/lib/hash-t.c, - trunk/tests/lib/hashtab-t.c, trunk/tests/lib/list-t.c, - trunk/tests/lib/md5-t.c, trunk/tests/lib/messages-t.c, - trunk/tests/lib/network-t.c, trunk/tests/lib/pread-t.c, - trunk/tests/lib/qio-t.c, trunk/tests/lib/setenv-t.c, - trunk/tests/lib/tst-t.c, trunk/tests/lib/uwildmat-t.c, - trunk/tests/lib/vector-t.c, trunk/tests/lib/wire-t.c, - trunk/tests/lib/xmalloc.c, trunk/tests/lib/xwrite-t.c, - trunk/tests/libtest.c, trunk/tests/overview/api-t.c, - trunk/tests/overview/overview-t.c, trunk/tests/overview/xref-t.c: - Move the remaining public headers in include into include/inn and - adjust all includes appropriately. Rename the macros defined in - paths.h to start with an INN prefix and adjust all code that uses - them. Clean up the remaining includes of config.h in public - headers and have them include inn/defines.h instead. Add a header - guard for paths.h. Stop installing non-public headers. - - Based on the corrections made by a script contributed by Adam J. - Richter. - - * trunk/contrib/README: Various updates for new files and verb - tense. Remove ninpaths, which is now included in the main part of - INN. Patch from Julien ÉLIE. - - * trunk/control/modules/newgroup.pl: Don't send mail if the action - is no change. Patch from Julien ÉLIE. - - * trunk/TODO: Note rnews error handling problem. - -2006-10-17 jeff - - * trunk/backends/actsync.c: Fix bug in which -T flag could not work - with the storage API. Reported by Mike Brudenell. - - The previous implementation required the on-disk representation - of the spool to check for the existence of a top-level hierarchy; - this was fundamentally insufficient at best, and broke completely - with the storage API. - - The new implementation uses a hash table to keep track of which - top-level hierarchies exist in the host1 active file, and thus - can detect new hierarchy creation (when -T is used). - -2006-09-11 eagle - - * trunk/tests/runtests.c: Work around a bad interaction between the - glibc headers and gcc 4.1 that causes the sys/wait.h W* macros to - fail to compile when run on an int member of a const struct. - - * trunk/TODO: Remove the link to Dave Barr's old INN site; that - page seems to have gone away. - -2006-09-08 eagle - - * trunk/innd/art.c: ARTparsebody can set the state to - CSgotlargearticle as well as CSgotarticle, so don't set - CSgotlargearticle back to CSeatarticle in ARTchecksize. When we - do that, we time out waiting for the remote host to send more - data, when it's actually finished. - - Thanks very much to Fred Senault for tracking this down. - -2006-09-07 eagle - - * trunk/samples/control.ctl: Update to new upstream version. - -2006-09-04 eagle - - * trunk/samples/control.ctl: Update to current upstream version. - -2006-08-30 eagle - - * trunk/doc/pod/control.ctl.pod: Clarify the differences between - verify-*, verify-*=mail, doit, and doit=mail and correct some - inaccuracies noted by Iulius. - - * trunk/control/controlchan.in: Handle wire format messages. - -2006-08-28 eagle - - * trunk/Makefile.global.in, trunk/authprogs/Makefile, - trunk/authprogs/ckpasswd.c, trunk/configure.ac, - trunk/m4/berkeleydb.m4: If compiling with BerkeleyDB, use its - ndbm compatibility layer for ckpasswd in preference to searching - for a traditional dbm library. Based on a proposal by Marco - d'Itri. - - * trunk/frontends/ovdb_stat.c: Support for BerkeleyDB 4.4. Patch - from Marco d'Itri. - - * trunk/doc/man/innfeed.conf.5, trunk/innfeed/host.c, - trunk/innfeed/innfeed.h, trunk/samples/innfeed.conf: Add a - force-ipv4 peer configuration option for innfeed that, if set, - tells innfeed to never attempt an IPv6 connection to that host. - Patch from Marco d'Itri. - - * trunk/samples/radius.conf: The RADIUS configuration has to be - wrapped in a server {} block. Thanks to Marco d'Itri for the - patch. - -2006-08-27 eagle - - * trunk/doc/man/innfeed.conf.5: Fix a mistaken backlog-limit-high - instead of backlog-limit-highwater and document - backlog-rotate-period. - -2006-08-26 eagle - - * trunk/control/perl-nocem.in: Update the documentation to use - --primary-keyring for importing keys and to drop - --allow-non-selfsigned-uid from the default options but describe - when it might be necessary. - - * trunk/TODO: Add the need to not remember rejections for - duplicated Xref headers. - - * trunk/control/perl-nocem.in: "error" is not a syslog level. - Replace with "err" instead. Reported by various people, including - Christoph Biedl. - - * trunk/innd/status.c: Report an error if we can't open the status - file. Reported by Bjoern A Zeeb. - - * trunk/Makefile.global.in: make warnings needs to run at -O2 or - some of the gcc errors don't turn up. - - * trunk/nnrpd/commands.c, trunk/nnrpd/list.c: Fix more places where - we weren't using ARTNUM for article numbers. - - * trunk/nnrpd/article.c, trunk/nnrpd/group.c, - trunk/nnrpd/newnews.c, trunk/nnrpd/nnrpd.h: Article numbers - should be stored in variables of type ARTNUM rather than ints. - Article numbers are unsigned, so print them appropriately. Work - around the broken overview API for right now. - - Thanks to Piotr Meyer for pointing out the problem. - - * trunk/nnrpd/nnrpd.c: Add a missing brace from the last commit. - - * trunk/nnrpd/nnrpd.c: Downcase the name of the connecting host - like we used to before the IPv6 restructuring. Thanks to Brandon - Hume for pointing out this problem. - - * trunk/nnrpd/group.c: Empty LISTGROUP replies need to be - terminated. Thanks to David Canzi for the patch. - - * trunk/scripts/innreport_inn.pm: Properly stop after finding a new - ctlinnd message. Make the -sm at the end of CNFS-sm optional, - since we no longer append it. Thanks to Christoph Biedl for the - patch. - - * trunk/support/fixconfig.in: Substitute @libdir@ as well, for - innreport.conf. Thanks, Christoph Biedl. - - * trunk/innd/chan.c: Reset the left offset properly in CHANresize. - Thanks, Christoph Biedl. - - * trunk/nnrpd/perm.c: A stupid data structure combined with C's - annoying type system and new, strict gcc produced warnings on - struct *** pointers converted to void ***. So destroy the type - system completely and pass them as void * and then convert them - later. - - This will get cleaned up when we replace the configuration parser - with something a bit saner. - - * trunk/samples/control.ctl: Update chi.* and the alt.* comment. - -2006-08-18 eagle - - * trunk/storage/timehash/timehash.c: BreakToken should now take a - time_t, since the ARTHANDLE struct uses the correct data type for - times. - -2006-08-12 eagle - - * trunk/doc/pod/ckpasswd.pod: Update URL for the Linux-PAM System - Administrator's Guide. - -2006-07-06 jeff - - * trunk/doc/pod/expire.ctl.pod: Typo - -2006-04-20 eagle - - * trunk/configure.ac: Unconditionally define _GNU_SOURCE on Linux - so that we can get asprintf as well as pread and pwrite. - -2006-04-18 eagle - - * trunk/lib/xmalloc.c: The data type is va_list, not va_arg. - - * trunk/include/clibrary.h: We only check for asprintf and provide - both asprintf and vasprintf if asprintf is missing. The chances - of having one and not the other are miniscule. - - * trunk/support/mkmanifest: Exclude the new asprintf test from the - distribution. - -2006-04-17 eagle - - * trunk/MANIFEST, trunk/configure.ac, trunk/include/clibrary.h, - trunk/include/libinn.h, trunk/lib/asprintf.c, - trunk/lib/xmalloc.c, trunk/tests/Makefile, trunk/tests/TESTS, - trunk/tests/lib, trunk/tests/lib/asprintf-t.c, - trunk/tests/lib/xmalloc.c, trunk/tests/lib/xmalloc.t: Add an - asprintf replacement for systems that don't have it. - -2006-04-15 eagle - - * trunk/doc/pod/hacking.pod: Document the required version of - svn2cl. - - * trunk/support/mkchangelog: Use new svn2cl options from 0.7. - -2006-04-10 eagle - - * trunk/Makefile, trunk/backends/Makefile, - trunk/doc/pod/install.pod: Add a make install-root target that - only installs the setuid innbind helper program. - - * trunk/support/mkchangelog: Add --reparagraph to generate nicer - ChangeLog files (only works with the current development version - of svn2cl). - - * trunk/site/Makefile: If creating a new history file, set the - ownership and mode appropriately. Reported by Ernst Boetsch. - -2006-04-02 eagle - - * trunk/tests/lib/snprintf-t.c: The %n test was written incorrectly - on AMD64. Thanks, Ernst Boetsch. - -2006-03-31 eagle - - * trunk/samples/newsfeeds.in: Clarify the comment about the ME - line. - -2006-03-27 eagle - - * trunk/LICENSE: Update copyright dates. - -2006-03-20 eagle - - * trunk/nnrpd/group.c: Return the correct 0 0 0 response to - LISTGROUP when the group is empty rather than returning no such - group. - - * trunk/MANIFEST, trunk/Makefile.global.in, trunk/configure.ac, - trunk/m4/cc-flags.m4, trunk/m4/perl.m4: Probe for -Wno-extra and - only include it in the Perl compiler flags if the compiler - supports it. This lets CURRENT build with gcc < 3.3 again (and - with non-gcc compilers; I really wasn't thinking through that - change). - -2006-03-19 eagle - - * trunk/lib/dbz.c: Various fixes from Heiko Schlichting for DBZTEST - mode: - - Remove the right file in RemoveDBZ and use concat instead of a - static buffer for filenames. Add a command-line option to set - nfswriter if desired and avoid a core dump from a missing - innconf. Fix debugging output from dbzclose and return checking - from dbzstore. Fix an off-by-one error in the line counter. Fix a - typo in usage. - - * trunk/samples/control.ctl: Remove abg.* entry. That maintainer is - no longer active. Update the sfnet.* key fingerprint. - -2006-01-26 jeff - - * trunk/doc/pod/inn.conf.pod: Typo fixes - -2005-12-25 eagle - - * trunk/Makefile: Fix the code to remove prerelease in - Makefile.global. - -2005-12-24 eagle - - * trunk/doc/pod/hacking.pod: Update the references section. - - * trunk/MANIFEST: Remove fixlog. - - * trunk/doc/pod/news.pod: Add changes for INN 2.4.3. - - * trunk/m4/libtool.m4, trunk/support/ltmain.sh: Update to the - latest Debian libtool. - - * trunk/support/config.guess, trunk/support/config.sub: Update - config.guess and config.sub to the latest Debian versions. - - * trunk/doc/pod/hacking.pod: Add some additional make release - instructions. - - * trunk/doc/pod/hacking.pod: Update make release instructions for - svn2cl. - - * trunk/support/fixlog, trunk/support/mkchangelog: Use svn2cl to - generate the ChangeLog for the release. - -2005-12-15 eagle - - * trunk/doc/pod/inn.conf.pod, trunk/lib/innconf.c, - trunk/nnrpd/line.c, trunk/storage/overdata.c: Actually, don't - impose a minimum size on maxartsize and localmaxartsize. That - isn't necessary. Just adjust the nnrpd code so that it doesn't - use localmaxartsize for the max buffer size without checking it - first. - -2005-12-12 eagle - - * trunk/lib/innconf.c: Include inn/nntp.h for NNTP_STRLEN. - - * trunk/expire/makehistory.c: If there are multiple Xref headers in - an article, use the last one to get article data. This works - around a combination of a bug in other servers that caused them - to add multiple Xref headers and a bug in INN that caused it to - accept such articles and just add yet another Xref header. - - * trunk/backends/send-uucp.in, trunk/configure.ac, - trunk/scripts/innshellvars.in, trunk/scripts/innshellvars.pl.in, - trunk/scripts/innshellvars.tcl.in: Search the user's path for uux - at configure time and encode the path in innshellvars, using that - path in send-uucp, since apparently there are different uux's - with different options and the administrator needs a way to be - sure that the right one is used. - - * trunk/TODO: Add a note about a needed improvement to the Perl - authentication hooks. - - * trunk/TODO: Kerberos authentication needs some attention. - - * trunk/authprogs/auth_krb5.c, trunk/m4/krb5.m4: Check for - et/com_err.h before com_err.h; that's where Linux appears to be - moving it to when com_err.h comes from e2fsprogs. - - * trunk/TODO: It would be nice to allow deleting headers in the - Perl filtering code in nnrpd. - - * trunk/MANIFEST, trunk/doc/man, trunk/doc/man/Makefile, - trunk/doc/man/pullnews.8, trunk/doc/pod/Makefile, - trunk/doc/pod/pullnews.pod: Convert the pullnews documentation to - POD. Document the ability to specify a username and password in - the configuration file. - -2005-12-11 eagle - - * trunk/include/inn/nntp.h, trunk/lib/nntp.c: Add an nntp_write() - function that sends a verbatim block of data. - - * trunk/doc/pod/inn.conf.pod, trunk/lib/innconf.c: Sanity-check the - settings of maxartsize and localmaxartsize. (Setting the latter - too low causes bizarre behavior in nnrpd.) - - * trunk/doc/pod/inn.conf.pod, trunk/nnrpd/line.c: Allow - localmaxartsize of 0 in nnrpd and update the documentation for - both it and maxartsize to document the 0 setting and note that, - if set to zero, large articles can crash innd or nnrpd by running - them out of system memory. - - * trunk/include/inn/nntp.h, trunk/lib/nntp.c: Allow maxsize to be - 0, indicating that article size should be limited only by - available memory. Grow the buffer only 1MB at a time if it gets - to be 1MB or larger in size. - - * trunk/nnrpd/post.c: Yet *another* problem checking permission to - post to moderated groups. We were clearing the error flag right - after setting it. Reported by Jens Schlegel. - - * trunk/samples/moderators: Update nl.* moderation forwarding. - - * trunk/TODO, trunk/scripts/innstat.in: Run inndf -no in innstat if - we're using the buffindexed overview method. Patch from Andrey - Yakovlev. - - * trunk/CONTRIBUTORS, trunk/doc/pod/news.pod: Document improvements - by Thomas Parmelan to send-uucp. - - * trunk/backends/send-uucp.in: If there is a stray .work file, - append it to the new .work file after flushing and renaming, - rather than before. Patch from Thomas Parmelan. - - * trunk/backends/send-uucp.in: Add a way to specify the funnel or - exploder to flush for a site managed via one. Patch from Thomas - Parmelan. - - * trunk/TODO: Note that CNFS is insufficiently robust. - - * trunk/innd/rc.c: Close the socket for ident callbacks on errors. - - * trunk/doc/pod/hook-perl.pod, trunk/doc/pod/hook-python.pod, - trunk/doc/pod/news.pod, trunk/innd/cc.c, trunk/innd/innd.h, - trunk/innd/perl.c, trunk/innd/python.c: Call filter_mode before - shutdown or xexec with "shutdown" as a new possible mode value. - Add OMshutdown for this purpose and handle it in a few case - statements, even though it will never be seen there. - - * trunk/nnrpd/post.c: Remove write-only WasMailed variable. - - * trunk/samples/innreport.conf.in, trunk/scripts/innreport_inn.pm: - Report on the Python filter the same as we do on the Perl filter. - - * trunk/samples/control.ctl: Resync with upstream version. - -2005-10-09 eagle - - * trunk/scripts/innshellvars.in, trunk/scripts/innshellvars.pl.in, - trunk/scripts/innshellvars.tcl.in: configure now sets - PATH_GETFTP, not GETFTP. - - * trunk/frontends/rnews.c: Burn three file descriptors if running - privileged to avoid a strange situation where starting rnews with - closed file descriptors could force error messages to be written - to unexpected places, such as network streams or article files. - Only bother if running privileged; otherwise, the user is just - creating a bizarre bug by doing strange things, which isn't worth - worrying about. - - * trunk/doc/pod/fastrm.pod: Warn that fastrm doesn't care about - security. - - * trunk/innfeed/misc.c: Fix format string vulnerability in - logOrPrint (which is only used for configuration data, so not an - exploitable hole). - - * trunk/innd/nc.c: Fix an oddity that I found a while back when - auditing uses of the buffer code in innd but never returned to. - If NCwritereply sends its reply immediately but can only send a - part of it, the count of bytes remaining to send wasn't - decremented. We could then send random junk at the end of the - buffer to the peer later on. - - * trunk/innd/cc.c: Fix an input validation bug that could allow a - stack overwrite on a system that didn't support Unix domain - sockets (do any of those exist any more?). - - * trunk/innd/cc.c, trunk/lib/inndcomm.c: Increase the send and - receive buffer sizes of the Unix domain socket used by the - control channel, allowing longer replies on platforms with a low - default buffer size. Patch from MKI. - - * trunk/storage/cnfs/cnfs.c, trunk/storage/timecaf/timecaf.c, - trunk/storage/timehash/timehash.c, - trunk/storage/tradspool/tradspool.c: When retrieving an entire - article, use MADV_WILLNEED rather than MADV_SEQUENTIAL or no - madvise hint at all. The performance is apparently noticably - better per MKI. - - * trunk/innd/art.c: Correctly detect headers duplicated an odd - number of times (3 copies, 5 copies, etc.) and distinguish - between missing and duplicated headers when reporting errors. - - * trunk/samples/control.ctl: Update to latest upstream version. - - * trunk/TODO: Add detection and fixing of hash chain loops of - length longer than one in tradindexed. - - * trunk/scripts/innshellvars.in, trunk/scripts/innshellvars.pl.in, - trunk/scripts/innshellvars.tcl.in: Set HOME to pathnews. This - should resolve Debian Bug#307765. - - * trunk/scripts/innshellvars.pl.in: Avoid a warning if PATH is not - defined in the environment. - -2005-10-08 eagle - - * trunk/lib/snprintf.c, trunk/tests/lib/messages-t.c, - trunk/tests/lib/tst-t.c: Clean up test suite warnings for gcc - 4.0. - - * trunk/lib/getaddrinfo.c: glibc 2.3.5 uses flag values up to - 0x0400 for getaddrinfo, which was causing tests to fail since the - value of AI_NUMERICSERV was out of bounds. Use a broader - allowable range for flag values when testing on a platform that - has getaddrinfo. - -2005-08-26 eagle - - * trunk/Makefile.global.in, trunk/authprogs/smbval/rfcnb-priv.h, - trunk/backends/ninpaths.c, trunk/innd/rc.c, trunk/nnrpd/perl.c, - trunk/nnrpd/post.c, trunk/nnrpd/post.h, trunk/nnrpd/sasl.c, - trunk/storage/cnfs/cnfs.c: Clean up gcc 4.0 warnings, which were - causing snapshot generation to fail. - - * trunk/innfeed/innfeed.h, trunk/innfeed/misc.c: Remove the - CORE_DIRECTORY define in innfeed.h. I'm eventually going to clean - up all of these unused side features in innfeed, but this one in - particular is causing gcc 4.0 warnings (not legitimate warnings, - but it's not worth fighting with gcc over this). - - * trunk/doc/man: Ignore overchan.8. - - * trunk/lib/hash.c: Cast the hash to unsigned char before passing - to inn_encode_hex. - -2005-07-31 eagle - - * trunk/samples/control.ctl: Update to the current ftp.isc.org - version. - -2005-07-18 eagle - - * trunk/doc/pod/nnrpd.pod: -p instead of -P to specify a port in - the default port description. - -2005-07-09 eagle - - * trunk/TODO: Add the TLS rewrite, update the status of the - overview API conversion. - - * trunk/innfeed/main.c, trunk/innfeed/misc.c, trunk/innfeed/misc.h, - trunk/innfeed/tape.c: Use concatpath instead of buildFilename. - - * trunk/lib/concat.c, trunk/tests/lib/concat-t.c: Let the first - argument to concatpath be NULL. - -2005-07-05 eagle - - * trunk/innd/art.c: When logipaddr is set, we also need the Path - header in order to be able to log a reject. - - * trunk/MANIFEST, trunk/include/inn/overview.h, trunk/innd/art.c, - trunk/storage/buffindexed/buffindexed.c, - trunk/storage/buffindexed/buffindexed.h, trunk/storage/ov.c, - trunk/storage/ovdb/ovdb.c, trunk/storage/ovdb/ovdb.h, - trunk/storage/overview.c, trunk/storage/ovinterface.h, - trunk/storage/tradindexed/tdx-data.c, - trunk/storage/tradindexed/tdx-private.h, - trunk/storage/tradindexed/tradindexed.c, - trunk/storage/tradindexed/tradindexed.h, - trunk/tests/data/articles/xref, trunk/tests/overview/api-t.c, - trunk/tests/overview/xref-t.c: Add an overview_cancel (which - takes group and article number) and overview_cancel_xref (which - takes a token and retrieves the Xref header from the article to - find groups and article numbers) interfaces to the new overview - API. - - Change the underlying cancel method of overview backends to take - a group and article number rather than a token, since an overview - backend is never going to know what to do with a token. - - Modify OVcancel, copying the new overview_cancel_xref - implementation, to retrieve the article and parse the Xref header - to find groups and article numbers and then call the cancel - method for each pair. - - Implement the new cancel method for tradindexed. buffindexed and - ovdb still have stub implementations at this point. - - Modify innd to cancel the overview data for an article whenever - cancelling an article. - - * trunk/innfeed/main.c: Log the configured bind address to - innfeed.status, since we had one request for it. - - * trunk/TODO: Note that actsyncd's ftp mode needs to support - debugging. - - * trunk/doc/pod/readers.conf.pod: Document that at least one of - res, auth, perl_auth, python_auth, or default should be set in - any auth group. - - * trunk/innfeed/connection.c: In all of the response handlers that - idle the connection if there's nothing left in the queue, don't - idle if there are writes pending. The cases where this could - possibly trigger are obscure and involve the remote peer doing - evil things, but the rest of the code handles it correctly and we - were still seeing assertion failures, indicating that evil may be - happening. - - In issueStreamingCommands, make certain that there are no pending - writes before idling the connection. - - Add the code to ihaveBodyDone that was already in - commandWriteDone to idle the connection if the queue is empty in - case we'd had to defer the idle in the response handler due to an - unfinished write. - - Whenever doSomeWrites is called with writes still pending, add a - work callback to do the write at the next opportunity. This - should eliminate a temporary connection deadlock state on - flushing, where the response to the IHAVE body arrived before we - finished writing it. Before, doSomeWrites would have failed to - call issueQUIT because writes were still pending, and then after - the writes complete, there's no code to go back and issue it - until the read timeout expires. - -2005-07-04 eagle - - * trunk/doc/man/innfeed.1, trunk/doc/pod/ctlinnd.pod: Document - ctlinnd flush as the recommended way of cleanly shutting down and - respawning innfeed. - - * trunk/doc/man/innfeed.conf.5: Clarify that the SIGHUP re-read and - bindaddress changes won't affect existing connections. - - * trunk/TODO: Add innfeed's bindaddress as a peer block parameter. - - * trunk/TODO: Remove various things that have either been done or - that no longer look like good ideas. - - * trunk/MANIFEST, trunk/doc/man/makeactive.8: This was just a "this - command is obsolete" placeholder that can go now. - - * trunk/MANIFEST, trunk/doc/man/overchan.8, trunk/doc/pod/Makefile, - trunk/doc/pod/overchan.pod: Convert the overchan man page to POD. - - * trunk/MANIFEST, trunk/backends/overchan.c, - trunk/tests/overview/overchan.t: Convert overchan to the new - overview API and clean up the code quite a bit in the process. Be - more careful about parsing the input data. Add a basic test - suite. - - * trunk/tests/data/etc/inn-tdx.conf: Fix the initial comment and - set useoverchan since we're using this config to test overchan as - well. - - * trunk/doc/pod/tdx-util.pod, trunk/storage/tradindexed/tdx-util.c: - Add some more functions that are useful for the test suite and - may be useful in practice as well. - - -c creates a new newsgroup in the overview database. -f has also - been added to specify the group flag. - - -O dumps the database in the same format as overchan expects for - input, rather than in the format expected by a news client the - way that -o does. - - Also, don't try to setuid to news if INN_TESTSUITE is set in the - environment. - - * trunk/tests/data/etc/inn-bfx.conf: Fix the initial comment. - -2005-07-03 eagle - - * trunk/backends/archive.c, trunk/backends/batcher.c, - trunk/backends/innxmit.c, trunk/frontends/rnews.c, - trunk/frontends/sm.c, trunk/include/storage.h, trunk/innd/perl.c, - trunk/innd/python.c, trunk/storage/interface.c, - trunk/storage/tradindexed/tdx-util.c, - trunk/storage/tradspool/tradspool.c, - trunk/tests/innd/artparse-t.c: Use wire_to_native and - wire_from_native instead of FromWireFmt and ToWireFmt everywhere. - - * trunk/frontends/rnews.c: Maintain and pass around the length of - the article and never run strlen on the article. This should fix - the truncationproblems rnews was having with articles that - contained nul characters. - - * trunk/MANIFEST, trunk/include/inn/wire.h, trunk/lib/wire.c, - trunk/tests/data/articles/7, trunk/tests/data/articles/wire-7, - trunk/tests/lib/wire-t.c: Add wire_from_native and wire_to_native - conversion functions to libinn that will replace the FromWireFmt - and ToWireFmt functions currently in libstorage. - - * trunk/tests/authprogs/ident-t.c, trunk/tests/lib/network-t.c: Fix - a few warnings that showed up when building without IPv6 support. - - * trunk/frontends/rnews.c: Make unknown NNTP replies equivalent to - failure to connect (resulting in a deferral) instead of an - article rejection. - - * trunk/frontends/rnews.c, trunk/include/inn/options.h: Remove - unneeded variables from rnews, change #if 0 code around short - article reads into a comment, and remove DO_RNEWSLOCALCONNECT - completely, making it unconditional. There's no reason not to do - this any more. - - * trunk/frontends/rnews.c: When we fail to feed articles to the - server when unspooling with -U, don't move the articles off into - the bad directory. Just leave them in place in the spool - directory. Articles that should be rejected aren't handled as - failures and the right thing already happens with them, and - retrying later is exactly what we want for deferrals and 400 - errors. - - * trunk/control/pgpverify.in: Import upstream version 1.27, which - falls back on pubring.gpg in the default keyring location if - trustedkeys.gpg isn't present. - - * trunk/TODO: Remove the CVS to Subversion conversion and some of - the code reorganization projects that have already been done. - - * trunk/doc/pod/news.pod: Add missing changes for 2.3.1. - - * trunk/doc/pod/news.pod: Missing =over as well. *sigh*. - - * trunk/doc/pod/news.pod: Missing =back. - - * trunk/doc/pod/news.pod: Merge in all of the changes to stable - branches so that the NEWS file is actually comprehensive. Remove - entries that were duplicated between major version releases and - stable releases now that everything is in the same place. Remove - the unhelpful notes that all stable fixes have been included in - new major releases (they didn't say what those changes were). - Identify 2.5, 2.4, and 2.3 as 2.5.0, 2.4.0, and 2.3.0 - respectively, since that's what we actually called them. - -2005-07-02 eagle - - * trunk/innd/art.c: NULL-terminate GroupPointers when replacing it - while doing Xref slaving. Patch from Chris Caputo. - - * trunk, trunk/support/mkmanifest: Ignore snapshot.log. - - * trunk/lib/network.c: Move a variable declaration that's only used - for IPv6 support. - - * trunk/Makefile, trunk/authprogs/Makefile, - trunk/backends/Makefile, trunk/contrib/Makefile, - trunk/control/Makefile, trunk/doc/Makefile, - trunk/doc/pod/Makefile, trunk/expire/Makefile, - trunk/frontends/Makefile, trunk/history/Makefile, - trunk/include/Makefile, trunk/innd/Makefile, - trunk/innfeed/Makefile, trunk/lib/Makefile, trunk/nnrpd/Makefile, - trunk/samples/Makefile, trunk/scripts/Makefile, - trunk/site/Makefile, trunk/storage/Makefile, - trunk/tests/Makefile: Build system fixes around maintclean and - generated files. The all target will now also update any - POD-generated files or other files that ship with the - distribution, and we'll rely on the timestamps created by the - make dist process to not cause pod2man to run for regular users. - maintclean now removes every generated file in the tree and - returns everything to a virgin svn checkout, checked with svn - status --no-ignore. Fix error detection on make distclean as - well. - -2005-06-20 eagle - - * trunk/nnrpd/nnrpd.h: ARTreadschema is no more. - - * trunk/storage/overdata.c: Free resources properly in - overview_extra_fields. Patch from Chris Caputo. - - * trunk/history/hisv6/hisv6.c: Pass HIS_CREAT to hisv6_new when - opening it for expiration. This fixes expire failing to create a - new history file and also addresses a long- standing problem - where rerunning expire after a failure would cause tons of - duplicate history lines. Patch from Chris Caputo. - -2005-06-13 eagle - - * trunk/MANIFEST, trunk/include/inn/overview.h, - trunk/storage/overview.c, trunk/support/mkmanifest, - trunk/tests/Makefile, trunk/tests/TESTS, - trunk/tests/data/overview/xref, trunk/tests/overview, - trunk/tests/overview/xref-t.c: Add a function to the new overview - API to store overview data based on an Xref string (but require - that the string be passed separately, unlike the existing API). - - * trunk/tests/lib/network-t.c: Fix some bogosities with test - numbering. - - * trunk/tests/overview/api-t.c, trunk/tests/overview/overview-t.c: - Remove code for finding the right working directory that's no - longer relevant. - - * trunk/tests/overview/api-t.c: Update comments to be a bit more - accurate. - - * trunk/MANIFEST, trunk/support/mkmanifest: Manifest updates for - recent additions, removals, and moves. - - * trunk/MANIFEST, trunk/innd/README: Add the beginnings of innd - internals documentation. - - * trunk/nnrpd/perm.c: Call network_addr_match instead of doing the - work directly. Also take advantage of uwildmat's internal support - of !. - - * trunk/include/inn/network.h, trunk/lib/network.c, - trunk/tests/lib/network-t.c: Add network_addr_match to compare - the textual representations of two addresses, taking into account - an optional mask. This will be used in nnrpd for permission - matching. - -2005-06-12 eagle - - * trunk/include/inn/network.h, trunk/innd/chan.c, trunk/innd/rc.c, - trunk/innd/status.c, trunk/lib/network.c, trunk/nnrpd/nnrpd.c, - trunk/tests/lib/network-t.c: Rename network_sprint_sockaddr to - network_sockaddr_sprint for general consistency. - - * trunk/include/libinn.h, trunk/lib/Makefile, trunk/lib/sockaddr.c: - Remove sprint_sockaddr and make_sin; they're no longer used. - - * trunk/nnrpd/nnrpd.c: Completely rewrite the code that gets the - client's and server's identity on connection. Use getnameinfo - unconditionally and use the new network_sprint_sockaddr, - network_sockaddr_port, and network_sockaddr_equal functions to - make the code far easier to read. - - Do some conversion of syslog calls to notice/warn calls too while - I'm here. - - * trunk/innd/rc.c, trunk/innd/status.c: Use network_sprint_sockaddr - instead of sprint_sockaddr and avoid make_sin in favor of just - using getaddrinfo. It's a bit more cumbersome, but it saves - creating another utility function. - - * trunk/include/inn/network.h, trunk/lib/network.c, - trunk/tests/lib/network-t.c: Add network_sockaddr_port to get the - port number from a sockaddr. - - * trunk/include/portable/socket.h: If configure set - HAVE_BROKEN_IN6_ARE_ADDR_EQUAL, undefine the system - IN6_ARE_ADDR_EQUAL macro and replace it with one that works. - - * trunk/include/inn/network.h, trunk/lib/network.c, - trunk/tests/lib/network-t.c: Add network_sockaddr_equal to - compare the addresses of two sockaddrs, handling such thing as - IPv6 addresses that are mapped IPv4. This will be used in nnrpd - when checking reverse name resolution. - - * trunk/MANIFEST, trunk/innd/chan.c, trunk/innd/innd.h, - trunk/innd/nc.c, trunk/innd/rc.c, trunk/tests/Makefile, - trunk/tests/TESTS, trunk/tests/innd, - trunk/tests/innd/artparse-t.c, trunk/tests/innd/chan-t.c: Go - through innd/chan.c thoroughly, since I needed to take some time - to learn exactly how it worked anyway. Reformat all of the code, - collect all of the global variables into a single struct, and - break apart some excessively long functions into multiple - functions. The code doesn't wander way off to the side any more. - - In the process, clean up and simplify a few things. Resizing the - input buffer is now a separate function rather than being - repeated three times. There is now a single facility for handling - prioritized channels that is used for the control channel and the - remconn channels. The remconn channel is always prioritized now; - there is no longer a hidden #define that can be changed. Always - process at least four channels, instead of three, so that the - control channel and two remconn channels cannot starve the rest - of innd. - - Add a fairly simple test suite for the channel handling portion - of innd, as a sanity check and a base to expand upon later. - - * trunk/lib/network.c, trunk/tests/lib/network-t.c: Teach - network_sprint_sockaddr to deal with IPv6 mapped IPv4 addresses. - - * trunk/include/inn/network.h, trunk/lib/network.c, - trunk/tests/lib/network-t.c: Add a network_sprint_sockaddr - function that's thread-safe and uses inet_ntop and will - eventually replace sprint_sockaddr. - - * trunk/MANIFEST, trunk/configure.ac, - trunk/include/portable/socket.h, trunk/lib/inet_ntop.c, - trunk/tests/Makefile, trunk/tests/TESTS, trunk/tests/lib, - trunk/tests/lib/inet_ntop-t.c: Add a replacement inet_ntop - function for platforms that don't have it. - -2005-06-11 eagle - - * trunk/innfeed/connection.c, trunk/innfeed/host.c: Let getaddrinfo - fill in the port number for outgoing connections, and use - network_client_create to deal with the source address. Removes - all the code conditional on HAVE_INET6 in innfeed; IPv4 and IPv6 - now use the same code path everywhere. - - * trunk/include/inn/network.h, trunk/lib/network.c, - trunk/tests/lib/network-t.c: On second thought, rather than - providing a network_connect_sockaddr, what's really needed is a - socket creation function that does all the setup (including - setting the bind address as needed) and then returns the file - descriptor so that the caller can do their own non-blocking - connect. Change the implementation to do that instead. - - * trunk/include/inn/network.h, trunk/lib/network.c, - trunk/tests/lib/network-t.c: Add network_connect_sockaddr, which - will be used in innfeed since it wants fine-grained control over - each connection attempt for hosts with multiple IP addresses. - - * trunk/doc/Makefile, trunk/doc/history-innfeed, - trunk/innfeed/README: The innfeed README is very out of date at - this point, but it still contains useful historical information. - Move it into the doc directory and install it as innfeed-history - in doc. - - * trunk/doc/pod/news.pod, trunk/nnrpd/post.c: strippath now strips - the entire user-supplied Path rather than retaining the last - component. - - * trunk/Makefile, trunk/Makefile.global.in, - trunk/support/mkversion: Use "prerelease" for direct checkouts - rather than "CVS prerelease" now that we're no longer using CVS. - - * trunk/MANIFEST, trunk/innfeed/Makefile, - trunk/innfeed/innfeed-convcfg.in: The configuration file that - innfeed-convcfg used to convert is now so old that this script - isn't relevant to anything. - - * trunk/innfeed/Makefile, trunk/innfeed/host.c, - trunk/innfeed/main.c, trunk/scripts/innreport_inn.pm: Convert - innfeed to use the standard inn/version.h file rather than - building its own separate version string. - - * trunk/innfeed/Makefile: Don't remove the bison parser on make - distclean. - - * trunk/nnrpd/perm.c: Add back in the variables used with DO_PERL - and DO_PYTHON, but only in the blocks those definitions make - active. - - * trunk/MANIFEST, trunk/Makefile, trunk/support/mkmanifest, - trunk/support/mksnapshot: Add support/mksnapshot to generate a - snapshot of the current tree after making sure it compiles and - passes the automated test suite. - - * trunk/MANIFEST: Include the generated method interfaces in the - distribution. - - * trunk/innfeed/configfile.l: Prototype various accessor functions - generated by flex to avoid warnings. - - * trunk/MANIFEST: Include the pre-built innfeed config parser in - the distribution. - - * trunk/nnrpd/perm.c: Missed some unused variables in the external - authenticator rewrite. - - * trunk/lib/dbz.c: Cast file length to off_t before comparing to - st_size in case off_t is larger. - - * trunk/.cvsignore, trunk/authprogs/.cvsignore, - trunk/authprogs/smbval/.cvsignore, trunk/backends/.cvsignore, - trunk/contrib/.cvsignore, trunk/control/.cvsignore, - trunk/doc/man/.cvsignore, trunk/expire/.cvsignore, - trunk/frontends/.cvsignore, trunk/history/.cvsignore, - trunk/history/hisv6/.cvsignore, trunk/include/.cvsignore, - trunk/include/inn/.cvsignore, trunk/innd/.cvsignore, - trunk/innfeed/.cvsignore, trunk/lib/.cvsignore, - trunk/nnrpd/.cvsignore, trunk/samples/.cvsignore, - trunk/scripts/.cvsignore, trunk/site/.cvsignore, - trunk/storage/.cvsignore, trunk/storage/buffindexed/.cvsignore, - trunk/storage/cnfs/.cvsignore, trunk/storage/ovdb/.cvsignore, - trunk/storage/timecaf/.cvsignore, - trunk/storage/timehash/.cvsignore, - trunk/storage/tradindexed/.cvsignore, - trunk/storage/tradspool/.cvsignore, - trunk/storage/trash/.cvsignore, trunk/support/.cvsignore, - trunk/tests/.cvsignore, trunk/tests/authprogs/.cvsignore, - trunk/tests/clients/.cvsignore, trunk/tests/innd/.cvsignore, - trunk/tests/lib/.cvsignore, trunk/tests/nnrpd/.cvsignore, - trunk/tests/overview/.cvsignore, trunk/tests/util/.cvsignore: We - don't need .cvsignore files any more. - - * trunk/MANIFEST: Fix remaining missing files and other - inconsistencies. - - * trunk/authprogs/pam.conf.example, trunk/doc/man, - trunk/doc/man/actsyncd.8, trunk/doc/man/parsedate.3, - trunk/doc/man/pgpverify.8, trunk/doc/man/putman.sh, - trunk/doc/pod/Makefile, trunk/doc/pod/sasl.conf.pod, - trunk/lib/gettime.c, trunk/lib/version.c, - trunk/nnrpd/sasl_config.c, trunk/nnrpd/sasl_config.h, - trunk/samples/sasl.conf.in, trunk/tests/authprogs/passwd, - trunk/tests/lib/articles, trunk/tests/lib/config, - trunk/tests/overview/data, trunk/tests/overview/etc, - trunk/tests/overview/munge-data, trunk/tests/storage/articles, - trunk/tests/storage/db, trunk/tests/storage/etc, - trunk/tests/storage/overview, trunk/tests/util/upgrade: Remove a - bunch of files that had previously been removed in CVS, but which - cvs2svn had gotten confused about. - - * trunk/support/mkmanifest: Redo how this works. Add a list of all - the generated files that should be ignored when creating the - manifest, rather than parsing .cvsignore files, since the list of - ignored files for the manifest doesn't match the list of files - the version control system ignores. I'm not positive this will be - the easiest system to maintain going forward -- we might have to - invert the sense of the check -- but it works for now. - -2005-06-08 eagle - - * trunk/Makefile: Add a snapshot target that will be used by the - new snapshot script. - - * trunk, trunk/doc, trunk/doc/man, trunk/history, trunk/innfeed, - trunk/storage: Ignore the generated files that are no longer in - Subversion. - - * trunk/doc/man/send-uucp.8: Another generated man page. - - * trunk/innfeed/config_l.c: Remove generated file. - - * trunk/include/Makefile: Add an empty bootstrap target. - - * trunk/Makefile: CLEANDIRS doesn't need to contain include twice. - - * trunk/BOOTSTRAP, trunk/HACKING, trunk/INSTALL, trunk/Makefile, - trunk/NEWS, trunk/README, trunk/authprogs/Makefile, - trunk/backends/Makefile, trunk/control/Makefile, - trunk/doc/Makefile, trunk/doc/checklist, trunk/doc/external-auth, - trunk/doc/hook-perl, trunk/doc/hook-python, - trunk/doc/man/active.5, trunk/doc/man/active.times.5, - trunk/doc/man/actsync.8, trunk/doc/man/archive.8, - trunk/doc/man/auth_krb5.8, trunk/doc/man/auth_smb.8, - trunk/doc/man/batcher.8, trunk/doc/man/buffchan.8, - trunk/doc/man/buffindexed.conf.5, trunk/doc/man/ckpasswd.8, - trunk/doc/man/control.ctl.5, trunk/doc/man/convdate.1, - trunk/doc/man/ctlinnd.8, trunk/doc/man/cycbuff.conf.5, - trunk/doc/man/distrib.pats.5, trunk/doc/man/domain.8, - trunk/doc/man/expire.ctl.5, trunk/doc/man/expireover.8, - trunk/doc/man/fastrm.1, trunk/doc/man/getlist.1, - trunk/doc/man/grephistory.1, trunk/doc/man/ident.8, - trunk/doc/man/inews.1, trunk/doc/man/inn.conf.5, - trunk/doc/man/innbind.8, trunk/doc/man/innconfval.1, - trunk/doc/man/innd.8, trunk/doc/man/inndf.8, - trunk/doc/man/innmail.1, trunk/doc/man/innupgrade.8, - trunk/doc/man/libauth.3, trunk/doc/man/libinnhist.3, - trunk/doc/man/list.3, trunk/doc/man/mailpost.8, - trunk/doc/man/makehistory.8, trunk/doc/man/moderators.5, - trunk/doc/man/motd.news.5, trunk/doc/man/newsfeeds.5, - trunk/doc/man/ninpaths.8, trunk/doc/man/nnrpd.8, - trunk/doc/man/ovdb.5, trunk/doc/man/ovdb_init.8, - trunk/doc/man/ovdb_monitor.8, trunk/doc/man/ovdb_server.8, - trunk/doc/man/ovdb_stat.8, trunk/doc/man/passwd.nntp.5, - trunk/doc/man/perl-nocem.8, trunk/doc/man/pgpverify.1, - trunk/doc/man/qio.3, trunk/doc/man/radius.8, - trunk/doc/man/radius.conf.5, trunk/doc/man/rc.news.8, - trunk/doc/man/readers.conf.5, trunk/doc/man/rnews.1, - trunk/doc/man/sasl.conf.5, trunk/doc/man/sendinpaths.8, - trunk/doc/man/simpleftp.1, trunk/doc/man/sm.1, - trunk/doc/man/subscriptions.5, trunk/doc/man/tdx-util.8, - trunk/doc/man/tinyleaf.8, trunk/doc/man/tst.3, - trunk/doc/man/uwildmat.3, trunk/doc/pod/Makefile, - trunk/expire/Makefile, trunk/frontends/Makefile, - trunk/history/Make.methods, trunk/history/Makefile, - trunk/innd/Makefile, trunk/innfeed/Makefile, trunk/lib/Makefile, - trunk/nnrpd/Makefile, trunk/samples/Makefile, - trunk/scripts/Makefile, trunk/site/Makefile, - trunk/storage/Make.methods, trunk/storage/Makefile, - trunk/support/mkmanifest: First pass at removing all generated - files from Subversion in favor of generating them with a - post-checkout bootstrap. Added BOOTSTRAP documenting how to do - this (and not included in releases). Added a bootstrap target to - all of the makefiles that does whatever boostrapping is required - in those directories. - - Update the mkmanifest script to exclude .svn directories. - - * trunk/.cvsignore, trunk/include/.cvsignore: Update these as well - for the removal of configure and config.h.in from Subversion, - since right now make check-manifest uses .cvsignore. I should - probably come up with some other scheme for it. - - * trunk/doc/pod/Makefile: Add a rule for building sasl.conf.5, - which was missing before. - - * trunk/Makefile: Remove configure and include/config.h.in on - maintclean. - - * trunk, trunk/HACKING, trunk/autogen, trunk/configure, - trunk/doc/pod/hacking.pod, trunk/include, - trunk/include/config.h.in: Remove configure and config.h.in. Add - an autogen script to run Autoconf after a Subversion checkout. - Significantly update HACKING, including the new Subversion - details, the new autogen details, and lots of other updates to - the test suite portions, the error reporting section, and - elsewhere. - -2005-06-07 eagle - - * trunk/innfeed/article.c, trunk/innfeed/buffer.c, - trunk/innfeed/buffer.h: Reference-count the buffers in articles - we're sending, since the article holding a reference to them may - be deleted before we finish sending the article if the peer sends - the rejection message immediately (like Diablo does). Patch from - Miquel van Smoorenburg. - - * trunk/authprogs/smbval, trunk/history, trunk/lib, trunk/storage: - Also ignore the *.a library files; Subversion doesn't ignore - those by default the way that CVS does. - - * trunk/scripts/innreport.in: Remove the ftp.sofaraway.org - references, as the FTP site appears to be no more. - - * trunk/storage/cnfs/cnfs.c: Write out a multiple of CNFS_BLOCKSIZE - to disk by zero-padding the end of the article. We don't use that - data anyway, since we always align the start of articles, and - this saves an unnecessary read if CNFS_BLOCKSIZE matches the file - system block size (writing a partial block requires a disk read). - Patch from Miquel van Smoorenburg. - - * trunk/storage/interface.c: Don't allow storage classes larger - than 255; they can't be represented in tokens. Reported by - Sebastian Wiesinger. - - * trunk/doc/man/innfeed.1: The batch files now normally contain - storage tokens rather than file names. Reported by Todd Olson. - - * trunk/history/hisv6/hisv6.c: Fix hisv6_replace so that it - actually works. Open the history file in r+ mode rather than a - mode, since otherwise we can't write to arbitrary locations in - the file. Fix the length check for the new line, and space-fill - the new line at the right offset. Patch from Chris Caputo. - - * trunk/CONTRIBUTORS, trunk/history/hisv6/hisv6-private.h, - trunk/history/hisv6/hisv6.c: Calling fseeko or ftello does - fflush, at least on Linux, which meant that we were flushing the - history file after every write and not gaining the advantage of - stdio buffering. Stop using fseeko/ftello in favor of using an - internally maintained offset. - - This breaks multiple processes writing to the history file at the - same time, but in practice we don't support that right now - anyway. We save a significant number of write and seek syscalls - this way. - - Patch from Chris Caputo. - - * trunk/doc/man/inn.conf.5, trunk/doc/pod/inn.conf.pod, - trunk/nnrpd/nnrpd.c: Setting timer to 0 in inn.conf should also - disable the timing support in nnrpd. - -2005-06-06 eagle - - * trunk/nnrpd/article.c: GetHeader was giving up a bit short of the - end of the article due to using the same limit both for searching - for the header and for searching for the end of the header. Use - separate limits instead. Patch from Chris Caputo. - - * trunk/lib/dbz.c: Fix the length specification for madvise in - getcore. The incorrect value was causing it to pessimize things - rather than optimize. Also factor out the file length calculation - to a separate variable rather than constantly repeating the same - multiplication. Patch from Chris Caputo. - - * trunk/lib/parsedate.y: parsedate has been phased out in favor of - date.c, but this file was still hanging around (at least from - cvs2svn's perspective). - - * trunk/tests/data/config/errors, - trunk/tests/data/config/line-endings, - trunk/tests/data/config/warnings: Restore CRLF line endings and - other stray CRs lost in the Subversion conversion. - - * trunk/tests/data/articles/4, trunk/tests/data/articles/5, - trunk/tests/data/articles/bad-msgid, - trunk/tests/data/articles/wire-no-body, - trunk/tests/data/articles/wire-strange, - trunk/tests/data/articles/wire-truncated: Restore the CRLF line - endings and other stray CRs lost in the Subversion conversion. - - * trunk/innd/tinyleaf.c: Send notice, warn, and die messages to - syslog rather than to standard error, since inetd sends standard - error to the network connection. - -2005-05-25 rra - - * trunk/tests/lib/snprintf-t.c: Add additional tests for %s with - NULL and floating point numbers that didn't work properly - previously. - - * trunk/lib/snprintf.c: Add various patches from Hrvoje Niksic that - improve floating point and fix various other bugs. - -2005-04-16 rra - - * trunk/lib/snprintf.c: Add miscellaneous fixes pointed out by - Hrvoje Niksic. - - * trunk/innd/tinyleaf.c: Try to unlink the file left behind by a - failed article write (idea from Christoph Biedl). Use the new - nntp_send_line_noflush API, since just using printf won't work - any more; the nntp library now does its own buffering rather than - using stdio. - - * trunk/include/inn/nntp.h, trunk/lib/nntp.c: Fix - nntp_read_command. Add nntp_send_line_noflush, although I'm still - not happy with the API here for handling multiline responses. - -2005-04-14 rra - - * trunk/innd/rc.c: Remove the IPv4 case for host lookup and use the - IPv6 code everywhere, since we can now rely on getaddrinfo being - available even on IPv4 hosts. - - * trunk/tests/lib/network-t.c, trunk/tests/util/innbind-t.c: - Compilation and warning fixes for the IPv4-only case. - -2005-04-13 rra - - * trunk/tests/lib/getnameinfo-t.c: Test with a bad protocol family. - - * trunk/lib/getaddrinfo.c: Fix a missing comma. - -2005-04-12 rra - - * trunk/MANIFEST, trunk/configure, trunk/configure.ac, - trunk/include/config.h.in, trunk/include/portable/getaddrinfo.h, - trunk/include/portable/getnameinfo.h, - trunk/include/portable/socket.h, trunk/lib/Makefile, - trunk/lib/getaddrinfo.c, trunk/lib/getnameinfo.c, - trunk/tests/Makefile, trunk/tests/TESTS, trunk/tests/lib, - trunk/tests/lib/.cvsignore, trunk/tests/lib/getnameinfo-t.c: Add - a replacement for getnameinfo for systems that don't have it. - This will let us use getnameinfo without wrapping it in - HAVE_INET6 and duplicating code. - - * trunk/lib/getaddrinfo.c: Comment fix. - -2005-04-11 rra - - * trunk/innfeed/host.c: We can always use getaddrinfo now, since we - have a substitute on hosts that don't have it. - - * trunk/INSTALL, trunk/doc/pod/install.pod: Note that running cron - jobs is incompatible, on Solaris, with having a locked account. - - * trunk/INSTALL, trunk/doc/pod/install.pod: Document the configure - flags to change the INN user and document the use of the usenet - user and --with-news-master. - - * trunk/MANIFEST, trunk/doc/man/ckpasswd.8, - trunk/doc/man/readers.conf.5, trunk/doc/pod/ckpasswd.pod, - trunk/doc/pod/readers.conf.pod: Move the documentation for PAM - configuration with ckpasswd into its man page and remove the (not - incredibly helpful) example file. Add more cross-references to - ckpasswd to the readers.conf man page. - - * trunk/nnrpd/post.c: If nnrpdauthsender is set and the user - identity assigned is empty, don't use UNKNOWN@hostname; instead, - strip the Sender header completely as the documentation says. - - * trunk/doc/man/readers.conf.5, trunk/doc/pod/readers.conf.pod: - Note that the user identity is also used by nnrpdauthsender. - - * trunk/doc/man/inn.conf.5, trunk/doc/pod/inn.conf.pod: Typo fix. - - * trunk/doc/man/expire.ctl.5, trunk/doc/pod/expire.ctl.pod: Improve - the documentation of the X flag and try to clarify that - expiration rules are applied to newsgroups one carries, not the - Newsgroups header of articles. - - * trunk/doc/man/nnrpd.8, trunk/doc/pod/nnrpd.pod, - trunk/nnrpd/nnrpd.c: Looks like -R (force read-only) hasn't done - anything in quite a while. Since no one has complained, just - remove the option rather than trying to fix it. - - * trunk/nnrpd/nnrpd.c, trunk/nnrpd/nnrpd.h: Eliminate a few more - write-only variables. - - * trunk/nnrpd/article.c, trunk/nnrpd/nnrpd.c, trunk/nnrpd/nnrpd.h: - It's kind of silly to have our own copy of NNTP_ACCESS. - - * trunk/nnrpd/nnrpd.c, trunk/nnrpd/nnrpd.h: Remove INADDR. Call - things what they really are rather than using typedefs. Also - remove the setting of INADDR_LOOPBACK, since portable/socket.h - takes care of that. - - * trunk/nnrpd/commands.c, trunk/nnrpd/nnrpd.h: Resize by 4KB at a - time when reading posts rather than 1KB. (I can hardly wait until - I can use the new NNTP library for all this stuff.) Delete some - more write-only constants. - - * trunk/nnrpd/nnrpd.c, trunk/nnrpd/nnrpd.h, trunk/nnrpd/perl.c: - Remove the write-only LogName variable. - - * trunk/NEWS, trunk/doc/man/nnrpd.8, trunk/doc/pod/news.pod, - trunk/doc/pod/nnrpd.pod, trunk/nnrpd/nnrpd.c: Drop all of the - ugly user switching and code for handling the -g option from - nnrpd. If people need special permissions for ckpasswd -s, they - now need to set up ckpasswd accordingly, as described in the man - page. nnrpd no longer looks at the ownership of pathrun or other - strange things and just switches to the news user if run as root. - Since it now uses innbind, it can do this even in daemon mode - before binding to a port. - - * trunk/TODO: Add a note about Xref slave without a complete group - list. - - * trunk/include/Makefile: Allow make warnings. - - * trunk/INSTALL, trunk/doc/pod/install.pod: Add more information - about software dependencies and tips for building against shared - libraries. - - * trunk/TODO: Add a note about limiting auth blocks to particular - users. - - * trunk/nnrpd/auth-ext.c: More correctly handle read errors from - external authenticators. - - * trunk/MANIFEST, trunk/nnrpd/Makefile, trunk/nnrpd/auth-ext.c, - trunk/nnrpd/nnrpd.h, trunk/nnrpd/perm.c, trunk/tests/Makefile, - trunk/tests/TESTS, trunk/tests/libtest.c, trunk/tests/nnrpd, - trunk/tests/nnrpd/.cvsignore, trunk/tests/nnrpd/auth-ext-t.c, - trunk/tests/nnrpd/auth-test: Completely rewrite the interface - between nnrpd and external auth programs, cleaning it up - considerably and isolating it so that it's easier to test. Deal - correctly with a whole bunch of edge cases that the previous code - couldn't deal with. Fix the API to avoid global variables and - more static buffers. Add a comprehensive test suite. - - * trunk/include/inn/vector.h, trunk/lib/vector.c, - trunk/tests/lib/vector-t.c: Add vector_exec and cvector_exec - functions to exec a program, taking its arguments from a vector. - - * trunk/include/portable/alloca.h: Update to the current Autoconf - recommended boilerplate. - - * trunk/include/portable/socket.h: Make INET_ADDRSTRLEN and - INET6_ADDRSTRLEN available. - - * trunk/nnrpd/article.c, trunk/nnrpd/commands.c, - trunk/nnrpd/group.c, trunk/nnrpd/line.c, trunk/nnrpd/list.c, - trunk/nnrpd/misc.c, trunk/nnrpd/newnews.c, trunk/nnrpd/nnrpd.c, - trunk/nnrpd/nnrpd.h, trunk/nnrpd/perl.c, trunk/nnrpd/perm.c, - trunk/nnrpd/post.c, trunk/nnrpd/python.c, trunk/nnrpd/sasl.c, - trunk/nnrpd/track.c: Start pulling client information into a - struct. This will be painful, but it will make some internal APIs - much simpler and will reduce the number of global variables. - - * trunk/nnrpd/perm.c: Remove support for the undocumented header: - directive in auth blocks. This just sends more static information - on standard input to the authenticators and resolvers, something - that none of the existing ones depend on and which is better - handled through command-line parameters. Allowing this - complicates the running of authenticators and resolvers. - -2005-04-10 rra - - * trunk/authprogs/auth_krb5.c, trunk/authprogs/auth_smb.c, - trunk/authprogs/ckpasswd.c, trunk/authprogs/domain.c, - trunk/authprogs/ident.c, trunk/authprogs/libauth.c, - trunk/authprogs/libauth.h, trunk/authprogs/radius.c, - trunk/tests/authprogs/ckpasswd.t, trunk/tests/authprogs/domain.t, - trunk/tests/authprogs/ident-t.c: Add a function to libauth to - print out the user and use it in all of the authenticators and - resolvers. Update the test suite to check whitespace as well as - content in the output from the resolvers to make sure CRLF is - always used. Many of the programs were only using LF before. - - * trunk/MANIFEST, trunk/authprogs/Makefile, - trunk/authprogs/ident.c, trunk/authprogs/libauth.c, - trunk/authprogs/libauth.h, trunk/tests/Makefile, - trunk/tests/TESTS, trunk/tests/authprogs, - trunk/tests/authprogs/.cvsignore, - trunk/tests/authprogs/ident-t.c: Clean up all the IPv6 cruft in - the ident resolver and use the new network library to handle the - connection. It turns out that returning the client and server - addresses as sockaddrs is not particularly useful, so since this - resolver was the main reason that was done, just return the - client and local IPs and ports as strings, simplifying the - authenticator library. Fix a bug where trailing whitespace after - the username returned by the ident responder wasn't stripped. Add - a test suite. - - * trunk/tests/util/innbind-t.c: Set SO_REUSEADDR in a few places - where it wasn't set already. - - * trunk/frontends/getlist.c: Close down the connection cleanly, - just 'cause. - - * trunk/lib/network.c: Comment fixes. - - * trunk/include/inn/network.h, trunk/lib/network.c, - trunk/lib/nntp.c, trunk/lib/remopen.c, - trunk/tests/lib/network-t.c: Add an optional source address - parameter to network_connect, primarily for the use of the ident - resolver. Add network_connect_host that takes a host and port - instead of an addrinfo struct. - - * trunk/lib/network.c: Allow innconf to be NULL. Assume no source - address configuration and always fail if we needed to run - innbind. - - * trunk/authprogs/libauth.h: Reformat to match the INN formatting - standard, add an include guard, and add C++ compilation - protection. - - * trunk/tests/libtest.h: Use the standard include guard for the - name of the header. - - * trunk/NEWS, trunk/doc/pod/news.pod: Remove the optimization that - answers XHDR Newsgroups and XPAT Newsgroups out of the overview - Xref data. It makes things faster, but it breaks the NNTP - protocol specification. - - Add additional news items of interest from the 2.4 series that - were also applied to 2.5. - - * branches/STABLE-2_4/NEWS, trunk/nnrpd/article.c: Remove the - optimization that answers XHDR Newsgroups and XPAT Newsgroups out - of the overview Xref data. It makes things faster, but it breaks - the NNTP protocol specification. - - * trunk/include/inn/nntp.h: Wrap declarations in BEGIN_DECLS / - END_DECLS. - - * trunk/tests/clients/server-list.in: Use select rather than - busy-waiting on the child process. Exit the child process cleanly - on SIGTERM to avoid address reusing problems. - - * trunk/MANIFEST, trunk/tests/Makefile, trunk/tests/TESTS, - trunk/tests/clients, trunk/tests/clients/.cvsignore, - trunk/tests/clients/getlist.t, - trunk/tests/clients/server-list.in, trunk/tests/data/db/active, - trunk/tests/data/db/active.times, - trunk/tests/data/db/distributions, - trunk/tests/data/db/newsgroups: Add a test suite for getlist and - start putting together an infrastructure for client testing. - - * trunk/tests/lib/confparse-t.c, trunk/tests/lib/date-t.c, - trunk/tests/lib/getaddrinfo-t.c, trunk/tests/lib/hashtab-t.c, - trunk/tests/lib/network-t.c, trunk/tests/lib/setenv-t.c, - trunk/tests/lib/tst-t.c, trunk/tests/util/innbind-t.c: Use the - new skip, ok_block, and skip_block functions. - - * trunk/tests/libtest.c, trunk/tests/libtest.h: Take a reason for - skipped tests and print that out as well. - - * trunk/tests/TESTS: Add lib/network. - - * trunk/tests/libtest.c, trunk/tests/libtest.h: Add skip to skip a - test and ok_block and skip_block to fail or skip a whole block of - tests at once. - - * trunk/MANIFEST, trunk/tests/Makefile, trunk/tests/lib, - trunk/tests/lib/.cvsignore, trunk/tests/lib/network-t.c: Add - tests for lib/network.c. - - * trunk/NEWS, trunk/doc/pod/news.pod: Add a mention of tinyleaf. - The Autoconf used is now 2.59 not 2.57. - - * trunk/MANIFEST: Add tinyleaf. - - * trunk/doc/man/Makefile, trunk/doc/man/tinyleaf.8, - trunk/doc/pod/Makefile, trunk/doc/pod/tinyleaf.pod, trunk/innd, - trunk/innd/.cvsignore, trunk/innd/Makefile, - trunk/innd/tinyleaf.c: Add tinyleaf, the simplest possible - transit news server. - - * trunk/MANIFEST, trunk/frontends/innconfval.c, - trunk/include/libinn.h, trunk/innd/nc.c, trunk/innd/status.c, - trunk/lib/Makefile, trunk/nnrpd/commands.c, trunk/nnrpd/nnrpd.c: - Eliminate the inn_version* variables in libinn in favor of using - the compile-time constants in include/inn/version.h. Not only - does this eliminate a redundant location for the same information - but it produces more accurate results; now the version strings - will be fixed at compile time rather than changing based on what - shared libinn library is used. - - * trunk/lib/xmalloc.c: For the xmalloc_handler, avoid the _t - extension (reserved by POSIX). Use _type instead. - - * trunk/include/libinn.h: For the xmalloc_handler, avoid the _t - extension (reserved by POSIX). Use _type instead. - - * trunk/frontends/getlist.c, trunk/include/inn/nntp.h, - trunk/lib/nntp.c: Change the NNTP library API to take the read - timeout as an argument to the constructor rather than an argument - to every single read call, since it usually won't change for a - given program or will change only rarely. Add a function to - change the current read timeout. Adjust callers accordingly. - - * trunk/lib/hash.c: Use the new inn_encode_hex and inn_decode_hex - functions. - - * trunk/MANIFEST, trunk/include/inn/utility.h, trunk/lib/Makefile, - trunk/lib/hex.c, trunk/tests/Makefile, trunk/tests/TESTS, - trunk/tests/lib, trunk/tests/lib/.cvsignore, - trunk/tests/lib/hex-t.c: Add library functions for converting - data to hex and back, pulling those functions out of lib/hash.c - and nailing down the input and output properties better. These - may also be useful for debugging elsewhere, plus the Hash API - needs to eventually move farther inside the history API but these - functions will still be useful. - - In the process, make a start on include/inn/utility.h, which will - eventually pick up the rest of libinn.h. - - * trunk/include/inn/wire.h: Include sys/types.h for size_t. - - * trunk/tests/lib/hash-t.c: Add some HashToText and TextToHash - tests. - - * trunk/TODO: Reorder the 2.5 goals and add a few new items. - - * trunk/nnrpd/perm.c: When Perl and Python were both enabled, nnrpd - was attempting to parse Python access hooks as Perl scripts. - Fixed by checking the access type. Reported by Ken Bass. - - * trunk/INSTALL, trunk/doc/pod/install.pod: Add NetBSD to the list - of confirmed platforms. - - * trunk/control/perl-nocem.in: Add a SYNOPSIS to the documentation, - change the existing SYNOPSIS section to DESCRIPTION, and reformat - a little bit. - - * trunk/lib/sendpass.c: If called with a NULL server argument and - innconf->server not set, set errno to something vaguely - appropriate before returning since some callers use errno in - error reporting. - -2005-04-07 rra - - * trunk/doc/man/expire.ctl.5, trunk/doc/pod/expire.ctl.pod, - trunk/samples/expire.ctl: Change the terminology to - :: from and . - -2005-03-17 vinocur - - * trunk/authprogs/domain.c, trunk/doc/external-auth, - trunk/doc/pod/external-auth.pod: Fix inconsistencies between code - and documentation about newline handling for external-auth. - Reported by Todd Olson. - -2005-03-16 hkehoe - - * trunk/storage/tradindexed/tradindexed.c: tradindexed_add should - return "true" if the group doesn't exist, like the other OV - methods - -2005-03-05 vinocur - - * trunk/doc/hook-python, trunk/doc/man/newsfeeds.5, - trunk/doc/pod/hook-python.pod, trunk/doc/pod/newsfeeds.pod: - Correct typos. - - * branches/STABLE-2_4/doc/hook-python, - branches/STABLE-2_4/doc/man/newsfeeds.5, - branches/STABLE-2_4/doc/pod/hook-python.pod, - branches/STABLE-2_4/doc/pod/newsfeeds.pod, trunk/doc/hook-perl: - Correct typos. - -2005-02-03 rra - - * trunk/m4/int32.m4: Fix initial comment to be more accurate. - -2005-01-18 rra - - * trunk/control/pgpverify.in: Return the correct exit status in the - event of known failures instead of always returning 255. Reported - by Awais Riaz. - -2005-01-09 rra - - * trunk/include/inn/md5.h: Fix a miswrapped hyphen in the license - statement. - - * trunk/backends/inndf.c, trunk/tests/util/inndf.t: Switch inndf - over to the new overview API. - - * trunk/LICENSE: Add 2005 to copyright. - - * trunk/MANIFEST, trunk/tests/TESTS, - trunk/tests/data/etc/inn-bfx.conf, - trunk/tests/data/etc/inn-tdx.conf, trunk/tests/util/inndf.t: Add - a test suite for inndf. - - * trunk/expire/makehistory.c: Don't require that we be running as - the news user if INN_TESTSUITE is set in the environment. This is - an idiom that we should be using everywhere. - - * trunk/storage/buffindexed/shmem.c: Only print out the messages - about shmem segments created and removed when debugging. - - * trunk/CONTRIBUTORS: Add F. Senault. - - * trunk/doc/man/tdx-util.8, trunk/doc/pod/tdx-util.pod, - trunk/storage/tradindexed/tdx-util.c: Add support for article - ranges in the -a option to tdx-util. Based on a patch by F. - Senault. - -2005-01-08 rra - - * trunk/tests/lib/date-t.c: Remove the other ambiguous daylight - savings time tests from the regular NNTP date parsing tests and - handle them separately. Should correct the test failures on - HP-UX, which was using the other interpretation of the ambiguous - dates. - -2005-01-06 rra - - * trunk/configure, trunk/configure.ac, trunk/include/clibrary.h, - trunk/include/config.h.in: Use AC_FUNC_FSEEKO if building with - large file support. Otherwise, just define fseeko and ftello to - fseek and ftell if fseeko isn't declared (without defining any - other special macros). - - * trunk/configure, trunk/configure.ac, trunk/include/clibrary.h, - trunk/include/config.h.in: Use AC_FUNC_FSEEKO rather than using - AC_REPLACE_FUNCS, and don't check for declarations until after - doing so. - - * trunk/nnrpd/nnrpd.c: Add a missing variable declaration for the - SASL case. - -2004-12-26 rra - - * trunk/MANIFEST, trunk/doc/man/getlist.1, trunk/doc/pod/Makefile, - trunk/doc/pod/getlist.pod: Convert the getlist man page to POD. - -2004-12-25 rra - - * trunk/MANIFEST, trunk/doc/man/moderators.5, - trunk/doc/pod/Makefile, trunk/doc/pod/moderators.pod: Convert the - moderators man page to POD. - - * trunk/MANIFEST, trunk/doc/man/rnews.1, trunk/doc/pod/Makefile, - trunk/doc/pod/rnews.pod: Convert the rnews documentation to POD - and update it. - - * trunk/INSTALL, trunk/doc/pod/install.pod: --enable-uucp-rnews - only installs rnews setuid news, not setuid root. - - * trunk/m4/modes.m4: Fix the comment; rnews is never more than - setuid news. - - * trunk/TODO: SASL support has been integrated, update the status - of alloca support. - - * trunk/LICENSE: Add information about lib/snprintf.c. - - * trunk/LICENSE: The MIT/X Consortium license is no longer less - restrictive than INN's license. - -2004-12-24 rra - - * trunk/doc/man/inews.1, trunk/doc/pod/inews.pod: NAME, not NEWS. - - * trunk/storage/overview.c: Add the implementation of - overview_free_space. - -2004-12-23 rra - - * trunk/innfeed/imap_connection.c: Rework imap_sendAuthenticate to - avoid warnings when building without SASL. - - * trunk/nnrpd/nnrpd.c: Move an unused variable inside HAVE_SASL. - - * trunk/storage/ovdb/ovdb.c: Constify the stub implementations when - BerkeleyDB isn't supported. - - * trunk/backends/mod-active.in: GNU diff wants -U0 rather than -u0 - these days. This seems to be supported for a while into the past, - so let's hope that this doesn't just create other compatibility - problems. - - * trunk/MANIFEST: Add various missing files and fix ordering. - - * trunk/MANIFEST, trunk/tests/authprogs/ckpasswd.t, - trunk/tests/data, trunk/tests/data/articles, - trunk/tests/data/articles/1, trunk/tests/data/articles/2, - trunk/tests/data/articles/3, trunk/tests/data/articles/4, - trunk/tests/data/articles/5, trunk/tests/data/articles/6, - trunk/tests/data/articles/bad-empty, - trunk/tests/data/articles/bad-hdr-empty, - trunk/tests/data/articles/bad-hdr-nospc, - trunk/tests/data/articles/bad-hdr-space, - trunk/tests/data/articles/bad-hdr-trunc, - trunk/tests/data/articles/bad-long-cont, - trunk/tests/data/articles/bad-long-hdr, - trunk/tests/data/articles/bad-msgid, - trunk/tests/data/articles/bad-no-body, - trunk/tests/data/articles/bad-no-header, - trunk/tests/data/articles/bad-nul-body, - trunk/tests/data/articles/bad-nul-header, - trunk/tests/data/articles/bad-subj, - trunk/tests/data/articles/wire-no-body, - trunk/tests/data/articles/wire-strange, - trunk/tests/data/articles/wire-truncated, - trunk/tests/data/config, trunk/tests/data/config/errors, - trunk/tests/data/config/groups, trunk/tests/data/config/include, - trunk/tests/data/config/line-endings, - trunk/tests/data/config/lists, - trunk/tests/data/config/no-newline, trunk/tests/data/config/null, - trunk/tests/data/config/reals, trunk/tests/data/config/recurse, - trunk/tests/data/config/simple, trunk/tests/data/config/symlink, - trunk/tests/data/config/valid, trunk/tests/data/config/warn-bool, - trunk/tests/data/config/warn-int, - trunk/tests/data/config/warn-real, - trunk/tests/data/config/warn-string, - trunk/tests/data/config/warnings, trunk/tests/data/db, - trunk/tests/data/db/active, trunk/tests/data/etc, - trunk/tests/data/etc/buffindexed.conf, - trunk/tests/data/etc/inn.conf, trunk/tests/data/etc/overview.fmt, - trunk/tests/data/etc/passwd, trunk/tests/data/etc/storage.conf, - trunk/tests/data/overview, trunk/tests/data/overview/1-4, - trunk/tests/data/overview/basic, trunk/tests/data/overview/bogus, - trunk/tests/data/overview/high-numbered, - trunk/tests/data/overview/munge-data, - trunk/tests/data/overview/reversed, trunk/tests/data/upgrade, - trunk/tests/data/upgrade/inn.conf, - trunk/tests/data/upgrade/inn.conf.ok, - trunk/tests/data/upgrade/newsfeeds, - trunk/tests/data/upgrade/newsfeeds.ok, - trunk/tests/data/upgrade/sasl.conf, - trunk/tests/innd/artparse-t.c, trunk/tests/lib/confparse-t.c, - trunk/tests/lib/innconf-t.c, trunk/tests/lib/wire-t.c, - trunk/tests/overview, trunk/tests/overview/.cvsignore, - trunk/tests/overview/api-t.c, trunk/tests/overview/overview-t.c, - trunk/tests/storage/archive.t, trunk/tests/storage/makehistory.t, - trunk/tests/storage/sm.t, trunk/tests/util/innupgrade.t: - Reorganize the test directory to put all of the separata test - data into its own directory hierarchy. We aren't currently doing - much reusing of test data, but we'll do more in the future, and - this makes the test directory look a lot cleaner and makes it - easier to share things. - - * trunk/MANIFEST, trunk/include/inn/overview.h, trunk/include/ov.h, - trunk/storage/Makefile, trunk/storage/overview.c, - trunk/tests/Makefile, trunk/tests/TESTS, trunk/tests/overview, - trunk/tests/overview/.cvsignore, trunk/tests/overview/api-t.c: - Add a new overview API based on prior inn-workers discussion that - uses an opaque struct to store state information and that uses - structs to pass data in and out (with better data types). The new - API currently lives in parallel with the old API and still calls - the old internal API to the backend implementations. - - The next step will be to modify all callers to use the new API, - and then modify the overview backend implementations to better - suit the new API. Then the old API can be removed. - - * trunk/include/inn/history.h: Include sys/types.h since we depend - on size_t. - - * trunk/storage/buffindexed/buffindexed.c, - trunk/storage/buffindexed/buffindexed.h, trunk/storage/expire.c, - trunk/storage/ov.c, trunk/storage/ovdb/ovdb-private.h, - trunk/storage/ovdb/ovdb.c, trunk/storage/ovdb/ovdb.h, - trunk/storage/ovinterface.h, - trunk/storage/tradindexed/tradindexed.c, - trunk/storage/tradindexed/tradindexed.h: Clean up the use of - global variables between expire.c and ov.c and declare them - extern in ovinterface.h rather than declaring them normally there - and duplicating them across multiple object files. Constify the - newsgroup name in the overview backend interface, which will help - in developing the new overview interface. (Unfortunately, the - BerkeleyDB data type then requires casts.) - - * trunk/storage/overdata.c: Include ov.h since it prototypes our - functions. - -2004-12-22 rra - - * trunk/MANIFEST, trunk/TODO, trunk/backends/buffchan.c, - trunk/doc/man/libinn.3, trunk/expire/makehistory.c, - trunk/include/libinn.h, trunk/innd/art.c, trunk/innd/cc.c, - trunk/innd/chan.c, trunk/innd/innd.c, trunk/innd/innd.h, - trunk/innd/nc.c, trunk/innd/proc.c, trunk/innd/site.c, - trunk/innd/status.c, trunk/innd/util.c, trunk/innd/wip.c, - trunk/lib/Makefile, trunk/lib/genid.c, - trunk/storage/tradspool/tradspool.c: Eliminate GetTimeInfo. Just - call time() and use time_t when all that the function cares about - is seconds. For innd, use gettimeofday and make Now a struct - timeval, updating all of the places it's used. - - * trunk/nnrpd/misc.c: Call time() instead of GetTimeInfo for - handling posting backoff. - - * trunk/nnrpd/article.c, trunk/nnrpd/group.c, trunk/nnrpd/misc.c, - trunk/nnrpd/newnews.c, trunk/nnrpd/nnrpd.c, trunk/nnrpd/perl.c, - trunk/nnrpd/perm.c, trunk/nnrpd/post.c, trunk/nnrpd/python.c, - trunk/nnrpd/sasl.c, trunk/nnrpd/tls.c, trunk/nnrpd/track.c: Fix - the formatting of function definitions. Return value and function - name on separate lines, opening brace on a line by itself, always - use ANSI prototypes. - - * trunk/nnrpd/commands.c: Just call time() directly rather than - using GetTimeInfo for the DATE implementation, since we only care - about second resolution. - - * trunk/nnrpd/commands.c, trunk/nnrpd/nnrpd.c, trunk/nnrpd/nnrpd.h: - Remove the remnants of the XPATH command; we haven't supported - this for a while, but we still had a stub. - - * trunk/nnrpd/commands.c: Use ANSI C prototypes for a few remaining - functions and fix some formatting issues. - - * trunk/LICENSE, trunk/MANIFEST, trunk/TODO, - trunk/doc/man/Makefile, trunk/doc/man/convdate.1, - trunk/doc/man/libinn.3, trunk/doc/pod/convdate.pod, - trunk/expire/makehistory.c, trunk/frontends/inews.c, - trunk/frontends/sm.c, trunk/include/libinn.h, trunk/innd/art.c, - trunk/innfeed/configfile.h, trunk/lib/Makefile, - trunk/nnrpd/post.c, trunk/storage/expire.c, - trunk/storage/tradspool/tradspool.c: Replace all of the uses of - the old parsedate routine with calls to the new - parsedate_rfc2822_lax parser, since it now parses everything that - the old parser could handle that actually shows up in the wild - and is smaller and easier to maintain. - - * trunk/tests/storage/sm.t: The bug that caused the Xref header to - contain slashes instead of periods has been fixed, so remove the - workaround here. - - * trunk/samples/actsync.cfg: The active file is now gzipped, not - compressed. - - * trunk/samples/actsync.ign: Fix the Big Eight listing - (humanities.*, not gnu.*). - -2004-12-21 rra - - * trunk/nnrpd/Makefile: Use SSL_CPPFLAGS and SASL_CPPFLAGS instead - of *_INC. - -2004-12-20 rra - - * trunk/configure, trunk/configure.ac, trunk/include/config.h.in, - trunk/storage/buffindexed/shmem.c: Add a probe for union semun - and use it. Also pick up some additional changes for handling the - fseeko/ftello decls. - - * trunk/MANIFEST, trunk/doc/man/inews.1, trunk/doc/pod/Makefile, - trunk/doc/pod/inews.pod: Convert the inews documentation to POD - and significantly update it, taking out more documentation of - things that it no longer does and including more complete - documentation of the checks that it performs. - - * trunk/MANIFEST, trunk/doc/man/ctlinnd.8, trunk/doc/pod/Makefile, - trunk/doc/pod/ctlinnd.pod: Convert the ctlinnd documentation to - POD and clean it up and edit it in the process. - -2004-12-19 rra - - * trunk/frontends/inews.c: Use die, not sysdie, if the response - from the server isn't what we expect, since errno isn't going to - contain anything useful. - - * trunk/configure, trunk/configure.ac, trunk/include/clibrary.h: - Check for declarations of fseeko and ftello and declare them if - declarations aren't found, to work around glibc's annoying - refusal to declare them under a variety of circumstances. - - * trunk/nnrpd/sasl.c: Use an intermediate variable in calls to - sasl_getprop to avoid lying to C's type system. (const char ** - and const void ** are not compatible, even though everyone wishes - they were.) - - * trunk/backends/news2mail.in: Use news as the sender, not , - as the latter is a sendmailism that sendmail doesn't even need. - - * trunk/doc/man/ctlinnd.8: Document the restriction on the use of - changegroup. - - * trunk/frontends/cnfsstat.in, trunk/scripts/innreport_inn.pm: - Report CNFS buffer length as a floating point number instead of - an integer number of megabytes, and adjust innreport to cope. - - * trunk/scripts/rc.news.in: Close stdout when scheduling innwatch - and cnfsstat to run in the future, since otherwise some shells - will sit around and wait for sleep to finish. Reported by Felix - Klee. - - * trunk/scripts/news.daily.in: Don't automatically enable delayrm - whenever expireover is given and whenever overview is enabled. - People with pure CNFS systems really don't need to use fastrm. - - * trunk/doc/man/dbz.3: man pages should have only one NAME line. - Reported by Eric Raymond. - - * trunk/doc/man/nnrpd.8, trunk/doc/pod/nnrpd.pod: Update the NAME - line to something that makes a bit more sense. - - * trunk/doc/man/nnrpd.8, trunk/doc/pod/nnrpd.pod: Add documentation - of how to run nnrpd with SSL support. - - * trunk/Makefile: Put the key into a different file than the - certificate on make cert. - - * trunk/doc/man/tdx-util.8, trunk/doc/pod/tdx-util.pod: The - documentation for -i and -g was reversed relative to what the - program actually did. Reported by WATANABE Katsuhiro. - -2004-12-19 hkehoe - - * trunk/configure, trunk/m4/berkeleydb.m4: Add 4.3 to the list of - BerkeleyDB versions searched for - -2004-12-19 rra - - * trunk/MANIFEST, trunk/doc/man/grephistory.1, - trunk/doc/pod/Makefile, trunk/doc/pod/grephistory.pod: Convert - the grephistory man page to POD and clean up some historic - references to article file names. Update the exact string that - grephistory prints when it can't find an article. - - * trunk/expire/grephistory.c: Exit with an error status if the - message ID wasn't found, for consistency with the man page and - previous versions. - - * trunk/CONTRIBUTORS: Add WATANABE Katsuhiro. - - * trunk/tests/storage/makehistory.t: Add tests for running - makehistory on a legacy spool without Xref headers in articles - that weren't crossposted. - - * trunk/expire/makehistory.c: Don't add an extra Xref: to the - overview information when cobbling together an Xref header for an - article that doesn't already have one, based on a bug report by - WATANABE Katsuhiro. Also fix a bug that caused makehistory to - skip processing any articles without Xref headers for which - SMprobe to determine the newsgroup name and article number - succeeded. - - * trunk/storage/tradspool/tradspool.c: When returning the newsgroup - name in response to SMprobe, replace slashes with periods. - - * trunk/authprogs/auth_krb5.c: Define KRB5_DEPRECATED since we use - krb5_get_in_tkt_with_password, which is a deprecated interface - (with no good replacement). - - * trunk/storage/tradspool/tradspool.c: In tradspool_cancel, free - xrefs if the Xref header were present but contained no groups to - plug a minor memory leak. Reported by WATANABE Katsuhiro. - -2004-12-18 hkehoe - - * trunk/frontends/ovdb_stat.c, trunk/m4/zlib.m4, - trunk/storage/ovdb/ovdb-private.h, trunk/storage/ovdb/ovdb.c: Add - BerkeleyDB 4.3 support, correct a typo in a comment in zlib.m4, - add ncache option to ovdb.conf (still need to update docs for - this option) - -2004-11-29 rra - - * trunk/samples/control.ctl: Add pgsql.*. - -2004-11-16 rra - - * trunk/samples/control.ctl: Add a URL for dfw.*. - -2004-11-10 rra - - * trunk/README, trunk/doc/pod/readme.pod: More minor wording - changes requested by ISC folks. - - * trunk/README, trunk/doc/pod/readme.pod: Update the ISC's - activities. - -2004-10-14 rra - - * trunk/nnrpd/group.c: Fix typo in the Authentication required - message. - - * trunk/NEWS, trunk/doc/pod/news.pod: Add documentation of the - change to the status codes for the GROUP command. - -2004-10-12 rra - - * trunk/samples/control.ctl: Update admin group for x-privat.*. - -2004-10-02 rra - - * trunk/MANIFEST: Add the files for the alloca replacement. - - * trunk/LICENSE: Add lib/alloca.c to the list of public-domain - files. - - * trunk/Makefile.global.in, trunk/configure, trunk/configure.ac, - trunk/include/config.h.in, trunk/include/portable/alloca.h, - trunk/lib/Makefile, trunk/lib/alloca.c, trunk/nnrpd/nnrpd.c, - trunk/nnrpd/tls.c: Add proper alloca support using Doug Gwyn's - public domain implementation as a fallback for compilers that - don't support it, and switch the SSL code in nnrpd over to using - it. Call alloca_free() in the main loop of nnrpd. - -2004-10-01 rra - - * trunk/include/inn/buffer.h, trunk/lib/buffer.c, trunk/lib/nntp.c, - trunk/tests/lib/buffer-t.c: Use va_copy in buffer_vsprintf, which - means we don't have to go through the annoying process of - recalling it if it returns false, and which lets it return void - just like buffer_sprintf. Modify callers appropriately and add a - test suite for buffer_vsprintf. - - * trunk/tests/util/convdate.t: Only pass RFC 2822 dates into - convdate when checking. - - * trunk/doc/man/convdate.1, trunk/doc/pod/convdate.pod: convdate - now only handles RFC 2822 dates (with lax syntax), not the full - range of things that parsedate could previously handle. - - * trunk/expire/convdate.c: Use parsedate_rfc2822_lax instead of - parsedate. - - * trunk/storage/ovdb/ovdb.c: Fix warnings. - - * trunk/include/clibrary.h: Provide va_copy. - - * trunk/nnrpd/group.c: We had previously returned 411 (group - doesn't exist) if the user didn't have permission to read the - group for all cases other than Python dynamic authentication - (where we returned 502 for permission denied). I can sort of - understand the dubious security mindset behind this choice, but - at least when the user isn't already authenticated, this breaks - reactive authentication. - - Instead, if the user is not authenticated, return 480, and if the - user is authenticated, return 502. This means that a user can - determine that a group exists by probing for it and seeing if - they get 411 or 502, but the protocol is cleaner. - - * trunk/support/config.guess, trunk/support/config.sub: Update to - upstream versions from 2004-06-24. - - * trunk/HACKING, trunk/doc/pod/hacking.pod: Note that new versions - of config.guess, config.sub, and the libtool files can now just - be checked in without any special CVS commands, since we no - longer have local modifications that we need to preserve. - - * trunk/doc/man/nnrpd.8, trunk/doc/pod/nnrpd.pod: Document that - nnrpd creates a PID file when run in daemon mode (-D). - - * trunk/innfeed/connection.c: Be consistent and allow for all - responses to IHAVE or TAKETHIS to be sent before we're done - sending the article except for successful responses. - - * trunk/contrib/respool.c, trunk/expire/makehistory.c: The argument - to SMsetup for SM_RDWR and SM_PREOPEN must be a bool *, not an - int *. This makes a difference with some versions of GCC on some - platforms. - - * trunk/scripts/innstat.in: Use sed 1d instead of tail +2 since the - latter isn't POSIX. Reported by Chris Caputo. - - * trunk/doc/man/incoming.conf.5: Warn that identd callbacks - currently don't implement any timeout. - - * trunk/innd/innd.c: Only open the history file during initial - startup if the server wasn't throttled on the command line. - Reported by John Wehle. - - * trunk/scripts/innreport_inn.pm: Match either nnrpd or nnrpd-ssl - when finding nnrpd log lines. Patch from Marco d'Itri. - -2004-08-25 rra - - * trunk/samples/innreport.conf.in: Fix an inconsistency between the - commented-out html_dir and the commented-out title line. (Debian - bug #255324.) - -2004-07-20 rra - - * trunk/configure, trunk/configure.ac, trunk/include/config.h.in: - fseeko and ftello weren't being checked for correctly; they were - added to AC_REPLACE_FUNCS if not found, but HAVE_FSEEKO wasn't - being defined properly. (Same for ftello.) - -2004-07-20 hkehoe - - * trunk/site/Makefile: Add missing PATH_NNRPACCESS definition - - * trunk/history/hisv6/hisv6.c: Need to #include "inn/innconf.h" to - get at the innconf variable. - -2004-07-19 hkehoe - - * trunk/frontends/ovdb_server.c: Need to ignore SIGPIPE to prevent - possible process death - -2004-07-16 rra - - * trunk/innd/art.c: The overview copying loop has two indexes; make - sure to advance both of them when unfolding. - -2004-07-15 rra - - * trunk/support/mkchangelog: Assume that cvs2cl is on the user's - path. - - * trunk/README, trunk/doc/pod/readme.pod: Change a few Internet - Software Consortium references to Internet Systems Consortium. - - * trunk/lib/date.c: Update a few comments to reflect the - obsolescence of the old parsedate parser. - - * trunk/tests/lib/date-t.c: Test the results of makedate against - parsedate_rfc2822, removing the use of parsedate. It's safe to do - this since we test parsedate_rfc2822 against known dates - separately. - - * trunk/lib/date.c, trunk/tests/lib/date-t.c: Modify - parsedate_rfc2822_lax to assume the local time zone if no time - zone is given at all, rather than using UTC. (If an unparsable - time zone is given, UTC is still assumed.) - - * trunk/scripts/innreport_inn.pm: Add support for the new ctlinnd - command logging format. - - * trunk/configure, trunk/configure.ac, trunk/include/config.h.in: - Only check for a PAM library if one of pam/pam_appl.h or - security/pam_appl.h is found. IRIX has a PAM library but no - header libraries, meaning that we don't want to try to link - ckpasswd against it. - -2004-07-11 rra - - * trunk/innd/Makefile, trunk/nnrpd/Makefile: Shuffle the order of - libraries to put Perl and Python first, then SASL and SSL, and - then the additional libraries. Not only does this fix a few - problems on platforms where linking order matters, but it's much - less likely that the path to the Perl library will have some - other bum version of another library than vice versa. - -2004-07-03 rra - - * trunk/nnrpd/list.c: Always show the SASL: portion in the AUTHINFO - line in LIST EXTENSIONS even if there are no supported - mechanisms, to match a change in the latest AUTHINFO draft. - - * trunk/lib/innconf.c: The TLS attributes in inn.conf from the SASL - contribution were missed in the original commit. - -2004-06-29 rra - - * trunk/CONTRIBUTORS, trunk/innfeed/host.c: Fix an error reporting - bug when checking the bounds of real values. Reported by Sergey - Babitch. - - * trunk/innfeed/main.c: Log the correct new logging level when it - is being increased or decreased. Patch from Sergey Babitch. - - * trunk/doc/Makefile: hook-tcl is no more. - -2004-06-26 rra - - * trunk/innd/art.c: In ARTparsebody, move past CRLF correctly so - that we don't think the LF is always unmatched. Reported by - Christophe Wolfhugel. - -2004-06-12 hkehoe - - * trunk/Makefile.global.in: Fix to make sure STORAGE_LIBS is - assigned properly - - * trunk/INSTALL, trunk/doc/pod/install.pod: Add new compression - functionality to ovdb using zlib Remove the paragraph that says - ovdb is experimental - - * trunk/Makefile.global.in, trunk/doc/man/ovdb.5, - trunk/doc/pod/ovdb.pod, trunk/frontends/ovdb_init.c, - trunk/frontends/ovdb_stat.c, trunk/include/config.h.in, - trunk/samples/ovdb.conf, trunk/storage/ovdb/ovdb-private.h, - trunk/storage/ovdb/ovdb.c: Add new compression functionality to - ovdb using zlib - - * trunk/configure, trunk/configure.ac: Add BerkeleyDB 4.2 to search - Add zlib test for new compression code in ovdb - - * trunk/m4/zlib.m4: zlib test for new compression code in ovdb - - * trunk/m4/berkeleydb.m4: Add 4.2 to BerkeleyDB search - -2004-06-11 rra - - * trunk/innd/cc.c: Argh. Another use of i far later in the routine - that parses incoming commands, getting the length of the buffer - wrong. Fixed. - - * trunk/innd/art.c: Only call ARTcheckheader when we have the - entire header, since otherwise it will mark the header as a - duplicate and act as if it wasn't seen at all. I'm still a bit - confused about exactly how that code works, but the previous code - was definitely wrong. Also be a bit more careful about counting - header lines, just because I noticed it (I don't think we - actually use that information anywhere). - -2004-06-10 hkehoe - - * trunk/lib/qio.c: Avoid infinite loop if st_blksize == 0 - - * trunk/expire/makehistory.c: Don't exit if a bad overview line is - found, skip over it instead. - - * trunk/tests/lib/qio-t.c: Make sure that buffer_size is always at - least as large as QIO_BUFFERSIZE but still a multiple of - st_blksize. - - * trunk/lib/qio.c: Make sure that buffer_size is always at least as - large as QIO_BUFFERSIZE but still a multiple of st_blksize. - -2004-06-10 rra - - * trunk/innd/cc.c: Nul-terminate the command buffer correctly. - -2004-06-09 rra - - * trunk/MANIFEST: Updates for SASL support and the innupgrade test - suite. - - * trunk/tests/TESTS, trunk/tests/util/innupgrade.t, - trunk/tests/util/upgrade, trunk/tests/util/upgrade/inn.conf, - trunk/tests/util/upgrade/inn.conf.ok, - trunk/tests/util/upgrade/newsfeeds, - trunk/tests/util/upgrade/newsfeeds.ok, - trunk/tests/util/upgrade/sasl.conf: Add a test suite for - innupgrade. - - * trunk/CONTRIBUTORS, trunk/NEWS, trunk/doc/man/Makefile, - trunk/doc/man/inn.conf.5, trunk/doc/pod/Makefile, - trunk/doc/pod/inn.conf.pod, trunk/doc/pod/news.pod, - trunk/include/inn/innconf.h, trunk/include/inn/nntp.h, - trunk/include/nntp.h, trunk/nnrpd/Makefile, - trunk/nnrpd/article.c, trunk/nnrpd/commands.c, - trunk/nnrpd/line.c, trunk/nnrpd/list.c, trunk/nnrpd/misc.c, - trunk/nnrpd/nnrpd.c, trunk/nnrpd/nnrpd.h, trunk/nnrpd/sasl.c, - trunk/nnrpd/tls.c, trunk/nnrpd/tls.h, trunk/samples/Makefile, - trunk/scripts/innupgrade.in, trunk/site/Makefile: Implementation - of SASL authentication support for nnrpd from Ken Murchison. - - As part of this support, the old method for handling TLS - configuration in nnrpd had to be changed, since sasl_config.c was - a hacked version of internal libsasl code and conflicted with - library symbols. The four configuration options that were in - sasl.conf have been moved to inn.conf (and underscores removed to - fit with the rest of the inn.conf options), and innupgrade has - been updated to know how to make that change. - - * trunk/storage/ovdb/ovdb.c: Clean up warnings introduced by the - last change. - -2004-06-08 vinocur - - * trunk/doc/man/Makefile: Filename should be 'actsyncd.8' not - 'actsynd.8' - -2004-06-08 hkehoe - - * trunk/doc/man/ovdb.5, trunk/doc/pod/ovdb.pod, - trunk/samples/ovdb.conf: Update docs for nocompact option - - * trunk/storage/ovdb/ovdb.c: Mirror 1.61.2.6 fix - -2004-06-08 rra - - * trunk/tests/innd/artparse-t.c: We're no longer rejecting articles - with empty headers in the parsing phase. - - * trunk/lib/date.c: Handle abbreviations correctly when parsing - legacy months. - -2004-06-07 rra - - * trunk/tests/lib/date-t.c: Add tests for parsedate_rfc2822 and - parsedate_rfc2822_lax. - - * trunk/include/libinn.h, trunk/lib/date.c: Add - parsedate_rfc2822_lax. - -2004-06-06 rra - - * trunk/innd/art.c: On further reflection, undo the change to allow - whitespace around message IDs, since right now the whitespace may - be included in the hash. This is the right idea, but we're going - to have to put more intelligence in the parsing to extract just - the message ID. - - * trunk/innd/art.c: Accept empty headers and include leading space - (after the space following the colon) as part of the value of the - header. Allow leading and trailing space around message IDs. RFC - 2822 allows comments as well, but that's too much for right now. - -2004-06-03 rra - - * trunk/innfeed/main.c: Exit 0 when checking the configuration if - the configuration is fine. Patch from Sergey Babitch. - - * trunk/frontends/rnews.c: Fix the comments from the last patch. - It's not that rnews is setuid root, it's that we want to make - sure we don't write out spool files as root. The normal case is - that either rnews has no special privileges at all (and can only - be executed by people already in the news group), or is setuid - news (in which case we do nothing, since there's no need to - change the real UID to the news user). - - * trunk/frontends/rnews.c: The code for changing users was intended - to handle the case where rnews was setuid news, but we don't ever - install it that way (for reasons that I can't remember at the - moment). Instead, we sometimes install it setuid root. - - This should be looked at closer in the future, since I think that - setuid news should be sufficient. But in any event, - setuid(geteuid()) is going to do nothing useful at all in a - setuid root program. Instead, if either the real or effective - UIDs are 0, figure out the UID of the news user and setuid to it. - If we're setuid news, don't do anything at all. I believe this - will work in both configurations. - - Based on a problem reported by Matthias Scheler. - -2004-06-02 hkehoe - - * trunk/storage/ovdb/ovdb.c: Mirror 1.61.2.5 bugfix - - * trunk/history/hisv6/hisv6.c: Mirror 1.11.2.2 change - - * trunk/lib/dbz.c: Mirror 1.58.2.2 changes - -2004-05-27 rra - - * trunk/MANIFEST, trunk/doc/man/buffindexed.conf.5, - trunk/doc/pod/Makefile, trunk/doc/pod/buffindexed.conf.pod: - Convert buffindexed.conf documentation to POD. - -2004-05-26 rra - - * trunk/MANIFEST, trunk/doc/man/buffchan.8, trunk/doc/pod/Makefile, - trunk/doc/pod/buffchan.pod: Convert buffchan documentation to - POD. - - * trunk/TODO: Note that filechan is just a simplified version of - buffchan. - - * trunk/TODO: Lots of updates. Lots of things have already been - done! - - * trunk/MANIFEST, trunk/doc/man/archive.8, trunk/doc/pod/Makefile, - trunk/doc/pod/archive.pod: Convert the archive man page to POD. - - * trunk/doc/man/actsync.8, trunk/doc/pod/actsync.pod: Add the - standard attribution for the POD conversion. - - * trunk/MANIFEST, trunk/Makefile.global.in, trunk/doc/man/Makefile: - Get rid of putman.sh. The other formats that it supports are all - very obsolete, and basically everything supports standard nroff - man pages now. - - Also remove the old actsynd.8 man page on make install and don't - try to install a regular actsyncd.8 page. - - * trunk/doc/man/Makefile: Add a comment about the actsyncd.8 link. - - * trunk/MANIFEST, trunk/doc/man/Makefile, trunk/doc/man/actsync.8, - trunk/doc/pod/Makefile, trunk/doc/pod/actsync.pod: Convert the - actsync man page to POD. Just symlink actsyncd.8 to actsync.8 - rather than installing a stub man page that tells the user to - look at a different man page. - - * trunk/Makefile.global.in, trunk/configure, trunk/configure.ac: - Check for ln -s and make $(LN_S) available to makefiles. - - * trunk/Makefile, trunk/site/Makefile: Automatically create an - empty history database on a first-time install. - - * trunk/nnrpd/post.c: If the user is not allowed to approve - messages, reject postings containing an Approved header even to - unmoderated groups (some other site may consider the group to be - moderated). - -2004-05-25 rra - - * trunk/innd/art.c, trunk/innd/innd.h: The poster (Sender or From, - whichever is provided) is only used in the infrequently-called - ARTcancelverify, so remove it from ARTDATA and don't calculate it - for every article. Just calculate it in ARTcancelverify when it's - actually needed. - - * trunk/innd/art.c, trunk/innd/innd.h: Remove Replyto from ARTDATA; - we set it but never used it. - -2004-05-24 rra - - * trunk/frontends/cnfsstat.in: More fixes for arithmetic on numbers - that are larger than the integer size. Patch from Christoph - Biedl. - - * trunk/TODO: The configuration parser has been finished. - - * trunk/include/inn/confparse.h, trunk/lib/confparse.c, - trunk/tests/lib/config/errors, trunk/tests/lib/config/groups, - trunk/tests/lib/config/include, trunk/tests/lib/config/lists, - trunk/tests/lib/config/reals, trunk/tests/lib/config/recurse, - trunk/tests/lib/config/symlink, trunk/tests/lib/config/warn-bool, - trunk/tests/lib/config/warn-int, - trunk/tests/lib/config/warn-real, - trunk/tests/lib/config/warn-string, - trunk/tests/lib/config/warnings, trunk/tests/lib/confparse-t.c: - Finish the new configuration parser. Adds implementations of - paramters that take lists, parameters that take real numbers, - full support for groups, and support for including other files. - Also improve the testing of string parameters. - - * trunk/support/install-sh: Don't chown directories that already - exist. - - * trunk/tests/libtest.c, trunk/tests/libtest.h: Add ok_double. - -2004-05-24 hkehoe - - * trunk/innd/art.c: ARTparseheader has void return value, so don't - put call of ARTparsebody as an argument to return - -2004-05-23 vinocur - - * trunk/innd/art.c: Bugfix from previous changes, supplied by Russ. - -2004-05-22 vinocur - - * trunk/doc/man/mailpost.8, trunk/doc/pod/mailpost.pod: Clarify the - units for the -c argument, and discuss briefly what comprises a - reasonable range. - -2004-05-21 rra - - * trunk/tests/runtests.c: Minor quality of output fixes. Get - pluralization correct and always include the count of skipped - tests. - - * trunk/tests/lib/date-t.c: Skip the test if the system returns a - +0000 time zone result in the Newfoundland time zone, since that - means the system just doesn't know about the time zone. - - * trunk/tests/lib/messages-t.c: ssize_t is not compatible with int - in the waitpid argument on AIX. - - * trunk/tests/util/innbind-t.c: Fix a bad return value in the - non-IPv6 case. - - * trunk/lib/getaddrinfo.c, trunk/tests/lib/getaddrinfo-t.c: AIX - doesn't even have AI_NUMERICHOST. - - * trunk/backends/innbind.c: Zero sockaddr_in and sockaddr_in6 - structs before using them. - - * trunk/tests/storage/makehistory.t: Handle more variation in the - wc -l output. - - * trunk/tests/storage/archive.t, trunk/tests/storage/sm.t: Test - wants =, not ==. bash, being nicely unportable, of course doesn't - warn you about the latter even when running in /bin/sh mode. - - * trunk/configure, trunk/m4/sendfd.m4: Print out more output if the - file descriptor passing test fails, just for curious exploration. - -2004-05-21 vinocur - - * trunk/frontends/pullnews.in: Add an option to automatically - generate Xref headers from any articles which lack them (e.g. - when moving articles over from an old Netscape Collabra server). - - Suggested by Jennifer Luisi, many moons ago. - -2004-05-21 rra - - * trunk/innd/cc.c: Fix the logging of ctlinnd commands, which was - picking up a nul and two trailing characters because of an - incorrect buffer length. - - * trunk/innd/art.c: Add a missing va_end in ARTerror. (I wish GCC - had a diagnostic for this.) - - * trunk/doc/man/inn.conf.5, trunk/doc/pod/inn.conf.pod: Document - that maxartsize is in wire format. - - * trunk/tests/innd/artparse-t.c: Also check that the parse state is - correct every step along the way when dribbling the article - through one byte at a time, and make sure that the data->Body - offset is correct. - - * trunk/tests/lib/wire-t.c: Add tests for wire_findbody in the - degenerate case of an article with no headers (and a completely - empty article). - - * trunk/lib/wire.c: Handle the degenerate case of an article with - no headers. - - * trunk/innd/art.c: data->Body was off by two; it should be after - the blank line dividing the headers from the body. - - * trunk/MANIFEST, trunk/tests/Makefile, trunk/tests/TESTS, - trunk/tests/innd, trunk/tests/innd/.cvsignore, - trunk/tests/innd/artparse-t.c, trunk/tests/innd/fakeinnd.c, - trunk/tests/storage/articles/5, trunk/tests/storage/articles/6, - trunk/tests/storage/articles/bad-empty, - trunk/tests/storage/articles/bad-hdr-empty, - trunk/tests/storage/articles/bad-hdr-nospc, - trunk/tests/storage/articles/bad-hdr-space, - trunk/tests/storage/articles/bad-hdr-trunc, - trunk/tests/storage/articles/bad-long-cont, - trunk/tests/storage/articles/bad-long-hdr, - trunk/tests/storage/articles/bad-no-body, - trunk/tests/storage/articles/bad-no-header, - trunk/tests/storage/articles/bad-nul-body, - trunk/tests/storage/articles/bad-nul-header: Add an extensive - test suite for the article parsing routines in innd, as well as a - harness allowing unit-testing of portions of innd without running - the whole program. - - * trunk/innd/art.c, trunk/innd/innd.h, trunk/innd/nc.c: Completely - rewrite ARTparse. Break it up into several separate functions, - with a function for parsing the headers, a separate one for - parsing the body, and a wrapper that also checks the article size - after an invocation of either and handles writing error messages - to the logs if necessary. - - Simplify the logic of ARTparse considerably by observing that if - there are fewer than five characters left to look at, we can't be - looking at the end of the article even if we're looking at a \r - and we can just return and wait for more data. This lets us use - lookahead when we see a \r without complicated logic to keep from - looking past the end of the article, and eliminates the need for - LastTerminator and LastCR. - - Remove the #define of EXECUTE_BITS, which wasn't used. Simplify - the determination of the feeding site for logging article - rejections. Move the additional steps required for large articles - (an additional syslog notice and a history file entry) out of - nc.c into art.c under ARTparse, allowing considerable - simplification of the CSgetheader case in NCproc. - -2004-05-20 rra - - * trunk/backends/Makefile: Fix the message printed when innbind - can't be installed setuid root. - - * trunk/storage/cnfs/cnfs.c: The return type of ntohl is - inconsistent on different platforms, so add casts to make sure - that the data type matches what warn is expecting. - - * trunk/doc/man/innbind.8, trunk/doc/pod/innbind.pod: Add - documentation for the new output format and for the new file - descriptor passing when STREAMS is supported. Add the additional - diagnostic messages that innbind can produce. - - * trunk/backends/innbind.c: Make some error messages that - correspond to the same error consistant, and change some dies to - sysdies to get system errors. - - * trunk/innd/nc.c: Don't list commands only available after MODE - READER in HELP output. - - * trunk/lib/network.c: Modify network_innbind to use the new - innbind semantics and expect output from it, and add the ability - to accept a passed file descriptor if needed. Modify the fallback - in network_bind_all for non-IPv6 to return a correct cound of - file descriptors if binding fails. Fix network_connect to avoid - an unnecessary close. - - * trunk/backends/innbind.c, trunk/tests/util/innbind-t.c: Remove - the code supporting -t for testing or -e for acting as a wrapper. - Heath came up with a much better solution. - - Add support for creating a socket and passing it back on standard - output to the parent process on systems that support STREAMS. - This should be exactly the systems where the standard bind - approach doesn't work, so this should cover everyone. innbind now - prints ok\n if it can bind an address and prints no\n followed - immediately by an ioctl to pass the file descriptor if the - creation fails due to permission denied. - - * trunk/authprogs/smbval/rfcnb-util.c: INADDR_NONE is signed on - Solaris. - - * trunk/tests/overview/overview-t.c: Don't delete the overview - until after we close it. - - * trunk/tests/lib/fakewrite.c: Some verions of GCC want more - aggressive casting in ?: operations to make sure both branches - have the same type. - - * trunk/storage/timecaf/caf.c: Avoid warnings on systems with a - signed .size field in stat output. - - * trunk/storage/cnfs/cnfs.c: Fix format specifiers on a few warning - messages that only showed up on Solaris as warnings for some - reason. - - * trunk/storage/buffindexed/buffindexed.c: OVclose didn't actually - close everything (discovered by running the test suite in AFS and - having it be unable to delete the overview buffers because they - were still open). - - * trunk/MANIFEST, trunk/configure, trunk/configure.ac, - trunk/include/config.h.in, trunk/m4/sendfd.m4: Add a probe for - whether file descriptor passing over pipes is supported using the - I_SETFD and I_RECVFD STREAMS ioctls. - -2004-05-19 rra - - * trunk/backends/innbind.c, trunk/tests/util/innbind-t.c: Set an - environment variable before exec in -e mode to use as a canary to - prevent exec loops. - - * trunk/tests/Makefile, trunk/tests/lib/buffer-t.c, - trunk/tests/lib/concat-t.c, trunk/tests/lib/conffile-t.c, - trunk/tests/lib/confparse-t.c, trunk/tests/lib/date-t.c, - trunk/tests/lib/dispatch-t.c, trunk/tests/lib/getaddrinfo-t.c, - trunk/tests/lib/hash-t.c, trunk/tests/lib/hashtab-t.c, - trunk/tests/lib/hstrerror-t.c, trunk/tests/lib/inet_aton-t.c, - trunk/tests/lib/inet_ntoa-t.c, trunk/tests/lib/innconf-t.c, - trunk/tests/lib/list-t.c, trunk/tests/lib/md5-t.c, - trunk/tests/lib/memcmp-t.c, trunk/tests/lib/messages-t.c, - trunk/tests/lib/mkstemp-t.c, trunk/tests/lib/pread-t.c, - trunk/tests/lib/pwrite-t.c, trunk/tests/lib/qio-t.c, - trunk/tests/lib/setenv-t.c, trunk/tests/lib/snprintf-t.c, - trunk/tests/lib/strerror-t.c, trunk/tests/lib/strlcat-t.c, - trunk/tests/lib/strlcpy-t.c, trunk/tests/lib/tst-t.c, - trunk/tests/lib/uwildmat-t.c, trunk/tests/lib/vector-t.c, - trunk/tests/lib/wire-t.c, trunk/tests/lib/xwrite-t.c, - trunk/tests/overview/overview-t.c: Call test_init in all C test - programs, which requires linking some of the test programs - against libtest.o that weren't previously using it. Also fix up - some dependencies in the Makefile. - - * trunk/tests/util/innbind-t.c: Call test_init. Also test the new - innbind -e mode. Skip the IPv6 tests if we're unable to create an - IPv6 socket rather than failing them. - - * trunk/tests/libtest.c, trunk/tests/libtest.h: Add a new test_init - function that sets standard output to be line buffered and then - prints out the test count. - - * trunk/backends/innbind.c: Unfortunately, this has now gotten more - complicated (thanks, Solaris). - - Add two additional modes. The first, innbind -t , will test - using innbind to bind a socket to that port to see if it works - correctly. The inability to bind sockets in a setuid subprocess - unfortunately can't be detected at configure time (because we - need a setuid helper program), so this will have to be used at - run-time. - - The second mode, innbind -e, will both create the sockets and - bind them as specified on the command line, and then exec the - program given on the command line, with the options given there, - adding an additional option -p followed by a comma-separated list - of the bound file descriptors. This is equivalent to the old - inndstart program, but more flexible and doesn't require ever - parsing any configuration files while root. - - The only library code used while root is just buffer_*, vector_*, - and the message functions. - - * trunk/lib/network.c: If we can, do the bind directly without - invoking innbind. Don't warn when unable to create an IPv6 socket - (but still return failure) if and only if the failure was because - IPv6 isn't supported by the operating system. Use the existing - IPv4 and IPv6 bind code for network_bind_all rather than doing - things separately. - - * trunk/tests/runtests.c: Update the coding style with respect to - multiline statements and the structure of if and for blocks. Try - to be better about never presenting system error messages on the - same line as test output and always flushing test output before - aborting. If stdout is a tty, display a count of tests as they - execute. - - * trunk/backends/innxbatch.c: Use notice, warn, and syswarn instead - of calling syslog directly and sometimes separately calling warn. - We lose the tailoring of messages to syslog vs. standard output, - but the messages are still quite readable and this is much - simpler. - - * trunk/backends/batcher.c: Use the right format for printing out - total bytes. (Having format checking with notice is a good - thing.) - -2004-05-18 rra - - * trunk/innd/art.c: Fix the check for CR without LF, also broken - with the size_t change. - - * trunk/innd/art.c: Fix another signed vs. unsigned problem in the - check for too large of articles and restructure the code this - time to make it readable. - - * trunk/backends/crosspost.c: Use LOG_NOTICE intead of L_NOTICE - (don't bother converting to using the new message functions right - now). - - * trunk/backends/batcher.c: Use notice to handle printing - statistics. - - * trunk/history/his.c: Call syswarn instead of syslog. - - * trunk/storage/interface.c, trunk/storage/ov.c: Use warn and - syswarn instead of calling syslog or fprintf directly. - - * trunk/storage/buffindexed/buffindexed.c, - trunk/storage/buffindexed/shmem.c, trunk/storage/cnfs/cnfs.c, - trunk/storage/ovdb/ovdb.c, trunk/storage/timecaf/timecaf.c, - trunk/storage/timehash/timehash.c, - trunk/storage/tradspool/tradspool.c: Remove now-unnecessary - includes of syslog.h. - - * trunk/storage/ovdb/ovdb-private.h: Change more calls to syslog to - use warn instead. - - * trunk/frontends/ovdb_server.c: Replace commented out calls to - syslog(LOG_DEBUG) with debug() calls. - - * trunk/storage/buffindexed/buffindexed.c, - trunk/storage/buffindexed/shmem.c, trunk/storage/cnfs/cnfs.c, - trunk/storage/ovdb/ovdb-private.h, trunk/storage/ovdb/ovdb.c, - trunk/storage/timecaf/caf.c, trunk/storage/timecaf/timecaf.c, - trunk/storage/timehash/timehash.c: Use warn, syswarn, and notice - to report errors and other information instead of calling syslog - directly. - - * trunk/frontends/ovdb_init.c: ovdb_errmode is no longer used; the - message functions are used instead. - - * trunk/doc/compliance-nntp: Fixed overview generation. - - * trunk/innd/art.c: Fix the overview generation to correctly unfold - headers and handle special characters per the latest NNTP draft. - - * trunk/expire/makehistory.c: Don't include the name of an - additional header if it's not found in the article; just leave - that field blank (per the latest NNTP draft). - - * trunk/MANIFEST, trunk/tests/TESTS, - trunk/tests/storage/articles/4, - trunk/tests/storage/etc/overview.fmt, - trunk/tests/storage/makehistory.t, trunk/tests/storage/overview, - trunk/tests/storage/overview/1-4: Add a basic test suite for - makehistory. Currently, all that it checks is overview - generation. - - * trunk/doc/man/makehistory.8, trunk/doc/pod/makehistory.pod, - trunk/expire/makehistory.c: Fix the overview generation to - correctly unfold headers and handle special characters per the - latest NNTP draft. Add a -S option to just print the overview - information to standard output, useful mainly for testing. - - * trunk/doc/man/makehistory.8, trunk/doc/pod/makehistory.pod: Sort - the options. - - * trunk/HACKING, trunk/doc/pod/hacking.pod: Remove the note about - the INSTALLED variable in Makefiles, since we don't use that any - more. - - * trunk/authprogs/Makefile, trunk/backends/Makefile, - trunk/control/Makefile, trunk/expire/Makefile, - trunk/frontends/Makefile, trunk/history/Make.methods, - trunk/history/Makefile, trunk/history/buildconfig.in, - trunk/innd/Makefile, trunk/innfeed/Makefile, trunk/lib/Makefile, - trunk/nnrpd/Makefile, trunk/scripts/Makefile, - trunk/storage/Make.methods, trunk/storage/Makefile, - trunk/storage/buffindexed/ovmethod.mk, - trunk/storage/buildconfig.in, - trunk/storage/tradindexed/ovmethod.mk: Drop the idiosyncratic - installation method that would fail to install programs if the - installed version was newer than the built version in favor of a - make install that works the way that people generally expect and - always installs the new binaries. - - * trunk/storage/ovdb/ovdb-private.h, trunk/storage/ovdb/ovdb.c: - Provide a TXN_START_NORETRY macro for transactions that will - never be retried, to suppress a warning about an unused label, - and use that macro. - - * trunk/Makefile.global.in: Configure Emacs to use makefile-mode - for this file. Tabify it, since Emacs will now maintain tabs - automatically like it does for makefile-mode. Add -Werror to make - warnings now that all warnings have been vanquished from the - source tree (at least on Linux with gcc 3.3; we may need more - work on some other platforms). - - * trunk/innd/chan.c: Redo the initialization of CHANnull to not use - a partial struct initializer to avoid warnings. Don't re-clear - things that are already set to zero by assigning CHANnull to a - channel; it's just unnecessary noise. - -2004-05-17 rra - - * trunk/innd/python.c, trunk/nnrpd/python.c: #undef _POSIX_C_SOURCE - before including Python.h to avoid warnings from Python's - misguided redefinition of the symbol. - - * trunk/nnrpd/perl.c: Pass a length variable to HePV to suppress a - warning from the Perl headers. - - * trunk/include/conffile.h, trunk/lib/conffile.c: Change CONFfopen - to take a const char *. - - * trunk/doc/external-auth, trunk/doc/pod/external-auth.pod: An - external authenticator must, not may, return a username. - - * trunk/frontends/mailpost.in: Don't ever take the Date from the - "From " line, since that date will be in ctime format. Don't - require that a Date header be present; nnrpd can provide one. - - * trunk/storage/Make.methods: Use BUFF_DEBUG, not DEBUG, since the - latter is used for other things. - - * trunk/backends/batcher.c: Remove some dead code and be more - consistent about data types. - - * trunk/storage/buffindexed/shmem.c: Fix the printf modifiers in a - debug statement. - - * trunk/lib/inndcomm.c: Always use the maximum buffer size (64KB - - 1). The previous code generally only used a 4KB buffer to receive - replies from the server, which was too small for the output of - ctlinnd name at busy sites. Also fix a lot of coding style issues - and formatting. - - * trunk/include/inndcomm.h: Make the type of the message length - unsigned short; may as well use every bit that we have. - - * trunk/storage/buffindexed/buffindexed.c, - trunk/storage/buffindexed/ovmethod.mk: Use BUFF_DEBUG instead of - DEBUG to enable the main routine, since DEBUG is used for other - things. - - * trunk/storage/timecaf/caf.c, trunk/storage/timecaf/caf.h: Find a - few more places where the prototype of CAFFileCreate needed to - change. - - * trunk/frontends/pullnews.in: Authenticate after MODE READER, not - before. Reported by Tim Skirvin. - - * trunk/tests/lib/uwildmat-t.c: Add several additional tests for - the combination of * and UTF-8. - - * trunk/lib/uwildmat.c: Matching the UTF-8 character \303\206 - against *[^\303\206] wasn't working properly. Reported by Andrew - Gierth. - - * trunk/frontends/sm.c: Suppress notice messages, like tradspool - building its map file. - - * trunk/storage/ovdb/ovdb.c: Change csend to use xwrite and to - print a warning and return an error on failure rather than - calling exit (calling exit was starting a loop, since csend is - called by ovdb_close, which is called out of an atexit handler). - Modify the other functions to check the return value of csend. - This needs some more attention later, since we're currently - returning errors that may be indistinguishable from missing - articles. - - * trunk/storage/expire.c: Print out the error string from the - storage manager if removing a token during expiration fails. - - * trunk/doc/man/active.5, trunk/doc/pod/active.pod: Fix an - implication that articles filed in junk are only propagated to - sites that receive junk; they're propagated according to their - newsgroups header. - - * trunk/control/controlchan.in: Always include the system error - message when opening something fails. - - * trunk/lib/dbz.c: Use the portable mmap header and reformat the - initial comment to match INN standards. - - * trunk/doc/man/dbz.3, trunk/include/dbz.h, trunk/lib/dbz.c: Use - warn, syswarn, and debug in the dbz code instead of its previous - idiosyncratic error reporting with EDOM errno and its internal - DEBUG macro. - - * trunk/Makefile.global.in: Enable debugging when building with - make warnings. - - * trunk/control/gpgverify.in: Use the same code for finding the - keyring that pgpverify uses, so that the news administrator can - use ~news/.gnupg if they want. Reported by Toon van der Pas. - - * trunk/backends/batcher.c: Use fwrite rather than fprintf to - output the article since it handles embedded nuls correctly. - - * trunk/HACKING, trunk/INSTALL, trunk/MANIFEST, trunk/TODO, - trunk/doc/hook-perl, trunk/doc/hook-python, trunk/doc/hook-tcl, - trunk/doc/man/ctlinnd.8, trunk/doc/man/inn.conf.5, - trunk/doc/man/innd.8, trunk/doc/pod/inn.conf.pod, - trunk/doc/pod/innd.pod, trunk/doc/pod/install.pod, - trunk/frontends/ctlinnd.c, trunk/include/inndcomm.h, - trunk/include/paths.h.in, trunk/innd/Makefile, trunk/innd/art.c, - trunk/innd/cc.c, trunk/innd/innd.c, trunk/innd/innd.h, - trunk/innd/python.c, trunk/innd/status.c, trunk/innd/tcl.c, - trunk/samples/filter.tcl, trunk/samples/startup.tcl, - trunk/site/Makefile: Rip out all of the Tcl code, which has - suffered serious bit rot and is causing innd to segfault randomly - when compiled in, even when no Tcl filters are defined. - - * trunk/storage/timecaf/caf.c: Carry a buffer size around to - eliminate a use of strcpy. - - * trunk/nnrpd/commands.c, trunk/nnrpd/nnrpd.c, trunk/nnrpd/nnrpd.h, - trunk/nnrpd/perl.c, trunk/nnrpd/post.c, trunk/nnrpd/python.c, - trunk/nnrpd/track.c: Use strlcpy instead of strcpy, passing some - more buffer lengths into functions and resorting to just coding - the buffer length in the last few places for right now, until the - code can be restructured. - - * trunk/nnrpd/tls.c: Use strlcpy and snprintf instead of strcpy and - sprintf. - - * trunk/backends/actsync.c, trunk/backends/innxbatch.c, - trunk/backends/innxmit.c, trunk/backends/nntpget.c, - trunk/doc/man/libinn.3, trunk/frontends/feedone.c, - trunk/frontends/inews.c, trunk/frontends/rnews.c, - trunk/include/libinn.h, trunk/lib/clientlib.c, - trunk/lib/defdist.c, trunk/lib/localopen.c, trunk/lib/remopen.c, - trunk/nnrpd/post.c: Modify NNTPconnect, NNTPlocalopen, and - NNTPremoteopen to take the length of the error buffer as a final - parameter rather than just assuming how long it is. Eliminate a - use of strcpy in the process. - - * trunk/storage/buffindexed/buffindexed.c: Include inn/messages.h - for notice. - - * trunk/innfeed/connection.c, trunk/innfeed/endpoint.c: Replace - strcpy with strlcpy. - - * trunk/innd/site.c: Redo SITEinfo using buffer_sprintf to avoid - any use of strcpy. - - * trunk/innd/keywords.c: Use strlcpy instead of strcpy. - - * trunk/innd/cc.c: Switch the remaining uses of strcpy to strlcpy. - - * trunk/innd/cc.c: Fix the logging of ctlinnd commands to be a bit - more readable and to not use strcpy. It's also tolerant of nul - inside messages now. - - * trunk/innd/cc.c: Move CClowmark to a better place in the file. - Use buffer_sprintf in CCname instead of sprintf with a buffer. - Use buffers somewhat better in other places here. Formatting - fixes for #ifdef/#endif. - - * trunk/innd/cc.c: Use buffer_sprintf to build the return from - CCmode, eliminating another unsafe use of strcpy. - - * trunk/frontends/ovdb_stat.c: Rework the display routines to avoid - strcpy (and most use of buffers). - - * trunk/frontends/inews.c: Use strlcpy rather than strcpy. - - * trunk/INSTALL, trunk/doc/pod/install.pod: Add a note about having - to restore the setuid bit on ckpasswd after a make update if you - want that configuration. - - * trunk/storage/buffindexed/buffindexed.c: Use notice rather than - syslog for the message about initializing a new buffer so that - the test suite doesn't spam syslog. - - * trunk/storage/buffindexed/shmem.c: Use notice rather than syslog - for the notice about newly created shared memory segments so that - the test suite doesn't spam syslog. Use debug for the notice that - spams the error log rather than #ifdefing it out. - - * trunk/storage/tradspool/tradspool.c: Use warn, syswarn, and - notice rather than calling syslog directly. - -2004-05-16 rra - - * trunk/nnrpd/post.c: Use the same code for printing header values - as is used everywhere else in nnrpd when mailing articles so as - to correctly handle the spaces after the colons. Patch from - Andreas M. Kirchwitz. - - * trunk/include/inn/messages.h, trunk/lib/messages.c, - trunk/tests/lib/messages-t.c: Remove the trace code. Failed - experiment. I may add something like this again when I actually - convert the existing trace code in INN, but this was developed in - the absence of any use and I don't think it's actually what we - want. - - * trunk/doc/man/radius.conf.5, trunk/doc/pod/radius.conf.pod: The - parser has been fixed so that # can now be included in a radius - secret. - - * trunk/MANIFEST, trunk/tests/Makefile, trunk/tests/TESTS, - trunk/tests/lib, trunk/tests/lib/.cvsignore, - trunk/tests/lib/conffile-t.c: Add a test for lib/conffile.c, - since I just fixed some tricky bugs and needed to verify the fix - and it looks like this parser will be with us for at least one - more release. - - * trunk/lib/conffile.c: Correctly support # inside quoted strings - (not considering it to be a comment). Fix a bounds checking error - when parsing a configuration file that contains an unmatched - double quote. Be a bit more careful about boundary checking. - Based on analysis by Piotr Klaban. - - * trunk/doc/man/actsync.8: Document the rules for valid newsgroup - names. - - * trunk/CONTRIBUTORS: Add Ilya Voronin. - - * trunk/frontends/cnfsheadconf.in: Zero-pad length and free values - to exactly seventeen characters. Based on a patch from Ilya - Voronin. - - * trunk/CONTRIBUTORS: Add Jacek Konieczny. - - * trunk/storage/timecaf/caf.c: When retrieving an article, make - sure that it is fully contained in the CAF file (for additional - robustness in the presence of a broken spool). Patch from Jacek - Konieczny. - - * trunk/innd/art.c, trunk/innd/chan.c, trunk/innd/innd.h, - trunk/innd/nc.c: Use ptrdiff_t for pointer differences and size_t - for all offsets into buffers that are initialized with pointer - differences. Based on a patch from Jacek Konieczny and necessary - for AMD64 support. - - * trunk/configure, trunk/configure.ac, trunk/include/config.h.in: - Check for and provide ptrdiff_t if needed. Require Autoconf 2.59 - or higher since it does a much better job of formatting the - --help output. Regenerage with 2.59, which results in some - formatting and help output changes. - - * trunk/backends/innxmit.c, trunk/expire/makehistory.c, - trunk/innd/chan.c, trunk/innd/nc.c, trunk/innd/site.c, - trunk/innfeed/article.c, trunk/innfeed/imap_connection.c, - trunk/innfeed/innlistener.c, trunk/innfeed/tape.c, - trunk/storage/cnfs/cnfs.c, trunk/storage/overdata.c, - trunk/storage/timecaf/caf.c: Cast all size_t values to unsigned - long and use %lu when printing them with printf and friends. - Based on a patch from Jacek Konieczny, needed for proper - functionality on AMD64. Also fixes one place where pointers were - cast to an int. - - * trunk/contrib/README: Add authmysql. - - * trunk/lib/innconf.c: Use an unsigned format to print unsigned - values in the invalid type error message. - - * trunk/frontends/ovdb_stat.c: Cast size_t to unsigned long for - printing. - - * trunk/include/clibrary.h: Fix __format__ attribute for snprintf. - - * trunk/samples/control.ctl: Update to latest upstream version. - -2004-05-04 rra - - * trunk/samples/control.ctl: Add a stub for a.bsu.*. - -2004-04-07 rra - - * trunk/lib/vector.c: Fix a memory leak in vector_resize. Patch - from Ray Miller. - - * trunk/MANIFEST: Add MySQL authenticator. - - * trunk/contrib/authmysql, trunk/contrib/authmysql.config: Add the - MySQL authenticator from Daniel Marsh. - - * trunk/doc/man/radius.conf.5, trunk/doc/pod/radius.conf.pod: - Adjust for the parser change that requires radius.conf files to - consist of blocks wrapped in server { }. - -2004-03-08 rra - - * trunk/lib/setenv.c: Use strlcpy and strlcat instead of strcpy and - strcat. The latter was fully safe, but this way it doesn't turn - up false positives when searching for uses of strcpy and strcat - to get rid of. - - * trunk/MANIFEST, trunk/tests/TESTS, trunk/tests/storage/archive.t: - Add a test suite for archive. - - * trunk/backends/archive.c: Completely rewritten using current - coding style and the new support data structures from libinn. The - original motivation was to eliminate some questionable uses of - strcpy deep in the code that constructs file paths. - - * trunk/tests/storage/etc/inn.conf: Set patharchive as well. - - * trunk/tests/storage/articles/bad-msgid, - trunk/tests/storage/articles/bad-subj: Bad articles for testing - behavior with malformed messages. - - * trunk/tests/storage/articles/3: Add a tab in the Subject line so - that we have one of those floating around. - -2004-03-07 rra - - * trunk/MANIFEST, trunk/tests/TESTS, trunk/tests/storage, - trunk/tests/storage/articles, trunk/tests/storage/articles/1, - trunk/tests/storage/articles/2, trunk/tests/storage/articles/3, - trunk/tests/storage/db, trunk/tests/storage/db/active, - trunk/tests/storage/etc, trunk/tests/storage/etc/inn.conf, - trunk/tests/storage/etc/storage.conf, trunk/tests/storage/sm.t: - Add a test suite for sm. - - * trunk/doc/man/sm.1, trunk/doc/pod/sm.pod: Add documentation of - the new -s option. - - * trunk/frontends/sm.c: Add a new -s option to store an article - directly into the storage subsystem (mostly for testing, but it - might be useful for other things). - -2004-03-06 rra - - * trunk/include/inn/buffer.h, trunk/lib/buffer.c, - trunk/tests/lib/buffer-t.c: Add buffer_read_all and - buffer_read_file, which will eventually replace the functions in - lib/readin.c. - - * trunk/doc/man/sm.1, trunk/doc/pod/sm.pod: Document the exit - status. - - * trunk/frontends/sm.c: Return a non-zero exit status if any - operation on one of the provided tokens fails. Fixes Debian bug - #141750. - -2004-03-03 hkehoe - - * trunk/backends/inndf.c: inndf -n would get stuck in an infinite - loop if OVgroupstats failed - -2004-03-03 kondou - - * trunk/backends/innxmit.c: diablo expects empty line at the end - for header feed - -2004-02-25 kondou - - * trunk/nnrpd/post.c: correct Message-ID should be shown in post - response even if spooled - -2004-02-24 hkehoe - - * trunk/storage/ovdb/ovdb.c: * Fix to prevent recursion on exit - while in readserver mode. * Update to track searches, because - it's possible that closesearch does not get called to match an - opensearch. - - * trunk/frontends/ovdb_server.c: * If readertab grows, need to - initialize the new elements. * Update to track searches, because - it's possible that closesearch does not get called before the - client disconnects. - -2004-02-20 rra - - * trunk/samples/control.ctl: Don't pick a particular it-alt.* - signer. - -2004-01-26 rra - - * trunk/storage/ovdb/ovdb-private.h: Transaction functions as - methods instead of global functions were introduced in BerkeleyDB - 4.0, not 4.1. - - * trunk/backends/inndf.c: Work around how ReiserFS reports 0 free - inodes with Linux 2.6. Patch from Marco d'Itri. - - * trunk/lib/innconf.c: Ensure hismethod is set in inn.conf. - -2004-01-25 rra - - * trunk/doc/man/mailpost.8, trunk/doc/pod/mailpost.pod, - trunk/frontends/mailpost.in: Add a -p option to specify the port - to which to post. - - * trunk/CONTRIBUTORS: Add Steve Youngs for debugging help. - - * trunk/frontends/inews.c: Don't use innconf->port to find the port - of the server, since that's actually the port on which innd is - running and nnrpd may be running separately. - - * trunk/frontends/rnews.c: Add a missing free when unspooling - failed messages. - - * trunk/innd/python.c: Insufficient memory was being allocated for - PYheaditem, since it also holds the body of the message and the - line count. - - * trunk/innfeed/article.c, trunk/innfeed/article.h, - trunk/innfeed/buffer.c, trunk/innfeed/buffer.h, - trunk/innfeed/connection.c, trunk/innfeed/connection.h, - trunk/innfeed/endpoint.c, trunk/innfeed/endpoint.h, - trunk/innfeed/host.c, trunk/innfeed/host.h, - trunk/innfeed/innfeed.h, trunk/innfeed/innlistener.c, - trunk/innfeed/innlistener.h, trunk/innfeed/main.c, - trunk/innfeed/misc.c, trunk/innfeed/misc.h, - trunk/innfeed/procbatch.in, trunk/innfeed/tape.c, - trunk/innfeed/tape.h: Remove the separate license statements, - since the license of all of INN now matches the license of - innfeed. - - * trunk/README, trunk/doc/pod/readme.pod: Insert the - acknowledgement of UUNET and Berkeley (the latter isn't required - any more, I know). - - * trunk/LICENSE: Per Paul Vixie and Rich Salz, change the general - INN license to the current ISC license text, dropping the - advertising clause in the process. - - * trunk/backends/innxbatch.c, trunk/backends/innxmit.c: Add - volatile where needed to avoid warnings from setjmp/longjmp until - these programs can be restructured properly. Thanks to Ilya A. - Kovalenko for the technique. - -2004-01-14 rra - - * trunk/LICENSE: Add 2004 to the copyright statement. - -2004-01-12 rra - - * trunk/scripts/inncheck.in: The configure variable is now PERL. - -2004-01-12 kondou - - * trunk/storage/buffindexed/buffindexed.c: revert block size to the - original to keep compatibility - -2004-01-12 rra - - * trunk/backends/buffchan.c, trunk/backends/innxmit.c, - trunk/expire/fastrm.c: Take advantage of the new semantics of - QIOtoolong and the automatic skipping of the rest of the line. - - * trunk/lib/qio.c, trunk/tests/lib/qio-t.c: Change QIO to do - something more sane with lines that are too long. Rather than - returning too long of a line once and then returning a partial - line on the next try, consume all of the too-long line before - returning the first error. This way, the next call will still - return the next line of the file. - - * trunk/storage/buffindexed/buffindexed.c: Add another cast to - avoid warnings. - - * trunk/expire/makehistory.c: Fix warnings from fprintf of time_t. - - * trunk/Makefile: Remove config.status.lineno and configure.lineno - on make distclean. - - * trunk, trunk/.cvsignore: Ignore config.status.lineno and the - distribution staging directories and tarballs. - - * trunk/control/controlchan.in: Always use a local syslog socket on - FreeBSD, matching cnfsstat. - - * trunk/frontends/cnfsstat.in: Always use a local syslog socket on - Darwin. - - * trunk/storage/cnfs/cnfs.c: Fix the log message for moving to the - next cycbuff of a metacycbuff to actually print the correct new - cycbuff. Reported by Christophe Wolfhugel. - - * trunk/storage/cnfs/cnfs.c: Assuming off_t is larger than size_t - is a safer assumption than the inverse. Reported by Christophe - Wolfhugel. - - * trunk/include/portable/mmap.h: Add a define for mmap to cast the - return value. This gets rid of warnings on Solaris and is - otherwise cosmetic. - - * trunk/include/clibrary.h: Declare symlink if necessary. - - * trunk/configure, trunk/configure.ac, trunk/include/config.h.in: - Define _GNU_SOURCE to 1 if compiling on Linux with large files so - that we get the right declarations for pread and pwrite. - - * trunk/support/mksystem: Add a blank line before the closing - #endif. - - * trunk/support/mksystem: Don't try to preserve the comments from - config.h since they're often multi-line and it's too hard to work - out the logic in awk. - - * trunk/nnrpd/commands.c, trunk/nnrpd/nnrpd.c, trunk/nnrpd/nnrpd.h, - trunk/nnrpd/perm.c, trunk/nnrpd/post.c: Move the LLOGenable - global into nnrpd.h so that it's defined consistently. - - * trunk/storage/buffindexed, trunk/storage/buffindexed/.cvsignore: - Ignore buffindexed_d instead of debug. - - * trunk/storage/tradspool/tradspool.c: Rely on symlink failing on - platforms that don't have it rather than testing HAVE_SYMLINK and - cluttering the code. - - * trunk/MANIFEST, trunk/configure, trunk/configure.ac, - trunk/lib/Makefile, trunk/lib/symlink.c: Add a dummy symlink on - platforms that don't supply it. The function always fails - immediately with errno = ENOSYS, which simplifies code using - symlink. - - * trunk/storage/buffindexed/buffindexed.c: config.h has to be the - first header file included or large file compilation won't work - right. - -2004-01-10 rra - - * trunk/storage/overdata.c: Allow extra to be NULL in - overview_build. - - * trunk/authprogs/Makefile: Fix the library dependencies for the - various authentication programs. - -2004-01-08 rra - - * trunk/storage/buffindexed/buffindexed.c, - trunk/storage/buffindexed/shmem.c: Clean up various warnings in - the debugging mode and with the new shared memory code. - - * trunk/innd/innd.h, trunk/innd/newsfeeds.c, trunk/innd/site.c, - trunk/innd/util.c: Replace all remaining uses of FileGlue with - concatpath and remove FileGlue completely. - - * trunk/lib/mmap.c: Fix syntax error in the last change. - -2004-01-07 rra - - * trunk/innd/art.c: Don't use a static buffer for creating the - control message group to check whether we can store a control - message in a per-type newsgroup. - - * trunk/innd/icd.c: Include inn/mmap.h for msync_page, use the - right casts and formats when warning about a failure to msync. - - * trunk/include/inn/mmap.h, trunk/lib/mmap.c: msync_page should - return the return status of msync. - -2004-01-07 kondou - - * trunk/MANIFEST, trunk/storage/Make.methods, - trunk/storage/buffindexed/buffindexed.c, - trunk/storage/buffindexed/ovmethod.config, - trunk/storage/buffindexed/ovmethod.mk, - trunk/storage/buffindexed/shmem.c, - trunk/storage/buffindexed/shmem.h: buffindexed using shared - memory on ovbuff by Sang-yong Suh - -2004-01-07 rra - - * trunk/samples/control.ctl: Add it-alt.*. - -2004-01-05 rra - - * trunk, trunk/.cvsignore: Ignore configure.lineno, generated by - configure on some hosts. - - * trunk/configure, trunk/configure.ac, trunk/include/config.h.in: - Probe for sys/param.h if we need to include sys/mount.h, since - some versions of FreeBSD require sys/param.h be included first. - -2004-01-05 kondou - - * trunk/expire/makehistory.c, trunk/include/paths.h.in, - trunk/scripts/rc.news.in: leave overview rebuilt flag file to - renumber active when innd starts - -2004-01-04 kondou - - * trunk/innd/art.c, trunk/innd/chan.c, trunk/innd/icd.c, - trunk/innd/innd.h, trunk/innd/nc.c, trunk/innd/status.c, - trunk/samples/innreport.conf.in, trunk/scripts/innreport_inn.pm: - calculate rejected article size(in wire format) - - * trunk/configure, trunk/configure.ac: still sys/types.h is - required to check sockaddr_storage for OSX - -2004-01-02 rra - - * trunk/storage/tradindexed/tdx-group.c: Make robust against - references to index entries outside of the current length of the - group index when auditing and when doing normal operations. - - * trunk/storage/tradindexed/tdx-group.c: Improve the auditing a - little. Don't get caught in infinite loops when not fixing when - circular structure is encountered. Update group flags based on - the active file as well, treating the active file as canonical. - Create index entries for any groups listed in the active file - that aren't found in the overview database, even though innd does - this on startup anyway. - -2004-01-01 rra - - * trunk/control/controlchan.in: Force the Unix syslog socket for - Mac OS X, since otherwise the lack of an IP address in /etc/hosts - was causing difficulties. - -2003-12-30 rra - - * trunk/frontends/rnews.c: Provide better error messages after an - unexpected EOF from innd. - - * trunk/frontends/getlist.c: Fix syntax error in the last change. - Mea culpa. - -2003-12-29 rra - - * trunk/innd/cc.c: Don't close and reopen the history database - during reload if the server isn't running, since the history - database is closed with pause or throttle and reopened with go. - - * trunk/configure, trunk/configure.ac: Include more pre-requisite - headers for some probes, for Mac OS X. - - * trunk/lib/date.c: Increase the size of the parsing array for - parsedate_rfc2822. Reported by Jochen Erwied. - -2003-12-27 rra - - * trunk/MANIFEST, trunk/doc/man/motd.news.5, - trunk/doc/pod/Makefile, trunk/doc/pod/motd.news.pod: Rewrite - motd.news.5 in POD. - - * trunk/include/inn/network.h, trunk/innd/rc.c, - trunk/lib/network.c: Add back in the stripping of IP options from - IPv4 connections, moving the code into a function in the network - library. - - * trunk/doc/man/send-nntp.8: Don't try to document both send-nntp - and send-ihave on the same line; instead, break them into two - different lines in the SYNOPSIS. Requested by Eric Raymond. - - * trunk/frontends/getlist.c: The authinfo handling was completely - broken. Fixed with a patch from Jochen Erwied. - - * trunk/scripts/rc.news.in: Make sure there's always a newline - after the shutdown message for INN, even if it exits quickly. - - * trunk/samples/storage.conf: Replace with a sample file that does - something sensible by default (stores all articles in tradspool). - - * trunk/support/fixscript.in: Include the other necessary variables - to resolve libdir to a full path. - - * trunk/Makefile.global.in: exec_prefix needs to be set here in - order for the installation rules to work. - - * trunk/NEWS, trunk/doc/pod/news.pod: Document the switch to - Autoconf 2.57. - - * trunk/MANIFEST, trunk/tests/Makefile, trunk/tests/TESTS, - trunk/tests/overview, trunk/tests/overview/.cvsignore, - trunk/tests/overview/etc, - trunk/tests/overview/etc/buffindexed.conf, - trunk/tests/overview/overview-t.c, - trunk/tests/overview/tradindexed-t.c: Add tests for the - buffindexed overview method by making the existing tradindexed - tests more generic. - - * trunk/storage/buffindexed/buffindexed.c: Fix some subtle bugs - that prevented OVclose() followed by a new OVopen() from working - correctly. - -2003-12-26 rra - - * trunk/tests/Makefile: Fix a typo in the hstrerror rules. - - * trunk/innfeed/connection.c, trunk/innfeed/host.c: Add some - missing static declarations on function definitions. - - * trunk/include/portable/socket.h: Don't redefine ss_family and - ss_len if we're using our own sockaddr_storage. - - * trunk/storage/tradindexed/tdx-data.c: index_base should be - static. - - * trunk/configure, trunk/configure.ac: Fix the probes for - sig_atomic_t and socklen_t. - - * trunk/include/portable/socket.h: Define NETDB_INTERNAL if it's - not already defined, since getaddrinfo uses it. - - * trunk/storage/buffindexed/buffindexed.c, - trunk/storage/cnfs/cnfs.c, trunk/storage/timecaf/caf.c: Clean up - some more warnings that turned up on Solaris. - - * trunk/innd/cc.c, trunk/innd/innd.c, trunk/nnrpd/perm.c, - trunk/nnrpd/post.c: Avoid warnings when compiling without Perl - support by moving variable declarations into more appropriate - scopes or inside #ifdef. - - * trunk/lib/getaddrinfo.c: AI_INTERNAL_ALL was set incorrectly, - which turned up on hosts that didn't natively support - AI_NUMERICSERV. - - * trunk/tests/lib/getaddrinfo-t.c: Call test_freeaddrinfo instead - of freeaddrinfo. - - * trunk/tests/Makefile: The getaddrinfo tests require $LIBS for - -lsocket -lnsl. - - * trunk/configure, trunk/m4/socket.m4: Don't use sun as a variable - name when checking for SUN_LEN, since this is a #define constant - under Solaris. - - * trunk/frontends/cnfsstat.in: Fix the arithmetic to not truncate - in bad ways as much. Now uses BigFloat as well as BigInt. - - * trunk/scripts/inncheck.in: Fix a typo in the newsfeed check - breaking recognition of variables. - - * trunk, trunk/.cvsignore, trunk/HACKING, trunk/MANIFEST, - trunk/Makefile, trunk/Makefile.global.in, trunk/TODO, - trunk/aclocal.m4, trunk/authprogs/Makefile, - trunk/backends/Makefile, trunk/backends/innbind.c, - trunk/configure, trunk/configure.ac, trunk/configure.in, - trunk/contrib/Makefile, trunk/control/Makefile, - trunk/doc/pod/hacking.pod, trunk/expire/Makefile, - trunk/frontends/Makefile, trunk/history/Makefile, - trunk/include/acconfig.h, trunk/include/clibrary.h, - trunk/include/config.h.in, trunk/include/inn/defines.h, - trunk/include/paths.h.in, trunk/include/portable/socket.h, - trunk/innd/Makefile, trunk/innd/art.c, trunk/innd/site.c, - trunk/innfeed/Makefile, trunk/lib/Makefile, trunk/lib/date.c, - trunk/lib/getaddrinfo.c, trunk/lib/gettime.c, trunk/lib/qio.c, - trunk/lib/sockaddr.c, trunk/m4, trunk/m4/aux-libs.m4, - trunk/m4/berkeleydb.m4, trunk/m4/cc-c-o.m4, trunk/m4/compress.m4, - trunk/m4/inet-ntoa.m4, trunk/m4/int32.m4, trunk/m4/iov-max.m4, - trunk/m4/krb5.m4, trunk/m4/large-fpos.m4, trunk/m4/libtool.m4, - trunk/m4/mmap.m4, trunk/m4/modes.m4, trunk/m4/openssl.m4, - trunk/m4/paths.m4, trunk/m4/perl.m4, trunk/m4/prog-ensure.m4, - trunk/m4/python.m4, trunk/m4/sasl.m4, trunk/m4/sendmail.m4, - trunk/m4/snprintf.m4, trunk/m4/socket.m4, trunk/m4/syslog.m4, - trunk/m4/users.m4, trunk/m4/vamacros.m4, trunk/nnrpd/Makefile, - trunk/samples/Makefile, trunk/samples/inn.conf.in, - trunk/samples/innreport.conf.in, trunk/samples/newsfeeds.in, - trunk/samples/sasl.conf.in, trunk/scripts/inncheck.in, - trunk/scripts/innshellvars.in, trunk/scripts/innshellvars.pl.in, - trunk/scripts/innshellvars.tcl.in, trunk/scripts/news.daily.in, - trunk/storage/Make.methods, trunk/storage/Makefile, - trunk/storage/buffindexed/ovmethod.mk, - trunk/storage/tradindexed/ovmethod.mk, trunk/support, - trunk/support/.cvsignore, trunk/support/fixconfig.in, - trunk/support/fixscript.in, trunk/support/mksystem, - trunk/tests/Makefile, trunk/tests/lib/qio-t.c: Rewrite configure - using Autoconf 2.57. Break all of our self-contained macros out - into separate files in the m4 subdirectory to make them easier to - maintain and easier to use in other projects if anyone wants. - - This has wide-ranging side effects throughout code that uses - configure results. Makefile variables have been changed to be - more standard and follow a common pattern, and Makefile build - rules have changed accordingly. Some of the #defines in config.h - have also changed due to Autoconf changes or switches over to - using the Autoconf mechanism of doing things instead of our own - macros, requiring corresponding changes to the code. - - Add support/fixconfig and use it to do variable substitution in - the config files rather than using Autoconf directly, since we're - now using the standard path variables rather than doing it all - ourselves, and that means we have to expand shell variables - before substituting into configuration files. Also tweak the - include/paths.h handling for the same reason. - - Pull the non-Autoconf parts out of config.h into inn/options.h - and then include inn/options.h in config.h. Remove the need for a - config.h template entirely, fitting current Autoconf standards. - Update the handling of the bool type to fit the Autoconf - recommendation. - - * trunk/include/inn/options.h: A new installable header file that - contains all the compile-time options from the old acconfig.h - header. Note that this isn't currently clean from a namespace - perspective. - - * trunk/tests/lib/setenv-t.c, trunk/tests/lib/setenv.t: Adjust the - memory limits and allocation sizes to work on Linux, where more - of the data segment is already gone by the time the program - starts executing. - - * trunk/storage/trash/trash.c, trunk/storage/trash/trash.h: The - _next method shouldn't take a const ARTHANDLE since it frees the - old article. - - * trunk/nnrpd/cache.c: Fiddle with the casts to avoid a warning - about type-punning the exists pointer passed into tst_insert. - -2003-12-11 rra - - * trunk/samples/control.ctl: Update to current upstream. Picks up - new entries for x-privat.*, syd.*, bne.*, and canb.*. Update - melb.*. Fix the key signature for mensa.*. Include the new - microsoft.* rule that supports signed control messages. - - * trunk/control/pgpverify.in: Update to upstream release 1.25. Fix - the -test switch to actually do something and improve logging - output when logging to standard output. - -2003-12-10 rra - - * trunk/innd/rc.c: Remove the RC_fixoptions invocation entirely for - now. This may get added back into the more generic network code - for IPv4 only. - - * trunk/nnrpd/misc.c: Glom was using strlcat into newly allocated - memory without making sure that it's a valid empty string to - start with. Problem reported by Tommy van Leeuwen (this broke - XPAT). - -2003-10-24 rra - - * trunk/lib/nntp.c: While in nntp_read_line it may be necessary to - compact the buffer, and we should be more aggressive than waiting - until the buffer is completely full or we make more network reads - than we need to. - -2003-10-21 rra - - * trunk/doc/man/tdx-util.8: The descriptions for -g and -i were - reversed. Add a note that -n can be given with -i. - - * trunk/doc/pod/tdx-util.pod: The -g and -i descriptions were - reversed. Add a note that -n can be given with -i. - - * trunk/include/storage.h, trunk/storage/cnfs/cnfs.c, - trunk/storage/cnfs/cnfs.h, trunk/storage/interface.c, - trunk/storage/interface.h, trunk/storage/timecaf/timecaf.c, - trunk/storage/timecaf/timecaf.h, - trunk/storage/timehash/timehash.c, - trunk/storage/timehash/timehash.h, - trunk/storage/tradspool/tradspool.c, - trunk/storage/tradspool/tradspool.h: SMnext actually takes a - regular ARTHANDLE, not a const one, since it frees the article - that's passed into it. Make everything consistent with this. - -2003-10-20 rra - - * trunk/authprogs/radius.c, trunk/nnrpd/perm.c, - trunk/storage/interface.c, trunk/storage/ovdb/ovdb.c: Cast all of - the constant strings used to initialize parser token tables - (until the new parser rules the world). - - * trunk/innd/perl.c, trunk/lib/perl.c: Use inn_newXS and suppress - the warnings from the mandatory cv argument added for any XS - function. - - * trunk/include/innperl.h: Add an inn_newXS that casts const char - arguments to the char arguments that Perl expects. - - * trunk/Makefile.global.in: Remove -pedantic and -Wcast-qual from - make warnings; there's too much noise from things that can't be - fixed, particularly in the Perl interface. Add -Wendif-label. - - * trunk/doc/man, trunk/doc/man/.cvsignore: Debian's man program - likes to create an index.db file if used to view man pages in a - directory, but it's the most convenient way to see the formatted - man page. So just ignore that file. - - * trunk/tests/lib/fakewrite.c, trunk/tests/lib/setenv-t.c: Include - clibrary.h instead of rolling our own so that we don't miss some - necessary includes. - - * trunk/tests/lib/tst-t.c: Report more information on the - /usr/share/dict/words tests and don't attempt to insert empty - words from that list (Debian's word list contains a blank line). - - * trunk/storage/tradspool/tradspool.c: Cast a comparison against - iovcnt to avoid warnings. - - * trunk/storage/timecaf/caf.c, trunk/storage/timecaf/timecaf.c: - Warning cleanup, mostly signed vs. unsigned. - - * trunk/storage/ovdb/ovdb.c: Warning cleanup. - - * trunk/storage/ovdb/ovdb-private.h: ovdb_check_pidfile should take - a const char. Add the appropriate transaction macros for - BerkeleyDB 4.1, which gets everything to at least compile and - link with that version. - - * trunk/storage/cnfs/cnfs.c: Warning cleanup in snprintf in - CNFSofft2hex. - - * trunk/storage/buffindexed/buffindexed.c: Warning cleanups. Take - ARTNUMs instead of ints internally where appropriate to get rid - of signed vs. unsigned warnings. - - * trunk/storage/overdata.c: Use appropriate data types in - overview_index and overview_getheader, and make the latter take - an unsigned index as its second argument. Use ARRAY_SIZE where - appropriate. - - * trunk/storage/interface.c, trunk/storage/interface.h: SMseterror - now always copies its argument so that it can take a const char - cleanly. The frequency of errors is too small to do the - micro-optimization of not copying static error strings. - - * trunk/nnrpd/article.c, trunk/nnrpd/newnews.c, - trunk/nnrpd/nnrpd.h, trunk/nnrpd/post.c, trunk/nnrpd/python.c, - trunk/nnrpd/sasl_config.h, trunk/nnrpd/tls.c, trunk/nnrpd/tls.h: - Warning cleanup, mostly signed vs. unsigned issues and - const-ness. Include some missing header files and clean up the - sasl_config.h header to assume ANSI C. - - * trunk/nnrpd/list.c: Don't manually duplicate the work of - concatpath when finding the full path to files that we're - listing. - - * trunk/lib/perl.c: Warning cleanup for the XS code. - - * trunk/lib/mmap.c: Drop const from the temporary pointers when - calling msync; it makes sense that msync wouldn't take const - pointers. - - * trunk/lib/messages.c: Don't use %m in syslog calls since it - produces a warning on Linux due to oddities in the glibc headers. - It's just as easy to call strerror ourselves. - - * trunk/innfeed/imap_connection.c: Clean up warnings in the SASL - authentication code. - - * trunk/innd/art.c, trunk/innd/chan.c, trunk/innd/icd.c, - trunk/innd/innd.h, trunk/innd/keywords.c, trunk/innd/nc.c, - trunk/innd/newsfeeds.c, trunk/innd/ng.c, trunk/innd/perl.c, - trunk/innd/python.c, trunk/innd/rc.c, trunk/innd/site.c: Lots of - warning cleanup, primarily for signed vs. unsigned warnings and - const issues. Remove the old code in rc.c to fix TCP/IP options, - since it was no longer being called with the new networking - implementation and doesn't appear to be useful these days. - - * trunk/include/portable/socket.h: The casts in the SA_LEN macro - should be to const versions of the structs so that it can be - called on const socket structures without warnings. - - * trunk/include/ov.h: The second argument to overview_getheader - should be unsigned. - - * trunk/history/hisv6/hisv6.c: Various warning cleanup. - - * trunk/history/his.c, trunk/history/hisinterface.h: his_logger - should take a const char. Fully initialize nullhist. - - * trunk/frontends/ovdb_init.c, trunk/frontends/ovdb_stat.c: Warning - cleanup. - - * trunk/expire/fastrm.c, trunk/expire/makehistory.c: Add - appropriate casts to eliminate warnings. - - * trunk/expire/expireover.c: Add missing time.h include. - - * trunk/backends/ninpaths.c: Declare functions static where - appropriate. - - * trunk/backends/actsync.c: Warning cleanup and convert to ANSI C - declarations and prototypes. - - * trunk/authprogs/smbval/rfcnb-common.h, - trunk/authprogs/smbval/rfcnb-io.c, - trunk/authprogs/smbval/rfcnb-priv.h, - trunk/authprogs/smbval/rfcnb-util.c, - trunk/authprogs/smbval/rfcnb.h, trunk/authprogs/smbval/session.c, - trunk/authprogs/smbval/smbdes.c, - trunk/authprogs/smbval/smblib-priv.h, - trunk/authprogs/smbval/smblib-util.c, - trunk/authprogs/smbval/smblib.c, trunk/authprogs/smbval/smblib.h, - trunk/authprogs/smbval/valid.c: Get rid of the remaining warnings - under make warnings. - - * trunk/authprogs/auth_krb5.c: Just pass KRB5_TGS_NAME_SIZE and - KRB5_TGS_NAME to Kerberos functions directly rather than putting - them in krb5_data, since the latter causes warnings from putting - static strings into char * members. - - * trunk/doc/man/ctlinnd.8: Document that renumber does not decrease - the hi-water mark. - - * trunk/innd/ng.c: Refuse to ever lower the high-water mark when - renumbering. This should help further with problems caused by - synchronization issues between overview and the active file. - -2003-10-18 rra - - * trunk/MANIFEST, trunk/doc/man/batcher.8, trunk/doc/pod/Makefile, - trunk/doc/pod/batcher.pod: Convert batcher(8) to POD. - - * trunk/backends/actsyncd.in: Support the host:port syntax that the - actsync man page says that we support. Patch based on a patch - from Marco d'Itri. - - * trunk/expire/makehistory.c: Fix makehistory -a by only passing - HIS_CREAT when -a is not given. - - * trunk/README, trunk/doc/pod/readme.pod: Update the URL for suck. - - * trunk/contrib/README, trunk/contrib/mm_ckpasswd: Add mm_ckpasswd. - -2003-10-16 rra - - * trunk/frontends/mailpost.in: Don't loop forever on articles with - a header and no body or blank line after the headers. Reported by - Andrea Marrosu. - - * trunk/Makefile: Install the news certificate mode 600, which is - what nnrpd actually requires. Reported by Sergio Rodriguez de - Guzman Martinez. - - * trunk/control/pgpverify.in: Update to the latest upstream - version, which fixes a problem with recognizing NNTP format - articles. - -2003-10-15 rra - - * trunk/authprogs/auth_krb5.c: Don't print out a space before the - username. - -2003-09-15 rra - - * trunk/nnrpd/post.c: Formatting change to line up the table of - headers better. - - * trunk/nnrpd/post.h: Fix the numbering of HDR__CC and down, which - were off by one. Reported by Ka'roly Lo~rentey. - - * trunk/doc/man/ovdb.5, trunk/doc/pod/ovdb.pod: Insert the - information about putting the database on multiple disks from the - FAQ into here instead, since it's not actually a FAQ and it - should be in the regular documentation. - -2003-09-08 rra - - * trunk/INSTALL, trunk/doc/pod/install.pod: Remove the mention of - domain in inn.conf, since this almost never needs to be set and - is confusing. - - * trunk/doc/man/inn.conf.5, trunk/doc/pod/inn.conf.pod: Clarify - that NNTP-Posting-Host can't be obfuscated internally by INN, and - improve the reference to readers.conf for changing the domain in - message IDs. - - * trunk/doc/man/nnrpd.8, trunk/doc/pod/nnrpd.pod: Improve the - documentation of when readers.conf and other configuration files - are read and update the reference for AUTHINFO (the protocol - section still needs work). - - * trunk/doc/man/readers.conf.5, trunk/doc/pod/readers.conf.pod: - Mention more information about when readers.conf is re-read, - improve the documentation of virtualhost, and add an example of a - public server. - - * trunk/nnrpd/tls.c: Produce better error messages for bad - ownership or permissions on SSL key files. Patch suggested by - cira. - - * trunk/INSTALL, trunk/doc/pod/install.pod: Mention cycbuffupdate - in the section on cycbuff.conf. - -2003-09-03 rra - - * trunk/scripts/innupgrade.in: Allow innupgrade to take a full path - to a file. (Just don't put a period before the temporary file - name for the fixed version; we don't really need to make the - temporary file hide from regular ls, and it's less confusing this - way.) Reported by Marco d'Itri. - - * trunk/backends/news2mail.in: This script uses the three-argument - form of open and therefore requires at least Perl 5.6.0. - -2003-09-02 rra - - * trunk/NEWS, trunk/doc/pod/news.pod: Add a note to the 2.3 upgrade - instructions talking about creating a storage.conf file for INN - 2.2 users. - - * trunk/INSTALL, trunk/doc/pod/install.pod: Add a mention of - --enable-largefiles in the section on cycbuff.conf. - - * trunk/INSTALL, trunk/doc/pod/install.pod: Add documentation for - --enable-largefiles. - - * trunk/configure, trunk/configure.in: Simplify the check for - sendmail considerably. Just look for it on PATH or in /usr/sbin - or /usr/lib if not found there, without requiring people to use - --with-sendmail if it's in a standard location. That's the way - that pretty much every other package does it. - -2003-08-12 rra - - * trunk/configure.in: Search for the BSD ports location of - BerkeleyDB 4.1. - -2003-08-08 vinocur - - * trunk/doc/pod/Makefile: Add a target for `make clean` - -2003-07-30 vinocur - - * trunk/doc/man/ckpasswd.8, trunk/doc/man/readers.conf.5, - trunk/doc/pod/ckpasswd.pod, trunk/doc/pod/readers.conf.pod: Typo - fixes (from Debian bug reports). - -2003-07-22 rra - - * trunk/lib/nntp.c: Include portable/time.h for struct timeval and - time_t. - -2003-07-16 kondou - - * trunk/innd/art.c, trunk/innd/nc.c: maxartsize did not work - correctly - - * trunk/innd/art.c, trunk/innd/nc.c: maxartsize did not work - correctly - -2003-07-13 vinocur - - * trunk/lib/network.c: Fix segfault when listening on multiple - descriptors. - -2003-07-12 vinocur - - * trunk/contrib/README, trunk/contrib/analyze-traffic.pl: Add a - script for figuring out what groups are seeing the most traffic. - - * trunk/storage/cnfs/cnfs.c: On platforms that lack EOVERFLOW, we - can't special-case for failing due to lack of largefile support. - The fallback of using the system's error string is fine, but the - code needs to compile even if EOVERFLOW is missing. - - * trunk/backends/news2mail.in: Fix a bug that would send mail to - all addresses not just good ones, courtesy of Geoff Gibbs. - - * trunk/lib/perl.c: Fix some typos - -2003-07-12 rra - - * trunk/MANIFEST: Add the bogus newsgroup data file for overview - testing and the first pass at the new NNTP utility library. - - * trunk/frontends/getlist.c: First pass at using the new NNTP - utility library (still needs some work). - - * trunk/include/inn/nntp.h, trunk/lib/Makefile, trunk/lib/nntp.c: - Add the first pass at a new, general-purpose NNTP utility - library. Update Makefile dependencies for lib. - - * trunk/tests/overview/data/bogus, - trunk/tests/overview/tradindexed-t.c: Add additional tests with - newsgroup names that are malformed in various problematic ways. - - * trunk/storage/tradindexed/tdx-data.c: When building paths, handle - groups that contain multiple consecutive periods or embedded - slashes, just for robustness and to prevent any odd things from - happening. Also rename mapcntl to msync_page. - - * trunk/include/inn/mmap.h, trunk/lib/dbz.c, trunk/lib/mmap.c, - trunk/storage/tradindexed/tdx-group.c: Rename mapcntl to - msync_page to more accurately reflect what it does and clean up - the code a little. Make the third argument go away if we're on a - platform that doesn't take three arguments to msync. - - * trunk/support/mksystem: Expose the results of the msync probe so - that inn/mmap.h can use them. - - * trunk/tests/Makefile: Add lib/dispatch.t to the list of tests. - - * trunk/storage/cnfs/cnfs.c: Make MS_ASYNC disappear on platforms - that don't have it. - - * trunk/innd/art.c: Handle messages with a missing Path header - correctly. - - * trunk/innd/innd.c: Move PROCsetup after RCsetup since PROCsetup - installs a SIGCHLD handler that interferes with innbind. - - * trunk/scripts/innreport.in: Generate valid HTML. Patch from Marco - d'Itri. - - * trunk/scripts/innupgrade.in: Typo fix in status message. - - * trunk/scripts/rc.news.in: Remove the various PID files for INN - supporting programs on an rc.news stop. - - * trunk/scripts/inncheck.in: Don't check permissions on - configuration files that don't contain passwords. Allow for - newsfeed variables. - - * trunk/Makefile.global.in, trunk/site/Makefile: Add a new - installation command for files that should use the same umask and - mode as files written by the server, and use that for installing - the sample active and newsgroups files and the empty active.times - file. - - * trunk/TODO: Add a bug about ovdb server shutdowns. - - * trunk/doc/man/makehistory.8, trunk/doc/pod/makehistory.pod: Make - it clearer that the ovdb processes must be running when - rebuilding overview for ovdb. - - * trunk/doc/man/newsfeeds.5, trunk/doc/pod/newsfeeds.pod: Recommend - always using full paths in newsfeeds. - - * trunk/HACKING, trunk/doc/pod/hacking.pod: Note that only the - default multiplexed mode for CVSup is supported. - - * trunk/doc/man/ckpasswd.8, trunk/doc/pod/ckpasswd.pod: Add - instructions for how to test. - - * trunk/doc/man/news.daily.8, trunk/doc/man/newslog.5: newslog(8) - does not exist. - - * trunk/control/pgpverify.in, trunk/control/signcontrol.in: Update - to latest upstream release. - - * trunk/lib/daemonize.c: Don't use TIOCNOTTY if we have setsid(). - It was causing errors on *BSD. - - * trunk/lib/qio.c, trunk/lib/readin.c: Allow for EINTR when - reading. - -2003-06-21 rra - - * trunk/samples/control.ctl: Add france.* and update Marco d'Itri's - address. - -2003-06-19 vinocur - - * trunk/storage/cnfs/cnfs.c: Special-case for EOVERFLOW and give an - error message indicating that the problem is probably CNFS buffer - > 2 GB without having compiled in largefile support. - -2003-06-04 rra - - * trunk/nnrpd/nnrpd.c: buff is needed for OpenSSL builds. - -2003-06-02 rra - - * trunk/lib/network.c: sin_family becomes sin6_family under IPv6. - - * trunk/include/inn/buffer.h, trunk/lib/buffer.c, - trunk/tests/lib/buffer-t.c: Add functions to sprintf into a - buffer, resizing as necessary. This will eventually be useful all - over the place for replacing static buffers with dynamically - resized struct buffers. - - * trunk/lib/remopen.c: Add a missing freeaddrinfo and remove - unnecessary includes. - - * trunk/include/inn/network.h, trunk/lib/remopen.c, - trunk/support/mksystem: Move the NETWORK_AF_HINT define into - inn/network.h and put HAVE_INET6 into inn/system.h so that - inn/network.h can refer to it. - -2003-06-01 rra - - * trunk/MANIFEST, trunk/include/inn/dispatch.h, trunk/lib/Makefile, - trunk/lib/dispatch.c, trunk/tests/Makefile, trunk/tests/TESTS, - trunk/tests/lib, trunk/tests/lib/.cvsignore, - trunk/tests/lib/dispatch-t.c: Add a new library routine for - dispatching commands (in the form of a cvector) to the - appropriate handler function, handling limitations on the - argument count and handling unknown commands. - - * trunk/include/inn/buffer.h, trunk/lib/buffer.c, - trunk/tests/lib/buffer-t.c: Add buffer_free, buffer_read, - buffer_compact, and buffer_find_string in preparation for some - work on a new NNTP interface. - -2003-05-31 rra - - * trunk/samples/control.ctl: Update the relcom.* sender to reflect - what's currently used and limit Big Eight checkgroups to just the - Big Eight hierarchies. - - * trunk/backends/actsync.c, trunk/expire/convdate.c, - trunk/expire/makehistory.c, trunk/innd/cc.c, trunk/innd/chan.c, - trunk/innd/site.c, trunk/innd/status.c, - trunk/innfeed/configfile.y, trunk/innfeed/main.c, - trunk/lib/parsedate.y, trunk/nnrpd/misc.c, trunk/nnrpd/newnews.c, - trunk/nnrpd/nnrpd.c, trunk/nnrpd/perm.c, - trunk/storage/buffindexed/buffindexed.c, - trunk/storage/cnfs/cnfs.c, trunk/storage/overdata.c, - trunk/storage/timehash/timehash.c, - trunk/storage/tradindexed/tdx-group.c: Warning patch from Ilya - Kovalenko. Gets rid of all the remaining warnings under -Wall on - Solaris (and hopefully also OpenBSD). Mostly unused variables and - format mismatches. - - * trunk/storage/ovdb/ovdb.c: Fix compiler warnings, some of which - only show up with BerkeleyDB 2.x. - - * trunk/authprogs/smbval/rfcnb-priv.h, - trunk/authprogs/smbval/rfcnb-util.c, - trunk/authprogs/smbval/rfcnb.h, trunk/authprogs/smbval/session.c, - trunk/authprogs/smbval/smbencrypt.c, - trunk/authprogs/smbval/smblib-priv.h, - trunk/authprogs/smbval/smblib-util.c, - trunk/authprogs/smbval/smblib.c, trunk/authprogs/smbval/smblib.h, - trunk/authprogs/smbval/valid.c: This code is still a mess, but at - least now it compiles under -Wall without warnings. - - * trunk/authprogs/auth_krb5.c: Remove unused variable. - - * trunk/backends/ninpaths.c: Fix various format warnings and use - the CTYPE macro. - - * trunk/frontends/ovdb_stat.c: Use the right type for handling - string values returned to getval. - - * trunk/frontends/ovdb_init.c: Fix upgrade_environment to always - return a value. - - * trunk/innd/innd.c: Remove unused variables. - -2003-05-31 vinocur - - * trunk/doc/man/inn.conf.5, trunk/doc/man/innfeed.conf.5, - trunk/doc/pod/inn.conf.pod: Further warnings about quoting IPv6 - address in config files. - -2003-05-31 rra - - * trunk/doc/man/inn.conf.5, trunk/doc/pod/inn.conf.pod: For - bindaddress6, warn that the value will generally have to be - quoted. - -2003-05-19 rra - - * trunk, trunk/.cvsignore: Ignore CHANGES and ChangeLog, which are - handled specially by the release process. - - * trunk/CONTRIBUTORS, trunk/backends/batcher.c, - trunk/backends/innxbatch.c, trunk/history/his.c, - trunk/history/hisv6/hisv6.c, trunk/innd/art.c, - trunk/storage/cnfs/cnfs.c: Unused variable and missing include - warning fixes, from Ilya Kovalenko. - -2003-05-14 rra - - * trunk/include/inn/network.h, trunk/include/libinn.h, - trunk/lib/network.c, trunk/lib/remopen.c: Convert the NNTP server - open code to use getaddrinfo unconditionally and to use new - network bind code that handles setting the source address and - trying multiple remote addresses from a linked list of addrinfo - structs. - - * trunk/storage/Make.methods: Include the new - tradindexed/tdx-util.o rule. - - * trunk/tests/lib/getaddrinfo-t.c: Protocol is now more often set - to IPPROTO_TCP, which is still not entirely correct but is good - enough for now (and is noted in the to-do list at the top of - getaddrinfo). - - * trunk/lib/getaddrinfo.c: Try to set IPPROTO appropriately. - - * trunk/TODO: Add a cleanup item for getting rid of the "any" and - "all" special strings for the bind address and source address - settings. - -2003-05-12 rra - - * trunk/MANIFEST, trunk/configure, trunk/configure.in, - trunk/include/clibrary.h, trunk/include/config.h.in, - trunk/include/portable/getaddrinfo.h, - trunk/include/portable/socket.h, trunk/lib/Makefile, - trunk/lib/getaddrinfo.c, trunk/tests/Makefile, trunk/tests/TESTS, - trunk/tests/lib, trunk/tests/lib/.cvsignore, - trunk/tests/lib/getaddrinfo-t.c: Add a getaddrinfo replacement - (IPv4 only) on systems that don't have it. This is the first step - of replacing all the #ifdef code with code that just always calls - getaddrinfo unconditionally, which will clean up the networking - code quite a bit. - - At the same time, put some additional network portability work - into include/portable/socket.h that was needed for getaddrinfo - and move the definition of hstrerror from clibrary.h to there. - - * trunk/support/makedepend: Filter out all system headers that make - it into the dependencies (generally due to Perl or Python) by - removing files with absolute paths. - -2003-05-11 rra - - * trunk/innd/rc.c, trunk/innd/status.c: Include portable/socket.h - instead of arpa/inet.h directly, to handle the order requirements - on some platforms. - - * trunk/storage/tradindexed/ovmethod.mk: tdx-util.o should not be - built by libtool, since otherwise --disable-static confuses the - heck out of things. - - * trunk/authprogs/smbval/session.c: Include netinet/in.h before - netinet/tcp.h, required by UnixWare. - - * trunk/storage/ovdb/ovdb.c: Berkeley DB 2.x doesn't have - DB_PRIVATE. - -2003-05-07 rra - - * trunk/NEWS, trunk/doc/pod/news.pod: Add an entry for the removal - of inndstart and startinnfeed. - - * trunk/scripts/innupgrade.in: Fix newsfeeds file to adjust for the - removal of startinnfeed. - -2003-05-06 rra - - * trunk/samples/moderators: fj.* is another exception. - -2003-05-05 rra - - * trunk/include/Makefile: Install inn/*.h include files in - PATHINCLUDE/inn/*.h, not inn/inn/*.h. - - * trunk/doc/compliance-nntp: Remove the point about articles - without message IDs as the current draft now outlaws them - entirely. Update the one about OVER with bad ranges to reflect - the current draft, and change the point about HDR with message - IDs to instead note that the first word of the return should be 0 - instead of the message ID. - - * trunk/NEWS, trunk/doc/pod/news.pod: Add a reference to the - tdx-util man page and capitalize the changes section for the Perl - and Python hooks. - - * trunk/TODO: Add a note about SIGPIPE handling in nnrpd. - - * trunk/HACKING, trunk/INSTALL, trunk/MANIFEST, trunk/TODO, - trunk/backends, trunk/backends/.cvsignore, - trunk/backends/Makefile, trunk/backends/innbind.c, - trunk/configure, trunk/configure.in, trunk/contrib/delayer.in, - trunk/contrib/sample.init.script, trunk/doc/IPv6-info, - trunk/doc/config-design, trunk/doc/man/Makefile, - trunk/doc/man/ctlinnd.8, trunk/doc/man/innbind.8, - trunk/doc/man/innd.8, trunk/doc/man/inndstart.8, - trunk/doc/man/innfeed.1, trunk/doc/man/newsfeeds.5, - trunk/doc/man/nnrpd.8, trunk/doc/man/rc.news.8, - trunk/doc/man/startinnfeed.1, trunk/doc/pod/Makefile, - trunk/doc/pod/hacking.pod, trunk/doc/pod/innbind.pod, - trunk/doc/pod/innd.pod, trunk/doc/pod/inndstart.pod, - trunk/doc/pod/install.pod, trunk/doc/pod/newsfeeds.pod, - trunk/doc/pod/nnrpd.pod, trunk/doc/pod/rc.news.pod, - trunk/include/config.h.in, trunk/include/inn/network.h, - trunk/include/portable/socket.h, trunk/innd, - trunk/innd/.cvsignore, trunk/innd/Makefile, trunk/innd/cc.c, - trunk/innd/innd.c, trunk/innd/innd.h, trunk/innd/inndstart.c, - trunk/innd/rc.c, trunk/innfeed, trunk/innfeed/.cvsignore, - trunk/innfeed/Makefile, trunk/innfeed/startinnfeed.c, - trunk/lib/Makefile, trunk/lib/network.c, trunk/nnrpd/nnrpd.c, - trunk/samples/newsfeeds.in, trunk/scripts/inncheck.in, - trunk/scripts/innshellvars.in, trunk/scripts/innshellvars.pl.in, - trunk/scripts/innshellvars.tcl.in, trunk/scripts/rc.news.in, - trunk/tests/Makefile, trunk/tests/TESTS, trunk/tests/util, - trunk/tests/util/.cvsignore, trunk/tests/util/innbind-t.c: Add a - new helper program, innbind, which is installed setuid root and - just binds a given file descriptor to a given network address. - Add wrapper functions in libinn to call innbind when binding - IPv4, IPv6, or all local addresses. - - Remove all traces of inndstart from the source tree and modify - rc.news and ctlinnd xexec to run innd directly as well. Add a -6 - option to innd to specify the IPv6 bind address (replacing the - option previously intercepted by inndstart) and remove the -p - option specifying an already open port. Add a -6 option to nnrpd - to specify the IPv6 bind address rather than trying to - disambiguate by looking at the address supplied to -b and clean - up the network handling for daemon mode. - - Remove all traces of startinnfeed from the source tree in favor - of invoking innfeed and imapfeed directly. Update the install - documentation to remove the parts about INN increasing limits - itself. Update the sample init script to remove file descriptor - limits. + * Bump version numbers of STABLE (2.5.0 -> 2.5.1). - * trunk/INSTALL, trunk/Makefile.global.in, trunk/README, - trunk/doc/pod/install.pod, trunk/doc/pod/readme.pod: Bump version - number to 2.5. Update INSTALL with a version of the patch from - the 2.4 branch, reflecting that upgrades from previous major - releases from INN 2.3 onward can still be upgrade with make - update. Add a paragraph suggesting that people look at the - samples when upgrading from a previous major release. + * Better wording for the creation of /pgp/ncmring.gpg. diff -Nurp inn-2.5.0/HACKING inn-2.5.1/HACKING --- inn-2.5.0/HACKING 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/HACKING 2009-10-12 11:24:04.000000000 -0700 @@ -80,7 +80,8 @@ Configuring and Portability hacks.) New versions should be checked in periodically when available. There are no INN-specific modifications to those files except for ltmain.sh which recognizes the additional -B flag that INN's install-sh - script uses. This script should also be updated at the same time; it + script uses. This script should also be updated at the same time from + ; it similarly contains local modifications in order to support the additional -B flag, as well as a few other changes mentioned in a comment at the beginning of the file. @@ -304,14 +305,14 @@ Scripts configure-time information and configuration information from inn.conf are set by the innshellvars support libraries, so the only system-specific configuration that should have to be done is fixing the - right path to the interpretor and adding a line to load the appropriate + right path to the interpreter and adding a line to load the appropriate innshellvars. support/fixscript, built by configure, does this. It takes a .in file and generates the final script (removing the .in) by fixing the path to - the interpretor on the first line and replacing the second line, + the interpreter on the first line and replacing the second line, whatever it is, with code to load the innshellvars appropriate for that - interpretor. (If invoked with -i, it just fixes the interpretor path.) + interpreter. (If invoked with -i, it just fixes the interpreter path.) Scripts should use innshellvars (via fixscript) to get the right path and the right variables whenever possible, rather than having configure @@ -340,7 +341,7 @@ Include Files The first picks up all defines generated by autoconf and is necessary for types that may not be present on all systems (*uid_t*, *pid_t*, - *size_t*, *int32_t*, and the like). It therefore should be included + *size_t*, *uint32_t*, and the like). It therefore should be included before any other headers that use those types, as well as to get general configuration information. It also includes inn/defines.h and inn/options.h, which pick up additional support macros and compile-time @@ -601,8 +602,10 @@ Making a Release "Configuring and Portability" for details on how to update these files. - 2. Make sure that samples/control.ctl is in sync with the master - version at . + 2. Make sure that samples/control.ctl and samples/nocem.ctl are in sync + with the master version at + and + . 3. Update doc/pod/news.pod and regenerate NEWS. Be more detailed for a minor release than for a major release. For a major release, also @@ -716,5 +719,5 @@ References technical details as needed, useful when working on IPv6 support in INN. - $Id: hacking.pod 8490 2009-05-21 20:06:37Z iulius $ + $Id: hacking.pod 8630 2009-09-09 20:06:53Z iulius $ diff -Nurp inn-2.5.0/INSTALL inn-2.5.1/INSTALL --- inn-2.5.0/INSTALL 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/INSTALL 2009-10-12 11:24:04.000000000 -0700 @@ -434,7 +434,7 @@ Installing INN ./configure --with-perl provided that you have the necessary version of Perl installed. - (Compiling with an embedded Perl interpretor will allow you to use one + (Compiling with an embedded Perl interpreter will allow you to use one of the available excellent spam filters if you so choose.) If the configure program runs successfully, then you are ready to build @@ -1158,16 +1158,16 @@ 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 10 days; in most circumstances this deletion is *permanent*, so + after 15 days; in most circumstances this deletion is *permanent*, so read this whole section carefully if you want to keep local hierarchies forever. (See archive(8) for a way to automate backups of important articles.) Only one entry is required for all storage classes; it looks like: - /remember/:10 + /remember/:11 - This entry says how long to keep the Message-IDs for articles that have + This entry says how long to keep the message-IDs for articles that have already expired in the history file so that the server doesn't accept them again. Occasionally, fairly old articles will get regurgitated somewhere and offered to you again, so even after you've expired @@ -1176,7 +1176,8 @@ Configuring INN INN will reject any articles more than a certain number of days old (the *artcutoff* parameter in inn.conf, defaulting to 10); the number on the - "/remember/" line should match that. + "/remember/" line should be one more than that number in order to take + into account articles whose posting date is one day into the future. CNFS makes no further use of expire.ctl, since articles stored in CNFS buffers expire automatically when the buffer runs out of free space (but @@ -1193,7 +1194,7 @@ Configuring INN don't have an Expires: header, those are the only two values that matter. For articles with an Expires: header, the other two values come into play; the date given in the Expires: header of an article will be - honored, subject to the contraints set by and . All + honored, subject to the constraints set by and . All articles in this storage class will be kept for at least days, regardless of their Expires: headers, and all articles in this storage class will be expired after days, even if their Expires: headers @@ -1609,5 +1610,5 @@ 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 8479 2009-05-18 20:01:37Z iulius $ + $Id: install.pod 8575 2009-08-18 13:53:54Z iulius $ diff -Nurp inn-2.5.0/MANIFEST inn-2.5.1/MANIFEST --- inn-2.5.0/MANIFEST 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/MANIFEST 2009-10-12 11:24:04.000000000 -0700 @@ -236,6 +236,8 @@ doc/pod/buffchan.pod Ma doc/pod/buffindexed.conf.pod Master file for buffindexed.conf.5 doc/pod/checklist.pod Master file for doc/checklist doc/pod/ckpasswd.pod Master file for ckpasswd.8 +doc/pod/cnfsheadconf.pod Master file for cnfsheadconf.8 +doc/pod/cnfsstat.pod Master file for cnfsstat.8 doc/pod/control.ctl.pod Master file for control.ctl.5 doc/pod/convdate.pod Master file for convdate.1 doc/pod/ctlinnd.pod Master file for ctlinnd.8 @@ -245,7 +247,9 @@ doc/pod/distributions.pod Ma doc/pod/docheckgroups.pod Master file for docheckgroups.8 doc/pod/domain.pod Master file for domain.8 doc/pod/expire.ctl.pod Master file for expire.ctl.5 +doc/pod/expire.pod Master file for expire.8 doc/pod/expireover.pod Master file for expireover.8 +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/getlist.pod Master file for getlist.1 @@ -267,6 +271,7 @@ doc/pod/install.pod Ma doc/pod/libauth.pod Master file for libauth.3 doc/pod/libinnhist.pod Master file for libinnhist.3 doc/pod/list.pod Master file for list.3 +doc/pod/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 doc/pod/moderators.pod Master file for moderators.5 @@ -286,6 +291,7 @@ doc/pod/ovdb_server.pod Ma doc/pod/ovdb_stat.pod Master file for ovdb_stat.8 doc/pod/overchan.pod Master file for overchan.8 doc/pod/passwd.nntp.pod Master file for passwd.nntp.5 +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.conf.pod Master file for radius.conf.5 @@ -357,10 +363,10 @@ include/Makefile Ma include/clibrary.h C library portability include/conffile.h Header file for reading *.conf files include/config.h.in Template configuration data -include/dbz.h Header file for DBZ include/inn Installed header files (Directory) include/inn/buffer.h Header file for reusable counted buffers include/inn/confparse.h Header file for configuration parser +include/inn/dbz.h Header file for DBZ include/inn/defines.h Portable defs for installed headers include/inn/dispatch.h Header file for command dispatching include/inn/hashtab.h Header file for generic hash table @@ -538,9 +544,7 @@ m4/berkeleydb.m4 Au m4/cc-c-o.m4 Autoconf macro for -c -o compiler support m4/cc-flags.m4 Autoconf macro for compiler flags m4/compress.m4 Autoconf macro for compress detection -m4/getaddrinfo.m4 Autoconf macro to check getaddrinfo support m4/inet-ntoa.m4 Autoconf macro to check inet_ntoa -m4/int32.m4 Autoconf macro for int32_t m4/iov-max.m4 Autoconf macro for IOV_MAX m4/krb5.m4 Autoconf macro for Kerberos v5 m4/large-fpos.m4 Autoconf macro for large-file fpos_t diff -Nurp inn-2.5.0/Makefile inn-2.5.1/Makefile --- inn-2.5.0/Makefile 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/Makefile 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -## $Id: Makefile 8475 2009-05-17 20:30:23Z iulius $ +## $Id: Makefile 8563 2009-08-14 18:45:27Z iulius $ include Makefile.global @@ -129,15 +129,16 @@ install-root: ## Install a certificate for TLS/SSL support. cert: + umask 077 ; \ $(SSLBIN) req -new -x509 -nodes \ - -out $(D)$(PATHLIB)/cert.pem -days 366 \ - -keyout $(D)$(PATHLIB)/key.pem - chown $(RUNASUSER) $(D)$(PATHLIB)/cert.pem - chgrp $(RUNASGROUP) $(D)$(PATHLIB)/cert.pem - chmod 640 $(D)$(PATHLIB)/cert.pem - chown $(RUNASUSER) $(D)$(PATHLIB)/key.pem - chgrp $(RUNASGROUP) $(D)$(PATHLIB)/key.pem - chmod 600 $(D)$(PATHLIB)/key.pem + -out $(D)$(PATHETC)/cert.pem -days 366 \ + -keyout $(D)$(PATHETC)/key.pem + chown $(RUNASUSER) $(D)$(PATHETC)/cert.pem + chgrp $(RUNASGROUP) $(D)$(PATHETC)/cert.pem + chmod 640 $(D)$(PATHETC)/cert.pem + chown $(RUNASUSER) $(D)$(PATHETC)/key.pem + chgrp $(RUNASGROUP) $(D)$(PATHETC)/key.pem + chmod 600 $(D)$(PATHETC)/key.pem ## Cleanup targets. clean deletes all compilation results but leaves the diff -Nurp inn-2.5.0/Makefile.global.in inn-2.5.1/Makefile.global.in --- inn-2.5.0/Makefile.global.in 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/Makefile.global.in 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -## $Id: Makefile.global.in 8475 2009-05-17 20:30:23Z iulius $ +## $Id: Makefile.global.in 8561 2009-08-14 18:32:41Z 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 @@ -18,7 +18,7 @@ ## keep their length reasonable; otherwise, your news server will not ## be complying with the NNTP protocol. -VERSION = 2.5.0 +VERSION = 2.5.1 VERSION_EXTRA = ## If you want to install INN relative to a root directory other than /, @@ -135,8 +135,8 @@ REGEX_LIBS = @REGEX_LIBS@ SHADOW_LIBS = @SHADOW_LIBS@ ## Embedding support. Additional flags and libraries used when compiling -## or linking portions of INN that support embedded interpretors, set by -## configure based on what interpretor embeddings are selected. +## or linking portions of INN that support embedded interpreters, set by +## configure based on what interpreter embeddings are selected. PERL_CPPFLAGS = @PERL_CPPFLAGS@ $(PERL_WARNINGS) PERL_LIBS = $(abs_builddir)/lib/perl$(LIBSUFFIX).o @PERL_LIBS@ diff -Nurp inn-2.5.0/NEWS inn-2.5.1/NEWS --- inn-2.5.0/NEWS 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/NEWS 2009-10-12 11:24:04.000000000 -0700 @@ -1,3 +1,131 @@ +Changes in 2.5.1 + + * Fixed a segfault in imap_connection which could occur when SASL 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. + + * Owing to the US-CERT vulnerability note VU#238019, Cyrus SASL library + has slightly changed. imap_connection and nnrpd now handle that + change. Otherwise, some answers are too long to be properly computed + during SASL exchanges. + + * Fixed a memory allocation problem which caused nnrpd to die when + retrieving via HDR/XHDR/XPAT the contents of an extra overview field + absent from the headers of an article. The NEWNEWS command was also + affected on very rare cases. Thanks to Tim Woodall for the bug + report. + + * HDR/XHDR/XPAT answers are now robust when the overview database is + inconsistent. When the overview schema was modified without the + overview database being rebuilt, wrong results could be returned for + extra fields (especially a random portion of some other header). The + desired header name is now explicitly searched for in the overview + information. + + * Fixed the source which is logged to the news log file for local + postings when the local server is not listed in incoming.conf. A + 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 + 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.) + + The storage token now uses 4 bytes to store the article sequence + number for timecaf, instead of only 2 bytes. Thanks to Kamil Jonca + for the bug report and also the patch. + + * Fixed a bug in both timecaf and timehash which prevented them from + working on systems where short ints were not 16-bit integers. + + * When there is not enough space to write an entire CAF header, the + timecaf storage manager now uses a larger blocksize. On 32-bit + systems, the CAF header is about 300 bytes, leaving about 200 bytes + for the free bitmap index (the remaining of a 512-byte blocksize). On + 64-bit systems, the size of the CAF header could exceed 512 bytes, + thus leaving no room for the free bitmap index. A 1 KB blocksize is + then used, or a larger size if need be. + + * A new CNFS version has been introduced by Miquel van Smoorenburg in + the CNFS header. CNFSv4 uses 4 KB blocks instead of 512 bytes, which + more particularly makes writes faster. CNFSv4 supports + files/partitions up to 16 TB with a 4 KB blocksize. + + 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. + + * 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 + cancel message can be found in the article to be cancelled. This new + feature is from Christopher Biedl. + + 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 + matching the target message. This requirement only encouraged cancel + issuers to conceal their identity and provided no security". + + * The way the "/remember/" line in expire.ctl works has changed. + History retention for an article was done according to its original + 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. + + 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 + which case posting time is used. + + * The default value for "/remember/" has changed from 10 to 11 because + it should be one more than the *artcutoff* parameter in inn.conf, so + that articles posted one day into the future are properly retained in + history. + + * auth_krb5 has been rewritten by Russ Allbery to use modern Kerberos + APIs. Note that using ckpasswd with PAM support and a Kerberos PAM + module instead of this authenticator is still recommended. + + * A new -L flag has been added by Jonathan Kamens to makehistory so as + to specify a load average limit. If the system load average exceeds + the specified limit, makehistory sleeps until it goes below the limit. + + * As UTF-8 is the default character set in RFC 3977, "ctlinnd pause", + "ctlinnd readers", "ctlinnd reject", "ctlinnd reserve", "ctlinnd + throttle" and "nnrpd -r" commands now require the given reason to be + encoded in UTF-8, so that it can be properly sent to news readers. + The creator's name given to "ctlinnd newgroup" is also expected to be + encoded in UTF-8. + + * The output of consistency checks for article storage and the history + file no longer appears by default when "cnfsstat -a" is used. A new + -v flag has been added to cnfsstat so as to see it. + + * The default path for TLS certificates has changed from *pathnews*/lib + to *pathetc*. It only affects new INN installations or generations of + certificates with "make cert". Besides, a default value has been + added to *tlscapath* because it is required by nnrpd when TLS is used. + + * gzip(1) is now the default UUCP batcher in send-uucp instead of + compress(1) because gzip is more widely available than compress, due + to old patent issues. Note that there is no impact on decompression + as it is handled by rnews. + + * cnfsheadconf now uses the Perl core module "Math::BigInt" rather than + the deprecated bigint.pl library. When used without specifying a CNFS + buffer, it now properly displays the status of all CNFS buffers. + Upgrading from 2.4 to 2.5 The following changes require your full attention because a manual @@ -197,7 +325,7 @@ Changes in 2.5.0 runs. Thanks to Ivan Shmakov for this feature. New other options have been added to configuration files: *ignore* in - incoming.conf, *logstats*, *nnrpdflags* and *verifygroups* in + incoming.conf, *logstatus*, *nnrpdflags* and *verifygroups* in inn.conf, and *log-time-format* in innfeed.conf. The --with-http-dir option has also been added to "configure" to set @@ -1185,5 +1313,5 @@ Changes in 2.2.0 * The innshellvars.csh.in script is obsolete (and lives in the obsolete directory, for now). - $Id: news.pod 8485 2009-05-21 17:40:13Z iulius $ + $Id: news.pod 8657 2009-10-10 07:58:53Z iulius $ diff -Nurp inn-2.5.0/TODO inn-2.5.1/TODO --- inn-2.5.0/TODO 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/TODO 2009-10-12 11:24:04.000000000 -0700 @@ -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 8467 2009-05-16 12:27:51Z iulius $. +Last modified $Id: TODO 8588 2009-08-20 23:33:13Z eagle $. Scheduled for INN 2.5 @@ -365,10 +365,6 @@ Needed Bug Fixes Setting cnfscheckfudgesize clears up issues that otherwises causes INN to crash. -* The way Kerberos authentication is done uses an obsolete interface and - doesn't verify the user's authentication by getting a service ticket. - It needs to be overhauled to use the right API. - * There should be a way, with the Perl authentication hooks, to either immediately return a list of newsgroups one has access to based on the hostname or to indicate that authentication is required and make the diff -Nurp inn-2.5.0/authprogs/auth_krb5.c inn-2.5.1/authprogs/auth_krb5.c --- inn-2.5.0/authprogs/auth_krb5.c 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/authprogs/auth_krb5.c 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: auth_krb5.c 7758 2008-04-11 19:01:42Z iulius $ +/* $Id: auth_krb5.c 8588 2009-08-20 23:33:13Z eagle $ ** ** Check an username and password against Kerberos v5. ** @@ -27,149 +27,76 @@ # include #endif -/* krb5_get_in_tkt_with_password is deprecated. */ -#define KRB5_DEPRECATED 1 #include #include "inn/messages.h" #include "inn/libinn.h" /* - * Default life of the ticket we are getting. Since we are just checking - * to see if the user can get one, it doesn't need a long lifetime. - */ -#define KRB5_DEFAULT_LIFE 60 * 5 /* 5 minutes */ - - -/* ** Check the username and password by attempting to get a TGT. Returns 1 on ** success and 0 on failure. Errors are reported via com_err. */ static int -krb5_check_password (char *principal_name, char *password) +krb5_check_password(const char *principal, const char *password) { - krb5_context kcontext; - krb5_creds creds; - krb5_principal user_principal; - krb5_data *user_realm; - krb5_principal service_principal; - krb5_timestamp now; - krb5_address **addrs = (krb5_address **) NULL; /* Use default */ - long lifetime = KRB5_DEFAULT_LIFE; - int options = 0; - - krb5_preauthtype *preauth = NULL; - - krb5_error_code code; - - /* Our return code - 1 is success */ - int result = 0; - - /* Initialize our Kerberos state */ - code = krb5_init_context (&kcontext); - if (code) { - com_err (message_program_name, code, "initializing krb5 context"); - return 0; - } - -#ifdef HAVE_KRB5_INIT_ETS - /* Initialize krb5 error tables */ - krb5_init_ets (kcontext); -#endif - - /* Get current time */ - code = krb5_timeofday (kcontext, &now); - if (code) { - com_err (message_program_name, code, "getting time of day"); - return 0; - } - - /* Set up credentials to be filled in */ - memset (&creds, 0, sizeof(creds)); - - /* From here on, goto cleanup to exit */ - - /* Parse the username into a krb5 principal */ - if (!principal_name) { - com_err (message_program_name, 0, "passed NULL principal name"); - goto cleanup; - } - - code = krb5_parse_name (kcontext, principal_name, &user_principal); - if (code) { - com_err (message_program_name, code, - "parsing user principal name %.100s", principal_name); - goto cleanup; - } - - creds.client = user_principal; - - /* Get the user's realm for building service principal */ - user_realm = krb5_princ_realm (kcontext, user_principal); - - /* - * Build the service name into a principal. Right now this is - * a TGT for the user's realm. - */ - code = krb5_build_principal_ext (kcontext, - &service_principal, - user_realm->length, - user_realm->data, - KRB5_TGS_NAME_SIZE, - KRB5_TGS_NAME, - user_realm->length, - user_realm->data, - 0 /* terminator */); - if (code) { - com_err(message_program_name, code, "building service principal name"); - goto cleanup; - } - - creds.server = service_principal; - - creds.times.starttime = 0; /* Now */ - creds.times.endtime = now + lifetime; - creds.times.renew_till = 0; /* Unrenewable */ - - /* DO IT */ - code = krb5_get_in_tkt_with_password (kcontext, - options, - addrs, - NULL, - preauth, - password, - 0, - &creds, - 0); - - /* We are done with password at this point... */ - - if (code) { - /* FAILURE - Parse a few common errors here */ - switch (code) { - case KRB5KRB_AP_ERR_BAD_INTEGRITY: - com_err (message_program_name, 0, "bad password for %.100s", - principal_name); - break; - case KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN: - com_err (message_program_name, 0, "unknown user \"%.100s\"", - principal_name); - break; - default: - com_err (message_program_name, code, - "checking Kerberos password for %.100s", principal_name); - } - result = 0; - } else { - /* SUCCESS */ - result = 1; - } + krb5_error_code code; + krb5_context ctx; + krb5_creds creds; + krb5_principal princ = NULL; + krb5_get_init_creds_opt opts; + bool creds_valid = false; + int result = 0; + + code = krb5_init_context(&ctx); + if (code != 0) { + com_err(message_program_name, code, "initializing krb5 context"); + return 0; + } + code = krb5_parse_name(ctx, principal, &princ); + if (code != 0) { + com_err(message_program_name, code, "parsing principal name %.100s", + principal); + goto cleanup; + } + memset(&opts, 0, sizeof(opts)); + krb5_get_init_creds_opt_init(&opts); + krb5_get_init_creds_opt_set_forwardable(&opts, 0); + krb5_get_init_creds_opt_set_proxiable(&opts, 0); + code = krb5_get_init_creds_password(ctx, &creds, princ, (char *) password, + NULL, NULL, 0, NULL, &opts); + if (code == 0) { + krb5_verify_init_creds_opt vopts; + + creds_valid = true; + memset(&opts, 0, sizeof(vopts)); + krb5_verify_init_creds_opt_init(&vopts); + code = krb5_verify_init_creds(ctx, &creds, princ, NULL, NULL, &vopts); + } + if (code == 0) + result = 1; + else { + switch (code) { + case KRB5KRB_AP_ERR_BAD_INTEGRITY: + com_err(message_program_name, 0, "bad password for %.100s", + principal); + break; + case KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN: + com_err(message_program_name, 0, "unknown user %.100s", + principal); + break; + default: + com_err(message_program_name, code, + "checking Kerberos password for %.100s", principal); + } + } - /* Cleanup */ - cleanup: - krb5_free_cred_contents (kcontext, &creds); - - return result; +cleanup: + if (creds_valid) + krb5_free_cred_contents(ctx, &creds); + if (princ != NULL) + krb5_free_principal(ctx, princ); + krb5_free_context(ctx); + return result; } int diff -Nurp inn-2.5.0/backends/Makefile inn-2.5.1/backends/Makefile --- inn-2.5.0/backends/Makefile 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/backends/Makefile 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -## $Id: Makefile 7773 2008-04-13 09:30:28Z iulius $ +## $Id: Makefile 8533 2009-06-21 20:14:05Z iulius $ include ../Makefile.global @@ -139,12 +139,14 @@ archive.o: archive.c ../include/config.h ../include/config.h ../include/inn/buffer.h ../include/inn/defines.h \ ../include/inn/innconf.h ../include/inn/messages.h ../include/inn/qio.h \ ../include/inn/vector.h ../include/inn/wire.h ../include/inn/libinn.h \ - ../include/inn/paths.h ../include/inn/storage.h + ../include/inn/paths.h ../include/inn/storage.h \ + ../include/inn/options.h batcher.o: batcher.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/innconf.h ../include/inn/defines.h \ ../include/inn/messages.h ../include/inn/timer.h ../include/inn/wire.h \ - ../include/inn/libinn.h ../include/inn/paths.h ../include/inn/storage.h + ../include/inn/libinn.h ../include/inn/paths.h ../include/inn/storage.h \ + ../include/inn/options.h buffchan.o: buffchan.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/innconf.h ../include/inn/defines.h \ @@ -154,7 +156,8 @@ cvtbatch.o: cvtbatch.c ../include/config ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/innconf.h ../include/inn/defines.h \ ../include/inn/messages.h ../include/inn/qio.h ../include/inn/wire.h \ - ../include/inn/libinn.h ../include/inn/paths.h ../include/inn/storage.h + ../include/inn/libinn.h ../include/inn/paths.h ../include/inn/storage.h \ + ../include/inn/options.h filechan.o: filechan.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/innconf.h ../include/inn/defines.h \ @@ -171,8 +174,8 @@ inndf.o: inndf.c ../include/config.h ../ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/innconf.h ../include/inn/defines.h \ ../include/inn/messages.h ../include/inn/overview.h \ - ../include/inn/storage.h ../include/inn/qio.h ../include/inn/libinn.h \ - ../include/inn/paths.h + ../include/inn/storage.h ../include/inn/options.h ../include/inn/qio.h \ + ../include/inn/libinn.h ../include/inn/paths.h innxbatch.o: innxbatch.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/portable/socket.h ../include/config.h \ @@ -189,7 +192,8 @@ innxmit.o: innxmit.c ../include/config.h ../include/inn/defines.h ../include/inn/innconf.h \ ../include/inn/messages.h ../include/inn/qio.h ../include/inn/timer.h \ ../include/inn/wire.h ../include/inn/libinn.h ../include/nntp.h \ - ../include/inn/nntp.h ../include/inn/paths.h ../include/inn/storage.h + ../include/inn/nntp.h ../include/inn/paths.h ../include/inn/storage.h \ + ../include/inn/options.h map.o: map.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/libinn.h ../include/inn/defines.h \ @@ -210,8 +214,8 @@ overchan.o: overchan.c ../include/config ../include/config.h ../include/portable/time.h ../include/config.h \ ../include/inn/innconf.h ../include/inn/defines.h \ ../include/inn/messages.h ../include/inn/overview.h \ - ../include/inn/storage.h ../include/inn/qio.h ../include/inn/libinn.h \ - ../include/inn/paths.h + ../include/inn/storage.h ../include/inn/options.h ../include/inn/qio.h \ + ../include/inn/libinn.h ../include/inn/paths.h shlock.o: shlock.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/messages.h ../include/inn/defines.h diff -Nurp inn-2.5.0/backends/send-uucp.in inn-2.5.1/backends/send-uucp.in --- inn-2.5.0/backends/send-uucp.in 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/backends/send-uucp.in 2009-10-12 11:24:04.000000000 -0700 @@ -142,7 +142,7 @@ sub unbatcher { $compressor =~ s%.*/%%; # Do not keep the complete path. $compressor =~ s% .*%%; # Do not keep the optional parameters. - return $UNBATCHER{$compressor} || 'cunbatch'; + return $UNBATCHER{$compressor} || $UNBATCHER{'gzip'}; } ############################################################################## @@ -162,7 +162,7 @@ sub run_site { $maxjobs = '-N ' . ($MAXJOBS - $jobs); } - $compress ||= $INN::Config::compress; + $compress ||= $INN::Config::gzip; $size ||= $MAXSIZE; # if a .work temp file left by a previous invocation exists, rename @@ -320,7 +320,7 @@ flushing the site. The compression method to use for batches. This should be one of C, C, C or C. Arguments for the compression command may be specified by using C<_> instead of spaces. For example, C. -The default value is C. +The default value is C. =item I @@ -353,14 +353,15 @@ Here is an example for the F compression, the -following site uses C and the last three use C. The first -six use a batch size of S<1 MB>, and the last site (C) uses the default of +This defines eight UUCP sites. The first three and the last two use C +compression, the fourth site (C) uses C and the remaining sites +(C and C) use C. The first six use a batch size of +S<1 MB>, and the two last sites (C and C) use the default of 500,000 bytes. The C, C, C, and C sites will only have batches generated for them during the hours of 05:00, 18:00, and 22:00, and the C site will only have batches generated during those hours and 06:00, 20:00, 00:00, and 02:00. There are no restrictions on when -batches will be generated for C or C. +batches will be generated for C, C and C. The C site is configured as a funnel into C. B will issue C instead of C. diff -Nurp inn-2.5.0/configure inn-2.5.1/configure --- inn-2.5.0/configure 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/configure 2009-10-12 11:24:04.000000000 -0700 @@ -1,7 +1,7 @@ #! /bin/sh -# From configure.ac Revision: 8475 . +# From configure.ac Revision: 8630 . # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.61 for INN 2.5.0. +# Generated by GNU Autoconf 2.61 for INN 2.5.1. # # Report bugs to . # @@ -724,8 +724,8 @@ SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME='INN' PACKAGE_TARNAME='inn' -PACKAGE_VERSION='2.5.0' -PACKAGE_STRING='INN 2.5.0' +PACKAGE_VERSION='2.5.1' +PACKAGE_STRING='INN 2.5.1' PACKAGE_BUGREPORT='inn-workers@lists.isc.org' ac_default_prefix=/usr/local/news @@ -1451,7 +1451,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.5.0 to adapt to many kinds of systems. +\`configure' configures INN 2.5.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1516,14 +1516,14 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of INN 2.5.0:";; + short | recursive ) echo "Configuration of INN 2.5.1:";; esac cat <<\_ACEOF Optional Features: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-libtool Use libtool for lib generation default=no + --enable-libtool Use libtool for lib generation [default=no] --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] @@ -1554,7 +1554,7 @@ Optional Packages: --with-spool-dir=PATH Path for news storage [PREFIX/spool] --with-tmp-dir=PATH Path for temporary files [PREFIX/tmp] --with-syslog-facility=LOG_FAC - Syslog facility [LOG_NEWS], [or], [LOG_LOCAL1] + Syslog facility [LOG_NEWS or LOG_LOCAL1] --with-news-user=USER News user name [news] --with-news-group=GROUP News group name [news] --with-news-master=USER News master (address for reports) [usenet] @@ -1582,8 +1582,8 @@ Some influential environment variables: you have headers in a nonstandard directory CPP C preprocessor SENDMAIL Location of sendmail binary to use - PERL Location of Perl interpretor - PYTHON Location of Python interpretor + PERL Location of Perl interpreter + PYTHON Location of Python interpreter YACC The `Yet Another C Compiler' implementation to use. Defaults to the first program found out of: `bison -y', `byacc', `yacc'. YFLAGS The list of arguments that will be passed by default to $YACC. @@ -1666,7 +1666,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -INN configure 2.5.0 +INN configure 2.5.1 generated by GNU Autoconf 2.61 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, @@ -1680,7 +1680,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.5.0, which was +It was created by INN $as_me 2.5.1, which was generated by GNU Autoconf 2.61. Invocation command line was $ $0 $@ @@ -2103,18 +2103,6 @@ ac_configure="$SHELL $ac_aux_dir/configu - - - - - - - - - - - - # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, @@ -3715,6 +3703,23 @@ ac_configure="$SHELL $ac_aux_dir/configu + + + + + + + + + + + + + + + + + test x"$prefix" = xNONE && prefix="$ac_default_prefix" ac_ext=c @@ -5852,7 +5857,7 @@ Xsed="$SED -e 1s/^X//" inn_use_libtool=no # Check whether --enable-libtool was given. if test "${enable_libtool+set}" = set; then - enableval=$enable_libtool; if test "$enableval" = yes ; then + enableval=$enable_libtool; if test x"$enableval" = xyes ; then inn_use_libtool=yes fi fi @@ -6277,13 +6282,13 @@ if test "${lt_cv_nm_interface+set}" = se else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:6280: $ac_compile\"" >&5) + (eval echo "\"\$as_me:6285: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 - (eval echo "\"\$as_me:6283: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval echo "\"\$as_me:6288: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 - (eval echo "\"\$as_me:6286: output\"" >&5) + (eval echo "\"\$as_me:6291: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" @@ -7504,7 +7509,7 @@ ia64-*-hpux*) ;; *-*-irix6*) # Find out which ABI we are using. - echo '#line 7507 "configure"' > conftest.$ac_ext + echo '#line 7512 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -8881,11 +8886,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:8884: $lt_compile\"" >&5) + (eval echo "\"\$as_me:8889: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:8888: \$? = $ac_status" >&5 + echo "$as_me:8893: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -9220,11 +9225,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:9223: $lt_compile\"" >&5) + (eval echo "\"\$as_me:9228: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:9227: \$? = $ac_status" >&5 + echo "$as_me:9232: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -9325,11 +9330,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:9328: $lt_compile\"" >&5) + (eval echo "\"\$as_me:9333: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:9332: \$? = $ac_status" >&5 + echo "$as_me:9337: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -9380,11 +9385,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:9383: $lt_compile\"" >&5) + (eval echo "\"\$as_me:9388: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:9387: \$? = $ac_status" >&5 + echo "$as_me:9392: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -12136,7 +12141,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 12139 "configure" +#line 12144 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -12232,7 +12237,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 12235 "configure" +#line 12240 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -19810,13 +19815,14 @@ cat >>conftest.$ac_ext <<_ACEOF #include #define error(...) fprintf(stderr, __VA_ARGS__) + int -main () -{ -error("foo"); error("foo %d", 0); return 0; - ; - return 0; +main(void) { + error("foo"); + error("foo %d", 0); + return 0; } + _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" @@ -19847,13 +19853,14 @@ rm -f core conftest.err conftest.$ac_obj fi { echo "$as_me:$LINENO: result: $inn_cv_c_c99_vamacros" >&5 echo "${ECHO_T}$inn_cv_c_c99_vamacros" >&6; } - if test $inn_cv_c_c99_vamacros = yes ; then + if test $inn_cv_c_c99_vamacros = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_C99_VAMACROS 1 _ACEOF - fi +fi + { echo "$as_me:$LINENO: checking for GNU-style variadic macros" >&5 echo $ECHO_N "checking for GNU-style variadic macros... $ECHO_C" >&6; } if test "${inn_cv_c_gnu_vamacros+set}" = set; then @@ -19868,13 +19875,14 @@ cat >>conftest.$ac_ext <<_ACEOF #include #define error(args...) fprintf(stderr, args) + int -main () -{ -error("foo"); error("foo %d", 0); return 0; - ; - return 0; +main(void) { + error("foo"); + error("foo %d", 0); + return 0; } + _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" @@ -19905,13 +19913,14 @@ rm -f core conftest.err conftest.$ac_obj fi { echo "$as_me:$LINENO: result: $inn_cv_c_gnu_vamacros" >&5 echo "${ECHO_T}$inn_cv_c_gnu_vamacros" >&6; } - if test $inn_cv_c_gnu_vamacros = yes ; then + if test $inn_cv_c_gnu_vamacros = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_GNU_VAMACROS 1 _ACEOF - fi +fi + { echo "$as_me:$LINENO: checking whether struct tm is in sys/time.h or time.h" >&5 echo $ECHO_N "checking whether struct tm is in sys/time.h or time.h... $ECHO_C" >&6; } @@ -20534,144 +20543,201 @@ fi - -{ echo "$as_me:$LINENO: checking size of int" >&5 -echo $ECHO_N "checking size of int... $ECHO_C" >&6; } -if test "${ac_cv_sizeof_int+set}" = set; then + { echo "$as_me:$LINENO: checking for uint16_t" >&5 +echo $ECHO_N "checking for uint16_t... $ECHO_C" >&6; } +if test "${ac_cv_c_uint16_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if test "$cross_compiling" = yes; then - ac_cv_sizeof_int=4 -else - cat >conftest.$ac_ext <<_ACEOF + ac_cv_c_uint16_t=no + for ac_type in 'uint16_t' 'unsigned int' 'unsigned long int' \ + 'unsigned long long int' 'unsigned short int' 'unsigned char'; do + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ - -#include -main() +$ac_includes_default +int +main () { - FILE *f = fopen("conftestval", "w"); - if (!f) exit(1); - fprintf(f, "%d\n", sizeof(int)); - exit(0); -} +static int test_array [1 - 2 * !(($ac_type) -1 >> (16 - 1) == 1)]; +test_array [0] = 0 + ; + return 0; +} _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + case $ac_type in + uint16_t) ac_cv_c_uint16_t=yes ;; + *) ac_cv_c_uint16_t=$ac_type ;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sizeof_int=`cat conftestval` + else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 + echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -( exit $ac_status ) -ac_cv_sizeof_int=0 + fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + test "$ac_cv_c_uint16_t" != no && break + done fi +{ echo "$as_me:$LINENO: result: $ac_cv_c_uint16_t" >&5 +echo "${ECHO_T}$ac_cv_c_uint16_t" >&6; } + case $ac_cv_c_uint16_t in #( + no|yes) ;; #( + *) +cat >>confdefs.h <<_ACEOF +#define uint16_t $ac_cv_c_uint16_t +_ACEOF +;; + esac -fi -{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5 -echo "${ECHO_T}$ac_cv_sizeof_int" >&6; } -if test x"$ac_cv_sizeof_int" = x"4" ; then - INN_INT32=int -else - { echo "$as_me:$LINENO: checking size of long" >&5 -echo $ECHO_N "checking size of long... $ECHO_C" >&6; } -if test "${ac_cv_sizeof_long+set}" = set; then + + { echo "$as_me:$LINENO: checking for uint32_t" >&5 +echo $ECHO_N "checking for uint32_t... $ECHO_C" >&6; } +if test "${ac_cv_c_uint32_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if test "$cross_compiling" = yes; then - ac_cv_sizeof_long=4 -else - cat >conftest.$ac_ext <<_ACEOF + ac_cv_c_uint32_t=no + for ac_type in 'uint32_t' 'unsigned int' 'unsigned long int' \ + 'unsigned long long int' 'unsigned short int' 'unsigned char'; do + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ - -#include -main() +$ac_includes_default +int +main () { - FILE *f = fopen("conftestval", "w"); - if (!f) exit(1); - fprintf(f, "%d\n", sizeof(long)); - exit(0); -} +static int test_array [1 - 2 * !(($ac_type) -1 >> (32 - 1) == 1)]; +test_array [0] = 0 + ; + return 0; +} _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + case $ac_type in + uint32_t) ac_cv_c_uint32_t=yes ;; + *) ac_cv_c_uint32_t=$ac_type ;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sizeof_long=`cat conftestval` + else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 + echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -( exit $ac_status ) -ac_cv_sizeof_long=0 + fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + test "$ac_cv_c_uint32_t" != no && break + done fi +{ echo "$as_me:$LINENO: result: $ac_cv_c_uint32_t" >&5 +echo "${ECHO_T}$ac_cv_c_uint32_t" >&6; } + case $ac_cv_c_uint32_t in #( + no|yes) ;; #( + *) +cat >>confdefs.h <<\_ACEOF +#define _UINT32_T 1 +_ACEOF -fi -{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5 -echo "${ECHO_T}$ac_cv_sizeof_long" >&6; } -if test x"$ac_cv_sizeof_long" = x"4" ; then - INN_INT32=long -else - { echo "$as_me:$LINENO: checking size of short" >&5 -echo $ECHO_N "checking size of short... $ECHO_C" >&6; } -if test "${ac_cv_sizeof_short+set}" = set; then +cat >>confdefs.h <<_ACEOF +#define uint32_t $ac_cv_c_uint32_t +_ACEOF +;; + esac + + + { echo "$as_me:$LINENO: checking for long long int" >&5 +echo $ECHO_N "checking for long long int... $ECHO_C" >&6; } +if test "${ac_cv_type_long_long_int+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if test "$cross_compiling" = yes; then - ac_cv_sizeof_short=2 + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +long long int ll = 9223372036854775807ll; + long long int nll = -9223372036854775807LL; + typedef int a[((-9223372036854775807LL < 0 + && 0 < 9223372036854775807ll) + ? 1 : -1)]; + int i = 63; +int +main () +{ +long long int llmax = 9223372036854775807ll; + return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) + | (llmax / ll) | (llmax % ll)); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + if test "$cross_compiling" = yes; then + ac_cv_type_long_long_int=yes else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -20679,16 +20745,29 @@ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ - -#include -main() +#include + #ifndef LLONG_MAX + # define HALF \ + (1LL << (sizeof (long long int) * CHAR_BIT - 2)) + # define LLONG_MAX (HALF - 1 + HALF) + #endif +int +main () { - FILE *f = fopen("conftestval", "w"); - if (!f) exit(1); - fprintf(f, "%d\n", sizeof(short)); - exit(0); +long long int n = 1; + int i; + for (i = 0; ; i++) + { + long long int m = n << i; + if (m >> i != n) + return 1; + if (LLONG_MAX / 2 < m) + break; + } + return 0; + ; + return 0; } - _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" @@ -20710,37 +20789,42 @@ eval "echo \"\$as_me:$LINENO: $ac_try_ec ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_sizeof_short=`cat conftestval` + ac_cv_type_long_long_int=yes else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) -ac_cv_sizeof_short=0 +ac_cv_type_long_long_int=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - -fi -{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_short" >&5 -echo "${ECHO_T}$ac_cv_sizeof_short" >&6; } -if test x"$ac_cv_sizeof_short" = x"4" ; then - INN_INT32=short else - : -fi + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_type_long_long_int=no fi +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext fi +{ echo "$as_me:$LINENO: result: $ac_cv_type_long_long_int" >&5 +echo "${ECHO_T}$ac_cv_type_long_long_int" >&6; } + if test $ac_cv_type_long_long_int = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_LONG_LONG_INT 1 +_ACEOF + fi -{ echo "$as_me:$LINENO: checking for int32_t" >&5 -echo $ECHO_N "checking for int32_t... $ECHO_C" >&6; } -if test "${ac_cv_type_int32_t+set}" = set; then +{ echo "$as_me:$LINENO: checking for off_t" >&5 +echo $ECHO_N "checking for off_t... $ECHO_C" >&6; } +if test "${ac_cv_type_off_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -20750,7 +20834,7 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef int32_t ac__type_new_; +typedef off_t ac__type_new_; int main () { @@ -20779,31 +20863,31 @@ eval "echo \"\$as_me:$LINENO: $ac_try_ec test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then - ac_cv_type_int32_t=yes + ac_cv_type_off_t=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_int32_t=no + ac_cv_type_off_t=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_int32_t" >&5 -echo "${ECHO_T}$ac_cv_type_int32_t" >&6; } -if test $ac_cv_type_int32_t = yes; then +{ echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 +echo "${ECHO_T}$ac_cv_type_off_t" >&6; } +if test $ac_cv_type_off_t = yes; then : else cat >>confdefs.h <<_ACEOF -#define int32_t $INN_INT32 +#define off_t long int _ACEOF fi -{ echo "$as_me:$LINENO: checking for uint32_t" >&5 -echo $ECHO_N "checking for uint32_t... $ECHO_C" >&6; } -if test "${ac_cv_type_uint32_t+set}" = set; then +{ echo "$as_me:$LINENO: checking for pid_t" >&5 +echo $ECHO_N "checking for pid_t... $ECHO_C" >&6; } +if test "${ac_cv_type_pid_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -20813,7 +20897,7 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef uint32_t ac__type_new_; +typedef pid_t ac__type_new_; int main () { @@ -20842,32 +20926,31 @@ eval "echo \"\$as_me:$LINENO: $ac_try_ec test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then - ac_cv_type_uint32_t=yes + ac_cv_type_pid_t=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_uint32_t=no + ac_cv_type_pid_t=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_uint32_t" >&5 -echo "${ECHO_T}$ac_cv_type_uint32_t" >&6; } -if test $ac_cv_type_uint32_t = yes; then +{ echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5 +echo "${ECHO_T}$ac_cv_type_pid_t" >&6; } +if test $ac_cv_type_pid_t = yes; then : else cat >>confdefs.h <<_ACEOF -#define uint32_t unsigned $INN_INT32 +#define pid_t int _ACEOF fi - -{ echo "$as_me:$LINENO: checking for off_t" >&5 -echo $ECHO_N "checking for off_t... $ECHO_C" >&6; } -if test "${ac_cv_type_off_t+set}" = set; then +{ echo "$as_me:$LINENO: checking for size_t" >&5 +echo $ECHO_N "checking for size_t... $ECHO_C" >&6; } +if test "${ac_cv_type_size_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -20877,7 +20960,7 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef off_t ac__type_new_; +typedef size_t ac__type_new_; int main () { @@ -20906,94 +20989,31 @@ eval "echo \"\$as_me:$LINENO: $ac_try_ec test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then - ac_cv_type_off_t=yes + ac_cv_type_size_t=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_off_t=no + ac_cv_type_size_t=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 -echo "${ECHO_T}$ac_cv_type_off_t" >&6; } -if test $ac_cv_type_off_t = yes; then +{ echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 +echo "${ECHO_T}$ac_cv_type_size_t" >&6; } +if test $ac_cv_type_size_t = yes; then : else cat >>confdefs.h <<_ACEOF -#define off_t long int +#define size_t unsigned int _ACEOF fi -{ echo "$as_me:$LINENO: checking for pid_t" >&5 -echo $ECHO_N "checking for pid_t... $ECHO_C" >&6; } -if test "${ac_cv_type_pid_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -typedef pid_t ac__type_new_; -int -main () -{ -if ((ac__type_new_ *) 0) - return 0; -if (sizeof (ac__type_new_)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_type_pid_t=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_pid_t=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5 -echo "${ECHO_T}$ac_cv_type_pid_t" >&6; } -if test $ac_cv_type_pid_t = yes; then - : -else - -cat >>confdefs.h <<_ACEOF -#define pid_t int -_ACEOF - -fi - -{ echo "$as_me:$LINENO: checking for size_t" >&5 -echo $ECHO_N "checking for size_t... $ECHO_C" >&6; } -if test "${ac_cv_type_size_t+set}" = set; then +{ echo "$as_me:$LINENO: checking for ssize_t" >&5 +echo $ECHO_N "checking for ssize_t... $ECHO_C" >&6; } +if test "${ac_cv_type_ssize_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -21003,7 +21023,7 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -typedef size_t ac__type_new_; +typedef ssize_t ac__type_new_; int main () { @@ -21032,24 +21052,24 @@ eval "echo \"\$as_me:$LINENO: $ac_try_ec test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then - ac_cv_type_size_t=yes + ac_cv_type_ssize_t=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_size_t=no + ac_cv_type_ssize_t=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 -echo "${ECHO_T}$ac_cv_type_size_t" >&6; } -if test $ac_cv_type_size_t = yes; then +{ echo "$as_me:$LINENO: result: $ac_cv_type_ssize_t" >&5 +echo "${ECHO_T}$ac_cv_type_ssize_t" >&6; } +if test $ac_cv_type_ssize_t = yes; then : else cat >>confdefs.h <<_ACEOF -#define size_t unsigned int +#define ssize_t int _ACEOF fi @@ -21092,68 +21112,6 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for long long" >&5 -echo $ECHO_N "checking for long long... $ECHO_C" >&6; } -if test "${ac_cv_type_long_long+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -typedef long long ac__type_new_; -int -main () -{ -if ((ac__type_new_ *) 0) - return 0; -if (sizeof (ac__type_new_)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_type_long_long=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_long_long=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5 -echo "${ECHO_T}$ac_cv_type_long_long" >&6; } -if test $ac_cv_type_long_long = yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_LONG_LONG 1 -_ACEOF - - -fi - { echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6; } if test "${ac_cv_type_ptrdiff_t+set}" = set; then @@ -21217,69 +21175,6 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for ssize_t" >&5 -echo $ECHO_N "checking for ssize_t... $ECHO_C" >&6; } -if test "${ac_cv_type_ssize_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -typedef ssize_t ac__type_new_; -int -main () -{ -if ((ac__type_new_ *) 0) - return 0; -if (sizeof (ac__type_new_)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_type_ssize_t=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_ssize_t=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_ssize_t" >&5 -echo "${ECHO_T}$ac_cv_type_ssize_t" >&6; } -if test $ac_cv_type_ssize_t = yes; then - : -else - -cat >>confdefs.h <<\_ACEOF -#define ssize_t int -_ACEOF - -fi - { echo "$as_me:$LINENO: checking for sig_atomic_t" >&5 echo $ECHO_N "checking for sig_atomic_t... $ECHO_C" >&6; } if test "${ac_cv_type_sig_atomic_t+set}" = set; then @@ -21669,12 +21564,12 @@ cat >>conftest.$ac_ext <<_ACEOF int main (void) { - struct in6_addr a; - struct in6_addr b; + struct in6_addr a; + struct in6_addr b; - inet_pton (AF_INET6, "fe80::1234:5678:abcd", &a); - inet_pton (AF_INET6, "fe80::1234:5678:abcd", &b); - return IN6_ARE_ADDR_EQUAL (&a,&b) ? 0 : 1; + inet_pton(AF_INET6, "fe80::1234:5678:abcd", &a); + inet_pton(AF_INET6, "fe80::1234:5678:abcd", &b); + return IN6_ARE_ADDR_EQUAL(&a, &b) ? 0 : 1; } _ACEOF @@ -21714,13 +21609,14 @@ fi fi { echo "$as_me:$LINENO: result: $inn_cv_in6_are_addr_equal_broken" >&5 echo "${ECHO_T}$inn_cv_in6_are_addr_equal_broken" >&6; } - if test x"$inn_cv_in6_are_addr_equal_broken" = xyes ; then + if test x"$inn_cv_in6_are_addr_equal_broken" = xyes; then cat >>confdefs.h <<\_ACEOF #define HAVE_BROKEN_IN6_ARE_ADDR_EQUAL 1 _ACEOF - fi +fi + { echo "$as_me:$LINENO: checking value of IOV_MAX" >&5 echo $ECHO_N "checking value of IOV_MAX... $ECHO_C" >&6; } if test "${inn_cv_macro_iov_max+set}" = set; then @@ -21848,13 +21744,14 @@ cat >>conftest.$ac_ext <<_ACEOF #include #include + int -main () +main(void) { -struct sockaddr sa; int x = SA_LEN(&sa); - ; - return 0; + struct sockaddr sa; + int x = SA_LEN(&sa); } + _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" @@ -21887,16 +21784,17 @@ rm -f core conftest.err conftest.$ac_obj fi { echo "$as_me:$LINENO: result: $inn_cv_sa_len_macro" >&5 echo "${ECHO_T}$inn_cv_sa_len_macro" >&6; } - if test "$inn_cv_sa_len_macro" = yes ; then + if test x"$inn_cv_sa_len_macro" = xyes; then cat >>confdefs.h <<\_ACEOF #define HAVE_SA_LEN 1 _ACEOF - fi +fi + { echo "$as_me:$LINENO: checking for SUN_LEN macro" >&5 echo $ECHO_N "checking for SUN_LEN macro... $ECHO_C" >&6; } -if test "${inn_cv_macro_sun_len+set}" = set; then +if test "${inn_cv_sun_len_macro+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -21908,13 +21806,14 @@ cat >>conftest.$ac_ext <<_ACEOF #include #include + int -main () +main(void) { -struct sockaddr_un s_un; int i; i = SUN_LEN(&s_un); - ; - return 0; + struct sockaddr_un s_un; + int i = SUN_LEN(&s_un); } + _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" @@ -21934,26 +21833,27 @@ eval "echo \"\$as_me:$LINENO: $ac_try_ec test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then - inn_cv_macro_sun_len=yes + inn_cv_sun_len_macro=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - inn_cv_macro_sun_len=no + inn_cv_sun_len_macro=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $inn_cv_macro_sun_len" >&5 -echo "${ECHO_T}$inn_cv_macro_sun_len" >&6; } - if test x"$inn_cv_macro_sun_len" = xyes ; then +{ echo "$as_me:$LINENO: result: $inn_cv_sun_len_macro" >&5 +echo "${ECHO_T}$inn_cv_sun_len_macro" >&6; } + if test x"$inn_cv_sun_len_macro" = xyes; then cat >>confdefs.h <<\_ACEOF #define HAVE_SUN_LEN 1 _ACEOF - fi +fi + # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! @@ -22404,8 +22304,8 @@ test $ac_cv_func_memcmp_working = no && esac -{ echo "$as_me:$LINENO: checking for working AI_ADDRCONFIG" >&5 -echo $ECHO_N "checking for working AI_ADDRCONFIG... $ECHO_C" >&6; } +{ echo "$as_me:$LINENO: checking for working AI_ADDRCONFIG flag" >&5 +echo $ECHO_N "checking for working AI_ADDRCONFIG flag... $ECHO_C" >&6; } if test "${inn_cv_func_getaddrinfo_addrconfig_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -22420,21 +22320,18 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include -#include +#include #include -#if STDC_HEADERS || HAVE_STRING_H -# include -#endif int -main(int argc, char **argv) { +main(void) { struct addrinfo hints, *ai; memset(&hints, 0, sizeof(hints)); hints.ai_family = AF_UNSPEC; hints.ai_socktype = SOCK_STREAM; hints.ai_flags = AI_ADDRCONFIG; - return getaddrinfo("localhost", NULL, &hints, &ai) != 0; + return (getaddrinfo("localhost", NULL, &hints, &ai) != 0); } _ACEOF @@ -22474,13 +22371,14 @@ fi fi { echo "$as_me:$LINENO: result: $inn_cv_func_getaddrinfo_addrconfig_works" >&5 echo "${ECHO_T}$inn_cv_func_getaddrinfo_addrconfig_works" >&6; } - if test "$inn_cv_func_getaddrinfo_addrconfig_works" = yes ; then + if test x"$inn_cv_func_getaddrinfo_addrconfig_works" = xyes; then cat >>confdefs.h <<\_ACEOF #define HAVE_GETADDRINFO_ADDRCONFIG 1 _ACEOF - fi +fi + { echo "$as_me:$LINENO: checking for working inet_ntoa" >&5 echo $ECHO_N "checking for working inet_ntoa... $ECHO_C" >&6; } if test "${inn_cv_func_inet_ntoa_works+set}" = set; then @@ -22500,16 +22398,14 @@ cat >>conftest.$ac_ext <<_ACEOF #include #include #include -#if STDC_HEADERS || HAVE_STRING_H -# include -#endif +#include int -main () +main(void) { - struct in_addr in; - in.s_addr = htonl (0x7f000000L); - return (!strcmp (inet_ntoa (in), "127.0.0.0") ? 0 : 1); + struct in_addr in; + in.s_addr = htonl(0x7f000000L); + return (strcmp(inet_ntoa(in), "127.0.0.0") == 0) ? 0 : 1; } _ACEOF @@ -22549,20 +22445,21 @@ fi fi { echo "$as_me:$LINENO: result: $inn_cv_func_inet_ntoa_works" >&5 echo "${ECHO_T}$inn_cv_func_inet_ntoa_works" >&6; } - if test "$inn_cv_func_inet_ntoa_works" = yes ; then + if test "$inn_cv_func_inet_ntoa_works" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_INET_NTOA 1 _ACEOF - else - case " $LIBOBJS " in +else + case " $LIBOBJS " in *" inet_ntoa.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS inet_ntoa.$ac_objext" ;; esac - fi +fi + { echo "$as_me:$LINENO: checking for working snprintf" >&5 echo $ECHO_N "checking for working snprintf... $ECHO_C" >&6; } if test "${inn_cv_func_snprintf_works+set}" = set; then @@ -22584,22 +22481,22 @@ cat >>conftest.$ac_ext <<_ACEOF char buf[2]; int -test (char *format, ...) +test(char *format, ...) { - va_list args; - int count; + va_list args; + int count; - va_start (args, format); - count = vsnprintf (buf, sizeof buf, format, args); - va_end (args); - return count; + va_start(args, format); + count = vsnprintf(buf, sizeof buf, format, args); + va_end(args); + return count; } int -main () +main() { - return ((test ("%s", "abcd") == 4 && buf[0] == 'a' && buf[1] == '\0' - && snprintf(NULL, 0, "%s", "abcd") == 4) ? 0 : 1); + return ((test("%s", "abcd") == 4 && buf[0] == 'a' && buf[1] == '\0' + && snprintf(NULL, 0, "%s", "abcd") == 4) ? 0 : 1); } _ACEOF @@ -22639,20 +22536,21 @@ fi fi { echo "$as_me:$LINENO: result: $inn_cv_func_snprintf_works" >&5 echo "${ECHO_T}$inn_cv_func_snprintf_works" >&6; } - if test "$inn_cv_func_snprintf_works" = yes ; then + if test "$inn_cv_func_snprintf_works" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_SNPRINTF 1 _ACEOF - else - case " $LIBOBJS " in +else + case " $LIBOBJS " in *" snprintf.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS snprintf.$ac_objext" ;; esac - fi +fi + @@ -24378,29 +24276,50 @@ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ + #include -#ifdef AF_UNIX -yes +#ifndef AF_UNIX +error: No Unix domain sockets! #endif + _ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "yes" >/dev/null 2>&1; then +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then inn_cv_sys_unix_sockets=yes else - inn_cv_sys_unix_sockets=no + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + inn_cv_sys_unix_sockets=no fi -rm -f conftest* +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $inn_cv_sys_unix_sockets" >&5 echo "${ECHO_T}$inn_cv_sys_unix_sockets" >&6; } -if test $inn_cv_sys_unix_sockets = yes ; then + if test x"$inn_cv_sys_unix_sockets" = xyes; then cat >>confdefs.h <<\_ACEOF #define HAVE_UNIX_DOMAIN_SOCKETS 1 _ACEOF fi + { echo "$as_me:$LINENO: checking log facility for news" >&5 echo $ECHO_N "checking log facility for news... $ECHO_C" >&6; } if test "${inn_cv_log_facility+set}" = set; then @@ -24412,26 +24331,46 @@ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ + #include -#ifdef LOG_NEWS -yes +#ifndef LOG_NEWS +error: LOG_NEWS not available! #endif + _ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "yes" >/dev/null 2>&1; then +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then inn_cv_log_facility=LOG_NEWS else - inn_cv_log_facility=LOG_LOCAL1 -fi -rm -f conftest* + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + inn_cv_log_facility=LOG_LOCAL1 fi -if test x"$SYSLOG_FACILITY" = xnone ; then - SYSLOG_FACILITY=$inn_cv_log_facility +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $SYSLOG_FACILITY" >&5 -echo "${ECHO_T}$SYSLOG_FACILITY" >&6; } +{ echo "$as_me:$LINENO: result: $inn_cv_log_facility" >&5 +echo "${ECHO_T}$inn_cv_log_facility" >&6; } + if test x"$SYSLOG_FACILITY" = xnone; then + SYSLOG_FACILITY=$inn_cv_log_facility +fi + cat >>confdefs.h <<_ACEOF #define LOG_INN_SERVER $SYSLOG_FACILITY @@ -24859,7 +24798,7 @@ exec 6>&1 # 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.5.0, which was +This file was extended by INN $as_me 2.5.1, which was generated by GNU Autoconf 2.61. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -24912,7 +24851,7 @@ Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ -INN config.status 2.5.0 +INN config.status 2.5.1 configured by $0, generated by GNU Autoconf 2.61, with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" diff -Nurp inn-2.5.0/configure.ac inn-2.5.1/configure.ac --- inn-2.5.0/configure.ac 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/configure.ac 2009-10-12 11:24:04.000000000 -0700 @@ -1,5 +1,5 @@ dnl Process this file with Autoconf to produce a configure script. -dnl $Id: configure.ac 8475 2009-05-17 20:30:23Z iulius $ +dnl $Id: configure.ac 8630 2009-09-09 20:06:53Z 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,9 +26,9 @@ dnl bother checking for it. Compile-tim dnl useful information for someone debugging a problem than configure-time dnl errors. -AC_INIT([INN], [2.5.0], [inn-workers@lists.isc.org]) +AC_INIT([INN], [2.5.1], [inn-workers@lists.isc.org]) AC_PREREQ(2.61) -AC_REVISION($Revision: 8475 $) +AC_REVISION($Revision: 8630 $) AC_CONFIG_AUX_DIR([support]) dnl Lots of our macros are stored in separate files for ease of maintenance. @@ -37,9 +37,7 @@ m4_include([m4/berkeleydb.m4]) m4_include([m4/cc-c-o.m4]) m4_include([m4/cc-flags.m4]) m4_include([m4/compress.m4]) -m4_include([m4/getaddrinfo.m4]) m4_include([m4/inet-ntoa.m4]) -m4_include([m4/int32.m4]) m4_include([m4/iov-max.m4]) m4_include([m4/krb5.m4]) m4_include([m4/large-fpos.m4]) @@ -86,11 +84,12 @@ dnl Check to see if the user wants to us dnl setup macros if they do. Keep this call together with the libtool setup dnl so that the arguments to configure will be together in configure --help. inn_use_libtool=no -AC_ARG_ENABLE(libtool, - [ --enable-libtool Use libtool for lib generation [default=no]], - if test "$enableval" = yes ; then +AC_ARG_ENABLE([libtool], + [AS_HELP_STRING([--enable-libtool], + [Use libtool for lib generation @<:@default=no@:>@])], + [if test x"$enableval" = xyes ; then inn_use_libtool=yes - fi) + fi]) if test x"$inn_use_libtool" = xyes ; then LT_INIT EXTLIB='la' @@ -133,7 +132,7 @@ INN_ARG_SENDMAIL dnl innbind by default only allows ports 119, 433 and 563 below 1024; if the user dnl wants to use some other port as well, they must use this option. AC_ARG_WITH([innd-port], - [AC_HELP_STRING([--with-innd-port=PORT], + [AS_HELP_STRING([--with-innd-port=PORT], [Additional low-numbered port for innbind])], [AC_DEFINE_UNQUOTED([INND_PORT], [$with_innd_port], [Additional permitted low-numbered port for innbind.])]) @@ -142,7 +141,7 @@ dnl Whether IPv6 support should be enabl dnl this will be automatically detected and always turned on, but it's not dnl quite mature enough yet. AC_ARG_ENABLE([ipv6], - [AC_HELP_STRING([--enable-ipv6], [Enable IPv6 support])], + [AS_HELP_STRING([--enable-ipv6], [Enable IPv6 support])], [if test "x$enableval" = xyes ; then AC_DEFINE([HAVE_INET6], 1, [Define to enable IPv6 support.]) fi]) @@ -154,7 +153,7 @@ dnl variable is needed for now to suppor DO_DBZ_TAGGED_HASH=DONT inn_enable_tagged_hash=no AC_ARG_ENABLE([tagged-hash], - [AC_HELP_STRING([--enable-tagged-hash], + [AS_HELP_STRING([--enable-tagged-hash], [Use tagged hash table for history])], [if test "x$enableval" = xyes ; then DO_DBZ_TAGGED_HASH=DO @@ -168,7 +167,7 @@ dnl Whether to enable the keyword genera dnl requires a regular expression library, which is checked for later on. inn_enable_keywords=0 AC_ARG_ENABLE([keywords], - [AC_HELP_STRING([--enable-keywords], + [AS_HELP_STRING([--enable-keywords], [Automatic innd keyword generation support])], if test x"$enableval" = xyes ; then inn_enable_keywords=1 @@ -183,7 +182,7 @@ dnl isn't there yet. Currently tagged h dnl support due to assumptions about the size of off_t. inn_enable_largefiles=no AC_ARG_ENABLE([largefiles], - [AC_HELP_STRING([--enable-largefiles], + [AS_HELP_STRING([--enable-largefiles], [Support for files larger than 2GB [default=no]])], if test x"$enableval" = xyes ; then inn_enable_largefiles=yes @@ -193,7 +192,7 @@ if test x"$inn_enable_tagged_hash" = xye AC_MSG_ERROR([--enable-tagged-hash conflicts with --enable-largefiles.]) fi -dnl Checks for embedded interpretors. +dnl Checks for embedded interpreters. INN_ARG_PERL INN_ARG_PYTHON @@ -431,18 +430,17 @@ AC_CHECK_MEMBERS([struct sockaddr.sa_len #include ]) dnl Checks for types. -INN_TYPE_INT32_T +AC_TYPE_UINT16_T +AC_TYPE_UINT32_T +AC_TYPE_LONG_LONG_INT AC_TYPE_OFF_T AC_TYPE_PID_T AC_TYPE_SIZE_T +AC_TYPE_SSIZE_T AC_TYPE_UID_T -AC_CHECK_TYPES([long long]) AC_CHECK_TYPE([ptrdiff_t], , [AC_DEFINE([ptrdiff_t], [long], [Define to long if does not define.])]) -AC_CHECK_TYPE([ssize_t], , - [AC_DEFINE([ssize_t], [int], - [Define to int if does not define.])]) AC_CHECK_TYPE([sig_atomic_t], , [AC_DEFINE([sig_atomic_t], [int], [Define to int if does not define.])], diff -Nurp inn-2.5.0/contrib/makeexpctl.in inn-2.5.1/contrib/makeexpctl.in --- inn-2.5.0/contrib/makeexpctl.in 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/contrib/makeexpctl.in 2009-10-12 11:24:04.000000000 -0700 @@ -37,18 +37,21 @@ print OUTFILE <<'EOF' ; ## :::: ## First line gives history retention; other lines specify expiration ## for newsgroups. Must have a "*:A:..." line which is the default. -## wildmat-style patterns for the newsgroups +## Wildmat-style patterns for the newsgroups ## Pick one of M U A -- modifies pattern to be only ## moderated, unmoderated, or all groups -## Mininum number of days to keep article +## Minimum number of days to keep article ## Default number of days to keep the article ## Flush article after this many days ## , , and can be floating-point numbers or the -## word "never." Times are based on when received unless -p is used; -## see expire.8 +## word "never". Times are based on the arrival time for expire and expireover +## (unless -p is used; see expire(8) and expireover(8)), and on the posting +## time for history retention. +## +## See the expire.ctl man page for more information. # How long to remember old history entries for. -/remember/:2 +/remember/:11 # EOF diff -Nurp inn-2.5.0/control/controlchan.in inn-2.5.1/control/controlchan.in --- inn-2.5.0/control/controlchan.in 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/control/controlchan.in 2009-10-12 11:24:04.000000000 -0700 @@ -1,7 +1,7 @@ #! /usr/bin/perl -w # fixscript will replace this line with code to load INN::Config -## $Id: controlchan.in 8431 2009-04-25 14:22:17Z iulius $ +## $Id: controlchan.in 8553 2009-07-18 13:10:14Z iulius $ ## ## Channel feed program to route control messages to an appropriate handler. ## @@ -175,7 +175,9 @@ while () { next; } + # Count a control article only once. my $approved = $hdr{'approved'} ? 1 : 0; + $approved = -1 if $i > 0; logmsg("$subname, " . join(' ', @progparams) . " $sender $replyto $token, $exclusionpats, $droppats," . " $charset_to, $sitepath, $action" diff -Nurp inn-2.5.0/control/modules/checkgroups.pl inn-2.5.1/control/modules/checkgroups.pl --- inn-2.5.0/control/modules/checkgroups.pl 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/control/modules/checkgroups.pl 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -## $Id: checkgroups.pl 8433 2009-04-26 07:52:35Z iulius $ +## $Id: checkgroups.pl 8552 2009-07-18 13:09:36Z iulius $ ## ## checkgroups control message handler. ## @@ -36,7 +36,9 @@ sub control_checkgroups { my ($ngname, $ngdesc) = split(/\s+/, $_, 2); my $charset_newsgroup = $charset_message; - next if ($ngname =~ /$exclusionpats/ or $ngname =~ /$droppats/); + next if ($ngname !~ /$newsgrouppats/); + next if ($exclusionpats and $ngname =~ /$exclusionpats/); + next if ($droppats and $ngname =~ /$droppats/); # Find the right charset if absent or forced by control.ctl. foreach (@$charset_from) { @@ -62,7 +64,10 @@ sub control_checkgroups { push(@newbody, $ngname."\t".$ngdesc); } - if ($action eq 'mail' and $#newbody >= 0) { + # We do not go on if there is no changes to do. + return if ($#newbody < 0); + + if ($action eq 'mail') { my $mail = sendmail("checkgroups by $sender"); print $mail "$sender posted the following checkgroups message:\n\n"; print $mail map { s/^~/~~/; "$_\n" } @headers; diff -Nurp inn-2.5.0/control/perl-nocem.in inn-2.5.1/control/perl-nocem.in --- inn-2.5.0/control/perl-nocem.in 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/control/perl-nocem.in 2009-10-12 11:24:04.000000000 -0700 @@ -442,13 +442,18 @@ sub read_ctlfile { } while () { chop; - s/^\s+//; s/\s+$//; + s/^\s+//; + s/\s+$//; next if /^#/ or /^$/; my ($issuer, $type) = split(/:/, lc $_); - logmsg("Cannot parse nocem.ctl line <<$_>>", 'err') - if not $issuer and $type; + if (not (defined($issuer) and defined($type))) { + logmsg("Cannot parse nocem.ctl line <<$_>>; syntax is <>.", 'err'); + next; + } $type =~ s/\s//g; - push @ncmperm, "$issuer\001$_" foreach split(/,/, $type); + foreach (split(/,/, $type)) { + push(@ncmperm, "$issuer\001$_"); + } } close CTLFILE; return 1; @@ -523,9 +528,10 @@ the authenticity of their notices. You gpg --no-default-keyring --primary-keyring /pgp/ncmring.gpg --import where is the value of the I parameter set in F -and the file containing the key(s) to import. The keyring -must be located in I/pgp/ncmring.gpg (create the directory -before using B). For old PGP-generated keys, you may have to use +and the file containing the key(s) to import. The keyring must +be located in /pgp/ncmring.gpg; you only have to create the directory +/pgp before using B (it will automatically generate the +F file). For old PGP-generated keys, you may have to use B<--allow-non-selfsigned-uid> if they are not properly self-signed, but anyone creating a key really should self-sign the key. Current PGP implementations do this automatically. @@ -539,9 +545,8 @@ download there a unique file which conta Create a F config file in I indicating the NoCeM issuers and notices you want to follow. This permission file contains lines like: - annihilator-1:* - clewis@ferret.ocunix:mmf - stephane@asynchrone:mmf,openproxy,spam + bleachbot@httrack.com:spam,site + 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 @@ -619,7 +624,7 @@ Copyright 2000 by Miquel van Smoorenburg Copyright 2001 by Marco d'Itri . -$Id: perl-nocem.in 8419 2009-04-13 09:10:38Z iulius $ +$Id: perl-nocem.in 8539 2009-06-28 10:01:24Z iulius $ =head1 SEE ALSO diff -Nurp inn-2.5.0/doc/FAQ inn-2.5.1/doc/FAQ --- inn-2.5.0/doc/FAQ 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/FAQ 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -$Id: FAQ 8485 2009-05-21 17:40:13Z iulius $ +$Id: FAQ 8659 2009-10-10 07:59:50Z iulius $ From: Russ Allbery Subject: INN 2.x FAQ @@ -136,7 +136,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.5.0. +The most recently released version of INN is 2.5.1. INN development proceeds in two branches, as with many other free software projects. The STABLE branch is maintenance of the most recently released @@ -150,7 +150,7 @@ the current full release. Note that the previous STABLE series for INN 2.4 terminated in the release of INN 2.4.6 and current STABLE snapshots are based on INN 2.5. You should therefore read the upgrade instructions in NEWS when upgrading from -a STABLE snapshot before May 23th, 2009 to one dated after that. +a STABLE snapshot before June 8th, 2009 to one dated after that. ------------------------------ @@ -428,7 +428,7 @@ timecaf was new in INN 2.3. Subject: 2.4. What is overview? Overview is summary information about articles in a newsgroup that is -returned to news reading clients as a response to the XOVER command. It's +returned to news reading clients as a response to the OVER command. It's a very common extension to the NNTP protocol that allows readers to review summary information about articles before taking the time (and bandwidth) to download the entire article. @@ -502,9 +502,11 @@ fixes, are very welcome. Subject: 3.1. INN won't start after a new installation -The most common cause of this problem is that inndstart isn't setuid root. -inndstart must be installed owned by root and group news, mode 4550. The -ls -l output for inndstart should look something like: +The most common cause of this problem is that inndstart isn't setuid root +(please note that it only affects versions prior to INN 2.5.0 because +inndstart was removed in INN 2.5.0). inndstart must be installed owned +by root and group news, mode 4550. The ls -l output for inndstart should +look something like: -r-sr-x--- 1 root news 53768 Jan 8 00:47 inndstart* @@ -572,10 +574,10 @@ exceptionally low file descriptor limit. Subject: 3.6. Can't get debugging information out of INN The INN startup process is quite complicated, involving the rc.news shell -script and the setuid inndstart wrapper. This can make it rather -difficult to get enough debugging information out of it to determine -what's going wrong if it's crashing immediately after startup or otherwise -having serious difficulties. +script (and the setuid inndstart wrapper for versions of INN prior to 2.5.0). +This can make it rather difficult to get enough debugging information out +of it to determine what's going wrong if it's crashing immediately after +startup or otherwise having serious difficulties. One approach is to run innd by hand directly, giving it the -d option. This requires setting up a configuration where innd doesn't need to bind @@ -634,7 +636,7 @@ feeding an article to a peer broke down. 3. At this point, you should be looking at a line with "+" in the second field. The article should be on your server at this point. - If it's not, either it's been canceled, or has already expired. + If it's not, either it's been cancelled, or has already expired. 4. You're now interested in whether the article was sent to your peers. At the end of the same line in $pathlog/news, innd puts all of the diff -Nurp inn-2.5.0/doc/config-syntax inn-2.5.1/doc/config-syntax --- inn-2.5.0/doc/config-syntax 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/config-syntax 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -$Id: config-syntax 5843 2002-11-19 00:08:18Z rra $ +$Id: config-syntax 8567 2009-08-15 07:03: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 @@ -39,7 +39,7 @@ enclosed in square brackets and the elem As seen above, groups may be nested. -Multiple occurances of the same parameter in the parameter section of a +Multiple occurrences of the same parameter in the parameter section of a group is an error. In practice, the second parameter will take precedent, but an error will be reported when such a configuration file is parsed. diff -Nurp inn-2.5.0/doc/hook-perl inn-2.5.1/doc/hook-perl --- inn-2.5.0/doc/hook-perl 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/hook-perl 2009-10-12 11:24:04.000000000 -0700 @@ -19,8 +19,8 @@ INN Perl Filtering and Authentication Su For Perl filtering support, you need to have Perl version 5.004 or newer. Earlier versions of Perl will fail with a link error at - compilation time. http://language.perl.com/info/software.html should - have the latest Perl version. + compilation time. should have the + latest Perl version. To enable Perl support, you have to specify --with-perl when you run configure. See INSTALL for more information. @@ -74,7 +74,9 @@ The innd Perl Filter filter_art() is called if Perl filtering is turned on. It receives no arguments, and should return a single scalar value. That value should be the empty string to indicate that INN should accept the article, or - some rejection message to indicate that the article should be rejected. + some rejection message to indicate that the article should be rejected + (make sure that such a message is properly encoded in UTF-8 so as to + comply with the NNTP protocol). filter_art() has access to a global hash named %hdr, which contains all of the standard headers present in the article and their values. The @@ -141,27 +143,29 @@ The innd Perl Filter article is accepted. Note that this must be the empty string, not 0 or undef. Otherwise, the article is rejected, and whatever scalar filter_art() returns (typically a string) will be taken as the reason - why the article was rejected. This reason will be returned to the - remote peer as well as logged to the news logs. (innreport, in its - nightly report, will summarize the number of articles rejected by the - Perl filter and include a count of how many articles were rejected with - each reason string.) + why the article was rejected (make sure that such a message is properly + encoded in UTF-8 so as to comply with the NNTP protocol). This reason + will be returned to the remote peer as well as logged to the news logs. + (innreport, in its nightly report, will summarize the number of articles + rejected by the Perl filter and include a count of how many articles + were rejected with each reason string.) One other type of filtering is also supported. If Perl filtering is turned on and the Perl function filter_messageid() is defined, that function will be called for each message ID received from a peer (via either CHECK or IHAVE). The function receives a single argument, the message ID, and like filter_art() should return an empty string to - accept the article or an error string to refuse the article. This - function is called before any history lookups and for every article - offered to innd with CHECK or IHAVE (before the actual article is sent). - Accordingly, the message ID is the only information it has about the - article (the %hdr hash will be empty). This code would sit in a - performance-critical hot path in a typical server, and therefore should - be as fast as possible, but it can do things like refuse articles from - certain hosts or cancels for already rejected articles (if they follow - the $alz convention) without having to take the network bandwidth hit of - accepting the entire article first. + accept the article or an error string to refuse the article (make sure + that such a message is properly encoded in UTF-8 so as to comply with + the NNTP protocol). This function is called before any history lookups + and for every article offered to innd with CHECK or IHAVE (before the + actual article is sent). Accordingly, the message ID is the only + information it has about the article (the %hdr hash will be empty). + This code would sit in a performance-critical hot path in a typical + server, and therefore should be as fast as possible, but it can do + things like refuse articles from certain hosts or cancels for already + rejected articles (if they follow the $alz convention) without having to + take the network bandwidth hit of accepting the entire article first. Note that you cannot rely on filter_messageid() being called for every incoming article; articles sent via TAKETHIS without an earlier CHECK @@ -185,7 +189,7 @@ The innd Perl Filter shutdown and then reloading it when innd restarts (possibly by startup_innd.pl). - The state of the Perl interpretor in which all of these Perl functions + The state of the Perl interpreter in which all of these Perl functions run is preserved over the lifetime of innd. In other words, it's permissible for the Perl code to create its own global Perl variables, data structures, saved state, and the like, and all of that will be @@ -298,7 +302,7 @@ The nnrpd Posting Filter the headers of the article. (Unlike the innd Perl filter, %hdr for the nnrpd Perl filter contains *all* of the headers, not just the standard ones. If any of the headers are duplicated, though, %hdr will contain - only the value of the last occurance of the header. nnrpd will reject + only the value of the last occurrence of the header. nnrpd will reject the article before the filter runs if any of the standard headers are duplicated.) It also has access to the full body of the article in the variable $body, and if the poster authenticated via AUTHINFO (or if @@ -342,8 +346,9 @@ The nnrpd Posting Filter $modify_headers = 1; If filter_post() returns something other than the empty string, this - message is normally returned to the client as an error. There are three - exceptions: + message is normally returned to the client as an error (make sure that + such a message is properly encoded in UTF-8 so as to comply with the + NNTP protocol). There are three exceptions: * If the string returned begins with "CLOSE", the post will be discarded and the connection closed with a 400 response code. @@ -453,11 +458,13 @@ Perl Authentication Support for nnrpd authenticate() should return a two or three element array. The first element is the NNTP response code to return to the client, the second element is an error string which is passed to the client if the response - code indicates that the authentication attempt has failed. An optional - third return element if present will be used to match the connection - with the users: parameter in access groups and will also be the username - logged. If this element is absent, the username supplied by the client - during authentication will be used for matching and logging. + code indicates that the authentication attempt has failed (make sure + that such a message is properly encoded in UTF-8 so as to comply with + the NNTP protocol). An optional third return element if present will be + used to match the connection with the users: parameter in access groups + and will also be the username logged. If this element is absent, the + username supplied by the client during authentication will be used for + matching and logging. The NNTP response code should be 281 (authentication successful), 481 (authentication unsuccessful), or 403 (server failure). If the code @@ -626,5 +633,5 @@ Available Packages for quotaing the number of messages any user can post to Usenet daily. It uses filter_nnrpd.pl. - $Id: hook-perl.pod 8455 2009-05-08 13:08:38Z iulius $ + $Id: hook-perl.pod 8640 2009-09-29 20:13:55Z iulius $ diff -Nurp inn-2.5.0/doc/hook-python inn-2.5.1/doc/hook-python --- inn-2.5.0/doc/hook-python 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/hook-python 2009-10-12 11:24:04.000000000 -0700 @@ -117,7 +117,8 @@ Writing an innd Filter If you want to accept an article, return "None" or an empty string. To reject, return a non-empty string. The rejection strings will be shown to local clients and your peers, so keep that in mind when - phrasing your rejection responses. + phrasing your rejection responses and make sure that such a message + is properly encoded in UTF-8 so as to comply with the NNTP protocol. filter_messageid(*self*, *msgid*) *msgid* is a buffer object containing the ID of an article being @@ -351,13 +352,14 @@ Writing an nnrpd Filter contains either two or three elements, the first of which is the NNTP response code. The second is an error string which is passed to the client if the response code indicates that the authentication attempt - has failed. This allows a specific error message to be generated by the - Python script in place of the generic message "Authentication failed". - An optional third return element, if present, will be used to match the - connection with the *user* parameter in access groups and will also be - the username logged. If this element is absent, the username supplied - by the client during authentication will be used, as was the previous - behaviour. + has failed (make sure that such a message is properly encoded in UTF-8 + so as to comply with the NNTP protocol). This allows a specific error + message to be generated by the Python script in place of the generic + message "Authentication failed". An optional third return element, if + present, will be used to match the connection with the *user* parameter + in access groups and will also be the username logged. If this element + is absent, the username supplied by the client during authentication + will be used, as was the previous behaviour. The *python_access* parameter (described below) is new; it allows the dynamic generation of an access group of an incoming connection using a @@ -640,5 +642,5 @@ Writing an nnrpd Filter It is intended to be a replacement for a Python native syslog. It works like "INN.syslog", seen above. - $Id: hook-python.pod 8401 2009-04-04 08:06:07Z iulius $ + $Id: hook-python.pod 8640 2009-09-29 20:13:55Z iulius $ diff -Nurp inn-2.5.0/doc/man/INN__Config.3pm inn-2.5.1/doc/man/INN__Config.3pm --- inn-2.5.0/doc/man/INN__Config.3pm 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/INN__Config.3pm 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "INN::Config 3pm" -.TH INN::Config 3pm "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH INN::Config 3pm "2009-05-21" "INN 2.5.1" "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" Config.pm \- Export all the variables an INN Perl script might need .SH "DESCRIPTION" @@ -145,7 +144,7 @@ code of the module to see what you can u You only have to declare the module at the beginning of them: .PP .Vb 2 -\& use lib '/lib/perl'; +\& use lib \*(Aq/lib/perl\*(Aq; \& use INN::Config; .Ve .PP @@ -186,7 +185,7 @@ module. for InterNetNews in 1996. It was converted to the INN::Config Perl module by Julien Elie in 2007. .PP -$Id: Config.pm.in 8357 2009\-02\-27 17:56:00Z iulius $ +\&\f(CW$Id:\fR Config.pm.in 8357 2009\-02\-27 17:56:00Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIinn.conf\fR\|(5), \fIinnconfval\fR\|(1), \fIperl\fR\|(1). diff -Nurp inn-2.5.0/doc/man/active.5 inn-2.5.1/doc/man/active.5 --- inn-2.5.0/doc/man/active.5 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/active.5 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "ACTIVE 5" -.TH ACTIVE 5 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH ACTIVE 5 "2009-05-21" "INN 2.5.1" "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" active \- List of newsgroups carried by the server .SH "DESCRIPTION" @@ -252,7 +251,7 @@ your \fInewsgroups\fR file, which can be Written by Rich \f(CW$alz\fR for InterNetNews. Converted to \&\s-1POD\s0 by Russ Allbery . .PP -$Id: active.pod 8148 2008\-10\-25 18:12:55Z iulius $ +\&\f(CW$Id:\fR active.pod 8148 2008\-10\-25 18:12:55Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIactive.times\fR\|(5), \fIactsync\fR\|(8), \fIcontrolchan\fR\|(8), \fIctlinnd\fR\|(8), \fIdocheckgroups\fR\|(8), diff -Nurp inn-2.5.0/doc/man/active.times.5 inn-2.5.1/doc/man/active.times.5 --- inn-2.5.0/doc/man/active.times.5 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/active.times.5 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "ACTIVE.TIMES 5" -.TH ACTIVE.TIMES 5 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH ACTIVE.TIMES 5 "2009-09-29" "INN 2.5.1" "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" active.times \- List of local creation times of newsgroups .SH "DESCRIPTION" @@ -148,10 +147,12 @@ Each line consists of three fields: .PP The first field is the name of the newsgroup. The second field is the time it was created, expressed as the number of seconds since the epoch. -The third field is the e\-mail address of the person who created the group, -as specified in the control message or on the \fBctlinnd\fR command line, or -the newsmaster specified at configure time if no creator argument was -given to \fBctlinnd\fR (by default, it is \f(CW\*(C`usenet\*(C'\fR). +The third field is plain text intended to describe the entity that created +the newsgroup. This field is encoded in \s-1UTF\-8\s0 and is usually the e\-mail +address of the person who created the group, as specified in the control +message or on the \fBctlinnd\fR command line, or the newsmaster specified +at configure time if no creator argument was given to \fBctlinnd\fR (by +default, it is \f(CW\*(C`usenet\*(C'\fR). .PP You can get the \fIactive.times\fR file of another \s-1NNTP\s0 server with \fIgetlist\fR\|(1). .SH "EXAMPLE" @@ -159,7 +160,7 @@ You can get the \fIactive.times\fR file The line: .PP .Vb 1 -\& news.admin.moderation 1175716803 group\-admin@isc.org +\& news.admin.moderation 1175716803 .Ve .PP shows that the newsgroup news.admin.moderation was created on April 4th, 2007, @@ -175,7 +176,7 @@ the time is not necessarily the same on Written by Rich \f(CW$alz\fR for InterNetNews. Converted to \&\s-1POD\s0 by Russ Allbery . .PP -$Id: active.times.pod 7674 2007\-09\-15 21:49:08Z iulius $ +\&\f(CW$Id:\fR active.times.pod 8638 2009\-09\-28 19:59:48Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIactive\fR\|(5), \fIconvdate\fR\|(1), \fIctlinnd\fR\|(8), \fIgetlist\fR\|(1), \fIinn.conf\fR\|(5), \fIinnd\fR\|(8), diff -Nurp inn-2.5.0/doc/man/actsync.8 inn-2.5.1/doc/man/actsync.8 --- inn-2.5.0/doc/man/actsync.8 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/actsync.8 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "ACTSYNC 8" -.TH ACTSYNC 8 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH ACTSYNC 8 "2009-05-21" "INN 2.5.1" "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" actsync, actsyncd \- Synchronize newsgroups .SH "SYNOPSIS" @@ -435,15 +434,15 @@ fourth field that begins with \f(CW\*(C` other newsgroups. A problem newsgroup is one for which one of the following is true: .RS 4 -.IP "*" 2 +.IP "\(bu" 2 Aliased to itself. -.IP "*" 2 +.IP "\(bu" 2 In an alias chain that loops around to itself. -.IP "*" 2 +.IP "\(bu" 2 In an alias chain longer than 16 groups. -.IP "*" 2 +.IP "\(bu" 2 Aliased to a non-existant newsgroup. -.IP "*" 2 +.IP "\(bu" 2 Aliased to a newsgroup that has an error of some kind. .RE .RS 4 @@ -691,20 +690,16 @@ encountered: where \fIactsync.ign\fR contains: .PP .Vb 3 -\& # Don't compare to.* groups as they will differ. +\& # Don\*(Aqt compare to.* groups as they will differ. \& # \& i to.* -.Ve -.PP -.Vb 5 +\& \& # These are our local groups that nobody else \& # (should) carry. So ignore them for the sake \& # of the compare. \& # \& i nsa.* -.Ve -.PP -.Vb 8 +\& \& # These groups are local favorites, so keep them \& # even if uunet does not carry them. \& # @@ -725,30 +720,24 @@ Based on newsgroups that you decided to the \fIactsync.ign\fR file: .PP .Vb 3 -\& # Don't compare to.* groups as they will differ. +\& # Don\*(Aqt compare to.* groups as they will differ. \& # \& i to.* -.Ve -.PP -.Vb 5 +\& \& # These are our local groups that nobody else \& # (should) carry. So ignore them for the sake \& # of the compare. \& # \& i nsa.* -.Ve -.PP -.Vb 6 +\& \& # These groups are local favorites, so keep them \& # even if uunet does not carry them. \& # \& i ca.dump.bob.dorman \& i alt.tv.dinosaurs.barney.die.die.die \& i alt.sounds.* =alt.binaries.sounds.* -.Ve -.PP -.Vb 7 -\& # Don't sync test groups, except for ones that are +\& +\& # Don\*(Aqt sync test groups, except for ones that are \& # moderated or that are under the gnu hierarchy. \& # \& i *.test @@ -763,23 +752,17 @@ file: .Vb 2 \& # Host to sync off of (host2). \& host=news.uu.net -.Ve -.PP -.Vb 2 +\& \& # Location of the ignore file. \& ignore_file=/actsync.ign -.Ve -.PP -.Vb 2 +\& \& # Where news articles are kept. \& spool= -.Ve -.PP -.Vb 7 +\& \& # actsync(8) flags \& # \& # Automatic execs, report if something was done, -\& # otherwise don't say anything, don't report +\& # otherwise don\*(Aqt say anything, don\*(Aqt report \& # uunet active file problems, just ignore \& # the affected entries. \& flags=\-o x \-v 2 \-q 2 @@ -808,9 +791,7 @@ To check only the major hierarchies agai \& # By default, ignore everything. \& # \& i * -.Ve -.PP -.Vb 12 +\& \& # Check the major groups. \& # \& c alt.* @@ -861,14 +842,14 @@ is effectively the same as the \fIactive .PP .Vb 9 \& cd -\& ctlinnd pause 'running actsync' +\& ctlinnd pause \*(Aqrunning actsync\*(Aq \& rm \-f active.new \& actsync \-o a1 erehwon.honey.edu > active.new \& rm \-f active.old \& ln active active.old \& mv active.new active -\& ctlinnd reload active 'running actsync' -\& ctlinnd go 'running actsync' +\& ctlinnd reload active \*(Aqrunning actsync\*(Aq +\& ctlinnd go \*(Aqrunning actsync\*(Aq .Ve .PP It should be noted that the final method above, pausing the server and @@ -907,7 +888,7 @@ Written by Landon Curt Noll . Converted to \&\s-1POD\s0 by Russ Allbery . .PP -$Id: actsync.pod 7941 2008\-08\-02 17:10:27Z iulius $ +\&\f(CW$Id:\fR actsync.pod 7941 2008\-08\-02 17:10:27Z iulius $ .PP By: Landon Curt Noll (chongo was here /\e../\e). .PP diff -Nurp inn-2.5.0/doc/man/archive.8 inn-2.5.1/doc/man/archive.8 --- inn-2.5.0/doc/man/archive.8 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/archive.8 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "ARCHIVE 8" -.TH ARCHIVE 8 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH ARCHIVE 8 "2009-05-21" "INN 2.5.1" "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" archive \- Usenet article archiver .SH "SYNOPSIS" @@ -202,7 +201,7 @@ in the archive area. .IX Item "-i index" If the \fB\-i\fR flag is used, \fBarchive\fR will append one line to the file \&\fIindex\fR for each article that it archives. This line will contain the -destination file name, the Message\-ID: header, and the Subject: header of +destination file name, the Message-ID: header, and the Subject: header of the message, separated by spaces. If either header is missing (normally not possible if the article was accepted by \fBinnd\fR), it will be replaced by \f(CW\*(C`\*(C'\fR. The headers will be transformed using the same rules as @@ -246,7 +245,7 @@ Replace and with Written by Rich \f(CW$alz\fR for InterNetNews. Converted to \&\s-1POD\s0 by Russ Allbery . .PP -$Id: archive.pod 7851 2008\-05\-26 19:33:08Z iulius $ +\&\f(CW$Id:\fR archive.pod 7851 2008\-05\-26 19:33:08Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIinn.conf\fR\|(5), \fInewsfeeds\fR\|(5). diff -Nurp inn-2.5.0/doc/man/auth_krb5.8 inn-2.5.1/doc/man/auth_krb5.8 --- inn-2.5.0/doc/man/auth_krb5.8 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/auth_krb5.8 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "AUTH_KRB5 8" -.TH AUTH_KRB5 8 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH AUTH_KRB5 8 "2009-09-11" "INN 2.5.1" "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" auth_krb5 \- nnrpd Kerberos\ v5 authenticator .SH "SYNOPSIS" @@ -144,6 +143,12 @@ confirm that they are valid. As such, t \&\fBnnrpd\fR has been given the user's username and password, and therefore is not as secure as real Kerberos authentication. It generally should only be used with \s-1NNTP\s0 over \s-1TLS\s0 to protect the password from sniffing. +.PP +Normally, you do not want to use this authenticator. Instead, use +\&\fBckpasswd\fR with \s-1PAM\s0 support and configure the \fBnnrpd\fR \s-1PAM\s0 stack to use a +Kerberos \s-1PAM\s0 module. A full Kerberos \s-1PAM\s0 module is more sophisticated +about how it validates passwords and has a much broader array of options +than this authenticator. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-i\fR \fIinstance\fR" 4 @@ -168,9 +173,7 @@ of \f(CW\*(C`nntp\*(C'\fR to usernames b \& auth kerberos { \& auth: "auth_krb5 \-i nntp" \& } -.Ve -.PP -.Vb 4 +\& \& access kerberos { \& users: "*/nntp" \& newsgroups: example.* @@ -200,10 +203,10 @@ Originally written by Christopher P.\ Li written by Russ Allbery based on Christopher's original \&\fI\s-1README\s0\fR file. .PP -$Id: auth_krb5.pod 8479 2009\-05\-18 20:01:37Z iulius $ +\&\f(CW$Id:\fR auth_krb5.pod 8595 2009\-08\-21 08:29:26Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fInnrpd\fR\|(8), \fIreaders.conf\fR\|(5). +\&\fIckpasswd\fR\|(8), \fInnrpd\fR\|(8), \fIreaders.conf\fR\|(5). .PP The latest version of Christopher's original \fBnnrpkrb5auth\fR may be found on his web site at . diff -Nurp inn-2.5.0/doc/man/batcher.8 inn-2.5.1/doc/man/batcher.8 --- inn-2.5.0/doc/man/batcher.8 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/batcher.8 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "BATCHER 8" -.TH BATCHER 8 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH BATCHER 8 "2009-05-21" "INN 2.5.1" "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" batcher \- Article batching for InterNetNews .SH "SYNOPSIS" @@ -208,7 +207,7 @@ single \f(CW%s\fR parameter that will be A common value is: .Sp .Vb 1 -\& ( echo '#! gunbatch' ; exec gzip \-c ) | uux \- \-r \-z %s!rnews +\& ( echo \*(Aq#! gunbatch\*(Aq ; exec gzip \-c ) | uux \- \-r \-z %s!rnews .Ve .Sp which generates gzip-compressed batches and feeds them to \fBuux\fR. @@ -268,7 +267,7 @@ file as described above. Written by Rich \f(CW$alz\fR for InterNetNews. Rewritten by Russ Allbery in \s-1POD\s0. .PP -$Id: batcher.pod 7664 2007\-09\-02 12:58:07Z iulius $ +\&\f(CW$Id:\fR batcher.pod 7664 2007\-09\-02 12:58:07Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIctlinnd\fR\|(8), \fIinn.conf\fR\|(5), \fInewsfeeds\fR\|(5), \fIrnews\fR\|(8), \fIsend\-uucp\fR\|(8), \fIshlock\fR\|(1). diff -Nurp inn-2.5.0/doc/man/buffchan.8 inn-2.5.1/doc/man/buffchan.8 --- inn-2.5.0/doc/man/buffchan.8 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/buffchan.8 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "BUFFCHAN 8" -.TH BUFFCHAN 8 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH BUFFCHAN 8 "2009-05-21" "INN 2.5.1" "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" buffchan \- Buffered file\-writing backend for INN .SH "SYNOPSIS" @@ -163,7 +162,7 @@ supported commands: The flush command closes and reopens all open files. An optional site can be specified, in which case \fBbuffchan\fR flushes only that file. This command is analogous to the \f(CW\*(C`ctlinnd flush\*(C'\fR command. This command can be -sent via \fBinnd\fR using \f(CW\*(C`ctlinnd send \f(CIbuffchan-site\f(CW 'flush \f(CIsite\f(CW'\*(C'\fR. +sent via \fBinnd\fR using \f(CW\*(C`ctlinnd send \f(CIbuffchan\-site\f(CW \*(Aqflush \f(CIsite\f(CW\*(Aq\*(C'\fR. .Sp Applications can tell that flush has completed by renaming the file before issuing the command. When the original file name has reappeared, the @@ -181,7 +180,7 @@ the input stream mentions the site again When a \f(CW\*(C`ctlinnd drop site\*(C'\fR command is sent, \fBinnd\fR will automatically forward the command to \fBbuffchan\fR if the site is listed as a funnel feeding into the \fBbuffchan\fR exploder. To drop all sites, use \f(CW\*(C`ctlinnd -send \f(CIbuffchan-site\f(CW drop\*(C'\fR. +send \f(CIbuffchan\-site\f(CW drop\*(C'\fR. .IP "!readmap" 4 .IX Item "!readmap" The map file specified with the \fB\-m\fR option, if given, will be reloaded. @@ -298,7 +297,7 @@ and the file \fIuunet\fR will have these Written by Rich \f(CW$alz\fR for InterNetNews. Converted to \&\s-1POD\s0 by Russ Allbery . .PP -$Id: buffchan.pod 7851 2008\-05\-26 19:33:08Z iulius $ +\&\f(CW$Id:\fR buffchan.pod 7851 2008\-05\-26 19:33:08Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIctlinnd\fR\|(8), \fIfilechan\fR\|(8), \fIinn.conf\fR\|(5), \fIinnd\fR\|(8), \fInewsfeeds\fR\|(5). diff -Nurp inn-2.5.0/doc/man/buffindexed.conf.5 inn-2.5.1/doc/man/buffindexed.conf.5 --- inn-2.5.0/doc/man/buffindexed.conf.5 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/buffindexed.conf.5 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "BUFFINDEXED.CONF 5" -.TH BUFFINDEXED.CONF 5 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH BUFFINDEXED.CONF 5 "2009-05-21" "INN 2.5.1" "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" buffindexed.conf \- Configuration for the buffindexed overview method .SH "DESCRIPTION" @@ -257,9 +256,9 @@ file as an argument: .Sp .Vb 8 \& #!/bin/sh -\& base=`echo "$1" | sed 's%.*/%%'` -\& major=`ls \-Ll "$1" | awk '{print $5}' | tr \-d ,` -\& minor=`ls \-Ll "$1" | awk '{print $6}` +\& base=\`echo "$1" | sed \*(Aqs%.*/%%\*(Aq\` +\& major=\`ls \-Ll "$1" | awk \*(Aq{print $5}\*(Aq | tr \-d ,\` +\& minor=\`ls \-Ll "$1" | awk \*(Aq{print $6}\` \& mkdir \-p \& mknod /"$base" b "$major" "$minor" \& chown news:news /"$base" @@ -275,7 +274,7 @@ user to read and write. Written by Katsuhiro Kondou for InterNetNews. Converted to \s-1POD\s0 by Russ Allbery . .PP -$Id: buffindexed.conf.pod 8195 2008\-11\-29 11:07:02Z iulius $ +\&\f(CW$Id:\fR buffindexed.conf.pod 8195 2008\-11\-29 11:07:02Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIexpireover\fR\|(8), \fIinn.conf\fR\|(5), \fIinndf\fR\|(8), \fImakehistory\fR\|(8). diff -Nurp inn-2.5.0/doc/man/ckpasswd.8 inn-2.5.1/doc/man/ckpasswd.8 --- inn-2.5.0/doc/man/ckpasswd.8 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/ckpasswd.8 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "CKPASSWD 8" -.TH CKPASSWD 8 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH CKPASSWD 8 "2009-05-21" "INN 2.5.1" "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" ckpasswd \- nnrpd password authenticator .SH "SYNOPSIS" @@ -176,11 +175,11 @@ While \s-1INN\s0 doesn't come with a pro databases, on most systems it's fairly easy to write a Perl script to do so. Something like: .Sp -.Vb 16 +.Vb 10 \& #!/usr/bin/perl \& use NDBM_File; \& use Fcntl; -\& tie (%db, 'NDBM_File', '/path/to/database', O_RDWR|O_CREAT, 0640) +\& tie (%db, \*(AqNDBM_File\*(Aq, \*(Aq/path/to/database\*(Aq, O_RDWR|O_CREAT, 0640) \& or die "Cannot open /path/to/database: $!\en"; \& $| = 1; \& print "Username: "; @@ -189,8 +188,8 @@ so. Something like: \& print "Password: "; \& my $passwd = ; \& chomp $passwd; -\& my @alphabet = ('.', '/', 0..9, 'A'..'Z', 'a'..'z'); -\& my $salt = join '', @alphabet[rand 64, rand 64]; +\& my @alphabet = (\*(Aq.\*(Aq, \*(Aq/\*(Aq, 0..9, \*(AqA\*(Aq..\*(AqZ\*(Aq, \*(Aqa\*(Aq..\*(Aqz\*(Aq); +\& my $salt = join \*(Aq\*(Aq, @alphabet[rand 64, rand 64]; \& $db{$user} = crypt ($passwd, $salt); \& untie %db; .Ve @@ -289,7 +288,7 @@ and password (prefixed with \f(CW\*(C`Cl example: .PP .Vb 2 -\& (echo 'ClientAuthname: test' ; echo 'ClientPassword: testing') \e +\& (echo \*(AqClientAuthname: test\*(Aq ; echo \*(AqClientPassword: testing\*(Aq) \e \& | ckpasswd \-f /path/to/passwd/file .Ve .PP @@ -301,7 +300,7 @@ it will print some sort of error message .IX Header "HISTORY" Written by Russ Allbery for InterNetNews. .PP -$Id: ckpasswd.pod 7674 2007\-09\-15 21:49:08Z iulius $ +\&\f(CW$Id:\fR ckpasswd.pod 7674 2007\-09\-15 21:49:08Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIcrypt\fR\|(3), \fInnrpd\fR\|(8), \fIpam\fR\|(7), \fIreaders.conf\fR\|(5). diff -Nurp inn-2.5.0/doc/man/cnfsheadconf.8 inn-2.5.1/doc/man/cnfsheadconf.8 --- inn-2.5.0/doc/man/cnfsheadconf.8 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/cnfsheadconf.8 2009-10-12 11:24:04.000000000 -0700 @@ -1,46 +1,163 @@ -.\" $Revision: 5909 $ -.TH CNFSHEADCONF 8 -.SH NAME -cnfsheadconf \- set CNFS header -.SH SYNOPSIS -.B cnfsheadconf -[ -.B \-c CLASS -] -[ -.B \-h -] -[ -.B \-w -] -.SH DESCRIPTION -.I Cnfsheadconf -reads -.I /cycbuff.conf -and -.I /storage.conf -to determine which cycbuffs are available, reads the specified cycbuff, and -modifies the header as directed by the interactive user. -.SH OPTIONS -.TP -.B \-c CLASS -.I Cnfsheadconf -prints status of (and modifies, if appropriate) the specified class. -.TP -.B \-h -.I Cnfsheadconf -prints usage information. -.TP -.B \-w -.I Cnfsheadconf -prompts for modifications to make to cycbuff header. -.SH HISTORY -Written by Katsuhiro Kondou for InterNetNews. -.de R$ -This is revision \\$3, dated \\$4. +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp .. -.R$ $Id: cnfsheadconf.8 5909 2002-12-03 05:17:18Z vinocur $ +.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" '' +'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 turned on, 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. +.ie \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. nr % 0 +. rr F +.\} +.el \{\ +. de IX +.. +.\} +.\" +.\" 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 "CNFSHEADCONF 8" +.TH CNFSHEADCONF 8 "2009-08-16" "INN 2.5.1" "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" +cnfsheadconf \- Read and write CNFS headers +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +\&\fBcnfsheadconf\fR [\fB\-hw\fR] [\fB\-c\fR \fIclass\fR] +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +\&\fIcnfsheadconf\fR reads \fIpathetc\fR/cycbuff.conf and \fIpathetc\fR/storage.conf +to determine which \s-1CNFS\s0 buffers are available. It then reads all of them +or the specified cyclic buffer via the \fB\-c\fR flag, and modifies the header +as directed by the interactive user if \fB\-w\fR is used. +.SH "OPTIONS" +.IX Header "OPTIONS" +.IP "\fB\-c\fR \fIclass\fR" 4 +.IX Item "-c class" +Print the status of the specified class. It also modifies it in case \fB\-w\fR +is used. +.IP "\fB\-h\fR" 4 +.IX Item "-h" +Print usage information and exit. +.IP "\fB\-w\fR" 4 +.IX Item "-w" +Prompt for modifications to make to cycbuff header. +.SH "HISTORY" +.IX Header "HISTORY" +Written by Katsuhiro Kondou for InterNetNews. Converted +to \s-1POD\s0 by Julien Elie. +.PP +\&\f(CW$Id:\fR cnfsheadconf.pod 8547 2009\-07\-03 22:02:42Z iulius $ .SH "SEE ALSO" -cycbuff.conf(5), -inn.conf(5), -storage.conf(5). +.IX Header "SEE ALSO" +\&\fIcycbuff.conf\fR\|(5), \fIinn.conf\fR\|(5), \fIstorage.conf\fR\|(5). diff -Nurp inn-2.5.0/doc/man/cnfsstat.8 inn-2.5.1/doc/man/cnfsstat.8 --- inn-2.5.0/doc/man/cnfsstat.8 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/cnfsstat.8 2009-10-12 11:24:04.000000000 -0700 @@ -1,100 +1,186 @@ -.\" $Revision: 5909 $ -.TH CNFSSTAT 8 -.SH NAME -cnfsstat \- show usage of cycbuffs -.SH SYNOPSIS -.B cnfsstat -[ -.B \-a -] -[ -.B \-c CLASS -] -[ -.B \-h -] -[ -.B \-l -[ -seconds -] -] -[ -.B \-m BUFFER -] -[ -.B \-P -] -[ -.B \-p -] -[ -.B \-s -] -.SH DESCRIPTION -.I Cnfsstat -reads -.I /cycbuff.conf -and -.I /storage.conf -to determine which cycbuffs are available, read the specified cycbuffs, and -shows their usage status. -.PP -.I Cnfsstat -can be invoked from -.IR rc.news (8), -if -.I -is ``true'', and the result is written to -.IR syslog (3). -.SH OPTIONS -.TP -.B \-a -.I Cnfsstat -prints also the age of the oldest article in the cycbuff. -.TP -.B \-c CLASS -.I Cnfsstat -prints information only for the specified class. -.TP -.B \-h -.I Cnfsstat -prints usage information. -.TP -.B \-l [ seconds ] -.I Cnfsstat -prints a status snapshot every -.IR seconds , -and only exits if there is an error. -The default interval is 600 seconds. -.TP -.B \-m BUFFER -.I Cnfsstat -prints information about the specified buffer in a format suitable -for mrtg. -.TP -.B \-P -.I Cnfsstat -writes PID into -.IR /cnfsstat.pid . -.TP -.B \-p -.I Cnfsstat -prints an mrtg config file. -.TP -.B \-s -.I Cnfsstat -writes output to -.IR syslog (3) -instead of standard output. -.SH HISTORY -Written by Katsuhiro Kondou for InterNetNews. -.de R$ -This is revision \\$3, dated \\$4. +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) +.\" +.\" 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 .. -.R$ $Id: cnfsstat.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" '' +'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 turned on, 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. +.ie \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. nr % 0 +. rr F +.\} +.el \{\ +. de IX +.. +.\} +.\" +.\" 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 "CNFSSTAT 8" +.TH CNFSSTAT 8 "2009-09-11" "INN 2.5.1" "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" +cnfsstat \- Show usage of CNFS buffers +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +\&\fBcnfsstat\fR [\fB\-ahpPsv\fR] [\fB\-c\fR \fIclass\fR] [\fB\-l\fR [\fIseconds\fR]] [\fB\-m\fR \fIbuffer\fR] +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +\&\fIcnfsstat\fR reads \fIpathetc\fR/cycbuff.conf and \fIpathetc\fR/storage.conf +to determine which \s-1CNFS\s0 buffers are available. It then reads the specified +cyclic buffers and shows their usage status. \fIcnfsstat\fR can be invoked from +\&\fBrc.news\fR if \fIdocnfsstat\fR is set to true in \fIinn.conf\fR, and the result is +written to \fIsyslog\fR\|(3). +.SH "OPTIONS" +.IX Header "OPTIONS" +.IP "\fB\-a\fR" 4 +.IX Item "-a" +Besides its usual output, \fIcnfsstat\fR prints the age of the oldest article +in the cycbuff. You may also want to use the \fB\-v\fR flag to see extended +consistency checks. +.IP "\fB\-c\fR \fIclass\fR" 4 +.IX Item "-c class" +Only information for the specified class is printed. +.IP "\fB\-h\fR" 4 +.IX Item "-h" +Print usage information and exit. +.IP "\fB\-l\fR [\fIseconds\fR]" 4 +.IX Item "-l [seconds]" +With this option, \fIcnfsstat\fR prints a status snapshot every \fIseconds\fR, +and only exits if an error occurs. When unspecified, the default interval +is \f(CW600\fR seconds. +.IP "\fB\-m\fR \fIbuffer\fR" 4 +.IX Item "-m buffer" +Print information about the specified buffer in a format suitable for \s-1MRTG\s0. +.IP "\fB\-p\fR" 4 +.IX Item "-p" +Print an \s-1MRTG\s0 config file. +.IP "\fB\-P\fR" 4 +.IX Item "-P" +Write \s-1PID\s0 into \fIpathrun\fR/cnfsstat.pid. +.IP "\fB\-s\fR" 4 +.IX Item "-s" +Write output to \fIsyslog\fR\|(3) instead of standard output. +.IP "\fB\-v\fR" 4 +.IX Item "-v" +Write additional information, especially about consistency checks for article +storage and the \fIhistory\fR file. +.SH "HISTORY" +.IX Header "HISTORY" +Written by Katsuhiro Kondou for InterNetNews. Converted +to \s-1POD\s0 by Julien Elie. +.PP +\&\f(CW$Id:\fR cnfsstat.pod 8576 2009\-08\-18 13:55:11Z iulius $ .SH "SEE ALSO" -cycbuff.conf(5), -inn.conf(5), -rc.news(8), -storage.conf(5). +.IX Header "SEE ALSO" +\&\fIcycbuff.conf\fR\|(5), \fIhistory\fR\|(5), \fIinn.conf\fR\|(5), \fIrc.news\fR\|(8), \fIstorage.conf\fR\|(5). diff -Nurp inn-2.5.0/doc/man/control.ctl.5 inn-2.5.1/doc/man/control.ctl.5 --- inn-2.5.0/doc/man/control.ctl.5 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/control.ctl.5 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "CONTROL.CTL 5" -.TH CONTROL.CTL 5 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH CONTROL.CTL 5 "2009-08-16" "INN 2.5.1" "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" control.ctl \- Specify handling of Usenet control messages .SH "DESCRIPTION" @@ -291,7 +290,9 @@ in the checkgroups for its subsequent pr .Ve .Sp will for instance remove every newsgroup whose name contains \f(CW\*(C`binaries\*(C'\fR -in the comp.* hierarchy, even though mentioned in the checkgroups. +in the comp.* hierarchy, even though such groups are mentioned in the +checkgroups. (In that example, the removal is performed by the \fBdoit\fR +action because \fBdrop\fR does nothing by itself.) .IP "\fBverify\-*\fR" 4 .IX Item "verify-*" If the action starts with the string \f(CW\*(C`verify\-\*(C'\fR, as in: @@ -339,11 +340,12 @@ in \fBdoit\fR=\fIfile\fR described above A mail message is sent to the news administrator without taking any other action. .PP -The difference between a \fBdoit\fR or \fBverify\fR action and a \fBmail\fR action -for a checkgroups control message lies only in what e\-mail is sent; \fBdoit\fR +One of the difference between a \fBdoit\fR or \fBverify\fR action and a \fBmail\fR +action for a checkgroups control message lies in what e\-mail is sent; \fBdoit\fR or \fBverify\fR will mail the news administrator a shell script (which may have already been run) to create, delete, or modify newsgroups to match -the checkgroups message, whereas \fBmail\fR will just mail the entire message. +the checkgroups message, whereas \fBmail\fR will just mail relevant lines +of the checkgroups for manual processing by the news administrator. .PP Use of the \fBverify\fR action for processing newgroup, rmgroup and checkgroups messages is \s-1STRONGLY\s0 recommended. Abuse of control messages @@ -414,9 +416,7 @@ with the following \fIcontrol.ctl\fR ent .PP .Vb 1 \& /maxdocheckgroups/:*:foo.*:2 -.Ve -.PP -.Vb 5 +\& \& checkgroups:foo@bar.com:foo.*:verify\-key\-foo \& checkgroups:foo@bar.com:foo.bar2.*:doit \& checkgroups:foo@bar.com:foo.bar3.*:mail @@ -478,7 +478,7 @@ could have added them to the \fIlocalgro Written by Rich \f(CW$alz\fR for InterNetNews. Rewritten in \&\s-1POD\s0 by Russ Allbery . .PP -$Id: control.ctl.pod 8431 2009\-04\-25 14:22:17Z iulius $ +\&\f(CW$Id:\fR control.ctl.pod 8505 2009\-06\-06 20:10:59Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIcontrolchan\fR\|(8), \fIinn.conf\fR\|(5), \fIinnd\fR\|(8), \fInewsfeeds\fR\|(5), \fInewsgroups\fR\|(5), diff -Nurp inn-2.5.0/doc/man/convdate.1 inn-2.5.1/doc/man/convdate.1 --- inn-2.5.0/doc/man/convdate.1 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/convdate.1 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "CONVDATE 1" -.TH CONVDATE 1 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH CONVDATE 1 "2009-05-21" "INN 2.5.1" "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" convdate \- Convert to/from RFC\ 2822 dates and seconds since epoch .SH "SYNOPSIS" @@ -180,23 +179,17 @@ Most of these examples are taken, with m page dating from 1991 and were run in the \s-1EST/EDT\s0 time zone. .PP .Vb 2 -\& % convdate '10 Feb 1991 10:00:00 \-0500' +\& % convdate \*(Aq10 Feb 1991 10:00:00 \-0500\*(Aq \& Sun Feb 10 10:00:00 1991 -.Ve -.PP -.Vb 3 -\& % convdate '13 Dec 91 12:00 EST' '04 May 1990 0:0:0' +\& +\& % convdate \*(Aq13 Dec 91 12:00 EST\*(Aq \*(Aq04 May 1990 0:0:0\*(Aq \& Fri Dec 13 12:00:00 1991 \& Fri May 4 00:00:00 1990 -.Ve -.PP -.Vb 3 -\& % convdate \-n '10 feb 1991 10:00' '4 May 90 12:00' +\& +\& % convdate \-n \*(Aq10 feb 1991 10:00\*(Aq \*(Aq4 May 90 12:00\*(Aq \& 666198000 \& 641880000 -.Ve -.PP -.Vb 2 +\& \& % convdate \-c 666198000 \& Sun Feb 10 10:00:00 1991 .Ve @@ -206,14 +199,10 @@ page dating from 1991 and were run in th .Vb 2 \& % convdate \-dc 666198000 \& Sun, 10 Feb 1991 15:00:00 +0000 (UTC) -.Ve -.PP -.Vb 2 +\& \& % env TZ=PST8PDT convdate \-dlc 666198000 \& Sun, 10 Feb 1991 07:00:00 \-0800 (PST) -.Ve -.PP -.Vb 2 +\& \& % env TZ=EST5EDT convdate \-dlc 666198000 \& Sun, 10 Feb 1991 10:00:00 \-0500 (EST) .Ve @@ -225,7 +214,7 @@ determine (or at least override) the loc Written by Rich \f(CW$alz\fR , rewritten and updated by Russ Allbery for the \fB\-d\fR and \fB\-l\fR flags. .PP -$Id: convdate.pod 7804 2008\-04\-28 09:01:19Z iulius $ +\&\f(CW$Id:\fR convdate.pod 7804 2008\-04\-28 09:01:19Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIactive.times\fR\|(5). diff -Nurp inn-2.5.0/doc/man/ctlinnd.8 inn-2.5.1/doc/man/ctlinnd.8 --- inn-2.5.0/doc/man/ctlinnd.8 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/ctlinnd.8 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "CTLINND 8" -.TH CTLINND 8 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH CTLINND 8 "2009-09-29" "INN 2.5.1" "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" ctlinnd \- Control the main InterNetNews daemon .SH "SYNOPSIS" @@ -177,7 +176,7 @@ The default is zero, indicating that \fB Here is the complete list of supported commands. Note that nearly all commands have a fixed number of arguments. If a parameter may be an empty string, it is still necessary to pass the empty string to \fBctlinnd\fR as an -argument (specified in the shell as two adjacent quotes, like \f(CW''\fR). +argument (specified in the shell as two adjacent quotes, like \f(CW\*(Aq\*(Aq\fR). .IP "addhist \fImessage-id\fR \fIarrival\fR \fIexpires\fR \fIposted\fR \fItoken\fR" 4 .IX Item "addhist message-id arrival expires posted token" Add an entry to the history database for \fImessage-id\fR. The angle @@ -213,7 +212,7 @@ normally be protected from the shell wit quotes). For instance: .Sp .Vb 1 -\& ctlinnd cancel 'test@foo.bar' +\& ctlinnd cancel \*(Aqtest@foo.bar\*(Aq .Ve .Sp Note that the history database is updated with the specified message-ID @@ -366,12 +365,12 @@ equal sign, only the first character is identity of the person creating the group. If the newsgroup already exists, this is equivalent to the \f(CW\*(C`changegroup\*(C'\fR command. .Sp -\&\fIcreator\fR may be omitted; if so, it will default to the newsmaster (as -specified at configure time, normally \f(CW\*(C`usenet\*(C'\fR). \fImode\fR may also be -omitted; if so, it will default to \f(CW\*(C`y\*(C'\fR (a normal, unmoderated group). -The combination of defaults make it possible to use the text of the -Control: header directly (although don't do this without checking the -syntactic validity of the header first). +\&\fIcreator\fR, encoded in \s-1UTF\-8\s0 if given, may be omitted; if so, it will +default to the newsmaster (as specified at configure time, normally +\&\f(CW\*(C`usenet\*(C'\fR). \fImode\fR may also be omitted; if so, it will default to \f(CW\*(C`y\*(C'\fR +(a normal, unmoderated group). The combination of defaults make it possible +to use the text of the Control: header directly (although don't do this +without checking the syntactic validity of the header first). .Sp This command can only be done while the server is running or throttled manually. It will update its internal state when a \f(CW\*(C`go\*(C'\fR command is @@ -399,7 +398,7 @@ connections are closed, but the history be used for short-term locks, such as when replacing the history database. If the server was not started with the \fB\-n y\fR flag, this command also does the equivalent of a \f(CW\*(C`readers\*(C'\fR command with \f(CW\*(C`no\*(C'\fR as the -flag and \fIreason\fR as the text. +flag and \fIreason\fR as the text, encoded in \s-1UTF\-8\s0. .IP "perl \fIflag\fR" 4 .IX Item "perl flag" Enable or disable Perl filtering. This command is only available if \s-1INN\s0 @@ -415,16 +414,16 @@ filtering is enabled; if it starts with Allow or disallow readers. If \fIflag\fR starts with the letter \f(CW\*(C`n\*(C'\fR, then reading is disallowed by causing the server to pass \fItext\fR as the value of the \fB\-r\fR flag to \fBnnrpd\fR. If \fIflag\fR starts with the letter \f(CW\*(C`y\*(C'\fR and -\&\fItext\fR is either an empty string or the same string that was used when -reading was disabled, reading will be re\-enabled. +\&\fItext\fR is either an empty string or the same string, encoded in \s-1UTF\-8\s0, that +was used when reading was disabled, reading will be re-enabled. .Sp This command has no effect if \fBnnrpd\fR is being run separately rather than spawned by \fBinnd\fR. .IP "reject \fIreason\fR" 4 .IX Item "reject reason" Remote connections (those that would not be handed off to \fBnnrpd\fR) are -rejected with \fIreason\fR given as the explanation. Existing connections -are not closed. +rejected with \fIreason\fR given as the explanation, encoded in \s-1UTF\-8\s0. Existing +connections are not closed. .IP "reload \fIwhat\fR \fIreason\fR" 4 .IX Item "reload what reason" Update the in-memory copy of server configuration files. \fIwhat\fR @@ -437,7 +436,7 @@ changes to those files, use \f(CW\*(C`ct .Sp If \fIwhat\fR is the empty string or the word \f(CW\*(C`all\*(C'\fR, everything is reloaded. If it is the word \f(CW\*(C`history\*(C'\fR, the history database is closed -and re\-opened. If it is the word \f(CW\*(C`incoming.conf\*(C'\fR, the +and re-opened. If it is the word \f(CW\*(C`incoming.conf\*(C'\fR, the corresponding file is reloaded. If it is the word \f(CW\*(C`active\*(C'\fR or \&\f(CW\*(C`newsfeeds\*(C'\fR, both the \fIactive\fR and \fInewsfeeds\fR files are reloaded, which will also cause all outgoing feeds to be flushed and restarted. @@ -475,9 +474,9 @@ Identical to the \f(CW\*(C`lowmark\*(C'\ .IP "reserve \fIreason\fR" 4 .IX Item "reserve reason" Require the next \f(CW\*(C`pause\*(C'\fR or \f(CW\*(C`throttle\*(C'\fR command to use \fIreason\fR as its -reason. This reservation is cleared by giving an empty string for the -reason. This is used by programs like \fBexpire\fR to coordinate pauses and -throttles of the server and avoid trampling on other instances of +reason, encoded in \s-1UTF\-8\s0. This reservation is cleared by giving an empty +string for the reason. This is used by programs like \fBexpire\fR to coordinate +pauses and throttles of the server and avoid trampling on other instances of themselves. .IP "rmgroup \fIgroup\fR" 4 .IX Item "rmgroup group" @@ -523,7 +522,7 @@ server is throttled cannot be done.) .Sp If the server was not started with the \fB\-n y\fR flag, then this command also does the equivalent of a \f(CW\*(C`readers\*(C'\fR command with \f(CW\*(C`no\*(C'\fR as the -flag and \fIreason\fR as the text. +flag and \fIreason\fR as the text, encoded in \s-1UTF\-8\s0. .IP "timer (off | \fIinterval\fR)" 4 .IX Item "timer (off | interval)" Adjust the frequency with which \fBinnd\fR reports performance information to @@ -578,7 +577,7 @@ server replies are limited to 4\ \s-1KB\ Written by Rich \f(CW$alz\fR for InterNetNews. Rewritten in \&\s-1POD\s0 by Russ Allbery . .PP -$Id: ctlinnd.pod 8468 2009\-05\-16 12:28:24Z iulius $ +\&\f(CW$Id:\fR ctlinnd.pod 8638 2009\-09\-28 19:59:48Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIactive\fR\|(5), \fIactive.times\fR\|(5), \fIbuffchan\fR\|(8), \fIincoming.conf\fR\|(5), \fIinnd\fR\|(8), diff -Nurp inn-2.5.0/doc/man/cycbuff.conf.5 inn-2.5.1/doc/man/cycbuff.conf.5 --- inn-2.5.0/doc/man/cycbuff.conf.5 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/cycbuff.conf.5 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "CYCBUFF.CONF 5" -.TH CYCBUFF.CONF 5 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH CYCBUFF.CONF 5 "2009-05-21" "INN 2.5.1" "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" cycbuff.conf \- Configuration file for INN CNFS storage method .SH "DESCRIPTION" @@ -223,7 +222,7 @@ metacycbuff line. .PP \&\fBinnd\fR only reads \fIcycbuff.conf\fR on startup, so if you change anything in this file and want \fBinnd\fR to pick up the changes, you have to use -\&\f(CW\*(C`ctlinnd xexec innd\*(C'\fR; \f(CW\*(C`ctlinnd reload all ''\*(C'\fR is not sufficient. +\&\f(CW\*(C`ctlinnd xexec innd\*(C'\fR; \f(CW\*(C`ctlinnd reload all \*(Aq\*(Aq\*(C'\fR is not sufficient. .PP When articles are stored, the cycbuff into which they're stored is saved as part of the article token. In order for \s-1INN\s0 to retrieve articles from @@ -299,9 +298,9 @@ file as an argument: .Sp .Vb 8 \& #!/bin/sh -\& base=`echo "$1" | sed 's%.*/%%'` -\& major=`ls \-Ll "$1" | awk '{print $5}' | tr \-d ,` -\& minor=`ls \-Ll "$1" | awk '{print $6}` +\& base=\`echo "$1" | sed \*(Aqs%.*/%%\*(Aq\` +\& major=\`ls \-Ll "$1" | awk \*(Aq{print $5}\*(Aq | tr \-d ,\` +\& minor=\`ls \-Ll "$1" | awk \*(Aq{print $6}\` \& mkdir \-p /cycbuffs \& mknod /cycbuffs/"$base" b "$major" "$minor" \& chown news:news /cycbuffs/"$base" @@ -312,7 +311,7 @@ Make sure that the created files are own group, as specified at configure time (the default being \f(CW\*(C`news\*(C'\fR for both). Also make sure that the permissions on the devices allow the news user to read and write, and if you want other users on the system to be -able to use \fBsm\fR to retrieve articles, make sure they're world\-readable. +able to use \fBsm\fR to retrieve articles, make sure they're world-readable. .PP Once you have everything configured properly and you start \fBinnd\fR, you should see messages in \fInews.notice\fR that look like: @@ -327,7 +326,7 @@ where \f(CW\*(C`ONE\*(C'\fR will be what Written by Katsuhiro Kondou for InterNetNews. Rewritten into \s-1POD\s0 by Russ Allbery . .PP -$Id: cycbuff.conf.pod 7859 2008\-06\-07 12:44:17Z iulius $ +\&\f(CW$Id:\fR cycbuff.conf.pod 7859 2008\-06\-07 12:44:17Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIctlinnd\fR\|(8), \fIinnd\fR\|(8), \fInnrpd\fR\|(8), \fIsm\fR\|(1), \fIstorage.conf\fR\|(5). diff -Nurp inn-2.5.0/doc/man/dbz.3 inn-2.5.1/doc/man/dbz.3 --- inn-2.5.0/doc/man/dbz.3 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/dbz.3 2009-10-12 11:24:04.000000000 -0700 @@ -4,7 +4,7 @@ dbzinit, dbzfresh, dbzagain, dbzclose, dbzexists, dbzfetch, dbzstore, dbzsync, dbzsize, dbzgetoptions, dbzsetoptions, dbzdebug \- database routines .SH SYNOPSIS .nf -.B #include +.B #include .PP .B "bool dbzinit(const char *base)" .PP diff -Nurp inn-2.5.0/doc/man/distrib.pats.5 inn-2.5.1/doc/man/distrib.pats.5 --- inn-2.5.0/doc/man/distrib.pats.5 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/distrib.pats.5 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "DISTRIB.PATS 5" -.TH DISTRIB.PATS 5 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH DISTRIB.PATS 5 "2009-09-29" "INN 2.5.1" "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" distrib.pats \- Default values for the Distribution: header .SH "DESCRIPTION" @@ -155,7 +154,9 @@ pattern to specify a set of newsgroups. The third field is the value that should be used for the Distribution: header of a posted article, if this line was picked as the best match and no Distribution: header was supplied by the user. It can be an empty -string, specifying that no Distribution: header should be added. +string, specifying that no Distribution: header should be added. If it +is not empty, it is better to only use US-ASCII characters for that field; +otherwise, make sure it is encoded in \s-1UTF\-8\s0. .PP When a post is received by \fBnnrpd\fR that does not already contain a Distribution: header, each newsgroup to which an article is posted will be @@ -171,7 +172,7 @@ A list of recommended distributions can Written by Rich \f(CW$alz\fR for InterNetNews. Converted to \&\s-1POD\s0 by Russ Allbery . .PP -$Id: distrib.pats.pod 8435 2009\-05\-01 08:59:23Z iulius $ +\&\f(CW$Id:\fR distrib.pats.pod 8638 2009\-09\-28 19:59:48Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIdistributions\fR\|(5), \fIinn.conf\fR\|(5), \fInewsfeeds\fR\|(5), \fInnrpd\fR\|(8), \fIuwildmat\fR\|(3). diff -Nurp inn-2.5.0/doc/man/distributions.5 inn-2.5.1/doc/man/distributions.5 --- inn-2.5.0/doc/man/distributions.5 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/distributions.5 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "DISTRIBUTIONS 5" -.TH DISTRIBUTIONS 5 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH DISTRIBUTIONS 5 "2009-05-21" "INN 2.5.1" "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" distributions \- Recommended values for the Distribution: header .SH "DESCRIPTION" @@ -170,7 +169,7 @@ if \fIdistrib.pats\fR\|(5) is correctly .IX Header "HISTORY" Written by Julien Elie for InterNetNews. .PP -$Id: distributions.pod 8357 2009\-02\-27 17:56:00Z iulius $ +\&\f(CW$Id:\fR distributions.pod 8357 2009\-02\-27 17:56:00Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIdistrib.pats\fR\|(5), \fInewsfeeds\fR\|(5), \fInnrpd\fR\|(8). diff -Nurp inn-2.5.0/doc/man/docheckgroups.8 inn-2.5.1/doc/man/docheckgroups.8 --- inn-2.5.0/doc/man/docheckgroups.8 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/docheckgroups.8 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "DOCHECKGROUPS 8" -.TH DOCHECKGROUPS 8 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH DOCHECKGROUPS 8 "2009-05-21" "INN 2.5.1" "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" docheckgroups \- Process checkgroups and output a list of changes .SH "SYNOPSIS" @@ -306,7 +305,7 @@ The list of local newsgroups along with .IX Header "HISTORY" Documentation written by Julien Elie for InterNetNews. .PP -$Id: docheckgroups.pod 8357 2009\-02\-27 17:56:00Z iulius $ +\&\f(CW$Id:\fR docheckgroups.pod 8357 2009\-02\-27 17:56:00Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIactive\fR\|(5), \fIcontrolchan\fR\|(8), \fIctlinnd\fR\|(8), \fImod\-active\fR\|(8), \fInewsgroups\fR\|(5). diff -Nurp inn-2.5.0/doc/man/domain.8 inn-2.5.1/doc/man/domain.8 --- inn-2.5.0/doc/man/domain.8 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/domain.8 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "DOMAIN 8" -.TH DOMAIN 8 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH DOMAIN 8 "2009-05-21" "INN 2.5.1" "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" domain \- nnrpd domain resolver .SH "SYNOPSIS" @@ -155,9 +154,7 @@ internal domain names: \& res: "domain .internal" \& default\-domain: "example.com" \& } -.Ve -.PP -.Vb 4 +\& \& access internal { \& users: "*@example.com" \& newsgroups: example.* @@ -181,7 +178,7 @@ If so, the example above should reflect .IX Header "HISTORY" This documentation was written by Jeffrey M.\ Vinocur . .PP -$Id: domain.pod 8200 2008\-11\-30 13:31:30Z iulius $ +\&\f(CW$Id:\fR domain.pod 8200 2008\-11\-30 13:31:30Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fInnrpd\fR\|(8), \fIreaders.conf\fR\|(5) diff -Nurp inn-2.5.0/doc/man/expire.8 inn-2.5.1/doc/man/expire.8 --- inn-2.5.0/doc/man/expire.8 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/expire.8 2009-10-12 11:24:04.000000000 -0700 @@ -1,251 +1,266 @@ -.\" $Revision: 5909 $ -.TH EXPIRE 8 -.SH NAME +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) +.\" +.\" 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" '' +'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 turned on, 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. +.ie \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. nr % 0 +. rr F +.\} +.el \{\ +. de IX +.. +.\} +.\" +.\" 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 "EXPIRE 8" +.TH EXPIRE 8 "2009-09-11" "INN 2.5.1" "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" expire \- Usenet article and history expiration program -.SH SYNOPSIS -.B expire -[ -.BI \-d " dir" -] -[ -.BI \-f " file" -] -[ -.BI \-g " file" -] -[ -.BI \-h " file" -] -[ -.B \-i -] -[ -.B \-N -] -[ -.B \-n -] -[ -.B \-p -] -[ -.BI \-r " reason" -] -[ -.BI \-s " size" -] -[ -.B \-t -] -[ -.BI \-v " level" -] -[ -.BI \-w " number" -] -[ -.B \-x -] -[ -.BI \-z " file" -] -[ -.I expire.ctl -] -.SH DESCRIPTION -.I Expire -scans the -.IR history (5)-format -text file -.I /history +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +\&\fBexpire\fR [\fB\-iNnptx\fR] [\fB\-d\fR \fIdir\fR] [\fB\-f\fR \fIfile\fR] [\fB\-g\fR \fIfile\fR] +[\fB\-h\fR \fIfile\fR] [\fB\-r\fR \fIreason\fR] [\fB\-s\fR \fIsize\fR] [\fB\-v\fR \fIlevel\fR] +[\fB\-w\fR \fInumber\fR] [\fB\-z\fR \fIfile\fR] [\fIexpire.ctl\fR] +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +\&\fBexpire\fR scans the \fIhistory\fR\|(5)\-format text file \fIpathdb\fR/history and uses the information recorded in it to purge itself of old news articles. -Articles stored using a storage method that has self-expire -functionality are by default not affected by -.IR expire 's -primary behavior (but see the ``\fB\-N\fP'' flag to disable this). In -this case, -.I expire.ctl -is ignored except ``/remember/'' line for that article; -.I expire -does still probe to see if the article still exists and purges the -relevant history and overview entries if appropriate. -However, if ``groupbaseexpiry'' in -.I inn.conf -is true, -.I expire -acts on all articles as specified by -.I expire.ctl -regardless of whether their storage methods have self-expire -functionality. In this case, the ``\fB\-e\fP'', \&``\fB\-k\fP'', -``\fB\-N\fP'', ``\fB\-p\fP'', ``\fB\-q\fP'', ``\fB\-w\fP'' and -``\fB\-z\fP'' flags are ignored. +Articles stored using a storage method that has self-expire functionality +are by default not affected by \fBexpire\fR's primary behavior (but see the +\&\fB\-N\fR flag to disable this). In this case, \fIexpire.ctl\fR is ignored +except the \f(CW\*(C`/remember/\*(C'\fR line for that article; \fBexpire\fR does still +probe to see if the article still exists and purges the relevant history +and overview entries if appropriate. However, if \fIgroupbaseexpiry\fR in +\&\fIinn.conf\fR is true, \fBexpire\fR acts on all articles as specified by +\&\fIexpire.ctl\fR regardless of whether their storage methods have +self-expire functionality. .PP -Note that -.I expire -never purges articles which do not match any entry in -.IR expire.ctl . -.SH OPTIONS -.TP -.B \-d dir -If the ``\fB\-d\fP'' flag is used, then the new history file and database is -created in the specified directory, -.IR dir . -This is useful when the filesystem does not have sufficient space to -hold both the old and new history files. -When this flag is used, -.I expire -leaves the server paused and creates a zero-length file named after the -new history file, with an extension of ``.done'' to indicate that -it has successfully completed the expiration. -The calling script should install the new history file and un-pause the server. -The ``\fB\-r\fP'' flag should be used with this flag. -.TP -.B \-f file -To specify an alternate history file, use the ``\fB\-f\fP'' flag. -This flag is valid when used with the ``\fB\-d\fP'', and the output will -be written to the specified file. -The default without ``\fB\-f\fP'' flag is ``history''. -.TP -.B \-g file -If the ``\fB\-g\fP'' flag is given, then a one-line summary equivalent to the -output of ``\fB\-v\fP 1'', except preceded by the current time, will be -appended to the specified -.IR file . -.TP -.B \-h file -To specify an alternate input text history file, use the ``\fB\-h\fP'' flag. -.I Expire -uses the old -.IR dbz (3) -database to determine the size of the new one. -(If ``\fB\-d\fP'' flag is not used, the output filename will be the same -as the input filename with an extension of ``.n''.) -The default without ``\fB\-h\fP'' flag is -.IR /history . -.TP -.B \-i -To ignore the old database, use the ``\fB\-i\fP'' flag. -.TP -.B \-N +Note that \fBexpire\fR never purges articles which do not match any entry +in \fIexpire.ctl\fR. +.SH "OPTIONS" +.IX Header "OPTIONS" +.IP "\fB\-d\fR \fIdir\fR" 4 +.IX Item "-d dir" +If the \fB\-d\fR flag is used, then the new \fIhistory\fR file and database +is created in the specified directory \fIdir\fR. This is useful when the +filesystem does not have sufficient space to hold both the old and +new history files. When this flag is used, \fBexpire\fR leaves the server +paused and creates a zero-length file named after the new history file, +with an extension of \f(CW\*(C`.done\*(C'\fR to indicate that it has successfully completed +the expiration. The calling script should install the new history file and +unpause the server. The \fB\-r\fR flag should be used with this flag. +.IP "\fB\-f\fR \fIfile\fR" 4 +.IX Item "-f file" +To specify an alternate history file, use the \fB\-f\fR flag. This flag is +valid when used with the \fB\-d\fR flag, and the output will be written +to the specified file. The default without \fB\-f\fR is \f(CW\*(C`history\*(C'\fR. +.IP "\fB\-g\fR \fIfile\fR" 4 +.IX Item "-g file" +If the \fB\-g\fR flag is given, then a one-line summary equivalent to the +output of \fB\-v 1\fR, except preceded by the current time, will be appended +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 \fIdbz\fR\|(3) 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 +The default without the \fB\-h\fR flag is \fIpathdb\fR/history. +.IP "\fB\-i\fR" 4 +.IX Item "-i" +To ignore the old database, use the \fB\-i\fR flag. +.IP "\fB\-N\fR" 4 +.IX Item "-N" The control file is normally ignored for articles in storage methods -which have self-expire functionality. -If the ``\fB\-N\fP'' flag is used, -.I expire -still uses the control file for these articles. -.TP -.B \-n -If -.I innd -is not running, use the ``\fB\-n\fP'' flag and -.I expire -will not send the ``pause'' or ``go'' commands. -(For more details on the commands, see -.IR ctlinnd (8)). -Note that -.I expire -only needs exclusive access for a very short time \(em long enough to see -if any new articles arrived since it first hit the end of the file, and to -rename the new files to the working files. -.TP -.B \-p -.I Expire -makes its decisions on the time the article arrived, as found in the -.I history -file. -This means articles are often kept a little longer than with other -expiration programs that base their decisions on the article's posting -date. -To use the article's posting date, use the ``\fB\-p\fP'' flag. -.TP -.B \-r reason -.I Expire -normally sends a ``pause'' command to the local -.IR innd (8) -daemon when it needs exclusive access to the history file, using -the string ``Expiring'' as the reason. -To give a different reason, use the ``\fB\-r\fP'' flag. -The process ID will be appended to the reason. -When -.I expire -is finished and the new history file is ready, it sends a ``go'' command. -See also the ``\fB\-n\fP'' flag. -.TP -.B \-s size -Optimize the new history database for approximately -.I size -pairs (lines in -.IR history ). -Accurately specifying the size will create a more efficient database. -(The size should be the estimated eventual size of the file, typically -the size of the old file.) -.TP -.B \-t -If the ``\fB\-t\fP'' flag is used, then -.I expire -will generate a list of the tokens that should be removed on its -standard output, and the new history file will be left in -.IR history.n , -.IR history.n.dir , -.I history.n.index -and -.IR history.n.hash . -This flag be useful for debugging when used with the ``\fB\-n\fP'' -flags. Note that if the ``\fB\-f\fP'' flag is used, then the -name specified with that flag will be used instead of -.IR history . -.TP -.B \-v level -The ``\fB\-v\fP'' flag is used to increase the verbosity of the program, -generating messages to standard output. -The -.I level -should be a number, where higher numbers result in more output. -Level one will print totals of the various actions done (not valid if a -new history file is not written), level two will print a report on each -individual file, while level five results in multiple lines of output -for every history line processed. -.TP -.B \-w number -Use the ``\fB\-w\fP'' flag to ``warp'' time so that -.I expire -thinks it is running at some time other then the current time. -The value should be a signed floating point number indicating the number -of days to use as the offset. -.TP -.B \-x -If the ``\fB\-x\fP'' flag is used, then -.I expire -will not create any new history files. This is most useful when combined -with the ``\fB\-n\fP'' and `\fB`\-t\fP'' flags to see how -different expiration policies would change the amount of disk space used. -.TP -.B \-z file -If the ``\fB\-z\fP'' flag is used, then articles are not removed, but their -names are appended to the specified -.IR file . -See the description of -.I delayrm -in -.IR news.daily (8). +which have self-expire functionality. If the \fB\-N\fR flag is used, +\&\fBexpire\fR still uses the control file for these articles. +.IP "\fB\-n\fR" 4 +.IX Item "-n" +If \fBinnd\fR is not running, use the \fB\-n\fR flag and \fBexpire\fR will not +send the \f(CW\*(C`pause\*(C'\fR or \f(CW\*(C`go\*(C'\fR commands. (For more details on the commands, +see \fIctlinnd\fR\|(8)). Note that \fBexpire\fR only needs exclusive access for +a very short time \-\-\ long enough to see if any new articles arrived +since it first hit the end of the file, and to rename the new files +to the working files. +.IP "\fB\-p\fR" 4 +.IX Item "-p" +\&\fBexpire\fR makes its decisions on the time the article arrived, as found +in the \fIhistory\fR file. This means articles are often kept a little +longer than with other expiration programs that base their decisions +on the article's posting date. To use the article's posting date, +use the \fB\-p\fR flag. +.IP "\fB\-r\fR \fIreason\fR" 4 +.IX Item "-r reason" +\&\fBexpire\fR normally sends a \f(CW\*(C`pause\*(C'\fR command to the local \fBinnd\fR daemon +when it needs exclusive access to the \fIhistory\fR file, using the string +\&\f(CW\*(C`Expiring\*(C'\fR as the reason. To give a different reason, use the \fB\-r\fR flag. +The process \s-1ID\s0 will be appended to the reason. When \fBexpire\fR is finished +and the new \fIhistory\fR file is ready, it sends a \f(CW\*(C`go\*(C'\fR command. See +also the \fB\-n\fR flag. +.IP "\fB\-s\fR \fIsize\fR" 4 +.IX Item "-s size" +Optimize the new history database for approximately \fIsize\fR pairs +(lines in \fIhistory\fR). Accurately specifying the size will create +a more efficient database. (The size should be the estimated eventual size +of the file, typically the size of the old file.) +.IP "\fB\-t\fR" 4 +.IX Item "-t" +If the \fB\-t\fR flag is used, then \fBexpire\fR will generate a list of the +tokens that should be removed on its standard output, and the new \fIhistory\fR +file will be left in \fIhistory.n\fR, \fIhistory.n.dir\fR, \fIhistory.n.index\fR +and \fIhistory.n.hash\fR. This flag is useful for debugging when used with +the \fB\-n\fR flag. Note that if the \fB\-f\fR flag is used, then the name +specified with that flag will be used instead of \fIhistory\fR. +.IP "\fB\-v\fR \fIlevel\fR" 4 +.IX Item "-v level" +The \fB\-v\fR flag is used to increase the verbosity of the program, generating +messages to standard output. The \fIlevel\fR should be a number, where higher +numbers result in more output. Level one will print totals of the various +actions done (not valid if a new \fIhistory\fR file is not written), level two +will print a report on each individual file, while level five results in +multiple lines of output for every history line processed. +.IP "\fB\-w\fR \fInumber\fR" 4 +.IX Item "-w number" +Use the \fB\-w\fR flag to \*(L"warp\*(R" time so that \fBexpire\fR thinks it is running +at some time other then the current time. The value should be a signed +floating point number indicating the number of days to use as the offset. +.IP "\fB\-x\fR" 4 +.IX Item "-x" +If the \fB\-x\fR flag is used, then \fBexpire\fR will not create any new history +files. This is most useful when combined with the \fB\-n\fR and \fB\-t\fR flags +to see how different expiration policies would change the amount of disk +space used. +.IP "\fB\-z\fR \fIfile\fR" 4 +.IX Item "-z file" +If the \fB\-z\fR flag is used, then articles are not removed, but their names +are appended to the specified \fIfile\fR. See the description of \fBdelayrm\fR +in \fInews.daily\fR\|(8). If a filename is specified, it is taken as the control +file and parsed according to the rules in \fIexpire.ctl\fR. A single dash +(\f(CW\*(C`\-\*(C'\fR) may be used to read the file from standard input. If no file +is specified, the file \fIpathetc\fR/expire.ctl is read. +.SH "HISTORY" +.IX Header "HISTORY" +Written by Rich \f(CW$alz\fR for InterNetNews. Converted to +\&\s-1POD\s0 by Julien Elie. .PP -If a filename is specified, it is taken as the control file and parsed -according to the rules in -.IR expire.ctl . -A single dash (``\-'') may be used to read the file from standard input. -If no file is specified, the file -.I /expire.ctl -is read. -.SH HISTORY -Written by Rich $alz for InterNetNews. -.de R$ -This is revision \\$3, dated \\$4. -.. -.R$ $Id: expire.8 5909 2002-12-03 05:17:18Z vinocur $ +\&\f(CW$Id:\fR expire.pod 8577 2009\-08\-18 14:02:02Z iulius $ .SH "SEE ALSO" -ctlinnd(8), -dbz(3), -expire.ctl(5), -history(5), -inn.conf(5), -innd(8), -inndcomm(3). +.IX Header "SEE ALSO" +\&\fIctlinnd\fR\|(8), \fIdbz\fR\|(3), \fIexpire.ctl\fR\|(5), \fIhistory\fR\|(5), \fIinn.conf\fR\|(5), \fIinnd\fR\|(8), +\&\fIinndcomm\fR\|(3), \fInews.daily\fR\|(8). diff -Nurp inn-2.5.0/doc/man/expire.ctl.5 inn-2.5.1/doc/man/expire.ctl.5 --- inn-2.5.0/doc/man/expire.ctl.5 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/expire.ctl.5 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,13 +124,17 @@ .\" ======================================================================== .\" .IX Title "EXPIRE.CTL 5" -.TH EXPIRE.CTL 5 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH EXPIRE.CTL 5 "2009-09-11" "INN 2.5.1" "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" expire.ctl \- Configuration file for article expiration .SH "DESCRIPTION" .IX Header "DESCRIPTION" The file \fIpathetc\fR/expire.ctl is the default configuration file for -\&\fBexpire\fR and \fBexpireover\fR, which read it at start\-up. It serves two +\&\fBexpire\fR and \fBexpireover\fR, which read it at start-up. It serves two purposes: it defines how long history entries for expired or rejected articles are remembered, and it determines how long articles stored on the server are retained. @@ -160,9 +159,9 @@ only one line in this format, which look .Ve .PP where is a decimal number that specifies the minimum number of days -a history record for a given message \s-1ID\s0 is retained, regardless of whether -the article is present in the spool. (History entries for articles still -present in the spool are always retained.) +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.) .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 @@ -170,8 +169,11 @@ expired. Without a history record for s accept the article again and readers would see duplicate articles. Articles older than a certain number of days won't be accepted by the server at all (see \fIartcutoff\fR in \fIinn.conf\fR\|(5) and the \fB\-c\fR flag in -\&\fIinnd\fR\|(8)), and this setting should probably match that time period (10 days -by default) to ensure that the server never accepts duplicates. +\&\fIinnd\fR\|(8)), and this setting should probably match that time period +to ensure that the server never accepts duplicates. As the default +value for \fIartcutoff\fR is \f(CW10\fR days, it means that \f(CW\*(C`/remember/\*(C'\fR +should be set to \f(CW11\fR days in order to take into account articles +whose posting date is one day into the future. .PP Most of the lines in this file will be in the second format, which consists of either four or five colon-separated fields: @@ -207,15 +209,15 @@ applies, and should be chosen from the f \& X Remove the article from all groups it appears in .Ve .PP -One of M, U, or A must be specified. X should be used in combination with -one of the other letters, not by itself. +One of \f(CW\*(C`M\*(C'\fR, \f(CW\*(C`U\*(C'\fR, or \f(CW\*(C`A\*(C'\fR must be specified. \f(CW\*(C`X\*(C'\fR should be used in +combination with one of the other letters, not by itself. .PP An expiration policy is applied to every article in a newsgroup it matches. There is no way to set an expiration policy for articles crossposted to groups you don't carry that's different than other articles in the same group. Normally, articles are not completely deleted until they expire out of every group to which they were posted, but if an -article is expired following a rule where contains X, it is deleted +article is expired following a rule where contains \f(CW\*(C`X\*(C'\fR, it is deleted out of all newsgroups to which it was posted immediately. .PP If \fIgroupbaseexpiry\fR is instead set to false, there is no and @@ -228,26 +230,28 @@ when articles are expired, they're alway they were posted. .PP The remaining three fields are the same in either format, and are used to -determine how long an article should be kept. Each field should be either +determine how long an article should be kept from its original arrival +time (unless the \fB\-p\fR flag is passed to \fIexpire\fR\|(8) or \fIexpireover\fR\|(8), in +which case its original posting time is used). Each field should be either a decimal number of days (fractions like \f(CW8.5\fR are allowed, but remember that articles are only removed when \fBexpire\fR or \fBexpireover\fR is run, normally once a day by \fBnews.daily\fR) or the word \f(CW\*(C`never\*(C'\fR. .PP The middle field, , will be used as the expiration period for most articles. The other two fields, and , only come into -play if the article requests a particular expiration date with an Expires -header. Articles with an Expires header will be expired at the date given +play if the article requests a particular expiration date with an Expires: +header. Articles with an Expires: header will be expired at the date given in that header, subject to the constraints that they will be retained at least days and no longer than days. .PP If is set to \f(CW\*(C`never\*(C'\fR, no article matching that line will ever be expired. If is set to \f(CW\*(C`never\*(C'\fR, no article matching that line -without an explicit Expires header will ever be expired. If is -set to \f(CW\*(C`never\*(C'\fR, Expires headers will be honored no matter how far into +without an explicit Expires: header will ever be expired. If is +set to \f(CW\*(C`never\*(C'\fR, Expires: headers will be honored no matter how far into the future they are. .PP One should think of the fields as a lower bound, the default, and an upper -bound. Since most articles do not have an Expires header, the second +bound. Since most articles do not have an Expires: header, the second field is the most important and most commonly applied. .PP Articles that do not match any expiration rule will not be expired, but @@ -259,33 +263,27 @@ configuration. The default line should file (except for \f(CW\*(C`/remember/\*(C'\fR) so that other expiration rules can override it. .PP -It is often useful to honor the Expires header in articles, especially +It is often useful to honor the Expires: header in articles, especially those in moderated groups. To do this, set to zero, to whatever normal expiration you wish, and to \f(CW\*(C`never\*(C'\fR or some large -number, like 365 days for a maximum article life of a year. +number, like \f(CW365\fR days for a maximum article life of a year. .PP -To ignore any Expires header, set all three fields to the same value. +To ignore any Expires: header, set all three fields to the same value. .SH "EXAMPLES" .IX Header "EXAMPLES" When \fIgroupbaseexpiry\fR is true (the default): .PP .Vb 2 -\& # Keep expired article history for 10 days, matching artcutoff. -\& /remember/:10 -.Ve -.PP -.Vb 2 -\& # Most articles stay for two weeks, ignoring Expires. +\& # Keep expired article history for 11 days, matching artcutoff plus one. +\& /remember/:11 +\& +\& # Most articles stay for two weeks, ignoring Expires: headers. \& *:A:14:14:14 -.Ve -.PP -.Vb 3 -\& # Accept Expires headers in moderated groups for up to a year and +\& +\& # Accept Expires: headers in moderated groups for up to a year and \& # retain moderated groups for a bit longer. \& *:M:1:30:365 -.Ve -.PP -.Vb 3 +\& \& # Keep local groups for a long time and local project groups forever. \& example.*:A:90:90:90 \& example.project.*:A:never:never:never @@ -294,16 +292,12 @@ When \fIgroupbaseexpiry\fR is true (the When \fIgroupbaseexpiry\fR is false, for class-based expiration: .PP .Vb 2 -\& # Keep expired article history for 10 days, matching artcutoff. -\& /remember/:10 -.Ve -.PP -.Vb 2 +\& # Keep expired article history for 11 days, matching artcutoff plus one. +\& /remember/:11 +\& \& # Set a default expiration of seven days. \& *:7:7:7 -.Ve -.PP -.Vb 2 +\& \& # Class 0 is retained for two weeks. \& 0:14:14:14 .Ve @@ -312,7 +306,7 @@ When \fIgroupbaseexpiry\fR is false, for Written by Rich \f(CW$alz\fR for InterNetNews. Converted to \&\s-1POD\s0 by Russ Allbery . .PP -$Id: expire.ctl.pod 7851 2008\-05\-26 19:33:08Z iulius $ +\&\f(CW$Id:\fR expire.ctl.pod 8575 2009\-08\-18 13:53:54Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIexpire\fR\|(8), \fIexpireover\fR\|(8), \fIinn.conf\fR\|(5), \fIinnd\fR\|(8), \fInews.daily\fR\|(8), diff -Nurp inn-2.5.0/doc/man/expireover.8 inn-2.5.1/doc/man/expireover.8 --- inn-2.5.0/doc/man/expireover.8 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/expireover.8 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "EXPIREOVER 8" -.TH EXPIREOVER 8 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH EXPIREOVER 8 "2009-09-11" "INN 2.5.1" "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" expireover \- Expire entries from the news overview database .SH "SYNOPSIS" @@ -213,7 +212,7 @@ process. \fB\-q\fR suppresses this repo .IX Item "-s" \&\fBexpireover\fR normally only checks the existence of articles in the news spool if querying the storage method for that article to see if it still -exists is considered \*(L"inexpensive.\*(R" To always check the existence of all +exists is considered \*(L"inexpensive\*(R". To always check the existence of all articles regardless of how resource-intensive this may be, use the \fB\-s\fR flag. See \fIstorage.conf\fR\|(5) for more information about this metric. .IP "\fB\-w\fR \fIoffset\fR" 4 @@ -222,7 +221,7 @@ flag. See \fIstorage.conf\fR\|(5) for m other than the current time. This is occasionally useful to force groups to be expired or not expired without changing \fIexpire.ctl\fR for the expire run. \fIoffset\fR should be a signed floating point number specifying the -number of days difference from the current time to use as \*(L"now.\*(R" This +number of days difference from the current time to use as \*(L"now\*(R". This flag is ignored if \fIgroupbaseexpiry\fR is false. .IP "\fB\-z\fR \fIrmfile\fR" 4 .IX Item "-z rmfile" @@ -260,7 +259,7 @@ Written by Rob Robertson (with help from Dave Lawrence ) for InterNetNews. .PP -$Id: expireover.pod 7941 2008\-08\-02 17:10:27Z iulius $ +\&\f(CW$Id:\fR expireover.pod 8575 2009\-08\-18 13:53:54Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIactive\fR\|(5), \fIctlinnd\fR\|(8), \fIexpire\fR\|(8), \fIexpire.ctl\fR\|(5), \fIinn.conf\fR\|(5), diff -Nurp inn-2.5.0/doc/man/expirerm.8 inn-2.5.1/doc/man/expirerm.8 --- inn-2.5.0/doc/man/expirerm.8 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/expirerm.8 2009-10-12 11:24:04.000000000 -0700 @@ -1,30 +1,157 @@ -.TH EXPIRERM 8 -.SH NAME -expirerm \- remove articles that have been expired. -.SH SYNOPSIS -.B expirerm -.I file -.SH DESCRIPTION -.I Expirerm -is a script that removes a list of files. -The specified -.I file -lists the files. -It is sorted, and then fed into a pipeline responsible for doing -the removal, normally -.IR fastrm (8). -If there seemed to be a problem removing the files, then mail is sent to -the news administrator. -If there were no problems, then -.I file -is renamed to -.I /expire.list -where it is kept (for safety) until the next time expiration is done. -.SH HISTORY -Written by Landon Curt Noll and -Rich $alz +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) +.\" +.\" 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" '' +'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 turned on, 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. +.ie \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. nr % 0 +. rr F +.\} +.el \{\ +. de IX +.. +.\} +.\" +.\" 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 "EXPIRERM 8" +.TH EXPIRERM 8 "2009-09-11" "INN 2.5.1" "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" +expirerm \- Remove articles that have been expired +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +\&\fBexpirerm\fR \fIfile\fR +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +\&\fBexpirerm\fR is a script that removes a list of files. The specified +\&\fIfile\fR lists the files to be removed. It is usually created by +\&\fBexpire \-z\fR. This file is sorted, and then fed into a pipeline +responsible for doing the removal, normally \fBfastrm\fR. (You may want +to edit \fBexpirerm\fR to change the flags passed to \fBfastrm\fR.) +.PP +If there seemed to be a problem removing the files, then a mail is +sent to the news administrator. If there were no problems, then +\&\fIfile\fR is renamed to \fIpathlog\fR/expire.list where it is kept +(for safety) until the next time expiration is done. +.SH "HISTORY" +.IX Header "HISTORY" +Written by Landon Curt Noll and Rich \f(CW$alz\fR +. Converted to \s-1POD\s0 by Julien Elie. +.PP +\&\f(CW$Id:\fR expirerm.pod 8577 2009\-08\-18 14:02:02Z iulius $ .SH "SEE ALSO" -expire(8), -fastrm(8), -inn.conf(5). - +.IX Header "SEE ALSO" +\&\fIexpire\fR\|(8), \fIfastrm\fR\|(8), \fInewslog\fR\|(5). diff -Nurp inn-2.5.0/doc/man/fastrm.1 inn-2.5.1/doc/man/fastrm.1 --- inn-2.5.0/doc/man/fastrm.1 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/fastrm.1 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,12 +124,16 @@ .\" ======================================================================== .\" .IX Title "FASTRM 1" -.TH FASTRM 1 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH FASTRM 1 "2009-09-11" "INN 2.5.1" "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" fastrm \- Quickly remove a list of files .SH "SYNOPSIS" .IX Header "SYNOPSIS" -\&\fBfastrm\fR [\fB\-de\fR] [\fB\-u\fR|\fB\-u\fR\fIN\fR] [\fB\-s\fR|\fB\-s\fR\fIM\fR] [\fB\-c\fR|\fB\-c\fR\fII\fR] +\&\fBfastrm\fR [\fB\-de\fR] [\fB\-c\fR|\fB\-c\fR\fII\fR] [\fB\-s\fR|\fB\-s\fR\fIM\fR] [\fB\-u\fR|\fB\-u\fR\fIN\fR] \&\fIbase-directory\fR .SH "DESCRIPTION" .IX Header "DESCRIPTION" @@ -167,9 +166,9 @@ systems, root is allowed to unlink direc aren't empty, which can cause file system corruption.) .PP The input to \fBfastrm\fR should always be sorted \-\-\ or even better be in the -order file names are output by \fIfind\fR\|(1)\ \-\- if speed is an issue and the +order file names are output by \fIfind\fR\|(1)\ \*(-- if speed is an issue and the input isn't solely storage \s-1API\s0 tokens. (It deals fine with unsorted -input, but is unlikely to be any faster in that case than a simple \f(CW\*(C`xargs +input, but is unlikely to be any faster in that case than a simple \f(CW\*(C`| xargs rm\*(C'\fR command.) Sorting may even slightly speed up the removal of storage \&\s-1API\s0 tokens due to caching effects, since sorting will tend to keep all of the tokens from a particular storage method together. @@ -184,6 +183,16 @@ likely that it will already perform the internally. .SH "OPTIONS" .IX Header "OPTIONS" +.IP "\fB\-c\fR[\fII\fR]" 4 +.IX Item "-c[I]" +Controls when \fBfastrm\fR calls \fIchdir\fR\|(2). If the number of files to be +unlinked from a given directory is at least \fII\fR, then \fBfastrm\fR will +change to that directory before unlinking those files. Otherwise, it will +use either the absolute path names or a path name relative to the current +directory (whichever is likely more efficient). The \fII\fR parameter is +optional; if just \fB\-c\fR is given, \fB\-c1\fR is assumed, which will cause +\&\fBfastrm\fR to always chdir before calling \fIunlink\fR\|(2). The default is +\&\fB\-c3\fR. Use \fB\-c0\fR to prevent \fBfastrm\fR from ever using \fIchdir\fR\|(2). .IP "\fB\-d\fR" 4 .IX Item "-d" Don't remove any files. Instead, print a list of the files that would be @@ -198,18 +207,8 @@ would be removed. Treat an empty input file as an error. This is most useful when \fBfastrm\fR is last in a pipeline after a preceding \fIsort\fR\|(1) command, ensuring that \&\fBfastrm\fR will fail if the sort fails. -.IP "\fB\-c\fR\fII\fR" 4 -.IX Item "-cI" -Controls when \fBfastrm\fR calls \fIchdir\fR\|(2). If the number of files to be -unlinked from a given directory is at least \fII\fR, then \fBfastrm\fR will -change to that directory before unlinking those files. Otherwise, it will -use either the absolute path names or a path name relative to the current -directory (whichever is likely more efficient). The \fII\fR parameter is -optional; if just \fB\-c\fR is given, \fB\-c1\fR is assumed, which will cause -\&\fBfastrm\fR to always chdir before calling \fIunlink\fR\|(2). The default is -\&\fB\-c3\fR. Use \fB\-c0\fR to prevent \fBfastrm\fR from ever using \fIchdir\fR\|(2). -.IP "\fB\-s\fR\fIM\fR" 4 -.IX Item "-sM" +.IP "\fB\-s\fR[\fIM\fR]" 4 +.IX Item "-s[M]" When \fB\-s\fR is given and the number of files to remove in a directory is greater than \fIM\fR, rather than remove files in the order given, \fBfastrm\fR will open the directory and read it, unlinking files in the order that @@ -230,8 +229,8 @@ to find files in directories or when mos already been deleted). .Sp This optimization is off by default. -.IP "\fB\-u\fR\fIN\fR" 4 -.IX Item "-uN" +.IP "\fB\-u\fR[\fIN\fR]" 4 +.IX Item "-u[N]" Specifying this option promises that there are no symbolic links in the directory tree from which files are being removed. This allows \fBfastrm\fR to make an additional optimization to its calls to \fIchdir\fR\|(2), constructing @@ -249,7 +248,7 @@ segments to construct paths. \fIN\fR is This optimization is off by default. .PP \&\fBfastrm\fR also accepts \fB\-a\fR and \fB\-r\fR options, which do nothing at all -except allow you to say \f(CW\*(C`fastrm \-usa\*(C'\fR, \f(CW\*(C`fastrm \-ussr\*(C'\fR, or \f(CW\*(C`fastrm +except allow you to say \f(CW\*(C`fastrm \-usa\*(C'\fR, \f(CW\*(C`fastrm \-usr\*(C'\fR, or \f(CW\*(C`fastrm \&\-user\*(C'\fR. These happen to often be convenient sets of options to use. .SH "EXIT STATUS" .IX Header "EXIT STATUS" @@ -300,9 +299,9 @@ general fast file removal program. .SH "HISTORY" .IX Header "HISTORY" \&\fBfastrm\fR was originally written by . This manual page -rewritten in \s-1POD\s0 by Russ Allbery for InterNetNews. +was rewritten in \s-1POD\s0 by Russ Allbery for InterNetNews. .PP -$Id: fastrm.pod 7851 2008\-05\-26 19:33:08Z iulius $ +\&\f(CW$Id:\fR fastrm.pod 8576 2009\-08\-18 13:55:11Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIexpirerm\fR\|(8). diff -Nurp inn-2.5.0/doc/man/getlist.1 inn-2.5.1/doc/man/getlist.1 --- inn-2.5.0/doc/man/getlist.1 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/getlist.1 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "GETLIST 1" -.TH GETLIST 1 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH GETLIST 1 "2009-05-21" "INN 2.5.1" "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" getlist \- Get a list from an NNTP server .SH "SYNOPSIS" @@ -206,14 +205,14 @@ The following command will show the acti comp.* groups on the default server: .PP .Vb 1 -\& getlist active 'comp.*' m +\& getlist active \*(Aqcomp.*\*(Aq m .Ve .PP The following command lists all groups where local postings are permitted, are moderated or aliased: .PP .Vb 1 -\& getlist active '*' ym= +\& getlist active \*(Aq*\*(Aq ym= .Ve .PP Note that the wildcard character \f(CW\*(C`*\*(C'\fR has to be quoted by simple quotes @@ -223,7 +222,7 @@ to protect it from the shell. Written by Landon Curt Noll for InterNetNews. Rewritten in \s-1POD\s0 by Russ Allbery . .PP -$Id: getlist.pod 8409 2009\-04\-11 22:13:41Z iulius $ +\&\f(CW$Id:\fR getlist.pod 8409 2009\-04\-11 22:13:41Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIactive\fR\|(5), \fIactive.times\fR\|(5), \fIdistrib.pats\fR\|(5), \fIdistributions\fR\|(5), \fIinn.conf\fR\|(5), diff -Nurp inn-2.5.0/doc/man/grephistory.1 inn-2.5.1/doc/man/grephistory.1 --- inn-2.5.0/doc/man/grephistory.1 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/grephistory.1 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "GREPHISTORY 1" -.TH GREPHISTORY 1 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH GREPHISTORY 1 "2009-09-11" "INN 2.5.1" "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" grephistory \- Query the INN history database .SH "SYNOPSIS" @@ -138,14 +137,14 @@ grephistory \- Query the INN history dat .SH "DESCRIPTION" .IX Header "DESCRIPTION" \&\fBgrephistory\fR queries the \s-1INN\s0 history database for information about the -specified message \s-1ID\s0. If no flags are given, the program prints the +specified message-ID. If no flags are given, the program prints the storage \s-1API\s0 token of the corresponding article, or \f(CW\*(C`/dev/null\*(C'\fR if the article is listed in the history database but not stored on the server. -If the message \s-1ID\s0 cannot be found in the database, \fBgrephistory\fR will +If the message-ID cannot be found in the database, \fBgrephistory\fR will print \f(CW\*(C`grephistory: not found\*(C'\fR and exit with a non-zero status. .PP Be sure to escape any special characters in the message \s-1ID\s0 from the shell. -Single quotes are recommended for this purpose since many message IDs +Single quotes are recommended for this purpose since many message-IDs contain dollar signs. .SH "OPTIONS" .IX Header "OPTIONS" @@ -159,18 +158,19 @@ or remembered articles.) Query the history database \fIdb\fR rather than the default history database. .IP "\fB\-i\fR" 4 .IX Item "-i" -Rather than expecting a message \s-1ID\s0 on the command line, \fBgrephistory\fR -will read a list of message IDs on standard input, one per line. Leading +Rather than expecting a message-ID on the command line, \fBgrephistory\fR +will read a list of message-IDs on standard input, one per line. Leading and trailing whitespace is ignored, as are any malformed lines. It will -print out standard output those message IDs which are not found in the +print on standard output those message-IDs which are not found in the history database. This is used when processing \f(CW\*(C`ihave\*(C'\fR control messages. .IP "\fB\-l\fR" 4 .IX Item "-l" Display the entire line from the history database, rather than just the -storage \s-1API\s0 token. +storage \s-1API\s0 token. If the message-ID is present in the history database +but has no storage \s-1API\s0 token, \fBgrephistory\fR does not print anything. .IP "\fB\-n\fR" 4 .IX Item "-n" -If the message \s-1ID\s0 is present in the history database but has no storage +If the message-ID is present in the history database but has no storage \&\s-1API\s0 token, print \f(CW\*(C`/dev/null\*(C'\fR and exit successfully. This can happen if an article has been cancelled or expired, but history information has still been retained. This is the default behavior. @@ -179,22 +179,62 @@ still been retained. This is the defaul Don't print any message, but still exit with the appropriate status. .IP "\fB\-s\fR" 4 .IX Item "-s" -Rather than expecting a message \s-1ID\s0 on the command line, \fBgrephistory\fR -will read a list of message IDs on standard input, one per line. Leading +Rather than expecting a message-ID on the command line, \fBgrephistory\fR +will read a list of message-IDs on standard input, one per line. Leading and trailing whitespace is ignored, as are any malformed lines. It will print on standard output the storage \s-1API\s0 tokens for any articles that are still available, one per line. This flag is used when processing \&\f(CW\*(C`sendme\*(C'\fR control messages. .IP "\fB\-v\fR" 4 .IX Item "-v" -Print out the hash of the message \s-1ID\s0 for diagnostic purposes, as well as -any other requested information. This flag is not useful with \fB\-s\fR. +Print out the hash of the message-ID for diagnostic purposes, as well as +any other requested information. This flag is not useful with \fB\-i\fR or +\&\fB\-s\fR. +.SH "EXAMPLES" +.IX Header "EXAMPLES" +In case the requested article is not listed in the history database: +.PP +.Vb 4 +\& % grephistory \*(Aq\*(Aq +\& grephistory: not found +\& % grephistory \-v \*(Aq\*(Aq +\& grephistory: not found (hash is 501C66C22932BA91131186D7218201EB) +.Ve +.PP +In case the requested article is listed in the history database +but not stored on the server: +.PP +.Vb 2 +\& % grephistory \*(Aq\*(Aq +\& /dev/null +.Ve +.PP +In case the requested article is stored on the server: +.PP +.Vb 4 +\& % grephistory \*(Aq<87fxeaay1z.fsf@windlord.stanford.edu>\*(Aq +\& @02014A2DD6231FCC00000000000000000000@ +\& % grephistory \-l \*(Aq<87fxeaay1z.fsf@windlord.stanford.edu>\*(Aq +\& [B6DDF69376E3CC199246CEC949B3ACAC] 1244517923~\-~1244517912 @02014A2DD6231FCC00000000000000000000@ +.Ve +.PP +With \fBsm\fR, we can retrieve the article, and get its posting date: +.PP +.Vb 2 +\& % grephistory \*(Aq<87fxeaay1z.fsf@windlord.stanford.edu>\*(Aq | sm | grep Date +\& Date: Mon, 08 Jun 2009 20:25:12 \-0700 +\& +\& % convdate \-dc 1244517912 +\& Tue, 9 Jun 2009 03:25:12 +0000 (UTC) +.Ve +.PP +It matches the number recorded in history as for its posting date. .SH "HISTORY" .IX Header "HISTORY" Written by Rich \f(CW$alz\fR for InterNetNews. Rewritten in \&\s-1POD\s0 by Russ Allbery . .PP -$Id: grephistory.pod 7618 2007\-08\-01 20:15:03Z iulius $ +\&\f(CW$Id:\fR grephistory.pod 8582 2009\-08\-19 08:04:32Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIhistory\fR\|(5), \fIinn.conf\fR\|(5) +\&\fIhistory\fR\|(5), \fIinn.conf\fR\|(5), \fIsm\fR\|(1). diff -Nurp inn-2.5.0/doc/man/ident.8 inn-2.5.1/doc/man/ident.8 --- inn-2.5.0/doc/man/ident.8 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/ident.8 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "IDENT 8" -.TH IDENT 8 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH IDENT 8 "2009-05-21" "INN 2.5.1" "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" ident \- nnrpd ident resolver .SH "SYNOPSIS" @@ -171,9 +170,7 @@ returned from the ident query: \& res: "ident \-t" \& default\-domain: "internal.example.com" \& } -.Ve -.PP -.Vb 4 +\& \& access LAN { \& users: "*@internal.example.com" \& newsgroups: example.* @@ -186,7 +183,7 @@ network whose machines respond to ident .IX Header "HISTORY" This documentation was written by Jeffrey M.\ Vinocur . .PP -$Id: ident.pod 8200 2008\-11\-30 13:31:30Z iulius $ +\&\f(CW$Id:\fR ident.pod 8200 2008\-11\-30 13:31:30Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fInnrpd\fR\|(8), \fIreaders.conf\fR\|(5) diff -Nurp inn-2.5.0/doc/man/incoming.conf.5 inn-2.5.1/doc/man/incoming.conf.5 --- inn-2.5.0/doc/man/incoming.conf.5 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/incoming.conf.5 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "INCOMING.CONF 5" -.TH INCOMING.CONF 5 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH INCOMING.CONF 5 "2009-05-21" "INN 2.5.1" "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 "DESCRIPTION" @@ -187,37 +186,27 @@ example could be: .Vb 2 \& # Global value applied to all peers that have no value of their own. \& max\-connections: 5 -.Ve -.PP -.Vb 4 +\& \& # A peer definition. \& peer uunet { \& hostname: usenet1.uu.net \& } -.Ve -.PP -.Vb 4 +\& \& peer vixie { \& hostname: gw.home.vix.com \& max\-connections: 10 # Override global value. \& } -.Ve -.PP -.Vb 3 +\& \& # A group of two peers which can open more connections than normal. \& group fast\-sites { \& max\-connections: 15 -.Ve -.PP -.Vb 5 +\& \& # Another peer. The max\-connections: value from the \& # fast\-sites group scope is used. \& peer data.ramona.vix.com { \& hostname: data.ramona.vix.com \& } -.Ve -.PP -.Vb 5 +\& \& peer bb.home.vix.com { \& hostname: bb.home.vix.com \& max\-connections: 20 # He can really cook. @@ -313,7 +302,7 @@ This key requires a boolean value. It d Written by Fabien Tassin for InterNetNews. Converted to \&\s-1POD\s0 by Julien Elie. .PP -$Id: incoming.conf.pod 8436 2009\-05\-01 09:00:21Z iulius $ +\&\f(CW$Id:\fR incoming.conf.pod 8436 2009\-05\-01 09:00:21Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIinn.conf\fR\|(5), \fIinnd\fR\|(8), \fInewsfeeds\fR\|(5), \fIuwildmat\fR\|(3). diff -Nurp inn-2.5.0/doc/man/inews.1 inn-2.5.1/doc/man/inews.1 --- inn-2.5.0/doc/man/inews.1 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/inews.1 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "INEWS 1" -.TH INEWS 1 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH INEWS 1 "2009-08-16" "INN 2.5.1" "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" inews \- Post a Usenet article to the local news server .SH "SYNOPSIS" @@ -144,7 +143,7 @@ article is rejected. If it passes the c to the local news server as specified in \fIinn.conf\fR. .PP By default, if a file named \fI.signature\fR exists in the home directory of -the posting user, it is appended to the post, preceeded by a line that +the posting user, it is appended to the post, preceded by a line that contains only \f(CW\*(C`\-\- \*(C'\fR. Signatures are not allowed to be more than four lines long. .PP @@ -164,7 +163,7 @@ the message will be rejected. The messa than original text, and it is over 40 lines long. .PP If not provided, the Path header of an article is constructed as follows: -The basic Path header will be \*(L"not\-for\-mail\*(R". If \fIpathhost\fR is specified +The basic Path header will be \*(L"not-for-mail\*(R". If \fIpathhost\fR is specified in \fIinn.conf\fR, it will be added to the beginning Path. Otherwise, if \&\fIserver\fR is specified, the full domain of the local host will be added to the beginning of the Path. Then, if \fB\-x\fR was given, its value will be @@ -252,7 +251,7 @@ Unix news clients or by themselves. Written by Rich \f(CW$alz\fR for InterNetNews. Rewritten in \&\s-1POD\s0 by Russ Allbery . .PP -$Id: inews.pod 7851 2008\-05\-26 19:33:08Z iulius $ +\&\f(CW$Id:\fR inews.pod 8517 2009\-06\-17 17:49:36Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIinn.conf\fR\|(5), \fIrnews\fR\|(1) diff -Nurp inn-2.5.0/doc/man/inn.conf.5 inn-2.5.1/doc/man/inn.conf.5 --- inn-2.5.0/doc/man/inn.conf.5 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/inn.conf.5 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "INN.CONF 5" -.TH INN.CONF 5 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH INN.CONF 5 "2009-10-12" "INN 2.5.1" "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" inn.conf \- Configuration data for InterNetNews programs .SH "DESCRIPTION" @@ -158,7 +157,7 @@ other lines specify parameters, and shou 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. 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. +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 occurs more than once in the file, the first value is used. @@ -180,7 +179,7 @@ mentioned. Those parameters which need new server are discussed in \fI\s-1INSTALL\s0\fR. .SH "PARAMETERS" .IX Header "PARAMETERS" -.Sh "General Settings" +.SS "General Settings" .IX Subsection "General Settings" These parameters are used by a wide variety of different components of \&\s-1INN\s0. @@ -193,7 +192,7 @@ domain name by using either the \fIgetho The check is very simple; if either routine returns a name with a period in it, then it is assumed to have the full domain name. As this parameter is rarely used, do not use it to affect the righthand side of -autogenerated Message\-IDs; see instead \fIvirtualhost\fR and \fIdomain\fR in +autogenerated Message-IDs; see instead \fIvirtualhost\fR and \fIdomain\fR in \&\fIreaders.conf\fR\|(5). The default value is unset. .IP "\fIinnflags\fR" 4 .IX Item "innflags" @@ -245,7 +244,7 @@ locally-posted articles through an \s-1I server to connect to. In the latter cases, the value of the \s-1NNTPSERVER\s0 environment variable, if it exists, overrides this. The default value is unset. -.Sh "Feed Configuration" +.SS "Feed Configuration" .IX Subsection "Feed Configuration" These parameters govern incoming and outgoing feeds: what size of articles are accepted, what filtering and verification is performed on @@ -253,9 +252,13 @@ them, whether articles in groups not car stored and propagated, and other similar settings. .IP "\fIartcutoff\fR" 4 .IX Item "artcutoff" -Articles older than this number of days are dropped. This setting should -probably match the setting on the \f(CW\*(C`/remember/\*(C'\fR line in \fIexpire.ctl\fR. -The default value is \f(CW10\fR. +Articles older than this number of days are dropped. The default value +is \f(CW10\fR, which means that an incoming article will be rejected if its +posting date is farther in the past than ten days. +.Sp +The number on the \f(CW\*(C`/remember/\*(C'\fR line in \fIexpire.ctl\fR should probably +be one more than that number in order to take into account articles +whose posting date is one day into the future. .IP "\fIbindaddress\fR" 4 .IX Item "bindaddress" Which \s-1IP\s0 address \fIinnd\fR\|(8) should bind itself to. This must be in @@ -288,7 +291,7 @@ accepted on the local machine, but artic If set to a value other than \f(CW0\fR, a hash of recently received Message-IDs is kept in memory to speed history lookups. The value is the amount of memory to devote to the cache in kilobytes. The cache is only used for -incoming feeds and a small cache can hold quite a few Message\-IDs, so +incoming feeds and a small cache can hold quite a few Message-IDs, so large values aren't necessarily useful unless you have incoming feeds that are badly delayed. \fBinnreport\fR can provide useful statistics regarding the use of the history cache, especially when it misses. A good value @@ -375,7 +378,7 @@ cancels. A much better way is to ask al send to you any articles with \f(CW\*(C`cyberspam\*(C'\fR in the Path: header (usually accomplished by having them mark \f(CW\*(C`cyberspam\*(C'\fR as an alias for your machine in their feed configuration). The filtering enabled by this parameter is -hard\-coded; general filtering of message IDs can be done via the embedded +hard-coded; general filtering of message IDs can be done via the embedded filtering support. .IP "\fIremembertrash\fR" 4 .IX Item "remembertrash" @@ -405,12 +408,16 @@ addresses contain colons. .IP "\fIverifycancels\fR" 4 .IX Item "verifycancels" Set this to true to enable a simplistic check on all cancel messages, -attempting to verify (by simple header comparison) that the cancel message -is from the same person as the original post. This can't be done if the -cancel arrives before the article does, and is extremely easy to spoof. -While this check may once have served a purpose, it's now essentially -security via obscurity, commonly avoided by abusers, and probably not -useful. This is a boolean value, and the default is false. +attempting to verify (by simple header comparison) that at least one newsgroup +in the cancel message can be found in the article to be cancelled. This +check can't be done if the cancel arrives before the article does. This +is a boolean value, and the default is false. +.Sp +Note that \s-1RFC\s0 5537 (\s-1USEPRO\s0) mentions that \*(L"cancel control 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\*(R". This check is +therefore not done as it is extremely easy to spoof. .IP "\fIverifygroups\fR" 4 .IX Item "verifygroups" Set this to true to reject incoming articles which contain an unknown @@ -436,7 +443,7 @@ default value is \f(CW5\fR and probably How long, in seconds, to keep track of message IDs offered on a channel before expiring articles that still haven't been sent. The default value is \f(CW10\fR and probably doesn't need to be changed. -.Sh "History Settings" +.SS "History Settings" .IX Subsection "History Settings" The following parameter affect the history database. .IP "\fIhismethod\fR" 4 @@ -456,7 +463,7 @@ undertaken. .RE .RS 4 .RE -.Sh "Article Storage" +.SS "Article Storage" .IX Subsection "Article Storage" These parameters affect how articles are stored on disk. .IP "\fIcnfscheckfudgesize\fR" 4 @@ -538,7 +545,7 @@ are generated after those mentioned in \ \&\s-1OVERVIEW\s0.FMT command (\f(CW\*(C`full\*(C'\fR indicates that the header appears followed by its value). .Sp -Now suppose you want to remove the content of the NNTP\-Hosting\-Host: +Now suppose you want to remove the content of the NNTP-Hosting-Host: header from the overview. As order matters, the overview database will no longer be consistent for the To: header. Therefore, you need to specify: .Sp @@ -692,7 +699,7 @@ always have \fInnrpdposthost\fR set to h the master server. The upstream should be careful to always feed articles in order (\fIinnfeed\fR\|(8) can have problems with this in the event of a backlog). This is a boolean value and the default is false. -.Sh "Reading" +.SS "Reading" .IX Subsection "Reading" These parameters affect the behavior of \s-1INN\s0 for readers. Most of them are used by \fInnrpd\fR\|(8). There are some special sets of settings that are broken @@ -823,9 +830,11 @@ it. Whether the keyword generation support should be enabled. This is a boolean value and the default is false. .Sp -\&\s-1FIXME:\s0 Currently, support for keyword generation is configured into \s-1INN\s0 -semi-randomly (based on whether configure found the regex library); it -should be an option to configure and that option should be mentioned here. +In order to use this feature, the regex library should be available +and \s-1INN\s0 configured with the \fB\-\-enable\-keywords\fR flag. Otherwise, +no keywords will be generated, even though this boolean value is set +to true. You also have to add the integration of the Keywords: header +into the overview with \fIextraoverviewadvertised\fR or \fIextraoverviewhidden\fR. .IP "\fIkeyartlimit\fR" 4 .IX Item "keyartlimit" Articles larger than this value in bytes will not have keywords generated @@ -843,18 +852,18 @@ keyword generation code will attempt to number of keywords actually written into the overview will usually be smaller than this even if the maximum number of keywords is found.) The default value is \f(CW250\fR. -.Sh "Posting" +.SS "Posting" .IX Subsection "Posting" These parameters are only used by \fInnrpd\fR\|(8), \fIinews\fR\|(1), and other programs that accept or generate postings. There are some special sets of settings that are broken out separately after the initial alphabetized list. .IP "\fIaddnntppostingdate\fR" 4 .IX Item "addnntppostingdate" -Whether to add an NNTP\-Posting\-Date: header to all local posts. This is a +Whether to add an NNTP-Posting-Date: header to all local posts. This is a boolean value and the default is true. .IP "\fIaddnntppostinghost\fR" 4 .IX Item "addnntppostinghost" -Whether to add an NNTP\-Posting\-Host: header to all local posts giving the +Whether to add an NNTP-Posting-Host: header to all local posts giving the \&\s-1FQDN\s0 or \s-1IP\s0 address of the system from which the post was received. This is a boolean value and the default is true. Note that \s-1INN\s0 either does not add this header or adds the name or \s-1IP\s0 address of the client. There is no @@ -868,7 +877,7 @@ looking for lines beginning with \f(CW\* boolean value and the default is false. .IP "\fIcomplaints\fR" 4 .IX Item "complaints" -The value of the X\-Complaints\-To: header added to all local posts. The +The value of the X\-Complaints-To: header added to all local posts. The default is the newsmaster's e\-mail address. (If the newsmaster, selected at configure time and defaulting to \f(CW\*(C`usenet\*(C'\fR, doesn't contain \f(CW\*(C`@\*(C'\fR, the address will consist of the newsmaster, a \f(CW\*(C`@\*(C'\fR, and the value of @@ -1019,13 +1028,13 @@ The path to a directory containing certi certificates. Each file in the directory should contain one \s-1CA\s0 certificate, and the name of the file should be the \s-1CA\s0 subject name hash value. See the OpenSSL documentation for more information. This -parameter is only used if \fBnnrpd\fR is built with \s-1TLS/SSL\s0 support. There -is no default value. +parameter is only used if \fBnnrpd\fR is built with \s-1TLS/SSL\s0 support. The +default value is \fIpathetc\fR. .IP "\fItlscertfile\fR" 4 .IX Item "tlscertfile" The path to a file containing the server certificate to present to \&\s-1TLS\s0 clients. This parameter is only used if \fBnnrpd\fR is built with \s-1TLS/SSL\s0 -support. The default value is \fIpathnews\fR/lib/cert.pem. +support. The default value is \fIpathetc\fR/cert.pem. .IP "\fItlskeyfile\fR" 4 .IX Item "tlskeyfile" The path to a file containing the encryption key for the server @@ -1034,11 +1043,11 @@ certificate named in \fItlscertfile\fR. the same file (if, for example, you gave the same file name to both the \&\fB\-out\fR and \fB\-keyout\fR options to \f(CW\*(C`openssl req\*(C'\fR). This parameter is only used if \fBnnrpd\fR is built with \s-1TLS/SSL\s0 support. The default value is -\&\fIpathnews\fR/lib/key.pem. +\&\fIpathetc\fR/key.pem. .Sp This file must only be readable by the news user or \fBnnrpd\fR will refuse to use it. -.Sh "Monitoring" +.SS "Monitoring" .IX Subsection "Monitoring" These parameters control the behavior of \fIinnwatch\fR\|(8), the program that monitors \s-1INN\s0 and informs the news administrator if anything goes wrong @@ -1088,7 +1097,7 @@ Free space in \fIpatharticles\fR and \fI units (normally kilobytes), at which \fIinnd\fR\|(8) will be throttled by \&\fIinnwatch\fR\|(8), assuming a default \fIinnwatch.ctl\fR. The default value is \&\f(CW25000\fR. -.Sh "Logging" +.SS "Logging" .IX Subsection "Logging" These parameters control what information \s-1INN\s0 logs. .IP "\fIdocnfsstat\fR" 4 @@ -1162,7 +1171,7 @@ this is highly recommended, and \fIinnre the timings. If set to \f(CW0\fR, performance timings in \fInnrpd\fR\|(8) are also disabled, although nnrpd always reports statistics on exit and therefore any non-zero value is equivalent for it. The default value is \f(CW0\fR. -.Sh "System Tuning" +.SS "System Tuning" .IX Subsection "System Tuning" The following parameters can be modified to tune the low-level operation of \s-1INN\s0. In general, you shouldn't need to modify any of them except @@ -1202,7 +1211,7 @@ The default value is \f(CW10\fR. .IP "\fIkeepmmappedthreshold\fR" 4 .IX Item "keepmmappedthreshold" When using buffindexed, retrieving overview data (that is, responding to -\&\s-1XOVER\s0 or running expireover) causes mmapping of all overview data blocks +\&\s-1OVER\s0 or running expireover) causes mmapping of all overview data blocks which include requested overview data for newsgroup. But for high volume newsgroups like control.cancel, this may cause too much mmapping at once leading to system resource problems. To avoid this, if the amount to be @@ -1269,8 +1278,8 @@ other than Solaris. Nearly all operatin limit beyond which this value cannot be raised, usually either 128, 256, or 1024. The default value of this parameter is \f(CW\*(C`\-1\*(C'\fR. Setting it to \&\f(CW256\fR on Solaris systems is highly recommended. -.Sh "Paths and File Names" -.IX Subsection "Paths and File Names" +.SS "Paths Names" +.IX Subsection "Paths Names" .IP "\fIpatharchive\fR" 4 .IX Item "patharchive" Where to store archived news. The default value is \fIpathspool\fR/archive. @@ -1370,7 +1379,7 @@ values for reference. Written by Rich \f(CW$alz\fR for InterNetNews and since modified, updated, and reorganized by innumerable other people. .PP -$Id: inn.conf.pod 8479 2009\-05\-18 20:01:37Z iulius $ +\&\f(CW$Id:\fR inn.conf.pod 8659 2009\-10\-10 07:59:50Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIinews\fR\|(1), \fIinnd\fR\|(8), \fIinnwatch\fR\|(8), \fImakehistory\fR\|(8), \fInnrpd\fR\|(8), \fIrnews\fR\|(1). diff -Nurp inn-2.5.0/doc/man/innbind.8 inn-2.5.1/doc/man/innbind.8 --- inn-2.5.0/doc/man/innbind.8 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/innbind.8 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "INNBIND 8" -.TH INNBIND 8 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH INNBIND 8 "2009-05-21" "INN 2.5.1" "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" innbind \- Helper program to bind sockets to privileged ports .SH "SYNOPSIS" @@ -214,26 +213,26 @@ user. The only user input that it accep .IX Header "DIAGNOSTICS" \&\fBinnbind\fR may log the following messages to syslog and print them to standard error. -.ie n .IP "cannot create socket for %s:\fR \f(CW%s" 4 +.ie n .IP "cannot create socket for %s: %s" 4 .el .IP "cannot create socket for \f(CW%s:\fR \f(CW%s\fR" 4 .IX Item "cannot create socket for %s: %s" (Fatal) \fBinnbind\fR fell back on attempting to create a new socket to bind for the given argument, and the socket creation failed. -.ie n .IP "cannot bind socket for %s:\fR \f(CW%s" 4 +.ie n .IP "cannot bind socket for %s: %s" 4 .el .IP "cannot bind socket for \f(CW%s:\fR \f(CW%s\fR" 4 .IX Item "cannot bind socket for %s: %s" (Fatal) Calling bind for the socket corresponding to the given argument failed with a system error. If the error indicates permission denied, make sure that \fBinnbind\fR is setuid root. This can also be caused by trying to use IPv6 on a system whose kernel does not support it. -.ie n .IP "cannot bind to restricted port %hu\fR in \f(CW%s" 4 +.ie n .IP "cannot bind to restricted port %hu in %s" 4 .el .IP "cannot bind to restricted port \f(CW%hu\fR in \f(CW%s\fR" 4 .IX Item "cannot bind to restricted port %hu in %s" (Fatal) The port number portion of the given command-line argument is for a port below 1024 which is not 119, 433, 563, or a port given to \&\fB\-\-with\-innd\-port\fR at configure time. Other ports are not allowed for security reasons. -.ie n .IP "cannot get socket options for file descriptor %d:\fR \f(CW%s" 4 +.ie n .IP "cannot get socket options for file descriptor %d: %s" 4 .el .IP "cannot get socket options for file descriptor \f(CW%d:\fR \f(CW%s\fR" 4 .IX Item "cannot get socket options for file descriptor %d: %s" (Fatal) \fBinnbind\fR was unable to get the socket options for that file @@ -246,7 +245,7 @@ that corresponds to a regular file rathe (Fatal) \fBinnbind\fR was unable to get the \s-1UID\s0 for the news user specified during configure (and defaulting to \f(CW\*(C`news\*(C'\fR). This normally means that user isn't in the system \fIpasswd\fR file. -.ie n .IP "cannot mark socket reusable for %s:\fR \f(CW%s" 4 +.ie n .IP "cannot mark socket reusable for %s: %s" 4 .el .IP "cannot mark socket reusable for \f(CW%s:\fR \f(CW%s\fR" 4 .IX Item "cannot mark socket reusable for %s: %s" (Fatal) \fBinnbind\fR created a new socket for the given argument but was @@ -262,13 +261,13 @@ to pass it back to its caller via its st .IX Item "invalid file descriptor %d: not SOCK_STREAM" (Fatal) The given file descriptor is not a \s-1SOCK_STREAM\s0 socket. \fBinnbind\fR can only bind \s-1SOCK_STREAM\s0 sockets. -.ie n .IP "invalid IPv4 address %s\fR in \f(CW%s" 4 +.ie n .IP "invalid IPv4 address %s in %s" 4 .el .IP "invalid IPv4 address \f(CW%s\fR in \f(CW%s\fR" 4 .IX Item "invalid IPv4 address %s in %s" (Fatal) The IPv4 address specified in the given command-line option could not be parsed by \fIinet_aton\fR\|(3). IPv4 addresses should be specified in the standard dotted-quad format (10.2.3.4). -.ie n .IP "invalid IPv6 address %s\fR in \f(CW%s" 4 +.ie n .IP "invalid IPv6 address %s in %s" 4 .el .IP "invalid IPv6 address \f(CW%s\fR in \f(CW%s\fR" 4 .IX Item "invalid IPv6 address %s in %s" (Fatal) The IPv6 address specified in the given command-line option could @@ -278,23 +277,23 @@ not be parsed by \fIinet_pton\fR\|(3). .IX Item "invalid command-line argument %s" (Fatal) The specified command-line argument could not be parsed or was not in the correct format. -.ie n .IP "invalid file descriptor %s\fR in \f(CW%s" 4 +.ie n .IP "invalid file descriptor %s in %s" 4 .el .IP "invalid file descriptor \f(CW%s\fR in \f(CW%s\fR" 4 .IX Item "invalid file descriptor %s in %s" (Fatal) The file descriptor portion of the given command-line argument is not a non-negative integer. -.ie n .IP "invalid port number %s\fR in \f(CW%s" 4 +.ie n .IP "invalid port number %s in %s" 4 .el .IP "invalid port number \f(CW%s\fR in \f(CW%s\fR" 4 .IX Item "invalid port number %s in %s" (Fatal) The port number portion of the given command-line argument is not a non-negative integer. -.ie n .IP "invalid protocol family %s\fR in \f(CW%s" 4 +.ie n .IP "invalid protocol family %s in %s" 4 .el .IP "invalid protocol family \f(CW%s\fR in \f(CW%s\fR" 4 .IX Item "invalid protocol family %s in %s" (Fatal) The protocol family portion of the given command-line argument is not a non-negative integer. It should be equal to either \s-1AF_INET\s0 or \&\s-1AF_INET6\s0 on the system where \fBinnbind\fR is run. -.ie n .IP "must be run by user %s\fR (%lu), not \f(CW%lu" 4 +.ie n .IP "must be run by user %s (%lu), not %lu" 4 .el .IP "must be run by user \f(CW%s\fR (%lu), not \f(CW%lu\fR" 4 .IX Item "must be run by user %s (%lu), not %lu" (Fatal) When setuid root, \fBinnbind\fR may only be run by the news user as @@ -307,7 +306,7 @@ specified at configure time (\f(CW\*(C`n .IX Item "port may not be zero in %s" (Fatal) The port number portion of the given command-line argument was zero. -.ie n .IP "unknown protocol family %s\fR in \f(CW%s" 4 +.ie n .IP "unknown protocol family %s in %s" 4 .el .IP "unknown protocol family \f(CW%s\fR in \f(CW%s\fR" 4 .IX Item "unknown protocol family %s in %s" (Fatal) The protocol number portion of the given command-line argument is @@ -335,7 +334,7 @@ to bind the IPv4 socket on file descript .IX Header "HISTORY" Written by Russ Allbery for InterNetNews. .PP -$Id: innbind.pod 8436 2009\-05\-01 09:00:21Z iulius $ +\&\f(CW$Id:\fR innbind.pod 8436 2009\-05\-01 09:00:21Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIinet_aton\fR\|(3), \fIinet_pton\fR\|(3), \fIinnd\fR\|(8), \fInnrpd\fR\|(8). diff -Nurp inn-2.5.0/doc/man/innconfval.1 inn-2.5.1/doc/man/innconfval.1 --- inn-2.5.0/doc/man/innconfval.1 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/innconfval.1 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "INNCONFVAL 1" -.TH INNCONFVAL 1 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH INNCONFVAL 1 "2009-05-21" "INN 2.5.1" "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" innconfval \- Get configuration parameters from \fIinn.conf\fR .SH "SYNOPSIS" @@ -175,11 +174,11 @@ mapped to an array of strings. Here is an example: .Sp .Vb 6 -\& $domain = ''; -\& $enableoverview = 'true'; -\& @extraoverviewadvertised = ( 'Newsgroups', 'Injection\-Info' ); +\& $domain = \*(Aq\*(Aq; +\& $enableoverview = \*(Aqtrue\*(Aq; +\& @extraoverviewadvertised = ( \*(AqNewsgroups\*(Aq, \*(AqInjection\-Info\*(Aq ); \& @extraoverviewhidden = ( ); -\& $organization = 'Let\e's try nasty "quotes"'; +\& $organization = \*(AqLet\e\*(Aqs try nasty "quotes"\*(Aq; \& $maxforks = 10; .Ve .Sp @@ -200,11 +199,11 @@ for interoperability reasons). Here is an example: .Sp .Vb 6 -\& DOMAIN=''; export DOMAIN; +\& DOMAIN=\*(Aq\*(Aq; export DOMAIN; \& ENABLEOVERVIEW=true; export ENABLEOVERVIEW; -\& EXTRAOVERVIEWADVERTISED='"Newsgroups" "Injection\-Info"'; export EXTRAOVERVIEWADVERTISED; -\& EXTRAOVERVIEWHIDDEN='( )'; export EXTRAOVERVIEWHIDDEN; -\& ORGANIZATION='Let'\e''s try nasty "quotes"'; export ORGANIZATION; +\& EXTRAOVERVIEWADVERTISED=\*(Aq"Newsgroups" "Injection\-Info"\*(Aq; export EXTRAOVERVIEWADVERTISED; +\& EXTRAOVERVIEWHIDDEN=\*(Aq( )\*(Aq; export EXTRAOVERVIEWHIDDEN; +\& ORGANIZATION=\*(AqLet\*(Aq\e\*(Aq\*(Aqs try nasty "quotes"\*(Aq; export ORGANIZATION; \& MAXFORKS=10; export MAXFORKS; .Ve .IP "\fB\-t\fR" 4 @@ -223,7 +222,7 @@ Here is an example: \& set inn_enableoverview "true" \& set inn_extraoverviewadvertised { "Newsgroups" "Injection\-Info" } \& set inn_extraoverviewhidden { } -\& set inn_organization "Let's try nasty \e"quotes\e"" +\& set inn_organization "Let\*(Aqs try nasty \e"quotes\e"" \& set inn_maxforks 10 .Ve .IP "\fB\-v\fR" 4 @@ -233,7 +232,7 @@ Print \s-1INN\s0's version. This is equ .IX Header "HISTORY" Written by Rich \f(CW$alz\fR for InterNetNews. .PP -$Id: innconfval.pod 8416 2009\-04\-12 20:26:00Z iulius $ +\&\f(CW$Id:\fR innconfval.pod 8416 2009\-04\-12 20:26:00Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIinn.conf\fR\|(5), \fIINN::Config\fR\|(3pm). diff -Nurp inn-2.5.0/doc/man/innd.8 inn-2.5.1/doc/man/innd.8 --- inn-2.5.0/doc/man/innd.8 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/innd.8 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "INND 8" -.TH INND 8 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH INND 8 "2009-08-16" "INN 2.5.1" "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" innd \- InterNetNews daemon .SH "SYNOPSIS" @@ -371,7 +370,7 @@ whose subscription pattern would cause i that newsgroup existed (such as a pattern of \f(CW\*(C`news.admin.*\*(C'\fR). For this reason, it is correct to post newgroup messages to the newsgroup that the control message would create. It is \fInot\fR generally correct to crosspost -newgroup messages to some \*(L"well\-propagated\*(R" newsgroup; not only will this +newgroup messages to some \*(L"well-propagated\*(R" newsgroup; not only will this not actually improve their propagation to sites that want such control messages, but it will also cause sites that do not want those control messages to receive them. Therefore, assuming that a newgroup control @@ -517,13 +516,12 @@ later. If the fourth field is a minus sign, then the article was rejected. The reasons for rejection generated by \fBinnd\fR include: .PP -.Vb 20 +.Vb 10 \& "%s" header too long -\& "%s" wants to cancel <%s> by "%s" \& Article exceeds local limit of %s bytes \& Article posted in the future \-\- "%s" \& Bad "%s" header -\& Can't write history +\& Can\*(Aqt write history \& Duplicate \& Duplicate "%s" header \& EOF in headers @@ -531,6 +529,7 @@ reasons for rejection generated by \fBin \& Missing %s header \& No body \& No colon\-space in "%s" header +\& No matching newsgroups in cancel <%s> \& No space \& Space before colon in "%s" header \& Too old \-\- "%s" @@ -588,7 +587,7 @@ disables source routing. .IX Header "HISTORY" Written by Rich \f(CW$alz\fR for InterNetNews. .PP -$Id: innd.pod 8474 2009\-05\-17 13:12:15Z iulius $ +\&\f(CW$Id:\fR innd.pod 8565 2009\-08\-14 19:47:10Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIactive\fR\|(5), \fIctlinnd\fR\|(8), \fIdbz\fR\|(3), \fIhistory\fR\|(5), \fIincoming.conf\fR\|(5), \fIinn.conf\fR\|(5), diff -Nurp inn-2.5.0/doc/man/inndf.8 inn-2.5.1/doc/man/inndf.8 --- inn-2.5.0/doc/man/inndf.8 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/inndf.8 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "INNDF 8" -.TH INNDF 8 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH INNDF 8 "2009-05-21" "INN 2.5.1" "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" inndf \- Report free disk, inodes, and overview information .SH "SYNOPSIS" @@ -240,7 +239,7 @@ Katsuhiro Kondou added the \fB\-n\fR and reporting of percentage free disk space. Support for \fB\-f\fR and \fB\-F\fR was added by Fabien Tassin . .PP -$Id: inndf.pod 8232 2008\-12\-14 17:05:57Z iulius $ +\&\f(CW$Id:\fR inndf.pod 8232 2008\-12\-14 17:05:57Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIdf\fR\|(1), \fIinnwatch.ctl\fR\|(5), \fIinnstat\fR\|(8). diff -Nurp inn-2.5.0/doc/man/innmail.1 inn-2.5.1/doc/man/innmail.1 --- inn-2.5.0/doc/man/innmail.1 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/innmail.1 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "INNMAIL 1" -.TH INNMAIL 1 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH INNMAIL 1 "2009-05-21" "INN 2.5.1" "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" innmail \- Simple mail\-sending program .SH "SYNOPSIS" @@ -183,7 +182,7 @@ particularly sane addresses if they may InterNetNews. This manual page was originally written by Jeffrey M. Vinocur. .PP -$Id: innmail.pod 7851 2008\-05\-26 19:33:08Z iulius $ +\&\f(CW$Id:\fR innmail.pod 7851 2008\-05\-26 19:33:08Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIinn.conf\fR\|(5), \fImail\fR\|(1). diff -Nurp inn-2.5.0/doc/man/innupgrade.8 inn-2.5.1/doc/man/innupgrade.8 --- inn-2.5.0/doc/man/innupgrade.8 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/innupgrade.8 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "INNUPGRADE 8" -.TH INNUPGRADE 8 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH INNUPGRADE 8 "2009-05-21" "INN 2.5.1" "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" innupgrade \- Upgrade INN configuration files .SH "SYNOPSIS" @@ -156,21 +155,21 @@ Currently, \fBinnupgrade\fR knows how to .IX Item "inn.conf" .RS 2 .PD 0 -.IP "*" 2 +.IP "\(bu" 2 .PD Quote values with whitespace and comment out keys with no values, required for the change in configuration parsers introduced in \s-1INN\s0\ 2.4. The new format is not backward compatible with the previous parser, since the previous parser will include the double-quotes in the value of the parameter. -.IP "*" 2 +.IP "\(bu" 2 Add the \fIhismethod\fR parameter if not found (introduced in \s-1INN\s0\ 2.4, with the default value \f(CW\*(C`hisv6\*(C'\fR) and rename \fInntpactsync\fR to \&\fIincominglogfrequency\fR (since \s-1INN\s0\ 2.5). -.IP "*" 2 +.IP "\(bu" 2 If the \fIoverview.fmt\fR file exists, its content is merged in the \fIextraoverviewadvertised\fR and \fIextraoverviewhidden\fR parameters introduced in \s-1INN\s0\ 2.5. The file is then renamed to \fIoverview.fmt.OLD\fR. -.IP "*" 2 +.IP "\(bu" 2 If the \fIsasl.conf\fR file exists, its content is merged in the \fItlscapath\fR, \fItlscafile\fR, \fItlscertfile\fR and \fItlskeyfile\fR parameters introduced in \s-1INN\s0\ 2.5. The file is then renamed to @@ -182,7 +181,7 @@ parameters introduced in \s-1INN\s0\ 2.5 .IX Item "newsfeeds" .RS 2 .PD 0 -.IP "*" 2 +.IP "\(bu" 2 .PD Replace the use of \fBstartinnfeed\fR with the appropriate direct invocation of \fBinnfeed\fR or \fBimapfeed\fR. @@ -236,4 +235,4 @@ alternate file. .IX Header "HISTORY" Written by Russ Allbery for InterNetNews. .PP -$Id: innupgrade.pod 8415 2009\-04\-12 20:19:35Z iulius $ +\&\f(CW$Id:\fR innupgrade.pod 8415 2009\-04\-12 20:19:35Z iulius $ diff -Nurp inn-2.5.0/doc/man/libauth.3 inn-2.5.1/doc/man/libauth.3 --- inn-2.5.0/doc/man/libauth.3 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/libauth.3 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,36 +124,32 @@ .\" ======================================================================== .\" .IX Title "libauth 3" -.TH libauth 3 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH libauth 3 "2009-05-21" "INN 2.5.1" "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" libauth \- routines for writing nnrpd resolvers and authenticators .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 1 \& #include "libauth.h" -.Ve -.PP -.Vb 5 +\& \& struct res_info { \& struct sockaddr *client; \& struct sockaddr *local; \& char *clienthostname; \& }; -.Ve -.PP -.Vb 4 +\& \& struct auth_info { \& char *username; \& char *password; \& }; -.Ve -.PP -.Vb 2 +\& \& struct auth_info *get_auth_info(FILE *); \& struct res_info *get_res_info (FILE *); -.Ve -.PP -.Vb 2 +\& \& void free_auth_info(struct auth_info*); \& void free_res_info (struct res_info*); .Ve @@ -201,7 +192,7 @@ respectively? .IX Header "HISTORY" Written by Jeffrey M.\ Vinocur for InterNetNews. .PP -$Id: libauth.pod 8200 2008\-11\-30 13:31:30Z iulius $ +\&\f(CW$Id:\fR libauth.pod 8200 2008\-11\-30 13:31:30Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fInnrpd\fR\|(8), \fIreaders.conf\fR\|(5), \fIdoc/external\-auth\fR diff -Nurp inn-2.5.0/doc/man/libinnhist.3 inn-2.5.1/doc/man/libinnhist.3 --- inn-2.5.0/doc/man/libinnhist.3 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/libinnhist.3 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "libinnhist 3" -.TH libinnhist 3 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH libinnhist 3 "2009-09-11" "INN 2.5.1" "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" his \- routines for managing INN history .SH "SYNOPSIS" @@ -175,7 +174,7 @@ his \- routines for managing INN history .PP \&\fBbool HISwrite(struct history *\fR\fIhistory\fR\fB, const char *\fR\fIkey\fR\fB, time_t \fR\fIarrived\fR\fB, time_t \fR\fIposted\fR\fB, time_t \fR\fIexpires\fR\fB, const \s-1TOKEN\s0 *\fR\fItoken\fR\fB);\fR .PP -\&\fBbool HISremember(struct history *\fR\fIhistory\fR\fB, const char *\fR\fIkey\fR\fB, time_t \fR\fIarrived\fR\fB);\fR +\&\fBbool HISremember(struct history *\fR\fIhistory\fR\fB, const char *\fR\fIkey\fR\fB, time_t \fR\fIarrived\fR\fB, time_t \fR\fIposted\fR\fB);\fR .PP \&\fBbool HISreplace(struct history *\fR\fIhistory\fR\fB, const char *\fR\fIkey\fR\fB, time_t \fR\fIarrived\fR\fB, time_t \fR\fIposted\fR\fB, time_t \fR\fIexpires\fR\fB, const \s-1TOKEN\s0 *\fR\fItoken\fR\fB);\fR .PP @@ -190,9 +189,9 @@ his \- routines for managing INN history \&\fBbool HISctl(struct history *\fR\fIhistory\fR\fB, int \fR\fIrequest\fR\fB, void *\fR\fIval\fR\fB);\fR .SH "DESCRIPTION" .IX Header "DESCRIPTION" -These functions provide provide access to the \s-1INN\s0 history -database. They maintain key/value pairs in an opaque database whilst -providing for expiry of outdated information. +These functions provide access to the \s-1INN\s0 history database. They maintain +key/value pairs in an opaque database whilst providing for expiry of +outdated information. .PP The history structure is an opaque handle returned from HISopen. .PP @@ -233,7 +232,7 @@ associated with \fIhistory\fR to disk. \&\fIhistory\fR. The cache will occupy approximately \fIsize\fR bytes. .PP \&\fBHISlookup\fR retrieves a token from \fIhistory\fR based on the passed -\&\fIkey\fR (normally the Message\-ID). If no entry with an associated token +\&\fIkey\fR (normally the Message-ID). If no entry with an associated token can be found, \fBHISlookup\fR will return \fBfalse\fR. If a token is found \&\fIarrived\fR, \fIexpires\fR, and \fIposted\fR are filled in with the message arrival, expiry, and posting times respectively (or zero, if the time @@ -244,7 +243,7 @@ component is not returned to the caller, value. .PP \&\fBHIScheck\fR checks the database \fIhistory\fR for \fIkey\fR (normally the -Message\-ID); if \fIkey\fR has previously been set via \fBHISwrite\fR, +Message-ID); if \fIkey\fR has previously been set via \fBHISwrite\fR, \&\fBHIScheck\fR returns \fBtrue\fR, else \fBfalse\fR. .PP \&\fBHISwrite\fR writes a new entry to the database \fIhistory\fR associated @@ -258,10 +257,11 @@ existing entries in \fIhistory\fR is uns .PP \&\fBHISremember\fR writes a new entry to the database \fIhistory\fR associated with \fIkey\fR, merely remembering that this \fIkey\fR has been -seen, together with its arrival time \fIarrived\fR. \fBHISremember\fR -returns \fBtrue\fR on success, or \fBfalse\fR on failure. The behaviour when -\&\fIkey\fR is not unique with respect to the existing entries in -\&\fIhistory\fR is unspecified. +seen, together with its arrival time \fIarrived\fR and also its posting +time \fIposted\fR, if known. (Otherwise, its posting time may be specified +as <= 0 in case it is absent.) \fBHISremember\fR returns \fBtrue\fR on success, +or \fBfalse\fR on failure. The behaviour when \fIkey\fR is not unique with +respect to the existing entries in \fIhistory\fR is unspecified. .PP \&\fBHISreplace\fR replaces an existing entry in the database \fIhistory\fR, associated with \fIkey\fR. \fIarrived\fR, \fIposted\fR, \fIexpired\fR specify the @@ -304,11 +304,12 @@ times, in addition to the token associat posting and/or expiry may be zero, but that the token will never be \&\fB\s-1NULL\s0\fR (such entries are handled solely via the threshold mechanism). The storage token passed to the discrimination function -may updated if required (for example, as might be needed by a +may be updated if required (for example, as might be needed by a hierachical storage management implementation). .PP -Entries in the database with an arrival time less than \fIthreshold\fR +Entries in the database with a posting time less than \fIthreshold\fR with no token associated with them are deleted from the database. +In case the posting time is unknown, the arrival time is used instead. .PP The parameter \fIcookie\fR is passed to the discrimination function, and may be used for any purpose required by the caller. @@ -418,4 +419,4 @@ type \fBtime_t\fR and will not be modifi .IX Header "HISTORY" Written by Alex Kiernan for InterNetNews\ 2.4.0. .PP -$Id: libinnhist.pod 7851 2008\-05\-26 19:33:08Z iulius $ +\&\f(CW$Id:\fR libinnhist.pod 8575 2009\-08\-18 13:53:54Z iulius $ diff -Nurp inn-2.5.0/doc/man/list.3 inn-2.5.1/doc/man/list.3 --- inn-2.5.0/doc/man/list.3 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/list.3 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "list 3" -.TH list 3 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH list 3 "2009-05-21" "INN 2.5.1" "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" @@ -208,4 +207,4 @@ to the caller. .IX Header "HISTORY" Written by Alex Kiernan for InterNetNews\ 2.4.0. .PP -$Id: list.pod 7851 2008\-05\-26 19:33:08Z iulius $ +\&\f(CW$Id:\fR list.pod 7851 2008\-05\-26 19:33:08Z iulius $ diff -Nurp inn-2.5.0/doc/man/mailpost.8 inn-2.5.1/doc/man/mailpost.8 --- inn-2.5.0/doc/man/mailpost.8 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/mailpost.8 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "MAILPOST 8" -.TH MAILPOST 8 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH MAILPOST 8 "2009-05-21" "INN 2.5.1" "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" mailpost \- Feed an e\-mail message into a newsgroup .SH "SYNOPSIS" @@ -147,7 +146,7 @@ whitespace-separated list of group names .PP Before feeding the article to \fBinews\fR, it checks that the article has not been seen before, and it changes some headers (cleans up some address -headers, removes X\-Trace: and X\-Complaints\-To:, and puts \f(CW\*(C`X\-\*(C'\fR in front +headers, removes X\-Trace: and X\-Complaints-To:, and puts \f(CW\*(C`X\-\*(C'\fR in front of unknown headers). .PP If the article has been seen before (\fBmailpost\fR records the Message-ID of @@ -199,7 +198,7 @@ Print usage information and exit. .IP "\fB\-m\fR \fImailing-list\fR" 4 .IX Item "-m mailing-list" If the \fB\-m\fR flag is used, the value given is added to the article in a -Mailing\-List: header, if such a header doesn't already exist. +Mailing-List: header, if such a header doesn't already exist. .IP "\fB\-n\fR" 4 .IX Item "-n" If the \fB\-n\fR flag is used, neither an article is posted nor a mail is sent @@ -246,13 +245,13 @@ Known headers are: The Perl script itself used to feed an e\-mail message to a newsgroup. .IP "\fIpathtmp\fR/mailpost\-msgid.dir and \fIpathtmp\fR/mailpost\-msgid.pag" 4 .IX Item "pathtmp/mailpost-msgid.dir and pathtmp/mailpost-msgid.pag" -The default database files which record previously seen Message\-IDs. +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 -$Id: mailpost.in 8462 2009\-05\-14 05:43:04Z iulius $ +\&\f(CW$Id:\fR mailpost.in 8462 2009\-05\-14 05:43:04Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIactive\fR\|(5), \fIinews\fR\|(1), \fIinn.conf\fR\|(5), \fInnrpd\fR\|(8), \fIuwildmat\fR\|(3). diff -Nurp inn-2.5.0/doc/man/makedbz.8 inn-2.5.1/doc/man/makedbz.8 --- inn-2.5.0/doc/man/makedbz.8 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/makedbz.8 2009-10-12 11:24:04.000000000 -0700 @@ -1,78 +1,177 @@ -.\" $Revision: 5909 $ -.TH MAKEDBZ 8 -.SH NAME -makedbz \- rebuild dbz files -.SH SYNOPSIS -.B makedbz -[ -.BI \-f " filename" -] -[ -.B \-i -] -[ -.B \-o -] -[ -.BI \-s " size" -] -.SH DESCRIPTION -.PP -.I Makedbz -rebuilds -.IR dbz (3) -database. -The default name of the text file is -.IR /history ; -to specify a different name, use the ``\fB\-f\fP'' flag. -.SH OPTIONS -.TP -.B \-f file -If the ``\fB\-f\fP'' flag is used, then the database files are named -.IR file.dir , -.IR file.index , -and -.IR file.hash . -If the ``\fB\-f\fP'' flag is not used, then a temporary link to the name -.I history.n -is made and the database files are written as -.I history.n.index -, -.I history.n.hash -and -.IR history.n.dir . -.TP -.B \-i -To ignore the old database use the ``\fB\-i\fP'' flag. -Using the ``\fB\-o\fP'' or ``\fB\-s\fP'' flags implies the ``\fB\-i\fP'' flag. -.TP -.B \-o -If the ``\fB\-o\fP'' flag is used, then the link is not made and any existing -history files are overwritten. -If the old database exists, -.I makedbz -will use it to determine the size of the new database. -.TP -.B \-s size -The program will also ignore any old database if the ``\fB\-s\fP'' flag is used -to specify the approximate number of entries in the new database. -Accurately specifying the size is an optimization that will create a more -efficient database. Size is measured in key-value pairs (i.e., lines). -(The size should be the estimated eventual size of the file, typically -the size of the old file.) -For more information, see the discussion of -.I dbzfresh -and -.I dbzsize -in -.IR dbz (3). -.SH HISTORY -Written by Katsuhiro Kondou for InterNetNews. -.de R$ -This is revision \\$3, dated \\$4. +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) +.\" +.\" 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 .. -.R$ $Id: makedbz.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" '' +'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 turned on, 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. +.ie \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. nr % 0 +. rr F +.\} +.el \{\ +. de IX +.. +.\} +.\" +.\" 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 "MAKEDBZ 8" +.TH MAKEDBZ 8 "2009-09-11" "INN 2.5.1" "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" +makedbz \- Rebuild dbz files +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +\&\fBmakedbz\fR [\fB\-io\fR] [\fB\-f\fR \fIfilename\fR] [\fB\-s\fR \fIsize\fR] +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +\&\fBmakedbz\fR rebuilds \fIdbz\fR\|(3) 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" +.IP "\fB\-f\fR \fIfilename\fR" 4 +.IX Item "-f filename" +If the \fB\-f\fR flag is used, then the database files are named \f(CW\*(C`\f(CIfilename\f(CW.dir\*(C'\fR, +\&\f(CW\*(C`\f(CIfilename\f(CW.index\*(C'\fR, and \f(CW\*(C`\f(CIfilename\f(CW.hash\*(C'\fR. If the \fB\-f\fR flag is not used, +then a temporary link to the name \f(CW\*(C`history.n\*(C'\fR is made and the database files +are written as \f(CW\*(C`history.n.index\*(C'\fR , \f(CW\*(C`history.n.hash\*(C'\fR and \f(CW\*(C`history.n.dir\*(C'\fR. +.IP "\fB\-i\fR" 4 +.IX Item "-i" +To ignore the old database, use the \fB\-i\fR flag. Using the \fB\-o\fR or \fB\-s\fR +flags implies the \fB\-i\fR flag. +.IP "\fB\-o\fR" 4 +.IX Item "-o" +If the \fB\-o\fR flag is used, then the link is not made and any existing history +files are overwritten. If the old database exists, \fBmakedbz\fR will use it to +determine the size of the new database. +.IP "\fB\-s\fR \fIsize\fR" 4 +.IX Item "-s size" +\&\fBmakedbz\fR will also ignore any old database if the \fB\-s\fR flag is used to +specify the approximate number of entries in the new database. Accurately +specifying the size is an optimization that will create a more efficient +database. Size is measured in key-value pairs (i.e. lines). (The size +should be the estimated eventual size of the file, typically the size +of the old file.) +.Sp +For more information, see the discussion of \fBdbzfresh\fR and \fBdbzsize\fR +in \fIdbz\fR\|(3). +.SH "HISTORY" +.IX Header "HISTORY" +Written by Katsuhiro Kondou for InterNetNews. Converted to +\&\s-1POD\s0 by Julien Elie. +.PP +\&\f(CW$Id:\fR makedbz.pod 8584 2009\-08\-20 21:54:07Z iulius $ .SH "SEE ALSO" -dbz(3), -history(5), -inn.conf(5). +.IX Header "SEE ALSO" +\&\fIdbz\fR\|(3), \fIhistory\fR\|(5). diff -Nurp inn-2.5.0/doc/man/makehistory.8 inn-2.5.1/doc/man/makehistory.8 --- inn-2.5.0/doc/man/makehistory.8 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/makehistory.8 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,13 +124,17 @@ .\" ======================================================================== .\" .IX Title "MAKEHISTORY 8" -.TH MAKEHISTORY 8 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH MAKEHISTORY 8 "2009-08-16" "INN 2.5.1" "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" makehistory \- Initialize or rebuild INN history database .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBmakehistory\fR [\fB\-abFIOSx\fR] [\fB\-f\fR \fIfilename\fR] [\fB\-l\fR \fIcount\fR] -[\fB\-s\fR \fIsize\fR] [\fB\-T\fR \fItmpdir\fR] +[\fB\-L\fR \fIload-average\fR] [\fB\-s\fR \fIsize\fR] [\fB\-T\fR \fItmpdir\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" \&\fBmakehistory\fR rebuilds the \fIhistory\fR\|(5) text file, which contains a list of @@ -174,7 +173,7 @@ append to the main \fIhistory\fR file, m running, or you can corrupt the history. .IP "\fB\-b\fR" 4 .IX Item "-b" -Delete any messages found in the spool that do not have valid Message\-ID: +Delete any messages found in the spool that do not have valid Message-ID: headers in them. .IP "\fB\-F\fR" 4 .IX Item "-F" @@ -209,6 +208,15 @@ by \fIsort\fR\|(1)). See the descriptio specify the temporary storage location. This option has no effect with buffindexed, because buffindexed does not need sorted overview and no batching is done. +.IP "\fB\-L\fR \fIload-average\fR" 4 +.IX Item "-L load-average" +Temporarily pause activities if the system load average exceeds the +specified level \fIload-average\fR. This allows \fBmakehistory\fR to run +on a system being used for other purposes without monopolizing system +resources and thus making the response time for other applications +unacceptably slow. Using \fInice\fR\|(1) does not help much for that because +the problem comes from disk I/O usage, and \fIionice\fR\|(1) is not always +available or efficient. .IP "\fB\-O\fR" 4 .IX Item "-O" Create the overview database as well as the \fIhistory\fR file. Overview @@ -261,14 +269,14 @@ expired articles, follow the above comma .PP .Vb 2 \& cd -\& awk 'NF == 2 { print }' < history >> history.n +\& awk \*(AqNF == 2 { print }\*(Aq < history >> history.n .Ve .PP (replacing the path with your \fIpathdb\fR, if it isn't the default). Then look over the new \fIhistory\fR file for problems and run: .PP .Vb 1 -\& makedbz \-s `wc \-l < history.n` \-f history.n +\& makedbz \-s \`wc \-l < history.n\` \-f history.n .Ve .PP Then rename all of the files matching \f(CW\*(C`history.n.*\*(C'\fR to \f(CW\*(C`history.*\*(C'\fR, @@ -302,7 +310,7 @@ Where temporary files are written unless Originally written by Rich \f(CW$alz\fR for InterNetNews and updated by various other people since. .PP -$Id: makehistory.pod 8409 2009\-04\-11 22:13:41Z iulius $ +\&\f(CW$Id:\fR makehistory.pod 8535 2009\-06\-23 18:09:56Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIactive\fR\|(5), \fIctlinnd\fR\|(8), \fIdbz\fR\|(3), \fIhistory\fR\|(5), \fIinn.conf\fR\|(5), \fIinnd\fR\|(8), diff -Nurp inn-2.5.0/doc/man/mod-active.8 inn-2.5.1/doc/man/mod-active.8 --- inn-2.5.0/doc/man/mod-active.8 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/mod-active.8 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "MOD-ACTIVE 8" -.TH MOD-ACTIVE 8 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH MOD-ACTIVE 8 "2009-05-21" "INN 2.5.1" "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" mod\-active \- Batch processing of newsgroups creation and removal commands .SH "SYNOPSIS" @@ -173,7 +172,7 @@ to happen. .SH "HISTORY" .IX Header "HISTORY" Written by David C Lawrence for InterNetNews. Converted to \s-1POD\s0 -by Julien Elie. +by Julien Elie. .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIactive\fR\|(5), \fIactive.times\fR\|(5), \fIactsync\fR\|(8), \fIctlinnd\fR\|(8), \fIdocheckgroups\fR\|(8), \fIinnd\fR\|(8). diff -Nurp inn-2.5.0/doc/man/moderators.5 inn-2.5.1/doc/man/moderators.5 --- inn-2.5.0/doc/man/moderators.5 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/moderators.5 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "MODERATORS 5" -.TH MODERATORS 5 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH MODERATORS 5 "2009-05-21" "INN 2.5.1" "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" moderators \- Submission addresses for moderated groups .SH "DESCRIPTION" @@ -210,7 +209,7 @@ not be created. Written by Rich \f(CW$alz\fR for InterNetNews. Rewritten in \&\s-1POD\s0 by Russ Allbery . .PP -$Id: moderators.pod 7851 2008\-05\-26 19:33:08Z iulius $ +\&\f(CW$Id:\fR moderators.pod 7851 2008\-05\-26 19:33:08Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIinn.conf\fR\|(5), \fInnrpd\fR\|(8), \fIuwildmat\fR\|(3) diff -Nurp inn-2.5.0/doc/man/motd.news.5 inn-2.5.1/doc/man/motd.news.5 --- inn-2.5.0/doc/man/motd.news.5 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/motd.news.5 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "MOTD.NEWS 5" -.TH MOTD.NEWS 5 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH MOTD.NEWS 5 "2009-05-21" "INN 2.5.1" "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" motd.news \- Message of the day information for readers .SH "DESCRIPTION" @@ -148,7 +147,7 @@ the client an empty response. .IX Header "HISTORY" Rewritten in \s-1POD\s0 by Russ Allbery for InterNetNews. .PP -$Id: motd.news.pod 7851 2008\-05\-26 19:33:08Z iulius $ +\&\f(CW$Id:\fR motd.news.pod 7851 2008\-05\-26 19:33:08Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIinn.conf\fR\|(5) diff -Nurp inn-2.5.0/doc/man/news.daily.8 inn-2.5.1/doc/man/news.daily.8 --- inn-2.5.0/doc/man/news.daily.8 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/news.daily.8 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "NEWS.DAILY 8" -.TH NEWS.DAILY 8 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH NEWS.DAILY 8 "2009-05-21" "INN 2.5.1" "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" news.daily \- Perform daily Usenet maintenance tasks .SH "SYNOPSIS" @@ -317,7 +316,7 @@ will then use this path as the directory and Rich \f(CW$alz\fR for InterNetNews. It was converted to \s-1POD\s0 by Julien Elie. .PP -$Id: news.daily.pod 8468 2009\-05\-16 12:28:24Z iulius $ +\&\f(CW$Id:\fR news.daily.pod 8468 2009\-05\-16 12:28:24Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIactive\fR\|(5), \fIctlinnd\fR\|(8), \fIexpire\fR\|(8), \fIexpire.ctl\fR\|(5), \fIexpireover\fR\|(8), \fIexpirerm\fR\|(8), \fIfastrm\fR\|(8), diff -Nurp inn-2.5.0/doc/man/news2mail.8 inn-2.5.1/doc/man/news2mail.8 --- inn-2.5.0/doc/man/news2mail.8 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/news2mail.8 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "NEWS2MAIL 8" -.TH NEWS2MAIL 8 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH NEWS2MAIL 8 "2009-05-21" "INN 2.5.1" "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" news2mail \- Channel script to gateway news into e\-mails .SH "SYNOPSIS" @@ -167,7 +166,7 @@ In \fInewsfeeds\fR, the channel feed sho \& news2mail!:!*:Ac,Tc,Wn*:/news2mail .Ve .PP -and for each mailing\-list, you only have to add to \fInewsfeeds\fR an entry list +and for each mailing-list, you only have to add to \fInewsfeeds\fR an entry list like: .PP .Vb 1 @@ -205,7 +204,7 @@ as for the envelope-from address (which 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 -$Id: news2mail.pod 8199 2008\-11\-30 13:30:47Z iulius $ +\&\f(CW$Id:\fR news2mail.pod 8199 2008\-11\-30 13:30:47Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIinnd\fR\|(8), \fInewsfeeds\fR\|(5). diff -Nurp inn-2.5.0/doc/man/newsfeeds.5 inn-2.5.1/doc/man/newsfeeds.5 --- inn-2.5.0/doc/man/newsfeeds.5 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/newsfeeds.5 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "NEWSFEEDS 5" -.TH NEWSFEEDS 5 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH NEWSFEEDS 5 "2009-08-16" "INN 2.5.1" "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 "DESCRIPTION" @@ -158,7 +157,7 @@ logical line is blank or starts with a n .PP All other lines are interpreted as feed entries. An entry should consist of four colon-separated fields; two of the fields may have optional -sub\-fields, marked off by a slash. Fields or sub-fields that take +sub-fields, marked off by a slash. Fields or sub-fields that take multiple parameters should be separated by a comma. Extra whitespace can cause problems and should be avoided. Except for the site names, case is significant. The format of an entry is: @@ -197,7 +196,7 @@ better thing to use for \fIsitename\fR. (Another way to avoid this problem is with the \f(CW\*(C`Ap\*(C'\fR flag; see the description below.) .PP -If an entry has an exclusion sub\-field, the article will not be sent to +If an entry has an exclusion sub-field, the article will not be sent to that site if any of \fIexclude\fR appear in the Path: header. (It's sometimes convenient to have the \fIsitename\fR be an abbreviated form of the name of the remote site, since all the \fIsitename\fRs to which an article @@ -272,7 +271,7 @@ been posted, but if an article has a Dis \&\fIdistribution\fRs are specified, then they are checked according to the following rules: .IP "1." 4 -If the Distribution: header matches any of the values in the sub\-field, +If the Distribution: header matches any of the values in the sub-field, the article is sent. .IP "2." 4 If a \fIdistribution\fR starts with an exclamation point, and it matches the @@ -304,7 +303,7 @@ feeds. .PP The site named \f(CW\*(C`ME\*(C'\fR is special. There must be exactly one such entry, and it should be the first entry in the file. If the \f(CW\*(C`ME\*(C'\fR entry has an -exclusion sub\-field, incoming articles are rejected completely if any of +exclusion sub-field, incoming articles are rejected completely if any of the names specified in that exclusion sub-field appear in their Path: headers. If the \f(CW\*(C`ME\*(C'\fR entry has a subscription list, that list is prepended to the subscription list of all other entries. For example, @@ -314,7 +313,7 @@ list for all other feeds so that local p tends to be somewhat confusing since the default subscription is prepended and can be overridden by other patterns. .PP -If the \f(CW\*(C`ME\*(C'\fR entry has a distribution sub\-field, only articles that match +If the \f(CW\*(C`ME\*(C'\fR entry has a distribution sub-field, only articles that match that distribution list are accepted and all other articles are rejected. A common use for this is to put something like \f(CW\*(C`/!local\*(C'\fR in the \f(CW\*(C`ME\*(C'\fR entry to reject local postings from other misconfigured sites. @@ -342,7 +341,7 @@ which is then completely equivalent to: .Ve .PP Variables aren't solely simple substitution. If either \f(CW\*(C`!\*(C'\fR or \f(CW\*(C`@\*(C'\fR -immediately preceeds the variable and the value of the variable contains +immediately preceds the variable and the value of the variable contains commas, that character will be duplicated before each comma. This somewhat odd-sounding behavior is designed to make it easier to use variables to construct feed patterns. The utility becomes more obvious @@ -408,6 +407,7 @@ Don't send articles rejected by filters. lets one accept all articles but not propagate filtered ones to some sites. .IP "o" 3 +.IX Item "o" Only send articles for which overview data was stored. .IP "O" 3 .IX Item "O" @@ -592,7 +592,7 @@ The storage \s-1API\s0 token of the arti be retrieved given the storage \s-1API\s0 token by using \fIsm\fR\|(8). .IP "g" 3 .IX Item "g" -The newsgroup the article is in; if cross\-posted, then the first of the +The newsgroup the article is in; if cross-posted, then the first of the groups to which the article was posted that this site gets. (The difference from \f(CW\*(C`G\*(C'\fR is that this sends the newsgroup to which the article was posted even if it is a control message.) @@ -619,7 +619,7 @@ a program like \fIrnews\fR\|(8)), the Pa .IP "t" 3 .IX Item "t" The time the article was received as seconds since epoch. -.IP "\&*" 3 +.IP "*" 3 The names of the appropriate funnel entries, or all sites that get the article (see below for more details). .IP "D" 3 @@ -719,7 +719,7 @@ the program using \fIsm\fR\|(8)). The p standard input (unlike earlier versions of \s-1INN\s0, where the article is sent to the program on stdin), and standard output and error from the program will be set to the error log (\fIpathlog\fR/errlog). \fBinnd\fR will try to -avoid spawning a shell if the command has no shell meta\-characters; this +avoid spawning a shell if the command has no shell meta-characters; this feature can be defeated if necessary for some reason by appending a semi-colon to the end of the command. The full path name of the program to be run must be specified unless the command will be run by the shell @@ -830,7 +830,7 @@ Here's a more esoteric example of a chan .PP .Vb 2 \& watcher!:*:Tc,Wbnm\e -\& :exec awk '$1 > 1000000 { print "BIG", $2, $3 }' > /dev/console +\& :exec awk \*(Aq$1 > 1000000 { print "BIG", $2, $3 }\*(Aq > /dev/console .Ve .PP This receives the byte size of each article along with the storage \s-1API\s0 @@ -841,7 +841,7 @@ equivalent: .PP .Vb 2 \& watcher!:*:Tc,>1000000,Wbnm\e -\& :exec awk '{ print "BIG", $2, $3}' > /dev/console +\& :exec awk \*(Aq{ print "BIG", $2, $3}\*(Aq > /dev/console .Ve .PP Here's a cute, really simple news to mail gateway that also serves as an @@ -903,7 +903,7 @@ the standard newsfeeds entries used by m Written by Rich \f(CW$alz\fR for InterNetNews. Reformatted and rewritten in \s-1POD\s0 by Russ Allbery . .PP -$Id: newsfeeds.pod 8457 2009\-05\-09 17:57:19Z iulius $ +\&\f(CW$Id:\fR newsfeeds.pod 8517 2009\-06\-17 17:49:36Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIactive\fR\|(5), \fIbuffchan\fR\|(8), \fIcontrolchan\fR\|(8), \fIctlinnd\fR\|(8), \fIinn.conf\fR\|(5), \fIinnd\fR\|(8), diff -Nurp inn-2.5.0/doc/man/newsgroups.5 inn-2.5.1/doc/man/newsgroups.5 --- inn-2.5.0/doc/man/newsgroups.5 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/newsgroups.5 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "NEWSGROUPS 5" -.TH NEWSGROUPS 5 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH NEWSGROUPS 5 "2009-05-21" "INN 2.5.1" "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" newsgroups \- List of newsgroups and their short descriptions .SH "DESCRIPTION" @@ -243,7 +242,7 @@ The minimal \fInewsgroups\fR file shippe \& junk Unfiled articles (no posting). .Ve .PP -These lines \fImust\fR be tab\-delimited, so please be careful in case you copy +These lines \fImust\fR be tab-delimited, so please be careful in case you copy and paste them from above. .SH "HISTORY" .IX Header "HISTORY" @@ -254,7 +253,7 @@ the policies by which the \fInewsgroups\ written by David Lawrence and updated by Russ Allbery . .PP -$Id: newsgroups.pod 8357 2009\-02\-27 17:56:00Z iulius $ +\&\f(CW$Id:\fR newsgroups.pod 8357 2009\-02\-27 17:56:00Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIactive\fR\|(5), \fIcontrolchan\fR\|(8), \fIctlinnd\fR\|(8), \fIgetlist\fR\|(1), \fInnrpd\fR\|(8). diff -Nurp inn-2.5.0/doc/man/newslog.5 inn-2.5.1/doc/man/newslog.5 --- inn-2.5.0/doc/man/newslog.5 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/newslog.5 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "NEWSLOG 5" -.TH NEWSLOG 5 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH NEWSLOG 5 "2009-05-21" "INN 2.5.1" "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" newslog \- Description of INN log files .SH "DESCRIPTION" @@ -286,7 +285,7 @@ a tab character for the delimiter: .Ve .Sp (A typical entry is shown; it should agree with \fIpathlog\fR in \fIinn.conf\fR -and be tab\-delimited.) +and be tab-delimited.) .IP "\fInews.err\fR" 4 .IX Item "news.err" All major error messages issued by \fBinnd\fR are appended to this file via @@ -304,7 +303,7 @@ a tab character for the delimiter: .Ve .Sp (A typical entry is shown; it should agree with \fIpathlog\fR in \fIinn.conf\fR -and be tab\-delimited.) +and be tab-delimited.) .IP "\fInews.notice\fR" 4 .IX Item "news.notice" All standard error messages and status messages issued by \fBinnd\fR, \fBinnfeed\fR, @@ -320,7 +319,7 @@ a tab character for the delimiter: .Ve .Sp (A typical entry is shown; it should agree with \fIpathlog\fR in \fIinn.conf\fR -and be tab\-delimited.) +and be tab-delimited.) .IP "\fInntpsend.log\fR" 4 .IX Item "nntpsend.log" The \fBnntpsend\fR program appends all status messages to this file. It is @@ -368,7 +367,7 @@ Written by Landon Curt Noll for InterNetNews. Rewritten and converted to \s-1POD\s0 by Julien Elie. .PP -$Id: newslog.pod 8357 2009\-02\-27 17:56:00Z iulius $ +\&\f(CW$Id:\fR newslog.pod 8357 2009\-02\-27 17:56:00Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIcontrol.ctl\fR\|(5), \fIctlinnd\fR\|(8), \fIexpire\fR\|(8), \fIexpireover\fR\|(8), \fIexpirerm\fR\|(8), \fIinn.conf\fR\|(5), diff -Nurp inn-2.5.0/doc/man/ninpaths.8 inn-2.5.1/doc/man/ninpaths.8 --- inn-2.5.0/doc/man/ninpaths.8 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/ninpaths.8 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "NINPATHS 8" -.TH NINPATHS 8 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH NINPATHS 8 "2009-05-21" "INN 2.5.1" "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" ninpaths \- Report Usenet Path statistics (new inpaths) .SH "SYNOPSIS" @@ -215,7 +214,7 @@ where \fBginpaths\fR is the following sc .PP .Vb 2 \& #!/bin/sh -\& exec egrep '^Path: ' | ninpaths \-p \-d /path/inpaths.%d +\& exec egrep \*(Aq^Path: \*(Aq | ninpaths \-p \-d /path/inpaths.%d .Ve .PP replacing as above. @@ -234,4 +233,4 @@ The idea and some implementation details original inpaths program, but most of the code has been rewritten for clarity. This program is in the public domain. .PP -$Id: ninpaths.pod 7851 2008\-05\-26 19:33:08Z iulius $ +\&\f(CW$Id:\fR ninpaths.pod 7851 2008\-05\-26 19:33:08Z iulius $ diff -Nurp inn-2.5.0/doc/man/nnrpd.8 inn-2.5.1/doc/man/nnrpd.8 --- inn-2.5.0/doc/man/nnrpd.8 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/nnrpd.8 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "NNRPD 8" -.TH NNRPD 8 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH NNRPD 8 "2009-09-29" "INN 2.5.1" "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 \- NNTP server for reader clients .SH "SYNOPSIS" @@ -255,7 +254,7 @@ awaiting connections when started as a s .IX Item "-r reason" If the \fB\-r\fR flag is used, then \fBnnrpd\fR will reject the incoming connection giving \fIreason\fR as the text. This flag is used by \fIinnd\fR\|(8) -when it is paused or throttled. +when it is paused or throttled. \fIreason\fR should be encoded in \s-1UTF\-8\s0. .IP "\fB\-s\fR \fIpadding\fR" 4 .IX Item "-s padding" As each command is received, \fBnnrpd\fR tries to change its \f(CW\*(C`argv\*(C'\fR @@ -288,13 +287,14 @@ warnings with some news reader clients), the default path by running \f(CW\*(C`make cert\*(C'\fR after \f(CW\*(C`make install\*(C'\fR when installing \s-1INN\s0, or by running the following commands: .PP -.Vb 6 -\& openssl req \-new \-x509 \-nodes \-out /lib/cert.pem \e -\& \-days 366 \-keyout /lib/key.pem -\& chown news:news /lib/cert.pem -\& chmod 640 /lib/cert.pem -\& chown news:news /lib/key.pem -\& chmod 600 /lib/key.pem +.Vb 7 +\& umask 077 +\& openssl req \-new \-x509 \-nodes \-out /cert.pem \e +\& \-days 366 \-keyout /key.pem +\& chown news:news /cert.pem +\& chmod 640 /cert.pem +\& chown news:news /key.pem +\& chmod 600 /key.pem .Ve .PP Replace the paths with something appropriate to your \s-1INN\s0 installation. @@ -303,6 +303,17 @@ The \fBopenssl\fR program will ask you a organization. Enter the fully qualified domain name of the server as the name the certificate is for. .PP +You then have to set these \fIinn.conf\fR parameters with the right paths: +.PP +.Vb 3 +\& tlscapath: +\& tlscertfile: /cert.pem +\& tlskeyfile: /key.pem +.Ve +.PP +In case you have a certificate authority root certificate, you can also +set \fItlscafile\fR to its path. +.PP Most news clients currently do not use the \s-1STARTTLS\s0 command, however, and instead expect to connect to a separate port (563) and start a \s-1TLS\s0 negotiation immediately. \fBinnd\fR does not, however, know how to listen @@ -312,7 +323,7 @@ for regular reader connections. You wil done with the \fB\-D\fR flag along with \f(CW\*(C`\-p 563\*(C'\fR and put into your init scripts: .PP .Vb 1 -\& su news \-c '/nnrpd \-D \-p 563 \-S' +\& su news \-c \*(Aq/nnrpd \-D \-p 563 \-S\*(Aq .Ve .PP but the easiest way is probably to add a line like: @@ -355,7 +366,7 @@ return the data for the current article. 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 +range or a single message-ID, as specified in \s-1RFC\s0\ 2980. The third argument is a \fIuwildmat\fR\|(3)\-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 @@ -368,7 +379,7 @@ support added by Rob Robertston in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "OVDB 5" -.TH OVDB 5 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH OVDB 5 "2009-05-21" "INN 2.5.1" "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" ovdb \- Overview storage method for INN .SH "DESCRIPTION" @@ -437,7 +436,7 @@ ov3.c .IX Header "HISTORY" Written by Heath Kehoe for InterNetNews .PP -$Id: ovdb.pod 8334 2009\-02\-20 20:18:37Z iulius $ +\&\f(CW$Id:\fR ovdb.pod 8334 2009\-02\-20 20:18:37Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIinn.conf\fR\|(5), \fIinnd\fR\|(8), \fInnrpd\fR\|(8), \fIovdb_init\fR\|(8), \fIovdb_monitor\fR\|(8), diff -Nurp inn-2.5.0/doc/man/ovdb_init.8 inn-2.5.1/doc/man/ovdb_init.8 --- inn-2.5.0/doc/man/ovdb_init.8 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/ovdb_init.8 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "OVDB_INIT 8" -.TH OVDB_INIT 8 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH OVDB_INIT 8 "2009-05-21" "INN 2.5.1" "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" ovdb_init \- Prepare ovdb database for use .SH "SYNOPSYS" @@ -139,25 +138,20 @@ ovdb_init [\f(CW\*(C`\-u\*(C'\fR|\f(CW\* .IX Header "DESCRIPTION" This command must be run before any other process can access the overview database. It performs the following steps: -.IP "1" 4 -.IX Item "1" +.IP "1." 4 Creates the database environment, if necessary -.IP "2" 4 -.IX Item "2" +.IP "2." 4 If the database is idle (and if the \f(CW\*(C`\-u\*(C'\fR option is not specified), it performs a normal recovery. The recovery will remove stale locks, recreate the memory pool cache, and repair any damage caused by a system crash or improper shutdown. -.IP "3" 4 -.IX Item "3" +.IP "3." 4 If the \f(CW\*(C`\-u\*(C'\fR option is specified, it performs any necessary upgrades to the database. See the \s-1UPGRADING\s0 section below. -.IP "4" 4 -.IX Item "4" +.IP "4." 4 Starts the \s-1DB\s0 housekeeping processes (ovdb_monitor) if they're not already running. (Unless the \f(CW\*(C`\-r\*(C'\fR option is specified). -.IP "5" 4 -.IX Item "5" +.IP "5." 4 Starts the ovdb readserver (ovdb_server) processes if \fIreadserver\fR in \fIovdb.conf\fR is true, and if they are not already running. (Unless the \f(CW\*(C`\-r\*(C'\fR option is specified). @@ -193,7 +187,7 @@ method is used. .IP "\(bu" 4 You upgrade ovdb to a newer major version; i.e., ovdb\-1.0 to ovdb\-2.0. .PP -In both of these cases, the database is upgraded in\-place; and the +In both of these cases, the database is upgraded in-place; and the upgrade can not be undone. Do not interrupt the upgrade process once it has started, because there is a risk of irrepairable corruption. The upgrade may take several minutes to complete. @@ -201,28 +195,21 @@ If an upgrade does get interrupted, try .PP Here's an example procedure to upgrade a database created with Berkeley\ \s-1DB\s0\ 2.7.7 to use Berkeley\ \s-1DB\s0\ 3.1.17: -.IP "1" 4 -.IX Item "1" +.IP "1." 4 Build and install the Berkeley\ \s-1DB\s0\ 3.1.17; -.IP "2" 4 -.IX Item "2" +.IP "2." 4 Run configure in the \s-1INN\s0 source tree and make sure it picks up the right Berkeley\ \s-1DB\s0 directory (e.g., \fI/usr/local/BerkeleyDB.3.1\fR); -.IP "3" 4 -.IX Item "3" +.IP "3." 4 Do a \f(CW\*(C`make\*(C'\fR; -.IP "4" 4 -.IX Item "4" +.IP "4." 4 Shut down \s-1INN\s0 (e.g., with \f(CW\*(C`rc.news stop\*(C'\fR) and be sure to kill all instances of \fBnnrpd\fR as well; -.IP "5" 4 -.IX Item "5" +.IP "5." 4 Do a \f(CW\*(C`make update\*(C'\fR to install the new binaries; -.IP "6" 4 -.IX Item "6" +.IP "6." 4 Run \f(CW\*(C`ovdb_init \-u\*(C'\fR as the news user; -.IP "7" 4 -.IX Item "7" +.IP "7." 4 Start \s-1INN\s0 with \f(CW\*(C`rc.news\*(C'\fR. .PP It is \s-1OK\s0 to specify \f(CW\*(C`\-u\*(C'\fR even if no upgrades are needed. @@ -230,7 +217,7 @@ It is \s-1OK\s0 to specify \f(CW\*(C`\-u .IX Header "HISTORY" Written by Heath Kehoe for InterNetNews. .PP -$Id: ovdb_init.pod 7851 2008\-05\-26 19:33:08Z iulius $ +\&\f(CW$Id:\fR ovdb_init.pod 7851 2008\-05\-26 19:33:08Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIovdb\fR\|(5), \fImakehistory\fR\|(8) diff -Nurp inn-2.5.0/doc/man/ovdb_monitor.8 inn-2.5.1/doc/man/ovdb_monitor.8 --- inn-2.5.0/doc/man/ovdb_monitor.8 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/ovdb_monitor.8 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "OVDB_MONITOR 8" -.TH OVDB_MONITOR 8 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH OVDB_MONITOR 8 "2009-05-21" "INN 2.5.1" "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" ovdb_monitor \- Database maintenance .SH "SYNOPSYS" @@ -151,7 +150,7 @@ down the three children and wait for the .IX Header "HISTORY" Written by Heath Kehoe for InterNetNews. .PP -$Id: ovdb_monitor.pod 7851 2008\-05\-26 19:33:08Z iulius $ +\&\f(CW$Id:\fR ovdb_monitor.pod 7851 2008\-05\-26 19:33:08Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIovdb\fR\|(5), \fIovdb_init\fR\|(8) diff -Nurp inn-2.5.0/doc/man/ovdb_server.8 inn-2.5.1/doc/man/ovdb_server.8 --- inn-2.5.0/doc/man/ovdb_server.8 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/ovdb_server.8 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "OVDB_SERVER 8" -.TH OVDB_SERVER 8 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH OVDB_SERVER 8 "2009-05-21" "INN 2.5.1" "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" ovdb_server \- overview 'helper' server .SH "SYNOPSYS" @@ -150,7 +149,7 @@ down its children and wait for their exi .IX Header "HISTORY" Written by Heath Kehoe for InterNetNews. .PP -$Id: ovdb_server.pod 7851 2008\-05\-26 19:33:08Z iulius $ +\&\f(CW$Id:\fR ovdb_server.pod 7851 2008\-05\-26 19:33:08Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIovdb\fR\|(5), \fIovdb_init\fR\|(8) diff -Nurp inn-2.5.0/doc/man/ovdb_stat.8 inn-2.5.1/doc/man/ovdb_stat.8 --- inn-2.5.0/doc/man/ovdb_stat.8 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/ovdb_stat.8 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "OVDB_STAT 8" -.TH OVDB_STAT 8 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH OVDB_STAT 8 "2009-05-21" "INN 2.5.1" "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" ovdb_stat \- Display information from the ovdb database .SH "SYNOPSYS" @@ -201,7 +200,7 @@ because it may leave stale locks in the .IX Header "HISTORY" Written by Heath Kehoe for InterNetNews. .PP -$Id: ovdb_stat.pod 7851 2008\-05\-26 19:33:08Z iulius $ +\&\f(CW$Id:\fR ovdb_stat.pod 7851 2008\-05\-26 19:33:08Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIovdb\fR\|(5) diff -Nurp inn-2.5.0/doc/man/overchan.8 inn-2.5.1/doc/man/overchan.8 --- inn-2.5.0/doc/man/overchan.8 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/overchan.8 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "OVERCHAN 8" -.TH OVERCHAN 8 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH OVERCHAN 8 "2009-05-21" "INN 2.5.1" "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" overchan \- Batch update the INN overview database .SH "SYNOPSIS" @@ -175,7 +174,7 @@ Written by Rob Robertson for InterNetNews. Man page rewritten in \s-1POD\s0 by Russ Allbery . .PP -$Id: overchan.pod 7851 2008\-05\-26 19:33:08Z iulius $ +\&\f(CW$Id:\fR overchan.pod 7851 2008\-05\-26 19:33:08Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIinn.conf\fR\|(5), \fIinnd\fR\|(8), \fInewsfeeds\fR\|(5) diff -Nurp inn-2.5.0/doc/man/passwd.nntp.5 inn-2.5.1/doc/man/passwd.nntp.5 --- inn-2.5.0/doc/man/passwd.nntp.5 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/passwd.nntp.5 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "PASSWD.NNTP 5" -.TH PASSWD.NNTP 5 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH PASSWD.NNTP 5 "2009-05-21" "INN 2.5.1" "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" passwd.nntp \- passwords for connecting to remote NNTP servers .SH "DESCRIPTION" @@ -164,17 +163,17 @@ are described in \s-1RFC\s0\ 4643.) For example: .PP .Vb 3 -\& ## UUNET needs a password, MIT doesn't. +\& ## UUNET needs a password, MIT doesn\*(Aqt. \& mit.edu:bbn::authinfo \& uunet.uu.net:bbn:yoyoma:authinfo .Ve .PP -This file should not be world\-readable. +This file should not be world-readable. .SH "HISTORY" .IX Header "HISTORY" Written by Rich \f(CW$alz\fR for InterNetNews. .PP -$Id: passwd.nntp.pod 8466 2009\-05\-16 12:19:06Z iulius $ +\&\f(CW$Id:\fR passwd.nntp.pod 8466 2009\-05\-16 12:19:06Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIinn.conf\fR\|(5), \fIinnd\fR\|(8), \fIlibinn\fR\|(3). diff -Nurp inn-2.5.0/doc/man/perl-nocem.8 inn-2.5.1/doc/man/perl-nocem.8 --- inn-2.5.0/doc/man/perl-nocem.8 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/perl-nocem.8 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "PERL-NOCEM 8" -.TH PERL-NOCEM 8 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH PERL-NOCEM 8 "2009-08-16" "INN 2.5.1" "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" perl\-nocem \- A NoCeM\-on\-spool implementation for INN\ 2.x .SH "SYNOPSIS" @@ -145,7 +144,7 @@ also be used by readers as a \fIthird-pa intended to eventually replace the protocol for third-party cancel messages. .PP -\&\fBperl-nocem\fR processes third\-party, PGP-signed article cancellation +\&\fBperl-nocem\fR processes third-party, PGP-signed article cancellation notices. It is possible not to honour all NoCeM notices but only those which are sent by people whom you trust (that is to say if you trust the \s-1PGP\s0 key they use to sign their NoCeM notices). Indeed, it is up @@ -162,10 +161,11 @@ the authenticity of their notices. You .Ve .Sp where is the value of the \fIpathetc\fR parameter set in \fIinn.conf\fR -and the file containing the key(s) to import. The keyring -must be located in \fIpathetc\fR/pgp/ncmring.gpg (create the directory -before using \fBgpg\fR). For old PGP-generated keys, you may have to use -\&\fB\-\-allow\-non\-selfsigned\-uid\fR if they are not properly self\-signed, +and the file containing the key(s) to import. The keyring must +be located in /pgp/ncmring.gpg; you only have to create the directory +/pgp before using \fBgpg\fR (it will automatically generate the +\&\fIncmring.gpg\fR file). For old PGP-generated keys, you may have to use +\&\fB\-\-allow\-non\-selfsigned\-uid\fR if they are not properly self-signed, but anyone creating a key really should self-sign the key. Current \&\s-1PGP\s0 implementations do this automatically. .Sp @@ -176,10 +176,9 @@ download there a unique file which conta 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 -.Vb 3 -\& annihilator\-1:* -\& clewis@ferret.ocunix:mmf -\& stephane@asynchrone:mmf,openproxy,spam +.Vb 2 +\& bleachbot@httrack.com:spam,site +\& pgpmoose@killfile.org:pgpmoose\-forged\-moderation .Ve .Sp This will remove all articles for which the issuer (first part of the line, @@ -200,7 +199,7 @@ news.lists.filters: .Ve .Sp with the correct path to \fBperl-nocem\fR, located in . Then, reload -the \fInewsfeeds\fR file (\f(CW\*(C`ctlinnd reload newsfeeds 'NoCeM channel feed'\*(C'\fR). +the \fInewsfeeds\fR file (\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 @@ -210,12 +209,12 @@ Everything should now work. However, do \&\fBperl-nocem\fR with a NoCeM notice, using: .Sp .Vb 1 -\& grephistory '' | perl\-nocem +\& grephistory \*(Aq\*(Aq | perl\-nocem .Ve .Sp Indeed, \fBperl-nocem\fR expects tokens on its standard input, and \&\fBgrephistory\fR can easily give it the token of a known article, -thanks to its Message\-ID. +thanks to its Message-ID. .PP When you have verified that everything works, you can eventually turn off regular spam cancels, if you want, not processing any longer @@ -247,7 +246,7 @@ Copyright 2000 by Miquel van Smoorenburg .PP Copyright 2001 by Marco d'Itri . .PP -$Id: perl\-nocem.in 8419 2009\-04\-13 09:10:38Z iulius $ +\&\f(CW$Id:\fR perl\-nocem.in 8539 2009\-06\-28 10:01:24Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIgpgv\fR\|(1), \fIgrephistory\fR\|(1), \fIinn.conf\fR\|(5), \fInewsfeeds\fR\|(5), \fIpgp\fR\|(1). diff -Nurp inn-2.5.0/doc/man/pgpverify.1 inn-2.5.1/doc/man/pgpverify.1 --- inn-2.5.0/doc/man/pgpverify.1 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/pgpverify.1 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "PGPVERIFY 1" -.TH PGPVERIFY 1 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH PGPVERIFY 1 "2009-05-21" "INN 2.5.1" "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" pgpverify \- Cryptographically verify Usenet control messages .SH "SYNOPSIS" @@ -175,8 +174,7 @@ analysis of the message. .SH "EXIT STATUS" .IX Header "EXIT STATUS" \&\fBpgpverify\fR may exit with the following statuses: -.IP "0\&" 4 -.IX Item "0" +.IP "0" 4 The control message had a good \s-1PGP\s0 signature. .IP "1" 4 .IX Item "1" diff -Nurp inn-2.5.0/doc/man/prunehistory.8 inn-2.5.1/doc/man/prunehistory.8 --- inn-2.5.0/doc/man/prunehistory.8 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/prunehistory.8 2009-10-12 11:24:04.000000000 -0700 @@ -1,67 +1,176 @@ -.\" $Revision: 5909 $ -.TH PRUNEHISTORY 8 -.SH NAME -prunehistory \- remove tokens from Usenet history file -.SH SYNOPSIS -.B prunehistory -[ -.BI \-f " filename" -] -[ -.B \-p -] -.SH DESCRIPTION -.I Prunehistory -modifies a -.IR history (5)-format -text file to ``remove'' a set of tokens from it. -The tokens are removed by overwriting them with spaces, so that the -size and position of any following entries 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 -.I Prunehistory -reads the standard input. -The input is taken as a set of lines. -Blank lines and lines starting with a number sign (``#'') are ignored. -All other lines are should consist of a Message-ID followed by zero or -more other fields (which are ignored). +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) +.\" +.\" 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" '' +'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 turned on, 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. +.ie \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. nr % 0 +. rr F +.\} +.el \{\ +. de IX +.. +.\} +.\" +.\" 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 "PRUNEHISTORY 8" +.TH PRUNEHISTORY 8 "2009-09-11" "INN 2.5.1" "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" +prunehistory \- Remove tokens from Usenet history file +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +\&\fBprunehistory\fR [\fB\-p\fR] [\fB\-f\fR \fIfilename\fR] +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +\&\fBprunehistory\fR modifies a \fIhistory\fR\|(5)\-format text file to \*(L"remove\*(R" +a set of tokens from it. The tokens are removed by overwriting +them with spaces, so that the size and position of any following entries +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 -The Message-ID is used as the -.IR dbz (3) -key to get an offset into the text file. +\&\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\|(3) 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" +.IX Header "OPTIONS" +.IP "\fB\-p\fR" 4 +.IX Item "-p" +\&\fBprunehistory\fR will normally complain about lines that do not follow +the correct format. If the \fB\-p\fR flag is used, then the program will +silently print any invalid lines on its standard output. (Blank lines +and comment lines are also passed through.) +.Sp +This can be useful when \fBprunehistory\fR is used as a filter for other +programs such as \fBreap\fR (a legacy program, probably no longer useful +with current versions of \s-1INN\s0, but still available at +). +.IP "\fB\-f\fR \fIfilename\fR" 4 +.IX Item "-f filename" +The default name of the \fIhistory\fR file is \fIpathdb\fR/history; to specify +a different name, use the \fB\-f\fR flag. +.SH "HISTORY" +.IX Header "HISTORY" +Written by Rich \f(CW$alz\fR for InterNetNews. Converted to +\&\s-1POD\s0 by Julien Elie. .PP -Since -.IR innd (8) -only appends -to the text file, -.I prunehistory -does not need to have any interaction with it. -.SH OPTIONS -.TP -.B \-p -.I Prunehistory -will normally complain about lines that do not follow the correct format. -If the ``\-p'' flag is used, then the program will silently print any -invalid lines on its standard output. -(Blank lines and comment lines are also passed through.) -This can be useful when -.I prunehistory -is used as a filter for other programs such as -.IR reap . -.TP -.BI \-f " filename" -The default name of the history file is -.IR /history ; -to specify a different name, use the ``\-f'' flag. -.SH HISTORY -Written by Rich $alz for InterNetNews. -.de R$ -This is revision \\$3, dated \\$4. -.. -.R$ $Id: prunehistory.8 5909 2002-12-03 05:17:18Z vinocur $ +\&\f(CW$Id:\fR prunehistory.pod 8592 2009\-08\-20 23:46:25Z eagle $ .SH "SEE ALSO" -dbz(3), -history(5), -inn.conf(5), -innd(8). +.IX Header "SEE ALSO" +\&\fIdbz\fR\|(3), \fIhistory\fR\|(5), \fIinnd\fR\|(8). diff -Nurp inn-2.5.0/doc/man/pullnews.1 inn-2.5.1/doc/man/pullnews.1 --- inn-2.5.0/doc/man/pullnews.1 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/pullnews.1 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "PULLNEWS 1" -.TH PULLNEWS 1 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH PULLNEWS 1 "2009-05-21" "INN 2.5.1" "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" pullnews \- Pull news from multiple news servers and feed it to another .SH "SYNOPSIS" @@ -208,7 +207,7 @@ configuration file (see also \fB\-g\fR a Print a usage message and exit. .IP "\fB\-H\fR \fIheaders\fR" 4 .IX Item "-H headers" -Remove these named headers (colon\-separated list) from fed articles. +Remove these named headers (colon-separated list) from fed articles. .IP "\fB\-k\fR \fIcheckpt\fR" 4 .IX Item "-k checkpt" Checkpoint (save) the config file every \fIcheckpt\fR articles @@ -359,7 +358,8 @@ the username \f(CW\*(C`pull\*(C'\fR and .IX Item "pathbin/pullnews" The Perl script itself used to pull news from upstream servers and feed it to another news server. -.IP "\fI$HOME\fR/.pullnews" 4 +.ie n .IP "\fI\fI$HOME\fI\fR/.pullnews" 4 +.el .IP "\fI\f(CI$HOME\fI\fR/.pullnews" 4 .IX Item "$HOME/.pullnews" The default config file. It is in the running user's home directory (normally called \fI~/.pullnews\fR). @@ -372,7 +372,7 @@ Geraint A.\ Edwards greatly improved \fB recognized flags, fixing some bugs and integrating the \fBbackupfeed\fR contrib script by Kai Henningsen, adding again 6\ other flags. .PP -$Id: pullnews.pod 8468 2009\-05\-16 12:28:24Z iulius $ +\&\f(CW$Id:\fR pullnews.pod 8468 2009\-05\-16 12:28:24Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIincoming.conf\fR\|(5), \fIrnews\fR\|(1). diff -Nurp inn-2.5.0/doc/man/qio.3 inn-2.5.1/doc/man/qio.3 --- inn-2.5.0/doc/man/qio.3 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/qio.3 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "qio 3" -.TH qio 3 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH qio 3 "2009-08-16" "INN 2.5.1" "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" @@ -212,15 +211,13 @@ users of this library should in general .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 preceeded by its offset in the file. +printing out each line preceded by its offset in the file. .PP .Vb 3 \& QIOSTATE *qp; \& off_t offset; \& char *p; -.Ve -.PP -.Vb 12 +\& \& qp = QIOopen("/etc/motd"); \& if (qp == NULL) { \& perror("Open error"); @@ -239,4 +236,4 @@ printing out each line preceeded by its Written by Rich \f(CW$alz\fR for InterNetNews. Updated by Russ Allbery . .PP -$Id: qio.pod 7851 2008\-05\-26 19:33:08Z iulius $ +\&\f(CW$Id:\fR qio.pod 8517 2009\-06\-17 17:49:36Z iulius $ diff -Nurp inn-2.5.0/doc/man/radius.8 inn-2.5.1/doc/man/radius.8 --- inn-2.5.0/doc/man/radius.8 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/radius.8 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "RADIUS 8" -.TH RADIUS 8 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH RADIUS 8 "2009-05-21" "INN 2.5.1" "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" radius \- nnrpd RADIUS password authenticator .SH "SYNOPSIS" @@ -188,7 +187,7 @@ implement it correctly. The \s-1RADIUS\s0 authenticator was originally written by Aidan Cully. This documentation was written by Russ Allbery . .PP -$Id: radius.pod 7664 2007\-09\-02 12:58:07Z iulius $ +\&\f(CW$Id:\fR radius.pod 7664 2007\-09\-02 12:58:07Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fInnrpd\fR\|(8), \fIradius.conf\fR\|(5), \fIreaders.conf\fR\|(5) diff -Nurp inn-2.5.0/doc/man/radius.conf.5 inn-2.5.1/doc/man/radius.conf.5 --- inn-2.5.0/doc/man/radius.conf.5 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/radius.conf.5 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "RADIUS.CONF 5" -.TH RADIUS.CONF 5 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH RADIUS.CONF 5 "2009-05-21" "INN 2.5.1" "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" radius.conf \- Configuration for nnrpd RADIUS authenticator .SH "DESCRIPTION" @@ -220,7 +219,7 @@ The shared secret with the \s-1RADIUS\s0 This documentation was written by Russ Allbery based on the comments in the sample \fIradius.conf\fR file by Yury B.\ Razbegin. .PP -$Id: radius.conf.pod 8200 2008\-11\-30 13:31:30Z iulius $ +\&\f(CW$Id:\fR radius.conf.pod 8200 2008\-11\-30 13:31:30Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIradius\fR\|(1) diff -Nurp inn-2.5.0/doc/man/rc.news.8 inn-2.5.1/doc/man/rc.news.8 --- inn-2.5.0/doc/man/rc.news.8 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/rc.news.8 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "RC.NEWS 8" -.TH RC.NEWS 8 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH RC.NEWS 8 "2009-08-16" "INN 2.5.1" "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" rc.news \- Start or stop INN daemons .SH "SYNOPSIS" @@ -140,7 +139,7 @@ rc.news \- Start or stop INN daemons \&\fBrc.news\fR can be used to start or stop \fBinnd\fR and supporting programs. It checks to make sure \s-1INN\s0 is not already running, handles cases of unclean shutdown, finishes up tasks which might have been interrupted by -the preceeding shutdown, e\-mails certain boot-time warnings to +the preceding shutdown, e\-mails certain boot-time warnings to \&\fInewsmaster\fR (as set in \fIinn.conf\fR), and is generally safer and easier than starting and stopping everything directly. It needs to be run as the news user so that files in \fIpathrun\fR are created with the right ownership @@ -189,7 +188,7 @@ To stop \s-1INN\s0 (throttling first): .PP .Vb 2 \& /ctlinnd throttle reason -\& su \- news \-c '/rc.news stop' +\& su \- news \-c \*(Aq/rc.news stop\*(Aq .Ve .SH "BUGS" .IX Header "BUGS" @@ -203,7 +202,7 @@ user \s-1ID\s0. This manual page written by Jeffrey M.\ Vinocur for InterNetNews. .PP -$Id: rc.news.pod 8200 2008\-11\-30 13:31:30Z iulius $ +\&\f(CW$Id:\fR rc.news.pod 8517 2009\-06\-17 17:49:36Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIctlinnd\fR\|(8), \fIcnfsstat\fR\|(8), \fIinn.conf\fR\|(5), \fIinnwatch\fR\|(8), \fIovdb\fR\|(5). diff -Nurp inn-2.5.0/doc/man/readers.conf.5 inn-2.5.1/doc/man/readers.conf.5 --- inn-2.5.0/doc/man/readers.conf.5 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/readers.conf.5 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "READERS.CONF 5" -.TH READERS.CONF 5 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH READERS.CONF 5 "2009-05-21" "INN 2.5.1" "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 "DESCRIPTION" @@ -220,7 +219,7 @@ Examining that output can be very helpfu configuration doesn't do what you expect it to.) .PP A given auth group applies only to hosts whose name or \s-1IP\s0 address matches -the wildmat expression given with the hosts: parameter (comma\-separated +the wildmat expression given with the hosts: parameter (comma-separated wildmat expressions allowed, but \f(CW\*(C`@\*(C'\fR is not supported). Rather than wildmat expressions, you may also use \s-1CIDR\s0 notation to match any \s-1IP\s0 address in a netblock; for example, \*(L"10.10.10.0/24\*(R" will match any \s-1IP\s0 @@ -237,7 +236,7 @@ block; they are run in sequence until on determine the identity of the user just from the connection information. If all the resolvers fail, or if the res: parameter isn't present, the user is assigned an identity of \*(L"@\*(R"; in other words, -the values of the default: and default\-domain: parameters are used. If +the values of the default: and default-domain: parameters are used. If only returns a username, is used as the domain. .PP @@ -305,9 +304,7 @@ This is done with the key: parameter. F \& hosts: *.example.com \& default: \& } -.Ve -.PP -.Vb 5 +\& \& access example { \& key: special \& users: @@ -324,7 +321,7 @@ authenticated with an auth group contain mechanism normally isn't useful; there is almost always a better way to achieve the same result. .PP -Also note in the example that there's no default\-domain: parameter, which +Also note in the example that there's no default-domain: parameter, which means that no domain is appended to the default username and the identity for such connections is just \*(L"<\s-1SPECIAL\s0>\*(R". Note that some additional add-ons to \s-1INN\s0 may prefer that authenticated identities always return a @@ -421,10 +418,10 @@ found in \fIdoc/hook\-python\fR. The default username for connections matching this auth group. This is the username assigned to the user at connection time if all resolvers fail or if there are no res: parameters. Note that it can be either a bare -username, in which case default\-domain: (if present) is appended after +username, in which case default-domain: (if present) is appended after an \f(CW\*(C`@\*(C'\fR, or a full identity string containing an \f(CW\*(C`@\*(C'\fR, in which case it will be used verbatim. -.IP "\fBdefault\-domain:\fR" 4 +.IP "\fBdefault-domain:\fR" 4 .IX Item "default-domain:" The default domain string for this auth group. If a user resolver or authenticator doesn't provide a domain, or if the default username is used @@ -607,7 +604,7 @@ in the relevant access group in \fIreade than is set in \fIinn.conf\fR. All articles displayed to clients will then have their Path: and Xref: headers altered to appear to be from the server named in pathhost: or domain: (whichever is set), and posted articles will -use that server name in the Path:, Message\-ID:, and X\-Trace: headers. +use that server name in the Path:, Message-ID:, and X\-Trace: headers. .Sp Note that setting this parameter requires the server modify all posts before presenting them to the client and therefore may decrease @@ -677,9 +674,7 @@ elsewhere: \& hosts: "*.example.com, example.com" \& default: \& } -.Ve -.PP -.Vb 3 +\& \& access full { \& newsgroups: * \& } @@ -699,9 +694,7 @@ auth and access group: \& hosts: "*.lab.example.com" \& default: \& } -.Ve -.PP -.Vb 4 +\& \& access lab { \& users: \& read: * @@ -723,9 +716,7 @@ usernames and passwords, and then agains \& auth: "ckpasswd \-d /newsusers" \& auth: "ckpasswd \-s" \& } -.Ve -.PP -.Vb 4 +\& \& access full { \& users: * \& newsgroups: * @@ -759,7 +750,7 @@ line needs to be first, with the \*(L"us .PP Here's an example of another common case: a server that only allows connections from a local domain and has an additional hierarchy that's -password\-restricted. +password-restricted. .PP .Vb 5 \& auth "example.com" { @@ -767,15 +758,11 @@ password\-restricted. \& auth: "ckpasswd \-d /newsusers" \& default: "anonymous" \& } -.Ve -.PP -.Vb 3 +\& \& access regular { \& newsgroups: "*,!example.restricted.*" \& } -.Ve -.PP -.Vb 4 +\& \& access full { \& users: "*,!anonymous" \& newsgroups: * @@ -811,9 +798,7 @@ cannot. \& default: \& default\-domain: example.com \& } -.Ve -.PP -.Vb 7 +\& \& auth shell { \& hosts: *.shell.example.com \& res: ident @@ -821,48 +806,36 @@ cannot. \& default: \& default\-domain: shell.example.com \& } -.Ve -.PP -.Vb 6 +\& \& auth dialup { \& hosts: *.dialup.example.com \& auth: radius \& default: \& default\-domain: dialup.example.com \& } -.Ve -.PP -.Vb 5 +\& \& access shell { \& users: *@shell.example.com \& read: * \& post: "*, !example.admin.*" \& } -.Ve -.PP -.Vb 5 +\& \& access dialup { \& users: *@dialup.example.com \& newsgroups: *,!example.* \& nnrpdauthsender: true \& } -.Ve -.PP -.Vb 4 +\& \& access other { \& users: "*@example.com, !@example.com" \& newsgroups: *,!example.* \& } -.Ve -.PP -.Vb 4 +\& \& access fail { \& users: "@*" \& newsgroups: !* \& } -.Ve -.PP -.Vb 6 +\& \& access admin { \& users: "joe@*,jane@*" \& newsgroups: * @@ -902,9 +875,7 @@ server for a particular hierarchy. \& hosts: * \& default: \& } -.Ve -.PP -.Vb 4 +\& \& access default { \& users: \& newsgroups: example.* @@ -947,7 +918,7 @@ some auth groups with a restrictive host above, with ones having global applicability below. .IP "\(bu" 4 Consider running \fBnnrpd\fR with the \fB\-S\fR flag (either also with \fB\-D\fR, -or out of \*(L"super\-server\*(R" like \fBinetd\fR) on the \s-1NNTPS\s0 port (563) for +or out of \*(L"super-server\*(R" like \fBinetd\fR) on the \s-1NNTPS\s0 port (563) for clients that support \s-1TLS/SSL\s0. See \fInnrpd\fR\|(8) for more details about how to configure that. You can use the \fIrequire_ssl\fR parameter or the \&\fB\-c\fR flag to specify an alternate \fIreaders.conf\fR file if you want @@ -961,7 +932,7 @@ tunnel), use the localaddress: parameter Written by Aidan Cully for InterNetNews. Substantially expanded by Russ Allbery . .PP -$Id: readers.conf.pod 8479 2009\-05\-18 20:01:37Z iulius $ +\&\f(CW$Id:\fR readers.conf.pod 8479 2009\-05\-18 20:01:37Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIauth_krb5\fR\|(8), \fIckpasswd\fR\|(8), \fIinn.conf\fR\|(5), \fIinnd\fR\|(8), \fInewsfeeds\fR\|(5), diff -Nurp inn-2.5.0/doc/man/rnews.1 inn-2.5.1/doc/man/rnews.1 --- inn-2.5.0/doc/man/rnews.1 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/rnews.1 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "RNEWS 1" -.TH RNEWS 1 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH RNEWS 1 "2009-08-16" "INN 2.5.1" "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" rnews \- Inject individual articles and UUCP batches into INN .SH "SYNOPSIS" @@ -182,7 +181,7 @@ is more widely available, due to old pat .PP Otherwise, if the command is any other word, then \fBrnews\fR will try to execute a program with that name, looking for it in the directory -\&\fIpathbin\fR/bin/rnews.libexec. The rest of the batch will be fed to that +\&\fIpathbin\fR/rnews.libexec. The rest of the batch will be fed to that program's standard input, and the standard output from the program will be treated as if it were the original input to \fBrnews\fR. \s-1INN\s0 comes with three such standard batch processors: @@ -212,7 +211,7 @@ conjunction with a \s-1UUCP\s0 feed to g that feed. This will also be done if the environment variable \s-1UU_MACHINE\s0 is set, but will only be done if \fIhost\fR is not an empty string. (You can therefore turn off logging even if \s-1UU_MACHINE\s0 will be set by passing the -flag \f(CW\*(C`\-h ''\*(C'\fR to \fBrnews\fR.) +flag \f(CW\*(C`\-h \*(Aq\*(Aq\*(C'\fR to \fBrnews\fR.) .IP "\fB\-N\fR" 4 .IX Item "-N" Normally, if unpacking the input batch fails, it is re-spooled to @@ -248,7 +247,7 @@ them. (Neither can the rest of \s-1INN\ Written by Rich \f(CW$alz\fR for InterNetNews. Rewritten in \&\s-1POD\s0 by Russ Allbery . .PP -$Id: rnews.pod 7851 2008\-05\-26 19:33:08Z iulius $ +\&\f(CW$Id:\fR rnews.pod 8537 2009\-06\-28 08:48:31Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIbzip2\fR\|(1), \fIcompress\fR\|(1), \fIgzip\fR\|(1), \fIinn.conf\fR\|(5), \fIinnd\fR\|(8), \fInnrpd\fR\|(8). diff -Nurp inn-2.5.0/doc/man/scanlogs.8 inn-2.5.1/doc/man/scanlogs.8 --- inn-2.5.0/doc/man/scanlogs.8 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/scanlogs.8 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "SCANLOGS 8" -.TH SCANLOGS 8 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH SCANLOGS 8 "2009-05-21" "INN 2.5.1" "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" scanlogs \- Summarize and rotate INN log files .SH "SYNOPSIS" @@ -156,7 +155,7 @@ It invokes \fBtally.control\fR if \fInew in \fIpathlog\fR (see the \fIcontrol.log\fR entry of \fInewslog\fR\|(5) for more information about that). .PP -\&\fBscanlogs\fR displays the contents of \fIerrlog\fR and \fInews.crit\fR, if non\-empty, +\&\fBscanlogs\fR displays the contents of \fIerrlog\fR and \fInews.crit\fR, if non-empty, and runs \fBinnreport\fR to summarize the contents of \fInews\fR and \fInews.notice\fR, and to update the \fIunwanted.log\fR file amongst other things (see more information about that in \fIinnreport\fR\|(8)). @@ -177,7 +176,7 @@ See \fInewslog\fR\|(5) for the list of l Written by Landon Curt Noll and Rich \f(CW$alz\fR for InterNetNews. Converted to \s-1POD\s0 by Julien Elie. .PP -$Id: scanlogs.pod 8357 2009\-02\-27 17:56:00Z iulius $ +\&\f(CW$Id:\fR scanlogs.pod 8357 2009\-02\-27 17:56:00Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIinn.conf\fR\|(5), \fIinnreport\fR\|(8), \fInews.daily\fR\|(8), \fInewslog\fR\|(5), \fIshlock\fR\|(1), diff -Nurp inn-2.5.0/doc/man/send-uucp.8 inn-2.5.1/doc/man/send-uucp.8 --- inn-2.5.0/doc/man/send-uucp.8 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/send-uucp.8 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "SEND-UUCP 8" -.TH SEND-UUCP 8 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH SEND-UUCP 8 "2009-08-16" "INN 2.5.1" "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\-uucp \- Send Usenet articles via UUCP .SH "SYNOPSIS" @@ -180,7 +179,7 @@ flushing the site. The compression method to use for batches. This should be one of \f(CW\*(C`bzip2\*(C'\fR, \&\f(CW\*(C`compress\*(C'\fR, \f(CW\*(C`gzip\*(C'\fR or \f(CW\*(C`none\*(C'\fR. Arguments for the compression command may be specified by using \f(CW\*(C`_\*(C'\fR instead of spaces. For example, \f(CW\*(C`gzip_\-9\*(C'\fR. -The default value is \f(CW\*(C`compress\*(C'\fR. +The default value is \f(CW\*(C`gzip\*(C'\fR. .IP "\fImaxsize\fR" 4 .IX Item "maxsize" The maximum size in bytes of a single batch \fIbefore\fR compression. The default @@ -210,21 +209,22 @@ Here is an example for the \fIsend\-uucp \& pern::MYFUNNEL! .Ve .PP -This defines eight \s-1UUCP\s0 sites. The first three use \f(CW\*(C`gzip\*(C'\fR compression, the -following site uses \f(CW\*(C`bzip2\*(C'\fR and the last three use \f(CW\*(C`compress\*(C'\fR. The first -six use a batch size of 1\ \s-1MB\s0, and the last site (\f(CW\*(C`able\*(C'\fR) uses the default of +This defines eight \s-1UUCP\s0 sites. The first three and the last two use \f(CW\*(C`gzip\*(C'\fR +compression, the fourth site (\f(CW\*(C`drinkel\*(C'\fR) uses \f(CW\*(C`bzip2\*(C'\fR and the remaining sites +(\f(CW\*(C`manhole\*(C'\fR and \f(CW\*(C`owl\*(C'\fR) use \f(CW\*(C`compress\*(C'\fR. The first six use a batch size of +1\ \s-1MB\s0, and the two last sites (\f(CW\*(C`able\*(C'\fR and \f(CW\*(C`pern\*(C'\fR) use the default of 500,000 bytes. The \f(CW\*(C`zoetermeer\*(C'\fR, \f(CW\*(C`hoofddorp\*(C'\fR, \f(CW\*(C`pa3ebv\*(C'\fR, and \f(CW\*(C`manhole\*(C'\fR sites will only have batches generated for them during the hours of 05:00, 18:00, and 22:00, and the \f(CW\*(C`drinkel\*(C'\fR site will only have batches generated during those hours and 06:00, 20:00, 00:00, and 02:00. There are no restrictions on when -batches will be generated for \f(CW\*(C`owl\*(C'\fR or \f(CW\*(C`able\*(C'\fR. +batches will be generated for \f(CW\*(C`owl\*(C'\fR, \f(CW\*(C`able\*(C'\fR and \f(CW\*(C`pern\*(C'\fR. .PP The \f(CW\*(C`pern\*(C'\fR site is configured as a funnel into \f(CW\*(C`MYFUNNEL!\*(C'\fR. \fBsend-uucp\fR will issue \f(CW\*(C`ctlinnd flush MYFUNNEL!\*(C'\fR instead of \f(CW\*(C`ctlinnd flush pern\*(C'\fR. .PP As for the \fInewsfeeds\fR file, the usual flags used for a \s-1UUCP\s0 feed are \&\f(CW\*(C`Tf,Wnb\*(C'\fR. Here is a typical entry for \f(CW\*(C`zoetermeer\*(C'\fR, where the batching -is kept between 4\ \s-1KB\s0 and 1\ \s-1KB\s0: +is kept between 4\ \s-1KB\s0 and 1\ \s-1KB:\s0 .PP .Vb 3 \& zoetermeer\e diff -Nurp inn-2.5.0/doc/man/sendinpaths.8 inn-2.5.1/doc/man/sendinpaths.8 --- inn-2.5.0/doc/man/sendinpaths.8 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/sendinpaths.8 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "SENDINPATHS 8" -.TH SENDINPATHS 8 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH SENDINPATHS 8 "2009-05-21" "INN 2.5.1" "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" sendinpaths \- Send Usenet Path: statistics via e\-mail .SH "SYNOPSIS" @@ -160,7 +159,7 @@ delete old dump files. .IX Header "HISTORY" \&\fBsendinpaths\fR was written by Olaf Titz . .PP -$Id: sendinpaths.pod 8148 2008\-10\-25 18:12:55Z iulius $ +\&\f(CW$Id:\fR sendinpaths.pod 8148 2008\-10\-25 18:12:55Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIninpaths\fR\|(8). diff -Nurp inn-2.5.0/doc/man/shlock.1 inn-2.5.1/doc/man/shlock.1 --- inn-2.5.0/doc/man/shlock.1 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/shlock.1 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "SHLOCK 1" -.TH SHLOCK 1 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH SHLOCK 1 "2009-05-21" "INN 2.5.1" "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" shlock \- Create lock files for use in shell scripts .SH "SYNOPSIS" @@ -176,11 +175,11 @@ a shell script: .PP .Vb 7 \& LOCK=/LOCK.send -\& trap 'rm \-f ${LOCK} ; exit 1' 1 2 3 15 +\& trap \*(Aqrm \-f ${LOCK} ; exit 1\*(Aq 1 2 3 15 \& if shlock \-p $$ \-f ${LOCK} ; then \& # Do appropriate work. \& else -\& echo "Locked by `cat ${LOCK}`" +\& echo "Locked by \`cat ${LOCK}\`" \& fi .Ve .SH "HISTORY" @@ -190,4 +189,4 @@ a description of \s-1HDB\s0 \s-1UUCP\s0 improved by Berend Reitsma to solve a race condition. Converted to \s-1POD\s0 by Julien Elie. .PP -$Id: shlock.pod 8357 2009\-02\-27 17:56:00Z iulius $ +\&\f(CW$Id:\fR shlock.pod 8357 2009\-02\-27 17:56:00Z iulius $ diff -Nurp inn-2.5.0/doc/man/simpleftp.1 inn-2.5.1/doc/man/simpleftp.1 --- inn-2.5.0/doc/man/simpleftp.1 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/simpleftp.1 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "SIMPLEFTP 1" -.TH SIMPLEFTP 1 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH SIMPLEFTP 1 "2009-05-21" "INN 2.5.1" "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" simpleftp \- Rudimentary FTP client .SH "SYNOPSIS" @@ -166,7 +165,7 @@ with the same name in the local director Tossed off by David C Lawrence for InterNetNews. Rewritten to use \f(CW\*(C`Net::FTP\*(C'\fR by Julien Elie. .PP -$Id: simpleftp.pod 8357 2009\-02\-27 17:56:00Z iulius $ +\&\f(CW$Id:\fR simpleftp.pod 8357 2009\-02\-27 17:56:00Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIactsync\fR\|(8). diff -Nurp inn-2.5.0/doc/man/sm.1 inn-2.5.1/doc/man/sm.1 --- inn-2.5.0/doc/man/sm.1 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/sm.1 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "SM 1" -.TH SM 1 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH SM 1 "2009-05-21" "INN 2.5.1" "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" sm \- Command\-line interface to the INN storage manager .SH "SYNOPSIS" @@ -218,7 +217,7 @@ succeeded, you should run sm on one toke Written by Katsuhiro Kondou for InterNetNews. Rewritten in \s-1POD\s0 by Russ Allbery . .PP -$Id: sm.pod 6686 2004\-03\-07 08:01:40Z rra $ +\&\f(CW$Id:\fR sm.pod 6686 2004\-03\-07 08:01:40Z rra $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIctlinnd\fR\|(8), \fIgrephistory\fR\|(1), \fIhistory\fR\|(5), \fIrnews\fR\|(1), \fIstorage.conf\fR\|(5). diff -Nurp inn-2.5.0/doc/man/storage.conf.5 inn-2.5.1/doc/man/storage.conf.5 --- inn-2.5.0/doc/man/storage.conf.5 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/storage.conf.5 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "STORAGE.CONF 5" -.TH STORAGE.CONF 5 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH STORAGE.CONF 5 "2009-05-21" "INN 2.5.1" "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" storage.conf \- Configuration file for storage manager .SH "DESCRIPTION" @@ -227,7 +226,7 @@ to \f(CW0\fR. A range of article expiration times which should be stored using this storage method. Be careful; this is less useful than it may appear at first. This is based \fBonly\fR on the Expires: header of the article, not on any local -expiration policies or anything in \fIexpire.ctl\fR! If is non\-zero, +expiration policies or anything in \fIexpire.ctl\fR! If is non-zero, then this entry \fBwill not match\fR any article without an Expires: header. This key is therefore only really useful for assigning articles with requested longer expire times to a separate storage method. Articles only match if the @@ -379,9 +378,9 @@ prior to 2.0 stored all articles, as wel used by C News and earlier news systems. This method does not have self-expire functionality. \s-1EXPENSIVESTAT\s0 is true for this method. .Sp -Advantages: It is widely used and well\-understood; it can read article +Advantages: It is widely used and well-understood; it can read article spools written by older versions of \s-1INN\s0 and it is compatible with all -third-party \s-1INN\s0 add\-ons. This storage mechanism provides easy and direct +third-party \s-1INN\s0 add-ons. This storage mechanism provides easy and direct access to the articles stored on the server and makes writing programs that fiddle with the news spool very easy, and gives fine control over article retention times. @@ -409,7 +408,7 @@ metacycbuff, all other articles in alt.* other articles in any newsgroups in a second timehash class, except for the internal.* hierarchy which is stored in traditional spool format. .PP -.Vb 23 +.Vb 10 \& method tradspool { \& class: 1 \& newsgroups: internal.* @@ -469,7 +468,7 @@ should never expire or through the spool Written by Katsuhiro Kondou for InterNetNews. Rewritten into \s-1POD\s0 by Julien Elie. .PP -$Id: storage.conf.pod 8357 2009\-02\-27 17:56:00Z iulius $ +\&\f(CW$Id:\fR storage.conf.pod 8357 2009\-02\-27 17:56:00Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIcycbuff.conf\fR\|(5), \fIexpire.ctl\fR\|(5), \fIexpireover\fR\|(8), \fIinn.conf\fR\|(5), \fIinnd\fR\|(8), diff -Nurp inn-2.5.0/doc/man/subscriptions.5 inn-2.5.1/doc/man/subscriptions.5 --- inn-2.5.0/doc/man/subscriptions.5 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/subscriptions.5 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "SUBSCRIPTIONS 5" -.TH SUBSCRIPTIONS 5 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH SUBSCRIPTIONS 5 "2009-05-21" "INN 2.5.1" "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" subscriptions \- Default recommended subscriptions .SH "DESCRIPTION" @@ -172,7 +171,7 @@ users group, one might want to list it f .IX Header "HISTORY" Written by Bettina Fink for InterNetNews. .PP -$Id: subscriptions.pod 7851 2008\-05\-26 19:33:08Z iulius $ +\&\f(CW$Id:\fR subscriptions.pod 7851 2008\-05\-26 19:33:08Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fInnrpd\fR\|(8). diff -Nurp inn-2.5.0/doc/man/tally.control.8 inn-2.5.1/doc/man/tally.control.8 --- inn-2.5.0/doc/man/tally.control.8 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/tally.control.8 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "TALLY.CONTROL 8" -.TH TALLY.CONTROL 8 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH TALLY.CONTROL 8 "2009-05-21" "INN 2.5.1" "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" tally.control \- Keep track of newsgroup creations and deletions .SH "SYNOPSIS" @@ -172,7 +171,7 @@ Written by Landon Curt Noll for InterNetNews. Rewritten and converted to \s-1POD\s0 by Julien Elie. .PP -$Id: tally.control.pod 8357 2009\-02\-27 17:56:00Z iulius $ +\&\f(CW$Id:\fR tally.control.pod 8357 2009\-02\-27 17:56:00Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIcontrol.ctl\fR\|(5), \fInews.daily\fR\|(8), \fInewslog\fR\|(5), \fIscanlogs\fR\|(8). diff -Nurp inn-2.5.0/doc/man/tdx-util.8 inn-2.5.1/doc/man/tdx-util.8 --- inn-2.5.0/doc/man/tdx-util.8 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/tdx-util.8 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "TDX-UTIL 8" -.TH TDX-UTIL 8 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH TDX-UTIL 8 "2009-05-21" "INN 2.5.1" "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" tdx\-util \- Tradindexed overview manipulation utility .SH "SYNOPSIS" @@ -354,7 +353,7 @@ using the tradspool article storage meth .IX Header "HISTORY" Written by Russ Allbery for InterNetNews. .PP -$Id: tdx\-util.pod 7851 2008\-05\-26 19:33:08Z iulius $ +\&\f(CW$Id:\fR tdx\-util.pod 7851 2008\-05\-26 19:33:08Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fImakehistory\fR\|(8) diff -Nurp inn-2.5.0/doc/man/tinyleaf.8 inn-2.5.1/doc/man/tinyleaf.8 --- inn-2.5.0/doc/man/tinyleaf.8 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/tinyleaf.8 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "TINYLEAF 8" -.TH TINYLEAF 8 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH TINYLEAF 8 "2009-05-21" "INN 2.5.1" "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" tinyleaf \- Very simple IHAVE\-only NNTP server .SH "SYNOPSIS" @@ -169,8 +168,8 @@ mechanism is to invoke \fBtinyleaf\fR vi \&\fI/etc/hosts.allow\fR and \fI/etc/hosts.deny\fR to restrict who can talk to the server.) .PP -\&\fBtinyleaf\fR has a (currently hard\-coded) maximum message size of 1\ \s-1MB\s0 and a -(similarly hard\-coded) timeout of ten minutes for each command or chunk of +\&\fBtinyleaf\fR has a (currently hard-coded) maximum message size of 1\ \s-1MB\s0 and a +(similarly hard-coded) timeout of ten minutes for each command or chunk of article data. .SH "EXAMPLE" .IX Header "EXAMPLE" @@ -219,7 +218,7 @@ them to the processor when starting up w .IX Header "HISTORY" Written by Russ Allbery for InterNetNews. .PP -$Id: tinyleaf.pod 7665 2007\-09\-03 09:17:40Z iulius $ +\&\f(CW$Id:\fR tinyleaf.pod 7665 2007\-09\-03 09:17:40Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIhosts_access\fR\|(5), \fIinetd\fR\|(8), \fItcpd\fR\|(8). diff -Nurp inn-2.5.0/doc/man/tst.3 inn-2.5.1/doc/man/tst.3 --- inn-2.5.0/doc/man/tst.3 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/tst.3 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "tst 3" -.TH tst 3 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH tst 3 "2009-05-21" "INN 2.5.1" "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" @@ -201,4 +200,4 @@ Converted to \s-1POD\s0 from Peter A.\ F documentation by Alex Kiernan for InterNetNews\ 2.4.0. .PP -$Id: tst.pod 8200 2008\-11\-30 13:31:30Z iulius $ +\&\f(CW$Id:\fR tst.pod 8200 2008\-11\-30 13:31:30Z iulius $ diff -Nurp inn-2.5.0/doc/man/uwildmat.3 inn-2.5.1/doc/man/uwildmat.3 --- inn-2.5.0/doc/man/uwildmat.3 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/man/uwildmat.3 2009-10-12 11:24:04.000000000 -0700 @@ -1,15 +1,7 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 +.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp @@ -48,22 +40,25 @@ . ds R" '' '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 turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" 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. -.if \nF \{\ +.ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na +.el \{\ +. de IX +.. +.\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -129,7 +124,11 @@ .\" ======================================================================== .\" .IX Title "uwildmat 3" -.TH uwildmat 3 "2009-05-21" "INN 2.5.0" "InterNetNews Documentation" +.TH uwildmat 3 "2009-08-16" "INN 2.5.1" "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" @@ -172,12 +171,12 @@ defined in the \fBinn/libinn.h\fR header 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 occurance of that same +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 +.IP "*" 8 Matches any sequence of zero or more characters. .IP "\e" 8 .IX Item "" @@ -236,7 +235,7 @@ is a useful pattern that matches anythin .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. +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 @@ -284,7 +283,7 @@ substantial differences, including the e characters, and has noticable functionality changes. Any bugs present in it aren't Rich's fault. .PP -$Id: uwildmat.pod 7585 2006\-11\-21 09:37:51Z eagle $ +\&\f(CW$Id:\fR uwildmat.pod 8567 2009\-08\-15 07:03:37Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIgrep\fR\|(1), \fIfnmatch\fR\|(3), \fIregex\fR\|(3), \fIregexp\fR\|(3). diff -Nurp inn-2.5.0/doc/pod/Makefile inn-2.5.1/doc/pod/Makefile --- inn-2.5.0/doc/pod/Makefile 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/pod/Makefile 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -## $Id: Makefile 8366 2009-02-28 23:47:51Z iulius $ +## $Id: Makefile 8584 2009-08-20 21:54:07Z 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 @@ -29,14 +29,16 @@ MAN5 = ../man/active.5 ../man/active.tim MAN8 = ../man/actsync.8 ../man/archive.8 ../man/auth_krb5.8 \ ../man/batcher.8 ../man/buffchan.8 \ - ../man/ckpasswd.8 ../man/ctlinnd.8 ../man/docheckgroups.8 \ - ../man/domain.8 \ - ../man/expireover.8 ../man/ident.8 ../man/innd.8 ../man/inndf.8 \ + ../man/ckpasswd.8 ../man/cnfsheadconf.8 ../man/cnfsstat.8 \ + ../man/ctlinnd.8 ../man/docheckgroups.8 \ + ../man/domain.8 ../man/expire.8 ../man/expireover.8 \ + ../man/expirerm.8 ../man/ident.8 ../man/innd.8 ../man/inndf.8 \ ../man/nnrpd.8 ../man/innbind.8 ../man/innupgrade.8 \ - ../man/makehistory.8 ../man/mod-active.8 \ + ../man/makedbz.8 ../man/makehistory.8 ../man/mod-active.8 \ ../man/news.daily.8 ../man/news2mail.8 ../man/ninpaths.8 \ ../man/ovdb_init.8 ../man/ovdb_monitor.8 ../man/ovdb_server.8 \ - ../man/ovdb_stat.8 ../man/overchan.8 ../man/radius.8 \ + ../man/ovdb_stat.8 ../man/overchan.8 \ + ../man/prunehistory.8 ../man/radius.8 \ ../man/rc.news.8 ../man/scanlogs.8 ../man/sendinpaths.8 \ ../man/tally.control.8 ../man/tdx-util.8 \ ../man/tinyleaf.8 @@ -107,15 +109,20 @@ maintclean: distclean ../man/batcher.8: batcher.pod ; $(POD2MAN) -s 8 $? > $@ ../man/buffchan.8: buffchan.pod ; $(POD2MAN) -s 8 $? > $@ ../man/ckpasswd.8: ckpasswd.pod ; $(POD2MAN) -s 8 $? > $@ +../man/cnfsheadconf.8: cnfsheadconf.pod ; $(POD2MAN) -s 8 $? > $@ +../man/cnfsstat.8: cnfsstat.pod ; $(POD2MAN) -s 8 $? > $@ ../man/ctlinnd.8: ctlinnd.pod ; $(POD2MAN) -s 8 $? > $@ ../man/docheckgroups.8: docheckgroups.pod ; $(POD2MAN) -s 8 $? > $@ ../man/domain.8: domain.pod ; $(POD2MAN) -s 8 $? > $@ +../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/ident.8: ident.pod ; $(POD2MAN) -s 8 $? > $@ ../man/innbind.8: innbind.pod ; $(POD2MAN) -s 8 $? > $@ ../man/innd.8: innd.pod ; $(POD2MAN) -s 8 $? > $@ ../man/inndf.8: inndf.pod ; $(POD2MAN) -s 8 $? > $@ ../man/innupgrade.8: innupgrade.pod ; $(POD2MAN) -s 8 $? > $@ +../man/makedbz.8: makedbz.pod ; $(POD2MAN) -s 8 $? > $@ ../man/makehistory.8: makehistory.pod ; $(POD2MAN) -s 8 $? > $@ ../man/mod-active.8: mod-active.pod ; $(POD2MAN) -s 8 $? > $@ ../man/news.daily.8: news.daily.pod ; $(POD2MAN) -s 8 $? > $@ @@ -127,6 +134,7 @@ maintclean: distclean ../man/ovdb_server.8: ovdb_server.pod ; $(POD2MAN) -s 8 $? > $@ ../man/ovdb_stat.8: ovdb_stat.pod ; $(POD2MAN) -s 8 $? > $@ ../man/overchan.8: overchan.pod ; $(POD2MAN) -s 8 $? > $@ +../man/prunehistory.8: prunehistory.pod ; $(POD2MAN) -s 8 $? > $@ ../man/radius.8: radius.pod ; $(POD2MAN) -s 8 $? > $@ ../man/rc.news.8: rc.news.pod ; $(POD2MAN) -s 8 $? > $@ ../man/scanlogs.8: scanlogs.pod ; $(POD2MAN) -s 8 $? > $@ diff -Nurp inn-2.5.0/doc/pod/active.times.pod inn-2.5.1/doc/pod/active.times.pod --- inn-2.5.0/doc/pod/active.times.pod 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/pod/active.times.pod 2009-10-12 11:24:04.000000000 -0700 @@ -16,10 +16,12 @@ Each line consists of three fields: The first field is the name of the newsgroup. The second field is the time it was created, expressed as the number of seconds since the epoch. -The third field is the e-mail address of the person who created the group, -as specified in the control message or on the B command line, or -the newsmaster specified at configure time if no creator argument was -given to B (by default, it is C). +The third field is plain text intended to describe the entity that created +the newsgroup. This field is encoded in UTF-8 and is usually the e-mail +address of the person who created the group, as specified in the control +message or on the B command line, or the newsmaster specified +at configure time if no creator argument was given to B (by +default, it is C). You can get the F file of another NNTP server with getlist(1). @@ -27,7 +29,7 @@ You can get the F file of The line: - news.admin.moderation 1175716803 group-admin@isc.org + news.admin.moderation 1175716803 shows that the newsgroup news.admin.moderation was created on April 4th, 2007, at 20:00:03 UTC. This date can be obtained for instance with @@ -43,7 +45,7 @@ the time is not necessarily the same on Written by Rich $alz for InterNetNews. Converted to POD by Russ Allbery . -$Id: active.times.pod 7674 2007-09-15 21:49:08Z iulius $ +$Id: active.times.pod 8638 2009-09-28 19:59:48Z iulius $ =head1 SEE ALSO diff -Nurp inn-2.5.0/doc/pod/auth_krb5.pod inn-2.5.1/doc/pod/auth_krb5.pod --- inn-2.5.0/doc/pod/auth_krb5.pod 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/pod/auth_krb5.pod 2009-10-12 11:24:04.000000000 -0700 @@ -16,6 +16,12 @@ B has been given the user's usern not as secure as real Kerberos authentication. It generally should only be used with NNTP over TLS to protect the password from sniffing. +Normally, you do not want to use this authenticator. Instead, use +B with PAM support and configure the B PAM stack to use a +Kerberos PAM module. A full Kerberos PAM module is more sophisticated +about how it validates passwords and has a much broader array of options +than this authenticator. + =head1 OPTIONS =over 4 @@ -75,11 +81,11 @@ Originally written by Christopher S based on Christopher's original F file. -$Id: auth_krb5.pod 8479 2009-05-18 20:01:37Z iulius $ +$Id: auth_krb5.pod 8595 2009-08-21 08:29:26Z iulius $ =head1 SEE ALSO -nnrpd(8), readers.conf(5). +ckpasswd(8), nnrpd(8), readers.conf(5). The latest version of Christopher's original B may be found on his web site at L. diff -Nurp inn-2.5.0/doc/pod/cnfsheadconf.pod inn-2.5.1/doc/pod/cnfsheadconf.pod --- inn-2.5.0/doc/pod/cnfsheadconf.pod 1969-12-31 16:00:00.000000000 -0800 +++ inn-2.5.1/doc/pod/cnfsheadconf.pod 2009-10-12 11:24:04.000000000 -0700 @@ -0,0 +1,46 @@ +=head1 NAME + +cnfsheadconf - Read and write CNFS headers + +=head1 SYNOPSIS + +B [B<-hw>] [B<-c> I] + +=head1 DESCRIPTION + +I reads I/cycbuff.conf and I/storage.conf +to determine which CNFS buffers are available. It then reads all of them +or the specified cyclic buffer via the B<-c> flag, and modifies the header +as directed by the interactive user if B<-w> is used. + +=head1 OPTIONS + +=over 4 + +=item B<-c> I + +Print the status of the specified class. It also modifies it in case B<-w> +is used. + +=item B<-h> + +Print usage information and exit. + +=item B<-w> + +Prompt for modifications to make to cycbuff header. + +=back + +=head1 HISTORY + +Written by Katsuhiro Kondou for InterNetNews. Converted +to POD by Julien Elie. + +$Id: cnfsheadconf.pod 8547 2009-07-03 22:02:42Z iulius $ + +=head1 SEE ALSO + +cycbuff.conf(5), inn.conf(5), storage.conf(5). + +=cut diff -Nurp inn-2.5.0/doc/pod/cnfsstat.pod inn-2.5.1/doc/pod/cnfsstat.pod --- inn-2.5.0/doc/pod/cnfsstat.pod 1969-12-31 16:00:00.000000000 -0800 +++ inn-2.5.1/doc/pod/cnfsstat.pod 2009-10-12 11:24:04.000000000 -0700 @@ -0,0 +1,75 @@ +=head1 NAME + +cnfsstat - Show usage of CNFS buffers + +=head1 SYNOPSIS + +B [B<-ahpPsv>] [B<-c> I] [B<-l> [I]] [B<-m> I] + +=head1 DESCRIPTION + +I reads I/cycbuff.conf and I/storage.conf +to determine which CNFS buffers are available. It then reads the specified +cyclic buffers and shows their usage status. I can be invoked from +B if I is set to true in F, and the result is +written to syslog(3). + +=head1 OPTIONS + +=over 4 + +=item B<-a> + +Besides its usual output, I prints the age of the oldest article +in the cycbuff. You may also want to use the B<-v> flag to see extended +consistency checks. + +=item B<-c> I + +Only information for the specified class is printed. + +=item B<-h> + +Print usage information and exit. + +=item B<-l> [I] + +With this option, I prints a status snapshot every I, +and only exits if an error occurs. When unspecified, the default interval +is C<600> seconds. + +=item B<-m> I + +Print information about the specified buffer in a format suitable for MRTG. + +=item B<-p> + +Print an MRTG config file. + +=item B<-P> + +Write PID into I/cnfsstat.pid. + +=item B<-s> + +Write output to syslog(3) instead of standard output. + +=item B<-v> + +Write additional information, especially about consistency checks for article +storage and the F file. + +=back + +=head1 HISTORY + +Written by Katsuhiro Kondou for InterNetNews. Converted +to POD by Julien Elie. + +$Id: cnfsstat.pod 8576 2009-08-18 13:55:11Z iulius $ + +=head1 SEE ALSO + +cycbuff.conf(5), history(5), inn.conf(5), rc.news(8), storage.conf(5). + +=cut diff -Nurp inn-2.5.0/doc/pod/control.ctl.pod inn-2.5.1/doc/pod/control.ctl.pod --- inn-2.5.0/doc/pod/control.ctl.pod 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/pod/control.ctl.pod 2009-10-12 11:24:04.000000000 -0700 @@ -162,7 +162,9 @@ in the checkgroups for its subsequent pr checkgroups:*:*binaries*:drop will for instance remove every newsgroup whose name contains C -in the comp.* hierarchy, even though mentioned in the checkgroups. +in the comp.* hierarchy, even though such groups are mentioned in the +checkgroups. (In that example, the removal is performed by the B +action because B does nothing by itself.) =item B @@ -216,11 +218,12 @@ action. =back -The difference between a B or B action and a B action -for a checkgroups control message lies only in what e-mail is sent; B +One of the difference between a B or B action and a B +action for a checkgroups control message lies in what e-mail is sent; B or B will mail the news administrator a shell script (which may have already been run) to create, delete, or modify newsgroups to match -the checkgroups message, whereas B will just mail the entire message. +the checkgroups message, whereas B will just mail relevant lines +of the checkgroups for manual processing by the news administrator. Use of the B action for processing newgroup, rmgroup and checkgroups messages is STRONGLY recommended. Abuse of control messages @@ -359,7 +362,7 @@ could have added them to the F for InterNetNews. Rewritten in POD by Russ Allbery . -$Id: control.ctl.pod 8431 2009-04-25 14:22:17Z iulius $ +$Id: control.ctl.pod 8505 2009-06-06 20:10:59Z iulius $ =head1 SEE ALSO diff -Nurp inn-2.5.0/doc/pod/ctlinnd.pod inn-2.5.1/doc/pod/ctlinnd.pod --- inn-2.5.0/doc/pod/ctlinnd.pod 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/pod/ctlinnd.pod 2009-10-12 11:24:04.000000000 -0700 @@ -256,12 +256,12 @@ equal sign, only the first character is identity of the person creating the group. If the newsgroup already exists, this is equivalent to the C command. -I may be omitted; if so, it will default to the newsmaster (as -specified at configure time, normally C). I may also be -omitted; if so, it will default to C (a normal, unmoderated group). -The combination of defaults make it possible to use the text of the -Control: header directly (although don't do this without checking the -syntactic validity of the header first). +I, encoded in UTF-8 if given, may be omitted; if so, it will +default to the newsmaster (as specified at configure time, normally +C). I may also be omitted; if so, it will default to C +(a normal, unmoderated group). The combination of defaults make it possible +to use the text of the Control: header directly (although don't do this +without checking the syntactic validity of the header first). This command can only be done while the server is running or throttled manually. It will update its internal state when a C command is @@ -289,7 +289,7 @@ connections are closed, but the history be used for short-term locks, such as when replacing the history database. If the server was not started with the B<-n y> flag, this command also does the equivalent of a C command with C as the -flag and I as the text. +flag and I as the text, encoded in UTF-8. =item perl I @@ -308,8 +308,8 @@ filtering is enabled; if it starts with Allow or disallow readers. If I starts with the letter C, then reading is disallowed by causing the server to pass I as the value of the B<-r> flag to B. If I starts with the letter C and -I is either an empty string or the same string that was used when -reading was disabled, reading will be re-enabled. +I is either an empty string or the same string, encoded in UTF-8, that +was used when reading was disabled, reading will be re-enabled. This command has no effect if B is being run separately rather than spawned by B. @@ -317,8 +317,8 @@ spawned by B. =item reject I Remote connections (those that would not be handed off to B) are -rejected with I given as the explanation. Existing connections -are not closed. +rejected with I given as the explanation, encoded in UTF-8. Existing +connections are not closed. =item reload I I @@ -373,9 +373,9 @@ Identical to the C command. =item reserve I Require the next C or C command to use I as its -reason. This reservation is cleared by giving an empty string for the -reason. This is used by programs like B to coordinate pauses and -throttles of the server and avoid trampling on other instances of +reason, encoded in UTF-8. This reservation is cleared by giving an empty +string for the reason. This is used by programs like B to coordinate +pauses and throttles of the server and avoid trampling on other instances of themselves. =item rmgroup I @@ -427,7 +427,7 @@ server is throttled cannot be done.) If the server was not started with the B<-n y> flag, then this command also does the equivalent of a C command with C as the -flag and I as the text. +flag and I as the text, encoded in UTF-8. =item timer (off | I) @@ -491,7 +491,7 @@ server replies are limited to S<4 KB> on Written by Rich $alz for InterNetNews. Rewritten in POD by Russ Allbery . -$Id: ctlinnd.pod 8468 2009-05-16 12:28:24Z iulius $ +$Id: ctlinnd.pod 8638 2009-09-28 19:59:48Z iulius $ =head1 SEE ALSO diff -Nurp inn-2.5.0/doc/pod/distrib.pats.pod inn-2.5.1/doc/pod/distrib.pats.pod --- inn-2.5.0/doc/pod/distrib.pats.pod 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/pod/distrib.pats.pod 2009-10-12 11:24:04.000000000 -0700 @@ -23,7 +23,9 @@ pattern to specify a set of newsgroups. The third field is the value that should be used for the Distribution: header of a posted article, if this line was picked as the best match and no Distribution: header was supplied by the user. It can be an empty -string, specifying that no Distribution: header should be added. +string, specifying that no Distribution: header should be added. If it +is not empty, it is better to only use US-ASCII characters for that field; +otherwise, make sure it is encoded in UTF-8. When a post is received by B that does not already contain a Distribution: header, each newsgroup to which an article is posted will be @@ -40,7 +42,7 @@ A list of recommended distributions can Written by Rich $alz for InterNetNews. Converted to POD by Russ Allbery . -$Id: distrib.pats.pod 8435 2009-05-01 08:59:23Z iulius $ +$Id: distrib.pats.pod 8638 2009-09-28 19:59:48Z iulius $ =head1 SEE ALSO diff -Nurp inn-2.5.0/doc/pod/expire.ctl.pod inn-2.5.1/doc/pod/expire.ctl.pod --- inn-2.5.0/doc/pod/expire.ctl.pod 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/pod/expire.ctl.pod 2009-10-12 11:24:04.000000000 -0700 @@ -28,9 +28,9 @@ only one line in this format, which look /remember/: where is a decimal number that specifies the minimum number of days -a history record for a given message ID is retained, regardless of whether -the article is present in the spool. (History entries for articles still -present in the spool are always retained.) +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.) 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 @@ -38,8 +38,11 @@ expired. Without a history record for s accept the article again and readers would see duplicate articles. Articles older than a certain number of days won't be accepted by the server at all (see I in inn.conf(5) and the B<-c> flag in -innd(8)), and this setting should probably match that time period (10 days -by default) to ensure that the server never accepts duplicates. +innd(8)), and this setting should probably match that time period +to ensure that the server never accepts duplicates. As the default +value for I is C<10> days, it means that C +should be set to C<11> days in order to take into account articles +whose posting date is one day into the future. Most of the lines in this file will be in the second format, which consists of either four or five colon-separated fields: @@ -69,15 +72,15 @@ applies, and should be chosen from the f A All groups X Remove the article from all groups it appears in -One of M, U, or A must be specified. X should be used in combination with -one of the other letters, not by itself. +One of C, C, or C must be specified. C should be used in +combination with one of the other letters, not by itself. An expiration policy is applied to every article in a newsgroup it matches. There is no way to set an expiration policy for articles crossposted to groups you don't carry that's different than other articles in the same group. Normally, articles are not completely deleted until they expire out of every group to which they were posted, but if an -article is expired following a rule where contains X, it is deleted +article is expired following a rule where contains C, it is deleted out of all newsgroups to which it was posted immediately. If I is instead set to false, there is no and @@ -90,26 +93,28 @@ when articles are expired, they're alway they were posted. The remaining three fields are the same in either format, and are used to -determine how long an article should be kept. Each field should be either +determine how long an article should be kept from its original arrival +time (unless the B<-p> flag is passed to expire(8) or expireover(8), in +which case its original posting time is used). Each field should be either a decimal number of days (fractions like C<8.5> are allowed, but remember that articles are only removed when B or B is run, normally once a day by B) or the word C. The middle field, , will be used as the expiration period for most articles. The other two fields, and , only come into -play if the article requests a particular expiration date with an Expires -header. Articles with an Expires header will be expired at the date given +play if the article requests a particular expiration date with an Expires: +header. Articles with an Expires: header will be expired at the date given in that header, subject to the constraints that they will be retained at least days and no longer than days. If is set to C, no article matching that line will ever be expired. If is set to C, no article matching that line -without an explicit Expires header will ever be expired. If is -set to C, Expires headers will be honored no matter how far into +without an explicit Expires: header will ever be expired. If is +set to C, Expires: headers will be honored no matter how far into the future they are. One should think of the fields as a lower bound, the default, and an upper -bound. Since most articles do not have an Expires header, the second +bound. Since most articles do not have an Expires: header, the second field is the most important and most commonly applied. Articles that do not match any expiration rule will not be expired, but @@ -121,24 +126,24 @@ configuration. The default line should file (except for C) so that other expiration rules can override it. -It is often useful to honor the Expires header in articles, especially +It is often useful to honor the Expires: header in articles, especially those in moderated groups. To do this, set to zero, to whatever normal expiration you wish, and to C or some large -number, like 365 days for a maximum article life of a year. +number, like C<365> days for a maximum article life of a year. -To ignore any Expires header, set all three fields to the same value. +To ignore any Expires: header, set all three fields to the same value. =head1 EXAMPLES When I is true (the default): - # Keep expired article history for 10 days, matching artcutoff. - /remember/:10 + # Keep expired article history for 11 days, matching artcutoff plus one. + /remember/:11 - # Most articles stay for two weeks, ignoring Expires. + # Most articles stay for two weeks, ignoring Expires: headers. *:A:14:14:14 - # Accept Expires headers in moderated groups for up to a year and + # Accept Expires: headers in moderated groups for up to a year and # retain moderated groups for a bit longer. *:M:1:30:365 @@ -148,8 +153,8 @@ When I is true (the def When I is false, for class-based expiration: - # Keep expired article history for 10 days, matching artcutoff. - /remember/:10 + # Keep expired article history for 11 days, matching artcutoff plus one. + /remember/:11 # Set a default expiration of seven days. *:7:7:7 @@ -162,7 +167,7 @@ When I is false, for cl Written by Rich $alz for InterNetNews. Converted to POD by Russ Allbery . -$Id: expire.ctl.pod 7851 2008-05-26 19:33:08Z iulius $ +$Id: expire.ctl.pod 8575 2009-08-18 13:53:54Z iulius $ =head1 SEE ALSO diff -Nurp inn-2.5.0/doc/pod/expire.pod inn-2.5.1/doc/pod/expire.pod --- inn-2.5.0/doc/pod/expire.pod 1969-12-31 16:00:00.000000000 -0800 +++ inn-2.5.1/doc/pod/expire.pod 2009-10-12 11:24:04.000000000 -0700 @@ -0,0 +1,161 @@ +=head1 NAME + +expire - Usenet article and history expiration program + +=head1 SYNOPSIS + +B [B<-iNnptx>] [B<-d> I] [B<-f> I] [B<-g> I] +[B<-h> I] [B<-r> I] [B<-s> I] [B<-v> I] +[B<-w> I] [B<-z> I] [I] + +=head1 DESCRIPTION + +B scans the history(5)-format text file I/history +and uses the information recorded in it to purge itself of old news articles. +Articles stored using a storage method that has self-expire functionality +are by default not affected by B's primary behavior (but see the +B<-N> flag to disable this). In this case, F is ignored +except the C line for that article; B does still +probe to see if the article still exists and purges the relevant history +and overview entries if appropriate. However, if I in +F is true, B acts on all articles as specified by +F regardless of whether their storage methods have +self-expire functionality. + +Note that B never purges articles which do not match any entry +in F. + +=head1 OPTIONS + +=over 4 + +=item B<-d> I + +If the B<-d> flag is used, then the new F file and database +is created in the specified directory I. This is useful when the +filesystem does not have sufficient space to hold both the old and +new history files. When this flag is used, B leaves the server +paused and creates a zero-length file named after the new history file, +with an extension of C<.done> to indicate that it has successfully completed +the expiration. The calling script should install the new history file and +unpause the server. The B<-r> flag should be used with this flag. + +=item B<-f> I + +To specify an alternate history file, use the B<-f> flag. This flag is +valid when used with the B<-d> flag, and the output will be written +to the specified file. The default without B<-f> is C. + +=item B<-g> I + +If the B<-g> flag is given, then a one-line summary equivalent to the +output of B<-v 1>, except preceded by the current time, will be appended +to the specified I. + +=item B<-h> I + +To specify an alternate input text history file, use the B<-h> flag. +B uses the old dbz(3) 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>.) + +The default without the B<-h> flag is I/history. + +=item B<-i> + +To ignore the old database, use the B<-i> flag. + +=item B<-N> + +The control file is normally ignored for articles in storage methods +which have self-expire functionality. If the B<-N> flag is used, +B still uses the control file for these articles. + +=item B<-n> + +If B is not running, use the B<-n> flag and B will not +send the C or C commands. (For more details on the commands, +see ctlinnd(8)). Note that B only needs exclusive access for +a very short time S<-- long> enough to see if any new articles arrived +since it first hit the end of the file, and to rename the new files +to the working files. + +=item B<-p> + +B makes its decisions on the time the article arrived, as found +in the F file. This means articles are often kept a little +longer than with other expiration programs that base their decisions +on the article's posting date. To use the article's posting date, +use the B<-p> flag. + +=item B<-r> I + +B normally sends a C command to the local B daemon +when it needs exclusive access to the F file, using the string +C as the reason. To give a different reason, use the B<-r> flag. +The process ID will be appended to the reason. When B is finished +and the new F file is ready, it sends a C command. See +also the B<-n> flag. + +=item B<-s> I + +Optimize the new history database for approximately I pairs +(lines in F). Accurately specifying the size will create +a more efficient database. (The size should be the estimated eventual size +of the file, typically the size of the old file.) + +=item B<-t> + +If the B<-t> flag is used, then B will generate a list of the +tokens that should be removed on its standard output, and the new F +file will be left in F, F, F +and F. This flag is useful for debugging when used with +the B<-n> flag. Note that if the B<-f> flag is used, then the name +specified with that flag will be used instead of F. + +=item B<-v> I + +The B<-v> flag is used to increase the verbosity of the program, generating +messages to standard output. The I should be a number, where higher +numbers result in more output. Level one will print totals of the various +actions done (not valid if a new F file is not written), level two +will print a report on each individual file, while level five results in +multiple lines of output for every history line processed. + +=item B<-w> I + +Use the B<-w> flag to "warp" time so that B thinks it is running +at some time other then the current time. The value should be a signed +floating point number indicating the number of days to use as the offset. + +=item B<-x> + +If the B<-x> flag is used, then B will not create any new history +files. This is most useful when combined with the B<-n> and B<-t> flags +to see how different expiration policies would change the amount of disk +space used. + +=item B<-z> I + +If the B<-z> flag is used, then articles are not removed, but their names +are appended to the specified I. See the description of B +in news.daily(8). If a filename is specified, it is taken as the control +file and parsed according to the rules in F. A single dash +(C<->) may be used to read the file from standard input. If no file +is specified, the file I/expire.ctl is read. + +=back + +=head1 HISTORY + +Written by Rich $alz for InterNetNews. Converted to +POD by Julien Elie. + +$Id: expire.pod 8577 2009-08-18 14:02:02Z iulius $ + +=head1 SEE ALSO + +ctlinnd(8), dbz(3), expire.ctl(5), history(5), inn.conf(5), innd(8), +inndcomm(3), news.daily(8). + +=cut diff -Nurp inn-2.5.0/doc/pod/expireover.pod inn-2.5.1/doc/pod/expireover.pod --- inn-2.5.0/doc/pod/expireover.pod 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/pod/expireover.pod 2009-10-12 11:24:04.000000000 -0700 @@ -15,7 +15,7 @@ different file can be specified with the from the overview database mentions of any articles that no longer exist in the news spool. -If I in I is true, B also removes +If I in F is true, B also removes old articles from the news spool according to the expiration rules in F. Otherwise it only removes overview entries for articles that have already been removed by some other process, and B<-e>, B<-k>, @@ -93,7 +93,7 @@ I is false. B normally only checks the existence of articles in the news spool if querying the storage method for that article to see if it still -exists is considered "inexpensive." To always check the existence of all +exists is considered "inexpensive". To always check the existence of all articles regardless of how resource-intensive this may be, use the B<-s> flag. See storage.conf(5) for more information about this metric. @@ -103,7 +103,7 @@ flag. See storage.conf(5) for more info other than the current time. This is occasionally useful to force groups to be expired or not expired without changing F for the expire run. I should be a signed floating point number specifying the -number of days difference from the current time to use as "now." This +number of days difference from the current time to use as "now". This flag is ignored if I is false. =item B<-z> I @@ -145,7 +145,7 @@ Written by Rob Robertson (with help from Dave Lawrence ) for InterNetNews. -$Id: expireover.pod 7941 2008-08-02 17:10:27Z iulius $ +$Id: expireover.pod 8575 2009-08-18 13:53:54Z iulius $ =head1 SEE ALSO diff -Nurp inn-2.5.0/doc/pod/expirerm.pod inn-2.5.1/doc/pod/expirerm.pod --- inn-2.5.0/doc/pod/expirerm.pod 1969-12-31 16:00:00.000000000 -0800 +++ inn-2.5.1/doc/pod/expirerm.pod 2009-10-12 11:24:04.000000000 -0700 @@ -0,0 +1,33 @@ +=head1 NAME + +expirerm - Remove articles that have been expired + +=head1 SYNOPSIS + +B I + +=head1 DESCRIPTION + +B is a script that removes a list of files. The specified +I lists the files to be removed. It is usually created by +B. This file is sorted, and then fed into a pipeline +responsible for doing the removal, normally B. (You may want +to edit B to change the flags passed to B.) + +If there seemed to be a problem removing the files, then a mail is +sent to the news administrator. If there were no problems, then +I is renamed to I/expire.list where it is kept +(for safety) until the next time expiration is done. + +=head1 HISTORY + +Written by Landon Curt Noll and Rich $alz +. Converted to POD by Julien Elie. + +$Id: expirerm.pod 8577 2009-08-18 14:02:02Z iulius $ + +=head1 SEE ALSO + +expire(8), fastrm(8), newslog(5). + +=cut diff -Nurp inn-2.5.0/doc/pod/fastrm.pod inn-2.5.1/doc/pod/fastrm.pod --- inn-2.5.0/doc/pod/fastrm.pod 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/pod/fastrm.pod 2009-10-12 11:24:04.000000000 -0700 @@ -4,7 +4,7 @@ fastrm - Quickly remove a list of files =head1 SYNOPSIS -B [B<-de>] [B<-u>|B<-u>I] [B<-s>|B<-s>I] [B<-c>|B<-c>I] +B [B<-de>] [B<-c>|B<-c>I] [B<-s>|B<-s>I] [B<-u>|B<-u>I] I =head1 DESCRIPTION @@ -40,7 +40,7 @@ aren't empty, which can cause file syste The input to B should always be sorted S<-- or> even better be in the order file names are output by S if speed is an issue and the input isn't solely storage API tokens. (It deals fine with unsorted -input, but is unlikely to be any faster in that case than a simple C command.) Sorting may even slightly speed up the removal of storage API tokens due to caching effects, since sorting will tend to keep all of the tokens from a particular storage method together. @@ -58,6 +58,17 @@ internally. =over 4 +=item B<-c>[I] + +Controls when B calls chdir(2). If the number of files to be +unlinked from a given directory is at least I, then B will +change to that directory before unlinking those files. Otherwise, it will +use either the absolute path names or a path name relative to the current +directory (whichever is likely more efficient). The I parameter is +optional; if just B<-c> is given, B<-c1> is assumed, which will cause +B to always chdir before calling unlink(2). The default is +B<-c3>. Use B<-c0> to prevent B from ever using chdir(2). + =item B<-d> Don't remove any files. Instead, print a list of the files that would be @@ -74,18 +85,7 @@ Treat an empty input file as an error. is last in a pipeline after a preceding sort(1) command, ensuring that B will fail if the sort fails. -=item B<-c>I - -Controls when B calls chdir(2). If the number of files to be -unlinked from a given directory is at least I, then B will -change to that directory before unlinking those files. Otherwise, it will -use either the absolute path names or a path name relative to the current -directory (whichever is likely more efficient). The I parameter is -optional; if just B<-c> is given, B<-c1> is assumed, which will cause -B to always chdir before calling unlink(2). The default is -B<-c3>. Use B<-c0> to prevent B from ever using chdir(2). - -=item B<-s>I +=item B<-s>[I] When B<-s> is given and the number of files to remove in a directory is greater than I, rather than remove files in the order given, B @@ -108,7 +108,7 @@ already been deleted). This optimization is off by default. -=item B<-u>I +=item B<-u>[I] Specifying this option promises that there are no symbolic links in the directory tree from which files are being removed. This allows B @@ -129,7 +129,7 @@ This optimization is off by default. =back B also accepts B<-a> and B<-r> options, which do nothing at all -except allow you to say C, C, or C, C, or C. These happen to often be convenient sets of options to use. =head1 EXIT STATUS @@ -179,9 +179,9 @@ general fast file removal program. =head1 HISTORY B was originally written by . This manual page -rewritten in POD by Russ Allbery for InterNetNews. +was rewritten in POD by Russ Allbery for InterNetNews. -$Id: fastrm.pod 7851 2008-05-26 19:33:08Z iulius $ +$Id: fastrm.pod 8576 2009-08-18 13:55:11Z iulius $ =head1 SEE ALSO diff -Nurp inn-2.5.0/doc/pod/grephistory.pod inn-2.5.1/doc/pod/grephistory.pod --- inn-2.5.0/doc/pod/grephistory.pod 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/pod/grephistory.pod 2009-10-12 11:24:04.000000000 -0700 @@ -9,14 +9,14 @@ B [B<-eilnqsv>] [B<-f> I queries the INN history database for information about the -specified message ID. If no flags are given, the program prints the +specified message-ID. If no flags are given, the program prints the storage API token of the corresponding article, or C if the article is listed in the history database but not stored on the server. -If the message ID cannot be found in the database, B will +If the message-ID cannot be found in the database, B will print C and exit with a non-zero status. Be sure to escape any special characters in the message ID from the shell. -Single quotes are recommended for this purpose since many message IDs +Single quotes are recommended for this purpose since many message-IDs contain dollar signs. =head1 OPTIONS @@ -35,20 +35,21 @@ Query the history database I rather =item B<-i> -Rather than expecting a message ID on the command line, B -will read a list of message IDs on standard input, one per line. Leading +Rather than expecting a message-ID on the command line, B +will read a list of message-IDs on standard input, one per line. Leading and trailing whitespace is ignored, as are any malformed lines. It will -print out standard output those message IDs which are not found in the +print on standard output those message-IDs which are not found in the history database. This is used when processing C control messages. =item B<-l> Display the entire line from the history database, rather than just the -storage API token. +storage API token. If the message-ID is present in the history database +but has no storage API token, B does not print anything. =item B<-n> -If the message ID is present in the history database but has no storage +If the message-ID is present in the history database but has no storage API token, print C and exit successfully. This can happen if an article has been cancelled or expired, but history information has still been retained. This is the default behavior. @@ -59,8 +60,8 @@ Don't print any message, but still exit =item B<-s> -Rather than expecting a message ID on the command line, B -will read a list of message IDs on standard input, one per line. Leading +Rather than expecting a message-ID on the command line, B +will read a list of message-IDs on standard input, one per line. Leading and trailing whitespace is ignored, as are any malformed lines. It will print on standard output the storage API tokens for any articles that are still available, one per line. This flag is used when processing @@ -68,20 +69,53 @@ C control messages. =item B<-v> -Print out the hash of the message ID for diagnostic purposes, as well as -any other requested information. This flag is not useful with B<-s>. +Print out the hash of the message-ID for diagnostic purposes, as well as +any other requested information. This flag is not useful with B<-i> or +B<-s>. =back +=head1 EXAMPLES + +In case the requested article is not listed in the history database: + + % grephistory '' + grephistory: not found + % grephistory -v '' + grephistory: not found (hash is 501C66C22932BA91131186D7218201EB) + +In case the requested article is listed in the history database +but not stored on the server: + + % grephistory '' + /dev/null + +In case the requested article is stored on the server: + + % grephistory '<87fxeaay1z.fsf@windlord.stanford.edu>' + @02014A2DD6231FCC00000000000000000000@ + % grephistory -l '<87fxeaay1z.fsf@windlord.stanford.edu>' + [B6DDF69376E3CC199246CEC949B3ACAC] 1244517923~-~1244517912 @02014A2DD6231FCC00000000000000000000@ + +With B, we can retrieve the article, and get its posting date: + + % grephistory '<87fxeaay1z.fsf@windlord.stanford.edu>' | sm | grep Date + Date: Mon, 08 Jun 2009 20:25:12 -0700 + + % convdate -dc 1244517912 + Tue, 9 Jun 2009 03:25:12 +0000 (UTC) + +It matches the number recorded in history as for its posting date. + =head1 HISTORY Written by Rich $alz for InterNetNews. Rewritten in POD by Russ Allbery . -$Id: grephistory.pod 7618 2007-08-01 20:15:03Z iulius $ +$Id: grephistory.pod 8582 2009-08-19 08:04:32Z iulius $ =head1 SEE ALSO -history(5), inn.conf(5) +history(5), inn.conf(5), sm(1). =cut diff -Nurp inn-2.5.0/doc/pod/hacking.pod inn-2.5.1/doc/pod/hacking.pod --- inn-2.5.0/doc/pod/hacking.pod 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/pod/hacking.pod 2009-10-12 11:24:04.000000000 -0700 @@ -79,7 +79,8 @@ a few odd hacks.) New versions should b available. There are no INN-specific modifications to those files except for F which recognizes the additional B<-B> flag that INN's B script uses. This script should also be updated at the -same time; it similarly contains local modifications in order to support +same time from L; +it similarly contains local modifications in order to support the additional B<-B> flag, as well as a few other changes mentioned in a comment at the beginning of the file. @@ -298,13 +299,13 @@ Bourne shell and Perl, and also comes wi F-time information and configuration information from F are set by the B support libraries, so the only system-specific configuration that should have to be done is fixing the right path to the -interpretor and adding a line to load the appropriate B. +interpreter and adding a line to load the appropriate B. F, built by F, does this. It takes a F<.in> file and generates the final script (removing the F<.in>) by fixing the path to -the interpretor on the first line and replacing the second line, whatever +the interpreter on the first line and replacing the second line, whatever it is, with code to load the B appropriate for that -interpretor. (If invoked with B<-i>, it just fixes the interpretor path.) +interpreter. (If invoked with B<-i>, it just fixes the interpreter path.) Scripts should use B (via B) to get the right path and the right variables whenever possible, rather than having F @@ -333,7 +334,7 @@ Practically all INN source files will st The first picks up all defines generated by B and is necessary for types that may not be present on all systems (I, I, I, -I, and the like). It therefore should be included before any other +I, and the like). It therefore should be included before any other headers that use those types, as well as to get general configuration information. It also includes F and F, which pick up additional support macros and compile-time configuration. @@ -617,8 +618,9 @@ in L<"Configuring and Portability"> for =item 2. -Make sure that F is in sync with the master version at -L. +Make sure that F and F are in sync +with the master version at L +and L. =item 3. @@ -760,6 +762,6 @@ technical details as needed, useful when =back -$Id: hacking.pod 8490 2009-05-21 20:06:37Z iulius $ +$Id: hacking.pod 8630 2009-09-09 20:06:53Z iulius $ =cut diff -Nurp inn-2.5.0/doc/pod/hook-perl.pod inn-2.5.1/doc/pod/hook-perl.pod --- inn-2.5.0/doc/pod/hook-perl.pod 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/pod/hook-perl.pod 2009-10-12 11:24:04.000000000 -0700 @@ -19,8 +19,7 @@ readers.conf mechanism used by nnrpd. For Perl filtering support, you need to have Perl S or newer. Earlier versions of Perl will fail with a link error at compilation time. -http://language.perl.com/info/software.html should have the latest Perl -version. +L should have the latest Perl version. To enable Perl support, you have to specify B<--with-perl> when you run configure. See F for more information. @@ -74,7 +73,9 @@ article is received from a peer, via eit filter_art() is called if Perl filtering is turned on. It receives no arguments, and should return a single scalar value. That value should be the empty string to indicate that INN should accept the article, or some -rejection message to indicate that the article should be rejected. +rejection message to indicate that the article should be rejected (make sure +that such a message is properly encoded in UTF-8 so as to comply with the +NNTP protocol). filter_art() has access to a global hash named %hdr, which contains all of the standard headers present in the article and their values. The @@ -142,26 +143,29 @@ As mentioned above, if filter_art() retu article is accepted. Note that this must be the empty string, not 0 or undef. Otherwise, the article is rejected, and whatever scalar filter_art() returns (typically a string) will be taken as the reason why -the article was rejected. This reason will be returned to the remote peer -as well as logged to the news logs. (innreport, in its nightly report, -will summarize the number of articles rejected by the Perl filter and -include a count of how many articles were rejected with each reason -string.) +the article was rejected (make sure that such a message is properly encoded +in UTF-8 so as to comply with the NNTP protocol). This reason will be +returned to the remote peer as well as logged to the news logs. (innreport, +in its nightly report, will summarize the number of articles rejected +by the Perl filter and include a count of how many articles were rejected +with each reason string.) One other type of filtering is also supported. If Perl filtering is turned on and the Perl function filter_messageid() is defined, that function will be called for each message ID received from a peer (via either CHECK or IHAVE). The function receives a single argument, the message ID, and like filter_art() should return an empty string to accept -the article or an error string to refuse the article. This function is -called before any history lookups and for every article offered to innd -with CHECK or IHAVE (before the actual article is sent). Accordingly, the -message ID is the only information it has about the article (the %hdr hash -will be empty). This code would sit in a performance-critical hot path in -a typical server, and therefore should be as fast as possible, but it can -do things like refuse articles from certain hosts or cancels for already -rejected articles (if they follow the $alz convention) without having to -take the network bandwidth hit of accepting the entire article first. +the article or an error string to refuse the article (make sure that +such a message is properly encoded in UTF-8 so as to comply with the +NNTP protocol). This function is called before any history lookups and +for every article offered to innd with CHECK or IHAVE (before the actual +article is sent). Accordingly, the message ID is the only information +it has about the article (the %hdr hash will be empty). This code would +sit in a performance-critical hot path in a typical server, and therefore +should be as fast as possible, but it can do things like refuse articles +from certain hosts or cancels for already rejected articles (if they +follow the $alz convention) without having to take the network bandwidth +hit of accepting the entire article first. Note that you cannot rely on filter_messageid() being called for every incoming article; articles sent via TAKETHIS without an earlier CHECK will @@ -184,7 +188,7 @@ possible use for this function is to sav innd by dumping state to disk when NewMode is shutdown and then reloading it when innd restarts (possibly by F). -The state of the Perl interpretor in which all of these Perl functions run +The state of the Perl interpreter in which all of these Perl functions run is preserved over the lifetime of innd. In other words, it's permissible for the Perl code to create its own global Perl variables, data structures, saved state, and the like, and all of that will be available to @@ -311,7 +315,7 @@ filter_post() has access to a global has headers of the article. (Unlike the innd Perl filter, %hdr for the nnrpd Perl filter contains *all* of the headers, not just the standard ones. If any of the headers are duplicated, though, %hdr will contain only the -value of the last occurance of the header. nnrpd will reject the +value of the last occurrence of the header. nnrpd will reject the article before the filter runs if any of the standard headers are duplicated.) It also has access to the full body of the article in the variable $body, and if the poster authenticated via AUTHINFO (or if either @@ -355,8 +359,9 @@ or: $modify_headers = 1; If filter_post() returns something other than the empty string, this -message is normally returned to the client as an error. There are three -exceptions: +message is normally returned to the client as an error (make sure that +such a message is properly encoded in UTF-8 so as to comply with the +NNTP protocol). There are three exceptions: =over 4 @@ -477,12 +482,13 @@ C<$attributes{password}> the password. authenticate() should return a two or three element array. The first element is the NNTP response code to return to the client, the second element is an error string which is passed to the client if the -response code indicates that the authentication attempt has failed. An -optional third return element if present will be used to match the -connection with the users: parameter in access groups and will also be -the username logged. If this element is absent, the username supplied -by the client during authentication will be used for matching and -logging. +response code indicates that the authentication attempt has failed (make +sure that such a message is properly encoded in UTF-8 so as to comply +with the NNTP protocol). An optional third return element if present +will be used to match the connection with the users: parameter in access +groups and will also be the username logged. If this element is absent, +the username supplied by the client during authentication will be used +for matching and logging. The NNTP response code should be 281 (authentication successful), 481 (authentication unsuccessful), or 403 (server failure). If the @@ -660,6 +666,6 @@ Usenet daily. It uses F are faster: If you want to accept an article, return C or an empty string. To reject, return a non-empty string. The rejection strings will be shown to local clients and your peers, so keep that in mind when phrasing your -rejection responses. +rejection responses and make sure that such a message is properly encoded +in UTF-8 so as to comply with the NNTP protocol. =item filter_messageid(I, I) @@ -366,13 +367,14 @@ I, I) described belo contains either two or three elements, the first of which is the NNTP response code. The second is an error string which is passed to the client if the response code indicates that the authentication attempt -has failed. This allows a specific error message to be generated by -the Python script in place of the generic message C. An optional third return element, if present, will be used to -match the connection with the I parameter in access groups and -will also be the username logged. If this element is absent, the -username supplied by the client during authentication will be used, as -was the previous behaviour. +has failed (make sure that such a message is properly encoded in UTF-8 +so as to comply with the NNTP protocol). This allows a specific error +message to be generated by the Python script in place of the generic +message C. An optional third return element, +if present, will be used to match the connection with the I +parameter in access groups and will also be the username logged. If +this element is absent, the username supplied by the client during +authentication will be used, as was the previous behaviour. The I parameter (described below) is new; it allows the dynamic generation of an access group of an incoming connection using @@ -682,6 +684,6 @@ like C, seen above. =back -$Id: hook-python.pod 8401 2009-04-04 08:06:07Z iulius $ +$Id: hook-python.pod 8640 2009-09-29 20:13:55Z iulius $ =cut diff -Nurp inn-2.5.0/doc/pod/inews.pod inn-2.5.1/doc/pod/inews.pod --- inn-2.5.0/doc/pod/inews.pod 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/pod/inews.pod 2009-10-12 11:24:04.000000000 -0700 @@ -15,7 +15,7 @@ article is rejected. If it passes the c to the local news server as specified in F. By default, if a file named F<.signature> exists in the home directory of -the posting user, it is appended to the post, preceeded by a line that +the posting user, it is appended to the post, preceded by a line that contains only C<-- >. Signatures are not allowed to be more than four lines long. @@ -135,7 +135,7 @@ Unix news clients or by themselves. Written by Rich $alz for InterNetNews. Rewritten in POD by Russ Allbery . -$Id: inews.pod 7851 2008-05-26 19:33:08Z iulius $ +$Id: inews.pod 8517 2009-06-17 17:49:36Z iulius $ =head1 SEE ALSO diff -Nurp inn-2.5.0/doc/pod/inn.conf.pod inn-2.5.1/doc/pod/inn.conf.pod --- inn-2.5.0/doc/pod/inn.conf.pod 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/pod/inn.conf.pod 2009-10-12 11:24:04.000000000 -0700 @@ -138,9 +138,13 @@ stored and propagated, and other similar =item I -Articles older than this number of days are dropped. This setting should -probably match the setting on the C line in F. -The default value is C<10>. +Articles older than this number of days are dropped. The default value +is C<10>, which means that an incoming article will be rejected if its +posting date is farther in the past than ten days. + +The number on the C line in F should probably +be one more than that number in order to take into account articles +whose posting date is one day into the future. =item I @@ -308,12 +312,16 @@ addresses contain colons. =item I Set this to true to enable a simplistic check on all cancel messages, -attempting to verify (by simple header comparison) that the cancel message -is from the same person as the original post. This can't be done if the -cancel arrives before the article does, and is extremely easy to spoof. -While this check may once have served a purpose, it's now essentially -security via obscurity, commonly avoided by abusers, and probably not -useful. This is a boolean value, and the default is false. +attempting to verify (by simple header comparison) that at least one newsgroup +in the cancel message can be found in the article to be cancelled. This +check can't be done if the cancel arrives before the article does. This +is a boolean value, and the default is false. + +Note that RFC 5537 (USEPRO) mentions that "cancel control 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". This check is +therefore not done as it is extremely easy to spoof. =item I @@ -769,9 +777,11 @@ it. Whether the keyword generation support should be enabled. This is a boolean value and the default is false. -FIXME: Currently, support for keyword generation is configured into INN -semi-randomly (based on whether configure found the regex library); it -should be an option to configure and that option should be mentioned here. +In order to use this feature, the regex library should be available +and INN configured with the B<--enable-keywords> flag. Otherwise, +no keywords will be generated, even though this boolean value is set +to true. You also have to add the integration of the Keywords: header +into the overview with I or I. =item I @@ -1002,14 +1012,14 @@ The path to a directory containing certi certificates. Each file in the directory should contain one CA certificate, and the name of the file should be the CA subject name hash value. See the OpenSSL documentation for more information. This -parameter is only used if B is built with TLS/SSL support. There -is no default value. +parameter is only used if B is built with TLS/SSL support. The +default value is I. =item I The path to a file containing the server certificate to present to TLS clients. This parameter is only used if B is built with TLS/SSL -support. The default value is I/lib/cert.pem. +support. The default value is I/cert.pem. =item I @@ -1019,7 +1029,7 @@ I if, when you created the the same file (if, for example, you gave the same file name to both the B<-out> and B<-keyout> options to C). This parameter is only used if B is built with TLS/SSL support. The default value is -I/lib/key.pem. +I/key.pem. This file must only be readable by the news user or B will refuse to use it. @@ -1231,7 +1241,7 @@ The default value is C<10>. =item I When using buffindexed, retrieving overview data (that is, responding to -XOVER or running expireover) causes mmapping of all overview data blocks +OVER or running expireover) causes mmapping of all overview data blocks which include requested overview data for newsgroup. But for high volume newsgroups like control.cancel, this may cause too much mmapping at once leading to system resource problems. To avoid this, if the amount to be @@ -1309,7 +1319,7 @@ C<256> on Solaris systems is highly reco =back -=head2 Paths and File Names +=head2 Paths Names =over 4 @@ -1429,7 +1439,7 @@ values for reference. Written by Rich $alz for InterNetNews and since modified, updated, and reorganized by innumerable other people. -$Id: inn.conf.pod 8479 2009-05-18 20:01:37Z iulius $ +$Id: inn.conf.pod 8659 2009-10-10 07:59:50Z iulius $ =head1 SEE ALSO diff -Nurp inn-2.5.0/doc/pod/innd.pod inn-2.5.1/doc/pod/innd.pod --- inn-2.5.0/doc/pod/innd.pod 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/pod/innd.pod 2009-10-12 11:24:04.000000000 -0700 @@ -427,7 +427,6 @@ If the fourth field is a minus sign, the reasons for rejection generated by B include: "%s" header too long - "%s" wants to cancel <%s> by "%s" Article exceeds local limit of %s bytes Article posted in the future -- "%s" Bad "%s" header @@ -439,6 +438,7 @@ reasons for rejection generated by B No space Space before colon in "%s" header Too old -- "%s" @@ -498,7 +498,7 @@ disables source routing. Written by Rich $alz for InterNetNews. -$Id: innd.pod 8474 2009-05-17 13:12:15Z iulius $ +$Id: innd.pod 8565 2009-08-14 19:47:10Z iulius $ =head1 SEE ALSO diff -Nurp inn-2.5.0/doc/pod/install.pod inn-2.5.1/doc/pod/install.pod --- inn-2.5.0/doc/pod/install.pod 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/pod/install.pod 2009-10-12 11:24:04.000000000 -0700 @@ -459,7 +459,7 @@ set of options is: ./configure --with-perl provided that you have the necessary version of Perl installed. -(Compiling with an embedded Perl interpretor will allow you to use one of +(Compiling with an embedded Perl interpreter will allow you to use one of the available excellent spam filters if you so choose.) If the configure program runs successfully, then you are ready to build @@ -700,7 +700,7 @@ In all INN configuration files, blank li C<#> symbol are considered comments and are ignored. Be careful, not all files permit comments to begin in the middle of the line. -=head2 inn.conf +=head2 F The first, and most important file is F. This file is organized as a series of parameter-value pairs, one per line. The parameter is @@ -788,7 +788,7 @@ understand the purpose of most of them r are only needed for very obscure things, and with more experience running your news server the rest will make more sense. -=head2 newsfeeds +=head2 F F determines how incoming articles are redistributed to your peers and to other INN processes. F is very versatile and @@ -966,7 +966,7 @@ F so that B doesn't writ careful: B may accept articles faster than B can process the data. -=head2 incoming.conf +=head2 F F file specifies which machines are permitted to connect to your host and feed it articles. Remote servers you peer with should be @@ -1016,7 +1016,7 @@ all the details. Note for those familiar with older versions of INN: this file replaces the old F configuration file. -=head2 cycbuff.conf +=head2 F F is only required if CNFS is used. If you aren't using CNFS, skip this section. @@ -1124,7 +1124,7 @@ more details. Finally, you have to create the cycbuffs. See L for more information on how to do that. -=head2 storage.conf +=head2 F F determines where incoming articles will be stored (what storage method, and in the case of CNFS, what metacycbuff). Each entry in @@ -1198,20 +1198,20 @@ in those groups and create a storage cla newsgroups. Make note of the storage class IDs you assign as they will be needed when you edit F a bit later. -=head2 expire.ctl +=head2 F F sets the expiration policy for articles stored on the server. Be careful, since the default configuration will expire most -articles after 10 days; in most circumstances this deletion is +articles after 15 days; in most circumstances this deletion is I, so read this whole section carefully if you want to keep local hierarchies forever. (See archive(8) for a way to automate backups of important articles.) Only one entry is required for all storage classes; it looks like: - /remember/:10 + /remember/:11 -This entry says how long to keep the Message-IDs for articles that have +This entry says how long to keep the message-IDs for articles that have already expired in the history file so that the server doesn't accept them again. Occasionally, fairly old articles will get regurgitated somewhere and offered to you again, so even after you've expired articles from your @@ -1220,7 +1220,8 @@ while to ensure you don't get duplicates INN will reject any articles more than a certain number of days old (the I parameter in F, defaulting to C<10>); the number on -the C line should match that. +the C line should be one more than that number in order to take +into account articles whose posting date is one day into the future. CNFS makes no further use of F, since articles stored in CNFS buffers expire automatically when the buffer runs out of free space (but @@ -1237,7 +1238,7 @@ in that storage class (decimal values ar don't have an Expires: header, those are the only two values that matter. For articles with an Expires: header, the other two values come into play; the date given in the Expires: header of an article will be honored, -subject to the contraints set by and . All articles in this +subject to the constraints set by and . All articles in this storage class will be kept for at least days, regardless of their Expires: headers, and all articles in this storage class will be expired after days, even if their Expires: headers specify a longer life. @@ -1263,7 +1264,7 @@ with any moderation status; the line onl indicated expiration status. All of the other fields have the same meaning as above. -=head2 readers.conf +=head2 F Provided that I is set to false in F, any connection from a host that doesn't match an entry in F (as well as @@ -1649,6 +1650,6 @@ listed in F. If a hierarch may have to remove all the user IDs except the one that matches the F entry using C and the C command. -$Id: install.pod 8479 2009-05-18 20:01:37Z iulius $ +$Id: install.pod 8575 2009-08-18 13:53:54Z iulius $ =cut diff -Nurp inn-2.5.0/doc/pod/libinnhist.pod inn-2.5.1/doc/pod/libinnhist.pod --- inn-2.5.0/doc/pod/libinnhist.pod 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/pod/libinnhist.pod 2009-10-12 11:24:04.000000000 -0700 @@ -45,7 +45,7 @@ BIIB<, const char *>IB<, time_t >IB<, time_t >IB<, time_t >IB<, const TOKEN *>IB<);> -BIB<, const char *>IB<, time_t >IB<);> +BIB<, const char *>IB<, time_t >IB<, time_t >IB<);> BIB<, const char *>IB<, time_t >IB<, time_t >IB<, time_t >IB<, const TOKEN *>IB<);> @@ -61,9 +61,9 @@ BI is unspec B writes a new entry to the database I associated with I, merely remembering that this I has been -seen, together with its arrival time I. B -returns B on success, or B on failure. The behaviour when -I is not unique with respect to the existing entries in -I is unspecified. +seen, together with its arrival time I and also its posting +time I, if known. (Otherwise, its posting time may be specified +as <= 0 in case it is absent.) B returns B on success, +or B on failure. The behaviour when I is not unique with +respect to the existing entries in I is unspecified. B replaces an existing entry in the database I, associated with I. I, I, I specify the @@ -175,11 +176,12 @@ times, in addition to the token associat posting and/or expiry may be zero, but that the token will never be B (such entries are handled solely via the threshold mechanism). The storage token passed to the discrimination function -may updated if required (for example, as might be needed by a +may be updated if required (for example, as might be needed by a hierachical storage management implementation). -Entries in the database with an arrival time less than I +Entries in the database with a posting time less than I with no token associated with them are deleted from the database. +In case the posting time is unknown, the arrival time is used instead. The parameter I is passed to the discrimination function, and may be used for any purpose required by the caller. @@ -299,6 +301,6 @@ type B and will not be modified Written by Alex Kiernan for S. -$Id: libinnhist.pod 7851 2008-05-26 19:33:08Z iulius $ +$Id: libinnhist.pod 8575 2009-08-18 13:53:54Z iulius $ =cut diff -Nurp inn-2.5.0/doc/pod/makedbz.pod inn-2.5.1/doc/pod/makedbz.pod --- inn-2.5.0/doc/pod/makedbz.pod 1969-12-31 16:00:00.000000000 -0800 +++ inn-2.5.1/doc/pod/makedbz.pod 2009-10-12 11:24:04.000000000 -0700 @@ -0,0 +1,61 @@ +=head1 NAME + +makedbz - Rebuild dbz files + +=head1 SYNOPSIS + +B [B<-io>] [B<-f> I] [B<-s> I] + +=head1 DESCRIPTION + +B rebuilds dbz(3) database. The default name of the text +file is I/history; to specify a different name, use the B<-f> flag. + +=head1 OPTIONS + +=over 4 + +=item B<-f> I + +If the B<-f> flag is used, then the database files are named C.dir>, +C.index>, and C.hash>. If the B<-f> flag is not used, +then a temporary link to the name C is made and the database files +are written as C , C and C. + +=item B<-i> + +To ignore the old database, use the B<-i> flag. Using the B<-o> or B<-s> +flags implies the B<-i> flag. + +=item B<-o> + +If the B<-o> flag is used, then the link is not made and any existing history +files are overwritten. If the old database exists, B will use it to +determine the size of the new database. + +=item B<-s> I + +B will also ignore any old database if the B<-s> flag is used to +specify the approximate number of entries in the new database. Accurately +specifying the size is an optimization that will create a more efficient +database. Size is measured in key-value pairs (i.e. lines). (The size +should be the estimated eventual size of the file, typically the size +of the old file.) + +For more information, see the discussion of B and B +in dbz(3). + +=back + +=head1 HISTORY + +Written by Katsuhiro Kondou for InterNetNews. Converted to +POD by Julien Elie. + +$Id: makedbz.pod 8584 2009-08-20 21:54:07Z iulius $ + +=head1 SEE ALSO + +dbz(3), history(5). + +=cut diff -Nurp inn-2.5.0/doc/pod/makehistory.pod inn-2.5.1/doc/pod/makehistory.pod --- inn-2.5.0/doc/pod/makehistory.pod 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/pod/makehistory.pod 2009-10-12 11:24:04.000000000 -0700 @@ -5,7 +5,7 @@ makehistory - Initialize or rebuild INN =head1 SYNOPSIS B [B<-abFIOSx>] [B<-f> I] [B<-l> I] -[B<-s> I] [B<-T> I] +[B<-L> I] [B<-s> I] [B<-T> I] =head1 DESCRIPTION @@ -89,6 +89,16 @@ specify the temporary storage location. with buffindexed, because buffindexed does not need sorted overview and no batching is done. +=item B<-L> I + +Temporarily pause activities if the system load average exceeds the +specified level I. This allows B to run +on a system being used for other purposes without monopolizing system +resources and thus making the response time for other applications +unacceptably slow. Using nice(1) does not help much for that because +the problem comes from disk I/O usage, and ionice(1) is not always +available or efficient. + =item B<-O> Create the overview database as well as the F file. Overview @@ -186,7 +196,7 @@ Where temporary files are written unless Originally written by Rich $alz for InterNetNews and updated by various other people since. -$Id: makehistory.pod 8409 2009-04-11 22:13:41Z iulius $ +$Id: makehistory.pod 8535 2009-06-23 18:09:56Z iulius $ =head1 SEE ALSO diff -Nurp inn-2.5.0/doc/pod/news.pod inn-2.5.1/doc/pod/news.pod --- inn-2.5.0/doc/pod/news.pod 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/pod/news.pod 2009-10-12 11:24:04.000000000 -0700 @@ -1,3 +1,177 @@ +=head1 Changes in 2.5.1 + +=over 2 + +=item * + +Fixed a segfault in B which could occur when SASL +was used. + +=item * + +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. + +=item * + +Owing to the US-CERT vulnerability note VU#238019, Cyrus SASL library +has slightly changed. B and B now handle +that change. Otherwise, some answers are too long to be properly +computed during SASL exchanges. + +=item * + +Fixed a memory allocation problem which caused B to die when +retrieving via HDR/XHDR/XPAT the contents of an extra overview field +absent from the headers of an article. The NEWNEWS command was also +affected on very rare cases. Thanks to Tim Woodall for the bug report. + +=item * + +HDR/XHDR/XPAT answers are now robust when the overview database is +inconsistent. When the overview schema was modified without the overview +database being rebuilt, wrong results could be returned for extra fields +(especially a random portion of some other header). The desired header +name is now explicitly searched for in the overview information. + +=item * + +Fixed the source which is logged to the F log file for local +postings when the local server is not listed in F. +A wrong name was used, taken amongst known peers. The source is now +logged as C. + +=item * + +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.) + +The storage token now uses 4 bytes to store the article sequence number +for timecaf, instead of only 2 bytes. Thanks to Kamil Jonca for the +bug report and also the patch. + +=item * + +Fixed a bug in both timecaf and timehash which prevented them from working +on systems where short ints were not 16-bit integers. + +=item * + +When there is not enough space to write an entire CAF header, the timecaf +storage manager now uses a larger blocksize. On 32-bit systems, the CAF header +is about 300 bytes, leaving about 200 bytes for the free bitmap index +(the remaining of a 512-byte blocksize). On 64-bit systems, the size +of the CAF header could exceed 512 bytes, thus leaving no room for the +free bitmap index. A S<1 KB> blocksize is then used, or a larger +size if need be. + +=item * + +A new CNFS version has been introduced by Miquel van Smoorenburg in +the CNFS header. CNFSv4 uses S<4 KB> blocks instead of S<512 bytes>, +which more particularly makes writes faster. CNFSv4 supports +files/partitions up to S<16 TB> with a S<4 KB> blocksize. + +Existing CNFS buffers are kept unchanged; only new CNFS buffers are +initialized with that new version. + +=item * + +B 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 now also returns the hash +of the requested message-ID. + +=item * + +The check on cancel messages when I is set to true +in F has been changed to verify that at least one newsgroup +in the cancel message can be found in the article to be cancelled. +This new feature is from Christopher Biedl. + +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 +matching the target message. This requirement only encouraged cancel +issuers to conceal their identity and provided no security". + +=item * + +The way the C line in F works has changed. +History retention for an article was done according to its original +arrival time; it is now according to its original posting date. +Otherwise, unnecessary data may be kept too long in the F +file. + +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 B<-p> flag is passed to B +or B, in which case posting time is used. + +=item * + +The default value for C has changed from C<10> to C<11> +because it should be one more than the I parameter +in F, so that articles posted one day into the future +are properly retained in history. + +=item * + +B has been rewritten by Russ Allbery to use modern +Kerberos APIs. Note that using B with PAM support +and a Kerberos PAM module instead of this authenticator is still +recommended. + +=item * + +A new B<-L> flag has been added by Jonathan Kamens to B +so as to specify a load average limit. If the system load average exceeds +the specified limit, B sleeps until it goes below the limit. + +=item * + +As UTF-8 is the default character set in S, C, +C, C, C, C +and C commands now require the given reason to be encoded in UTF-8, +so that it can be properly sent to news readers. The creator's name given +to C is also expected to be encoded in UTF-8. + +=item * + +The output of consistency checks for article storage and the F +file no longer appears by default when C is used. A new B<-v> +flag has been added to B so as to see it. + +=item * + +The default path for TLS certificates has changed from I/lib +to I. It only affects new INN installations or generations of +certificates with C. Besides, a default value has been +added to I because it is required by B when TLS +is used. + +=item * + +gzip(1) is now the default UUCP batcher in B instead of +compress(1) because B is more widely available than B, +due to old patent issues. Note that there is no impact on decompression +as it is handled by B. + +=item * + +B now uses the Perl core module C rather +than the deprecated F library. When used without specifying +a CNFS buffer, it now properly displays the status of all CNFS buffers. + +=back + =head1 Upgrading from 2.4 to 2.5 The following changes require your full attention because a manual intervention @@ -256,7 +430,7 @@ allows to set the news user and the news runs. Thanks to Ivan Shmakov for this feature. New other options have been added to configuration files: I in -F, I, I and I in +F, I, I and I in F, and I in F. The B<--with-http-dir> option has also been added to C to set @@ -1643,6 +1817,6 @@ directory, for now). =back -$Id: news.pod 8485 2009-05-21 17:40:13Z iulius $ +$Id: news.pod 8657 2009-10-10 07:58:53Z iulius $ =cut diff -Nurp inn-2.5.0/doc/pod/newsfeeds.pod inn-2.5.1/doc/pod/newsfeeds.pod --- inn-2.5.0/doc/pod/newsfeeds.pod 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/pod/newsfeeds.pod 2009-10-12 11:24:04.000000000 -0700 @@ -212,7 +212,7 @@ which is then completely equivalent to: news.example.com:local.*,example.*:Tf,Wnm: Variables aren't solely simple substitution. If either C or C<@> -immediately preceeds the variable and the value of the variable contains +immediately preceds the variable and the value of the variable contains commas, that character will be duplicated before each comma. This somewhat odd-sounding behavior is designed to make it easier to use variables to construct feed patterns. The utility becomes more obvious @@ -794,7 +794,7 @@ the standard newsfeeds entries used by m Written by Rich $alz for InterNetNews. Reformatted and rewritten in POD by Russ Allbery . -$Id: newsfeeds.pod 8457 2009-05-09 17:57:19Z iulius $ +$Id: newsfeeds.pod 8517 2009-06-17 17:49:36Z iulius $ =head1 SEE ALSO diff -Nurp inn-2.5.0/doc/pod/nnrpd.pod inn-2.5.1/doc/pod/nnrpd.pod --- inn-2.5.0/doc/pod/nnrpd.pod 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/pod/nnrpd.pod 2009-10-12 11:24:04.000000000 -0700 @@ -141,7 +141,7 @@ B<-D> flag. If the B<-r> flag is used, then B will reject the incoming connection giving I as the text. This flag is used by innd(8) -when it is paused or throttled. +when it is paused or throttled. I should be encoded in UTF-8. =item B<-s> I @@ -180,12 +180,13 @@ warnings with some news reader clients), the default path by running C after C when installing INN, or by running the following commands: - openssl req -new -x509 -nodes -out /lib/cert.pem \ - -days 366 -keyout /lib/key.pem - chown news:news /lib/cert.pem - chmod 640 /lib/cert.pem - chown news:news /lib/key.pem - chmod 600 /lib/key.pem + umask 077 + openssl req -new -x509 -nodes -out /cert.pem \ + -days 366 -keyout /key.pem + chown news:news /cert.pem + chmod 640 /cert.pem + chown news:news /key.pem + chmod 600 /key.pem Replace the paths with something appropriate to your INN installation. This will create a self-signed certificate that will expire in a year. @@ -193,6 +194,15 @@ The B program will ask you a va organization. Enter the fully qualified domain name of the server as the name the certificate is for. +You then have to set these F parameters with the right paths: + + tlscapath: + tlscertfile: /cert.pem + tlskeyfile: /key.pem + +In case you have a certificate authority root certificate, you can also +set I to its path. + Most news clients currently do not use the STARTTLS command, however, and instead expect to connect to a separate port (563) and start a TLS negotiation immediately. B does not, however, know how to listen @@ -270,7 +280,7 @@ support added by Rob Robertston [B<-p>] [B<-f> I] + +=head1 DESCRIPTION + +B modifies a history(5)-format text file to "remove" +a set of tokens from it. The tokens are removed by overwriting +them with spaces, so that the size and position of any following entries +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 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 +an offset into the text file. Since B only appends to the text file, +B does not need to have any interaction with it. + +=head1 OPTIONS + +=over 4 + +=item B<-p> + +B will normally complain about lines that do not follow +the correct format. If the B<-p> flag is used, then the program will +silently print any invalid lines on its standard output. (Blank lines +and comment lines are also passed through.) + +This can be useful when B is used as a filter for other +programs such as B (a legacy program, probably no longer useful +with current versions of INN, but still available at +L). + +=item B<-f> I + +The default name of the F file is I/history; to specify +a different name, use the B<-f> flag. + +=back + +=head1 HISTORY + +Written by Rich $alz for InterNetNews. Converted to +POD by Julien Elie. + +$Id: prunehistory.pod 8592 2009-08-20 23:46:25Z eagle $ + +=head1 SEE ALSO + +dbz(3), history(5), innd(8). + +=cut diff -Nurp inn-2.5.0/doc/pod/qio.pod inn-2.5.1/doc/pod/qio.pod --- inn-2.5.0/doc/pod/qio.pod 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/pod/qio.pod 2009-10-12 11:24:04.000000000 -0700 @@ -84,7 +84,7 @@ users of this library should in general =head1 EXAMPLES This block of code opens F and reads it a line at a time, -printing out each line preceeded by its offset in the file. +printing out each line preceded by its offset in the file. QIOSTATE *qp; off_t offset; @@ -108,6 +108,6 @@ printing out each line preceeded by its Written by Rich $alz for InterNetNews. Updated by Russ Allbery . -$Id: qio.pod 7851 2008-05-26 19:33:08Z iulius $ +$Id: qio.pod 8517 2009-06-17 17:49:36Z iulius $ =cut diff -Nurp inn-2.5.0/doc/pod/rc.news.pod inn-2.5.1/doc/pod/rc.news.pod --- inn-2.5.0/doc/pod/rc.news.pod 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/pod/rc.news.pod 2009-10-12 11:24:04.000000000 -0700 @@ -11,7 +11,7 @@ B [start | stop] B can be used to start or stop B and supporting programs. It checks to make sure INN is not already running, handles cases of unclean shutdown, finishes up tasks which might have been interrupted by -the preceeding shutdown, e-mails certain boot-time warnings to +the preceding shutdown, e-mails certain boot-time warnings to I (as set in F), and is generally safer and easier than starting and stopping everything directly. It needs to be run as the news user so that files in I are created with the right ownership @@ -87,7 +87,7 @@ user ID. This manual page written by Jeffrey S for InterNetNews. -$Id: rc.news.pod 8200 2008-11-30 13:31:30Z iulius $ +$Id: rc.news.pod 8517 2009-06-17 17:49:36Z iulius $ =head1 SEE ALSO diff -Nurp inn-2.5.0/doc/pod/rnews.pod inn-2.5.1/doc/pod/rnews.pod --- inn-2.5.0/doc/pod/rnews.pod 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/pod/rnews.pod 2009-10-12 11:24:04.000000000 -0700 @@ -49,7 +49,7 @@ is more widely available, due to old pat Otherwise, if the command is any other word, then B will try to execute a program with that name, looking for it in the directory -I/bin/rnews.libexec. The rest of the batch will be fed to that +I/rnews.libexec. The rest of the batch will be fed to that program's standard input, and the standard output from the program will be treated as if it were the original input to B. INN comes with three such standard batch processors: @@ -133,7 +133,7 @@ them. (Neither can the rest of INN at p Written by Rich $alz for InterNetNews. Rewritten in POD by Russ Allbery . -$Id: rnews.pod 7851 2008-05-26 19:33:08Z iulius $ +$Id: rnews.pod 8537 2009-06-28 08:48:31Z iulius $ =head1 SEE ALSO diff -Nurp inn-2.5.0/doc/pod/uwildmat.pod inn-2.5.1/doc/pod/uwildmat.pod --- inn-2.5.0/doc/pod/uwildmat.pod 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/doc/pod/uwildmat.pod 2009-10-12 11:24:04.000000000 -0700 @@ -44,7 +44,7 @@ defined in the B header. A wildmat expression follows rules similar to those of shell filename wildcards but with some additions and changes. A wildmat I is composed of one or more wildmat I separated by commas. Each -character in the wildmat pattern matches a literal occurance of that same +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 @@ -171,7 +171,7 @@ substantial differences, including the e characters, and has noticable functionality changes. Any bugs present in it aren't Rich's fault. -$Id: uwildmat.pod 7585 2006-11-21 09:37:51Z eagle $ +$Id: uwildmat.pod 8567 2009-08-15 07:03:37Z iulius $ =head1 SEE ALSO diff -Nurp inn-2.5.0/expire/Makefile inn-2.5.1/expire/Makefile --- inn-2.5.0/expire/Makefile 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/expire/Makefile 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -## $Id: Makefile 8409 2009-04-11 22:13:41Z iulius $ +## $Id: Makefile 8556 2009-08-05 21:01:48Z iulius $ include ../Makefile.global @@ -98,32 +98,36 @@ expire.o: expire.c ../include/config.h . ../include/inn/innconf.h ../include/inn/messages.h \ ../include/inn/inndcomm.h ../include/inn/libinn.h \ ../include/inn/newsuser.h ../include/config.h ../include/clibrary.h \ - ../include/inn/paths.h ../include/inn/storage.h + ../include/inn/paths.h ../include/inn/storage.h \ + ../include/inn/options.h expireover.o: expireover.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/innconf.h ../include/inn/defines.h \ ../include/inn/libinn.h ../include/inn/messages.h \ ../include/inn/newsuser.h ../include/config.h ../include/clibrary.h \ - ../include/inn/ov.h ../include/inn/storage.h ../include/inn/history.h \ - ../include/inn/paths.h ../include/inn/qio.h ../include/inn/storage.h + ../include/inn/ov.h ../include/inn/storage.h ../include/inn/options.h \ + ../include/inn/history.h ../include/inn/paths.h ../include/inn/qio.h \ + ../include/inn/storage.h fastrm.o: fastrm.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/innconf.h ../include/inn/defines.h \ ../include/inn/messages.h ../include/inn/qio.h ../include/inn/libinn.h \ - ../include/inn/storage.h + ../include/inn/storage.h ../include/inn/options.h grephistory.o: grephistory.c ../include/clibrary.h ../include/config.h \ ../include/inn/defines.h ../include/inn/system.h \ ../include/inn/options.h ../include/inn/history.h \ ../include/inn/defines.h ../include/inn/innconf.h \ ../include/inn/messages.h ../include/inn/libinn.h \ - ../include/inn/paths.h ../include/inn/storage.h + ../include/inn/paths.h ../include/inn/storage.h \ + ../include/inn/options.h makedbz.o: makedbz.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ - ../include/config.h ../include/dbz.h ../include/inn/libinn.h \ + ../include/config.h ../include/inn/dbz.h ../include/inn/libinn.h \ ../include/inn/defines.h ../include/inn/innconf.h \ ../include/inn/libinn.h ../include/inn/messages.h \ ../include/inn/newsuser.h ../include/config.h ../include/clibrary.h \ - ../include/inn/paths.h ../include/inn/qio.h ../include/inn/storage.h + ../include/inn/paths.h ../include/inn/qio.h ../include/inn/storage.h \ + ../include/inn/options.h makehistory.o: makehistory.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/portable/wait.h ../include/config.h \ @@ -131,9 +135,9 @@ makehistory.o: makehistory.c ../include/ ../include/inn/history.h ../include/inn/innconf.h \ ../include/inn/libinn.h ../include/inn/messages.h \ ../include/inn/newsuser.h ../include/config.h ../include/clibrary.h \ - ../include/inn/ov.h ../include/inn/storage.h ../include/inn/history.h \ - ../include/inn/paths.h ../include/inn/qio.h ../include/inn/storage.h \ - ../include/inn/vector.h ../include/inn/wire.h + ../include/inn/ov.h ../include/inn/storage.h ../include/inn/options.h \ + ../include/inn/history.h ../include/inn/paths.h ../include/inn/qio.h \ + ../include/inn/storage.h ../include/inn/vector.h ../include/inn/wire.h prunehistory.o: prunehistory.c ../include/config.h \ ../include/inn/defines.h ../include/inn/system.h \ ../include/inn/options.h ../include/clibrary.h ../include/config.h \ diff -Nurp inn-2.5.0/expire/expire.c inn-2.5.1/expire/expire.c --- inn-2.5.0/expire/expire.c 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/expire/expire.c 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: expire.c 7703 2008-01-12 09:22:18Z iulius $ +/* $Id: expire.c 8574 2009-08-18 13:51:41Z iulius $ ** ** Expire news articles. */ @@ -534,7 +534,7 @@ main(int ac, char *av[]) } /* Parse JCL. */ - while ((i = getopt(ac, av, "f:h:d:g:iNnpr:s:tv:w:xz:")) != EOF) + while ((i = getopt(ac, av, "d:f:g:h:iNnpr:s:tv:w:xz:")) != EOF) switch (i) { default: Usage(); diff -Nurp inn-2.5.0/expire/expireover.c inn-2.5.1/expire/expireover.c --- inn-2.5.0/expire/expireover.c 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/expire/expireover.c 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: expireover.c 8418 2009-04-12 21:08:22Z iulius $ +/* $Id: expireover.c 8574 2009-08-18 13:51:41Z iulius $ ** ** Expire the overview database. ** @@ -25,7 +25,7 @@ #include "inn/storage.h" static const char usage[] = "\ -Usage: expireover [-ekNpqs] [-w offset] [-z rmfile] [-Z lowmarkfile]\n"; +Usage: expireover [-ekNpqs] [-f file] [-w offset] [-z rmfile] [-Z lowmarkfile]\n"; /* Set to 1 if we've received a signal; expireover then terminates after finishing the newsgroup that it's working on (this prevents corruption of diff -Nurp inn-2.5.0/expire/expirerm.in inn-2.5.1/expire/expirerm.in --- inn-2.5.0/expire/expirerm.in 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/expire/expirerm.in 2009-10-12 11:24:04.000000000 -0700 @@ -1,6 +1,8 @@ #! /bin/sh # fixscript will replace this line with code to load innshellvars +## $Id: expirerm.in 8576 2009-08-18 13:55:11Z iulius $ +## ## Remove articles listed by expire -z. ## Remove all files specified in the input file. @@ -25,6 +27,6 @@ eval "cd ${SPOOL} \ && mv $1 ${MOST_LOGS}/expire.list" if [ -f $1 ] ; then echo "Expire had problems removing articles on `hostname`" \ - | eval ${MAIL} + | eval ${MAIL} exit 1 fi diff -Nurp inn-2.5.0/expire/fastrm.c inn-2.5.1/expire/fastrm.c --- inn-2.5.0/expire/fastrm.c 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/expire/fastrm.c 2009-10-12 11:24:04.000000000 -0700 @@ -1,8 +1,8 @@ -/* $Id: fastrm.c 8225 2008-12-14 05:05:09Z eagle $ +/* $Id: fastrm.c 8576 2009-08-18 13:55:11Z iulius $ ** ** Delete a list of filenames or tokens from stdin. ** -** Originally written by (to only handle files) +** Originally written by (to only handle files). ** ** Files that can't be unlinked because they didn't exist are considered ** okay. Any error condition results in exiting with non-zero exit diff -Nurp inn-2.5.0/expire/grephistory.c inn-2.5.1/expire/grephistory.c --- inn-2.5.0/expire/grephistory.c 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/expire/grephistory.c 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: grephistory.c 7585 2006-11-21 09:37:51Z eagle $ +/* $Id: grephistory.c 8580 2009-08-18 20:19:00Z iulius $ ** ** Get data from history database. */ @@ -135,7 +135,7 @@ main(int ac, char *av[]) /* NOTREACHED */ } - /* All modes other than -i -l want a Message-ID. */ + /* All modes other than -i and -l want a message-ID. */ if (ac != 1) Usage(); @@ -161,8 +161,16 @@ main(int ac, char *av[]) else if (What != 'q') { if (HISlookup(history, key, &arrived, &posted, &expires, &token)) { if (What == 'l') { - printf("[]\t%ld~-~%ld\t%s\n", (long)arrived, (long)posted, - TokenToText(token)); + if (expires <= 0) { + printf("[%s]\t%ld~-~%ld\t%s\n", + HashToText(HashMessageID(key)), + (long)arrived, (long)posted, TokenToText(token)); + } else { + printf("[%s]\t%ld~%ld~%ld\t%s\n", + HashToText(HashMessageID(key)), + (long)arrived, (long)expires, (long)posted, + TokenToText(token)); + } } else { if (Verbosity > 0) @@ -172,8 +180,12 @@ main(int ac, char *av[]) printf("%s\n", TokenToText(token)); } } - else if (What == 'n') - printf("/dev/null\n"); + else if (What == 'n') { + if (Verbosity > 0) + printf("/dev/null (hash is %s)\n", HashToText(HashMessageID(key))); + else + printf("/dev/null\n"); + } } HISclose(history); return 0; diff -Nurp inn-2.5.0/expire/makedbz.c inn-2.5.1/expire/makedbz.c --- inn-2.5.0/expire/makedbz.c 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/expire/makedbz.c 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: makedbz.c 7703 2008-01-12 09:22:18Z iulius $ +/* $Id: makedbz.c 8556 2009-08-05 21:01:48Z iulius $ ** ** Rebuild dbz file for history db. */ @@ -8,7 +8,7 @@ #include #include -#include "dbz.h" +#include "inn/dbz.h" #include "inn/innconf.h" #include "inn/libinn.h" #include "inn/messages.h" diff -Nurp inn-2.5.0/expire/makehistory.c inn-2.5.1/expire/makehistory.c --- inn-2.5.0/expire/makehistory.c 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/expire/makehistory.c 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: makehistory.c 8409 2009-04-11 22:13:41Z iulius $ +/* $Id: makehistory.c 8535 2009-06-23 18:09:56Z iulius $ ** ** Rebuild history/overview databases. */ @@ -24,8 +24,28 @@ #include "inn/vector.h" #include "inn/wire.h" +/* +** If we have getloadavg, include the appropriate header file. Otherwise, +** just assume that we always have a load of 0. +*/ +#if HAVE_GETLOADAVG +# if HAVE_SYS_LOADAVG_H +# include +# endif +#else +static int +getloadavg(double loadavg[], int nelem) +{ + int i; + + for (i = 0; i < nelem && i < 3; i++) + loadavg[i] = 0; + return i; +} +#endif + static const char usage[] = "\ -Usage: makehistory [-abFIOSx] [-f file] [-l count] [-s size] [-T tmpdir]\n\ +Usage: makehistory [-abFIOSx] [-f file] [-l count] [-L load] [-s size] [-T tmpdir]\n\ \n\ -a open output history file in append mode\n\ -b delete bad articles from spool\n\ @@ -33,6 +53,7 @@ Usage: makehistory [-abFIOSx] [-f file] -f file write history entries to file (default $pathdb/history)\n\ -I do not create overview for articles numbered below lowmark\n\ -l count size of overview updates (default 10000)\n\ + -L load pause when load average exceeds threshold\n\ -O create overview entries for articles\n\ -S write overview data to standard output\n\ -s size size new history database for approximately size entries\n\ @@ -810,6 +831,8 @@ main(int argc, char **argv) { ARTHANDLE *art = NULL; bool AppendMode; + int LoadAverage; + double load[1]; int i; bool val; char *HistoryDir; @@ -837,9 +860,10 @@ main(int argc, char **argv) DoOverview = false; Fork = false; AppendMode = false; + LoadAverage = 0; NoHistory = false; - while ((i = getopt(argc, argv, "abFf:Il:OSs:T:x")) != EOF) { + while ((i = getopt(argc, argv, "abFf:Il:L:OSs:T:x")) != EOF) { switch(i) { case 'a': AppendMode = true; @@ -859,6 +883,9 @@ main(int argc, char **argv) case 'l': OverTmpSegSize = atoi(optarg); break; + case 'L': + LoadAverage = atoi(optarg); + break; case 'O': DoOverview = true; break; @@ -956,7 +983,7 @@ main(int argc, char **argv) /* * Scan the entire spool, nuke any bad arts if needed, and process each - * article. + * article. We take a break when the load is too high. */ while ((art = SMnext(art, RETR_ALL)) != NULL) { @@ -965,7 +992,15 @@ main(int argc, char **argv) SMcancel(*art->token); continue; } + DoArt(art); + + if (LoadAverage > 0) { + while (getloadavg(load, 1) > 0 && + (int) (load[0]) >= LoadAverage) { + sleep(1); + } + } } if (!NoHistory) { diff -Nurp inn-2.5.0/expire/prunehistory.c inn-2.5.1/expire/prunehistory.c --- inn-2.5.0/expire/prunehistory.c 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/expire/prunehistory.c 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: prunehistory.c 7585 2006-11-21 09:37:51Z eagle $ +/* $Id: prunehistory.c 8584 2009-08-20 21:54:07Z iulius $ ** ** Prune file names from history file. */ @@ -21,7 +21,7 @@ static void Usage(void) { - fprintf(stderr, "Usage: prunehistory [-p] [-f file] [input]\n"); + fprintf(stderr, "Usage: prunehistory [-p] [-f file]\n"); exit(1); } diff -Nurp inn-2.5.0/frontends/Makefile inn-2.5.1/frontends/Makefile --- inn-2.5.0/frontends/Makefile 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/frontends/Makefile 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -## $Id: Makefile 7852 2008-05-26 19:52:45Z iulius $ +## $Id: Makefile 8533 2009-06-21 20:14:05Z iulius $ include ../Makefile.global @@ -169,8 +169,9 @@ ovdb_init.o: ovdb_init.c ../include/conf ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/libinn.h ../include/inn/defines.h \ ../include/inn/innconf.h ../include/inn/messages.h ../include/inn/ov.h \ - ../include/inn/storage.h ../include/inn/history.h \ - ../storage/ovdb/ovdb.h ../storage/ovdb/ovdb-private.h + ../include/inn/storage.h ../include/inn/options.h \ + ../include/inn/history.h ../storage/ovdb/ovdb.h \ + ../storage/ovdb/ovdb-private.h ovdb_monitor.o: ovdb_monitor.c ../include/config.h \ ../include/inn/defines.h ../include/inn/system.h \ ../include/inn/options.h ../include/clibrary.h ../include/config.h \ @@ -178,8 +179,8 @@ ovdb_monitor.o: ovdb_monitor.c ../includ ../include/portable/wait.h ../include/inn/innconf.h \ ../include/inn/defines.h ../include/inn/messages.h \ ../include/inn/libinn.h ../include/inn/ov.h ../include/inn/storage.h \ - ../include/inn/history.h ../storage/ovdb/ovdb.h \ - ../storage/ovdb/ovdb-private.h + ../include/inn/options.h ../include/inn/history.h \ + ../storage/ovdb/ovdb.h ../storage/ovdb/ovdb-private.h ovdb_server.o: ovdb_server.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/portable/mmap.h ../include/config.h \ @@ -188,15 +189,17 @@ ovdb_server.o: ovdb_server.c ../include/ ../include/portable/getnameinfo.h ../include/portable/wait.h \ ../include/inn/innconf.h ../include/inn/defines.h \ ../include/inn/messages.h ../include/inn/libinn.h \ - ../include/inn/paths.h ../include/inn/storage.h ../include/inn/ov.h \ - ../include/inn/storage.h ../include/inn/history.h \ - ../storage/ovdb/ovdb.h ../storage/ovdb/ovdb-private.h + ../include/inn/paths.h ../include/inn/storage.h \ + ../include/inn/options.h ../include/inn/ov.h ../include/inn/storage.h \ + ../include/inn/history.h ../storage/ovdb/ovdb.h \ + ../storage/ovdb/ovdb-private.h ovdb_stat.o: ovdb_stat.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/innconf.h ../include/inn/defines.h \ ../include/inn/messages.h ../include/inn/libinn.h ../include/inn/ov.h \ - ../include/inn/storage.h ../include/inn/history.h \ - ../include/inn/paths.h ../include/inn/storage.h ../storage/ovdb/ovdb.h \ + ../include/inn/storage.h ../include/inn/options.h \ + ../include/inn/history.h ../include/inn/paths.h \ + ../include/inn/storage.h ../storage/ovdb/ovdb.h \ ../storage/ovdb/ovdb-private.h rnews.o: rnews.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ @@ -204,10 +207,12 @@ rnews.o: rnews.c ../include/config.h ../ ../include/inn/innconf.h ../include/inn/defines.h \ ../include/inn/libinn.h ../include/inn/messages.h \ ../include/inn/newsuser.h ../include/config.h ../include/clibrary.h \ - ../include/inn/paths.h ../include/inn/storage.h ../include/inn/wire.h \ - ../include/nntp.h ../include/inn/nntp.h + ../include/inn/paths.h ../include/inn/storage.h \ + ../include/inn/options.h ../include/inn/wire.h ../include/nntp.h \ + ../include/inn/nntp.h sm.o: sm.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/buffer.h ../include/inn/defines.h \ ../include/inn/innconf.h ../include/inn/messages.h ../include/inn/qio.h \ - ../include/inn/wire.h ../include/inn/libinn.h ../include/inn/storage.h + ../include/inn/wire.h ../include/inn/libinn.h ../include/inn/storage.h \ + ../include/inn/options.h diff -Nurp inn-2.5.0/frontends/cnfsheadconf.in inn-2.5.1/frontends/cnfsheadconf.in --- inn-2.5.0/frontends/cnfsheadconf.in 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/frontends/cnfsheadconf.in 2009-10-12 11:24:04.000000000 -0700 @@ -1,8 +1,8 @@ -#! /usr/bin/perl +#! /usr/bin/perl -w # fixscript will replace this line with code to load INN::Config -# $Id: cnfsheadconf.in 7818 2008-05-05 16:20:04Z iulius $ -# +# $Id: cnfsheadconf.in 8613 2009-09-07 08:14:53Z iulius $ +# # Copyright Andreas Lamrecht 1998 # # @@ -11,7 +11,7 @@ # # Modified by Robert R. Collier 1998 # -# +# # bigint support added by Duane Currie (sandman@hub.org) 1998 # # cnfsheadconf is originally from cnfsstat 1999 @@ -20,60 +20,51 @@ use vars qw($opt_h $opt_w); use Getopt::Long; -# required for >32bit ints -require 'bigint.pl'; +# Required for >32bit integers. +use Math::BigInt; +use Math::BigFloat; my($conffile) = "$INN::Config::pathetc/cycbuff.conf"; my($storageconf) = "$INN::Config::pathetc/storage.conf"; -# Hex to bigint conversion routine -# bhex(HEXSTRING) returns BIGINT (with leading + chopped off) +# Hex to bigint conversion routine. +# bhex(HEXSTRING) returns BIGINT (with leading + chopped off). +# +# In most languages, unlimited size integers are done using string math +# libraries usually called bigint. (Java, Perl, etc.) # -# In most langauge, unlimited size integers are done using string math -# libraries usually called bigint. (Java, Perl, etc...) - # Bigint's are really just strings. -# Mathematics routines for bigint's: - -# bneg(BINT) return BINT negation -# babs(BINT) return BINT absolute value -# bcmp(BINT,BINT) return CODE compare numbers (undef,<0,=0,>0) -# badd(BINT,BINT) return BINT addition -# bsub(BINT,BINT) return BINT subtraction -# bmul(BINT,BINT) return BINT multiplication -# bdiv(BINT,BINT) return (BINT,BINT) division (quo,rem) just quo if scalar -# bmod(BINT,BINT) return BINT modulus -# bgcd(BINT,BINT) return BINT greatest common divisor -# bnorm(BINT) return BINT normalization - sub bhex { my $hexValue = shift; $hexValue =~ s/^0x//; - my $integerValue = '0'; + my $integerValue = Math::BigInt->new('0'); for (my $i = 0; $i < length($hexValue); $i+=2) { # Could be more efficient going at larger increments, but byte - # by byte is safer for the case of 9 byte values, 11 bytes, etc.. + # by byte is safer for the case of 9 byte values, 11 bytes, etc. - my $byte = substr($hexValue,$i,2); + my $byte = substr($hexValue, $i, 2); my $byteIntValue = hex($byte); - $integerValue = bmul($integerValue,'256'); - $integerValue = badd($integerValue,"$byteIntValue"); - } - - $integerValue =~ s/^\+//; - return $integerValue; + # bmuladd() is only in Perl >= 5.10.0. + $integerValue->bmul('256'); + $integerValue->badd("$byteIntValue"); } + my $result = $integerValue->bstr(); + $result =~ s/^\+//; + return $result; +} + sub bint2hex { - my $d = shift; - my $o = 0; + my $d = shift; + my $o = "0"; - while ($d > 0) { - my $h = bmod("$d",'16'); - $d = bdiv("$d",'16'); + my $integerValue = Math::BigInt->new("$d"); + while ($integerValue->is_pos() and not $integerValue->is_zero()) { + my $h = $integerValue->copy()->bmod('16')->bstr(); + $integerValue->bdiv('16'); $h =~ s/^\+//; $h='a' if $h eq '10'; $h='b' if $h eq '11'; @@ -81,10 +72,10 @@ sub bint2hex { $h='d' if $h eq '13'; $h='e' if $h eq '14'; $h='f' if $h eq '15'; - $h =~ s/^\+//; - $o="$h$o"; + $o="$h$o"; } + # The result ends with a "0". return "$o"; } @@ -93,12 +84,12 @@ sub usage { Summary tool for cycbuff header manipulation Usage: - $0 [-c CYCBUFF] [-h] [-w] + $0 [-c CYCBUFF] [-h] [-w] - If called without args, does a one-time status of all CNFS buffers - -c : prints out status of cycbuff - -w: change header - -h: This information + If called without args, does a one-time status of all CNFS buffers. + -c : print out status of cycbuff + -h: this information + -w: change header _end_ exit(1); } @@ -207,10 +198,19 @@ sub read_storageconf { START: -if (! $buff{$cycbuff} ) { - print STDERR "No buffer definition for buffer $cycbuff ...\n"; - exit(1); +# If no cycbuff is specified, we check all of them and exit. +if (not defined $cycbuff) { + foreach (sort keys %buff) { + &print_cycbuff_head($buff{$_}); + } + exit(0); } + +if (not defined $buff{$cycbuff}) { + print STDERR "No buffer definition for buffer $cycbuff...\n"; + exit(1); +} + &print_cycbuff_head($buff{$cycbuff}); sub make_time { @@ -238,9 +238,9 @@ sub print_cycbuff_head { my($CNFSNASIZ)=16; my($CNFSPASIZ)=64; my($CNFSLASIZ)=16; - my($headerlength) = 2 * $CNFSMASIZ + 2 * $CNFSNASIZ + $CNFSPASIZ + (5 * $CNFSLASIZ); + my($headerlength) = 2 * $CNFSMASIZ + 2 * $CNFSNASIZ + $CNFSPASIZ + (6 * $CNFSLASIZ); my($buff, @entries, $e); - my($magic, $name, $path, $lena, $freea, $updatea, $cyclenuma, $metaname, $orderinmeta, $currentbuff); + my($magic, $name, $path, $lena, $freea, $updatea, $cyclenuma, $metaname, $orderinmeta, $currentbuff, $blksza); if ($opt_w) { if(! open(BUFF, "+< $buffpath") ) { @@ -259,8 +259,8 @@ sub print_cycbuff_head { print STDERR "Cannot read $headerlength bytes from file $buffpath...\n"; exit(1); } - - ($magic, $name, $path, $lena, $freea, $updatea, $cyclenuma, $metaname, $orderinmeta, $currentbuff) = unpack("a8 a16 a64 a16 a16 a16 a16 a16 a16 a8", $buff); + + ($magic, $name, $path, $lena, $freea, $updatea, $cyclenuma, $metaname, $orderinmeta, $currentbuff, $blksza) = unpack("a8 a16 a64 a16 a16 a16 a16 a16 a16 a8 a16", $buff); if(!$magic) { print STDERR "Error while unpacking header ...\n"; @@ -271,20 +271,24 @@ sub print_cycbuff_head { my($free) = bhex($freea); my($update) = hex($updatea); my($cyclenum) = hex($cyclenuma) - 1; + my($blksz) = ($magic =~ m/^CBuf4/) ? hex($blksza) : 512; my ($nupdate_str, $nago_str) = &make_time ($update); $name =~ s/\0//g; print " Buffer $name, len: "; - printf("%.2f", $len / (1024 * 1024)); + printf("%.2f", Math::BigFloat->new($len) / (1024 * 1024)); print " Mbytes, used: "; - printf("%.2f Mbytes", $free / (1024 * 1024)); - printf(" (%4.1f%%) %3d cycles\n", 100 * $free/$len, $cyclenum); - print(" Meta $metaname, order: "); + printf("%.2f Mbytes", Math::BigFloat->new($free) / (1024 * 1024)); + printf(" (%4.1f%%) %3d cycles\n", + 100 * Math::BigFloat->new($free) / Math::BigFloat->new($len), + $cyclenum); + print(" Meta $metaname, order: "); printf("%d", $orderinmeta); print(", current: $currentbuff"); - - print "\n Newest: $nupdate_str, $nago_str ago\n"; + print(", blocksize: $blksz"); + + print "\n Newest: $nupdate_str, $nago_str ago\n"; if ($opt_w) { print "\nBuffer [$name] => "; @@ -332,6 +336,7 @@ sub print_cycbuff_head { $currentbuff = sprintf("%0.8s", $in); } $buff = pack("a8 a16 a64 a16 a16 a16 a16 a16 a16 a8", $magic, $name, $path, $lena, $freea, $updatea, $cyclenuma, $metaname, $orderinmeta, $currentbuff); + $buff .= pack("a16", $blksza) if ($magic =~ m/^CBuf4/); seek(BUFF, 0, 0); if(! syswrite(BUFF, $buff, $headerlength) ) { print STDERR "Cannot write $headerlength bytes to file $buffpath...\n"; diff -Nurp inn-2.5.0/frontends/cnfsstat.in inn-2.5.1/frontends/cnfsstat.in --- inn-2.5.0/frontends/cnfsstat.in 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/frontends/cnfsstat.in 2009-10-12 11:24:04.000000000 -0700 @@ -1,8 +1,8 @@ #! /usr/bin/perl -w # fixscript will replace this line with code to load INN::Config -# $Id: cnfsstat.in 8183 2008-11-22 17:55:22Z iulius $ -# +# $Id: cnfsstat.in 8613 2009-09-07 08:14:53Z iulius $ +# # Copyright Andreas Lamrecht 1998 # # @@ -11,10 +11,10 @@ # # Modified by Robert R. Collier 1998 # -# +# # bigint support added by Duane Currie (sandman@hub.org) 1998 -use vars qw($opt_l $opt_h $opt_a $opt_s $opt_p $opt_P); +use vars qw($opt_a $opt_h $opt_l $opt_p $opt_P $opt_s $opt_v); use Getopt::Long; use Math::BigInt; use Math::BigFloat; @@ -28,17 +28,18 @@ sub usage { Summary tool for CNFS Usage: - $0 [-c CLASS] [-l [seconds]] + $0 [-ahpPsv] [-c class] [-l [seconds]] [-m buffer] If called without args, does a one-time status of all CNFS buffers - -a: print the age of the oldest article in the cycbuff - -c : prints out status of CNFS buffers in class CLASS - -l seconds: loops like vmstat, default seconds = 600 - -s: logs through syslog - -h: this information - -m : prints out information suitable for MRTG - -p: prints out an MRTG config file - -P: write PID into $INN::Config::pathrun/cnfsstat.pid + -a: print the age of the oldest article in the cycbuff + -c class: print out status of CNFS buffers in that class + -h: this information + -l [seconds]: loop like vmstat, default seconds = 600 + -m buffer: print out information suitable for MRTG + -p: print out an MRTG config file + -P: write PID into $INN::Config::pathrun/cnfsstat.pid + -s: log through syslog + -v: do consistency checks and print the result _end_ exit(1); } @@ -49,8 +50,8 @@ my($gr, $cl, $min, $max, @storsort, $ocl my $use_syslog = 0; Getopt::Long::config('no_ignore_case'); -GetOptions("-a", "-c=s", \$oclass, "-h", "-l:i", "-s", "-m=s", \$obuffer, - "-p", "-P"); +GetOptions("-a", "-c=s", \$oclass, "-h", "-l:i", "-m=s", \$obuffer, + "-p", "-P", "-s", "-v"); &usage if $opt_h; @@ -107,9 +108,9 @@ if ($oclass) { ($gr, $cl, $min, $max) = split(/:/, $stor{$oclass}); if ($use_syslog) { if ($min || $max) { - $logline = sprintf("Class %s for groups matching \"%s\" article size min/max: %d/%d", $oclass, $gr, $min, $max); + $logline = sprintf("Class %s for groups matching \"%s\" article size min/max: %d/%d", $oclass, $gr, $min, $max); } else { - $logline = sprintf("Class %s for groups matching \"%s\"", $oclass, $gr); + $logline = sprintf("Class %s for groups matching \"%s\"", $oclass, $gr); } } else { print STDOUT "Class $oclass"; @@ -139,14 +140,14 @@ if ($oclass) { print STDERR "Class $ARGV[1] not found ...\n"; } } else { # Print all Classes - + foreach $c (@storsort) { ($gr, $cl, $min, $max) = split(/:/, $stor{$c}); if ($use_syslog) { if ($min || $max) { - $logline = sprintf("Class %s for groups matching \"%s\" article size min/max: %d/%d", $c, $gr, $min, $max); + $logline = sprintf("Class %s for groups matching \"%s\" article size min/max: %d/%d", $c, $gr, $min, $max); } else { - $logline = sprintf("Class %s for groups matching \"%s\"", $c, $gr); + $logline = sprintf("Class %s for groups matching \"%s\"", $c, $gr); } } else { print STDOUT "Class $c "; @@ -255,7 +256,7 @@ sub read_storageconf { $key{'SIZE'} .= ",0" unless $key{'SIZE'} =~ /,/; $key{'SIZE'} =~ s/,/:/; - + if (!defined $stor{$key{'OPTIONS'}}) { $stor{$key{'OPTIONS'}} = "$key{'NEWSGROUPS'}:$key{'CLASS'}:" . "$key{'SIZE'}:$key{'OPTIONS'}"; @@ -270,21 +271,21 @@ sub print_cycbuff_head { my ($buffpath) = $_[0]; my ($name, $len, $free, $update, $cyclenum, $oldart) = &get_cycbuff_info($buffpath); - + if ($use_syslog) { ($name) = split(/\s/, $name); $name =~ s/\0//g; syslog ('notice', '%s Buffer %s, len: %.2f Mbytes, used: %.2f Mbytes (%4.1f%%) %3d cycles', - $logline, $name, $len / (1024 * 1024), - Math::BigFloat->new ($free) / (1024 * 1024), - 100 * Math::BigFloat->new ($free) / $len, $cyclenum); + $logline, $name, Math::BigFloat->new($len) / (1024 * 1024), + Math::BigFloat->new($free) / (1024 * 1024), + 100 * Math::BigFloat->new($free) / Math::BigFloat->new($len), $cyclenum); return 0; } $name =~ s/\0//g; print " Buffer $name, size: ", &human_readable($len, 4); print ", position: ", &human_readable($free, 4); - printf(" %.2f cycles\n", $cyclenum + Math::BigFloat->new ($free) / $len); + printf(" %.2f cycles\n", $cyclenum + Math::BigFloat->new($free) / Math::BigFloat->new($len)); my ($when, $ago) = &make_time($update); print " Newest: $when, $ago ago\n"; @@ -322,7 +323,7 @@ sub human_readable { my $factor = 1024; my $unit = -1; - my $oldscaled = Math::BigFloat->new ($val) / $base; + my $oldscaled = Math::BigFloat->new($val) / $base; my $scaled = $oldscaled; while ( ( int($scaled) > 0 ) && ( $unit < $#name ) ) { $oldscaled = $scaled; @@ -365,7 +366,7 @@ sub mrtg_buffer { #my ($name, $num, $buff, $size) = @_; $tag = 'cnfs-' . $buffer; - print 'Target[', $tag, ']: `', "$INN::Config::pathbin/cnfsstat -m ", $buffer, '`', "\n"; + print 'Target[', $tag, ']: `', "$INN::Config::pathbin/cnfsstat -m ", $buffer, '`', "\n"; print 'MaxBytes[', $tag, ']: ', (&get_cycbuff_info($buff{$buffer}))[1], "\n"; print 'Title[', $tag, ']: ', "${buffer} Usage\n"; print 'Options[', $tag, ']: growright gauge', "\n"; @@ -410,44 +411,47 @@ sub check_read_return { sub get_cycbuff_info { my($buffpath) = $_[0]; - + my($CNFSMASIZ)=8; my($CNFSNASIZ)=16; my($CNFSPASIZ)=64; my($CNFSLASIZ)=16; - my($headerlength) = $CNFSMASIZ + $CNFSNASIZ + $CNFSPASIZ + (4 * $CNFSLASIZ); - + my($headerlength) = 2 * $CNFSMASIZ + 2 * $CNFSNASIZ + $CNFSPASIZ + (6 * $CNFSLASIZ); + my($buff, @entries, $e); my($magic, $name, $path, $lena, $freea, $updatea, $cyclenuma); - + if(! open(BUFF, "< $buffpath") ) { print STDERR "Cannot open Cycbuff $buffpath ...\n"; exit(1); } - + $buff = ""; if(! read(BUFF, $buff, $headerlength) ) { print STDERR "Cannot read $headerlength bytes from file $buffpath...\n"; exit(1); } - - ($magic, $name, $path, $lena, $freea, $updatea, $cyclenuma) = - unpack("a8 a16 a64 a16 a16 a16 a16", $buff); - + + use vars qw($metaname $orderinmeta $currentbuff); + ($magic, $name, $path, $lena, $freea, $updatea, $cyclenuma, $metaname, + $orderinmeta, $currentbuff, $blksza) = + unpack("a8 a16 a64 a16 a16 a16 a16 a16 a16 a8 a16", $buff); + if(!$magic) { print STDERR "Error while unpacking header ...\n"; exit(1); } - + my($len) = bhex($lena); my($free) = bhex($freea); my($update) = hex($updatea); my($cyclenum) = hex($cyclenuma) - 1; - + my($blksz) = ($magic =~ m/^CBuf4/) ? hex($blksza) : 512; + if ($opt_a) { my $pagesize = 16384; - my $minartoffset = int($len / (512 * 8)) + 512; + my $minartoffset = int($len / ($blksz * 8)) + 512; # Align upwards: $minartoffset = ($minartoffset + $pagesize) & ~($pagesize - 1); @@ -464,7 +468,7 @@ sub get_cycbuff_info { check_read_return (sysread (BUFF, $buff, $pagesize)); do { check_read_return (sysread (BUFF, $chunk, $pagesize)); - + $buff .= $chunk; while ($buff =~ /^message-id:\s+(<.*?>)/mi) { $buff = $POSTMATCH; @@ -480,12 +484,12 @@ sub get_cycbuff_info { } # Just in case we chopped Message-ID in two, use the end # at the front in next iteration. - $buff = substr ($buff, -512); + $buff = substr ($buff, -$blksz); } while ($sentinel -= $pagesize > 0); } -done: +done: close(BUFF); return($name,$len,$free,$update,$cyclenum,$oldart); } @@ -497,7 +501,11 @@ sub lookup_age { if ($history =~ /\t(\d+)~/) { return $1; } - print " (Missing $msgid)\n"; + + if ($opt_v) { + print " (Missing $msgid)\n"; + } + return 0; } @@ -518,30 +526,32 @@ sub safe_run { return $output; } -# Hex to bigint conversion routine -# bhex(HEXSTRING) returns BIGINT (with leading + chopped off) +# Hex to bigint conversion routine. +# bhex(HEXSTRING) returns BIGINT (with leading + chopped off). # # In most languages, unlimited size integers are done using string math -# libraries usually called bigint. (Java, Perl, etc...) - +# libraries usually called bigint. (Java, Perl, etc.) +# # Bigint's are really just strings. sub bhex { my $hexValue = shift; $hexValue =~ s/^0x//; - - my $integerValue = new Math::BigInt '0'; + + my $integerValue = Math::BigInt->new('0'); for (my $i = 0; $i < length($hexValue); $i += 2) { # Could be more efficient going at larger increments, but byte - # by byte is safer for the case of 9 byte values, 11 bytes, etc.. - + # by byte is safer for the case of 9 byte values, 11 bytes, etc. + my $byte = substr($hexValue, $i, 2); my $byteIntValue = hex($byte); - $integerValue = $integerValue * "256"; - $integerValue = $integerValue + "$byteIntValue"; + # bmuladd() is only in Perl >= 5.10.0. + $integerValue->bmul('256'); + $integerValue->badd("$byteIntValue"); } - $integerValue =~ s/^\+//; - return $integerValue; + my $result = $integerValue->bstr(); + $result =~ s/^\+//; + return $result; } diff -Nurp inn-2.5.0/history/Makefile inn-2.5.1/history/Makefile --- inn-2.5.0/history/Makefile 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/history/Makefile 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -## $Id: Makefile 7585 2006-11-21 09:37:51Z eagle $ +## $Id: Makefile 8556 2009-08-05 21:01:48Z iulius $ include ../Makefile.global @@ -98,8 +98,8 @@ his.o: his.c ../include/config.h ../incl ../include/config.h ../include/portable/time.h ../include/config.h \ ../include/inn/history.h ../include/inn/defines.h \ ../include/inn/messages.h ../include/inn/timer.h \ - ../include/inn/libinn.h ../include/inn/storage.h hisinterface.h \ - hismethods.h + ../include/inn/libinn.h ../include/inn/storage.h \ + ../include/inn/options.h hisinterface.h hismethods.h hismethods.o: hismethods.c hisinterface.h ../include/config.h \ ../include/inn/defines.h ../include/inn/system.h \ ../include/inn/options.h hismethods.h hisv6/hisv6.h @@ -107,7 +107,7 @@ hisv6/hisv6.o: hisv6/hisv6.c ../include/ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h hisinterface.h ../include/config.h hisv6/hisv6.h \ hisv6/hisv6-private.h ../include/inn/history.h ../include/inn/defines.h \ - ../include/inn/storage.h ../include/inn/libinn.h ../include/dbz.h \ - ../include/inn/libinn.h ../include/inn/innconf.h ../include/inn/timer.h \ - ../include/inn/qio.h ../include/inn/sequence.h \ - ../include/inn/inndcomm.h + ../include/inn/storage.h ../include/inn/options.h \ + ../include/inn/libinn.h ../include/inn/dbz.h ../include/inn/libinn.h \ + ../include/inn/innconf.h ../include/inn/timer.h ../include/inn/qio.h \ + ../include/inn/sequence.h ../include/inn/inndcomm.h diff -Nurp inn-2.5.0/history/his.c inn-2.5.1/history/his.c --- inn-2.5.0/history/his.c 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/history/his.c 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: his.c 7585 2006-11-21 09:37:51Z eagle $ +/* $Id: his.c 8575 2009-08-18 13:53:54Z iulius $ ** ** API to history routines ** @@ -276,14 +276,14 @@ HISwrite(struct history *h, const char * } bool -HISremember(struct history *h, const char *key, time_t arrived) +HISremember(struct history *h, const char *key, time_t arrived, time_t posted) { bool r; if (his_checknull(h)) return false; TMRstart(TMR_HISWRITE); - r = (*h->methods->remember)(h->sub, key, arrived); + r = (*h->methods->remember)(h->sub, key, arrived, posted); if (r == true) { HASH hash; diff -Nurp inn-2.5.0/history/hisinterface.h inn-2.5.1/history/hisinterface.h --- inn-2.5.0/history/hisinterface.h 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/history/hisinterface.h 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: hisinterface.h 6504 2003-10-20 21:47:56Z rra $ +/* $Id: hisinterface.h 8575 2009-08-18 13:53:54Z iulius $ ** ** Interface to history API modules */ @@ -31,7 +31,7 @@ typedef struct hismethod { bool (*walk)(void *, const char *, void *, bool (*)(void *, time_t, time_t, time_t, const struct token *)); - bool (*remember)(void *, const char *, time_t); + bool (*remember)(void *, const char *, time_t, time_t); bool (*ctl)(void *, int, void *); } HIS_METHOD; diff -Nurp inn-2.5.0/history/hisv6/hisv6.c inn-2.5.1/history/hisv6/hisv6.c --- inn-2.5.0/history/hisv6/hisv6.c 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/history/hisv6/hisv6.c 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: hisv6.c 7585 2006-11-21 09:37:51Z eagle $ +/* $Id: hisv6.c 8575 2009-08-18 13:53:54Z iulius $ ** ** History v6 implementation against the history API. ** @@ -45,7 +45,7 @@ #include "hisinterface.h" #include "hisv6.h" #include "hisv6-private.h" -#include "dbz.h" +#include "inn/dbz.h" #include "inn/innconf.h" #include "inn/timer.h" #include "inn/qio.h" @@ -734,9 +734,20 @@ hisv6_formatline(char *s, const HASH *ha const char *hashtext = HashToText(*hash); if (token == NULL) { - i = snprintf(s, HISV6_MAXLINE, "[%s]%c%lu%c%c\n", - hashtext, HISV6_FIELDSEP, - (unsigned long)arrived, HISV6_SUBFIELDSEP, HISV6_NOEXP); + /* Only a line to remember an article. We keep its arrival + * and posting time. */ + if (posted <= 0) { + i = snprintf(s, HISV6_MAXLINE, "[%s]%c%lu%c%c\n", + hashtext, HISV6_FIELDSEP, + (unsigned long)arrived, HISV6_SUBFIELDSEP, + HISV6_NOEXP); + } else { + i = snprintf(s, HISV6_MAXLINE, "[%s]%c%lu%c%c%c%lu\n", + hashtext, HISV6_FIELDSEP, + (unsigned long)arrived, HISV6_SUBFIELDSEP, + HISV6_NOEXP, HISV6_SUBFIELDSEP, + (unsigned long)posted); + } } else { const char *texttok; @@ -881,10 +892,11 @@ hisv6_write(void *history, const char *k /* -** remember a history entry, key, with arrival time arrived. +** Remember a history entry, key, with arrival time, and also +** posting time if known. */ bool -hisv6_remember(void *history, const char *key, time_t arrived) +hisv6_remember(void *history, const char *key, time_t arrived, time_t posted) { struct hisv6 *h = history; HASH hash; @@ -892,7 +904,7 @@ hisv6_remember(void *history, const char his_logger("HISwrite begin", S_HISwrite); hash = HashMessageID(key); - r = hisv6_writeline(h, &hash, arrived, 0, 0, NULL); + r = hisv6_writeline(h, &hash, arrived, posted, 0, NULL); his_logger("HISwrite end", S_HISwrite); return r; } @@ -1140,18 +1152,24 @@ hisv6_expirecb(struct hisv6 *h, void *co keep = (*hiscookie->cb.expire)(hiscookie->cookie, arrived, posted, expires, t); - /* if the callback returns true, we should keep the - token for the time being, else we just remember - it */ + /* If the callback returns true, we should keep the + * token for the time being, else we just remember + * it. */ if (keep == false) { t = NULL; - posted = expires = 0; + expires = 0; } } else { t = NULL; } + /* When t is NULL (no token), the message-ID is removed from + * history when the posting time of the article is older than + * threshold, as set by the /remember/ line in expire.ctl. + * We keep the check for the arrival time because some entries + * might not have one. */ if (hiscookie->new && - (t != NULL || arrived >= hiscookie->threshold)) { + (t != NULL || posted >= hiscookie->threshold + || (posted <= 0 && arrived >= hiscookie->threshold))) { r = hisv6_writeline(hiscookie->new, hash, arrived, posted, expires, t); } diff -Nurp inn-2.5.0/history/hisv6/hisv6.h inn-2.5.1/history/hisv6/hisv6.h --- inn-2.5.0/history/hisv6/hisv6.h 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/history/hisv6/hisv6.h 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: hisv6.h 4959 2001-07-25 12:23:32Z alexk $ +/* $Id: hisv6.h 8575 2009-08-18 13:53:54Z iulius $ ** ** Internal history API interface exposed to HISxxx */ @@ -38,7 +38,7 @@ bool hisv6_walk(void *, const char *, vo const char *hisv6_error(void *); -bool hisv6_remember(void *, const char *key, time_t arrived); +bool hisv6_remember(void *, const char *key, time_t arrived, time_t posted); bool hisv6_ctl(void *, int, void *); diff -Nurp inn-2.5.0/include/config.h.in inn-2.5.1/include/config.h.in --- inn-2.5.0/include/config.h.in 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/include/config.h.in 2009-10-12 11:24:04.000000000 -0700 @@ -141,7 +141,7 @@ /* Define to 1 if you have the `getaddrinfo' function. */ #undef HAVE_GETADDRINFO -/* Define if your system has a working AI_ADDRCONFIG flag with getaddrinfo. */ +/* Define if the AI_ADDRCONFIG flag works with getaddrinfo. */ #undef HAVE_GETADDRINFO_ADDRCONFIG /* Define to 1 if you have the `getdtablesize' function. */ @@ -192,8 +192,8 @@ /* Define to 1 if you have the header file. */ #undef HAVE_LIMITS_H -/* Define to 1 if the system has the type `long long'. */ -#undef HAVE_LONG_LONG +/* Define to 1 if the system has the type `long long int'. */ +#undef HAVE_LONG_LONG_INT /* Define to 1 if you have the `madvise' function. */ #undef HAVE_MADVISE @@ -237,7 +237,7 @@ /* Define if SASL is available. */ #undef HAVE_SASL -/* Define if defines the SA_LEN macro */ +/* Define if defines the SA_LEN macro. */ #undef HAVE_SA_LEN /* Define to 1 if you have the `setbuffer' function. */ @@ -406,7 +406,7 @@ /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H -/* Define if you have unix domain sockets. */ +/* Define if you have Unix domain sockets. */ #undef HAVE_UNIX_DOMAIN_SOCKETS /* Define if zlib is available. */ @@ -521,6 +521,11 @@ /* Define to 1 if you need to in order for `stat' and other things to work. */ #undef _POSIX_SOURCE +/* Define for Solaris 2.5.1 so the uint32_t typedef from , + , or is not used. If the typedef was allowed, the + #define below would cause a syntax error. */ +#undef _UINT32_T + /* Enable extensions on Solaris. */ #ifndef __EXTENSIONS__ # undef __EXTENSIONS__ @@ -538,9 +543,6 @@ /* Define to `int' if doesn't define. */ #undef gid_t -/* Define to a 4-byte signed type if does not define. */ -#undef int32_t - /* Define to `long int' if does not define. */ #undef off_t @@ -559,11 +561,16 @@ /* Define to int if does not define. */ #undef socklen_t -/* Define to int if does not define. */ +/* Define to `int' if does not define. */ #undef ssize_t /* Define to `int' if doesn't define. */ #undef uid_t -/* Define to a 4-byte unsigned type if does not define. */ +/* Define to the type of an unsigned integer type of width exactly 16 bits if + such a type exists and the standard includes do not define it. */ +#undef uint16_t + +/* Define to the type of an unsigned integer type of width exactly 32 bits if + such a type exists and the standard includes do not define it. */ #undef uint32_t diff -Nurp inn-2.5.0/include/dbz.h inn-2.5.1/include/dbz.h --- inn-2.5.0/include/dbz.h 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/include/dbz.h 1969-12-31 16:00:00.000000000 -0800 @@ -1,76 +0,0 @@ -#ifndef __DBZ_H__ -#define __DBZ_H__ - -/* Need the definition of HASH. */ -#include "inn/libinn.h" - -BEGIN_DECLS - -/* This is the number of bytes of the md5 to actually store in - * the .pag file. This number directly effects 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 - * 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 - * part of the hash value stored also. - */ -#ifdef DO_TAGGED_HASH -#define DBZMAXKEY 255 -#define DBZ_INTERNAL_HASH_SIZE 4 -#else -#define DBZ_INTERNAL_HASH_SIZE 6 -#endif - -typedef enum {DBZSTORE_OK, DBZSTORE_EXISTS, DBZSTORE_ERROR} DBZSTORE_RESULT; -typedef enum {INCORE_NO, INCORE_MEM, INCORE_MMAP} dbz_incore_val; - -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. */ - bool writethrough; - /* Whether to do hash lookups from disk, memory or a mmap'ed file */ - dbz_incore_val pag_incore; - dbz_incore_val exists_incore; - /* Whether dbzstore should update the database async or sync. This - is only applicable if you're not mmaping the database */ - bool nonblock; -} dbzoptions; - -#ifdef __GNUC__ -#define PACKED __attribute__ ((packed)) -#else -#if !defined(PACKED) -#define PACKED -#endif -#endif - -#if !defined(lint) && (defined(__SUNPRO_C) || defined(_nec_ews)) -#pragma pack(1) -#endif /* nor lint, nor __SUNPRO_C, nor sgi, nor _nec_ews */ -typedef struct { - char hash[DBZ_INTERNAL_HASH_SIZE]; -} PACKED erec; -#if !defined(lint) && (defined(__SUNPRO_C) || defined(_nec_ews)) -#pragma pack() -#endif /* nor lint, nor__SUNPRO_C, nor _nec_ews */ - -/* standard dbm functions */ -extern bool dbzinit(const char *name); -extern bool dbzclose(void); - -/* new stuff for dbz */ -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); - -END_DECLS - -#endif /* __DBZ_H__ */ diff -Nurp inn-2.5.0/include/inn/dbz.h inn-2.5.1/include/inn/dbz.h --- inn-2.5.0/include/inn/dbz.h 1969-12-31 16:00:00.000000000 -0800 +++ inn-2.5.1/include/inn/dbz.h 2009-10-12 11:24:04.000000000 -0700 @@ -0,0 +1,76 @@ +#ifndef __DBZ_H__ +#define __DBZ_H__ + +/* Need the definition of HASH. */ +#include "inn/libinn.h" + +BEGIN_DECLS + +/* This is the number of bytes of the md5 to actually store in + * the .pag file. This number directly effects 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 + * 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 + * part of the hash value stored also. + */ +#ifdef DO_TAGGED_HASH +#define DBZMAXKEY 255 +#define DBZ_INTERNAL_HASH_SIZE 4 +#else +#define DBZ_INTERNAL_HASH_SIZE 6 +#endif + +typedef enum {DBZSTORE_OK, DBZSTORE_EXISTS, DBZSTORE_ERROR} DBZSTORE_RESULT; +typedef enum {INCORE_NO, INCORE_MEM, INCORE_MMAP} dbz_incore_val; + +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. */ + bool writethrough; + /* Whether to do hash lookups from disk, memory or a mmap'ed file */ + dbz_incore_val pag_incore; + dbz_incore_val exists_incore; + /* Whether dbzstore should update the database async or sync. This + is only applicable if you're not mmaping the database */ + bool nonblock; +} dbzoptions; + +#ifdef __GNUC__ +#define PACKED __attribute__ ((packed)) +#else +#if !defined(PACKED) +#define PACKED +#endif +#endif + +#if !defined(lint) && (defined(__SUNPRO_C) || defined(_nec_ews)) +#pragma pack(1) +#endif /* nor lint, nor __SUNPRO_C, nor sgi, nor _nec_ews */ +typedef struct { + char hash[DBZ_INTERNAL_HASH_SIZE]; +} PACKED erec; +#if !defined(lint) && (defined(__SUNPRO_C) || defined(_nec_ews)) +#pragma pack() +#endif /* nor lint, nor__SUNPRO_C, nor _nec_ews */ + +/* standard dbm functions */ +extern bool dbzinit(const char *name); +extern bool dbzclose(void); + +/* new stuff for dbz */ +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); + +END_DECLS + +#endif /* __DBZ_H__ */ diff -Nurp inn-2.5.0/include/inn/history.h inn-2.5.1/include/inn/history.h --- inn-2.5.0/include/inn/history.h 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/include/inn/history.h 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: history.h 7093 2004-12-23 03:56:08Z rra $ +/* $Id: history.h 8575 2009-08-18 13:53:54Z iulius $ ** ** Interface to history API */ @@ -90,7 +90,7 @@ bool HISlookup(struct bool HIScheck(struct history *, const char *); bool HISwrite(struct history *, const char *, time_t, time_t, time_t, const struct token *); -bool HISremember(struct history *, const char *, time_t); +bool HISremember(struct history *, const char *, time_t, time_t); bool HISreplace(struct history *, const char *, time_t, time_t, time_t, const struct token *); bool HISexpire(struct history *, const char *, const char *, diff -Nurp inn-2.5.0/include/inn/libinn.h inn-2.5.1/include/inn/libinn.h --- inn-2.5.0/include/inn/libinn.h 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/include/inn/libinn.h 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: libinn.h 8255 2008-12-24 22:27:07Z iulius $ +/* $Id: libinn.h 8637 2009-09-28 19:59:01Z iulius $ ** ** Here be declarations of functions in the InterNetNews library. */ @@ -107,6 +107,7 @@ enum uwildmat { UWILDMAT_POISON }; +extern bool is_valid_utf8(const char *start); extern bool uwildmat(const char *text, const char *pat); extern bool uwildmat_simple(const char *text, const char *pat); extern enum uwildmat uwildmat_poison(const char *text, const char *pat); diff -Nurp inn-2.5.0/include/inn/ov.h inn-2.5.1/include/inn/ov.h --- inn-2.5.0/include/inn/ov.h 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/include/inn/ov.h 2009-10-12 11:24:04.000000000 -0700 @@ -58,13 +58,13 @@ bool overview_check(const char *data, si int overview_index(const char *field, const struct vector *extra); struct cvector *overview_split(const char *line, size_t length, ARTNUM *number, struct cvector *vector); -char *overview_getheader(const struct cvector *vector, unsigned int element, - const struct vector *extra); +char *overview_get_standard_header(const struct cvector *vector, unsigned int element); +char *overview_get_extra_header(const struct cvector *vector, const char *header); -/* offsets into vectors for standard overview headers */ +/* Offsets into vectors for standard overview headers. */ #ifndef INN_OVERVIEW_H enum { - OVERVIEW_SUBJECT, + OVERVIEW_SUBJECT = 0, OVERVIEW_FROM, OVERVIEW_DATE, OVERVIEW_MESSAGE_ID, diff -Nurp inn-2.5.0/include/inn/overview.h inn-2.5.1/include/inn/overview.h --- inn-2.5.0/include/inn/overview.h 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/include/inn/overview.h 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: overview.h 8409 2009-04-11 22:13:41Z iulius $ +/* $Id: overview.h 8519 2009-06-20 12:20:03Z iulius $ ** ** Overview API for storing and retrieving overview information. ** @@ -184,8 +184,8 @@ bool overview_check(const char *data, si int overview_index(const char *field, const struct vector *extra); struct cvector *overview_split(const char *line, size_t length, ARTNUM *number, struct cvector *vector); -char *overview_getheader(const struct cvector *vector, unsigned int element, - const struct vector *extra); +char *overview_get_standard_header(const struct cvector *vector, unsigned int element); +char *overview_get_extra_header(const struct cvector *vector, const char *header); END_DECLS diff -Nurp inn-2.5.0/include/inn/paths.h.in inn-2.5.1/include/inn/paths.h.in --- inn-2.5.0/include/inn/paths.h.in 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/include/inn/paths.h.in 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: paths.h.in 8409 2009-04-11 22:13:41Z iulius $ -*- c -*- +/* $Id: paths.h.in 8527 2009-06-20 14:20:28Z iulius $ -*- c -*- ** @configure_input@ ** ** Here be #define's for filenames, socket names, environment variables, @@ -12,11 +12,8 @@ ** PATHS TO FILES AND SOCKETS ** ** Default prefixes can be overridden by defining the constant to a full -** path. That magic is handled by concatpath. At some point all of these -** defines will change to start with INN_PATH_ instead of _PATH_ because -** identifiers beginning with an underscore and an uppercase letter are -** reserved by the C standard. New ones should use INN_PATH_ for this -** reason, to save eventual work. +** path. That magic is handled by concatpath. All of these defines +** start with "INN_PATH_". */ /* Must be an absolute path since it defines the other prefixes. */ @@ -71,7 +68,6 @@ #define INN_PATH_MOTD "motd.news" #define INN_PATH_STORAGECTL "storage.conf" #define INN_PATH_RADIUS_CONFIG "radius.conf" -#define INN_PATH_SASL_CONFIG "sasl.conf" #define INN_PATH_FILESYSTEMS "filesystems" /* Default prefix path is pathspool. */ diff -Nurp inn-2.5.0/include/inn/storage.h inn-2.5.1/include/inn/storage.h --- inn-2.5.0/include/inn/storage.h 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/include/inn/storage.h 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: storage.h 7901 2008-06-22 20:34:26Z iulius $ +/* $Id: storage.h 8531 2009-06-21 19:17:38Z eagle $ ** ** Here be declarations related to the storage subsystem. */ @@ -6,6 +6,8 @@ #ifndef INN_STORAGE_H #define INN_STORAGE_H 1 +#include +#include #include #include diff -Nurp inn-2.5.0/innd/Makefile inn-2.5.1/innd/Makefile --- inn-2.5.0/innd/Makefile 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/innd/Makefile 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -## $Id: Makefile 8409 2009-04-11 22:13:41Z iulius $ +## $Id: Makefile 8533 2009-06-21 20:14:05Z iulius $ include ../Makefile.global @@ -47,7 +47,7 @@ innd: $(OBJECTS) $(LIBSTORAGE) $(LIBHIST $(LIBLD) $(LDFLAGS) -o $@ $(OBJECTS) $(INNDLIBS) tinyleaf: tinyleaf.o $(LIBINN) - $(LIBLD) $(LDFLAGS) -o $@ tinyleaf.o $(LIBINN) + $(LIBLD) $(LDFLAGS) -o $@ tinyleaf.o $(LIBINN) $(LIBS) $(LIBINN): ; (cd ../lib ; $(MAKE)) $(LIBSTORAGE): ; (cd ../storage ; $(MAKE)) @@ -77,9 +77,9 @@ art.o: art.c ../include/config.h ../incl ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/innconf.h ../include/inn/defines.h \ ../include/inn/md5.h ../include/inn/ov.h ../include/inn/storage.h \ - ../include/inn/history.h ../include/inn/storage.h \ - ../include/inn/vector.h ../include/inn/wire.h innd.h \ - ../include/portable/time.h ../include/config.h \ + ../include/inn/options.h ../include/inn/history.h \ + ../include/inn/storage.h ../include/inn/vector.h ../include/inn/wire.h \ + innd.h ../include/portable/time.h ../include/config.h \ ../include/portable/socket.h ../include/portable/getaddrinfo.h \ ../include/portable/getnameinfo.h ../include/inn/buffer.h \ ../include/inn/history.h ../include/inn/messages.h \ @@ -95,7 +95,7 @@ cc.o: cc.c ../include/config.h ../includ ../include/inn/messages.h ../include/inn/timer.h \ ../include/inn/libinn.h ../include/nntp.h ../include/inn/nntp.h \ ../include/inn/paths.h ../include/inn/storage.h \ - ../include/inn/inndcomm.h ../include/innperl.h + ../include/inn/options.h ../include/inn/inndcomm.h ../include/innperl.h chan.o: chan.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/innconf.h ../include/inn/defines.h \ @@ -105,7 +105,8 @@ chan.o: chan.c ../include/config.h ../in ../include/inn/buffer.h ../include/inn/history.h \ ../include/inn/messages.h ../include/inn/timer.h \ ../include/inn/libinn.h ../include/nntp.h ../include/inn/nntp.h \ - ../include/inn/paths.h ../include/inn/storage.h + ../include/inn/paths.h ../include/inn/storage.h \ + ../include/inn/options.h icd.o: icd.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/portable/mmap.h ../include/config.h \ @@ -115,8 +116,9 @@ icd.o: icd.c ../include/config.h ../incl ../include/inn/buffer.h ../include/inn/history.h \ ../include/inn/messages.h ../include/inn/timer.h \ ../include/inn/libinn.h ../include/nntp.h ../include/inn/nntp.h \ - ../include/inn/paths.h ../include/inn/storage.h ../include/inn/ov.h \ - ../include/inn/storage.h ../include/inn/history.h + ../include/inn/paths.h ../include/inn/storage.h \ + ../include/inn/options.h ../include/inn/ov.h ../include/inn/storage.h \ + ../include/inn/history.h innd.o: innd.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/innconf.h ../include/inn/defines.h \ @@ -127,8 +129,8 @@ innd.o: innd.c ../include/config.h ../in ../include/portable/getnameinfo.h ../include/inn/buffer.h \ ../include/inn/history.h ../include/inn/timer.h ../include/inn/libinn.h \ ../include/nntp.h ../include/inn/nntp.h ../include/inn/paths.h \ - ../include/inn/storage.h ../include/inn/ov.h ../include/inn/storage.h \ - ../include/inn/history.h + ../include/inn/storage.h ../include/inn/options.h ../include/inn/ov.h \ + ../include/inn/storage.h ../include/inn/history.h keywords.o: keywords.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/libinn.h ../include/inn/defines.h \ @@ -137,7 +139,8 @@ keywords.o: keywords.c ../include/config ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \ ../include/inn/buffer.h ../include/inn/history.h \ ../include/inn/messages.h ../include/inn/timer.h ../include/nntp.h \ - ../include/inn/nntp.h ../include/inn/paths.h ../include/inn/storage.h + ../include/inn/nntp.h ../include/inn/paths.h ../include/inn/storage.h \ + ../include/inn/options.h lc.o: lc.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/innconf.h ../include/inn/defines.h \ @@ -146,7 +149,8 @@ lc.o: lc.c ../include/config.h ../includ ../include/portable/getnameinfo.h ../include/inn/buffer.h \ ../include/inn/history.h ../include/inn/messages.h \ ../include/inn/timer.h ../include/inn/libinn.h ../include/nntp.h \ - ../include/inn/nntp.h ../include/inn/paths.h ../include/inn/storage.h + ../include/inn/nntp.h ../include/inn/paths.h ../include/inn/storage.h \ + ../include/inn/options.h nc.o: nc.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/innconf.h ../include/inn/defines.h \ @@ -156,7 +160,8 @@ nc.o: nc.c ../include/config.h ../includ ../include/inn/buffer.h ../include/inn/history.h \ ../include/inn/messages.h ../include/inn/timer.h \ ../include/inn/libinn.h ../include/nntp.h ../include/inn/nntp.h \ - ../include/inn/paths.h ../include/inn/storage.h + ../include/inn/paths.h ../include/inn/storage.h \ + ../include/inn/options.h newsfeeds.o: newsfeeds.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/innconf.h ../include/inn/defines.h \ @@ -165,7 +170,8 @@ newsfeeds.o: newsfeeds.c ../include/conf ../include/portable/getnameinfo.h ../include/inn/buffer.h \ ../include/inn/history.h ../include/inn/messages.h \ ../include/inn/timer.h ../include/inn/libinn.h ../include/nntp.h \ - ../include/inn/nntp.h ../include/inn/paths.h ../include/inn/storage.h + ../include/inn/nntp.h ../include/inn/paths.h ../include/inn/storage.h \ + ../include/inn/options.h ng.o: ng.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/innconf.h ../include/inn/defines.h \ @@ -175,7 +181,8 @@ ng.o: ng.c ../include/config.h ../includ ../include/inn/history.h ../include/inn/messages.h \ ../include/inn/timer.h ../include/inn/libinn.h ../include/nntp.h \ ../include/inn/nntp.h ../include/inn/paths.h ../include/inn/storage.h \ - ../include/inn/ov.h ../include/inn/storage.h ../include/inn/history.h + ../include/inn/options.h ../include/inn/ov.h ../include/inn/storage.h \ + ../include/inn/history.h perl.o: perl.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/wire.h ../include/inn/defines.h \ @@ -185,8 +192,8 @@ perl.o: perl.c ../include/config.h ../in ../include/inn/history.h ../include/inn/messages.h \ ../include/inn/timer.h ../include/inn/libinn.h ../include/nntp.h \ ../include/inn/nntp.h ../include/inn/paths.h ../include/inn/storage.h \ - ../include/ppport.h \ - ../include/innperl.h + ../include/inn/options.h \ + ../include/ppport.h ../include/innperl.h proc.o: proc.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/portable/wait.h ../include/config.h \ @@ -195,7 +202,8 @@ proc.o: proc.c ../include/config.h ../in ../include/inn/buffer.h ../include/inn/defines.h \ ../include/inn/history.h ../include/inn/messages.h \ ../include/inn/timer.h ../include/inn/libinn.h ../include/nntp.h \ - ../include/inn/nntp.h ../include/inn/paths.h ../include/inn/storage.h + ../include/inn/nntp.h ../include/inn/paths.h ../include/inn/storage.h \ + ../include/inn/options.h python.o: python.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/innconf.h ../include/inn/defines.h \ @@ -205,7 +213,8 @@ python.o: python.c ../include/config.h . ../include/inn/buffer.h ../include/inn/history.h \ ../include/inn/messages.h ../include/inn/timer.h \ ../include/inn/libinn.h ../include/nntp.h ../include/inn/nntp.h \ - ../include/inn/paths.h ../include/inn/storage.h + ../include/inn/paths.h ../include/inn/storage.h \ + ../include/inn/options.h rc.o: rc.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/portable/socket.h ../include/config.h \ @@ -215,7 +224,8 @@ rc.o: rc.c ../include/config.h ../includ ../include/portable/time.h ../include/inn/buffer.h \ ../include/inn/history.h ../include/inn/messages.h \ ../include/inn/timer.h ../include/inn/libinn.h ../include/nntp.h \ - ../include/inn/nntp.h ../include/inn/paths.h ../include/inn/storage.h + ../include/inn/nntp.h ../include/inn/paths.h ../include/inn/storage.h \ + ../include/inn/options.h site.o: site.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/innconf.h ../include/inn/defines.h \ @@ -224,7 +234,8 @@ site.o: site.c ../include/config.h ../in ../include/portable/getnameinfo.h ../include/inn/buffer.h \ ../include/inn/history.h ../include/inn/messages.h \ ../include/inn/timer.h ../include/inn/libinn.h ../include/nntp.h \ - ../include/inn/nntp.h ../include/inn/paths.h ../include/inn/storage.h + ../include/inn/nntp.h ../include/inn/paths.h ../include/inn/storage.h \ + ../include/inn/options.h status.o: status.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/portable/socket.h ../include/config.h \ @@ -235,7 +246,7 @@ status.o: status.c ../include/config.h . ../include/inn/history.h ../include/inn/messages.h \ ../include/inn/timer.h ../include/inn/libinn.h ../include/nntp.h \ ../include/inn/nntp.h ../include/inn/paths.h ../include/inn/storage.h \ - ../include/innperl.h + ../include/inn/options.h ../include/innperl.h util.o: util.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/innconf.h ../include/inn/defines.h \ @@ -244,7 +255,8 @@ util.o: util.c ../include/config.h ../in ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \ ../include/inn/buffer.h ../include/inn/history.h \ ../include/inn/messages.h ../include/inn/timer.h ../include/nntp.h \ - ../include/inn/nntp.h ../include/inn/paths.h ../include/inn/storage.h + ../include/inn/nntp.h ../include/inn/paths.h ../include/inn/storage.h \ + ../include/inn/options.h wip.o: wip.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/innconf.h ../include/inn/defines.h \ @@ -253,4 +265,5 @@ wip.o: wip.c ../include/config.h ../incl ../include/portable/getnameinfo.h ../include/inn/buffer.h \ ../include/inn/history.h ../include/inn/messages.h \ ../include/inn/timer.h ../include/inn/libinn.h ../include/nntp.h \ - ../include/inn/nntp.h ../include/inn/paths.h ../include/inn/storage.h + ../include/inn/nntp.h ../include/inn/paths.h ../include/inn/storage.h \ + ../include/inn/options.h diff -Nurp inn-2.5.0/innd/art.c inn-2.5.1/innd/art.c --- inn-2.5.0/innd/art.c 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/innd/art.c 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: art.c 8469 2009-05-16 12:43:53Z iulius $ +/* $Id: art.c 8657 2009-10-10 07:58:53Z iulius $ ** ** Article-processing. */ @@ -400,23 +400,35 @@ ARTlogreject(CHANNEL *cp, const char *te /* Set up the headers that we want to use. We only need to parse the path on rejections if logipaddr is false or we can't find a good host. */ - if (innconf->logipaddr && cp->Address.ss_family != 0) - data->Feedsite = RChostname(cp); - else { + if (innconf->logipaddr) { + if (cp->Address.ss_family != 0) { + data->Feedsite = RChostname(cp); + } else { + data->Feedsite = "localhost"; + } + } else { if (HDR_FOUND(HDR__PATH)) { HDR_PARSE_START(HDR__PATH); hopcount = ARTparsepath(HDR(HDR__PATH), HDR_LEN(HDR__PATH), &data->Path); HDR_PARSE_END(HDR__PATH); hops = data->Path.List; - if (hopcount > 0 && hops != NULL && hops[0] != NULL) + if (hopcount > 0 && hops != NULL && hops[0] != NULL) { data->Feedsite = hops[0]; - else + } else { data->Feedsite = "localhost"; - } else if (cp->Address.ss_family != 0) { - data->Feedsite = RChostname(cp); + } + } else { + if (cp->Address.ss_family != 0) { + data->Feedsite = RChostname(cp); + } else { + data->Feedsite = "localhost"; + } } } + + data->FeedsiteLength = strlen(data->Feedsite); + ARTlog(data, ART_REJECT, text != NULL ? text : cp->Error); if (HDR_FOUND(HDR__MESSAGE_ID)) @@ -804,6 +816,7 @@ ARTprepare(CHANNEL *cp) data->CurHeader = data->LastCRLF = data->Body = cp->Start; data->BytesHeader = NULL; data->Feedsite = "?"; + data->FeedsiteLength = strlen(data->Feedsite); *cp->Error = '\0'; } @@ -856,7 +869,9 @@ ARTchecksize(CHANNEL *cp) if (HDR_FOUND(HDR__MESSAGE_ID)) { HDR_PARSE_START(HDR__MESSAGE_ID); msgid = HDR(HDR__MESSAGE_ID); - if (!HIScheck(History, msgid) && !InndHisRemember(msgid)) + /* The article posting time has not been parsed. We cannot + * give it to InndHisRemember. */ + if (!HIScheck(History, msgid) && !InndHisRemember(msgid, 0)) warn("SERVER cant write %s", msgid); } } @@ -911,7 +926,7 @@ ARTparseheader(CHANNEL *cp) ARTerror(cp, "Header line too long (%lu bytes)", length); /* Be a little tricky here. Normally, the headers end at the - first occurrance of \r\n\r\n, so since we've seen \r\n, we want + first occurrence of \r\n\r\n, so since we've seen \r\n, we want to advance i and then look to see if we have another one. The exception is the degenerate case of an article with no headers. In that case, log an error and *don't* advance i so that we'll @@ -1035,6 +1050,7 @@ ARTclean(ARTDATA *data, char *buff, bool TMRstart(TMR_ARTCLEAN); data->Arrived = Now.tv_sec; data->Expires = 0; + data->Posted = 0; /* replace trailing '\r\n' with '\0\n' of all system header to be handled easily by str*() functions */ @@ -1184,17 +1200,18 @@ ARTreject(Reject_type code, CHANNEL *cp) } /* -** Verify if a cancel message is valid. If the user posting the cancel -** matches the user who posted the article, return the list of filenames -** otherwise return NULL. +** Verify if a cancel message is valid. Unless at least one group in the +** cancel message's Newsgroups: line can be found in the Newsgroups: line +** of the article to be cancelled, the cancel is considered bogus and +** false is returned. */ static bool ARTcancelverify(const ARTDATA *data, const char *MessageID, TOKEN *token) { - const HDRCONTENT *hc = data->HdrContent; const char *p; char *q, *q1; - const char *local, *poster; + char **gp; + const char *local; char buff[SMBUF]; ARTHANDLE *art; bool r; @@ -1203,13 +1220,13 @@ ARTcancelverify(const ARTDATA *data, con return false; if ((art = SMretrieve(*token, RETR_HEAD)) == NULL) return false; - local = wire_findheader(art->data, art->len, "Sender"); + + /* Copy Newsgroups: from article be to cancelled to q. + * Double-terminate q (sentinel). */ + local = wire_findheader(art->data, art->len, "Newsgroups"); if (local == NULL) { - local = wire_findheader(art->data, art->len, "From"); - if (local == NULL) { - SMfreearticle(art); - return false; - } + SMfreearticle(art); + return false; } for (p = local; p < art->data + art->len; p++) { if (*p == '\r' || *p == '\n') @@ -1219,30 +1236,37 @@ ARTcancelverify(const ARTDATA *data, con SMfreearticle(art); return false; } - q = xmalloc(p - local + 1); + q = xmalloc(p - local + 2); memcpy(q, local, p - local); SMfreearticle(art); q[p - local] = '\0'; - HeaderCleanFrom(q); + q[p - local + 1] = '\0'; - /* Compare canonical forms. */ - if (HDR_FOUND(HDR__SENDER)) - poster = HDR(HDR__SENDER); - else - poster = HDR(HDR__FROM); - q1 = xstrdup(poster); - HeaderCleanFrom(q1); - if (strcmp(q, q1) != 0) { - r = false; - sprintf(buff, "\"%.50s\" wants to cancel %s by \"%.50s\"", - q1, MaxLength(MessageID, MessageID), q); - ARTlog(data, ART_REJECT, buff); + /* Replace separator ',' by '\0'. */ + for (q1 = q; *q1; q1++) { + if (NG_ISSEP(*q1)) { + *q1 = '\0'; + } } - else { - r = true; + + r = false; + for (gp = data->Newsgroups.List; *gp && !r; gp++) { + for (q1 = q; *q1; q1 += strlen(q1) + 1) { + if (strcmp(q1, *gp) == 0) { + r = true; + break; + } + } } - free(q1); + free(q); + + if (!r) { + sprintf(buff, "No matching newsgroups in cancel %s", + MaxLength(MessageID, MessageID)); + ARTlog(data, ART_REJECT, buff); + } + return r; } @@ -1276,7 +1300,7 @@ ARTcancel(const ARTDATA *data, const cha TMRstop(TMR_ARTCNCL); return; } - InndHisRemember(MessageID); + InndHisRemember(MessageID, data->Posted); snprintf(buff, sizeof(buff), "Cancelling %s", MaxLength(MessageID, MessageID)); ARTlog(data, ART_CANC, buff); @@ -1854,7 +1878,7 @@ ARTmakeoverview(CHANNEL *cp) j = hp - ARTheaders; /* If requested, generate keywords from the body of the article and patch - them into the apparent value of the Keywords header so that they make + them into the apparent value of the Keywords: header so that they make it into overview. */ if (DO_KEYWORDS && innconf->keywords) { /* Ensure that there are Keywords: to shovel. */ @@ -1862,7 +1886,7 @@ ARTmakeoverview(CHANNEL *cp) key_old_value = HDR(HDR__KEYWORDS); key_old_length = HDR_LEN(HDR__KEYWORDS); KEYgenerate(&hc[HDR__KEYWORDS], cp->In.data + data->Body, - key_old_value, key_old_length); + cp->Next - data->Body, key_old_value, key_old_length); } } @@ -1915,11 +1939,11 @@ ARTmakeoverview(CHANNEL *cp) /* Patch the old keywords back in. */ if (DO_KEYWORDS && innconf->keywords) { if (key_old_value) { - if (hc->Value) - free(hc->Value); /* malloc'd within */ - hc->Value = key_old_value; - hc->Length = key_old_length; - key_old_value = NULL; + if (hc[HDR__KEYWORDS].Value) + free(hc[HDR__KEYWORDS].Value); /* malloc'd within. */ + hc[HDR__KEYWORDS].Value = key_old_value; + hc[HDR__KEYWORDS].Length = key_old_length; + key_old_value = NULL; } } } @@ -1967,7 +1991,11 @@ ARTpost(CHANNEL *cp) /* We have not parsed the Path: header yet. We do not check for logipaddr * right now (it will be done afterwards and change data->Feedsite * in consequence). We assign a feed site for the next call to ARTlog(). */ - data->Feedsite = RChostname(cp); + if (cp->Address.ss_family != 0) { + data->Feedsite = RChostname(cp); + } else { + data->Feedsite = "localhost"; + } if (data->Feedsite == NULL) data->Feedsite = CHANname(cp); data->FeedsiteLength = strlen(data->Feedsite); @@ -2013,8 +2041,10 @@ ARTpost(CHANNEL *cp) } if (!artclean) { ARTlog(data, ART_REJECT, cp->Error); + /* If the article posting time has not been properly parsed, data->Posted + * will be negative or zero. */ if (innconf->remembertrash && (Mode == OMrunning) && - !InndHisRemember(HDR(HDR__MESSAGE_ID))) + !InndHisRemember(HDR(HDR__MESSAGE_ID), data->Posted)) syslog(L_ERROR, "%s cant write history %s %m", LogName, HDR(HDR__MESSAGE_ID)); ARTreject(REJECT_OTHER, cp); @@ -2047,7 +2077,7 @@ ARTpost(CHANNEL *cp) MaxLength(ME.Exclusions[j], ME.Exclusions[j])); ARTlog(data, ART_REJECT, cp->Error); if (innconf->remembertrash && (Mode == OMrunning) && - !InndHisRemember(HDR(HDR__MESSAGE_ID))) + !InndHisRemember(HDR(HDR__MESSAGE_ID), data->Posted)) syslog(L_ERROR, "%s cant write history %s %m", LogName, HDR(HDR__MESSAGE_ID)); ARTreject(REJECT_SITE, cp); @@ -2079,7 +2109,7 @@ ARTpost(CHANNEL *cp) cp->Error); ARTlog(data, ART_REJECT, cp->Error); if (innconf->remembertrash && (Mode == OMrunning) && - !InndHisRemember(HDR(HDR__MESSAGE_ID))) + !InndHisRemember(HDR(HDR__MESSAGE_ID), data->Posted)) syslog(L_ERROR, "%s cant write history %s %m", LogName, HDR(HDR__MESSAGE_ID)); ARTreject(REJECT_FILTER, cp); @@ -2110,7 +2140,7 @@ ARTpost(CHANNEL *cp) cp->Error); ARTlog(data, ART_REJECT, cp->Error); if (innconf->remembertrash && (Mode == OMrunning) && - !InndHisRemember(HDR(HDR__MESSAGE_ID))) + !InndHisRemember(HDR(HDR__MESSAGE_ID), data->Posted)) syslog(L_ERROR, "%s cant write history %s %m", LogName, HDR(HDR__MESSAGE_ID)); ARTreject(REJECT_FILTER, cp); @@ -2127,7 +2157,7 @@ ARTpost(CHANNEL *cp) MaxLength(HDR(HDR__DISTRIBUTION), HDR(HDR__DISTRIBUTION))); ARTlog(data, ART_REJECT, cp->Error); if (innconf->remembertrash && Mode == OMrunning && - !InndHisRemember(HDR(HDR__MESSAGE_ID))) + !InndHisRemember(HDR(HDR__MESSAGE_ID), data->Posted)) syslog(L_ERROR, "%s cant write history %s %m", LogName, HDR(HDR__MESSAGE_ID)); ARTreject(REJECT_DISTRIB, cp); @@ -2145,7 +2175,7 @@ ARTpost(CHANNEL *cp) data->Distribution.List[0])); ARTlog(data, ART_REJECT, cp->Error); if (innconf->remembertrash && (Mode == OMrunning) && - !InndHisRemember(HDR(HDR__MESSAGE_ID))) + !InndHisRemember(HDR(HDR__MESSAGE_ID), data->Posted)) syslog(L_ERROR, "%s cant write history %s %m", LogName, HDR(HDR__MESSAGE_ID)); ARTreject(REJECT_DISTRIB, cp); @@ -2252,7 +2282,7 @@ ARTpost(CHANNEL *cp) MaxLength(p, p)); ARTlog(data, ART_REJECT, cp->Error); if (innconf->remembertrash && (Mode == OMrunning) && - !InndHisRemember(HDR(HDR__MESSAGE_ID))) + !InndHisRemember(HDR(HDR__MESSAGE_ID), data->Posted)) syslog(L_ERROR, "%s cant write history %s %m", LogName, HDR(HDR__MESSAGE_ID)); ARTreject(REJECT_GROUP, cp); @@ -2293,7 +2323,7 @@ ARTpost(CHANNEL *cp) MaxLength(ngp->Name, ngp->Name)); ARTlog(data, ART_REJECT, cp->Error); if (innconf->remembertrash && (Mode == OMrunning) && - !InndHisRemember(HDR(HDR__MESSAGE_ID))) + !InndHisRemember(HDR(HDR__MESSAGE_ID), data->Posted)) syslog(L_ERROR, "%s cant write history %s %m", LogName, HDR(HDR__MESSAGE_ID)); ARTreject(REJECT_UNAPP, cp); @@ -2397,7 +2427,8 @@ ARTpost(CHANNEL *cp) ARTlog(data, ART_REJECT, cp->Error); if (!innconf->wanttrash) { if (innconf->remembertrash && (Mode == OMrunning) && - !NoHistoryUpdate && !InndHisRemember(HDR(HDR__MESSAGE_ID))) + !NoHistoryUpdate && !InndHisRemember(HDR(HDR__MESSAGE_ID), + data->Posted)) syslog(L_ERROR, "%s cant write history %s %m", LogName, HDR(HDR__MESSAGE_ID)); ARTreject(REJECT_GROUP, cp); @@ -2410,7 +2441,8 @@ ARTpost(CHANNEL *cp) * which you explicitly excluded in your active file. */ if (!GroupMissing) { if (innconf->remembertrash && (Mode == OMrunning) && - !NoHistoryUpdate && !InndHisRemember(HDR(HDR__MESSAGE_ID))) + !NoHistoryUpdate && !InndHisRemember(HDR(HDR__MESSAGE_ID), + data->Posted)) syslog(L_ERROR, "%s cant write history %s %m", LogName, HDR(HDR__MESSAGE_ID)); ARTreject(REJECT_GROUP, cp); @@ -2447,7 +2479,7 @@ ARTpost(CHANNEL *cp) } ARTlog(data, ART_REJECT, cp->Error); if (innconf->remembertrash && (Mode == OMrunning) && - !InndHisRemember(HDR(HDR__MESSAGE_ID))) + !InndHisRemember(HDR(HDR__MESSAGE_ID), data->Posted)) syslog(L_ERROR, "%s cant write history %s %m", LogName, HDR(HDR__MESSAGE_ID)); ARTreject(REJECT_OTHER, cp); diff -Nurp inn-2.5.0/innd/cc.c inn-2.5.1/innd/cc.c --- inn-2.5.0/innd/cc.c 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/innd/cc.c 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: cc.c 8465 2009-05-16 09:10:21Z iulius $ +/* $Id: cc.c 8637 2009-09-28 19:59:01Z iulius $ ** ** Routines for the control channel. ** @@ -275,7 +275,7 @@ CCaddhist(char *av[]) /* -** Do the work to allow foreign connectiosn. +** Do the work to allow foreign connections. */ static const char * CCallow(char *av[]) @@ -1001,6 +1001,13 @@ CCnewgroup(char *av[]) if (CTYPE(isupper, Rest[0])) Rest[0] = tolower(Rest[0]); } + + who = av[2]; + if (*who == '\0') + who = NEWSMASTER; + if (!is_valid_utf8(who)) + return "1 Invalid UTF-8 creator's name"; + if (strlen(Name) + strlen(Rest) > SMBUF - 24) return "1 Name too long"; @@ -1018,9 +1025,6 @@ CCnewgroup(char *av[]) IOError(WHEN, oerrno); } else { - who = av[2]; - if (*who == '\0') - who = NEWSMASTER; xasprintf(&buff, "%s %ld %s\n", Name, (long) Now.tv_sec, who); if (xwrite(fd, buff, strlen(buff)) < 0) { oerrno = errno; @@ -1145,9 +1149,12 @@ CCblock(OPERATINGMODE NewMode, char *rea if (*reason == '\0') return CCnoreason; - if (strlen(reason) > MAX_REASON_LEN) /* MAX_REASON_LEN is as big as is safe */ + if (strlen(reason) > MAX_REASON_LEN) /* MAX_REASON_LEN is as big as is safe. */ return CCbigreason; + if (!is_valid_utf8(reason)) + return "1 Invalid UTF-8 reason"; + if (Reservation) { if (strcmp(reason, Reservation) != 0) { snprintf(CCreply.data, CCreply.size, "1 Reserved \"%s\"", @@ -1228,8 +1235,10 @@ CCreaders(char *av[]) p = av[1]; if (*p == '\0') return CCnoreason; - if (strlen(p) > MAX_REASON_LEN) /* MAX_REASON_LEN is as big as is safe */ + if (strlen(p) > MAX_REASON_LEN) /* MAX_REASON_LEN is as big as is safe. */ return CCbigreason; + if (!is_valid_utf8(p)) + return "1 Invalid UTF-8 reason"; NNRPReason = xstrdup(p); break; } @@ -1286,8 +1295,10 @@ CCreject(char *av[]) { if (RejectReason) return "1 Already rejecting"; - if (strlen(av[0]) > MAX_REASON_LEN) /* MAX_REASON_LEN is as big as is safe */ + if (strlen(av[0]) > MAX_REASON_LEN) /* MAX_REASON_LEN is as big as is safe. */ return CCbigreason; + if (!is_valid_utf8(av[0])) + return "1 Invalid UTF-8 reason"; RejectReason = xstrdup(av[0]); return NULL; } @@ -1452,8 +1463,10 @@ CCreserve(char *av[]) /* Trying to make a reservation. */ if (Reservation) return "1 Already reserved"; - if (strlen(p) > MAX_REASON_LEN) /* MAX_REASON_LEN is as big as is safe */ + if (strlen(p) > MAX_REASON_LEN) /* MAX_REASON_LEN is as big as is safe. */ return CCbigreason; + if (!is_valid_utf8(p)) + return "1 Invalid UTF-8 reason"; Reservation = xstrdup(p); } else { diff -Nurp inn-2.5.0/innd/chan.c inn-2.5.1/innd/chan.c --- inn-2.5.0/innd/chan.c 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/innd/chan.c 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: chan.c 7636 2007-08-06 17:31:19Z eagle $ +/* $Id: chan.c 8557 2009-08-05 21:02:53Z iulius $ ** ** I/O channel (and buffer) processing. ** @@ -456,7 +456,8 @@ CHANname(CHANNEL *cp) snprintf(cp->Name, sizeof(cp->Name), "remconn:%d", cp->fd); break; case CTreject: - snprintf(cp->Name, sizeof(cp->Name), "%s rejected", RChostname(cp)); + snprintf(cp->Name, sizeof(cp->Name), "%s rejected", + cp->Address.ss_family == 0 ? "localhost" : RChostname(cp)); break; case CTnntp: snprintf(cp->Name, sizeof(cp->Name), "%s:%d", diff -Nurp inn-2.5.0/innd/innd.h inn-2.5.1/innd/innd.h --- inn-2.5.0/innd/innd.h 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/innd/innd.h 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: innd.h 8468 2009-05-16 12:28:24Z iulius $ +/* $Id: innd.h 8644 2009-10-01 19:24:43Z eagle $ ** ** 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: @@ -666,7 +666,7 @@ extern void InndHisClose(voi extern bool InndHisWrite(const char *key, time_t arrived, time_t posted, time_t expires, TOKEN *token); -extern bool InndHisRemember(const char *key); +extern bool InndHisRemember(const char *key, time_t posted); extern void InndHisLogStats(void); extern bool FormatLong(char *p, unsigned long value, int width); extern bool NeedShell(char *p, const char **av, const char **end); @@ -744,7 +744,7 @@ extern void ICDwriteactive(void); extern void CCclose(void); extern void CCsetup(void); -extern void KEYgenerate(HDRCONTENT *, const char *body, +extern void KEYgenerate(HDRCONTENT *, const char *body, size_t, const char *orig, size_t length); extern void LCclose(void); diff -Nurp inn-2.5.0/innd/keywords.c inn-2.5.1/innd/keywords.c --- inn-2.5.0/innd/keywords.c 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/innd/keywords.c 2009-10-12 11:24:04.000000000 -0700 @@ -1,9 +1,9 @@ -/* $Id: keywords.c 7585 2006-11-21 09:37:51Z eagle $ +/* $Id: keywords.c 8658 2009-10-10 07:59:21Z iulius $ ** ** Optional keyword generation code. ** ** Additional code for sake of manufacturing Keywords: headers out of air in -** order to provide better (scorable) XOVER data, containing bits of article +** order to provide better (scorable) OVER data, containing bits of article ** body content which have a reasonable expectation of utility. ** ** Basic idea: Simple word-counting. We find words in the article body, @@ -26,7 +26,8 @@ #if !DO_KEYWORDS void KEYgenerate(HDRCONTENT *header UNUSED, const char *body UNUSED, - const char *orig UNUSED, size_t length UNUSED) + size_t bodylen UNUSED, const char *orig UNUSED, + size_t length UNUSED) { } @@ -89,13 +90,14 @@ ptr_strcmp(const void *p1, const void *p void KEYgenerate( - HDRCONTENT *hc, /* header data */ - const char *body, /* article body */ - const char *v, /* old kw value */ - size_t l) /* old kw length */ + HDRCONTENT *hc, /* header data */ + const char *body, /* article body */ + size_t bodylen, /* article body length */ + const char *v, /* old kw value */ + size_t l) /* old kw length */ { - int word_count, word_length, bodylen, word_index, distinct_words; + int word_count, word_length, word_index, distinct_words; int last; char *text, *orig_text, *text_end, *this_word, *chase, *punc; static struct word_entry *word_vec; @@ -106,7 +108,7 @@ KEYgenerate( /* Prototype setup: Regex match preparation. */ static int regex_lib_init = 0; static regex_t preg; - static const char *elim_regexp = "^\\([-+/0-9][-+/0-9]*\\|.*1st\\|.*2nd\\|.*3rd\\|.*[04-9]th\\|about\\|after\\|ago\\|all\\|already\\|also\\|among\\|and\\|any\\|anybody\\|anyhow\\|anyone\\|anywhere\\|are\\|bad\\|because\\|been\\|before\\|being\\|between\\|but\\|can\\|could\\|did\\|does\\|doing\\|done\\|dont\\|during\\|eight\\|eighth\\|eleven\\|else\\|elsewhere\\|every\\|everywhere\\|few\\|five\\|fifth\\|first\\|for\\|four\\|fourth\\|from\\|get\\|going\\|gone\\|good\\|got\\|had\\|has\\|have\\|having\\|he\\|her\\|here\\|hers\\|herself\\|him\\|himself\\|his\\|how\\|ill\\|into\\|its\\|ive\\|just\\|kn[eo]w\\|least\\|less\\|let\\|like\\|look\\|many\\|may\\|more\\|m[ou]st\\|myself\\|next\\|nine\\|ninth\\|not\\|now\\|off\\|one\\|only\\|onto\\|our\\|out\\|over\\|really\\|said\\|saw\\|says\\|second\\|see\\|set\\|seven\\|seventh\\|several\\|shall\\|she\\|should\\|since\\|six\\|sixth\\|some\\|somehow\\|someone\\|something\\|somewhere\\|such\\|take\\|ten\\|tenth\\|than\\|that\\|the\\|their\\!|them\\|then\\|there\\|therell\\|theres\\|these\\|they\\|thing\\|things\\|third\\|this\\|those\\|three\\|thus\\|together\\|told\\|too\\|twelve\\|two\\|under\\|upon\\|very\\|via\\|want\\|wants\\|was\\|wasnt\\|way\\|were\\|weve\\|what\\|whatever\\|when\\|where\\|wherell\\|wheres\\|whether\\|which\\|while\\|who\\|why\\|will\\|will\\|with\\|would\\|write\\|writes\\|wrote\\|yes\\|yet\\|you\\|your\\|youre\\|yourself\\)$"; + static const char *elim_regexp = "^\\([-+/0-9][-+/0-9]*\\|.*1st\\|.*2nd\\|.*3rd\\|.*[04-9]th\\|about\\|after\\|ago\\|all\\|already\\|also\\|among\\|and\\|any\\|anybody\\|anyhow\\|anyone\\|anywhere\\|are\\|bad\\|because\\|been\\|before\\|being\\|between\\|but\\|can\\|could\\|did\\|does\\|doing\\|done\\|dont\\|during\\|eight\\|eighth\\|eleven\\|else\\|elsewhere\\|every\\|everywhere\\|few\\|five\\|fifth\\|first\\|for\\|four\\|fourth\\|from\\|get\\|going\\|gone\\|good\\|got\\|had\\|has\\|have\\|having\\|he\\|her\\|here\\|hers\\|herself\\|him\\|himself\\|his\\|how\\|ill\\|into\\|its\\|ive\\|just\\|kn[eo]w\\|least\\|less\\|let\\|like\\|look\\|many\\|may\\|more\\|m[ou]st\\|myself\\|next\\|nine\\|ninth\\|not\\|now\\|off\\|one\\|only\\|onto\\|our\\|out\\|over\\|really\\|said\\|saw\\|says\\|second\\|see\\|set\\|seven\\|seventh\\|several\\|shall\\|she\\|should\\|since\\|six\\|sixth\\|some\\|somehow\\|someone\\|something\\|somewhere\\|such\\|take\\|ten\\|tenth\\|than\\|that\\|the\\|their\\!|them\\|then\\|there\\|therell\\|theres\\|these\\|they\\|thing\\|things\\|third\\|this\\|those\\|three\\|thus\\|together\\|told\\|too\\|twelve\\|two\\|under\\|upon\\|very\\|via\\|want\\|wants\\|was\\|wasnt\\|way\\|were\\|weve\\|what\\|whatever\\|when\\|where\\|wherell\\|wheres\\|whether\\|which\\|while\\|who\\|why\\|will\\|with\\|would\\|write\\|writes\\|wrote\\|yes\\|yet\\|you\\|your\\|youre\\|yourself\\)$"; if (word_vec == 0) { word_vec = xmalloc(innconf->keymaxwords * sizeof(struct word_entry)); @@ -145,11 +147,14 @@ KEYgenerate( * now figure acceptable extents, and copy body to working string. * (Memory-intensive for hefty articles: limit to non-ABSURD articles.) */ - bodylen = strlen(body); - if ((bodylen < 100) || (bodylen > innconf->keyartlimit)) /* too small/big to bother */ + if ((bodylen < 100) || (bodylen > (size_t) innconf->keyartlimit)) /* Too small/big to bother. */ return; - orig_text = text = xstrdup(body); /* orig_text is for free() later on */ + /* Nul-terminate the body. orig_text will be freed later. */ + orig_text = xmalloc(bodylen + 1); + memcpy(orig_text, body, bodylen); + orig_text[bodylen] = '\0'; + text = orig_text; text_end = text + bodylen; diff -Nurp inn-2.5.0/innd/nc.c inn-2.5.1/innd/nc.c --- inn-2.5.0/innd/nc.c 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/innd/nc.c 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: nc.c 8469 2009-05-16 12:43:53Z iulius $ +/* $Id: nc.c 8575 2009-08-18 13:53:54Z iulius $ ** ** Routines for the NNTP channel. Other channels get the descriptors which ** we turn into NNTP channels, and over which we speak NNTP. @@ -1000,8 +1000,10 @@ NCproc(CHANNEL *cp) if (innconf->remembertrash && (Mode == OMrunning) && HDR_FOUND(HDR__MESSAGE_ID)) { HDR_PARSE_START(HDR__MESSAGE_ID); + /* The article posting time has not been parsed. We cannot + * give it to InndHisRemember. */ if (!HIScheck(History, HDR(HDR__MESSAGE_ID)) - && !InndHisRemember(HDR(HDR__MESSAGE_ID))) + && !InndHisRemember(HDR(HDR__MESSAGE_ID), 0)) syslog(L_ERROR, "%s cant write history %s %m", LogName, HDR(HDR__MESSAGE_ID)); HDR_PARSE_END(HDR__MESSAGE_ID); diff -Nurp inn-2.5.0/innd/rc.c inn-2.5.1/innd/rc.c --- inn-2.5.0/innd/rc.c 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/innd/rc.c 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: rc.c 8463 2009-05-15 20:31:54Z iulius $ +/* $Id: rc.c 8598 2009-08-22 18:12:54Z iulius $ ** ** Routines for the remote connect channel. Create an Internet stream ** socket that processes connect to. If the incoming site is not one of @@ -123,72 +123,67 @@ GoodIdent(int fd, char *identd) { #define PORT_IDENTD 113 char IDENTuser[80]; - struct sockaddr_storage ss_local; - struct sockaddr_storage ss_distant; - struct sockaddr *s_local = (struct sockaddr *)&ss_local; - struct sockaddr *s_distant = (struct sockaddr *)&ss_distant; + struct sockaddr *s_local; + struct sockaddr *s_distant = NULL; int ident_fd; socklen_t len; int port1,port2; ssize_t lu; char buf[80], *buf2; - if(identd[0] == '\0') { + if (identd[0] == '\0') return true; - } - - len = sizeof( ss_local ); - if ((getsockname(fd,s_local,&len)) < 0) { + + s_local = xmalloc(sizeof(struct sockaddr_storage)); + len = sizeof(struct sockaddr_storage); + if ((getsockname(fd, s_local, &len)) < 0) { syslog(L_ERROR, "can't do getsockname for identd"); - return false; + goto fail; } - len = sizeof( ss_distant ); - if ((getpeername(fd,s_distant,&len)) < 0) { - syslog(L_ERROR, "can't do getsockname for identd"); - return false; + s_distant = xmalloc(sizeof(struct sockaddr_storage)); + len = sizeof(struct sockaddr_storage); + if ((getpeername(fd, s_distant, &len)) < 0) { + syslog(L_ERROR, "can't do getpeername for identd"); + goto fail; } #ifdef HAVE_INET6 - if( s_local->sa_family == AF_INET6 ) + if (s_local->sa_family == AF_INET6) { - struct sockaddr_in6 *s_l6 = (struct sockaddr_in6 *)s_local; - struct sockaddr_in6 *s_d6 = (struct sockaddr_in6 *)s_distant; - - port1=ntohs(s_l6->sin6_port); - port2=ntohs(s_d6->sin6_port); - s_l6->sin6_port = 0; - s_d6->sin6_port = htons( PORT_IDENTD ); - ident_fd=socket(PF_INET6, SOCK_STREAM, 0); + port1 = ntohs(((struct sockaddr_in6 *) s_local)->sin6_port); + port2 = ntohs(((struct sockaddr_in6 *) s_distant)->sin6_port); + ((struct sockaddr_in6 *) s_local)->sin6_port = 0; + ((struct sockaddr_in6 *) s_distant)->sin6_port = htons(PORT_IDENTD); + ident_fd = socket(PF_INET6, SOCK_STREAM, 0); } else #endif - if( s_local->sa_family == AF_INET ) + if (s_local->sa_family == AF_INET) { - struct sockaddr_in *s_l = (struct sockaddr_in *)s_local; - struct sockaddr_in *s_d = (struct sockaddr_in *)s_distant; - - port1=ntohs(s_l->sin_port); - port2=ntohs(s_d->sin_port); - s_l->sin_port = 0; - s_d->sin_port = htons( PORT_IDENTD ); - ident_fd=socket(PF_INET, SOCK_STREAM, 0); + port1 = ntohs(((struct sockaddr_in *) s_local)->sin_port); + port2 = ntohs(((struct sockaddr_in *) s_distant)->sin_port); + ((struct sockaddr_in *) s_local)->sin_port = 0; + ((struct sockaddr_in *) s_distant)->sin_port = htons(PORT_IDENTD); + ident_fd = socket(PF_INET, SOCK_STREAM, 0); } else { - syslog(L_ERROR, "Bad address family: %d\n", s_local->sa_family ); - return false; + syslog(L_ERROR, "Bad address family: %d\n", s_local->sa_family); + goto fail; } if (ident_fd < 0) { syslog(L_ERROR, "can't open socket for identd (%m)"); - return false; + goto fail; } - if (bind(ident_fd,s_local,SA_LEN(s_local)) < 0) { + if (bind(ident_fd, s_local, SA_LEN(s_local)) < 0) { syslog(L_ERROR, "can't bind socket for identd (%m)"); close(ident_fd); - return false; + goto fail; } - if (connect(ident_fd,s_distant,SA_LEN(s_distant)) < 0) { + if (connect(ident_fd, s_distant, SA_LEN(s_distant)) < 0) { syslog(L_ERROR, "can't connect to identd (%m)"); close(ident_fd); - return false; + goto fail; } + free(s_local); + free(s_distant); snprintf(buf,sizeof(buf),"%d,%d\r\n",port2, port1); write(ident_fd,buf, strlen(buf)); @@ -215,6 +210,13 @@ GoodIdent(int fd, char *identd) close(ident_fd); return strcmp(identd, IDENTuser) == 0; + +fail: + if (s_local != NULL) + free(s_local); + if (s_distant != NULL) + free(s_distant); + return false; } /* @@ -256,46 +258,6 @@ RCCommaSplit(char *text) return save; } -static bool -RCaddressmatch(const struct sockaddr_storage *cp, const struct sockaddr_storage *rp) -{ -#ifdef HAVE_INET6 - const struct sockaddr_in *sin_cp, *sin_rp; - const struct sockaddr_in6 *sin6_cp, *sin6_rp; - - if (cp->ss_family == AF_INET6 && rp->ss_family == AF_INET) { - sin6_cp = (const struct sockaddr_in6 *)cp; - sin_rp = (const struct sockaddr_in *)rp; - if (IN6_IS_ADDR_V4MAPPED(&sin6_cp->sin6_addr) && - memcmp(&sin6_cp->sin6_addr.s6_addr[12], - &sin_rp->sin_addr.s_addr, sizeof(struct in_addr)) == 0) - return true; - } else if (cp->ss_family == AF_INET && rp->ss_family == AF_INET6) { - sin_cp = (const struct sockaddr_in *)cp; - sin6_rp = (const struct sockaddr_in6 *)rp; - if (IN6_IS_ADDR_V4MAPPED(&sin6_rp->sin6_addr) && - memcmp(&sin6_rp->sin6_addr.s6_addr[12], - &sin_cp->sin_addr.s_addr, sizeof(struct in_addr)) == 0) - return true; - } else if (cp->ss_family == AF_INET6 && rp->ss_family == AF_INET6) { -#ifdef HAVE_BROKEN_IN6_ARE_ADDR_EQUAL - if (!memcmp(&((const struct sockaddr_in6 *)cp)->sin6_addr, - &((const struct sockaddr_in6 *)rp)->sin6_addr, - sizeof(struct in6_addr))) -#else - if (IN6_ARE_ADDR_EQUAL( &((const struct sockaddr_in6 *)cp)->sin6_addr, - &((const struct sockaddr_in6 *)rp)->sin6_addr)) -#endif - return true; - } else -#endif /* INET6 */ - if (((const struct sockaddr_in *)cp)->sin_addr.s_addr == - ((const struct sockaddr_in *)rp)->sin_addr.s_addr) - return true; - - return false; -} - /* ** See if the site properly entered the password. */ @@ -309,7 +271,8 @@ RCauthorized(CHANNEL *cp, char *pass) network_sockaddr_sprint(addr, sizeof(addr), (struct sockaddr *) &cp->Address); for (rp = RCpeerlist, i = RCnpeerlist; --i >= 0; rp++) - if (RCaddressmatch(&cp->Address, &rp->Address)) { + if (network_sockaddr_equal((struct sockaddr *) &cp->Address, + (struct sockaddr *) &rp->Address)) { if (rp->Password[0] == '\0' || strcmp(pass, rp->Password) == 0) return true; warn("%s (%s) bad_auth", rp->Label, addr); @@ -334,7 +297,8 @@ RCnolimit(CHANNEL *cp) int i; for (rp = RCpeerlist, i = RCnpeerlist; --i >= 0; rp++) - if (RCaddressmatch(&cp->Address, &rp->Address)) + if (network_sockaddr_equal((struct sockaddr *) &cp->Address, + (struct sockaddr *) &rp->Address)) return !rp->MaxCnx; /* Not found in our table; this can't happen. */ @@ -351,7 +315,8 @@ RClimit(CHANNEL *cp) int i; for (rp = RCpeerlist, i = RCnpeerlist; --i >= 0; rp++) - if (RCaddressmatch(&cp->Address, &rp->Address)) + if (network_sockaddr_equal((struct sockaddr *) &cp->Address, + (struct sockaddr *) &rp->Address)) return rp->MaxCnx; /* Not found in our table; this can't happen. */ return RemoteLimit; @@ -528,7 +493,7 @@ RCreader(CHANNEL *cp) Finally, if neither rejection happened, add the entry to the table, and continue on as a normal connect. */ - memcpy(&tempchan.Address, &remote, SA_LEN((struct sockaddr *)&remote)); + memcpy(&tempchan.Address, &remote, sizeof(tempchan.Address)); reject_message = NULL; if (RemoteTimer != 0) { now = time(NULL); @@ -542,7 +507,8 @@ RCreader(CHANNEL *cp) i = (i + 1) & (REMOTETABLESIZE - 1); continue; } - if (RCaddressmatch(&remotetable[i].Address, &remote)) + if (network_sockaddr_equal((struct sockaddr *) &remotetable[i].Address, + (struct sockaddr *) &remote)) found++; i = (i + 1) & (REMOTETABLESIZE - 1); } @@ -557,7 +523,8 @@ RCreader(CHANNEL *cp) } else { i = (remotefirst + remotecount) & (REMOTETABLESIZE - 1); - memcpy(&remotetable[i].Address, &remote, SA_LEN((struct sockaddr *)&remote)); + memcpy(&remotetable[i].Address, &remote, + sizeof(remotetable[i].Address)); remotetable[i].Expires = now + RemoteTimer; remotecount++; } @@ -570,7 +537,8 @@ RCreader(CHANNEL *cp) if (reject_message) { new = CHANcreate(fd, CTreject, CSwritegoodbye, RCrejectreader, RCrejectwritedone); - memcpy(&remotetable[i].Address, &remote, SA_LEN((struct sockaddr *)&remote)); + memcpy(&remotetable[i].Address, &remote, + sizeof(remotetable[i].Address)); new->Rejected = reject_val; RCHANremove(new); WCHANset(new, reject_message, (int)strlen(reject_message)); @@ -581,7 +549,8 @@ RCreader(CHANNEL *cp) /* See if it's one of our servers. */ for (name = NULL, rp = RCpeerlist, i = RCnpeerlist; --i >= 0; rp++) - if (RCaddressmatch(&rp->Address, &remote)) { + if (network_sockaddr_equal((struct sockaddr *) &rp->Address, + (struct sockaddr *) &remote)) { name = rp->Name; break; } @@ -610,7 +579,7 @@ RCreader(CHANNEL *cp) new->CanAuthenticate = true; /* Can use AUTHINFO. */ new->MaxCnx = rp->MaxCnx; new->HoldTime = rp->HoldTime; - memcpy(&new->Address, &remote, SA_LEN((struct sockaddr *)&remote)); + memcpy(&new->Address, &remote, sizeof(new->Address)); if (new->MaxCnx > 0 && new->HoldTime == 0) { CHANcount_active(new); if((new->ActiveCnx > new->MaxCnx) && (new->fd > 0)) { @@ -640,7 +609,7 @@ RCreader(CHANNEL *cp) reject_message = NNTP_ACCESS; new = CHANcreate(fd, CTreject, CSwritegoodbye, RCrejectreader, RCrejectwritedone); - memcpy(&new->Address, &remote, SA_LEN((struct sockaddr *)&remote)); + memcpy(&new->Address, &remote, sizeof(new->Address)); new->Rejected = reject_val; RCHANremove(new); WCHANset(new, reject_message, (int)strlen(reject_message)); @@ -650,7 +619,7 @@ RCreader(CHANNEL *cp) } if (new != NULL) { - memcpy(&new->Address, &remote, SA_LEN((struct sockaddr *)&remote)); + memcpy(&new->Address, &remote, sizeof(new->Address)); network_sockaddr_sprint(addr, sizeof(addr), (struct sockaddr *) &remote); notice("%s connected %d streaming %s", name ? name : addr, new->fd, @@ -1545,7 +1514,7 @@ RCwritelist(char *filename) if (*p == '/') q = p + 1; - fprintf (F, "## $Id: rc.c 8463 2009-05-15 20:31:54Z iulius $\n"); + fprintf (F, "## $Id: rc.c 8598 2009-08-22 18:12:54Z iulius $\n"); fprintf (F, "##\n"); fprintf (F, "## %s -- Configuration of incoming news feeds\n", q); free(r); @@ -1675,6 +1644,8 @@ RCreadlist(void) /* ** Find the name of a remote host we've connected to. +** Note that when cp->Address.ss_family is 0, the connection is local +** and the caller should use "localhost". */ char * RChostname(const CHANNEL *cp) @@ -1684,7 +1655,8 @@ RChostname(const CHANNEL *cp) int i; for (rp = RCpeerlist, i = RCnpeerlist; --i >= 0; rp++) - if (RCaddressmatch(&cp->Address, &rp->Address)) + if (network_sockaddr_equal((struct sockaddr *) &cp->Address, + (struct sockaddr *) &rp->Address)) return rp->Name; network_sockaddr_sprint(buff, sizeof(buff), (struct sockaddr *) &cp->Address); @@ -1700,7 +1672,8 @@ RClabelname(CHANNEL *cp) { int i; for (rp = RCpeerlist, i = RCnpeerlist; --i >= 0; rp++) { - if (RCaddressmatch(&cp->Address, &rp->Address)) + if (network_sockaddr_equal((struct sockaddr *) &cp->Address, + (struct sockaddr *) &rp->Address)) return rp->Label; } return NULL; @@ -1724,7 +1697,8 @@ RCcanpost(CHANNEL *cp, char *group) return 1; for (rp = RCpeerlist, i = RCnpeerlist; --i >= 0; rp++) { - if (!RCaddressmatch(&cp->Address, &rp->Address)) + if (!network_sockaddr_equal((struct sockaddr *) &cp->Address, + (struct sockaddr *) &rp->Address)) continue; if (rp->Patterns == NULL) break; diff -Nurp inn-2.5.0/innd/util.c inn-2.5.1/innd/util.c --- inn-2.5.0/innd/util.c 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/innd/util.c 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: util.c 8468 2009-05-16 12:28:24Z iulius $ +/* $Id: util.c 8575 2009-08-18 13:53:54Z iulius $ ** ** Various miscellaneous utility functions for innd internal use. */ @@ -353,10 +353,14 @@ InndHisWrite(const char *key, time_t arr return r; } +/* +** Remember the rejected article. Its posting time is negative or zero +** in case it is unknown. Its arrival time is now. +*/ bool -InndHisRemember(const char *key) +InndHisRemember(const char *key, time_t posted) { - bool r = HISremember(History, key, Now.tv_sec); + bool r = HISremember(History, key, Now.tv_sec, posted); if (r != true) IOError("history remember", errno); diff -Nurp inn-2.5.0/innfeed/Makefile inn-2.5.1/innfeed/Makefile --- inn-2.5.0/innfeed/Makefile 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/innfeed/Makefile 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -## $Id: Makefile 8328 2009-02-19 20:07:10Z iulius $ +## $Id: Makefile 8533 2009-06-21 20:14:05Z iulius $ include ../Makefile.global @@ -103,7 +103,8 @@ article.o: article.c innfeed.h ../includ ../include/inn/defines.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/portable/mmap.h ../include/config.h \ ../include/inn/messages.h ../include/inn/libinn.h \ - ../include/inn/storage.h article.h misc.h buffer.h endpoint.h + ../include/inn/storage.h ../include/inn/options.h article.h misc.h \ + buffer.h endpoint.h buffer.o: buffer.c innfeed.h ../include/inn/timer.h \ ../include/inn/defines.h ../include/inn/system.h ../include/config.h \ ../include/inn/defines.h ../include/inn/options.h ../include/clibrary.h \ @@ -165,9 +166,9 @@ main.o: main.c innfeed.h ../include/inn/ ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \ ../include/portable/time.h ../include/inn/innconf.h \ ../include/inn/messages.h ../include/inn/version.h \ - ../include/inn/libinn.h ../include/inn/storage.h article.h misc.h \ - buffer.h configfile.h connection.h endpoint.h host.h innlistener.h \ - tape.h + ../include/inn/libinn.h ../include/inn/storage.h \ + ../include/inn/options.h article.h misc.h buffer.h configfile.h \ + connection.h endpoint.h host.h innlistener.h tape.h misc.o: misc.c innfeed.h ../include/inn/timer.h ../include/inn/defines.h \ ../include/inn/system.h ../include/config.h ../include/inn/defines.h \ ../include/inn/options.h ../include/clibrary.h ../include/config.h \ diff -Nurp inn-2.5.0/innfeed/config_l.c inn-2.5.1/innfeed/config_l.c --- inn-2.5.0/innfeed/config_l.c 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/innfeed/config_l.c 2009-10-12 11:24:04.000000000 -0700 @@ -8,7 +8,7 @@ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 5 -#define YY_FLEX_SUBMINOR_VERSION 33 +#define YY_FLEX_SUBMINOR_VERSION 35 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif @@ -30,7 +30,7 @@ /* C99 systems have . Non-C99 systems may or may not. */ -#if __STDC_VERSION__ >= 199901L +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, * if you want the limit (max/min) macros for int types. @@ -53,7 +53,6 @@ typedef int flex_int32_t; typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; -#endif /* ! C99 */ /* Limits of integral types. */ #ifndef INT8_MIN @@ -84,6 +83,8 @@ typedef unsigned int flex_uint32_t; #define UINT32_MAX (4294967295U) #endif +#endif /* ! C99 */ + #endif /* ! FLEXINT_H */ #ifdef __cplusplus @@ -93,11 +94,12 @@ typedef unsigned int flex_uint32_t; #else /* ! __cplusplus */ -#if __STDC__ +/* C99 requires __STDC__ to be defined as 1. */ +#if defined (__STDC__) #define YY_USE_CONST -#endif /* __STDC__ */ +#endif /* defined (__STDC__) */ #endif /* ! __cplusplus */ #ifdef YY_USE_CONST @@ -139,7 +141,15 @@ typedef unsigned int flex_uint32_t; /* Size of default input buffer. */ #ifndef YY_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k. + * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. + * Ditto for the __ia64__ case accordingly. + */ +#define YY_BUF_SIZE 32768 +#else #define YY_BUF_SIZE 16384 +#endif /* __ia64__ */ #endif /* The state buf must be large enough to hold one state per character in the main buffer. @@ -177,14 +187,9 @@ extern FILE *yyin, *yyout; #define unput(c) yyunput( c, (yytext_ptr) ) -/* The following is because we cannot portably get our hands on size_t - * (without autoconf's help, which isn't available because we want - * flex-generated scanners to compile on their own). - */ - #ifndef YY_TYPEDEF_YY_SIZE_T #define YY_TYPEDEF_YY_SIZE_T -typedef unsigned int yy_size_t; +typedef size_t yy_size_t; #endif #ifndef YY_STRUCT_YY_BUFFER_STATE @@ -571,7 +576,7 @@ struct includeFile { int include_stack_ptr = 0; -#line 575 "lex.yy.c" +#line 580 "lex.yy.c" #define INITIAL 0 #define incl 1 @@ -590,6 +595,35 @@ int include_stack_ptr = 0; static int yy_init_globals (void ); +/* Accessor methods to globals. + These are made visible to non-reentrant scanners for convenience. */ + +int yylex_destroy (void ); + +int yyget_debug (void ); + +void yyset_debug (int debug_flag ); + +YY_EXTRA_TYPE yyget_extra (void ); + +void yyset_extra (YY_EXTRA_TYPE user_defined ); + +FILE *yyget_in (void ); + +void yyset_in (FILE * in_str ); + +FILE *yyget_out (void ); + +void yyset_out (FILE * out_str ); + +int yyget_leng (void ); + +char *yyget_text (void ); + +int yyget_lineno (void ); + +void yyset_lineno (int line_number ); + /* Macros after this point can all be overridden by user definitions in * section 1. */ @@ -624,7 +658,12 @@ static int input (void ); /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k */ +#define YY_READ_BUF_SIZE 16384 +#else #define YY_READ_BUF_SIZE 8192 +#endif /* __ia64__ */ #endif /* Copy whatever the last rule matched to the standard output. */ @@ -632,7 +671,7 @@ static int input (void ); /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ -#define ECHO (void) fwrite( yytext, yyleng, 1, yyout ) +#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, @@ -731,7 +770,7 @@ YY_DECL #line 81 "configfile.l" -#line 735 "lex.yy.c" +#line 774 "lex.yy.c" if ( !(yy_init) ) { @@ -1059,7 +1098,7 @@ YY_RULE_SETUP #line 263 "configfile.l" ECHO; YY_BREAK -#line 1063 "lex.yy.c" +#line 1102 "lex.yy.c" case YY_END_OF_BUFFER: { @@ -1312,6 +1351,14 @@ static int yy_get_next_buffer (void) else ret_val = EOB_ACT_CONTINUE_SCAN; + if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + /* Extend the array by 50%, plus the number we really need. */ + yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); + if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); + } + (yy_n_chars) += number_to_move; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; @@ -1730,7 +1777,9 @@ static void yyensure_buffer_stack (void) (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc (num_to_alloc * sizeof(struct yy_buffer_state*) ); - + if ( ! (yy_buffer_stack) ) + YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); (yy_buffer_stack_max) = num_to_alloc; @@ -1748,6 +1797,8 @@ static void yyensure_buffer_stack (void) ((yy_buffer_stack), num_to_alloc * sizeof(struct yy_buffer_state*) ); + if ( ! (yy_buffer_stack) ) + YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); /* zero only the new slots.*/ memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); @@ -1806,8 +1857,8 @@ YY_BUFFER_STATE yy_scan_string (yyconst /** Setup the input buffer state to scan the given bytes. The next call to yylex() will * scan from a @e copy of @a bytes. - * @param bytes the byte buffer to scan - * @param len the number of bytes in the buffer pointed to by @a bytes. + * @param yybytes the byte buffer to scan + * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. * * @return the newly allocated buffer state object. */ diff -Nurp inn-2.5.0/innfeed/imap_connection.c inn-2.5.1/innfeed/imap_connection.c --- inn-2.5.0/innfeed/imap_connection.c 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/innfeed/imap_connection.c 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: imap_connection.c 8243 2008-12-21 11:50:47Z iulius $ +/* $Id: imap_connection.c 8523 2009-06-20 13:13:23Z iulius $ ** ** Feed articles to an IMAP server via LMTP and IMAP. ** @@ -2153,13 +2153,18 @@ static conn_ret lmtp_authenticate(connec /* empty initial client response */ p = concat("AUTH ", mechusing, " =\r\n", (char *) 0); } else { - /* initial client response - convert to base64 */ - inbase64 = xmalloc(outlen*2+10); + /* Initial client response - convert to base64. + * 2n+7 bytes are enough to contain the result of the base64 + * encoding of a string whose length is n bytes. + * In sasl_encode64() calls, the fourth argument is the length + * of the third including the null terminator (thus 2n+8 bytes). */ + inbase64 = xmalloc(outlen*2 + 8); - saslresult = sasl_encode64(out, outlen, - inbase64, outlen*2+10, + saslresult = sasl_encode64(out, outlen, + inbase64, outlen*2 + 8, (unsigned *) &inbase64len); - if (saslresult != SASL_OK) return RET_FAIL; + if (saslresult != SASL_OK) + return RET_FAIL; p = concat("AUTH ", mechusing, " ", inbase64, "\r\n", (char *) 0); free(inbase64); } @@ -2420,21 +2425,26 @@ static conn_ret imap_sendAuthStep(connec cxn->imap_state = IMAP_CONNECTED_NOTAUTH; return RET_FAIL; } + /* Convert to base64. + * 2n+7 bytes are enough to contain the result of the base64 + * encoding of a string whose length is n bytes. + * In sasl_encode64() calls, the fourth argument is the length + * of the third including the null terminator (thus 2n+8 bytes). + * And CRLF takes the last two bytes (thus 2n+10 bytes). */ + inbase64 = xmalloc(outlen*2 + 10); - inbase64 = xmalloc(outlen * 2 + 10); - - /* convert to base64 */ saslresult = sasl_encode64(out, outlen, - inbase64, outlen*2, (unsigned *) &inbase64len); + inbase64, outlen*2 + 8, (unsigned *) &inbase64len); - if (saslresult != SASL_OK) return RET_FAIL; + if (saslresult != SASL_OK) + return RET_FAIL; - /* append endline */ - strlcpy(inbase64 + inbase64len, "\r\n", outlen * 2 + 10 - inbase64len); - inbase64len+=2; + /* Append endline. */ + strlcpy(inbase64 + inbase64len, "\r\n", outlen*2 + 10 - inbase64len); + inbase64len += 2; - /* send to server */ - result = WriteToWire_imapstr(cxn,inbase64, inbase64len); + /* Send to server. */ + result = WriteToWire_imapstr(cxn, inbase64, inbase64len); cxn->imap_state = IMAP_WRITING_STEPAUTH; @@ -3386,28 +3396,33 @@ static void lmtp_readCB (EndPoint e, IoS return; } - /* convert to base64 */ - inbase64 = xmalloc(outlen*2+10); - - saslresult = sasl_encode64(out, outlen, - inbase64, outlen*2+10, - (unsigned *) &inbase64len); - - if (saslresult != SASL_OK) - { - d_printf(0,"%s:%d:LMTP sasl_encode64(): %s\n", - hostPeerName (cxn->myHost),cxn->ident, - sasl_errstring(saslresult,NULL,NULL)); - - lmtp_Disconnect(cxn); - return; - } - - /* add an endline */ - strlcpy(inbase64 + inbase64len, "\r\n", outlen * 2 + 10); + /* Convert to base64. + * 2n+7 bytes are enough to contain the result of the base64 + * encoding of a string whose length is n bytes. + * In sasl_encode64() calls, the fourth argument is the length + * of the third including the null terminator (thus 2n+8 bytes). + * And CRLF takes the last two bytes (thus 2n+10 bytes). */ + inbase64 = xmalloc(outlen*2 + 10); + + saslresult = sasl_encode64(out, outlen, + inbase64, outlen*2 + 8, + (unsigned *) &inbase64len); + + if (saslresult != SASL_OK) { + d_printf(0,"%s:%d:LMTP sasl_encode64(): %s\n", + hostPeerName(cxn->myHost), cxn->ident, + sasl_errstring(saslresult, NULL, NULL)); + + lmtp_Disconnect(cxn); + return; + } + + /* Add an endline. */ + strlcpy(inbase64 + inbase64len, "\r\n", outlen*2 + 10 - inbase64len); + inbase64len += 2; - /* send to server */ - result = WriteToWire_lmtpstr(cxn,inbase64, inbase64len+2); + /* Send to server. */ + result = WriteToWire_lmtpstr(cxn, inbase64, inbase64len); if (result != RET_OK) { diff -Nurp inn-2.5.0/lib/Makefile inn-2.5.1/lib/Makefile --- inn-2.5.0/lib/Makefile 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/lib/Makefile 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -## $Id: Makefile 8422 2009-04-18 12:55:20Z iulius $ +## $Id: Makefile 8556 2009-08-05 21:01:48Z iulius $ include ../Makefile.global @@ -130,7 +130,7 @@ date.o: date.c ../include/config.h ../in dbz.o: dbz.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/portable/mmap.h ../include/config.h \ - ../include/dbz.h ../include/inn/libinn.h ../include/inn/defines.h \ + ../include/inn/dbz.h ../include/inn/libinn.h ../include/inn/defines.h \ ../include/inn/messages.h ../include/inn/innconf.h \ ../include/inn/mmap.h ../include/inn/libinn.h defdist.o: defdist.c ../include/config.h ../include/inn/defines.h \ diff -Nurp inn-2.5.0/lib/dbz.c inn-2.5.1/lib/dbz.c --- inn-2.5.0/lib/dbz.c 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/lib/dbz.c 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: dbz.c 7775 2008-04-16 16:52:48Z iulius $ +/* $Id: dbz.c 8556 2009-08-05 21:01:48Z iulius $ ** ** dbz database implementation V6.1.1 ** @@ -77,7 +77,7 @@ #include #include -#include "dbz.h" +#include "inn/dbz.h" #include "inn/messages.h" #include "inn/innconf.h" #include "inn/mmap.h" diff -Nurp inn-2.5.0/lib/innconf.c inn-2.5.1/lib/innconf.c --- inn-2.5.0/lib/innconf.c 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/lib/innconf.c 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: innconf.c 8460 2009-05-12 18:16:55Z iulius $ +/* $Id: innconf.c 8525 2009-06-20 14:17:23Z iulius $ ** ** Manage the global innconf struct. ** @@ -222,7 +222,7 @@ const struct config config_table[] = { { K(strippostcc), BOOL (false) }, #ifdef HAVE_SSL { K(tlscafile), STRING ("") }, - { K(tlscapath), STRING ("") }, + { K(tlscapath), STRING (NULL) }, { K(tlscertfile), STRING (NULL) }, { K(tlskeyfile), STRING (NULL) }, #endif /* HAVE_SSL */ @@ -364,10 +364,12 @@ innconf_set_defaults(void) /* Defaults used only if TLS (SSL) is supported. */ #ifdef HAVE_SSL + if (innconf->tlscapath == NULL) + innconf->tlscapath = xstrdup(innconf->pathetc); if (innconf->tlscertfile == NULL) - innconf->tlscertfile = concatpath(innconf->pathnews, "lib/cert.pem"); + innconf->tlscertfile = concatpath(innconf->pathetc, "cert.pem"); if (innconf->tlskeyfile == NULL) - innconf->tlskeyfile = concatpath(innconf->pathnews, "lib/key.pem"); + innconf->tlskeyfile = concatpath(innconf->pathetc, "key.pem"); #endif } diff -Nurp inn-2.5.0/lib/mkstemp.c inn-2.5.1/lib/mkstemp.c --- inn-2.5.0/lib/mkstemp.c 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/lib/mkstemp.c 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: mkstemp.c 5329 2002-03-17 07:39:14Z rra $ +/* $Id: mkstemp.c 8630 2009-09-09 20:06:53Z iulius $ ** ** Replacement for a missing mkstemp. ** @@ -25,7 +25,7 @@ int test_mkstemp(char *); #endif /* Pick the longest available integer type. */ -#if HAVE_LONG_LONG +#if HAVE_LONG_LONG_INT typedef unsigned long long long_int_type; #else typedef unsigned long long_int_type; diff -Nurp inn-2.5.0/lib/perl.c inn-2.5.1/lib/perl.c --- inn-2.5.0/lib/perl.c 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/lib/perl.c 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: perl.c 8449 2009-05-06 18:02:47Z iulius $ +/* $Id: perl.c 8561 2009-08-14 18:32:41Z iulius $ ** ** Embedded Perl support for INN. ** @@ -46,7 +46,7 @@ bool PerlFilterActive = false; /* The filter sub called (filter_art or filter_post). */ CV *perl_filter_cv; -/* The embedded Perl interpretor. */ +/* The embedded Perl interpreter. */ static PerlInterpreter *PerlCode = NULL; diff -Nurp inn-2.5.0/lib/snprintf.c inn-2.5.1/lib/snprintf.c --- inn-2.5.0/lib/snprintf.c 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/lib/snprintf.c 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: snprintf.c 7651 2007-08-20 10:28:34Z iulius $ +/* $Id: snprintf.c 8630 2009-09-09 20:06:53Z iulius $ ** ** Replacement for a missing snprintf or vsnprintf. ** @@ -113,7 +113,7 @@ #define LDOUBLE double #endif -#ifdef HAVE_LONG_LONG +#ifdef HAVE_LONG_LONG_INT # define LLONG long long #else # define LLONG long diff -Nurp inn-2.5.0/lib/uwildmat.c inn-2.5.1/lib/uwildmat.c --- inn-2.5.0/lib/uwildmat.c 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/lib/uwildmat.c 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: uwildmat.c 8378 2009-03-09 19:45:13Z iulius $ +/* $Id: uwildmat.c 8637 2009-09-28 19:59:01Z iulius $ ** ** wildmat pattern matching with Unicode UTF-8 extensions. ** @@ -93,7 +93,6 @@ utf8_length(const unsigned char *start, if (end != NULL && (end - start + 1) < length) return 1; left = length - 1; - p = start + 1; for (p = start + 1; left > 0 && (*p & 0xc0) == 0x80; p++) left--; return (left == 0) ? length : 1; @@ -101,6 +100,48 @@ utf8_length(const unsigned char *start, /* +** Check whether a string contains only valid UTF-8 characters. +*/ +bool +is_valid_utf8(const char *text) +{ + unsigned char mask; + const unsigned char *p; + int length; + int left; + + for (p = (const unsigned char *)text; *p != '\0';) { + mask = 0x80; + length = 0; + + /* Find out the expected length of the character. */ + for (; mask > 0 && (*p & mask) == mask; mask >>= 1) + length++; + + p++; + + /* Valid ASCII. */ + if (length == 0) + continue; + + /* Invalid length. */ + if (length < 2 || length > 6) + return false; + + /* Check that each byte looks like 10xxxxxx, except for the first. */ + left = length - 1; + for (; left > 0 && (*p & 0xc0) == 0x80; p++) + left--; + + if (left > 0) + return false; + } + + return true; +} + + +/* ** Convert a UTF-8 character to UCS-4. Takes a pointer to the start of the ** character and to the last octet of the string, and to a uint32_t into ** which to put the decoded UCS-4 value. If end is NULL, expect the string @@ -235,7 +276,7 @@ match_pattern(const unsigned char *text, Optimization: If the character after the * in the pattern isn't a metacharacter (the common case), then the * has to - consume characters at least up to the next occurance of that + consume characters at least up to the next occurrence of that character in the text. Scan forward for those points rather than recursing at every possible point to save the extra function call overhead. */ @@ -286,7 +327,7 @@ match_pattern(const unsigned char *text, /* ** Takes text and a wildmat expression; a wildmat expression is a -** comma-separated list of wildmat patterns, optionally preceeded by ! to +** comma-separated list of wildmat patterns, optionally preceded by ! to ** invert the sense of the expression. Returns WILDMAT_MATCH if that ** expression matches the text, WILDMAT_FAIL otherwise. If allowpoison is ** set, allow @ to introduce a poison expression (the same as !, but if it diff -Nurp inn-2.5.0/lib/wire.c inn-2.5.1/lib/wire.c --- inn-2.5.0/lib/wire.c 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/lib/wire.c 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: wire.c 7585 2006-11-21 09:37:51Z eagle $ +/* $Id: wire.c 8567 2009-08-15 07:03:37Z iulius $ ** ** Wire format article utilities. ** @@ -117,7 +117,7 @@ skip_fws(char *text, const char *end) /* ** Given a pointer to the start of the article, the article length, and the -** header to look for, find the first occurance of that header in the +** header to look for, find the first occurrence of that header in the ** article. Skip over headers with no content, but allow for headers that ** are folded before the first text in the header. If no matching headers ** with content other than spaces and tabs are found, return NULL. diff -Nurp inn-2.5.0/m4/berkeleydb.m4 inn-2.5.1/m4/berkeleydb.m4 --- inn-2.5.0/m4/berkeleydb.m4 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/m4/berkeleydb.m4 2009-10-12 11:24:04.000000000 -0700 @@ -1,5 +1,5 @@ dnl berkeleydb.m4 -- Find the path to the Berkeley DB libraries. -dnl $Id: berkeleydb.m4 7819 2008-05-05 21:27:28Z iulius $ +dnl $Id: berkeleydb.m4 8499 2009-06-06 19:39:47Z iulius $ dnl dnl This file provides INN_LIB_BERKELEYDB, which defines the --with-berkeleydb dnl command-line option and probes for the location of Berkeley DB if that @@ -11,7 +11,7 @@ AC_DEFUN([INN_LIB_BERKELEYDB], DB_LDFLAGS= DB_LIBS= AC_ARG_WITH([berkeleydb], - [AC_HELP_STRING([--with-berkeleydb@<:@=PATH@:>@], + [AS_HELP_STRING([--with-berkeleydb@<:@=PATH@:>@], [Enable Berkeley DB (for ovdb overview method)])], DB_DIR=$with_berkeleydb, DB_DIR=no) diff -Nurp inn-2.5.0/m4/compress.m4 inn-2.5.1/m4/compress.m4 --- inn-2.5.0/m4/compress.m4 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/m4/compress.m4 2009-10-12 11:24:04.000000000 -0700 @@ -1,5 +1,5 @@ dnl compress.m4 -- Log compression handling. -dnl $Id: compress.m4 7642 2007-08-10 11:25:05Z iulius $ +dnl $Id: compress.m4 8499 2009-06-06 19:39:47Z 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. INN also needs to @@ -15,7 +15,7 @@ dnl Choose the log compression method; t dnl just the name of the compression type. AC_DEFUN([INN_ARG_COMPRESS], [AC_ARG_WITH([log-compress], - [AC_HELP_STRING([--with-log-compress=METHOD], + [AS_HELP_STRING([--with-log-compress=METHOD], [Log compression method [gzip]])], LOG_COMPRESS=$with_log_compress, LOG_COMPRESS=gzip) diff -Nurp inn-2.5.0/m4/getaddrinfo.m4 inn-2.5.1/m4/getaddrinfo.m4 --- inn-2.5.0/m4/getaddrinfo.m4 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/m4/getaddrinfo.m4 1969-12-31 16:00:00.000000000 -0800 @@ -1,42 +0,0 @@ -dnl getaddrinfo.m4 -- Check for working getaddrinfo flags. -dnl $Id: getaddrinfo.m4 8311 2009-01-31 19:35:03Z eagle $ -dnl -dnl Check whether the AI_ADDRCONFIG flag is present and working -dnl with getaddrinfo. -dnl Provides INN_FUNC_GETADDRINFO_ADDRCONFIG and defines -dnl HAVE_GETADDRINFO_ADDRCONFIG if AI_ADDRCONFIG works. - -dnl Source used by INN_FUNC_GETADDRINFO_ADDRCONFIG. -define([_INN_FUNC_GETADDRINFO_ADDRCONFIG_SOURCE], -[AC_LANG_SOURCE([[ -#include -#include -#include -#if STDC_HEADERS || HAVE_STRING_H -# include -#endif - -int -main(int argc, char **argv) { - struct addrinfo hints, *ai; - - memset(&hints, 0, sizeof(hints)); - hints.ai_family = AF_UNSPEC; - hints.ai_socktype = SOCK_STREAM; - hints.ai_flags = AI_ADDRCONFIG; - return getaddrinfo("localhost", NULL, &hints, &ai) != 0; -} -]])]) - -dnl The public macro. -AC_DEFUN([INN_FUNC_GETADDRINFO_ADDRCONFIG], -[AC_CACHE_CHECK([for working AI_ADDRCONFIG], - [inn_cv_func_getaddrinfo_addrconfig_works], - [AC_RUN_IFELSE([_INN_FUNC_GETADDRINFO_ADDRCONFIG_SOURCE], - [inn_cv_func_getaddrinfo_addrconfig_works=yes], - [inn_cv_func_getaddrinfo_addrconfig_works=no], - [inn_cv_func_getaddrinfo_addrconfig_works=no])]) - if test "$inn_cv_func_getaddrinfo_addrconfig_works" = yes ; then - AC_DEFINE([HAVE_GETADDRINFO_ADDRCONFIG], 1, - [Define if your system has a working AI_ADDRCONFIG flag with getaddrinfo.]) - fi]) diff -Nurp inn-2.5.0/m4/inet-ntoa.m4 inn-2.5.1/m4/inet-ntoa.m4 --- inn-2.5.0/m4/inet-ntoa.m4 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/m4/inet-ntoa.m4 2009-10-12 11:24:04.000000000 -0700 @@ -1,43 +1,45 @@ dnl inet-ntoa.m4 -- Check for a working inet_ntoa. -dnl $Id: inet-ntoa.m4 8312 2009-01-31 20:35:04Z iulius $ +dnl $Id: inet-ntoa.m4 8503 2009-06-06 19:55:17Z 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 dnl may still not function with gcc on some platforms (such as IRIX). dnl Provides INN_FUNC_INET_NTOA and defines HAVE_INET_NTOA if inet_ntoa is dnl present and working. +dnl +dnl Copyright 2008, 2009 Board of Trustees, Leland Stanford Jr. University +dnl Copyright (c) 2004, 2005, 2006, 2007 +dnl by Internet Systems Consortium, Inc. ("ISC") +dnl Copyright (c) 1991, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, +dnl 2002, 2003 by The Internet Software Consortium and Rich Salz +dnl +dnl See LICENSE for licensing terms. dnl Source used by INN_FUNC_INET_NTOA. -define([_INN_FUNC_INET_NTOA_SOURCE], -[AC_LANG_SOURCE([[ +AC_DEFUN([_INN_FUNC_INET_NTOA_SOURCE], [[ #include #include #include #include -#if STDC_HEADERS || HAVE_STRING_H -# include -#endif +#include int -main () +main(void) { - struct in_addr in; - in.s_addr = htonl (0x7f000000L); - return (!strcmp (inet_ntoa (in), "127.0.0.0") ? 0 : 1); + struct in_addr in; + in.s_addr = htonl(0x7f000000L); + return (strcmp(inet_ntoa(in), "127.0.0.0") == 0) ? 0 : 1; } -]])]) +]]) dnl The public macro. AC_DEFUN([INN_FUNC_INET_NTOA], -[AC_CACHE_CHECK(for working inet_ntoa, - [inn_cv_func_inet_ntoa_works], - [AC_RUN_IFELSE([_INN_FUNC_INET_NTOA_SOURCE], +[AC_CACHE_CHECK(for working inet_ntoa, inn_cv_func_inet_ntoa_works, + [AC_RUN_IFELSE([AC_LANG_SOURCE([_INN_FUNC_INET_NTOA_SOURCE])], [inn_cv_func_inet_ntoa_works=yes], [inn_cv_func_inet_ntoa_works=no], [inn_cv_func_inet_ntoa_works=no])]) - if test "$inn_cv_func_inet_ntoa_works" = yes ; then - AC_DEFINE([HAVE_INET_NTOA], 1, - [Define if your system has a working inet_ntoa function.]) - else - AC_LIBOBJ([inet_ntoa]) - fi]) + AS_IF([test "$inn_cv_func_inet_ntoa_works" = yes], + [AC_DEFINE([HAVE_INET_NTOA], 1, + [Define if your system has a working inet_ntoa function.])], + [AC_LIBOBJ([inet_ntoa])])]) diff -Nurp inn-2.5.0/m4/int32.m4 inn-2.5.1/m4/int32.m4 --- inn-2.5.0/m4/int32.m4 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/m4/int32.m4 1969-12-31 16:00:00.000000000 -0800 @@ -1,57 +0,0 @@ -dnl int32.m4 -- Find an appropriate int32_t and uint32_t. -dnl $Id: int32.m4 8312 2009-01-31 20:35:04Z iulius $ -dnl -dnl The public macro exposed by this file is INN_TYPE_INT32_T. This macro -dnl locates the appropriate header files to include for int32_t and uint32_t -dnl or determines how to define those types, and then both includes the -dnl appropriate defines into the generated config.h. - -dnl Used to build the type cache name. -AC_DEFUN([_INN_TYPE_CACHE], translit([ac_cv_sizeof_$1], [ *], [_p])) - -dnl A modified version of AC_CHECK_SIZEOF that doesn't always AC_DEFINE, but -dnl instead lets you execute shell code based on success or failure. This is -dnl to avoid config.h clutter. -AC_DEFUN([_INN_IF_SIZEOF], -[AC_MSG_CHECKING([size of $1]) -AC_CACHE_VAL(_INN_TYPE_CACHE([$1]), -[AC_RUN_IFELSE([AC_LANG_SOURCE([[ -#include -main() -{ - FILE *f = fopen("conftestval", "w"); - if (!f) exit(1); - fprintf(f, "%d\n", sizeof($1)); - exit(0); -} -]])], _INN_TYPE_CACHE([$1])=`cat conftestval`, _INN_TYPE_CACHE([$1])=0, -ifelse([$2], , , _INN_TYPE_CACHE([$1])=$2)) -])dnl -AC_MSG_RESULT($_INN_TYPE_CACHE([$1])) -if test x"$_INN_TYPE_CACHE([$1])" = x"$3" ; then - ifelse([$4], , :, [$4]) -else - ifelse([$5], , :, [$5]) -fi -]) - -dnl This is the beginning of the macro called by the user. -AC_DEFUN([INN_TYPE_INT32_T], -[ - -dnl Find a 32 bit type, by trying likely candidates. First, check for the -dnl C9X int32_t, then look for something else with a size of four bytes. -_INN_IF_SIZEOF(int, 4, 4, INN_INT32=int, - [_INN_IF_SIZEOF(long, 4, 4, INN_INT32=long, - [_INN_IF_SIZEOF(short, 2, 4, INN_INT32=short)])]) - -dnl Now, check to see if we need to define int32_t and uint32_t ourselves. -dnl This has to be done after the probes for an appropriately sized integer -dnl type so that we can pass that type to AC_DEFINE_UNQUOTED. -AC_CHECK_TYPE(int32_t, , - [AC_DEFINE_UNQUOTED([int32_t], [$INN_INT32], - [Define to a 4-byte signed type if does not define.])]) -AC_CHECK_TYPE(uint32_t, , - [AC_DEFINE_UNQUOTED([uint32_t], [unsigned $INN_INT32], - [Define to a 4-byte unsigned type if does not define.])]) -]) diff -Nurp inn-2.5.0/m4/krb5.m4 inn-2.5.1/m4/krb5.m4 --- inn-2.5.0/m4/krb5.m4 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/m4/krb5.m4 2009-10-12 11:24:04.000000000 -0700 @@ -1,5 +1,5 @@ dnl krb5.m4 -- Find the Kerberos v5 libraries. -dnl $Id: krb5.m4 7608 2007-07-22 16:35:23Z eagle $ +dnl $Id: krb5.m4 8499 2009-06-06 19:39:47Z iulius $ dnl dnl Defines the macro INN_LIB_KERBEROS, which probes for the Kerberos v5 dnl libraries and defines the output variables KRB5_CPPFLAGS, KRB5_LDFLAGS, @@ -14,7 +14,7 @@ KRB5_LDFLAGS= KRB5_LIBS= KRB5_AUTH= AC_ARG_WITH([kerberos], - [AC_HELP_STRING([--with-kerberos@<:@=PATH@:>@], + [AS_HELP_STRING([--with-kerberos@<:@=PATH@:>@], [Enable Kerberos v5 (for auth_krb5)])], KRB5_DIR=$with_kerberos, KRB5_DIR=no) diff -Nurp inn-2.5.0/m4/modes.m4 inn-2.5.1/m4/modes.m4 --- inn-2.5.0/m4/modes.m4 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/m4/modes.m4 2009-10-12 11:24:04.000000000 -0700 @@ -1,5 +1,5 @@ dnl modes.m4 -- Setting file and installation modes. -dnl $Id: modes.m4 7703 2008-01-12 09:22:18Z iulius $ +dnl $Id: modes.m4 8499 2009-06-06 19:39:47Z 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 @@ -15,7 +15,7 @@ FILEMODE=0664 DIRMODE=0775 RUNDIRMODE=0770 AC_ARG_WITH([news-umask], - [AC_HELP_STRING([--with-news-umask=UMASK], [umask for news files [002]])], + [AS_HELP_STRING([--with-news-umask=UMASK], [umask for news files [002]])], with_news_umask=`echo "$with_news_umask" | sed 's/^0*//'` if test "x$with_news_umask" = x22 ; then NEWSUMASK=022 @@ -44,7 +44,7 @@ dnl inews used to be installed setgid, b dnl it's explicitly requested at configure time. INEWSMODE=0550 AC_ARG_ENABLE([setgid-inews], - [AC_HELP_STRING([--enable-setgid-inews], [Install inews setgid])], + [AS_HELP_STRING([--enable-setgid-inews], [Install inews setgid])], if test "x$enableval" = xyes ; then INEWSMODE=02555 fi) @@ -57,7 +57,7 @@ dnl Only do even that if it's explicitly RNEWSGRP=$RUNASGROUP RNEWSMODE=0500 AC_ARG_ENABLE([uucp-rnews], - [AC_HELP_STRING([--enable-uucp-rnews], + [AS_HELP_STRING([--enable-uucp-rnews], [Install rnews setuid, group uucp])], if test "x$enableval" = xyes ; then RNEWSGRP=uucp diff -Nurp inn-2.5.0/m4/openssl.m4 inn-2.5.1/m4/openssl.m4 --- inn-2.5.0/m4/openssl.m4 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/m4/openssl.m4 2009-10-12 11:24:04.000000000 -0700 @@ -1,5 +1,5 @@ dnl ssl.m4 -- Find the path to the SSL libraries. -dnl $Id: openssl.m4 8479 2009-05-18 20:01:37Z iulius $ +dnl $Id: openssl.m4 8499 2009-06-06 19:39:47Z iulius $ dnl dnl This file provides INN_LIB_OPENSSL, which defines the --with-openssl dnl command-line option and probes for the location of OpenSSL if that @@ -17,7 +17,7 @@ AC_DEFUN([INN_LIB_OPENSSL], SSL_CPPFLAGS= SSL_LIBS= AC_ARG_WITH([openssl], - [AC_HELP_STRING([--with-openssl@<:@=PATH@:>@], + [AS_HELP_STRING([--with-openssl@<:@=PATH@:>@], [Enable OpenSSL (for NNTP over TLS/SSL support)])], SSL_DIR=$with_openssl, SSL_DIR=no) diff -Nurp inn-2.5.0/m4/paths.m4 inn-2.5.1/m4/paths.m4 --- inn-2.5.0/m4/paths.m4 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/m4/paths.m4 2009-10-12 11:24:04.000000000 -0700 @@ -1,5 +1,5 @@ dnl paths.m4 -- Configure various paths used by INN. -dnl $Id: paths.m4 8169 2008-11-17 19:12:27Z iulius $ +dnl $Id: paths.m4 8499 2009-06-06 19:39:47Z 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 @@ -18,34 +18,34 @@ AC_SUBST($3)]) dnl And here are all the paths. AC_DEFUN([INN_ARG_PATHS], [_INN_ARG_DIR([control], ['${bindir}/control'], [CONTROLDIR], - [AC_HELP_STRING([--with-control-dir=PATH], + [AS_HELP_STRING([--with-control-dir=PATH], [Path for control programs [PREFIX/bin/control]])]) _INN_ARG_DIR([db], ['${prefix}/db'], [DBDIR], - [AC_HELP_STRING([--with-db-dir=PATH], + [AS_HELP_STRING([--with-db-dir=PATH], [Path for news database files [PREFIX/db]])]) _INN_ARG_DIR([doc], ['${prefix}/doc'], [docdir], - [AC_HELP_STRING([--with-doc-dir=PATH], + [AS_HELP_STRING([--with-doc-dir=PATH], [Path for news documentation [PREFIX/doc]])]) _INN_ARG_DIR([filter], ['${bindir}/filter'], [FILTERDIR], - [AC_HELP_STRING([--with-filter-dir=PATH], + [AS_HELP_STRING([--with-filter-dir=PATH], [Path for embedded filters [PREFIX/bin/filter]])]) _INN_ARG_DIR([http], ['${prefix}/http'], [HTTPDIR], - [AC_HELP_STRING([--with-http-dir=PATH], + [AS_HELP_STRING([--with-http-dir=PATH], [Path for web pages [PREFIX/http]])]) _INN_ARG_DIR([libperl], ['${libdir}/perl'], [LIBPERLDIR], - [AC_HELP_STRING([--with-libperl-dir=PATH], + [AS_HELP_STRING([--with-libperl-dir=PATH], [Path for Perl modules [PREFIX/lib/perl]])]) _INN_ARG_DIR([log], ['${prefix}/log'], [LOGDIR], - [AC_HELP_STRING([--with-log-dir=PATH], + [AS_HELP_STRING([--with-log-dir=PATH], [Path for news logs [PREFIX/log]])]) _INN_ARG_DIR([run], ['${prefix}/run'], [RUNDIR], - [AC_HELP_STRING([--with-run-dir=PATH], + [AS_HELP_STRING([--with-run-dir=PATH], [Path for news PID/runtime files [PREFIX/run]])]) _INN_ARG_DIR([spool], ['${prefix}/spool'], [SPOOLDIR], - [AC_HELP_STRING([--with-spool-dir=PATH], + [AS_HELP_STRING([--with-spool-dir=PATH], [Path for news storage [PREFIX/spool]])]) _INN_ARG_DIR([tmp], ['${prefix}/tmp'], [tmpdir], - [AC_HELP_STRING([--with-tmp-dir=PATH], + [AS_HELP_STRING([--with-tmp-dir=PATH], [Path for temporary files [PREFIX/tmp]])]) dnl Some additional paths used by inn/paths.h. diff -Nurp inn-2.5.0/m4/perl.m4 inn-2.5.1/m4/perl.m4 --- inn-2.5.0/m4/perl.m4 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/m4/perl.m4 2009-10-12 11:24:04.000000000 -0700 @@ -1,5 +1,5 @@ dnl perl.m4 -- Probe for the details needed to embed Perl. -dnl $Id: perl.m4 8367 2009-03-01 09:39:24Z iulius $ +dnl $Id: perl.m4 8561 2009-08-14 18:32:41Z iulius $ dnl dnl Defines INN_ARG_PERL, which sets up the --with-perl command line argument dnl and also sets various flags needed for embedded Perl if it is requested @@ -30,9 +30,9 @@ dnl was or not, determine the path to Pe dnl that we have the right version and then set PERL_CPPFLAGS and PERL_LIBS as dnl appropriate for embedded Perl. AC_DEFUN([INN_ARG_PERL], -[AC_ARG_VAR([PERL], [Location of Perl interpretor]) +[AC_ARG_VAR([PERL], [Location of Perl interpreter]) AC_ARG_WITH([perl], - [AC_HELP_STRING([--with-perl], [Embedded Perl script support [no]])], + [AS_HELP_STRING([--with-perl], [Embedded Perl script support [no]])], [case $withval in yes) DO_PERL=DO AC_DEFINE(DO_PERL, 1, [Define to compile in Perl script support.]) diff -Nurp inn-2.5.0/m4/python.m4 inn-2.5.1/m4/python.m4 --- inn-2.5.0/m4/python.m4 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/m4/python.m4 2009-10-12 11:24:04.000000000 -0700 @@ -1,14 +1,14 @@ dnl python.m4 -- Probe for the details needed to embed Python. -dnl $Id: python.m4 6544 2003-12-26 03:23:31Z rra $ +dnl $Id: python.m4 8561 2009-08-14 18:32:41Z iulius $ dnl dnl Defines INN_ARG_PYTHON, which sets up the --with-python command line dnl argument and also sets various flags needed for embedded Python if it is dnl requested. AC_DEFUN([INN_ARG_PYTHON], -[AC_ARG_VAR([PYTHON], [Location of Python interpretor]) +[AC_ARG_VAR([PYTHON], [Location of Python interpreter]) AC_ARG_WITH([python], - [AC_HELP_STRING([--with-python], [Embedded Python module support [no]])], + [AS_HELP_STRING([--with-python], [Embedded Python module support [no]])], [case $withval in yes) DO_PYTHON=DO AC_DEFINE(DO_PYTHON, 1, diff -Nurp inn-2.5.0/m4/sasl.m4 inn-2.5.1/m4/sasl.m4 --- inn-2.5.0/m4/sasl.m4 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/m4/sasl.m4 2009-10-12 11:24:04.000000000 -0700 @@ -1,5 +1,5 @@ dnl sasl.m4 -- Find the path to the Cyrus SASL libraries. -dnl $Id: sasl.m4 6544 2003-12-26 03:23:31Z rra $ +dnl $Id: sasl.m4 8499 2009-06-06 19:39:47Z iulius $ dnl dnl This file provides INN_LIB_SASL, which defines the --with-sasl dnl command-line option and probes for the location of Cyrus SASL v2 if that @@ -12,7 +12,7 @@ AC_DEFUN([INN_LIB_SASL], SASL_LDFLAGS= SASL_LIBS= AC_ARG_WITH([sasl], - [AC_HELP_STRING([--with-sasl@<:@=PATH@:>@], + [AS_HELP_STRING([--with-sasl@<:@=PATH@:>@], [Enable SASL (for imapfeed authentication)])], SASL_DIR=$with_sasl, SASL_DIR=no) diff -Nurp inn-2.5.0/m4/sendmail.m4 inn-2.5.1/m4/sendmail.m4 --- inn-2.5.0/m4/sendmail.m4 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/m4/sendmail.m4 2009-10-12 11:24:04.000000000 -0700 @@ -1,5 +1,5 @@ dnl sendmail.m4 -- Checks for the path to sendmail. -dnl $Id: sendmail.m4 6544 2003-12-26 03:23:31Z rra $ +dnl $Id: sendmail.m4 8499 2009-06-06 19:39:47Z 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 @@ -9,7 +9,7 @@ dnl Allow the user to specify the path t AC_DEFUN([INN_ARG_SENDMAIL], [AC_ARG_VAR([SENDMAIL], [Location of sendmail binary to use]) AC_ARG_WITH([sendmail], - [AC_HELP_STRING([--with-sendmail=PATH], [Path to sendmail])], + [AS_HELP_STRING([--with-sendmail=PATH], [Path to sendmail])], SENDMAIL=$with_sendmail)]) dnl Search for sendmail, honoring the path set by the user if they've done so diff -Nurp inn-2.5.0/m4/snprintf.m4 inn-2.5.1/m4/snprintf.m4 --- inn-2.5.0/m4/snprintf.m4 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/m4/snprintf.m4 2009-10-12 11:24:04.000000000 -0700 @@ -1,5 +1,5 @@ dnl snprintf.m4 -- Test for a working C99 snprintf. -dnl $Id: snprintf.m4 8312 2009-01-31 20:35:04Z iulius $ +dnl $Id: snprintf.m4 8503 2009-06-06 19:55:17Z 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 @@ -9,46 +9,48 @@ dnl NULL as the buffer argument (just to dnl dnl Provides INN_FUNC_SNPRINTF, which adds snprintf.o to LIBOBJS unless a dnl fully working snprintf is found. +dnl +dnl Written by Russ Allbery +dnl Copyright 2006, 2008, 2009 +dnl Board of Trustees, Leland Stanford Jr. University +dnl +dnl See LICENSE for licensing terms. dnl Source used by INN_FUNC_SNPRINTF. -define([_INN_FUNC_SNPRINTF_SOURCE], -[AC_LANG_SOURCE([[ +AC_DEFUN([_INN_FUNC_SNPRINTF_SOURCE], [[ #include #include char buf[2]; int -test (char *format, ...) +test(char *format, ...) { - va_list args; - int count; + va_list args; + int count; - va_start (args, format); - count = vsnprintf (buf, sizeof buf, format, args); - va_end (args); - return count; + va_start(args, format); + count = vsnprintf(buf, sizeof buf, format, args); + va_end(args); + return count; } int -main () +main() { - return ((test ("%s", "abcd") == 4 && buf[0] == 'a' && buf[1] == '\0' - && snprintf(NULL, 0, "%s", "abcd") == 4) ? 0 : 1); + return ((test("%s", "abcd") == 4 && buf[0] == 'a' && buf[1] == '\0' + && snprintf(NULL, 0, "%s", "abcd") == 4) ? 0 : 1); } -]])]) +]]) dnl The user-callable test. AC_DEFUN([INN_FUNC_SNPRINTF], -[AC_CACHE_CHECK([for working snprintf], - [inn_cv_func_snprintf_works], - [AC_RUN_IFELSE([_INN_FUNC_SNPRINTF_SOURCE], +[AC_CACHE_CHECK([for working snprintf], [inn_cv_func_snprintf_works], + [AC_RUN_IFELSE([AC_LANG_SOURCE([_INN_FUNC_SNPRINTF_SOURCE])], [inn_cv_func_snprintf_works=yes], [inn_cv_func_snprintf_works=no], [inn_cv_func_snprintf_works=no])]) - if test "$inn_cv_func_snprintf_works" = yes ; then - AC_DEFINE([HAVE_SNPRINTF], 1, - [Define if your system has a working snprintf function.]) - else - AC_LIBOBJ([snprintf]) - fi]) + AS_IF([test "$inn_cv_func_snprintf_works" = yes], + [AC_DEFINE([HAVE_SNPRINTF], 1, + [Define if your system has a working snprintf function.])], + [AC_LIBOBJ([snprintf])])]) diff -Nurp inn-2.5.0/m4/socket.m4 inn-2.5.1/m4/socket.m4 --- inn-2.5.0/m4/socket.m4 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/m4/socket.m4 2009-10-12 11:24:04.000000000 -0700 @@ -1,21 +1,59 @@ dnl socket.m4 -- Various checks for socket support and macros. -dnl $Id: socket.m4 8312 2009-01-31 20:35:04Z iulius $ +dnl $Id: socket.m4 8503 2009-06-06 19:55:17Z iulius $ dnl dnl This is a collection of various Autoconf macros for checking networking dnl and socket properties. The macros provided are: dnl +dnl INN_FUNC_GETADDRINFO_ADDRCONFIG dnl INN_MACRO_IN6_ARE_ADDR_EQUAL dnl INN_MACRO_SA_LEN dnl INN_MACRO_SUN_LEN dnl INN_SYS_UNIX_SOCKETS dnl -dnl Most of them use a separate internal source macro to make the code easier -dnl to read. +dnl They use a separate internal source macro to make the code easier to read. +dnl +dnl Copyright 2008, 2009 Board of Trustees, Leland Stanford Jr. University +dnl Copyright (c) 2004, 2005, 2006, 2007, 2008, 2009 +dnl by Internet Systems Consortium, Inc. ("ISC") +dnl Copyright (c) 1991, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, +dnl 2002, 2003 by The Internet Software Consortium and Rich Salz +dnl +dnl See LICENSE for licensing terms. + +dnl Source used by INN_FUNC_GETADDRINFO_ADDRCONFIG. +AC_DEFUN([_INN_FUNC_GETADDRINFO_ADDRCONFIG_SOURCE], [[ +#include +#include +#include + +int +main(void) { + struct addrinfo hints, *ai; + + memset(&hints, 0, sizeof(hints)); + hints.ai_family = AF_UNSPEC; + hints.ai_socktype = SOCK_STREAM; + hints.ai_flags = AI_ADDRCONFIG; + return (getaddrinfo("localhost", NULL, &hints, &ai) != 0); +} +]]) + +dnl Check whether the AI_ADDRCONFIG flag works properly with getaddrinfo. +dnl If so, set HAVE_GETADDRINFO_ADDRCONFIG. +AC_DEFUN([INN_FUNC_GETADDRINFO_ADDRCONFIG], +[AC_CACHE_CHECK([for working AI_ADDRCONFIG flag], + [inn_cv_func_getaddrinfo_addrconfig_works], + [AC_RUN_IFELSE(AC_LANG_SOURCE([_INN_FUNC_GETADDRINFO_ADDRCONFIG_SOURCE]), + [inn_cv_func_getaddrinfo_addrconfig_works=yes], + [inn_cv_func_getaddrinfo_addrconfig_works=no], + [inn_cv_func_getaddrinfo_addrconfig_works=no])]) + AS_IF([test x"$inn_cv_func_getaddrinfo_addrconfig_works" = xyes], + [AC_DEFINE([HAVE_GETADDRINFO_ADDRCONFIG], 1, + [Define if the AI_ADDRCONFIG flag works with getaddrinfo.])])]) dnl Source used by INN_IN6_EQ_BROKEN. Test borrowed from a bug report by dnl tmoestl@gmx.net for glibc. -AC_DEFUN([_INN_MACRO_IN6_ARE_ADDR_EQUAL_SOURCE], -[AC_LANG_SOURCE([[ +AC_DEFUN([_INN_MACRO_IN6_ARE_ADDR_EQUAL_SOURCE], [[ #include #include #include @@ -24,61 +62,84 @@ AC_DEFUN([_INN_MACRO_IN6_ARE_ADDR_EQUAL_ int main (void) { - struct in6_addr a; - struct in6_addr b; + struct in6_addr a; + struct in6_addr b; - inet_pton (AF_INET6, "fe80::1234:5678:abcd", &a); - inet_pton (AF_INET6, "fe80::1234:5678:abcd", &b); - return IN6_ARE_ADDR_EQUAL (&a,&b) ? 0 : 1; + inet_pton(AF_INET6, "fe80::1234:5678:abcd", &a); + inet_pton(AF_INET6, "fe80::1234:5678:abcd", &b); + return IN6_ARE_ADDR_EQUAL(&a, &b) ? 0 : 1; } -]])]) +]]) dnl Check whether the IN6_ARE_ADDR_EQUAL macro is broken (like glibc 2.1.3) or dnl missing. AC_DEFUN([INN_MACRO_IN6_ARE_ADDR_EQUAL], [AC_CACHE_CHECK([whether IN6_ARE_ADDR_EQUAL macro is broken], [inn_cv_in6_are_addr_equal_broken], - [AC_RUN_IFELSE([_INN_MACRO_IN6_ARE_ADDR_EQUAL_SOURCE], + [AC_RUN_IFELSE([AC_LANG_SOURCE([_INN_MACRO_IN6_ARE_ADDR_EQUAL_SOURCE])], [inn_cv_in6_are_addr_equal_broken=no], [inn_cv_in6_are_addr_equal_broken=yes], [inn_cv_in6_are_addr_equal_broken=yes])]) - if test x"$inn_cv_in6_are_addr_equal_broken" = xyes ; then - AC_DEFINE([HAVE_BROKEN_IN6_ARE_ADDR_EQUAL], 1, - [Define if your IN6_ARE_ADDR_EQUAL macro is broken.]) - fi]) + AS_IF([test x"$inn_cv_in6_are_addr_equal_broken" = xyes], + [AC_DEFINE([HAVE_BROKEN_IN6_ARE_ADDR_EQUAL], 1, + [Define if your IN6_ARE_ADDR_EQUAL macro is broken.])])]) + +dnl Source used by INN_MACRO_SA_LEN. +AC_DEFUN([_INN_MACRO_SA_LEN_SOURCE], [[ +#include +#include + +int +main(void) +{ + struct sockaddr sa; + int x = SA_LEN(&sa); +} +]]) dnl Check whether the SA_LEN macro is available. This should give the length dnl of a struct sockaddr regardless of type. AC_DEFUN([INN_MACRO_SA_LEN], [AC_CACHE_CHECK([for SA_LEN macro], [inn_cv_sa_len_macro], -[AC_LINK_IFELSE( -[AC_LANG_PROGRAM([[ + [AC_LINK_IFELSE([AC_LANG_SOURCE([_INN_MACRO_SA_LEN_SOURCE])], + [inn_cv_sa_len_macro=yes], + [inn_cv_sa_len_macro=no])]) + AS_IF([test x"$inn_cv_sa_len_macro" = xyes], + [AC_DEFINE([HAVE_SA_LEN], 1, + [Define if defines the SA_LEN macro.])])]) + +dnl Source used by INN_MACRO_SUN_LEN. +AC_DEFUN([_INN_MACRO_SUN_LEN_SOURCE], [[ #include -#include ]], - [[struct sockaddr sa; int x = SA_LEN(&sa);]])], - [inn_cv_sa_len_macro=yes], - [inn_cv_sa_len_macro=no])]) - if test "$inn_cv_sa_len_macro" = yes ; then - AC_DEFINE([HAVE_SA_LEN], 1, - [Define if defines the SA_LEN macro]) - fi]) +#include + +int +main(void) +{ + struct sockaddr_un s_un; + int i = SUN_LEN(&s_un); +} +]]) dnl Check for SUN_LEN, which returns the size of a struct socket regardless of dnl its type. This macro is required POSIX.1g but not that widespread yet. dnl Sets HAVE_SUN_LEN if the macro is available. AC_DEFUN([INN_MACRO_SUN_LEN], -[AC_CACHE_CHECK([for SUN_LEN macro], [inn_cv_macro_sun_len], -[AC_LINK_IFELSE( -[AC_LANG_PROGRAM([[ -#include -#include ]], - [[struct sockaddr_un s_un; int i; i = SUN_LEN(&s_un);]])], - inn_cv_macro_sun_len=yes, - inn_cv_macro_sun_len=no)]) - if test x"$inn_cv_macro_sun_len" = xyes ; then - AC_DEFINE([HAVE_SUN_LEN], 1, - [Define if defines the SUN_LEN macro.]) - fi]) +[AC_CACHE_CHECK([for SUN_LEN macro], [inn_cv_sun_len_macro], + [AC_LINK_IFELSE([AC_LANG_SOURCE([_INN_MACRO_SUN_LEN_SOURCE])], + [inn_cv_sun_len_macro=yes], + [inn_cv_sun_len_macro=no])]) + AS_IF([test x"$inn_cv_sun_len_macro" = xyes], + [AC_DEFINE([HAVE_SUN_LEN], 1, + [Define if defines the SUN_LEN macro.])])]) + +dnl Source used by INN_SYS_UNIX_SOCKETS. +AC_DEFUN([_INN_SYS_UNIX_SOCKETS], [[ +#include +#ifndef AF_UNIX +error: No Unix domain sockets! +#endif +]]) dnl Check if Unix domain sockets are supported. Assume that they are if dnl AF_UNIX is set in . This loses on really old versions of @@ -86,14 +147,10 @@ dnl Linux, where AF_UNIX is available bu dnl about Linux 1.0 any more. AC_DEFUN([INN_SYS_UNIX_SOCKETS], [AC_CACHE_CHECK([for Unix domain sockets], [inn_cv_sys_unix_sockets], -[AC_EGREP_CPP(yes, -[#include -#ifdef AF_UNIX -yes -#endif], - [inn_cv_sys_unix_sockets=yes], - [inn_cv_sys_unix_sockets=no])]) -if test $inn_cv_sys_unix_sockets = yes ; then - AC_DEFINE([HAVE_UNIX_DOMAIN_SOCKETS], 1, - [Define if you have unix domain sockets.]) -fi]) + [AC_COMPILE_IFELSE([AC_LANG_SOURCE([_INN_SYS_UNIX_SOCKETS])], + [inn_cv_sys_unix_sockets=yes], + [inn_cv_sys_unix_sockets=no])]) + AS_IF([test x"$inn_cv_sys_unix_sockets" = xyes], + [AC_DEFINE([HAVE_UNIX_DOMAIN_SOCKETS], 1, + [Define if you have Unix domain sockets.])])]) + diff -Nurp inn-2.5.0/m4/syslog.m4 inn-2.5.1/m4/syslog.m4 --- inn-2.5.0/m4/syslog.m4 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/m4/syslog.m4 2009-10-12 11:24:04.000000000 -0700 @@ -1,5 +1,5 @@ dnl syslog.m4 -- Options and probes for syslog behavior. -dnl $Id: syslog.m4 6544 2003-12-26 03:23:31Z rra $ +dnl $Id: syslog.m4 8596 2009-08-21 08:30:01Z 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 @@ -12,31 +12,32 @@ dnl Set up the --with-syslog-facility op dnl inn_syslog_facility variable for later use. AC_DEFUN([INN_ARG_SYSLOG], [AC_ARG_WITH([syslog-facility], - [AC_HELP_STRING([--with-syslog-facility=LOG_FAC], - [Syslog facility [LOG_NEWS or LOG_LOCAL1]])], + [AS_HELP_STRING([--with-syslog-facility=LOG_FAC], + [Syslog facility @<:@LOG_NEWS or LOG_LOCAL1@:>@])], SYSLOG_FACILITY=$with_syslog_facility, SYSLOG_FACILITY=none)]) +dnl Source used by INN_LOG_FACILITY. +AC_DEFUN([_INN_LOG_FACILITY], [[ +#include +#ifndef LOG_NEWS +error: LOG_NEWS not available! +#endif +]]) + dnl Determine the facility for syslog messages. Default to LOG_NEWS for dnl syslog facility if it's available, but if it's not, fall back on dnl LOG_LOCAL1. Honor the existing SYSLOG_FACILITY value if already set by dnl INN_ARG_SYSLOG. AC_DEFUN([INN_LOG_FACILITY], -[AC_MSG_CHECKING(log facility for news) -AC_CACHE_VAL(inn_cv_log_facility, -[AC_EGREP_CPP(yes, -[#include -#ifdef LOG_NEWS -yes -#endif], - inn_cv_log_facility=LOG_NEWS, - inn_cv_log_facility=LOG_LOCAL1)]) -if test x"$SYSLOG_FACILITY" = xnone ; then - SYSLOG_FACILITY=$inn_cv_log_facility -fi -AC_MSG_RESULT([$SYSLOG_FACILITY]) -AC_DEFINE_UNQUOTED([LOG_INN_SERVER], [$SYSLOG_FACILITY], +[AC_CACHE_CHECK([log facility for news], [inn_cv_log_facility], + [AC_COMPILE_IFELSE([AC_LANG_SOURCE([_INN_LOG_FACILITY])], + [inn_cv_log_facility=LOG_NEWS], + [inn_cv_log_facility=LOG_LOCAL1])]) + AS_IF([test x"$SYSLOG_FACILITY" = xnone], + [SYSLOG_FACILITY=$inn_cv_log_facility]) + AC_DEFINE_UNQUOTED([LOG_INN_SERVER], [$SYSLOG_FACILITY], [Syslog facility to use for innd logs.]) -AC_DEFINE_UNQUOTED([LOG_INN_PROG], [$SYSLOG_FACILITY], + AC_DEFINE_UNQUOTED([LOG_INN_PROG], [$SYSLOG_FACILITY], [Syslog facility to use for INN program logs.]) -AC_SUBST(SYSLOG_FACILITY)]) + AC_SUBST(SYSLOG_FACILITY)]) diff -Nurp inn-2.5.0/m4/users.m4 inn-2.5.1/m4/users.m4 --- inn-2.5.0/m4/users.m4 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/m4/users.m4 2009-10-12 11:24:04.000000000 -0700 @@ -1,5 +1,5 @@ dnl users.m4 -- The usernames built into INN at compile time. -dnl $Id: users.m4 7703 2008-01-12 09:22:18Z iulius $ +dnl $Id: users.m4 8499 2009-06-06 19:39:47Z 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. @@ -15,12 +15,12 @@ AC_DEFINE_UNQUOTED($3, "$[$3]", [$5])]) dnl And here they are. AC_DEFUN([INN_ARG_USERS], [_INN_ARG_USER([user], [news], [RUNASUSER], - [AC_HELP_STRING([--with-news-user=USER], [News user name [news]])], + [AS_HELP_STRING([--with-news-user=USER], [News user name [news]])], [The user that INN should run as.]) _INN_ARG_USER([group], [news], [RUNASGROUP], - [AC_HELP_STRING([--with-news-group=GROUP], [News group name [news]])], + [AS_HELP_STRING([--with-news-group=GROUP], [News group name [news]])], [The group that INN should run as.]) _INN_ARG_USER([master], [usenet], [NEWSMASTER], - [AC_HELP_STRING([--with-news-master=USER], + [AS_HELP_STRING([--with-news-master=USER], [News master (address for reports) [usenet]])], [The user who gets all INN-related e-mail.])]) diff -Nurp inn-2.5.0/m4/vamacros.m4 inn-2.5.1/m4/vamacros.m4 --- inn-2.5.0/m4/vamacros.m4 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/m4/vamacros.m4 2009-10-12 11:24:04.000000000 -0700 @@ -1,5 +1,5 @@ dnl vamacros.m4 -- Check for support for variadic macros. -dnl $Id: vamacros.m4 8312 2009-01-31 20:35:04Z iulius $ +dnl $Id: vamacros.m4 8503 2009-06-06 19:55:17Z 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 @@ -13,29 +13,51 @@ dnl dnl #define macro(args...) fprintf(stderr, args) dnl dnl They set HAVE_C99_VAMACROS or HAVE_GNU_VAMACROS as appropriate. +dnl +dnl Written by Russ Allbery +dnl Copyright 2006, 2008, 2009 +dnl Board of Trustees, Leland Stanford Jr. University +dnl +dnl See LICENSE for licensing terms. + +AC_DEFUN([_INN_C_C99_VAMACROS_SOURCE], [[ +#include +#define error(...) fprintf(stderr, __VA_ARGS__) + +int +main(void) { + error("foo"); + error("foo %d", 0); + return 0; +} +]]) AC_DEFUN([INN_C_C99_VAMACROS], [AC_CACHE_CHECK([for C99 variadic macros], [inn_cv_c_c99_vamacros], -[AC_COMPILE_IFELSE( -[AC_LANG_PROGRAM([[ + [AC_COMPILE_IFELSE([AC_LANG_SOURCE([_INN_C_C99_VAMACROS_SOURCE])], + [inn_cv_c_c99_vamacros=yes], + [inn_cv_c_c99_vamacros=no])]) + AS_IF([test $inn_cv_c_c99_vamacros = yes], + [AC_DEFINE([HAVE_C99_VAMACROS], 1, + [Define if the compiler supports C99 variadic macros.])])]) + +AC_DEFUN([_INN_C_GNU_VAMACROS_SOURCE], [[ #include -#define error(...) fprintf(stderr, __VA_ARGS__)]], -[[error("foo"); error("foo %d", 0); return 0;]])], -[inn_cv_c_c99_vamacros=yes], [inn_cv_c_c99_vamacros=no])]) - if test $inn_cv_c_c99_vamacros = yes ; then - AC_DEFINE([HAVE_C99_VAMACROS], 1, - [Define if the compiler supports C99 variadic macros.]) - fi]) +#define error(args...) fprintf(stderr, args) + +int +main(void) { + error("foo"); + error("foo %d", 0); + return 0; +} +]]) AC_DEFUN([INN_C_GNU_VAMACROS], [AC_CACHE_CHECK([for GNU-style variadic macros], [inn_cv_c_gnu_vamacros], -[AC_COMPILE_IFELSE( -[AC_LANG_PROGRAM([[ -#include -#define error(args...) fprintf(stderr, args)]], -[[error("foo"); error("foo %d", 0); return 0;]])], -[inn_cv_c_gnu_vamacros=yes], [inn_cv_c_gnu_vamacros=no])]) - if test $inn_cv_c_gnu_vamacros = yes ; then - AC_DEFINE([HAVE_GNU_VAMACROS], 1, - [Define if the compiler supports GNU-style variadic macros.]) - fi]) + [AC_COMPILE_IFELSE([AC_LANG_SOURCE([_INN_C_GNU_VAMACROS_SOURCE])], + [inn_cv_c_gnu_vamacros=yes], + [inn_cv_c_gnu_vamacros=no])]) + AS_IF([test $inn_cv_c_gnu_vamacros = yes], + [AC_DEFINE([HAVE_GNU_VAMACROS], 1, + [Define if the compiler supports GNU-style variadic macros.])])]) diff -Nurp inn-2.5.0/m4/zlib.m4 inn-2.5.1/m4/zlib.m4 --- inn-2.5.0/m4/zlib.m4 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/m4/zlib.m4 2009-10-12 11:24:04.000000000 -0700 @@ -1,5 +1,5 @@ dnl zlib.m4 -- Find the path to the zlib library. -dnl $Id: zlib.m4 7821 2008-05-05 21:29:37Z iulius $ +dnl $Id: zlib.m4 8499 2009-06-06 19:39:47Z iulius $ dnl dnl This file provides INN_LIB_ZLIB, which defines the --with-zlib dnl command-line option and probes for the location of zlib if that @@ -13,7 +13,7 @@ AC_DEFUN([INN_LIB_ZLIB], ZLIB_LDFLAGS= ZLIB_LIBS= AC_ARG_WITH([zlib], - [AC_HELP_STRING([--with-zlib@<:@=PATH@:>@], + [AS_HELP_STRING([--with-zlib@<:@=PATH@:>@], [Enable zlib (used by ovdb)])], ZLIB_DIR=$with_zlib, [if test x"$DB_LIBS" != x ; then diff -Nurp inn-2.5.0/nnrpd/Makefile inn-2.5.1/nnrpd/Makefile --- inn-2.5.0/nnrpd/Makefile 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/nnrpd/Makefile 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -## $Id: Makefile 8045 2008-09-21 18:44:24Z iulius $ +## $Id: Makefile 8533 2009-06-21 20:14:05Z iulius $ include ../Makefile.global @@ -83,9 +83,9 @@ article.o: article.c ../include/config.h ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \ ../include/portable/time.h ../include/inn/qio.h ../include/inn/libinn.h \ ../include/nntp.h ../include/inn/nntp.h ../include/inn/paths.h \ - ../include/inn/storage.h ../include/inn/vector.h ../include/inn/timer.h \ - ../include/inn/ov.h ../include/inn/storage.h ../include/inn/history.h \ - tls.h cache.h + ../include/inn/storage.h ../include/inn/options.h \ + ../include/inn/vector.h ../include/inn/timer.h ../include/inn/ov.h \ + ../include/inn/storage.h ../include/inn/history.h tls.h cache.h auth-ext.o: auth-ext.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/portable/wait.h ../include/config.h \ @@ -95,12 +95,12 @@ auth-ext.o: auth-ext.c ../include/config ../include/portable/getnameinfo.h ../include/portable/time.h \ ../include/inn/qio.h ../include/inn/libinn.h ../include/nntp.h \ ../include/inn/nntp.h ../include/inn/paths.h ../include/inn/storage.h \ - ../include/inn/timer.h + ../include/inn/options.h ../include/inn/timer.h cache.o: cache.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/innconf.h ../include/inn/defines.h \ ../include/inn/tst.h ../include/inn/list.h ../include/inn/libinn.h \ - ../include/inn/storage.h cache.h + ../include/inn/storage.h ../include/inn/options.h cache.h group.o: group.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/innconf.h ../include/inn/defines.h \ @@ -108,8 +108,9 @@ group.o: group.c ../include/config.h ../ ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \ ../include/portable/time.h ../include/inn/qio.h ../include/inn/libinn.h \ ../include/nntp.h ../include/inn/nntp.h ../include/inn/paths.h \ - ../include/inn/storage.h ../include/inn/vector.h ../include/inn/timer.h \ - ../include/inn/ov.h ../include/inn/storage.h ../include/inn/history.h + ../include/inn/storage.h ../include/inn/options.h \ + ../include/inn/vector.h ../include/inn/timer.h ../include/inn/ov.h \ + ../include/inn/storage.h ../include/inn/history.h commands.o: commands.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/portable/wait.h ../include/config.h \ @@ -117,8 +118,9 @@ commands.o: commands.c ../include/config ../include/portable/getnameinfo.h ../include/portable/time.h \ ../include/inn/qio.h ../include/inn/defines.h ../include/inn/libinn.h \ ../include/nntp.h ../include/inn/nntp.h ../include/inn/paths.h \ - ../include/inn/storage.h ../include/inn/vector.h ../include/inn/timer.h \ - ../include/inn/ov.h ../include/inn/storage.h ../include/inn/history.h \ + ../include/inn/storage.h ../include/inn/options.h \ + ../include/inn/vector.h ../include/inn/timer.h ../include/inn/ov.h \ + ../include/inn/storage.h ../include/inn/history.h \ ../include/inn/innconf.h ../include/inn/messages.h \ ../include/inn/version.h tls.h line.o: line.c ../include/config.h ../include/inn/defines.h \ @@ -128,8 +130,8 @@ line.o: line.c ../include/config.h ../in ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \ ../include/portable/time.h ../include/inn/qio.h ../include/inn/libinn.h \ ../include/nntp.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/storage.h ../include/inn/options.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/options.h ../include/clibrary.h \ ../include/config.h nnrpd.h ../include/portable/socket.h \ @@ -137,8 +139,9 @@ list.o: list.c ../include/config.h ../in ../include/portable/getnameinfo.h ../include/portable/time.h \ ../include/inn/qio.h ../include/inn/defines.h ../include/inn/libinn.h \ ../include/nntp.h ../include/inn/nntp.h ../include/inn/paths.h \ - ../include/inn/storage.h ../include/inn/vector.h ../include/inn/timer.h \ - ../include/inn/ov.h ../include/inn/storage.h ../include/inn/history.h \ + ../include/inn/storage.h ../include/inn/options.h \ + ../include/inn/vector.h ../include/inn/timer.h ../include/inn/ov.h \ + ../include/inn/storage.h ../include/inn/history.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/options.h ../include/clibrary.h \ @@ -147,9 +150,9 @@ misc.o: misc.c ../include/config.h ../in ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \ ../include/portable/time.h ../include/inn/qio.h ../include/inn/libinn.h \ ../include/nntp.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/ov.h ../include/inn/storage.h \ - ../include/inn/history.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/storage.h ../include/inn/history.h newnews.o: newnews.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/innconf.h ../include/inn/defines.h \ @@ -158,9 +161,9 @@ newnews.o: newnews.c ../include/config.h ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \ ../include/portable/time.h ../include/inn/qio.h ../include/inn/libinn.h \ ../include/nntp.h ../include/inn/nntp.h ../include/inn/paths.h \ - ../include/inn/storage.h ../include/inn/vector.h ../include/inn/timer.h \ - ../include/inn/ov.h ../include/inn/storage.h ../include/inn/history.h \ - cache.h + ../include/inn/storage.h ../include/inn/options.h \ + ../include/inn/vector.h ../include/inn/timer.h ../include/inn/ov.h \ + ../include/inn/storage.h ../include/inn/history.h cache.h nnrpd.o: nnrpd.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h \ ../include/portable/alloca.h ../include/config.h ../include/clibrary.h \ @@ -171,10 +174,11 @@ nnrpd.o: nnrpd.c ../include/config.h ../ ../include/inn/libinn.h ../include/inn/messages.h \ ../include/inn/network.h ../include/inn/newsuser.h ../include/config.h \ ../include/clibrary.h ../include/inn/ov.h ../include/inn/storage.h \ - ../include/inn/history.h ../include/inn/version.h nnrpd.h \ - ../include/portable/time.h ../include/inn/qio.h ../include/nntp.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/options.h ../include/inn/history.h \ + ../include/inn/version.h nnrpd.h ../include/portable/time.h \ + ../include/inn/qio.h ../include/nntp.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/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/innconf.h ../include/inn/defines.h \ @@ -182,8 +186,8 @@ perl.o: perl.c ../include/config.h ../in ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \ ../include/portable/time.h ../include/inn/qio.h ../include/inn/libinn.h \ ../include/nntp.h ../include/inn/nntp.h ../include/inn/paths.h \ - ../include/inn/storage.h ../include/inn/vector.h ../include/inn/timer.h \ - post.h \ + ../include/inn/storage.h ../include/inn/options.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 \ @@ -195,7 +199,7 @@ perm.o: perm.c ../include/config.h ../in ../include/portable/getnameinfo.h ../include/portable/time.h \ ../include/inn/qio.h ../include/inn/libinn.h ../include/nntp.h \ ../include/inn/nntp.h ../include/inn/paths.h ../include/inn/storage.h \ - ../include/inn/vector.h ../include/inn/timer.h + ../include/inn/options.h ../include/inn/vector.h ../include/inn/timer.h post.o: post.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/innconf.h ../include/inn/defines.h \ @@ -203,9 +207,9 @@ post.o: post.c ../include/config.h ../in ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \ ../include/portable/time.h ../include/inn/qio.h ../include/inn/libinn.h \ ../include/nntp.h ../include/inn/nntp.h ../include/inn/paths.h \ - ../include/inn/storage.h ../include/inn/vector.h ../include/inn/timer.h \ - ../include/inn/ov.h ../include/inn/storage.h ../include/inn/history.h \ - post.h + ../include/inn/storage.h ../include/inn/options.h \ + ../include/inn/vector.h ../include/inn/timer.h ../include/inn/ov.h \ + ../include/inn/storage.h ../include/inn/history.h post.h python.o: python.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/innconf.h ../include/inn/defines.h \ @@ -213,8 +217,8 @@ python.o: python.c ../include/config.h . ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \ ../include/portable/time.h ../include/inn/qio.h ../include/inn/libinn.h \ ../include/nntp.h ../include/inn/nntp.h ../include/inn/paths.h \ - ../include/inn/storage.h ../include/inn/vector.h ../include/inn/timer.h \ - ../include/inn/hashtab.h + ../include/inn/storage.h ../include/inn/options.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/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/messages.h ../include/inn/defines.h \ @@ -222,8 +226,9 @@ sasl.o: sasl.c ../include/config.h ../in ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \ ../include/portable/time.h ../include/inn/qio.h ../include/inn/libinn.h \ ../include/nntp.h ../include/inn/nntp.h ../include/inn/paths.h \ - ../include/inn/storage.h ../include/inn/vector.h ../include/inn/timer.h \ - ../include/inn/ov.h ../include/inn/storage.h ../include/inn/history.h + ../include/inn/storage.h ../include/inn/options.h \ + ../include/inn/vector.h ../include/inn/timer.h ../include/inn/ov.h \ + ../include/inn/storage.h ../include/inn/history.h tls.o: tls.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h nnrpd.h ../include/portable/socket.h \ @@ -231,8 +236,9 @@ tls.o: tls.c ../include/config.h ../incl ../include/portable/getnameinfo.h ../include/portable/time.h \ ../include/inn/qio.h ../include/inn/defines.h ../include/inn/libinn.h \ ../include/nntp.h ../include/inn/nntp.h ../include/inn/paths.h \ - ../include/inn/storage.h ../include/inn/vector.h ../include/inn/timer.h \ - ../include/inn/innconf.h tls.h + ../include/inn/storage.h ../include/inn/options.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/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/innconf.h ../include/inn/defines.h \ @@ -240,4 +246,5 @@ track.o: track.c ../include/config.h ../ ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \ ../include/portable/time.h ../include/inn/qio.h ../include/inn/libinn.h \ ../include/nntp.h ../include/inn/nntp.h ../include/inn/paths.h \ - ../include/inn/storage.h ../include/inn/vector.h ../include/inn/timer.h + ../include/inn/storage.h ../include/inn/options.h \ + ../include/inn/vector.h ../include/inn/timer.h diff -Nurp inn-2.5.0/nnrpd/article.c inn-2.5.1/nnrpd/article.c --- inn-2.5.0/nnrpd/article.c 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/nnrpd/article.c 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: article.c 8209 2008-12-06 08:34:35Z iulius $ +/* $Id: article.c 8519 2009-06-20 12:20:03Z iulius $ ** ** Article-related routines. */ @@ -992,19 +992,33 @@ CMDover(int ac, char *av[]) HasNotReplied = false; } - vector = overview_split(data, len, NULL, vector); - r = overview_getheader(vector, OVERVIEW_MESSAGE_ID, OVextra); + vector = overview_split(data, len, NULL, vector); + r = overview_get_standard_header(vector, OVERVIEW_MESSAGE_ID); + if (r == NULL) { + if (PERMaccessconf->nnrpdoverstats) { + gettimeofday(&stv, NULL); + } + continue; + } cache_add(HashMessageID(r), token); free(r); if (VirtualPathlen > 0 && overhdr_xref != -1) { - if ((size_t)(overhdr_xref + 1) >= vector->count) - continue; + if ((size_t)(overhdr_xref + 1) >= vector->count) { + if (PERMaccessconf->nnrpdoverstats) { + gettimeofday(&stv, NULL); + } + continue; + } p = vector->strings[overhdr_xref] + sizeof("Xref: ") - 1; while ((p < data + len) && *p == ' ') ++p; q = memchr(p, ' ', data + len - p); - if (q == NULL) - continue; + if (q == NULL) { + if (PERMaccessconf->nnrpdoverstats) { + gettimeofday(&stv, NULL); + } + continue; + } if(useIOb) { SendIOb(data, p - data); SendIOb(VirtualPath, VirtualPathlen - 1); @@ -1078,7 +1092,7 @@ CMDpat(int ac, char *av[]) bool IsBytes, IsLines; bool IsMetaBytes, IsMetaLines; bool DidReply, HasNotReplied; - char *header; + const char *header; char *pattern; char *text; int Overview; @@ -1119,9 +1133,9 @@ CMDpat(int ac, char *av[]) /* Make these changes because our overview database does * not currently know metadata names. */ if (IsMetaBytes) - header = xstrdup("Bytes"); + header = "Bytes"; if (IsMetaLines) - header = xstrdup("Lines"); + header = "Lines"; /* We only allow :bytes and :lines for metadata. */ if (!IsMetaLines && !IsMetaBytes) { @@ -1279,7 +1293,11 @@ CMDpat(int ac, char *av[]) HasNotReplied = false; } vector = overview_split(data, len, NULL, vector); - p = overview_getheader(vector, Overview, OVextra); + if (Overview < OVERVIEW_MAX) { + p = overview_get_standard_header(vector, Overview); + } else { + p = overview_get_extra_header(vector, header); + } if (p != NULL) { if (PERMaccessconf->virtualhost && Overview == overhdr_xref) { diff -Nurp inn-2.5.0/nnrpd/newnews.c inn-2.5.1/nnrpd/newnews.c --- inn-2.5.0/nnrpd/newnews.c 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/nnrpd/newnews.c 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: newnews.c 8052 2008-09-26 21:23:47Z iulius $ +/* $Id: newnews.c 8519 2009-06-20 12:20:03Z iulius $ ** ** The NEWNEWS command. */ @@ -128,6 +128,7 @@ HaveSeen(bool AllGroups, char *group, ch } static char **groups; +static char xref_header[] = "Xref"; static void process_newnews(char *group, bool AllGroups, time_t date) @@ -185,7 +186,7 @@ process_newnews(char *group, bool AllGro continue; /* We only care about the newsgroup list here, virtual * hosting isn't relevant. */ - p = overview_getheader(vector, overhdr_xref, OVextra); + p = overview_get_extra_header(vector, xref_header); } if (p == NULL) continue; @@ -195,7 +196,7 @@ process_newnews(char *group, bool AllGro continue; if (HaveSeen(AllGroups, group, groups, xrefs)) continue; - p = overview_getheader(vector, OVERVIEW_MESSAGE_ID, OVextra); + p = overview_get_standard_header(vector, OVERVIEW_MESSAGE_ID); if (p == NULL) continue; diff -Nurp inn-2.5.0/nnrpd/nnrpd.c inn-2.5.1/nnrpd/nnrpd.c --- inn-2.5.0/nnrpd/nnrpd.c 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/nnrpd/nnrpd.c 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: nnrpd.c 8477 2009-05-18 17:27:48Z iulius $ +/* $Id: nnrpd.c 8637 2009-09-28 19:59:01Z iulius $ ** ** NNTP server for readers (NNRP) for InterNetNews. ** @@ -801,7 +801,7 @@ SetupDaemon(void) } OVextra = overview_extra_fields(false); if (OVextra == NULL) { - /* Overview_extra_fields should already have logged something + /* overview_extra_fields() should already have logged something * useful. */ Reply("%d NNTP server unavailable. Try later!\r\n", NNTP_FAIL_TERMINATING); ExitWithStats(1, true); @@ -1225,7 +1225,8 @@ main(int argc, char *argv[]) /* Were we told to reject connections? */ if (Reject) { syslog(L_NOTICE, "%s rejected %s", Client.host, Reject); - Reply("%d %s\r\n", NNTP_FAIL_TERMINATING, Reject); + Reply("%d %s\r\n", NNTP_FAIL_TERMINATING, + is_valid_utf8(Reject) ? Reject : "Connection rejected"); ExitWithStats(0, false); } @@ -1434,7 +1435,7 @@ main(int argc, char *argv[]) clienttimeout = innconf->clienttimeout; } - CMDquit(ac, av); + ExitWithStats(0, false); /* NOTREACHED */ return 1; diff -Nurp inn-2.5.0/nnrpd/sasl.c inn-2.5.1/nnrpd/sasl.c --- inn-2.5.0/nnrpd/sasl.c 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/nnrpd/sasl.c 2009-10-12 11:24:04.000000000 -0700 @@ -1,7 +1,7 @@ /* ** AUTHINFO SASL functionality. ** -** $Id: sasl.c 8381 2009-03-15 10:00:38Z iulius $ +** $Id: sasl.c 8523 2009-06-20 13:13:23Z iulius $ */ #include "config.h" @@ -32,7 +32,8 @@ sasl_callback_t sasl_callbacks[] = { { SASL_CB_LIST_END, NULL, NULL } }; -#define BASE64_BUF_SIZE 21848 /* Per RFC 2222bis: ((16K / 3) + 1) * 4. */ +#define BASE64_BUF_SIZE 21848 /* Per RFC 4422: (floor(n/3) + 1) * 4 + where n = 16 kB = 16384 bytes. */ /* @@ -189,9 +190,11 @@ SASLauth(int ac, char *av[]) while (r == SASL_CONTINUE || (r == SASL_OK && serveroutlen != 0)) { if (serveroutlen != 0) { - /* Encode the server challenge. */ + /* Encode the server challenge. + * In sasl_encode64() calls, the fourth argument is the length + * of the third including the null terminator. */ r1 = sasl_encode64(serverout, serveroutlen, - base64, BASE64_BUF_SIZE, NULL); + base64, BASE64_BUF_SIZE+1, NULL); if (r1 != SASL_OK) r = r1; } diff -Nurp inn-2.5.0/samples/control.ctl inn-2.5.1/samples/control.ctl --- inn-2.5.0/samples/control.ctl 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/samples/control.ctl 2009-10-12 11:24:04.000000000 -0700 @@ -1,5 +1,5 @@ ## control.ctl - Access control for control messages. -## Last modified: 2009-01-02 +## Last modified: 2009-08-04 ## ## Based on rone's unified control.ctl file. ## @@ -787,6 +787,18 @@ checkgroups:mod-ena@ennui.org:esp.*:veri newgroup:mod-ena@ennui.org:esp.*:verify-esp.news.administracion rmgroup:mod-ena@ennui.org:esp.*:verify-esp.news.administracion +## ETERNAL-SEPTEMBER (Eternal-September Project) +# Contact: news@eternal-september.org +# URL: http://www.eternal-september.org/ +# Key URL: http://www.eternal-september.org/control/pgpkey.txt +# Key fingerprint = A05F 5FA4 D43E 7250 24CE F4D4 10F3 7C12 9E5D D866 +# *PGP* See comment at top of file. +newgroup:*:eternal-september.*:drop +rmgroup:*:eternal-september.*:drop +checkgroups:news@eternal-september.org:eternal-september.*:verify-news@eternal-september.org +newgroup:news@eternal-september.org:eternal-september.*:verify-news@eternal-september.org +rmgroup:news@eternal-september.org:eternal-september.*:verify-news@eternal-september.org + ## EUNET (Europe) checkgroups:news@noc.eu.net:eunet.*:doit newgroup:news@noc.eu.net:eunet.*:doit @@ -958,10 +970,14 @@ newgroup:usenet@gnu.org:gnu.*:verify-use rmgroup:usenet@gnu.org:gnu.*:verify-usenet@gnu.org ## GNUU (*PRIVATE* -- GNUU e.V., Oberursel, Germany) -# Contact: news@gnuu.de -# For private use only, contact the above address for information. -newgroup:*:gnuu.*:mail -rmgroup:*:gnuu.*:doit +# URL: http://www.gnuu.de/ +# Key URL: http://www.gnuu.de/config/PGPKEY.GNUU +# For private use only. +# *PGP* See comment at top of file. +newgroup:*:gnuu.*:drop +rmgroup:*:gnuu.*:drop +newgroup:news@gnuu.de:gnuu.*:mail +rmgroup:news@gnuu.de:gnuu.*:verify-news@gnuu.de ## GOV (Government Information) # Admin group: gov.usenet.announce @@ -1802,9 +1818,9 @@ rmgroup:pkern@gpu.utcc.utoronto.ca:ont.* # *PGP* See comment at top of file. newgroup:*:opennews.*:drop rmgroup:*:opennews.*:drop -checkgroups:schiller@babsi.de:opennews.*:verify-news@news2.open-news-network.org -newgroup:schiller@babsi.de:opennews.*:verify-news@news2.open-news-network.org -rmgroup:schiller@babsi.de:opennews.*:verify-news@news2.open-news-network.org +checkgroups:news@news2.open-news-network.org:opennews.*:verify-news@news2.open-news-network.org +newgroup:news@news2.open-news-network.org:opennews.*:verify-news@news2.open-news-network.org +rmgroup:news@news2.open-news-network.org:opennews.*:verify-news@news2.open-news-network.org ## OPENWATCOM (Open Watcom compilers) # Contact: admin@openwatcom.news-admin.org @@ -1969,7 +1985,7 @@ newgroup:pmelo@*.inescc.pt:pt.*:verify-c rmgroup:pmelo@*.inescc.pt:pt.*:verify-control@usenet-pt.org ## PUBNET (*DEFUNCT* -- ?) -# URL: ftp://ftp.isc.org/pub/usenet/control/pubnet/pubnet.config.Z +# URL: ftp://ftp.isc.org/pub/usenet/control/pubnet/pubnet.config.gz # This hierarchy is defunct. Please remove it. newgroup:*:pubnet.*:mail rmgroup:*:pubnet.*:doit @@ -2061,12 +2077,6 @@ checkgroups:control@news.scoutnet.org:sc newgroup:control@news.scoutnet.org:scout.*:verify-control@news.scoutnet.org rmgroup:control@news.scoutnet.org:scout.*:verify-control@news.scoutnet.org -## SDNET (Greater San Diego Area, California, USA) -# URL: http://www-rohan.sdsu.edu/~wk/sdnet/sdnet.html -checkgroups:wkronert@sunstroke.sdsu.edu:sdnet.*:doit -newgroup:wkronert@sunstroke.sdsu.edu:sdnet.*:doit -rmgroup:wkronert@sunstroke.sdsu.edu:sdnet.*:doit - ## SDSU (*LOCAL* -- San Diego State University, CA) # Contact: Craig R. Sadler # For local use only, contact the above address for information. @@ -2217,6 +2227,12 @@ checkgroups:ausadmin@aus.news-admin.org: newgroup:ausadmin@aus.news-admin.org:syd.*:verify-ausadmin@aus.news-admin.org rmgroup:ausadmin@aus.news-admin.org:syd.*:verify-ausadmin@aus.news-admin.org +## SZAF (*PRIVATE* -- German ?) +# Admin group: szaf.admin +# For private use only. +newgroup:hirtenrat@szaf.org:szaf.*:mail +rmgroup:hirtenrat@szaf.org:szaf.*:doit + ## T-NETZ (*DEFUNCT* -- Germany) # This hierarchy is defunct. Please remove it. newgroup:*:t-netz.*:mail diff -Nurp inn-2.5.0/samples/distrib.pats inn-2.5.1/samples/distrib.pats --- inn-2.5.0/samples/distrib.pats 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/samples/distrib.pats 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -## $Id: distrib.pats 8435 2009-05-01 08:59:23Z iulius $ +## $Id: distrib.pats 8638 2009-09-28 19:59:48Z iulius $ ## ## Sample distrib.pats file. ## @@ -11,7 +11,7 @@ ## the one with the highest weight. ## The weight assigned to this match, integer. ## Newsgroup name or single wildmat(3) pattern. -## Value of Distribution: header. +## Value of Distribution: header, encoded in UTF-8. ## ## See the distrib.pats man page for more information. diff -Nurp inn-2.5.0/samples/expire.ctl inn-2.5.1/samples/expire.ctl --- inn-2.5.0/samples/expire.ctl 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/samples/expire.ctl 2009-10-12 11:24:04.000000000 -0700 @@ -1,32 +1,42 @@ -## $Revision: 7142 $ -## expire.ctl - expire control file +## $Id: expire.ctl 8575 2009-08-18 13:53:54Z iulius $ +## +## Sample configuration file for article expiration. +## ## Format: -## /remember/: -## ::: -## :::: +## /remember/: +## ::: +## :::: +## ## First line gives history retention; second line specifies expiration ## for classes; third line specifies expiration for group if groupbaseexpiry -## is true -## class specified in storage.conf -## wildmat-style patterns for the newsgroups -## Mininum number of days to keep article -## Default number of days to keep the article -## Flush article after this many days -## , , and can be floating-point numbers or the -## word "never." Times are based on when received unless -p is used; -## see expire.8 +## is true in inn.conf. +## Class specified in storage.conf. +## Wildmat-style patterns for the newsgroups. +## Status of the newsgroups. +## Number of days to retain a message-ID in history. +## Minimum number of days to keep the article. +## Default number of days to keep the article. +## Flush the article after this many days. +## , , and can be floating-point numbers or the +## word "never". Times are based on the arrival time for expire and expireover +## (unless -p is used; see expire(8) and expireover(8)), and on the posting +## time for history retention. +## +## See the expire.ctl man page for more information. -## If article expires before 10 days, we still remember it for 10 days in -## case we get offered it again. Depending on what you use for the innd -## -c flag and how paranoid you are about old news, you might want to -## make this 28, 30, etc, but it's probably safe to reduce it to 7 in most -## cases if you want to keep your history file smaller. -/remember/:10 +## When an article is rejected or expires before 10 days, we still remember +## it for 11 days from its original posting time in case we get offered it +## again. See the artcutoff parameter in inn.conf; it should match this +## parameter (/remember/ uses 11 days instead of 10 in order to take into +## account articles whose posting date is one day into the future). +/remember/:11 -## Keep for 1-10 days, allow Expires headers to work. This entry uses -## the syntax appropriate when groupbaseexpiry is true in inn.conf. -*:A:1:10:never +## Keep for 1-15 days, allow Expires: headers 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 -## Keep for 1-10 days, allow Expires headers to work. This is an entry -## based on storage class, used when groupbaseexpiry is false. -#0:1:10:never +## Keep for 1-15 days, allow Expires: headers 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 diff -Nurp inn-2.5.0/samples/filter_innd.pl inn-2.5.1/samples/filter_innd.pl --- inn-2.5.0/samples/filter_innd.pl 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/samples/filter_innd.pl 2009-10-12 11:24:04.000000000 -0700 @@ -1,5 +1,5 @@ # -# $Id: filter_innd.pl 7859 2008-06-07 12:44:17Z iulius $ +# $Id: filter_innd.pl 8640 2009-09-29 20:13:55Z iulius $ # # Sample Perl filtering file for the innd hooks. # @@ -22,7 +22,9 @@ # global associative array `%hdr.' If it returns the empty # string ("") then the article is accepted. If it returns any # non-null string value, then the article is rejected and the -# returned string value is logged as the reason why. +# returned string value is logged as the reason why (make sure +# that such a message is properly encoded in UTF-8 so as to comply +# with the NNTP protocol). # # The standard headers are: # @@ -56,8 +58,10 @@ # This routine is called when each article (in streaming # mode only) is checked to see if INN wants to accept the # article. If it returns the empty string, the article -# is accepted. If it returns a non-empty value, the -# article is refused. It is called with one argument, +# is accepted. If it returns a non-empty value, the +# article is refused (make sure that such a message is +# properly encoded in UTF-8 so as to comply with the +# NNTP protocol). It is called with one argument, # the message-id to check. diff -Nurp inn-2.5.0/samples/filter_innd.py inn-2.5.1/samples/filter_innd.py --- inn-2.5.0/samples/filter_innd.py 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/samples/filter_innd.py 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -## $Id: filter_innd.py 8252 2008-12-23 12:24:52Z iulius $ +## $Id: filter_innd.py 8640 2009-09-29 20:13:55Z iulius $ ## ## This is a sample filter for the Python innd hook. ## @@ -145,10 +145,12 @@ class InndFilter: This method interacts with the IHAVE and CHECK NNTP commands. If you return a non-empty string here, the offered article will be refused before you ever have to waste any bandwidth - looking at it. This is not foolproof, so you should do your - ID checks both here and in filter_art. (TAKETHIS does not - offer the ID for examination, and a TAKETHIS isn't always - preceded by a CHECK.) + looking at it (make sure that such a message is properly + encoded in UTF-8 so as to comply with the NNTP protocol). + This is not foolproof, so you should do your ID checks both + here and in filter_art. (TAKETHIS does not offer the ID + for examination, and a TAKETHIS isn't always preceded + by a CHECK.) """ return "" # Deactivate the samples. @@ -192,7 +194,8 @@ class InndFilter: want to reject, return a non-empty string. The rejection string will appear in transfer and posting response banners, and local posters will see them if their messages are - rejected. + rejected (make sure that such a response is properly encoded + in UTF-8 so as to comply with the NNTP protocol). """ return "" # Deactivate the samples. diff -Nurp inn-2.5.0/samples/filter_nnrpd.pl inn-2.5.1/samples/filter_nnrpd.pl --- inn-2.5.0/samples/filter_nnrpd.pl 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/samples/filter_nnrpd.pl 2009-10-12 11:24:04.000000000 -0700 @@ -1,5 +1,5 @@ # -# $Id: filter_nnrpd.pl 5981 2002-12-12 05:01:42Z vinocur $ +# $Id: filter_nnrpd.pl 8640 2009-09-29 20:13:55Z iulius $ # # Sample perl filtering code for nnrpd hook. # @@ -10,7 +10,8 @@ # posting. It has access to the headers of the article via the associative # array `%hdr'. If it returns a null string then the article is accepted # for posting. A non-null string rejects it, and the value returned is used -# in the rejection message. +# in the rejection message (make sure that such a message is properly encoded +# in UTF-8 so as to comply with the NNTP protocol). # # diff -Nurp inn-2.5.0/samples/inn.conf.in inn-2.5.1/samples/inn.conf.in --- inn-2.5.0/samples/inn.conf.in 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/samples/inn.conf.in 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -## $Id: inn.conf.in 8479 2009-05-18 20:01:37Z iulius $ +## $Id: inn.conf.in 8660 2009-10-10 08:00:19Z iulius $ ## ## inn.conf -- INN configuration data ## @@ -95,9 +95,9 @@ tradindexedmmap: true # Reading -- Keyword Support # -# Enabling this without stopping innd and deleting the existing overview -# database and adding will probably confuse a lot of things. You must -# have compiled this support in too. +# You should add "keywords" to extraoverviewadvertised or extraoverviewhidden +# if you enable this feature. You must have compiled this support in too +# with --enable-keywords at configure time. keywords: false keyartlimit: 100000 @@ -128,12 +128,15 @@ backoffpostfast: 0 backoffpostslow: 1 backofftrigger: 10000 -# Reading and posting -- TLS/SSL support +# Reading and Posting -- TLS/SSL Support +# +# You must have compiled this support in with --with-openssl +# at configure time. #tlscafile: -#tlscapath: -#tlscertfile: @libdir@/cert.pem -#tlskeyfile: @libdir@/key.pem +#tlscapath: @sysconfdir@ +#tlscertfile: @sysconfdir@/cert.pem +#tlskeyfile: @sysconfdir@/key.pem # Monitoring diff -Nurp inn-2.5.0/samples/nnrpd_auth.pl.in inn-2.5.1/samples/nnrpd_auth.pl.in --- inn-2.5.0/samples/nnrpd_auth.pl.in 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/samples/nnrpd_auth.pl.in 2009-10-12 11:24:04.000000000 -0700 @@ -13,7 +13,9 @@ ## ## 1) NNTP response code. Should be one of the codes from %authcodes ## below to not risk violating the protocol. -## 2) An error string to be passed to the client. +## 2) An error string to be passed to the client (make sure that +## such a message is properly encoded in UTF-8 so as to comply with the +## NNTP protocol). ## Both elements are required. If there is a problem, nnrpd will die ## and syslog the exact error. diff -Nurp inn-2.5.0/samples/nnrpd_auth.py inn-2.5.1/samples/nnrpd_auth.py --- inn-2.5.0/samples/nnrpd_auth.py 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/samples/nnrpd_auth.py 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -## $Id: nnrpd_auth.py 8261 2008-12-26 23:03:04Z iulius $ +## $Id: nnrpd_auth.py 8640 2009-09-29 20:13:55Z iulius $ ## ## This is a sample authentication module for the Python nnrpd hook. ## @@ -20,7 +20,10 @@ ## readers.conf. Returns a response ## code, an error string and an ## optional string to appear in the -## logs as the username. +## logs as the username (make sure that +## such a message is properly encoded +## in UTF-8 so as to comply with the +## NNTP protocol). ## authen_close() - Called on nnrpd termination. Save ## your state variables or close a database ## connection. May be omitted. diff -Nurp inn-2.5.0/samples/nocem.ctl inn-2.5.1/samples/nocem.ctl --- inn-2.5.0/samples/nocem.ctl 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/samples/nocem.ctl 2009-10-12 11:24:04.000000000 -0700 @@ -1,17 +1,25 @@ -## $Id: nocem.ctl 7662 2007-08-30 19:23:19Z iulius $ +## $Id: nocem.ctl 8539 2009-06-28 10:01:24Z iulius $ ## ## Configuration file for perl-nocem(8). +## This file specifies the NoCeM issuers and notices you want to follow. ## -## It specifies the NoCeM issuers and notices you want to follow. +## Based on Rosalind Hengeveld's NoCeM Registry: +## +## ## ## Format: ## issuer:notice1,notice2 ## ## You also have to properly configure your newsfeeds file and ## your keyring situated in /pgp/ncmring.gpg. +## You may wish to review and change the policy below. ## ## See the perl-nocem man page for more information. -#annihilator-1:* -#clewis@ferret.ocunix:mmf -#stephane@asynchrone:mmf,openproxy,spam +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 +pgpmoose@killfile.org:pgpmoose-forged-moderation diff -Nurp inn-2.5.0/scripts/inncheck.in inn-2.5.1/scripts/inncheck.in --- inn-2.5.0/scripts/inncheck.in 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/scripts/inncheck.in 2009-10-12 11:24:04.000000000 -0700 @@ -1,7 +1,7 @@ #! /usr/bin/perl -w # fixscript will replace this line with code to load INN::Config -## $Revision: 8410 $ +## $Revision: 8501 $ ## Sanity-check the configuration of an INN system ## by Brendan Kehoe and Rich $alz. @@ -147,6 +147,7 @@ active %control'messages = ( '/encoding/', 1, '/localencoding/', 1, + '/maxdocheckgroups/', 1, 'all', 1, 'checkgroups', 1, 'ihave', 1, diff -Nurp inn-2.5.0/scripts/innreport_inn.pm inn-2.5.1/scripts/innreport_inn.pm --- inn-2.5.0/scripts/innreport_inn.pm 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/scripts/innreport_inn.pm 2009-10-12 11:24:04.000000000 -0700 @@ -1775,15 +1775,6 @@ sub collect($$$$$$) { return 1 if $left =~ /^starttls: \S+ with cipher \S+ \(\d+\/\d+ bits\) no authentication$/o; } ######## - ## inndstart - if ($prog eq "inndstart") { - # cant bind Address already in use - # cant bind Permission denied - return 1 if $left =~ /cant bind /o; - # cant setgroups Operation not permitted - return 1 if $left =~ /cant setgroups /o; - } - ######## ## overchan if ($prog eq "overchan") { # times @@ -2003,7 +1994,7 @@ sub collect($$$$$$) { } return 1; } - # control_XXgroup, foo.bar [moderated] who who /x/y/12, peer, action, 1 + # control_XXgroup, foo.bar [moderated] who who token, [pattern], [pattern], encoding, peer, action, 1 # # Various other random junk can end up in the moderated field, like y, # unmoderated, m, etc. depending on what the control message says. It @@ -2013,23 +2004,23 @@ sub collect($$$$$$) { (\s\S+)? # optional \s(\S+) # e-mail \s\S+ # e-mail - \s\S+, # filename + \s\S+, # storage token \s(?:\S+)?, # exclusion pattern \s(?:\S+)?, # drop pattern \s\S+, # local encoding \s\S+, # server \s([^=,]+(?:=\S+)?), # action - \s*(.*) # code + \s*(.*) # 1 if message approved and first logged in the file /x) { if ($1 eq 'newgroup') { $controlchan_new{$3}++; } elsif ($1 eq 'rmgroup') { $controlchan_rm{$3}++; } else { - $controlchan_other{$3}++; + $controlchan_other{$3}++ if $5 >= 0; } $controlchan_who{$3}++; - $controlchan_ok{$3} += $5; + $controlchan_ok{$3} += $5 if $5 > 0; my $action = $4; my $email = $3; $action =~ s/=.*//; diff -Nurp inn-2.5.0/scripts/news.daily.in inn-2.5.1/scripts/news.daily.in --- inn-2.5.0/scripts/news.daily.in 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/scripts/news.daily.in 2009-10-12 11:24:04.000000000 -0700 @@ -1,7 +1,7 @@ #! /bin/sh # fixscript will replace this line with code to load innshellvars -## $Id: news.daily.in 8454 2009-05-08 09:09:50Z iulius $ +## $Id: news.daily.in 8652 2009-10-09 16:58:31Z iulius $ ## Daily news maintenance. ## Optional arguments: ## delayrm Delay unlink files, then do it quicker (expire -z) @@ -208,7 +208,10 @@ test -n "${RMFILE}" && { } test -n "${LOWMARKFILE}" && { - EXPIREOVERFLAGS="${EXPIREOVERFLAGS} -Z${LOWMARKFILE}" + EXPIREOVERFLAGS="${EXPIREOVERFLAGS} -Z${LOWMARKFILE}" + if [ "${DOEXPIREOVER}" != "true" ] ; then + echo "lowmark requires expireover" >> ${EXPLOG} + fi } @@ -229,11 +232,11 @@ then cd "${PATHSPOOL}/${INNFEEDSPOOL}" # Find the PIDs of innfeed. - LOCKS=`cat *.lock | ${SORT} -u` + LOCKS=`cat *.lock 2>/dev/null | ${SORT} -u` # Process files like "innfeed-dropped.A001703" where # 1703 is not in $LOCKS. - for file in `find -name "innfeed-dropped*"` + for file in `find . -name "innfeed-dropped*" -print` do PID=`echo "$file" | ${SED} 's/^.*[A-Z]0*//'` FOUND=false @@ -301,7 +304,7 @@ if [ ${DOGROUPBASEEXPIRY} = true -a ${DO test -n "${RMFILE}" -a -s "${RMFILE}" && { mv ${RMFILE} ${RMFILE}.$$ && RMFILE=${RMFILE}.$$ - test -n "${TMPDIR}" && SORT="${SORT} -T ${TMPDIR}" + test -n "${TMPDIR}" && SORT="${SORT} -T ${TMPDIR}" ${SORT} -u -o ${RMFILE} ${RMFILE} if ${DOEXPLOG}; then echo "expirerm start `date`" >>${EXPLOG} @@ -362,7 +365,7 @@ if ${DOEXPIRE} ; then fi ## Get rid of an old expire RMFILE since news.daily locks itself and - ## we would not get here if another instance were still running. + ## we would not get here if another instance were still running. if [ -n "${RMFILE}" ] ; then rm -f ${RMFILE} fi @@ -439,7 +442,7 @@ SERVERMODE=`ctlinnd mode 2>/dev/null | $ case "${SERVERMODE}" in "Server throttled"*) ## We did, try to unthrottle the server. - echo "${SERVERMODE} -- trying to recover" + echo "${SERVERMODE} -- trying to recover" ctlinnd -s go "" ;; esac @@ -455,7 +458,7 @@ if [ ${DOEXPIRE} = true -a ${DOGROUPBASE test -n "${RMFILE}" -a -s "${RMFILE}" && { mv ${RMFILE} ${RMFILE}.$$ && RMFILE=${RMFILE}.$$ - test -n "${TMPDIR}" && SORT="${SORT} -T ${TMPDIR}" + test -n "${TMPDIR}" && SORT="${SORT} -T ${TMPDIR}" ${SORT} -u -o ${RMFILE} ${RMFILE} if ${DOEXPLOG}; then echo "expirerm start `date`" >>${EXPLOG} @@ -464,46 +467,10 @@ if [ ${DOEXPIRE} = true -a ${DOGROUPBASE if ${DOEXPLOG}; then echo "expirerm end `date`" >>${EXPLOG} fi - ${DOEXPIREOVER} && { - if ${DOEXPLOG}; then - echo "${EXPIREOVER} start `date`" >>${EXPLOG} - fi - ( cd ${HISTDIR} ; eval ${EXPIREOVER} "${EXPIREOVERFLAGS}" 2>&1 ) | \ - grep -v 'No such file or directory' - DOEXPIREOVER=false - if ${DOEXPLOG}; then - echo "${EXPIREOVER} end `date`" >>${EXPLOG} - fi - } - test -n "${LOWMARKFILE}" && { - echo "lowmarkrenumber begin `date`: (${LOWMARKFILE})" >>${EXPLOG} - ctlinnd -s -t`wc -l <${ACTIVE}` lowmark ${LOWMARKFILE} 2>&1 - echo "lowmarkrenumber end `date`" >>${EXPLOG} - rm -f ${MOST_LOGS}/expire.lastlowmark - mv ${LOWMARKFILE} ${MOST_LOGS}/expire.lastlowmark - } } - ## Expire overview lines for files we just removed. - if ${DOEXPIREOVER}; then - if ${DOEXPLOG}; then - echo "${EXPIREOVER} start `date`" >>${EXPLOG} - fi - ( cd ${HISTDIR} ; eval ${EXPIREOVER} "${EXPIREOVERFLAGS}" 2>&1 ) | \ - grep -v 'No such file or directory' - DOEXPIREOVER=false - if ${DOEXPLOG}; then - echo "${EXPIREOVER} end `date`" >>${EXPLOG} - fi - test -n "${LOWMARKFILE}" && { - echo "lowmarkrenumber begin `date`: (${LOWMARKFILE})" >>${EXPLOG} - ctlinnd -s -t`wc -l <${ACTIVE}` lowmark ${LOWMARKFILE} 2>&1 - echo "lowmarkrenumber end `date`" >>${EXPLOG} - rm -f ${MOST_LOGS}/expire.lastlowmark - mv ${LOWMARKFILE} ${MOST_LOGS}/expire.lastlowmark - } - fi fi -## In case noexpire expireover. + +## Remove the articles that are supposed to go from the overview. if ${DOEXPIREOVER}; then if ${DOEXPLOG}; then echo "${EXPIREOVER} start `date`" >>${EXPLOG} @@ -514,9 +481,9 @@ if ${DOEXPIREOVER}; then echo "${EXPIREOVER} end `date`" >>${EXPLOG} fi test -n "${LOWMARKFILE}" && { - echo "lowmarkrenumber begin `date`: (${LOWMARKFILE})" >>${EXPLOG} + echo "lowmarkrenumber begin `date`: (${LOWMARKFILE})" >>${EXPLOG} ctlinnd -s -t`wc -l <${ACTIVE}` lowmark ${LOWMARKFILE} 2>&1 - echo "lowmarkrenumber end `date`" >>${EXPLOG} + echo "lowmarkrenumber end `date`" >>${EXPLOG} rm -f ${MOST_LOGS}/expire.lastlowmark mv ${LOWMARKFILE} ${MOST_LOGS}/expire.lastlowmark } diff -Nurp inn-2.5.0/site/Makefile inn-2.5.1/site/Makefile --- inn-2.5.0/site/Makefile 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/site/Makefile 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -## $Revision: 8413 $ +## $Revision: 8521 $ include ../Makefile.global top = .. @@ -80,7 +80,7 @@ REST_INSTALLED = \ $D$(PATHETC)/nntpsend.ctl \ $D$(PATHETC)/innreport.conf $D$(PATHHTTP)/innreport.css \ $D$(PATHETC)/localgroups \ - $D$(PATH_CTLWATCH) $D$(PATH_DISTPATS) \ + $D$(PATH_CTLWATCH) $D$(PATH_DISTPATS) $D$(PATH_DISTRIBUTIONS) \ $D$(PATH_ACTSYNC_CFG) $D$(PATH_ACTSYNC_IGN) \ $D$(PATH_MOTD) $D$(PATH_STORAGECONF) \ $D$(PATH_CYCBUFFCONFIG) $D$(PATH_BUFFINDEXED) \ @@ -133,7 +133,7 @@ update: all $(MOST_INSTALLED) @echo before you run innd. ; echo "" date >update -## Special rules for files that sould never be overwritten if they are +## Special rules for files that should never be overwritten if they are ## already installed. These are used only for the initial install of a ## brand new server. $D$(PATH_ACTIVE): ; $(CP_DATA) active.minimal $@ @@ -175,7 +175,7 @@ COPY_RPUB = $(CP_RPUB) COPY_XPRI = $(CP_XPRI) COPY_XPUB = $(CP_XPUB) -## Order: innd, control, expire, inews, sending, misc +## Files to copy. $D$(PATH_INNDHOSTS): incoming.conf ; $(COPY_RPRI) $? $@ $D$(PATH_NEWSFEEDS): newsfeeds ; $(COPY_RPUB) $? $@ $D$(PATH_READERSCONF): readers.conf ; $(COPY_RPUB) $? $@ diff -Nurp inn-2.5.0/storage/Makefile inn-2.5.1/storage/Makefile --- inn-2.5.0/storage/Makefile 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/storage/Makefile 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -## $Id: Makefile 8409 2009-04-11 22:13:41Z iulius $ +## $Id: Makefile 8533 2009-06-21 20:14:05Z iulius $ include ../Makefile.global @@ -103,17 +103,20 @@ expire.o: expire.c ../include/config.h . ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/innconf.h ../include/inn/defines.h \ ../include/inn/libinn.h ../include/inn/ov.h ../include/inn/storage.h \ - ../include/inn/history.h ovinterface.h ../include/inn/history.h \ - ../include/inn/storage.h ../include/inn/paths.h ../include/inn/vector.h + ../include/inn/options.h ../include/inn/history.h ovinterface.h \ + ../include/inn/history.h ../include/inn/storage.h \ + ../include/inn/paths.h ../include/inn/vector.h interface.o: interface.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/conffile.h ../include/inn/innconf.h \ ../include/inn/defines.h ../include/inn/messages.h \ ../include/inn/wire.h interface.h ../include/inn/storage.h \ - ../include/inn/libinn.h methods.h ../include/inn/paths.h + ../include/inn/options.h ../include/inn/libinn.h methods.h \ + ../include/inn/paths.h methods.o: methods.c interface.h ../include/config.h \ ../include/inn/defines.h ../include/inn/system.h \ - ../include/inn/options.h ../include/inn/storage.h methods.h cnfs/cnfs.h \ + ../include/inn/options.h ../include/inn/storage.h \ + ../include/inn/defines.h ../include/inn/options.h methods.h cnfs/cnfs.h \ timecaf/timecaf.h ../include/config.h interface.h timehash/timehash.h \ ../include/config.h interface.h tradspool/tradspool.h \ ../include/config.h interface.h trash/trash.h ../include/config.h \ @@ -123,42 +126,43 @@ ov.o: ov.c ../include/config.h ../includ ../include/config.h ../include/inn/innconf.h ../include/inn/defines.h \ ../include/inn/messages.h ../include/inn/wire.h ../include/inn/vector.h \ ../include/inn/libinn.h ../include/inn/ov.h ../include/inn/storage.h \ - ../include/inn/history.h ovinterface.h ../include/inn/history.h \ - ../include/inn/storage.h ovmethods.h + ../include/inn/options.h ../include/inn/history.h ovinterface.h \ + ../include/inn/history.h ../include/inn/storage.h ovmethods.h overdata.o: overdata.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/buffer.h ../include/inn/defines.h \ ../include/inn/innconf.h ../include/inn/messages.h \ ../include/inn/wire.h ../include/inn/vector.h ../include/inn/libinn.h \ ovinterface.h ../include/inn/history.h ../include/inn/ov.h \ - ../include/inn/storage.h ../include/inn/history.h \ - ../include/inn/storage.h + ../include/inn/storage.h ../include/inn/options.h \ + ../include/inn/history.h ../include/inn/storage.h overview.o: overview.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/buffer.h ../include/inn/defines.h \ ../include/inn/innconf.h ../include/inn/messages.h \ ../include/inn/overview.h ../include/inn/storage.h \ - ../include/inn/wire.h ../include/inn/vector.h ../include/inn/libinn.h \ - ../include/inn/ov.h ../include/inn/storage.h ../include/inn/history.h \ - ovinterface.h ../include/inn/history.h ../include/inn/storage.h \ - ovmethods.h + ../include/inn/options.h ../include/inn/wire.h ../include/inn/vector.h \ + ../include/inn/libinn.h ../include/inn/ov.h ../include/inn/storage.h \ + ../include/inn/history.h ovinterface.h ../include/inn/history.h \ + ../include/inn/storage.h ovmethods.h ovmethods.o: ovmethods.c ovinterface.h ../include/config.h \ ../include/inn/defines.h ../include/inn/system.h \ ../include/inn/options.h ../include/inn/history.h \ ../include/inn/defines.h ../include/inn/ov.h ../include/inn/storage.h \ - ../include/inn/history.h ../include/inn/storage.h \ - buffindexed/buffindexed.h ovdb/ovdb.h tradindexed/tradindexed.h \ - ../include/config.h ../include/inn/ov.h ../include/inn/storage.h + ../include/inn/options.h ../include/inn/history.h \ + ../include/inn/storage.h buffindexed/buffindexed.h ovdb/ovdb.h \ + tradindexed/tradindexed.h ../include/config.h ../include/inn/ov.h \ + ../include/inn/storage.h buffindexed/buffindexed.o: buffindexed/buffindexed.c ../include/config.h \ ../include/inn/defines.h ../include/inn/system.h \ ../include/inn/options.h ../include/clibrary.h ../include/config.h \ ../include/portable/mmap.h ../include/config.h ../include/inn/innconf.h \ ../include/inn/defines.h ../include/inn/messages.h \ ../include/inn/libinn.h ../include/inn/ov.h ../include/inn/storage.h \ - ../include/inn/history.h ../include/inn/paths.h ovinterface.h \ - ../include/config.h ../include/inn/history.h ../include/inn/ov.h \ - ../include/inn/storage.h ../include/inn/storage.h buffindexed/shmem.h \ - buffindexed/buffindexed.h + ../include/inn/options.h ../include/inn/history.h \ + ../include/inn/paths.h ovinterface.h ../include/config.h \ + ../include/inn/history.h ../include/inn/ov.h ../include/inn/storage.h \ + ../include/inn/storage.h buffindexed/shmem.h buffindexed/buffindexed.h buffindexed/shmem.o: buffindexed/shmem.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/messages.h ../include/inn/defines.h \ @@ -169,9 +173,9 @@ cnfs/cnfs.o: cnfs/cnfs.c ../include/conf ../include/portable/time.h ../include/inn/innconf.h \ ../include/inn/defines.h ../include/inn/messages.h \ ../include/inn/mmap.h ../include/inn/wire.h interface.h \ - ../include/config.h ../include/inn/storage.h ../include/inn/libinn.h \ - methods.h interface.h ../include/inn/paths.h cnfs/cnfs.h \ - cnfs/cnfs-private.h + ../include/config.h ../include/inn/storage.h ../include/inn/options.h \ + ../include/inn/libinn.h methods.h interface.h ../include/inn/paths.h \ + cnfs/cnfs.h cnfs/cnfs-private.h ovdb/ovdb.o: ovdb/ovdb.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/portable/socket.h ../include/config.h \ @@ -180,10 +184,11 @@ ovdb/ovdb.o: ovdb/ovdb.c ../include/conf ../include/inn/innconf.h ../include/inn/defines.h \ ../include/inn/libinn.h ../include/inn/messages.h \ ../include/inn/newsuser.h ../include/config.h ../include/clibrary.h \ - ../include/inn/paths.h ../include/inn/storage.h ../include/inn/ov.h \ - ../include/inn/storage.h ../include/inn/history.h ovinterface.h \ - ../include/config.h ../include/inn/history.h ../include/inn/ov.h \ - ../include/inn/storage.h ovdb/ovdb.h ovdb/ovdb-private.h + ../include/inn/paths.h ../include/inn/storage.h \ + ../include/inn/options.h ../include/inn/ov.h ../include/inn/storage.h \ + ../include/inn/history.h ovinterface.h ../include/config.h \ + ../include/inn/history.h ../include/inn/ov.h ../include/inn/storage.h \ + ovdb/ovdb.h ovdb/ovdb-private.h timecaf/caf.o: timecaf/caf.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/messages.h ../include/inn/defines.h \ @@ -194,31 +199,34 @@ timecaf/timecaf.o: timecaf/timecaf.c ../ timecaf/caf.h ../include/inn/innconf.h ../include/inn/defines.h \ ../include/inn/messages.h ../include/inn/wire.h ../include/inn/libinn.h \ methods.h interface.h ../include/config.h ../include/inn/storage.h \ - timecaf/timecaf.h interface.h ../include/inn/paths.h + ../include/inn/options.h timecaf/timecaf.h interface.h \ + ../include/inn/paths.h timehash/timehash.o: timehash/timehash.c ../include/config.h \ ../include/inn/defines.h ../include/inn/system.h \ ../include/inn/options.h ../include/clibrary.h ../include/config.h \ ../include/portable/mmap.h ../include/config.h ../include/inn/innconf.h \ ../include/inn/defines.h ../include/inn/messages.h \ ../include/inn/wire.h ../include/inn/libinn.h methods.h interface.h \ - ../include/config.h ../include/inn/storage.h ../include/inn/paths.h \ - timehash/timehash.h interface.h + ../include/config.h ../include/inn/storage.h ../include/inn/options.h \ + ../include/inn/paths.h timehash/timehash.h interface.h tradindexed/tdx-cache.o: tradindexed/tdx-cache.c ../include/config.h \ ../include/inn/defines.h ../include/inn/system.h \ ../include/inn/options.h ../include/clibrary.h ../include/config.h \ ../include/inn/hashtab.h ../include/inn/defines.h \ ../include/inn/messages.h ../include/inn/libinn.h \ - ../include/inn/storage.h tradindexed/tdx-private.h + ../include/inn/storage.h ../include/inn/options.h \ + tradindexed/tdx-private.h tradindexed/tdx-data.o: tradindexed/tdx-data.c ../include/config.h \ ../include/inn/defines.h ../include/inn/system.h \ ../include/inn/options.h ../include/clibrary.h ../include/config.h \ ../include/portable/mmap.h ../include/config.h ../include/inn/history.h \ ../include/inn/defines.h ../include/inn/innconf.h \ ../include/inn/messages.h ../include/inn/mmap.h ../include/inn/libinn.h \ - ../include/inn/ov.h ../include/inn/storage.h ../include/inn/history.h \ - ovinterface.h ../include/config.h ../include/inn/history.h \ - ../include/inn/ov.h ../include/inn/storage.h ../include/inn/storage.h \ - tradindexed/tdx-private.h tradindexed/tdx-structure.h + ../include/inn/ov.h ../include/inn/storage.h ../include/inn/options.h \ + ../include/inn/history.h ovinterface.h ../include/config.h \ + ../include/inn/history.h ../include/inn/ov.h ../include/inn/storage.h \ + ../include/inn/storage.h tradindexed/tdx-private.h \ + tradindexed/tdx-structure.h tradindexed/tdx-group.o: tradindexed/tdx-group.c ../include/config.h \ ../include/inn/defines.h ../include/inn/system.h \ ../include/inn/options.h ../include/clibrary.h ../include/config.h \ @@ -227,15 +235,16 @@ tradindexed/tdx-group.o: tradindexed/tdx ../include/inn/messages.h ../include/inn/mmap.h ../include/inn/qio.h \ ../include/inn/vector.h ../include/inn/libinn.h ../include/inn/paths.h \ tradindexed/tdx-private.h ../include/inn/storage.h \ - tradindexed/tdx-structure.h + ../include/inn/options.h tradindexed/tdx-structure.h tradindexed/tradindexed.o: tradindexed/tradindexed.c ../include/config.h \ ../include/inn/defines.h ../include/inn/system.h \ ../include/inn/options.h ../include/clibrary.h ../include/config.h \ ../include/inn/innconf.h ../include/inn/defines.h \ ../include/inn/messages.h ../include/inn/libinn.h ../include/inn/ov.h \ - ../include/inn/storage.h ../include/inn/history.h \ - ../include/inn/storage.h tradindexed/tdx-private.h \ - tradindexed/tdx-structure.h tradindexed/tradindexed.h + ../include/inn/storage.h ../include/inn/options.h \ + ../include/inn/history.h ../include/inn/storage.h \ + tradindexed/tdx-private.h tradindexed/tdx-structure.h \ + tradindexed/tradindexed.h tradspool/tradspool.o: tradspool/tradspool.c ../include/config.h \ ../include/inn/defines.h ../include/inn/system.h \ ../include/inn/options.h ../include/clibrary.h ../include/config.h \ @@ -243,12 +252,12 @@ tradspool/tradspool.o: tradspool/tradspo ../include/inn/defines.h ../include/inn/messages.h ../include/inn/qio.h \ ../include/inn/wire.h ../include/inn/libinn.h ../include/inn/paths.h \ methods.h interface.h ../include/config.h ../include/inn/storage.h \ - tradspool/tradspool.h interface.h + ../include/inn/options.h tradspool/tradspool.h interface.h trash/trash.o: trash/trash.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/libinn.h ../include/inn/defines.h \ methods.h interface.h ../include/config.h ../include/inn/storage.h \ - trash/trash.h interface.h + ../include/inn/options.h trash/trash.h interface.h tradindexed/tdx-util.o: tradindexed/tdx-util.c ../include/config.h \ ../include/inn/defines.h ../include/inn/system.h \ ../include/inn/options.h ../include/clibrary.h ../include/config.h \ @@ -256,8 +265,9 @@ tradindexed/tdx-util.o: tradindexed/tdx- ../include/inn/libinn.h ../include/inn/history.h \ ../include/inn/innconf.h ../include/inn/messages.h \ ../include/inn/newsuser.h ../include/config.h ../include/clibrary.h \ - ../include/inn/ov.h ../include/inn/storage.h ../include/inn/history.h \ - ../include/inn/paths.h ../include/inn/vector.h ../include/inn/wire.h \ - ovinterface.h ../include/config.h ../include/inn/history.h \ - ../include/inn/ov.h ../include/inn/storage.h tradindexed/tdx-private.h \ - ../include/inn/storage.h tradindexed/tdx-structure.h + ../include/inn/ov.h ../include/inn/storage.h ../include/inn/options.h \ + ../include/inn/history.h ../include/inn/paths.h ../include/inn/vector.h \ + ../include/inn/wire.h ovinterface.h ../include/config.h \ + ../include/inn/history.h ../include/inn/ov.h ../include/inn/storage.h \ + tradindexed/tdx-private.h ../include/inn/storage.h \ + tradindexed/tdx-structure.h diff -Nurp inn-2.5.0/storage/cnfs/cnfs-private.h inn-2.5.1/storage/cnfs/cnfs-private.h --- inn-2.5.0/storage/cnfs/cnfs-private.h 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/storage/cnfs/cnfs-private.h 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: cnfs-private.h 5975 2002-12-11 04:51:43Z rra $ +/* $Id: cnfs-private.h 8613 2009-09-07 08:14:53Z iulius $ ** ** CNFS disk/file mode header file. */ @@ -20,10 +20,12 @@ #define CNFS_MAGICV1 "Cycbuff" /* CNFSMASIZ bytes */ #define CNFS_MAGICV2 "CBuf1" /* CNFSMASIZ bytes */ #define CNFS_MAGICV3 "CBuf3" /* CNFSMASIZ bytes */ -#define CNFS_BLOCKSIZE 512 /* Unit block size we'll work with */ +#define CNFS_MAGICV4 "CBuf4" /* CNFSMASIZ bytes */ +#define CNFS_DFL_BLOCKSIZE 4096 /* Unit block size we'll work with */ +#define CNFS_MAX_BLOCKSIZE 16384 /* Max unit block size */ /* Amount of data stored at beginning of CYCBUFF before the bitfield */ -#define CNFS_BEFOREBITF (1 * CNFS_BLOCKSIZE) +#define CNFS_BEFOREBITF 512 /* Rounded up to CNFS_HDR_PAGESIZE */ struct metacycbuff; /* Definition comes below */ @@ -49,6 +51,7 @@ typedef struct _CYCBUFF { storage */ bool needflush; /* true if CYCBUFFEXTERN is needed to be flushed */ + int blksz; /* Blocksize */ struct _CYCBUFF *next; bool currentbuff; /* true if this cycbuff is currently used */ char metaname[CNFSNASIZ];/* Symbolic name of meta */ @@ -70,6 +73,7 @@ typedef struct { char metaname[CNFSNASIZ]; char orderinmeta[CNFSLASIZ]; char currentbuff[CNFSMASIZ]; + char blksza[CNFSLASIZ]; /* ASCII version of blksz */ } CYCBUFFEXTERN; #define METACYCBUFF_UPDATE 25 diff -Nurp inn-2.5.0/storage/cnfs/cnfs.c inn-2.5.1/storage/cnfs/cnfs.c --- inn-2.5.0/storage/cnfs/cnfs.c 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/storage/cnfs/cnfs.c 2009-10-12 11:24:04.000000000 -0700 @@ -1,6 +1,6 @@ -/* $Id: cnfs.c 7960 2008-08-24 09:22:42Z iulius $ +/* $Id: cnfs.c 8620 2009-09-07 08:24:46Z iulius $ ** -** Cyclic News File System. +** Storage manager module for Cyclic News File System method. */ #include "config.h" @@ -61,44 +61,45 @@ static int metabuff_update = METACYCBUF static int refresh_interval = REFRESH_INTERVAL; static TOKEN CNFSMakeToken(char *cycbuffname, off_t offset, - uint32_t cycnum, STORAGECLASS class) { + int blksz, uint32_t cycnum, STORAGECLASS class) { TOKEN token; - int32_t int32; + uint32_t uint32; - /* - ** XXX We'll assume that TOKENSIZE is 16 bytes and that we divvy it - ** up as: 8 bytes for cycbuffname, 4 bytes for offset, 4 bytes - ** for cycnum. See also: CNFSBreakToken() for hard-coded constants. - */ + /* The token is @03nnxxxxxxxxxxxxxxxxyyyyyyyyzzzzzzzz@ + * where "03" is the cnfs method number, + * "nn" the hexadecimal value of the storage class, + * "xxxxxxxxxxxxxxxx" the name of the cyclic buffer (as defined + * in /cycbuff.conf), + * "yyyyyyyy" the offset, + * "zzzzzzzz" the cyclic number. */ token.type = TOKEN_CNFS; token.class = class; memcpy(token.token, cycbuffname, CNFSMAXCYCBUFFNAME); - int32 = htonl(offset / CNFS_BLOCKSIZE); - memcpy(&token.token[8], &int32, sizeof(int32)); - int32 = htonl(cycnum); - memcpy(&token.token[12], &int32, sizeof(int32)); + uint32 = htonl(offset / blksz); + memcpy(&token.token[8], &uint32, sizeof(uint32)); + uint32 = htonl(cycnum); + memcpy(&token.token[12], &uint32, sizeof(uint32)); return token; } /* ** NOTE: We assume that cycbuffname is 9 bytes long. */ - static bool CNFSBreakToken(TOKEN token, char *cycbuffname, - off_t *offset, uint32_t *cycnum) { - int32_t int32; + uint32_t *blk, uint32_t *cycnum) { + uint32_t uint32; - if (cycbuffname == NULL || offset == NULL || cycnum == NULL) { + if (cycbuffname == NULL || blk == NULL || cycnum == NULL) { warn("CNFS: BreakToken: invalid argument: %s", cycbuffname); SMseterror(SMERR_INTERNAL, "BreakToken: invalid argument"); return false; } memcpy(cycbuffname, token.token, CNFSMAXCYCBUFFNAME); *(cycbuffname + CNFSMAXCYCBUFFNAME) = '\0'; /* Just to be paranoid */ - memcpy(&int32, &token.token[8], sizeof(int32)); - *offset = (off_t)ntohl(int32) * (off_t)CNFS_BLOCKSIZE; - memcpy(&int32, &token.token[12], sizeof(int32)); - *cycnum = ntohl(int32); + memcpy(&uint32, &token.token[8], sizeof(uint32)); + *blk = ntohl(uint32); + memcpy(&uint32, &token.token[12], sizeof(uint32)); + *cycnum = ntohl(uint32); return true; } @@ -119,7 +120,7 @@ static char * CNFSofft2hex(off_t offset, if (sizeof(off_t) <= sizeof(unsigned long)) { snprintf(buf, sizeof(buf), (leadingzeros) ? "%016lx" : "%lx", (unsigned long) offset); - } else { + } else { int i; for (i = 0; i < CNFSLASIZ; i++) @@ -137,7 +138,7 @@ static char * CNFSofft2hex(off_t offset, else return p - 1; /* We converted a "0" and then bypassed all the zeros */ - } else + } else return buf; } @@ -188,9 +189,12 @@ static bool CNFSflushhead(CYCBUFF *cycbu return false; } memset(&rpx, 0, sizeof(CYCBUFFEXTERN)); - if (cycbuff->magicver == 3) { + if (cycbuff->magicver == 3 || cycbuff->magicver == 4) { cycbuff->updated = time(NULL); - strncpy(rpx.magic, CNFS_MAGICV3, strlen(CNFS_MAGICV3)); + if (cycbuff->magicver == 3) + strncpy(rpx.magic, CNFS_MAGICV3, strlen(CNFS_MAGICV3)); + else + strncpy(rpx.magic, CNFS_MAGICV4, strlen(CNFS_MAGICV4)); strncpy(rpx.name, cycbuff->name, CNFSNASIZ); strncpy(rpx.path, cycbuff->path, CNFSPASIZ); /* Don't use sprintf() directly ... the terminating '\0' causes grief */ @@ -205,6 +209,7 @@ static bool CNFSflushhead(CYCBUFF *cycbu } else { strncpy(rpx.currentbuff, "FALSE", CNFSMASIZ); } + strncpy(rpx.blksza, CNFSofft2hex(cycbuff->blksz, true), CNFSLASIZ); memcpy(cycbuff->bitfield, &rpx, sizeof(CYCBUFFEXTERN)); msync(cycbuff->bitfield, cycbuff->minartoffset, MS_ASYNC); cycbuff->needflush = false; @@ -270,11 +275,11 @@ static void CNFScleanexpirerule(void) { static CYCBUFF *CNFSgetcycbuffbyname(char *name) { CYCBUFF *cycbuff; - + if (name == NULL) return NULL; for (cycbuff = cycbufftab; cycbuff != (CYCBUFF *)NULL; cycbuff = cycbuff->next) - if (strcmp(name, cycbuff->name) == 0) + if (strcmp(name, cycbuff->name) == 0) return cycbuff; return NULL; } @@ -285,7 +290,7 @@ static METACYCBUFF *CNFSgetmetacycbuffby if (name == NULL) return NULL; for (metacycbuff = metacycbufftab; metacycbuff != (METACYCBUFF *)NULL; metacycbuff = metacycbuff->next) - if (strcmp(name, metacycbuff->name) == 0) + if (strcmp(name, metacycbuff->name) == 0) return metacycbuff; return NULL; } @@ -326,8 +331,7 @@ static void CNFSReadFreeAndCycle(CYCBUFF static bool CNFSparse_part_line(char *l) { char *p; struct stat sb; - off_t len, minartoffset; - int tonextblock; + off_t len; CYCBUFF *cycbuff, *tmp; /* Symbolic cnfs partition name */ @@ -384,16 +388,7 @@ static bool CNFSparse_part_line(char *l) cycbuff->next = (CYCBUFF *)NULL; cycbuff->needflush = false; cycbuff->bitfield = NULL; - /* - ** The minimum article offset will be the size of the bitfield itself, - ** len / (blocksize * 8), plus however many additional blocks the CYCBUFF - ** external header occupies ... then round up to the next block. - */ - minartoffset = - cycbuff->len / (CNFS_BLOCKSIZE * 8) + CNFS_BEFOREBITF; - tonextblock = CNFS_HDR_PAGESIZE - (minartoffset & (CNFS_HDR_PAGESIZE - 1)); - cycbuff->minartoffset = minartoffset + tonextblock; - + cycbuff->minartoffset = 0; if (cycbufftab == (CYCBUFF *)NULL) cycbufftab = cycbuff; else { @@ -478,7 +473,7 @@ static bool CNFSparse_metapart_line(char metacycbuff->members = xrealloc(metacycbuff->members, (metacycbuff->count + 1) * sizeof(CYCBUFF *)); metacycbuff->members[metacycbuff->count++] = rp; } - + if (metacycbuff->count == 0) { warn("CNFS: no cycbuffs assigned to cycbuff '%s'", metacycbuff->name); free(metacycbuff->name); @@ -542,7 +537,9 @@ static bool CNFSinit_disks(CYCBUFF *cycb char buf[64]; CYCBUFFEXTERN *rpx; int fd; + int tonextblock; off_t tmpo; + off_t minartoffset; bool oneshot; /* @@ -571,7 +568,7 @@ static bool CNFSinit_disks(CYCBUFF *cycb } } errno = 0; - cycbuff->bitfield = mmap(NULL, cycbuff->minartoffset, + cycbuff->bitfield = mmap(NULL, CNFS_HDR_PAGESIZE, SMopenmode ? (PROT_READ | PROT_WRITE) : PROT_READ, MAP_SHARED, cycbuff->fd, 0); if (cycbuff->bitfield == MAP_FAILED || errno != 0) { @@ -586,8 +583,14 @@ static bool CNFSinit_disks(CYCBUFF *cycb ** & buggy & particularly icky & unupdated. Use at your own risk. :-) */ rpx = (CYCBUFFEXTERN *)cycbuff->bitfield; + cycbuff->magicver = 0; if (strncmp(rpx->magic, CNFS_MAGICV3, strlen(CNFS_MAGICV3)) == 0) { cycbuff->magicver = 3; + cycbuff->blksz = 512; + } + if (strncmp(rpx->magic, CNFS_MAGICV4, strlen(CNFS_MAGICV4)) == 0) + cycbuff->magicver = 4; + if (cycbuff->magicver >= 3) { if (strncmp(rpx->name, cycbuff->name, CNFSNASIZ) != 0) { warn("CNFS: Mismatch 3: read %s for cycbuff %s", rpx->name, cycbuff->name); @@ -596,7 +599,7 @@ static bool CNFSinit_disks(CYCBUFF *cycb if (strncmp(rpx->path, cycbuff->path, CNFSPASIZ) != 0) { warn("CNFS: Path mismatch: read %s for cycbuff %s", rpx->path, cycbuff->path); - } + } strncpy(buf, rpx->lena, CNFSLASIZ); buf[CNFSLASIZ] = '\0'; tmpo = CNFShex2offt(buf); @@ -621,20 +624,57 @@ static bool CNFSinit_disks(CYCBUFF *cycb cycbuff->currentbuff = true; } else cycbuff->currentbuff = false; + if (cycbuff->magicver > 3) { + strncpy(buf, rpx->blksza, CNFSLASIZ); + buf[CNFSLASIZ] = '\0'; + cycbuff->blksz = CNFShex2offt(buf); + } + if (cycbuff->blksz < 512 || cycbuff->blksz > CNFS_MAX_BLOCKSIZE || + 2 * (cycbuff->blksz / 2) != cycbuff->blksz) { + warn("CNFS: Invalid: read 0x%s blocksize for cycbuff %s", + CNFSofft2hex(cycbuff->blksz, false), cycbuff->path); + return false; + } } else { notice("CNFS: no magic cookie found for cycbuff %s, initializing", cycbuff->name); - cycbuff->magicver = 3; + cycbuff->magicver = 4; cycbuff->free = cycbuff->minartoffset; cycbuff->updated = 0; cycbuff->cyclenum = 1; cycbuff->currentbuff = true; cycbuff->order = 0; /* to indicate this is newly added cycbuff */ cycbuff->needflush = true; + cycbuff->blksz = CNFS_DFL_BLOCKSIZE; + cycbuff->free = 0; memset(cycbuff->metaname, '\0', CNFSLASIZ); - if (!CNFSflushhead(cycbuff)) - return false; } + /* + ** The minimum article offset will be the size of the bitfield itself, + ** len / (blocksize * 8), plus however many additional blocks the CYCBUFF + ** external header occupies ... then round up to the next block. + */ + minartoffset = cycbuff->len / (cycbuff->blksz * 8) + CNFS_BEFOREBITF; + tonextblock = CNFS_HDR_PAGESIZE - (minartoffset & (CNFS_HDR_PAGESIZE - 1)); + cycbuff->minartoffset = minartoffset + tonextblock; + + munmap(cycbuff->bitfield, CNFS_HDR_PAGESIZE); + errno = 0; + cycbuff->bitfield = mmap(NULL, cycbuff->minartoffset, + SMopenmode ? (PROT_READ | PROT_WRITE) : PROT_READ, + MAP_SHARED, cycbuff->fd, 0); + if (cycbuff->bitfield == MAP_FAILED || errno != 0) { + warn("CNFS: CNFSinitdisks: mmap for %s offset %d len %ld failed: %m", + cycbuff->path, 0, (long) cycbuff->minartoffset); + cycbuff->bitfield = NULL; + return false; + } + + if (cycbuff->free == 0) + cycbuff->free = cycbuff->minartoffset; + if (cycbuff->needflush && !CNFSflushhead(cycbuff)) + return false; + if (oneshot) break; } @@ -908,13 +948,13 @@ static int CNFSUsedBlock(CYCBUFF *cycbuf bufoff, bufmin, bufmax); return 0; } - if (offset % CNFS_BLOCKSIZE != 0) { + if (offset % cycbuff->blksz != 0) { SMseterror(SMERR_INTERNAL, NULL); warn("CNFS: CNFSsetusedbitbyrp: offset %s not on %d-byte block" - " boundary", CNFSofft2hex(offset, false), CNFS_BLOCKSIZE); + " boundary", CNFSofft2hex(offset, false), cycbuff->blksz); return 0; } - blocknum = offset / CNFS_BLOCKSIZE; + blocknum = offset / cycbuff->blksz; longoffset = blocknum / (longsize * 8); bitoffset = blocknum % (longsize * 8); where = (ULONG *)cycbuff->bitfield + (CNFS_BEFOREBITF / longsize) @@ -937,7 +977,7 @@ static int CNFSUsedBlock(CYCBUFF *cycbuf /* It's a read operation */ mask = onarray[bitoffset]; -/* +/* * return bitlong & mask; doesn't work if sizeof(ulong) > sizeof(int) */ if ( bitlong & mask ) return 1; else return 0; @@ -1053,7 +1093,7 @@ TOKEN cnfs_store(const ARTHANDLE article METACYCBUFF *metacycbuff = NULL; int i; static char buf[1024]; - static char alignbuf[CNFS_BLOCKSIZE]; + static char alignbuf[CNFS_MAX_BLOCKSIZE]; char *artcycbuffname; off_t artoffset, middle; uint32_t artcyclenum; @@ -1078,7 +1118,7 @@ TOKEN cnfs_store(const ARTHANDLE article } metacycbuff = metaexprule->dest; - cycbuff = metacycbuff->members[metacycbuff->memb_next]; + cycbuff = metacycbuff->members[metacycbuff->memb_next]; if (cycbuff == NULL) { SMseterror(SMERR_INTERNAL, "no cycbuff found"); warn("CNFS: no cycbuff found for %d", metacycbuff->memb_next); @@ -1093,18 +1133,18 @@ TOKEN cnfs_store(const ARTHANDLE article /* cycbuff->free should have already been aligned by the last write, but realign it just to be sure. */ - tonextblock = CNFS_BLOCKSIZE - (cycbuff->free & (CNFS_BLOCKSIZE - 1)); - if (tonextblock != CNFS_BLOCKSIZE) + tonextblock = cycbuff->blksz - (cycbuff->free & (cycbuff->blksz - 1)); + if (tonextblock != cycbuff->blksz) cycbuff->free += tonextblock; /* Article too big? */ - if (cycbuff->len - cycbuff->free < CNFS_BLOCKSIZE + 1) + if (cycbuff->len - cycbuff->free < cycbuff->blksz + 1) left = 0; else - left = cycbuff->len - cycbuff->free - CNFS_BLOCKSIZE - 1; + left = cycbuff->len - cycbuff->free - cycbuff->blksz - 1; if ((off_t) article.len > left) { - for (middle = cycbuff->free ;middle < cycbuff->len - CNFS_BLOCKSIZE - 1; - middle += CNFS_BLOCKSIZE) { + for (middle = cycbuff->free ;middle < cycbuff->len - cycbuff->blksz - 1; + middle += cycbuff->blksz) { CNFSUsedBlock(cycbuff, middle, true, false); } if (innconf->nfswriter) { @@ -1112,8 +1152,13 @@ TOKEN cnfs_store(const ARTHANDLE article } cycbuff->free = cycbuff->minartoffset; cycbuff->cyclenum++; - if (cycbuff->cyclenum == 0) - cycbuff->cyclenum += 2; /* cnfs_next() needs this */ + if (cycbuff->magicver <= 3) { + if (cycbuff->cyclenum == 0) + cycbuff->cyclenum += 2; /* cnfs_next() needs this */ + } else { + if ((cycbuff->cyclenum & 0xFFFFFF) == 0) /* 24 bits max */ + cycbuff->cyclenum = 2; /* cnfs_next() needs this */ + } cycbuff->needflush = true; if (metacycbuff->metamode == INTERLEAVE) { CNFSflushhead(cycbuff); /* Flush, just for giggles */ @@ -1176,10 +1221,11 @@ TOKEN cnfs_store(const ARTHANDLE article iov[i].iov_len = article.iov[i-1].iov_len; totlen += iov[i].iov_len; } - if ((totlen & (CNFS_BLOCKSIZE - 1)) != 0) { - /* Want to xwritev an exact multiple of CNFS_BLOCKSIZE */ + if ((totlen & (cycbuff->blksz - 1)) != 0) { + /* Want to xwritev an exact multiple of cycbuff->blksz */ iov[i].iov_base = alignbuf; - iov[i].iov_len = CNFS_BLOCKSIZE - (totlen & (CNFS_BLOCKSIZE - 1)); + iov[i].iov_len = cycbuff->blksz - + (totlen & (cycbuff->blksz - 1)); totlen += iov[i].iov_len; i++; } @@ -1208,21 +1254,23 @@ TOKEN cnfs_store(const ARTHANDLE article } } CNFSUsedBlock(cycbuff, artoffset, true, true); - for (middle = artoffset + CNFS_BLOCKSIZE; middle < cycbuff->free; - middle += CNFS_BLOCKSIZE) { + for (middle = artoffset + cycbuff->blksz; middle < cycbuff->free; + middle += cycbuff->blksz) { CNFSUsedBlock(cycbuff, middle, true, false); } if (innconf->nfswriter) { cnfs_mapcntl(NULL, 0, MS_ASYNC); } if (!SMpreopen) CNFSshutdowncycbuff(cycbuff); - return CNFSMakeToken(artcycbuffname, artoffset, artcyclenum, class); + return CNFSMakeToken(artcycbuffname, artoffset, + cycbuff->blksz, artcyclenum, class); } ARTHANDLE *cnfs_retrieve(const TOKEN token, const RETRTYPE amount) { char cycbuffname[9]; off_t offset; uint32_t cycnum; + uint32_t block; CYCBUFF *cycbuff; ARTHANDLE *art; CNFSARTHEADER cah; @@ -1238,7 +1286,7 @@ ARTHANDLE *cnfs_retrieve(const TOKEN tok SMseterror(SMERR_INTERNAL, NULL); return NULL; } - if (! CNFSBreakToken(token, cycbuffname, &offset, &cycnum)) { + if (! CNFSBreakToken(token, cycbuffname, &block, &cycnum)) { /* SMseterror() should have already been called */ return NULL; } @@ -1247,7 +1295,7 @@ ARTHANDLE *cnfs_retrieve(const TOKEN tok if (!nomessage) { warn("CNFS: cnfs_retrieve: token %s: bogus cycbuff name:" " %s:0x%s:%d", TokenToText(token), cycbuffname, - CNFSofft2hex(offset, false), cycnum); + CNFSofft2hex(block, false), cycnum); nomessage = true; } return NULL; @@ -1257,6 +1305,7 @@ ARTHANDLE *cnfs_retrieve(const TOKEN tok warn("CNFS: cycbuff '%s' initialization fail", cycbuff->name); return NULL; } + offset = (off_t)block * cycbuff->blksz; if (! CNFSArtMayBeHere(cycbuff, offset, cycnum)) { SMseterror(SMERR_NOENT, NULL); if (!SMpreopen) CNFSshutdowncycbuff(cycbuff); @@ -1269,7 +1318,7 @@ ARTHANDLE *cnfs_retrieve(const TOKEN tok art->data = NULL; art->len = 0; art->private = NULL; - ret_token = token; + ret_token = token; art->token = &ret_token; if (!SMpreopen) CNFSshutdowncycbuff(cycbuff); return art; @@ -1310,7 +1359,7 @@ ARTHANDLE *cnfs_retrieve(const TOKEN tok plusoffset = sizeof(oldCNFSARTHEADER)-sizeof(CNFSARTHEADER); } #endif /* OLD_CNFS */ - if (offset > cycbuff->len - CNFS_BLOCKSIZE - (off_t) ntohl(cah.size) - 1) { + if (offset > cycbuff->len - cycbuff->blksz - (off_t) ntohl(cah.size) - 1) { if (!SMpreopen) { SMseterror(SMERR_UNDEFINED, "CNFSARTHEADER size overflow"); warn("CNFS: could not match article size token %s %s:0x%s:%d: %ld", @@ -1321,7 +1370,7 @@ ARTHANDLE *cnfs_retrieve(const TOKEN tok return NULL; } CNFSReadFreeAndCycle(cycbuff); - if (offset > cycbuff->len - CNFS_BLOCKSIZE - (off_t) ntohl(cah.size) - 1) { + if (offset > cycbuff->len - cycbuff->blksz - (off_t) ntohl(cah.size) - 1) { SMseterror(SMERR_UNDEFINED, "CNFSARTHEADER size overflow"); warn("CNFS: could not match article size token %s %s:0x%s:%d: %ld", TokenToText(token), cycbuffname, CNFSofft2hex(offset, false), @@ -1382,7 +1431,7 @@ ARTHANDLE *cnfs_retrieve(const TOKEN tok return NULL; } } - ret_token = token; + ret_token = token; art->token = &ret_token; art->len = ntohl(cah.size); if (amount == RETR_ALL) { @@ -1439,7 +1488,7 @@ void cnfs_freearticle(ARTHANDLE *article if (!article) return; - + if (article->private) { private = (PRIV_CNFS *)article->private; if (innconf->articlemmap) @@ -1455,13 +1504,14 @@ bool cnfs_cancel(TOKEN token) { char cycbuffname[9]; off_t offset; uint32_t cycnum; + uint32_t block; CYCBUFF *cycbuff; if (token.type != TOKEN_CNFS) { SMseterror(SMERR_INTERNAL, NULL); return false; } - if (! CNFSBreakToken(token, cycbuffname, &offset, &cycnum)) { + if (! CNFSBreakToken(token, cycbuffname, &block, &cycnum)) { SMseterror(SMERR_INTERNAL, NULL); /* SMseterror() should have already been called */ return false; @@ -1475,6 +1525,7 @@ bool cnfs_cancel(TOKEN token) { warn("CNFS: cycbuff '%s' initialization fail", cycbuff->name); return false; } + offset = (off_t)block * cycbuff->blksz; if (! (cycnum == cycbuff->cyclenum || (cycnum == cycbuff->cyclenum - 1 && offset > cycbuff->free) || (cycnum + 1 == 0 && cycbuff->cyclenum == 2 && offset > cycbuff->free))) { @@ -1519,7 +1570,7 @@ cnfs_next(ARTHANDLE *article, const RETR priv.len = 0; priv.base = NULL; priv.cycbuff = NULL; - } else { + } else { priv = *(PRIV_CNFS *)article->private; free(article->private); free(article); @@ -1561,19 +1612,19 @@ cnfs_next(ARTHANDLE *article, const RETR } } if (!priv.rollover) { - for (middle = priv.offset ;middle < cycbuff->len - CNFS_BLOCKSIZE - 1; - middle += CNFS_BLOCKSIZE) { + for (middle = priv.offset ;middle < cycbuff->len - cycbuff->blksz - 1; + middle += cycbuff->blksz) { if (CNFSUsedBlock(cycbuff, middle, false, false) != 0) break; } - if (middle >= cycbuff->len - CNFS_BLOCKSIZE - 1) { + if (middle >= cycbuff->len - cycbuff->blksz - 1) { priv.rollover = true; middle = cycbuff->minartoffset; } break; } else { for (middle = priv.offset ;middle < cycbuff->free; - middle += CNFS_BLOCKSIZE) { + middle += cycbuff->blksz) { if (CNFSUsedBlock(cycbuff, middle, false, false) != 0) break; } @@ -1614,8 +1665,8 @@ cnfs_next(ARTHANDLE *article, const RETR *private = priv; private->cycbuff = cycbuff; private->offset = middle; - if (cycbuff->len - cycbuff->free < (off_t) ntohl(cah.size) + CNFS_BLOCKSIZE + 1) { - private->offset += CNFS_BLOCKSIZE; + if (cycbuff->len - cycbuff->free < (off_t) ntohl(cah.size) + cycbuff->blksz + 1) { + private->offset += cycbuff->blksz; art->data = NULL; art->len = 0; art->token = NULL; @@ -1623,11 +1674,11 @@ cnfs_next(ARTHANDLE *article, const RETR return art; } /* check the bitmap to ensure cah.size is not broken */ - blockfudge = (sizeof(cah) + plusoffset + ntohl(cah.size)) % CNFS_BLOCKSIZE; - limit = private->offset + sizeof(cah) + plusoffset + ntohl(cah.size) - blockfudge + CNFS_BLOCKSIZE; + blockfudge = (sizeof(cah) + plusoffset + ntohl(cah.size)) % cycbuff->blksz; + limit = private->offset + sizeof(cah) + plusoffset + ntohl(cah.size) - blockfudge + cycbuff->blksz; if (offset < cycbuff->free) { - for (middle = offset + CNFS_BLOCKSIZE; (middle < cycbuff->free) && (middle < limit); - middle += CNFS_BLOCKSIZE) { + for (middle = offset + cycbuff->blksz; (middle < cycbuff->free) && (middle < limit); + middle += cycbuff->blksz) { if (CNFSUsedBlock(cycbuff, middle, false, false) != 0) /* Bitmap set. This article assumes to be broken */ break; @@ -1641,8 +1692,8 @@ cnfs_next(ARTHANDLE *article, const RETR return art; } } else { - for (middle = offset + CNFS_BLOCKSIZE; (middle < cycbuff->len) && (middle < limit); - middle += CNFS_BLOCKSIZE) { + for (middle = offset + cycbuff->blksz; (middle < cycbuff->len) && (middle < limit); + middle += cycbuff->blksz) { if (CNFSUsedBlock(cycbuff, middle, false, false) != 0) /* Bitmap set. This article assumes to be broken */ break; @@ -1667,10 +1718,12 @@ cnfs_next(ARTHANDLE *article, const RETR } private->offset += (off_t) ntohl(cah.size) + sizeof(cah) + plusoffset; - tonextblock = CNFS_BLOCKSIZE - (private->offset & (CNFS_BLOCKSIZE - 1)); + tonextblock = cycbuff->blksz - (private->offset & (cycbuff->blksz - 1)); private->offset += (off_t) tonextblock; art->arrived = ntohl(cah.arrived); - token = CNFSMakeToken(cycbuff->name, offset, (offset > cycbuff->free) ? cycbuff->cyclenum - 1 : cycbuff->cyclenum, cah.class); + token = CNFSMakeToken(cycbuff->name, offset, cycbuff->blksz, + (offset > cycbuff->free) ? cycbuff->cyclenum - 1 : cycbuff->cyclenum, + cah.class); art->token = &token; offset += sizeof(cah) + plusoffset; if (innconf->articlemmap) { @@ -1746,21 +1799,21 @@ bool cnfs_ctl(PROBETYPE type, TOKEN *tok struct artngnum *ann; switch (type) { - case SMARTNGNUM: + case SMARTNGNUM: if ((ann = (struct artngnum *)value) == NULL) return false; /* make SMprobe() call cnfs_retrieve() */ ann->artnum = 0; - return true; + return true; default: - return false; - } + return false; + } } bool cnfs_flushcacheddata(FLUSHTYPE type) { if (type == SM_ALL || type == SM_HEAD) CNFSflushallheads(); - return true; + return true; } void diff -Nurp inn-2.5.0/storage/cnfs/cnfs.h inn-2.5.1/storage/cnfs/cnfs.h --- inn-2.5.0/storage/cnfs/cnfs.h 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/storage/cnfs/cnfs.h 2009-10-12 11:24:04.000000000 -0700 @@ -1,6 +1,6 @@ -/* $Id: cnfs.h 6530 2003-10-21 00:31:33Z rra $ +/* $Id: cnfs.h 8620 2009-09-07 08:24:46Z iulius $ ** -** cyclic news file system header +** Storage manager module header for Cyclic News File System method. */ #ifndef __CNFS_H__ diff -Nurp inn-2.5.0/storage/overdata.c inn-2.5.1/storage/overdata.c --- inn-2.5.0/storage/overdata.c 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/storage/overdata.c 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: overdata.c 8409 2009-04-11 22:13:41Z iulius $ +/* $Id: overdata.c 8519 2009-06-20 12:20:03Z iulius $ ** ** Overview data processing. ** @@ -208,7 +208,7 @@ valid_number(const char *string) /* ** Check whether a given string is a valid overview string (doesn't contain -** CR or LF, and if the second argument is true must be preceeded by a header +** CR or LF, and if the second argument is true must be preceded by a header ** name, colon, and space). Allow CRLF at the end of the data, but don't ** require it. */ @@ -314,11 +314,11 @@ overview_index(const char *field, const /* ** Given an overview header line, split out a vector pointing at each ** of the components (within line), returning a pointer to the -** vector. If the vector initially passed in is NULL a new vector is -** created, else the existing one is filled in. +** vector. If the vector initially passed in is NULL, a new vector is +** created, otherwise the existing one is filled in. ** ** A member `n' of the vector is of length (vector->strings[n+1] - -** vector->strings[n] - 1). Note that the last member of the vector +** vector->strings[n] - 1). Note that the last member of the vector ** will always point beyond (line + length). */ struct cvector * @@ -333,7 +333,7 @@ overview_split(const char *line, size_t cvector_clear(vector); } while (line != NULL) { - /* the first field is the article number */ + /* The first field is the article number. */ if (p == NULL) { if (number != NULL) { *number = atoi(line); @@ -343,15 +343,15 @@ overview_split(const char *line, size_t } p = memchr(line, '\t', length); if (p != NULL) { - /* skip over the tab */ + /* Skip over the tab. */ ++p; - /* and calculate the remaining length */ + /* And calculate the remaining length. */ length -= (p - line); } else { - /* add in a pointer to beyond the end of the final - * component, so you can always calculate the length. - * overview lines are always terminated with \r\n, so the - * -1 ends up chopping those off */ + /* Add in a pointer to beyond the end of the final + component, so you can always calculate the length; + overview lines are always terminated with \r\n, so the + -1 ends up chopping those off. */ cvector_add(vector, line + length - 1); } line = p; @@ -362,31 +362,61 @@ overview_split(const char *line, size_t /* ** Given an overview vector (from overview_split), return a copy of ** the member which the caller is interested in (and must free). +** The name and order of standard overview fields are fixed so we +** can request them by their index. */ char * -overview_getheader(const struct cvector *vector, unsigned int element, - const struct vector *extra) +overview_get_standard_header(const struct cvector *vector, unsigned int element) { char *field = NULL; size_t len; const char *p; - size_t max = ARRAY_SIZE(fields) + extra->count - 1; + size_t max = ARRAY_SIZE(fields) - 1; + /* vector ends with an additional pointer beyond the end of the final + component. It therefore has a count of elements increased by 1. */ if ((element + 1) >= vector->count || element > max) { - warn("request for invalid overview field %d", element); - return NULL; - } - /* Note... this routine does not synthesise Newsgroups: on behalf - * of the caller... */ - if (element >= ARRAY_SIZE(fields)) { - /* +2 for `: ' */ - p = vector->strings[element] + - strlen(extra->strings[element - ARRAY_SIZE(fields)]) + 2; - len = vector->strings[element + 1] - p - 1; - } else { - p = vector->strings[element]; - len = vector->strings[element + 1] - vector->strings[element] - 1; + warn("request for invalid standard overview field %d", element); + return NULL; } + + p = vector->strings[element]; + len = vector->strings[element + 1] - vector->strings[element] - 1; + field = xstrndup(p, len); return field; } + +/* +** Given an overview vector (from overview_split), return a copy of +** the member which the caller is interested in (and must free). +** The order of extra overview fields may vary so we walk all the +** extra headers to find the requested field. +*/ +char * +overview_get_extra_header(const struct cvector *vector, const char *header) +{ + char *field = NULL; + size_t i, len; + const char *p; + size_t headerlen = strlen(header); + + /* vector ends with an additional pointer beyond the end of the final + component. It therefore has a count of elements increased by 1. */ + for (i = ARRAY_SIZE(fields); i < vector->count - 1; i++) { + if (strncasecmp(header, vector->strings[i], headerlen) == 0) { + p = vector->strings[i] + headerlen; + /* Check for ": " after the name of the header. */ + if ((*p++ == ':') && (*p++ == ' ')) { + len = vector->strings[i + 1] - p - 1; + + field = xstrndup(p, len); + return field; + } + } + } + + /* The required header was not found in the extra overview fields. */ + return NULL; +} + diff -Nurp inn-2.5.0/storage/timecaf/README.CAF inn-2.5.1/storage/timecaf/README.CAF --- inn-2.5.0/storage/timecaf/README.CAF 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/storage/timecaf/README.CAF 2009-10-12 11:24:04.000000000 -0700 @@ -1,17 +1,17 @@ The timecaf storage manager is like the timehash storage manager, except that it stores multiple articles in one file. The file format is called CAF (for "crunched article file", putting multiple articles together into one big -file), and uses a library 'caf.c' dating back from the pre-storage manager +file), and uses a library 'caf.c' dating back from the pre-storage manager days when I made a locally-hacked version of INN1.5 that used this code in order to boost performance on my system. Originally I had planned to do one big file per newsgroup, but it turns out that a time-based file layout rather than newsgroup-name-based is a. more efficient and b. much easier to -fit into the current storage manager interface paradigm. Anyway, the +fit into the current storage manager interface paradigm. Anyway, the pathnames for the files are of the form /timecaf-nn/bb/aacc.CF where 'nn' is the numeric storage class (same as in 'timehash') and the -file contains all articles written during the interval from -(time_t) 0xaabbcc00 to 0xaabbccFF. +file contains all articles written during the interval from +(time_t) 0xaabbcc00 to 0xaabbccFF. The way expiration works on the 'timecaf' storage manager is a bit complicated. When articles are expired or cancelled (via SMcancel()) @@ -26,7 +26,7 @@ doesn't create a new one. This means th newsgroups with differing expiration lengths put in the same timecaf storage class, everything will work ok but your expire runs will spend some extra time copying files about. In my experience this hasn't been too -much of a problem. If you find that it is a problem, you may wish to +much of a problem. If you find that it is a problem, you may wish to consider dividing up your spool layout so each storage class gets newsgroups that expire at more-or-less the same time, or putting *.binaries in their own storage class. @@ -39,21 +39,21 @@ I did on the old news.ecn.uoknor.edu sho artwrite speed). This is presumably due to improved locality of reference and not having to open/close article files all the time but only every 4 minutes or so. Artcancel speed, on the other hand, is not much different, because -cancel requests have terrible locality of reference. Expire times seem -to be generally somewhat faster than timehash as well, even given the +cancel requests have terrible locality of reference. Expire times seem +to be generally somewhat faster than timehash as well, even given the extra copying overhead mentioned above. Timecaf is probably slower than CNFS, but I haven't had a chance to do any comparison tests. Timecaf does share the feature with timehash -that you can get much more fine-tuned control of your expire times (on a -group-by-group basis, if needed) than you can with CNFS. +that you can get much more fine-tuned control of your expire times (on a +group-by-group basis, if needed) than you can with CNFS. Down below is an old README telling more about the implementation details of the CAF file format. Most people won't care about this, but if you're curious, read on; it also tells some of the historical developments that went on in this code. I've been running some version of this code off and on for the past two years, and have been running it as a storage manager -module for the past few months, so I'm pretty sure of it's stability. +module for the past few months, so I'm pretty sure of its stability. Richard Todd (rmtodd@mailhost.ecn.ou.edu/rmtodd@servalan.servalan.com) @@ -61,21 +61,25 @@ module for the past few months, so I'm p Implementation details (format of a CAF file) and some design rationale: - Look at include/caf.h for the details, but basically, the layout is + Look at caf.h for the details, but basically, the layout is something like this. Each CAF file has a blocksize associated with it (usually 512 bytes, but it can vary). The layout of a CAF file is as follows: - 1. Header (~52 bytes) containing information like low and high -article numbers, amount of free space, blocksize. + 1. Header (~300 bytes) containing information like low and high +article numbers, amount of free space, blocksize. 2. Free space bitmap (size given by the FreeZoneTabSize field of the -header). - 3. CAFTOCENTs (CAF Table of Contents Entries), 1/article storable +header). Its index is ~212 bytes (in fact, it is exactly between the end +of the header and the end of the block). Its main part depends on the +length of the index (n bits for the index => n bytes for the main free +space bitmap, therefore ~1696 blocks, thus ~868KB). Consequently, the +maximal length of a CAF file is ~3.5GB. + 3. CAFTOCENTs (CAF Table of Contents Entries), 1 per article storable in the file. Each CAFTOCENT gives the article's size, creation time, and offset in the CAF file. Usually space is alloted in the CAF file -for 64K CAFTOCENTs, even if the # of articles in the CAF file is +for 262144 CAFTOCENTs, even if the # of articles in the CAF file is nowhere near that amount. The unused CAFTOCENTs are all zeros, and this means CAF files are almost always sparse. - 4. Articles, always stored starting at blocksize boundaries. + 4. Articles, always stored starting at blocksize boundaries. When fastrm is told to remove an article, the article is not actually removed as such, it is merely marked as non-existent (the CAFTOCENT is @@ -86,27 +90,28 @@ contiguous chunk large enough to handle the article into those blocks and marks those blocks as being in use. If there is no suitable free space chunk in the CAF file, then innd merely appends the article to the end of the CAF file and records the -article's position in the TOC. [Given the way the CAF code is currently +article's position in the TOC. [Given the way the CAF code is currently used by the timecaf storage manager, it's almost always the case that we're -appending to the end of the file.] +appending to the end of the file.] - A note on the free bitmap portion of the CAF file: it's not just a simple -bitmap (each bit of the bitmap tells whether a data block is in use or free.) + A note on the free bitmap portion of the CAF file: it's not just a simple +bitmap (each bit of the bitmap tells whether a data block is in use or free). First there is an 'index' bitmap which tells which blocks of the 'main' bitmap have free blocks listed in them, and then a 'main' bitmap which tells whether -the data blocks are in use or free. This setup means that we can have -bitmaps for CAF files as large as 8GB, while still being able to find free +the data blocks are in use or free. This setup means that we can have +bitmaps for CAF files as large as 8GB (in fact, it is now about 3.5GB, see +computation above -- note by Julien Elie), while still being able to find free space by only reading the 'index' bitmap and one block of the 'main' bitmap. -(Previous versions of the CAF code had just a 'main' bitmap and scaled the +(Previous versions of the CAF code had just a 'main' bitmap and scaled the blocksize up when CAF files got large; this became rather, um, non-optimal when control.cancel started to hit hundreds of thousands of articles and 8K blocksizes.) In practice, CAF files over 2GB or 4GB may be a problem because -of unsigned/signed long problems, and ones over 4G are probably impossible +of unsigned/signed long problems, and ones over 4GB are probably impossible on anything besides an Alpha unless you track down all the places in innd -where they assume off_t is a long and fix it to work with long longs. +where they assume off_t is a long and fix it to work with long longs. At some point I'd also like to try some other, more efficient -directory layout for the CAF files, as opposed to the old +directory layout for the CAF files, as opposed to the old /var/spool/news/newsgroup/name/component/ scheme. At the time I started implementing this, it seemed like it'd be too much of a hassle to change this in INN as it stands. I'm hoping that changing this @@ -119,7 +124,7 @@ so that the CAF file for, e.g., alt.tv.babylon-5 will now be /var/spool/news/alt/tv/babylon-5.CF -- note the final . instead of a /. This pretty much bypasses the need for the 'terminal' layer of directories to be read, and means that these directory blocks will not -be fighting with other blocks for the limited space available in the buffer -cache. This provides more of an improvement than you might think; thruput on +be fighting with other blocks for the limited space available in the buffer +cache. This provides more of an improvement than you might think; throuput on news.ecn.uoknor.edu went from 160,000 articles/day to >200,000 articles/day with this patch, and this is on an aging 32M 486/66.] diff -Nurp inn-2.5.0/storage/timecaf/caf.c inn-2.5.1/storage/timecaf/caf.c --- inn-2.5.0/storage/timecaf/caf.c 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/storage/timecaf/caf.c 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: caf.c 8301 2009-01-29 18:50:30Z iulius $ +/* $Id: caf.c 8626 2009-09-07 09:06:42Z iulius $ ** ** Library routines needed for handling CAF (Crunched Article Files) ** Written by Richard Todd (rmtodd@mailhost.ecn.uoknor.edu) 3/24/96, @@ -145,7 +145,7 @@ CAFReadHeader(int fd, CAFHEADER *h) return 0; } -/* +/* ** Seek to the TOC entry for a given article. As usual, -1 for error, 0 succ. */ @@ -164,8 +164,8 @@ CAFSeekTOCEnt(int fd, CAFHEADER *head, A } /* -** Fetch the TOC entry for a given article. As usual -1 for error, 0 success */ - +** Fetch the TOC entry for a given article. As usual -1 for error, 0 success. +*/ static int CAFGetTOCEnt(int fd, CAFHEADER *head, ARTNUM art, CAFTOCENT *tocp) { @@ -243,7 +243,7 @@ CAFReadFreeBM(int fd, CAFHEADER *h) bm->NumBMB = BYTEWIDTH * bm->FreeZoneIndexSize; bm->BytesPerBMB = (h->BlockSize) * (h->BlockSize * BYTEWIDTH); bm->BlockSize = h->BlockSize; - + bm->Blocks = xmalloc(bm->NumBMB * sizeof(CAFBMB *)); bm->Bits = xmalloc(bm->FreeZoneIndexSize); for (i = 0 ; i < bm->NumBMB ; ++i) { @@ -335,7 +335,7 @@ CAFFlushBMB(unsigned int blkno, int fd, if (OurWrite(fd, bmb->BMBBits, bm->BlockSize) < 0) return -1; - bmb->Dirty = 0; + bmb->Dirty = 0; return 0; } @@ -347,7 +347,7 @@ static int CAFWriteFreeBM(int fd, CAFBITMAP *bm) { size_t blkno; - + for (blkno = 0 ; blkno < bm->NumBMB ; ++blkno) { if (CAFFlushBMB(blkno, fd, bm) < 0) { return -1; @@ -364,8 +364,8 @@ CAFWriteFreeBM(int fd, CAFBITMAP *bm) return 0; } -/* -** Determine if a block at a given offset is free. Return 1 if it is, 0 +/* +** Determine if a block at a given offset is free. Return 1 if it is, 0 ** otherwise. */ @@ -382,7 +382,7 @@ CAFIsBlockFree(CAFBITMAP *bm, int fd, of /* if < Start, always return 0 (should never happen in real usage) */ if (block < bm->StartDataBlock) return 0; - + /* if off the end, also return 0. */ if (block >= bm->MaxDataBlock) return 0; @@ -390,7 +390,7 @@ CAFIsBlockFree(CAFBITMAP *bm, int fd, of blkno = (block - bm->StartDataBlock) / bm->BytesPerBMB; bmb = CAFFetchBMB(blkno, fd, bm); - /* ick. not a lot we can do here if this fails. */ + /* ick. not a lot we can do here if this fails. */ if (bmb == NULL) return 0; /* Sanity checking that we have the right BMB. */ @@ -401,7 +401,7 @@ CAFIsBlockFree(CAFBITMAP *bm, int fd, of mask = 1 << (((block - bmb->StartDataBlock) / bm->BlockSize) % BYTEWIDTH); ASSERT(ind < bm->BlockSize); - + return ((bmb->BMBBits[ind]) & mask) != 0; } @@ -433,14 +433,14 @@ CAFSetBlockFree(CAFBITMAP *bm, int fd, o /* if < Start, always return (should never happen in real usage) */ if (block < bm->StartDataBlock) return; - + /* if off the end, also return. */ if (block >= bm->MaxDataBlock) return; /* find blk # of appropriate BMB */ blkno = (block - bm->StartDataBlock) / bm->BytesPerBMB; bmb = CAFFetchBMB(blkno, fd, bm); - /* ick. not a lot we can do here if this fails. */ + /* ick. not a lot we can do here if this fails. */ if (bmb == NULL) return; /* Sanity checking that we have the right BMB. */ @@ -475,14 +475,14 @@ CAFSetBlockFree(CAFBITMAP *bm, int fd, o return; } -/* +/* ** Search a freebitmap to find n contiguous free blocks. Returns 0 for ** failure, offset of starting block if successful. -** XXX does not attempt to find chunks that span BMB boundaries. This is +** XXX does not attempt to find chunks that span BMB boundaries. This is ** messy to fix. -** (Actually I think this case works, as does the case when it tries to find -** a block bigger than BytesPerBMB. Testing reveals that it does seem to work, -** though not optimally (some BMBs will get scanned several times). +** (Actually I think this case works, as does the case when it tries to find +** a block bigger than BytesPerBMB. Testing reveals that it does seem to work, +** though not optimally (some BMBs will get scanned several times). */ static off_t CAFFindFreeBlocks(CAFBITMAP *bm, int fd, unsigned int n) @@ -506,7 +506,7 @@ CAFFindFreeBlocks(CAFBITMAP *bm, int fd, while (curblk < bmb->MaxDataBlock) { blkno = (curblk - bmb->StartDataBlock)/(bm->BlockSize); ind = blkno/BYTEWIDTH; - if (bmb->BMBBits[ind] == 0) { + if (bmb->BMBBits[ind] == 0) { /* nothing set in this byte, skip this byte and move on. */ blkno = (ind+1)*BYTEWIDTH; curblk = blkno*bm->BlockSize + bmb->StartDataBlock; @@ -515,7 +515,7 @@ CAFFindFreeBlocks(CAFBITMAP *bm, int fd, /* scan rest of current byte for 1 bits */ for (j = blkno % BYTEWIDTH ; j < BYTEWIDTH ; j++, curblk += bm->BlockSize) { - if ((bmb->BMBBits[ind] & (1 << j)) != 0) break; + if ((bmb->BMBBits[ind] & (1 << j)) != 0) break; } if (j == BYTEWIDTH) continue; @@ -525,7 +525,7 @@ CAFFindFreeBlocks(CAFBITMAP *bm, int fd, /* scan for n blocks in a row. */ for (i = 1 ; i < n ; ++i, curblk += bm->BlockSize) { - if (!CAFIsBlockFree(bm, fd, curblk)) break; + if (!CAFIsBlockFree(bm, fd, curblk)) break; } if (i == n) return startblk; @@ -554,7 +554,7 @@ CAFOpenArtRead(const char *path, ARTNUM struct stat st; if ( (fd = open(path, O_RDONLY)) < 0) { - /* + /* ** if ENOENT (not there), just call this "article not found", ** otherwise it's a more serious error and stash the errno. */ @@ -613,7 +613,7 @@ CAFOpenArtRead(const char *path, ARTNUM /* ** variables for keeping track of currently pending write. -** FIXME: assumes only one article open for writing at a time. +** FIXME: assumes only one article open for writing at a time. */ static int CAF_fd_write; @@ -623,26 +623,31 @@ static CAFHEADER CAF_header_write; static CAFBITMAP *CAF_free_bitmap_write; static unsigned int CAF_numblks_write; -/* +/* ** Given estimated size of CAF file (i.e., the size of the old CAF file found -** by cafclean), find an "optimal" blocksize (one big enough so that the -** default FreeZoneTabSize can cover the entire -** file so that we don't "lose" free space and not be able to reuse it. -** (Currently only returns CAF_DEFAULT_BLOCKSIZE, as with the new 2-level -** bitmaps, the FreeZoneTabSize that results from a 512-byte blocksize can -** handle any newsgroup with <7.3G of data. Yow!) +** by cafclean), find an "optimal" blocksize (one big enough so that the +** default FreeZoneTabSize can cover the entire file in order not to "lose" +** free space and not be able to reuse it. +** (Currently only returns the first multiple of CAF_DEFAULT_BLOCKSIZE that +** allows to have at least CAF_MIN_FZSIZE bytes of index, as with the new 2-level +** bitmaps, the FreeZoneTabSize that results from a 512-byte blocksize can +** handle any file with <7.3G of data. Yow!) */ static unsigned int CAFFindOptimalBlocksize(ARTNUM tocsize UNUSED, size_t cfsize) { + /* No size given, use default. */ + if (cfsize == 0) { + return (((sizeof(CAFHEADER) + CAF_MIN_FZSIZE)/CAF_DEFAULT_BLOCKSIZE + 1) + *CAF_DEFAULT_BLOCKSIZE); + } - if (cfsize == 0) return CAF_DEFAULT_BLOCKSIZE; /* no size given, use default. */ - - return CAF_DEFAULT_BLOCKSIZE; + return (((sizeof(CAFHEADER) + CAF_MIN_FZSIZE)/CAF_DEFAULT_BLOCKSIZE + 1) + *CAF_DEFAULT_BLOCKSIZE); } -/* +/* ** Create an empty CAF file. Used by CAFOpenArtWrite. ** Must be careful here and create the new CAF file under a temp name and then ** link it into place, to avoid possible race conditions. @@ -667,7 +672,7 @@ CAFCreateCAFFile(char *cfpath, ARTNUM ar strlcpy(finalpath, cfpath, sizeof(finalpath)); /* create path with PID attached */ snprintf(path, sizeof(path), "%s.%lu", cfpath, (unsigned long) getpid()); - /* + /* ** Shouldn't be anyone else with our pid trying to write to the temp. ** file, but there might be an old one lying around. Nuke it. ** (yeah, I'm probably being overly paranoid.) @@ -689,13 +694,13 @@ CAFCreateCAFFile(char *cfpath, ARTNUM ar head.Free = 0; head.BlockSize = CAFFindOptimalBlocksize(tocsize, estcfsize); head.FreeZoneIndexSize = head.BlockSize - sizeof(CAFHEADER); - head.FreeZoneTabSize = head.FreeZoneIndexSize + head.FreeZoneTabSize = head.FreeZoneIndexSize + head.BlockSize*head.FreeZoneIndexSize*BYTEWIDTH; head.StartDataBlock = CAFRoundOffsetUp(sizeof(CAFHEADER) + head.FreeZoneTabSize + tocsize*sizeof(CAFTOCENT), head.BlockSize); head.spare[0] = head.spare[1] = head.spare[2] = 0; - + if (OurWrite(fd, &head, sizeof(head)) < 0) { close(fd); return -1; @@ -708,7 +713,7 @@ CAFCreateCAFFile(char *cfpath, ARTNUM ar CAFError(CAF_ERR_IO); return -1; } - /* + /* ** put a null after the TOC as a 'placeholder', so that we'll have a sparse ** file and that EOF will be at where the articles should start going. */ @@ -752,7 +757,7 @@ CAFCreateCAFFile(char *cfpath, ARTNUM ar } /* -** Try to open a CAF file for writing a given article. Return an fd to +** Try to open a CAF file for writing a given article. Return an fd to ** write to (already positioned to the right place to write at) if successful, ** else -1 on error. if LockFlag is true, we wait for a lock on the file, ** otherwise we fail if we can't lock it. If size is != 0, we try to allocate @@ -776,7 +781,7 @@ CAFOpenArtWrite(char *path, ARTNUM *artp CAFError(CAF_ERR_IO); return -1; } else { - /* + /* ** the *artp? business is so that if *artp==0, we set initial ** article # to 1. */ @@ -786,22 +791,22 @@ CAFOpenArtWrite(char *path, ARTNUM *artp ** XXX possible race condition here, so we check to see if ** create failed because of EEXIST. If so, we go back to top ** of loop, because someone else was trying to create at the - ** same time. - ** Is this the best way to solve this? + ** same time. + ** Is this the best way to solve this? ** (Hmm. this condition should be quite rare, occuring only - ** when two different programs are simultaneously doing + ** when two different programs are simultaneously doing ** CAFOpenArtWrite()s, and no CF file exists previously.) */ if (fd < 0) { if (caf_errno == EEXIST) { /* ignore the error and try again */ - continue; + continue; } return -1; /* other error, assume caf_errno set properly. */ } - /* - ** break here, because CreateCAFFile does - ** lock fd, so we don't need to flock it ourselves. + /* + ** break here, because CreateCAFFile does + ** lock fd, so we don't need to flock it ourselves. */ break; } @@ -820,14 +825,14 @@ CAFOpenArtWrite(char *path, ARTNUM *artp /* ** and then close and reopen the file, in case someone changed the ** file out from under us. - */ + */ close(fd); } return CAFStartWriteFd(fd, artp, size); } /* -** Like CAFOpenArtWrite(), except we assume the CAF file is already +** Like CAFOpenArtWrite(), except we assume the CAF file is already ** open/locked, and we have an open fd to it. */ int @@ -867,11 +872,11 @@ CAFStartWriteFd(int fd, ARTNUM *artp, si ** Get the CAFTOCENT for that article, but only if article# is in the range ** Low <= art# <= High. If art# > High, use a zero CAFTOCENT. This means ** that in cases where the CAF file is inconsistent due to a crash --- - ** the CAFTOCENT shows an article as being existent, but the header + ** the CAFTOCENT shows an article as being existent, but the header ** doesn't show that article as being in the currently valid range --- ** the header value "wins" and we assume the article does not exist. ** This avoids problems with "half-existent" articles that showed up - ** in the CAF TOC, but were never picked up by ctlinnd renumber '' . + ** in the CAF TOC, but were never picked up by ctlinnd renumber ''. */ /* (Note: We already checked above that art >= head.Low.) */ @@ -925,7 +930,7 @@ CAFStartWriteFd(int fd, ARTNUM *artp, si close(fd); return -1; } - + /* stash data for FinishArtWrite's use. */ CAF_fd_write = fd; CAF_artnum_write = art; @@ -937,7 +942,7 @@ CAFStartWriteFd(int fd, ARTNUM *artp, si return fd; } -/* +/* ** write out TOC entries for the previous article. Note that we do *not* ** (as was previously done) close the fd; this allows reuse of the fd to write ** another article to this CAF file w/o an (soemwhat expensive) open(). @@ -986,7 +991,7 @@ CAFFinishArtWrite(int fd) if (tocentry.Size > CAF_numblks_write * headp->BlockSize) { /* ** for now core dump (might as well, if we've done this the CAF - ** file is probably thoroughly hosed anyway.) + ** file is probably thoroughly hosed anyway.) */ warn("CAF: article written overran declared size"); abort(); @@ -1005,7 +1010,7 @@ CAFFinishArtWrite(int fd) CAFDisposeBitmap(CAF_free_bitmap_write); /* and update the Free value in the header. */ headp->Free -= CAF_numblks_write * headp->BlockSize; - } + } if (CAF_artnum_write > headp->High || CAF_free_bitmap_write) { /* need to update header. */ @@ -1076,9 +1081,9 @@ CAFErrorStr(void) ** the TOC entries, which should be freed by the caller when the ** caller's done with it. Return NULL on failure. ** -** This function calls CAFOpenReadTOC(dir, ch, &tocp), which does most +** This function calls CAFOpenReadTOC(dir, ch, &tocp), which does most ** (practically all) of the dirty work. CAFOpenReadTOC leaves the fd open -** (and returns it); this is needed by cafls. CAFReadTOC() closes the fd +** (and returns it); this is needed by cafls. CAFReadTOC() closes the fd ** after CAFOpenReadTOC() is done with it. */ @@ -1105,7 +1110,7 @@ CAFOpenReadTOC(char *path, CAFHEADER *ch off_t offset; if ( (fd = open(path, O_RDONLY)) < 0) { - /* + /* ** if ENOENT (not there), just call this "article not found", ** otherwise it's a more serious error and stash the errno. */ @@ -1184,7 +1189,7 @@ CAFRemoveMultArts(char *path, unsigned i /* ** and then close and reopen the file, in case someone changed the ** file out from under us. - */ + */ close(fd); } /* got the file, open for write and locked. */ @@ -1205,7 +1210,7 @@ CAFRemoveMultArts(char *path, unsigned i /* Is the requested article even in the file? */ if (art < head.Low || art > head.High) { CAFError(CAF_ERR_ARTNOTHERE); - errorfound = true; + errorfound = true; continue; /* don't abandon the whole remove if just one art is missing */ } @@ -1217,7 +1222,7 @@ CAFRemoveMultArts(char *path, unsigned i if (tocent.Size == 0) { CAFError(CAF_ERR_ARTNOTHERE); - errorfound = true; + errorfound = true; continue; /* don't abandon the whole remove if just one art is missing */ } @@ -1272,11 +1277,11 @@ CAFRemoveMultArts(char *path, unsigned i return errorfound ? -1 : 0; } -/* +/* ** Do a fake stat() of a CAF-stored article. Both 'inpaths' and 'innfeed' ** find this functionality useful, so we've added a function to do this. ** Caveats: not all of the stat structure is filled in, only these items: -** st_mode, st_size, st_atime, st_ctime, st_mtime. (Note: +** st_mode, st_size, st_atime, st_ctime, st_mtime. (Note: ** atime==ctime==mtime always, as we don't track times of CAF reads.) */ @@ -1288,7 +1293,7 @@ CAFStatArticle(char *path, ARTNUM art, s CAFTOCENT tocent; if ( (fd = open(path, O_RDONLY)) < 0) { - /* + /* ** if ENOENT (not there), just call this "article not found", ** otherwise it's a more serious error and stash the errno. */ @@ -1335,13 +1340,13 @@ CAFStatArticle(char *path, ARTNUM art, s return 0; } -/* +/* ** Taken from the old 'cafclean' program. -** Function to clean a single CAF file. -** Possibly the ugliest function I've ever written in my life. +** Function to clean a single CAF file. +** Possibly the ugliest function I've ever written in my life. */ /* -** We try to keep the total TOC size this many times larger than the actual +** We try to keep the total TOC size this many times larger than the actual ** amount of TOC data in use so as not to have to reclean or compact the TOC ** so often. */ @@ -1409,7 +1414,7 @@ CAFClean(char *path, int verbose, double /* ** and then close and reopen the file, in case someone changed the ** file out from under us. - */ + */ close(fdin); } @@ -1427,7 +1432,7 @@ CAFClean(char *path, int verbose, double perror(path); return -1; } - + /* compute amount of actual data in file. */ datasize = statbuf.st_size - head.StartDataBlock; if (datasize <= 0) { @@ -1438,7 +1443,7 @@ CAFClean(char *path, int verbose, double } /* - ** Grumble, we need to read the TOC now even before we clean, just so + ** Grumble, we need to read the TOC now even before we clean, just so ** we can decide if a clean or a compaction is needed. */ @@ -1473,7 +1478,7 @@ CAFClean(char *path, int verbose, double free(newpath); return -1; } - + /* Scan to see what the new lower bound for CAF file should be. */ newlow = head.High + 1; @@ -1484,9 +1489,9 @@ CAFClean(char *path, int verbose, double } } - /* + /* ** if newlow is head.High+1, the TOC is completely empty and we can - ** just remove the entire file. + ** just remove the entire file. */ if (newlow == head.High + 1) { unlink(path); @@ -1498,12 +1503,12 @@ CAFClean(char *path, int verbose, double /* ** Ah. NOW we get to decide if we need a clean! - ** Clean if either + ** Clean if either ** 1) the absolute freespace threshold is crossed ** 2) the percent free threshold is crossed. ** 3) The CAF TOC is over 10% full (assume it needs to be expanded, ** so we force a clean) - ** Note that even if we do not need a clean, we may need a compaction + ** Note that even if we do not need a clean, we may need a compaction ** if the high article number is in the top nth of the TOC. */ @@ -1595,15 +1600,15 @@ CAFClean(char *path, int verbose, double */ #ifdef STATFUNCT if (STATFUNCT(fdin, &fsinfo) >= 0) { - /* compare avail # blocks to # blocks needed for current file. - ** # blocks needed is approximately - ** datasize/blocksize + (size of the TOC)/blocksize - ** + Head.BlockSize/blocksize, but we need to take rounding - ** into account. + /* compare avail # blocks to # blocks needed for current file. + ** # blocks needed is approximately + ** datasize/blocksize + (size of the TOC)/blocksize + ** + Head.BlockSize/blocksize, but we need to take rounding + ** into account. */ #define RoundIt(n) (CAFRoundOffsetUp((n), fsinfo.STATMULTI) / fsinfo.STATMULTI) - num_diskblocks_needed = RoundIt((head.High - head.Low + 1)*sizeof(CAFTOCENT)) + num_diskblocks_needed = RoundIt((head.High - head.Low + 1)*sizeof(CAFTOCENT)) + RoundIt(datasize - head.Free) + RoundIt(head.BlockSize); if (num_diskblocks_needed > (unsigned long) fsinfo.STATAVAIL) { if (verbose) { @@ -1617,7 +1622,7 @@ CAFClean(char *path, int verbose, double return 0; } } -#endif +#endif if (verbose) { printf("Am cleaning %s: Free=%lu (%f%%) %s\n", path, @@ -1694,7 +1699,7 @@ CAFClean(char *path, int verbose, double /* ** Loop over all arts in old TOC, copy arts that are still here to new - ** file and new TOC. + ** file and new TOC. */ for (tocp = tocarray, i = head.Low; i <= head.High; ++tocp, ++i) { @@ -1705,12 +1710,12 @@ CAFClean(char *path, int verbose, double newtocp->ModTime = tocp->ModTime; /* seek to right place in input. */ - fseeko(infile, (off_t) tocp->Offset, SEEK_SET); + fseeko(infile, (off_t) tocp->Offset, SEEK_SET); nbytes = tocp->Size; while (nbytes > 0) { ncur = (nbytes > BUFSIZ) ? BUFSIZ : nbytes; - if (fread(buf, sizeof(char), ncur, infile) < ncur + if (fread(buf, sizeof(char), ncur, infile) < ncur || fwrite(buf, sizeof(char), ncur, outfile) < ncur) { if (feof(infile)) { CAFError(CAF_ERR_BADFILE); @@ -1734,7 +1739,7 @@ CAFClean(char *path, int verbose, double startoffset += tocp->Size; newstartoffset = CAFRoundOffsetUp(startoffset, blocksize); /* fseeko(outfile, (off_t) startoffset, SEEK_SET); */ - /* but we don't want to call fseeko, since that seems to always + /* but we don't want to call fseeko, since that seems to always force a write(2) syscall, even when the new location would still be inside stdio's buffer. */ if (newstartoffset - startoffset > 0) { @@ -1752,7 +1757,7 @@ CAFClean(char *path, int verbose, double free(tocarray); /* don't need this guy anymore. */ free(zerobuff); - /* + /* ** set up new file header, TOC. ** this next fseeko might actually fail, because we have buffered stuff ** that might fail on write. @@ -1809,7 +1814,7 @@ CAFClean(char *path, int verbose, double free(newpath); return -1; } - + if (rename(newpath, path) < 0) { CAFError(CAF_ERR_IO); free(newtocarray); diff -Nurp inn-2.5.0/storage/timecaf/caf.h inn-2.5.1/storage/timecaf/caf.h --- inn-2.5.0/storage/timecaf/caf.h 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/storage/timecaf/caf.h 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,5 @@ -/* $Revision: 6783 $ +/* $Id: caf.h 8626 2009-09-07 09:06:42Z iulius $ +** ** Declarations needed for handling CAF (Crunched Article Files) ** Written by Richard Todd (rmtodd@mailhost.ecn.uoknor.edu) 3/24/96 */ @@ -28,34 +29,35 @@ typedef struct _CAFHEADER { #define CAF_DEFAULT_BLOCKSIZE 512 /* -** then the table of free blocks. The table is FreeZoneTabSize bytes +** Then the table of free blocks. The table is FreeZoneTabSize bytes ** long. First comes a "first-level" or "index" bitmap, taking up the ** space from the end of the CAFHEADER to the end of the first -** block, i.e. FreeZoneIndexBytes. The rest of the table is a big bitmap +** block, i.e. FreeZoneIndexSize. The rest of the table is a big bitmap ** listing free blocks in the 'data' portion of the CAF file. ** -** In the "index" bitmap: LSB of bitmap byte 0 is 1 if there are any 1s +** In the "index" bitmap: LSB of bitmap byte 0 is 1 if there are any 1s ** (free blocks) listed in the first block of the big bitmap, and 0 if there -** are no 1s in that block. The remaining bits of the index bitmap +** are no 1s in that block. The remaining bits of the index bitmap ** correspond to the remaining blocks of the big bitmap accordingly. -** The idea is that from the index bitmap one can tell which part of the -** main bitmap is likely to have free blocks w/o having to read the entire +** The idea is that from the index bitmap one can tell which part of the +** main bitmap is likely to have free blocks w/o having to read the entire ** main bitmap. ** ** As for the main bitmap, each bit is 1 if the corresponding data ** block (BlockSize bytes) is free. LSB of bitmap byte 0 corresponds ** to the block @ offset StartDataBlock, and all the rest follow on -** accordingly. +** accordingly. ** -** Note that the main part of the bitmap is *always* FreeZoneIndexByte*8 +** Note that the main part of the bitmap is *always* FreeZoneIndexSize*8 ** blocks long, no matter how big the CAF file is. The table of free blocks ** is almost always sparse. Also note that blocks past EOF in the CAF file -** are *not* considered free. If the CAF article write routines fail to -** find free space in the fre block bitmaps, they will always attempt to -** extend the CAF file instead. +** are *not* considered free. If the CAF article write routines fail to +** find free space in the free block bitmaps, they will always attempt to +** extend the CAF file instead. */ -#define CAF_DEFAULT_FZSIZE (512-sizeof(CAFHEADER)) +#define CAF_DEFAULT_FZSIZE (CAF_DEFAULT_BLOCKSIZE-sizeof(CAFHEADER)) +#define CAF_MIN_FZSIZE 128 /* ** (Note: the CAFBITMAP structure isn't what's actually stored on disk @@ -86,9 +88,9 @@ typedef struct _CAFBMB { char *BMBBits; } CAFBMB; -/* +/* ** Next in the file are the TOC (Table of Contents) entries. Each TOC -** entry describes an article. +** entry describes an article. */ typedef struct _CAFTOCENT { @@ -98,19 +100,19 @@ typedef struct _CAFTOCENT { } CAFTOCENT; /* -** and then after the NumSlots TOC Entries, the actual articles, one after -** another, always starting at offsets == 0 mod BlockSize +** And then after the NumSlots TOC Entries, the actual articles, one after +** another, always starting at offsets == 0 mod BlockSize. */ /* -** Number of slots to put in TOC by default. Can be raised if we ever get -** more than 256K articles in a newsgroup (frightening thought). +** Number of slots to put in TOC by default. Can be raised if we ever get +** more than 256*1024=262144 articles in a file (frightening thought). */ #define CAF_DEFAULT_TOC_SIZE (256 * 1024) /* -** Default name for CAF file in the news spool dir for a given newsgroup. +** Default extension name for CAF file in the news spool dir. */ #define CAF_NAME "CF" @@ -126,15 +128,18 @@ extern int CAFRemoveMultArts(char *cfpat extern int CAFStatArticle(char *path, ARTNUM art, struct stat *st); #ifdef CAF_INNARDS -/* functions used internally by caf.c, and by the cleaner program, and cafls - but probably aren't useful/desirable to be used by others. */ +/* +** Functions used internally by caf.c, and by the cleaner program, and cafls +** but probably aren't useful/desirable to be used by others. +*/ extern int CAFOpenReadTOC(char *cfpath, CAFHEADER *ch, CAFTOCENT **tocpp); extern int CAFReadHeader(int fd, CAFHEADER *h); extern off_t CAFRoundOffsetUp(off_t offt, unsigned int bsize); extern CAFBITMAP * CAFReadFreeBM(int fd, CAFHEADER *h); extern void CAFDisposeBitmap(CAFBITMAP *cbm); + /* -** note! CAFIsBlockFree needs the fd, since blocks of the free bitmap may +** Note: CAFIsBlockFree needs the fd, since blocks of the free bitmap may ** need to be fetched from disk. */ extern int CAFIsBlockFree(CAFBITMAP *bm, int fd, off_t block); diff -Nurp inn-2.5.0/storage/timecaf/timecaf.c inn-2.5.1/storage/timecaf/timecaf.c --- inn-2.5.0/storage/timecaf/timecaf.c 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/storage/timecaf/timecaf.c 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: timecaf.c 7960 2008-08-24 09:22:42Z iulius $ +/* $Id: timecaf.c 8626 2009-09-07 09:06:42Z iulius $ ** ** Like the timehash storage method (and heavily inspired by it), but uses ** the CAF library to store multiple articles in a single file. @@ -35,9 +35,9 @@ typedef struct { DIR *sec; /* open handle on the 2nd level directory */ DIR *ter; /* open handle on 3rd level dir. */ struct dirent *topde; /* last entry we got from top */ - struct dirent *secde; /* last entry we got from sec */ - struct dirent *terde; /* last entry we got from sec */ - CAFTOCENT *curtoc; + struct dirent *secde; /* last entry we got from sec */ + struct dirent *terde; /* last entry we got from sec */ + CAFTOCENT *curtoc; ARTNUM curartnum; CAFHEADER curheader; } PRIV_TIMECAF; @@ -56,8 +56,8 @@ static unsigned int NumDeleteArtnums, Ma typedef enum {FIND_DIR, FIND_CAF, FIND_TOPDIR} FINDTYPE; /* -** Structures for the cache for stat information (to make expireover etc. -** faster. +** Structures for the cache for stat information (to make expireover etc.) +** faster. ** ** The first structure contains the TOC info for a single CAF file. The 2nd ** one has pointers to the info for up to 256 CAF files, indexed @@ -97,63 +97,75 @@ typedef struct caftocl3cache CAFTOCL3CAC static CAFTOCL3CACHE *TOCCache[256]; /* indexed by storage class! */ static int TOCCacheHits, TOCCacheMisses; - -static TOKEN MakeToken(time_t now, int seqnum, STORAGECLASS class, TOKEN *oldtoken) { + +static TOKEN MakeToken(time_t now, ARTNUM seqnum, STORAGECLASS class, TOKEN *oldtoken) { TOKEN token; - unsigned int i; - unsigned short s; + uint32_t i; + uint16_t s; + /* The token is @04nn00aabbccyyyyxxxx0000000000000000@ + * where "04" is the timecaf method number, + * "nn" the hexadecimal value of the storage class, + * "aabbccdd" the arrival time in hexadecimal (dd is unused), + * "xxxxyyyy" the hexadecimal sequence number seqnum. */ if (oldtoken == (TOKEN *)NULL) memset(&token, '\0', sizeof(token)); - else + else memcpy(&token, oldtoken, sizeof(token)); token.type = TOKEN_TIMECAF; token.class = class; i = htonl(now); memcpy(token.token, &i, sizeof(i)); - if (sizeof(i) > 4) - memmove(token.token, &token.token[sizeof(i) - 4], 4); - s = htons(seqnum); - memcpy(&token.token[4], &s + (sizeof(s) - 2), 2); + s = htons(seqnum & 0xffff); + memcpy(&token.token[sizeof(i)], &s, sizeof(s)); + s = htons((seqnum >> 16) & 0xffff); + memcpy(&token.token[sizeof(i)+sizeof(s)], &s, sizeof(s)); return token; } -static void BreakToken(TOKEN token, int *now, int *seqnum) { - unsigned int i; - unsigned short s = 0; +static void BreakToken(TOKEN token, time_t *now, ARTNUM *seqnum) { + uint32_t i; + uint16_t s1 = 0; + uint16_t s2 = 0; memcpy(&i, token.token, sizeof(i)); - memcpy(&s, &token.token[4], sizeof(s)); + memcpy(&s1, &token.token[sizeof(i)], sizeof(s1)); + memcpy(&s2, &token.token[sizeof(i)+sizeof(s1)], sizeof(s2)); *now = ntohl(i); - *seqnum = (int)ntohs(s); + *seqnum = (ARTNUM)((ntohs(s2) << 16) + ntohs(s1)); } -/* +/* ** Note: the time here is really "time>>8", i.e. a timestamp that's been ** shifted right by 8 bits. */ -static char *MakePath(int now, const STORAGECLASS class) { +static char *MakePath(time_t now, const STORAGECLASS class) { char *path; size_t length; - - /* innconf->patharticles + '/timecaf-zz/xx/xxxx.CF' */ + + /* innconf->patharticles + '/timecaf-nn/bb/aacc.CF' + * where "nn" is the hexadecimal value of the storage class, + * "aabbccdd" the arrival time in hexadecimal (dd is unused). */ length = strlen(innconf->patharticles) + 32; path = xmalloc(length); snprintf(path, length, "%s/timecaf-%02x/%02x/%02x%02x.CF", innconf->patharticles, class, - (now >> 8) & 0xff, (now >> 16) & 0xff, now & 0xff); + (unsigned int)((now >> 8) & 0xff), + (unsigned int)((now >> 16) & 0xff), + (unsigned int)(now & 0xff)); return path; } static TOKEN *PathNumToToken(char *path, ARTNUM artnum) { int n; - unsigned int t1, t2, class; - unsigned int timestamp; + unsigned int t1, t2; + STORAGECLASS class; + time_t timestamp; static TOKEN token; - n = sscanf(path, "timecaf-%02x/%02x/%04x.CF", &class, &t1, &t2); + n = sscanf(path, "timecaf-%02x/%02x/%04x.CF", (unsigned int *)&class, &t1, &t2); if (n != 3) return (TOKEN *)NULL; timestamp = ((t1 << 8) & 0xff00) | ((t2 << 8) & 0xff0000) | ((t2 << 0) & 0xff); @@ -184,11 +196,11 @@ bool timecaf_init(SMATTRIBUTE *attr) { ** Routines for managing the 'TOC cache' (cache of TOCs of various CAF files) ** ** Attempt to look up a given TOC entry in the cache. Takes the timestamp -** as arguments. +** as arguments. */ static CAFTOCCACHEENT * -CheckTOCCache(int timestamp, int tokenclass) +CheckTOCCache(time_t timestamp, STORAGECLASS tokenclass) { CAFTOCL2CACHE *l2; CAFTOCL1CACHE *l1; @@ -217,7 +229,7 @@ CheckTOCCache(int timestamp, int tokencl ** cache. */ static CAFTOCCACHEENT * -AddTOCCache(int timestamp, CAFTOCENT *toc, CAFHEADER head, int tokenclass) +AddTOCCache(time_t timestamp, CAFTOCENT *toc, CAFHEADER head, STORAGECLASS tokenclass) { CAFTOCL2CACHE *l2; CAFTOCL1CACHE *l1; @@ -255,11 +267,11 @@ AddTOCCache(int timestamp, CAFTOCENT *to } /* -** Do stating of an article, going thru the TOC cache if possible. +** Do stating of an article, going thru the TOC cache if possible. */ static ARTHANDLE * -StatArticle(int timestamp, ARTNUM artnum, int tokenclass) +StatArticle(time_t timestamp, ARTNUM artnum, STORAGECLASS tokenclass) { CAFTOCCACHEENT *cent; CAFTOCENT *toc; @@ -284,13 +296,13 @@ StatArticle(int timestamp, ARTNUM artnum cent = AddTOCCache(timestamp, toc, head, tokenclass); free(path); } - + /* check current TOC for the given artnum. */ if (artnum < cent->header.Low || artnum > cent->header.High) { SMseterror(SMERR_NOENT, NULL); return NULL; } - + tocentry = &(cent->toc[artnum - cent->header.Low]); if (tocentry->Size == 0) { /* no article with that article number present */ @@ -322,7 +334,7 @@ TOKEN timecaf_store(const ARTHANDLE arti char *path; char *p; time_t now; - int timestamp; + time_t timestamp; TOKEN token; int fd; ssize_t result; @@ -367,7 +379,7 @@ TOKEN timecaf_store(const ARTHANDLE arti token.type = TOKEN_EMPTY; return token; } - } + } } else { warn("timecaf: could not OpenArtWrite %s/%ld: %s", path, art, CAFErrorStr()); @@ -405,14 +417,14 @@ TOKEN timecaf_store(const ARTHANDLE arti CloseOpenFile(&WritingFile); return token; } - if (CAFFinishArtWrite(fd) < 0) { + if (CAFFinishArtWrite(fd) < 0) { SMseterror(SMERR_UNDEFINED, NULL); warn("timecaf: error writing %s: %s", path, CAFErrorStr()); token.type = TOKEN_EMPTY; CloseOpenFile(&WritingFile); return token; } - + return MakeToken(timestamp, art, class, article.token); } @@ -500,13 +512,13 @@ static ARTHANDLE *OpenArticle(const char private->topde = NULL; private->secde = NULL; private->terde = NULL; - + if (amount == RETR_ALL) { art->data = private->artdata; art->len = private->artlen; return art; } - + if ((p = wire_findbody(private->artdata, private->artlen)) == NULL) { SMseterror(SMERR_NOBODY, NULL); if (innconf->articlemmap) @@ -542,13 +554,13 @@ static ARTHANDLE *OpenArticle(const char } ARTHANDLE *timecaf_retrieve(const TOKEN token, const RETRTYPE amount) { - int timestamp; - int artnum; + time_t timestamp; + ARTNUM artnum; char *path; ARTHANDLE *art; static TOKEN ret_token; time_t now; - + if (token.type != TOKEN_TIMECAF) { SMseterror(SMERR_INTERNAL, NULL); return NULL; @@ -557,15 +569,15 @@ ARTHANDLE *timecaf_retrieve(const TOKEN BreakToken(token, ×tamp, &artnum); /* - ** Do a possible shortcut on RETR_STAT requests, going thru the "TOC cache" - ** we mentioned above. We only try to go thru the TOC Cache under these + ** Do a possible shortcut on RETR_STAT requests, going through the "TOC cache" + ** we mentioned above. We only try to go through the TOC Cache under these ** conditions: - ** 1) SMpreopen is true (so we're "preopening" the TOCs.) + ** 1) SMpreopen is true (so we're "preopening" the TOCs). ** 2) the timestamp is older than the timestamp corresponding to current - ** time. Any timestamp that matches current time (to within 256 secondsf - ** would be in a CAF file that innd is actively + ** time. Any timestamp that matches current time (to within 256 seconds) + ** would be in a CAF file that innd is actively ** writing, in which case we would not want to cache the TOC for that - ** CAF file. + ** CAF file. */ if (SMpreopen && amount == RETR_STAT) { @@ -578,7 +590,7 @@ ARTHANDLE *timecaf_retrieve(const TOKEN path = MakePath(timestamp, token.class); if ((art = OpenArticle(path, artnum, amount)) != (ARTHANDLE *)NULL) { art->arrived = timestamp<<8; /* XXX not quite accurate arrival time, - ** but getting a more accurate one would + ** but getting a more accurate one would ** require more fiddling with CAF innards. */ ret_token = token; @@ -593,7 +605,7 @@ void timecaf_freearticle(ARTHANDLE *arti if (!article) return; - + if (article->private) { private = (PRIV_TIMECAF *)article->private; if (innconf->articlemmap) @@ -606,7 +618,7 @@ void timecaf_freearticle(ARTHANDLE *arti closedir(private->sec); if (private->ter) closedir(private->ter); - if (private->curtoc) + if (private->curtoc) free(private->curtoc); free(private); } @@ -619,7 +631,7 @@ static void DoCancels(void) { if (DeletePath != NULL) { if (NumDeleteArtnums != 0) { - /* + /* ** Murgle. If we are trying to cancel something out of the ** currently open-for-writing file, we need to close it before ** doing CAFRemove... @@ -637,10 +649,10 @@ DoCancels(void) { DeletePath = NULL; } } - + bool timecaf_cancel(TOKEN token) { - int now; - int seqnum; + time_t now; + ARTNUM seqnum; char *path; BreakToken(token, &now, &seqnum); @@ -670,7 +682,7 @@ bool timecaf_cancel(TOKEN token) { static struct dirent *FindDir(DIR *dir, FINDTYPE type) { struct dirent *de; - + while ((de = readdir(dir)) != NULL) { if (type == FIND_TOPDIR) if ((strlen(de->d_name) == 10) && @@ -820,7 +832,7 @@ timecaf_next(ARTHANDLE *article, const R newpriv->curheader = priv.curheader; newpriv->curtoc = priv.curtoc; newpriv->curartnum = priv.curartnum; - + snprintf(path, length, "%s/%s/%s", priv.topde->d_name, priv.secde->d_name, priv.terde->d_name); art->token = PathNumToToken(path, priv.curartnum); art->arrived = priv.curtoc[priv.curartnum - priv.curheader.Low].ModTime; diff -Nurp inn-2.5.0/storage/timecaf/timecaf.h inn-2.5.1/storage/timecaf/timecaf.h --- inn-2.5.0/storage/timecaf/timecaf.h 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/storage/timecaf/timecaf.h 2009-10-12 11:24:04.000000000 -0700 @@ -1,8 +1,8 @@ -/* $Id: timecaf.h 6530 2003-10-21 00:31:33Z rra $ +/* $Id: timecaf.h 8623 2009-09-07 08:27:42Z 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. +** single file. */ #ifndef __TIMECAF_H__ diff -Nurp inn-2.5.0/storage/timehash/timehash.c inn-2.5.1/storage/timehash/timehash.c --- inn-2.5.0/storage/timehash/timehash.c 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/storage/timehash/timehash.c 2009-10-12 11:24:04.000000000 -0700 @@ -1,6 +1,6 @@ -/* $Id: timehash.c 7960 2008-08-24 09:22:42Z iulius $ +/* $Id: timehash.c 8619 2009-09-07 08:24:11Z iulius $ ** -** Timehash based storage method. +** Storage manager module for timehash method. */ #include "config.h" @@ -27,7 +27,7 @@ typedef struct { int len; /* Length of the file */ DIR *top; /* Open handle on the top level directory */ DIR *sec; /* Open handle on the 2nd level directory */ - DIR *ter; /* Open handle on the third level directory */ + DIR *ter; /* Open handle on the third level directory */ DIR *artdir; /* Open handle on the article directory */ struct dirent *topde; /* dirent entry for the last entry retrieved in top */ struct dirent *secde; /* dirent entry for the last entry retrieved in sec */ @@ -40,55 +40,65 @@ static int SeqNum = 0; static TOKEN MakeToken(time_t now, int seqnum, STORAGECLASS class, TOKEN *oldtoken) { TOKEN token; - unsigned int i; - unsigned short s; + uint32_t i; + uint16_t s; + /* The token is @02nnaabbccddyyyy00000000000000000000@ + * where "02" is the timehash method number, + * "nn" the hexadecimal value of the storage class, + * "aabbccdd" the arrival time in hexadecimal, + * "yyyy" the hexadecimal sequence number seqnum. */ if (oldtoken == (TOKEN *)NULL) memset(&token, '\0', sizeof(token)); - else + else memcpy(&token, oldtoken, sizeof(token)); token.type = TOKEN_TIMEHASH; token.class = class; i = htonl(now); memcpy(token.token, &i, sizeof(i)); - if (sizeof(i) > 4) - memmove(token.token, &token.token[sizeof(i) - 4], 4); - s = htons(seqnum); - memcpy(&token.token[4], &s + (sizeof(s) - 2), 2); + s = htons(seqnum & 0xffff); + memcpy(&token.token[sizeof(i)], &s, sizeof(s)); return token; } static void BreakToken(TOKEN token, time_t *now, int *seqnum) { - unsigned int i; - unsigned short s = 0; + uint32_t i; + uint16_t s = 0; memcpy(&i, token.token, sizeof(i)); - memcpy(&s, &token.token[4], sizeof(s)); + memcpy(&s, &token.token[sizeof(i)], sizeof(s)); *now = ntohl(i); *seqnum = (int)ntohs(s); } -static char *MakePath(int now, int seqnum, const STORAGECLASS class) { +static char *MakePath(time_t now, int seqnum, const STORAGECLASS class) { char *path; size_t length; - - /* innconf->patharticles + '/time-zz/xx/xx/yyyy-xxxx' */ + + /* innconf->patharticles + '/time-nn/bb/cc/yyyy-aadd' + * where "nn" is the hexadecimal value of the storage class, + * "aabbccdd" the arrival time in hexadecimal, + * "yyyy" the hexadecimal sequence number seqnum. */ length = strlen(innconf->patharticles) + 32; path = xmalloc(length); snprintf(path, length, "%s/time-%02x/%02x/%02x/%04x-%04x", innconf->patharticles, class, - (now >> 16) & 0xff, (now >> 8) & 0xff, seqnum, - (now & 0xff) | ((now >> 16 & 0xff00))); + (unsigned int)((now >> 16) & 0xff), + (unsigned int)((now >> 8) & 0xff), + seqnum, + (unsigned int)((now & 0xff) | ((now >> 16 & 0xff00)))); return path; } static TOKEN *PathToToken(char *path) { int n; - unsigned int t1, t2, t3, seqnum, class; + unsigned int t1, t2, t3, seqnum; + STORAGECLASS class; time_t now; static TOKEN token; - n = sscanf(path, "time-%02x/%02x/%02x/%04x-%04x", &class, &t1, &t2, &seqnum, &t3); + n = sscanf(path, "time-%02x/%02x/%02x/%04x-%04x", + (unsigned int *)&class, &t1, &t2, &seqnum, &t3); if (n != 5) return (TOKEN *)NULL; now = ((t1 << 16) & 0xff0000) | ((t2 << 8) & 0xff00) | ((t3 << 16) & 0xff000000) | (t3 & 0xff); @@ -216,7 +226,7 @@ static ARTHANDLE *OpenArticle(const char free(art); return NULL; } - + private = xmalloc(sizeof(PRIV_TIMEHASH)); art->private = (void *)private; private->len = sb.st_size; @@ -252,13 +262,13 @@ static ARTHANDLE *OpenArticle(const char private->topde = NULL; private->secde = NULL; private->terde = NULL; - + if (amount == RETR_ALL) { art->data = private->base; art->len = private->len; return art; } - + if ((p = wire_findbody(private->base, private->len)) == NULL) { SMseterror(SMERR_NOBODY, NULL); if (innconf->articlemmap) @@ -299,7 +309,7 @@ ARTHANDLE *timehash_retrieve(const TOKEN char *path; ARTHANDLE *art; static TOKEN ret_token; - + if (token.type != TOKEN_TIMEHASH) { SMseterror(SMERR_INTERNAL, NULL); return NULL; @@ -321,7 +331,7 @@ void timehash_freearticle(ARTHANDLE *art if (!article) return; - + if (article->private) { private = (PRIV_TIMEHASH *)article->private; if (innconf->articlemmap) @@ -360,7 +370,7 @@ bool timehash_cancel(TOKEN token) { static struct dirent *FindDir(DIR *dir, FINDTYPE type) { struct dirent *de; - + while ((de = readdir(dir)) != NULL) { if (type == FIND_TOPDIR) if ((strlen(de->d_name) == 7) && @@ -528,7 +538,7 @@ timehash_printfiles(FILE *file, TOKEN to time_t now; int seqnum; char *path; - + BreakToken(token, &now, &seqnum); path = MakePath(now, seqnum, token.class); fprintf(file, "%s\n", path); diff -Nurp inn-2.5.0/storage/timehash/timehash.h inn-2.5.1/storage/timehash/timehash.h --- inn-2.5.0/storage/timehash/timehash.h 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/storage/timehash/timehash.h 2009-10-12 11:24:04.000000000 -0700 @@ -1,6 +1,6 @@ -/* $Id: timehash.h 6530 2003-10-21 00:31:33Z rra $ +/* $Id: timehash.h 8619 2009-09-07 08:24:11Z iulius $ ** -** timehash based storing method header +** Storage manager module header for timehash method. */ #ifndef __TIMEHASH_H__ diff -Nurp inn-2.5.0/storage/tradindexed/tdx-structure.h inn-2.5.1/storage/tradindexed/tdx-structure.h --- inn-2.5.0/storage/tradindexed/tdx-structure.h 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/storage/tradindexed/tdx-structure.h 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: tdx-structure.h 7585 2006-11-21 09:37:51Z eagle $ +/* $Id: tdx-structure.h 8659 2009-10-10 07:59:50Z iulius $ ** ** Data structures for the tradindexed overview method. ** @@ -30,7 +30,7 @@ ** stored in /n/a/n/news.announce.newgroups.{IDX,DAT}. The ** .DAT file contains the individual overview entries, one per line, stored ** in wire format (in other words, suitable for dumping directly across the -** network to a client in response to an XOVER command). The overview data +** network to a client in response to an OVER command). The overview data ** stored in that file may be out of order. ** ** The .IDX file consists of a series of struct index_entry's, one for each diff -Nurp inn-2.5.0/storage/tradspool/README.tradspool inn-2.5.1/storage/tradspool/README.tradspool --- inn-2.5.0/storage/tradspool/README.tradspool 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/storage/tradspool/README.tradspool 2009-10-12 11:24:04.000000000 -0700 @@ -1,11 +1,11 @@ This storage manager attempts to implement the 'traditional' INN storage -layout, i.e a message crossposted to alt.fan.james-brister and rec.pets.wombats +layout, i.e. a message crossposted to alt.fan.james-brister and rec.pets.wombats will be written as a file in - /alt/fan/james-brister/nnnnn + /alt/fan/james-brister/nnnnn and a symlink pointing to the above file in - /rec/pets/wombats/mmmmmm -where nnnnn and mmmmmm are the article numbers that article has in each of -those two newsgroups. (Actually in the traditional spool form the link + /rec/pets/wombats/mmmmmm +where nnnnn and mmmmmm are the article numbers that article has in each of +those two newsgroups. (Actually, in the traditional spool form, the link could be either a symlink or a regular link). The storage token data for a tradspool stored article is a 16-byte block. @@ -14,8 +14,8 @@ telling what the name of the "primary" n second one telling what article number the article has in that newsgroup. The mapping between newsgroup name and number is given by a database in the file - /ts.ng.db -; this file is a straight ASCII file listing newsgroup names and + /tradspool.map +This file is a straight ASCII file listing newsgroup names and numbers, and will be automatically generated by innd if one does not exist already. This database is read in automatically by any program that uses this storage manager module, and is updated by innd whenever @@ -26,12 +26,12 @@ the database become corrupted, simply sh database, and doing a makehistory will recreate the database. It should, in principle, be possible to write a perl script to recreate just the database from just the spool files and history files without -doing a full makehistory. +doing a full makehistory. -Currently the storage manager code works, although not perhaps as fast +Currently the storage manager code works, although not perhaps as fast as it could. The expiration code is somewhat unwieldy; since the storage -token does not have enough space to hold all the newsgroups an article +token does not have enough space to hold all the newsgroups an article is posted to, when expiration is done SMCancel() has to open the article -to find out what other newsgroups the article is posted to. Eurggh. -Suggestions for a better scheme are welcome. +to find out what other newsgroups the article is posted to. Eurggh. +Suggestions for a better scheme are welcome. diff -Nurp inn-2.5.0/storage/tradspool/tradspool.c inn-2.5.1/storage/tradspool/tradspool.c --- inn-2.5.0/storage/tradspool/tradspool.c 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/storage/tradspool/tradspool.c 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: tradspool.c 7960 2008-08-24 09:22:42Z iulius $ +/* $Id: tradspool.c 8617 2009-09-07 08:21:55Z iulius $ ** ** Storage manager module for traditional spool format. */ @@ -16,7 +16,7 @@ /* Needed for htonl() and friends on AIX 4.1. */ #include - + #include "inn/innconf.h" #include "inn/messages.h" #include "inn/qio.h" @@ -38,7 +38,8 @@ typedef struct { } PRIV_TRADSPOOL; /* -** The 64-bit hashed representation of a ng name that gets stashed in each token. +** The 64-bit hashed representation of a newsgroup name that gets stashed +** in each token. */ #define HASHEDNGLEN 8 @@ -74,11 +75,11 @@ NGTENT *NGTable[NGT_SIZE]; unsigned long MaxNgNumber = 0; NGTREENODE *NGTree; -bool NGTableUpdated; /* set to true if we've added any entries since reading +bool NGTableUpdated; /* set to true if we've added any entries since reading in the database file */ -/* -** Convert all .s to /s in a newsgroup name. Modifies the passed string +/* +** Convert all .s to /s in a newsgroup name. Modifies the passed string ** inplace. */ static void @@ -92,14 +93,14 @@ DeDotify(char *ngname) { } /* -** Hash a newsgroup name to an 8-byte. Basically, we convert all .s to +** Hash a newsgroup name to an 8-byte. Basically, we convert all .s to ** /s (so it doesn't matter if we're passed the spooldir name or newsgroup -** name) and then call Hash to MD5 the mess, then take 4 bytes worth of +** name) and then call Hash to MD5 the mess, then take 4 bytes worth of ** data from the front of the hash. This should be good enough for our -** purposes. +** purposes. */ -static HASHEDNG +static HASHEDNG HashNGName(char *ng) { HASH hash; HASHEDNG return_hash; @@ -208,7 +209,7 @@ AddNG(char *ng, unsigned long number) { warn("tradspool: AddNG: hash collision %s/%s", ngtp->ngname, p); free(p); return; -#endif +#endif } else { /* not found yet, so advance to next entry in chain */ ngtpp = &(ngtp->next); @@ -244,7 +245,7 @@ FindNGByName(char *ngname) { ngtp = ngtp->next; } free(p); - return NULL; + return NULL; } /* find a newsgroup/spooldir name, given only the newsgroup number */ @@ -267,7 +268,7 @@ FindNGByNum(unsigned long ngnumber) { } } /* not in tree, return NULL */ - return NULL; + return NULL; } #define _PATH_TRADSPOOLNGDB "tradspool.map" @@ -319,10 +320,10 @@ DumpDB(void) return; } -/* -** init NGTable from saved database file and from active. Note that -** entries in the database file get added first, and get their specifications -** of newsgroup number from there. +/* +** Init NGTable from saved database file and from active. Note that +** entries in the database file get added first, and get their specifications +** of newsgroup number from there. */ static bool @@ -400,18 +401,18 @@ InitNGTable(void) ** set NGTableUpdated to false; that way we know if the load of active or ** any AddNGs later on did in fact add new entries to the db. */ - NGTableUpdated = false; + NGTableUpdated = false; if (!SMopenmode) /* don't read active unless write mode. */ return true; - return ReadActiveFile(); + return ReadActiveFile(); } -/* +/* ** Routine called to check every so often to see if we need to reload the ** database and add in any new groups that have been added. This is primarily ** for the benefit of innfeed in funnel mode, which otherwise would never -** get word that any new newsgroups had been added. +** get word that any new newsgroups had been added. */ #define RELOAD_TIME_CHECK 600 @@ -468,20 +469,24 @@ MakeToken(char *ng, unsigned long artnum NGTENT *ngtp; unsigned long num; + /* The token is @05nnxxxxxxxxyyyyyyyy0000000000000000@ + * where "05" is the tradspool method number, + * "nn" the hexadecimal value of the storage class, + * "xxxxxxxx" the name of the primary newsgroup (as defined + * in /tradspool.map), + * "yyyyyyyy" the article number in the primary newsgroup. */ memset(&token, '\0', sizeof(token)); token.type = TOKEN_TRADSPOOL; token.class = class; - /* - ** if not already in the NG Table, be sure to add this ng! This way we - ** catch things like newsgroups added since startup. - */ + /* If not already in the NG Table, be sure to add this ng! This way we + * catch things like newsgroups added since startup. */ if ((ngtp = FindNGByName(ng)) == NULL) { - AddNG(ng, 0); - DumpDB(); /* flush to disk so other programs can see the change */ - ngtp = FindNGByName(ng); - } + AddNG(ng, 0); + DumpDB(); /* Flush to disk so other programs can see the change. */ + ngtp = FindNGByName(ng); + } num = ngtp->ngnumber; num = htonl(num); @@ -492,8 +497,8 @@ MakeToken(char *ng, unsigned long artnum return token; } -/* -** Convert a token back to a pathname. +/* +** Convert a token back to a pathname. */ static char * TokenToPath(TOKEN token) { @@ -502,6 +507,10 @@ TokenToPath(TOKEN token) { char *ng, *path; size_t length; + /* innconf->patharticles + '/news/group/path/yyyyyyyy' + * where "news/group/path" is the path of the primary newsgroup + * (as defined in /tradspool.map), + * "yyyyyyyy" the article number in the primary newsgroup. */ CheckNeedReloadDB(false); memcpy(&ngnum, &token.token[0], sizeof(ngnum)); @@ -524,8 +533,8 @@ TokenToPath(TOKEN token) { } /* -** Crack an Xref line apart into separate strings, each of the form "ng:artnum". -** Return in "num" the number of newsgroups found. +** Crack an Xref: line apart into separate strings, each of the form "ng:artnum". +** Return in "num" the number of newsgroups found. */ static char ** CrackXref(char *xref, unsigned int *lenp) { @@ -580,7 +589,7 @@ tradspool_store(const ARTHANDLE article, unsigned int i; size_t length, nonwflen; - memset(&token, 0, sizeof(token)); + memset(&token, 0, sizeof(token)); xrefhdr = article.groups; if ((xrefs = CrackXref(xrefhdr, &numxrefs)) == NULL || numxrefs == 0) { token.type = TOKEN_EMPTY; @@ -601,7 +610,7 @@ tradspool_store(const ARTHANDLE article, ng = xrefs[0]; DeDotify(ng); artnum = atol(p); - + token = MakeToken(ng, artnum, class); length = strlen(innconf->patharticles) + strlen(ng) + 32; @@ -669,11 +678,8 @@ tradspool_store(const ARTHANDLE article, } close(fd); - /* - ** blah, this is ugly. Have to make symlinks under other pathnames for - ** backwards compatiblility purposes. - */ - + /* Blah, this is ugly. Have to make symlinks under other pathnames for + * backwards compatiblility purposes. */ if (numxrefs > 1) { for (i = 1; i < numxrefs ; ++i) { if ((p = strchr(xrefs[i], ':')) == NULL) continue; @@ -826,7 +832,7 @@ OpenArticle(const char *path, RETRTYPE a } } close(fd); - + private->ngtp = NULL; private->curdir = NULL; private->curdirname = NULL; @@ -837,7 +843,7 @@ OpenArticle(const char *path, RETRTYPE a art->len = private->artlen; return art; } - + if (((p = wire_findbody(private->artbase, private->artlen)) == NULL)) { if (private->mmapped) munmap(private->artbase, private->artlen); @@ -872,7 +878,7 @@ OpenArticle(const char *path, RETRTYPE a return NULL; } - + ARTHANDLE * tradspool_retrieve(const TOKEN token, const RETRTYPE amount) { char *path; @@ -918,7 +924,7 @@ tradspool_freearticle(ARTHANDLE *article free(article); } -bool +bool tradspool_cancel(TOKEN token) { char **xrefs; char *xrefhdr; @@ -936,12 +942,10 @@ tradspool_cancel(TOKEN token) { free(path); return false; } - /* - ** Ooooh, this is gross. To find the symlinks pointing to this article, - ** we open the article and grab its Xref line (since the token isn't long - ** enough to store this info on its own). This is *not* going to do - ** good things for performance of fastrm... -- rmtodd - */ + /* Ooooh, this is gross. To find the symlinks pointing to this article, + * we open the article and grab its Xref: line (since the token isn't long + * enough to store this info on its own). This is *not* going to do + * good things for performance of fastrm... -- rmtodd */ if ((article = OpenArticle(path, RETR_HEAD)) == NULL) { free(path); SMseterror(SMERR_UNDEFINED, NULL); @@ -995,7 +999,7 @@ tradspool_cancel(TOKEN token) { return result; } - + /* ** Find entries for possible articles in dir. "dir" (directory name "dirname"). ** The dirname is needed so we can do stats in the directory to disambiguate @@ -1081,10 +1085,8 @@ tradspool_next(ARTHANDLE *article, const priv.curdirname = NULL; } - /* - ** advance ngtp to the next entry, if it exists, otherwise start - ** searching down another ngtable hashchain. - */ + /* Advance ngtp to the next entry, if it exists, otherwise start + * searching down another ngtable hashchain. */ while (priv.ngtp == NULL || (priv.ngtp = priv.ngtp->next) == NULL) { /* ** note that at the start of a search nextindex is -1, so the inc. @@ -1212,7 +1214,7 @@ tradspool_next(ARTHANDLE *article, const newpriv->curdir = priv.curdir; newpriv->curdirname = priv.curdirname; newpriv->ngtp = priv.ngtp; - + if ((sub = SMgetsub(*art)) == NULL || sub->type != TOKEN_TRADSPOOL) { /* maybe storage.conf is modified, after receiving article */ token = MakeToken(priv.ngtp->ngname, artnum, 0); @@ -1257,7 +1259,7 @@ bool tradspool_ctl(PROBETYPE type, TOKEN unsigned long artnum; char *ng, *p; - switch (type) { + switch (type) { case SMARTNGNUM: if ((ann = (struct artngnum *)value) == NULL) return false; @@ -1281,7 +1283,7 @@ bool tradspool_ctl(PROBETYPE type, TOKEN return true; default: return false; - } + } } bool diff -Nurp inn-2.5.0/storage/tradspool/tradspool.h inn-2.5.1/storage/tradspool/tradspool.h --- inn-2.5.0/storage/tradspool/tradspool.h 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/storage/tradspool/tradspool.h 2009-10-12 11:24:04.000000000 -0700 @@ -1,6 +1,6 @@ -/* -** $Id: tradspool.h 6530 2003-10-21 00:31:33Z rra $ -** tradspool -- storage manager for traditional spool format. +/* $Id: tradspool.h 8617 2009-09-07 08:21:55Z iulius $ +** +** Storage manager module header for traditional spool format. */ #ifndef __TRADSPOOL_H__ diff -Nurp inn-2.5.0/storage/trash/trash.c inn-2.5.1/storage/trash/trash.c --- inn-2.5.0/storage/trash/trash.c 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/storage/trash/trash.c 2009-10-12 11:24:04.000000000 -0700 @@ -1,6 +1,6 @@ -/* $Id: trash.c 7585 2006-11-21 09:37:51Z eagle $ +/* $Id: trash.c 8618 2009-09-07 08:23:47Z iulius $ ** -** Trashing articles method +** Storage manager module for trash method. */ #include "config.h" #include "clibrary.h" @@ -13,8 +13,8 @@ bool trash_init(SMATTRIBUTE *attr) { if (attr == NULL) { - SMseterror(SMERR_INTERNAL, "attr is NULL"); - return false; + SMseterror(SMERR_INTERNAL, "attr is NULL"); + return false; } attr->selfexpire = true; attr->expensivestat = false; @@ -27,10 +27,10 @@ trash_store(const ARTHANDLE article, con TOKEN token; if (article.token == (TOKEN *)NULL) - memset(&token, '\0', sizeof(token)); + memset(&token, '\0', sizeof(token)); else { - memcpy(&token, article.token, sizeof(token)); - memset(&token.token, '\0', STORAGE_TOKEN_LENGTH); + memcpy(&token, article.token, sizeof(token)); + memset(&token.token, '\0', STORAGE_TOKEN_LENGTH); } token.type = TOKEN_TRASH; token.class = class; @@ -41,8 +41,8 @@ ARTHANDLE * trash_retrieve(const TOKEN token, const RETRTYPE amount UNUSED) { if (token.type != TOKEN_TRASH) { - SMseterror(SMERR_INTERNAL, NULL); - return (ARTHANDLE *)NULL; + SMseterror(SMERR_INTERNAL, NULL); + return (ARTHANDLE *)NULL; } SMseterror(SMERR_NOENT, NULL); return (ARTHANDLE *)NULL; @@ -66,7 +66,7 @@ trash_ctl(PROBETYPE type, TOKEN *token U switch (type) { case SMARTNGNUM: default: - return false; + return false; } } diff -Nurp inn-2.5.0/storage/trash/trash.h inn-2.5.1/storage/trash/trash.h --- inn-2.5.0/storage/trash/trash.h 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/storage/trash/trash.h 2009-10-12 11:24:04.000000000 -0700 @@ -1,6 +1,6 @@ -/* $Id: trash.h 6541 2003-12-26 01:30:15Z rra $ +/* $Id: trash.h 8618 2009-09-07 08:23:47Z iulius $ ** -** trashing articles method header +** Storage manager module header for trash method. */ #ifndef __TRASH_H__ diff -Nurp inn-2.5.0/support/config.guess inn-2.5.1/support/config.guess --- inn-2.5.0/support/config.guess 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/support/config.guess 2009-10-12 11:24:04.000000000 -0700 @@ -1,10 +1,10 @@ #! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 # Free Software Foundation, Inc. -timestamp='2009-04-27' +timestamp='2009-08-19' # 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 @@ -27,16 +27,16 @@ timestamp='2009-04-27' # the same distribution terms that you use for the rest of that program. -# Originally written by Per Bothner . -# Please send patches to . Submit a context -# diff and a properly formatted ChangeLog entry. +# Originally written by Per Bothner. Please send patches (context +# diff format) to and include a ChangeLog +# entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # -# The plan is that this can be called by configure scripts if you -# don't specify an explicit build system type. +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD me=`echo "$0" | sed -e 's,.*/,,'` @@ -170,7 +170,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$ arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep __ELF__ >/dev/null + | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? @@ -656,7 +656,7 @@ EOF # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | - grep __LP64__ >/dev/null + grep -q __LP64__ then HP_ARCH="hppa2.0w" else @@ -822,6 +822,9 @@ EOF [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; + 8664:Windows_NT:*) + echo x86_64-pc-mks + exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we @@ -882,40 +885,17 @@ EOF m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; - mips:Linux:*:*) + mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU - #undef mips - #undef mipsel + #undef ${UNAME_MACHINE} + #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=mipsel + CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=mips - #else - CPU= - #endif - #endif -EOF - eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' - /^CPU/{ - s: ::g - p - }'`" - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } - ;; - mips64:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #undef CPU - #undef mips64 - #undef mips64el - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=mips64el - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=mips64 + CPU=${UNAME_MACHINE} #else CPU= #endif @@ -947,7 +927,7 @@ EOF EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac - objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null + objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit ;; @@ -1001,14 +981,6 @@ EOF elf32-i386) TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" ;; - a.out-i386-linux) - echo "${UNAME_MACHINE}-pc-linux-gnuaout" - exit ;; - "") - # Either a pre-BFD a.out linker (linux-gnuoldld) or - # one that does not give us useful --help. - echo "${UNAME_MACHINE}-pc-linux-gnuoldld" - exit ;; esac # Determine whether the default compiler is a.out or elf eval $set_cc_for_build @@ -1074,7 +1046,7 @@ EOF i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; - i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) @@ -1182,7 +1154,7 @@ EOF rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; - PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) diff -Nurp inn-2.5.0/support/config.sub inn-2.5.1/support/config.sub --- inn-2.5.0/support/config.sub 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/support/config.sub 2009-10-12 11:24:04.000000000 -0700 @@ -1,10 +1,10 @@ #! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 # Free Software Foundation, Inc. -timestamp='2009-04-17' +timestamp='2009-08-19' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software @@ -32,13 +32,16 @@ timestamp='2009-04-17' # Please send patches to . Submit a context -# diff and a properly formatted ChangeLog entry. +# diff and a properly formatted GNU ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD + # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. @@ -149,10 +152,13 @@ case $os in -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis | -knuth | -cray) + -apple | -axis | -knuth | -cray | -microblaze) os= basic_machine=$1 ;; + -bluegene*) + os=-cnk + ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 @@ -337,7 +343,7 @@ case $basic_machine in | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ @@ -467,6 +473,10 @@ case $basic_machine in basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; + bluegene*) + basic_machine=powerpc-ibm + os=-cnk + ;; c90) basic_machine=c90-cray os=-unicos @@ -719,6 +729,9 @@ case $basic_machine in basic_machine=ns32k-utek os=-sysv ;; + microblaze) + basic_machine=microblaze-xilinx + ;; mingw32) basic_machine=i386-pc os=-mingw32 @@ -1260,7 +1273,7 @@ case $os in # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ | -kopensolaris* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ @@ -1613,7 +1626,7 @@ case $basic_machine in -sunos*) vendor=sun ;; - -aix*) + -cnk*|-aix*) vendor=ibm ;; -beos*) diff -Nurp inn-2.5.0/support/fixscript.in inn-2.5.1/support/fixscript.in --- inn-2.5.0/support/fixscript.in 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/support/fixscript.in 2009-10-12 11:24:04.000000000 -0700 @@ -1,11 +1,11 @@ #! /bin/sh -## $Id: fixscript.in 8417 2009-04-12 20:52:52Z iulius $ +## $Id: fixscript.in 8561 2009-08-14 18:32:41Z iulius $ ## -## Fix interpretor paths and INN variable load paths. +## Fix interpreter paths and INN variable load paths. ## ## Scripts shipped with INN always have the invocation path for the -## interpretor on the first line and the command to load INN variable +## interpreter on the first line and the command to load INN variable ## settings into the script on the second line. For example, for a Bourne ## shell script: ## @@ -14,9 +14,9 @@ ## ## This script takes as input such a script and outputs the same script ## with the first two lines replaced to have the correct path to the -## interpretor and to the INN variable library, as determined by configure. +## interpreter and to the INN variable library, as determined by configure. ## -## If the script is invoked with the -i flag, only fix the interpretor +## If the script is invoked with the -i flag, only fix the interpreter ## path and don't modify the second line of the file to include the ## appropriate innshellvars. @@ -56,18 +56,18 @@ if [ x"$input" = x"$output" ] ; then exit 1 fi -interpretor=`head -n 1 "$input"` -case "$interpretor" in +interpreter=`head -n 1 "$input"` +case "$interpreter" in */sh|*SH*) path="@SHELL@" lib=". $libdir/innshellvars" ;; */perl*|*PERL*) - path=`echo "$interpretor" | sed 's%^#! *[^ ][^ ]*%'"$PERLPATH%"` + path=`echo "$interpreter" | sed 's%^#! *[^ ][^ ]*%'"$PERLPATH%"` lib="use lib '@LIBPERLDIR@'; use INN::Config;" ;; *) - echo "Unknown interpretor $interpretor" >&2 + echo "Unknown interpreter $interpreter" >&2 exit 1 ;; esac diff -Nurp inn-2.5.0/support/install-sh inn-2.5.1/support/install-sh --- inn-2.5.0/support/install-sh 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/support/install-sh 2009-10-12 11:24:04.000000000 -0700 @@ -1,7 +1,7 @@ #!/bin/sh # install - install a program, script, or datafile -scriptversion=2006-12-25.00 +scriptversion=2009-04-28.21; # UTC ############################# # NOTICE TO INN MAINTAINERS # @@ -545,5 +545,6 @@ done # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" # End: diff -Nurp inn-2.5.0/support/mksnapshot inn-2.5.1/support/mksnapshot --- inn-2.5.0/support/mksnapshot 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/support/mksnapshot 2009-10-12 11:24:04.000000000 -0700 @@ -1,6 +1,6 @@ #! /bin/sh -## $Id: mksnapshot 8369 2009-03-01 18:48:50Z iulius $ +## $Id: mksnapshot 8558 2009-08-05 21:08:44Z iulius $ ## ## Build a snapshot of the current tree. ## @@ -71,7 +71,7 @@ of INN. It was made on: Although it should work fine, this code should still be considered experimental. If you find any bugs, we'd like to know at -. +. Your feedback is also more than welcome on the mailing list . See README for more information. @@ -87,7 +87,7 @@ automatically from the Subversion reposi This code should be considered experimental. Only a default compile and automated testing is done before it is made available. If it breaks, we'd -like to know at , but if it causes your system to +like to know at , but if it causes your system to explode, don't blame us. If you are using this code, it's highly recommended that you be on the diff -Nurp inn-2.5.0/tests/data/upgrade/inn.conf.ok inn-2.5.1/tests/data/upgrade/inn.conf.ok --- inn-2.5.0/tests/data/upgrade/inn.conf.ok 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/tests/data/upgrade/inn.conf.ok 2009-10-12 11:24:04.000000000 -0700 @@ -13,9 +13,9 @@ hismethod: hisv6 extraoverviewadvertised: [ Path Keywords Injection-Info ] # Moved from sasl.conf by innupgrade. -tlscafile: /usr/local/news/lib/ca.cert -tlscapath: /usr/local/news/lib/cas +tlscafile: /usr/local/news/etc/ca.cert +tlscapath: /usr/local/news/etc/cas # Our local certificate. -tlscertfile: /usr/local/news/lib/our.cert -tlskeyfile: /usr/local/news/lib/our.key +tlscertfile: /usr/local/news/etc/our.cert +tlskeyfile: /usr/local/news/etc/our.key diff -Nurp inn-2.5.0/tests/data/upgrade/sasl.conf inn-2.5.1/tests/data/upgrade/sasl.conf --- inn-2.5.0/tests/data/upgrade/sasl.conf 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/tests/data/upgrade/sasl.conf 2009-10-12 11:24:04.000000000 -0700 @@ -1,6 +1,6 @@ -tls_ca_file: /usr/local/news/lib/ca.cert -tls_ca_path: /usr/local/news/lib/cas +tls_ca_file: /usr/local/news/etc/ca.cert +tls_ca_path: /usr/local/news/etc/cas # Our local certificate. -tls_cert_file: /usr/local/news/lib/our.cert -tls_key_file: /usr/local/news/lib/our.key +tls_cert_file: /usr/local/news/etc/our.cert +tls_key_file: /usr/local/news/etc/our.key diff -Nurp inn-2.5.0/tests/lib/innconf-t.c inn-2.5.1/tests/lib/innconf-t.c --- inn-2.5.0/tests/lib/innconf-t.c 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/tests/lib/innconf-t.c 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: innconf-t.c 8409 2009-04-11 22:13:41Z iulius $ */ +/* $Id: innconf-t.c 8660 2009-10-10 08:00:19Z iulius $ */ /* innconf test suite. */ #include "config.h" @@ -56,7 +56,7 @@ main(void) fclose(config); ok(7, !innconf_check("config/tmp")); unlink("config/tmp"); - ok_string(8, "config/tmp:36: unknown parameter foo\n", errors); + ok_string(8, "config/tmp:37: unknown parameter foo\n", errors); errors_uncapture(); free(errors); errors = NULL; diff -Nurp inn-2.5.0/tests/lib/uwildmat-t.c inn-2.5.1/tests/lib/uwildmat-t.c --- inn-2.5.0/tests/lib/uwildmat-t.c 2009-05-21 13:08:33.000000000 -0700 +++ inn-2.5.1/tests/lib/uwildmat-t.c 2009-10-12 11:24:04.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: uwildmat-t.c 7585 2006-11-21 09:37:51Z eagle $ +/* $Id: uwildmat-t.c 8637 2009-09-28 19:59:01Z iulius $ ** ** wildmat test suite. ** @@ -44,10 +44,21 @@ test_s(int n, const char *text, const ch printf(" %s\n %s\n expected %d\n", text, pattern, matches); } +static void +test_v(int n, const char *text, bool matches) +{ + bool matched; + + matched = is_valid_utf8(text); + printf("%sok %d\n", matched == matches ? "" : "not ", n); + if (matched != matches) + printf(" %s\n expected %d\n", text, matches); +} + int main(void) { - test_init(174); + test_init(187); /* Basic wildmat features. */ test_r( 1, "foo", "foo", true); @@ -249,5 +260,22 @@ main(void) test_r(174, "\303\206\357\277\277", "*[^\303\206]", true); + /* Tests for the is_valid_utf8 interface. */ + test_v(175, "a", true); + test_v(176, "aaabbb", true); + test_v(177, "test\303\251\302\240!", true); + test_v(178, "\200", false); + test_v(179, "\277", false); + test_v(180, "\300 ", false); + test_v(181, "\340\277", false); + test_v(182, "\374\277\277\277\277", false); + test_v(183, "\374\277\277\277\277\277", true); + test_v(184, "a\303\251b\303\251c\374\277\277\277\277\277", + true); + test_v(185, "a\303\251b\303c\374\277\277\277\277\277", + false); + test_v(186, "", true); + test_v(187, "a\303\251b\303\0c", false); + return 0; }