diff -Nurp inn-2.6.1/CONTRIBUTORS inn-2.6.2/CONTRIBUTORS --- inn-2.6.1/CONTRIBUTORS 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/CONTRIBUTORS 2018-03-18 13:03:32.000000000 -0700 @@ -277,4 +277,5 @@ Edmund H. Ramm, Raphael Barrois, Bo Lind Dennis Preiser, Paolo Amoroso, Dennis Davis, River Tarnell, Jochen Schmitt, Tim Fardell, Remco Rijnders, David Binderman, Tony Evans, Christian Garbs, Jesse Rehmer, Colin Watson, Lauri Tirkkonen, Christian Mock, Marcus Jodorf, -Richard Kettlewell, Yuriy M. Kaminskiy, Bill Parker +Richard Kettlewell, Yuriy M. Kaminskiy, Bill Parker, Thomas Hochstein, +Tanguy Ortolo diff -Nurp inn-2.6.1/ChangeLog inn-2.6.2/ChangeLog --- inn-2.6.1/ChangeLog 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/ChangeLog 2018-03-18 13:03:32.000000000 -0700 @@ -1,489 +1,402 @@ -2016-11-27 iulius +2018-03-18 iulius - * Bump version for the new 2.6.1 release + * FAQ: Bump the revision number of the forthcoming INN 2.6.2 stable + release - * Update to latest rra-c-util and C TAP Harness upstream versions +2018-03-17 iulius - * Reorder compression-related items in NEWS - -2016-11-26 iulius - - * Fix use of calloc() without checking for a return value of NULL + * install-sh: avoid (low risk) race in "/tmp" - Thanks to Bill Parker for the bug report. - -2016-11-25 iulius - - * Use a buffer properly for Site.FNLnames + Patch from upstream. - We were using a buffer to store the space-separated list of feed - names to which a funnel feed was being sent, but only by directly - manipulating the underlying struct with (incorrect) uses of - strlcpy and strlcat. Use the buffer API to manipulate this - structure correctly, and fix up the other places where "used" was - incorrectly used as the length of data in the buffer instead of - "left". - -2016-11-23 iulius - - * Fix build when SASL support is enabled but not TLS support + Ensure that nobody can cross privilege boundaries by pre-creating + symlink on '$tmpdir' destination directory. + + Just testing 'mkdir -p' by creating "/tmp/ins$RANDOM-$$/d" is not + safe because "/tmp" directory is usually world-writeable and + "/tmp/ins$RANDOM-$$" content could be pretty easily guessed by + attacker (at least for shells where $RANDOM is not supported). + So, as the first step, create the "/tmp/ins$RANDOM-$$" without + -p. This step would fail early if somebody wanted catch us. + + Systems that implement (and have enabled) fs.protected_symlinks + kernel feature are not affected even without this commit. -2016-11-09 iulius +2018-03-16 iulius - * Fix incorrect use of boolean values - - Thanks to David Binderman for the bug report. + * Fix previous commit -2016-11-06 iulius +2018-03-15 iulius - * Fix build when SASL support is enabled but not TLS support + * Update to latest C TAP Harness upstream version - * Update LICENSE and doc, preparing the next release +2018-03-10 iulius - * Update to latest upstream version of rra-c-util + * Stop using com_err directly - Work around warning bug in older gcc with snprintf. + com_err is an obsolete way of reporting Kerberos errors. Add some + additional Kerberos portability code from rra-c-util to allow + using krb5_get_error_message, which is the modern approach, and + remove the additional probing for com_err.h. - Properly handle signed overflow in run_child_function. + Also, if --with-krb5 (or the equivalent for other probes) is + given and a krb5-config was found at the install root, skip the + PATH search for krb5-config to avoid confusing output. This + results in redoing the probe and using cached output when testing + multiple krb5-config features, but that seems better than the + confusing output. - Correctly handle -Wno-* options in INN_PROG_CC_FLAG. GCC and - Clang both don't produce fatal errors for unknown -Wno-* flags, - so test the corresponding positive -W flag instead when - determining if they're supported. + Patch from Russ Allbery. - * Bump version information for our libraries released with INN - 2.6.1 - - * Allow 2^31 - 1 as a valid result from df + * libinn documentation: fix sample code - Latest version of OSX answers 2^31 - 1, so allow it similarly to - 2^32 - 1 that already was allowed. + HeaderFind() no longer exists, and a few other functions have + additionnal arguments. -2016-11-04 iulius + * Add check for unique Cancel-Key and Cancel-Lock header fields + (RFC 8315) in nnrpd - * Fix weird !strcmp == 0 construct + * Add access to Jabber-ID header field (RFC 7259) within Perl and + Python hooks for innd. - Thanks to The Doctor for the report. + Also update POD documentation and the Python sample. - * Update to latest rra-c-util version - - Notably: - - Correct the return-value checks for snprintf to avoid an - off-by-one error when verifying the output was not truncated. - (All locations should have been safe anyway for other reasons, - but be certain.) Based on a patch by Yuriy M. Kaminskiy. - - Add more debugging information to network/server test. - - Fix incorrect use of IPv6 protocol in IPv4 test. - - When testing network_set_reuseaddr and related functions, don't - require that the option be set to 1 explicitly, just that it has - a true value. Debian/kFreeBSD returns the numeric value of the - socket option in some cases when the socket option is set rather - than returning 1, and POSIX just documents that this is a boolean - flag (so only the truthfulness of the value matters). - - Increase the buffer size of the network write timeout test: the - default Debian cloud images use a 12MB TCP sending buffer, which - meant that the timeout test never triggered because the entire - write of 8MB was absorbed by the buffer. Bump the buffer size to - 15MB and add a comment explaining why that number was chosen, - with a reference to the Debian bug where the Ruby maintainers - sorted this out. Many thanks to Lucas Nussbaum for investigating - this and to Eric Wong for sorting out why this buffer was causing - tests to fail. +2018-03-08 iulius - * Update to latest upstream rra-c-util + * innreport: fix the output of the NoCeM section - Notably, change inet_ntoa replacement prototype to match POSIX. - While having a const arg and a const return value is more - correct, make the prototype of the replacement function exactly - match POSIX for fewer surprises when the replacement is used. + Previously, errors during NoCeM processing did not appear in + daily Usenet reports. - * Use cc-flags.m4 from upstream rra-c-util + * scanspool: do not warn for consistency of Newsgroups header + fields in control pseudogroups - * Update to latest control.ctl upstream file + * Add a few useful monitoring commands to run before making a + release - Handle reserved hierarchies, and the new key for the dictator.* - hierarchy. + Also, typo fix in checklist. - * Update pgpverify and signcontrol to their latest upstream version + * inncheck: do not warn when "control" is used in newsgroup pattern + + Lines that were triggering a warning (in sample control.ctl + file): newgroup:*:control|general|junk|test|to:drop + rmgroup:*:control|general|junk|test|to:drop - * Update concat library to its latest version in rra-c-util +2018-02-16 iulius - * Fix all non-https www.eyrie.org URLs + * Update license information from rra-c-util upstream version + + Also fix two gcc warnings in addr-ipv6-t.c and snprintf-t.c. - * Mark these files as now unmaintained in rra-c-util + * Add support for GnuPG's gpg binary to pgpverify and perl-nocem + + gpg still validates signatures made with weak digest algorithms + like MD5 whereas gpgv no longer do. + + Thanks to Thomas Hochstein for the patch (for pgpverify), which + permits to validate control articles for hierarchies that are + still using old PGP keys. + + Also add autoconf magic to detect new $INN::Config::gpg variable + (and also for shell and Tcl scripts), and add make use of it in + perl-nocem. + + Detect gpg1 in preference to gpg and gpg2. - * Use https instead of ftp URLs for ftp.isc.prg +2018-02-04 iulius - * Update to Libtool 2.4.6 + * ovdb: improve documentation, and change the default value for + readserver to true - As INN relies on the Debian libtool distribution, the 2.4.6-2 - package used already contains the fix for m4 slowness (absent - from the official 2.4.6 upstream release). + Using ovdb_server helper server helps improve the stability of + the ovdb overview method, so sets the default value for + readserver in ovdb.conf to true. - Also update HACKING to mention the new directories used for - 2.4.6. - - * Update config.guess and config.sub from upstream + Also greatly improve the documentation for ovdb: better POD + formatting, describe what are the 3 possible versions of ovdb, + clarify what is an upgrade, document the ncache parameter (it was + absent from documentation), remove old wording for nocompact, + remove duplicate explanation of ovdb_init tasks in ovdb(5), + mention that rc.news takes care of stopping ovdb_monitor, add the + -M option to ovdb_stat synopsis, improve ovdb.conf sample file + (better wording, and consistent with the man page). - * Update config.guess and config.sub from upstream + * ovdb_stat: fix HTML output and Usage information - * Update install-sh from upstream +2018-02-03 eagle - * Update a few URLs to use https instead of http + * Handle hostnames not in DNS in GetFQDN + + If the local hostname isn't in DNS at all, GetFQDN currently + returns NULL. If a domain was provided but the hostname isn't in + DNS, append the domain to the hostname anyway and return the + results. This is possibly still a local configuration error, but + it seems like friendlier behavior, and also lets the test suite + run on hosts with an unresolvable local hostname. -2016-11-03 eagle +2018-01-29 iulius - * Relax permission checks in nnrpd for TLS private key - - Second-guessing whether we can read the file can get us in - trouble if file system ACLs are in use, and requiring the group - match the group of nnrpd makes it harder than necessary to set up - automatic certificate renewal via something like Let's Encrypt. - Relax the permission checks to just check that the private key - isn't world-readable and that we can read it. + * Better wording for NEWS -2016-10-08 iulius +2018-01-28 iulius - * SASL mechanisms and compression algorithms are case-sensitive + * Bump version information for our libraries released with INN + 2.6.2 - Only upper case is allowed. + A few interfaces have changed in libinn. - * Fix Perl warning when Sys::Syslog version is not numeric Change - "<" to "lt" to avoid the following warning: Argument "0.33_01" - isn't numeric in numeric lt (<) + * Document cancels and cycbuff reallocation in storage methods -2016-09-17 iulius - - * nnrpd: add syntax checks at injection time for header fields - - Control chars and empty content lines in header fields are now - rejected by nnrpd at injection time. + * Update to latest C TAP Harness and rra-c-util upstream versions - Add two new functions IsValidHeaderBody() and - IsValidHeaderField() in libinn, along with a test suite. + Also update accordingly the rest of the INN source code. -2016-09-04 iulius +2018-01-23 iulius - * Return the right value in TMRsumone() when the timer log exceeds - the buffer size + * Update to latest control.ctl upstream file - Thanks to Yuriy M. Kaminskiy for the patch. + Remove the gov.* hierarchy. - * Fix build for OpenSSL versions prior to 0.9.8m - - SSL_CTX_clear_options() was added to OpenSSL 0.9.8m. + * Update to latest install-sh upstream version - Also, when building with warnings on, enable the check on - deprecated OpenSSL interfaces. + Do not append / to destination directory if it already ends in /. + This supports a destination directory of // on hosts where / and + // are distinct directories, as POSIX allows. - * Homogenize the use of TLS/SSL in documentation - - Also, when TLS-level compression is wanted, or server preferences - should be followed, be sure it is the case (if OpenSSL supports - it). + * Update to latest config.guess and config.sub upstream files - * Improve the robustness of snprintf handling +2018-01-07 iulius + + * Adjust buffindexed header page size to platform + + Previously, if the platform page size was larger than 16KB, + buffindexed would just refuse to work on that platform. Instead, + increase the header page size to match the platform page size on + those platforms, but still require that the header page size be a + multiple of the platform page size. - snprintf() returns -1 on error, and *value larger than supplied - buffer size* if formatted string will not fit in supplied buffer. - If you add/subtract snprintf() return value without validating - its range, this will lead up to disaster. + Use sysconf(_SC_PAGESIZE) to get the page size instead of + getpagesize(), since it's the POSIX-standard way of doing this. - Thanks to Yuriy M. Kaminskiy for the patch. + Backport patch against CURRENT from Russ Allbery. - * Improve wording about C flag in newsfeeds +2017-12-10 iulius - * Fix initialization of CAF header (LastCleaned was not - initialized) + * Add support for TLS 1.3 -2016-08-05 iulius +2017-11-28 iulius - * Disable TLS-level compression by default in inn.conf + * innstat: monitor disk usage of more directories, and add the unit + + In daily Usenet reports, add disk usage for archive, http and tmp + directories. Also mention the unit of the size of batch and log + files. -2016-08-04 iulius +2017-11-25 iulius - * Improve syntax checking for the COMPRESS command - - Add 501 response codes when appropriate. + * Improve documentation for ovdb_server - * Suppresses compiler warnings when built on systems without the - relevant defines - - Patch from upstream rra-c-util. +2017-11-05 eagle - * Add missing prototypes for replacement functions + * Update URL for GUP -2016-07-31 iulius +2017-11-04 iulius - * Fix the build on old GCC versions + * Enforce new GCC 6 warning options; fix possible NULL-pointer + dereferences - To build with GCC "-Wformat-nonliteral" warning on, [9911] - suppressed a few checks in the code, waiting to be properly - fixed. However, these pragmas are not understood by old GCC - versions (4.4.7 for instance). So this commit suppresses these - pragmas. + Add the following warning options: -Wnull-dereference + -Wshift-overflow=2 -Wduplicated-cond - They are scheduled to be fixed in a later release of INN. - -2016-06-01 iulius - - * Allow posts containing a Received: or a Posted: header field - - * Advertise XBATCH and XPAT in the capabilities list + Do not explicitly mention -Wendif-labels because it is enabled by + default. Also use -O3 instead of -O2. + + Fix in timehash and buffindexed code possible NULL-pointer + dereferences. -2016-05-28 iulius +2017-10-16 eagle - * Fix the build with Perl and large-file support + * actsync: fix misleading indentation - It was a regression introduced with commit [10023]. - -2016-05-05 iulius + Only do the flush when debugging is on. Backported from r10052 on + CURRENT by iulius. - * sys2nf: fix resource leak if the first condition is true + * Suppress sign-compare warnings for innfeed lexer + + Some versions of flex (such as 2.6.1-1.3 in Debian stretch) + declare a variable as int that should be size_t. We can't really + do much about that, and it's fixed in current flex, so just + suppress the warning using a gcc pragma. - * Protect $Id$ in support scripts +2017-09-18 iulius - * Add missing va_end to is_double + * Clarify the use of FQDN in documentation - Fix missing va_end() call in is_double(), which would have caused - compilation failures or other problems on some platforms. + There are two things here. First, the FQDNs that exist in the DNS + for a given host: some may be A and AAAA records, other may be + CNAME records, and the host may know them or not. - Patch taken from upstream C TAP Harness. - - * Update to latest C TAP Harness upstream version - - * Update to latest rra-c-util upstream version + Second, the FQDN that the host system will report (hostname + --fqdn), which is a single one, always the same as long as the + configuration will not change. With GNU/Linux, it seems to be + determined this way: - The portable replacements for strlcat and strlcpy are no longer - maintained in rra-c-util. These had various bugs around edge - cases and should normally be replaced with asprintf or similar - functions. Rewrite vector_join and cvector_join to use memcpy - instead of strlcpy and strlcat. + * if the system hostname contains a dot, return it; * if the + system hostname does not contain a dot, resolve it to an FQDN + using getaddrinfo() (which will resolve it to an IP address and + then back to a name using a reverse resolution, usually using + /etc/hosts, but possibly using the DNS). - Also improve how IPv6 is handled in the network test suite. - - * Fix build with OpenSSL 1.1.0 - a few X509_xxx types are now - opaque + The problem is mostly the over-usage of the term + ?\226?\128?\156FQDN?\226?\128?\157, which can sometimes be + incorrectly understood as meaning ?\226?\128?\156a host's + canonical name?\226?\128?\157. This is emphasized by the fact + that some news services, if not most of them, are referred to + with a service name such as news.example.com, which is fully + qualified, but which is just an alias to the server canonical + name such as gruyere.example.com, which will probably be the + result of a reverse lookup of its IP address as well. - Check that the current certificate returned by - X509_STORE_CTX_get_current_cert() is not NULL. In the switch - part, err_cert is not NULL though because otherwise the error - would have been different than - X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT. - - * Use perl.m4 from upstream rra-c-util + Most of the time, when resolving a host name to an IP address), + the fact that it is fully qualified or not is irrelevant, as long + as it does resolve. In such cases, it is enough to just mention + ?\226?\128?\156a host name?\226?\128?\157. - Move INN-specific stuff to configure.ac. - - * feedone: fix log output when exiting after an error - - * Update to latest rra-c-util upstream version + For checking a client IP address against a host name, the fact + that it is FQ or not is again irrelevant, but what is relevant is + whether this check is done by direct lookup of the configured + host name, or by reverse lookup of its IP address. - As network_set_freebind, network_set_reuseaddr, and - network_set_v6only are now public functions, they can be removed - from our local network-innbind.c file. - - * Remove stdin flushing + For reporting connections with a host name rather than an IP + address, it is not relevant either, this is just a reverse + lookup, and it will almost always return an FQDN indeed, but that + depends on the system configuration. - Even though it arguably has defined behaviur, actsync is not - actually relying on it. - - * Fix an implicit declaration of function 'time' - - * Fix leaks and dereferences; improve readability (reported by - cppcheck) - - * Fix unused variables - - * sys2nf: Remove extra parameter - - * Missing fclose() and mishandling of *artnum - - * Unsigned integers cannot be negative (reported by cppcheck) - - * Fix the computation of sizeof(buf) for fgets() - - * Remove redundant or useless code (reported by cppcheck) - - * PERMreadlist and PERMpostlist are not booleans + Thanks to Tanguy Ortolo for his suggestion of improvement. - * confparse.c: fix the message error when opening braces are - missing + * Avoid a zero-size vector allocation - tag was always NULL in the condition. + Update to latest rra-c-util upstream version. - * Fix signedness in printf-like statements (reported by cppcheck) + * Clarify the wording about the propagation of control articles -2016-04-03 iulius + * Document when Injection-Date: header field is not added by nnrpd + (case of multiple injection) + + Thanks to Thomas Hochstein for prompting to document that + behaviour. - * authprogs/radius.c: fix support for multiple radius servers +2017-07-22 iulius -2016-03-28 iulius + * mailpost: update the list of known header fields - * Add support for OpenSSL 1.1.0 + * fix writing of message-ID in lowercase - * nnrpd: keep TCP_NODELAY only for BSD/OS systems + * mailpost: add new "-z" parameter to remove header fields + + Adds a "-z" parameter to remove any undesired headers from the + gated message. - Fixed slow nnrpd responses for a few NNTP commands. The - TCP_NODELAY option was unconditionally set whereas only BSD/OS - systems needed it. Modern networking stacks do not need such - tweaks. + Also, edits the incoming SMTP message's "Received:" header to + remove any "for " clause which contains the name of the + news server (or its domain). It determines the name by examining + "pathhost", "fromhost" and "domain" (from file "inn.conf"). The + reason for this is to protect the gateway mailbox from spammers + who may seek to abuse the gateway. This will also remove any + "*-To:" headers that cite the news server host or domain name + (e.g. "Errors-To:" which are set to report back which user + bounced by using a mailbox pattern in the envelope). As the + gateway mailbox name is now hidden, spammers will have to + discover it via other means. It's not meant as an anti-spam + measure by itself, but spammers can't spam that which they can't + find. Since the administrator knows the message was gated, he + knows it was delivered to the gateway mailbox, so information + deleted from the trace header isn't "lost"; just merely hidden. + "For" clauses from other "Received:" headers not specifying the + mail server's host/domain are left intact. - Thanks to Christian Mock for having discovered that. + Thanks to Dieter Stussy for the patch. + +2017-07-11 iulius -2016-01-10 iulius + * mailpost: remove empty header lines within header body - * rnews: fix a segfault while starting setuid news + * inews: fix the check of header field length - It is a regression introduced with commit [9854]. Previously, - rnews called get_news_uid_gid() that handled the possibility of - inn.conf not having been read. Since that commit, rnews has been - calling ensure_news_user() that does not handle that case. - Especially, when --enable-uucp-rnews was used at configure time, - the effective UID returned by geteuid() was not root, and rnews - segfaulted. + The limitation of 998 bytes is for the length of a single line of + a header field, not for the whole header field. - Thanks to Marcus Jodorf for the bug report. + Also, use MED_BUFFER instead of HEADER_STRLEN in places where a + mere buffer was expected, not related to header length. -2015-12-11 iulius + * Update HACKING and NEWS - * Properly cast size_t to unsigned long when printf'ing them as %lu +2017-07-01 iulius - * Initial implementation of the COMPRESS command in INN + * mailpost: remove empty header fields - Based on draft-murchison-nntp-compress-02 (still not published as - an RFC). + Also, fix a sprintf warning when using "mailpost -n" ($Sendmail + does not contain %s in that case). - The COMPRESS command is an extension to the NNTP protocol to - allow a connection to be effectively and efficiently compressed. - News clients that also support that extension will be able to - benefit from that bandwidth optimization and improvement in - speed. - - Initial implementation in INN contributed by Julien Elie. + Thanks to Kamil Jonca for the bug report. -2015-12-10 iulius +2017-06-05 iulius - * Improve wording around encryption layers + * Fix new implicit-fallthrough warning in GCC 7 - Keep in mind that two kinds of security layers can be negotiated - (TLS and SASL). + Indicate that some functions never return, or that fallthrough in + switch statements is expected. - * SASL: fix the detection of the negotiation of a security layer - - nnrpd was wrongly discarding any knowledge from the client when - an SASL data integrity layer without encryption was negotiated. + * Fix new format-truncation warning in GCC 7 - Note that the patch also makes nnrpd no longer believe the - connection is encrypted in such cases, for use with require_ssl - auth blocks in readers.conf. This fix is not mentioned in NEWS - because that behaviour for require_ssl is not yet released (new - in INN 2.6.1). + A few strings in innfeed status and in Sender/Injection-Info + header fields may have been truncated when generated. The case is + rare, though (240 bytes for instance in the username and + hostname). - * Update to latest 5.9 release of rra-c-util + * FAQ: Improve instructions when re-feeding the articles of a news + server - Just a typo in a comment. + Mention to check the newsfeeds file of the new server for the + absence of controlchan; and that innxmit may have to be + re-executed during the operation. - * Improve the robustness of SASL handling + * innreport: Update the dictionary of ctlinnd commands - After sasl_decode(), add a check to prevent a call to memcpy() - for 0 byte or for more bytes than the destination buffer. - - Check that sasl_errdetail() does not return NULL. - - Improve a few comments in the source code. + This way, all ctlinnd commands will correctly appear in clear in + daily Usenet reports. - * Support older versions of OpenSSL (up to v0.9.8) to disable TLS - compression + * Add support for a new syntaxchecks parameter in inn.conf - The tlscompression parameter in inn.conf now works for OpenSSL - versions superior to v0.9.8. + This parameter permits to control the level of checks performed + by innd and nnrpd. Up to now, only one check can be + enabled/disabled: when "laxmid" is mentioned in the values of + this new parameter, INN accepts Message-IDs that contain ".." in + the left part, as well as Message-IDs with two "@" (such + Message-IDs would otherwise be considered as syntactically + invalid). - * Use -0000 instead of +0000 as the time zone in generated headers - not at Universal Time - - nnrpd now uses -0000 as the time zone for Date: and - Injection-Date: header fields it generates. It was previously - using +0000, wrongly systematically indicating a local time zone - at Universal Time when the localtime paramater is set to false - (which is the default) in readers.conf. The +0000 time zone will - now be used only if localtime is set to true and UTC is really - the local time zone of the server. + * Update documentation to latest TLS best current practices - Improve the documentation of readers.conf, mentioning a use case - for the localtime parameter. Thanks to Russ for it. + - Using implicit TLS (port 563) is recommended per RFC 8143. - convdate now similarly also uses -0000. + - The TLS_RSA_WITH_RC4_128_MD5 and + TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA cipher suites are no longer + mandatory. - * nnrpd: take into account the require_ssl parameter when using - SASL - - When an encryption layer is negotiated after a successful - authentication using a SASL mechanism which negotiates an - encrypted layer, nnrpd now updates the permissions of the news - client according to the new secure state of his connection (that - is to say auth blocks in readers.conf using the require_ssl - parameter are taken into account). Previously, only TLS - connections either on a dedicated port (usually 563) or after a - successful use of STARTTLS were taking benefit from that - parameter. +2017-05-23 iulius - * nntpsend: correctly exit after all of the child processes exit - - The documentation for nntpsend claims that it waits until all of - the child innxmit processes exit before it does, but it doesn't. - - The reason it does not is because it starts the innxmit - processes, or more accurately the subshells that start the - innxmit processes, in a while loop that is itself in a child - process of the main shell, because of this line: - - cat ${INPUT} | while read SITE HOST SIZE_ARG FLAGS; do - - Since the while loop is in a pipe, it's executed in a child - process. As a result, its child processes, i.e., the ones running - innxmit, are not direct children of the nntpsend shell script's - process, so it doesn't wait for them. - - Note that this bug causes nntpsend to fail to work properly on - systems that use systemd, because when nntpsend exits - prematurely, systemd kills all of the processes it launched, - including the innxmit processes. - - Thanks to Jonathan Kamens for the patch. + * FAQ: Update link to the news.newusers.questions homepage - * nntpget: NEWNEWS accepts 4-digit years - - Hopefully NNTP specification is Y2K-compliant and allows 4-digit - years for the NEWNEWS command. Fix nntpget to use that syntax. +2017-04-29 eagle - * Add some more release instructions to HACKING - - Document more on pushing releases to ftp.isc.org. Mention - updating Russ's unofficial web site, which contains the - autogenerated HTML versions of the documentation. + * Update URL for svn2cl - * nnrpd: take into account the require_ssl parameter when using - STARTTLS - - When TLS is negotiated after a successful use of the STARTTLS - command, nnrpd now updates the permissions of the news client - according to the new secure state of his connection (that is to - say auth blocks in readers.conf using the require_ssl parameter - are taken into account). Previously, only connections on a - dedicated port (usually 563) were taking benefit from that - parameter. - - Thanks to Steve Crook for the bug report. +2017-01-12 iulius + + * Mention new RFC 8054 (COMPRESS extension) as implemented in nnrpd -2015-09-12 iulius +2016-12-17 iulius - * Bump revision numbers in STABLE to reflect the next release + * Bump version for the next 2.6.2 release - * Bumping revision numbers in TODO should be done earlier in the - release process diff -Nurp inn-2.6.1/HACKING inn-2.6.2/HACKING --- inn-2.6.1/HACKING 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/HACKING 2018-03-18 13:03:32.000000000 -0700 @@ -659,15 +659,34 @@ Making a Release and . - 2. Update copyright years in LICENSE. + * Check whether patches from OpenSSL (apps/s_cb.c, apps/s_server.c + and crypto/bio/b_dump.c) could be merged into nnrpd/tls.c, as well + as support for new TLS versions in the tlsprotocols parameter in + inn.conf. + + 2. If possible, on a news server running the forthcoming release, run + the following commands to make sure they do not produce any errors: + + cnfsstat -a -v + ctlinnd checkfile + inncheck -a --perm --pedantic + ovdb_stat -klmMtv + scanlogs norotate + scanspool -n -v + tdx-util -A - 3. Update doc/pod/news.pod and regenerate NEWS. Be more detailed for a + Also build INN (including the contrib and tests directories) with + warnings on ("make warnings") and run the test suite ("make tests"). + + 3. Update copyright years in LICENSE. + + 4. Update doc/pod/news.pod and regenerate NEWS. Be more detailed for a minor release than for a major release. For a major release, also add information on how to upgrade from the last major release, including anything special to be aware of. (Minor releases shouldn't require any special care when upgrading.) - 4. Bump the revision number in doc/FAQ (subject 1.2) so that it could + 5. Bump the revision number in doc/FAQ (subject 1.2) so that it could be included in a final release. It should not be changed for a beta or a release candidate. @@ -675,14 +694,14 @@ Making a Release should also be bumped in doc/FAQ at the end of subject 1.2, as well as the revision numbers of scheduled versions in TODO. - 5. Double-check that the version information in lib/Makefile, + 6. Double-check that the version information in lib/Makefile, storage/Makefile, and history/Makefile has been updated if there has been any change in the library sources since the previous release. Follow the rules given at . - 6. If making a major release, branch the source tree by creating a new + 7. If making a major release, branch the source tree by creating a new directory under branches in Subversion named after the major release. This branch will be used for minor releases based on that major release and can be done a little while before the .0 release @@ -694,17 +713,17 @@ Making a Release Then, in that newly created branch, remove the first paragraph in doc/pod/readme.pod which deals with development versions. - 7. Check out a copy of the release branch. It's currently necessary to + 8. Check out a copy of the release branch. It's currently necessary to run "autogen" and "configure" to generate Makefile.global. Then, run "make warnings" to generate all necessary files. Afterwards, run "make check-manifest". There shouldn't be any differences; otherwise, fix the MANIFEST file. - 8. Run "make release" for a final release, "support/mksnapshot BETA b1" + 9. Run "make release" for a final release, "support/mksnapshot BETA b1" for the first beta version of a new release, or "support/mksnapshot RC rc1" for the first release candidate version of a new release. Note that you need to have a copy of svn2cl from - to do this; at least version 0.7 + to do this; at least version 0.7 is required. Start the ChangeLog at the time of the previous release. (Eventually, the script will be smart enough to do this for you.) @@ -713,11 +732,11 @@ Making a Release or manually edit it. Then run again "make release" or any other command you used. - 9. Generate an MD5 checksum of the release tarball. + 10. Generate an MD5 checksum of the release tarball. md5sum inn-Y.Y.Y.tar.gz > inn-Y.Y.Y.tar.gz.md5 - 10. Generate a diff between this release and the previous release if + 11. Generate a diff between this release and the previous release if feasible (always for minor releases, possibly not a good idea due to the length of the diff for major releases). You will need the tar file of the previous release for the comparison. @@ -725,7 +744,7 @@ Making a Release diff -Nurp inn-X.X.X inn-Y.Y.Y > inn-X.X.X-Y.Y.Y.diff gzip inn-X.X.X-Y.Y.Y.diff - 11. Make the resulting tar file, along with its MD5 checksum and the + 12. Make the resulting tar file, along with its MD5 checksum and the possible diff from the previous release, available for testing in the testing directory on ftp.isc.org and announce its availability on inn-workers. Install it on at least one system and make sure @@ -733,7 +752,7 @@ Making a Release time to send out a draft of the release announcement to inn-workers for proof-reading. - 12. Move the release into the public area of the ftp site and update the + 13. Move the release into the public area of the ftp site and update the inn.tar.gz link. Also put the diff and the MD5 checksum on the ftp site and update the inn.tar.gz.md5 link. Sign the release, creating a *.asc file, using: @@ -746,7 +765,8 @@ Making a Release unsigned checksum files. Update the inn.tar.gz* links and possibly move older releases off - into the OLD directory. + into the OLD directory. Also remove testing versions from the + testing directory. (Currently, this is all done by Russ by updating the files in and then letting ISC @@ -756,26 +776,26 @@ Making a Release update the ISC web site (the relevant contact is "web-request" instead of "webmaster"). - 13. After the ISC web site has been updated with links towards the new + 14. After the ISC web site has been updated with links towards the new release, send an announce on inn-announce and in news.software.nntp (with a possible crosspost to news.admin.announce). - 14. Tag the checked-out tree that was used for generating the release + 15. Tag the checked-out tree that was used for generating the release with a release tag by copying it to tags in Subversion. svn copy -r ZZZZ -m "Tag Y.Y.Y release." \ file:///srv/svn/inn/branches/Y.Y file:///srv/svn/inn/tags/Y.Y.Y - 15. Bump revision numbers to reflect the one of the following release, + 16. Bump revision numbers to reflect the one of the following release, especially in doc/pod/install.pod and doc/pod/readme.pod for major releases, configure.ac and Makefile.global.in for both minor and major releases. The release versions in the Trac wiki should also be updated. - 16. For major releases, ping Russ to update the branch used for the + 17. For major releases, ping Russ to update the branch used for the generation of STABLE snapshots. - 17. Ping Russ to update + 18. Ping Russ to update with the latest version information and, for a major release, clone the documentation tree for CURRENT as a new stable documentation tree for the stable release series. @@ -813,5 +833,5 @@ References technical details as needed, useful when working on IPv6 support in INN. - $Id: hacking.pod 10116 2016-11-06 14:23:01Z iulius $ + $Id: hacking.pod 10257 2018-03-08 16:17:55Z iulius $ diff -Nurp inn-2.6.1/INSTALL inn-2.6.2/INSTALL --- inn-2.6.1/INSTALL 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/INSTALL 2018-03-18 13:03:32.000000000 -0700 @@ -778,11 +778,11 @@ Configuring INN This is the name of your news server as you wish it to appear in the Path: header of all postings which travel through your server (this includes local posts and incoming posts that you forward out to - other sites). If this parameter is unspecified, the fully-qualified - domain name (FQDN) of the machine will be used instead. Please use - the FQDN of your server or an alias for your server unless you have - a very good reason not to; a future version of the news RFCs may - require this. + other sites). If this parameter is unspecified, the fully qualified + domain name (FQDN) of the machine, as reported by the operating + system, will be used instead. Please use the canonical FQDN of your + server or an alias unless you have a very good reason not to; a + future version of the news RFCs may require this. rlimitnofile If set to a non-negative value (the default is -1), INN (both innd @@ -1580,10 +1580,10 @@ Starting and Stopping the System connection is allowed to read and post news (you can also use the previously created readers.conf file to handle TLS/SSL connections). Note that a news client which supports the STARTTLS command can also use - the conventional NNTP port 119 to initiate a TLS connection. However, - as such clients are not widespread yet, using the separate port 563 is - still common practice (though discouraged). See nnrpd(8) for more - information about TLS support. + the conventional NNTP port 119 to dynamically upgrade from unencrypted + to TLS-protected traffic during an NNTP session. However, this practice + is discouraged in favour of using the separate port 563. See nnrpd(8) + for more information about TLS support. In the shutdown section of the init script, you can put: @@ -1658,5 +1658,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 10097 2016-11-04 22:19:07Z iulius $ + $Id: install.pod 10179 2017-09-18 20:13:48Z iulius $ diff -Nurp inn-2.6.1/LICENSE inn-2.6.2/LICENSE --- inn-2.6.1/LICENSE 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/LICENSE 2018-03-18 13:03:32.000000000 -0700 @@ -3,7 +3,8 @@ different licenses and/or copyrights is and license: Copyright (c) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, - 2013, 2014, 2015, 2016 by Internet Systems Consortium, Inc. ("ISC") + 2013, 2014, 2015, 2016, 2017, 2018 + by Internet Systems Consortium, Inc. ("ISC") Copyright (c) 1991, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 by The Internet Software Consortium and Rich Salz @@ -30,10 +31,10 @@ files. Specifically (but possibly not c General Public License version 2 or later. See doc/GPL for a copy of the GPL v2. - backends/shrinkfile.c, frontends/scanspool.in, lib/alloca.c, lib/concat.c, - lib/inet_aton.c, lib/inet_ntoa.c, lib/memcmp.c, lib/pread.c, lib/pwrite.c, - lib/setenv.c, lib/seteuid.c, lib/strlcat.c and lib/strlcpy.c are in - the public domain. + backends/shrinkfile.c, frontends/scanspool.in, lib/alloca.c, + lib/concat.c, lib/inet_aton.c, lib/inet_ntoa.c, lib/pread.c, + lib/pwrite.c, lib/setenv.c, lib/seteuid.c, lib/strlcat.c and + lib/strlcpy.c are in the public domain. lib/snprintf.c may be used for any purpose as long as the author's notice remains intact in all source code distributions. diff -Nurp inn-2.6.1/MANIFEST inn-2.6.2/MANIFEST --- inn-2.6.1/MANIFEST 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/MANIFEST 2018-03-18 13:03:32.000000000 -0700 @@ -521,7 +521,6 @@ lib/localopen.c Op lib/lockfile.c Try to lock a file descriptor lib/makedir.c Make directory recursively lib/md5.c MD5 checksum calculation -lib/memcmp.c memcmp replacement lib/messageid.c Functions for message-IDs lib/messages.c Error reporting and debug output lib/mkstemp.c mkstemp replacement @@ -885,6 +884,7 @@ tests/lib/confparse-t.c Te tests/lib/date-t.c Tests for lib/date.c tests/lib/dispatch-t.c Tests for lib/dispatch.c tests/lib/fakewrite.c Helper functions for xwrite tests +tests/lib/fakewrite.h Header file for xwrite helper functions tests/lib/fdflag-t.c Tests for lib/fdflag.c tests/lib/getaddrinfo-t.c Tests for lib/getaddrinfo.c tests/lib/getnameinfo-t.c Tests for lib/getnameinfo.c @@ -898,7 +898,7 @@ tests/lib/inet_ntop-t.c Te tests/lib/innconf-t.c Tests for lib/innconf.c tests/lib/list-t.c Tests for lib/list.c tests/lib/md5-t.c Tests for lib/md5.c -tests/lib/memcmp-t.c Tests for lib/memcmp.c +tests/lib/messageid-t.c Tests for lib/messageid.c tests/lib/messages-t.c Tests for lib/messages.c tests/lib/mkstemp-t.c Tests for lib/mkstemp.c tests/lib/network Test suite for network (Directory) diff -Nurp inn-2.6.1/Makefile.global.in inn-2.6.2/Makefile.global.in --- inn-2.6.1/Makefile.global.in 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/Makefile.global.in 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -## $Id: Makefile.global.in 10040 2016-07-31 20:01:43Z iulius $ +## $Id: Makefile.global.in 10229 2018-01-28 21:21:21Z 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.6.1 +VERSION = 2.6.2 VERSION_EXTRA = ## The absolute path to the top of the build directory, used to find the @@ -78,14 +78,15 @@ CCOUTPUT = @CCOUTPUT@ ## -Wredundant-decls Too much noise from system headers. ## -Wlong-long Too much noise from system headers. ## -Woverlength-strings Useless noise. +## -Wunused-function Noise from embedded Perl (at least with Perl 5.20). ## ## Some may be worth looking at again once a released version of gcc doesn't ## warn on system headers. The warnings below are in the same order as ## they're listed in the gcc manual. ## -## Last checked against gcc 4.7.4 (2014-06-12). +## Last checked against gcc 6.3.0 (2017-11-04). ## Add -g because when building with warnings, one generally also wants the -## debugging information, and add -O2 because gcc won't find some warnings +## debugging information, and add -O3 because gcc won't find some warnings ## without optimization turned on. Add -DDEBUG=1 so that we'll also ## compile all debugging code and check it as well. ## It would be worthwhile trying to enforce the following checks: @@ -96,16 +97,18 @@ CCOUTPUT = @CCOUTPUT@ ## "-Wconversion -Wno-sign-conversion", ## -Wunreachable-code, -Wstack-protector, -Wdeclaration-after-statement -WARNINGS = -g -O2 -DDEBUG=1 -Werror -Wall -Wextra \ - -Winit-self -Wmissing-include-dirs \ - -Wsync-nand -Wendif-labels -Wtrampolines -Wpointer-arith \ +WARNINGS = -g -O3 -DDEBUG=1 -Werror -Wall -Wextra \ + -Wnull-dereference -Winit-self -Wmissing-include-dirs \ + -Wshift-overflow=2 \ + -Wsync-nand -Wmissing-format-attribute -Wduplicated-cond \ + -Wtrampolines -Wpointer-arith \ -Wbad-function-cast -Wcast-align -Wwrite-strings \ -Wjump-misses-init -Wstrict-prototypes \ -Wold-style-definition \ -Wmissing-prototypes -Wmissing-declarations \ -Wmissing-format-attribute \ -Wnormalized=nfc -Wnested-externs -Winline \ - -Winvalid-pch -Wvla + -Winvalid-pch -Wvla -Wno-unused-function ## Some warnings have to be suppressed for Perl, since there's no way to work ## around the Perl header problems in INN code. diff -Nurp inn-2.6.1/NEWS inn-2.6.2/NEWS --- inn-2.6.1/NEWS 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/NEWS 2018-03-18 13:03:32.000000000 -0700 @@ -1,3 +1,59 @@ +Changes in 2.6.2 + + * A new *syntaxchecks* parameter has been added in inn.conf. It permits + to control the level of checks performed by innd and nnrpd. Up to + now, only one check can be enabled/disabled: when *laxmid* is + mentioned in the values of this new parameter, INN accepts Message-IDs + that contain ".." in the left part, as well as Message-IDs with two + "@" (such Message-IDs would otherwise be considered as syntactically + invalid). See the inn.conf(5) man page for more details. + + The check is disabled by default (*no-laxmid*), which corresponds to + the legacy behaviour of INN 2.6.1 and earlier. + + * Use of the ovdb_server helper server is now the default when using the + ovdb overview method, that is to say the default value for the + *readserver* parameter in ovdb.conf is now set to true. It improves + stability and avoids deadlocks, timing issues and corrupted ovdb + databases. + + * mailpost now removes empty header fields before attempting to post + articles, and keeps trace of them in the X-Mailpost-Empty-Hdrs: newly + generated header field body. Also, mailpost now sanitizes header + fields with regards to empty continuation header lines. Thanks to + Kamil Jonca for these bug reports. + + * A new -z parameter has been added to mailpost to mention a list of + header fields to remove from the gated message. Thanks to Dieter + Stussy for the patch. + + * Fixed a bug in inews that was rejecting articles containing header + fields whose length exceeded 998 bytes. This limitation is for the + length of a single line of a header field (and not for the length of + the whole header field, as it was wrongly the case). + + * Added support for GnuPG's gpg binary (in addition to gpgv) in + pgpverify. Indeed, gpg still validates signatures made with weak + digest algorithms like MD5 whereas gpgv no longer do. Thanks to + Thomas Hochstein for the patch, which permits to validate control + articles for hierarchies that are still using old PGP keys. + + * Added similar support for GnuPG's gpg binary in perl-nocem to validate + NoCeM notices from issuers who are still using old PGP keys. + + * A few commands listed in the "Control commands to INND" section in + daily Usenet reports were appearing as a mere letter; all of them are + now properly converted to meaningful words. + + * The *tlsprotocols* parameter in inn.conf now recognizes the "TLSv1.3" + value (for OpenSSL versions implementing TLS 1.3, that is to say + starting from OpenSSL 1.1.1). + + * The buffindexed overview method will now hopefully work properly on + systems with a native page size larger than 16KB. + + * Other minor bug fixes and documentation improvements. + Changes in 2.6.1 * nnrpd now uses -0000 as the time zone for Date: and Injection-Date: @@ -818,8 +874,8 @@ Changes in 2.5.2 groups. Thanks to Andrew Gierth for the patch. * Fixed a bug in innreport leading to incorrect summing of innd stats - when *hostname* was set to an IPv6 address instead of a - fully-qualified domain name. Thanks to Petr Novopashenniy for the bug + when *hostname* was set to an IPv6 address instead of a fully + qualified domain name. Thanks to Petr Novopashenniy for the bug report. * Changed how innreport uses innd and innfeed checkpoint messages. @@ -2218,5 +2274,5 @@ Changes in 2.2.0 * The innshellvars.csh.in script is obsolete (and lives in the obsolete directory, for now). - $Id: news.pod 10127 2016-11-27 13:43:25Z iulius $ + $Id: news.pod 10245 2018-02-16 21:11:59Z iulius $ diff -Nurp inn-2.6.1/README inn-2.6.2/README --- inn-2.6.1/README 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/README 2018-03-18 13:03:32.000000000 -0700 @@ -11,9 +11,10 @@ What is INN? INN (InterNetNews), originally written by Rich Salz, is an extremely flexible and configurable Usenet / Netnews news server. For a complete description of the protocols behind Usenet and Netnews, see RFC 3977 - (NNTP), RFC 4642 (TLS/NNTP), RFC 4643 (NNTP authentication), RFC 4644 - (streaming NNTP feeds), RFC 5536 (USEFOR), RFC 5537 (USEPRO) and - RFC 6048 (NNTP LIST additions) or their replacements. + (NNTP), RFC 4642 updated by RFC 8143 (TLS/NNTP), RFC 4643 (NNTP + authentication), RFC 4644 (streaming NNTP feeds), RFC 5536 (USEFOR), + RFC 5537 (USEPRO), RFC 6048 (NNTP LIST additions) and RFC 8054 (NNTP + compression) or their replacements. In brief, Netnews is a set of protocols for exchanging messages between a decentralized network of news servers. News articles are organized @@ -233,7 +234,7 @@ Related Packages can be found at . GUP (Group Update Program) - URL: + URL: GUP provides a way for your peers to update their newsfeeds entries as they want without having to ask you to edit the configuration @@ -301,5 +302,5 @@ Supporting the INN Effort Katsuhiro Kondou - $Id: readme.pod 10023 2016-05-05 12:50:56Z iulius $ + $Id: readme.pod 10186 2017-11-05 17:49:59Z eagle $ diff -Nurp inn-2.6.1/authprogs/auth_krb5.c inn-2.6.2/authprogs/auth_krb5.c --- inn-2.6.1/authprogs/auth_krb5.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/authprogs/auth_krb5.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,13 +1,13 @@ -/* $Id: auth_krb5.c 9792 2015-03-17 20:10:25Z iulius $ +/* $Id: auth_krb5.c 10266 2018-03-10 14:59:27Z iulius $ ** -** Check an username and password against Kerberos v5. +** Check an username and password against Kerberos. ** ** Based on nnrpkrb5auth by Christopher P. Lindsey ** See ** ** This program takes a username and password pair from nnrpd and checks -** checks their validity against a Kerberos v5 KDC by attempting to obtain a -** TGT. With the -i command line option, appends / to +** their validity against a Kerberos KDC by attempting to obtain a TGT. +** With the -i command line option, appends / to ** the username prior to authentication. ** ** Special thanks to Von Welch for giving me the initial @@ -21,28 +21,123 @@ #include "config.h" #include "clibrary.h" #include "libauth.h" -#ifdef HAVE_ET_COM_ERR_H -# include -#elif defined(HAVE_KERBEROSV5_COM_ERR_H) -# include -#else -# include -#endif -#ifdef HAVE_KRB5_H +#if defined(HAVE_KRB5_H) # include -#elif HAVE_KERBEROSV5_KRB5_H +#elif defined(HAVE_KERBEROSV5_KRB5_H) # include #else # include #endif +/* Figure out what header files to include for error reporting. */ +#if !defined(HAVE_KRB5_GET_ERROR_MESSAGE) && !defined(HAVE_KRB5_GET_ERR_TEXT) +# if !defined(HAVE_KRB5_GET_ERROR_STRING) +# if defined(HAVE_IBM_SVC_KRB5_SVC_H) +# include +# elif defined(HAVE_ET_COM_ERR_H) +# include +# elif defined(HAVE_KERBEROSV5_COM_ERR_H) +# include +# else +# include +# endif +# endif +#endif + #include "inn/messages.h" #include "inn/libinn.h" +#include "inn/xmalloc.h" + +/* + * This string is returned for unknown error messages. We use a static + * variable so that we can be sure not to free it. + */ +#if !defined(HAVE_KRB5_GET_ERROR_MESSAGE) \ + || !defined(HAVE_KRB5_FREE_ERROR_MESSAGE) +static const char error_unknown[] = "unknown error"; +#endif + + +#ifndef HAVE_KRB5_GET_ERROR_MESSAGE +/* + * Given a Kerberos error code, return the corresponding error. Prefer the + * Kerberos interface if available since it will provide context-specific + * error information, whereas the error_message() call will only provide a + * fixed message. + */ +const char * +krb5_get_error_message(krb5_context ctx UNUSED, krb5_error_code code UNUSED) +{ + const char *msg; + +# if defined(HAVE_KRB5_GET_ERROR_STRING) + msg = krb5_get_error_string(ctx); +# elif defined(HAVE_KRB5_GET_ERR_TEXT) + msg = krb5_get_err_text(ctx, code); +# elif defined(HAVE_KRB5_SVC_GET_MSG) + krb5_svc_get_msg(code, (char **) &msg); +# else + msg = error_message(code); +# endif + if (msg == NULL) + return error_unknown; + else + return msg; +} +#endif /* !HAVE_KRB5_GET_ERROR_MESSAGE */ + + +#ifndef HAVE_KRB5_FREE_ERROR_MESSAGE +/* + * Free an error string if necessary. If we returned a static string, make + * sure we don't free it. + * + * This code assumes that the set of implementations that have + * krb5_free_error_message is a subset of those with krb5_get_error_message. + * If this assumption ever breaks, we may call the wrong free function. + */ +void +krb5_free_error_message(krb5_context ctx UNUSED, const char *msg) +{ + if (msg == error_unknown) + return; +# if defined(HAVE_KRB5_GET_ERROR_STRING) + krb5_free_error_string(ctx, (char *) msg); +# elif defined(HAVE_KRB5_SVC_GET_MSG) + krb5_free_string(ctx, (char *) msg); +# endif +} +#endif /* !HAVE_KRB5_FREE_ERROR_MESSAGE */ + + +/* +** Report a Kerberos error to standard error. +*/ +static void __attribute__((__format__(printf, 3, 4))) +warn_krb5(krb5_context ctx, krb5_error_code code, const char *format, ...) +{ + const char *k5_msg; + char *message; + va_list args; + + k5_msg = krb5_get_error_message(ctx, code); + va_start(args, format); + xvasprintf(&message, format, args); + va_end(args); + if (k5_msg == NULL) + warn("%s", message); + else + warn("%s: %s", message, k5_msg); + free(message); + if (k5_msg != NULL) + krb5_free_error_message(ctx, k5_msg); +} + /* ** 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. +** success and 0 on failure. */ static int krb5_check_password(const char *principal, const char *password) @@ -57,13 +152,12 @@ krb5_check_password(const char *principa code = krb5_init_context(&ctx); if (code != 0) { - com_err(message_program_name, code, "initializing krb5 context"); + warn_krb5(NULL, code, "cannot initialize Kerberos"); return 0; } code = krb5_parse_name(ctx, principal, &princ); if (code != 0) { - com_err(message_program_name, code, "parsing principal name %.100s", - principal); + warn_krb5(ctx, code, "cannot parse principal %.100s", principal); goto cleanup; } memset(&opts, 0, sizeof(opts)); @@ -85,16 +179,15 @@ krb5_check_password(const char *principa else { switch (code) { case KRB5KRB_AP_ERR_BAD_INTEGRITY: - com_err(message_program_name, 0, "bad password for %.100s", - principal); + warn("bad password for %.100s", principal); break; case KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN: - com_err(message_program_name, 0, "unknown user %.100s", - principal); + warn("unknown user %.100s", principal); break; default: - com_err(message_program_name, code, - "checking Kerberos password for %.100s", principal); + warn_krb5(ctx, code, "Kerberos authentication for %.100s failed", + principal); + break; } } @@ -132,7 +225,7 @@ main (int argc, char *argv[]) /* May need to prepend instance name if -i option was given. */ if (argc > 1) { if (argc == 3 && strcmp(argv[1], "-i") == 0) { - new_user = concat(authinfo->username, "/", argv[2], (char *) 0); + xasprintf(&new_user, "%s/%s", authinfo->username, argv[2]); free(authinfo->username); authinfo->username = new_user; } else { diff -Nurp inn-2.6.1/backends/actsync.c inn-2.6.2/backends/actsync.c --- inn-2.6.1/backends/actsync.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/backends/actsync.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: actsync.c 10020 2016-05-05 12:46:27Z iulius $ +/* $Id: actsync.c 10182 2017-10-16 04:17:01Z eagle $ * * actsync - sync or merge two active files * @@ -1019,6 +1019,7 @@ get_active(char *host, int hostid, int * if (cur->type[1] == 'g') { cur->type[1] = '\0'; } + /* fallthrough */ case NF_FLAG_MODERATED: case NF_FLAG_JUNK: case NF_FLAG_NOLOCAL: @@ -2578,10 +2579,11 @@ exec_cmd(int mode, const char *cmd, char /* pause if in non-interactive mode so as to not busy-out the server */ if (mode == OUTPUT_EXEC && z_flag > 0) { - if (D_BUG) + if (D_BUG) { warn("sleeping %d seconds before fork/exec", z_flag); /* be sure they know what we are stalling */ fflush(stderr); + } sleep(z_flag); } diff -Nurp inn-2.6.1/backends/innxbatch.c inn-2.6.2/backends/innxbatch.c --- inn-2.6.1/backends/innxbatch.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/backends/innxbatch.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: innxbatch.c 9841 2015-05-02 16:27:37Z iulius $ +/* $Id: innxbatch.c 10153 2017-06-05 12:28:01Z iulius $ ** ** Transmit batches to remote site, using the XBATCH command ** Modelled after innxmit.c and nntpbatch.c @@ -76,6 +76,11 @@ static unsigned long STATrefused; static unsigned long STATrejected; /* +** Prototypes. +*/ +static void ExitWithStats(int) __attribute__ ((__noreturn__)); + +/* ** Send a line to the server. \r\n will be appended */ static bool diff -Nurp inn-2.6.1/backends/innxmit.c inn-2.6.2/backends/innxmit.c --- inn-2.6.1/backends/innxmit.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/backends/innxmit.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: innxmit.c 9911 2015-07-04 21:32:56Z iulius $ +/* $Id: innxmit.c 10153 2017-06-05 12:28:01Z iulius $ ** ** Transmit articles to remote site. ** Modified for NNTP streaming: 1996-01-03 Jerry Aguirre. @@ -148,6 +148,9 @@ static double STATrejectedsize; */ static ARTHANDLE *article_open(const char *path, const char *id); static void article_free(ARTHANDLE *); +static void Usage(void) __attribute__ ((__noreturn__)); +static void RequeueRestAndExit(char *, char *) __attribute__ ((__noreturn__)); +static void ExitWithStats(int) __attribute__ ((__noreturn__)); /* diff -Nurp inn-2.6.1/backends/nntpget.c inn-2.6.2/backends/nntpget.c --- inn-2.6.1/backends/nntpget.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/backends/nntpget.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: nntpget.c 10009 2016-05-05 12:39:19Z iulius $ +/* $Id: nntpget.c 10153 2017-06-05 12:28:01Z iulius $ ** ** Connect to a remote site, and get news from it to offer to our local ** server. Read list on stdin, or get it via NEWNEWS command. Writes @@ -55,6 +55,12 @@ static unsigned long STATrejected; static struct history *History; +/* +** Prototypes. +*/ +static void Usage(const char *) __attribute__ ((__noreturn__)); + + /* ** Read a line of input, with timeout. diff -Nurp inn-2.6.1/backends/shlock.c inn-2.6.2/backends/shlock.c --- inn-2.6.1/backends/shlock.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/backends/shlock.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: shlock.c 9911 2015-07-04 21:32:56Z iulius $ +/* $Id: shlock.c 10153 2017-06-05 12:28:01Z iulius $ ** ** Produce reliable locks for shell scripts, by Peter Honeyman as told ** to Rich $alz. @@ -18,6 +18,7 @@ static bool BinaryLock; static bool JustChecking; +static void Usage(void) __attribute__ ((__noreturn__)); #define CANTUNLINK "shlock: Can't unlink \"%s\", %s" #define CANTOPEN "shlock: Can't open \"%s\", %s" diff -Nurp inn-2.6.1/backends/shrinkfile.c inn-2.6.2/backends/shrinkfile.c --- inn-2.6.1/backends/shrinkfile.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/backends/shrinkfile.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: shrinkfile.c 7585 2006-11-21 09:37:51Z eagle $ +/* $Id: shrinkfile.c 10153 2017-06-05 12:28:01Z iulius $ ** ** Shrink files on line boundaries. ** @@ -36,6 +36,8 @@ #define MAX_SIZE 0x7fffffffUL +static void Usage(void) __attribute__ ((__noreturn__)); + /* ** Open a safe unique temporary file that will go away when closed. diff -Nurp inn-2.6.1/configure inn-2.6.2/configure --- inn-2.6.1/configure 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/configure 2018-03-18 13:03:32.000000000 -0700 @@ -1,7 +1,7 @@ #! /bin/sh -# From configure.ac Revision: 10046 . +# From configure.ac Revision: 10266 . # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for INN 2.6.1. +# Generated by GNU Autoconf 2.69 for INN 2.6.2. # # Report bugs to . # @@ -591,8 +591,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='INN' PACKAGE_TARNAME='inn' -PACKAGE_VERSION='2.6.1' -PACKAGE_STRING='INN 2.6.1' +PACKAGE_VERSION='2.6.2' +PACKAGE_STRING='INN 2.6.2' PACKAGE_BUGREPORT='inn-workers@lists.isc.org' PACKAGE_URL='https://www.isc.org/downloads/projects/' @@ -667,6 +667,7 @@ LIBOBJS PATH_GETFTP DO_PGPVERIFY PGP +GPG GPGV UNCOMPRESS GZIP @@ -782,6 +783,7 @@ infodir docdir oldincludedir includedir +runstatedir localstatedir sharedstatedir sysconfdir @@ -882,6 +884,7 @@ CAT COMPRESS GZIP GPGV +GPG PGP PATH_KRB5_CONFIG' @@ -922,6 +925,7 @@ datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -1174,6 +1178,15 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1311,7 +1324,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir + libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1424,7 +1437,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures INN 2.6.1 to adapt to many kinds of systems. +\`configure' configures INN 2.6.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1464,6 +1477,7 @@ Fine tuning of the installation director --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -1489,7 +1503,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of INN 2.6.1:";; + short | recursive ) echo "Configuration of INN 2.6.2:";; esac cat <<\_ACEOF @@ -1593,6 +1607,7 @@ Some influential environment variables: COMPRESS Location of compress program GZIP Location of gzip program GPGV Location of GnuPG gpgv program + GPG Location of GnuPG gpg program PGP Location of PGP verification program PATH_KRB5_CONFIG Path to krb5-config @@ -1664,7 +1679,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -INN configure 2.6.1 +INN configure 2.6.2 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2503,7 +2518,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by INN $as_me 2.6.1, which was +It was created by INN $as_me 2.6.2, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -4769,10 +4784,6 @@ ac_configure="$SHELL $ac_aux_dir/configu - - - - test x"$prefix" = xNONE && prefix="$ac_default_prefix" ac_ext=c @@ -15732,7 +15743,8 @@ fi DO_PGPVERIFY=true -for ac_prog in gpgv2 gpgv + +for ac_prog in gpgv1 gpgv gpgv2 do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -15777,6 +15789,51 @@ fi test -n "$GPGV" && break done +for ac_prog in gpg1 gpg gpg2 +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_GPG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $GPG in + [\\/]* | ?:[\\/]*) + ac_cv_path_GPG="$GPG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_GPG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +GPG=$ac_cv_path_GPG +if test -n "$GPG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GPG" >&5 +$as_echo "$GPG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$GPG" && break +done + for ac_prog in pgpv pgp pgpgpg do # Extract the first word of "$ac_prog", so it can be a program name with args. @@ -15822,7 +15879,7 @@ fi test -n "$PGP" && break done -if test -z "$PGP" && test -z "$GPGV" ; then +if test -z "$PGP" && test -z "$GPGV" && test -z "$GPG" ; then DO_PGPVERIFY=false fi @@ -16746,48 +16803,6 @@ if test "${enable_reduced_depends+set}" fi fi - - # Extract the first word of "krb5-config", so it can be a program name with args. -set dummy krb5-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_PATH_KRB5_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $PATH_KRB5_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PATH_KRB5_CONFIG="$PATH_KRB5_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="${PATH}:/usr/kerberos/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_PATH_KRB5_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PATH_KRB5_CONFIG=$ac_cv_path_PATH_KRB5_CONFIG -if test -n "$PATH_KRB5_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PATH_KRB5_CONFIG" >&5 -$as_echo "$PATH_KRB5_CONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - inn_krb5_root= inn_krb5_libdir= inn_krb5_includedir= @@ -17183,13 +17198,54 @@ done LIBS="$inn_krb5_save_LIBS" else if test x"$inn_krb5_includedir" = x && test x"$inn_krb5_libdir" = x; then : - - inn_krb5_config_KRB5= + inn_krb5_config_KRB5= inn_krb5_config_KRB5_ok= if test x"${inn_krb5_root}" != x && test -x "${inn_krb5_root}/bin/krb5-config"; then : inn_krb5_config_KRB5="${inn_krb5_root}/bin/krb5-config" else - inn_krb5_config_KRB5="$PATH_KRB5_CONFIG" + + # Extract the first word of "krb5-config", so it can be a program name with args. +set dummy krb5-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PATH_KRB5_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $PATH_KRB5_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PATH_KRB5_CONFIG="$PATH_KRB5_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_dummy="${PATH}:/usr/kerberos/bin" +for as_dir in $as_dummy +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PATH_KRB5_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +PATH_KRB5_CONFIG=$ac_cv_path_PATH_KRB5_CONFIG +if test -n "$PATH_KRB5_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PATH_KRB5_CONFIG" >&5 +$as_echo "$PATH_KRB5_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + inn_krb5_config_KRB5="$PATH_KRB5_CONFIG" fi if test x"$inn_krb5_config_KRB5" != x && test -x "$inn_krb5_config_KRB5"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5 support in krb5-config" >&5 @@ -20849,13 +20905,54 @@ done LIBS="$inn_krb5_save_LIBS" else if test x"$inn_krb5_includedir" = x && test x"$inn_krb5_libdir" = x; then : - - inn_krb5_config_KRB5= + inn_krb5_config_KRB5= inn_krb5_config_KRB5_ok= if test x"${inn_krb5_root}" != x && test -x "${inn_krb5_root}/bin/krb5-config"; then : inn_krb5_config_KRB5="${inn_krb5_root}/bin/krb5-config" else - inn_krb5_config_KRB5="$PATH_KRB5_CONFIG" + + # Extract the first word of "krb5-config", so it can be a program name with args. +set dummy krb5-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PATH_KRB5_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $PATH_KRB5_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PATH_KRB5_CONFIG="$PATH_KRB5_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_dummy="${PATH}:/usr/kerberos/bin" +for as_dir in $as_dummy +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PATH_KRB5_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +PATH_KRB5_CONFIG=$ac_cv_path_PATH_KRB5_CONFIG +if test -n "$PATH_KRB5_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PATH_KRB5_CONFIG" >&5 +$as_echo "$PATH_KRB5_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + inn_krb5_config_KRB5="$PATH_KRB5_CONFIG" fi if test x"$inn_krb5_config_KRB5" != x && test -x "$inn_krb5_config_KRB5"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5 support in krb5-config" >&5 @@ -25136,52 +25233,7 @@ $as_echo "#define HAVE_ZLIB 1" >>confdef fi if test x"$inn_use_KRB5" = xtrue; then : - for ac_header in et/com_err.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "et/com_err.h" "ac_cv_header_et_com_err_h" "$ac_includes_default" -if test "x$ac_cv_header_et_com_err_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_ET_COM_ERR_H 1 -_ACEOF - KRB5_AUTH=auth_krb5 -else - for ac_header in kerberosv5/com_err.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "kerberosv5/com_err.h" "ac_cv_header_kerberosv5_com_err_h" "$ac_includes_default" -if test "x$ac_cv_header_kerberosv5_com_err_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_KERBEROSV5_COM_ERR_H 1 -_ACEOF - KRB5_AUTH=auth_krb5 -else - for ac_header in com_err.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "com_err.h" "ac_cv_header_com_err_h" "$ac_includes_default" -if test "x$ac_cv_header_com_err_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_COM_ERR_H 1 -_ACEOF - KRB5_AUTH=auth_krb5 -else - if test x"$with_krb5" = x; then : - KRB5_CPPFLAGS= - KRB5_LDFLAGS= - KRB5_LIBS= -else - as_fn_error $? "cannot find usable com_err header" "$LINENO" 5 -fi -fi - -done - -fi - -done - -fi - -done - + KRB5_AUTH=auth_krb5 fi @@ -25795,7 +25847,7 @@ fi for ac_header in crypt.h inttypes.h limits.h \ - stdint.h sys/bitypes.h sys/filio.h sys/loadavg.h \ + stdint.h strings.h sys/bitypes.h sys/filio.h sys/loadavg.h \ sys/select.h sys/time.h sys/uio.h syslog.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` @@ -27145,40 +27197,6 @@ cat >>confdefs.h <<_ACEOF _ACEOF fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SA_LEN macro" >&5 -$as_echo_n "checking for SA_LEN macro... " >&6; } -if ${inn_cv_sa_len_macro+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include - -int -main(void) -{ - struct sockaddr sa; - int x = SA_LEN(&sa); -} - -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - inn_cv_sa_len_macro=yes -else - inn_cv_sa_len_macro=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $inn_cv_sa_len_macro" >&5 -$as_echo "$inn_cv_sa_len_macro" >&6; } - if test x"$inn_cv_sa_len_macro" = xyes; then : - -$as_echo "#define HAVE_SA_LEN 1" >>confdefs.h - -fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SUN_LEN macro" >&5 $as_echo_n "checking for SUN_LEN macro... " >&6; } if ${inn_cv_sun_len_macro+:} false; then : @@ -27400,68 +27418,6 @@ _ACEOF fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working memcmp" >&5 -$as_echo_n "checking for working memcmp... " >&6; } -if ${ac_cv_func_memcmp_working+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - ac_cv_func_memcmp_working=no -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ - - /* Some versions of memcmp are not 8-bit clean. */ - char c0 = '\100', c1 = '\200', c2 = '\201'; - if (memcmp(&c0, &c2, 1) >= 0 || memcmp(&c1, &c2, 1) >= 0) - return 1; - - /* The Next x86 OpenStep bug shows up only when comparing 16 bytes - or more and with at least one buffer not starting on a 4-byte boundary. - William Lewis provided this test program. */ - { - char foo[21]; - char bar[21]; - int i; - for (i = 0; i < 4; i++) - { - char *a = foo + i; - char *b = bar + i; - strcpy (a, "--------01111111"); - strcpy (b, "--------10000000"); - if (memcmp (a, b, 16) >= 0) - return 1; - } - return 0; - } - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_func_memcmp_working=yes -else - ac_cv_func_memcmp_working=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_memcmp_working" >&5 -$as_echo "$ac_cv_func_memcmp_working" >&6; } -test $ac_cv_func_memcmp_working = no && case " $LIBOBJS " in - *" memcmp.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS memcmp.$ac_objext" - ;; -esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working AI_ADDRCONFIG flag" >&5 $as_echo_n "checking for working AI_ADDRCONFIG flag... " >&6; } if ${inn_cv_func_getaddrinfo_addrconfig_works+:} false; then : @@ -29030,7 +28986,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_wri # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by INN $as_me 2.6.1, which was +This file was extended by INN $as_me 2.6.2, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -29097,7 +29053,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -INN config.status 2.6.1 +INN config.status 2.6.2 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -Nurp inn-2.6.1/configure.ac inn-2.6.2/configure.ac --- inn-2.6.1/configure.ac 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/configure.ac 2018-03-18 13:03:32.000000000 -0700 @@ -1,5 +1,5 @@ dnl Process this file with Autoconf to produce a configure script. -dnl $Id: configure.ac 10046 2016-08-04 20:04:04Z iulius $ +dnl $Id: configure.ac 10266 2018-03-10 14:59:27Z 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,10 +26,10 @@ dnl bother checking for it. Compile-tim dnl useful information for someone debugging a problem than configure-time dnl errors. -AC_INIT([INN], [2.6.1], [inn-workers@lists.isc.org], +AC_INIT([INN], [2.6.2], [inn-workers@lists.isc.org], [inn], [https://www.isc.org/downloads/projects/]) AC_PREREQ([2.64]) -AC_REVISION([$Revision: 10046 $]) +AC_REVISION([$Revision: 10266 $]) AC_CONFIG_AUX_DIR([support]) dnl Lots of our macros are stored in separate files for ease of maintenance. @@ -315,10 +315,12 @@ dnl have pgpgpg and not gpgv, but it doe dnl GnuPG (which we prefer). DO_PGPVERIFY=true AC_ARG_VAR([GPGV], [Location of GnuPG gpgv program]) +AC_ARG_VAR([GPG], [Location of GnuPG gpg program]) AC_ARG_VAR([PGP], [Location of PGP verification program]) -AC_PATH_PROGS([GPGV], [gpgv2 gpgv]) +AC_PATH_PROGS([GPGV], [gpgv1 gpgv gpgv2]) +AC_PATH_PROGS([GPG], [gpg1 gpg gpg2]) AC_PATH_PROGS([PGP], [pgpv pgp pgpgpg]) -if test -z "$PGP" && test -z "$GPGV" ; then +if test -z "$PGP" && test -z "$GPGV" && test -z "$GPG" ; then DO_PGPVERIFY=false fi AC_SUBST([DO_PGPVERIFY]) @@ -392,18 +394,8 @@ INN_LIB_SASL_OPTIONAL INN_LIB_ZLIB_OPTIONAL dnl If Kerberos is found, define KRB5_AUTH to auth_krb5 so as to build -dnl that program. In case neither et/com_err.h nor kerberosv5/com_err.h -dnl nor com_err.h can be found and --with-krb5 is not given, do not define -dnl KRB5_AUTH and clear the other variables set for Kerberos support. -AS_IF([test x"$inn_use_KRB5" = xtrue], - [AC_CHECK_HEADERS([et/com_err.h], [KRB5_AUTH=auth_krb5], - [AC_CHECK_HEADERS([kerberosv5/com_err.h], [KRB5_AUTH=auth_krb5], - [AC_CHECK_HEADERS([com_err.h], [KRB5_AUTH=auth_krb5], - [AS_IF([test x"$with_krb5" = x], - [KRB5_CPPFLAGS= - KRB5_LDFLAGS= - KRB5_LIBS=], - [AC_MSG_ERROR([cannot find usable com_err header])])])])])]) +dnl that program. +AS_IF([test x"$inn_use_KRB5" = xtrue], [KRB5_AUTH=auth_krb5]) AC_SUBST([KRB5_AUTH]) dnl If Berkeley DB is found, check the presence of its header and whether the @@ -529,7 +521,7 @@ AC_HEADER_STDBOOL dnl Generic checks for header files. AC_CHECK_HEADERS([crypt.h inttypes.h limits.h \ - stdint.h sys/bitypes.h sys/filio.h sys/loadavg.h \ + stdint.h strings.h sys/bitypes.h sys/filio.h sys/loadavg.h \ sys/select.h sys/time.h sys/uio.h syslog.h unistd.h]) dnl Some Linux systems have db1/ndbm.h instead of ndbm.h. Others have @@ -618,12 +610,10 @@ AC_CHECK_TYPES([struct sockaddr_storage] dnl Checks for macros. INN_MACRO_IN6_ARE_ADDR_EQUAL INN_MACRO_IOV_MAX -INN_MACRO_SA_LEN INN_MACRO_SUN_LEN dnl Checks for library functions. AC_FUNC_ALLOCA -AC_FUNC_MEMCMP INN_FUNC_GETADDRINFO_ADDRCONFIG INN_FUNC_INET_NTOA INN_FUNC_SNPRINTF diff -Nurp inn-2.6.1/contrib/sample.init.script inn-2.6.2/contrib/sample.init.script --- inn-2.6.1/contrib/sample.init.script 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/contrib/sample.init.script 2018-03-18 13:03:32.000000000 -0700 @@ -1,6 +1,6 @@ #! /bin/sh -# $Id: sample.init.script 9598 2014-02-08 13:48:49Z iulius $ +# $Id: sample.init.script 10148 2017-06-05 12:24:07Z iulius $ # # This is a simple, bare-bones example of a SysV-style init.d script for INN. # It tries to increase the file descriptor limits to the maximum allowed by @@ -13,8 +13,6 @@ start () { # Start INN. su news -s /bin/sh -c '/rc.news' >> /rc.news 2>&1 # Start another nnrpd daemon, handling initial TLS connections, on port 563. - # (The preferred way would be to use port 119 and STARTTLS but not all news - # readers support it yet.) #su news -s /bin/sh -c '/nnrpd -D -p 563 -S' >> /rc.news 2>&1 } diff -Nurp inn-2.6.1/control/perl-nocem.in inn-2.6.2/control/perl-nocem.in --- inn-2.6.1/control/perl-nocem.in 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/control/perl-nocem.in 2018-03-18 13:03:32.000000000 -0700 @@ -63,8 +63,8 @@ if ($use_syslog) { openlog('nocem', '', $INN::Config::syslog_facility); } -if (not $INN::Config::gpgv) { - logmsg('cannot find the gpgv binary', 'err'); +if (not $INN::Config::gpgv and not $INN::Config::gpg) { + logmsg('cannot find the gpgv or gpg binary', 'err'); sleep 5; exit 1; } @@ -286,8 +286,14 @@ sub pgp_check { } if ($pid == 0) { open(STDERR, '>&STDOUT'); - exec($INN::Config::gpgv, '--status-fd=1', - $keyring ? '--keyring=' . $keyring : '', $art); + if ($INN::Config::gpg) { + exec($INN::Config::gpg, '--status-fd=1', + '--verify', '--allow-weak-digest-algos', + $keyring ? '--keyring=' . $keyring : '', $art); + } else { + exec($INN::Config::gpgv, '--status-fd=1', + $keyring ? '--keyring=' . $keyring : '', $art); + } exit 126; } @@ -298,7 +304,11 @@ sub pgp_check { if ($? >> 8) { $status = $? >> 8; } else { - logmsg("Article $msgid: $INN::Config::gpgv killed by signal " . ($? & 255)); + if ($INN::Config::gpg) { + logmsg("Article $msgid: $INN::Config::gpg killed by signal " . ($? & 255)); + } else { + logmsg("Article $msgid: $INN::Config::gpgv killed by signal " . ($? & 255)); + } return 0; } } @@ -322,8 +332,13 @@ sub pgp_check { # some other error we don't know about happened. # 126 is returned by the child if exec fails. s/ at \S+ line \d+\.\n$//; s/\n/_/; - logmsg("Article $msgid: $INN::Config::gpgv exited " - . (($status == 126) ? "($_)" : "with status $status"), 'err'); + if ($INN::Config::gpg) { + logmsg("Article $msgid: $INN::Config::gpg exited " + . (($status == 126) ? "($_)" : "with status $status"), 'err'); + } else { + logmsg("Article $msgid: $INN::Config::gpgv exited " + . (($status == 126) ? "($_)" : "with status $status"), 'err'); + } } return 0; } @@ -628,10 +643,10 @@ Copyright 2000 by Miquel van Smoorenburg Copyright 2001 by Marco d'Itri . -$Id: perl-nocem.in 10076 2016-10-08 20:37:36Z iulius $ +$Id: perl-nocem.in 10245 2018-02-16 21:11:59Z iulius $ =head1 SEE ALSO -gpgv(1), grephistory(1), inn.conf(5), newsfeeds(5), pgp(1). +gpg(1), gpgv(1), grephistory(1), inn.conf(5), newsfeeds(5), pgp(1). =cut diff -Nurp inn-2.6.1/control/pgpverify.in inn-2.6.2/control/pgpverify.in --- inn-2.6.1/control/pgpverify.in 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/control/pgpverify.in 2018-03-18 13:03:32.000000000 -0700 @@ -4,7 +4,7 @@ # # Written April 1996, (David C Lawrence) # Currently maintained by Russ Allbery -# Version 1.29, 2014-04-15 +# Version 1.30, 2018-01-21 # # NOTICE TO INN MAINTAINERS: The version that is shipped with INN is the # same as the version that I make available to the rest of the world @@ -16,6 +16,11 @@ # me about it; I want to know what old versions of Perl are still used in # practice. # +# Changes from 1.29 -> 1.30 +# -- Support for GnuPG's gpg binary (in addition to gpgv). Indeed, gpg +# still validates signatures made with weak digest algorithms like MD5 +# whereas current versions of gpgv no longer do. +# # Changes from 1.28 -> 1.29 # -- Disambiguate numbered lists from description lists in POD to silent # a pod2man warning. @@ -129,6 +134,12 @@ # -- Checks to ensure that the temporary file is really a file, and # not a link or some other weirdness. +# Path to the GnuPG gpg binary, if you have GnuPG and don't want to use +# gpgv. This will be used in preference to gpgv and PGP. If you have INN +# and the script is able to successfully include your INN::Config module, +# the value of $INN::Config::gpg will override this. +# $gpg = '/usr/local/bin/gpg'; + # Path to the GnuPG gpgv binary, if you have GnuPG. If you do, this will # be used in preference to PGP. For most current control messages, you # need a version of GnuPG that can handle RSA signatures. If you have INN @@ -203,7 +214,7 @@ $log_date = -t STDOUT; # Do it if STDOUT require 5; use strict; -use vars qw($gpgv $pgp $keyring $tmp $tmpdir $lockdir $syslog_method +use vars qw($gpg $gpgv $pgp $keyring $tmp $tmpdir $lockdir $syslog_method $syslog_facility $syslog_level $log_date $findid $test $messageid); use Fcntl qw(O_WRONLY O_CREAT O_EXCL); @@ -225,6 +236,7 @@ GetOptions( $pgp = $INN::Config::pgp if $INN::Config::pgp && $INN::Config::pgp ne "no-pgp-found-during-configure"; $gpgv = $INN::Config::gpgv if $INN::Config::gpgv; +$gpg = $INN::Config::gpg if $INN::Config::gpg; $tmp = ($INN::Config::pathtmp ? $INN::Config::pathtmp : $tmpdir) . "/pgp$$"; $lockdir = $INN::Config::locks if $INN::Config::locks; $syslog_facility = $INN::Config::syslog_facility if $INN::Config::syslog_facility; @@ -236,7 +248,11 @@ if (! $keyring && $INN::Config::newsetc) $0 =~ s%^.*/%%; # Make sure that the signature verification program can be executed. -if ($gpgv) { +if ($gpg) { + if (! -x $gpg) { + &fail("$0: $gpg: " . (-e _ ? "cannot execute" : "no such file") . "\n"); + } +} elsif ($gpgv) { if (! -x $gpgv) { &fail("$0: $gpgv: " . (-e _ ? "cannot execute" : "no such file") . "\n"); } @@ -259,7 +275,7 @@ if ($test) { # should, and the consequences of a multiprocess conflict is failure to # verify. my $lock; -unless ($gpgv) { +unless ($gpg or $gpgv) { $lock = "$lockdir/LOCK.$0"; until (&shlock($lock) > 0) { sleep(2); @@ -268,7 +284,7 @@ unless ($gpgv) { # Verify the message. my ($ok, $signer) = pgp_verify($signature, $version, $message); -unless ($gpgv) { +unless ($gpg or $gpgv) { unlink ($lock) or &errmsg("$0: unlink $lock: $!\n"); } print "$signer\n" if $signer; @@ -388,8 +404,8 @@ sub pgp_verify { # Ignore SIGPIPE, since we're going to be talking to PGP. local $SIG{PIPE} = 'IGNORE'; - # Set the PGP style based on whether $gpgv is set. - my $pgpstyle = ($gpgv ? 'GPG' : 'PGP2'); + # Set the PGP style based on whether $gpg or $gpgv is set. + my $pgpstyle = ($gpg || $gpgv ? 'GPG' : 'PGP2'); # Because this is a detached signature, we actually need to save both # the signature and the data to files and then run PGP on the signature @@ -439,7 +455,12 @@ sub pgp_verify { # Figure out what command line we'll be using. my @command; if ($pgpstyle eq 'GPG') { - @command = ($gpgv, qw/--quiet --status-fd=1 --logger-fd=1/); + if ($gpg) { + @command = ($gpg, qw/--verify --allow-weak-digest-algos/); + push (@command, qw/--quiet --status-fd=1 --logger-fd=1/); + } else { + @command = ($gpgv, qw/--quiet --status-fd=1 --logger-fd=1/); + } } else { @command = ($pgp, '+batchmode', '+language=en'); } @@ -733,8 +754,8 @@ signatures). If that directory doesn't the default key ring, which is in a F<.pgp> or F<.gnupg> subdirectory of the running user's home directory. -INN, when using GnuPG, configures B to use B, which by -default expects keys to be in a keyring named F, since it +INN, when using GnuPG, configures B to use B or B, which +by default expects keys to be in a keyring named F, since it doesn't implement trust checking directly. B uses that file if present but falls back to F if it's not found. This bypasses the trust model for checking keys, but is compatible with the way that @@ -801,12 +822,12 @@ A problem occurred not directly related =head1 ENVIRONMENT B does not modify or otherwise alter the environment before -invoking the B or B program. It is the responsibility of the -person who installs B to ensure that when B or B -runs, it has the ability to locate and read a PGP key file that contains -the PGP public keys for the appropriate Usenet hierarchy administrators. -B can be pointed to an appropriate key ring by editing -variables at the beginning of this script. +invoking the B, B or B program. It is the responsibility of +the person who installs B to ensure that when B, B or +B runs, it has the ability to locate and read a PGP key file that +contains the PGP public keys for the appropriate Usenet hierarchy +administrators. B can be pointed to an appropriate key ring by +editing variables at the beginning of this script. =head1 NOTES @@ -908,7 +929,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBI =head1 SEE ALSO -gpgv(1), pgp(1). +gpg(1), gpgv(1), pgp(1). L is where the most recent versions of B and B live, along with PGP public keys used for diff -Nurp inn-2.6.1/doc/FAQ inn-2.6.2/doc/FAQ --- inn-2.6.1/doc/FAQ 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/FAQ 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -$Id: FAQ 10131 2016-11-27 13:57:13Z iulius $ +$Id: FAQ 10272 2018-03-18 14:08:51Z iulius $ From: Russ Allbery Subject: INN 2.x FAQ @@ -112,9 +112,10 @@ The README that comes with INN has this INN (InterNetNews), originally written by Rich Salz, is an extremely flexible and configurable Usenet / Netnews news server. For a complete description of the protocols behind Usenet and Netnews, see RFC 3977 - (NNTP), RFC 4642 (TLS/NNTP), RFC 4643 (NNTP authentication), RFC 4644 - (streaming NNTP feeds), RFC 5536 (USEFOR), RFC 5537 (USEPRO) and RFC - 6048 (NNTP LIST additions) or their replacements. + (NNTP), RFC 4642 updated by RFC 8143 (TLS/NNTP), RFC 4643 (NNTP + authentication), RFC 4644 (streaming NNTP feeds), RFC 5536 (USEFOR), + RFC 5537 (USEPRO), RFC 6048 (NNTP LIST additions) and RFC 8054 (NNTP + compression) or their replacements. In brief, Netnews is a set of protocols for exchanging messages between a decentralized network of news servers. News articles are organized @@ -132,13 +133,13 @@ The README that comes with INN has this For a more complete answer, see that file. A full description of what Usenet and Netnews are is beyond the scope of this document; for a beginner's introduction, see the news.newusers.questions home page at -. +. ------------------------------ Subject: 1.2. What is the current version? -The most recently released version of INN is 2.6.1. +The most recently released version of INN is 2.6.2. INN development proceeds in two branches, as with many other free software projects. The STABLE branch is maintenance of the most recently released @@ -1111,13 +1112,20 @@ articles older than artcutoff in inn.con You may also want to set xrefslave to true in inn.conf and then restart INN on the new server if you want to keep the same article numbers as you -had on the old server. +had on the old server. (It is notably helpful for news clients because +they otherwise get confused by an article renumbering in newsgroups they +are subscribed to.) Next, make sure that the old server is listed in incoming.conf of the new server, and reload incoming.conf with ctlinnd to pick up that change. Also make sure that the new server carries exactly the same set of newsgroups as the old server. +You may also want the new server not to propagate the articles it will +receive during this feeding operation, by checking that the newsfeeds +file of the new server is not configured to propagate articles to other +peers or controlchan (otherwise old control articles may be reprocessed). + Then try these commands (a variation on commands posted by Katsuhiro Kondou to inn-workers) on the old server: @@ -1151,6 +1159,9 @@ can then be used to retrieve a subset of | tr . / > /list innxmit server list +If innxmit stops transferring articles (with for instance an error like +"rewriting batch file and exiting"), just re-execute it. + When done, set xrefslave to false in inn.conf again if you changed it and then either restart INN on the new server (necessary if you changed xrefslave) or use another ctlinnd param command to set the cutoff value diff -Nurp inn-2.6.1/doc/checklist inn-2.6.2/doc/checklist --- inn-2.6.1/doc/checklist 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/checklist 2018-03-18 13:03:32.000000000 -0700 @@ -1,6 +1,6 @@ Introduction - $Id: checklist.pod 10097 2016-11-04 22:19:07Z iulius $ + $Id: checklist.pod 10257 2018-03-08 16:17:55Z iulius $ This is an installation checklist written by Rebecca Ore, intended to be the beginning of a different presentation of the information in INSTALL, @@ -132,7 +132,7 @@ Configure configure the process of newsgroup control messages (see the corresponding section in INSTALL). - * Run "inncheck -a -v -f --pedantic --perm" and + * Run "/inncheck -a -v -f --pedantic --perm" and fix anything noted: inncheck gives a rough check on the appropriateness of the configuration files as you go. (It's the equivalent of "perl -cw yourfile.pl" for Perl scripts.) @@ -280,8 +280,9 @@ Readers su news -s /bin/sh -c '/nnrpd -D -c /readers-ssl.conf -p 563 -S' Note that a news client which supports the STARTTLS command can also - use the conventional NNTP port 119 to initiate a TLS connection. - However, as such clients are not widespread yet, using the separate - port 563 is still common practice (though discouraged). See - nnrpd(8) for more information about TLS support. + use the conventional NNTP port 119 to dynamically upgrade from + unencrypted to TLS-protected traffic during an NNTP session. + However, this practice is discouraged in favour of using the + separate port 563. See nnrpd(8) for more information about TLS + support. diff -Nurp inn-2.6.1/doc/hook-perl inn-2.6.2/doc/hook-perl --- inn-2.6.1/doc/hook-perl 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/hook-perl 2018-03-18 13:03:32.000000000 -0700 @@ -86,7 +86,7 @@ The innd Perl Filter Comments, Content-Base, Content-Disposition, Content-Transfer-Encoding, Content-Type, Control, Date, Date-Received, Distribution, Expires, Face, Followup-To, From, In-Reply-To, Injection-Date, Injection-Info, - Keywords, Lines, List-ID, Message-ID, MIME-Version, Newsgroups, + Jabber-ID, Keywords, Lines, List-ID, Message-ID, MIME-Version, Newsgroups, NNTP-Posting-Date, NNTP-Posting-Host, NNTP-Posting-Path, Organization, Original-Sender, Originator, Path, Posted, Posting-Version, Received, References, Relay-Version, @@ -644,5 +644,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 9917 2015-07-07 16:37:51Z iulius $ + $Id: hook-perl.pod 10263 2018-03-10 14:51:53Z iulius $ diff -Nurp inn-2.6.1/doc/hook-python inn-2.6.2/doc/hook-python --- inn-2.6.1/doc/hook-python 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/hook-python 2018-03-18 13:03:32.000000000 -0700 @@ -71,7 +71,7 @@ Writing an innd Filter Comments, Content-Base, Content-Disposition, Content-Transfer-Encoding, Content-Type, Control, Date, Date-Received, Distribution, Expires, Face, Followup-To, From, In-Reply-To, Injection-Date, Injection-Info, - Keywords, Lines, List-ID, Message-ID, MIME-Version, Newsgroups, + Jabber-ID, Keywords, Lines, List-ID, Message-ID, MIME-Version, Newsgroups, NNTP-Posting-Date, NNTP-Posting-Host, NNTP-Posting-Path, Organization, Original-Sender, Originator, Path, Posted, Posting-Version, Received, References, Relay-Version, @@ -656,5 +656,5 @@ Available Packages Cleanfeed, an extremely powerful spam filter on Usenet. It uses filter_innd.py. - $Id: hook-python.pod 9899 2015-06-14 11:44:57Z iulius $ + $Id: hook-python.pod 10263 2018-03-10 14:51:53Z iulius $ diff -Nurp inn-2.6.1/doc/man/INN__Config.3pm inn-2.6.2/doc/man/INN__Config.3pm --- inn-2.6.1/doc/man/INN__Config.3pm 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/INN__Config.3pm 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "INN::Config 3pm" -.TH INN::Config 3pm "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH INN::Config 3pm "2018-03-18" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -220,7 +216,7 @@ module. for InterNetNews in 1996. It was converted to the INN::Config Perl module by Julien Elie in 2007. .PP -\&\f(CW$Id:\fR Config.pm.in 9567 2013\-11\-17 20:24:35Z iulius $ +\&\f(CW$Id:\fR Config.pm.in 10245 2018\-02\-16 21:11:59Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIinn.conf\fR\|(5), \fIinnconfval\fR\|(1), \fIperl\fR\|(1). diff -Nurp inn-2.6.1/doc/man/INN__Utils__Shlock.3pm inn-2.6.2/doc/man/INN__Utils__Shlock.3pm --- inn-2.6.1/doc/man/INN__Utils__Shlock.3pm 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/INN__Utils__Shlock.3pm 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "INN::Utils::Shlock 3pm" -.TH INN::Utils::Shlock 3pm "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH INN::Utils::Shlock 3pm "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/active.5 inn-2.6.2/doc/man/active.5 --- inn-2.6.1/doc/man/active.5 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/active.5 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "ACTIVE 5" -.TH ACTIVE 5 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH ACTIVE 5 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/active.times.5 inn-2.6.2/doc/man/active.times.5 --- inn-2.6.1/doc/man/active.times.5 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/active.times.5 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "ACTIVE.TIMES 5" -.TH ACTIVE.TIMES 5 "2016-10-07" "INN 2.6.1" "InterNetNews Documentation" +.TH ACTIVE.TIMES 5 "2016-10-07" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/actsync.8 inn-2.6.2/doc/man/actsync.8 --- inn-2.6.1/doc/man/actsync.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/actsync.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "ACTSYNC 8" -.TH ACTSYNC 8 "2016-11-06" "INN 2.6.1" "InterNetNews Documentation" +.TH ACTSYNC 8 "2016-11-06" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/archive.8 inn-2.6.2/doc/man/archive.8 --- inn-2.6.1/doc/man/archive.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/archive.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "ARCHIVE 8" -.TH ARCHIVE 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH ARCHIVE 8 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/auth_krb5.8 inn-2.6.2/doc/man/auth_krb5.8 --- inn-2.6.1/doc/man/auth_krb5.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/auth_krb5.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "AUTH_KRB5 8" -.TH AUTH_KRB5 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH AUTH_KRB5 8 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/batcher.8 inn-2.6.2/doc/man/batcher.8 --- inn-2.6.1/doc/man/batcher.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/batcher.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "BATCHER 8" -.TH BATCHER 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH BATCHER 8 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/buffchan.8 inn-2.6.2/doc/man/buffchan.8 --- inn-2.6.1/doc/man/buffchan.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/buffchan.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "BUFFCHAN 8" -.TH BUFFCHAN 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH BUFFCHAN 8 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/buffindexed.conf.5 inn-2.6.2/doc/man/buffindexed.conf.5 --- inn-2.6.1/doc/man/buffindexed.conf.5 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/buffindexed.conf.5 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "BUFFINDEXED.CONF 5" -.TH BUFFINDEXED.CONF 5 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH BUFFINDEXED.CONF 5 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/ckpasswd.8 inn-2.6.2/doc/man/ckpasswd.8 --- inn-2.6.1/doc/man/ckpasswd.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/ckpasswd.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "CKPASSWD 8" -.TH CKPASSWD 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH CKPASSWD 8 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/cnfsheadconf.8 inn-2.6.2/doc/man/cnfsheadconf.8 --- inn-2.6.1/doc/man/cnfsheadconf.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/cnfsheadconf.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "CNFSHEADCONF 8" -.TH CNFSHEADCONF 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH CNFSHEADCONF 8 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/cnfsstat.8 inn-2.6.2/doc/man/cnfsstat.8 --- inn-2.6.1/doc/man/cnfsstat.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/cnfsstat.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "CNFSSTAT 8" -.TH CNFSSTAT 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH CNFSSTAT 8 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/control.ctl.5 inn-2.6.2/doc/man/control.ctl.5 --- inn-2.6.1/doc/man/control.ctl.5 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/control.ctl.5 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "CONTROL.CTL 5" -.TH CONTROL.CTL 5 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH CONTROL.CTL 5 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/controlchan.8 inn-2.6.2/doc/man/controlchan.8 --- inn-2.6.1/doc/man/controlchan.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/controlchan.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "CONTROLCHAN 8" -.TH CONTROLCHAN 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH CONTROLCHAN 8 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/convdate.1 inn-2.6.2/doc/man/convdate.1 --- inn-2.6.1/doc/man/convdate.1 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/convdate.1 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "CONVDATE 1" -.TH CONVDATE 1 "2016-10-07" "INN 2.6.1" "InterNetNews Documentation" +.TH CONVDATE 1 "2016-10-07" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/ctlinnd.8 inn-2.6.2/doc/man/ctlinnd.8 --- inn-2.6.1/doc/man/ctlinnd.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/ctlinnd.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "CTLINND 8" -.TH CTLINND 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH CTLINND 8 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/cvtbatch.8 inn-2.6.2/doc/man/cvtbatch.8 --- inn-2.6.1/doc/man/cvtbatch.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/cvtbatch.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "CVTBATCH 8" -.TH CVTBATCH 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH CVTBATCH 8 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/cycbuff.conf.5 inn-2.6.2/doc/man/cycbuff.conf.5 --- inn-2.6.1/doc/man/cycbuff.conf.5 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/cycbuff.conf.5 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "CYCBUFF.CONF 5" -.TH CYCBUFF.CONF 5 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH CYCBUFF.CONF 5 "2018-01-28" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -252,6 +248,10 @@ remaining references to them. .PP Adding a new cycbuff just requires creating it (see below), adding a cycbuff line, adding it to a metacycbuff, and then restarting \fBinnd\fR. +Similarly, changing the allocation of an existing cycbuff from a +metacycbuff to another one just requires modifying the two metacycbuffs +accordingly, and then restarting \fBinnd\fR. (Only the cycbuff is noted +noted in the storage \s-1API\s0 tokens.) .SH "CREATING CYCBUFFS" .IX Header "CREATING CYCBUFFS" When creating a new cycbuff, there are two different methods for creating @@ -344,7 +344,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 -\&\f(CW$Id:\fR cycbuff.conf.pod 9925 2015\-08\-08 17:05:43Z iulius $ +\&\f(CW$Id:\fR cycbuff.conf.pod 10230 2018\-01\-28 21:22:21Z 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.6.1/doc/man/distrib.pats.5 inn-2.6.2/doc/man/distrib.pats.5 --- inn-2.6.1/doc/man/distrib.pats.5 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/distrib.pats.5 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "DISTRIB.PATS 5" -.TH DISTRIB.PATS 5 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH DISTRIB.PATS 5 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/distributions.5 inn-2.6.2/doc/man/distributions.5 --- inn-2.6.1/doc/man/distributions.5 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/distributions.5 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "DISTRIBUTIONS 5" -.TH DISTRIBUTIONS 5 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH DISTRIBUTIONS 5 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/docheckgroups.8 inn-2.6.2/doc/man/docheckgroups.8 --- inn-2.6.1/doc/man/docheckgroups.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/docheckgroups.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "DOCHECKGROUPS 8" -.TH DOCHECKGROUPS 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH DOCHECKGROUPS 8 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/domain.8 inn-2.6.2/doc/man/domain.8 --- inn-2.6.1/doc/man/domain.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/domain.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "DOMAIN 8" -.TH DOMAIN 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH DOMAIN 8 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/expire.8 inn-2.6.2/doc/man/expire.8 --- inn-2.6.1/doc/man/expire.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/expire.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "EXPIRE 8" -.TH EXPIRE 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH EXPIRE 8 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/expire.ctl.5 inn-2.6.2/doc/man/expire.ctl.5 --- inn-2.6.1/doc/man/expire.ctl.5 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/expire.ctl.5 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "EXPIRE.CTL 5" -.TH EXPIRE.CTL 5 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH EXPIRE.CTL 5 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/expireover.8 inn-2.6.2/doc/man/expireover.8 --- inn-2.6.1/doc/man/expireover.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/expireover.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "EXPIREOVER 8" -.TH EXPIREOVER 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH EXPIREOVER 8 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/expirerm.8 inn-2.6.2/doc/man/expirerm.8 --- inn-2.6.1/doc/man/expirerm.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/expirerm.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "EXPIRERM 8" -.TH EXPIRERM 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH EXPIRERM 8 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/fastrm.1 inn-2.6.2/doc/man/fastrm.1 --- inn-2.6.1/doc/man/fastrm.1 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/fastrm.1 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "FASTRM 1" -.TH FASTRM 1 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH FASTRM 1 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/getlist.1 inn-2.6.2/doc/man/getlist.1 --- inn-2.6.1/doc/man/getlist.1 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/getlist.1 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "GETLIST 1" -.TH GETLIST 1 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH GETLIST 1 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/grephistory.1 inn-2.6.2/doc/man/grephistory.1 --- inn-2.6.1/doc/man/grephistory.1 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/grephistory.1 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "GREPHISTORY 1" -.TH GREPHISTORY 1 "2016-10-07" "INN 2.6.1" "InterNetNews Documentation" +.TH GREPHISTORY 1 "2016-10-07" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/ident.8 inn-2.6.2/doc/man/ident.8 --- inn-2.6.1/doc/man/ident.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/ident.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "IDENT 8" -.TH IDENT 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH IDENT 8 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/incoming.conf.5 inn-2.6.2/doc/man/incoming.conf.5 --- inn-2.6.1/doc/man/incoming.conf.5 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/incoming.conf.5 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "INCOMING.CONF 5" -.TH INCOMING.CONF 5 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH INCOMING.CONF 5 "2018-01-28" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -251,10 +247,11 @@ of zero specifies immediate close. The .IP "\fIhostname\fR" 4 .IX Item "hostname" This key requires a string value. It is a list of hostnames separated -by a comma. A hostname is the host's fully qualified domain name, or -the dotted-quad \s-1IP\s0 address of the peer for IPv4, or the colon-separated \s-1IP\s0 -address of the peer for IPv6. If this key is not present in -a peer block, the hostname defaults to the label of the peer. +by a comma. A hostname is either a fully qualified domain name that +resolves to the IPv4 or IPv6 address of the peer, or the dotted-quad +\&\s-1IP\s0 address of the peer for IPv4, or the colon-separated \s-1IP\s0 address +of the peer for IPv6. If this key is not present in a peer block, +the hostname defaults to the label of the peer. .IP "\fIidentd\fR" 4 .IX Item "identd" This key requires a string value. It is used if you wish to require @@ -313,7 +310,7 @@ This key requires a boolean value. It d Written by Fabien Tassin for InterNetNews. Converted to \&\s-1POD\s0 by Julien Elie. .PP -\&\f(CW$Id:\fR incoming.conf.pod 9589 2013\-12\-19 17:47:33Z iulius $ +\&\f(CW$Id:\fR incoming.conf.pod 10179 2017\-09\-18 20:13:48Z 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.6.1/doc/man/inews.1 inn-2.6.2/doc/man/inews.1 --- inn-2.6.1/doc/man/inews.1 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/inews.1 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "INEWS 1" -.TH INEWS 1 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH INEWS 1 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/inn-radius.conf.5 inn-2.6.2/doc/man/inn-radius.conf.5 --- inn-2.6.1/doc/man/inn-radius.conf.5 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/inn-radius.conf.5 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "INN-RADIUS.CONF 5" -.TH INN-RADIUS.CONF 5 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH INN-RADIUS.CONF 5 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/inn.conf.5 inn-2.6.2/doc/man/inn.conf.5 --- inn-2.6.1/doc/man/inn.conf.5 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/inn.conf.5 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "INN.CONF 5" -.TH INN.CONF 5 "2016-10-07" "INN 2.6.1" "InterNetNews Documentation" +.TH INN.CONF 5 "2018-03-18" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -196,7 +192,7 @@ These parameters are used by a wide vari .IX Item "domain" This should be the domain name of the local host. It should not have a leading period, and it should not be a full host address. It is used only -if the \fIGetFQDN()\fR routine in \fIlibinn\fR\|(3) cannot get the fully-qualified +if the \fIGetFQDN()\fR routine in \fIlibinn\fR\|(3) cannot get the fully qualified domain name by using either the \fIgethostname\fR\|(3) or \fIgethostbyname\fR\|(3) calls. 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 @@ -237,7 +233,7 @@ added to the Path: header of all article including locally posted articles, and is also used when processing some control messages and when naming the server in status reports. There is no default value; this parameter must be set in \fIinn.conf\fR or \s-1INN\s0 will -not start. A good value to use is the fully-qualified hostname of the +not start. A good value to use is the fully qualified hostname of the system. .IP "\fIrunasgroup\fR" 4 .IX Item "runasgroup" @@ -258,6 +254,30 @@ 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. +.IP "\fIsyntaxchecks\fR" 4 +.IX Item "syntaxchecks" +A list of values controlling the level of checks performed by \fBinnd\fR +and \fBnnrpd\fR. For instance: +.Sp +.Vb 1 +\& syntaxchecks: [ no\-laxmid ] +.Ve +.Sp +The last occurrence of a given value takes precedence, that is to say +if \f(CW\*(C`no\-laxmid laxmid\*(C'\fR is listed, \fIlaxmid\fR takes precedence. +.Sp +Only one check can currently be enabled/disabled: +.RS 4 +.IP "\fIlaxmid\fR / \fIno-laxmid\fR" 4 +.IX Item "laxmid / no-laxmid" +When \fIlaxmid\fR is set, Message-IDs containing \f(CW\*(C`..\*(C'\fR in the left part +are accepted, as well as Message-IDs with two \f(CW\*(C`@\*(C'\fR. Some non-compliant +news posters generate such syntactically invalid Message-IDs, especially +in binary newsgroups. The default is \fIno-laxmid\fR, that is to say \s-1INN\s0 +strictly follows the standard regarding syntax checks. +.RE +.RS 4 +.RE .SS "Feed Configuration" .IX Subsection "Feed Configuration" These parameters govern incoming and outgoing feeds: what size of @@ -375,10 +395,10 @@ at the leftmost side of the Path: header .IP "\fIpgpverify\fR" 4 .IX Item "pgpverify" Whether to enable \s-1PGP\s0 verification of control messages other than cancel. -This is a boolean value and the default in the \fIinn.conf\fR sample file -is based on whether configure found pgp, pgpv, pgpgpg, gpgv or gpgv2. -Note that if the parameter is not present in the configuration file, -it defaults to false. +This is a boolean value and the default in the \fIinn.conf\fR sample file is +based on whether configure found \fBpgp\fR, \fBpgpv\fR, \fBpgpgpg\fR, \fBgpgv\fR, +\&\fBgpgv1\fR, \fBgpgv2\fR, \fBgpg\fR, \fBgpg1\fR or \fBgpg2\fR. Note that if the +parameter is not present in the configuration file, it defaults to false. .IP "\fIport\fR" 4 .IX Item "port" What \s-1TCP\s0 port \fIinnd\fR\|(8) should listen on. The default value is \f(CW119\fR, the @@ -890,8 +910,15 @@ that accept or generate postings. There that are broken out separately after the initial alphabetized list. .IP "\fIaddinjectiondate\fR" 4 .IX Item "addinjectiondate" -Whether to add an Injection-Date: header to all local posts. This is a -boolean value and the default is true. +Whether to add an Injection-Date: header field to all local posts. +This is a boolean value and the default is true. +.Sp +Note that no Injection-Date: header fields will be added to local posts +already containing both a Message-ID: header field and a Date: header +field. This is done in conformance with standards, to help minimize +the possibility of a loop in e\-mail gatewaying and ensure that a newly +injected article is not treated as a new, separate article in case of +multiple injection of the same article to different injecting agents. .IP "\fIaddinjectionpostingaccount\fR" 4 .IX Item "addinjectionpostingaccount" Whether to add a posting-account attribute to the Injection-Info: header @@ -901,15 +928,17 @@ is false. There is no intrinsic support That has to be done with a user-written Perl filter, if desired. .IP "\fIaddinjectionpostinghost\fR" 4 .IX Item "addinjectionpostinghost" -Whether to add a posting-host attribute to the Injection-Info: header to -all local posts giving the \s-1FQDN \s0(when known) and \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 attribute or adds the name -(when known) and \s-1IP\s0 address of the client. There is no intrinsic support for -obfuscating the name of the client. That has to be done with a user-written -Perl filter, if desired. +Whether to add a posting-host attribute to the Injection-Info: header +to all local posts giving an \s-1FQDN \s0(when known, by reverse lookup of +the client \s-1IP\s0 address) and \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 attribute or adds the name (when +known) and \s-1IP\s0 address of the client. There is no intrinsic support +for obfuscating the name of the client. That has to be done with a +user-written Perl filter, if desired. .Sp -When this parameter is set to true, the \s-1FQDN \s0(or, if unknown, the \s-1IP\s0 address) +When this parameter is set to true, an \s-1FQDN \s0(obtained by reverse +lookup of the client \s-1IP\s0 address or, if unknown, the \s-1IP\s0 address itself) of the client is also added to the Path: header, after the \f(CW\*(C`!.POSTED\*(C'\fR diagnostic. .IP "\fIcheckincludedtext\fR" 4 @@ -933,7 +962,7 @@ is the newsmaster user set at compile ti setting will also be used by \fImailpost\fR\|(8) to fully qualify addresses and by \&\fIinews\fR\|(1) to generate the Sender: header (and From: header if missing). The value of the \s-1FROMHOST\s0 environment variable, if set, overrides this -setting. The default is the fully-qualified domain name of the local +setting. The default is the fully qualified domain name of the local host. .IP "\fIlocalmaxartsize\fR" 4 .IX Item "localmaxartsize" @@ -1104,17 +1133,12 @@ on the \s-1TLS\s0 protocol or some suppo The string describing the cipher suites OpenSSL will support. See OpenSSL's \fIciphers\fR\|(1) command documentation for details. The default is unset, which uses OpenSSL's default cipher suite list. -.Sp -Formally, keeping the \s-1TLS_RSA_WITH_RC4_128_MD5\s0 and -\&\s-1TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA\s0 cipher suites is important, as it -assures that any two compliant implementations can be configured to -interoperate (see \s-1RFC 4642\s0 for more details). .IP "\fItlscompression\fR" 4 .IX Item "tlscompression" Whether to enable or disable TLS/SSL\-level compression support. This is a boolean and the default is false, that is to say compression is disabled, so as to follow the best current practices for a secure -use of \s-1TLS\s0 in application protocols like \s-1NNTP.\s0 +use of \s-1TLS\s0 in application protocols (see \s-1RFC\s0\ 8143 for \s-1NNTP\s0). .Sp Note that enabling TLS/SSL\-level compression will be possible only if the OpenSSL library \s-1INN\s0 has been built with, supports that feature. @@ -1137,16 +1161,16 @@ the server will choose following its own .IP "\fItlsprotocols\fR" 4 .IX Item "tlsprotocols" The list of \s-1TLS/SSL\s0 protocol versions to support. Valid protocols are -\&\fBSSLv2\fR, \fBSSLv3\fR, \fBTLSv1\fR, \fBTLSv1.1\fR and \fBTLSv1.2\fR. The default -value is to only allow \s-1TLS\s0 protocols: +\&\fBSSLv2\fR, \fBSSLv3\fR, \fBTLSv1\fR, \fBTLSv1.1\fR, \fBTLSv1.2\fR and \fBTLSv1.3\fR. +The default value is to only allow \s-1TLS\s0 protocols: .Sp .Vb 1 -\& tlsprotocols: [ TLSv1 TLSv1.1 TLSv1.2 ] +\& tlsprotocols: [ TLSv1 TLSv1.1 TLSv1.2 TLSv1.3 ] .Ve .Sp Note that the listed protocols will be enabled only if the OpenSSL library \s-1INN\s0 has been built with, supports them. In case OpenSSL supports -protocols more recent than TLSv1.2, they will be automatically enabled +protocols more recent than TLSv1.3, they will be automatically enabled (which anyway is fine regarding security, as newer protocols are supposed to be more secure). .SS "Monitoring" @@ -1498,7 +1522,7 @@ values for reference. Written by Rich \f(CW$alz\fR for InterNetNews and since modified, updated, and reorganized by innumerable other people. .PP -\&\f(CW$Id:\fR inn.conf.pod 10064 2016\-09\-04 12:55:40Z iulius $ +\&\f(CW$Id:\fR inn.conf.pod 10245 2018\-02\-16 21:11:59Z 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.6.1/doc/man/innbind.8 inn-2.6.2/doc/man/innbind.8 --- inn-2.6.1/doc/man/innbind.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/innbind.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "INNBIND 8" -.TH INNBIND 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH INNBIND 8 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/inncheck.8 inn-2.6.2/doc/man/inncheck.8 --- inn-2.6.1/doc/man/inncheck.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/inncheck.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "INNCHECK 8" -.TH INNCHECK 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH INNCHECK 8 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/innconfval.1 inn-2.6.2/doc/man/innconfval.1 --- inn-2.6.1/doc/man/innconfval.1 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/innconfval.1 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "INNCONFVAL 1" -.TH INNCONFVAL 1 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH INNCONFVAL 1 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/innd.8 inn-2.6.2/doc/man/innd.8 --- inn-2.6.1/doc/man/innd.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/innd.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "INND 8" -.TH INND 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH INND 8 "2018-01-28" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -401,7 +397,9 @@ the sites with the following subscriptio \& control,control.* .Ve .PP -but the sites with the following subscription patterns will not receive it: +As a matter of fact, for the first pattern, \f(CW\*(C`control.newgroup\*(C'\fR (or +\&\f(CW\*(C`control\*(C'\fR) is included in \f(CW\*(C`*\*(C'\fR. However, the sites with the following +subscription patterns will not receive it: .PP .Vb 2 \& *,@news.*,!control,!control.* @@ -597,7 +595,7 @@ disables source routing. .IX Header "HISTORY" Written by Rich \f(CW$alz\fR for InterNetNews. .PP -\&\f(CW$Id:\fR innd.pod 9228 2011\-07\-07 11:12:26Z iulius $ +\&\f(CW$Id:\fR innd.pod 10175 2017\-09\-18 19:48:24Z 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.6.1/doc/man/inndf.8 inn-2.6.2/doc/man/inndf.8 --- inn-2.6.1/doc/man/inndf.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/inndf.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "INNDF 8" -.TH INNDF 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH INNDF 8 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/innfeed.8 inn-2.6.2/doc/man/innfeed.8 --- inn-2.6.1/doc/man/innfeed.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/innfeed.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "INNFEED 8" -.TH INNFEED 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH INNFEED 8 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/innfeed.conf.5 inn-2.6.2/doc/man/innfeed.conf.5 --- inn-2.6.1/doc/man/innfeed.conf.5 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/innfeed.conf.5 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "INNFEED.CONF 5" -.TH INNFEED.CONF 5 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH INNFEED.CONF 5 "2018-01-28" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -746,9 +742,11 @@ peer defaults above. There is one \fIke to a peer definition. .IP "\fIip-name\fR" 4 .IX Item "ip-name" -This key requires a word value. The word is the host's \s-1FQDN,\s0 or the dotted -quad IP-address. If this value is not specified, then the name of the -peer in the enclosing \fIpeer\fR block is taken to also be its \fIip-name\fR. +This key requires a word value. The word is either one of the host's FQDNs, +or the dotted-quad \s-1IP\s0 address of the peer for IPv4, or the colon-separated +\&\s-1IP\s0 address of the peer for IPv6. If this value is not specified, then +the name of the peer in the enclosing \fIpeer\fR block is taken to also +be its \fIip-name\fR. .SH "RELOADING" .IX Header "RELOADING" If \fBinnfeed\fR gets a \s-1SIGHUP\s0 signal, then it will reread the configuration @@ -790,7 +788,7 @@ Earlier versions of \fBinnfeed\fR (up to Please note that the \fIinnfeed.conf\fR format has changed dramatically since version\ 0.9.3. .PP -\&\f(CW$Id:\fR innfeed.conf.pod 9923 2015\-07\-14 16:48:11Z iulius $ +\&\f(CW$Id:\fR innfeed.conf.pod 10179 2017\-09\-18 20:13:48Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIinn.conf\fR\|(5), \fIinnfeed\fR\|(8), \fInewsfeeds\fR\|(5). diff -Nurp inn-2.6.1/doc/man/innmail.1 inn-2.6.2/doc/man/innmail.1 --- inn-2.6.1/doc/man/innmail.1 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/innmail.1 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "INNMAIL 1" -.TH INNMAIL 1 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH INNMAIL 1 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/innupgrade.8 inn-2.6.2/doc/man/innupgrade.8 --- inn-2.6.1/doc/man/innupgrade.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/innupgrade.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "INNUPGRADE 8" -.TH INNUPGRADE 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH INNUPGRADE 8 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/innwatch.8 inn-2.6.2/doc/man/innwatch.8 --- inn-2.6.1/doc/man/innwatch.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/innwatch.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "INNWATCH 8" -.TH INNWATCH 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH INNWATCH 8 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/innxmit.8 inn-2.6.2/doc/man/innxmit.8 --- inn-2.6.1/doc/man/innxmit.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/innxmit.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "INNXMIT 8" -.TH INNXMIT 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH INNXMIT 8 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/libauth.3 inn-2.6.2/doc/man/libauth.3 --- inn-2.6.1/doc/man/libauth.3 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/libauth.3 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "libauth 3" -.TH libauth 3 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH libauth 3 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/libinn.3 inn-2.6.2/doc/man/libinn.3 --- inn-2.6.1/doc/man/libinn.3 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/libinn.3 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" $Revision: 9659 $ +.\" $Revision: 10265 $ .TH LIBINN 3 .SH NAME libinn \- InterNetNews library routines @@ -137,7 +137,7 @@ is a library of utility routines for man related data. .PP .I GenerateMessageID -uses the current time, process-ID, and fully-qualified domain name, which is +uses the current time, process-ID, and fully qualified domain name, which is passed as an argument and used if local host can not be resolved or it is different from ``domain'' set in .IR inn.conf , @@ -277,7 +277,7 @@ is one of: INN_LOCK_READ, INN_LOCK_WRITE It returns false on failure or true on success. .PP .I GetFQDN -returns the fully-qualified domain name of the local host. +returns the fully qualified domain name of the local host. .I Domain is used if local host can not be resolved. The returned value points to static space that is reused on subsequent calls, @@ -427,23 +427,20 @@ returns hashed message-id using MD5. .RS .nf char *p; -char *Article; -char buff[256], errbuff[256]; +char frombuff[256], errbuff[256]; FILE *F; FILE *ToServer; FILE *FromServer; int port = 119; -if ((p = HeaderFind(Article, "From", 4)) == NULL) - Fatal("Can't find From line"); -(void)strcpy(buff, p); -HeaderCleanFrom(buff); +strlcpy(frombuff, HDR(HDR__FROM), sizeof(frombuff)); +HeaderCleanFrom(frombuff); if ((F = CAopen(FromServer, ToServer)) == NULL) Fatal("Can't open active file"); /* Don't pass the file on to our children. */ -fdflag_close_exec(fileno(F), 1); +fdflag_close_exec(fileno(F), true); /* Make a local copy. */ p = ReadInDescriptor(fileno(F), (struct stat *)NULL); @@ -451,10 +448,11 @@ p = ReadInDescriptor(fileno(F), (struct /* Close the file. */ CAclose(); -if (NNTPremoteopen(port, &FromServer, &ToServer, errbuff) < 0) +if (NNTPremoteopen(port, &FromServer, &ToServer, errbuff, sizeof(errbuff)) < 0) Fatal("Can't connect to server"); -if ((p = GetModeratorAddress("comp.sources.unix")) == NULL) +if ((p = GetModeratorAddress(NULL, NULL, "comp.sources.unix", + "%s@example.com")) == NULL) Fatal("Can't find moderator's address"); .fi .RE @@ -463,7 +461,7 @@ Written by Rich $alz 0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "libinnhist 3" -.TH libinnhist 3 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH libinnhist 3 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/libstorage.3 inn-2.6.2/doc/man/libstorage.3 --- inn-2.6.1/doc/man/libstorage.3 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/libstorage.3 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "libstorage 3" -.TH libstorage 3 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH libstorage 3 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/list.3 inn-2.6.2/doc/man/list.3 --- inn-2.6.1/doc/man/list.3 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/list.3 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "list 3" -.TH list 3 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH list 3 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/mailpost.8 inn-2.6.2/doc/man/mailpost.8 --- inn-2.6.1/doc/man/mailpost.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/mailpost.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "MAILPOST 8" -.TH MAILPOST 8 "2016-11-06" "INN 2.6.1" "InterNetNews Documentation" +.TH MAILPOST 8 "2018-01-28" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -145,7 +141,8 @@ mailpost \- Feed an e\-mail message into \&\fBmailpost\fR [\fB\-hn\fR] [\fB\-a\fR \fIaddr\fR] [\fB\-b\fR \fIdatabase\fR] [\fB\-c\fR \fIwait-time\fR] [\fB\-d\fR \fIdistribution\fR] [\fB\-f\fR \fIaddr\fR] [\fB\-m\fR \fImailing-list\fR] [\fB\-o\fR \fIoutput-command\fR] [\fB\-p\fR \fIport\fR] [\fB\-r\fR \fIaddr\fR] [\fB\-t\fR \fItempdir\fR] -[\fB\-x\fR \fIheader\fR[\fB:\fR\fIheader\fR...]] \fInewsgroups\fR +[\fB\-x\fR \fIheader\fR[\fB:\fR\fIheader\fR...]] [\fB\-z\fR \fIheader\fR[\fB:\fR\fIheader\fR...]] +\&\fInewsgroups\fR .SH "DESCRIPTION" .IX Header "DESCRIPTION" The \fBmailpost\fR program reads a properly formatted e\-mail message from stdin @@ -153,12 +150,14 @@ and feeds it to \fBinews\fR for posting whitespace-separated list of group names to which to post the article (at least one newsgroup must be specified). .PP -Before feeding the article to \fBinews\fR, it checks that the article has not -been seen before, and it changes some headers (cleans up some address -headers, removes X\-Trace: and X\-Complaints-To:, and puts \f(CW\*(C`X\-\*(C'\fR in front -of unknown headers). +Before feeding the article to \fBinews\fR, it checks that the article has +not been seen before, and it changes some header fields (cleans up some +address headers, removes a few ones like X\-Complaints-To: and X\-Trace:, +and puts \f(CW\*(C`X\-\*(C'\fR in front of unknown header fields). The Received: and +*\-To: header fields are also altered to prevent spamming the gateway (the +name of the news server or the domain name from \fIinn.conf\fR are removed). .PP -If the article has been seen before (\fBmailpost\fR records the Message-ID of +If the article has been seen before (\fBmailpost\fR records the message-ID of each article it handles), then the article will be dropped with a non-zero error status. Other errors will cause the article to be mailed to the newsmaster (selected at configure time and defaulting to \f(CW\*(C`usenet\*(C'\fR). @@ -188,7 +187,7 @@ an Approved: header. .IP "\fB\-b\fR \fIdatabase\fR" 4 .IX Item "-b database" If the \fB\-b\fR flag is used, then it defines the location of the -persistent database used to store the Message-IDs of articles sent on. +persistent database used to store the message-IDs of articles sent on. This is to prevent articles looping around if a news-to-mail gateway sends them back here. This option may be required if the \fBmailpost\fR process does not have write access to the news database directory. @@ -243,25 +242,41 @@ write access to. Two paths are tried by in \fIinn.conf\fR, and then \fI/var/tmp\fR if \fIpathtmp\fR is not writable. .IP "\fB\-x\fR \fIheader\fR[\fB:\fR\fIheader\fR...]" 4 .IX Item "-x header[:header...]" -A colon-separated list of additional headers which should be treated as -known headers; these headers will be passed through to \fBinews\fR without -having \f(CW\*(C`X\-\*(C'\fR prepended. +A colon-separated list of additional header fields which should be +treated as known header fields; these header fields will be passed +through to \fBinews\fR without having \f(CW\*(C`X\-\*(C'\fR prepended. .Sp -Known headers are: +Known header fields are: .Sp -.Vb 12 -\& Approved +.Vb 10 +\& Archive +\& Archived\-At +\& Comments \& Content\-* \& Date \& Distribution \& From +\& Injection\-Date +\& Keywords \& Mailing\-List \& Message\-ID \& MIME\-* +\& Organization \& References \& Return\-Path \& Sender \& Subject +\& Summary +.Ve +.IP "\fB\-z\fR \fIheader\fR[\fB:\fR\fIheader\fR...]" 4 +.IX Item "-z header[:header...]" +A colon-separated list of additional header fields which should be removed. +.Sp +Removed header fields are: +.Sp +.Vb 2 +\& X\-Trace +\& X\-Complaints\-To .Ve .SH "FILES" .IX Header "FILES" @@ -270,13 +285,13 @@ Known headers are: The Perl script itself used to feed an e\-mail message to a newsgroup. .IP "\fIpathdb\fR/mailpost\-msgid.dir and \fIpathdb\fR/mailpost\-msgid.pag" 4 .IX Item "pathdb/mailpost-msgid.dir and pathdb/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 -\&\f(CW$Id:\fR mailpost.in 10076 2016\-10\-08 20:37:36Z iulius $ +\&\f(CW$Id:\fR mailpost.in 10171 2017\-07\-22 14:01:37Z 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.6.1/doc/man/makedbz.8 inn-2.6.2/doc/man/makedbz.8 --- inn-2.6.1/doc/man/makedbz.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/makedbz.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "MAKEDBZ 8" -.TH MAKEDBZ 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH MAKEDBZ 8 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/makehistory.8 inn-2.6.2/doc/man/makehistory.8 --- inn-2.6.1/doc/man/makehistory.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/makehistory.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "MAKEHISTORY 8" -.TH MAKEHISTORY 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH MAKEHISTORY 8 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/mod-active.8 inn-2.6.2/doc/man/mod-active.8 --- inn-2.6.1/doc/man/mod-active.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/mod-active.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "MOD-ACTIVE 8" -.TH MOD-ACTIVE 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH MOD-ACTIVE 8 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/moderators.5 inn-2.6.2/doc/man/moderators.5 --- inn-2.6.1/doc/man/moderators.5 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/moderators.5 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "MODERATORS 5" -.TH MODERATORS 5 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH MODERATORS 5 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/motd.news.5 inn-2.6.2/doc/man/motd.news.5 --- inn-2.6.1/doc/man/motd.news.5 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/motd.news.5 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "MOTD.NEWS 5" -.TH MOTD.NEWS 5 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH MOTD.NEWS 5 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/news.daily.8 inn-2.6.2/doc/man/news.daily.8 --- inn-2.6.1/doc/man/news.daily.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/news.daily.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "NEWS.DAILY 8" -.TH NEWS.DAILY 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH NEWS.DAILY 8 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/news2mail.8 inn-2.6.2/doc/man/news2mail.8 --- inn-2.6.1/doc/man/news2mail.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/news2mail.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "NEWS2MAIL 8" -.TH NEWS2MAIL 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH NEWS2MAIL 8 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/newsfeeds.5 inn-2.6.2/doc/man/newsfeeds.5 --- inn-2.6.1/doc/man/newsfeeds.5 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/newsfeeds.5 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "NEWSFEEDS 5" -.TH NEWSFEEDS 5 "2016-10-07" "INN 2.6.1" "InterNetNews Documentation" +.TH NEWSFEEDS 5 "2018-01-28" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -336,13 +332,14 @@ Finally, it is also possible to set vari later in the file. A line starting with \f(CW\*(C`$\*(C'\fR sets a variable. For example: .PP -.Vb 1 +.Vb 2 \& $LOCALGROUPS=local.*,example.* +\& $CONTROLGROUPS=control,control.* .Ve .PP -This sets the variable \f(CW\*(C`LOCALGROUPS\*(C'\fR to \f(CW\*(C`local.*,example.*\*(C'\fR. This -variable can later be used elsewhere in the file, such as in a site entry -like: +This sets the variable \f(CW\*(C`LOCALGROUPS\*(C'\fR to \f(CW\*(C`local.*,example.*\*(C'\fR and the +variable \f(CW\*(C`CONTROLGROUPS\*(C'\fR to \f(CW\*(C`control,control.*\*(C'\fR. They can later be +used elsewhere in the file, such as in a site entry like: .PP .Vb 1 \& news.example.com:$LOCALGROUPS:Tf,Wnm: @@ -362,17 +359,17 @@ variables to construct feed patterns. T when you observe that the line: .PP .Vb 1 -\& news.example.net:*,@$LOCALGROUPS:Tf,Wnm: +\& news.example.net:*,@$LOCALGROUPS,!$CONTROLGROUPS:Tf,Wnm: .Ve .PP is therefore equivalent to: .PP .Vb 1 -\& news.example.net:*,@local.*,@example.*:Tf,Wnm: +\& news.example.net:*,@local.*,@example.*,!control,!control.*:Tf,Wnm: .Ve .PP -which (as explained below) excludes all of the groups in \f(CW$LOCALGROUPS\fR from -the feed to that site. +which (as explained below) excludes all of the groups in \f(CW$LOCALGROUPS\fR +and unwanted control articles from the feed to that site. .SH "FLAG VALUES" .IX Header "FLAG VALUES" The \fIflags\fR parameter specifies miscellaneous parameters, including the @@ -944,7 +941,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 -\&\f(CW$Id:\fR newsfeeds.pod 10061 2016\-09\-04 12:48:39Z iulius $ +\&\f(CW$Id:\fR newsfeeds.pod 10175 2017\-09\-18 19:48:24Z 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.6.1/doc/man/newsgroups.5 inn-2.6.2/doc/man/newsgroups.5 --- inn-2.6.1/doc/man/newsgroups.5 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/newsgroups.5 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "NEWSGROUPS 5" -.TH NEWSGROUPS 5 "2016-11-06" "INN 2.6.1" "InterNetNews Documentation" +.TH NEWSGROUPS 5 "2016-11-06" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/newslog.5 inn-2.6.2/doc/man/newslog.5 --- inn-2.6.1/doc/man/newslog.5 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/newslog.5 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "NEWSLOG 5" -.TH NEWSLOG 5 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH NEWSLOG 5 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/ninpaths.8 inn-2.6.2/doc/man/ninpaths.8 --- inn-2.6.1/doc/man/ninpaths.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/ninpaths.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "NINPATHS 8" -.TH NINPATHS 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH NINPATHS 8 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/nnrpd.8 inn-2.6.2/doc/man/nnrpd.8 --- inn-2.6.1/doc/man/nnrpd.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/nnrpd.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "NNRPD 8" -.TH NNRPD 8 "2016-10-07" "INN 2.6.1" "InterNetNews Documentation" +.TH NNRPD 8 "2018-01-28" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -312,9 +308,10 @@ installing \s-1INN,\s0 or by running the .PP Replace the paths with something appropriate to your \s-1INN\s0 installation. This will create a self-signed certificate that will expire in a year. -The \fBopenssl\fR program will ask you a variety of questions about your -organization. Enter the fully qualified domain name of the server as the -name the certificate is for. +The \fBopenssl\fR program will ask you a variety of questions about +your organization. Enter the fully qualified domain name of your news +service (either the server canonical name or a dedicated alias for the +news service) as the name the certificate is for. .PP You then have to set these \fIinn.conf\fR parameters with the right paths: .PP @@ -328,14 +325,12 @@ In case you have a certificate authority set \fItlscafile\fR to its path. .PP There are two common ways for a news client to negotiate a \s-1TLS\s0 -connection: either via the use of the \s-1STARTTLS\s0 command on the usual \s-1NNTP\s0 -port (119) or via the now discouraged way (per \s-1RFC 4642\s0) to immediately -negotiate an encrypted session upon connection on a dedicated port -(usually 563). As most news clients currently do not use the \s-1STARTTLS\s0 -command, and instead expect to connect to a separate port (563) and start -a \s-1TLS\s0 negotiation immediately, it is still useful to provide a legacy -way for these news clients to encrypt the \s-1NNTP\s0 session. \fBinnd\fR does -not, however, know how to listen for connections to that separate port. +connection: either via the use of a dedicated port (usually 563) +on which \s-1TLS\s0 is immediately negotiated upon connection, or via the +now discouraged way (per \s-1RFC\s0\ 8143) to use the \s-1STARTTLS\s0 command on +the usual \s-1NNTP\s0 port (119) to dynamically upgrade from unencrypted +to TLS-protected traffic during an \s-1NNTP\s0 session. \fBinnd\fR does not, +however, know how to listen for connections to that separate port (563). You will therefore need to arrange for \fBnnrpd\fR to listen on that port through some other means. This can be done with the \fB\-D\fR flag along with \f(CW\*(C`\-p 563\*(C'\fR and put into your init scripts: @@ -363,8 +358,9 @@ suite is discovered. .SH "PROTOCOL DIFFERENCES" .IX Header "PROTOCOL DIFFERENCES" \&\fBnnrpd\fR implements the \s-1NNTP\s0 commands defined in \s-1RFC\s0\ 3977 (\s-1NNTP\s0), -\&\s-1RFC\s0\ 4642 (\s-1TLS/NNTP\s0), \s-1RFC\s0\ 4643 (\s-1NNTP\s0 authentication) and \s-1RFC\s0\ 6048 -(\s-1NNTP LIST\s0 additions) with the following differences: +\&\s-1RFC\s0\ 4642 updated by \s-1RFC\s0\ 8143 (\s-1TLS/NNTP\s0), \s-1RFC\s0\ 4643 (\s-1NNTP\s0 +authentication), \s-1RFC\s0\ 6048 (\s-1NNTP LIST\s0 additions) and \s-1RFC\s0\ 8054 +(\s-1NNTP\s0 compression) with the following differences: .IP "1." 4 The \s-1XGTITLE\s0 [\fIwildmat\fR] command is provided. This extension is used by ANU-News and documented in \s-1RFC\s0\ 2980. It returns a \f(CW282\fR reply code, @@ -411,7 +407,7 @@ support added by Rob Robertston 0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "NNTPSEND 8" -.TH NNTPSEND 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH NNTPSEND 8 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/nntpsend.ctl.5 inn-2.6.2/doc/man/nntpsend.ctl.5 --- inn-2.6.1/doc/man/nntpsend.ctl.5 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/nntpsend.ctl.5 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "NNTPSEND.CTL 5" -.TH NNTPSEND.CTL 5 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH NNTPSEND.CTL 5 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/ovdb.5 inn-2.6.2/doc/man/ovdb.5 --- inn-2.6.1/doc/man/ovdb.5 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/ovdb.5 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "OVDB 5" -.TH OVDB 5 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH OVDB 5 "2018-03-18" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -142,27 +138,41 @@ ovdb \- Overview storage method for INN .SH "DESCRIPTION" .IX Header "DESCRIPTION" -Ovdb is a storage method that uses the Berkeley\ \s-1DB\s0 library to store -overview data. It requires version 4.4 or later of the Berkeley\ \s-1DB\s0 -library (4.7+ is recommended because older versions suffer from various -issues). -.PP -Ovdb makes use of the full transaction/logging/locking functionality of -the Berkeley\ \s-1DB\s0 environment. Berkeley\ \s-1DB\s0 may be downloaded from +The ovdb overview is a storage method that uses the Berkeley\ \s-1DB\s0 +library to store overview data. It requires version 4.4 or later of +the Berkeley\ \s-1DB\s0 library (4.7+ is recommended because older versions +suffer from various issues). +.PP +The ovdb overview method makes use of the full +transaction/logging/locking functionality of the +Berkeley\ \s-1DB\s0 environment. Berkeley\ \s-1DB\s0 may be downloaded from and is needed to build the ovdb backend. .SH "UPGRADING" .IX Header "UPGRADING" -This is version 2 of ovdb. If you have a database created with a previous -version of ovdb (such as the one shipped with \s-1INN\s0\ 2.3.0) your database -will need to be upgraded using \fIovdb_init\fR\|(8). See the man page -\&\fIovdb_init\fR\|(8) for upgrade instructions. +There are several versions of the ovdb storage method: +.IP "\(bu" 2 +Version 1, the initial version shipped with \s-1INN\s0\ 2.3.0 up to \s-1INN\s0\ 2.3.5. +.IP "\(bu" 2 +Version 2, with improved performance, since \s-1INN\s0\ 2.4.0. +.IP "\(bu" 2 +Version 3, corresponding to version 2 with compression enabled, starting +with \s-1INN\s0\ 2.5.0. +.PP +If you have a database created with a previous version of ovdb, +your database will need to be upgraded using \fBovdb_init\fR. See the +\&\fIovdb_init\fR\|(8) man page for upgrade instructions, as well as the +\&\s-1COMPRESSION\s0 section below. +.PP +Note that when the Berkeley\ \s-1DB\s0 library is updated to a newer version, +the ovdb database also needs being upgraded. .SH "INSTALLATION" .IX Header "INSTALLATION" -To build ovdb support into \s-1INN,\s0 specify the option \fB\-\-with\-bdb\fR -when running the configure script. By default, configure will search -for Berkeley\ \s-1DB\s0 in default search paths; there will be a message in -the configure output indicating the pathname that will be used. +If the Berkeley\ \s-1DB\s0 library is found at configure time, \s-1INN\s0 will be +built with Berkeley\ \s-1DB\s0 support unless the \fB\-\-without\-bdb\fR flag is +explicitly passed to configure. By default, configure will search for +Berkeley\ \s-1DB\s0 in standard locations; there will be a message in the +configure output indicating the pathname that will be used. .PP You can override this pathname by adding a path to the option, for instance \fB\-\-with\-bdb=/usr/BerkeleyDB.4.4\fR. This directory @@ -172,77 +182,83 @@ the library itself. In case non-standar libraries are used, one or both of the options \fB\-\-with\-bdb\-include\fR and \fB\-\-with\-bdb\-lib\fR can be given to configure with a path. .PP -The ovdb database may take up more disk space for a given spool than the -other overview methods. Plan on needing at least 1.1\ \s-1KB\s0 for every article -in your spool (not counting crossposts). So, if you have 5 million -articles, you'll need at least 5.5\ \s-1GB\s0 of disk space for ovdb. With compression -enabled, this estimate changes to 0.7\ \s-1KB\s0 per article. See the \s-1COMPRESSION\s0 -section below. -Plus, you'll need additional space for transaction logs: at least 100\ \s-1MB.\s0 -By default the transaction logs go in the same directory as the database. -To improve performance, they can be placed on a different disk \-\-\ see -the \s-1DB_CONFIG\s0 section. +The ovdb database may take up more disk space for a given spool +than the other overview methods. Plan on needing at least 1.1\ \s-1KB\s0 +for every article in your spool (not counting crossposts). So, if +you have 5 million articles, you'll need at least 5.5\ \s-1GB\s0 of disk +space for ovdb. With compression enabled, this estimate changes to +0.7\ \s-1KB\s0 per article. See the \s-1COMPRESSION\s0 section below. Plus, +you'll need additional space for transaction logs: at least 100\ \s-1MB.\s0 +By default, the transaction logs go in the same directory as the database. +To improve performance, they can be placed on a different disk \-\-\ see the \s-1DB_CONFIG\s0 section. .SH "CONFIGURATION" .IX Header "CONFIGURATION" -To enable ovdb, set the \fIovmethod\fR parameter in \fIinn.conf\fR to \f(CW\*(C`ovdb\*(C'\fR. -The ovdb database is stored in the directory specified by the -\&\fIpathoverview\fR parameter in \fIinn.conf\fR. This is the \*(L"\s-1DB_HOME\*(R"\s0 directory. -To start out, this directory should be empty (other than an optional -\&\fI\s-1DB_CONFIG\s0\fR file; see \s-1DB_CONFIG\s0 for details) and \fBinnd\fR (or -\&\fBmakehistory\fR) will create the files as necessary in that directory. -Make sure the directory is owned by the news user. -.PP -Other parameters for configuring ovdb are in the \fIovdb.conf\fR\|(5) -configuration file. See also the sample \fIovdb.conf\fR. -.IP "cachesize" 4 +To enable the ovdb overview method, set the \fIovmethod\fR parameter in +\&\fIinn.conf\fR to \f(CW\*(C`ovdb\*(C'\fR. The ovdb database is stored in the directory +specified by the \fIpathoverview\fR parameter in \fIinn.conf\fR. This is +the \f(CW\*(C`DB_HOME\*(C'\fR directory. To start out, this directory should be empty +(other than an optional \fI\s-1DB_CONFIG\s0\fR file; see \s-1DB_CONFIG\s0 for details), +and \fBinnd\fR (or \fBmakehistory\fR) will create the files as necessary in +that directory. Also, make sure the directory is owned by the news user. +.PP +Other parameters for configuring ovdb are in the \fIovdb.conf\fR +configuration file. The following parameters can be set in that file: +.IP "\fIcompress\fR" 4 +.IX Item "compress" +If \s-1INN\s0 was compiled with zlib, and this \fIcompress\fR parameter is true, +ovdb will compress overview records that are longer than 600 bytes. +See the \s-1COMPRESSION\s0 section below. +.IP "\fIcachesize\fR" 4 .IX Item "cachesize" Size of the memory pool cache, in kilobytes. The cache will have a -backing store file in the \s-1DB\s0 directory which will be at least as big. In -general, the bigger the cache, the better. Use \f(CW\*(C`ovdb_stat \-m\*(C'\fR to see -cache hit percentages. To make a change of this parameter take effect, -shut down and restart \s-1INN \s0(be sure to kill all of the nnrpds when shutting -down). Default is 8000, which is adequate for small to medium sized -servers. Large servers will probably need at least 20000. -.IP "compress" 4 -.IX Item "compress" -If \s-1INN\s0 was compiled with zlib, and this compress parameter is true, \s-1OVDB\s0 -will compress overview records that are longer than 600 bytes. See -the \s-1COMPRESSION\s0 section below. -.IP "numdbfiles" 4 +backing store file in the \s-1DB\s0 directory which will be at least as big. +In general, the bigger the cache, the better. Use \f(CW\*(C`ovdb_stat \-m\*(C'\fR +to see cache hit percentages. To make a change of this parameter take +effect, shut down and restart \s-1INN \s0(be sure to kill all of the \fBnnrpd\fR +processes when shutting down). Default is \f(CW8000\fR (\s-1KB\s0), which is adequate +for small to medium-sized servers. Large servers will probably need +at least \f(CW20000\fR (\s-1KB\s0). +.IP "\fIncache\fR" 4 +.IX Item "ncache" +Number of regions across which to split the cache. The region size +is equal to \fIcachesize\fR divided by \fIncache\fR. Default is \f(CW1\fR for +\&\fIncache\fR, that is to say the cache will be allocated contiguously +in memory. +.IP "\fInumdbfiles\fR" 4 .IX Item "numdbfiles" Overview data is split between this many files. Currently, \fBinnd\fR will keep all of the files open, so don't set this too high or \fBinnd\fR may run out of file descriptors. \fBnnrpd\fR only opens one at a time, regardless. May be set to one, or just a few, but only do that if your \s-1OS\s0 supports -large (>2G) files. Changing this parameter has no effect on an -already-established database. Default is 32. -.IP "txn_nosync" 4 +large (>\ 2\ \s-1GB\s0) files. Changing this parameter has no effect on an +already-established database. Default is \f(CW32\fR. +.IP "\fItxn_nosync\fR" 4 .IX Item "txn_nosync" If txn_nosync is set to false, Berkeley\ \s-1DB\s0 flushes the log after every transaction. This minimizes the number of transactions that may be lost in the event of a crash, but results in significantly degraded performance. Default is true. -.IP "useshm" 4 +.IP "\fIuseshm\fR" 4 .IX Item "useshm" -If useshm is set to true, Berkeley\ \s-1DB\s0 will use shared memory instead of +If \fIuseshm\fR is set to true, Berkeley\ \s-1DB\s0 will use shared memory instead of mmap for its environment regions (cache, lock, etc). With some platforms, this may improve performance. Default is false. -.IP "shmkey" 4 +.IP "\fIshmkey\fR" 4 .IX Item "shmkey" -Sets the shared memory key used by Berkeley\ \s-1DB\s0 when 'useshm' is true. +Sets the shared memory key used by Berkeley\ \s-1DB\s0 when \fIuseshm\fR is true. Berkeley\ \s-1DB\s0 will create several (usually 5) shared memory segments, using -sequentially numbered keys starting with 'shmkey'. Choose a key that does +sequentially numbered keys starting with \f(CW\*(C`shmkey\*(C'\fR. Choose a key that does not conflict with any existing shared memory segments on your system. -Default is 6400. -.IP "pagesize" 4 +Default is \f(CW6400\fR. +.IP "\fIpagesize\fR" 4 .IX Item "pagesize" -Sets the page size for the \s-1DB\s0 files (in bytes). Must be a power of 2. -Best choices are 4096 or 8192. The default is 8192. Changing this -parameter has no effect on an already-established database. -.IP "minkey" 4 +Sets the page size for the \s-1DB\s0 files (in bytes). Must be a power +of 2. Best choices are \f(CW4096\fR or \f(CW8192\fR. The default is \f(CW8192\fR. +Changing this parameter has no effect on an already-established database. +.IP "\fIminkey\fR" 4 .IX Item "minkey" Sets the minimum number of keys per page. See the Berkeley\ \s-1DB\s0 -documentation for more info. Default is based on page size +documentation for more information. Default is based on page size and whether compression is enabled: .Sp .Vb 2 @@ -250,76 +266,82 @@ and whether compression is enabled: \& default_minkey = MAX(2, pagesize / 1500) if compress is true .Ve .Sp -The lowest allowed minkey is 2. Setting minkey higher than the default is -not recommended, as it will cause the databases to have a lot of overflow -pages. Changing this parameter has no effect on an already-established -database. -.IP "maxlocks" 4 +The lowest allowed \fIminkey\fR is \f(CW2\fR. Setting \fIminkey\fR higher than +the default is not recommended, as it will cause the databases to have +a lot of overflow pages. Changing this parameter has no effect on an +already-established database. +.IP "\fImaxlocks\fR" 4 .IX Item "maxlocks" -Sets the Berkeley\ \s-1DB \s0\*(L"lk_max\*(R" parameter, which is the maximum number of -locks that can exist in the database at the same time. Default is 4000. -.IP "nocompact" 4 +Sets the Berkeley\ \s-1DB \s0\fIlk_max\fR parameter, which is the maximum number of +locks that can exist in the database at the same time. Default is \f(CW4000\fR. +.IP "\fInocompact\fR" 4 .IX Item "nocompact" -The nocompact parameter affects expireover's behavior. The expireover -function in ovdb can do its job in one of two ways: by simply deleting -expired records from the database, or by re-writing the overview records -into a different location leaving out the expired records. The first -method is faster, but it leaves 'holes' that result in space that can not -immediately be reused. The second method 'compacts' the records by -rewriting them. +The \fInocompact\fR parameter affects the behaviour of \fBexpireover\fR. +The \fBexpireover\fR function in ovdb can do its job in one of two +ways: by simply deleting expired records from the database; or by +re-writing the overview records into a different location leaving out +the expired records. The first method is faster, but it leaves 'holes' +that result in space that can not immediately be reused. The second +method 'compacts' the records by rewriting them. .Sp -If this parameter is set to 0, expireover will compact all newsgroups; if -set to 1, expireover will not compact any newsgroups; and if set to a -value greater than one, expireover will only compact groups that have less -than that number of articles. +If this parameter is set to \f(CW0\fR, \fBexpireover\fR will compact all +newsgroups; if set to \f(CW1\fR, \fBexpireover\fR will not compact any +newsgroups; and if set to a value greater than one, \fBexpireover\fR +will only compact groups that have less than that number of articles. .Sp Experience has shown that compacting has minimal effect (other than -making expireover take longer) so the default is now 1. This parameter +making \fBexpireover\fR take longer) so the default is \f(CW1\fR. This parameter will probably be removed in the future. -.IP "readserver" 4 +.IP "\fIreadserver\fR" 4 .IX Item "readserver" -Normally, each nnrpd process directly accesses the Berkeley\ \s-1DB\s0 environment. -The process of attaching to the database (and detaching when finished) is -fairly expensive, and can result in high loads in situations when there -are lots of reader connections of relatively short duration. +When the \fIreadserver\fR parameter is set to false, each \fBnnrpd\fR +process directly accesses the Berkeley\ \s-1DB\s0 environment. The process +of attaching to the database (and detaching when finished) is fairly +expensive, and can result in high loads in situations when there are +lots of reader connections of relatively short duration. +.Sp +When the \fIreadserver\fR parameter is set to true, the \fBnnrpd\fR processes +will access overview via a helper server (\fBovdb_server\fR \-\-\ which +is started by \fBovdb_init\fR). All ovdb reads will then be funnelled +through a single process with a cleaner interface to the underlying +Berkeley\ \s-1DB\s0 database. This will result in cleaner shutdowns for the +database, improving stability and avoiding deadlocks, timing issues and +corrupted databases. That's why you should try to set this parameter to +true if you are experiencing any instability in the ovdb overview method. .Sp -When the \fIreadserver\fR parameter is true, the nnrpds will access overview -via a helper server (\fBovdb_server\fR \-\-\ which is started by \fBovdb_init\fR). -This can also result in cleaner shutdowns for the database, improving -stability and avoiding deadlocks and corrupted databases. If you are -experiencing any instability in ovdb, try setting this parameter to true. -Default is false. -.IP "numrsprocs" 4 +Default value is true. +.IP "\fInumrsprocs\fR" 4 .IX Item "numrsprocs" This parameter is only used when \fIreadserver\fR is true. It sets the -number of ovdb_server processes. As each ovdb_server can process only one -transaction at a time, running more servers can improve reader response -times. Default is 5. -.IP "maxrsconn" 4 +number of \fBovdb_server\fR processes. As each \fBovdb_server\fR can process +only one transaction at a time, running more servers can improve reader +response times. Default is \f(CW5\fR. +.IP "\fImaxrsconn\fR" 4 .IX Item "maxrsconn" -This parameter is only used when \fIreadserver\fR is true. It sets a maximum -number of readers that a given ovdb_server process will serve at one time. -This means the maximum number of readers for all of the ovdb_server -processes is (numrsprocs * maxrsconn). This does \fBnot\fR limit the actual -number of readers, since nnrpd will fall back to opening the database -directly if it can't connect to a readserver. Default is 0, which means an -umlimited number of connections is allowed. +This parameter is only used when \fIreadserver\fR is true. It sets a +maximum number of readers that a given \fBovdb_server\fR process will +serve at one time. This means the maximum number of readers for all +of the \fBovdb_server\fR processes is (\fInumrsprocs\fR * \fImaxrsconn\fR). +This does \fInot\fR limit the actual number of readers, since \fBnnrpd\fR +will fall back to opening the database directly if it can't connect to +an \fBovdb_server\fR. Default is \f(CW0\fR, which means an unlimited number +of connections is allowed. .SH "COMPRESSION" .IX Header "COMPRESSION" -New in this version of \s-1OVDB\s0 is the ability to compress overview data +The ovdb storage method has the ability to compress overview data before it is stored into the database. In addition to consuming less disk space, compression keeps the average size of the database keys smaller. This in turn increases the average number of keys per page, which can significantly improve performance and also helps keep the database more -compact. This feature requires that \s-1INN\s0 be built with zlib. Only records +compact. This feature requires that \s-1INN\s0 be built with zlib. Only records larger than 600 bytes get compressed, because that is the point at which compression starts to become significant. .PP -If compression is not enabled (either from the \f(CW\*(C`compress\*(C'\fR option in -\&\fIovdb.conf\fR or \s-1INN\s0 was not built from zlib), the database will be backward -compatible with older versions of \s-1OVDB. \s0 However, if compression is enabled, -the database is marked with a newer version that will prevent older versions -of \s-1OVDB\s0 from opening the database. +If compression is not enabled (either from the \fIcompress\fR option in +\&\fIovdb.conf\fR or \s-1INN\s0 was not built with zlib support), the database +will be backward compatible with older versions of ovdb. However, +if compression is enabled, the database is marked with a newer version +that will prevent older versions of ovdb from opening the database. .PP You can upgrade an existing database to use compression simply by setting \&\fIcompress\fR to true in \fIovdb.conf\fR. Note that existing records in the @@ -328,27 +350,27 @@ compression will be compressed. .PP If you disable compression on a database that previously had it enabled, new records will be stored uncompressed, but the database will still be -incompatible with older versions of \s-1OVDB \s0(and will also be incompatible -with this version of \s-1OVDB\s0 if it was not built with zlib). So to downgrade -to a completely uncompressed database you will have to rebuild the database -using makehistory. +incompatible with older versions of ovdb (and will also be incompatible +with this version of ovdb if \s-1INN\s0 was not built with zlib support). +So to downgrade to a completely uncompressed database, you will have +to rebuild the database using \fBmakehistory\fR. .SH "DB_CONFIG" .IX Header "DB_CONFIG" -A file called \fI\s-1DB_CONFIG\s0\fR may be placed in the database directory to -customize where the various database files and transaction logs are -written. By default, all of the files are written in the \*(L"\s-1DB_HOME\*(R"\s0 -directory. One way to improve performance is to put the transaction logs -on a different disk. To do this, put: +A file called \fI\s-1DB_CONFIG\s0\fR may be placed in the database directory +(\fIpathoverview\fR in \fIinn.conf\fR) to customize where the various database +files and transaction logs are written. By default, all of the files +are written in the \f(CW\*(C`DB_HOME\*(C'\fR directory. One way to improve performance +is to put the transaction logs on a different disk. To do this, put: .PP .Vb 1 \& DB_LOG_DIR /path/to/logs .Ve .PP -in the \fI\s-1DB_CONFIG\s0\fR file. If the pathname you give starts with a /, it is -treated as an absolute path; otherwise, it is relative to the \*(L"\s-1DB_HOME\*(R"\s0 +in the \fI\s-1DB_CONFIG\s0\fR file. If the pathname you give starts with a \f(CW\*(C`/\*(C'\fR, it is +treated as an absolute path; otherwise, it is relative to the \f(CW\*(C`DB_HOME\*(C'\fR directory. Make sure that any directories you specify exist and have proper ownership/mode before starting \s-1INN,\s0 because they won't be created -automatically. Also, don't change the \s-1DB_CONFIG\s0 file while anything that +automatically. Also, don't change the \fI\s-1DB_CONFIG\s0\fR file while anything that uses ovdb is running. .PP Another thing that you can do with this file is to split the overview @@ -356,9 +378,9 @@ database across multiple disks. In the directories that Berkeley\ \s-1DB\s0 will search when it goes to open a database. .PP For example, let's say that you have \fIpathoverview\fR set to -\&\fI/mnt/overview\fR and you have four additional file systems created on -\&\fI/mnt/ov?\fR. You would create a file \*(L"/mnt/overview/DB_CONFIG\*(R" containing -the following lines: +\&\fI/mnt/overview\fR and you have four additional file systems created +on \fI/mnt/ovX\fR. You would create a file \fI/mnt/overview/DB_CONFIG\fR +containing the following lines: .PP .Vb 5 \& set_data_dir /mnt/overview @@ -368,46 +390,38 @@ the following lines: \& set_data_dir /mnt/ov4 .Ve .PP -Distribute your ovNNNNN files into the four filesystems. (say, 8 each). +Distribute your \fIovNNNNN\fR files into the four filesystems (say, 8 each). When called upon to open a database file, the db library will look for it in each of the specified directories (in order). If said file is not found, one will be created in the first of those directories. .PP -Whenever you change \s-1DB_CONFIG\s0 or move database files around, make sure all -news processes that use the database are shut down first (including -nnrpds). -.PP -The \s-1DB_CONFIG\s0 functionality is part of Berkeley\ \s-1DB\s0 itself, rather than -something provided by ovdb. See the Berkeley\ \s-1DB\s0 documentation for complete -details for the version of Berkeley\ \s-1DB\s0 that you're running. +Whenever you change \fI\s-1DB_CONFIG\s0\fR or move database files around, make +sure all news processes that use the database are shut down first +(including \fBnnrpd\fR processes). +.PP +The \fI\s-1DB_CONFIG\s0\fR functionality is part of Berkeley\ \s-1DB\s0 itself, +rather than something provided by ovdb. See the Berkeley\ \s-1DB\s0 +documentation for complete details for the version of Berkeley\ \s-1DB\s0 +that you're running. .SH "RUNNING" .IX Header "RUNNING" -When starting the news system, \fBrc.news\fR will invoke \fBovdb_init\fR. -\&\fBovdb_init\fR must be run before using the database. It performs the -following tasks: -.IP "\(bu" 4 -Creates the database environment, if necessary. -.IP "\(bu" 4 -If the database is idle, 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 "\(bu" 4 -Starts the \s-1DB\s0 housekeeping processes (\fBovdb_monitor\fR) if they're not -already running. +When starting the news system, \fBrc.news\fR will invoke the \fBovdb_init\fR +program. See the \fIovdb_init\fR\|(8) man page for information about the tasks +it performs. \fBovdb_init\fR must be run before using the database. .PP -And when stopping \s-1INN, \s0\fBrc.news\fR kills the ovdb_monitor processes after +And when stopping \s-1INN, \s0\fBrc.news\fR kills the \fBovdb_monitor\fR processes after the other \s-1INN\s0 processes have been shut down. .SH "DIAGNOSTICS" .IX Header "DIAGNOSTICS" -Problems relating to ovdb are logged to news.err with \*(L"\s-1OVDB\*(R"\s0 in the error -message. +Problems relating to ovdb are logged to \fInews.err\fR with \f(CW\*(C`OVDB\*(C'\fR in +the error message. .PP -\&\s-1INN\s0 programs that use overview will fail to start up if the ovdb_monitor -processes aren't running. Be sure to run \fBovdb_init\fR before running -anything that accesses overview. +\&\s-1INN\s0 programs that use overview will fail to start up if the +\&\fBovdb_monitor\fR processes aren't running. Be sure to run \fBovdb_init\fR +before running anything that accesses overview. .PP Also, \s-1INN\s0 programs that use overview will fail to start up if the user -running them is not the \*(L"news\*(R" user. +running them is not the news user. .PP If a program accessing the database crashes, or otherwise exits uncleanly, it might leave a stale lock in the database. This lock could cause other @@ -417,16 +431,16 @@ should perform a recovery operation whic damage caused by killing the deadlocked processes. .SH "FILES" .IX Header "FILES" -.IP "inn.conf" 4 -.IX Item "inn.conf" +.IP "\fIpathetc\fR/inn.conf" 4 +.IX Item "pathetc/inn.conf" The \fIovmethod\fR and \fIpathoverview\fR parameters are relevant to ovdb. -.IP "ovdb.conf" 4 -.IX Item "ovdb.conf" +.IP "\fIpathetc\fR/ovdb.conf" 4 +.IX Item "pathetc/ovdb.conf" Optional configuration file for tuning. See \s-1CONFIGURATION\s0 above. .IP "\fIpathoverview\fR" 4 .IX Item "pathoverview" -Directory where the database goes. Berkeley\ \s-1DB\s0 calls it the '\s-1DB_HOME\s0' -directory. +Directory where the database goes. Berkeley\ \s-1DB\s0 calls it the +\&\f(CW\*(C`DB_HOME\*(C'\fR directory. .IP "\fIpathoverview\fR/DB_CONFIG" 4 .IX Item "pathoverview/DB_CONFIG" Optional file to configure the layout of the database files. @@ -442,17 +456,16 @@ Contains the process \s-1ID\s0 of \fBovd .IX Header "TO DO" Implement a way to limit how many databases can be open at once (to reduce file descriptor usage); maybe using something similar to the cache code in -ov3.c +legacy \fIov3.c\fR file. .SH "HISTORY" .IX Header "HISTORY" -Written by Heath Kehoe for InterNetNews +Written by Heath Kehoe for InterNetNews. .PP -\&\f(CW$Id:\fR ovdb.pod 9593 2013\-12\-27 21:16:09Z iulius $ +\&\f(CW$Id:\fR ovdb.pod 10241 2018\-02\-04 15:38:19Z 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), -\&\fIovdb_stat\fR\|(8) +\&\fIinn.conf\fR\|(5), \fIinnd\fR\|(8), \fImakehistory\fR\|(8), \fInnrpd\fR\|(8), \fIovdb_init\fR\|(8), +\&\fIovdb_monitor\fR\|(8), \fIovdb_stat\fR\|(8). .PP -Berkeley\ \s-1DB\s0 documentation: in the \fIdocs\fR directory of the Berkeley\ \s-1DB\s0 -source distribution, or on the Oracle Berkeley\ \s-1DB\s0 web page +Berkeley\ \s-1DB\s0 documentation: in the \fIdocs\fR directory of the Berkeley\ \s-1DB\s0 source distribution, or on the Oracle Berkeley\ \s-1DB\s0 web page (). diff -Nurp inn-2.6.1/doc/man/ovdb_init.8 inn-2.6.2/doc/man/ovdb_init.8 --- inn-2.6.1/doc/man/ovdb_init.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/ovdb_init.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "OVDB_INIT 8" -.TH OVDB_INIT 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH OVDB_INIT 8 "2018-03-18" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -142,49 +138,48 @@ ovdb_init \- Prepare ovdb database for use .SH "SYNOPSIS" .IX Header "SYNOPSIS" -ovdb_init [\f(CW\*(C`\-u\*(C'\fR|\f(CW\*(C`\-r\*(C'\fR] +\&\fBovdb_init\fR [\fB\-r\fR|\fB\-u\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" This command must be run before any other process can access the -overview database. It performs the following steps: +overview database. \fBovdb_init\fR is normally invoked automatically by +\&\fBrc.news\fR when starting the news system. +.PP +\&\fBovdb_init\fR performs the following steps: .IP "1." 4 -Creates the database environment, if necessary +Creates the database environment, if necessary. .IP "2." 4 -If the database is idle (and if the \f(CW\*(C`\-u\*(C'\fR option is not specified), +If the database is idle (and if the \fB\-u\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 -If the \f(CW\*(C`\-u\*(C'\fR option is specified, it performs any necessary upgrades +If the \fB\-u\fR option is specified, it performs any necessary upgrades to the database. See the \s-1UPGRADING\s0 section below. .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). +Starts the database housekeeping processes (\fBovdb_monitor\fR) if they are +not already running. (Unless the \fB\-r\fR option is specified). .IP "5." 4 -Starts the ovdb readserver (ovdb_server) processes if \fIreadserver\fR +Starts the ovdb readserver processes (\fBovdb_server\fR) 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). +the \fB\-r\fR option is specified). .PP -Returns exit status of 0 if all steps were completed successfully. +Returns exit status of \f(CW0\fR if all steps were completed successfully. In the event of an error, messages are written to syslog and/or stderr. .PP -If a recovery was attempted but it failed, the database may be -damaged beyond repair, requiring a rebuild with \fImakehistory\fR\|(8). -.PP -This command is normally invoked automatically by \fIrc.news\fR\|(8). +If a recovery was attempted but failed, the database may be +damaged beyond repair, requiring a rebuild with \fBmakehistory\fR. .PP -It is \s-1OK\s0 to run this command multiple times. +This command can be run multiple times. .SH "OPTIONS" .IX Header "OPTIONS" -.ie n .IP """\-r""" 4 -.el .IP "\f(CW\-r\fR" 4 +.IP "\fB\-r\fR" 4 .IX Item "-r" -Perform recovery only. \f(CW\*(C`ovdb_monitor\*(C'\fR is not started. -.ie n .IP """\-u""" 4 -.el .IP "\f(CW\-u\fR" 4 +Perform recovery only. \fBovdb_monitor\fR is not started. +.IP "\fB\-u\fR" 4 .IX Item "-u" Perform any needed upgrades. Recovery is not attempted. -\&\f(CW\*(C`ovdb_monitor\*(C'\fR is started if the upgrade succeeded. +\&\fBovdb_monitor\fR is started if the upgrade succeeded. .SH "UPGRADING" .IX Header "UPGRADING" There are two situations in which the database will need to be @@ -194,10 +189,11 @@ You upgrade the Berkeley\ \s-1DB\s0 libr from 2.7.7 to 3.1.17. In this case, the Berkeley\ \s-1DB\s0 db\->\fIupgrade()\fR method is used. .IP "\(bu" 4 -You upgrade ovdb to a newer major version; i.e., ovdb\-1.0 to ovdb\-2.0. +You upgrade ovdb to a newer major version; i.e., ovdb\-1.0 (shipped with +\&\s-1INN\s0\ 2.3.0 up to \s-1INN\s0\ 2.3.5) to ovdb\-2.0 (since \s-1INN\s0\ 2.4.0). .PP 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 +upgrade cannot 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. If an upgrade does get interrupted, try running the upgrade again. @@ -205,7 +201,7 @@ If an upgrade does get interrupted, try 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 -Build and install the Berkeley\ \s-1DB\s0\ 3.1.17; +Build and install the Berkeley\ \s-1DB\s0\ 3.1.17 version; .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); @@ -219,14 +215,14 @@ Do a \f(CW\*(C`make update\*(C'\fR to in .IP "6." 4 Run \f(CW\*(C`ovdb_init \-u\*(C'\fR as the news user; .IP "7." 4 -Start \s-1INN\s0 with \f(CW\*(C`rc.news\*(C'\fR. +Start \s-1INN\s0 with the \f(CW\*(C`rc.news\*(C'\fR command. .PP -It is \s-1OK\s0 to specify \f(CW\*(C`\-u\*(C'\fR even if no upgrades are needed. +Note that the \fB\-u\fR option can be used even if no upgrades are needed. .SH "HISTORY" .IX Header "HISTORY" Written by Heath Kehoe for InterNetNews. .PP -\&\f(CW$Id:\fR ovdb_init.pod 9765 2014\-12\-07 21:07:34Z iulius $ +\&\f(CW$Id:\fR ovdb_init.pod 10241 2018\-02\-04 15:38:19Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIovdb\fR\|(5), \fImakehistory\fR\|(8) +\&\fIovdb\fR\|(5), \fImakehistory\fR\|(8), \fIrc.news\fR\|(8). diff -Nurp inn-2.6.1/doc/man/ovdb_monitor.8 inn-2.6.2/doc/man/ovdb_monitor.8 --- inn-2.6.1/doc/man/ovdb_monitor.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/ovdb_monitor.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "OVDB_MONITOR 8" -.TH OVDB_MONITOR 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH OVDB_MONITOR 8 "2018-03-18" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -142,24 +138,28 @@ ovdb_monitor \- Database maintenance .SH "SYNOPSIS" .IX Header "SYNOPSIS" -Use \f(CW\*(C`ovdb_init\*(C'\fR to start ovdb_monitor +Use \fBovdb_init\fR to start \fBovdb_monitor\fR .SH "DESCRIPTION" .IX Header "DESCRIPTION" -When started (by \f(CW\*(C`ovdb_init\*(C'\fR), \f(CW\*(C`ovdb_monitor\*(C'\fR forks three processes -that perform routine database maintenance tasks. These are: -transaction checkpointing, deadlock detection, and transaction log -removal. The process \s-1ID\s0 of the parent is written to -\&\fI\fIpathrun\fI/ovdb_monitor.pid\fR. This \s-1PID\s0 is used by other \s-1INN\s0 -commands to verify that ovdb_monitor is running. +When started (normally by \fBovdb_init\fR that is invoked by \fBrc.news\fR), +\&\fBovdb_monitor\fR forks three processes that perform routine database +maintenance tasks. These are transaction checkpointing, deadlock +detection, and transaction log removal. .PP -To shut down ovdb_monitor, send a \s-1TERM\s0 signal to the process \s-1ID\s0 -in \fI\fIpathrun\fI/ovdb_monitor.pid\fR . The parent process will shut -down the three children and wait for their exit before exiting itself. +The process \s-1ID\s0 of the parent is written to \fIovdb_monitor.pid\fR in the +\&\fIpathrun\fR directory. This \s-1PID\s0 is used by other \s-1INN\s0 commands to verify +that \fBovdb_monitor\fR is running. +.PP +To shut down \fBovdb_monitor\fR, send a \s-1TERM\s0 signal to the process \s-1ID\s0 +in \fIovdb_monitor.pid\fR. The parent process will shut down the three +children and wait for their exit before exiting itself. Note that when +running the \f(CW\*(C`rc.news stop\*(C'\fR command to stop the news system, \fBrc.news\fR +automatically takes care of stopping \fBovdb_monitor\fR. .SH "HISTORY" .IX Header "HISTORY" Written by Heath Kehoe for InterNetNews. .PP -\&\f(CW$Id:\fR ovdb_monitor.pod 9765 2014\-12\-07 21:07:34Z iulius $ +\&\f(CW$Id:\fR ovdb_monitor.pod 10241 2018\-02\-04 15:38:19Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIovdb\fR\|(5), \fIovdb_init\fR\|(8) +\&\fIovdb\fR\|(5), \fIovdb_init\fR\|(8), \fIrc.news\fR\|(8). diff -Nurp inn-2.6.1/doc/man/ovdb_server.8 inn-2.6.2/doc/man/ovdb_server.8 --- inn-2.6.1/doc/man/ovdb_server.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/ovdb_server.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,32 +129,35 @@ .\" ======================================================================== .\" .IX Title "OVDB_SERVER 8" -.TH OVDB_SERVER 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH OVDB_SERVER 8 "2018-01-28" "INN 2.6.2" "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 +ovdb_server \- Overview helper server for nnrpd .SH "SYNOPSIS" .IX Header "SYNOPSIS" -Use \f(CW\*(C`ovdb_init\*(C'\fR to start ovdb_server +Use \fBovdb_init\fR to start \fBovdb_server\fR .SH "DESCRIPTION" .IX Header "DESCRIPTION" -If the \f(CW\*(C`readserver\*(C'\fR parameter in \fIovdb.conf\fR is true, -\&\f(CW\*(C`ovdb_init\*(C'\fR will start \f(CW\*(C`ovdb_server\*(C'\fR. +If the \fIreadserver\fR parameter in \fIovdb.conf\fR is true, \fBovdb_init\fR +(if not invoked with the \fB\-r\fR flag) will start as many \fBovdb_server\fR +processes as the \fInumrsprocs\fR parameter states. .PP -\&\f(CW\*(C`ovdb_server\*(C'\fR opens the overview database, and accesses it -on behalf of the nnrpd reader processes. +\&\fBovdb_server\fR opens the overview database, and accesses it on behalf +of the \fBnnrpd\fR reader processes. .PP -To shut down ovdb_server, send a \s-1TERM\s0 signal to the process \s-1ID\s0 -in \fI\fIpathrun\fI/ovdb_server.pid\fR . The parent process will shut -down its children and wait for their exit before exiting itself. +To shut down \fBovdb_server\fR, send a \s-1TERM\s0 signal to the process \s-1ID\s0 +mentioned in \fIovdb_server.pid\fR in \fIpathrun\fR (note that the \fBrc.news\fR +script already does that if used to shut down \s-1INN\s0). The parent +process will shut down its children and wait for their exit before +exiting itself. .SH "HISTORY" .IX Header "HISTORY" Written by Heath Kehoe for InterNetNews. .PP -\&\f(CW$Id:\fR ovdb_server.pod 9765 2014\-12\-07 21:07:34Z iulius $ +\&\f(CW$Id:\fR ovdb_server.pod 10191 2017\-11\-25 21:11:53Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIovdb\fR\|(5), \fIovdb_init\fR\|(8) +\&\fIovdb\fR\|(5), \fIovdb_init\fR\|(8), \fIrc.news\fR\|(8). diff -Nurp inn-2.6.1/doc/man/ovdb_stat.8 inn-2.6.2/doc/man/ovdb_stat.8 --- inn-2.6.1/doc/man/ovdb_stat.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/ovdb_stat.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "OVDB_STAT 8" -.TH OVDB_STAT 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH OVDB_STAT 8 "2018-03-18" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -142,43 +138,45 @@ ovdb_stat \- Display information from the ovdb database .SH "SYNOPSIS" .IX Header "SYNOPSIS" -\&\fBovdb_stat\fR \fB\-Hgci\fR [\fB\-r\fR \fIartnumrange\fR] newsgroup [newsgroup ...] +\&\fBovdb_stat\fR [\fB\-Hgci\fR] [\fB\-r\fR \fIartnumrange\fR] \fInewsgroup\fR [\fInewsgroup\fR ...] .PP -\&\fBovdb_stat\fR \fB\-Hklmtv\fR [\fB\-d\fR \fIdatabase\fR] +\&\fBovdb_stat\fR \fB\-HklmMtv\fR [\fB\-d\fR \fIdatabase\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" \&\fBovdb_stat\fR displays information from the ovdb database: Berkeley\ \s-1DB\s0 -statistics, newsgroup data, and overview records; and optionally -outputs in \s-1HTML\s0 format. +statistics, newsgroup data, and overview records. The output can +optionally be in \s-1HTML\s0 format. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-g\fR" 4 .IX Item "-g" -Newsgroup himark, lowmark, article count, and flag for the given newsgroups -(as stored in the ovdb \*(L"groupinfo\*(R" database) are displayed. +Newsgroup high water mark, low marker mark, article count, and flag +for the given newsgroups (as stored in the ovdb \fIgroupinfo\fR database) +are displayed. .IP "\fB\-c\fR" 4 .IX Item "-c" -Similar to \fB\-g\fR, except the himark, lowmark, and count are calculated -by actually scanning the overview records and counting them. -This can be a lengthy operation on groups with lots of articles. +Similar to \fB\-g\fR, except the high water mark, low water mark, and +article count are calculated by actually scanning the overview records +and counting them. This can be a lengthy operation on groups with lots +of articles. .IP "\fB\-i\fR" 4 .IX Item "-i" Internal data regarding the given newsgroups are displayed. .IP "\fB\-r\fR \fIartnumrange\fR" 4 .IX Item "-r artnumrange" Overview records are retrieved. The \fIartnumrange\fR parameter may be -a single article number, or a range of articles in the format \f(CW\*(C`low\-hi\*(C'\fR. +a single article number, or a range of articles in the format \f(CW\*(C`low\-high\*(C'\fR. .IP "\fB\-H\fR" 4 .IX Item "-H" Output is presented in \s-1HTML\s0 format. .IP "\fB\-k\fR" 4 .IX Item "-k" -Displays lock region statistics, as returned by the Berkeley\ \s-1DB\s0 \fIlock_stat()\fR -call. +Displays lock region statistics, as returned by the Berkeley\ \s-1DB\s0 +\&\fIlock_stat()\fR call. .IP "\fB\-l\fR" 4 .IX Item "-l" -Displays log region statistics, as returned by the Berkeley\ \s-1DB\s0 \fIlog_stat()\fR -call. +Displays log region statistics, as returned by the Berkeley\ \s-1DB\s0 +\&\fIlog_stat()\fR call. .IP "\fB\-m\fR" 4 .IX Item "-m" Displays global memory pool statistics, as returned by the @@ -189,8 +187,8 @@ Same as \fB\-m\fR, and also displays mem database file. .IP "\fB\-t\fR" 4 .IX Item "-t" -Displays log region statistics, as returned by the Berkeley\ \s-1DB\s0 \fItxn_stat()\fR -call. +Displays log region statistics, as returned by the Berkeley\ \s-1DB\s0 +\&\fItxn_stat()\fR call. .IP "\fB\-v\fR" 4 .IX Item "-v" Displays ovdb version, and Berkeley\ \s-1DB\s0 version. @@ -201,15 +199,15 @@ Berkeley\ \s-1DB\s0 db\->\fIstat()\fR ca on busy systems (several minutes or more). .SH "WARNINGS" .IX Header "WARNINGS" -ovdb_stat may be safely killed with the \s-1INT, TERM,\s0 or \s-1HUP\s0 signals. +\&\fBovdb_stat\fR may be safely killed with the \s-1INT, TERM,\s0 or \s-1HUP\s0 signals. It catches those signals and exits cleanly. -Do not kill ovdb_stat with other signals, unless absolutely necessary, -because it may leave stale locks in the \s-1DB\s0 environment. +Do not kill \fBovdb_stat\fR with other signals, unless absolutely necessary, +because it may leave stale locks in the database environment. .SH "HISTORY" .IX Header "HISTORY" Written by Heath Kehoe for InterNetNews. .PP -\&\f(CW$Id:\fR ovdb_stat.pod 9765 2014\-12\-07 21:07:34Z iulius $ +\&\f(CW$Id:\fR ovdb_stat.pod 10241 2018\-02\-04 15:38:19Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIovdb\fR\|(5) +\&\fIovdb\fR\|(5). diff -Nurp inn-2.6.1/doc/man/overchan.8 inn-2.6.2/doc/man/overchan.8 --- inn-2.6.1/doc/man/overchan.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/overchan.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "OVERCHAN 8" -.TH OVERCHAN 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH OVERCHAN 8 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/passwd.nntp.5 inn-2.6.2/doc/man/passwd.nntp.5 --- inn-2.6.1/doc/man/passwd.nntp.5 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/passwd.nntp.5 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "PASSWD.NNTP 5" -.TH PASSWD.NNTP 5 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH PASSWD.NNTP 5 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/perl-nocem.8 inn-2.6.2/doc/man/perl-nocem.8 --- inn-2.6.1/doc/man/perl-nocem.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/perl-nocem.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "PERL-NOCEM 8" -.TH PERL-NOCEM 8 "2016-11-06" "INN 2.6.1" "InterNetNews Documentation" +.TH PERL-NOCEM 8 "2018-03-18" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -259,7 +255,7 @@ Copyright 2000 by Miquel van Smoorenburg .PP Copyright 2001 by Marco d'Itri . .PP -\&\f(CW$Id:\fR perl\-nocem.in 10076 2016\-10\-08 20:37:36Z iulius $ +\&\f(CW$Id:\fR perl\-nocem.in 10245 2018\-02\-16 21:11:59Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIgpgv\fR\|(1), \fIgrephistory\fR\|(1), \fIinn.conf\fR\|(5), \fInewsfeeds\fR\|(5), \fIpgp\fR\|(1). +\&\fIgpg\fR\|(1), \fIgpgv\fR\|(1), \fIgrephistory\fR\|(1), \fIinn.conf\fR\|(5), \fInewsfeeds\fR\|(5), \fIpgp\fR\|(1). diff -Nurp inn-2.6.1/doc/man/pgpverify.1 inn-2.6.2/doc/man/pgpverify.1 --- inn-2.6.1/doc/man/pgpverify.1 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/pgpverify.1 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "PGPVERIFY 1" -.TH PGPVERIFY 1 "2016-11-06" "INN 2.6.1" "InterNetNews Documentation" +.TH PGPVERIFY 1 "2018-03-18" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -166,8 +162,8 @@ signatures). If that directory doesn't the default key ring, which is in a \fI.pgp\fR or \fI.gnupg\fR subdirectory of the running user's home directory. .PP -\&\s-1INN,\s0 when using GnuPG, configures \fBpgpverify\fR to use \fBgpgv\fR, which by -default expects keys to be in a keyring named \fItrustedkeys.gpg\fR, since it +\&\s-1INN,\s0 when using GnuPG, configures \fBpgpverify\fR to use \fBgpg\fR or \fBgpgv\fR, which +by default expects keys to be in a keyring named \fItrustedkeys.gpg\fR, since it doesn't implement trust checking directly. \fBpgpverify\fR uses that file if present but falls back to \fIpubring.gpg\fR if it's not found. This bypasses the trust model for checking keys, but is compatible with the way that @@ -215,12 +211,12 @@ A problem occurred not directly related .SH "ENVIRONMENT" .IX Header "ENVIRONMENT" \&\fBpgpverify\fR does not modify or otherwise alter the environment before -invoking the \fBpgp\fR or \fBgpgv\fR program. It is the responsibility of the -person who installs \fBpgpverify\fR to ensure that when \fBpgp\fR or \fBgpgv\fR -runs, it has the ability to locate and read a \s-1PGP\s0 key file that contains -the \s-1PGP\s0 public keys for the appropriate Usenet hierarchy administrators. -\&\fBpgpverify\fR can be pointed to an appropriate key ring by editing -variables at the beginning of this script. +invoking the \fBpgp\fR, \fBgpgv\fR or \fBgpg\fR program. It is the responsibility of +the person who installs \fBpgpverify\fR to ensure that when \fBpgp\fR, \fBgpgv\fR or +\&\fBgpg\fR runs, it has the ability to locate and read a \s-1PGP\s0 key file that +contains the \s-1PGP\s0 public keys for the appropriate Usenet hierarchy +administrators. \fBpgpverify\fR can be pointed to an appropriate key ring by +editing variables at the beginning of this script. .SH "NOTES" .IX Header "NOTES" Historically, Usenet news server administrators have configured their news @@ -308,7 +304,7 @@ NEGLIGENCE OR OTHERWISE\s0) \s-1ARISING SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\s0 .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIgpgv\fR\|(1), \fIpgp\fR\|(1). +\&\fIgpg\fR\|(1), \fIgpgv\fR\|(1), \fIpgp\fR\|(1). .PP is where the most recent versions of \&\fBsigncontrol\fR and \fBpgpverify\fR live, along with \s-1PGP\s0 public keys used for diff -Nurp inn-2.6.1/doc/man/procbatch.8 inn-2.6.2/doc/man/procbatch.8 --- inn-2.6.1/doc/man/procbatch.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/procbatch.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "PROCBATCH 8" -.TH PROCBATCH 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH PROCBATCH 8 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/prunehistory.8 inn-2.6.2/doc/man/prunehistory.8 --- inn-2.6.1/doc/man/prunehistory.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/prunehistory.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "PRUNEHISTORY 8" -.TH PRUNEHISTORY 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH PRUNEHISTORY 8 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/pullnews.1 inn-2.6.2/doc/man/pullnews.1 --- inn-2.6.1/doc/man/pullnews.1 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/pullnews.1 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "PULLNEWS 1" -.TH PULLNEWS 1 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH PULLNEWS 1 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/qio.3 inn-2.6.2/doc/man/qio.3 --- inn-2.6.1/doc/man/qio.3 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/qio.3 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "qio 3" -.TH qio 3 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH qio 3 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/radius.8 inn-2.6.2/doc/man/radius.8 --- inn-2.6.1/doc/man/radius.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/radius.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "RADIUS 8" -.TH RADIUS 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH RADIUS 8 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/rc.news.8 inn-2.6.2/doc/man/rc.news.8 --- inn-2.6.1/doc/man/rc.news.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/rc.news.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "RC.NEWS 8" -.TH RC.NEWS 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH RC.NEWS 8 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/readers.conf.5 inn-2.6.2/doc/man/readers.conf.5 --- inn-2.6.1/doc/man/readers.conf.5 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/readers.conf.5 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "READERS.CONF 5" -.TH READERS.CONF 5 "2016-10-07" "INN 2.6.1" "InterNetNews Documentation" +.TH READERS.CONF 5 "2018-01-28" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -633,9 +629,11 @@ limiting is applied to the pre-encryptio .IX Item "localtime:" If a Date: or an Injection-Date: header field is not included in a posted article, \fInnrpd\fR\|(8) normally adds these header fields in \s-1UTC.\s0 -If this is set to true, the Date: header field will be formatted in -local time instead. (The Injection-Date: header field will remain in -\&\s-1UTC,\s0 though.) This is a boolean value and the default is false. +If this is set to true, the Date: header field will be formatted in local +time instead. (The Injection-Date: header field is added according to +the behaviour of the \fIaddinjectiondate\fR parameter in \fIinn.conf\fR, and +will remain in \s-1UTC,\s0 though.) This is a boolean value and the default +is false. .Sp This parameter permits to handle a relatively unusual corner case. It is mostly a tool for people who \fIwant\fR to disclose their local time @@ -1005,7 +1003,7 @@ tunnel), use the localaddress: parameter Written by Aidan Cully for InterNetNews. Substantially expanded by Russ Allbery . .PP -\&\f(CW$Id:\fR readers.conf.pod 9977 2015\-12\-10 20:49:04Z iulius $ +\&\f(CW$Id:\fR readers.conf.pod 10173 2017\-09\-18 19:05:32Z 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.6.1/doc/man/rnews.1 inn-2.6.2/doc/man/rnews.1 --- inn-2.6.1/doc/man/rnews.1 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/rnews.1 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "RNEWS 1" -.TH RNEWS 1 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH RNEWS 1 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/scanlogs.8 inn-2.6.2/doc/man/scanlogs.8 --- inn-2.6.1/doc/man/scanlogs.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/scanlogs.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "SCANLOGS 8" -.TH SCANLOGS 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH SCANLOGS 8 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/scanspool.8 inn-2.6.2/doc/man/scanspool.8 --- inn-2.6.1/doc/man/scanspool.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/scanspool.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "SCANSPOOL 8" -.TH SCANSPOOL 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH SCANSPOOL 8 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/send-uucp.8 inn-2.6.2/doc/man/send-uucp.8 --- inn-2.6.1/doc/man/send-uucp.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/send-uucp.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "SEND-UUCP 8" -.TH SEND-UUCP 8 "2016-11-06" "INN 2.6.1" "InterNetNews Documentation" +.TH SEND-UUCP 8 "2016-11-06" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/sendinpaths.8 inn-2.6.2/doc/man/sendinpaths.8 --- inn-2.6.1/doc/man/sendinpaths.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/sendinpaths.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "SENDINPATHS 8" -.TH SENDINPATHS 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH SENDINPATHS 8 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/shlock.1 inn-2.6.2/doc/man/shlock.1 --- inn-2.6.1/doc/man/shlock.1 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/shlock.1 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "SHLOCK 1" -.TH SHLOCK 1 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH SHLOCK 1 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/simpleftp.1 inn-2.6.2/doc/man/simpleftp.1 --- inn-2.6.1/doc/man/simpleftp.1 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/simpleftp.1 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "SIMPLEFTP 1" -.TH SIMPLEFTP 1 "2016-11-06" "INN 2.6.1" "InterNetNews Documentation" +.TH SIMPLEFTP 1 "2016-11-06" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/sm.1 inn-2.6.2/doc/man/sm.1 --- inn-2.6.1/doc/man/sm.1 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/sm.1 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "SM 1" -.TH SM 1 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH SM 1 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/storage.conf.5 inn-2.6.2/doc/man/storage.conf.5 --- inn-2.6.1/doc/man/storage.conf.5 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/storage.conf.5 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "STORAGE.CONF 5" -.TH STORAGE.CONF 5 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH STORAGE.CONF 5 "2018-01-28" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -301,7 +297,10 @@ and stores new articles over the top of expire time of articles stored in \s-1CNFS\s0 buffers is therefore entirely determined by how long it takes the buffer to wrap around, which depends on how quickly data is being stored in it. (This method is therefore said -to have self-expire functionality.) \s-1EXPENSIVESTAT\s0 is false for this method. +to have self-expire functionality. It also means that when an article is +cancelled, the cycbuff doesn't go back and use space until it rolls over and +the whole cycbuff starts being reused.) \s-1EXPENSIVESTAT\s0 is false for this +method. .Sp \&\s-1CNFS\s0 has its own configuration file, \fIcycbuff.conf\fR, which describes some subtleties to the basic description given above. Storage method entries @@ -336,7 +335,8 @@ hardcoded extension. (The arrival time, is converted to hexadecimal and interpreted as \f(CW0xaabbccdd\fR, with \&\f(CW\*(C`aa\*(C'\fR, \f(CW\*(C`bb\*(C'\fR, and \f(CW\*(C`cc\*(C'\fR used to build the path.) This method does not have self-expire functionality (meaning \fBexpire\fR has to run periodically -to delete old articles). \s-1EXPENSIVESTAT\s0 is false for this method. +to delete old articles, as well as cancelled articles if \fIimmediatecancel\fR +is not set to true in \fIinn.conf\fR). \s-1EXPENSIVESTAT\s0 is false for this method. .Sp Advantages: It is roughly four times faster than \f(CW\*(C`timehash\*(C'\fR for article writes, since much of the file system overhead is bypassed, while still @@ -360,7 +360,8 @@ where \f(CW\*(C`nn\*(C'\fR is the hexade hexadecimal sequence number, and \f(CW\*(C`bb\*(C'\fR, \f(CW\*(C`cc\*(C'\fR, and \f(CW\*(C`aadd\*(C'\fR are components of the arrival time in hexadecimal (the arrival time is interpreted as documented above under \f(CW\*(C`timecaf\*(C'\fR). This method does not have self-expire -functionality. \s-1EXPENSIVESTAT\s0 is true for this method. +functionality. Cancelled articles are removed immediately. \s-1EXPENSIVESTAT\s0 +is true for this method. .Sp Advantages: Heavy traffic groups do not cause bottlenecks, and a fine control of article retention time is still possible. @@ -385,7 +386,8 @@ the article is linked into each newsgrou (using either hard or symbolic links). This is the way versions of \s-1INN\s0 prior to 2.0 stored all articles, as well as being the article storage format used by C News and earlier news systems. This method does not have -self-expire functionality. \s-1EXPENSIVESTAT\s0 is true for this method. +self-expire functionality. Cancelled articles are removed immediately. +\&\s-1EXPENSIVESTAT\s0 is true for this method. .Sp 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 @@ -477,7 +479,7 @@ should never expire or through the spool Written by Katsuhiro Kondou for InterNetNews. Rewritten into \s-1POD\s0 by Julien Elie. .PP -\&\f(CW$Id:\fR storage.conf.pod 8357 2009\-02\-27 17:56:00Z iulius $ +\&\f(CW$Id:\fR storage.conf.pod 10230 2018\-01\-28 21:22:21Z 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.6.1/doc/man/subscriptions.5 inn-2.6.2/doc/man/subscriptions.5 --- inn-2.6.1/doc/man/subscriptions.5 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/subscriptions.5 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "SUBSCRIPTIONS 5" -.TH SUBSCRIPTIONS 5 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH SUBSCRIPTIONS 5 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/tally.control.8 inn-2.6.2/doc/man/tally.control.8 --- inn-2.6.1/doc/man/tally.control.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/tally.control.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "TALLY.CONTROL 8" -.TH TALLY.CONTROL 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH TALLY.CONTROL 8 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/tdx-util.8 inn-2.6.2/doc/man/tdx-util.8 --- inn-2.6.1/doc/man/tdx-util.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/tdx-util.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "TDX-UTIL 8" -.TH TDX-UTIL 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH TDX-UTIL 8 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/tinyleaf.8 inn-2.6.2/doc/man/tinyleaf.8 --- inn-2.6.1/doc/man/tinyleaf.8 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/tinyleaf.8 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "TINYLEAF 8" -.TH TINYLEAF 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH TINYLEAF 8 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/tst.3 inn-2.6.2/doc/man/tst.3 --- inn-2.6.1/doc/man/tst.3 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/tst.3 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "tst 3" -.TH tst 3 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH tst 3 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/man/uwildmat.3 inn-2.6.2/doc/man/uwildmat.3 --- inn-2.6.1/doc/man/uwildmat.3 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/man/uwildmat.3 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -54,20 +54,16 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.nr rF 0 -.if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.if !\nF .nr F 0 +.if \nF>0 \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ -. nr % 0 -. nr F 2 -. \} +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 . \} .\} -.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -133,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "uwildmat 3" -.TH uwildmat 3 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" +.TH uwildmat 3 "2015-09-12" "INN 2.6.2" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.1/doc/pod/checklist.pod inn-2.6.2/doc/pod/checklist.pod --- inn-2.6.1/doc/pod/checklist.pod 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/pod/checklist.pod 2018-03-18 13:03:32.000000000 -0700 @@ -1,6 +1,6 @@ =head1 Introduction -$Id: checklist.pod 10097 2016-11-04 22:19:07Z iulius $ +$Id: checklist.pod 10257 2018-03-08 16:17:55Z iulius $ This is an installation checklist written by Rebecca Ore, intended to be the beginning of a different presentation of the information in F, @@ -165,7 +165,7 @@ section in F). =item * -Run C<< inncheck -a -v -f --pedantic --perm >> and fix anything noted: +Run C<< /inncheck -a -v -f --pedantic --perm >> and fix anything noted: B gives a rough check on the appropriateness of the configuration files as you go. (It's the equivalent of C for Perl scripts.) @@ -336,10 +336,10 @@ to NNTPS port 563 and put something like su news -s /bin/sh -c '/nnrpd -D -c /readers-ssl.conf -p 563 -S' -Note that a news client which supports the STARTTLS command can also -use the conventional NNTP port 119 to initiate a TLS connection. -However, as such clients are not widespread yet, using the separate -port 563 is still common practice (though discouraged). See nnrpd(8) +Note that a news client which supports the STARTTLS command can also use +the conventional NNTP port 119 to dynamically upgrade from unencrypted +to TLS-protected traffic during an NNTP session. However, this practice +is discouraged in favour of using the separate port 563. See nnrpd(8) for more information about TLS support. =back diff -Nurp inn-2.6.1/doc/pod/cycbuff.conf.pod inn-2.6.2/doc/pod/cycbuff.conf.pod --- inn-2.6.1/doc/pod/cycbuff.conf.pod 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/pod/cycbuff.conf.pod 2018-03-18 13:03:32.000000000 -0700 @@ -120,6 +120,10 @@ remaining references to them. Adding a new cycbuff just requires creating it (see below), adding a cycbuff line, adding it to a metacycbuff, and then restarting B. +Similarly, changing the allocation of an existing cycbuff from a +metacycbuff to another one just requires modifying the two metacycbuffs +accordingly, and then restarting B. (Only the cycbuff is noted +noted in the storage API tokens.) =head1 CREATING CYCBUFFS @@ -215,7 +219,7 @@ where C will be whatever you called Written by Katsuhiro Kondou for InterNetNews. Rewritten into POD by Russ Allbery . -$Id: cycbuff.conf.pod 9925 2015-08-08 17:05:43Z iulius $ +$Id: cycbuff.conf.pod 10230 2018-01-28 21:22:21Z iulius $ =head1 SEE ALSO diff -Nurp inn-2.6.1/doc/pod/hacking.pod inn-2.6.2/doc/pod/hacking.pod --- inn-2.6.1/doc/pod/hacking.pod 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/pod/hacking.pod 2018-03-18 13:03:32.000000000 -0700 @@ -692,21 +692,44 @@ with the master version at L and L. +=item * + +Check whether patches from OpenSSL (F, F +and F) could be merged into F, as +well as support for new TLS versions in the F parameter +in F. + =back =item 2. -Update copyright years in F. +If possible, on a news server running the forthcoming release, run the +following commands to make sure they do not produce any errors: + + cnfsstat -a -v + ctlinnd checkfile + inncheck -a --perm --pedantic + ovdb_stat -klmMtv + scanlogs norotate + scanspool -n -v + tdx-util -A + +Also build INN (including the F and F directories) with +warnings on (C) and run the test suite (C). =item 3. +Update copyright years in F. + +=item 4. + Update F and regenerate F. Be more detailed for a minor release than for a major release. For a major release, also add information on how to upgrade from the last major release, including anything special to be aware of. (Minor releases shouldn't require any special care when upgrading.) -=item 4. +=item 5. Bump the revision number in F (subject 1.2) so that it could be included in a final release. It should not be changed for a beta or @@ -716,7 +739,7 @@ If making a major release, the revision should also be bumped in F at the end of subject 1.2, as well as the revision numbers of scheduled versions in F. -=item 5. +=item 6. Double-check that the version information in F, F, and F has been updated if there has @@ -724,7 +747,7 @@ been any change in the library sources s the rules given at L. -=item 6. +=item 7. If making a major release, branch the source tree by creating a new directory under F in Subversion named after the major release. @@ -738,7 +761,7 @@ release. Then, in that newly created branch, remove the first paragraph in F which deals with development versions. -=item 7. +=item 8. Check out a copy of the release branch. It's currently necessary to run C and C to generate F. Then, run @@ -746,12 +769,12 @@ C to generate all necessa C. There shouldn't be any differences; otherwise, fix the F file. -=item 8. +=item 9. Run C for a final release, C for the first beta version of a new release, or C for the first release candidate version of a new release. Note that you -need to have a copy of B from L +need to have a copy of B from L to do this; at least version 0.7 is required. Start the F at the time of the previous release. (Eventually, the script will be smart enough to do this for you.) @@ -760,13 +783,13 @@ Check that the F file is corr manually edit it. Then run again C or any other command you used. -=item 9. +=item 10. Generate an MD5 checksum of the release tarball. md5sum inn-Y.Y.Y.tar.gz > inn-Y.Y.Y.tar.gz.md5 -=item 10. +=item 11. Generate a diff between this release and the previous release if feasible (always for minor releases, possibly not a good idea due to the length of @@ -776,7 +799,7 @@ release for the comparison. diff -Nurp inn-X.X.X inn-Y.Y.Y > inn-X.X.X-Y.Y.Y.diff gzip inn-X.X.X-Y.Y.Y.diff -=item 11. +=item 12. Make the resulting tar file, along with its MD5 checksum and the possible diff from the previous release, available for testing in the F @@ -785,7 +808,7 @@ Install it on at least one system and ma at least a few days. This is also a good time to send out a draft of the release announcement to inn-workers for proof-reading. -=item 12. +=item 13. Move the release into the public area of the ftp site and update the F link. Also put the diff and the MD5 checksum on the ftp @@ -800,7 +823,8 @@ corresponding F<*.asc> files. You don't checksum files. Update the F links and possibly move older releases off into -the F directory. +the F directory. Also remove testing versions from the F +directory. (Currently, this is all done by Russ by updating the files in L and then letting ISC mirror @@ -810,13 +834,13 @@ Contact the ISC folks to push the releas ISC web site (the relevant contact is C instead of C). -=item 13. +=item 14. After the ISC web site has been updated with links towards the new release, send an announce on inn-announce and in news.software.nntp (with a possible crosspost to news.admin.announce). -=item 14. +=item 15. Tag the checked-out tree that was used for generating the release with a release tag by copying it to F in Subversion. @@ -824,7 +848,7 @@ release tag by copying it to F in svn copy -r ZZZZ -m "Tag Y.Y.Y release." \ file:///srv/svn/inn/branches/Y.Y file:///srv/svn/inn/tags/Y.Y.Y -=item 15. +=item 16. Bump revision numbers to reflect the one of the following release, especially in F and F @@ -832,12 +856,12 @@ for major releases, F and minor and major releases. The release versions in the Trac wiki should also be updated. -=item 16. +=item 17. For major releases, ping Russ to update the branch used for the generation of STABLE snapshots. -=item 17. +=item 18. Ping Russ to update L with the latest version information and, for a major release, clone the @@ -885,6 +909,6 @@ technical details as needed, useful when =back -$Id: hacking.pod 10116 2016-11-06 14:23:01Z iulius $ +$Id: hacking.pod 10257 2018-03-08 16:17:55Z iulius $ =cut diff -Nurp inn-2.6.1/doc/pod/hook-perl.pod inn-2.6.2/doc/pod/hook-perl.pod --- inn-2.6.1/doc/pod/hook-perl.pod 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/pod/hook-perl.pod 2018-03-18 13:03:32.000000000 -0700 @@ -85,7 +85,7 @@ standard headers are: Comments, Content-Base, Content-Disposition, Content-Transfer-Encoding, Content-Type, Control, Date, Date-Received, Distribution, Expires, Face, Followup-To, From, In-Reply-To, Injection-Date, Injection-Info, - Keywords, Lines, List-ID, Message-ID, MIME-Version, Newsgroups, + Jabber-ID, Keywords, Lines, List-ID, Message-ID, MIME-Version, Newsgroups, NNTP-Posting-Date, NNTP-Posting-Host, NNTP-Posting-Path, Organization, Original-Sender, Originator, Path, Posted, Posting-Version, Received, References, Relay-Version, @@ -676,6 +676,6 @@ Usenet daily. It uses F This key requires a string value. It is a list of hostnames separated -by a comma. A hostname is the host's fully qualified domain name, or -the dotted-quad IP address of the peer for IPv4, or the colon-separated IP -address of the peer for IPv6. If this key is not present in -a peer block, the hostname defaults to the label of the peer. +by a comma. A hostname is either a fully qualified domain name that +resolves to the IPv4 or IPv6 address of the peer, or the dotted-quad +IP address of the peer for IPv4, or the colon-separated IP address +of the peer for IPv6. If this key is not present in a peer block, +the hostname defaults to the label of the peer. =item I @@ -184,7 +185,7 @@ This key requires a boolean value. It d Written by Fabien Tassin for InterNetNews. Converted to POD by Julien Elie. -$Id: incoming.conf.pod 9589 2013-12-19 17:47:33Z iulius $ +$Id: incoming.conf.pod 10179 2017-09-18 20:13:48Z iulius $ =head1 SEE ALSO diff -Nurp inn-2.6.1/doc/pod/inn.conf.pod inn-2.6.2/doc/pod/inn.conf.pod --- inn-2.6.1/doc/pod/inn.conf.pod 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/pod/inn.conf.pod 2018-03-18 13:03:32.000000000 -0700 @@ -60,7 +60,7 @@ INN. This should be the domain name of the local host. It should not have a leading period, and it should not be a full host address. It is used only -if the GetFQDN() routine in libinn(3) cannot get the fully-qualified +if the GetFQDN() routine in libinn(3) cannot get the fully qualified domain name by using either the gethostname(3) or gethostbyname(3) calls. 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 @@ -105,7 +105,7 @@ added to the Path: header of all article including locally posted articles, and is also used when processing some control messages and when naming the server in status reports. There is no default value; this parameter must be set in F or INN will -not start. A good value to use is the fully-qualified hostname of the +not start. A good value to use is the fully qualified hostname of the system. =item I @@ -130,6 +130,30 @@ server to connect to. In the latter cas environment variable, if it exists, overrides this. The default value is unset. +=item I + +A list of values controlling the level of checks performed by B +and B. For instance: + + syntaxchecks: [ no-laxmid ] + +The last occurrence of a given value takes precedence, that is to say +if C is listed, I takes precedence. + +Only one check can currently be enabled/disabled: + +=over 4 + +=item I / I + +When I is set, Message-IDs containing C<..> in the left part +are accepted, as well as Message-IDs with two C<@>. Some non-compliant +news posters generate such syntactically invalid Message-IDs, especially +in binary newsgroups. The default is I, that is to say INN +strictly follows the standard regarding syntax checks. + +=back + =back =head2 Feed Configuration @@ -264,10 +288,10 @@ at the leftmost side of the Path: header =item I Whether to enable PGP verification of control messages other than cancel. -This is a boolean value and the default in the F sample file -is based on whether configure found pgp, pgpv, pgpgpg, gpgv or gpgv2. -Note that if the parameter is not present in the configuration file, -it defaults to false. +This is a boolean value and the default in the F sample file is +based on whether configure found B, B, B, B, +B, B, B, B or B. Note that if the +parameter is not present in the configuration file, it defaults to false. =item I @@ -837,8 +861,15 @@ that are broken out separately after the =item I -Whether to add an Injection-Date: header to all local posts. This is a -boolean value and the default is true. +Whether to add an Injection-Date: header field to all local posts. +This is a boolean value and the default is true. + +Note that no Injection-Date: header fields will be added to local posts +already containing both a Message-ID: header field and a Date: header +field. This is done in conformance with standards, to help minimize +the possibility of a loop in e-mail gatewaying and ensure that a newly +injected article is not treated as a new, separate article in case of +multiple injection of the same article to different injecting agents. =item I @@ -850,15 +881,17 @@ That has to be done with a user-written =item I -Whether to add a posting-host attribute to the Injection-Info: header to -all local posts giving the FQDN (when known) and IP address of the system -from which the post was received. This is a boolean value and the default -is true. Note that INN either does not add this attribute or adds the name -(when known) and IP address of the client. There is no intrinsic support for -obfuscating the name of the client. That has to be done with a user-written -Perl filter, if desired. +Whether to add a posting-host attribute to the Injection-Info: header +to all local posts giving an FQDN (when known, by reverse lookup of +the client IP address) and IP address of the system from which the +post was received. This is a boolean value and the default is true. +Note that INN either does not add this attribute or adds the name (when +known) and IP address of the client. There is no intrinsic support +for obfuscating the name of the client. That has to be done with a +user-written Perl filter, if desired. -When this parameter is set to true, the FQDN (or, if unknown, the IP address) +When this parameter is set to true, an FQDN (obtained by reverse +lookup of the client IP address or, if unknown, the IP address itself) of the client is also added to the Path: header, after the C diagnostic. @@ -885,7 +918,7 @@ is the newsmaster user set at compile ti setting will also be used by mailpost(8) to fully qualify addresses and by inews(1) to generate the Sender: header (and From: header if missing). The value of the FROMHOST environment variable, if set, overrides this -setting. The default is the fully-qualified domain name of the local +setting. The default is the fully qualified domain name of the local host. =item I @@ -1089,17 +1122,12 @@ The string describing the cipher suites OpenSSL's ciphers(1) command documentation for details. The default is unset, which uses OpenSSL's default cipher suite list. -Formally, keeping the TLS_RSA_WITH_RC4_128_MD5 and -TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA cipher suites is important, as it -assures that any two compliant implementations can be configured to -interoperate (see RFC 4642 for more details). - =item I Whether to enable or disable TLS/SSL-level compression support. This is a boolean and the default is false, that is to say compression is disabled, so as to follow the best current practices for a secure -use of TLS in application protocols like NNTP. +use of TLS in application protocols (see S for NNTP). Note that enabling TLS/SSL-level compression will be possible only if the OpenSSL library INN has been built with, supports that feature. @@ -1125,14 +1153,14 @@ the server will choose following its own =item I The list of TLS/SSL protocol versions to support. Valid protocols are -B, B, B, B and B. The default -value is to only allow TLS protocols: +B, B, B, B, B and B. +The default value is to only allow TLS protocols: - tlsprotocols: [ TLSv1 TLSv1.1 TLSv1.2 ] + tlsprotocols: [ TLSv1 TLSv1.1 TLSv1.2 TLSv1.3 ] Note that the listed protocols will be enabled only if the OpenSSL library INN has been built with, supports them. In case OpenSSL supports -protocols more recent than TLSv1.2, they will be automatically enabled +protocols more recent than TLSv1.3, they will be automatically enabled (which anyway is fine regarding security, as newer protocols are supposed to be more secure). @@ -1560,7 +1588,7 @@ values for reference. Written by Rich $alz for InterNetNews and since modified, updated, and reorganized by innumerable other people. -$Id: inn.conf.pod 10064 2016-09-04 12:55:40Z iulius $ +$Id: inn.conf.pod 10245 2018-02-16 21:11:59Z iulius $ =head1 SEE ALSO diff -Nurp inn-2.6.1/doc/pod/innd.pod inn-2.6.2/doc/pod/innd.pod --- inn-2.6.1/doc/pod/innd.pod 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/pod/innd.pod 2018-03-18 13:03:32.000000000 -0700 @@ -287,7 +287,9 @@ the sites with the following subscriptio news.*,!control,!control.* control,control.* -but the sites with the following subscription patterns will not receive it: +As a matter of fact, for the first pattern, C (or +C) is included in C<*>. However, the sites with the following +subscription patterns will not receive it: *,@news.*,!control,!control.* comp.*,@news.* @@ -496,7 +498,7 @@ disables source routing. Written by Rich $alz for InterNetNews. -$Id: innd.pod 9228 2011-07-07 11:12:26Z iulius $ +$Id: innd.pod 10175 2017-09-18 19:48:24Z iulius $ =head1 SEE ALSO diff -Nurp inn-2.6.1/doc/pod/innfeed.conf.pod inn-2.6.2/doc/pod/innfeed.conf.pod --- inn-2.6.1/doc/pod/innfeed.conf.pod 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/pod/innfeed.conf.pod 2018-03-18 13:03:32.000000000 -0700 @@ -680,9 +680,11 @@ to a peer definition. =item I -This key requires a word value. The word is the host's FQDN, or the dotted -quad IP-address. If this value is not specified, then the name of the -peer in the enclosing I block is taken to also be its I. +This key requires a word value. The word is either one of the host's FQDNs, +or the dotted-quad IP address of the peer for IPv4, or the colon-separated +IP address of the peer for IPv6. If this value is not specified, then +the name of the peer in the enclosing I block is taken to also +be its I. =back @@ -727,7 +729,7 @@ B is now part of INN and shares Please note that the F format has changed dramatically since S. -$Id: innfeed.conf.pod 9923 2015-07-14 16:48:11Z iulius $ +$Id: innfeed.conf.pod 10179 2017-09-18 20:13:48Z iulius $ =head1 SEE ALSO diff -Nurp inn-2.6.1/doc/pod/install.pod inn-2.6.2/doc/pod/install.pod --- inn-2.6.1/doc/pod/install.pod 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/pod/install.pod 2018-03-18 13:03:32.000000000 -0700 @@ -818,13 +818,14 @@ will be added to posts which lack one. =item pathhost -This is the name of your news server as you wish it to appear in the Path: -header of all postings which travel through your server (this includes -local posts and incoming posts that you forward out to other sites). If -this parameter is unspecified, the fully-qualified domain name (FQDN) of -the machine will be used instead. Please use the FQDN of your server or -an alias for your server unless you have a very good reason not to; a -future version of the news RFCs may require this. +This is the name of your news server as you wish it to appear in +the Path: header of all postings which travel through your server +(this includes local posts and incoming posts that you forward out to +other sites). If this parameter is unspecified, the fully qualified +domain name (FQDN) of the machine, as reported by the operating system, +will be used instead. Please use the canonical FQDN of your server or +an alias unless you have a very good reason not to; a future version +of the news RFCs may require this. =item rlimitnofile @@ -1623,9 +1624,9 @@ where F is the file wh connection is allowed to read and post news (you can also use the previously created F file to handle TLS/SSL connections). Note that a news client which supports the STARTTLS command can also -use the conventional NNTP port 119 to initiate a TLS connection. -However, as such clients are not widespread yet, using the separate -port 563 is still common practice (though discouraged). See nnrpd(8) +use the conventional NNTP port 119 to dynamically upgrade from unencrypted +to TLS-protected traffic during an NNTP session. However, this practice +is discouraged in favour of using the separate port 563. See nnrpd(8) for more information about TLS support. In the shutdown section of the init script, you can put: @@ -1701,6 +1702,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 10097 2016-11-04 22:19:07Z iulius $ +$Id: install.pod 10179 2017-09-18 20:13:48Z iulius $ =cut diff -Nurp inn-2.6.1/doc/pod/news.pod inn-2.6.2/doc/pod/news.pod --- inn-2.6.1/doc/pod/news.pod 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/pod/news.pod 2018-03-18 13:03:32.000000000 -0700 @@ -1,3 +1,85 @@ +=head1 Changes in 2.6.2 + +=over 2 + +=item * + +A new I parameter has been added in F. +It permits to control the level of checks performed by B and +B. Up to now, only one check can be enabled/disabled: when +I is mentioned in the values of this new parameter, INN accepts +Message-IDs that contain C<..> in the left part, as well as Message-IDs +with two C<@> (such Message-IDs would otherwise be considered as +syntactically invalid). See the inn.conf(5) man page for more details. + +The check is disabled by default (I), which corresponds to +the legacy behaviour of S and earlier. + +=item * + +Use of the B helper server is now the default when +using the ovdb overview method, that is to say the default value +for the I parameter in F is now set to true. +It improves stability and avoids deadlocks, timing issues and corrupted +ovdb databases. + +=item * + +B now removes empty header fields before attempting to post +articles, and keeps trace of them in the X-Mailpost-Empty-Hdrs: newly +generated header field body. Also, B now sanitizes header +fields with regards to empty continuation header lines. Thanks to +Kamil Jonca for these bug reports. + +=item * + +A new B<-z> parameter has been added to B to mention a list +of header fields to remove from the gated message. Thanks to Dieter +Stussy for the patch. + +=item * + +Fixed a bug in B that was rejecting articles containing header +fields whose length exceeded 998 bytes. This limitation is for the +length of a single line of a header field (and not for the length of +the whole header field, as it was wrongly the case). + +=item * + +Added support for GnuPG's B binary (in addition to B) +in B. Indeed, B still validates signatures made +with weak digest algorithms like MD5 whereas B no longer do. +Thanks to Thomas Hochstein for the patch, which permits to validate +control articles for hierarchies that are still using old PGP keys. + +=item * + +Added similar support for GnuPG's B binary in B to +validate NoCeM notices from issuers who are still using old PGP keys. + +=item * + +A few commands listed in the "Control commands to INND" section in +daily Usenet reports were appearing as a mere letter; all of them are +now properly converted to meaningful words. + +=item * + +The I parameter in F now recognizes the +C value (for OpenSSL versions implementing S, that +is to say starting from S). + +=item * + +The buffindexed overview method will now hopefully work properly on +systems with a native page size larger than 16KB. + +=item * + +Other minor bug fixes and documentation improvements. + +=back + =head1 Changes in 2.6.1 =over 2 @@ -1125,7 +1207,7 @@ Thanks to Andrew Gierth for the patch. =item * Fixed a bug in B leading to incorrect summing of B stats -when I was set to an IPv6 address instead of a fully-qualified +when I was set to an IPv6 address instead of a fully qualified domain name. Thanks to Petr Novopashenniy for the bug report. =item * @@ -3063,6 +3145,6 @@ directory, for now). =back -$Id: news.pod 10127 2016-11-27 13:43:25Z iulius $ +$Id: news.pod 10245 2018-02-16 21:11:59Z iulius $ =cut diff -Nurp inn-2.6.1/doc/pod/newsfeeds.pod inn-2.6.2/doc/pod/newsfeeds.pod --- inn-2.6.1/doc/pod/newsfeeds.pod 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/pod/newsfeeds.pod 2018-03-18 13:03:32.000000000 -0700 @@ -205,10 +205,11 @@ later in the file. A line starting with example: $LOCALGROUPS=local.*,example.* + $CONTROLGROUPS=control,control.* -This sets the variable C to C. This -variable can later be used elsewhere in the file, such as in a site entry -like: +This sets the variable C to C and the +variable C to C. They can later be +used elsewhere in the file, such as in a site entry like: news.example.com:$LOCALGROUPS:Tf,Wnm: @@ -223,14 +224,14 @@ somewhat odd-sounding behavior is design variables to construct feed patterns. The utility becomes more obvious when you observe that the line: - news.example.net:*,@$LOCALGROUPS:Tf,Wnm: + news.example.net:*,@$LOCALGROUPS,!$CONTROLGROUPS:Tf,Wnm: is therefore equivalent to: - news.example.net:*,@local.*,@example.*:Tf,Wnm: + news.example.net:*,@local.*,@example.*,!control,!control.*:Tf,Wnm: -which (as explained below) excludes all of the groups in $LOCALGROUPS from -the feed to that site. +which (as explained below) excludes all of the groups in $LOCALGROUPS +and unwanted control articles from the feed to that site. =head1 FLAG VALUES @@ -835,7 +836,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 10061 2016-09-04 12:48:39Z iulius $ +$Id: newsfeeds.pod 10175 2017-09-18 19:48:24Z iulius $ =head1 SEE ALSO diff -Nurp inn-2.6.1/doc/pod/nnrpd.pod inn-2.6.2/doc/pod/nnrpd.pod --- inn-2.6.1/doc/pod/nnrpd.pod 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/pod/nnrpd.pod 2018-03-18 13:03:32.000000000 -0700 @@ -194,9 +194,10 @@ installing INN, or by running the follow Replace the paths with something appropriate to your INN installation. This will create a self-signed certificate that will expire in a year. -The B program will ask you a variety of questions about your -organization. Enter the fully qualified domain name of the server as the -name the certificate is for. +The B program will ask you a variety of questions about +your organization. Enter the fully qualified domain name of your news +service (either the server canonical name or a dedicated alias for the +news service) as the name the certificate is for. You then have to set these F parameters with the right paths: @@ -208,14 +209,12 @@ In case you have a certificate authority set I to its path. There are two common ways for a news client to negotiate a TLS -connection: either via the use of the STARTTLS command on the usual NNTP -port (119) or via the now discouraged way (per RFC 4642) to immediately -negotiate an encrypted session upon connection on a dedicated port -(usually 563). As most news clients currently do not use the STARTTLS -command, and instead expect to connect to a separate port (563) and start -a TLS negotiation immediately, it is still useful to provide a legacy -way for these news clients to encrypt the NNTP session. B does -not, however, know how to listen for connections to that separate port. +connection: either via the use of a dedicated port (usually 563) +on which TLS is immediately negotiated upon connection, or via the +now discouraged way (per S) to use the STARTTLS command on +the usual NNTP port (119) to dynamically upgrade from unencrypted +to TLS-protected traffic during an NNTP session. B does not, +however, know how to listen for connections to that separate port (563). You will therefore need to arrange for B to listen on that port through some other means. This can be done with the B<-D> flag along with C<-p 563> and put into your init scripts: @@ -240,8 +239,9 @@ suite is discovered. =head1 PROTOCOL DIFFERENCES B implements the NNTP commands defined in S (NNTP), -S (TLS/NNTP), S (NNTP authentication) and S -(NNTP LIST additions) with the following differences: +S updated by S (TLS/NNTP), S (NNTP +authentication), S (NNTP LIST additions) and S +(NNTP compression) with the following differences: =over 4 @@ -307,7 +307,7 @@ support added by Rob Robertston library to store -overview data. It requires version 4.4 or later of the S -library (4.7+ is recommended because older versions suffer from various -issues). - -Ovdb makes use of the full transaction/logging/locking functionality of -the S environment. S may be downloaded from +The ovdb overview is a storage method that uses the S +library to store overview data. It requires version 4.4 or later of +the S library (4.7+ is recommended because older versions +suffer from various issues). + +The ovdb overview method makes use of the full +transaction/logging/locking functionality of the +S environment. S may be downloaded from L and is needed to build the ovdb backend. =head1 UPGRADING -This is version 2 of ovdb. If you have a database created with a previous -version of ovdb (such as the one shipped with S) your database -will need to be upgraded using ovdb_init(8). See the man page -ovdb_init(8) for upgrade instructions. +There are several versions of the ovdb storage method: + +=over 2 + +=item * + +Version 1, the initial version shipped with S up to S. + +=item * + +Version 2, with improved performance, since S. + +=item * + +Version 3, corresponding to version 2 with compression enabled, starting +with S. + +=back + +If you have a database created with a previous version of ovdb, +your database will need to be upgraded using B. See the +ovdb_init(8) man page for upgrade instructions, as well as the +L section below. + +Note that when the S library is updated to a newer version, +the ovdb database also needs being upgraded. =head1 INSTALLATION -To build ovdb support into INN, specify the option B<--with-bdb> -when running the configure script. By default, configure will search -for S in default search paths; there will be a message in -the configure output indicating the pathname that will be used. +If the S library is found at configure time, INN will be +built with S support unless the B<--without-bdb> flag is +explicitly passed to configure. By default, configure will search for +S in standard locations; there will be a message in the +configure output indicating the pathname that will be used. You can override this pathname by adding a path to the option, for instance B<--with-bdb=/usr/BerkeleyDB.4.4>. This directory @@ -36,171 +60,185 @@ the library itself. In case non-standar libraries are used, one or both of the options B<--with-bdb-include> and B<--with-bdb-lib> can be given to configure with a path. -The ovdb database may take up more disk space for a given spool than the -other overview methods. Plan on needing at least S<1.1 KB> for every article -in your spool (not counting crossposts). So, if you have 5 million -articles, you'll need at least S<5.5 GB> of disk space for ovdb. With compression -enabled, this estimate changes to S<0.7 KB> per article. See the L -section below. -Plus, you'll need additional space for transaction logs: at least S<100 MB>. -By default the transaction logs go in the same directory as the database. -To improve performance, they can be placed on a different disk S<-- see> -the L section. +The ovdb database may take up more disk space for a given spool +than the other overview methods. Plan on needing at least S<1.1 KB> +for every article in your spool (not counting crossposts). So, if +you have 5 million articles, you'll need at least S<5.5 GB> of disk +space for ovdb. With compression enabled, this estimate changes to +S<0.7 KB> per article. See the L section below. Plus, +you'll need additional space for transaction logs: at least S<100 MB>. +By default, the transaction logs go in the same directory as the database. +To improve performance, they can be placed on a different disk S<-- +see> the L section. =head1 CONFIGURATION -To enable ovdb, set the I parameter in F to C. -The ovdb database is stored in the directory specified by the -I parameter in F. This is the "DB_HOME" directory. -To start out, this directory should be empty (other than an optional -F file; see L for details) and B (or -B) will create the files as necessary in that directory. -Make sure the directory is owned by the news user. +To enable the ovdb overview method, set the I parameter in +F to C. The ovdb database is stored in the directory +specified by the I parameter in F. This is +the C directory. To start out, this directory should be empty +(other than an optional F file; see L for details), +and B (or B) will create the files as necessary in +that directory. Also, make sure the directory is owned by the news user. -Other parameters for configuring ovdb are in the ovdb.conf(5) -configuration file. See also the sample F. +Other parameters for configuring ovdb are in the F +configuration file. The following parameters can be set in that file: =over 4 -=item cachesize +=item I + +If INN was compiled with zlib, and this I parameter is true, +ovdb will compress overview records that are longer than 600 bytes. +See the L section below. + +=item I Size of the memory pool cache, in kilobytes. The cache will have a -backing store file in the DB directory which will be at least as big. In -general, the bigger the cache, the better. Use C to see -cache hit percentages. To make a change of this parameter take effect, -shut down and restart INN (be sure to kill all of the nnrpds when shutting -down). Default is 8000, which is adequate for small to medium sized -servers. Large servers will probably need at least 20000. - -=item compress - -If INN was compiled with zlib, and this compress parameter is true, OVDB -will compress overview records that are longer than 600 bytes. See -the L section below. +backing store file in the DB directory which will be at least as big. +In general, the bigger the cache, the better. Use C +to see cache hit percentages. To make a change of this parameter take +effect, shut down and restart INN (be sure to kill all of the B +processes when shutting down). Default is C<8000> (KB), which is adequate +for small to medium-sized servers. Large servers will probably need +at least C<20000> (KB). + +=item I + +Number of regions across which to split the cache. The region size +is equal to I divided by I. Default is C<1> for +I, that is to say the cache will be allocated contiguously +in memory. -=item numdbfiles +=item I Overview data is split between this many files. Currently, B will keep all of the files open, so don't set this too high or B may run out of file descriptors. B only opens one at a time, regardless. May be set to one, or just a few, but only do that if your OS supports -large (>2G) files. Changing this parameter has no effect on an -already-established database. Default is 32. +large (S<< > 2 GB >>) files. Changing this parameter has no effect on an +already-established database. Default is C<32>. -=item txn_nosync +=item I If txn_nosync is set to false, S flushes the log after every transaction. This minimizes the number of transactions that may be lost in the event of a crash, but results in significantly degraded performance. Default is true. -=item useshm +=item I -If useshm is set to true, S will use shared memory instead of +If I is set to true, S will use shared memory instead of mmap for its environment regions (cache, lock, etc). With some platforms, this may improve performance. Default is false. -=item shmkey +=item I -Sets the shared memory key used by S when 'useshm' is true. +Sets the shared memory key used by S when I is true. S will create several (usually 5) shared memory segments, using -sequentially numbered keys starting with 'shmkey'. Choose a key that does +sequentially numbered keys starting with C. Choose a key that does not conflict with any existing shared memory segments on your system. -Default is 6400. +Default is C<6400>. -=item pagesize +=item I -Sets the page size for the DB files (in bytes). Must be a power of 2. -Best choices are 4096 or 8192. The default is 8192. Changing this -parameter has no effect on an already-established database. +Sets the page size for the DB files (in bytes). Must be a power +of 2. Best choices are C<4096> or C<8192>. The default is C<8192>. +Changing this parameter has no effect on an already-established database. -=item minkey +=item I Sets the minimum number of keys per page. See the S -documentation for more info. Default is based on page size +documentation for more information. Default is based on page size and whether compression is enabled: default_minkey = MAX(2, pagesize / 2600) if compress is false default_minkey = MAX(2, pagesize / 1500) if compress is true -The lowest allowed minkey is 2. Setting minkey higher than the default is -not recommended, as it will cause the databases to have a lot of overflow -pages. Changing this parameter has no effect on an already-established -database. - -=item maxlocks - -Sets the S "lk_max" parameter, which is the maximum number of -locks that can exist in the database at the same time. Default is 4000. - -=item nocompact - -The nocompact parameter affects expireover's behavior. The expireover -function in ovdb can do its job in one of two ways: by simply deleting -expired records from the database, or by re-writing the overview records -into a different location leaving out the expired records. The first -method is faster, but it leaves 'holes' that result in space that can not -immediately be reused. The second method 'compacts' the records by -rewriting them. - -If this parameter is set to 0, expireover will compact all newsgroups; if -set to 1, expireover will not compact any newsgroups; and if set to a -value greater than one, expireover will only compact groups that have less -than that number of articles. +The lowest allowed I is C<2>. Setting I higher than +the default is not recommended, as it will cause the databases to have +a lot of overflow pages. Changing this parameter has no effect on an +already-established database. + +=item I + +Sets the S I parameter, which is the maximum number of +locks that can exist in the database at the same time. Default is C<4000>. + +=item I + +The I parameter affects the behaviour of B. +The B function in ovdb can do its job in one of two +ways: by simply deleting expired records from the database; or by +re-writing the overview records into a different location leaving out +the expired records. The first method is faster, but it leaves 'holes' +that result in space that can not immediately be reused. The second +method 'compacts' the records by rewriting them. + +If this parameter is set to C<0>, B will compact all +newsgroups; if set to C<1>, B will not compact any +newsgroups; and if set to a value greater than one, B +will only compact groups that have less than that number of articles. Experience has shown that compacting has minimal effect (other than -making expireover take longer) so the default is now 1. This parameter +making B take longer) so the default is C<1>. This parameter will probably be removed in the future. -=item readserver +=item I + +When the I parameter is set to false, each B +process directly accesses the S environment. The process +of attaching to the database (and detaching when finished) is fairly +expensive, and can result in high loads in situations when there are +lots of reader connections of relatively short duration. + +When the I parameter is set to true, the B processes +will access overview via a helper server (B S<-- which> +is started by B). All ovdb reads will then be funnelled +through a single process with a cleaner interface to the underlying +S database. This will result in cleaner shutdowns for the +database, improving stability and avoiding deadlocks, timing issues and +corrupted databases. That's why you should try to set this parameter to +true if you are experiencing any instability in the ovdb overview method. -Normally, each nnrpd process directly accesses the S environment. -The process of attaching to the database (and detaching when finished) is -fairly expensive, and can result in high loads in situations when there -are lots of reader connections of relatively short duration. - -When the I parameter is true, the nnrpds will access overview -via a helper server (B S<-- which> is started by B). -This can also result in cleaner shutdowns for the database, improving -stability and avoiding deadlocks and corrupted databases. If you are -experiencing any instability in ovdb, try setting this parameter to true. -Default is false. +Default value is true. -=item numrsprocs +=item I This parameter is only used when I is true. It sets the -number of ovdb_server processes. As each ovdb_server can process only one -transaction at a time, running more servers can improve reader response -times. Default is 5. - -=item maxrsconn - -This parameter is only used when I is true. It sets a maximum -number of readers that a given ovdb_server process will serve at one time. -This means the maximum number of readers for all of the ovdb_server -processes is (numrsprocs * maxrsconn). This does B limit the actual -number of readers, since nnrpd will fall back to opening the database -directly if it can't connect to a readserver. Default is 0, which means an -umlimited number of connections is allowed. +number of B processes. As each B can process +only one transaction at a time, running more servers can improve reader +response times. Default is C<5>. + +=item I + +This parameter is only used when I is true. It sets a +maximum number of readers that a given B process will +serve at one time. This means the maximum number of readers for all +of the B processes is (I * I). +This does I limit the actual number of readers, since B +will fall back to opening the database directly if it can't connect to +an B. Default is C<0>, which means an unlimited number +of connections is allowed. =back =head1 COMPRESSION -New in this version of OVDB is the ability to compress overview data +The ovdb storage method has the ability to compress overview data before it is stored into the database. In addition to consuming less disk space, compression keeps the average size of the database keys smaller. This in turn increases the average number of keys per page, which can significantly improve performance and also helps keep the database more -compact. This feature requires that INN be built with zlib. Only records +compact. This feature requires that INN be built with zlib. Only records larger than 600 bytes get compressed, because that is the point at which compression starts to become significant. -If compression is not enabled (either from the C option in -F or INN was not built from zlib), the database will be backward -compatible with older versions of OVDB. However, if compression is enabled, -the database is marked with a newer version that will prevent older versions -of OVDB from opening the database. +If compression is not enabled (either from the I option in +F or INN was not built with zlib support), the database +will be backward compatible with older versions of ovdb. However, +if compression is enabled, the database is marked with a newer version +that will prevent older versions of ovdb from opening the database. You can upgrade an existing database to use compression simply by setting I to true in F. Note that existing records in the @@ -209,26 +247,26 @@ compression will be compressed. If you disable compression on a database that previously had it enabled, new records will be stored uncompressed, but the database will still be -incompatible with older versions of OVDB (and will also be incompatible -with this version of OVDB if it was not built with zlib). So to downgrade -to a completely uncompressed database you will have to rebuild the database -using makehistory. +incompatible with older versions of ovdb (and will also be incompatible +with this version of ovdb if INN was not built with zlib support). +So to downgrade to a completely uncompressed database, you will have +to rebuild the database using B. =head1 DB_CONFIG -A file called F may be placed in the database directory to -customize where the various database files and transaction logs are -written. By default, all of the files are written in the "DB_HOME" -directory. One way to improve performance is to put the transaction logs -on a different disk. To do this, put: +A file called F may be placed in the database directory +(I in F) to customize where the various database +files and transaction logs are written. By default, all of the files +are written in the C directory. One way to improve performance +is to put the transaction logs on a different disk. To do this, put: DB_LOG_DIR /path/to/logs -in the F file. If the pathname you give starts with a /, it is -treated as an absolute path; otherwise, it is relative to the "DB_HOME" +in the F file. If the pathname you give starts with a C, it is +treated as an absolute path; otherwise, it is relative to the C directory. Make sure that any directories you specify exist and have proper ownership/mode before starting INN, because they won't be created -automatically. Also, don't change the DB_CONFIG file while anything that +automatically. Also, don't change the F file while anything that uses ovdb is running. Another thing that you can do with this file is to split the overview @@ -236,9 +274,9 @@ database across multiple disks. In the directories that S will search when it goes to open a database. For example, let's say that you have I set to -F and you have four additional file systems created on -F. You would create a file "/mnt/overview/DB_CONFIG" containing -the following lines: +F and you have four additional file systems created +on F. You would create a file F +containing the following lines: set_data_dir /mnt/overview set_data_dir /mnt/ov1 @@ -246,58 +284,40 @@ the following lines: set_data_dir /mnt/ov3 set_data_dir /mnt/ov4 -Distribute your ovNNNNN files into the four filesystems. (say, 8 each). +Distribute your F files into the four filesystems (say, 8 each). When called upon to open a database file, the db library will look for it in each of the specified directories (in order). If said file is not found, one will be created in the first of those directories. -Whenever you change DB_CONFIG or move database files around, make sure all -news processes that use the database are shut down first (including -nnrpds). - -The DB_CONFIG functionality is part of S itself, rather than -something provided by ovdb. See the S documentation for complete -details for the version of S that you're running. +Whenever you change F or move database files around, make +sure all news processes that use the database are shut down first +(including B processes). + +The F functionality is part of S itself, +rather than something provided by ovdb. See the S +documentation for complete details for the version of S +that you're running. =head1 RUNNING -When starting the news system, B will invoke B. -B must be run before using the database. It performs the -following tasks: - -=over 4 - -=item * - -Creates the database environment, if necessary. - -=item * - -If the database is idle, 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. - -=item * - -Starts the DB housekeeping processes (B) if they're not -already running. - -=back +When starting the news system, B will invoke the B +program. See the ovdb_init(8) man page for information about the tasks +it performs. B must be run before using the database. -And when stopping INN, B kills the ovdb_monitor processes after +And when stopping INN, B kills the B processes after the other INN processes have been shut down. =head1 DIAGNOSTICS -Problems relating to ovdb are logged to news.err with "OVDB" in the error -message. +Problems relating to ovdb are logged to F with C in +the error message. -INN programs that use overview will fail to start up if the ovdb_monitor -processes aren't running. Be sure to run B before running -anything that accesses overview. +INN programs that use overview will fail to start up if the +B processes aren't running. Be sure to run B +before running anything that accesses overview. Also, INN programs that use overview will fail to start up if the user -running them is not the "news" user. +running them is not the news user. If a program accessing the database crashes, or otherwise exits uncleanly, it might leave a stale lock in the database. This lock could cause other @@ -310,18 +330,18 @@ damage caused by killing the deadlocked =over 4 -=item inn.conf +=item I/inn.conf The I and I parameters are relevant to ovdb. -=item ovdb.conf +=item I/ovdb.conf Optional configuration file for tuning. See L above. =item I -Directory where the database goes. S calls it the 'DB_HOME' -directory. +Directory where the database goes. S calls it the +C directory. =item I/DB_CONFIG @@ -343,21 +363,21 @@ Contains the process ID of B file. =head1 HISTORY -Written by Heath Kehoe for InterNetNews +Written by Heath Kehoe for InterNetNews. -$Id: ovdb.pod 9593 2013-12-27 21:16:09Z iulius $ +$Id: ovdb.pod 10241 2018-02-04 15:38:19Z iulius $ =head1 SEE ALSO -inn.conf(5), innd(8), nnrpd(8), ovdb_init(8), ovdb_monitor(8), -ovdb_stat(8) +inn.conf(5), innd(8), makehistory(8), nnrpd(8), ovdb_init(8), +ovdb_monitor(8), ovdb_stat(8). -S documentation: in the F directory of the S -source distribution, or on the Oracle S web page +S documentation: in the F directory of the S source distribution, or on the Oracle S web page (L). =cut diff -Nurp inn-2.6.1/doc/pod/ovdb_init.pod inn-2.6.2/doc/pod/ovdb_init.pod --- inn-2.6.1/doc/pod/ovdb_init.pod 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/pod/ovdb_init.pod 2018-03-18 13:03:32.000000000 -0700 @@ -4,66 +4,67 @@ ovdb_init - Prepare ovdb database for us =head1 SYNOPSIS -ovdb_init [C<-u>|C<-r>] +B [B<-r>|B<-u>] =head1 DESCRIPTION This command must be run before any other process can access the -overview database. It performs the following steps: +overview database. B is normally invoked automatically by +B when starting the news system. + +B performs the following steps: =over 4 =item 1 -Creates the database environment, if necessary +Creates the database environment, if necessary. =item 2 -If the database is idle (and if the C<-u> option is not specified), +If the database is idle (and if the B<-u> 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. =item 3 -If the C<-u> option is specified, it performs any necessary upgrades -to the database. See the UPGRADING section below. +If the B<-u> option is specified, it performs any necessary upgrades +to the database. See the L section below. =item 4 -Starts the DB housekeeping processes (ovdb_monitor) if they're not -already running. (Unless the C<-r> option is specified). +Starts the database housekeeping processes (B) if they are +not already running. (Unless the B<-r> option is specified). =item 5 -Starts the ovdb readserver (ovdb_server) processes if I +Starts the ovdb readserver processes (B) if I in F is true, and if they are not already running. (Unless -the C<-r> option is specified). +the B<-r> option is specified). =back -Returns exit status of 0 if all steps were completed successfully. +Returns exit status of C<0> if all steps were completed successfully. In the event of an error, messages are written to syslog and/or stderr. -If a recovery was attempted but it failed, the database may be -damaged beyond repair, requiring a rebuild with makehistory(8). - -This command is normally invoked automatically by rc.news(8). +If a recovery was attempted but failed, the database may be +damaged beyond repair, requiring a rebuild with B. -It is OK to run this command multiple times. +This command can be run multiple times. =head1 OPTIONS =over 4 -=item C<-r> +=item B<-r> -Perform recovery only. C is not started. +Perform recovery only. B is not started. -=item C<-u> +=item B<-u> Perform any needed upgrades. Recovery is not attempted. -C is started if the upgrade succeeded. +B is started if the upgrade succeeded. =back @@ -82,12 +83,13 @@ method is used. =item * -You upgrade ovdb to a newer major version; i.e., ovdb-1.0 to ovdb-2.0. +You upgrade ovdb to a newer major version; i.e., ovdb-1.0 (shipped with +S up to S) to ovdb-2.0 (since S). =back 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 +upgrade cannot 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. If an upgrade does get interrupted, try running the upgrade again. @@ -99,7 +101,7 @@ S to use S; +Build and install the S version; =item 2 @@ -125,20 +127,20 @@ Run C as the news user; =item 7 -Start INN with C. +Start INN with the C command. =back -It is OK to specify C<-u> even if no upgrades are needed. +Note that the B<-u> option can be used even if no upgrades are needed. =head1 HISTORY -Written by Heath Kehoe Ehakehoe@avalon.netE for InterNetNews. +Written by Heath Kehoe for InterNetNews. -$Id: ovdb_init.pod 9765 2014-12-07 21:07:34Z iulius $ +$Id: ovdb_init.pod 10241 2018-02-04 15:38:19Z iulius $ =head1 SEE ALSO -ovdb(5), makehistory(8) +ovdb(5), makehistory(8), rc.news(8). =cut diff -Nurp inn-2.6.1/doc/pod/ovdb_monitor.pod inn-2.6.2/doc/pod/ovdb_monitor.pod --- inn-2.6.1/doc/pod/ovdb_monitor.pod 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/pod/ovdb_monitor.pod 2018-03-18 13:03:32.000000000 -0700 @@ -4,29 +4,33 @@ ovdb_monitor - Database maintenance =head1 SYNOPSIS -Use C to start ovdb_monitor +Use B to start B =head1 DESCRIPTION -When started (by C), C forks three processes -that perform routine database maintenance tasks. These are: -transaction checkpointing, deadlock detection, and transaction log -removal. The process ID of the parent is written to -F/ovdb_monitor.pid>. This PID is used by other INN -commands to verify that ovdb_monitor is running. - -To shut down ovdb_monitor, send a TERM signal to the process ID -in F/ovdb_monitor.pid> . The parent process will shut -down the three children and wait for their exit before exiting itself. +When started (normally by B that is invoked by B), +B forks three processes that perform routine database +maintenance tasks. These are transaction checkpointing, deadlock +detection, and transaction log removal. + +The process ID of the parent is written to F in the +I directory. This PID is used by other INN commands to verify +that B is running. + +To shut down B, send a TERM signal to the process ID +in F. The parent process will shut down the three +children and wait for their exit before exiting itself. Note that when +running the C command to stop the news system, B +automatically takes care of stopping B. =head1 HISTORY -Written by Heath Kehoe Ehakehoe@avalon.netE for InterNetNews. +Written by Heath Kehoe for InterNetNews. -$Id: ovdb_monitor.pod 9765 2014-12-07 21:07:34Z iulius $ +$Id: ovdb_monitor.pod 10241 2018-02-04 15:38:19Z iulius $ =head1 SEE ALSO -ovdb(5), ovdb_init(8) +ovdb(5), ovdb_init(8), rc.news(8). =cut diff -Nurp inn-2.6.1/doc/pod/ovdb_server.pod inn-2.6.2/doc/pod/ovdb_server.pod --- inn-2.6.1/doc/pod/ovdb_server.pod 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/pod/ovdb_server.pod 2018-03-18 13:03:32.000000000 -0700 @@ -1,31 +1,34 @@ =head1 NAME -ovdb_server - overview 'helper' server +ovdb_server - Overview helper server for B =head1 SYNOPSIS -Use C to start ovdb_server +Use B to start B =head1 DESCRIPTION -If the C parameter in F is true, -C will start C. - -C opens the overview database, and accesses it -on behalf of the nnrpd reader processes. - -To shut down ovdb_server, send a TERM signal to the process ID -in F/ovdb_server.pid> . The parent process will shut -down its children and wait for their exit before exiting itself. +If the I parameter in F is true, B +(if not invoked with the B<-r> flag) will start as many B +processes as the I parameter states. + +B opens the overview database, and accesses it on behalf +of the B reader processes. + +To shut down B, send a TERM signal to the process ID +mentioned in F in I (note that the B +script already does that if used to shut down INN). The parent +process will shut down its children and wait for their exit before +exiting itself. =head1 HISTORY -Written by Heath Kehoe Ehakehoe@avalon.netE for InterNetNews. +Written by Heath Kehoe for InterNetNews. -$Id: ovdb_server.pod 9765 2014-12-07 21:07:34Z iulius $ +$Id: ovdb_server.pod 10191 2017-11-25 21:11:53Z iulius $ =head1 SEE ALSO -ovdb(5), ovdb_init(8) +ovdb(5), ovdb_init(8), rc.news(8). =cut diff -Nurp inn-2.6.1/doc/pod/ovdb_stat.pod inn-2.6.2/doc/pod/ovdb_stat.pod --- inn-2.6.1/doc/pod/ovdb_stat.pod 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/pod/ovdb_stat.pod 2018-03-18 13:03:32.000000000 -0700 @@ -4,15 +4,15 @@ ovdb_stat - Display information from the =head1 SYNOPSIS -B B<-Hgci> [B<-r> I] newsgroup [newsgroup ...] +B [B<-Hgci>] [B<-r> I] I [I ...] -B B<-Hklmtv> [B<-d> I] +B B<-HklmMtv> [B<-d> I] =head1 DESCRIPTION B displays information from the ovdb database: S -statistics, newsgroup data, and overview records; and optionally -outputs in HTML format. +statistics, newsgroup data, and overview records. The output can +optionally be in HTML format. =head1 OPTIONS @@ -20,14 +20,16 @@ outputs in HTML format. =item B<-g> -Newsgroup himark, lowmark, article count, and flag for the given newsgroups -(as stored in the ovdb "groupinfo" database) are displayed. +Newsgroup high water mark, low marker mark, article count, and flag +for the given newsgroups (as stored in the ovdb F database) +are displayed. =item B<-c> -Similar to B<-g>, except the himark, lowmark, and count are calculated -by actually scanning the overview records and counting them. -This can be a lengthy operation on groups with lots of articles. +Similar to B<-g>, except the high water mark, low water mark, and +article count are calculated by actually scanning the overview records +and counting them. This can be a lengthy operation on groups with lots +of articles. =item B<-i> @@ -36,7 +38,7 @@ Internal data regarding the given newsgr =item B<-r> I Overview records are retrieved. The I parameter may be -a single article number, or a range of articles in the format C. +a single article number, or a range of articles in the format C. =item B<-H> @@ -44,13 +46,13 @@ Output is presented in HTML format. =item B<-k> -Displays lock region statistics, as returned by the S lock_stat() -call. +Displays lock region statistics, as returned by the S +lock_stat() call. =item B<-l> -Displays log region statistics, as returned by the S log_stat() -call. +Displays log region statistics, as returned by the S +log_stat() call. =item B<-m> @@ -64,8 +66,8 @@ database file. =item B<-t> -Displays log region statistics, as returned by the S txn_stat() -call. +Displays log region statistics, as returned by the S +txn_stat() call. =item B<-v> @@ -81,19 +83,19 @@ on busy systems (several minutes or more =head1 WARNINGS -ovdb_stat may be safely killed with the INT, TERM, or HUP signals. +B may be safely killed with the INT, TERM, or HUP signals. It catches those signals and exits cleanly. -Do not kill ovdb_stat with other signals, unless absolutely necessary, -because it may leave stale locks in the DB environment. +Do not kill B with other signals, unless absolutely necessary, +because it may leave stale locks in the database environment. =head1 HISTORY -Written by Heath Kehoe Ehakehoe@avalon.netE for InterNetNews. +Written by Heath Kehoe for InterNetNews. -$Id: ovdb_stat.pod 9765 2014-12-07 21:07:34Z iulius $ +$Id: ovdb_stat.pod 10241 2018-02-04 15:38:19Z iulius $ =head1 SEE ALSO -ovdb(5) +ovdb(5). =cut diff -Nurp inn-2.6.1/doc/pod/readers.conf.pod inn-2.6.2/doc/pod/readers.conf.pod --- inn-2.6.1/doc/pod/readers.conf.pod 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/pod/readers.conf.pod 2018-03-18 13:03:32.000000000 -0700 @@ -512,9 +512,11 @@ limiting is applied to the pre-encryptio If a Date: or an Injection-Date: header field is not included in a posted article, nnrpd(8) normally adds these header fields in UTC. -If this is set to true, the Date: header field will be formatted in -local time instead. (The Injection-Date: header field will remain in -UTC, though.) This is a boolean value and the default is false. +If this is set to true, the Date: header field will be formatted in local +time instead. (The Injection-Date: header field is added according to +the behaviour of the I parameter in F, and +will remain in UTC, though.) This is a boolean value and the default +is false. This parameter permits to handle a relatively unusual corner case. It is mostly a tool for people who I to disclose their local time @@ -909,7 +911,7 @@ tunnel), use the localaddress: parameter Written by Aidan Cully for InterNetNews. Substantially expanded by Russ Allbery . -$Id: readers.conf.pod 9977 2015-12-10 20:49:04Z iulius $ +$Id: readers.conf.pod 10173 2017-09-18 19:05:32Z iulius $ =head1 SEE ALSO diff -Nurp inn-2.6.1/doc/pod/readme.pod inn-2.6.2/doc/pod/readme.pod --- inn-2.6.1/doc/pod/readme.pod 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/pod/readme.pod 2018-03-18 13:03:32.000000000 -0700 @@ -11,9 +11,10 @@ license, and distribution terms. INN (InterNetNews), originally written by Rich Salz, is an extremely flexible and configurable Usenet / Netnews news server. For a complete description of the protocols behind Usenet and Netnews, see S -(NNTP), S (TLS/NNTP), S (NNTP authentication), -S (streaming NNTP feeds), S (USEFOR), S -(USEPRO) and S (NNTP LIST additions) or their replacements. +(NNTP), S updated by S (TLS/NNTP), S +(NNTP authentication), S (streaming NNTP feeds), S +(USEFOR), S (USEPRO), S (NNTP LIST additions) +and S (NNTP compression) or their replacements. In brief, Netnews is a set of protocols for exchanging messages between a decentralized network of news servers. News articles are organized @@ -236,7 +237,7 @@ can be found at L +URL: L GUP provides a way for your peers to update their F entries as they want without having to ask you to edit the configuration file all the @@ -309,6 +310,6 @@ L. Katsuhiro Kondou -$Id: readme.pod 10023 2016-05-05 12:50:56Z iulius $ +$Id: readme.pod 10186 2017-11-05 17:49:59Z eagle $ =cut diff -Nurp inn-2.6.1/doc/pod/storage.conf.pod inn-2.6.2/doc/pod/storage.conf.pod --- inn-2.6.1/doc/pod/storage.conf.pod 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/doc/pod/storage.conf.pod 2018-03-18 13:03:32.000000000 -0700 @@ -171,7 +171,10 @@ and stores new articles over the top of expire time of articles stored in CNFS buffers is therefore entirely determined by how long it takes the buffer to wrap around, which depends on how quickly data is being stored in it. (This method is therefore said -to have self-expire functionality.) EXPENSIVESTAT is false for this method. +to have self-expire functionality. It also means that when an article is +cancelled, the cycbuff doesn't go back and use space until it rolls over and +the whole cycbuff starts being reused.) EXPENSIVESTAT is false for this +method. CNFS has its own configuration file, F, which describes some subtleties to the basic description given above. Storage method entries @@ -205,7 +208,8 @@ hardcoded extension. (The arrival time, is converted to hexadecimal and interpreted as C<0xaabbccdd>, with C, C, and C used to build the path.) This method does not have self-expire functionality (meaning B has to run periodically -to delete old articles). EXPENSIVESTAT is false for this method. +to delete old articles, as well as cancelled articles if I +is not set to true in F). EXPENSIVESTAT is false for this method. Advantages: It is roughly four times faster than C for article writes, since much of the file system overhead is bypassed, while still @@ -228,7 +232,8 @@ where C is the hexadecimal value of hexadecimal sequence number, and C, C, and C are components of the arrival time in hexadecimal (the arrival time is interpreted as documented above under C). This method does not have self-expire -functionality. EXPENSIVESTAT is true for this method. +functionality. Cancelled articles are removed immediately. EXPENSIVESTAT +is true for this method. Advantages: Heavy traffic groups do not cause bottlenecks, and a fine control of article retention time is still possible. @@ -252,7 +257,8 @@ the article is linked into each newsgrou (using either hard or symbolic links). This is the way versions of INN prior to 2.0 stored all articles, as well as being the article storage format used by C News and earlier news systems. This method does not have -self-expire functionality. EXPENSIVESTAT is true for this method. +self-expire functionality. Cancelled articles are removed immediately. +EXPENSIVESTAT is true for this method. Advantages: It is widely used and well-understood; it can read article spools written by older versions of INN and it is compatible with all @@ -343,7 +349,7 @@ should never expire or through the spool Written by Katsuhiro Kondou for InterNetNews. Rewritten into POD by Julien Elie. -$Id: storage.conf.pod 8357 2009-02-27 17:56:00Z iulius $ +$Id: storage.conf.pod 10230 2018-01-28 21:22:21Z iulius $ =head1 SEE ALSO diff -Nurp inn-2.6.1/expire/expire.c inn-2.6.2/expire/expire.c --- inn-2.6.1/expire/expire.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/expire/expire.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: expire.c 10012 2016-05-05 12:41:10Z iulius $ +/* $Id: expire.c 10153 2017-06-05 12:28:01Z iulius $ ** ** Expire news articles. */ @@ -54,7 +54,9 @@ static long EXPstillhere; static struct history *History; static char *NHistory; -static void CleanupAndExit(bool Server, bool Paused, int x); +static void CleanupAndExit(bool Server, bool Paused, int x) + __attribute__ ((__noreturn__)); +static void Usage(void) __attribute__ ((__noreturn__)); static int EXPsplit(char *p, char sep, char **argv, int count); diff -Nurp inn-2.6.1/expire/grephistory.c inn-2.6.2/expire/grephistory.c --- inn-2.6.1/expire/grephistory.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/expire/grephistory.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: grephistory.c 8578 2009-08-18 20:11:22Z iulius $ +/* $Id: grephistory.c 10153 2017-06-05 12:28:01Z iulius $ ** ** Get data from history database. */ @@ -14,6 +14,8 @@ #include "inn/paths.h" #include "inn/storage.h" +static void Usage(void) __attribute__ ((__noreturn__)); + /* ** Read stdin for list of Message-ID's, output list of ones we ** don't have. Or, output list of files for ones we DO have. diff -Nurp inn-2.6.1/expire/makedbz.c inn-2.6.2/expire/makedbz.c --- inn-2.6.1/expire/makedbz.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/expire/makedbz.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: makedbz.c 9623 2014-03-15 22:29:46Z iulius $ +/* $Id: makedbz.c 10153 2017-06-05 12:28:01Z iulius $ ** ** Rebuild dbz file for history db. */ @@ -26,6 +26,8 @@ char *TextFile = NULL; char *HistoryDir = NULL; char *HISTORY = NULL; +static void Usage(void) __attribute__ ((__noreturn__)); + /* ** Remove the DBZ files for the specified base text file. */ diff -Nurp inn-2.6.1/expire/prunehistory.c inn-2.6.2/expire/prunehistory.c --- inn-2.6.1/expire/prunehistory.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/expire/prunehistory.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: prunehistory.c 9623 2014-03-15 22:29:46Z iulius $ +/* $Id: prunehistory.c 10153 2017-06-05 12:28:01Z iulius $ ** ** Prune file names from history file. */ @@ -14,6 +14,7 @@ #include "inn/libinn.h" #include "inn/paths.h" +static void Usage(void) __attribute__ ((__noreturn__)); /* ** Print usage message and exit. diff -Nurp inn-2.6.1/frontends/ctlinnd.c inn-2.6.2/frontends/ctlinnd.c --- inn-2.6.1/frontends/ctlinnd.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/frontends/ctlinnd.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: ctlinnd.c 9623 2014-03-15 22:29:46Z iulius $ +/* $Id: ctlinnd.c 10153 2017-06-05 12:28:01Z iulius $ ** ** Send control messages to the InterNetNews daemon. */ @@ -112,6 +112,9 @@ static COMMAND Commands[] = { }; +static void Usage(const char *) __attribute__ ((__noreturn__)); +static void WrongArgs(COMMAND *) __attribute__ ((__noreturn__)); + /* ** Print a help summary. diff -Nurp inn-2.6.1/frontends/inews.c inn-2.6.2/frontends/inews.c --- inn-2.6.1/frontends/inews.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/frontends/inews.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: inews.c 10017 2016-05-05 12:44:17Z iulius $ +/* $Id: inews.c 10164 2017-07-11 19:38:46Z iulius $ ** ** Send an article (prepared by someone on the local site) to the ** master news server. @@ -34,7 +34,6 @@ #define HEADER_DELTA 20 #define GECOSTERM(c) \ ((c) == ',' || (c) == ';' || (c) == ':' || (c) == LPAREN) -#define HEADER_STRLEN 998 typedef enum _HEADERTYPE { HTobs, @@ -64,6 +63,8 @@ static const char * const BadDistribs[] BAD_DISTRIBS }; +static void Usage(void) __attribute__ ((__noreturn__)); + static HEADER Table[] = { /* Name Canset Type */ { "Path", true, HTstd, 0, NULL }, @@ -122,7 +123,7 @@ static HEADER Table[] = { static void QuitServer(int x) { - char buff[HEADER_STRLEN]; + char buff[MED_BUFFER]; char *p; if (Spooling) @@ -196,13 +197,22 @@ TrimSpaces(char *p) static char * NextHeader(char *p) { - for ( ; ; p++) { - if ((p = strchr(p, '\n')) == NULL) + char *q; + for (q = p; ; p++) { + if ((p = strchr(p, '\n')) == NULL) { die("article is all headers"); - if (!ISWHITE(p[1])) { - *p = '\0'; - return p + 1; - } + } + /* Check the maximum length of a single line. */ + if (p - q + 1 > MAXARTLINELENGTH) { + die("header line too long"); + } + /* Check if there is a continuation line for the header. */ + if (ISWHITE(p[1])) { + q = p + 1; + continue; + } + *p = '\0'; + return p + 1; } } @@ -796,7 +806,7 @@ OfferArticle(char *buff, bool Authorized { fprintf(ToServer, "post\r\n"); SafeFlush(ToServer); - if (fgets(buff, HEADER_STRLEN, FromServer) == NULL) + if (fgets(buff, MED_BUFFER, FromServer) == NULL) sysdie(Authorized ? "Can't offer article to server (authorized)" : "Can't offer article to server"); return atoi(buff); @@ -866,8 +876,8 @@ main(int ac, char *av[]) struct passwd *pwp; char *article; char *deadfile; - char buff[HEADER_STRLEN]; - char SpoolMessage[HEADER_STRLEN]; + char buff[MED_BUFFER]; + char SpoolMessage[MED_BUFFER]; bool DoSignature; bool AddOrg; size_t Length; @@ -987,7 +997,7 @@ main(int ac, char *av[]) setbuf(ToServer, xmalloc(BUFSIZ)); fprintf(ToServer, "mode reader\r\n"); SafeFlush(ToServer); - if (fgets(buff, HEADER_STRLEN, FromServer) == NULL) + if (fgets(buff, MED_BUFFER, FromServer) == NULL) sysdie("cannot tell server we're reading"); if ((j = atoi(buff)) != NNTP_ERR_COMMAND) i = j; @@ -1024,13 +1034,6 @@ main(int ac, char *av[]) /* Do final checks. */ if (i == 0 && HDR(_control) == NULL) die("article is empty"); - for (hp = Table; hp < ARRAY_END(Table); hp++) - if (hp->Value && (int)strlen(hp->Value) + hp->Size > HEADER_STRLEN) - die("%s header is too long", hp->Name); - for (i = 0; i < OtherCount; i++) - if ((int)strlen(OtherHeaders[i]) > HEADER_STRLEN) - die("header too long (maximum length is %d): %.40s...", - HEADER_STRLEN, OtherHeaders[i]); if (Dump) { /* Write the headers and a blank line. */ diff -Nurp inn-2.6.1/frontends/mailpost.in inn-2.6.2/frontends/mailpost.in --- inn-2.6.1/frontends/mailpost.in 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/frontends/mailpost.in 2018-03-18 13:03:32.000000000 -0700 @@ -2,17 +2,9 @@ # fixscript will replace this line with code to load INN::Config # mailpost - Yet another mail-to-news filter -# -# $Id: mailpost.in 10076 2016-10-08 20:37:36Z iulius $ -# -# 21feb00 [added "lc" to duplicate header fixer stmt to make it case-insensitive] -# doka 11may99 [fixed duplicate headers problem] -# brister 19oct98 [cleaned up somewhat for Perl v. 5. and made a little more robust] -# vixie 29jan95 [RCS'd] -# vixie 15jun93 [added -m] -# vixie 30jun92 [added -a and -d] -# vixie 17jun92 [attempt simple-minded fixup to $path] # vixie 14jun92 [original] +# +# $Id: mailpost.in 10171 2017-07-22 14:01:37Z iulius $ use Getopt::Std; use IPC::Open3; @@ -54,10 +46,11 @@ if ($use_syslog) { $usage .= "[ -h ][ -n ][ -r addr ][ -f addr ][ -a approved ][ -d distribution ]" . "[ -m mailing-list ][ -b database ][ -o output-path ][ -c wait-time ]" . - "[ -x header[:header...] ][ -p port ][ -t tempdir ] newsgroups" ; + "[ -x header[:header...] ][ -z header[:header...] ][ -p port ]" . + "[ -t tempdir ] newsgroups"; -use vars qw($opt_r $opt_f $opt_a $opt_d $opt_m $opt_b $opt_n $opt_o $opt_h $opt_c $opt_x $opt_p $opt_t) ; -getopts("hr:f:a:d:m:b:no:c:x:p:t:") || die "usage: $usage\n" ; +use vars qw($opt_r $opt_f $opt_a $opt_d $opt_m $opt_b $opt_n $opt_o $opt_h $opt_c $opt_x $opt_z $opt_p $opt_t); +getopts("hr:f:a:d:m:b:no:c:x:z:p:t:") || die "usage: $usage\n"; die "usage: $usage\n" if $opt_h ; # @@ -71,6 +64,10 @@ my $Maintainer = $INN::Config::newsmaste my $WhereTo = $opt_o || $Submit ; my $Mailname = $INN::Config::fromhost || hostname ; +my $Gateway = $INN::Config::fromhost || hostname; +$Gateway .= '|' . $INN::Config::pathhost if $INN::Config::pathhost; +$Gateway .= '|(.+\.)?' . $INN::Config::domain if $INN::Config::domain; + my $Databasedir = $opt_b || $INN::Config::pathdb; die "Database path $Databasedir is not a directory\n" unless -d $Databasedir; die "Database directory $Databasedir is not writable\n" unless -w $Databasedir; @@ -84,6 +81,8 @@ die "Directory $Tmpdir is not writable\n if ($debugging || $opt_n) { $Sendmail = "cat" ; $WhereTo = "cat" ; +} else { + $Sendmail = sprintf($Sendmail, $Maintainer); } # @@ -124,16 +123,23 @@ if ($opt_m) { push @errorText, "((mailing_list: $mailing_list))\n"; } -my $exclude = 'Organization|Distribution'; +my $exclude = 'Archive|Archived-At|Comments|Distribution|Injection-Date|Keywords|Organization|Summary'; if ($opt_x) { $exclude .= '|' . join('|', split(/:/, $opt_x)); } +# Strip out news X-Complaints-To: and X-Trace: header fields since otherwise +# posting may fail. Other trace header fields will be renamed later on +# to add 'X-' so we don't have to worry about them. +my $skip = 'X-Complaints-To|X-Trace'; +if ($opt_z) { + $skip .= '|' . join('|', split(/:/, $opt_z)); +} + $newsgroups = join ",", @ARGV ; die "usage: $0 newsgroup [newsgroup ...]\n" unless $newsgroups; - # # Do the header. Our input is a mail message, with or without the From. # @@ -150,6 +156,8 @@ my $hdr = undef; my $txt = undef; my $message_id ; my $subject = "(NONE)"; +my @emptyHdrs = (); +my $emptyHdrsString; $_ = ; if (!$_) { @@ -210,9 +218,22 @@ for (;;) { push @errorText, "($_)\n"; + next if (/^($skip):\s/sio); next if /^Approved:\s/sio && defined($approved); next if /^Distribution:\s/sio && defined($distribution); + # Remove empty header lines within header body. + s/\n[ \t]+\n/\n/g; # middle lines in header field + s/\n[ \t]+$//; # last line in header field + s/^([^:]+:[ \t]+)\n/$1/; # first line in header field + + # Collect empty header field names. + if (/^([^:]+):\s*$/) { + # 975 = 998 - length("X-Mailpost-Empty-Hdrs: ") + push(@emptyHdrs, $1) if length($1) < 975; + next; + } + if (/^($exclude):\s*/sio) { $real_news_hdrs .= "$_\n"; next; @@ -286,11 +307,17 @@ for (;;) { next ; } - # Strip out news X-Trace: and X-Complaints-To: headers since otherwise posting - # may fail. Other trace headers will be renamed to add 'X-' so we don't have - # to worry about them. - if (/^X-(Trace|Complaints-To):\s*/sio) { - next ; + # Strip out any Received: header fields for clause to prevent spamming + # the gateway. + if (/^Received:\s*/sio) { + s/\s+for\s.+\@($Gateway)>?\s*//sio; + # FALLTHROUGH + } + + # Strip out any header fields with gateway mailbox to prevent spamming + # the gateway. + if (/^[A-Z]+-To:\s*/sio) { + next if /[@%=]($Gateway)/sio; } # Random unknown header. Prepend 'X-' if it is not already there. @@ -314,6 +341,11 @@ $real_news_hdrs .= "Distribution: ${dist $real_news_hdrs .= "Approved: ${approved}\n" if defined($approved); $real_news_hdrs .= "References: ${references}\n" if defined($references); +# Keep trace of empty header fields. +$emptyHdrsString = join("\n\t", @emptyHdrs); +$real_news_hdrs .= "X-Mailpost-Empty-Hdrs: $emptyHdrsString\n" + if (length($emptyHdrsString) > 0); + # Remove duplicate headers. my %headers = (); $real_news_hdrs =~ s/((.*?:) .*?($|\n)([ \t]+.*?($|\n))*)/$headers{lc$2}++?"":"$1"/ges; @@ -329,7 +361,7 @@ if (!open TMPFILE,">$tmpfile") { if ($use_syslog) { syslog("err", "$msg") unless $debugging || -t STDERR; } - open(TMPFILE, "|" . sprintf ($Sendmail, $Maintainer)) || + open(TMPFILE, "|" . $Sendmail) || die "die(no tmpfile): sendmail: $!\n" ; print TMPFILE <<"EOF"; To: $Maintainer @@ -364,16 +396,16 @@ if ( ! $tmpfile ) { ## ## We've got the article in a temp file and now we validate some of the -## data we found and update our Message-ID database. +## data we found and update our message-ID database. ## mailArtAndDie ("no From: found") unless $from; mailArtAndDie ("no Message-ID: found") unless $message_id; -mailArtAndDie ("Malformed Message-ID ($message_id)") +mailArtAndDie ("Malformed message-ID ($message_id)") if ($message_id !~ /\<(\S+)\@(\S+)\>/); -# Update (with locking) our Message-ID database. This is used to make sure we +# Update (with locking) our message-ID database. This is used to make sure we # don't loop our own gatewayed articles back through the mailing list. my ($lhs, $rhs) = ($1, $2); # Of message_id matched above. @@ -516,7 +548,7 @@ sub mailArtAndDie { syslog("err", "$msg") if $use_syslog; print STDERR $msg,"\n" if -t STDERR ; - open(SENDMAIL, "|" . sprintf ($Sendmail,$Maintainer)) || + open(SENDMAIL, "|" . $Sendmail) || die "die($msg): sendmail: $!\n" ; print SENDMAIL <<"EOF" ; To: $Maintainer @@ -616,7 +648,8 @@ mailpost - Feed an e-mail message into a B [B<-hn>] [B<-a> I] [B<-b> I] [B<-c> I] [B<-d> I] [B<-f> I] [B<-m> I] [B<-o> I] [B<-p> I] [B<-r> I] [B<-t> I] -[B<-x> I
[B<:>I
...]] I +[B<-x> I
[B<:>I
...]] [B<-z> I
[B<:>I
...]] +I =head1 DESCRIPTION @@ -625,12 +658,14 @@ and feeds it to B for posting to whitespace-separated list of group names to which to post the article (at least one newsgroup must be specified). -Before feeding the article to B, 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 C in front -of unknown headers). +Before feeding the article to B, it checks that the article has +not been seen before, and it changes some header fields (cleans up some +address headers, removes a few ones like X-Complaints-To: and X-Trace:, +and puts C in front of unknown header fields). The Received: and +*-To: header fields are also altered to prevent spamming the gateway (the +name of the news server or the domain name from F are removed). -If the article has been seen before (B records the Message-ID of +If the article has been seen before (B records the message-ID of each article it handles), then the article will be dropped with a non-zero error status. Other errors will cause the article to be mailed to the newsmaster (selected at configure time and defaulting to C). @@ -662,7 +697,7 @@ an Approved: header. =item B<-b> I If the B<-b> flag is used, then it defines the location of the -persistent database used to store the Message-IDs of articles sent on. +persistent database used to store the message-IDs of articles sent on. This is to prevent articles looping around if a news-to-mail gateway sends them back here. This option may be required if the B process does not have write access to the news database directory. @@ -728,24 +763,39 @@ in F, and then F if =item B<-x> I
[B<:>I
...] -A colon-separated list of additional headers which should be treated as -known headers; these headers will be passed through to B without -having C prepended. - -Known headers are: - - Approved +A colon-separated list of additional header fields which should be +treated as known header fields; these header fields will be passed +through to B without having C prepended. + +Known header fields are: + + Archive + Archived-At + Comments Content-* Date Distribution From + Injection-Date + Keywords Mailing-List Message-ID MIME-* + Organization References Return-Path Sender Subject + Summary + +=item B<-z> I
[B<:>I
...] + +A colon-separated list of additional header fields which should be removed. + +Removed header fields are: + + X-Trace + X-Complaints-To =back @@ -759,7 +809,7 @@ The Perl script itself used to feed an e =item I/mailpost-msgid.dir and I/mailpost-msgid.pag -The default database files which record previously seen Message-IDs. +The default database files which record previously seen message-IDs. =back @@ -768,7 +818,7 @@ The default database files which record Written by Paul Vixie long ago and then hacked up by James Brister for INN integration. -$Id: mailpost.in 10076 2016-10-08 20:37:36Z iulius $ +$Id: mailpost.in 10171 2017-07-22 14:01:37Z iulius $ =head1 SEE ALSO diff -Nurp inn-2.6.1/frontends/ovdb_stat.c inn-2.6.2/frontends/ovdb_stat.c --- inn-2.6.1/frontends/ovdb_stat.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/frontends/ovdb_stat.c 2018-03-18 13:03:32.000000000 -0700 @@ -64,7 +64,7 @@ struct datatab { static void display_heading(const char *str) { if(html) - printf("

%s

\n", str); + printf("

%s

\n", str); else printf("%s\n", str); } @@ -728,14 +728,14 @@ int main(int argc, char *argv[]) if(err) { fprintf(stderr, "\ Usage:\n\ - ovdb_stat -Hgci [-r artnum] newsgroup [newsgroup ...]\n\ + ovdb_stat [-Hgci] [-r artnum] newsgroup [newsgroup ...]\n\ -H : output in HTML\n\ -g : show groupstats info\n\ -c : show groupstats info by counting actual records\n\ -i : show additional group info\n\ -r artnum-range : retrieve OV records for article number range\n\ \n\ - ovdb_stat -Hklmtv [-d ]\n\ + ovdb_stat [-HklmMtv] [-d ]\n\ -H : output in HTML\n\ -k : Display lock region statistics\n\ -l : Display log region statistics\n\ @@ -891,8 +891,8 @@ Usage:\n\ puts(""); } out: - if(html) - puts("

"); + if((html == 1) && (err == 0)) + puts("

"); ovdb_close(); return 0; } diff -Nurp inn-2.6.1/frontends/scanspool.in inn-2.6.2/frontends/scanspool.in --- inn-2.6.1/frontends/scanspool.in 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/frontends/scanspool.in 2018-03-18 13:03:32.000000000 -0700 @@ -392,7 +392,8 @@ sub check_spool next if (defined $opt{'c'}); # don't open a control or junk, they can be from anywhere - next if ($artgrp eq "control" || $artgrp eq "junk"); + next if ($artgrp eq "control" || $artgrp =~ /^control\./ + || $artgrp eq "junk"); # try open the file if (!open $ARTICLE, '<', $filename) { diff -Nurp inn-2.6.1/history/Makefile inn-2.6.2/history/Makefile --- inn-2.6.1/history/Makefile 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/history/Makefile 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -## $Id: Makefile 10114 2016-11-06 14:18:27Z iulius $ +## $Id: Makefile 10231 2018-01-28 21:23:03Z iulius $ include ../Makefile.global @@ -8,7 +8,7 @@ include ../Makefile.global # recover from make update. We can't use .OLD extensions for the shared # library since ldconfig will think .OLD sorts after the regular library and # will point the binaries at the old library. -LTVERSION = 3:1:0 +LTVERSION = 3:2:0 top = .. CFLAGS = $(GCFLAGS) -I. diff -Nurp inn-2.6.1/include/clibrary.h inn-2.6.2/include/clibrary.h --- inn-2.6.1/include/clibrary.h 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/include/clibrary.h 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: clibrary.h 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: clibrary.h 10246 2018-02-16 21:12:42Z iulius $ * * Standard system includes and portability adjustments. * @@ -27,14 +27,16 @@ * which can be found at . * * Written by Russ Allbery + * Copyright 2014, 2016, 2018 Russ Allbery + * Copyright 2006-2011, 2013-2014 + * The Board of Trustees of the Leland Stanford Junior University + * + * Copying and distribution of this file, with or without modification, are + * permitted in any medium without royalty provided the copyright notice and + * this notice are preserved. This file is offered as-is, without any + * warranty. * - * The authors hereby relinquish any claim to any copyright that they may have - * in this work, whether granted under contract or by operation of law or - * international treaty, and hereby commit to the public, at large, that they - * shall not, at any time in the future, seek to enforce any copyright in this - * work against any person or entity, or prevent any person or entity from - * copying, publishing, distributing or creating derivative works of this - * work. + * SPDX-License-Identifier: FSFAP */ #ifndef CLIBRARY_H @@ -174,14 +176,16 @@ extern int symlink(const char *, const c #if !HAVE_ASPRINTF extern int asprintf(char **, const char *, ...) __attribute__((__format__(printf, 2, 3))); -extern int vasprintf(char **, const char *, va_list); +extern int vasprintf(char **, const char *, va_list) + __attribute__((__format__(printf, 2, 0))); #endif #if !HAVE_DECL_SNPRINTF extern int snprintf(char *, size_t, const char *, ...) __attribute__((__format__(printf, 3, 4))); #endif #if !HAVE_DECL_VSNPRINTF -extern int vsnprintf(char *, size_t, const char *, va_list); +extern int vsnprintf(char *, size_t, const char *, va_list) + __attribute__((__format__(printf, 3, 0))); #endif #if !HAVE_MKSTEMP extern int mkstemp(char *); @@ -214,9 +218,6 @@ extern size_t strspn(const char *, const #if !HAVE_STRTOK extern char * strtok(char *, const char *); #endif -#if !HAVE_MEMCMP -extern int memcmp(const void *, const void *, size_t); -#endif END_DECLS diff -Nurp inn-2.6.1/include/config.h.in inn-2.6.2/include/config.h.in --- inn-2.6.1/include/config.h.in 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/include/config.h.in 2018-03-18 13:03:32.000000000 -0700 @@ -64,9 +64,6 @@ /* Define if the compiler supports C99 variadic macros. */ #undef HAVE_C99_VAMACROS -/* Define to 1 if you have the header file. */ -#undef HAVE_COM_ERR_H - /* Define to 1 if you have the header file. */ #undef HAVE_CRYPT_H @@ -288,9 +285,6 @@ /* Define if you have the header file. */ #undef HAVE_SASL_SASL_H -/* Define if defines the SA_LEN macro. */ -#undef HAVE_SA_LEN - /* Define to 1 if you have the header file. */ #undef HAVE_SECURITY_PAM_APPL_H diff -Nurp inn-2.6.1/include/inn/buffer.h inn-2.6.2/include/inn/buffer.h --- inn-2.6.1/include/inn/buffer.h 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/include/inn/buffer.h 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: buffer.h 10105 2016-11-04 22:42:26Z iulius $ +/* $Id: buffer.h 10246 2018-02-16 21:12:42Z iulius $ * * Counted, reusable memory buffer. * @@ -17,13 +17,11 @@ * which can be found at . * * Written by Russ Allbery - * Copyright 2014, 2015 Russ Allbery - * Copyright 2011, 2012 + * Copyright 2014-2015 Russ Allbery + * Copyright 2011-2012 * The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2004, 2005, 2006 - * by Internet Systems Consortium, Inc. ("ISC") - * Copyright (c) 1991, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, - * 2002, 2003 by The Internet Software Consortium and Rich Salz + * Copyright 2004-2006 Internet Systems Consortium, Inc. ("ISC") + * Copyright 1991, 1994-2003 The Internet Software Consortium and Rich Salz * * This code is derived from software contributed to the Internet Software * Consortium by Rich Salz. @@ -39,6 +37,8 @@ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. + * + * SPDX-License-Identifier: ISC */ #ifndef INN_BUFFER_H diff -Nurp inn-2.6.1/include/inn/fdflag.h inn-2.6.2/include/inn/fdflag.h --- inn-2.6.1/include/inn/fdflag.h 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/include/inn/fdflag.h 2018-03-18 13:03:32.000000000 -0700 @@ -1,16 +1,15 @@ -/* $Id: fdflag.h 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: fdflag.h 10246 2018-02-16 21:12:42Z iulius $ * * Prototypes for setting or clearing file descriptor flags. * * The canonical version of this file is maintained in the rra-c-util package, * which can be found at . * - * Copyright 2008, 2010, 2011 + * Written by Russ Allbery + * Copyright 2008, 2010-2011 * The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2004, 2005, 2006 - * by Internet Systems Consortium, Inc. ("ISC") - * Copyright (c) 1991, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, - * 2002, 2003 by The Internet Software Consortium and Rich Salz + * Copyright 2004-2006 Internet Systems Consortium, Inc. ("ISC") + * Copyright 1991, 1994-2003 The Internet Software Consortium and Rich Salz * * This code is derived from software contributed to the Internet Software * Consortium by Rich Salz. @@ -26,6 +25,8 @@ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. + * + * SPDX-License-Identifier: ISC */ #ifndef INN_FDFLAG_H diff -Nurp inn-2.6.1/include/inn/innconf.h inn-2.6.2/include/inn/innconf.h --- inn-2.6.1/include/inn/innconf.h 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/include/inn/innconf.h 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: innconf.h 10064 2016-09-04 12:55:40Z iulius $ +/* $Id: innconf.h 10149 2017-06-05 12:24:58Z iulius $ ** ** inn.conf parser interface. ** @@ -16,7 +16,7 @@ ** This structure is organized in the same order as the variables contained ** in it are mentioned in the inn.conf documentation, and broken down into ** the same sections. Note that due to the implementation, only three types -** of variables are permissible here: char *, bool, struc vector *, long +** of variables are permissible here: char *, bool, struct vector *, long ** and unsigned long. */ struct innconf { @@ -26,9 +26,10 @@ struct innconf { char *mailcmd; /* Command to send report/control type mail */ char *mta; /* MTA for mailing to moderators, innmail */ char *pathhost; /* Entry for the Path: line */ - char *server; /* Default server to connect to */ char *runasuser; /* User to run under */ char *runasgroup; /* Group to run under */ + char *server; /* Default server to connect to */ + struct vector *syntaxchecks; /* List of syntax checks to perform or not */ /* Feed Configuration */ unsigned long artcutoff; /* Max accepted article age */ @@ -161,8 +162,8 @@ struct innconf { bool logtrash; /* Log unwanted newsgroups? */ bool nnrpdoverstats; /* Log overview statistics? */ bool nntplinklog; /* Put storage token into the log? */ - unsigned long status; /* Status file update interval */ char *stathist; /* Filename for history profiler outputs */ + unsigned long status; /* Status file update interval */ unsigned long timer; /* Performance monitoring interval */ /* System Tuning */ diff -Nurp inn-2.6.1/include/inn/inndcomm.h inn-2.6.2/include/inn/inndcomm.h --- inn-2.6.1/include/inn/inndcomm.h 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/include/inn/inndcomm.h 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: inndcomm.h 9782 2015-01-07 21:34:22Z iulius $ +/* $Id: inndcomm.h 10150 2017-06-05 12:25:44Z iulius $ ** ** Here be values used for communicating with the server once it is ** running. @@ -25,6 +25,8 @@ typedef char ICC_PROTOCOLTYPE ; #define SC_SEP '\001' #define SC_MAXFIELDS 6 +/* When modifying this list, the innreport_inn.pm file should be updated + * at the same time. */ #define SC_ADDHIST 'a' #define SC_ALLOW 'D' #define SC_BEGIN 'b' diff -Nurp inn-2.6.1/include/inn/libinn.h inn-2.6.2/include/inn/libinn.h --- inn-2.6.1/include/inn/libinn.h 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/include/inn/libinn.h 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: libinn.h 10100 2016-11-04 22:24:26Z iulius $ +/* $Id: libinn.h 10149 2017-06-05 12:24:58Z iulius $ ** ** Here be declarations of functions in the InterNetNews library. */ @@ -90,7 +90,8 @@ extern void xsignal_forked(void); /* Headers. */ extern char * GenerateMessageID(char *domain); extern void InitializeMessageIDcclass(void); -extern bool IsValidMessageID(const char *string, bool stripspaces); +extern bool IsValidMessageID(const char *string, + bool stripspaces, bool laxsyntax); extern bool IsValidHeaderName(const char *string); extern bool IsValidHeaderBody(const char *string); extern bool IsValidHeaderField(const char *string); diff -Nurp inn-2.6.1/include/inn/macros.h inn-2.6.2/include/inn/macros.h --- inn-2.6.1/include/inn/macros.h 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/include/inn/macros.h 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: macros.h 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: macros.h 10246 2018-02-16 21:12:42Z iulius $ * * Some standard helpful macros. * @@ -6,14 +6,16 @@ * which can be found at . * * Written by Russ Allbery + * Copyright 2014 Russ Allbery + * Copyright 2008-2011 + * The Board of Trustees of the Leland Stanford Junior University * - * The authors hereby relinquish any claim to any copyright that they may have - * in this work, whether granted under contract or by operation of law or - * international treaty, and hereby commit to the public, at large, that they - * shall not, at any time in the future, seek to enforce any copyright in this - * work against any person or entity, or prevent any person or entity from - * copying, publishing, distributing or creating derivative works of this - * work. + * Copying and distribution of this file, with or without modification, are + * permitted in any medium without royalty provided the copyright notice and + * this notice are preserved. This file is offered as-is, without any + * warranty. + * + * SPDX-License-Identifier: FSFAP */ #ifndef INN_MACROS_H diff -Nurp inn-2.6.1/include/inn/messages.h inn-2.6.2/include/inn/messages.h --- inn-2.6.1/include/inn/messages.h 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/include/inn/messages.h 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: messages.h 10105 2016-11-04 22:42:26Z iulius $ +/* $Id: messages.h 10246 2018-02-16 21:12:42Z iulius $ * * Prototypes for message and error reporting (possibly fatal). * @@ -7,12 +7,10 @@ * * Written by Russ Allbery * Copyright 2015 Russ Allbery - * Copyright 2008, 2010, 2013, 2014 + * Copyright 2008, 2010, 2013-2014 * The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2004, 2005, 2006 - * by Internet Systems Consortium, Inc. ("ISC") - * Copyright (c) 1991, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, - * 2002, 2003 by The Internet Software Consortium and Rich Salz + * Copyright 2004-2006 Internet Systems Consortium, Inc. ("ISC") + * Copyright 1991, 1994-2003 The Internet Software Consortium and Rich Salz * * This code is derived from software contributed to the Internet Software * Consortium by Rich Salz. @@ -28,6 +26,8 @@ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. + * + * SPDX-License-Identifier: ISC */ #ifndef INN_MESSAGES_H diff -Nurp inn-2.6.1/include/inn/network.h inn-2.6.2/include/inn/network.h --- inn-2.6.1/include/inn/network.h 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/include/inn/network.h 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: network.h 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: network.h 10246 2018-02-16 21:12:42Z iulius $ * * Prototypes for network connection utility functions. * @@ -6,13 +6,11 @@ * which can be found at . * * Written by Russ Allbery - * Copyright 2014, 2016 Russ Allbery - * Copyright 2009, 2010, 2011, 2012, 2013 + * Copyright 2014, 2016-2017 Russ Allbery + * Copyright 2009-2013 * The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2004, 2005, 2006, 2007, 2008, 2010 - * by Internet Systems Consortium, Inc. ("ISC") - * Copyright (c) 1991, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, - * 2002, 2003 by The Internet Software Consortium and Rich Salz + * Copyright 2004-2010 Internet Systems Consortium, Inc. ("ISC") + * Copyright 1991, 1994-2003 The Internet Software Consortium and Rich Salz * * This code is derived from software contributed to the Internet Software * Consortium by Rich Salz. @@ -28,6 +26,8 @@ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. + * + * SPDX-License-Identifier: ISC */ #ifndef INN_NETWORK_H @@ -158,7 +158,7 @@ bool network_write(socket_type, const vo * Put an ASCII representation of the address in a sockaddr into the provided * buffer, which should hold at least INET6_ADDRSTRLEN characters. */ -bool network_sockaddr_sprint(char *, size_t, const struct sockaddr *) +bool network_sockaddr_sprint(char *, socklen_t, const struct sockaddr *) __attribute__((__nonnull__)); /* diff -Nurp inn-2.6.1/include/inn/vector.h inn-2.6.2/include/inn/vector.h --- inn-2.6.1/include/inn/vector.h 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/include/inn/vector.h 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: vector.h 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: vector.h 10246 2018-02-16 21:12:42Z iulius $ * * Prototypes for vector handling. * @@ -13,14 +13,16 @@ * which can be found at . * * Written by Russ Allbery + * Copyright 2001-2006 Russ Allbery + * Copyright 2005-2006, 2008-2011, 2013-2014 + * The Board of Trustees of the Leland Stanford Junior University + * + * Copying and distribution of this file, with or without modification, are + * permitted in any medium without royalty provided the copyright notice and + * this notice are preserved. This file is offered as-is, without any + * warranty. * - * The authors hereby relinquish any claim to any copyright that they may have - * in this work, whether granted under contract or by operation of law or - * international treaty, and hereby commit to the public, at large, that they - * shall not, at any time in the future, seek to enforce any copyright in this - * work against any person or entity, or prevent any person or entity from - * copying, publishing, distributing or creating derivative works of this - * work. + * SPDX-License-Identifier: FSFAP */ #ifndef INN_VECTOR_H diff -Nurp inn-2.6.1/include/inn/xmalloc.h inn-2.6.2/include/inn/xmalloc.h --- inn-2.6.1/include/inn/xmalloc.h 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/include/inn/xmalloc.h 2018-03-18 13:03:32.000000000 -0700 @@ -1,16 +1,15 @@ -/* $Id: xmalloc.h 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: xmalloc.h 10246 2018-02-16 21:12:42Z iulius $ * * Prototypes for malloc routines with failure handling. * * The canonical version of this file is maintained in the rra-c-util package, * which can be found at . * - * Copyright 2010, 2012, 2013, 2014 + * Written by Russ Allbery + * Copyright 2010, 2012-2014 * The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2004, 2005, 2006 - * by Internet Systems Consortium, Inc. ("ISC") - * Copyright (c) 1991, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, - * 2002, 2003 by The Internet Software Consortium and Rich Salz + * Copyright 2004-2006 Internet Systems Consortium, Inc. ("ISC") + * Copyright 1991, 1994-2003 The Internet Software Consortium and Rich Salz * * This code is derived from software contributed to the Internet Software * Consortium by Rich Salz. @@ -26,6 +25,8 @@ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. + * + * SPDX-License-Identifier: ISC */ #ifndef INN_XMALLOC_H @@ -108,7 +109,7 @@ typedef void (*xmalloc_handler_type)(con /* The default error handler. */ void xmalloc_fail(const char *, size_t, const char *, int) - __attribute__((__nonnull__)); + __attribute__((__nonnull__, __noreturn__)); /* * Assign to this variable to choose a handler other than the default, which diff -Nurp inn-2.6.1/include/inn/xwrite.h inn-2.6.2/include/inn/xwrite.h --- inn-2.6.1/include/inn/xwrite.h 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/include/inn/xwrite.h 2018-03-18 13:03:32.000000000 -0700 @@ -1,16 +1,15 @@ -/* $Id: xwrite.h 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: xwrite.h 10246 2018-02-16 21:12:42Z iulius $ * * Prototypes for write and writev replacements to handle partial writes. * * The canonical version of this file is maintained in the rra-c-util package, * which can be found at . * + * Written by Russ Allbery * Copyright 2008, 2010, 2013 * The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2004, 2005, 2006 - * by Internet Systems Consortium, Inc. ("ISC") - * Copyright (c) 1991, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, - * 2002, 2003 by The Internet Software Consortium and Rich Salz + * Copyright 2004-2006 Internet Systems Consortium, Inc. ("ISC") + * Copyright 1991, 1994-2003 The Internet Software Consortium and Rich Salz * * This code is derived from software contributed to the Internet Software * Consortium by Rich Salz. @@ -26,6 +25,8 @@ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. + * + * SPDX-License-Identifier: ISC */ #ifndef INN_XWRITE_H diff -Nurp inn-2.6.1/include/portable/getaddrinfo.h inn-2.6.2/include/portable/getaddrinfo.h --- inn-2.6.1/include/portable/getaddrinfo.h 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/include/portable/getaddrinfo.h 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: getaddrinfo.h 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: getaddrinfo.h 10246 2018-02-16 21:12:42Z iulius $ * * Replacement implementation of getaddrinfo. * @@ -14,14 +14,16 @@ * which can be found at . * * Written by Russ Allbery + * Copyright 2003, 2005 Russ Allbery + * Copyright 2008-2011 + * The Board of Trustees of the Leland Stanford Junior University + * + * Copying and distribution of this file, with or without modification, are + * permitted in any medium without royalty provided the copyright notice and + * this notice are preserved. This file is offered as-is, without any + * warranty. * - * The authors hereby relinquish any claim to any copyright that they may have - * in this work, whether granted under contract or by operation of law or - * international treaty, and hereby commit to the public, at large, that they - * shall not, at any time in the future, seek to enforce any copyright in this - * work against any person or entity, or prevent any person or entity from - * copying, publishing, distributing or creating derivative works of this - * work. + * SPDX-License-Identifier: FSFAP */ #ifndef PORTABLE_GETADDRINFO_H diff -Nurp inn-2.6.1/include/portable/getnameinfo.h inn-2.6.2/include/portable/getnameinfo.h --- inn-2.6.1/include/portable/getnameinfo.h 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/include/portable/getnameinfo.h 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: getnameinfo.h 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: getnameinfo.h 10246 2018-02-16 21:12:42Z iulius $ * * Replacement implementation of getnameinfo. * @@ -13,14 +13,16 @@ * which can be found at . * * Written by Russ Allbery + * Copyright 2005, 2007 Russ Allbery + * Copyright 2008, 2010-2011 + * The Board of Trustees of the Leland Stanford Junior University + * + * Copying and distribution of this file, with or without modification, are + * permitted in any medium without royalty provided the copyright notice and + * this notice are preserved. This file is offered as-is, without any + * warranty. * - * The authors hereby relinquish any claim to any copyright that they may have - * in this work, whether granted under contract or by operation of law or - * international treaty, and hereby commit to the public, at large, that they - * shall not, at any time in the future, seek to enforce any copyright in this - * work against any person or entity, or prevent any person or entity from - * copying, publishing, distributing or creating derivative works of this - * work. + * SPDX-License-Identifier: FSFAP */ #ifndef PORTABLE_GETNAMEINFO_H diff -Nurp inn-2.6.1/include/portable/macros.h inn-2.6.2/include/portable/macros.h --- inn-2.6.1/include/portable/macros.h 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/include/portable/macros.h 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: macros.h 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: macros.h 10246 2018-02-16 21:12:42Z iulius $ * * Portability macros used in include files. * @@ -6,14 +6,16 @@ * which can be found at . * * Written by Russ Allbery + * Copyright 2015 Russ Allbery + * Copyright 2008, 2011-2012 + * The Board of Trustees of the Leland Stanford Junior University * - * The authors hereby relinquish any claim to any copyright that they may have - * in this work, whether granted under contract or by operation of law or - * international treaty, and hereby commit to the public, at large, that they - * shall not, at any time in the future, seek to enforce any copyright in this - * work against any person or entity, or prevent any person or entity from - * copying, publishing, distributing or creating derivative works of this - * work. + * Copying and distribution of this file, with or without modification, are + * permitted in any medium without royalty provided the copyright notice and + * this notice are preserved. This file is offered as-is, without any + * warranty. + * + * SPDX-License-Identifier: FSFAP */ #ifndef PORTABLE_MACROS_H diff -Nurp inn-2.6.1/include/portable/socket-unix.h inn-2.6.2/include/portable/socket-unix.h --- inn-2.6.1/include/portable/socket-unix.h 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/include/portable/socket-unix.h 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: socket-unix.h 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: socket-unix.h 10246 2018-02-16 21:12:42Z iulius $ * * Portability wrapper around . * @@ -9,15 +9,14 @@ * The canonical version of this file is maintained in the rra-c-util package, * which can be found at . * - * Written by Russ Allbery + * Copyright 2014 Russ Allbery * - * The authors hereby relinquish any claim to any copyright that they may have - * in this work, whether granted under contract or by operation of law or - * international treaty, and hereby commit to the public, at large, that they - * shall not, at any time in the future, seek to enforce any copyright in this - * work against any person or entity, or prevent any person or entity from - * copying, publishing, distributing or creating derivative works of this - * work. + * Copying and distribution of this file, with or without modification, are + * permitted in any medium without royalty provided the copyright notice and + * this notice are preserved. This file is offered as-is, without any + * warranty. + * + * SPDX-License-Identifier: FSFAP */ #ifndef PORTABLE_SOCKET_UNIX_H diff -Nurp inn-2.6.1/include/portable/socket.h inn-2.6.2/include/portable/socket.h --- inn-2.6.1/include/portable/socket.h 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/include/portable/socket.h 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: socket.h 10104 2016-11-04 22:41:36Z iulius $ +/* $Id: socket.h 10246 2018-02-16 21:12:42Z iulius $ * * Portability wrapper around and friends. * @@ -17,13 +17,11 @@ * The canonical version of this file is maintained in the rra-c-util package, * which can be found at . * - * Copyright 2014 Russ Allbery - * Copyright 2008, 2009, 2011, 2013 + * Copyright 2014, 2017 Russ Allbery + * Copyright 2008-2009, 2011, 2013 * The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2004, 2005, 2006, 2007 - * by Internet Systems Consortium, Inc. ("ISC") - * Copyright (c) 1991, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, - * 2002, 2003 by The Internet Software Consortium and Rich Salz + * Copyright 2004-2007 Internet Systems Consortium, Inc. ("ISC") + * Copyright 1991, 1994-2003 The Internet Software Consortium and Rich Salz * * This code is derived from software contributed to the Internet Software * Consortium by Rich Salz. @@ -39,6 +37,8 @@ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. + * + * SPDX-License-Identifier: ISC */ #ifndef PORTABLE_SOCKET_H @@ -127,28 +127,6 @@ struct sockaddr_storage { (memcmp((a), (b), sizeof(struct in6_addr)) == 0) #endif -/* Define an SA_LEN macro that gives us the length of a sockaddr. */ -#if !HAVE_SA_LEN -# if HAVE_STRUCT_SOCKADDR_SA_LEN -# define SA_LEN(s) ((s)->sa_len) -# else -/* Hack courtesy of the USAGI project. */ -# if HAVE_INET6 -# define SA_LEN(s) \ - ((((const struct sockaddr *)(s))->sa_family == AF_INET6) \ - ? sizeof(struct sockaddr_in6) \ - : ((((const struct sockaddr *)(s))->sa_family == AF_INET) \ - ? sizeof(struct sockaddr_in) \ - : sizeof(struct sockaddr))) -# else -# define SA_LEN(s) \ - ((((const struct sockaddr *)(s))->sa_family == AF_INET) \ - ? sizeof(struct sockaddr_in) \ - : sizeof(struct sockaddr)) -# endif -# endif /* HAVE_SOCKADDR_LEN */ -#endif /* !HAVE_SA_LEN_MACRO */ - /* * AI_ADDRCONFIG results in an error from getaddrinfo on BSD/OS and possibly * other platforms. If configure determined it didn't work, pretend it diff -Nurp inn-2.6.1/include/portable/stdbool.h inn-2.6.2/include/portable/stdbool.h --- inn-2.6.1/include/portable/stdbool.h 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/include/portable/stdbool.h 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: stdbool.h 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: stdbool.h 10246 2018-02-16 21:12:42Z iulius $ * * Portability wrapper around . * @@ -10,14 +10,15 @@ * which can be found at . * * Written by Russ Allbery + * Copyright 2008, 2011 + * The Board of Trustees of the Leland Stanford Junior University * - * The authors hereby relinquish any claim to any copyright that they may have - * in this work, whether granted under contract or by operation of law or - * international treaty, and hereby commit to the public, at large, that they - * shall not, at any time in the future, seek to enforce any copyright in this - * work against any person or entity, or prevent any person or entity from - * copying, publishing, distributing or creating derivative works of this - * work. + * Copying and distribution of this file, with or without modification, are + * permitted in any medium without royalty provided the copyright notice and + * this notice are preserved. This file is offered as-is, without any + * warranty. + * + * SPDX-License-Identifier: FSFAP */ #ifndef PORTABLE_STDBOOL_H diff -Nurp inn-2.6.1/include/portable/uio.h inn-2.6.2/include/portable/uio.h --- inn-2.6.1/include/portable/uio.h 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/include/portable/uio.h 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: uio.h 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: uio.h 10246 2018-02-16 21:12:42Z iulius $ * * Portability wrapper around . * @@ -10,14 +10,15 @@ * which can be found at . * * Written by Russ Allbery + * Copyright 2008, 2011 + * The Board of Trustees of the Leland Stanford Junior University * - * The authors hereby relinquish any claim to any copyright that they may have - * in this work, whether granted under contract or by operation of law or - * international treaty, and hereby commit to the public, at large, that they - * shall not, at any time in the future, seek to enforce any copyright in this - * work against any person or entity, or prevent any person or entity from - * copying, publishing, distributing or creating derivative works of this - * work. + * Copying and distribution of this file, with or without modification, are + * permitted in any medium without royalty provided the copyright notice and + * this notice are preserved. This file is offered as-is, without any + * warranty. + * + * SPDX-License-Identifier: FSFAP */ #ifndef PORTABLE_UIO_H diff -Nurp inn-2.6.1/innd/Makefile inn-2.6.2/innd/Makefile --- inn-2.6.1/innd/Makefile 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/innd/Makefile 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -## $Id: Makefile 10100 2016-11-04 22:24:26Z iulius $ +## $Id: Makefile 10149 2017-06-05 12:24:58Z iulius $ include ../Makefile.global @@ -97,7 +97,8 @@ cc.o: cc.c ../include/config.h ../includ ../include/inn/messages.h ../include/inn/timer.h ../include/inn/libinn.h \ ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ ../include/inn/nntp.h ../include/inn/paths.h ../include/inn/storage.h \ - ../include/inn/options.h ../include/inn/inndcomm.h ../include/innperl.h + ../include/inn/options.h ../include/inn/vector.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/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -111,7 +112,8 @@ chan.o: chan.c ../include/config.h ../in ../include/inn/history.h ../include/inn/messages.h \ ../include/inn/timer.h ../include/inn/libinn.h ../include/inn/concat.h \ ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \ - ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h + ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h \ + ../include/inn/vector.h icd.o: icd.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -127,7 +129,7 @@ icd.o: icd.c ../include/config.h ../incl ../include/inn/timer.h ../include/inn/libinn.h ../include/inn/concat.h \ ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \ ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h \ - ../include/inn/ov.h ../include/inn/storage.h + ../include/inn/vector.h ../include/inn/ov.h ../include/inn/storage.h innd.o: innd.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -140,8 +142,8 @@ innd.o: innd.c ../include/config.h ../in ../include/inn/buffer.h ../include/inn/history.h ../include/inn/timer.h \ ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ ../include/inn/xwrite.h ../include/inn/nntp.h ../include/inn/paths.h \ - ../include/inn/storage.h ../include/inn/options.h ../include/inn/ov.h \ - ../include/inn/storage.h + ../include/inn/storage.h ../include/inn/options.h \ + ../include/inn/vector.h ../include/inn/ov.h ../include/inn/storage.h keywords.o: keywords.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -154,7 +156,8 @@ keywords.o: keywords.c ../include/config ../include/portable/getnameinfo.h ../include/inn/buffer.h \ ../include/inn/history.h ../include/inn/messages.h \ ../include/inn/timer.h ../include/inn/nntp.h ../include/inn/paths.h \ - ../include/inn/storage.h ../include/inn/options.h + ../include/inn/storage.h ../include/inn/options.h \ + ../include/inn/vector.h lc.o: lc.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -167,7 +170,8 @@ lc.o: lc.c ../include/config.h ../includ ../include/inn/messages.h ../include/inn/timer.h ../include/inn/libinn.h \ ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ ../include/inn/nntp.h ../include/inn/paths.h ../include/inn/storage.h \ - ../include/inn/options.h ../include/portable/socket-unix.h + ../include/inn/options.h ../include/inn/vector.h \ + ../include/portable/socket-unix.h nc.o: nc.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -181,7 +185,7 @@ nc.o: nc.c ../include/config.h ../includ ../include/inn/messages.h ../include/inn/timer.h ../include/inn/libinn.h \ ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ ../include/inn/nntp.h ../include/inn/paths.h ../include/inn/storage.h \ - ../include/inn/options.h + ../include/inn/options.h ../include/inn/vector.h newsfeeds.o: newsfeeds.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -194,7 +198,7 @@ newsfeeds.o: newsfeeds.c ../include/conf ../include/inn/messages.h ../include/inn/timer.h ../include/inn/libinn.h \ ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ ../include/inn/nntp.h ../include/inn/paths.h ../include/inn/storage.h \ - ../include/inn/options.h + ../include/inn/options.h ../include/inn/vector.h ng.o: ng.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -207,7 +211,8 @@ ng.o: ng.c ../include/config.h ../includ ../include/inn/messages.h ../include/inn/timer.h ../include/inn/libinn.h \ ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ ../include/inn/nntp.h ../include/inn/paths.h ../include/inn/storage.h \ - ../include/inn/options.h ../include/inn/ov.h ../include/inn/storage.h + ../include/inn/options.h ../include/inn/vector.h ../include/inn/ov.h \ + ../include/inn/storage.h perl.o: perl.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -220,7 +225,7 @@ perl.o: perl.c ../include/config.h ../in ../include/inn/messages.h ../include/inn/timer.h ../include/inn/libinn.h \ ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ ../include/inn/nntp.h ../include/inn/paths.h ../include/inn/storage.h \ - ../include/inn/options.h \ + ../include/inn/options.h ../include/inn/vector.h \ ../include/ppport.h \ ../include/innperl.h proc.o: proc.c ../include/config.h ../include/inn/defines.h \ @@ -234,7 +239,8 @@ proc.o: proc.c ../include/config.h ../in ../include/inn/history.h ../include/inn/messages.h \ ../include/inn/timer.h ../include/inn/libinn.h ../include/inn/concat.h \ ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \ - ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h + ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h \ + ../include/inn/vector.h python.o: python.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -247,7 +253,8 @@ python.o: python.c ../include/config.h . ../include/inn/history.h ../include/inn/messages.h \ ../include/inn/timer.h ../include/inn/libinn.h ../include/inn/concat.h \ ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \ - ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h + ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h \ + ../include/inn/vector.h rc.o: rc.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -276,7 +283,7 @@ site.o: site.c ../include/config.h ../in ../include/inn/messages.h ../include/inn/timer.h ../include/inn/libinn.h \ ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ ../include/inn/nntp.h ../include/inn/paths.h ../include/inn/storage.h \ - ../include/inn/options.h + ../include/inn/options.h ../include/inn/vector.h status.o: status.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -291,7 +298,7 @@ status.o: status.c ../include/config.h . ../include/inn/timer.h ../include/inn/libinn.h ../include/inn/concat.h \ ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \ ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h \ - ../include/innperl.h + ../include/inn/vector.h ../include/innperl.h util.o: util.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -305,7 +312,8 @@ util.o: util.c ../include/config.h ../in ../include/portable/socket.h ../include/inn/buffer.h \ ../include/inn/history.h ../include/inn/messages.h \ ../include/inn/timer.h ../include/inn/nntp.h ../include/inn/paths.h \ - ../include/inn/storage.h ../include/inn/options.h + ../include/inn/storage.h ../include/inn/options.h \ + ../include/inn/vector.h wip.o: wip.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -318,7 +326,7 @@ wip.o: wip.c ../include/config.h ../incl ../include/inn/messages.h ../include/inn/timer.h ../include/inn/libinn.h \ ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ ../include/inn/nntp.h ../include/inn/paths.h ../include/inn/storage.h \ - ../include/inn/options.h + ../include/inn/options.h ../include/inn/vector.h tinyleaf.o: tinyleaf.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ diff -Nurp inn-2.6.1/innd/art.c inn-2.6.2/innd/art.c --- inn-2.6.1/innd/art.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/innd/art.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: art.c 10122 2016-11-25 22:39:35Z iulius $ +/* $Id: art.c 10149 2017-06-05 12:24:58Z iulius $ ** ** Article-processing. */ @@ -21,6 +21,7 @@ typedef struct iovec IOVEC; #define ARTIOVCNT 16 extern bool DoCancels; +extern bool laxmid; /* Characters used in log messages indicating the disposition of messages. */ #define ART_ACCEPT '+' @@ -1014,7 +1015,7 @@ ARTclean(ARTDATA *data, char *buff, bool } /* Assumes the Message-ID: header is a required header. */ - if (!IsValidMessageID(HDR(HDR__MESSAGE_ID), true)) { + if (!IsValidMessageID(HDR(HDR__MESSAGE_ID), true, laxmid)) { HDR_LEN(HDR__MESSAGE_ID) = 0; sprintf(buff, "%d Bad \"Message-ID\" header", ihave ? NNTP_FAIL_IHAVE_REJECT : NNTP_FAIL_TAKETHIS_REJECT); @@ -1239,7 +1240,7 @@ ARTcancel(const ARTDATA *data, const cha return; } - if (!IsValidMessageID(MessageID, true)) { + if (!IsValidMessageID(MessageID, true, laxmid)) { syslog(L_NOTICE, "%s bad cancel Message-ID %s", data->Feedsite, MaxLength(MessageID, MessageID)); TMRstop(TMR_ARTCNCL); @@ -1298,7 +1299,7 @@ ARTcontrol(ARTDATA *data, char *Control, if ((c == 'c' || c == 'C') && strncasecmp(Control, "cancel", 6) == 0) { for (p = &Control[6]; ISWHITE(*p); p++) continue; - if (*p && IsValidMessageID(p, true)) + if (*p && IsValidMessageID(p, true, laxmid)) ARTcancel(data, p, false); return; } @@ -2627,7 +2628,7 @@ ARTpost(CHANNEL *cp) ARTcontrol(data, HDR(HDR__CONTROL), cp); } if (DoCancels && HDR_FOUND(HDR__SUPERSEDES)) { - if (IsValidMessageID(HDR(HDR__SUPERSEDES), true)) + if (IsValidMessageID(HDR(HDR__SUPERSEDES), true, laxmid)) ARTcancel(data, HDR(HDR__SUPERSEDES), false); } } diff -Nurp inn-2.6.1/innd/innd.c inn-2.6.2/innd/innd.c --- inn-2.6.1/innd/innd.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/innd/innd.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: innd.c 9905 2015-06-20 20:51:22Z iulius $ +/* $Id: innd.c 10263 2018-03-10 14:51:53Z iulius $ ** ** Variable definitions, miscellany, and main(). */ @@ -31,6 +31,9 @@ bool ThrottledbyIOError = false; static char *PID = NULL; +/* Default values for the syntaxchecks parameter in inn.conf. */ +bool laxmid = false; + /* Signal handling. If we receive a signal that should kill the server, killer_signal is set to the signal number that we received. This isn't what indicates that we should terminate; that's the separate global @@ -58,6 +61,7 @@ FILE *Errlog = NULL; static void catch_terminate(int sig); static void xmalloc_abort(const char *what, size_t size, const char *file, int line); +static void Usage(void) __attribute__ ((__noreturn__)); /* header table initialization */ #define ARTHEADERINIT(name, type) {name, type, sizeof(name) - 1} @@ -211,10 +215,12 @@ const ARTHEADER ARTheaders[] = { /* #define HDR__ARCHIVED_AT 72 */ ARTHEADERINIT("Summary", HTstd), /* #define HDR__SUMMARY 73 */ - ARTHEADERINIT("Comments", HTstd) + ARTHEADERINIT("Comments", HTstd), /* #define HDR__COMMENTS 74 */ + ARTHEADERINIT("Jabber-ID", HTstd), +/* #define HDR__JABBER_ID 75 */ }; -/* #define MAX_ARTHEADER 75 */ +/* #define MAX_ARTHEADER 76 */ /* @@ -351,6 +357,7 @@ main(int ac, char *av[]) bool flag; static char WHEN[] = "PID file"; int i; + size_t j; char buff[SMBUF]; FILE *F; bool ShouldFork; @@ -528,6 +535,24 @@ main(int ac, char *av[]) exit(1); } + /* Initialize the checks to perform or not on article syntax. */ + if ((innconf->syntaxchecks != NULL) && (innconf->syntaxchecks->count > 0)) { + for (j = 0; j < innconf->syntaxchecks->count; j++) { + if (innconf->syntaxchecks->strings[j] != NULL) { + if (strcmp(innconf->syntaxchecks->strings[j], "laxmid") == 0) { + laxmid = true; + } else if (strcmp(innconf->syntaxchecks->strings[j], + "no-laxmid") == 0) { + laxmid = false; + } else { + syslog(L_NOTICE, "Unknown \"%s\" value in syntaxchecks " + "parameter in inn.conf", + innconf->syntaxchecks->strings[j]); + } + } + } + } + /* Get the Path entry. */ if (innconf->pathhost == NULL) { syslog(L_FATAL, "%s No pathhost set", LogName); diff -Nurp inn-2.6.1/innd/innd.h inn-2.6.2/innd/innd.h --- inn-2.6.1/innd/innd.h 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/innd/innd.h 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: innd.h 9700 2014-09-21 09:15:25Z iulius $ +/* $Id: innd.h 10263 2018-03-10 14:51:53Z iulius $ ** ** Many of the data types used here have abbreviations, such as CT for a ** channel type. Here are a list of the conventions and meanings: @@ -50,6 +50,7 @@ #include "inn/nntp.h" #include "inn/paths.h" #include "inn/storage.h" +#include "inn/vector.h" BEGIN_DECLS @@ -219,8 +220,9 @@ typedef struct _HDRCONTENT { #define HDR__ARCHIVED_AT 72 #define HDR__SUMMARY 73 #define HDR__COMMENTS 74 +#define HDR__JABBER_ID 75 -#define MAX_ARTHEADER 75 +#define MAX_ARTHEADER 76 /* ** Miscellaneous data we want to keep on an article. All the fields diff -Nurp inn-2.6.1/innd/nc.c inn-2.6.2/innd/nc.c --- inn-2.6.1/innd/nc.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/innd/nc.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: nc.c 10037 2016-06-01 20:07:30Z iulius $ +/* $Id: nc.c 10149 2017-06-05 12:24:58Z iulius $ ** ** Routines for the NNTP channel. Other channels get the descriptors which ** we turn into NNTP channels, and over which we speak NNTP. @@ -15,6 +15,8 @@ #define BAD_COMMAND_COUNT 10 +extern bool laxmid; + /* ** An entry in the dispatch table. The name, and implementing function, ** of every command we support. @@ -358,7 +360,7 @@ NChead(CHANNEL *cp) return; } - if (!IsValidMessageID(cp->av[1], true)) { + if (!IsValidMessageID(cp->av[1], true, laxmid)) { xasprintf(&buff, "%d Syntax error in message-ID", NNTP_ERR_SYNTAX); NCwritereply(cp, buff); free(buff); @@ -424,7 +426,7 @@ NCstat(CHANNEL *cp) return; } - if (!IsValidMessageID(cp->av[1], true)) { + if (!IsValidMessageID(cp->av[1], true, laxmid)) { xasprintf(&buff, "%d Syntax error in message-ID", NNTP_ERR_SYNTAX); NCwritereply(cp, buff); free(buff); @@ -647,7 +649,7 @@ NCihave(CHANNEL *cp) cp->Ihave++; cp->Start = cp->Next; - if (!IsValidMessageID(cp->av[1], false)) { + if (!IsValidMessageID(cp->av[1], false, laxmid)) { /* Return 435 here instead of 501 for compatibility reasons. */ xasprintf(&buff, "%d Syntax error in message-ID", NNTP_FAIL_IHAVE_REFUSE); NCwritereply(cp, buff); @@ -1816,7 +1818,7 @@ NCcheck(CHANNEL *cp) cp->Sendid.size = MED_BUFFER; cp->Sendid.data = xmalloc(cp->Sendid.size); } - if (!IsValidMessageID(cp->av[1], false)) { + if (!IsValidMessageID(cp->av[1], false, laxmid)) { snprintf(cp->Sendid.data, cp->Sendid.size, "%d %s", NNTP_FAIL_CHECK_REFUSE, cp->av[1]); NCwritereply(cp, cp->Sendid.data); @@ -1930,7 +1932,7 @@ NCtakethis(CHANNEL *cp) idlen = strlen(mid); msglen = idlen + 5; /* 3 digits + space + id + null. */ - if (!IsValidMessageID(mid, false)) { + if (!IsValidMessageID(mid, false, laxmid)) { syslog(L_NOTICE, "%s bad_messageid %s", CHANname(cp), MaxLength(mid, mid)); returncode = NNTP_FAIL_TAKETHIS_REJECT; diff -Nurp inn-2.6.1/innd/perl.c inn-2.6.2/innd/perl.c --- inn-2.6.1/innd/perl.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/innd/perl.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: perl.c 9930 2015-08-10 11:51:03Z iulius $ +/* $Id: perl.c 10229 2018-01-28 21:21:21Z iulius $ ** ** Perl filtering support for innd. ** @@ -39,7 +39,9 @@ #include "innd.h" #include +#pragma GCC diagnostic ignored "-Wredundant-decls" #include +#pragma GCC diagnostic warning "-Wredundant-decls" #include #include "ppport.h" diff -Nurp inn-2.6.1/innd/python.c inn-2.6.2/innd/python.c --- inn-2.6.1/innd/python.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/innd/python.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: python.c 9581 2013-12-09 20:07:03Z iulius $ +/* $Id: python.c 10229 2018-01-28 21:21:21Z iulius $ ** ** Embed Python in the style of innd's Perl stuff. ** @@ -32,7 +32,9 @@ * and before any standard headers are included (because Python may * define some pre-processor definitions which affect the standard * headers on some systems). */ +#pragma GCC diagnostic ignored "-Wredundant-decls" #include "Python.h" +#pragma GCC diagnostic warning "-Wredundant-decls" /* Define Py_ssize_t when it does not exist (Python < 2.5.0). */ #if PY_VERSION_HEX < 0x02050000 diff -Nurp inn-2.6.1/innd/rc.c inn-2.6.2/innd/rc.c --- inn-2.6.1/innd/rc.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/innd/rc.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: rc.c 10012 2016-05-05 12:41:10Z iulius $ +/* $Id: rc.c 10229 2018-01-28 21:21:21Z iulius $ ** ** Routines for the remote connect channel. Create an Internet stream ** socket that processes connect to. If the incoming site is not one of @@ -128,7 +128,7 @@ GoodIdent(int fd, char *identd) struct sockaddr *s_local; struct sockaddr *s_distant = NULL; int ident_fd; - socklen_t len; + socklen_t local_len, distant_len; int port1,port2; ssize_t lu; char buf[80], *buf2; @@ -137,14 +137,14 @@ GoodIdent(int fd, char *identd) return true; s_local = xmalloc(sizeof(struct sockaddr_storage)); - len = sizeof(struct sockaddr_storage); - if ((getsockname(fd, s_local, &len)) < 0) { + local_len = sizeof(struct sockaddr_storage); + if ((getsockname(fd, s_local, &local_len)) < 0) { syslog(L_ERROR, "can't do getsockname for identd"); goto fail; } s_distant = xmalloc(sizeof(struct sockaddr_storage)); - len = sizeof(struct sockaddr_storage); - if ((getpeername(fd, s_distant, &len)) < 0) { + distant_len = sizeof(struct sockaddr_storage); + if ((getpeername(fd, s_distant, &distant_len)) < 0) { syslog(L_ERROR, "can't do getpeername for identd"); goto fail; } @@ -174,12 +174,12 @@ GoodIdent(int fd, char *identd) syslog(L_ERROR, "can't open socket for identd (%m)"); goto fail; } - if (bind(ident_fd, s_local, SA_LEN(s_local)) < 0) { + if (bind(ident_fd, s_local, local_len) < 0) { syslog(L_ERROR, "can't bind socket for identd (%m)"); close(ident_fd); goto fail; } - if (connect(ident_fd, s_distant, SA_LEN(s_distant)) < 0) { + if (connect(ident_fd, s_distant, distant_len) < 0) { syslog(L_ERROR, "can't connect to identd (%m)"); close(ident_fd); goto fail; @@ -1513,7 +1513,7 @@ RCwritelist(char *filename) if (*p == '/') q = p + 1; - fprintf (F, "## $Id: rc.c 10012 2016-05-05 12:41:10Z iulius $\n"); + fprintf (F, "## $Id: rc.c 10229 2018-01-28 21:21:21Z iulius $\n"); fprintf (F, "##\n"); fprintf (F, "## %s -- Configuration of incoming news feeds\n", q); free(r); diff -Nurp inn-2.6.1/innfeed/config_l.c inn-2.6.2/innfeed/config_l.c --- inn-2.6.1/innfeed/config_l.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/innfeed/config_l.c 2018-03-18 13:03:32.000000000 -0700 @@ -7,8 +7,8 @@ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 5 -#define YY_FLEX_SUBMINOR_VERSION 39 +#define YY_FLEX_MINOR_VERSION 6 +#define YY_FLEX_SUBMINOR_VERSION 1 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif @@ -87,25 +87,13 @@ typedef unsigned int flex_uint32_t; #endif /* ! FLEXINT_H */ -#ifdef __cplusplus - -/* The "const" storage-class-modifier is valid. */ -#define YY_USE_CONST - -#else /* ! __cplusplus */ - -/* C99 requires __STDC__ to be defined as 1. */ -#if defined (__STDC__) - -#define YY_USE_CONST - -#endif /* defined (__STDC__) */ -#endif /* ! __cplusplus */ - -#ifdef YY_USE_CONST +/* TODO: this is always defined, so inline it */ #define yyconst const + +#if defined(__GNUC__) && __GNUC__ >= 3 +#define yynoreturn __attribute__((__noreturn__)) #else -#define yyconst +#define yynoreturn #endif /* Returned upon end-of-file. */ @@ -166,7 +154,7 @@ typedef struct yy_buffer_state *YY_BUFFE typedef size_t yy_size_t; #endif -extern yy_size_t yyleng; +extern int yyleng; extern FILE *yyin, *yyout; @@ -205,12 +193,12 @@ struct yy_buffer_state /* Size of input buffer in bytes, not including room for EOB * characters. */ - yy_size_t yy_buf_size; + int yy_buf_size; /* Number of characters read into yy_ch_buf, not including EOB * characters. */ - yy_size_t yy_n_chars; + int yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to @@ -233,7 +221,7 @@ struct yy_buffer_state int yy_bs_lineno; /**< The line count. */ int yy_bs_column; /**< The column count. */ - + /* Whether to try to fill the input buffer when we reach the * end of it. */ @@ -261,7 +249,7 @@ struct yy_buffer_state /* Stack of input buffers. */ static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ -static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ +static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ /* We provide macros for accessing buffer states in case in the * future we want to put the buffer states in a more general @@ -280,11 +268,11 @@ static YY_BUFFER_STATE * yy_buffer_stack /* yy_hold_char holds the character lost when yytext is formed. */ static char yy_hold_char; -static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */ -yy_size_t yyleng; +static int yy_n_chars; /* number of characters read into yy_ch_buf */ +int yyleng; /* Points to current character in buffer. */ -static char *yy_c_buf_p = (char *) 0; +static char *yy_c_buf_p = NULL; static int yy_init = 0; /* whether we need to initialize */ static int yy_start = 0; /* start state number */ @@ -309,7 +297,7 @@ static void yy_init_buffer (YY_BUFFER_ST YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ); YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ); -YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len ); +YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len ); void *yyalloc (yy_size_t ); void *yyrealloc (void *,yy_size_t ); @@ -343,7 +331,7 @@ void yyfree (void * ); typedef unsigned char YY_CHAR; -FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; +FILE *yyin = NULL, *yyout = NULL; typedef int yy_state_type; @@ -352,19 +340,22 @@ extern int yylineno; int yylineno = 1; extern char *yytext; +#ifdef yytext_ptr +#undef yytext_ptr +#endif #define yytext_ptr yytext static yy_state_type yy_get_previous_state (void ); static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); static int yy_get_next_buffer (void ); -static void yy_fatal_error (yyconst char msg[] ); +static void yynoreturn yy_fatal_error (yyconst char* msg ); /* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. */ #define YY_DO_BEFORE_ACTION \ (yytext_ptr) = yy_bp; \ - yyleng = (size_t) (yy_cp - yy_bp); \ + yyleng = (int) (yy_cp - yy_bp); \ (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; @@ -388,7 +379,7 @@ static yyconst flex_int16_t yy_accept[55 18, 18, 6, 0 } ; -static yyconst flex_int32_t yy_ec[256] = +static yyconst YY_CHAR yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -420,14 +411,14 @@ static yyconst flex_int32_t yy_ec[256] = 1, 1, 1, 1, 1 } ; -static yyconst flex_int32_t yy_meta[30] = +static yyconst YY_CHAR yy_meta[30] = { 0, 1, 2, 3, 4, 5, 1, 6, 1, 1, 7, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 7, 1, 7, 1, 1, 1 } ; -static yyconst flex_int16_t yy_base[62] = +static yyconst flex_uint16_t yy_base[62] = { 0, 0, 100, 28, 30, 105, 0, 102, 107, 0, 0, 80, 25, 107, 15, 23, 0, 0, 86, 0, 99, @@ -449,7 +440,7 @@ static yyconst flex_int16_t yy_def[62] = 54 } ; -static yyconst flex_int16_t yy_nxt[137] = +static yyconst flex_uint16_t yy_nxt[137] = { 0, 6, 7, 8, 9, 10, 6, 11, 12, 6, 12, 13, 6, 6, 6, 14, 6, 6, 6, 6, 15, @@ -503,7 +494,7 @@ int yy_flex_debug = 0; char *yytext; #line 1 "configfile.l" #line 2 "configfile.l" -/* $Id: configfile.l 9526 2013-08-07 18:37:37Z iulius $ +/* $Id: configfile.l 10181 2017-10-16 04:13:18Z eagle $ ** ** A flex input file for the innfeed config file. ** @@ -527,6 +518,11 @@ char *yytext; #error "You must use FLEX to process the lex input file." #endif +/* Some versions of flex (such as 2.6.1-1.3 in Debian stretch) declare a + variable as int that should be size_t. We can't really do much about + that, and it's fixed in current flex, so just suppress the warning. */ +#pragma GCC diagnostic ignored "-Wsign-compare" + #if defined (FLEX_DEBUG) #define YY_USER_INIT yy_flex_debug = (getenv ("YYDEBUG") == NULL ? 0 : 1) #endif @@ -562,7 +558,7 @@ struct includeFile { int include_stack_ptr = 0; -#line 566 "lex.yy.c" +#line 562 "lex.yy.c" #define INITIAL 0 #define incl 1 @@ -596,19 +592,19 @@ void yyset_extra (YY_EXTRA_TYPE user_def FILE *yyget_in (void ); -void yyset_in (FILE * in_str ); +void yyset_in (FILE * _in_str ); FILE *yyget_out (void ); -void yyset_out (FILE * out_str ); +void yyset_out (FILE * _out_str ); -yy_size_t yyget_leng (void ); + int yyget_leng (void ); char *yyget_text (void ); int yyget_lineno (void ); -void yyset_lineno (int line_number ); +void yyset_lineno (int _line_number ); /* Macros after this point can all be overridden by user definitions in * section 1. @@ -622,8 +618,12 @@ extern int yywrap (void ); #endif #endif +#ifndef YY_NO_UNPUT + static void yyunput (int c,char *buf_ptr ); +#endif + #ifndef yytext_ptr static void yy_flex_strncpy (char *,yyconst char *,int ); #endif @@ -657,7 +657,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 do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0) +#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, @@ -668,7 +668,7 @@ static int input (void ); if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ - int n; \ + size_t n; \ for ( n = 0; n < max_size && \ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ @@ -681,7 +681,7 @@ static int input (void ); else \ { \ errno=0; \ - while ( (result = fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \ + while ( (result = (int) fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ { \ if( errno != EINTR) \ { \ @@ -736,7 +736,7 @@ extern int yylex (void); /* Code executed at the end of each rule. */ #ifndef YY_BREAK -#define YY_BREAK break; +#define YY_BREAK /*LINTED*/break; #endif #define YY_RULE_SETUP \ @@ -749,9 +749,9 @@ extern int yylex (void); */ YY_DECL { - register yy_state_type yy_current_state; - register char *yy_cp, *yy_bp; - register int yy_act; + yy_state_type yy_current_state; + char *yy_cp, *yy_bp; + int yy_act; if ( !(yy_init) ) { @@ -780,12 +780,12 @@ YY_DECL } { -#line 66 "configfile.l" +#line 71 "configfile.l" #line 787 "lex.yy.c" - while ( 1 ) /* loops until end-of-file is reached */ + while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { yy_cp = (yy_c_buf_p); @@ -802,7 +802,7 @@ YY_DECL yy_match: do { - register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; + YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; @@ -814,7 +814,7 @@ yy_match: if ( yy_current_state >= 55 ) yy_c = yy_meta[(unsigned int) yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; ++yy_cp; } while ( yy_base[yy_current_state] != 107 ); @@ -844,42 +844,42 @@ do_action: /* This label is used only to case 1: /* rule 1 can match eol */ YY_RULE_SETUP -#line 68 "configfile.l" +#line 73 "configfile.l" lineCount++ ; YY_BREAK case 2: YY_RULE_SETUP -#line 70 "configfile.l" +#line 75 "configfile.l" { return (COLON) ; } YY_BREAK case 3: YY_RULE_SETUP -#line 72 "configfile.l" +#line 77 "configfile.l" { return (LBRACE) ; } YY_BREAK case 4: YY_RULE_SETUP -#line 74 "configfile.l" +#line 79 "configfile.l" { return (RBRACE) ; } YY_BREAK case 5: YY_RULE_SETUP -#line 76 "configfile.l" +#line 81 "configfile.l" { return (PEER) ; } YY_BREAK case 6: YY_RULE_SETUP -#line 78 "configfile.l" +#line 83 "configfile.l" BEGIN(incl); YY_BREAK case 7: YY_RULE_SETUP -#line 80 "configfile.l" +#line 85 "configfile.l" /* eat the whitespace before include filename */ YY_BREAK case 8: YY_RULE_SETUP -#line 82 "configfile.l" +#line 87 "configfile.l" { if (include_stack_ptr == MAX_INCLUDE_DEPTH - 1) { @@ -914,7 +914,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(incl): -#line 114 "configfile.l" +#line 119 "configfile.l" { if ( include_stack_ptr <= 0 ) yyterminate(); @@ -928,22 +928,22 @@ case YY_STATE_EOF(incl): YY_BREAK case 9: YY_RULE_SETUP -#line 125 "configfile.l" +#line 130 "configfile.l" { return (GROUP) ; } YY_BREAK case 10: YY_RULE_SETUP -#line 127 "configfile.l" +#line 132 "configfile.l" { (void) 0 ; } YY_BREAK case 11: YY_RULE_SETUP -#line 129 "configfile.l" +#line 134 "configfile.l" { (void) 1 ; } YY_BREAK case 12: YY_RULE_SETUP -#line 131 "configfile.l" +#line 136 "configfile.l" { switch (yytext[2]) { case '\\': yylval.chr = '\\' ; break ; @@ -959,19 +959,19 @@ YY_RULE_SETUP YY_BREAK case 13: YY_RULE_SETUP -#line 144 "configfile.l" +#line 149 "configfile.l" { yylval.chr = yytext[1] ; return (CHAR) ; } YY_BREAK case 14: YY_RULE_SETUP -#line 146 "configfile.l" +#line 151 "configfile.l" { yylval.chr = (char)strtol(&yytext[2], (char **)NULL, 8); return (CHAR) ;} YY_BREAK case 15: /* rule 15 can match eol */ YY_RULE_SETUP -#line 149 "configfile.l" +#line 154 "configfile.l" {{ size_t i ; @@ -1063,17 +1063,17 @@ YY_RULE_SETUP YY_BREAK case 16: YY_RULE_SETUP -#line 238 "configfile.l" +#line 243 "configfile.l" { yylval.integer = atoi (yytext) ; return (IVAL) ; } YY_BREAK case 17: YY_RULE_SETUP -#line 240 "configfile.l" +#line 245 "configfile.l" { yylval.real = atof (yytext) ; return (RVAL) ; } YY_BREAK case 18: YY_RULE_SETUP -#line 242 "configfile.l" +#line 247 "configfile.l" { yylval.name = xstrdup (yytext) ; if (strcasecmp (yylval.name,"false") == 0) @@ -1086,7 +1086,7 @@ YY_RULE_SETUP YY_BREAK case 19: YY_RULE_SETUP -#line 252 "configfile.l" +#line 257 "configfile.l" ECHO; YY_BREAK #line 1093 "lex.yy.c" @@ -1230,9 +1230,9 @@ ECHO; */ static int yy_get_next_buffer (void) { - register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; - register char *source = (yytext_ptr); - register int number_to_move, i; + char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + char *source = (yytext_ptr); + int number_to_move, i; int ret_val; if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) @@ -1261,7 +1261,7 @@ static int yy_get_next_buffer (void) /* Try to read more data. */ /* First move last chars to start of buffer. */ - number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; + number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1); for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); @@ -1288,7 +1288,7 @@ static int yy_get_next_buffer (void) if ( b->yy_is_our_buffer ) { - yy_size_t new_size = b->yy_buf_size * 2; + int new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; @@ -1301,7 +1301,7 @@ static int yy_get_next_buffer (void) } else /* Can't grow it, we don't own it. */ - b->yy_ch_buf = 0; + b->yy_ch_buf = NULL; if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( @@ -1343,9 +1343,9 @@ 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) { + if (((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); + int 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()" ); @@ -1364,15 +1364,15 @@ static int yy_get_next_buffer (void) static yy_state_type yy_get_previous_state (void) { - register yy_state_type yy_current_state; - register char *yy_cp; + yy_state_type yy_current_state; + char *yy_cp; yy_current_state = (yy_start); yy_current_state += YY_AT_BOL(); for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) { - register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); + YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; @@ -1384,7 +1384,7 @@ static int yy_get_next_buffer (void) if ( yy_current_state >= 55 ) yy_c = yy_meta[(unsigned int) yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; } return yy_current_state; @@ -1397,10 +1397,10 @@ static int yy_get_next_buffer (void) */ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) { - register int yy_is_jam; - register char *yy_cp = (yy_c_buf_p); + int yy_is_jam; + char *yy_cp = (yy_c_buf_p); - register YY_CHAR yy_c = 1; + YY_CHAR yy_c = 1; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; @@ -1412,15 +1412,17 @@ static int yy_get_next_buffer (void) if ( yy_current_state >= 55 ) yy_c = yy_meta[(unsigned int) yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; yy_is_jam = (yy_current_state == 54); return yy_is_jam ? 0 : yy_current_state; } - static void yyunput (int c, register char * yy_bp ) +#ifndef YY_NO_UNPUT + + static void yyunput (int c, char * yy_bp ) { - register char *yy_cp; + char *yy_cp; yy_cp = (yy_c_buf_p); @@ -1430,10 +1432,10 @@ static int yy_get_next_buffer (void) if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) { /* need to shift things up to make room */ /* +2 for EOB chars. */ - register yy_size_t number_to_move = (yy_n_chars) + 2; - register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ + int number_to_move = (yy_n_chars) + 2; + char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; - register char *source = + char *source = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) @@ -1442,7 +1444,7 @@ static int yy_get_next_buffer (void) yy_cp += (int) (dest - source); yy_bp += (int) (dest - source); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size; + (yy_n_chars) = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size; if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) YY_FATAL_ERROR( "flex scanner push-back overflow" ); @@ -1455,6 +1457,8 @@ static int yy_get_next_buffer (void) (yy_c_buf_p) = yy_cp; } +#endif + #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (void) @@ -1479,7 +1483,7 @@ static int yy_get_next_buffer (void) else { /* need more input */ - yy_size_t offset = (yy_c_buf_p) - (yytext_ptr); + int offset = (yy_c_buf_p) - (yytext_ptr); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) @@ -1503,7 +1507,7 @@ static int yy_get_next_buffer (void) case EOB_ACT_END_OF_FILE: { if ( yywrap( ) ) - return EOF; + return 0; if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; @@ -1606,7 +1610,7 @@ static void yy_load_buffer_state (void) if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - b->yy_buf_size = size; + b->yy_buf_size = (yy_size_t)size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. @@ -1753,7 +1757,7 @@ void yypop_buffer_state (void) */ static void yyensure_buffer_stack (void) { - yy_size_t num_to_alloc; + int num_to_alloc; if (!(yy_buffer_stack)) { @@ -1761,15 +1765,15 @@ static void yyensure_buffer_stack (void) * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ - num_to_alloc = 1; + num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ (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; (yy_buffer_stack_top) = 0; return; @@ -1778,7 +1782,7 @@ static void yyensure_buffer_stack (void) if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ /* Increase the buffer to prepare for a possible push. */ - int grow_size = 8 /* arbitrary grow size */; + yy_size_t grow_size = 8 /* arbitrary grow size */; num_to_alloc = (yy_buffer_stack_max) + grow_size; (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc @@ -1798,7 +1802,7 @@ static void yyensure_buffer_stack (void) * @param base the character buffer * @param size the size in bytes of the character buffer * - * @return the newly allocated buffer state object. + * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) { @@ -1808,7 +1812,7 @@ YY_BUFFER_STATE yy_scan_buffer (char * base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ - return 0; + return NULL; b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); if ( ! b ) @@ -1817,7 +1821,7 @@ YY_BUFFER_STATE yy_scan_buffer (char * b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; b->yy_is_our_buffer = 0; - b->yy_input_file = 0; + b->yy_input_file = NULL; b->yy_n_chars = b->yy_buf_size; b->yy_is_interactive = 0; b->yy_at_bol = 1; @@ -1840,7 +1844,7 @@ YY_BUFFER_STATE yy_scan_buffer (char * YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) { - return yy_scan_bytes(yystr,strlen(yystr) ); + return yy_scan_bytes(yystr,(int) strlen(yystr) ); } /** Setup the input buffer state to scan the given bytes. The next call to yylex() will @@ -1850,15 +1854,15 @@ YY_BUFFER_STATE yy_scan_string (yyconst * * @return the newly allocated buffer state object. */ -YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len ) +YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) { YY_BUFFER_STATE b; char *buf; yy_size_t n; - yy_size_t i; + int i; /* Get memory for full buffer, including space for trailing EOB's. */ - n = _yybytes_len + 2; + n = (yy_size_t) (_yybytes_len + 2); buf = (char *) yyalloc(n ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); @@ -1884,9 +1888,9 @@ YY_BUFFER_STATE yy_scan_bytes (yyconst #define YY_EXIT_FAILURE 2 #endif -static void yy_fatal_error (yyconst char* msg ) +static void yynoreturn yy_fatal_error (yyconst char* msg ) { - (void) fprintf( stderr, "%s\n", msg ); + (void) fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } @@ -1914,7 +1918,7 @@ static void yy_fatal_error (yyconst char */ int yyget_lineno (void) { - + return yylineno; } @@ -1937,7 +1941,7 @@ FILE *yyget_out (void) /** Get the length of the current token. * */ -yy_size_t yyget_leng (void) +int yyget_leng (void) { return yyleng; } @@ -1952,29 +1956,29 @@ char *yyget_text (void) } /** Set the current line number. - * @param line_number + * @param _line_number line number * */ -void yyset_lineno (int line_number ) +void yyset_lineno (int _line_number ) { - yylineno = line_number; + yylineno = _line_number; } /** Set the input stream. This does not discard the current * input buffer. - * @param in_str A readable stream. + * @param _in_str A readable stream. * * @see yy_switch_to_buffer */ -void yyset_in (FILE * in_str ) +void yyset_in (FILE * _in_str ) { - yyin = in_str ; + yyin = _in_str ; } -void yyset_out (FILE * out_str ) +void yyset_out (FILE * _out_str ) { - yyout = out_str ; + yyout = _out_str ; } int yyget_debug (void) @@ -1982,9 +1986,9 @@ int yyget_debug (void) return yy_flex_debug; } -void yyset_debug (int bdebug ) +void yyset_debug (int _bdebug ) { - yy_flex_debug = bdebug ; + yy_flex_debug = _bdebug ; } static int yy_init_globals (void) @@ -1993,10 +1997,10 @@ static int yy_init_globals (void) * This function is called from yylex_destroy(), so don't allocate here. */ - (yy_buffer_stack) = 0; + (yy_buffer_stack) = NULL; (yy_buffer_stack_top) = 0; (yy_buffer_stack_max) = 0; - (yy_c_buf_p) = (char *) 0; + (yy_c_buf_p) = NULL; (yy_init) = 0; (yy_start) = 0; @@ -2005,8 +2009,8 @@ static int yy_init_globals (void) yyin = stdin; yyout = stdout; #else - yyin = (FILE *) 0; - yyout = (FILE *) 0; + yyin = NULL; + yyout = NULL; #endif /* For future reference: Set errno on error, since we are called by @@ -2044,7 +2048,8 @@ int yylex_destroy (void) #ifndef yytext_ptr static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) { - register int i; + + int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } @@ -2053,7 +2058,7 @@ static void yy_flex_strncpy (char* s1, y #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * s ) { - register int n; + int n; for ( n = 0; s[n]; ++n ) ; @@ -2063,11 +2068,12 @@ static int yy_flex_strlen (yyconst char void *yyalloc (yy_size_t size ) { - return (void *) malloc( size ); + return malloc(size); } void *yyrealloc (void * ptr, yy_size_t size ) { + /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter @@ -2075,17 +2081,17 @@ void *yyrealloc (void * ptr, yy_size_t * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ - return (void *) realloc( (char *) ptr, size ); + return realloc(ptr, size); } void yyfree (void * ptr ) { - free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ + free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ } #define YYTABLES_NAME "yytables" -#line 251 "configfile.l" +#line 257 "configfile.l" diff -Nurp inn-2.6.1/innfeed/config_y.c inn-2.6.2/innfeed/config_y.c --- inn-2.6.1/innfeed/config_y.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/innfeed/config_y.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.0.2. */ +/* A Bison parser, made by GNU Bison 3.0.4. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -44,7 +44,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.0.2" +#define YYBISON_VERSION "3.0.4" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -789,7 +789,7 @@ extern int yydebug; /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -typedef union YYSTYPE YYSTYPE; + union YYSTYPE { #line 657 "configfile.y" /* yacc.c:355 */ @@ -804,6 +804,8 @@ union YYSTYPE #line 806 "y.tab.c" /* yacc.c:355 */ }; + +typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 #endif @@ -817,7 +819,7 @@ int yyparse (void); /* Copy the second part of user declarations. */ -#line 821 "y.tab.c" /* yacc.c:358 */ +#line 823 "y.tab.c" /* yacc.c:358 */ #ifdef short # undef short @@ -1912,13 +1914,13 @@ yyreduce: addScope (NULL,"",newScope ("")) ; topScope = currScope ; } -#line 1916 "y.tab.c" /* yacc.c:1646 */ +#line 1918 "y.tab.c" /* yacc.c:1646 */ break; case 3: #line 694 "configfile.y" /* yacc.c:1646 */ { if (!doCallbacks()) YYABORT ; } -#line 1922 "y.tab.c" /* yacc.c:1646 */ +#line 1924 "y.tab.c" /* yacc.c:1646 */ break; case 7: @@ -1928,7 +1930,7 @@ yyreduce: sprintf (errbuff,SYNTAX_ERROR,lineCount) ; YYABORT ; } -#line 1932 "y.tab.c" /* yacc.c:1646 */ +#line 1934 "y.tab.c" /* yacc.c:1646 */ break; case 8: @@ -1938,7 +1940,7 @@ yyreduce: free ((yyvsp[-1].name)) ; if (errbuff != NULL) YYABORT ; } -#line 1942 "y.tab.c" /* yacc.c:1646 */ +#line 1944 "y.tab.c" /* yacc.c:1646 */ break; case 9: @@ -1946,7 +1948,7 @@ yyreduce: { currScope = currScope->parent ; } -#line 1950 "y.tab.c" /* yacc.c:1646 */ +#line 1952 "y.tab.c" /* yacc.c:1646 */ break; case 10: @@ -1956,7 +1958,7 @@ yyreduce: free ((yyvsp[-1].name)) ; if (errbuff != NULL) YYABORT ; } -#line 1960 "y.tab.c" /* yacc.c:1646 */ +#line 1962 "y.tab.c" /* yacc.c:1646 */ break; case 11: @@ -1964,7 +1966,7 @@ yyreduce: { currScope = currScope->parent ; } -#line 1968 "y.tab.c" /* yacc.c:1646 */ +#line 1970 "y.tab.c" /* yacc.c:1646 */ break; case 12: @@ -1977,7 +1979,7 @@ yyreduce: free ((yyvsp[-1].name)) ; YYABORT ; } -#line 1981 "y.tab.c" /* yacc.c:1646 */ +#line 1983 "y.tab.c" /* yacc.c:1646 */ break; case 13: @@ -1988,7 +1990,7 @@ yyreduce: } else key = (yyvsp[0].name) ; } -#line 1992 "y.tab.c" /* yacc.c:1646 */ +#line 1994 "y.tab.c" /* yacc.c:1646 */ break; case 15: @@ -1999,7 +2001,7 @@ yyreduce: free (key) ; free ((yyvsp[0].name)) ; } -#line 2003 "y.tab.c" /* yacc.c:1646 */ +#line 2005 "y.tab.c" /* yacc.c:1646 */ break; case 16: @@ -2009,7 +2011,7 @@ yyreduce: YYABORT; free (key) ; } -#line 2013 "y.tab.c" /* yacc.c:1646 */ +#line 2015 "y.tab.c" /* yacc.c:1646 */ break; case 17: @@ -2020,7 +2022,7 @@ yyreduce: free (key) ; free ((yyvsp[0].name)) ; } -#line 2024 "y.tab.c" /* yacc.c:1646 */ +#line 2026 "y.tab.c" /* yacc.c:1646 */ break; case 18: @@ -2031,7 +2033,7 @@ yyreduce: free (key) ; free ((yyvsp[0].name)) ; } -#line 2035 "y.tab.c" /* yacc.c:1646 */ +#line 2037 "y.tab.c" /* yacc.c:1646 */ break; case 19: @@ -2041,7 +2043,7 @@ yyreduce: YYABORT ; free (key) ; } -#line 2045 "y.tab.c" /* yacc.c:1646 */ +#line 2047 "y.tab.c" /* yacc.c:1646 */ break; case 20: @@ -2051,7 +2053,7 @@ yyreduce: YYABORT; free (key) ; } -#line 2055 "y.tab.c" /* yacc.c:1646 */ +#line 2057 "y.tab.c" /* yacc.c:1646 */ break; case 21: @@ -2061,11 +2063,11 @@ yyreduce: YYABORT ; free (key) ; } -#line 2065 "y.tab.c" /* yacc.c:1646 */ +#line 2067 "y.tab.c" /* yacc.c:1646 */ break; -#line 2069 "y.tab.c" /* yacc.c:1646 */ +#line 2071 "y.tab.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires diff -Nurp inn-2.6.1/innfeed/config_y.h inn-2.6.2/innfeed/config_y.h --- inn-2.6.1/innfeed/config_y.h 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/innfeed/config_y.h 2018-03-18 13:03:32.000000000 -0700 @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.0.2. */ +/* A Bison parser, made by GNU Bison 3.0.4. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -81,7 +81,7 @@ extern int yydebug; /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -typedef union YYSTYPE YYSTYPE; + union YYSTYPE { #line 657 "configfile.y" /* yacc.c:1909 */ @@ -96,6 +96,8 @@ union YYSTYPE #line 98 "y.tab.h" /* yacc.c:1909 */ }; + +typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 #endif diff -Nurp inn-2.6.1/innfeed/configfile.l inn-2.6.2/innfeed/configfile.l --- inn-2.6.1/innfeed/configfile.l 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/innfeed/configfile.l 2018-03-18 13:03:32.000000000 -0700 @@ -1,5 +1,5 @@ %{ -/* $Id: configfile.l 9526 2013-08-07 18:37:37Z iulius $ +/* $Id: configfile.l 10181 2017-10-16 04:13:18Z eagle $ ** ** A flex input file for the innfeed config file. ** @@ -23,6 +23,11 @@ #error "You must use FLEX to process the lex input file." #endif +/* Some versions of flex (such as 2.6.1-1.3 in Debian stretch) declare a + variable as int that should be size_t. We can't really do much about + that, and it's fixed in current flex, so just suppress the warning. */ +#pragma GCC diagnostic ignored "-Wsign-compare" + #if defined (FLEX_DEBUG) #define YY_USER_INIT yy_flex_debug = (getenv ("YYDEBUG") == NULL ? 0 : 1) #endif diff -Nurp inn-2.6.1/innfeed/connection.c inn-2.6.2/innfeed/connection.c --- inn-2.6.1/innfeed/connection.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/innfeed/connection.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: connection.c 10009 2016-05-05 12:39:19Z iulius $ +/* $Id: connection.c 10229 2018-01-28 21:21:21Z iulius $ ** ** The implementation of the innfeed Connection class. ** @@ -490,6 +490,7 @@ Connection newConnection (Host host, bool cxnConnect (Connection cxn) { struct sockaddr *cxnAddr; + socklen_t len; int fd, rval; const char *src; const char *peerName = hostPeerName (cxn->myHost) ; @@ -524,9 +525,20 @@ bool cxnConnect (Connection cxn) } if (cxnAddr->sa_family == AF_INET) - src = hostBindAddr(cxn->myHost); + { + src = hostBindAddr(cxn->myHost) ; + len = sizeof(struct sockaddr_in) ; + } else - src = hostBindAddr6(cxn->myHost); + { + src = hostBindAddr6(cxn->myHost) ; +#if HAVE_INET6 + len = sizeof(struct sockaddr_in6) ; +#else + /* This should never happen, but the compiler doesn't know that. */ + len = sizeof(struct sockaddr) ; +#endif + } if (src && strcmp(src, "none") == 0) src = NULL; @@ -553,7 +565,7 @@ bool cxnConnect (Connection cxn) return false ; } - rval = connect (fd, cxnAddr, SA_LEN(cxnAddr)) ; + rval = connect (fd, cxnAddr, len) ; if (rval < 0 && errno != EINPROGRESS) { syswarn ("%s:%d connect", peerName, cxn->ident) ; diff -Nurp inn-2.6.1/innfeed/host.c inn-2.6.2/innfeed/host.c --- inn-2.6.1/innfeed/host.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/innfeed/host.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: host.c 10009 2016-05-05 12:39:19Z iulius $ +/* $Id: host.c 10153 2017-06-05 12:28:01Z iulius $ ** ** The implementation of the innfeed Host class. ** @@ -1634,7 +1634,7 @@ void hostChkCxns(TimeoutId tid UNUSED, v * and concentrate on queue sizes */ ratio = percentTaken * percentTaken; - /* nobreak; */ + /* fallthrough */ case METHOD_QUEUE: /* backlogFilter is an IIR filtered version of the backlogRatio. */ @@ -3473,7 +3473,7 @@ static void hostPrintStatus (Host host, double cnt = (host->blCount) ? (host->blCount) : 1.0; double size; char *tsize; - char buf[]="1234.1 MB"; + char buf[]="1.23e+5 TB"; /* usual length is shorter, like "12.3 MB" */ ASSERT (host != NULL) ; ASSERT (fp != NULL) ; @@ -3580,12 +3580,12 @@ static void hostPrintStatus (Host host, (double) host->gCxnQueue / (host->gArtsOffered ? host->gArtsOffered :1) , 100.0 * host->blFull / cnt) ; size=convsize(host->gArtsSizeAccepted, &tsize); - snprintf(buf,sizeof(buf),"%.3g %s", size, tsize); + snprintf(buf, sizeof(buf), "%.3g %s", size, tsize); fprintf (fp, "accpt size: %-8s drop-deferred: %-5s defer length: %-3.1f\n", buf, host->params->dropDeferred ? "true " : "false", (double)host->dlAccum / cnt) ; size=convsize(host->gArtsSizeRejected, &tsize); - snprintf(buf,sizeof(buf),"%.3g %s", size, tsize); + snprintf(buf, sizeof(buf), "%.3g %s", size, tsize); fprintf (fp, "rejct size: %-8s min-queue-cxn: %s\n", buf, host->params->minQueueCxn ? "true " : "false"); diff -Nurp inn-2.6.1/innfeed/imap_connection.c inn-2.6.2/innfeed/imap_connection.c --- inn-2.6.1/innfeed/imap_connection.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/innfeed/imap_connection.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: imap_connection.c 10063 2016-09-04 12:53:12Z iulius $ +/* $Id: imap_connection.c 10184 2017-11-04 15:34:52Z iulius $ ** ** Feed articles to an IMAP server via LMTP and IMAP. ** @@ -1249,7 +1249,7 @@ static int getsimple(void *context UNUSE *result = authid; if (len) *len = authid ? strlen(authid) : 0; - break; + break; case SASL_CB_LANGUAGE: *result = NULL; if (len) diff -Nurp inn-2.6.1/innfeed/innlistener.c inn-2.6.2/innfeed/innlistener.c --- inn-2.6.1/innfeed/innlistener.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/innfeed/innlistener.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: innlistener.c 10009 2016-05-05 12:39:19Z iulius $ +/* $Id: innlistener.c 10152 2017-06-05 12:27:29Z iulius $ ** ** The implementation of the innfeed InnListener class. ** @@ -669,7 +669,8 @@ static void giveArticleToPeer (InnListen static void writeCheckPoint (int offsetAdjust) { - char offsetString[16], *writePointer ; + char offsetString[21]; /* size of long long may be 20 */ + char *writePointer; off_t offset ; int writeBytes, writeReturn, mainFd ; diff -Nurp inn-2.6.1/innfeed/main.c inn-2.6.2/innfeed/main.c --- inn-2.6.1/innfeed/main.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/innfeed/main.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: main.c 10009 2016-05-05 12:39:19Z iulius $ +/* $Id: main.c 10153 2017-06-05 12:28:01Z iulius $ ** ** Main routines for the innfeed program. ** @@ -93,7 +93,7 @@ static void sigquit (int sig) ; static void sighup (int sig) ; static void sigterm (int sig) ; static void sigusr (int sig) ; -static void usage (int) ; +static void usage (int) __attribute__ ((__noreturn__)) ; static void gprintinfo (void) ; static void openLogFile (void) ; static void writePidFile (void) ; diff -Nurp inn-2.6.1/lib/Makefile inn-2.6.2/lib/Makefile --- inn-2.6.1/lib/Makefile 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/lib/Makefile 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -## $Id: Makefile 10114 2016-11-06 14:18:27Z iulius $ +## $Id: Makefile 10266 2018-03-10 14:59:27Z iulius $ include ../Makefile.global @@ -8,7 +8,7 @@ include ../Makefile.global # recover from make update. We can't use .OLD extensions for the shared # library since ldconfig will think .OLD sorts after the regular library and # will point the binaries at the old library. -LTVERSION = 4:0:0 +LTVERSION = 5:0:0 top = .. CFLAGS = $(GCFLAGS) @@ -29,7 +29,7 @@ SOURCES = argparse.c buffer.c clea # Sources for additional functions only built to replace missing system ones. EXTRA_SOURCES = alloca.c asprintf.c fseeko.c ftello.c getaddrinfo.c \ getnameinfo.c getpagesize.c inet_aton.c inet_ntoa.c \ - inet_ntop.c memcmp.c mkstemp.c pread.c pwrite.c \ + inet_ntop.c mkstemp.c pread.c pwrite.c \ reallocarray.c setenv.c \ seteuid.c setproctitle.c snprintf.c strcasecmp.c strlcat.c \ strlcpy.c strspn.c strtok.c symlink.c @@ -225,9 +225,10 @@ getfqdn.o: getfqdn.c ../include/config.h ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ ../include/inn/defines.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/macros.h \ - ../include/portable/stdbool.h ../include/inn/libinn.h \ - ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - ../include/inn/paths.h + ../include/portable/stdbool.h ../include/portable/socket.h \ + ../include/portable/macros.h ../include/portable/getaddrinfo.h \ + ../include/portable/getnameinfo.h ../include/inn/libinn.h \ + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h getmodaddr.o: getmodaddr.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -591,10 +592,6 @@ inet_ntop.o: inet_ntop.c ../include/conf ../include/portable/stdbool.h ../include/portable/socket.h \ ../include/portable/macros.h ../include/portable/getaddrinfo.h \ ../include/portable/getnameinfo.h -memcmp.o: memcmp.c ../include/config.h ../include/inn/defines.h \ - ../include/inn/system.h ../include/inn/macros.h \ - ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ - ../include/inn/defines.h ../include/inn/options.h mkstemp.o: mkstemp.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -681,4 +678,5 @@ perl.o: perl.c ../include/config.h ../in ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/libinn.h \ ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - ../include/ppport.h ../include/innperl.h + ../include/ppport.h \ + ../include/innperl.h diff -Nurp inn-2.6.1/lib/asprintf.c inn-2.6.2/lib/asprintf.c --- inn-2.6.1/lib/asprintf.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/lib/asprintf.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: asprintf.c 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: asprintf.c 10246 2018-02-16 21:12:42Z iulius $ * * Replacement for a missing asprintf and vasprintf. * @@ -9,14 +9,16 @@ * which can be found at . * * Written by Russ Allbery + * Copyright 2006, 2015 Russ Allbery + * Copyright 2008-2009, 2011, 2013 + * The Board of Trustees of the Leland Stanford Junior University * - * The authors hereby relinquish any claim to any copyright that they may have - * in this work, whether granted under contract or by operation of law or - * international treaty, and hereby commit to the public, at large, that they - * shall not, at any time in the future, seek to enforce any copyright in this - * work against any person or entity, or prevent any person or entity from - * copying, publishing, distributing or creating derivative works of this - * work. + * Copying and distribution of this file, with or without modification, are + * permitted in any medium without royalty provided the copyright notice and + * this notice are preserved. This file is offered as-is, without any + * warranty. + * + * SPDX-License-Identifier: FSFAP */ #include "config.h" diff -Nurp inn-2.6.1/lib/buffer.c inn-2.6.2/lib/buffer.c --- inn-2.6.1/lib/buffer.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/lib/buffer.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: buffer.c 10105 2016-11-04 22:42:26Z iulius $ +/* $Id: buffer.c 10246 2018-02-16 21:12:42Z iulius $ * * Counted, reusable memory buffer. * @@ -17,13 +17,11 @@ * which can be found at . * * Written by Russ Allbery - * Copyright 2015, 2016 Russ Allbery - * Copyright 2011, 2012, 2014 + * Copyright 2015-2016 Russ Allbery + * Copyright 2011-2012, 2014 * The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2004, 2005, 2006 - * by Internet Systems Consortium, Inc. ("ISC") - * Copyright (c) 1991, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, - * 2002, 2003 by The Internet Software Consortium and Rich Salz + * Copyright 2004-2006 Internet Systems Consortium, Inc. ("ISC") + * Copyright 1991, 1994-2003 The Internet Software Consortium and Rich Salz * * This code is derived from software contributed to the Internet Software * Consortium by Rich Salz. @@ -39,6 +37,8 @@ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. + * + * SPDX-License-Identifier: ISC */ #include "config.h" diff -Nurp inn-2.6.1/lib/fdflag.c inn-2.6.2/lib/fdflag.c --- inn-2.6.1/lib/fdflag.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/lib/fdflag.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: fdflag.c 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: fdflag.c 10246 2018-02-16 21:12:42Z iulius $ * * Set or clear file descriptor flags. * @@ -8,12 +8,11 @@ * The canonical version of this file is maintained in the rra-c-util package, * which can be found at . * + * Written by Russ Allbery * Copyright 2008, 2011, 2013 * The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2004, 2005, 2006 - * by Internet Systems Consortium, Inc. ("ISC") - * Copyright (c) 1991, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, - * 2002, 2003 by The Internet Software Consortium and Rich Salz + * Copyright 2004-2006 Internet Systems Consortium, Inc. ("ISC") + * Copyright 1991, 1994-2003 The Internet Software Consortium and Rich Salz * * This code is derived from software contributed to the Internet Software * Consortium by Rich Salz. @@ -29,6 +28,8 @@ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. + * + * SPDX-License-Identifier: ISC */ #include "config.h" diff -Nurp inn-2.6.1/lib/getaddrinfo.c inn-2.6.2/lib/getaddrinfo.c --- inn-2.6.1/lib/getaddrinfo.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/lib/getaddrinfo.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: getaddrinfo.c 10130 2016-11-27 13:56:40Z iulius $ +/* $Id: getaddrinfo.c 10246 2018-02-16 21:12:42Z iulius $ * * Replacement for a missing getaddrinfo. * @@ -21,14 +21,17 @@ * which can be found at . * * Written by Russ Allbery + * Copyright 2003-2005, 2016-2017 Russ Allbery + * Copyright 2015 Julien ÉLIE + * Copyright 2008, 2011, 2013-2014 + * The Board of Trustees of the Leland Stanford Junior University * - * The authors hereby relinquish any claim to any copyright that they may have - * in this work, whether granted under contract or by operation of law or - * international treaty, and hereby commit to the public, at large, that they - * shall not, at any time in the future, seek to enforce any copyright in this - * work against any person or entity, or prevent any person or entity from - * copying, publishing, distributing or creating derivative works of this - * work. + * Copying and distribution of this file, with or without modification, are + * permitted in any medium without royalty provided the copyright notice and + * this notice are preserved. This file is offered as-is, without any + * warranty. + * + * SPDX-License-Identifier: FSFAP */ #include "config.h" @@ -253,7 +256,7 @@ gai_service(const char *servname, int fl if (convert_service(servname, &value)) { if (value > (1L << 16) - 1) return EAI_SERVICE; - *port = value; + *port = (unsigned short) value; } else { if (flags & AI_NUMERICSERV) return EAI_NONAME; @@ -276,7 +279,9 @@ gai_service(const char *servname, int fl *type = SOCK_STREAM; else return EAI_SERVICE; - *port = htons(servent->s_port); + if (servent->s_port > (1L << 16) - 1) + return EAI_SERVICE; + *port = htons((unsigned short) servent->s_port); } return 0; } diff -Nurp inn-2.6.1/lib/getfqdn.c inn-2.6.2/lib/getfqdn.c --- inn-2.6.1/lib/getfqdn.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/lib/getfqdn.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: getfqdn.c 10012 2016-05-05 12:41:10Z iulius $ +/* $Id: getfqdn.c 10235 2018-02-03 20:52:30Z eagle $ ** */ @@ -11,7 +11,8 @@ /* -** Get the fully-qualified domain name for this host. +** Get the fully qualified domain name for this host, as reported +** by the system. */ char *GetFQDN(char *domain) { @@ -34,9 +35,13 @@ char *GetFQDN(char *domain) if (strchr(buff, '.') != NULL) return buff; - /* See if DNS (or /etc/hosts) gives us a full domain name. */ + /* + ** See if DNS (or /etc/hosts) gives us a full domain name. If the host + ** doesn't exist in DNS at all but we were given a domain name, use the + ** fallback of appending that domain to the hostname. + */ if ((hp = gethostbyname(buff)) == NULL) - return NULL; + goto fallback; #if 0 /* This code is a "feature" that allows multiple domains (NIS or * DNS, I'm not sure) to work with a single INN server. However, @@ -79,6 +84,7 @@ char *GetFQDN(char *domain) } /* Give up: Get the domain config param and append it. */ +fallback: if ((p = domain) == NULL || *p == '\0') return NULL; if (strlen(buff) + 1 + strlen(p) > sizeof buff - 1) diff -Nurp inn-2.6.1/lib/getnameinfo.c inn-2.6.2/lib/getnameinfo.c --- inn-2.6.1/lib/getnameinfo.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/lib/getnameinfo.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: getnameinfo.c 10105 2016-11-04 22:42:26Z iulius $ +/* $Id: getnameinfo.c 10246 2018-02-16 21:12:42Z iulius $ * * Replacement for a missing getnameinfo. * @@ -18,14 +18,16 @@ * which can be found at . * * Written by Russ Allbery + * Copyright 2005 Russ Allbery + * Copyright 2008, 2011, 2013-2014 + * The Board of Trustees of the Leland Stanford Junior University + * + * Copying and distribution of this file, with or without modification, are + * permitted in any medium without royalty provided the copyright notice and + * this notice are preserved. This file is offered as-is, without any + * warranty. * - * The authors hereby relinquish any claim to any copyright that they may have - * in this work, whether granted under contract or by operation of law or - * international treaty, and hereby commit to the public, at large, that they - * shall not, at any time in the future, seek to enforce any copyright in this - * work against any person or entity, or prevent any person or entity from - * copying, publishing, distributing or creating derivative works of this - * work. + * SPDX-License-Identifier: FSFAP */ #include "config.h" diff -Nurp inn-2.6.1/lib/hashtab.c inn-2.6.2/lib/hashtab.c --- inn-2.6.1/lib/hashtab.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/lib/hashtab.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: hashtab.c 9907 2015-06-25 19:44:59Z iulius $ +/* $Id: hashtab.c 10153 2017-06-05 12:28:01Z iulius $ ** ** Generic hash table implementation. ** @@ -431,18 +431,28 @@ hash_lookup2(const char *key, size_t len c += length; switch (len) { case 11: c += S3(key[10]); + /* fallthrough */ case 10: c += S2(key[9]); + /* fallthrough */ case 9: c += S1(key[8]); - /* The first byte of c is reserved for the length. */ + /* The first byte of c is reserved for the length. */ + /* fallthrough */ case 8: b += S3(key[7]); + /* fallthrough */ case 7: b += S2(key[6]); + /* fallthrough */ case 6: b += S1(key[5]); + /* fallthrough */ case 5: b += S0(key[4]); + /* fallthrough */ case 4: a += S3(key[3]); + /* fallthrough */ case 3: a += S2(key[2]); + /* fallthrough */ case 2: a += S1(key[1]); + /* fallthrough */ case 1: a += S0(key[0]); - /* case 0: nothing left to add. */ + /* case 0: nothing left to add. */ } MIX(a, b, c); return c; diff -Nurp inn-2.6.1/lib/inet_aton.c inn-2.6.2/lib/inet_aton.c --- inn-2.6.1/lib/inet_aton.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/lib/inet_aton.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: inet_aton.c 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: inet_aton.c 10246 2018-02-16 21:12:42Z iulius $ * * Replacement for a missing inet_aton. * @@ -10,14 +10,16 @@ * which can be found at . * * Written by Russ Allbery + * Copyright 2000-2001, 2017 Russ Allbery + * Copyright 2008, 2011, 2014 + * The Board of Trustees of the Leland Stanford Junior University * - * The authors hereby relinquish any claim to any copyright that they may have - * in this work, whether granted under contract or by operation of law or - * international treaty, and hereby commit to the public, at large, that they - * shall not, at any time in the future, seek to enforce any copyright in this - * work against any person or entity, or prevent any person or entity from - * copying, publishing, distributing or creating derivative works of this - * work. + * Copying and distribution of this file, with or without modification, are + * permitted in any medium without royalty provided the copyright notice and + * this notice are preserved. This file is offered as-is, without any + * warranty. + * + * SPDX-License-Identifier: FSFAP */ #include "config.h" @@ -37,7 +39,8 @@ int test_inet_aton(const char *, struct int inet_aton(const char *s, struct in_addr *addr) { - unsigned long octet[4], address; + unsigned octet[4]; + uint32_t address; const char *p; int base, i; int part = 0; diff -Nurp inn-2.6.1/lib/inet_ntoa.c inn-2.6.2/lib/inet_ntoa.c --- inn-2.6.1/lib/inet_ntoa.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/lib/inet_ntoa.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: inet_ntoa.c 10104 2016-11-04 22:41:36Z iulius $ +/* $Id: inet_ntoa.c 10246 2018-02-16 21:12:42Z iulius $ * * Replacement for a missing or broken inet_ntoa. * @@ -11,14 +11,16 @@ * which can be found at . * * Written by Russ Allbery + * Copyright 2000-2001, 2017 Russ Allbery + * Copyright 2008, 2011, 2014 + * The Board of Trustees of the Leland Stanford Junior University * - * The authors hereby relinquish any claim to any copyright that they may have - * in this work, whether granted under contract or by operation of law or - * international treaty, and hereby commit to the public, at large, that they - * shall not, at any time in the future, seek to enforce any copyright in this - * work against any person or entity, or prevent any person or entity from - * copying, publishing, distributing or creating derivative works of this - * work. + * Copying and distribution of this file, with or without modification, are + * permitted in any medium without royalty provided the copyright notice and + * this notice are preserved. This file is offered as-is, without any + * warranty. + * + * SPDX-License-Identifier: FSFAP */ #include "config.h" diff -Nurp inn-2.6.1/lib/inet_ntop.c inn-2.6.2/lib/inet_ntop.c --- inn-2.6.1/lib/inet_ntop.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/lib/inet_ntop.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: inet_ntop.c 10105 2016-11-04 22:42:26Z iulius $ +/* $Id: inet_ntop.c 10246 2018-02-16 21:12:42Z iulius $ * * Replacement for a missing inet_ntop. * @@ -12,14 +12,16 @@ * which can be found at . * * Written by Russ Allbery + * Copyright 2005 Russ Allbery + * Copyright 2008, 2011, 2013-2014 + * The Board of Trustees of the Leland Stanford Junior University * - * The authors hereby relinquish any claim to any copyright that they may have - * in this work, whether granted under contract or by operation of law or - * international treaty, and hereby commit to the public, at large, that they - * shall not, at any time in the future, seek to enforce any copyright in this - * work against any person or entity, or prevent any person or entity from - * copying, publishing, distributing or creating derivative works of this - * work. + * Copying and distribution of this file, with or without modification, are + * permitted in any medium without royalty provided the copyright notice and + * this notice are preserved. This file is offered as-is, without any + * warranty. + * + * SPDX-License-Identifier: FSFAP */ #include "config.h" diff -Nurp inn-2.6.1/lib/innconf.c inn-2.6.2/lib/innconf.c --- inn-2.6.1/lib/innconf.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/lib/innconf.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: innconf.c 10064 2016-09-04 12:55:40Z iulius $ +/* $Id: innconf.c 10149 2017-06-05 12:24:58Z iulius $ ** ** Manage the global innconf struct. ** @@ -126,6 +126,7 @@ const struct config config_table[] = { { K(server), STRING (NULL) }, { K(sourceaddress), STRING (NULL) }, { K(sourceaddress6), STRING (NULL) }, + { K(syntaxchecks), LIST (NULL) }, { K(timer), UNUMBER (600) }, { K(runasuser), STRING (RUNASUSER) }, diff -Nurp inn-2.6.1/lib/memcmp.c inn-2.6.2/lib/memcmp.c --- inn-2.6.1/lib/memcmp.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/lib/memcmp.c 1969-12-31 16:00:00.000000000 -0800 @@ -1,43 +0,0 @@ -/* $Id: memcmp.c 9767 2014-12-07 21:13:43Z iulius $ -** -** Replacement for a missing or broken memcmp. -** -** Written by Russ Allbery -** This work is hereby placed in the public domain by its author. -** -** Provides the same functionality as the standard library routine memcmp -** for those platforms that don't have it or where it doesn't work right -** (such as on SunOS where it can't deal with eight-bit characters). -*/ - -#include "config.h" -#include - -/* If we're running the test suite, rename memcmp to avoid conflicts with - the system version. */ -#if TESTING -# undef memcmp -# define memcmp test_memcmp -int test_memcmp(const void *, const void *, size_t); -#endif - -int -memcmp(const void *s1, const void *s2, size_t n) -{ - size_t i; - const unsigned char *p1, *p2; - - /* It's technically illegal to call memcmp with NULL pointers, but we - may as well check anyway. */ - if (!s1) - return !s2 ? 0 : -1; - if (!s2) - return 1; - - p1 = (const unsigned char *) s1; - p2 = (const unsigned char *) s2; - for (i = 0; i < n; i++, p1++, p2++) - if (*p1 != *p2) - return (int) *p1 - (int) *p2; - return 0; -} diff -Nurp inn-2.6.1/lib/messageid.c inn-2.6.2/lib/messageid.c --- inn-2.6.1/lib/messageid.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/lib/messageid.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: messageid.c 8716 2009-11-07 19:46:39Z iulius $ +/* $Id: messageid.c 10149 2017-06-05 12:24:58Z iulius $ ** ** Routines for message-IDs: generation and checks. */ @@ -52,6 +52,8 @@ GenerateMessageID(char *domain) /* ** Initialize the character class tables. +** See Section 3.2.3 of RFC 5322 (atext) and Section 3.1.3 of RFC 5536 +** (mdtext). */ void InitializeMessageIDcclass(void) @@ -62,12 +64,12 @@ InitializeMessageIDcclass(void) /* Set up the character class tables. These are written a * little strangely to work around a GCC2.0 bug. */ memset(midcclass, 0, sizeof(midcclass)); - + p = (const unsigned char*) "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; while ((i = *p++) != 0) { midcclass[i] = CC_MSGID_ATOM | CC_MSGID_NORM; } - + p = (const unsigned char*) "!#$%&'*+-/=?^_`{|}~"; while ((i = *p++) != 0) { midcclass[i] = CC_MSGID_ATOM | CC_MSGID_NORM; @@ -98,11 +100,18 @@ InitializeMessageIDcclass(void) ** in <#*tyo2'~n@twinsun.com>, with additional e-mail discussion. ** Thanks, Paul, for the original implementation based upon RFC 1036. ** Updated to RFC 5536 by Julien Elie. +** +** When stripspaces is true, whitespace at the beginning and at the end +** of MessageID are discarded. +** +** When laxsyntax is true, '@' can occur twice in MessageID, and '..' is +** also accepted in the left part of MessageID. */ bool -IsValidMessageID(const char *MessageID, bool stripspaces) +IsValidMessageID(const char *MessageID, bool stripspaces, bool laxsyntax) { int c; + bool atfound = false; const unsigned char *p; /* Check the length of the message-ID. */ @@ -125,10 +134,27 @@ IsValidMessageID(const char *MessageID, } else { return false; } - if (*p != '.') - break; + if (*p != '.') { + if (laxsyntax && *p == '@') { + /* The domain part begins at the second '@', if it exists. */ + if (atfound || (p[1] == '[') + || (strchr((char *) p+1, '@') == NULL)) { + break; + } + atfound = true; + continue; + } else { + break; + } + } + /* Dot found. */ + if (laxsyntax) { + if (*p != '\0' && p[1] == '.') { + p++; + } + } } - + /* Scan domain part: "@ dot-atom-text|no-fold-literal > \0" */ if (*p++ != '@') return false; diff -Nurp inn-2.6.1/lib/messages.c inn-2.6.2/lib/messages.c --- inn-2.6.1/lib/messages.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/lib/messages.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: messages.c 10105 2016-11-04 22:42:26Z iulius $ +/* $Id: messages.c 10246 2018-02-16 21:12:42Z iulius $ * * Message and error reporting (possibly fatal). * @@ -55,13 +55,11 @@ * which can be found at . * * Written by Russ Allbery - * Copyright 2015, 2016 Russ Allbery - * Copyright 2008, 2009, 2010, 2013, 2014 + * Copyright 2015-2016 Russ Allbery + * Copyright 2008-2010, 2013-2014 * The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2004, 2005, 2006 - * by Internet Systems Consortium, Inc. ("ISC") - * Copyright (c) 1991, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, - * 2002, 2003 by The Internet Software Consortium and Rich Salz + * Copyright 2004-2006 Internet Systems Consortium, Inc. ("ISC") + * Copyright 1991, 1994-2003 The Internet Software Consortium and Rich Salz * * This code is derived from software contributed to the Internet Software * Consortium by Rich Salz. @@ -77,6 +75,8 @@ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. + * + * SPDX-License-Identifier: ISC */ #include "config.h" diff -Nurp inn-2.6.1/lib/mkstemp.c inn-2.6.2/lib/mkstemp.c --- inn-2.6.1/lib/mkstemp.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/lib/mkstemp.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: mkstemp.c 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: mkstemp.c 10246 2018-02-16 21:12:42Z iulius $ * * Replacement for a missing mkstemp. * @@ -9,14 +9,15 @@ * which can be found at . * * Written by Russ Allbery + * Copyright 2009, 2011, 2014 + * The Board of Trustees of the Leland Stanford Junior University * - * The authors hereby relinquish any claim to any copyright that they may have - * in this work, whether granted under contract or by operation of law or - * international treaty, and hereby commit to the public, at large, that they - * shall not, at any time in the future, seek to enforce any copyright in this - * work against any person or entity, or prevent any person or entity from - * copying, publishing, distributing or creating derivative works of this - * work. + * Copying and distribution of this file, with or without modification, are + * permitted in any medium without royalty provided the copyright notice and + * this notice are preserved. This file is offered as-is, without any + * warranty. + * + * SPDX-License-Identifier: FSFAP */ #include "config.h" diff -Nurp inn-2.6.1/lib/network.c inn-2.6.2/lib/network.c --- inn-2.6.1/lib/network.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/lib/network.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: network.c 10105 2016-11-04 22:42:26Z iulius $ +/* $Id: network.c 10246 2018-02-16 21:12:42Z iulius $ * * Utility functions for network connections. * @@ -21,13 +21,11 @@ * which can be found at . * * Written by Russ Allbery - * Copyright 2014, 2015, 2016 Russ Allbery - * Copyright 2009, 2011, 2012, 2013, 2014 + * Copyright 2014-2017 Russ Allbery + * Copyright 2009, 2011-2014 * The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2004, 2005, 2006, 2007, 2008 - * by Internet Systems Consortium, Inc. ("ISC") - * Copyright (c) 1991, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, - * 2002, 2003 by The Internet Software Consortium and Rich Salz + * Copyright 2004-2008 Internet Systems Consortium, Inc. ("ISC") + * Copyright 1991, 1994-2003 The Internet Software Consortium and Rich Salz * * This code is derived from software contributed to the Internet Software * Consortium by Rich Salz. @@ -43,6 +41,8 @@ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. + * + * SPDX-License-Identifier: ISC */ #include "config.h" @@ -824,7 +824,7 @@ fail: * it should always be as large as the latter. Returns success or failure. */ bool -network_sockaddr_sprint(char *dst, size_t size, const struct sockaddr *addr) +network_sockaddr_sprint(char *dst, socklen_t size, const struct sockaddr *addr) { const char *result; @@ -944,7 +944,7 @@ network_addr_match(const char *a, const unsigned long cidr; char *end; unsigned int i; - unsigned long bits, addr_mask; + uint32_t bits, addr_mask; #ifdef HAVE_INET6 struct in6_addr a6, b6; #endif @@ -971,7 +971,7 @@ network_addr_match(const char *a, const if (cidr > 32 || *end != '\0') return false; for (bits = 0, i = 0; i < cidr; i++) - bits |= (1UL << (31 - i)); + bits |= (1U << (31 - i)); addr_mask = htonl(bits); } else if (inet_aton(mask, &tmp)) addr_mask = tmp.s_addr; @@ -1000,7 +1000,7 @@ network_addr_match(const char *a, const return false; } else { for (addr_mask = 0, bits = 0; bits < cidr % 8; bits++) - addr_mask |= (1UL << (7 - bits)); + addr_mask |= (1U << (7 - bits)); if ((a6.s6_addr[i] & addr_mask) != (b6.s6_addr[i] & addr_mask)) return false; } diff -Nurp inn-2.6.1/lib/perl.c inn-2.6.2/lib/perl.c --- inn-2.6.1/lib/perl.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/lib/perl.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: perl.c 9930 2015-08-10 11:51:03Z iulius $ +/* $Id: perl.c 10229 2018-01-28 21:21:21Z iulius $ ** ** Embedded Perl support for INN. ** @@ -23,7 +23,9 @@ #include "inn/libinn.h" #include +#pragma GCC diagnostic ignored "-Wredundant-decls" #include +#pragma GCC diagnostic warning "-Wredundant-decls" #include #include "ppport.h" diff -Nurp inn-2.6.1/lib/reallocarray.c inn-2.6.2/lib/reallocarray.c --- inn-2.6.1/lib/reallocarray.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/lib/reallocarray.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: reallocarray.c 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: reallocarray.c 10246 2018-02-16 21:12:42Z iulius $ * * Replacement for a missing reallocarray. * @@ -11,14 +11,16 @@ * which can be found at . * * Written by Russ Allbery + * Copyright 2017 Russ Allbery + * Copyright 2014 + * The Board of Trustees of the Leland Stanford Junior University * - * The authors hereby relinquish any claim to any copyright that they may have - * in this work, whether granted under contract or by operation of law or - * international treaty, and hereby commit to the public, at large, that they - * shall not, at any time in the future, seek to enforce any copyright in this - * work against any person or entity, or prevent any person or entity from - * copying, publishing, distributing or creating derivative works of this - * work. + * Copying and distribution of this file, with or without modification, are + * permitted in any medium without royalty provided the copyright notice and + * this notice are preserved. This file is offered as-is, without any + * warranty. + * + * SPDX-License-Identifier: FSFAP */ #include "config.h" @@ -53,5 +55,11 @@ reallocarray(void *ptr, size_t nmemb, si errno = ENOMEM; return NULL; } + + /* Avoid a zero-size allocation. */ + if (nmemb == 0 || size == 0) { + nmemb = 1; + size = 1; + } return realloc(ptr, nmemb * size); } diff -Nurp inn-2.6.1/lib/setenv.c inn-2.6.2/lib/setenv.c --- inn-2.6.1/lib/setenv.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/lib/setenv.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: setenv.c 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: setenv.c 10246 2018-02-16 21:12:42Z iulius $ * * Replacement for a missing setenv. * @@ -9,14 +9,16 @@ * which can be found at . * * Written by Russ Allbery + * Copyright 2000, 2014 Russ Allbery + * Copyright 2008, 2011-2012, 2014 + * The Board of Trustees of the Leland Stanford Junior University * - * The authors hereby relinquish any claim to any copyright that they may have - * in this work, whether granted under contract or by operation of law or - * international treaty, and hereby commit to the public, at large, that they - * shall not, at any time in the future, seek to enforce any copyright in this - * work against any person or entity, or prevent any person or entity from - * copying, publishing, distributing or creating derivative works of this - * work. + * Copying and distribution of this file, with or without modification, are + * permitted in any medium without royalty provided the copyright notice and + * this notice are preserved. This file is offered as-is, without any + * warranty. + * + * SPDX-License-Identifier: FSFAP */ #include "config.h" diff -Nurp inn-2.6.1/lib/seteuid.c inn-2.6.2/lib/seteuid.c --- inn-2.6.1/lib/seteuid.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/lib/seteuid.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: seteuid.c 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: seteuid.c 10246 2018-02-16 21:12:42Z iulius $ * * Replacement for a missing seteuid. * @@ -17,14 +17,16 @@ * which can be found at . * * Written by Russ Allbery + * Copyright 2000 Russ Allbery + * Copyright 2008-2009, 2011 + * The Board of Trustees of the Leland Stanford Junior University + * + * Copying and distribution of this file, with or without modification, are + * permitted in any medium without royalty provided the copyright notice and + * this notice are preserved. This file is offered as-is, without any + * warranty. * - * The authors hereby relinquish any claim to any copyright that they may have - * in this work, whether granted under contract or by operation of law or - * international treaty, and hereby commit to the public, at large, that they - * shall not, at any time in the future, seek to enforce any copyright in this - * work against any person or entity, or prevent any person or entity from - * copying, publishing, distributing or creating derivative works of this - * work. + * SPDX-License-Identifier: FSFAP */ #include "config.h" diff -Nurp inn-2.6.1/lib/snprintf.c inn-2.6.2/lib/snprintf.c --- inn-2.6.1/lib/snprintf.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/lib/snprintf.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: snprintf.c 10115 2016-11-06 14:20:36Z iulius $ +/* $Id: snprintf.c 10246 2018-02-16 21:12:42Z iulius $ * * Replacement for a missing snprintf or vsnprintf. * @@ -26,11 +26,18 @@ # define vsnprintf test_vsnprintf #endif +/* Specific to rra-c-util, but only when debugging is enabled. */ +#ifdef DEBUG_SNPRINTF +# include "inn/messages.h" +#endif + /* * Copyright Patrick Powell 1995 * This code is based on code written by Patrick Powell (papowell@astart.com) * It may be used for any purpose as long as this notice remains intact * on all source code distributions + * + * There is no SPDX-License-Identifier registered for this license. */ /************************************************************** @@ -81,11 +88,23 @@ * fixed return value to comply with C99 * fixed handling of snprintf(NULL, ...) * added explicit casts for double to long long int conversion + * fixed various warnings with GCC 7 + * fixed various warnings with Clang * - * Hrvoje Niksic 2000-11-04 + * Hrvoje Niksic 2000-11-04 + * include instead of "config.h". + * moved TEST_SNPRINTF stuff out of HAVE_SNPRINTF ifdef. * include for NULL. - * added support for long long. + * added support and test cases for long long. * don't declare argument types to (v)snprintf if stdarg is not used. + * use int instead of short int as 2nd arg to va_arg. + * + * alexk (INN) 2002-08-21 + * use LLONG in fmtfp to handle more characters during floating + * point conversion. + * + * herb (Samba) 2002-12-19 + * actually print args for %g and %e * * Hrvoje Niksic 2005-04-15 * use the PARAMS macro to handle prototypes. @@ -111,11 +130,6 @@ /* varargs declarations: */ #include -#define HAVE_STDARGS /* let's hope that works everywhere (mj) */ -#define VA_LOCAL_DECL va_list ap -#define VA_START(f) va_start(ap, f) -#define VA_SHIFT(v,t) ; /* no-op for ANSI */ -#define VA_END va_end(ap) /* Assume all compilers support long double, per Autoconf documentation. */ #define LDOUBLE long double @@ -353,6 +367,7 @@ static int dopr (char *buffer, size_t ma break; case 'X': flags |= DP_F_UP; + /* fallthrough */ case 'x': flags |= DP_F_UNSIGNED; if (cflags == DP_C_SHORT) @@ -369,33 +384,36 @@ static int dopr (char *buffer, size_t ma if (cflags == DP_C_LDOUBLE) fvalue = va_arg (args, LDOUBLE); else - fvalue = va_arg (args, double); + fvalue = (LDOUBLE) va_arg (args, double); total += fmtfp (buffer, &currlen, maxlen, fvalue, min, max, flags); break; case 'E': flags |= DP_F_UP; + /* fallthrough */ case 'e': if (cflags == DP_C_LDOUBLE) fvalue = va_arg (args, LDOUBLE); else - fvalue = va_arg (args, double); + fvalue = (LDOUBLE) va_arg (args, double); total += fmtfp (buffer, &currlen, maxlen, fvalue, min, max, flags); break; case 'G': flags |= DP_F_UP; + /* fallthrough */ case 'g': flags |= DP_F_FP_G; if (cflags == DP_C_LDOUBLE) fvalue = va_arg (args, LDOUBLE); else - fvalue = va_arg (args, double); + fvalue = (LDOUBLE) va_arg (args, double); if (max == 0) /* C99 says: if precision [for %g] is zero, it is taken as one */ max = 1; total += fmtfp (buffer, &currlen, maxlen, fvalue, min, max, flags); break; case 'c': - total += dopr_outch (buffer, &currlen, maxlen, va_arg (args, int)); + total += dopr_outch (buffer, &currlen, maxlen, + (char) va_arg (args, int)); break; case 's': strvalue = va_arg (args, char *); @@ -411,7 +429,7 @@ static int dopr (char *buffer, size_t ma { short int *num; num = va_arg (args, short int *); - *num = currlen; + *num = (short) currlen; } else if (cflags == DP_C_LONG) { @@ -429,7 +447,7 @@ static int dopr (char *buffer, size_t ma { int *num; num = va_arg (args, int *); - *num = currlen; + *num = (int) currlen; } break; case '%': @@ -478,7 +496,7 @@ static int fmtstr (char *buffer, size_t } if (max < 0) - strln = strlen (value); + strln = (int) strlen (value); else /* When precision is specified, don't read VALUE past precision. */ /*strln = strnlen (value, max);*/ @@ -512,7 +530,7 @@ static int fmtstr (char *buffer, size_t static int fmtint (char *buffer, size_t *currlen, size_t maxlen, LLONG value, int base, int min, int max, int flags) { - int signvalue = 0; + char signvalue = 0; unsigned LLONG uvalue; char convert[24]; unsigned int place = 0; @@ -566,8 +584,8 @@ static int fmtint (char *buffer, size_t spadlen = -spadlen; /* Left Justifty */ #ifdef DEBUG_SNPRINTF - dprint (1, (debugfile, "zpad: %d, spad: %d, min: %d, max: %d, place: %d\n", - zpadlen, spadlen, min, max, place)); + debug ("zpad: %d, spad: %d, min: %d, max: %d, place: %u\n", + zpadlen, spadlen, min, max, place); #endif /* Spaces */ @@ -614,7 +632,7 @@ static LDOUBLE abs_val (LDOUBLE value) return result; } -static LLONG pow10_int (int exp) +static LLONG pow10_int (unsigned int exp) { LDOUBLE result = 1; @@ -633,23 +651,31 @@ static LLONG round_int (LDOUBLE value) intpart = (LLONG) value; value = value - intpart; - if (value >= 0.5) + if (value >= (LDOUBLE) 0.5) intpart++; return intpart; } +/* + * GCC 7.1 issues this warning at the point of the function definition header + * (not in any actual code), and I can't figure out what's triggering it since + * the comparison form doesn't appear anywhere in this code. Since this is + * rarely-used portability code, suppress the warning. + */ +#pragma GCC diagnostic ignored "-Wstrict-overflow" + static int fmtfp (char *buffer, size_t *currlen, size_t maxlen, LDOUBLE fvalue, int min, int max, int flags) { - int signvalue = 0; + char signvalue = 0; LDOUBLE ufvalue; char iconvert[24]; char fconvert[24]; size_t iplace = 0; size_t fplace = 0; - int padlen = 0; /* amount to pad */ - int zpadlen = 0; + long padlen = 0; /* amount to pad */ + long zpadlen = 0; int total = 0; LLONG intpart; LLONG fracpart; @@ -701,7 +727,7 @@ static int fmtfp (char *buffer, size_t * fractional digit. */ LDOUBLE temp; if (ufvalue > 0) - for (temp = ufvalue; temp < 0.1; temp *= 10) + for (temp = ufvalue; temp < (LDOUBLE) 0.1; temp *= 10) ++max; } } @@ -748,12 +774,16 @@ static int fmtfp (char *buffer, size_t * } #ifdef DEBUG_SNPRINTF - dprint (1, (debugfile, "fmtfp: %f =? %d.%d\n", fvalue, intpart, fracpart)); +# ifdef HAVE_LONG_LONG_INT + debug ("fmtfp: %Lf =? %lld.%lld\n", fvalue, intpart, fracpart); +# else + debug ("fmtfp: %Lf =? %ld.%ld\n", fvalue, intpart, fracpart); +# endif #endif /* Convert integer part */ do { - iconvert[iplace++] = '0' + intpart % 10; + iconvert[iplace++] = (char) ('0' + (intpart % 10)); intpart = (intpart / 10); } while(intpart && (iplace < sizeof(iconvert))); if (iplace == sizeof(iconvert)) iplace--; @@ -761,7 +791,7 @@ static int fmtfp (char *buffer, size_t * /* Convert fractional part */ do { - fconvert[fplace++] = '0' + fracpart % 10; + fconvert[fplace++] = (char) ('0' + (fracpart % 10)); fracpart = (fracpart / 10); } while(fracpart && (fplace < sizeof(fconvert))); while (leadingfrac0s-- > 0 && fplace < sizeof(fconvert)) @@ -849,27 +879,14 @@ int vsnprintf (char *str, size_t count, return dopr(str, count, fmt, args); } -/* VARARGS3 */ -#ifdef HAVE_STDARGS -int snprintf (char *str,size_t count,const char *fmt,...) -#else -int snprintf (va_alist) va_dcl -#endif +int snprintf (char *str, size_t count, const char *fmt,...) { -#ifndef HAVE_STDARGS - char *str; - size_t count; - char *fmt; -#endif - VA_LOCAL_DECL; + va_list ap; int total; - VA_START (fmt); - VA_SHIFT (str, char *); - VA_SHIFT (count, size_t ); - VA_SHIFT (fmt, char *); + va_start(ap, fmt); total = vsnprintf(str, count, fmt, ap); - VA_END; + va_end(ap); return total; } @@ -946,5 +963,6 @@ int main (void) num++; } printf ("%d tests failed out of %d.\n", fail, num); + return 0; } -#endif /* SNPRINTF_TEST */ +#endif /* TEST_SNPRINTF */ diff -Nurp inn-2.6.1/lib/vector.c inn-2.6.2/lib/vector.c --- inn-2.6.1/lib/vector.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/lib/vector.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: vector.c 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: vector.c 10246 2018-02-16 21:12:42Z iulius $ * * Vector handling (counted lists of char *'s). * @@ -25,14 +25,16 @@ * which can be found at . * * Written by Russ Allbery + * Copyright 2001-2006, 2016 Russ Allbery + * Copyright 2005-2006, 2008-2011, 2013-2014 + * The Board of Trustees of the Leland Stanford Junior University + * + * Copying and distribution of this file, with or without modification, are + * permitted in any medium without royalty provided the copyright notice and + * this notice are preserved. This file is offered as-is, without any + * warranty. * - * The authors hereby relinquish any claim to any copyright that they may have - * in this work, whether granted under contract or by operation of law or - * international treaty, and hereby commit to the public, at large, that they - * shall not, at any time in the future, seek to enforce any copyright in this - * work against any person or entity, or prevent any person or entity from - * copying, publishing, distributing or creating derivative works of this - * work. + * SPDX-License-Identifier: FSFAP */ #include "config.h" diff -Nurp inn-2.6.1/lib/xmalloc.c inn-2.6.2/lib/xmalloc.c --- inn-2.6.1/lib/xmalloc.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/lib/xmalloc.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: xmalloc.c 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: xmalloc.c 10246 2018-02-16 21:12:42Z iulius $ * * malloc routines with failure handling. * @@ -63,13 +63,12 @@ * The canonical version of this file is maintained in the rra-c-util package, * which can be found at . * + * Written by Russ Allbery * Copyright 2015 Russ Allbery - * Copyright 2012, 2013, 2014 + * Copyright 2012-2014 * The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2004, 2005, 2006 - * by Internet Systems Consortium, Inc. ("ISC") - * Copyright (c) 1991, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, - * 2002, 2003 by The Internet Software Consortium and Rich Salz + * Copyright 2004-2006 Internet Systems Consortium, Inc. ("ISC") + * Copyright 1991, 1994-2003 The Internet Software Consortium and Rich Salz * * This code is derived from software contributed to the Internet Software * Consortium by Rich Salz. @@ -85,6 +84,8 @@ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. + * + * SPDX-License-Identifier: ISC */ #include "config.h" diff -Nurp inn-2.6.1/lib/xwrite.c inn-2.6.2/lib/xwrite.c --- inn-2.6.1/lib/xwrite.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/lib/xwrite.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: xwrite.c 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: xwrite.c 10246 2018-02-16 21:12:42Z iulius $ * * write and writev replacements to handle partial writes. * @@ -25,12 +25,11 @@ * The canonical version of this file is maintained in the rra-c-util package, * which can be found at . * - * Copyright 2008, 2013, 2014 + * Written by Russ Allbery + * Copyright 2008, 2013-2014 * The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2004, 2005, 2006 - * by Internet Systems Consortium, Inc. ("ISC") - * Copyright (c) 1991, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, - * 2002, 2003 by The Internet Software Consortium and Rich Salz + * Copyright 2004-2006 Internet Systems Consortium, Inc. ("ISC") + * Copyright 1991, 1994-2003 The Internet Software Consortium and Rich Salz * * This code is derived from software contributed to the Internet Software * Consortium by Rich Salz. @@ -46,6 +45,8 @@ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. + * + * SPDX-License-Identifier: ISC */ #include "config.h" diff -Nurp inn-2.6.1/m4/bdb.m4 inn-2.6.2/m4/bdb.m4 --- inn-2.6.1/m4/bdb.m4 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/m4/bdb.m4 2018-03-18 13:03:32.000000000 -0700 @@ -1,5 +1,5 @@ dnl Find the compiler and linker flags for the Berkeley DB library. -dnl $Id: bdb.m4 10099 2016-11-04 22:21:59Z iulius $ +dnl $Id: bdb.m4 10246 2018-02-16 21:12:42Z iulius $ dnl dnl Finds the compiler and linker flags for linking with the Berkeley DB dnl library. Provides the --with-bdb, --with-bdb-lib, and --with-bdb-include @@ -36,6 +36,8 @@ dnl dnl This file is free software; the authors give unlimited permission to copy dnl and/or distribute it, with or without modifications, as long as this dnl notice is preserved. +dnl +dnl SPDX-License-Identifier: FSFULLR dnl Save the current CPPFLAGS, LDFLAGS, and LIBS settings and switch to dnl versions that include the Berkeley DB flags. Used as a wrapper, with diff -Nurp inn-2.6.1/m4/cc-flags.m4 inn-2.6.2/m4/cc-flags.m4 --- inn-2.6.1/m4/cc-flags.m4 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/m4/cc-flags.m4 2018-03-18 13:03:32.000000000 -0700 @@ -1,5 +1,5 @@ dnl Check whether the compiler supports particular flags. -dnl $Id: cc-flags.m4 10115 2016-11-06 14:20:36Z iulius $ +dnl $Id: cc-flags.m4 10246 2018-02-16 21:12:42Z iulius $ dnl dnl Provides INN_PROG_CC_FLAG, which checks whether a compiler supports a dnl given flag. If it does, the commands in the second argument are run. If @@ -8,11 +8,11 @@ dnl dnl The canonical version of this file is maintained in the rra-c-util dnl package, available at . dnl -dnl Copyright 2016 Russ Allbery +dnl Copyright 2016-2018 Russ Allbery dnl Copyright 2006, 2009, 2016 dnl by Internet Systems Consortium, Inc. ("ISC") dnl -dnl Permission to use, copy, modify, and distribute this software for any +dnl Permission to use, copy, modify, and/or distribute this software for any dnl purpose with or without fee is hereby granted, provided that the above dnl copyright notice and this permission notice appear in all copies. dnl @@ -23,10 +23,12 @@ dnl SPECIAL, DIRECT, INDIRECT, OR CONSEQ dnl WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN dnl ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR dnl IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +dnl +dnl SPDX-License-Identifier: ISC dnl Used to build the result cache name. AC_DEFUN([_INN_PROG_CC_FLAG_CACHE], -[translit([inn_cv_compiler_c_$1], [-=], [__])]) +[translit([inn_cv_compiler_c_$1], [-=+], [___])]) dnl Check whether a given flag is supported by the complier. AC_DEFUN([INN_PROG_CC_FLAG], diff -Nurp inn-2.6.1/m4/inet-ntoa.m4 inn-2.6.2/m4/inet-ntoa.m4 --- inn-2.6.1/m4/inet-ntoa.m4 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/m4/inet-ntoa.m4 2018-03-18 13:03:32.000000000 -0700 @@ -1,5 +1,5 @@ dnl Check for a working inet_ntoa. -dnl $Id: inet-ntoa.m4 10099 2016-11-04 22:21:59Z iulius $ +dnl $Id: inet-ntoa.m4 10246 2018-02-16 21:12:42Z iulius $ dnl dnl Check whether inet_ntoa is present and working. Since calling inet_ntoa dnl involves passing small structs on the stack, present and working versions @@ -10,13 +10,15 @@ dnl dnl The canonical version of this file is maintained in the rra-c-util dnl package, available at . dnl -dnl Copyright 1999, 2000, 2001, 2003 Russ Allbery -dnl Copyright 2008, 2009 +dnl Copyright 1999-2001, 2003 Russ Allbery +dnl Copyright 2008-2009 dnl The Board of Trustees of the Leland Stanford Junior University dnl dnl This file is free software; the authors give unlimited permission to copy dnl and/or distribute it, with or without modifications, as long as this dnl notice is preserved. +dnl +dnl SPDX-License-Identifier: FSFULLR dnl Source used by INN_FUNC_INET_NTOA. AC_DEFUN([_INN_FUNC_INET_NTOA_SOURCE], [[ diff -Nurp inn-2.6.1/m4/krb5-config.m4 inn-2.6.2/m4/krb5-config.m4 --- inn-2.6.1/m4/krb5-config.m4 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/m4/krb5-config.m4 2018-03-18 13:03:32.000000000 -0700 @@ -1,5 +1,5 @@ dnl Use krb5-config to get link paths for Kerberos libraries. -dnl $Id: krb5-config.m4 10099 2016-11-04 22:21:59Z iulius $ +dnl $Id: krb5-config.m4 10266 2018-03-10 14:59:27Z iulius $ dnl dnl Provides one macro, INN_KRB5_CONFIG, which attempts to get compiler and dnl linker flags for a library via krb5-config and sets the appropriate shell @@ -12,12 +12,14 @@ dnl The canonical version of this file i dnl package, available at . dnl dnl Written by Russ Allbery -dnl Copyright 2011, 2012 +dnl Copyright 2011-2012, 2018 dnl The Board of Trustees of the Leland Stanford Junior University dnl dnl This file is free software; the authors give unlimited permission to copy dnl and/or distribute it, with or without modifications, as long as this dnl notice is preserved. +dnl +dnl SPDX-License-Identifier: FSFULLR dnl Check for krb5-config in the user's path and set PATH_KRB5_CONFIG. This dnl is moved into a separate macro so that it can be loaded via AC_REQUIRE, @@ -76,12 +78,12 @@ dnl argument if that option was requeste dnl krb5-config didn't take an argument to specify the library type, but dnl always returned the flags for libkrb5. AC_DEFUN([INN_KRB5_CONFIG], -[AC_REQUIRE([_INN_KRB5_CONFIG_PATH]) - inn_krb5_config_$3= +[inn_krb5_config_$3= inn_krb5_config_$3[]_ok= AS_IF([test x"$1" != x && test -x "$1/bin/krb5-config"], [inn_krb5_config_$3="$1/bin/krb5-config"], - [inn_krb5_config_$3="$PATH_KRB5_CONFIG"]) + [_INN_KRB5_CONFIG_PATH + inn_krb5_config_$3="$PATH_KRB5_CONFIG"]) AS_IF([test x"$inn_krb5_config_$3" != x && test -x "$inn_krb5_config_$3"], [AC_CACHE_CHECK([for $2 support in krb5-config], [inn_cv_lib_$3[]_config], [AS_IF(["$inn_krb5_config_$3" 2>&1 | grep $2 >/dev/null 2>&1], diff -Nurp inn-2.6.1/m4/krb5.m4 inn-2.6.2/m4/krb5.m4 --- inn-2.6.1/m4/krb5.m4 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/m4/krb5.m4 2018-03-18 13:03:32.000000000 -0700 @@ -1,5 +1,5 @@ dnl Find the compiler and linker flags for Kerberos. -dnl $Id: krb5.m4 10099 2016-11-04 22:21:59Z iulius $ +dnl $Id: krb5.m4 10246 2018-02-16 21:12:42Z iulius $ dnl dnl Finds the compiler and linker flags for linking with Kerberos libraries. dnl Provides the --with-krb5, --with-krb5-include, and --with-krb5-lib @@ -51,12 +51,14 @@ dnl The canonical version of this file i dnl package, available at . dnl dnl Written by Russ Allbery -dnl Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2013, 2014 +dnl Copyright 2005-2011, 2013-2014 dnl The Board of Trustees of the Leland Stanford Junior University dnl dnl This file is free software; the authors give unlimited permission to copy dnl and/or distribute it, with or without modifications, as long as this dnl notice is preserved. +dnl +dnl SPDX-License-Identifier: FSFULLR dnl Ignore Automake conditionals if not using Automake. m4_define_default([AM_CONDITIONAL], [:]) diff -Nurp inn-2.6.1/m4/lib-depends.m4 inn-2.6.2/m4/lib-depends.m4 --- inn-2.6.1/m4/lib-depends.m4 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/m4/lib-depends.m4 2018-03-18 13:03:32.000000000 -0700 @@ -1,5 +1,5 @@ dnl Provides option to change library probes. -dnl $Id: lib-depends.m4 10099 2016-11-04 22:21:59Z iulius $ +dnl $Id: lib-depends.m4 10246 2018-02-16 21:12:42Z iulius $ dnl dnl This file provides INN_ENABLE_REDUCED_DEPENDS, which adds the configure dnl option --enable-reduced-depends to request that library probes assume @@ -14,12 +14,14 @@ dnl The canonical version of this file i dnl package, available at . dnl dnl Written by Russ Allbery -dnl Copyright 2005, 2006, 2007 +dnl Copyright 2005-2007 dnl The Board of Trustees of the Leland Stanford Junior University dnl dnl This file is free software; the authors give unlimited permission to copy dnl and/or distribute it, with or without modifications, as long as this dnl notice is preserved. +dnl +dnl SPDX-License-Identifier: FSFULLR AC_DEFUN([INN_ENABLE_REDUCED_DEPENDS], [inn_reduced_depends=false diff -Nurp inn-2.6.1/m4/lib-helper.m4 inn-2.6.2/m4/lib-helper.m4 --- inn-2.6.1/m4/lib-helper.m4 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/m4/lib-helper.m4 2018-03-18 13:03:32.000000000 -0700 @@ -1,5 +1,5 @@ dnl Helper functions to manage compiler variables. -dnl $Id: lib-helper.m4 10099 2016-11-04 22:21:59Z iulius $ +dnl $Id: lib-helper.m4 10246 2018-02-16 21:12:42Z iulius $ dnl dnl These are a wide variety of helper macros to make it easier to construct dnl standard macros to probe for a library and to set library-specific @@ -19,6 +19,8 @@ dnl dnl This file is free software; the authors give unlimited permission to copy dnl and/or distribute it, with or without modifications, as long as this dnl notice is preserved. +dnl +dnl SPDX-License-Identifier: FSFULLR dnl Add the library flags to the default compiler flags and then remove them. dnl diff -Nurp inn-2.6.1/m4/lib-pathname.m4 inn-2.6.2/m4/lib-pathname.m4 --- inn-2.6.1/m4/lib-pathname.m4 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/m4/lib-pathname.m4 2018-03-18 13:03:32.000000000 -0700 @@ -1,5 +1,5 @@ dnl Determine the library path name. -dnl $Id: lib-pathname.m4 10099 2016-11-04 22:21:59Z iulius $ +dnl $Id: lib-pathname.m4 10246 2018-02-16 21:12:42Z iulius $ dnl dnl Red Hat systems and some other Linux systems use lib64 and lib32 rather dnl than just lib in some circumstances. This file provides an Autoconf @@ -17,12 +17,14 @@ dnl The canonical version of this file i dnl package, available at . dnl dnl Written by Russ Allbery -dnl Copyright 2008, 2009 +dnl Copyright 2008-2009 dnl The Board of Trustees of the Leland Stanford Junior University dnl dnl This file is free software; the authors give unlimited permission to copy dnl and/or distribute it, with or without modifications, as long as this dnl notice is preserved. +dnl +dnl SPDX-License-Identifier: FSFULLR dnl Probe for the alternate library name that we should attempt on this dnl architecture, given the size of an int, and set inn_lib_arch_name to that diff -Nurp inn-2.6.1/m4/openssl.m4 inn-2.6.2/m4/openssl.m4 --- inn-2.6.1/m4/openssl.m4 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/m4/openssl.m4 2018-03-18 13:03:32.000000000 -0700 @@ -1,5 +1,5 @@ dnl Find the compiler and linker flags for OpenSSL. -dnl $Id: openssl.m4 10099 2016-11-04 22:21:59Z iulius $ +dnl $Id: openssl.m4 10246 2018-02-16 21:12:42Z iulius $ dnl dnl Finds the compiler and linker flags for linking with both the OpenSSL SSL dnl library and its crypto library. Provides the --with-openssl, @@ -35,6 +35,8 @@ dnl dnl This file is free software; the authors give unlimited permission to copy dnl and/or distribute it, with or without modifications, as long as this dnl notice is preserved. +dnl +dnl SPDX-License-Identifier: FSFULLR dnl Save the current CPPFLAGS, LDFLAGS, and LIBS settings and switch to dnl versions that include the SSL or crypto flags. Used as a wrapper, with diff -Nurp inn-2.6.1/m4/pam-const.m4 inn-2.6.2/m4/pam-const.m4 --- inn-2.6.1/m4/pam-const.m4 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/m4/pam-const.m4 2018-03-18 13:03:32.000000000 -0700 @@ -1,5 +1,5 @@ dnl Determine whether PAM uses const in prototypes. -dnl $Id: pam-const.m4 10099 2016-11-04 22:21:59Z iulius $ +dnl $Id: pam-const.m4 10246 2018-02-16 21:12:42Z iulius $ dnl dnl Linux marks several PAM arguments const, including the argument to dnl pam_get_item and some arguments to conversation functions, which Solaris @@ -11,17 +11,18 @@ dnl dnl Since this is just for compiler warnings, it's not horribly important if dnl we guess wrong. This test is ugly, but it seems to work. dnl -dnl Contributed by Markus Moeller. -dnl dnl The canonical version of this file is maintained in the rra-c-util dnl package, available at . dnl +dnl Written by Markus Moeller dnl Copyright 2007, 2015 Russ Allbery -dnl Copyright 2007, 2008 Markus Moeller +dnl Copyright 2007-2008 Markus Moeller dnl dnl This file is free software; the authors give unlimited permission to copy dnl and/or distribute it, with or without modifications, as long as this dnl notice is preserved. +dnl +dnl SPDX-License-Identifier: FSFULLR dnl Source used by INN_HEADER_PAM_CONST. AC_DEFUN([_INN_HEADER_PAM_CONST_SOURCE], diff -Nurp inn-2.6.1/m4/perl.m4 inn-2.6.2/m4/perl.m4 --- inn-2.6.1/m4/perl.m4 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/m4/perl.m4 2018-03-18 13:03:32.000000000 -0700 @@ -1,5 +1,5 @@ dnl Probe for Perl properties and, optionally, flags for embedding Perl. -dnl $Id: perl.m4 10099 2016-11-04 22:21:59Z iulius $ +dnl $Id: perl.m4 10246 2018-02-16 21:12:42Z iulius $ dnl dnl Provides the following macros: dnl @@ -20,10 +20,8 @@ dnl The canonical version of this file i dnl package, available at . dnl dnl Copyright 2016 Russ Allbery -dnl Copyright (c) 2006, 2009, 2011 -dnl by Internet Systems Consortium, Inc. ("ISC") -dnl Copyright (c) 1998, 1999, 2000, 2001, 2002, 2003 -dnl by The Internet Software Consortium +dnl Copyright 2006, 2009, 2011 Internet Systems Consortium, Inc. ("ISC") +dnl Copyright 1998-2003 The Internet Software Consortium dnl dnl Permission to use, copy, modify, and distribute this software for any dnl purpose with or without fee is hereby granted, provided that the above @@ -36,6 +34,8 @@ dnl SPECIAL, DIRECT, INDIRECT, OR CONSEQ dnl WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN dnl ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR dnl IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +dnl +dnl SPDX-License-Identifier: ISC dnl Check for the path to Perl and ensure it meets our minimum version dnl requirement (given as the argument). Honor the $PERL environment diff -Nurp inn-2.6.1/m4/sasl.m4 inn-2.6.2/m4/sasl.m4 --- inn-2.6.1/m4/sasl.m4 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/m4/sasl.m4 2018-03-18 13:03:32.000000000 -0700 @@ -1,5 +1,5 @@ dnl Find the compiler and linker flags for Cyrus SASL. -dnl $Id: sasl.m4 10099 2016-11-04 22:21:59Z iulius $ +dnl $Id: sasl.m4 10246 2018-02-16 21:12:42Z iulius $ dnl dnl Finds the compiler and linker flags for linking with the Cyrus SASL dnl library. Provides the --with-sasl, --with-sasl-lib, and @@ -32,6 +32,8 @@ dnl dnl This file is free software; the authors give unlimited permission to copy dnl and/or distribute it, with or without modifications, as long as this dnl notice is preserved. +dnl +dnl SPDX-License-Identifier: FSFULLR dnl Save the current CPPFLAGS, LDFLAGS, and LIBS settings and switch to dnl versions that include the Cyrus SASL flags. Used as a wrapper, with diff -Nurp inn-2.6.1/m4/snprintf.m4 inn-2.6.2/m4/snprintf.m4 --- inn-2.6.1/m4/snprintf.m4 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/m4/snprintf.m4 2018-03-18 13:03:32.000000000 -0700 @@ -1,5 +1,5 @@ dnl Test for a working C99 snprintf. -dnl $Id: snprintf.m4 10099 2016-11-04 22:21:59Z iulius $ +dnl $Id: snprintf.m4 10246 2018-02-16 21:12:42Z 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 @@ -14,12 +14,14 @@ dnl The canonical version of this file i dnl package, available at . dnl dnl Written by Russ Allbery -dnl Copyright 2006, 2008, 2009 +dnl Copyright 2006, 2008-2009 dnl The Board of Trustees of the Leland Stanford Junior University dnl dnl This file is free software; the authors give unlimited permission to copy dnl and/or distribute it, with or without modifications, as long as this dnl notice is preserved. +dnl +dnl SPDX-License-Identifier: FSFULLR dnl Source used by INN_FUNC_SNPRINTF. AC_DEFUN([_INN_FUNC_SNPRINTF_SOURCE], [[ diff -Nurp inn-2.6.1/m4/socket-unix.m4 inn-2.6.2/m4/socket-unix.m4 --- inn-2.6.1/m4/socket-unix.m4 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/m4/socket-unix.m4 2018-03-18 13:03:32.000000000 -0700 @@ -1,5 +1,5 @@ dnl Various checks for UNIX domain socket support and macros. -dnl $Id: socket-unix.m4 10099 2016-11-04 22:21:59Z iulius $ +dnl $Id: socket-unix.m4 10246 2018-02-16 21:12:42Z iulius $ dnl dnl This is a collection of various Autoconf macros for checking UNIX domain dnl socket properties. The macros provided are: @@ -14,10 +14,8 @@ dnl package, available at . dnl -dnl Copyright 2008, 2009, 2011 +dnl Copyright 2017 Russ Allbery +dnl Copyright 2008-2009, 2011 dnl The Board of Trustees of the Leland Stanford Junior 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 Copyright 2004-2009 Internet Systems Consortium, Inc. ("ISC") +dnl Copyright 1991, 1994-2003 The Internet Software Consortium and Rich Salz dnl dnl This code is derived from software contributed to the Internet Software dnl Consortium by Rich Salz. @@ -34,6 +32,8 @@ dnl SPECIAL, DIRECT, INDIRECT, OR CONSEQ dnl WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN dnl ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR dnl IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +dnl +dnl SPDX-License-Identifier: ISC dnl Source used by INN_FUNC_GETADDRINFO_ADDRCONFIG. AC_DEFUN([_INN_FUNC_GETADDRINFO_ADDRCONFIG_SOURCE], [[ @@ -99,27 +99,3 @@ AC_DEFUN([INN_MACRO_IN6_ARE_ADDR_EQUAL], 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_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.])])]) diff -Nurp inn-2.6.1/m4/vamacros.m4 inn-2.6.2/m4/vamacros.m4 --- inn-2.6.1/m4/vamacros.m4 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/m4/vamacros.m4 2018-03-18 13:03:32.000000000 -0700 @@ -1,5 +1,5 @@ dnl Check for support for variadic macros. -dnl $Id: vamacros.m4 10099 2016-11-04 22:21:59Z iulius $ +dnl $Id: vamacros.m4 10246 2018-02-16 21:12:42Z iulius $ dnl dnl This file defines two macros for probing for compiler support for variadic dnl macros. Provided are INN_C_C99_VAMACROS, which checks for support for the @@ -18,12 +18,14 @@ dnl The canonical version of this file i dnl package, available at . dnl dnl Written by Russ Allbery -dnl Copyright 2006, 2008, 2009 +dnl Copyright 2006, 2008-2009 dnl The Board of Trustees of the Leland Stanford Junior University dnl dnl This file is free software; the authors give unlimited permission to copy dnl and/or distribute it, with or without modifications, as long as this dnl notice is preserved. +dnl +dnl SPDX-License-Identifier: FSFULLR AC_DEFUN([_INN_C_C99_VAMACROS_SOURCE], [[ #include diff -Nurp inn-2.6.1/m4/zlib.m4 inn-2.6.2/m4/zlib.m4 --- inn-2.6.1/m4/zlib.m4 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/m4/zlib.m4 2018-03-18 13:03:32.000000000 -0700 @@ -1,5 +1,5 @@ dnl Find the compiler and linker flags for the zlib library. -dnl $Id: zlib.m4 10099 2016-11-04 22:21:59Z iulius $ +dnl $Id: zlib.m4 10246 2018-02-16 21:12:42Z iulius $ dnl dnl Finds the compiler and linker flags for linking with the zlib library. dnl Provides the --with-zlib, --with-zlib-lib, and --with-zlib-include @@ -30,6 +30,8 @@ dnl dnl This file is free software; the authors give unlimited permission to copy dnl and/or distribute it, with or without modifications, as long as this dnl notice is preserved. +dnl +dnl SPDX-License-Identifier: FSFULLR dnl Save the current CPPFLAGS, LDFLAGS, and LIBS settings and switch to dnl versions that include the zlib flags. Used as a wrapper, with diff -Nurp inn-2.6.1/nnrpd/Makefile inn-2.6.2/nnrpd/Makefile --- inn-2.6.1/nnrpd/Makefile 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/nnrpd/Makefile 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -## $Id: Makefile 10117 2016-11-06 14:23:27Z iulius $ +## $Id: Makefile 10149 2017-06-05 12:24:58Z iulius $ include ../Makefile.global @@ -82,8 +82,9 @@ article.o: article.c ../include/config.h ../include/inn/qio.h ../include/inn/libinn.h ../include/inn/concat.h \ ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \ ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h \ - ../include/inn/vector.h ../include/inn/timer.h ../include/inn/ov.h \ - ../include/inn/history.h ../include/inn/storage.h tls.h cache.h + ../include/inn/vector.h ../include/inn/timer.h \ + ../include/inn/ov.h ../include/inn/history.h ../include/inn/storage.h \ + tls.h cache.h auth-ext.o: auth-ext.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -117,9 +118,9 @@ commands.o: commands.c ../include/config ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ ../include/inn/xwrite.h ../include/inn/nntp.h ../include/inn/paths.h \ ../include/inn/storage.h ../include/inn/options.h \ - ../include/inn/vector.h ../include/inn/timer.h ../include/inn/fdflag.h \ - ../include/inn/portable-socket.h ../include/inn/ov.h \ - ../include/inn/history.h ../include/inn/storage.h \ + ../include/inn/vector.h ../include/inn/timer.h \ + ../include/inn/fdflag.h ../include/inn/portable-socket.h \ + ../include/inn/ov.h ../include/inn/history.h ../include/inn/storage.h \ ../include/inn/innconf.h ../include/inn/messages.h \ ../include/inn/version.h tls.h group.o: group.c ../include/config.h ../include/inn/defines.h \ @@ -133,8 +134,8 @@ group.o: group.c ../include/config.h ../ ../include/inn/qio.h ../include/inn/libinn.h ../include/inn/concat.h \ ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \ ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h \ - ../include/inn/vector.h ../include/inn/timer.h ../include/inn/ov.h \ - ../include/inn/history.h ../include/inn/storage.h + ../include/inn/vector.h ../include/inn/timer.h \ + ../include/inn/ov.h ../include/inn/history.h ../include/inn/storage.h line.o: line.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -146,7 +147,8 @@ line.o: line.c ../include/config.h ../in ../include/inn/qio.h ../include/inn/libinn.h ../include/inn/concat.h \ ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \ ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h \ - ../include/inn/vector.h ../include/inn/timer.h tls.h + ../include/inn/vector.h ../include/inn/timer.h \ + tls.h list.o: list.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -158,8 +160,8 @@ list.o: list.c ../include/config.h ../in ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ ../include/inn/xwrite.h ../include/inn/nntp.h ../include/inn/paths.h \ ../include/inn/storage.h ../include/inn/options.h \ - ../include/inn/vector.h ../include/inn/timer.h ../include/inn/ov.h \ - ../include/inn/history.h ../include/inn/storage.h \ + ../include/inn/vector.h ../include/inn/timer.h \ + ../include/inn/ov.h ../include/inn/history.h ../include/inn/storage.h \ ../include/inn/innconf.h ../include/inn/messages.h misc.o: misc.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ @@ -172,8 +174,9 @@ misc.o: misc.c ../include/config.h ../in ../include/inn/qio.h ../include/inn/libinn.h ../include/inn/concat.h \ ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \ ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h \ - ../include/inn/vector.h ../include/inn/timer.h tls.h ../include/inn/ov.h \ - ../include/inn/history.h ../include/inn/storage.h + ../include/inn/vector.h ../include/inn/timer.h \ + tls.h \ + ../include/inn/ov.h ../include/inn/history.h ../include/inn/storage.h newnews.o: newnews.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -186,8 +189,9 @@ newnews.o: newnews.c ../include/config.h ../include/inn/qio.h ../include/inn/libinn.h ../include/inn/concat.h \ ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \ ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h \ - ../include/inn/vector.h ../include/inn/timer.h ../include/inn/ov.h \ - ../include/inn/history.h ../include/inn/storage.h cache.h + ../include/inn/vector.h ../include/inn/timer.h \ + ../include/inn/ov.h ../include/inn/history.h ../include/inn/storage.h \ + cache.h nnrpd.o: nnrpd.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -217,8 +221,10 @@ perl.o: perl.c ../include/config.h ../in ../include/inn/qio.h ../include/inn/libinn.h ../include/inn/concat.h \ ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \ ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h \ - ../include/inn/vector.h ../include/inn/timer.h post.h \ - ../include/ppport.h ../include/innperl.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 \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -233,7 +239,8 @@ perm.o: perm.c ../include/config.h ../in ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ ../include/inn/xwrite.h ../include/inn/nntp.h ../include/inn/paths.h \ ../include/inn/storage.h ../include/inn/options.h \ - ../include/inn/vector.h ../include/inn/timer.h tls.h + ../include/inn/vector.h ../include/inn/timer.h \ + tls.h post.o: post.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -245,8 +252,9 @@ post.o: post.c ../include/config.h ../in ../include/inn/qio.h ../include/inn/libinn.h ../include/inn/concat.h \ ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \ ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h \ - ../include/inn/vector.h ../include/inn/timer.h ../include/inn/ov.h \ - ../include/inn/history.h ../include/inn/storage.h post.h + ../include/inn/vector.h ../include/inn/timer.h \ + ../include/inn/ov.h ../include/inn/history.h ../include/inn/storage.h \ + post.h python.o: python.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -258,7 +266,8 @@ python.o: python.c ../include/config.h . ../include/inn/qio.h ../include/inn/libinn.h ../include/inn/concat.h \ ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \ ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h \ - ../include/inn/vector.h ../include/inn/timer.h ../include/inn/hashtab.h + ../include/inn/vector.h ../include/inn/timer.h \ + ../include/inn/hashtab.h sasl.o: sasl.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -270,8 +279,9 @@ sasl.o: sasl.c ../include/config.h ../in ../include/inn/qio.h ../include/inn/libinn.h ../include/inn/concat.h \ ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \ ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h \ - ../include/inn/vector.h ../include/inn/timer.h ../include/inn/ov.h \ - ../include/inn/history.h ../include/inn/storage.h tls.h + ../include/inn/vector.h ../include/inn/timer.h \ + ../include/inn/ov.h ../include/inn/history.h ../include/inn/storage.h \ + tls.h tls.o: tls.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -283,8 +293,8 @@ tls.o: tls.c ../include/config.h ../incl ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ ../include/inn/xwrite.h ../include/inn/nntp.h ../include/inn/paths.h \ ../include/inn/storage.h ../include/inn/options.h \ - ../include/inn/vector.h ../include/inn/timer.h ../include/inn/innconf.h \ - tls.h + ../include/inn/vector.h ../include/inn/timer.h \ + ../include/inn/innconf.h tls.h track.o: track.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ diff -Nurp inn-2.6.1/nnrpd/article.c inn-2.6.2/nnrpd/article.c --- inn-2.6.1/nnrpd/article.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/nnrpd/article.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: article.c 9978 2015-12-11 20:39:56Z iulius $ +/* $Id: article.c 10149 2017-06-05 12:24:58Z iulius $ ** ** Article-related routines. */ @@ -20,6 +20,7 @@ #include "tls.h" #include "cache.h" +extern bool laxmid; #ifdef HAVE_OPENSSL extern SSL *tls_conn; #endif @@ -636,7 +637,7 @@ CMDfetch(int ac, char *av[]) ARTNUM tart; bool final = false; - mid = (ac > 1 && IsValidMessageID(av[1], true)); + mid = (ac > 1 && IsValidMessageID(av[1], true, laxmid)); /* Check the syntax of the arguments first. */ if (ac > 1 && !IsValidArticleNumber(av[1])) { @@ -931,7 +932,7 @@ CMDover(int ac, char *av[]) bool xover, mid; xover = (strcasecmp(av[0], "XOVER") == 0); - mid = (ac > 1 && IsValidMessageID(av[1], true)); + mid = (ac > 1 && IsValidMessageID(av[1], true, laxmid)); if (mid && !xover) { /* FIXME: We still do not support OVER MSGID, sorry! */ @@ -1151,7 +1152,7 @@ CMDpat(int ac, char *av[]) bool hdr, mid; hdr = (strcasecmp(av[0], "HDR") == 0); - mid = (ac > 2 && IsValidMessageID(av[2], true)); + mid = (ac > 2 && IsValidMessageID(av[2], true, laxmid)); /* Check the syntax of the arguments first. */ if (ac > 2 && !IsValidRange(av[2])) { diff -Nurp inn-2.6.1/nnrpd/auth-ext.c inn-2.6.2/nnrpd/auth-ext.c --- inn-2.6.1/nnrpd/auth-ext.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/nnrpd/auth-ext.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: auth-ext.c 9696 2014-09-20 06:17:39Z iulius $ +/* $Id: auth-ext.c 10179 2017-09-18 20:13:48Z iulius $ ** ** External authenticator support. ** @@ -30,7 +30,7 @@ struct process { /* ** Given the client information struct, a string indicating the program to ** run (possibly including arguments) and the directory in which to look for -** the command if it's not fully-qualified, start that program and return a +** the command if it's not fully qualified, start that program and return a ** struct process providing the PID and file descriptors. */ static struct process * diff -Nurp inn-2.6.1/nnrpd/commands.c inn-2.6.2/nnrpd/commands.c --- inn-2.6.1/nnrpd/commands.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/nnrpd/commands.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: commands.c 9978 2015-12-11 20:39:56Z iulius $ +/* $Id: commands.c 10149 2017-06-05 12:24:58Z iulius $ ** ** Miscellaneous commands. */ @@ -14,6 +14,7 @@ #include "inn/version.h" #include "tls.h" +extern bool laxmid; #if defined(HAVE_OPENSSL) extern bool encryption_layer_on; #endif /* HAVE_OPENSSL */ @@ -625,7 +626,7 @@ CMDpost(int ac, char *av[]) ihave = (strcasecmp(av[0], "IHAVE") == 0); /* Check whether the message-ID is valid for IHAVE. */ - if (ihave && ac == 2 && !IsValidMessageID(av[1], true)) { + if (ihave && ac == 2 && !IsValidMessageID(av[1], true, laxmid)) { Reply("%d Syntax error in message-ID\r\n", NNTP_ERR_SYNTAX); return; } diff -Nurp inn-2.6.1/nnrpd/misc.c inn-2.6.2/nnrpd/misc.c --- inn-2.6.1/nnrpd/misc.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/nnrpd/misc.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: misc.c 10078 2016-10-08 20:53:39Z iulius $ +/* $Id: misc.c 10135 2017-01-12 21:09:58Z iulius $ ** ** Miscellaneous support routines. */ @@ -491,7 +491,7 @@ IsValidAlgorithm(const char *string) #if defined(HAVE_ZLIB) /* -** The COMPRESS command. +** The COMPRESS command. RFC 8054. */ void CMDcompress(int ac, char *av[]) diff -Nurp inn-2.6.1/nnrpd/nnrpd.c inn-2.6.2/nnrpd/nnrpd.c --- inn-2.6.1/nnrpd/nnrpd.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/nnrpd/nnrpd.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: nnrpd.c 10063 2016-09-04 12:53:12Z iulius $ +/* $Id: nnrpd.c 10229 2018-01-28 21:21:21Z iulius $ ** ** NNTP server for readers (NNRP) for InterNetNews. ** @@ -43,6 +43,7 @@ extern SSL *tls_conn; bool encryption_layer_on = false; #endif +static void Usage(void) __attribute__ ((__noreturn__)); /* ** If we have getloadavg, include the appropriate header file. Otherwise, @@ -101,6 +102,9 @@ static const char *HostErrorStr; bool GetHostByAddr = true; /* Formerly DO_NNRP_GETHOSTBYADDR. */ const char *NNRPinstance = ""; +/* Default values for the syntaxchecks parameter in inn.conf. */ +bool laxmid = false; + #ifdef DO_PERL bool PerlLoaded = false; #endif @@ -527,7 +531,7 @@ CMDquit(int ac UNUSED, char *av[] UNUSED ** since anyone can fake reverse DNS entries. */ static bool -Address2Name(struct sockaddr *sa, char *hostname, size_t size) +Address2Name(struct sockaddr *sa, socklen_t len, char *hostname, size_t size) { static const char MISMATCH[] = "reverse lookup validation failed"; struct addrinfo hints, *ai, *host; @@ -536,7 +540,7 @@ Address2Name(struct sockaddr *sa, char * bool valid = false; /* Get the official hostname, store it away. */ - ret = getnameinfo(sa, SA_LEN(sa), hostname, size, NULL, 0, NI_NAMEREQD); + ret = getnameinfo(sa, len, hostname, size, NULL, 0, NI_NAMEREQD); if (ret != 0) { HostErrorStr = gai_strerror(ret); return false; @@ -609,7 +613,7 @@ StartConnection(unsigned short port) } if (GetHostByAddr) { HostErrorStr = default_host_error; - if (!Address2Name(sac, Client.host, sizeof(Client.host))) { + if (!Address2Name(sac, length, Client.host, sizeof(Client.host))) { notice("? reverse lookup for %s failed: %s -- using IP" " address for access", Client.ip, HostErrorStr); strlcpy(Client.host, Client.ip, sizeof(Client.host)); @@ -637,7 +641,7 @@ StartConnection(unsigned short port) if (GetHostByAddr) { HostErrorStr = default_host_error; size = sizeof(Client.serverhost); - if (!Address2Name(sas, Client.serverhost, size)) { + if (!Address2Name(sas, length, Client.serverhost, size)) { notice("? reverse lookup for %s failed: %s -- using IP" " address for access", Client.serverip, HostErrorStr); strlcpy(Client.serverhost, Client.serverip, @@ -1100,6 +1104,23 @@ main(int argc, char *argv[]) else NNRPACCESS = concatpath(innconf->pathetc,INN_PATH_NNRPACCESS); + /* Initialize the checks to perform or not on article syntax. */ + if ((innconf->syntaxchecks != NULL) && (innconf->syntaxchecks->count > 0)) { + for (j = 0; j < innconf->syntaxchecks->count; j++) { + if (innconf->syntaxchecks->strings[j] != NULL) { + if (strcmp(innconf->syntaxchecks->strings[j], "laxmid") == 0) { + laxmid = true; + } else if (strcmp(innconf->syntaxchecks->strings[j], + "no-laxmid") == 0) { + laxmid = false; + } else { + syslog(L_NOTICE, "Unknown \"%s\" value in syntaxchecks " + "parameter in inn.conf", + innconf->syntaxchecks->strings[j]); + } + } + } + } if (DaemonMode) { /* Allocate an lfds array to hold the file descriptors diff -Nurp inn-2.6.1/nnrpd/nnrpd.h inn-2.6.2/nnrpd/nnrpd.h --- inn-2.6.1/nnrpd/nnrpd.h 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/nnrpd/nnrpd.h 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: nnrpd.h 10121 2016-11-23 21:32:53Z iulius $ +/* $Id: nnrpd.h 10229 2018-01-28 21:21:21Z iulius $ ** ** NetNews Reading Protocol server. */ @@ -230,7 +230,6 @@ extern int TrimSpaces(char *line); extern void InitBackoffConstants(void); extern char *PostRecFilename(char *ip, char *user); extern int LockPostRec(char *path); -extern int LockPostRec(char *path); extern void UnlockPostRec(char *path); extern int RateLimit(long *sleeptime, char *path); extern void ExitWithStats(int x, bool readconf) diff -Nurp inn-2.6.1/nnrpd/perl.c inn-2.6.2/nnrpd/perl.c --- inn-2.6.1/nnrpd/perl.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/nnrpd/perl.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: perl.c 9930 2015-08-10 11:51:03Z iulius $ +/* $Id: perl.c 10229 2018-01-28 21:21:21Z iulius $ ** ** Embedded Perl support for INN. ** @@ -26,14 +26,15 @@ #ifdef DO_PERL #include +#pragma GCC diagnostic ignored "-Wredundant-decls" #include +#pragma GCC diagnostic warning "-Wredundant-decls" #include #include "ppport.h" #include "innperl.h" extern HEADER Table[], *EndOfTable; -extern char PERMuser[]; extern char **OtherHeaders; extern int OtherCount; diff -Nurp inn-2.6.1/nnrpd/post.c inn-2.6.2/nnrpd/post.c --- inn-2.6.1/nnrpd/post.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/nnrpd/post.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: post.c 10071 2016-09-17 20:40:43Z iulius $ +/* $Id: post.c 10264 2018-03-10 14:52:27Z iulius $ ** ** Check article, send it to the local server. */ @@ -23,6 +23,7 @@ static int OtherSize; static const char * const BadDistribs[] = { BAD_DISTRIBS }; +extern bool laxmid; /* ** Do not modify the table without also looking at post.h for potential @@ -33,7 +34,7 @@ static const char * const BadDistribs[] ** http://www.iana.org/assignments/message-headers/ */ HEADER Table[] = { - /* Name CanSet Type Size Value */ + /* Name CanSet Type Size Value Body Len */ { "Path", true, HTstd, 0, NULL, NULL, 0 }, { "From", true, HTreq, 0, NULL, NULL, 0 }, { "Newsgroups", true, HTreq, 0, NULL, NULL, 0 }, @@ -55,7 +56,7 @@ HEADER Table[] = { { "NNTP-Posting-Host", false, HTobs, 0, NULL, NULL, 0 }, { "Mime-Version", true, HTstd, 0, NULL, NULL, 0 }, { "Content-Type", true, HTstd, 0, NULL, NULL, 0 }, - { "Content-Transfer-Encoding", true, HTstd, 0, NULL, NULL, 0 }, + { "Content-Transfer-Encoding", true, HTstd, 0, NULL, NULL, 0 }, { "X-Trace", false, HTobs, 0, NULL, NULL, 0 }, { "X-Complaints-To", false, HTobs, 0, NULL, NULL, 0 }, { "NNTP-Posting-Date", false, HTobs, 0, NULL, NULL, 0 }, @@ -76,6 +77,8 @@ HEADER Table[] = { { "Article-Names", false, HTobs, 0, NULL, NULL, 0 }, { "Article-Updates", false, HTobs, 0, NULL, NULL, 0 }, { "See-Also", false, HTobs, 0, NULL, NULL, 0 }, + { "Cancel-Key", true, HTstd, 0, NULL, NULL, 0 }, + { "Cancel-Lock", true, HTstd, 0, NULL, NULL, 0 }, /* The Comments: and Original-Sender: header fields can appear more than once * in the headers of an article. Consequently, we MUST NOT put them here. */ }; @@ -339,8 +342,8 @@ ProcessHeaders(char *idbuff, bool needmo static char pathidentitybuff[SMBUF]; static char complaintsbuff[SMBUF]; static char postingaccountbuff[SMBUF]; - static char postinghostbuff[SMBUF]; - static char sendbuff[SMBUF]; + static char postinghostbuff[SMBUF*2]; /* Allocate enough room. */ + static char sendbuff[SMBUF*2]; static char injectioninfobuff[SMBUF]; static char *newpath = NULL; HEADER *hp; @@ -386,10 +389,11 @@ ProcessHeaders(char *idbuff, bool needmo } } - /* Set the Injection-Date: header. */ - /* Start with this header because it MUST NOT be added in case + /* Set the Injection-Date: header field. */ + /* Start with this header field because it MUST NOT be added in case * the article already contains both Message-ID: and Date: - * header fields (possibility of multiple injections). */ + * header fields (possibility of multiple injection, see Sections 3.4.2 + * and 3.5 of RFC 5537). */ if (HDR(HDR__INJECTION_DATE) == NULL) { /* If moderation is needed, do not add an Injection-Date: header field. */ if (!needmoderation && PERMaccessconf->addinjectiondate) { @@ -459,7 +463,7 @@ ProcessHeaders(char *idbuff, bool needmo if (HDR(HDR__MESSAGEID) == NULL) { HDR_SET(HDR__MESSAGEID, idbuff); } - if (!IsValidMessageID(HDR(HDR__MESSAGEID), true)) { + if (!IsValidMessageID(HDR(HDR__MESSAGEID), true, laxmid)) { return "Can't parse Message-ID: header"; } diff -Nurp inn-2.6.1/nnrpd/python.c inn-2.6.2/nnrpd/python.c --- inn-2.6.1/nnrpd/python.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/nnrpd/python.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: python.c 9901 2015-06-14 15:31:12Z iulius $ +/* $Id: python.c 10229 2018-01-28 21:21:21Z iulius $ ** ** python.c: Embed Python in the style of nnrpd's Perl stuff ** (authentication, authorization and dynamic hooks @@ -33,7 +33,9 @@ * and before any standard headers are included (because Python may * define some pre-processor definitions which affect the standard * headers on some systems). */ +#pragma GCC diagnostic ignored "-Wredundant-decls" #include "Python.h" +#pragma GCC diagnostic warning "-Wredundant-decls" /* Define Py_ssize_t when it does not exist (Python < 2.5.0). */ #if PY_VERSION_HEX < 0x02050000 diff -Nurp inn-2.6.1/nnrpd/tls.c inn-2.6.2/nnrpd/tls.c --- inn-2.6.1/nnrpd/tls.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/nnrpd/tls.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: tls.c 10090 2016-11-03 02:30:12Z eagle $ +/* $Id: tls.c 10198 2017-12-10 15:22:43Z iulius $ ** ** tls.c -- TLSv1 functions. ** Copyright (C) 2000 Kenichi Okada . @@ -81,20 +81,20 @@ apps_ssl_info_callback(const SSL *s, int if (where & SSL_CB_LOOP) { if (tls_serverengine && (tls_loglevel >= 2)) - Printf("%s:%s", str, SSL_state_string_long(s)); + syslog(L_NOTICE, "%s:%s", str, SSL_state_string_long(s)); } else if (where & SSL_CB_ALERT) { str = (where & SSL_CB_READ) ? "read" : "write"; if ((tls_serverengine && (tls_loglevel >= 2)) || ((ret & 0xff) != SSL3_AD_CLOSE_NOTIFY)) - Printf("SSL3 alert %s:%s:%s", str, + syslog(L_NOTICE, "SSL3 alert %s:%s:%s", str, SSL_alert_type_string_long(ret), SSL_alert_desc_string_long(ret)); } else if (where & SSL_CB_EXIT) { if (ret == 0) - Printf("%s:failed in %s", + syslog(L_ERROR, "%s:failed in %s", str, SSL_state_string_long(s)); else if (ret < 0) { - Printf("%s:error in %s", + syslog(L_ERROR, "%s:error in %s", str, SSL_state_string_long(s)); } } @@ -244,10 +244,12 @@ verify_callback(int ok, X509_STORE_CTX * err = X509_STORE_CTX_get_error(ctx); depth = X509_STORE_CTX_get_error_depth(ctx); - if (err_cert != NULL) { - X509_NAME_oneline(X509_get_subject_name(err_cert), buf, sizeof(buf)); - if ((tls_serveractive) && (tls_loglevel >= 1)) { - Printf("Peer cert verify depth=%d %s", depth, buf); + if ((tls_serveractive) && (tls_loglevel >= 1)) { + if (err_cert != NULL) { + X509_NAME_oneline(X509_get_subject_name(err_cert), buf, sizeof(buf)); + syslog(L_NOTICE, "Peer cert verify depth=%d %s", depth, buf); + } else { + syslog(L_NOTICE, "Peer cert verify depth=%d ", depth); } } @@ -280,7 +282,7 @@ verify_callback(int ok, X509_STORE_CTX * break; } if ((tls_serveractive) && (tls_loglevel >= 1)) - Printf("verify return:%d", ok); + syslog(L_NOTICE, "verify return:%d", ok); return (ok); } @@ -348,14 +350,14 @@ tls_dump(const char *s, int len) /* If this is the last call, then update the ddt_dump thing so that * we will move the selection point in the debug window. */ if (tls_loglevel>0) - Printf("%s", buf); + syslog(L_NOTICE, "%s", buf); ret += strlen(buf); } #ifdef TRUNCATE if (trunc > 0) { snprintf(buf, sizeof(buf), "%04x - \n", len+ trunc); if (tls_loglevel>0) - Printf("%s", buf); + syslog(L_NOTICE, "%s", buf); ret += strlen(buf); } #endif @@ -496,7 +498,7 @@ tls_init_serverengine(int verifydepth, i return (0); /* Already running. */ if (tls_loglevel >= 2) - Printf("starting TLS engine"); + syslog(L_NOTICE, "starting TLS engine"); /* New functions have been introduced in OpenSSL 1.1.0. */ #if OPENSSL_VERSION_NUMBER < 0x010100000L @@ -530,7 +532,7 @@ tls_init_serverengine(int verifydepth, i if ((!SSL_CTX_load_verify_locations(CTX, CAfile, CApath)) || (!SSL_CTX_set_default_verify_paths(CTX))) { if (tls_loglevel >= 2) - Printf("TLS engine: cannot load CA data\n"); + syslog(L_ERROR, "TLS engine: cannot load CA data"); return (-1); } @@ -545,7 +547,7 @@ tls_init_serverengine(int verifydepth, i if (!set_cert_stuff(CTX, s_cert_file, s_key_file)) { if (tls_loglevel >= 2) - Printf("TLS engine: cannot load cert/key data\n"); + syslog(L_ERROR, "TLS engine: cannot load cert/key data"); return (-1); } @@ -600,6 +602,8 @@ tls_init_serverengine(int verifydepth, i tls_protos |= INN_TLS_TLSv1_1; } else if (strcmp(tls_proto_vect->strings[i], "TLSv1.2") == 0) { tls_protos |= INN_TLS_TLSv1_2; + } else if (strcmp(tls_proto_vect->strings[i], "TLSv1.3") == 0) { + tls_protos |= INN_TLS_TLSv1_3; } else { syslog(L_ERROR, "TLS engine: unknown protocol '%s' in tlsprotocols", tls_proto_vect->strings[i]); @@ -608,7 +612,8 @@ tls_init_serverengine(int verifydepth, i } } else { /* Default value: allow only TLS protocols. */ - tls_protos = (INN_TLS_TLSv1 | INN_TLS_TLSv1_1 | INN_TLS_TLSv1_2); + tls_protos = (INN_TLS_TLSv1 | INN_TLS_TLSv1_1 | INN_TLS_TLSv1_2 + | INN_TLS_TLSv1_3); } if ((tls_protos & INN_TLS_SSLv2) == 0) { @@ -635,6 +640,12 @@ tls_init_serverengine(int verifydepth, i #endif } + if ((tls_protos & INN_TLS_TLSv1_3) == 0) { +#ifdef SSL_OP_NO_TLSv1_3 + SSL_CTX_set_options(CTX, SSL_OP_NO_TLSv1_3); +#endif + } + if (tls_ciphers != NULL) { if (SSL_CTX_set_cipher_list(CTX, tls_ciphers) == 0) { syslog(L_ERROR, "TLS engine: cannot set cipher list"); @@ -728,15 +739,15 @@ bio_dump_cb(BIO * bio, int cmd, const ch return (ret); if (cmd == (BIO_CB_READ | BIO_CB_RETURN)) { - Printf("read from %08lX [%08lX] (%d bytes => %ld (0x%X))", + syslog(L_NOTICE, "read from %08lX [%08lX] (%d bytes => %ld (0x%lX))", (unsigned long) bio, (unsigned long) argp, - argi, ret, (unsigned int) ret); + argi, ret, (unsigned long) ret); tls_dump(argp, (int) ret); return (ret); } else if (cmd == (BIO_CB_WRITE | BIO_CB_RETURN)) { - Printf("write to %08lX [%08lX] (%d bytes => %ld (0x%X))", + syslog(L_NOTICE, "write to %08lX [%08lX] (%d bytes => %ld (0x%lX))", (unsigned long) bio, (unsigned long) argp, - argi, ret, (unsigned int) ret); + argi, ret, (unsigned long) ret); tls_dump(argp, (int) ret); } return (ret); @@ -767,7 +778,7 @@ tls_start_servertls(int readfd, int writ return (-1); } if (tls_loglevel >= 1) - Printf("setting up TLS connection"); + syslog(L_NOTICE, "setting up TLS connection"); if (tls_conn == NULL) { diff -Nurp inn-2.6.1/nnrpd/tls.h inn-2.6.2/nnrpd/tls.h --- inn-2.6.1/nnrpd/tls.h 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/nnrpd/tls.h 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: tls.h 10067 2016-09-04 13:11:52Z iulius $ +/* $Id: tls.h 10198 2017-12-10 15:22:43Z iulius $ ** ** tls.h -- TLSv1 functions. ** Copyright (C) 2000 Kenichi Okada . @@ -49,6 +49,7 @@ #define INN_TLS_TLSv1 4 #define INN_TLS_TLSv1_1 8 #define INN_TLS_TLSv1_2 16 +#define INN_TLS_TLSv1_3 32 /* Init TLS engine. */ int tls_init_serverengine(int verifydepth, /* Depth to verify. */ diff -Nurp inn-2.6.1/nnrpd/zlib.c inn-2.6.2/nnrpd/zlib.c --- inn-2.6.1/nnrpd/zlib.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/nnrpd/zlib.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,6 +1,6 @@ -/* $Id: zlib.c 9978 2015-12-11 20:39:56Z iulius $ +/* $Id: zlib.c 10135 2017-01-12 21:09:58Z iulius $ ** -** COMPRESS functionality. +** COMPRESS functionality. RFC 8054. */ #include "config.h" diff -Nurp inn-2.6.1/perl/INN/Config.pm.in inn-2.6.2/perl/INN/Config.pm.in --- inn-2.6.1/perl/INN/Config.pm.in 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/perl/INN/Config.pm.in 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -## $Id: Config.pm.in 9567 2013-11-17 20:24:35Z iulius $ +## $Id: Config.pm.in 10245 2018-02-16 21:11:59Z iulius $ ## ## Perl module which sets up any and all variables that an ## INN Perl script might need. @@ -115,11 +115,12 @@ our $watchpid = "${innddir}/innwatch.pid ## Paths of external used programs. -my @EXTPROGVAR = qw($awk $egrep $gpgv $perl $pgp $sed +my @EXTPROGVAR = qw($awk $egrep $gpgv $gpg $perl $pgp $sed $sort $getftp $uustat $uux); our $awk = '@AWK@'; our $egrep = '@EGREP@'; our $gpgv = '@GPGV@'; +our $gpg = '@GPG@'; our $perl = '@PERL@'; our $pgp = '@PGP@'; our $sed = '@SED@'; @@ -276,7 +277,7 @@ F was written by James for InterNetNews in 1996. It was converted to the INN::Config Perl module by Julien Elie in 2007. -$Id: Config.pm.in 9567 2013-11-17 20:24:35Z iulius $ +$Id: Config.pm.in 10245 2018-02-16 21:11:59Z iulius $ =head1 SEE ALSO diff -Nurp inn-2.6.1/samples/control.ctl inn-2.6.2/samples/control.ctl --- inn-2.6.1/samples/control.ctl 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/samples/control.ctl 2018-03-18 13:03:32.000000000 -0700 @@ -1,5 +1,5 @@ ## control.ctl - Access control for control messages. -## Last modified: 2016-01-03 +## Last modified: 2018-01-14 ## ## Based on rone's unified control.ctl file. ## @@ -86,6 +86,11 @@ ## read or carried, and may not be worth carrying. If you don't intend ## to carry them, comment out their entries. ## +## * Some hierarchies are marked as *RESERVED*. These are used for +## special purposes by news software and should not be managed by +## control messages. This config file drops all control messages for +## those hierarchies. +## ## The comments of this file aren't in any formal or well-defined syntax, ## but they are meant to use a consistent syntax to allow eventual parsing ## by scripts into a better database format. Please follow the syntax of @@ -1049,15 +1054,6 @@ 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 -# *PGP* See comment at top of file. -newgroup:*:gov.*:drop -rmgroup:*:gov.*:drop -checkgroups:gov-usenet-announce-moderator@govnews.org:gov.*:verify-gov.usenet.announce -newgroup:gov-usenet-announce-moderator@govnews.org:gov.*:verify-gov.usenet.announce -rmgroup:gov-usenet-announce-moderator@govnews.org:gov.*:verify-gov.usenet.announce - ## GRISBI (Grisbi Personal Finance Manager software) # Contact: newsmaster@grisbi.org # URL: http://news.grisbi.org/ diff -Nurp inn-2.6.1/samples/filter_innd.py inn-2.6.2/samples/filter_innd.py --- inn-2.6.1/samples/filter_innd.py 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/samples/filter_innd.py 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -## $Id: filter_innd.py 8955 2010-02-07 20:05:39Z iulius $ +## $Id: filter_innd.py 10263 2018-03-10 14:51:53Z iulius $ ## ## This is a sample filter for the Python innd hook. ## @@ -54,6 +54,7 @@ From = intern("From") In_Reply_To = intern("In-Reply-To") Injection_Date = intern("Injection-Date") Injection_Info = intern("Injection-Info") +Jabber_ID = intern("Jabber-ID") Keywords = intern("Keywords") Lines = intern("Lines") List_ID = intern("List-ID") diff -Nurp inn-2.6.1/samples/incoming.conf inn-2.6.2/samples/incoming.conf --- inn-2.6.1/samples/incoming.conf 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/samples/incoming.conf 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -## $Id: incoming.conf 8439 2009-05-01 09:20:24Z iulius $ +## $Id: incoming.conf 10179 2017-09-18 20:13:48Z iulius $ ## ## incoming.conf -- Configuration of incoming news feeds ## @@ -91,9 +91,10 @@ ## ## hostname: ## This key is mandatory in a peer block. The value is a string representing -## a list of hostnames separated by a comma. A hostname is the host's FQDN, -## or the dotted-quad IP address of the peer for IPv4, or the colon-separated -## IP address of the peer for IPv6. +## a list of hostnames separated by a comma. A hostname is either a FQDN +## that resolves to the IPv4 or IPv6 address of the peer, or the dotted-quad +## IP address of the peer for IPv4, or the colon-separated IP address of +## the peer for IPv6. ## ## streaming: ## This key requires a boolean value. It defines whether streaming commands diff -Nurp inn-2.6.1/samples/inn.conf.in inn-2.6.2/samples/inn.conf.in --- inn-2.6.1/samples/inn.conf.in 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/samples/inn.conf.in 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -## $Id: inn.conf.in 10049 2016-08-05 11:40:25Z iulius $ +## $Id: inn.conf.in 10198 2017-12-10 15:22:43Z iulius $ ## ## inn.conf -- INN configuration data ## @@ -33,6 +33,7 @@ pathnews: @prefix@ #innflags: mailcmd: @bindir@/innmail #server: +#syntaxchecks: [ no-laxmid ] # Feed Configuration @@ -143,7 +144,7 @@ backofftrigger: 10000 #tlscompression: false #tlseccurve: #tlspreferserverciphers: true -#tlsprotocols: [ TLSv1 TLSv1.1 TLSv1.2 ] +#tlsprotocols: [ TLSv1 TLSv1.1 TLSv1.2 TLSv1.3 ] # Monitoring diff -Nurp inn-2.6.1/samples/nntpsend.ctl inn-2.6.2/samples/nntpsend.ctl --- inn-2.6.1/samples/nntpsend.ctl 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/samples/nntpsend.ctl 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -## $Id: nntpsend.ctl 9058 2010-05-20 18:52:44Z iulius $ +## $Id: nntpsend.ctl 10179 2017-09-18 20:13:48Z iulius $ ## ## Sample nntpsend configuration file. ## @@ -6,7 +6,7 @@ ## site:fqdn:max_size:[] ## The name used in the newsfeeds file for this site; ## this determines the name of the batch file. -## The fully-qualified domain name of the site, +## A fully qualified domain name for the site, ## passed as the parameter to innxmit. ## Size to truncate batch file if it gets too big; ## see shrinkfile(1). diff -Nurp inn-2.6.1/samples/ovdb.conf inn-2.6.2/samples/ovdb.conf --- inn-2.6.1/samples/ovdb.conf 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/samples/ovdb.conf 2018-03-18 13:03:32.000000000 -0700 @@ -13,14 +13,20 @@ # In general, the bigger the cache, the better. Use 'ovdb_stat -m' to see # cache hit percentages. If they're less than 80%, try increasing the # cache size. To make a change of this parameter take effect, shut down -# and restart INN (be sure to kill all of the nnrpds when shutting down). -# Default is 8000, which is adequate for small to medium-sized servers. -# Large servers will probably need at least 14000. +# and restart INN (be sure to kill all of the nnrpd processes when shutting +# down). Default is 8000 KB, which is adequate for small to medium-sized +# servers. Large servers will probably need at least 20000 KB. #cachesize 8000 +# Number of regions across which to split the cache. The region size +# is equal to cachesize divided by ncache. +# Default is 1 for ncache, that is to say the cache will be allocated +# contiguously in memory. +#ncache 1 + # Overview data is split between this many files. Currently, # innd will keep all of the files open, so don't set this too high -# or innd may run out of file descriptors. The nnrpds only open one +# or innd may run out of file descriptors. nnrpd only opens one # at a time, regardless. May be set to one, or just a few, but only # do that if your OS supports large (> 2 GB) files. Changing this # parameter has no effect on an already-established database. @@ -50,7 +56,8 @@ #pagesize 8192 # Sets the minimum number of keys per page. See the Berkeley DB -# documentation for more info. Default is based on page size: +# documentation for more information. Default is based on page size +# and whether compression is enabled: # # default_minkey = MAX(2, pagesize / 2600) if compress is false # default_minkey = MAX(2, pagesize / 1500) if compress is true @@ -66,7 +73,7 @@ # is 4000. #maxlocks 4000 -# The nocompact parameter affects expireover's behavior. The expireover +# The nocompact parameter affects the behaviour of expireover. The expireover # function in ovdb can do its job in one of two ways: by simply deleting # expired records from the database; or by re-writing the overview records # into a different location leaving out the expired records. The first @@ -77,22 +84,27 @@ # If this parameter is set to 0, expireover will compact all newsgroups; # if set to 1, expireover will not compact any newsgroups; and if set to # a value greater than one, expireover will only compact groups that -# have less than that number of articles. Default is 1000. +# have less than that number of articles. # # Experience has shown that compacting has minimal effect (other than -# making expireover take longer) so the default is now 1. This parameter +# making expireover take longer) so the default is 1. This parameter # will probably be removed in the future. #nocompact 1 -# Normally, each nnrpd process directly accesses the Berkeley DB environment. -# The process of attaching to the database (and detaching when finished) is -# fairly expensive, and can result in high loads in situations when there are -# lots of reader connections of relatively short duration. +# When the readserver parameter is set to false, each nnrpd process directly +# accesses the Berkeley DB environment. The process of attaching to the +# database (and detaching when finished) is fairly expensive, and can result +# in high loads in situations when there are lots of reader connections +# of relatively short duration. # -# When the readserver parameter is "true", the nnrpds will access overview -# via a helper server (ovdb_server -- which is started by ovdb_init). -# Default is false. -#readserver false +# When the readserver parameter is set to true, the nnrpd processes will access +# overview via a helper server (ovdb_server -- which is started by ovdb_init). +# This can also result in cleaner shutdowns for the database, improving +# stability and avoiding deadlocks and corrupted databases. That's why +# you should try to set this parameter to true if you are experiencing +# any instability in ovdb. +# Default value is true. +#readserver true # This parameter is only used when 'readserver' is true. It sets the number # of ovdb_server processes. As each ovdb_server can process only one @@ -103,7 +115,9 @@ # This parameter is only used when 'readserver' is true. It sets a maximum # number of readers that a given ovdb_server process will serve at one time. # This means the maximum number of readers for all of the ovdb_server -# processes is (numrsprocs * maxrsconn). Default is 0, which means an -# umlimited number of connections is allowed. +# processes is (numrsprocs * maxrsconn). This does not limit the actual +# number of readers, since nnrpd will fall back to opening the database +# directly if it can't connect to an ovdb_server. Default is 0, which means +# an unlimited number of connections is allowed. #maxrsconn 0 diff -Nurp inn-2.6.1/scripts/inncheck.in inn-2.6.2/scripts/inncheck.in --- inn-2.6.1/scripts/inncheck.in 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/scripts/inncheck.in 2018-03-18 13:03:32.000000000 -0700 @@ -1,7 +1,7 @@ #! /usr/bin/perl -w # fixscript will replace this line with code to load INN::Config -## $Id: inncheck.in 9740 2014-11-09 15:01:45Z iulius $ +## $Id: inncheck.in 10256 2018-03-08 16:16:50Z iulius $ ## Sanity-check the configuration of an INN system ## by Brendan Kehoe and Rich $alz. @@ -398,8 +398,12 @@ control_ctl ## Perhaps check for conflicting rules, or warn about the last-match ## rule? Maybe later... + + ## Warn if newsgroup pattern is not "*", do not contain a dot + ## and is not the generic line for reserved groups in the + ## sample control.ctl file. eprint "$file:$line: may not match groups properly.\n" - if $ng ne "*" && $ng !~ /\./; + if $ng ne "*" && $ng !~ /\./ && $ng !~ /^control\|/; if ( $act !~ /([^=]+)(=.+)?/ ) { eprint "$file:$line: malformed line.\n"; next input; diff -Nurp inn-2.6.1/scripts/innreport_inn.pm inn-2.6.2/scripts/innreport_inn.pm --- inn-2.6.1/scripts/innreport_inn.pm 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/scripts/innreport_inn.pm 2018-03-18 13:03:32.000000000 -0700 @@ -1,7 +1,7 @@ ########################################################################## # INN module for innreport (3.*). # -# $Id: innreport_inn.pm 9920 2015-07-12 13:48:04Z iulius $ +# $Id: innreport_inn.pm 10259 2018-03-08 16:19:17Z iulius $ # # Sample file tested with INN 2.5, 2.4, 2.3, 2.2, 1.7.2 and 1.5.1. # @@ -28,7 +28,7 @@ my %ctlinnd = ('a', 'addhist', 'D', 'i', 'hangup', 's', 'mode', 'j', 'name', 'k', 'newgroup', 'l', 'param', 'm', 'pause', - 'v', 'readers', 't', 'refile', + 'v', 'readers', 'H', 'stathist', 'C', 'reject', 'o', 'reload', 'n', 'renumber', 'z', 'reserve', 'p', 'rmgroup', 'A', 'send', @@ -36,7 +36,9 @@ my %ctlinnd = ('a', 'addhist', 'D', 'r', 'throttle', 'w', 'trace', 'x', 'xabort', 'y', 'xexec', 'E', 'logmode', 'F', 'feedinfo', - 'T', 'filter', 'P', 'perl',); + 'S', 'status', 'P', 'perl', + 'L', 'lowmark', 'Y', 'python', + 'Z', 'timer'); my %timer_names = (idle => 'idle', hishave => 'history lookup', @@ -1939,6 +1941,7 @@ sub collect($$$$$$) { if ($left =~ /Article <[^>]*>: (.*) \(ID [[:xdigit:]]*\) not in keyring/o) { $nocem_badsigs{$1}++; $nocem_goodsigs{$1} = 0 unless ($nocem_goodsigs{$1}); + $nocem_totalids{$1} = 0 unless ($nocem_totalids{$1}); $nocem_totalbad++; $nocem_lastid = $1; return 1; @@ -1946,6 +1949,7 @@ sub collect($$$$$$) { if ($left =~ /Article <[^>]*>: bad signature from (.*)/o) { $nocem_badsigs{$1}++; $nocem_goodsigs{$1} = 0 unless ($nocem_goodsigs{$1}); + $nocem_totalids{$1} = 0 unless ($nocem_totalids{$1}); $nocem_totalbad++; $nocem_lastid = $1; return 1; @@ -1953,6 +1957,7 @@ sub collect($$$$$$) { if ($left =~ /Article <[^>]*>: malformed signature/o) { $nocem_badsigs{'N/A'}++; $nocem_goodsigs{'N/A'} = 0 unless ($nocem_goodsigs{'N/A'}); + $nocem_totalids{'N/A'} = 0 unless ($nocem_totalids{'N/A'}); $nocem_totalbad++; $nocem_lastid = 'N/A'; return 1; diff -Nurp inn-2.6.1/scripts/innshellvars.in inn-2.6.2/scripts/innshellvars.in --- inn-2.6.1/scripts/innshellvars.in 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/scripts/innshellvars.in 2018-03-18 13:03:32.000000000 -0700 @@ -1,5 +1,5 @@ #! /bin/sh -## $Id: innshellvars.in 9567 2013-11-17 20:24:35Z iulius $ +## $Id: innshellvars.in 10245 2018-02-16 21:11:59Z iulius $ ## Set up any and all shell variables that an INN shell script ## might need. Also sets umask. @@ -79,6 +79,7 @@ INNDF=${NEWSBIN}/inndf EGREP='@EGREP@' PERL='@PERL@' GPGV='@GPGV@' +GPG='@GPG@' PGP='@PGP@' SORT='@SORT@' GETFTP="@PATH_GETFTP@" diff -Nurp inn-2.6.1/scripts/innshellvars.pl.in inn-2.6.2/scripts/innshellvars.pl.in --- inn-2.6.1/scripts/innshellvars.pl.in 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/scripts/innshellvars.pl.in 2018-03-18 13:03:32.000000000 -0700 @@ -6,7 +6,7 @@ # Start Date: Sat, 24 Aug 1996 22:08:19 +0200 # Project: INN # File: innshellvars.pl -# RCSId: $Id: innshellvars.pl.in 9567 2013-11-17 20:24:35Z iulius $ +# RCSId: $Id: innshellvars.pl.in 10245 2018-02-16 21:11:59Z iulius $ # Description: Set up any and all variables that an INN perl script # might need. Also sets umask. # @@ -91,6 +91,7 @@ $inndf = "${newsbin}/inndf" ; $egrep = '@EGREP@' ; $perl = '@PERL@' ; $gpgv = '@GPGV@' ; +$gpg = '@GPG@' ; $pgp = '@PGP@' ; $sort = '@SORT@' ; $getftp = "@PATH_GETFTP@" ; diff -Nurp inn-2.6.1/scripts/innshellvars.tcl.in inn-2.6.2/scripts/innshellvars.tcl.in --- inn-2.6.1/scripts/innshellvars.tcl.in 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/scripts/innshellvars.tcl.in 2018-03-18 13:03:32.000000000 -0700 @@ -4,7 +4,7 @@ # Start Date: Sat, 24 Aug 1996 23:45:34 +0200 # Project: INN # File: innshellvars.tcl -# RCSId: $Id: innshellvars.tcl.in 9145 2010-10-30 09:44:46Z iulius $ +# RCSId: $Id: innshellvars.tcl.in 10245 2018-02-16 21:11:59Z iulius $ # Description: Set up any and all variables that an INN tcl script # might need. Also sets umask. @@ -86,6 +86,7 @@ set inn_inndf "${inn_newsbin}/inndf" set inn_egrep "@EGREP@" set inn_perl "@PERL@" set inn_gpgv "@GPGV@" +set inn_gpg "@GPG@" set inn_pgp "@PGP@" set inn_sort "@SORT@" set inn_getftp "@PATH_GETFTP@" diff -Nurp inn-2.6.1/scripts/innstat.in inn-2.6.2/scripts/innstat.in --- inn-2.6.1/scripts/innstat.in 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/scripts/innstat.in 2018-03-18 13:03:32.000000000 -0700 @@ -1,7 +1,7 @@ #! /bin/sh # fixscript will replace this line with code to load innshellvars -## $Id: innstat.in 9061 2010-05-20 19:05:03Z iulius $ +## $Id: innstat.in 10196 2017-11-28 20:48:45Z iulius $ ## Display status of INN. ## Written by Landon Curt Noll . @@ -30,8 +30,15 @@ ctlinnd mode 2>&1 ## Show disk usage. You might have to change this. echo '' echo 'Disk usage:' -${INNDF} ${SPOOL} ${OVERVIEWDIR} ${PATHETC} ${INCOMING} ${BATCH} \ - ${PATHDB} ${MOST_LOGS} | ${SORT} -u +DISKUSAGE="${SPOOL} ${OVERVIEWDIR} ${PATHETC} ${INCOMING} ${BATCH}" +DISKUSAGE="${DISKUSAGE} ${PATHDB} ${TMPDIR} ${MOST_LOGS}" +if [ -d "${PATHARCHIVE}" ]; then + DISKUSAGE="${DISKUSAGE} ${PATHARCHIVE}" +fi +if [ -d "${PATHHTTP}" ]; then + DISKUSAGE="${DISKUSAGE} ${PATHHTTP}" +fi +${INNDF} ${DISKUSAGE} | ${SORT} -u ## Show overview usage for buffindexed. [ ${OVMETHOD} = 'buffindexed' ] && { @@ -42,12 +49,12 @@ ${INNDF} ${SPOOL} ${OVERVIEWDIR} ${PATHE ## Show size of batch files. echo '' -echo 'Batch file sizes:' +echo 'Batch file sizes (in Kbytes):' ( cd ${BATCH}; ls -Cs | sed 1d ) ## Show size of log files. echo '' -echo 'Log file sizes:' +echo 'Log file sizes (in Kbytes):' ( cd ${MOST_LOGS}; ls -Cs ${LOGS} *.log 2>&1 ) ## Show the lock files @@ -71,7 +78,7 @@ ctlinnd -t60 name '' 2>&1 \ m/^(\S+):(\d+)$/; $c{$1} = [] unless $c{$1}; @l = @{$c{$1}}; - push @l, $2; + push(@l, $2); $c{$1} = [@l]; $m++; diff -Nurp inn-2.6.1/storage/Makefile inn-2.6.2/storage/Makefile --- inn-2.6.1/storage/Makefile 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/storage/Makefile 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -## $Id: Makefile 10114 2016-11-06 14:18:27Z iulius $ +## $Id: Makefile 10231 2018-01-28 21:23:03Z iulius $ include ../Makefile.global @@ -8,7 +8,7 @@ include ../Makefile.global # recover from make update. We can't use .OLD extensions for the shared # library since ldconfig will think .OLD sorts after the regular library and # will point the binaries at the old library. -LTVERSION = 3:1:0 +LTVERSION = 3:2:0 top = .. CFLAGS = $(GCFLAGS) -I. $(BDB_CPPFLAGS) diff -Nurp inn-2.6.1/storage/buffindexed/buffindexed.c inn-2.6.2/storage/buffindexed/buffindexed.c --- inn-2.6.1/storage/buffindexed/buffindexed.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/storage/buffindexed/buffindexed.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: buffindexed.c 10018 2016-05-05 12:45:13Z iulius $ +/* $Id: buffindexed.c 10220 2018-01-07 14:43:33Z iulius $ ** ** Overview buffer and index method. */ @@ -66,7 +66,13 @@ #define OVMAXCYCBUFFNAME 8 -#define OV_HDR_PAGESIZE 16384 +/* +** Default and minimum size of the header. If the system default page size is +** larger than this, we'll use the system page size instead. The page size in +** use is stored in the global hdr_pagesize variable. +*/ +#define OV_HDR_MIN_PAGESIZE 16384 + #define OV_BEFOREBITF (1 * OV_BLOCKSIZE) #define OV_BLOCKSIZE 8192 #define OV_FUDGE 1024 @@ -252,6 +258,7 @@ typedef enum {SRCH_FRWD, SRCH_BKWD} SRCH #define _PATH_OVBUFFCONFIG "buffindexed.conf" static long pagesize = 0; +static long hdr_pagesize = OV_HDR_MIN_PAGESIZE; static OVBUFF *ovbufftab = NULL; static OVBUFF *ovbuffnext = NULL; static int GROUPfd; @@ -363,7 +370,7 @@ static bool ovparse_part_line(char *l) { ** external header occupies ... then round up to the next block. */ base = len / (OV_BLOCKSIZE * 8) + OV_BEFOREBITF; - tonextblock = OV_HDR_PAGESIZE - (base & (OV_HDR_PAGESIZE - 1)); + tonextblock = hdr_pagesize - (base & (hdr_pagesize - 1)); ovbuff->base = base + tonextblock; if (S_ISREG(sb.st_mode) && (len != sb.st_size || ovbuff->base > sb.st_size)) { if (len != sb.st_size) @@ -992,14 +999,17 @@ bool buffindexed_open(int mode) { } ovbuffmode = mode; if (pagesize == 0) { - pagesize = getpagesize(); + pagesize = sysconf(_SC_PAGESIZE); if (pagesize == -1) { - syswarn("buffindexed: getpagesize failed"); + syswarn("buffindexed: sysconf(_SC_PAGESIZE) failed"); pagesize = 0; return false; } - if ((pagesize > OV_HDR_PAGESIZE) || (OV_HDR_PAGESIZE % pagesize)) { - warn("buffindexed: OV_HDR_PAGESIZE (%d) is not a multiple of pagesize (%ld)", OV_HDR_PAGESIZE, pagesize); + if (pagesize > OV_HDR_MIN_PAGESIZE) + hdr_pagesize = pagesize; + if ((hdr_pagesize % pagesize) != 0) { + warn("buffindexed: hdr_pagesize (%ld) is not a multiple of pagesize" + " (%ld)", hdr_pagesize, pagesize); return false; } } @@ -1724,6 +1734,12 @@ ovgroupmmap(GROUPENTRY *ge, ARTNUM low, for (gdb = groupdatablock[i] ; gdb != NULL ; gdb = gdb->next) { ov = gdb->datablk; ovbuff = getovbuff(ov); + if (ovbuff == NULL) { + warn("buffindexed: ovgroupmmap could not get ovbuff block for new, %d, %d", ov.index, ov.blocknum); + free(gdb); + ovgroupunmap(); + return false; + } offset = ovbuff->base + OV_OFFSET(ov.blocknum); pagefudge = offset % pagesize; mmapoffset = offset - pagefudge; @@ -1860,6 +1876,10 @@ static bool ovsearch(void *handle, ARTNU search->gdb.datablk.blocknum = srchov.blocknum; search->gdb.datablk.index = srchov.index; ovbuff = getovbuff(srchov); + if (ovbuff == NULL) { + warn("buffindexed: ovsearch could not get ovbuff block for new, %d, %d, %ld", srchov.index, srchov.blocknum, *artnum); + return false; + } offset = ovbuff->base + OV_OFFSET(srchov.blocknum); pagefudge = offset % pagesize; mmapoffset = offset - pagefudge; diff -Nurp inn-2.6.1/storage/cnfs/cnfs.c inn-2.6.2/storage/cnfs/cnfs.c --- inn-2.6.1/storage/cnfs/cnfs.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/storage/cnfs/cnfs.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: cnfs.c 9873 2015-05-23 11:35:34Z iulius $ +/* $Id: cnfs.c 10152 2017-06-05 12:27:29Z iulius $ ** ** Storage manager module for Cyclic News File System method. */ @@ -87,7 +87,8 @@ cnfs_explaintoken(const TOKEN token) uint32_t block; uint32_t cycnum; - snprintf(cycbuffname, sizeof(cycbuffname), "%s", token.token); + snprintf(cycbuffname, sizeof(cycbuffname), "%.*s", + (int) sizeof(cycbuffname)-1, token.token); if ((cycbuff = CNFSgetcycbuffbyname(cycbuffname)) == NULL) { blksz = CNFS_DFL_BLOCKSIZE; diff -Nurp inn-2.6.1/storage/ovdb/ovdb.c inn-2.6.2/storage/ovdb/ovdb.c --- inn-2.6.1/storage/ovdb/ovdb.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/storage/ovdb/ovdb.c 2018-03-18 13:03:32.000000000 -0700 @@ -413,7 +413,7 @@ void read_ovdb_conf(void) ovdb_conf.minkey = 0; ovdb_conf.maxlocks = 4000; ovdb_conf.nocompact = 1; - ovdb_conf.readserver = 0; + ovdb_conf.readserver = 1; ovdb_conf.numrsprocs = 5; ovdb_conf.maxrsconn = 0; ovdb_conf.useshm = 0; @@ -938,6 +938,7 @@ mk_temp_groupinfo(int whichdb, group_id_ break; default: warn("OVDB: mk_temp_groupinfo: groupinfo->put: %s", db_strerror(ret)); + /* fallthrough */ case TRYAGAIN: return ret; } @@ -2606,6 +2607,7 @@ ovdb_expiregroup(const char *group, int default: warn("OVDB: expiregroup: ovdb_getgroupinfo failed: %s", db_strerror(ret)); + /* fallthrough */ case DB_NOTFOUND: TXN_ABORT(t_expgroup_1, tid); return false; diff -Nurp inn-2.6.1/storage/timehash/timehash.c inn-2.6.2/storage/timehash/timehash.c --- inn-2.6.1/storage/timehash/timehash.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/storage/timehash/timehash.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: timehash.c 9870 2015-05-17 17:23:07Z iulius $ +/* $Id: timehash.c 10184 2017-11-04 15:34:52Z iulius $ ** ** Storage manager module for timehash method. */ @@ -121,8 +121,9 @@ static TOKEN *PathToToken(char *path) { n = sscanf(path, "time-%02x/%02x/%02x/%04x-%04x", &tclass, &t1, &t2, &seqnum, &t3); - if (n != 5) - return (TOKEN *)NULL; + if (n != 5) { + return (TOKEN *)NULL; + } now = ((t1 << 16) & 0xff0000) | ((t2 << 8) & 0xff00) | ((t3 << 16) & 0xff000000) | (t3 & 0xff); class = tclass; token = MakeToken(now, seqnum, class, (TOKEN *)NULL); @@ -435,6 +436,7 @@ timehash_next(ARTHANDLE *article, const ARTHANDLE *art; int seqnum; size_t length; + TOKEN *nexttoken; length = strlen(innconf->patharticles) + 32; path = xmalloc(length); @@ -529,7 +531,12 @@ timehash_next(ARTHANDLE *article, const newpriv->secde = priv.secde; newpriv->terde = priv.terde; snprintf(path, length, "%s/%s/%s/%s", priv.topde->d_name, priv.secde->d_name, priv.terde->d_name, de->d_name); - art->token = PathToToken(path); + nexttoken = PathToToken(path); + if (nexttoken == (TOKEN *)NULL) { + free(path); + return NULL; + } + art->token = nexttoken; BreakToken(*art->token, &(art->arrived), &seqnum); free(path); return art; diff -Nurp inn-2.6.1/support/config.guess inn-2.6.2/support/config.guess --- inn-2.6.1/support/config.guess 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/support/config.guess 2018-03-18 13:03:32.000000000 -0700 @@ -1,8 +1,8 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2016 Free Software Foundation, Inc. +# Copyright 1992-2018 Free Software Foundation, Inc. -timestamp='2016-10-02' +timestamp='2018-01-16' # 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 @@ -15,7 +15,7 @@ timestamp='2016-10-02' # General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, see . +# along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -27,7 +27,7 @@ timestamp='2016-10-02' # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # 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 +# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess # # Please send patches to . @@ -39,7 +39,7 @@ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. -Operation modes: +Options: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit @@ -50,7 +50,7 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2016 Free Software Foundation, Inc. +Copyright 1992-2018 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -107,9 +107,9 @@ trap "rm -f \$tmpfiles 2>/dev/null; rmdi dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in - ,,) echo "int x;" > $dummy.c ; + ,,) echo "int x;" > "$dummy.c" ; for c in cc gcc c89 c99 ; do - if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + if ($c -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; @@ -132,14 +132,14 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` | UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown -case "${UNAME_SYSTEM}" in +case "$UNAME_SYSTEM" in Linux|GNU|GNU/*) # If the system lacks a compiler, then just pick glibc. # We could probably try harder. LIBC=gnu - eval $set_cc_for_build - cat <<-EOF > $dummy.c + eval "$set_cc_for_build" + cat <<-EOF > "$dummy.c" #include #if defined(__UCLIBC__) LIBC=uclibc @@ -149,13 +149,13 @@ Linux|GNU|GNU/*) LIBC=gnu #endif EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` + eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`" ;; esac # Note: order is significant - the case branches are not exclusive. -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in +case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, @@ -169,30 +169,30 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$ # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ - /sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || \ + "/sbin/$sysctl" 2>/dev/null || \ + "/usr/sbin/$sysctl" 2>/dev/null || \ echo unknown)` - case "${UNAME_MACHINE_ARCH}" in + case "$UNAME_MACHINE_ARCH" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; earmv*) - arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'` - endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'` - machine=${arch}${endian}-unknown + arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` + machine="${arch}${endian}"-unknown ;; - *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + *) machine="$UNAME_MACHINE_ARCH"-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently (or will in the future) and ABI. - case "${UNAME_MACHINE_ARCH}" in + case "$UNAME_MACHINE_ARCH" in earm*) os=netbsdelf ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) - eval $set_cc_for_build + eval "$set_cc_for_build" if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then @@ -208,10 +208,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$ ;; esac # Determine ABI tags. - case "${UNAME_MACHINE_ARCH}" in + case "$UNAME_MACHINE_ARCH" in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' - abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"` + abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` ;; esac # The OS release @@ -219,46 +219,55 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$ # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. - case "${UNAME_VERSION}" in + case "$UNAME_VERSION" in Debian*) release='-gnu' ;; *) - release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2` + release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}${abi}" + echo "$machine-${os}${release}${abi}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} + echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE" exit ;; *:LibertyBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE} + echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE" + exit ;; + *:MidnightBSD:*:*) + echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE" exit ;; *:ekkoBSD:*:*) - echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE" exit ;; *:SolidBSD:*:*) - echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE" exit ;; macppc:MirBSD:*:*) - echo powerpc-unknown-mirbsd${UNAME_RELEASE} + echo powerpc-unknown-mirbsd"$UNAME_RELEASE" exit ;; *:MirBSD:*:*) - echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE" exit ;; *:Sortix:*:*) - echo ${UNAME_MACHINE}-unknown-sortix + echo "$UNAME_MACHINE"-unknown-sortix + exit ;; + *:Redox:*:*) + echo "$UNAME_MACHINE"-unknown-redox exit ;; + mips:OSF1:*.*) + echo mips-dec-osf1 + exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) @@ -310,28 +319,19 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$ # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`" # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; - Alpha\ *:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # Should we change UNAME_MACHINE based on the output of uname instead - # of the specific Alpha model? - echo alpha-pc-interix - exit ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-amigaos + echo "$UNAME_MACHINE"-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-morphos + echo "$UNAME_MACHINE"-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition @@ -343,7 +343,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$ echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} + echo arm-acorn-riscix"$UNAME_RELEASE" exit ;; arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-unknown-riscos @@ -370,19 +370,19 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$ sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) - echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" exit ;; sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) - echo i386-pc-auroraux${UNAME_RELEASE} + echo i386-pc-auroraux"$UNAME_RELEASE" exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) - eval $set_cc_for_build + eval "$set_cc_for_build" SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. @@ -395,13 +395,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$ SUN_ARCH=x86_64 fi fi - echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in @@ -410,25 +410,25 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$ ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`" exit ;; sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} + echo m68k-sun-sunos"$UNAME_RELEASE" exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3 + test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) - echo m68k-sun-sunos${UNAME_RELEASE} + echo m68k-sun-sunos"$UNAME_RELEASE" ;; sun4) - echo sparc-sun-sunos${UNAME_RELEASE} + echo sparc-sun-sunos"$UNAME_RELEASE" ;; esac exit ;; aushp:SunOS:*:*) - echo sparc-auspex-sunos${UNAME_RELEASE} + echo sparc-auspex-sunos"$UNAME_RELEASE" exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not @@ -439,44 +439,44 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$ # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} + echo m68k-atari-mint"$UNAME_RELEASE" exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} + echo m68k-atari-mint"$UNAME_RELEASE" exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} + echo m68k-atari-mint"$UNAME_RELEASE" exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} + echo m68k-milan-mint"$UNAME_RELEASE" exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} + echo m68k-hades-mint"$UNAME_RELEASE" exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} + echo m68k-unknown-mint"$UNAME_RELEASE" exit ;; m68k:machten:*:*) - echo m68k-apple-machten${UNAME_RELEASE} + echo m68k-apple-machten"$UNAME_RELEASE" exit ;; powerpc:machten:*:*) - echo powerpc-apple-machten${UNAME_RELEASE} + echo powerpc-apple-machten"$UNAME_RELEASE" exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} + echo mips-dec-ultrix"$UNAME_RELEASE" exit ;; VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} + echo vax-dec-ultrix"$UNAME_RELEASE" exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix${UNAME_RELEASE} + echo clipper-intergraph-clix"$UNAME_RELEASE" exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c + eval "$set_cc_for_build" + sed 's/^ //' << EOF > "$dummy.c" #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { @@ -485,23 +485,23 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$ #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) - printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) - printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) - printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF - $CC_FOR_BUILD -o $dummy $dummy.c && - dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && - SYSTEM_NAME=`$dummy $dummyarg` && + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && + dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`"$dummy" "$dummyarg"` && { echo "$SYSTEM_NAME"; exit; } - echo mips-mips-riscos${UNAME_RELEASE} + echo mips-mips-riscos"$UNAME_RELEASE" exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax @@ -527,17 +527,17 @@ EOF AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ] then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ - [ ${TARGET_BINARY_INTERFACE}x = x ] + if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \ + [ "$TARGET_BINARY_INTERFACE"x = x ] then - echo m88k-dg-dgux${UNAME_RELEASE} + echo m88k-dg-dgux"$UNAME_RELEASE" else - echo m88k-dg-dguxbcs${UNAME_RELEASE} + echo m88k-dg-dguxbcs"$UNAME_RELEASE" fi else - echo i586-dg-dgux${UNAME_RELEASE} + echo i586-dg-dgux"$UNAME_RELEASE" fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) @@ -554,7 +554,7 @@ EOF echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`" exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id @@ -566,14 +566,14 @@ EOF if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" fi - echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV" exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c + eval "$set_cc_for_build" + sed 's/^ //' << EOF > "$dummy.c" #include main() @@ -584,7 +584,7 @@ EOF exit(0); } EOF - if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` then echo "$SYSTEM_NAME" else @@ -598,7 +598,7 @@ EOF exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` - if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc @@ -607,18 +607,18 @@ EOF IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} + echo "$IBM_ARCH"-ibm-aix"$IBM_REV" exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) + ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx @@ -633,28 +633,28 @@ EOF echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - case "${UNAME_MACHINE}" in - 9000/31? ) HP_ARCH=m68000 ;; - 9000/[34]?? ) HP_ARCH=m68k ;; + HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` + case "$UNAME_MACHINE" in + 9000/31?) HP_ARCH=m68000 ;; + 9000/[34]??) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "${sc_cpu_version}" in + case "$sc_cpu_version" in 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 - case "${sc_kernel_bits}" in + case "$sc_kernel_bits" in 32) HP_ARCH=hppa2.0n ;; 64) HP_ARCH=hppa2.0w ;; '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi - if [ "${HP_ARCH}" = "" ]; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c + if [ "$HP_ARCH" = "" ]; then + eval "$set_cc_for_build" + sed 's/^ //' << EOF > "$dummy.c" #define _HPUX_SOURCE #include @@ -687,13 +687,13 @@ EOF exit (0); } EOF - (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac - if [ ${HP_ARCH} = hppa2.0w ] + if [ "$HP_ARCH" = hppa2.0w ] then - eval $set_cc_for_build + eval "$set_cc_for_build" # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler @@ -712,15 +712,15 @@ EOF HP_ARCH=hppa64 fi fi - echo ${HP_ARCH}-hp-hpux${HPUX_REV} + echo "$HP_ARCH"-hp-hpux"$HPUX_REV" exit ;; ia64:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux${HPUX_REV} + HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux"$HPUX_REV" exit ;; 3050*:HI-UX:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c + eval "$set_cc_for_build" + sed 's/^ //' << EOF > "$dummy.c" #include int main () @@ -745,11 +745,11 @@ EOF exit (0); } EOF - $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) @@ -758,7 +758,7 @@ EOF *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) @@ -766,9 +766,9 @@ EOF exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then - echo ${UNAME_MACHINE}-unknown-osf1mk + echo "$UNAME_MACHINE"-unknown-osf1mk else - echo ${UNAME_MACHINE}-unknown-osf1 + echo "$UNAME_MACHINE"-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) @@ -793,127 +793,109 @@ EOF echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) - echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) - echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) - echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) - echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` + FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE" exit ;; sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi${UNAME_RELEASE} + echo sparc-unknown-bsdi"$UNAME_RELEASE" exit ;; *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE" exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` - case ${UNAME_PROCESSOR} in + case "$UNAME_PROCESSOR" in amd64) - echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - *) - echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + UNAME_PROCESSOR=x86_64 ;; + i386) + UNAME_PROCESSOR=i586 ;; esac + echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" exit ;; i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin + echo "$UNAME_MACHINE"-pc-cygwin exit ;; *:MINGW64*:*) - echo ${UNAME_MACHINE}-pc-mingw64 + echo "$UNAME_MACHINE"-pc-mingw64 exit ;; *:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 + echo "$UNAME_MACHINE"-pc-mingw32 exit ;; *:MSYS*:*) - echo ${UNAME_MACHINE}-pc-msys - exit ;; - i*:windows32*:*) - # uname -m includes "-pc" on this system. - echo ${UNAME_MACHINE}-mingw32 + echo "$UNAME_MACHINE"-pc-msys exit ;; i*:PW*:*) - echo ${UNAME_MACHINE}-pc-pw32 + echo "$UNAME_MACHINE"-pc-pw32 exit ;; *:Interix*:*) - case ${UNAME_MACHINE} in + case "$UNAME_MACHINE" in x86) - echo i586-pc-interix${UNAME_RELEASE} + echo i586-pc-interix"$UNAME_RELEASE" exit ;; authenticamd | genuineintel | EM64T) - echo x86_64-unknown-interix${UNAME_RELEASE} + echo x86_64-unknown-interix"$UNAME_RELEASE" exit ;; IA64) - echo ia64-unknown-interix${UNAME_RELEASE} + echo ia64-unknown-interix"$UNAME_RELEASE" exit ;; esac ;; - [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 - # UNAME_MACHINE based on the output of uname instead of i386? - echo i586-pc-interix - exit ;; i*:UWIN*:*) - echo ${UNAME_MACHINE}-pc-uwin + echo "$UNAME_MACHINE"-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin - exit ;; prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" exit ;; *:GNU:*:*) # the GNU system - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`" exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} + echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC" exit ;; i*86:Minix:*:*) - echo ${UNAME_MACHINE}-pc-minix + echo "$UNAME_MACHINE"-pc-minix exit ;; aarch64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in @@ -927,63 +909,63 @@ EOF esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; arc:Linux:*:* | arceb:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; arm*:Linux:*:*) - eval $set_cc_for_build + eval "$set_cc_for_build" if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then - echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi else - echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf fi fi exit ;; avr32*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; cris:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-${LIBC} + echo "$UNAME_MACHINE"-axis-linux-"$LIBC" exit ;; crisv32:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-${LIBC} + echo "$UNAME_MACHINE"-axis-linux-"$LIBC" exit ;; e2k:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; frv:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; hexagon:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; i*86:Linux:*:*) - echo ${UNAME_MACHINE}-pc-linux-${LIBC} + echo "$UNAME_MACHINE"-pc-linux-"$LIBC" exit ;; ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; k1om:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; m32r*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; mips:Linux:*:* | mips64:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c + eval "$set_cc_for_build" + sed 's/^ //' << EOF > "$dummy.c" #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el @@ -997,70 +979,70 @@ EOF #endif #endif EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } + eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU'`" + test "x$CPU" != x && { echo "$CPU-unknown-linux-$LIBC"; exit; } ;; mips64el:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; openrisc*:Linux:*:*) - echo or1k-unknown-linux-${LIBC} + echo or1k-unknown-linux-"$LIBC" exit ;; or32:Linux:*:* | or1k*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; padre:Linux:*:*) - echo sparc-unknown-linux-${LIBC} + echo sparc-unknown-linux-"$LIBC" exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-${LIBC} + echo hppa64-unknown-linux-"$LIBC" exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; - PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; - *) echo hppa-unknown-linux-${LIBC} ;; + PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;; + PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;; + *) echo hppa-unknown-linux-"$LIBC" ;; esac exit ;; ppc64:Linux:*:*) - echo powerpc64-unknown-linux-${LIBC} + echo powerpc64-unknown-linux-"$LIBC" exit ;; ppc:Linux:*:*) - echo powerpc-unknown-linux-${LIBC} + echo powerpc-unknown-linux-"$LIBC" exit ;; ppc64le:Linux:*:*) - echo powerpc64le-unknown-linux-${LIBC} + echo powerpc64le-unknown-linux-"$LIBC" exit ;; ppcle:Linux:*:*) - echo powerpcle-unknown-linux-${LIBC} + echo powerpcle-unknown-linux-"$LIBC" exit ;; riscv32:Linux:*:* | riscv64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux-${LIBC} + echo "$UNAME_MACHINE"-ibm-linux-"$LIBC" exit ;; sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; tile*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; vax:Linux:*:*) - echo ${UNAME_MACHINE}-dec-linux-${LIBC} + echo "$UNAME_MACHINE"-dec-linux-"$LIBC" exit ;; x86_64:Linux:*:*) - echo ${UNAME_MACHINE}-pc-linux-${LIBC} + echo "$UNAME_MACHINE"-pc-linux-"$LIBC" exit ;; xtensa*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. @@ -1074,34 +1056,34 @@ EOF # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. - echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION" exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. - echo ${UNAME_MACHINE}-pc-os2-emx + echo "$UNAME_MACHINE"-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) - echo ${UNAME_MACHINE}-unknown-stop + echo "$UNAME_MACHINE"-unknown-stop exit ;; i*86:atheos:*:*) - echo ${UNAME_MACHINE}-unknown-atheos + echo "$UNAME_MACHINE"-unknown-atheos exit ;; i*86:syllable:*:*) - echo ${UNAME_MACHINE}-pc-syllable + echo "$UNAME_MACHINE"-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} + echo i386-unknown-lynxos"$UNAME_RELEASE" exit ;; i*86:*DOS:*:*) - echo ${UNAME_MACHINE}-pc-msdosdjgpp + echo "$UNAME_MACHINE"-pc-msdosdjgpp exit ;; - i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) - UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + i*86:*:4.*:*) + UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL" else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL" fi exit ;; i*86:*:5:[678]*) @@ -1111,12 +1093,12 @@ EOF *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac - echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}{$UNAME_VERSION}" exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 @@ -1126,9 +1108,9 @@ EOF && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 - echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL" else - echo ${UNAME_MACHINE}-pc-sysv32 + echo "$UNAME_MACHINE"-pc-sysv32 fi exit ;; pc:*:*:*) @@ -1148,9 +1130,9 @@ EOF exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + echo i860-unknown-sysv"$UNAME_RELEASE" # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) @@ -1170,9 +1152,9 @@ EOF test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; @@ -1181,28 +1163,28 @@ EOF test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos${UNAME_RELEASE} + echo m68k-unknown-lynxos"$UNAME_RELEASE" exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos${UNAME_RELEASE} + echo sparc-unknown-lynxos"$UNAME_RELEASE" exit ;; rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} + echo rs6000-unknown-lynxos"$UNAME_RELEASE" exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) - echo powerpc-unknown-lynxos${UNAME_RELEASE} + echo powerpc-unknown-lynxos"$UNAME_RELEASE" exit ;; SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv${UNAME_RELEASE} + echo mips-dde-sysv"$UNAME_RELEASE" exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 @@ -1213,7 +1195,7 @@ EOF *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo ${UNAME_MACHINE}-sni-sysv4 + echo "$UNAME_MACHINE"-sni-sysv4 else echo ns32k-sni-sysv fi @@ -1233,23 +1215,23 @@ EOF exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. - echo ${UNAME_MACHINE}-stratus-vos + echo "$UNAME_MACHINE"-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} + echo m68k-apple-aux"$UNAME_RELEASE" exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} + echo mips-nec-sysv"$UNAME_RELEASE" else - echo mips-unknown-sysv${UNAME_RELEASE} + echo mips-unknown-sysv"$UNAME_RELEASE" fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. @@ -1268,49 +1250,56 @@ EOF echo x86_64-unknown-haiku exit ;; SX-4:SUPER-UX:*:*) - echo sx4-nec-superux${UNAME_RELEASE} + echo sx4-nec-superux"$UNAME_RELEASE" exit ;; SX-5:SUPER-UX:*:*) - echo sx5-nec-superux${UNAME_RELEASE} + echo sx5-nec-superux"$UNAME_RELEASE" exit ;; SX-6:SUPER-UX:*:*) - echo sx6-nec-superux${UNAME_RELEASE} + echo sx6-nec-superux"$UNAME_RELEASE" exit ;; SX-7:SUPER-UX:*:*) - echo sx7-nec-superux${UNAME_RELEASE} + echo sx7-nec-superux"$UNAME_RELEASE" exit ;; SX-8:SUPER-UX:*:*) - echo sx8-nec-superux${UNAME_RELEASE} + echo sx8-nec-superux"$UNAME_RELEASE" exit ;; SX-8R:SUPER-UX:*:*) - echo sx8r-nec-superux${UNAME_RELEASE} + echo sx8r-nec-superux"$UNAME_RELEASE" exit ;; SX-ACE:SUPER-UX:*:*) - echo sxace-nec-superux${UNAME_RELEASE} + echo sxace-nec-superux"$UNAME_RELEASE" exit ;; Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody${UNAME_RELEASE} + echo powerpc-apple-rhapsody"$UNAME_RELEASE" exit ;; *:Rhapsody:*:*) - echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE" exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown - eval $set_cc_for_build + eval "$set_cc_for_build" if test "$UNAME_PROCESSOR" = unknown ; then UNAME_PROCESSOR=powerpc fi - if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then + if test "`echo "$UNAME_RELEASE" | sed -e 's/\..*//'`" -le 10 ; then if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi + # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc + if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_PPC >/dev/null + then + UNAME_PROCESSOR=powerpc + fi fi elif test "$UNAME_PROCESSOR" = i386 ; then # Avoid executing cc on OS X 10.9, as it ships with a stub @@ -1321,7 +1310,7 @@ EOF # that Apple uses in portable devices. UNAME_PROCESSOR=x86_64 fi - echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE" exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` @@ -1329,19 +1318,25 @@ EOF UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi - echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE" exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; - NEO-?:NONSTOP_KERNEL:*:*) - echo neo-tandem-nsk${UNAME_RELEASE} + NEO-*:NONSTOP_KERNEL:*:*) + echo neo-tandem-nsk"$UNAME_RELEASE" exit ;; NSE-*:NONSTOP_KERNEL:*:*) - echo nse-tandem-nsk${UNAME_RELEASE} + echo nse-tandem-nsk"$UNAME_RELEASE" + exit ;; + NSR-*:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk"$UNAME_RELEASE" exit ;; - NSR-?:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk${UNAME_RELEASE} + NSV-*:NONSTOP_KERNEL:*:*) + echo nsv-tandem-nsk"$UNAME_RELEASE" + exit ;; + NSX-*:NONSTOP_KERNEL:*:*) + echo nsx-tandem-nsk"$UNAME_RELEASE" exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux @@ -1350,7 +1345,7 @@ EOF echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) - echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE" exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 @@ -1361,7 +1356,7 @@ EOF else UNAME_MACHINE="$cputype" fi - echo ${UNAME_MACHINE}-unknown-plan9 + echo "$UNAME_MACHINE"-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 @@ -1382,14 +1377,14 @@ EOF echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) - echo mips-sei-seiux${UNAME_RELEASE} + echo mips-sei-seiux"$UNAME_RELEASE" exit ;; *:DragonFly:*:*) - echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` - case "${UNAME_MACHINE}" in + case "$UNAME_MACHINE" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; @@ -1398,32 +1393,44 @@ EOF echo i386-pc-xenix exit ;; i*86:skyos:*:*) - echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'` + echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`" exit ;; i*86:rdos:*:*) - echo ${UNAME_MACHINE}-pc-rdos + echo "$UNAME_MACHINE"-pc-rdos exit ;; i*86:AROS:*:*) - echo ${UNAME_MACHINE}-pc-aros + echo "$UNAME_MACHINE"-pc-aros exit ;; x86_64:VMkernel:*:*) - echo ${UNAME_MACHINE}-unknown-esx + echo "$UNAME_MACHINE"-unknown-esx exit ;; amd64:Isilon\ OneFS:*:*) echo x86_64-unknown-onefs exit ;; esac +echo "$0: unable to guess system type" >&2 + +case "$UNAME_MACHINE:$UNAME_SYSTEM" in + mips:Linux | mips64:Linux) + # If we got here on MIPS GNU/Linux, output extra information. + cat >&2 <&2 </ /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` -UNAME_MACHINE = ${UNAME_MACHINE} -UNAME_RELEASE = ${UNAME_RELEASE} -UNAME_SYSTEM = ${UNAME_SYSTEM} -UNAME_VERSION = ${UNAME_VERSION} +UNAME_MACHINE = "$UNAME_MACHINE" +UNAME_RELEASE = "$UNAME_RELEASE" +UNAME_SYSTEM = "$UNAME_SYSTEM" +UNAME_VERSION = "$UNAME_VERSION" EOF exit 1 # Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) +# eval: (add-hook 'write-file-functions 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" diff -Nurp inn-2.6.1/support/config.sub inn-2.6.2/support/config.sub --- inn-2.6.1/support/config.sub 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/support/config.sub 2018-03-18 13:03:32.000000000 -0700 @@ -1,8 +1,8 @@ #! /bin/sh # Configuration validation subroutine script. -# Copyright 1992-2016 Free Software Foundation, Inc. +# Copyright 1992-2018 Free Software Foundation, Inc. -timestamp='2016-09-05' +timestamp='2018-01-15' # 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 @@ -15,7 +15,7 @@ timestamp='2016-09-05' # General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, see . +# along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -33,7 +33,7 @@ timestamp='2016-09-05' # 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 +# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases @@ -57,7 +57,7 @@ Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIA Canonicalize a configuration name. -Operation modes: +Options: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit @@ -67,7 +67,7 @@ Report bugs and patches to &2 + echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. @@ -387,7 +385,7 @@ case $basic_machine in | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ - | i*86-* | i860-* | i960-* | ia64-* \ + | i*86-* | i860-* | i960-* | ia16-* | ia64-* \ | ip2k-* | iq2000-* \ | k1om-* \ | le32-* | le64-* \ @@ -428,6 +426,7 @@ case $basic_machine in | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ + | pru-* \ | pyramid-* \ | riscv32-* | riscv64-* \ | rl78-* | romp-* | rs6000-* | rx-* \ @@ -444,6 +443,7 @@ case $basic_machine in | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ | visium-* \ + | wasm32-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ @@ -457,7 +457,7 @@ case $basic_machine in # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) - basic_machine=i386-unknown + basic_machine=i386-pc os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) @@ -491,7 +491,7 @@ case $basic_machine in basic_machine=x86_64-pc ;; amd64-*) - basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + basic_machine=x86_64-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl @@ -536,7 +536,7 @@ case $basic_machine in os=-linux ;; blackfin-*) - basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` + basic_machine=bfin-`echo "$basic_machine" | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) @@ -544,13 +544,13 @@ case $basic_machine in os=-cnk ;; c54x-*) - basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` + basic_machine=tic54x-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; c55x-*) - basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` + basic_machine=tic55x-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; c6x-*) - basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` + basic_machine=tic6x-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; c90) basic_machine=c90-cray @@ -639,7 +639,7 @@ case $basic_machine in basic_machine=rs6000-bull os=-bosx ;; - dpx2* | dpx2*-bull) + dpx2*) basic_machine=m68k-bull os=-sysv3 ;; @@ -648,7 +648,7 @@ case $basic_machine in os=$os"spe" ;; e500v[12]-*) - basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'` os=$os"spe" ;; ebmon29k) @@ -740,9 +740,6 @@ case $basic_machine in hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; - hppa-next) - os=-nextstep3 - ;; hppaosf) basic_machine=hppa1.1-hp os=-osf @@ -755,26 +752,26 @@ case $basic_machine in basic_machine=i370-ibm ;; i*86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; - i386-vsta | vsta) + vsta) basic_machine=i386-unknown os=-vsta ;; @@ -793,19 +790,16 @@ case $basic_machine in os=-sysv ;; leon-*|leon[3-9]-*) - basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` + basic_machine=sparc-`echo "$basic_machine" | sed 's/-.*//'` ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) - basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` + basic_machine=m68k-`echo "$basic_machine" | sed 's/^[^-]*-//'` os=-linux ;; - m88k-omron*) - basic_machine=m88k-omron - ;; magnum | m3230) basic_machine=mips-mips os=-sysv @@ -837,10 +831,10 @@ case $basic_machine in os=-mint ;; mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'` ;; mips3*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k @@ -859,7 +853,7 @@ case $basic_machine in os=-msdos ;; ms1-*) - basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + basic_machine=`echo "$basic_machine" | sed -e 's/ms1-/mt-/'` ;; msys) basic_machine=i686-pc @@ -901,7 +895,7 @@ case $basic_machine in basic_machine=v70-nec os=-sysv ;; - next | m*-next ) + next | m*-next) basic_machine=m68k-next case $os in -nextstep* ) @@ -946,6 +940,12 @@ case $basic_machine in nsr-tandem) basic_machine=nsr-tandem ;; + nsv-tandem) + basic_machine=nsv-tandem + ;; + nsx-tandem) + basic_machine=nsx-tandem + ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf @@ -978,7 +978,7 @@ case $basic_machine in os=-linux ;; parisc-*) - basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` + basic_machine=hppa-`echo "$basic_machine" | sed 's/^[^-]*-//'` os=-linux ;; pbd) @@ -994,7 +994,7 @@ case $basic_machine in basic_machine=i386-pc ;; pc98-*) - basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + basic_machine=i386-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc @@ -1009,16 +1009,16 @@ case $basic_machine in basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) - basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + basic_machine=i586-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; pentium4-*) - basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + basic_machine=i786-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould @@ -1028,23 +1028,23 @@ case $basic_machine in ppc | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) - basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + basic_machine=powerpcle-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; - ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ppc64-*) basic_machine=powerpc64-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) - basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + basic_machine=powerpc64le-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm @@ -1098,17 +1098,10 @@ case $basic_machine in sequent) basic_machine=i386-sequent ;; - sh) - basic_machine=sh-hitachi - os=-hms - ;; sh5el) basic_machine=sh5le-unknown ;; - sh64) - basic_machine=sh64-unknown - ;; - sparclite-wrs | simso-wrs) + simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; @@ -1127,7 +1120,7 @@ case $basic_machine in os=-sysv4 ;; strongarm-* | thumb-*) - basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` + basic_machine=arm-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; sun2) basic_machine=m68000-sun @@ -1249,6 +1242,9 @@ case $basic_machine in basic_machine=hppa1.1-winbond os=-proelf ;; + x64) + basic_machine=x86_64-pc + ;; xbox) basic_machine=i686-pc os=-mingw32 @@ -1257,20 +1253,12 @@ case $basic_machine in basic_machine=xps100-honeywell ;; xscale-* | xscalee[bl]-*) - basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` + basic_machine=`echo "$basic_machine" | sed 's/^xscale/arm/'` ;; ymp) basic_machine=ymp-cray os=-unicos ;; - z8k-*-coff) - basic_machine=z8k-unknown - os=-sim - ;; - z80-*-coff) - basic_machine=z80-unknown - os=-sim - ;; none) basic_machine=none-none os=-none @@ -1299,10 +1287,6 @@ case $basic_machine in vax) basic_machine=vax-dec ;; - pdp10) - # there are many clones, so DEC is not a safe bet - basic_machine=pdp10-unknown - ;; pdp11) basic_machine=pdp11-dec ;; @@ -1312,9 +1296,6 @@ case $basic_machine in sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; - sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) - basic_machine=sparc-sun - ;; cydra) basic_machine=cydra-cydrome ;; @@ -1334,7 +1315,7 @@ case $basic_machine in # Make sure to match an already-canonicalized machine name. ;; *) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2 exit 1 ;; esac @@ -1342,10 +1323,10 @@ esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) - basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + basic_machine=`echo "$basic_machine" | sed 's/digital.*/dec/'` ;; *-commodore*) - basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + basic_machine=`echo "$basic_machine" | sed 's/commodore.*/cbm/'` ;; *) ;; @@ -1356,8 +1337,8 @@ esac if [ x"$os" != x"" ] then case $os in - # First match some system type aliases - # that might get confused with valid system types. + # First match some system type aliases that might get confused + # with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux @@ -1368,18 +1349,19 @@ case $os in -solaris) os=-solaris2 ;; - -svr4*) - os=-sysv4 - ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; - # First accept the basic system types. + # es1800 is here to avoid being matched by es* (a different OS) + -es1800*) + os=-ose + ;; + # Now accept the basic system types. # The portable systems comes first. - # Each alternative MUST END IN A *, to match a version number. + # 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* | -cnk* | -sunos | -sunos[34]*\ @@ -1389,25 +1371,25 @@ case $os in | -aos* | -aros* | -cloudabi* | -sortix* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ + | -hiux* | -knetbsd* | -mirbsd* | -netbsd* \ | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* | -cegcc* \ + | -chorusos* | -chorusrdb* | -cegcc* | -glidix* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ - | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ - | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -morphos* | -superux* | -rtmk* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ - | -onefs* | -tirtos* | -phoenix*) + | -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox* | -bme*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) @@ -1424,12 +1406,12 @@ case $os in -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; - -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ - | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + -sim | -xray | -os68k* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) - os=`echo $os | sed -e 's|mac|macos|'` + os=`echo "$os" | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc @@ -1438,10 +1420,10 @@ case $os in os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) - os=`echo $os | sed -e 's|sunos5|solaris2|'` + os=`echo "$os" | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) - os=`echo $os | sed -e 's|sunos6|solaris3|'` + os=`echo "$os" | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition @@ -1452,12 +1434,6 @@ case $os in -wince*) os=-wince ;; - -osfrose*) - os=-osfrose - ;; - -osf*) - os=-osf - ;; -utek*) os=-bsd ;; @@ -1482,7 +1458,7 @@ case $os in -nova*) os=-rtmk-nova ;; - -ns2 ) + -ns2) os=-nextstep2 ;; -nsk*) @@ -1504,7 +1480,7 @@ case $os in -oss*) os=-sysv3 ;; - -svr4) + -svr4*) os=-sysv4 ;; -svr3) @@ -1519,24 +1495,28 @@ case $os in -ose*) os=-ose ;; - -es1800*) - os=-ose - ;; - -xenix) - os=-xenix - ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; - -aros*) - os=-aros - ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; + -pikeos*) + # Until real need of OS specific support for + # particular features comes up, bare metal + # configurations are quite functional. + case $basic_machine in + arm*) + os=-eabi + ;; + *) + os=-elf + ;; + esac + ;; -nacl*) ;; -ios) @@ -1546,7 +1526,7 @@ case $os in *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` - echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2 exit 1 ;; esac @@ -1636,12 +1616,12 @@ case $basic_machine in sparc-* | *-sun) os=-sunos4.1.1 ;; + pru-*) + os=-elf + ;; *-be) os=-beos ;; - *-haiku) - os=-haiku - ;; *-ibm) os=-aix ;; @@ -1681,7 +1661,7 @@ case $basic_machine in m88k-omron*) os=-luna ;; - *-next ) + *-next) os=-nextstep ;; *-sequent) @@ -1696,9 +1676,6 @@ case $basic_machine in i370-*) os=-mvs ;; - *-next) - os=-nextstep3 - ;; *-gould) os=-sysv ;; @@ -1808,15 +1785,15 @@ case $basic_machine in vendor=stratus ;; esac - basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + basic_machine=`echo "$basic_machine" | sed "s/unknown/$vendor/"` ;; esac -echo $basic_machine$os +echo "$basic_machine$os" exit # Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) +# eval: (add-hook 'write-file-functions 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" diff -Nurp inn-2.6.1/support/getc-tap-harness inn-2.6.2/support/getc-tap-harness --- inn-2.6.1/support/getc-tap-harness 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/support/getc-tap-harness 2018-03-18 13:03:32.000000000 -0700 @@ -1,6 +1,6 @@ #!/bin/sh -## $Id: getc-tap-harness 10092 2016-11-04 22:09:56Z iulius $ +## $Id: getc-tap-harness 10268 2018-03-15 21:40:48Z iulius $ ## ## Synchronize INN files maintained in c-tap-harness with upstream. ## @@ -73,7 +73,7 @@ download () # Specific additions to a few files. if [ "$3" = "basic.c" ] then - sed -i -e "56 i \\ + sed -i -e "58 i \\ /* Specific to the integration of C TAP Harness in INN. */\\ #ifndef LIBTEST_NEW_FORMAT\\ # include \"inn/libinn.h\"\\ @@ -93,7 +93,13 @@ ok(int n UNUSED, int success)\\ void\\ skip(int n UNUSED, const char *reason)\\ {\\ +#if __GNUC__ > 4\\ +# pragma GCC diagnostic ignored \"-Wformat-nonliteral\"\\ +#endif\\ new_skip(reason, NULL);\\ +#if __GNUC__ > 4\\ +# pragma GCC diagnostic warning \"-Wformat-nonliteral\"\\ +#endif\\ }\\ \\ void\\ @@ -105,7 +111,13 @@ ok_block(int n UNUSED, int count, int su void\\ skip_block(int n UNUSED, int count, const char *reason)\\ {\\ +#if __GNUC__ > 4\\ +# pragma GCC diagnostic ignored \"-Wformat-nonliteral\"\\ +#endif\\ new_skip_block(count, reason, NULL);\\ +#if __GNUC__ > 4\\ +# pragma GCC diagnostic warning \"-Wformat-nonliteral\"\\ +#endif\\ }\\ \\ void\\ @@ -121,9 +133,9 @@ ok_string(int n UNUSED, const char *want }\\ #endif\\ " \ - -e "151 i \\ + -e "152 i \\ #ifndef INN_LIBINN_H" \ - -e "185 i \\ + -e "186 i \\ #endif" \ -e 's/^ok.int /new_ok(int /g' \ -e 's/^skip.const /new_skip(const /g' \ @@ -134,7 +146,7 @@ ok_string(int n UNUSED, const char *want if [ "$3" = "basic.h" ] then - sed -i -e "75 i \\ + sed -i -e "77 i \\ #ifndef LIBTEST_NEW_FORMAT\\ /* Specific to the integration of C TAP Harness in INN. */\\ void ok(int n, int success);\\ @@ -160,14 +172,14 @@ void test_init(int count);\\ # define skip new_skip\\ # define ok_block new_ok_block\\ # define skip_block new_skip_block" \ - -e "90 i \\ + -e "92 i \\ #endif" \ ${TEMP} fi if [ "$3" = "float.c" ] then - sed -i -e "50 i \\ + sed -i -e "51 i \\ #ifndef LIBTEST_NEW_FORMAT\\ /* Specific to the integration of C TAP Harness in INN. */\\ void\\ @@ -182,7 +194,7 @@ ok_double(int n UNUSED, double wanted, d if [ "$3" = "float.h" ] then - sed -i -e "37 i \\ + sed -i -e "39 i \\ #ifndef LIBTEST_NEW_FORMAT\\ /* Specific to the integration of C TAP Harness in INN. */\\ void ok_double(int n, double wanted, double seen);\\ diff -Nurp inn-2.6.1/support/getrra-c-util inn-2.6.2/support/getrra-c-util --- inn-2.6.1/support/getrra-c-util 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/support/getrra-c-util 2018-03-18 13:03:32.000000000 -0700 @@ -1,6 +1,6 @@ #!/bin/sh -## $Id: getrra-c-util 10103 2016-11-04 22:41:03Z iulius $ +## $Id: getrra-c-util 10246 2018-02-16 21:12:42Z iulius $ ## ## Synchronize INN files maintained in rra-c-util with upstream. ## @@ -107,7 +107,7 @@ dnl \$Id\$' \ -e 's/PORTABLE_SYSTEM_H/CLIBRARY_H/g' \ -e "8 i \\ * #include \"inn/macros.h\"" \ - -e "101 i \\ + -e "103 i \\ /*\\ * This almost certainly isn't necessary, but it's not hurting anything.\\ * gcc assumes that if SEEK_SET isn't defined none of the rest are either,\\ @@ -119,7 +119,7 @@ dnl \$Id\$' \ # define SEEK_END 2\\ #endif\\ " \ - -e "115 i \\ + -e "117 i \\ /*\\ * Handle defining fseeko and ftello. If HAVE_FSEEKO is defined, the system\\ * header files take care of this for us. Otherwise, see if we're building\\ @@ -161,7 +161,7 @@ extern ssize_t pwrite(int, const void *, extern int symlink(const char *, const char *);\\ #endif\\ " \ - -e "154 i \\ + -e "158 i \\ #if !HAVE_DECL_STRLCAT\\ extern size_t strlcat(char *, const char *, size_t);\\ #endif\\ @@ -180,9 +180,6 @@ extern size_t strspn(const char *, const #endif\\ #if !HAVE_STRTOK\\ extern char * strtok(char *, const char *);\\ -#endif\\ -#if !HAVE_MEMCMP\\ -extern int memcmp(const void *, const void *, size_t);\\ #endif" \ -e '/#if !HAVE_DAEMON/,+2d' \ -e '/#if !HAVE_ISSETUGID/,+2d' \ @@ -193,11 +190,12 @@ extern int memcmp(const void *, const vo sed -i -e 's/UTIL_/INN_/g' \ -e '/^\/\* Default to a hidden visibility for all .* functions\. \*\/$/,+2d' \ -e '/^\/\* Undo default visibility change\. \*\/$/,+2d' \ - -e 's//"config.h"/g' \ + -e 's/$/"config.h"/g' \ -e 's//"clibrary.h"/g' \ -e 's//"inn\/\1"/g' \ -e 's//"portable\/\1"/g' \ -e 's//"tap\/\1"/g' \ + -e 's//"lib\/\1"/g' \ -e '1 s/$/ \$Id\$\n */' \ ${TEMP} @@ -306,6 +304,7 @@ download tests/portable/snprintf-t.c tes ## Synchronize test suite files for utility functions from upstream. download tests/util/buffer-t.c tests/lib buffer-t.c download tests/util/fakewrite.c tests/lib fakewrite.c +download tests/util/fakewrite.h tests/lib fakewrite.h download tests/util/fdflag-t.c tests/lib fdflag-t.c download tests/util/messages-t.c tests/lib messages-t.c download tests/util/vector-t.c tests/lib vector-t.c diff -Nurp inn-2.6.1/support/install-sh inn-2.6.2/support/install-sh --- inn-2.6.1/support/install-sh 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/support/install-sh 2018-03-18 13:03:32.000000000 -0700 @@ -1,7 +1,7 @@ #!/bin/sh # install - install a program, script, or datafile -scriptversion=2016-01-11.22; # UTC +scriptversion=2018-03-11.20; # UTC ############################# # NOTICE TO INN MAINTAINERS # @@ -300,15 +300,18 @@ do fi dst=$dst_arg - # If destination is a directory, append the input filename; won't work - # if double slashes aren't ignored. + # If destination is a directory, append the input filename. if test -d "$dst"; then if test "$is_target_a_directory" = never; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst - dst=$dstdir/`basename "$src"` + dstbase=`basename "$src"` + case $dst in + */) dst=$dst$dstbase;; + *) dst=$dst/$dstbase;; + esac dstdir_status=0 else dstdir=`dirname "$dst"` @@ -317,6 +320,11 @@ do fi fi + case $dstdir in + */) dstdirslash=$dstdir;; + *) dstdirslash=$dstdir/;; + esac + obsolete_mkdir_used=false if test $dstdir_status != 0; then @@ -353,34 +361,43 @@ do # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) + # Note that $RANDOM variable is not portable (e.g. dash); Use it + # here however when possible just to lower collision chance. tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ - trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 + trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0 + + # Because "mkdir -p" follows existing symlinks and we likely work + # directly in world-writeable /tmp, make sure that the '$tmpdir' + # directory is successfully created first before we actually test + # 'mkdir -p' feature. if (umask $mkdir_umask && - exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 + $mkdirprog $mkdir_mode "$tmpdir" && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. - ls_ld_tmpdir=`ls -ld "$tmpdir"` + test_tmpdir="$tmpdir/a" + ls_ld_tmpdir=`ls -ld "$test_tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && - $mkdirprog -m$different_mode -p -- "$tmpdir" && { - ls_ld_tmpdir_1=`ls -ld "$tmpdir"` + $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi - rmdir "$tmpdir/d" "$tmpdir" + rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. - rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null + rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null fi trap '' 0;; esac;; @@ -456,8 +473,8 @@ do else # Make a couple of temp file names in the proper directory. - dsttmp=$dstdir/_inst.$$_ - rmtmp=$dstdir/_rm.$$_ + dsttmp=${dstdirslash}_inst.$$_ + rmtmp=${dstdirslash}_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 @@ -528,7 +545,7 @@ do done # Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" diff -Nurp inn-2.6.1/support/mkmanifest inn-2.6.2/support/mkmanifest --- inn-2.6.1/support/mkmanifest 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/support/mkmanifest 2018-03-18 13:03:32.000000000 -0700 @@ -1,6 +1,6 @@ #! /usr/bin/perl -w -## $Id: mkmanifest 10071 2016-09-17 20:40:43Z iulius $ +## $Id: mkmanifest 10229 2018-01-28 21:21:21Z iulius $ ## ## Generate a filename-only manifest from an INN tree. ## @@ -152,6 +152,7 @@ frontends/cnfsstat frontends/ctlinnd frontends/decode frontends/encode +frontends/feedone frontends/getlist frontends/gunbatch frontends/inews @@ -165,6 +166,7 @@ frontends/pullnews frontends/rnews frontends/scanspool frontends/sm +frontends/sys2nf history/buildconfig include/config.h include/inn/paths.h @@ -287,7 +289,7 @@ tests/lib/inet_ntop.t tests/lib/innconf.t tests/lib/list.t tests/lib/md5.t -tests/lib/memcmp.t +tests/lib/messageid.t tests/lib/messages.t tests/lib/mkstemp.t tests/lib/network/addr-ipv4.t diff -Nurp inn-2.6.1/tests/Makefile inn-2.6.2/tests/Makefile --- inn-2.6.1/tests/Makefile 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/tests/Makefile 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -## $Id: Makefile 10071 2016-09-17 20:40:43Z iulius $ +## $Id: Makefile 10229 2018-01-28 21:21:21Z iulius $ include ../Makefile.global @@ -21,7 +21,7 @@ TESTS = authprogs/ident.t innd/artparse. lib/getaddrinfo.t lib/getnameinfo.t lib/hash.t \ lib/hashtab.t lib/headers.t lib/hex.t lib/inet_aton.t \ lib/inet_ntoa.t lib/inet_ntop.t lib/innconf.t lib/list.t lib/md5.t \ - lib/memcmp.t lib/messages.t lib/mkstemp.t \ + lib/messageid.t lib/messages.t lib/mkstemp.t \ lib/network/addr-ipv4.t lib/network/addr-ipv6.t \ lib/network/client.t lib/network/server.t \ lib/pread.t lib/pwrite.t lib/qio.t lib/reallocarray.t \ @@ -167,11 +167,8 @@ lib/list.t: lib/list-t.o tap/basic.o $(L lib/md5.t: lib/md5-t.o tap/basic.o $(LIBINN) $(LINK) lib/md5-t.o tap/basic.o $(LIBINN) -lib/memcmp.o: ../lib/memcmp.c - $(CC) $(CFLAGS) -DTESTING -c -o $@ ../lib/memcmp.c - -lib/memcmp.t: lib/memcmp.o lib/memcmp-t.o tap/basic.o $(LIBINN) - $(LINK) lib/memcmp.o lib/memcmp-t.o tap/basic.o $(LIBINN) +lib/messageid.t: lib/messageid-t.o tap/basic.o $(LIBINN) + $(LINK) lib/messageid-t.o tap/basic.o $(LIBINN) lib/messages.t: lib/messages-t.o tap/basic.o tap/process.o tap/string.o $(LIBINN) $(LINK) lib/messages-t.o tap/basic.o tap/process.o tap/string.o \ diff -Nurp inn-2.6.1/tests/README inn-2.6.2/tests/README --- inn-2.6.1/tests/README 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/tests/README 2018-03-18 13:03:32.000000000 -0700 @@ -248,3 +248,5 @@ License are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without any warranty. + + SPDX-License-Identifier: FSFAP diff -Nurp inn-2.6.1/tests/TESTS inn-2.6.2/tests/TESTS --- inn-2.6.1/tests/TESTS 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/tests/TESTS 2018-03-18 13:03:32.000000000 -0700 @@ -25,7 +25,7 @@ lib/inet_ntop lib/innconf lib/list lib/md5 -lib/memcmp +lib/messageid lib/messages lib/mkstemp lib/network/addr-ipv4 diff -Nurp inn-2.6.1/tests/docs/pod.t inn-2.6.2/tests/docs/pod.t --- inn-2.6.1/tests/docs/pod.t 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/tests/docs/pod.t 2018-03-18 13:03:32.000000000 -0700 @@ -1,13 +1,13 @@ #!/usr/bin/perl # -# $Id: pod.t 10099 2016-11-04 22:21:59Z iulius $ +# $Id: pod.t 10229 2018-01-28 21:21:21Z iulius $ # # Test POD formatting. # # This file is part of C TAP Harness. The current version plus supporting # documentation is at . # -# Copyright 2009, 2010, 2013, 2014, 2015, 2016 Russ Allbery +# Copyright 2009-2010, 2013-2016 Russ Allbery # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the "Software"), @@ -26,6 +26,8 @@ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # DEALINGS IN THE SOFTWARE. +# +# SPDX-License-Identifier: MIT use 5.006; use strict; diff -Nurp inn-2.6.1/tests/innd/fakeinnd.c inn-2.6.2/tests/innd/fakeinnd.c --- inn-2.6.1/tests/innd/fakeinnd.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/tests/innd/fakeinnd.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: fakeinnd.c 9242 2011-07-12 12:58:00Z iulius $ */ +/* $Id: fakeinnd.c 10263 2018-03-10 14:51:53Z iulius $ */ /* Global symbols and tables required for innd-related files to link. */ /* This file is required in order to test various portions of innd from @@ -26,6 +26,7 @@ bool ThrottledbyIOError = false; bool BufferedLogs = true; FILE *Log = NULL; FILE *Errlog = NULL; +bool laxmid = false; /* We have to copy this here. Bleh. We only need to care about headers up to message ID and Path, but they have to be in the same order as in innd.c and @@ -107,7 +108,8 @@ const ARTHEADER ARTheaders[] = { ARTHEADERINIT("Archive", HTstd), ARTHEADERINIT("Archived-At", HTstd), ARTHEADERINIT("Summary", HTstd), - ARTHEADERINIT("Comments", HTstd) + ARTHEADERINIT("Comments", HTstd), + ARTHEADERINIT("Jabber-ID", HTstd), }; /* Dummy functions that innd.c provides. */ diff -Nurp inn-2.6.1/tests/lib/asprintf-t.c inn-2.6.2/tests/lib/asprintf-t.c --- inn-2.6.1/tests/lib/asprintf-t.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/tests/lib/asprintf-t.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: asprintf-t.c 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: asprintf-t.c 10246 2018-02-16 21:12:42Z iulius $ * * asprintf and vasprintf test suite. * @@ -6,14 +6,16 @@ * which can be found at . * * Written by Russ Allbery + * Copyright 2014, 2018 Russ Allbery + * Copyright 2006-2009, 2011 + * The Board of Trustees of the Leland Stanford Junior University * - * The authors hereby relinquish any claim to any copyright that they may have - * in this work, whether granted under contract or by operation of law or - * international treaty, and hereby commit to the public, at large, that they - * shall not, at any time in the future, seek to enforce any copyright in this - * work against any person or entity, or prevent any person or entity from - * copying, publishing, distributing or creating derivative works of this - * work. + * Copying and distribution of this file, with or without modification, are + * permitted in any medium without royalty provided the copyright notice and + * this notice are preserved. This file is offered as-is, without any + * warranty. + * + * SPDX-License-Identifier: FSFAP */ #define LIBTEST_NEW_FORMAT 1 @@ -26,9 +28,10 @@ int test_asprintf(char **, const char *, ...) __attribute__((__format__(printf, 2, 3))); -int test_vasprintf(char **, const char *, va_list); +int test_vasprintf(char **, const char *, va_list) + __attribute__((__format__(printf, 2, 0))); -static int +static int __attribute__((__format__(printf, 2, 3))) vatest(char **result, const char *format, ...) { va_list args; diff -Nurp inn-2.6.1/tests/lib/buffer-t.c inn-2.6.2/tests/lib/buffer-t.c --- inn-2.6.1/tests/lib/buffer-t.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/tests/lib/buffer-t.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: buffer-t.c 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: buffer-t.c 10246 2018-02-16 21:12:42Z iulius $ * * buffer test suite. * @@ -6,14 +6,16 @@ * which can be found at . * * Written by Russ Allbery + * Copyright 2002-2004, 2006, 2014-2015 Russ Allbery + * Copyright 2011-2014 + * The Board of Trustees of the Leland Stanford Junior University * - * The authors hereby relinquish any claim to any copyright that they may have - * in this work, whether granted under contract or by operation of law or - * international treaty, and hereby commit to the public, at large, that they - * shall not, at any time in the future, seek to enforce any copyright in this - * work against any person or entity, or prevent any person or entity from - * copying, publishing, distributing or creating derivative works of this - * work. + * Copying and distribution of this file, with or without modification, are + * permitted in any medium without royalty provided the copyright notice and + * this notice are preserved. This file is offered as-is, without any + * warranty. + * + * SPDX-License-Identifier: FSFAP */ #define LIBTEST_NEW_FORMAT 1 diff -Nurp inn-2.6.1/tests/lib/fakewrite.c inn-2.6.2/tests/lib/fakewrite.c --- inn-2.6.1/tests/lib/fakewrite.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/tests/lib/fakewrite.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,11 +1,11 @@ -/* $Id: fakewrite.c 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: fakewrite.c 10246 2018-02-16 21:12:42Z iulius $ * * Fake write and writev functions for testing xwrite and xwritev. * * The canonical version of this file is maintained in the rra-c-util package, * which can be found at . * - * Copyright 2000, 2001, 2002, 2004 Russ Allbery + * Copyright 2000-2002, 2004, 2017 Russ Allbery * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -24,6 +24,8 @@ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. + * + * SPDX-License-Identifier: MIT */ #define LIBTEST_NEW_FORMAT 1 @@ -35,10 +37,8 @@ #include #include "inn/macros.h" +#include "lib/fakewrite.h" -ssize_t fake_write(int, const void *, size_t); -ssize_t fake_pwrite(int, const void *, size_t, off_t); -ssize_t fake_writev(int, const struct iovec *, int); /* * All the data is actually written into this buffer. We use write_offset @@ -51,13 +51,13 @@ size_t write_offset = 0; * If write_interrupt is non-zero, then half of the calls to write or writev * will fail, returning -1 with errno set to EINTR. */ -int write_interrupt = 0; +int write_interrupt = false; /* - * If write_fail is non-zero, all writes or writevs will return 0, indicating - * no progress in writing out the buffer. + * If write_fail is true, all writes or writevs will return 0, indicating no + * progress in writing out the buffer. */ -int write_fail = 0; +bool write_fail = false; /* @@ -119,8 +119,8 @@ fake_pwrite(int fd UNUSED, const void *d ssize_t fake_writev(int fd UNUSED, const struct iovec *iov, int iovcnt) { - int total, i; - size_t left, n; + int i; + size_t left, n, total; if (write_fail) return 0; diff -Nurp inn-2.6.1/tests/lib/fakewrite.h inn-2.6.2/tests/lib/fakewrite.h --- inn-2.6.1/tests/lib/fakewrite.h 1969-12-31 16:00:00.000000000 -0800 +++ inn-2.6.2/tests/lib/fakewrite.h 2018-03-18 13:03:32.000000000 -0700 @@ -0,0 +1,61 @@ +/* $Id: fakewrite.h 10246 2018-02-16 21:12:42Z iulius $ + * + * Testing interface to fake write functions. + * + * This header defines the interfaces to fake write functions used to test + * error handling wrappers around system write functions. + * + * Copyright 2000-2002, 2004, 2017 Russ Allbery + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * SPDX-License-Identifier: MIT + */ + +#define LIBTEST_NEW_FORMAT 1 + +#ifndef TESTS_INN_FAKEWRITE_H +#define TESTS_INN_FAKEWRITE_H 1 + +#include "config.h" +#include "portable/macros.h" +#include "portable/stdbool.h" + +#include + +BEGIN_DECLS + +/* Replacement functions called instead of C library calls. */ +extern ssize_t fake_write(int, const void *, size_t); +extern ssize_t fake_pwrite(int, const void *, size_t, off_t); +extern ssize_t fake_writev(int, const struct iovec *, int); + +/* The data written and how many bytes have been written. */ +extern char write_buffer[256]; +extern size_t write_offset; + +/* If true, half the calls to write or writev will fail with EINTR. */ +extern int write_interrupt; + +/* If true, all write or writev calls will return 0. */ +extern bool write_fail; + +END_DECLS + +#endif /* !TESTS_INN_FAKEWRITE_H */ diff -Nurp inn-2.6.1/tests/lib/fdflag-t.c inn-2.6.2/tests/lib/fdflag-t.c --- inn-2.6.1/tests/lib/fdflag-t.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/tests/lib/fdflag-t.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: fdflag-t.c 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: fdflag-t.c 10246 2018-02-16 21:12:42Z iulius $ * * fdflag test suite. * @@ -6,7 +6,7 @@ * which can be found at . * * Written by Russ Allbery - * Copyright 2008, 2009 + * Copyright 2008-2009 * The Board of Trustees of the Leland Stanford Junior University * * Permission is hereby granted, free of charge, to any person obtaining a @@ -26,6 +26,8 @@ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. + * + * SPDX-License-Identifier: MIT */ #define LIBTEST_NEW_FORMAT 1 diff -Nurp inn-2.6.1/tests/lib/getaddrinfo-t.c inn-2.6.2/tests/lib/getaddrinfo-t.c --- inn-2.6.1/tests/lib/getaddrinfo-t.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/tests/lib/getaddrinfo-t.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: getaddrinfo-t.c 10106 2016-11-04 22:45:10Z iulius $ +/* $Id: getaddrinfo-t.c 10246 2018-02-16 21:12:42Z iulius $ * * getaddrinfo test suite. * @@ -6,14 +6,17 @@ * which can be found at . * * Written by Russ Allbery + * Copyright 2003-2005, 2016 Russ Allbery + * Copyright 2015 Julien ÉLIE + * Copyright 2007-2009, 2011-2013 + * The Board of Trustees of the Leland Stanford Junior University * - * The authors hereby relinquish any claim to any copyright that they may have - * in this work, whether granted under contract or by operation of law or - * international treaty, and hereby commit to the public, at large, that they - * shall not, at any time in the future, seek to enforce any copyright in this - * work against any person or entity, or prevent any person or entity from - * copying, publishing, distributing or creating derivative works of this - * work. + * Copying and distribution of this file, with or without modification, are + * permitted in any medium without royalty provided the copyright notice and + * this notice are preserved. This file is offered as-is, without any + * warranty. + * + * SPDX-License-Identifier: FSFAP */ #define LIBTEST_NEW_FORMAT 1 diff -Nurp inn-2.6.1/tests/lib/getnameinfo-t.c inn-2.6.2/tests/lib/getnameinfo-t.c --- inn-2.6.1/tests/lib/getnameinfo-t.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/tests/lib/getnameinfo-t.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: getnameinfo-t.c 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: getnameinfo-t.c 10246 2018-02-16 21:12:42Z iulius $ * * getnameinfo test suite. * @@ -6,14 +6,16 @@ * which can be found at . * * Written by Russ Allbery + * Copyright 2005-2006, 2014 Russ Allbery + * Copyright 2007-2011 + * The Board of Trustees of the Leland Stanford Junior University * - * The authors hereby relinquish any claim to any copyright that they may have - * in this work, whether granted under contract or by operation of law or - * international treaty, and hereby commit to the public, at large, that they - * shall not, at any time in the future, seek to enforce any copyright in this - * work against any person or entity, or prevent any person or entity from - * copying, publishing, distributing or creating derivative works of this - * work. + * Copying and distribution of this file, with or without modification, are + * permitted in any medium without royalty provided the copyright notice and + * this notice are preserved. This file is offered as-is, without any + * warranty. + * + * SPDX-License-Identifier: FSFAP */ #define LIBTEST_NEW_FORMAT 1 diff -Nurp inn-2.6.1/tests/lib/inet_aton-t.c inn-2.6.2/tests/lib/inet_aton-t.c --- inn-2.6.1/tests/lib/inet_aton-t.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/tests/lib/inet_aton-t.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: inet_aton-t.c 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: inet_aton-t.c 10246 2018-02-16 21:12:42Z iulius $ * * inet_aton test suite. * @@ -6,14 +6,16 @@ * which can be found at . * * Written by Russ Allbery + * Copyright 2000-2001, 2004, 2017 Russ Allbery + * Copyright 2007-2009, 2011 + * The Board of Trustees of the Leland Stanford Junior University * - * The authors hereby relinquish any claim to any copyright that they may have - * in this work, whether granted under contract or by operation of law or - * international treaty, and hereby commit to the public, at large, that they - * shall not, at any time in the future, seek to enforce any copyright in this - * work against any person or entity, or prevent any person or entity from - * copying, publishing, distributing or creating derivative works of this - * work. + * Copying and distribution of this file, with or without modification, are + * permitted in any medium without royalty provided the copyright notice and + * this notice are preserved. This file is offered as-is, without any + * warranty. + * + * SPDX-License-Identifier: FSFAP */ #define LIBTEST_NEW_FORMAT 1 @@ -28,7 +30,7 @@ int test_inet_aton(const char *, struct static void -test_addr(const char *string, unsigned long addr) +test_addr(const char *string, uint32_t addr) { int success; struct in_addr in; @@ -58,32 +60,32 @@ main(void) plan(92); test_addr( "0.0.0.0", 0); - test_addr( "127.0.0.000000", 0x7f000000UL); - test_addr( "255.255.255.255", 0xffffffffUL); - test_addr( "172.200.232.199", 0xacc8e8c7UL); - test_addr( "1.2.3.4", 0x01020304UL); + test_addr( "127.0.0.000000", 0x7f000000U); + test_addr( "255.255.255.255", 0xffffffffU); + test_addr( "172.200.232.199", 0xacc8e8c7U); + test_addr( "1.2.3.4", 0x01020304U); test_addr( "0x0.0x0.0x0.0x0", 0); - test_addr("0x7f.0x000.0x0.0x00", 0x7f000000UL); - test_addr("0xff.0xFf.0xFF.0xff", 0xffffffffUL); - test_addr("0xAC.0xc8.0xe8.0xC7", 0xacc8e8c7UL); - test_addr("0xAa.0xbB.0xCc.0xdD", 0xaabbccddUL); - test_addr("0xEe.0xfF.0.0x00000", 0xeeff0000UL); - test_addr("0x1.0x2.0x00003.0x4", 0x01020304UL); + test_addr("0x7f.0x000.0x0.0x00", 0x7f000000U); + test_addr("0xff.0xFf.0xFF.0xff", 0xffffffffU); + test_addr("0xAC.0xc8.0xe8.0xC7", 0xacc8e8c7U); + test_addr("0xAa.0xbB.0xCc.0xdD", 0xaabbccddU); + test_addr("0xEe.0xfF.0.0x00000", 0xeeff0000U); + test_addr("0x1.0x2.0x00003.0x4", 0x01020304U); test_addr( "000000.00.000.00", 0); - test_addr( "0177.0", 0x7f000000UL); - test_addr("0377.0377.0377.0377", 0xffffffffUL); - test_addr("0254.0310.0350.0307", 0xacc8e8c7UL); - test_addr("00001.02.3.00000004", 0x01020304UL); - - test_addr( "16909060", 0x01020304UL); - test_addr( "172.062164307", 0xacc8e8c7UL); - test_addr( "172.0xc8.0xe8c7", 0xacc8e8c7UL); - test_addr( "127.1", 0x7f000001UL); - test_addr( "0xffffffff", 0xffffffffUL); - test_addr( "127.0xffffff", 0x7fffffffUL); - test_addr( "127.127.0xffff", 0x7f7fffffUL); + test_addr( "0177.0", 0x7f000000U); + test_addr("0377.0377.0377.0377", 0xffffffffU); + test_addr("0254.0310.0350.0307", 0xacc8e8c7U); + test_addr("00001.02.3.00000004", 0x01020304U); + + test_addr( "16909060", 0x01020304U); + test_addr( "172.062164307", 0xacc8e8c7U); + test_addr( "172.0xc8.0xe8c7", 0xacc8e8c7U); + test_addr( "127.1", 0x7f000001U); + test_addr( "0xffffffff", 0xffffffffU); + test_addr( "127.0xffffff", 0x7fffffffU); + test_addr( "127.127.0xffff", 0x7f7fffffU); test_fail( ""); test_fail( "Donald Duck!"); diff -Nurp inn-2.6.1/tests/lib/inet_ntoa-t.c inn-2.6.2/tests/lib/inet_ntoa-t.c --- inn-2.6.1/tests/lib/inet_ntoa-t.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/tests/lib/inet_ntoa-t.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: inet_ntoa-t.c 10104 2016-11-04 22:41:36Z iulius $ +/* $Id: inet_ntoa-t.c 10246 2018-02-16 21:12:42Z iulius $ * * inet_ntoa test suite. * @@ -6,14 +6,16 @@ * which can be found at . * * Written by Russ Allbery + * Copyright 2000-2001, 2004, 2016-2017 Russ Allbery + * Copyright 2006-2009, 2011 + * The Board of Trustees of the Leland Stanford Junior University * - * The authors hereby relinquish any claim to any copyright that they may have - * in this work, whether granted under contract or by operation of law or - * international treaty, and hereby commit to the public, at large, that they - * shall not, at any time in the future, seek to enforce any copyright in this - * work against any person or entity, or prevent any person or entity from - * copying, publishing, distributing or creating derivative works of this - * work. + * Copying and distribution of this file, with or without modification, are + * permitted in any medium without royalty provided the copyright notice and + * this notice are preserved. This file is offered as-is, without any + * warranty. + * + * SPDX-License-Identifier: FSFAP */ #define LIBTEST_NEW_FORMAT 1 @@ -28,7 +30,7 @@ char *test_inet_ntoa(struct in_addr); static void -test_addr(const char *expected, unsigned long addr) +test_addr(const char *expected, uint32_t addr) { struct in_addr in; @@ -43,10 +45,10 @@ main(void) plan(5); test_addr( "0.0.0.0", 0x0); - test_addr( "127.0.0.0", 0x7f000000UL); - test_addr("255.255.255.255", 0xffffffffUL); - test_addr("172.200.232.199", 0xacc8e8c7UL); - test_addr( "1.2.3.4", 0x01020304UL); + test_addr( "127.0.0.0", 0x7f000000U); + test_addr("255.255.255.255", 0xffffffffU); + test_addr("172.200.232.199", 0xacc8e8c7U); + test_addr( "1.2.3.4", 0x01020304U); return 0; } diff -Nurp inn-2.6.1/tests/lib/inet_ntop-t.c inn-2.6.2/tests/lib/inet_ntop-t.c --- inn-2.6.1/tests/lib/inet_ntop-t.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/tests/lib/inet_ntop-t.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: inet_ntop-t.c 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: inet_ntop-t.c 10246 2018-02-16 21:12:42Z iulius $ * * inet_ntop test suite. * @@ -6,14 +6,16 @@ * which can be found at . * * Written by Russ Allbery + * Copyright 2005, 2017 Russ Allbery + * Copyright 2006-2009, 2011 + * The Board of Trustees of the Leland Stanford Junior University * - * The authors hereby relinquish any claim to any copyright that they may have - * in this work, whether granted under contract or by operation of law or - * international treaty, and hereby commit to the public, at large, that they - * shall not, at any time in the future, seek to enforce any copyright in this - * work against any person or entity, or prevent any person or entity from - * copying, publishing, distributing or creating derivative works of this - * work. + * Copying and distribution of this file, with or without modification, are + * permitted in any medium without royalty provided the copyright notice and + * this notice are preserved. This file is offered as-is, without any + * warranty. + * + * SPDX-License-Identifier: FSFAP */ #define LIBTEST_NEW_FORMAT 1 @@ -35,14 +37,14 @@ const char *test_inet_ntop(int, const vo static void -test_addr(const char *expected, unsigned long addr) +test_addr(const char *expected, uint32_t addr) { struct in_addr in; char result[INET_ADDRSTRLEN]; in.s_addr = htonl(addr); if (test_inet_ntop(AF_INET, &in, result, sizeof(result)) == NULL) { - printf("# cannot convert %lu: %s", addr, strerror(errno)); + printf("# cannot convert %u: %s", addr, strerror(errno)); ok(0, "converting %s", expected); } else ok(1, "converting %s", expected); @@ -63,10 +65,10 @@ main(void) is_int(ENOSPC, errno, "...with right errno"); test_addr( "0.0.0.0", 0x0); - test_addr( "127.0.0.0", 0x7f000000UL); - test_addr("255.255.255.255", 0xffffffffUL); - test_addr("172.200.232.199", 0xacc8e8c7UL); - test_addr( "1.2.3.4", 0x01020304UL); + test_addr( "127.0.0.0", 0x7f000000U); + test_addr("255.255.255.255", 0xffffffffU); + test_addr("172.200.232.199", 0xacc8e8c7U); + test_addr( "1.2.3.4", 0x01020304U); return 0; } diff -Nurp inn-2.6.1/tests/lib/memcmp-t.c inn-2.6.2/tests/lib/memcmp-t.c --- inn-2.6.1/tests/lib/memcmp-t.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/tests/lib/memcmp-t.c 1969-12-31 16:00:00.000000000 -0800 @@ -1,34 +0,0 @@ -/* $Id: memcmp-t.c 9669 2014-09-03 17:18:22Z iulius $ */ -/* memcmp test suite. */ - -#include "config.h" -#include -#include - -#include "tap/basic.h" - -int test_memcmp(const void *, const void *, size_t); - -int -main(void) -{ - test_init(15); - - ok( 1, test_memcmp("", "", 0) == 0); - ok( 2, test_memcmp("", "", 1) == 0); - ok( 3, test_memcmp("alpha", "alpha", 6) == 0); - ok( 4, test_memcmp("alpha", "beta", 5) < 0); - ok( 5, test_memcmp("beta", "alpha", 5) > 0); - ok( 6, test_memcmp("alpha", "apple", 1) == 0); - ok( 7, test_memcmp("alpha", "apple", 2) < 0); - ok( 8, test_memcmp("\0v", "\0w", 2) < 0); - ok( 9, test_memcmp("\200\201\202", "\200\201\202", 4) == 0); - ok(10, test_memcmp("\200\201\202", "\200\201\203", 4) < 0); - ok(11, test_memcmp("\200\201\203", "\200\201\202", 4) > 0); - ok(12, test_memcmp("al\0po", "al\0pha", 6) > 0); - ok(13, test_memcmp("\100", "\201", 1) < 0); - ok(14, test_memcmp("\200", "\201", 1) < 0); - ok(15, test_memcmp("a", "b", 0) == 0); - - return 0; -} diff -Nurp inn-2.6.1/tests/lib/messageid-t.c inn-2.6.2/tests/lib/messageid-t.c --- inn-2.6.1/tests/lib/messageid-t.c 1969-12-31 16:00:00.000000000 -0800 +++ inn-2.6.2/tests/lib/messageid-t.c 2018-03-18 13:03:32.000000000 -0700 @@ -0,0 +1,123 @@ +/* +** messageid test suite. +** +** $Id: messageid-t.c 10149 2017-06-05 12:24:58Z iulius $ +*/ + +#define LIBTEST_NEW_FORMAT 1 + +#include "inn/libinn.h" +#include "tap/basic.h" + +void testMessageIDs(bool stripspaces, bool laxsyntax); + +/* + * Test a bunch of message-IDs that are always either bad or good, no matter + * how lax we are. + */ +void +testMessageIDs(bool strip, bool lax) +{ + is_bool(false, IsValidMessageID(NULL, strip, lax), + "bad ID 1"); + is_bool(false, IsValidMessageID("", strip, lax), + "bad ID 2"); + is_bool(false, IsValidMessageID("", strip, lax), + "bad ID 4"); + is_bool(false, IsValidMessageID("", strip, lax), + "bad ID 5"); + is_bool(false, IsValidMessageID("", strip, lax), + "bad ID 6"); + is_bool(false, IsValidMessageID("", strip, lax), + "bad ID 7"); + is_bool(false, IsValidMessageID("", strip, lax), + "bad ID 8"); + is_bool(false, IsValidMessageID("", strip, lax), + "bad ID 9"); + is_bool(false, IsValidMessageID("", strip, lax), + "bad ID 10"); + is_bool(false, IsValidMessageID("", strip, lax), + "bad ID 11"); + is_bool(false, IsValidMessageID("", strip, lax), + "bad ID 12"); + is_bool(false, IsValidMessageID("lid@test>", strip, lax), + "bad ID 13"); + is_bool(false, IsValidMessageID("", strip, lax), + "bad ID 14"); + is_bool(false, IsValidMessageID("<>", strip, lax), + "bad ID 15"); + is_bool(false, IsValidMessageID("", strip, lax), + "bad ID 16"); + is_bool(false, IsValidMessageID("<123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890@1234567890>", strip, lax), + "bad ID 17"); + is_bool(false, IsValidMessageID("", strip, lax), + "bad ID 18"); + is_bool(false, IsValidMessageID("", strip, lax), + "bad ID 19"); + is_bool(false, IsValidMessageID("", strip, lax), + "bad ID 20"); + is_bool(false, IsValidMessageID("", strip, lax), + "bad ID 21"); + is_bool(false, IsValidMessageID("<@invalid>", strip, lax), + "bad ID 22"); + is_bool(false, IsValidMessageID("", strip, lax), + "bad ID 23"); + is_bool(false, IsValidMessageID("", strip, lax), + "bad ID 24"); + is_bool(false, IsValidMessageID("", strip, lax), + "bad ID 25"); + is_bool(false, IsValidMessageID("", strip, lax), + "bad ID 26"); + + is_bool(true, IsValidMessageID("", strip, lax), + "good ID 1"); + is_bool(true, IsValidMessageID("", strip, lax), + "good ID 2"); + is_bool(true, IsValidMessageID("", strip, lax), + "good ID 3"); + is_bool(true, IsValidMessageID("", strip, lax), + "good ID 4"); + is_bool(true, IsValidMessageID("", strip, lax), + "good ID 5"); + is_bool(true, IsValidMessageID("", strip, lax), + "good ID 6"); +} + + + +int +main(void) +{ + plan(4*(25+7)+2+5); + + InitializeMessageIDcclass(); + + /* Test several message-IDs with and without stripping spaces and lax + * syntax. */ + testMessageIDs(true, true); + testMessageIDs(true, false); + testMessageIDs(false, true); + testMessageIDs(false, false); + + /* Test whether stripping spaces works. */ + is_bool(true, IsValidMessageID(" \t\t \t ", true, false), + "good ID stripspaces 1"); + is_bool(false, IsValidMessageID(" \t\t \t ", false, false), + "bad ID stripspaces 1"); + + /* Test whether lax syntax works. */ + is_bool(true, IsValidMessageID("", false, true), + "good ID laxsyntax 1"); + is_bool(false, IsValidMessageID("", false, false), + "bad ID laxsyntax 1"); + is_bool(true, IsValidMessageID("", false, true), + "good ID laxsyntax 2"); + is_bool(false, IsValidMessageID("", false, false), + "bad ID laxsyntax 2"); + is_bool(false, IsValidMessageID("", false, true), + "bad ID laxsyntax 3"); + + return 0; +} diff -Nurp inn-2.6.1/tests/lib/messages-t.c inn-2.6.2/tests/lib/messages-t.c --- inn-2.6.1/tests/lib/messages-t.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/tests/lib/messages-t.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: messages-t.c 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: messages-t.c 10246 2018-02-16 21:12:42Z iulius $ * * Test suite for error handling routines. * @@ -6,8 +6,8 @@ * which can be found at . * * Written by Russ Allbery - * Copyright 2002, 2004, 2005, 2015 Russ Allbery - * Copyright 2009, 2010, 2011, 2012 + * Copyright 2002, 2004-2005, 2015, 2017 Russ Allbery + * Copyright 2009-2012 * The Board of Trustees of the Leland Stanford Junior University * * Permission is hereby granted, free of charge, to any person obtaining a @@ -27,6 +27,8 @@ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. + * + * SPDX-License-Identifier: MIT */ #define LIBTEST_NEW_FORMAT 1 @@ -49,45 +51,87 @@ /* * Test functions. */ -static void test1(void *data UNUSED) { warn("warning"); } -static void test2(void *data UNUSED) { die("fatal"); } -static void test3(void *data UNUSED) { errno = EPERM; syswarn("permissions"); } -static void test4(void *data UNUSED) { +static void +test1(void *data UNUSED) +{ + warn("warning"); +} + +static void __attribute__((__noreturn__)) +test2(void *data UNUSED) +{ + die("fatal"); +} + +static void +test3(void *data UNUSED) +{ + errno = EPERM; + syswarn("permissions"); +} + +static void __attribute__((__noreturn__)) +test4(void *data UNUSED) +{ errno = EACCES; sysdie("fatal access"); } -static void test5(void *data UNUSED) { + +static void +test5(void *data UNUSED) +{ message_program_name = "test5"; warn("warning"); } -static void test6(void *data UNUSED) { + +static void __attribute__((__noreturn__)) +test6(void *data UNUSED) +{ message_program_name = "test6"; die("fatal"); } -static void test7(void *data UNUSED) { + +static void +test7(void *data UNUSED) +{ message_program_name = "test7"; errno = EPERM; syswarn("perms %d", 7); } -static void test8(void *data UNUSED) { + +static void __attribute__((__noreturn__)) +test8(void *data UNUSED) +{ message_program_name = "test8"; errno = EACCES; sysdie("%st%s", "fa", "al"); } -static int return10(void) { return 10; } +static int +return10(void) +{ + return 10; +} -static void test9(void *data UNUSED) { +static void __attribute__((__noreturn__)) +test9(void *data UNUSED) +{ message_fatal_cleanup = return10; die("fatal"); } -static void test10(void *data UNUSED) { + +static void __attribute__((__noreturn__)) +test10(void *data UNUSED) +{ message_program_name = 0; message_fatal_cleanup = return10; errno = EPERM; sysdie("fatal perm"); } -static void test11(void *data UNUSED) { + +static void __attribute__((__noreturn__)) +test11(void *data UNUSED) +{ message_program_name = "test11"; message_fatal_cleanup = return10; errno = EPERM; @@ -96,61 +140,104 @@ static void test11(void *data UNUSED) { } static void __attribute__((__format__(printf, 2, 0))) -log_msg(size_t len, const char *format, va_list args, int error) { +log_msg(size_t len, const char *format, va_list args, int error) +{ fprintf(stderr, "%lu %d ", (unsigned long) len, error); vfprintf(stderr, format, args); fprintf(stderr, "\n"); } -static void test12(void *data UNUSED) { +static void +test12(void *data UNUSED) +{ message_handlers_warn(1, log_msg); warn("warning"); } -static void test13(void *data UNUSED) { + +static void __attribute__((__noreturn__)) +test13(void *data UNUSED) +{ message_handlers_die(1, log_msg); die("fatal"); } -static void test14(void *data UNUSED) { + +static void +test14(void *data UNUSED) +{ message_handlers_warn(2, log_msg, log_msg); errno = EPERM; syswarn("warning"); } -static void test15(void *data UNUSED) { + +static void __attribute__((__noreturn__)) +test15(void *data UNUSED) +{ message_handlers_die(2, log_msg, log_msg); message_fatal_cleanup = return10; errno = EPERM; sysdie("fatal"); } -static void test16(void *data UNUSED) { + +static void +test16(void *data UNUSED) +{ message_handlers_warn(2, message_log_stderr, log_msg); message_program_name = "test16"; errno = EPERM; syswarn("warning"); } -static void test17(void *data UNUSED) { notice("notice"); } -static void test18(void *data UNUSED) { + +static void +test17(void *data UNUSED) +{ + notice("notice"); +} + +static void +test18(void *data UNUSED) +{ message_program_name = "test18"; notice("notice"); } -static void test19(void *data UNUSED) { debug("debug"); } -static void test20(void *data UNUSED) { + +static void +test19(void *data UNUSED) +{ + debug("debug"); +} + +static void +test20(void *data UNUSED) +{ message_handlers_notice(1, log_msg); notice("foo"); } -static void test21(void *data UNUSED) { + +static void +test21(void *data UNUSED) +{ message_handlers_debug(1, message_log_stdout); message_program_name = "test23"; debug("baz"); } -static void test22(void *data UNUSED) { + +static void __attribute__((__noreturn__)) +test22(void *data UNUSED) +{ message_handlers_die(0); die("hi mom!"); } -static void test23(void *data UNUSED) { + +static +void test23(void *data UNUSED) +{ message_handlers_warn(0); warn("this is a test"); } -static void test24(void *data UNUSED) { + +static +void test24(void *data UNUSED) +{ notice("first"); message_handlers_notice(0); notice("second"); diff -Nurp inn-2.6.1/tests/lib/mkstemp-t.c inn-2.6.2/tests/lib/mkstemp-t.c --- inn-2.6.1/tests/lib/mkstemp-t.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/tests/lib/mkstemp-t.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: mkstemp-t.c 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: mkstemp-t.c 10246 2018-02-16 21:12:42Z iulius $ * * mkstemp test suite. * @@ -6,14 +6,15 @@ * which can be found at . * * Written by Russ Allbery + * Copyright 2009, 2011 + * The Board of Trustees of the Leland Stanford Junior University * - * The authors hereby relinquish any claim to any copyright that they may have - * in this work, whether granted under contract or by operation of law or - * international treaty, and hereby commit to the public, at large, that they - * shall not, at any time in the future, seek to enforce any copyright in this - * work against any person or entity, or prevent any person or entity from - * copying, publishing, distributing or creating derivative works of this - * work. + * Copying and distribution of this file, with or without modification, are + * permitted in any medium without royalty provided the copyright notice and + * this notice are preserved. This file is offered as-is, without any + * warranty. + * + * SPDX-License-Identifier: FSFAP */ #define LIBTEST_NEW_FORMAT 1 diff -Nurp inn-2.6.1/tests/lib/network/addr-ipv4-t.c inn-2.6.2/tests/lib/network/addr-ipv4-t.c --- inn-2.6.1/tests/lib/network/addr-ipv4-t.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/tests/lib/network/addr-ipv4-t.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: addr-ipv4-t.c 10105 2016-11-04 22:42:26Z iulius $ +/* $Id: addr-ipv4-t.c 10246 2018-02-16 21:12:42Z iulius $ * * Test network address functions for IPv4. * @@ -7,7 +7,7 @@ * * Written by Russ Allbery * Copyright 2005, 2013, 2016 Russ Allbery - * Copyright 2009, 2010, 2011, 2012, 2013 + * Copyright 2009-2013 * The Board of Trustees of the Leland Stanford Junior University * * Permission is hereby granted, free of charge, to any person obtaining a @@ -27,6 +27,8 @@ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. + * + * SPDX-License-Identifier: MIT */ #define LIBTEST_NEW_FORMAT 1 @@ -58,8 +60,11 @@ is_addr_compare(bool expected, const cha int main(void) { - int flag, status; +#ifdef SO_REUSEADDR + int flag; socklen_t flaglen; +#endif + int status; struct addrinfo *ai, *ai2; struct addrinfo hints; char addr[INET6_ADDRSTRLEN]; diff -Nurp inn-2.6.1/tests/lib/network/addr-ipv6-t.c inn-2.6.2/tests/lib/network/addr-ipv6-t.c --- inn-2.6.1/tests/lib/network/addr-ipv6-t.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/tests/lib/network/addr-ipv6-t.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: addr-ipv6-t.c 10105 2016-11-04 22:42:26Z iulius $ +/* $Id: addr-ipv6-t.c 10246 2018-02-16 21:12:42Z iulius $ * * Test network address functions for IPv6. * @@ -6,8 +6,8 @@ * which can be found at . * * Written by Russ Allbery - * Copyright 2005, 2013, 2016 Russ Allbery - * Copyright 2009, 2010, 2011, 2012, 2013 + * Copyright 2005, 2013, 2016-2018 Russ Allbery + * Copyright 2009-2013 * The Board of Trustees of the Leland Stanford Junior University * * Permission is hereby granted, free of charge, to any person obtaining a @@ -27,6 +27,8 @@ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. + * + * SPDX-License-Identifier: MIT */ #define LIBTEST_NEW_FORMAT 1 @@ -60,8 +62,7 @@ is_addr_compare(bool expected, const cha int main(void) { - int flag, status; - socklen_t flaglen; + int status; struct addrinfo *ai4, *ai6; struct addrinfo hints; char addr[INET6_ADDRSTRLEN]; @@ -69,6 +70,10 @@ main(void) socket_type fd; static const char *port = "119"; static const char *ipv6_addr = "FEDC:BA98:7654:3210:FEDC:BA98:7654:3210"; +#if defined(SO_REUSEADDR) || defined(IPV6_V6ONLY) || defined(IP_FREEBIND) + int flag; + socklen_t flaglen; +#endif #ifndef HAVE_INET6 skip_all("IPv6 not supported"); @@ -93,7 +98,7 @@ main(void) "sprint of IPv6 address"); for (p = addr; *p != '\0'; p++) if (islower((unsigned char) *p)) - *p = toupper((unsigned char) *p); + *p = (char) toupper((unsigned char) *p); is_string(ipv6_addr, addr, "...with right results"); /* Test network_sockaddr_port. */ diff -Nurp inn-2.6.1/tests/lib/network/client-t.c inn-2.6.2/tests/lib/network/client-t.c --- inn-2.6.1/tests/lib/network/client-t.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/tests/lib/network/client-t.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: client-t.c 10105 2016-11-04 22:42:26Z iulius $ +/* $Id: client-t.c 10246 2018-02-16 21:12:42Z iulius $ * * Test suite for network client and read/write functions. * @@ -6,8 +6,8 @@ * which can be found at . * * Written by Russ Allbery - * Copyright 2005, 2013, 2014, 2016 Russ Allbery - * Copyright 2009, 2010, 2011, 2012, 2013 + * Copyright 2005, 2013-2014, 2016-2017 Russ Allbery + * Copyright 2009-2013 * The Board of Trustees of the Leland Stanford Junior University * * Permission is hereby granted, free of charge, to any person obtaining a @@ -27,6 +27,8 @@ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. + * + * SPDX-License-Identifier: MIT */ #define LIBTEST_NEW_FORMAT 1 @@ -50,7 +52,7 @@ * and expects to always succeed on the connection, taking the source address * to pass into network_client_create. */ -static void +static void __attribute__((__noreturn__)) client_create_writer(const char *source) { socket_type fd; @@ -80,7 +82,7 @@ client_create_writer(const char *source) * sleeps for 10 seconds before sending another string so that timeouts can be * tested. Meant to be run in a child process. */ -static void +static void __attribute__((__noreturn__)) client_delay_writer(const char *host) { socket_type fd; @@ -103,7 +105,7 @@ client_delay_writer(const char *host) * Used to test network_write. Connects, reads 64KB from the network, then * sleeps before reading another 64KB. Meant to be run in a child process. */ -static void +static void __attribute__((__noreturn__)) client_delay_reader(const char *host) { char *buffer; diff -Nurp inn-2.6.1/tests/lib/network/server-t.c inn-2.6.2/tests/lib/network/server-t.c --- inn-2.6.1/tests/lib/network/server-t.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/tests/lib/network/server-t.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: server-t.c 10105 2016-11-04 22:42:26Z iulius $ +/* $Id: server-t.c 10246 2018-02-16 21:12:42Z iulius $ * * Test suite for network server functions. * @@ -6,8 +6,8 @@ * which can be found at . * * Written by Russ Allbery - * Copyright 2005, 2013, 2016 Russ Allbery - * Copyright 2009, 2010, 2011, 2012, 2013 + * Copyright 2005, 2013, 2016-2018 Russ Allbery + * Copyright 2009-2013 * The Board of Trustees of the Leland Stanford Junior University * * Permission is hereby granted, free of charge, to any person obtaining a @@ -27,6 +27,8 @@ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. + * + * SPDX-License-Identifier: MIT */ #define LIBTEST_NEW_FORMAT 1 @@ -148,7 +150,7 @@ client_writer(const char *host, const ch * localhost, from the given source address, containing a constant string. * This also verifies that network_client_create works properly. */ -static void +static void __attribute__((__noreturn__)) client_udp_writer(const char *source) { socket_type fd; @@ -237,8 +239,13 @@ test_server_accept(socket_type fd) * A varient version of the server portion of the test. Takes an array of * sockets and the size of the sockets and accepts a connection on any of * those sockets. Ensures that the client address information is stored - * correctly by checking that it is set to IPv4 localhost. For skipping - * purposes, this produces four tests. + * correctly by checking that it is an IPv4 address. For skipping purposes, + * this produces three tests. + * + * Normally, the client address should be 127.0.0.1, but hosts with odd local + * networking setups may rewrite client IP addresses so that they appear to + * come from other addresses. Avoid checking if the client IP is 127.0.0.1 + * for that reason. Hopefully this won't hide bugs. * * saddr is allocated from the heap instead of using a local struct * sockaddr_storage to work around a misdiagnosis of strict aliasing @@ -261,9 +268,6 @@ test_server_accept_any(socket_type fds[] client = network_accept_any(fds, count, saddr, &slen); test_server_connection(client); is_int(AF_INET, saddr->sa_family, "...address family is IPv4"); - is_int(htonl(0x7f000001UL), - ((struct sockaddr_in *) (void *) saddr)->sin_addr.s_addr, - "...and client address is 127.0.0.1"); free(saddr); for (i = 0; i < count; i++) socket_close(fds[i]); @@ -526,9 +530,17 @@ test_any_udp(void) is_int(13, length, "...of correct length"); sin.sin_family = AF_INET; sin.sin_port = htons(11119); - sin.sin_addr.s_addr = htonl(0x7f000001UL); + + /* + * We'd prefer to check that the client IP address is 127.0.0.1 here, + * but hosts with odd local networking setups may rewrite the client + * IP address to something else. To avoid false positives, just + * blindly trust the client IP address is correct, since it seems + * unlikely we'll have a server code bug here. + */ + sin.sin_addr = ((struct sockaddr_in *) &addr)->sin_addr; ok(network_sockaddr_equal((struct sockaddr *) &sin, saddr), - "...from correct address"); + "...from correct family and port"); buffer[13] = '\0'; is_string("socket test\r\n", buffer, "...and correct contents"); } @@ -548,7 +560,7 @@ int main(void) { /* Set up the plan. */ - plan(43); + plan(42); /* Test network_bind functions. */ test_ipv4(NULL); diff -Nurp inn-2.6.1/tests/lib/reallocarray-t.c inn-2.6.2/tests/lib/reallocarray-t.c --- inn-2.6.1/tests/lib/reallocarray-t.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/tests/lib/reallocarray-t.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: reallocarray-t.c 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: reallocarray-t.c 10246 2018-02-16 21:12:42Z iulius $ * * reallocarray test suite. * @@ -9,14 +9,16 @@ * which can be found at . * * Written by Russ Allbery + * Copyright 2014 Russ Allbery + * Copyright 2014 + * The Board of Trustees of the Leland Stanford Junior University * - * The authors hereby relinquish any claim to any copyright that they may have - * in this work, whether granted under contract or by operation of law or - * international treaty, and hereby commit to the public, at large, that they - * shall not, at any time in the future, seek to enforce any copyright in this - * work against any person or entity, or prevent any person or entity from - * copying, publishing, distributing or creating derivative works of this - * work. + * Copying and distribution of this file, with or without modification, are + * permitted in any medium without royalty provided the copyright notice and + * this notice are preserved. This file is offered as-is, without any + * warranty. + * + * SPDX-License-Identifier: FSFAP */ #define LIBTEST_NEW_FORMAT 1 diff -Nurp inn-2.6.1/tests/lib/setenv-t.c inn-2.6.2/tests/lib/setenv-t.c --- inn-2.6.1/tests/lib/setenv-t.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/tests/lib/setenv-t.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: setenv-t.c 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: setenv-t.c 10246 2018-02-16 21:12:42Z iulius $ * * setenv test suite. * @@ -6,14 +6,16 @@ * which can be found at . * * Written by Russ Allbery + * Copyright 2000-2006, 2017 Russ Allbery + * Copyright 2006-2009, 2011 + * The Board of Trustees of the Leland Stanford Junior University * - * The authors hereby relinquish any claim to any copyright that they may have - * in this work, whether granted under contract or by operation of law or - * international treaty, and hereby commit to the public, at large, that they - * shall not, at any time in the future, seek to enforce any copyright in this - * work against any person or entity, or prevent any person or entity from - * copying, publishing, distributing or creating derivative works of this - * work. + * Copying and distribution of this file, with or without modification, are + * permitted in any medium without royalty provided the copyright notice and + * this notice are preserved. This file is offered as-is, without any + * warranty. + * + * SPDX-License-Identifier: FSFAP */ #define LIBTEST_NEW_FORMAT 1 diff -Nurp inn-2.6.1/tests/lib/snprintf-t.c inn-2.6.2/tests/lib/snprintf-t.c --- inn-2.6.1/tests/lib/snprintf-t.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/tests/lib/snprintf-t.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: snprintf-t.c 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: snprintf-t.c 10246 2018-02-16 21:12:42Z iulius $ * * snprintf test suite. * @@ -6,9 +6,8 @@ * which can be found at . * * Written by Russ Allbery - * Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006 - * Russ Allbery - * Copyright 2009, 2010 + * Copyright 2000-2006, 2018 Russ Allbery + * Copyright 2009-2010 * The Board of Trustees of the Leland Stanford Junior University * Copyright 1995 Patrick Powell * Copyright 2001 Hrvoje Niksic @@ -16,6 +15,8 @@ * This code is based on code written by Patrick Powell (papowell@astart.com) * It may be used for any purpose as long as this notice remains intact * on all source code distributions + * + * There is no SPDX-License-Identifier registered for this license. */ #define LIBTEST_NEW_FORMAT 1 @@ -162,7 +163,7 @@ main(void) &count, string, &lcount); is_int(0, count, "correct output from two %%n"); is_int(31, lcount, "correct output from long %%ln"); - test_format(true, "(null)", 6, "%s", NULL); + test_format(true, "(null)", 6, "%s", (char *) NULL); for (i = 0; fp_formats[i] != NULL; i++) for (j = 0; j < ARRAY_SIZE(fp_nums); j++) { diff -Nurp inn-2.6.1/tests/lib/vector-t.c inn-2.6.2/tests/lib/vector-t.c --- inn-2.6.1/tests/lib/vector-t.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/tests/lib/vector-t.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: vector-t.c 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: vector-t.c 10246 2018-02-16 21:12:42Z iulius $ * * vector test suite. * @@ -6,14 +6,16 @@ * which can be found at . * * Written by Russ Allbery + * Copyright 2001-2002, 2004-2006, 2017 Russ Allbery + * Copyright 2006, 2008-2013 + * The Board of Trustees of the Leland Stanford Junior University * - * The authors hereby relinquish any claim to any copyright that they may have - * in this work, whether granted under contract or by operation of law or - * international treaty, and hereby commit to the public, at large, that they - * shall not, at any time in the future, seek to enforce any copyright in this - * work against any person or entity, or prevent any person or entity from - * copying, publishing, distributing or creating derivative works of this - * work. + * Copying and distribution of this file, with or without modification, are + * permitted in any medium without royalty provided the copyright notice and + * this notice are preserved. This file is offered as-is, without any + * warranty. + * + * SPDX-License-Identifier: FSFAP */ #define LIBTEST_NEW_FORMAT 1 diff -Nurp inn-2.6.1/tests/lib/xmalloc.c inn-2.6.2/tests/lib/xmalloc.c --- inn-2.6.1/tests/lib/xmalloc.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/tests/lib/xmalloc.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,12 +1,12 @@ -/* $Id: xmalloc.c 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: xmalloc.c 10246 2018-02-16 21:12:42Z iulius $ * * Test suite for xmalloc and family. * * The canonical version of this file is maintained in the rra-c-util package, * which can be found at . * - * Copyright 2000, 2001, 2006 Russ Allbery - * Copyright 2008, 2012, 2013, 2014 + * Copyright 2000-2001, 2006, 2017 Russ Allbery + * Copyright 2008, 2012-2014 * The Board of Trustees of the Leland Stanford Junior University * * Permission is hereby granted, free of charge, to any person obtaining a @@ -26,6 +26,8 @@ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. + * + * SPDX-License-Identifier: MIT */ #define LIBTEST_NEW_FORMAT 1 @@ -53,7 +55,7 @@ * A customized error handler for checking xmalloc's support of them. Prints * out the error message and exits with status 1. */ -static void +static void __attribute__((__noreturn__)) test_handler(const char *function, size_t size, const char *file, int line) { die("%s %lu %s %d", function, (unsigned long) size, file, line); @@ -330,7 +332,7 @@ main(int argc, char *argv[]) code = argv[1][0]; if (isupper(code)) { xmalloc_error_handler = test_handler; - code = tolower(code); + code = (unsigned char) tolower(code); } /* @@ -393,9 +395,7 @@ main(int argc, char *argv[]) case 'n': exit(test_strndup(size) ? willfail : 1); case 'a': exit(test_asprintf(size) ? willfail : 1); case 'v': exit(test_vasprintf(size) ? willfail : 1); - default: - die("Unknown mode %c", argv[1][0]); - break; + default: die("Unknown mode %c", argv[1][0]); } exit(1); } diff -Nurp inn-2.6.1/tests/lib/xmalloc.t inn-2.6.2/tests/lib/xmalloc.t --- inn-2.6.1/tests/lib/xmalloc.t 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/tests/lib/xmalloc.t 2018-03-18 13:03:32.000000000 -0700 @@ -1,6 +1,6 @@ #! /bin/sh # -# $Id: xmalloc.t 10099 2016-11-04 22:21:59Z iulius $ +# $Id: xmalloc.t 10246 2018-02-16 21:12:42Z iulius $ # # Test suite for xmalloc and friends. # @@ -8,8 +8,8 @@ # which can be found at . # # Written by Russ Allbery -# Copyright 2000, 2001, 2006, 2014, 2016 Russ Allbery -# Copyright 2008, 2009, 2010, 2012 +# Copyright 2000-2001, 2006, 2014, 2016 Russ Allbery +# Copyright 2008-2010, 2012 # The Board of Trustees of the Leland Stanford Junior University # # Permission is hereby granted, free of charge, to any person obtaining a @@ -29,6 +29,8 @@ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # DEALINGS IN THE SOFTWARE. +# +# SPDX-License-Identifier: MIT . "$C_TAP_SOURCE/tap/libtap.sh" cd "$C_TAP_BUILD/lib" diff -Nurp inn-2.6.1/tests/lib/xwrite-t.c inn-2.6.2/tests/lib/xwrite-t.c --- inn-2.6.1/tests/lib/xwrite-t.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/tests/lib/xwrite-t.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,11 +1,11 @@ -/* $Id: xwrite-t.c 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: xwrite-t.c 10246 2018-02-16 21:12:42Z iulius $ * * Test suite for xwrite, xwritev, and xpwrite. * * The canonical version of this file is maintained in the rra-c-util package, * which can be found at . * - * Copyright 2000, 2001, 2002, 2004 Russ Allbery + * Copyright 2000-2002, 2004, 2017 Russ Allbery * Copyright 2009, 2014 * The Board of Trustees of the Leland Stanford Junior University * @@ -26,6 +26,8 @@ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. + * + * SPDX-License-Identifier: MIT */ #define LIBTEST_NEW_FORMAT 1 @@ -37,20 +39,15 @@ #include #include "tap/basic.h" +#include "lib/fakewrite.h" #include "inn/xwrite.h" /* The data array we'll use to do testing. */ -char data[256]; - -/* These come from fakewrite. */ -extern char write_buffer[]; -extern size_t write_offset; -extern int write_interrupt; -extern int write_fail; +static char data[256]; static void -test_write(int status, int total, const char *name) +test_write(ssize_t status, int total, const char *name) { is_int(total, status, "%s return status", name); ok(memcmp(data, write_buffer, 256) == 0, "%s output", name); @@ -67,7 +64,7 @@ main(void) /* Test xwrite. */ for (i = 0; i < 256; i++) - data[i] = i; + data[i] = (char) i; test_write(xwrite(0, data, 256), 256, "xwrite"); write_offset = 0; write_interrupt = 1; @@ -75,10 +72,10 @@ main(void) test_write(xwrite(0, data, 256), 256, "xwrite interrupted"); write_offset = 0; for (i = 0; i < 32; i++) - data[i] = i * 2; + data[i] = (char) (i * 2); test_write(xwrite(0, data, 32), 32, "xwrite first block"); for (i = 32; i < 65; i++) - data[i] = i * 2; + data[i] = (char) (i * 2); test_write(xwrite(0, data + 32, 33), 33, "xwrite second block"); write_offset = 0; write_interrupt = 0; @@ -90,7 +87,7 @@ main(void) test_write(xwritev(0, iov, 1), 256, "xwritev"); write_offset = 0; for (i = 0; i < 256; i++) - data[i] = i; + data[i] = (char) i; iov[0].iov_len = 128; iov[1].iov_base = &data[128]; iov[1].iov_len = 16; @@ -105,11 +102,11 @@ main(void) iov[1].iov_len = 224; test_write(xwritev(0, iov, 2), 256, "xwritev interrupted"); for (i = 0; i < 32; i++) - data[i] = i * 2; + data[i] = (char) (i * 2); write_offset = 0; test_write(xwritev(0, iov, 1), 32, "xwritev first block"); for (i = 32; i < 65; i++) - data[i] = i * 2; + data[i] = (char) (i * 2); iov[0].iov_base = &data[32]; iov[0].iov_len = 16; iov[1].iov_base = &data[48]; @@ -134,21 +131,21 @@ main(void) /* Test xpwrite. */ for (i = 0; i < 256; i++) - data[i] = i; + data[i] = (char) i; test_write(xpwrite(0, data, 256, 0), 256, "xpwrite"); write_interrupt = 1; memset(data + 1, 0, 255); test_write(xpwrite(0, data + 1, 255, 1), 255, "xpwrite interrupted"); for (i = 0; i < 32; i++) - data[i + 32] = i * 2; + data[i + 32] = (char) (i * 2); test_write(xpwrite(0, data + 32, 32, 32), 32, "xpwrite first block"); for (i = 32; i < 65; i++) - data[i + 32] = i * 2; + data[i + 32] = (char) (i * 2); test_write(xpwrite(0, data + 64, 33, 64), 33, "xpwrite second block"); write_interrupt = 0; /* Test failures. */ - write_fail = 1; + write_fail = true; test_write(xwrite(0, data + 1, 255), -1, "xwrite fail"); iov[0].iov_base = data + 1; iov[0].iov_len = 255; diff -Nurp inn-2.6.1/tests/runtests.c inn-2.6.2/tests/runtests.c --- inn-2.6.1/tests/runtests.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/tests/runtests.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,7 +1,38 @@ -/* $Id: runtests.c 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: runtests.c 10229 2018-01-28 21:21:21Z iulius $ * * Run a set of tests, reporting results. * + * Test suite driver that runs a set of tests implementing a subset of the + * Test Anything Protocol (TAP) and reports the results. + * + * Any bug reports, bug fixes, and improvements are very much welcome and + * should be sent to the e-mail address below. This program is part of C TAP + * Harness . + * + * Copyright 2000-2001, 2004, 2006-2018 Russ Allbery + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * SPDX-License-Identifier: MIT + */ + +/* * Usage: * * runtests [-hv] [-b ] [-s ] -l @@ -58,32 +89,7 @@ * If the -v option is given, or the C_TAP_VERBOSE environment variable is set, * display the full output of each test as it runs rather than showing a * summary of the results of each test. - * - * Any bug reports, bug fixes, and improvements are very much welcome and - * should be sent to the e-mail address below. This program is part of C TAP - * Harness . - * - * Copyright 2000, 2001, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, - * 2014, 2015, 2016 Russ Allbery - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. -*/ + */ /* Required for fdopen(), getopt(), and putenv(). */ #if defined(__STRICT_ANSI__) || defined(PEDANTIC) @@ -450,7 +456,7 @@ concat(const char *first, ...) static double tv_seconds(const struct timeval *tv) { - return difftime(tv->tv_sec, 0) + tv->tv_usec * 1e-6; + return difftime(tv->tv_sec, 0) + (double) tv->tv_usec * 1e-6; } @@ -546,6 +552,7 @@ test_start(const char *path, int *fd) /* Now, exec our process. */ if (execl(path, path, (char *) 0) == -1) _exit(CHILDERR_EXEC); + break; /* In parent. Close the extra file descriptor. */ default: @@ -1100,6 +1107,7 @@ test_fail_summary(const struct testlist struct testset *ts; unsigned int chars; unsigned long i, first, last, total; + double failed; puts(header); @@ -1108,8 +1116,9 @@ test_fail_summary(const struct testlist for (; fails; fails = fails->next) { ts = fails->ts; total = ts->count - ts->skipped; + failed = (double) ts->failed; printf("%-26.26s %4lu/%-4lu %3.0f%% %4lu ", ts->file, ts->failed, - total, total ? (ts->failed * 100.0) / total : 0, + total, total ? (failed * 100.0) / (double) total : 0, ts->skipped); if (WIFEXITED(ts->status)) printf("%4d ", WEXITSTATUS(ts->status)); @@ -1449,7 +1458,7 @@ test_batch(struct testlist *tests, const fputs("All tests successful", stdout); else printf("Failed %lu/%lu tests, %.2f%% okay", failed, total, - (total - failed) * 100.0 / total); + (double) (total - failed) * 100.0 / (double) total); if (skipped != 0) { if (skipped == 1) printf(", %lu test skipped", skipped); diff -Nurp inn-2.6.1/tests/tap/basic.c inn-2.6.2/tests/tap/basic.c --- inn-2.6.1/tests/tap/basic.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/tests/tap/basic.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: basic.c 10130 2016-11-27 13:56:40Z iulius $ +/* $Id: basic.c 10268 2018-03-15 21:40:48Z iulius $ * * Some utility routines for writing tests. * @@ -13,9 +13,9 @@ * This file is part of C TAP Harness. The current version plus supporting * documentation is at . * - * Copyright 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 - * Russ Allbery - * Copyright 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2011, 2012, 2013, 2014 + * Written by Russ Allbery + * Copyright 2009-2018 Russ Allbery + * Copyright 2001-2002, 2004-2008, 2011-2014 * The Board of Trustees of the Leland Stanford Junior University * * Permission is hereby granted, free of charge, to any person obtaining a @@ -35,6 +35,8 @@ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. + * + * SPDX-License-Identifier: MIT */ #include @@ -72,7 +74,13 @@ ok(int n UNUSED, int success) void skip(int n UNUSED, const char *reason) { +#if __GNUC__ > 4 +# pragma GCC diagnostic ignored "-Wformat-nonliteral" +#endif new_skip(reason, NULL); +#if __GNUC__ > 4 +# pragma GCC diagnostic warning "-Wformat-nonliteral" +#endif } void @@ -84,7 +92,13 @@ ok_block(int n UNUSED, int count, int su void skip_block(int n UNUSED, int count, const char *reason) { +#if __GNUC__ > 4 +# pragma GCC diagnostic ignored "-Wformat-nonliteral" +#endif new_skip_block(count, reason, NULL); +#if __GNUC__ > 4 +# pragma GCC diagnostic warning "-Wformat-nonliteral" +#endif } void @@ -176,8 +190,7 @@ static struct diag_file *diag_files = NU do { \ if (format != NULL) { \ va_list args; \ - if (prefix != NULL) \ - printf("%s", prefix); \ + printf("%s", prefix); \ va_start(args, format); \ vprintf(format, args); \ va_end(args); \ @@ -539,22 +552,46 @@ new_skip_block(unsigned long count, cons /* - * Takes an expected boolean value and a seen boolean value and assumes the - * test passes if the truth value of both match. + * Takes two boolean values and requires the truth value of both match. + */ +int +is_bool(int left, int right, const char *format, ...) +{ + int success; + + fflush(stderr); + check_diag_files(); + success = (!!left == !!right); + if (success) + printf("ok %lu", testnum++); + else { + diag(" left: %s", !!left ? "true" : "false"); + diag("right: %s", !!right ? "true" : "false"); + printf("not ok %lu", testnum++); + _failed++; + } + PRINT_DESC(" - ", format); + putchar('\n'); + return success; +} + + +/* + * Takes two integer values and requires they match. */ int -is_bool(int wanted, int seen, const char *format, ...) +is_int(long left, long right, const char *format, ...) { int success; fflush(stderr); check_diag_files(); - success = (!!wanted == !!seen); + success = (left == right); if (success) printf("ok %lu", testnum++); else { - diag("wanted: %s", !!wanted ? "true" : "false"); - diag(" seen: %s", !!seen ? "true" : "false"); + diag(" left: %ld", left); + diag("right: %ld", right); printf("not ok %lu", testnum++); _failed++; } @@ -565,22 +602,31 @@ is_bool(int wanted, int seen, const char /* - * Takes an expected integer and a seen integer and assumes the test passes - * if those two numbers match. + * Takes two strings and requires they match (using strcmp). NULL arguments + * are permitted and handled correctly. */ int -is_int(long wanted, long seen, const char *format, ...) +is_string(const char *left, const char *right, const char *format, ...) { int success; fflush(stderr); check_diag_files(); - success = (wanted == seen); + + /* Compare the strings, being careful of NULL. */ + if (left == NULL) + success = (right == NULL); + else if (right == NULL) + success = 0; + else + success = (strcmp(left, right) == 0); + + /* Report the results. */ if (success) printf("ok %lu", testnum++); else { - diag("wanted: %ld", wanted); - diag(" seen: %ld", seen); + diag(" left: %s", left == NULL ? "(null)" : left); + diag("right: %s", right == NULL ? "(null)" : right); printf("not ok %lu", testnum++); _failed++; } @@ -591,26 +637,22 @@ is_int(long wanted, long seen, const cha /* - * Takes a string and what the string should be, and assumes the test passes - * if those strings match (using strcmp). + * Takes two unsigned longs and requires they match. On failure, reports them + * in hex. */ int -is_string(const char *wanted, const char *seen, const char *format, ...) +is_hex(unsigned long left, unsigned long right, const char *format, ...) { int success; - if (wanted == NULL) - wanted = "(null)"; - if (seen == NULL) - seen = "(null)"; fflush(stderr); check_diag_files(); - success = (strcmp(wanted, seen) == 0); + success = (left == right); if (success) printf("ok %lu", testnum++); else { - diag("wanted: %s", wanted); - diag(" seen: %s", seen); + diag(" left: %lx", (unsigned long) left); + diag("right: %lx", (unsigned long) right); printf("not ok %lu", testnum++); _failed++; } @@ -621,22 +663,30 @@ is_string(const char *wanted, const char /* - * Takes an expected unsigned long and a seen unsigned long and assumes the - * test passes if the two numbers match. Otherwise, reports them in hex. + * Takes pointers to a regions of memory and requires that len bytes from each + * match. Otherwise reports any bytes which didn't match. */ int -is_hex(unsigned long wanted, unsigned long seen, const char *format, ...) +is_blob(const void *left, const void *right, size_t len, const char *format, + ...) { int success; + size_t i; fflush(stderr); check_diag_files(); - success = (wanted == seen); + success = (memcmp(left, right, len) == 0); if (success) printf("ok %lu", testnum++); else { - diag("wanted: %lx", (unsigned long) wanted); - diag(" seen: %lx", (unsigned long) seen); + const unsigned char *left_c = left; + const unsigned char *right_c = right; + + for (i = 0; i < len; i++) { + if (left_c[i] != right_c[i]) + diag("offset %lu: left %02x, right %02x", (unsigned long) i, + left_c[i], right_c[i]); + } printf("not ok %lu", testnum++); _failed++; } @@ -845,6 +895,8 @@ breallocarray(void *p, size_t n, size_t { if (n > 0 && UINT_MAX / n <= size) bail("reallocarray too large"); + if (n == 0) + n = 1; p = realloc(p, n * size); if (p == NULL) sysbail("failed to realloc %lu bytes", (unsigned long) (n * size)); diff -Nurp inn-2.6.1/tests/tap/basic.h inn-2.6.2/tests/tap/basic.h --- inn-2.6.1/tests/tap/basic.h 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/tests/tap/basic.h 2018-03-18 13:03:32.000000000 -0700 @@ -1,13 +1,13 @@ -/* $Id: basic.h 10130 2016-11-27 13:56:40Z iulius $ +/* $Id: basic.h 10268 2018-03-15 21:40:48Z iulius $ * * Basic utility routines for the TAP protocol. * * This file is part of C TAP Harness. The current version plus supporting * documentation is at . * - * Copyright 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 - * Russ Allbery - * Copyright 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2011, 2012, 2014 + * Written by Russ Allbery + * Copyright 2009-2018 Russ Allbery + * Copyright 2001-2002, 2004-2008, 2011-2012, 2014 * The Board of Trustees of the Leland Stanford Junior University * * Permission is hereby granted, free of charge, to any person obtaining a @@ -27,6 +27,8 @@ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. + * + * SPDX-License-Identifier: MIT */ #ifndef TAP_BASIC_H @@ -115,19 +117,21 @@ void skip_block(unsigned long count, con #endif /* - * Check an expected value against a seen value. Returns true if the test - * passes and false if it fails. is_bool takes an int since the bool type - * isn't fully portable yet, but interprets both arguments for their truth - * value, not for their numeric value. + * Compare two values. Returns true if the test passes and false if it fails. + * is_bool takes an int since the bool type isn't fully portable yet, but + * interprets both arguments for their truth value, not for their numeric + * value. */ -int is_bool(int wanted, int seen, const char *format, ...) +int is_bool(int, int, const char *format, ...) __attribute__((__format__(printf, 3, 4))); -int is_int(long wanted, long seen, const char *format, ...) +int is_int(long, long, const char *format, ...) __attribute__((__format__(printf, 3, 4))); -int is_string(const char *wanted, const char *seen, const char *format, ...) +int is_string(const char *, const char *, const char *format, ...) __attribute__((__format__(printf, 3, 4))); -int is_hex(unsigned long wanted, unsigned long seen, const char *format, ...) +int is_hex(unsigned long, unsigned long, const char *format, ...) __attribute__((__format__(printf, 3, 4))); +int is_blob(const void *, const void *, size_t, const char *format, ...) + __attribute__((__format__(printf, 4, 5))); /* Bail out with an error. sysbail appends strerror(errno). */ void bail(const char *format, ...) diff -Nurp inn-2.6.1/tests/tap/float.c inn-2.6.2/tests/tap/float.c --- inn-2.6.1/tests/tap/float.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/tests/tap/float.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: float.c 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: float.c 10269 2018-03-16 06:27:18Z iulius $ * * Utility routines for writing floating point tests. * @@ -11,8 +11,7 @@ * This file is part of C TAP Harness. The current version plus supporting * documentation is at . * - * Copyright 2008, 2010, 2012, 2013, 2014, 2015, 2016 - * Russ Allbery + * Copyright 2008, 2010, 2012-2018 Russ Allbery * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -31,6 +30,8 @@ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. + * + * SPDX-License-Identifier: MIT */ /* Required for isnan() and isinf(). */ @@ -57,26 +58,34 @@ ok_double(int n UNUSED, double wanted, d #endif /* - * Takes an expected double and a seen double and assumes the test passes if - * those two numbers are within delta of each other. + * Clang 4.0.1 gets very confused by this file and produces warnings about + * floating point implicit conversion from the isnan() and isinf() macros. + */ +#if defined(__llvm__) || defined(__clang__) +# pragma clang diagnostic ignored "-Wconversion" +# pragma clang diagnostic ignored "-Wdouble-promotion" +#endif + +/* + * Takes two doubles and requires they be within epsilon of each other. */ int -is_double(double wanted, double seen, double epsilon, const char *format, ...) +is_double(double left, double right, double epsilon, const char *format, ...) { va_list args; int success; va_start(args, format); fflush(stderr); - if ((isnan(wanted) && isnan(seen)) - || (isinf(wanted) && isinf(wanted) == isinf(seen)) - || fabs(wanted - seen) <= epsilon) { + if ((isnan(left) && isnan(right)) + || (isinf(left) && isinf(left) == isinf(right)) + || fabs(left - right) <= epsilon) { success = 1; okv(1, format, args); } else { success = 0; - diag("wanted: %g", wanted); - diag(" seen: %g", seen); + diag(" left: %g", left); + diag("right: %g", right); okv(0, format, args); } va_end(args); diff -Nurp inn-2.6.1/tests/tap/float.h inn-2.6.2/tests/tap/float.h --- inn-2.6.1/tests/tap/float.h 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/tests/tap/float.h 2018-03-18 13:03:32.000000000 -0700 @@ -1,11 +1,11 @@ -/* $Id: float.h 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: float.h 10268 2018-03-15 21:40:48Z iulius $ * * Floating point check function for the TAP protocol. * * This file is part of C TAP Harness. The current version plus supporting * documentation is at . * - * Copyright 2008, 2010, 2012, 2014 Russ Allbery + * Copyright 2008, 2010, 2012, 2014, 2018 Russ Allbery * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -24,6 +24,8 @@ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. + * + * SPDX-License-Identifier: MIT */ #ifndef TAP_FLOAT_H @@ -33,13 +35,12 @@ BEGIN_DECLS -/* Check an expected value against a seen value within epsilon. */ +/* Compare two values within epsilon. */ #ifndef LIBTEST_NEW_FORMAT /* Specific to the integration of C TAP Harness in INN. */ void ok_double(int n, double wanted, double seen); #endif -int is_double(double wanted, double seen, double epsilon, - const char *format, ...) +int is_double(double, double, double epsilon, const char *format, ...) __attribute__((__format__(printf, 4, 5))); END_DECLS diff -Nurp inn-2.6.1/tests/tap/libtap.sh inn-2.6.2/tests/tap/libtap.sh --- inn-2.6.1/tests/tap/libtap.sh 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/tests/tap/libtap.sh 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -# $Id: libtap.sh 10099 2016-11-04 22:21:59Z iulius $ +# $Id: libtap.sh 10229 2018-01-28 21:21:21Z iulius $ # # Shell function library for test cases. # @@ -33,6 +33,8 @@ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS # IN THE SOFTWARE. +# +# SPDX-License-Identifier: MIT # Print out the number of test cases we expect to run. plan () { diff -Nurp inn-2.6.1/tests/tap/macros.h inn-2.6.2/tests/tap/macros.h --- inn-2.6.1/tests/tap/macros.h 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/tests/tap/macros.h 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: macros.h 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: macros.h 10229 2018-01-28 21:21:21Z iulius $ * * Helpful macros for TAP header files. * @@ -28,6 +28,8 @@ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. + * + * SPDX-License-Identifier: MIT */ #ifndef TAP_MACROS_H diff -Nurp inn-2.6.1/tests/tap/messages.c inn-2.6.2/tests/tap/messages.c --- inn-2.6.1/tests/tap/messages.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/tests/tap/messages.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: messages.c 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: messages.c 10246 2018-02-16 21:12:42Z iulius $ * * Utility functions to test message handling. * @@ -9,8 +9,9 @@ * The canonical version of this file is maintained in the rra-c-util package, * which can be found at . * - * Copyright 2002, 2004, 2005, 2015 Russ Allbery - * Copyright 2006, 2007, 2009, 2012, 2014 + * Written by Russ Allbery + * Copyright 2002, 2004-2005, 2015 Russ Allbery + * Copyright 2006-2007, 2009, 2012, 2014 * The Board of Trustees of the Leland Stanford Junior University * * Permission is hereby granted, free of charge, to any person obtaining a @@ -30,6 +31,8 @@ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. + * + * SPDX-License-Identifier: MIT */ #include "config.h" diff -Nurp inn-2.6.1/tests/tap/messages.h inn-2.6.2/tests/tap/messages.h --- inn-2.6.1/tests/tap/messages.h 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/tests/tap/messages.h 2018-03-18 13:03:32.000000000 -0700 @@ -1,12 +1,13 @@ -/* $Id: messages.h 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: messages.h 10246 2018-02-16 21:12:42Z iulius $ * * Utility functions to test message handling. * * The canonical version of this file is maintained in the rra-c-util package, * which can be found at . * + * Written by Russ Allbery * Copyright 2002 Russ Allbery - * Copyright 2006, 2007, 2009 + * Copyright 2006-2007, 2009 * The Board of Trustees of the Leland Stanford Junior University * * Permission is hereby granted, free of charge, to any person obtaining a @@ -26,6 +27,8 @@ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. + * + * SPDX-License-Identifier: MIT */ #ifndef TAP_MESSAGES_H diff -Nurp inn-2.6.1/tests/tap/process.c inn-2.6.2/tests/tap/process.c --- inn-2.6.1/tests/tap/process.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/tests/tap/process.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: process.c 10115 2016-11-06 14:20:36Z iulius $ +/* $Id: process.c 10246 2018-02-16 21:12:42Z iulius $ * * Utility functions for tests that use subprocesses. * @@ -15,8 +15,8 @@ * which can be found at . * * Written by Russ Allbery - * Copyright 2002, 2004, 2005, 2013, 2016 Russ Allbery - * Copyright 2009, 2010, 2011, 2013, 2014 + * Copyright 2002, 2004-2005, 2013, 2016-2017 Russ Allbery + * Copyright 2009-2011, 2013-2014 * The Board of Trustees of the Leland Stanford Junior University * * Permission is hereby granted, free of charge, to any person obtaining a @@ -36,6 +36,8 @@ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. + * + * SPDX-License-Identifier: MIT */ #define LIBTEST_NEW_FORMAT 1 @@ -369,7 +371,7 @@ process_stop_all(int success UNUSED, int * Read the PID of a process from a file. This is necessary when running * under fakeroot to get the actual PID of the remctld process. */ -static long +static pid_t read_pidfile(const char *path) { FILE *file; @@ -385,7 +387,7 @@ read_pidfile(const char *path) pid = strtol(buffer, NULL, 10); if (pid <= 0) bail("cannot read PID from %s", path); - return pid; + return (pid_t) pid; } diff -Nurp inn-2.6.1/tests/tap/process.h inn-2.6.2/tests/tap/process.h --- inn-2.6.1/tests/tap/process.h 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/tests/tap/process.h 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: process.h 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: process.h 10246 2018-02-16 21:12:42Z iulius $ * * Utility functions for tests that use subprocesses. * @@ -6,7 +6,7 @@ * which can be found at . * * Written by Russ Allbery - * Copyright 2009, 2010, 2013 + * Copyright 2009-2010, 2013 * The Board of Trustees of the Leland Stanford Junior University * * Permission is hereby granted, free of charge, to any person obtaining a @@ -26,6 +26,8 @@ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. + * + * SPDX-License-Identifier: MIT */ #ifndef TAP_PROCESS_H diff -Nurp inn-2.6.1/tests/tap/string.c inn-2.6.2/tests/tap/string.c --- inn-2.6.1/tests/tap/string.c 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/tests/tap/string.c 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: string.c 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: string.c 10246 2018-02-16 21:12:42Z iulius $ * * String utilities for the TAP protocol. * @@ -8,7 +8,7 @@ * The canonical version of this file is maintained in the rra-c-util package, * which can be found at . * - * Copyright 2011, 2012 Russ Allbery + * Copyright 2011-2012 Russ Allbery * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -27,6 +27,8 @@ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. + * + * SPDX-License-Identifier: MIT */ #include "config.h" diff -Nurp inn-2.6.1/tests/tap/string.h inn-2.6.2/tests/tap/string.h --- inn-2.6.1/tests/tap/string.h 2016-11-27 06:03:42.000000000 -0800 +++ inn-2.6.2/tests/tap/string.h 2018-03-18 13:03:32.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: string.h 10099 2016-11-04 22:21:59Z iulius $ +/* $Id: string.h 10246 2018-02-16 21:12:42Z iulius $ * * String utilities for the TAP protocol. * @@ -8,7 +8,7 @@ * The canonical version of this file is maintained in the rra-c-util package, * which can be found at . * - * Copyright 2011, 2012 Russ Allbery + * Copyright 2011-2012 Russ Allbery * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -27,6 +27,8 @@ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. + * + * SPDX-License-Identifier: MIT */ #ifndef TAP_STRING_H