diff -Nurp inn-2.6.3/CONTRIBUTORS inn-2.6.4/CONTRIBUTORS --- inn-2.6.3/CONTRIBUTORS 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/CONTRIBUTORS 2021-01-21 13:53:07.000000000 -0800 @@ -278,4 +278,4 @@ Dennis Preiser, Paolo Amoroso, Dennis Da Tim Fardell, Remco Rijnders, David Binderman, Tony Evans, Christian Garbs, Jesse Rehmer, Colin Watson, Lauri Tirkkonen, Christian Mock, Marcus Jodorf, Richard Kettlewell, Yuriy M. Kaminskiy, Bill Parker, Thomas Hochstein, -Tanguy Ortolo +Tanguy Ortolo, Michael Baeuerle diff -Nurp inn-2.6.3/ChangeLog inn-2.6.4/ChangeLog --- inn-2.6.3/ChangeLog 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/ChangeLog 2021-01-21 13:53:07.000000000 -0800 @@ -1,184 +1,555 @@ -2019-02-07 iulius +2021-01-21 iulius - * Update to latest upstream config.guess, config.sub and libtool - versions + * Time to release 2.6.4! - * Bump revision number for next release and copyright year +2021-01-20 iulius -2019-02-04 iulius + * INSTALL: a bit of clean-up, and update the list of tested OS - * Allow again the use of UTF-8 in header fields + * Update to latest upstream files - Regression since INN 2.6.1. Posts with internationalized header - fields (UTF-8) are now accepted again. + control.ctl, pgpverify, Libtool, pkg-config, config.guess and + config.sub -2018-12-29 iulius + * Improve NEWS and add the new year in LICENSE - * Update libtool from upstream 2.4.6-6 Debian version + * Update links to external repositories - * Update to latest upstream config.guess and config.sub files + * Compare space usage of our 3 overview storage methods - * Update to latest pgpverify 1.30 +2021-01-17 iulius + + * Add support for systemd socket activation - The previous INN release was done before the official release of - pgpverify 1.30; that's why a few comments differed. + Thanks to Marco d'Itri for that new feature! - * Bump version information for our libraries released with INN - 2.6.3 + * m4/krb5.m4: fix the detection of Kerberos V5 support - A few interfaces have changed in libinn (fqdn function, and new - innconf parameter). + Kerberos V5 was considered available even though C headers were + not present. Now fixed that by probing both the existence of + headers and libraries. - * nnrpd: improve logging of failed connections + * m4/python.m4: fix the detection of old Python 2.x versions + + The current code for probing the presence of Python only workq + with Python 2.7+ and 3.1+ because the "major" attribute to + sys.version_info was only added in these versions. - Properly logs the hostname of clients whose connection failed - owing to an issue during the negotiation of a TLS session or high - load average. Nothing was previously logged. + Also, the construct 'x for y in z' is too recent and not known by + Python 2.3.0, the minimum version required for INN, so I changed + it to a classic map(). If two arguments were not given to the m4 + macro, the script also failed. Now fixed. + + * Use AS_ECHO instead of echo in Autoconf macros - Thanks to Paolo Amoroso for the bug report. + AS_ECHO is more portable. The echo shell function may not be + reliable in the calls we do, with variables containing "-" or + other characters. -2018-12-17 iulius +2021-01-15 iulius - * Fix a const discarding when assigning a variable + * innd: add systemd notifications for xexec and shutdown + + * inndf: report buffindexed usage with 2 decimals - Python 3.7 changed the return value of PyUnicode_AsUTF8 from char - to const char. + Output was truncated at the inferior number (e.g. 37.00%). - * Update to latest C TAP Harness upstream version +2021-01-11 iulius -2018-12-02 iulius + * Do not run the check for POD syntax if Test::POD is too old + + Test::POD versions prior to 1.50 may not ignore directories like + .libs set in the ignore_dirs hash (due to a bug). This causes the + test to fail whereas POD syntax is OK. - * Update comments of TLS implementation (it is not v1 only) + * Improve sample init systemd script + + Thanks to Marco d'Itri, Debian packager of INN, for the ideas. + Also enable notify type. - * Take into account return values of chdir and system commands + * rc.news: start innd last when using systemd + + innd must be started last with exec to keep the same PID of this + script. + + Patch from Marco d'Itri. - * Update to latest rra-c-util upstream version, improving Perl and - Python support at configure time +2021-01-05 iulius - * Update to latest rra-c-util upstream version + * Detail and homogenize the description of our 3 overview methods + + * Makefile: Remove useless flags for the linker when just compiling + lib/perl.c + + Use condensed $(LIBLD) variable. + + * Add -fstack-protector-strong for linking if recognized - The Autoconf m4 macros now check that the library's key header - can be found as well as the library. It removes the need of - several checks added in configure.ac to achieve that. + Building innd on Solaris fails if the compiler does not have + amongst its flags -fstack-protector-strong for linking. - Also fix INN_LIB_KRB5_OPTIONAL probing in the - --enable-reduced-depends case when linking with libkrb5 is not - possible but libcom_err is present. The probes for com_err were - previously not skipped, resulting in a non-empty KRB5_LIBS - containing only -lcom_err, which incorrectly caused the macro to - indicate that Kerberos libraries were present. + Undefined first referenced symbol in file __stack_chk_fail art.o + __stack_chk_guard art.o ld: fatal: symbol referencing errors + + Also, if the compiler does not support -fstack-protector-strong + for linking, assume it will not work, and remove that flag even + for compiling (AIX typically does not have libssp_nonshared). + +2021-01-04 iulius - * Take into account new GCC 7.0 and 8.0 warnings + * configure: also change CC_WARNINGS when CFLAGS is changed + + * Fix build issue when using "make warnings" - Merge commits 10193 and 10291 from CURRENT. + -fPIE was not present when needed when using "make warnings", + causing various problems. + + * Move to configure.ac the logic to undefine AM_CONDITIONAL - * Rewrite GetFQDN and rename to inn_getfqdn + * Added preliminary support for systemd notifications - Use getaddrinfo with AI_CANONNAME instead of the tedious code to - find an FQDN in gethostbyname results. Return a newly-allocated - string instead of using a static buffer, since this function - isn't performance-critical, avoiding buffer management - complexity. Adjust call sites to do proper memory allocation - handling of the return value. + Integrate necessary Autoconf macros and portability headers to + use systemd. Right now, only notifications of innd startup and + mode changes are notified to the unit system. - Remove some old disabled code to try to force canonicalization by - adding a period to the end of the DNS query. + Thanks to Marco d'Itri for this first systemd integration into + INN. + +2021-01-03 iulius + + * Add a comment in configure.ac and fix POD typo from previous + commits + + * Fix build of fseeko replacement - Patch from Russ Allbery (backported from CURRENT). + AC_FUNC_FSEEKO needs being called unconditionally out of + consistency with the logic in clibrary.h (first looking for + !HAVE_FSEEKO before DO_LARGEFILES, and not the contrary). -2018-11-11 iulius + * inn.conf: Mention how to disable the process of cancel messages - * Mention in POD documentation that TLS 1.3 no longer allows - TLS-level compression +2020-12-31 eagle - * inn.conf: Add new tlsciphers13 parameter to fine-tune TLS 1.3 - cipher suites + * Add detail for rejected header - A separate cipher suite configuration parameter is needed for TLS - 1.3 as TLS 1.3 cipher suites are not compatible with TLS 1.2, and - vice-versa. + When nnrpd rejects a posting because of an invalid header that + isn't part of the header table, include the name of the header as + an aid in debugging, or the full header if no colon could be + found or if the line starts with a colon. - The tlsciphers13 parameter is based on the already existing - tlsciphers parameter for TLS 1.2 and below. + Reported by Adam Sjøgren and Lars Ingebrigtsen. -2018-11-10 iulius +2020-12-24 eagle - * Fix the use of elliptic curve selection + * Fix some subtle errors with nnrpd external auth + + If nnrpd saw EOF on the stderr file descriptor from an external + auth program, it would ignore any further output on stdout. This + was the cause of the maddeningly intermittant nnrpd/auth-ext test + failures for tests 56 and 59. Sometimes the closure of stderr + would be seen before the flush of output on stdout, causing the + code to fail to see the username. + + Fix this problem with more explicit state tracking for stderr. If + we see EOF or an error in the stderr file descriptor, remove it + from the select set but continue processing stdout until we also + see an EOF or error there. - OpenSSL 1.1.0 removed the SSL_CTX_set_ecdh_auto function - introduced with OpenSSL 1.0.2. This removal caused INN to always - enforce NIST P-256 instead of using the most secure curve (which - OpenSSL 1.1.0 does by default). Now fixed. + Add a new test that explicitly closes stderr. This failed + consistently with the previous code and passes consistently with + this code. + + Also close the read and error file descriptors for the external + authentication program in nnrpd. Previously, we were leaking + those file descriptors. -2018-06-03 eagle + * Switch nnrpd/auth-ext to the new test API + + Use the new test API so that failures will be reported with more + detail in the hope that this will help track down the + intermittant failure. - * Enable Perl and Python when testing snapshots + * Fix GCC warnings in tests/lib/date-t.c + + GCC 10.2.1 rightfully complains that the snprintf invocations in + this test may overflow the buffer length and truncate. Use + basprintf instead to avoid having to size buffers. + +2020-12-22 iulius -2018-05-21 iulius + * pgpverify: add a comment about requirements for GnuPG 1.4.20 or + 2.1.0 - * Update to latest C TAP Harness and rra-c-util upstream versions +2020-12-19 eagle - * Add trailing comment in CHECK and TAKETHIS responses + * Use a fixed buffer size for QIO - Responses to CHECK and TAKETHIS commands did not mention the - reason of a reject (notably from Python or Perl filter hook, but - also directly from innd main checks). This is now fixed. + The buffer size for QIO is also a limit on the length of an + overview line, and the previous complex approach resulted in a + buffer size of 8KB on nearly all systems, which was too small in + practice. - closes #148 + Stop attempting to be clever and size according to the file + system block size, which is generally small, and instead use a + fixed and predictable buffer size of 32KB, which shouldn't be a + problem on any modern system. + +2020-12-09 iulius + + * INSTALL: Document the need of shared libraries or + position-independent static libraries -2018-05-14 iulius + * Update new name of macOS - * Various number of typo fixes + * Typo in last commit + + * Mention that lines in header field bodies are separated by mere + LF in Perl nnrpd filter + + * Update to latest rra-c-util upstream version + + Specific fixes for INN builds on Alpine and BSD: * In the + getnameinfo replacement, handle musl libc's gethostbyaddr, which + returns the string conversion of the IP address if the host + doesn't resolve. This only affects the test suite, since musl + libc supports IPv6 and thus doesn't need this replacement. - Thanks to Christoph Biedl for the bug report. + * NetBSD prefers reallocarr to reallocarray and only prototypes + the latter if _OPENBSD_SOURCE is defined, which is not one of the + macros Autoconf defines by default. Work around this by checking + whether reallocarray is declared, not only whether it's + available, and protyping it if it's not declared. This uses the + semi-hidden deprecated symbol on NetBSD. - * Add support for embedded Python 3 interpreter to use with innd - and nnrpd filter hooks + * configure.ac: use new Autoconf 2.70 syntax for AC_PROG_LEX - * Update configure script to find Python 3 interpreter and - correctly set linker flags for embedding it. Python 3.3.0 or - later in the 3.x series is now supported. + Use 'noyywrap' for AC_PROG_LEX. Use AC_CONFIG_HEADERS instead of + obsolete AC_CONFIG_HEADER. - * Drop support for Python 2.2.0; now, Python 2.3.0 or later in - the 2.x series is required because configure looks for a shared - Python library, installed in the main library location in Python - 2.3.0 and later. + >From Autoconf 2.70 documentation: AC_PROG_LEX now takes one + argument, which may be either 'yywrap' or 'noyywrap'. If it is + 'noyywrap', AC_PROG_LEX will only set LEXLIB to '-lfl' or '-ll' + if a scanner that defines both main and yywrap itself still needs + something else from that library. On the other hand, if it is + 'yywrap', AC_PROG_LEX will fail (setting LEX to ':' and LEXLIB to + nothing) if it can't find a library that defines yywrap. - * Add m4 macros to check for minimal Python version and module - presence at configure time. + In the absence of arguments, AC_PROG_LEX's behavior is + bug-compatible with 2.69, which did neither of the above things. + This mode is deprecated. - * Notable changes for Python 3 are: - string literals are now - considered as Unicode data whereas they were mere bytes in Python - 2. Consequently, encoding now really matters for strings, and - UTF-8 is required in return values of Python filter hooks. (Note - that compliance with NNTP would also want strings to be encoded - in UTF-8.) Care should be given to use the right str or bytes - objects in Python 3. + Prior to Autoconf 2.70, AC_PROG_LEX did not take any arguments, + and its behavior was different from either of the above + possibilities: it would search for a library that defines + 'yywrap', and would set 'LEXLIB' to that library if it finds one. + However, if a library that defines this function could not be + found, 'LEXLIB' would be left empty and 'LEX' would _not_ be + reset. This behavior was due to a bug. + + * Improve logs when Python filters are not installed + +2020-12-06 eagle + + * Update URL for Postfilter - - buffer objects no longer exist: they have been replaced with - memoryview objects. Consequently, code to deal with them slighty - changed. + code.google.com is no more. This seems to be the new location on + GitHub. + +2020-12-01 iulius + + * Fix build issue in linker feature probing - - integers no longer exist in the C API: they have been replaced - with long integers (Py_ssize_t). + Thanks to Bo Lindbergh for the report. + + * Improve sample init systemd service unit - - embedded Python initialization is now done differently (with a - PyMODINIT_FUNC function). Try to homogeneize initialization with - Python 2.x. + Apply more protections. Sample shared by Russ Allbery. + +2020-11-24 iulius + + * Fix other circular dependencies in builds + +2020-11-22 iulius + + * Bump revision numbers in INN libraries + + * Add a check in configure to prevent a build with shared non-PIC + libraries + + * Add support for hardening build flags - * Improve error/notice logs. + New --enable-hardening-flags option to configure, enabled by + default. - * Update and improve both documentation and samples accordingly. + It currently adds -fPIE, -fstack-protector-strong at build time, + and -z relro as well as -z now at link time. More flags will + eventually be added in future releases. - * Remove unused PYpathkey char * variable. + This option can easily be disabled if the compiler or the + platform does not support them well. + + * Update to latest control.ctl upstream file + +2020-11-21 iulius + + * Fix spurious errors when verifying POD syntax + + Exclude the directory of the test suite. + + * Fix build with static libraries - * A few typo fixes. + The ACTIVE parameter is no longer shared between expire.c and + ov.c, so it no longer has to be exposed in ovinterface.h. Its + removal fixes the naming conflict with another ACTIVE parameter + in nnrpd. - * Fix prototypes in clientlib man page + * Update to latest Libtool and install-sh upstream versions + + Libtool => use Debian-2.4.6-14 version + + install-sh => upstream has integrated local modifications we had + carried for years in INN. Parameters have been integrated with + different names, so update Makefile accordingly (-c is now -p; -B + is now -S) as well as documentation + + * Update to latest config.guess and config.sub upstream versions * Typo fixes -2018-03-22 iulius + * Fix build with static libraries + + Circular dependencies were not correctly resolved by the linker. + Seems to be a bug in the --preserve-dup-deps Libtool flag, that + does not do what it is supposed to do. Fixed in a local + modification in ltmain.sh, reported to upstream. + + * sm: support reading and storing wire-format articles + + Any number of articles can now be given in wire format to sm on + its standard input when both "-s" and "-R" are used. Only native + format was previously possible. + + This might be useful for certain types of internal migrations. + + Thanks to Bo Lindbergh for the patch. + +2020-11-12 iulius + + * innd: make SIGTERM behave exactly like "ctlinnd shutdown" + + Patch from Marco d'Itri. + + * perl-nocem: document the use of gpg1 to import old PGP keys + + * docs/pod.t: Fix path to Perl interpreter in test suite + + Thanks to Bo Lindbergh for the bug report. + + * Add missing header files to silent gcc warning + + Fix build on a few systems like MacOS (warnings may make the + system consider the configure test failed). + + Thanks to Bo Lindbergh for the bug report. + + * Update to latest rra-c-util and C TAP Harness upstream versions + + * Fix syntax in Makefile + + GNU make 4.3 emits the following warning: "ignoring prerequisites + on suffix rule definition". + + In previous versions, no warning was emitted and a suffix rule + was created, however all prerequisites were ignored and were not + part of the suffix rule. Starting with GNU make 4.3, the + behaviour is the same, and in addition a warning is generated. + This commit fixes the syntax. + + * Fix yacc declaration for types + + POSIX yacc reserves %type to nonterminals. Found with new -Wyacc + warning option in Bison 3.5. + +2020-06-14 iulius + + * innreport: silent normal behaviour from rnews + + - Only "bad_article missing Message-ID" was skipped whereas other + header fields are also checked. Change to "bad_article missing ". + + - Skip all "rejected 437" and "rejected 439" because responses + could be different with other news servers. + +2020-06-13 iulius + + * innreport: externalize CSS + + Inline styles are not allowed by a (good) Content-Security-Policy + because they're vulnerable to XSS. It has become common practice + to always externalize all CSS into a separate file. + + External CSS is also more cacheable though this isn't the primary + motivation here. + + Patch adapted from a suggestion of Richard Kettlewell. + + * innreport: use INN version instead of legacy 3.1.0 version + + * innreport: modernize HTML + + No insecure external content. Remove icons for W3C XHTML and CSS + validation. The reason is to avoid errors when serving innreport + output via HTTPS). Thanks to Richard Kettlewell for the patch. + +2020-05-24 iulius + + * rnews: new -d flag to log duplicates + + When -d is used, rnews will syslog the message-ID and the Path + header value of each article rejected as a duplicate by the + server. + + It was previously only a compile-time option (DO_RNEWS_LOG_DUPS + in options.h), which I am unsure worked fine because there were + several wordings in the rnews code: DONT_RNEWS_LOG_DUPS, + SYSLOG_RNEWS_LOG_DUPS, FILE_RNEWS_LOG_DUPS. + + Remove INN_PATH_RNEWS_DUP_LOG (hard-coded to "/dev/null"). One + can now parameter its syslog configuration to obtain that + information, if needed. + + * Typo fix in a variable name + + Should have done a rebuild before committing! + + * rnews: new -a flag to configure the use of additional unpackers + + Added a new "-a" flag to rnews to disallow, if needed, the use of + additional unpackers from "/rnews.libexec"; only "rnews" + and "cunbatch" will then be recognized as valid batch commands. + + It was previously only a compile-time option (DO_RNEWSPROGS). + + * rnews: add -b flag to back up badly formatted articles + + This new -b flag to rnews permits saving rejected articles in the + "bad" sub-directory of . Otherwise, rnews just logs + and discards any articles that are rejected or cannot be parsed + for some reason. + + This feature was previously available only via the compile-time + option DO_RNEWS_SAVE_BAD. + + Thanks to Herbert Xu for the proposal of making it easily + available. + +2020-05-21 iulius + + * Clarify nnrpd TLS instructions + + Thanks to Richard Kettlewell for the suggestion. + +2020-05-10 iulius + + * Fix build with GCC 10.1 + + Ensure that ser_line is at least 4-byte long. And that there is + enough room in buff to copy the path. + + * innd: remove unused filterPath variable + + Variable unused since 2001 (removal forgotten in commit 4435). + +2020-03-08 eagle + + * Change readme.pod links to https + + Prefer https where available for links to supporting software. + +2020-01-07 eagle + + * Suppress (spurious) uninitialized warnings + + GCC 8.3 thinks that some variables in buffindexed/buffindexed.c + could be used uninitialized. Initialize them to silence the + compiler. + +2019-10-31 eagle + + * Make IOV_MAX Autoconf check more cross-compile-friendly + + The IOV_MAX Autoconf check always compiled and ran a program and + relied on the output from that program to indicate that IOV_MAX + was set in limits.h, which causes problems with + cross-compilation. Instead, use AC_CHECK_DECL to check for the + common case that IOV_MAX is defined in limits.h, and only compile + and run a program for the uncommon case that this fails. + + Tested only on Linux, but by changing the probe to look for + something other than IOV_MAX and then for something other than + UIO_MAXIOV, to make sure all the branches work. + + Thanks, Helmut Grohne. + +2019-10-27 iulius + + * cnfsstat: output information about retired CNFS buffers + + When not in a metacycbuff, CNFS buffers still mentioned in + cycbuff were not displayed. + +2019-09-17 iulius + + * nnrpd: fix the selection of DH parameters + + When the parameters have already been initialized, the callback + returns NULL instead of the previously loaded buffer. + + Fix to previous commit 10344. + + Thanks to Adam D. Barratt for having caught the issue. + +2019-05-31 iulius + + * nnrpd: Adapt the length of DH parameters depending on security + level + + Remove hard-coded 512 and 1024-bit DH parameters to only use more + secure DH parameters taken from a more recent RFC 7919. + + When OpenSSL is configured with a security level beyond 1 (which + is the case with Debian Buster for instance), shorter parameters + might not be accepted. Negotiations for ciphersuites using DHE + key exchange then fail. + + From OpenSSL documentation: "Previous versions of the callback + used is_export and keylength parameters to control parameter + generation for export and non-export cipher suites. Modern + servers that do not support export cipher suites are advised to + either use SSL_CTX_set_tmp_dh() or alternatively, use the + callback but ignore keylength and is_export and simply supply at + least 2048-bit parameters in the callback." + + Thanks to Michael Baeuerle for the bug report. + +2019-05-30 iulius + + * Fix string operation warnings with GCC 9 + + Also use CNFSNASIZ when appropriate (for buffer names). + + * nnrpd: fix build issue with LibreSSL + + LibreSSL defines itself as version 2 of OpenSSL, though not + implementing the same API. + +2019-03-09 eagle + + * Update URL for suck, remove newsx + + suck has a new usptream on GitHub. newsx appears to be thoroughly + gone and has been removed from Debian, so remove it from README. - * Bump revision number to next 2.6.3 version for STABLE +2019-02-13 iulius + * Bump revision numbers to next release diff -Nurp inn-2.6.3/HACKING inn-2.6.4/HACKING --- inn-2.6.3/HACKING 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/HACKING 2021-01-21 13:53:07.000000000 -0800 @@ -75,19 +75,24 @@ Configuring and Portability build-aux subdirectory after building the package with for instance debuild -us -uc); the canonical versions of the former two files are available from (which currently - redirects to ). - In addition, m4/libtool.m4 and a few others m4 files used by INN are - just a copy of the corresponding files in the m4 subdirectory of the - Debian package of the libtool distribution. (Using libtool without - using automake requires a few odd hacks.) New versions should be - checked in periodically when available. There are no INN-specific - modifications to those files except for ltmain.sh which recognizes the - additional -B flag that INN's install-sh script uses. This script - should also be updated at the same time from - ; it - similarly contains local modifications in order to support the - additional -B flag, as well as a few other changes mentioned in a - comment at the beginning of the file. + redirects to ). + + In addition, m4/libtool.m4 and a few other m4 files used by INN are just + a copy of the corresponding files in the debian/tmp/usr/share/aclocal + subdirectory of the Debian package of the libtool distribution. (Using + libtool without using automake requires a few odd hacks.) New versions + should be checked in periodically when available. There are no + INN-specific modifications to those files except for ltmain.sh which + recognizes the additional -S flag that INN's install-sh script uses, and + a fix for a proper handling of circular dependencies. + + This install-sh script should also be updated at the same time from + ; it similarly + contains a local modification mentioned in a comment at the beginning of + the file. + + Finally, the m4/pkg.m4 macro should be updated from + . Autobuilds @@ -594,7 +599,7 @@ Coding Style the arguments to the called function, misidentifies some macro calls as being type declarations, and fouls up long but simple case statements). It would be excellent if someday we could just run all of INN's code - through indent routinely to enforce a consistant coding style, but + through indent routinely to enforce a consistent coding style, but indent isn't quite ready for that. For users of emacs cc-mode, use the "bsd" style but with: @@ -624,11 +629,11 @@ Making a Release external projects. * Make sure that support/config.guess, support/config.sub, - support/install-sh, support/ltmain.sh and libtool m4 files + support/install-sh, support/ltmain.sh, libtool m4 files (libtool.m4, ltoptions.m4, ltsugar.m4, ltversion.m4 and - lt~obsolete.m4) are the latest versions. See the instructions in - "Configuring and Portability" for details on how to update these - files. + lt~obsolete.m4) and m4/pkg.m4 are the latest versions. See the + instructions in "Configuring and Portability" for details on how + to update these files. * Make sure that the latest upstream version of the C TAP Harness package is used for the test suite driver. It is available at @@ -664,6 +669,11 @@ Making a Release as support for new TLS versions in the tlsprotocols parameter in inn.conf. + * Check whether a new version of the ternary search trie + implementation (available at + ) could be merged into + lib/tst.c. + 2. If possible, on a news server running the forthcoming release, run the following commands to make sure they do not produce any errors: @@ -677,6 +687,12 @@ Making a Release Also build INN (including the contrib and tests directories) with warnings on ("make warnings") and run the test suite ("make tests"). + Fix any errors. + + Several builds with different configure-time options should be + tested, so as to be sure they work fine (especially + --enable-shared=no, --enable-tagged-hash, --enable-keywords, + --enable-largefiles and --enable-reduced-depends). 3. Update copyright years in LICENSE. @@ -713,11 +729,19 @@ Making a Release Then, in that newly created branch, remove the first paragraph in doc/pod/readme.pod which deals with development versions. - 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. Check out a copy of the release branch, and perform the following + actions. + + * Run "autogen" and "configure" that are currently necessary to + generate Makefile.global. + + * Then, run "make warnings" to generate all necessary files. + + * Run "make depend" to ensure dependencies are properly defined in + all INN makefiles. + + * Afterwards, run "make check-manifest". There shouldn't be any + differences; otherwise, fix the MANIFEST file. 9. Run "make release" for a final release, "support/mksnapshot BETA b1" for the first beta version of a new release, or "support/mksnapshot @@ -833,5 +857,5 @@ References technical details as needed, useful when working on IPv6 support in INN. - $Id: hacking.pod 10257 2018-03-08 16:17:55Z iulius $ + $Id: hacking.pod 10531 2021-01-20 11:59:59Z iulius $ diff -Nurp inn-2.6.3/INSTALL inn-2.6.4/INSTALL --- inn-2.6.3/INSTALL 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/INSTALL 2021-01-21 13:53:07.000000000 -0800 @@ -26,8 +26,7 @@ Welcome to INN 2.6! this approach (in particular, INN compiled with --enable-largefiles can't read the data structures written by INN compiled without that flag, and vice versa). If you don't remember what options you used but - you have your old build tree, look at the comments at the beginning of - config.status. + you have your old build tree, look at the beginning of config.log. If you made ckpasswd setuid root so that you could use system passwords, you'll have to do that again after "make update". (It's much better to @@ -46,19 +45,22 @@ Supported Systems certain other constructs that may be poorly or incompletely implemented, particularly on very old operating systems. - INN has been confirmed to work on the following operating systems: + INN has been confirmed to work on recent versions of the following + operating systems: - AIX 4.3 - FreeBSD 2.2.x and up - HP-UX 10.20 and up - Linux 2.x (tested with libc 5.4, glibc 2.0 and up) - Mac OS X 10.2 and up - NetBSD 1.6 and up - OpenBSD 2.8 and up - SCO 5.0.4 (tested with gcc 2.8.1, cc) - Solaris 2.5.x and up - UnixWare 7.1 - UX/4800 R11 and up + AIX (including 7.2) + FreeBSD (including 12.1) + Linux (including 3.16, 4.19 and 5.10 kernels, glibc 2.19, 2.28 and 2.31) + macOS (including 11) + NetBSD (including 9.0) + OpenBSD (including 6.8) + Oracle Solaris (including 10 and 11) + + Current versions of INN may also work on other operating systems like + HP-UX, OpenServer, SCO, UnixWare or UX/4800, as well as old versions of + the above list of operating systems, but have not been confirmed to. + Old versions of INN used to, but current ones have not been tested on + such systems or ancient specific versions. If you have gotten INN working on an operating system other than the ones listed above, please let us know at . @@ -89,8 +91,8 @@ Before You Begin recommended that you install the latest stable distribution of Perl before compiling INN. For instructions on obtaining and installing Perl, see . Note that you may need to - use the same compiler and options (particularly large file support) - for Perl and INN. + use the same compiler and options (particularly large file supporti + and shared libraries) for Perl and INN. If you're using a version of Perl prior to 5.6.0, you may need to make sure that the Perl versions of your system header files have been @@ -125,6 +127,11 @@ Before You Begin have a suitable version of Python installed. See doc/hook-python for more information. + * If you want to use systemd notifications and socket activation, you'll + need to have pkg-config and libsystemd (along with its libsystemd.pc + configuration) installed so that these features are enabled at + configure time. + * Many of INN's optional features require other packages (primarily libraries) be installed. If you wish to use any of these optional features, you will need to install those packages first. Here is a @@ -149,6 +156,12 @@ Before You Begin colon-separated list of additional directories in which to look for shared libraries before building INN will be sufficient. + If you build your own libraries, make sure to generate them as either + shared libraries or static libraries built with -fPIC amongst the + options given to the compiler (to obtain position-independent code). + Otherwise, building INN will fail, unless you pass + --disable-hardening-flags to configure. + Unpacking the Distribution Released versions of INN are available from @@ -161,8 +174,8 @@ Unpacking the Distribution snapshots made each night (one of the current development branch, and one of the stable branch consisting of bug fixes to the previous major release). They are stored in date format; in other words the snapshots - from April 6th, 2000, would be named inn-CURRENT-20000406.tar.gz and - inn-STABLE-20000406.tar.gz. Choose the newest file of whichever branch + from April 6th, 2020, would be named inn-CURRENT-20200406.tar.gz and + inn-STABLE-20200406.tar.gz. Choose the newest file of whichever branch you prefer. (Note that the downloading, configuring, and compiling steps can be done while logged in as any user.) @@ -431,11 +444,12 @@ Installing INN For the most common installation, a standalone news server, a suggested set of options is: - ./configure --with-perl + ./configure --with-perl --with-python - provided that you have the necessary version of Perl installed. - (Compiling with an embedded Perl interpreter will allow you to use one - of the available excellent spam filters if you so choose.) + provided that you have the necessary versions of Perl and Python + installed. (Compiling with embedded Perl and Python interpreters will + allow you to use one of the available excellent spam filters if you so + choose.) If the configure program runs successfully, then you are ready to build the distribution. From the root of the INN source tree, type: @@ -501,11 +515,9 @@ Installing INN modes which INN wanted them to be installed with! Please note that INN's shared library interface is not stable and may - change drastically in future releases. For this reason, it's also not - properly versioned and won't be until some degree of stability is - guaranteed, and the relevant header files are not installed. Only INN - should use INN's shared libraries, and you should only use the shared - libraries corresponding to the version of INN that you're installing. + change drastically in future major releases. Only INN should use INN's + shared libraries, and you should only use the shared libraries + corresponding to the version of INN that you're installing. Also, when updating an existing version of INN, INN tries to save backup copies of all files but man pages and shared libraries so that you can @@ -515,7 +527,7 @@ Installing INN versions. Nonetheless, reverting to a previous version of INN should work fine for official releases (that is to say releases that are not daily STABLE or CURRENT snapshots) because a proper versioning is done, - if needed, during the release of a new version. + during the release of a new version. If you are configuring TLS/SSL support for newsreaders, you must make a certificate and private key at least once. Type: @@ -630,22 +642,43 @@ Choosing an Overview Storage Mechanism choose an overview storage mechanism (by setting *ovmethod* in inn.conf). There are three overview mechanisms to choose from: - tradindexed - It is very fast for readers, but it has to update two files for each - incoming article and can be quite slow to write. - buffindexed - It can keep up with a large feed more easily, since it uses large - buffers to store all overview information, but it's somewhat slower - for readers (although not as slow as the unified overview in - INN 2.2). You will need to create the buffers for it to use (very - similar to creating CNFS buffers) and list the available buffers in - buffindexed.conf. See buffindexed.conf(5) for more information. + It stores overview data and index information into preconfigured + large files like CNFS. Fast at writing, the "buffindexed" overview + storage method can keep up with a large feed more easily and never + consumes additional disk space beyond that allocated to these + buffers. The downside is that these buffers are hard to recover in + case of corruption and somewhat slower for readers and the expiry + process. See the buffindexed.conf(5) man page for more details, and + notably how to create the buffers. ovdb - It stores overview data in a Berkeley DB database; it's fast and - very robust, but may require more disk space. See the ovdb(5) man - page for more information on it. + It stores overview information into a Berkeley DB database, whose + development pace has stalled these last years. This method is fast + and very robust, but may require more disk space, unless compression + is enabled. See the ovdb(5) man page for more details. + + tradindexed + It uses two files per newsgroup, one containing the overview data + and one containing the index. Fast for readers, but slow to write + to because it has to update two files for each incoming article. + Its main advantage is to be the best tested, the most reliable and + the method with the best recovery tools. + + Here are a few elements that can be helpful in choosing the right + overview method for your needs and estimating the associated storage + size. In 2020, the volume for a full-text Usenet feed is about 18,000 + articles per day, with peaks to 1,200 articles per hour. Article + storage size is about 65 MB per day. + + As for overview storage size, if you have 5 million articles, you'll + need at least 3.25 GB of disk space for buffindexed, 5.5 GB for ovdb + (4.5 GB if compressed), and 3.10 GB for tradindexed. + + If you store more header fields in overview data than the standard ones, + the space needed to store overview data will be superior than these + estimates. (This is configured in inn.conf, via the + *extraoverviewadvertised* and *extraoverviewhidden* parameters.) Configuring INN @@ -655,9 +688,9 @@ Configuring INN you've moved things around by using options with "configure", you'll need to adjust the instructions to account for that. - All of INN's configuration files are located in *pathetc in inn.conf*. - Unless noted otherwise, any files referred to below are in this - directory. When you first install INN, a sample of each file + All of INN's configuration files are located in *pathetc* as set in + inn.conf. Unless noted otherwise, any files referred to below are in + this directory. When you first install INN, a sample of each file (containing lots of comments) is installed in *pathetc*; refer to these for concrete examples of everything discussed in this section. @@ -1661,5 +1694,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 10283 2018-05-14 12:43:05Z iulius $ + $Id: install.pod 10535 2021-01-20 17:55:18Z iulius $ diff -Nurp inn-2.6.3/LICENSE inn-2.6.4/LICENSE --- inn-2.6.3/LICENSE 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/LICENSE 2021-01-21 13:53:07.000000000 -0800 @@ -3,7 +3,7 @@ different licenses and/or copyrights is and license: Copyright (c) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, - 2013, 2014, 2015, 2016, 2017, 2018, 2019 + 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 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 diff -Nurp inn-2.6.3/MANIFEST inn-2.6.4/MANIFEST --- inn-2.6.3/MANIFEST 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/MANIFEST 2021-01-21 13:53:07.000000000 -0800 @@ -422,6 +422,7 @@ include/portable/getaddrinfo.h ge include/portable/getnameinfo.h getnameinfo replacement header include/portable/macros.h Set of portability macros include/portable/mmap.h Wrapper for +include/portable/sd-daemon.h Portable setup for systemd-daemon include/portable/setproctitle.h Portable setup for setproctitle include/portable/socket-unix.h Wrapper for and SUN_LEN include/portable/socket.h Wrapper for and friends @@ -587,6 +588,7 @@ m4/openssl.m4 Au m4/pam-const.m4 Autoconf macro for PAM using const m4/paths.m4 Autoconf macro for installation paths m4/perl.m4 Autoconf macro for Perl support +m4/pkg.m4 Autoconf macro to use pkg-config m4/prog-ensure.m4 Autoconf macro for finding programs m4/python.m4 Autoconf macro for Python support m4/sasl.m4 Autoconf macro for SASL libraries @@ -596,6 +598,7 @@ m4/snprintf.m4 Au m4/socket-unix.m4 Autoconf macros to check UNIX domain sockets m4/socket.m4 Autoconf macros to check socket support m4/syslog.m4 Autoconf macro for syslog facility +m4/systemd.m4 Autoconf macros for systemd support m4/users.m4 Autoconf macro for INN users m4/vamacros.m4 Autoconf macro to check variadic macros m4/zlib.m4 Autoconf macro for zlib @@ -870,7 +873,7 @@ tests/data/upgrade/newsfeeds.ok Fi tests/data/upgrade/overview.fmt Obsolete overview.fmt config file tests/data/upgrade/sasl.conf Obsolete sasl.conf config file tests/docs Test suite for documentation (Directory) -tests/docs/pod.t Tests for POD formatting +tests/docs/pod.t.in Tests for POD formatting tests/innd Test suite for innd (Directory) tests/innd/artparse-t.c Tests for ARTparse in innd tests/innd/chan-t.c Tests for CHAN functions in innd diff -Nurp inn-2.6.3/Makefile.global.in inn-2.6.4/Makefile.global.in --- inn-2.6.3/Makefile.global.in 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/Makefile.global.in 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -## $Id: Makefile.global.in 10274 2018-03-22 20:36:39Z iulius $ +## $Id: Makefile.global.in 10485 2021-01-04 10:02:52Z iulius $ ## ## This file is meant to be the central Makefile that configure works with ## and that all other Makefiles include. No Makefile other than this one @@ -18,7 +18,7 @@ ## keep their length reasonable; otherwise, your news server will not ## be complying with the NNTP protocol. -VERSION = 2.6.3 +VERSION = 2.6.4 VERSION_EXTRA = ## The absolute path to the top of the build directory, used to find the @@ -108,7 +108,7 @@ WARNINGS = -g -O3 -DDEBUG=1 -Werror -Wal -Wmissing-prototypes -Wmissing-declarations \ -Wmissing-format-attribute \ -Wnormalized=nfc -Wnested-externs -Winline \ - -Winvalid-pch -Wvla -Wno-unused-function + -Winvalid-pch -Wvla -Wno-unused-function @CC_WARNINGS@ ## Some warnings have to be suppressed for Perl, since there's no way to work ## around the Perl header problems in INN code. @@ -123,11 +123,13 @@ LIBTOOL = @LIBTOOL@ LIBTOOLCC = @LIBTOOLCC@ LIBTOOLINST = @LIBTOOLINST@ LIBTOOLLD = @LIBTOOLLD@ +LIBTOOLLDDEPS = @LIBTOOLLDDEPS@ EXTOBJ = @EXTOBJ@ EXTLIB = @EXTLIB@ LIBCC = $(LIBTOOLCC) $(CC) LIBLD = $(LIBTOOLLD) $(CC) +LIBLDDEPS = $(LIBTOOLLDDEPS) $(CC) ## zlib support. Additional flags and libraries used when compiling or ## linking code that contains compression support. @@ -199,6 +201,11 @@ KRB5_CPPFLAGS = @KRB5_CPPFLAGS@ KRB5_LDFLAGS = @KRB5_LDFLAGS@ KRB5_LIBS = @KRB5_LIBS@ +## Systemd support. Additional flags and libraries used when compiling or +## linking code that contains systemd support. +SYSTEMD_CFLAGS = @SYSTEMD_CFLAGS@ +SYSTEMD_LIBS = @SYSTEMD_LIBS@ + ## Missing functions. If non-empty, configure detected that your system ## was missing some standard functions, and INN will be providing its own ## replacements from the lib directory. @@ -312,7 +319,7 @@ FILEMODE = @FILEMODE@ OWNER = -o $(RUNASUSER) -g $(RUNASGROUP) ROWNER = -o $(RUNASUSER) -g $(RNEWSGROUP) -INSTALL = $(top)/support/install-sh -c +INSTALL = $(top)/support/install-sh -p ## Installation commands. These commands are used by the installation ## rules of each separate subdirectory. The naming scheme is as follows: @@ -335,7 +342,7 @@ INSTALL = $(top)/support/install-sh -c ## files like active and newsgroups that should have the same permissions as ## article files. -BACKUP_OPTION = -B .OLD +BACKUP_OPTION = -S .OLD LI_SPRI = $(LIBTOOLINST) $(INSTALL) -o root -g $(RUNASGROUP) -m 4550 $(BACKUP_OPTION) LI_XPRI = $(LIBTOOLINST) $(INSTALL) $(OWNER) -m 0550 $(BACKUP_OPTION) @@ -354,7 +361,7 @@ CP_DATA = $(INSTALL) $(OWNER) -m $(FILE CP_MAN = $(INSTALL) $(OWNER) -m 0444 ## Some additional definitions needed by some versions of make, to ensure a -## consistant set of variables are available. +## consistent set of variables are available. SHELL = @SHELL@ diff -Nurp inn-2.6.3/NEWS inn-2.6.4/NEWS --- inn-2.6.3/NEWS 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/NEWS 2021-01-21 13:53:07.000000000 -0800 @@ -1,3 +1,50 @@ +Changes in 2.6.4 + + * Added support for systemd notifications and socket activation. Use of + more features provided by systemd, including more notifications, will + come in future releases. Thanks to Marco d'Itri for this first + systemd integration into INN. + + * nnrpd now adapts the length of the DH parameter used during a DHE key + exchange so as to comply with the security level OpenSSL 1.1.0 or + later expects. Thanks to Michael Baeuerle for the bug report. + + * cnfsstat now also returns information about retired CNFS buffers, that + is to say buffers mentioned in cycbuff.conf as a cycbuff but not + declared in a metacycbuff. + + * Switch default innreport behaviour to common practice of externalizing + CSS into a separate file. Its name can be configured with the + *html_css_url* parameter in innreport.conf. If this parameter is + unset, the default innreport.css file name will be used and innreport + will generate this CSS file for you. Previously generated reports are + kept untouched, though, and will still contain inline CSS if you had + not already set the *html_css_url* parameter in previous INN versions. + Thanks to Richard Kettlewell for the patch. + + * sm can now read and store any number of articles given in wire format + on its standard input when both -s and -R are used. Only native + format was previously possible. Thanks to Bo Lindbergh for the patch. + + * Added new -a flag to rnews to disallow, if needed, the use of + additional unpackers from the rnews.libexec sub-directory of *pathbin* + (as set in inn.conf); only "rnews" and "cunbatch" will then be + recognized as valid batch commands. + + * Added new -b flag to rnews to save rejected articles in the bad + sub-directory of *pathincoming* (as set in inn.conf). Otherwise, + rnews just logs and discards any articles that are rejected or cannot + be parsed for some reason. + + * Added new -d flag to rnews to log via syslog the message-ID and the + Path header value of each article rejected as a duplicate. + + * Added new --enable-hardening-flags configure-time option, enabled by + default, to use hardening build flags like "-fPIE" and + "-fstack-protector-strong". This option can easily be disabled if the + compiler or the platform does not support them well. More hardening + build flags will eventually be added in future releases. + Changes in 2.6.3 * Fixed the selection of the elliptic curve to use with OpenSSL 1.1.0 or @@ -2319,5 +2366,5 @@ Changes in 2.2.0 * The innshellvars.csh.in script is obsolete (and lives in the obsolete directory, for now). - $Id: news.pod 10326 2019-02-04 14:22:34Z iulius $ + $Id: news.pod 10532 2021-01-20 12:00:42Z iulius $ diff -Nurp inn-2.6.3/README inn-2.6.4/README --- inn-2.6.3/README 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/README 2021-01-21 13:53:07.000000000 -0800 @@ -218,7 +218,8 @@ Related Packages generally can't answer questions about it. Cleanfeed - URL: (maintained by Steve Crook) + URL: (maintained by Steve + Crook) Cleanfeed is an extremely powerful spam filter, probably the most widely used spam filter on Usenet currently. It catches excessive @@ -243,8 +244,8 @@ Related Packages innduct URL: - (maintained by Ian Jackson) + (maintained by Ian Jackson) A possible replacement for innfeed, innxmit and nntpsend that quickly and reliably streams Usenet article to a remote site. @@ -253,7 +254,7 @@ Related Packages It also permits a realtime feed, contrary to innxmit or nntpsend. NewsPortal - URL: + URL: A PHP-based web news reader that works as a front-end to a regular news server such as INN and lets people read and post without @@ -267,7 +268,7 @@ Related Packages OPENSTEP only, unfortunately. suck - URL: + URL: suck is a separate package for downloading a news feed via a reading connection (rather than via a direct NNTP or UUCP feed) and sending @@ -275,15 +276,6 @@ Related Packages or small-organization news servers who get their news via an ISP and are too small to warrant setting up a regular news feed. - newsx - URL: - - Serving the same purpose as suck, newsx is a separate package for - downloading a news feed via a reading connection and sending - outgoing local posts via POST. Some people find suck easier to - configure and use, and some people find newsx easier. If you have - problems with one, try the other. - Supporting the INN Effort Note that INN is supported by Internet Systems Consortium, and although @@ -302,5 +294,5 @@ Supporting the INN Effort Katsuhiro Kondou - $Id: readme.pod 10186 2017-11-05 17:49:59Z eagle $ + $Id: readme.pod 10359 2020-03-08 21:47:11Z eagle $ diff -Nurp inn-2.6.3/backends/Makefile inn-2.6.4/backends/Makefile --- inn-2.6.3/backends/Makefile 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/backends/Makefile 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -## $Id: Makefile 10100 2016-11-04 22:24:26Z iulius $ +## $Id: Makefile 10428 2020-11-24 07:20:05Z iulius $ include ../Makefile.global @@ -65,9 +65,12 @@ profiled: ## Compilation rules. -BOTH = $(LIBSTORAGE) $(LIBHIST) $(LIBINN) +# $(LIBSTORAGE) must be listed twice to resolve circular dependencies +# when doing static linking. +BOTH = $(LIBSTORAGE) $(LIBHIST) $(LIBSTORAGE) $(LIBINN) LINK = $(LIBLD) $(LDFLAGS) -o $@ +LINKDEPS = $(LIBLDDEPS) $(LDFLAGS) -o $@ INNLIBS = $(LIBINN) $(LIBS) STORELIBS = $(BOTH) $(STORAGE_LIBS) $(LIBS) @@ -78,16 +81,16 @@ $(FIXSCRIPT): @exit 1 actsync: actsync.o $(LIBINN) ; $(LINK) actsync.o $(INNLIBS) -archive: archive.o $(BOTH) ; $(LINK) archive.o $(STORELIBS) -batcher: batcher.o $(BOTH) ; $(LINK) batcher.o $(STORELIBS) -cvtbatch: cvtbatch.o $(BOTH) ; $(LINK) cvtbatch.o $(STORELIBS) +archive: archive.o $(BOTH) ; $(LINKDEPS) archive.o $(STORELIBS) +batcher: batcher.o $(BOTH) ; $(LINKDEPS) batcher.o $(STORELIBS) +cvtbatch: cvtbatch.o $(BOTH) ; $(LINKDEPS) cvtbatch.o $(STORELIBS) innbind: innbind.o $(LIBINN) ; $(LINK) innbind.o $(INNLIBS) -inndf: inndf.o $(BOTH) ; $(LINK) inndf.o $(STORELIBS) +inndf: inndf.o $(BOTH) ; $(LINKDEPS) inndf.o $(STORELIBS) innxbatch: innxbatch.o $(LIBINN) ; $(LINK) innxbatch.o $(INNLIBS) innxmit: innxmit.o $(BOTH) ; $(LINK) innxmit.o $(STORELIBS) ninpaths: ninpaths.o ; $(LINK) ninpaths.o nntpget: nntpget.o $(BOTH) ; $(LINK) nntpget.o $(STORELIBS) -overchan: overchan.o $(BOTH) ; $(LINK) overchan.o $(STORELIBS) +overchan: overchan.o $(BOTH) ; $(LINKDEPS) overchan.o $(STORELIBS) shlock: shlock.o $(LIBINN) ; $(LINK) shlock.o $(INNLIBS) shrinkfile: shrinkfile.o $(LIBINN) ; $(LINK) shrinkfile.o $(INNLIBS) diff -Nurp inn-2.6.3/backends/archive.c inn-2.6.4/backends/archive.c --- inn-2.6.3/backends/archive.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/backends/archive.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: archive.c 9658 2014-08-28 18:59:18Z iulius $ +/* $Id: archive.c 10342 2019-05-30 14:18:48Z iulius $ ** ** Read batchfiles on standard input and archive them. */ @@ -462,7 +462,7 @@ main(int argc, char *argv[]) /* Write the rest of stdin to the spool file. */ status = 0; - if (fprintf(spool, "%s\n", line) == EOF) { + if (fprintf(spool, "%s\n", line != NULL ? line : "") == EOF) { syswarn("cannot start spool"); status = 1; } diff -Nurp inn-2.6.3/configure inn-2.6.4/configure --- inn-2.6.3/configure 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/configure 2021-01-21 13:53:07.000000000 -0800 @@ -1,7 +1,7 @@ #! /bin/sh -# From configure.ac Revision: 10306 . +# From configure.ac Revision: 10520 . # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for INN 2.6.3. +# Generated by GNU Autoconf 2.69 for INN 2.6.4. # # Report bugs to . # @@ -591,8 +591,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='INN' PACKAGE_TARNAME='inn' -PACKAGE_VERSION='2.6.3' -PACKAGE_STRING='INN 2.6.3' +PACKAGE_VERSION='2.6.4' +PACKAGE_STRING='INN 2.6.4' PACKAGE_BUGREPORT='inn-workers@lists.isc.org' PACKAGE_URL='https://www.isc.org/downloads/projects/' @@ -634,6 +634,7 @@ ac_includes_default="\ #endif" ac_subst_vars='LTLIBOBJS +CC_WARNINGS SYSLOG_FACILITY ALLOCA DBM_CPPFLAGS @@ -642,6 +643,11 @@ KRB5_AUTH ZLIB_LIBS ZLIB_LDFLAGS ZLIB_CPPFLAGS +SYSTEMD_LIBS +SYSTEMD_CFLAGS +PKG_CONFIG_LIBDIR +PKG_CONFIG_PATH +PKG_CONFIG SASL_LIBS SASL_LDFLAGS SASL_CPPFLAGS @@ -654,7 +660,7 @@ OPENSSL_CPPFLAGS PATH_KRB5_CONFIG KRB5_LIBS KRB5_LDFLAGS -KRB5_CPPFLAGS_GCC +KRB5_CPPFLAGS_WARNINGS KRB5_CPPFLAGS BDB_LIBS BDB_LDFLAGS @@ -719,6 +725,7 @@ FILTERDIR DBDIR CONTROLDIR CCOUTPUT +LIBTOOLLDDEPS LIBTOOLLD LIBTOOLINST LIBTOOLCC @@ -839,6 +846,7 @@ enable_keywords enable_largefiles with_perl with_python +enable_hardening_flags with_bdb with_bdb_include with_bdb_lib @@ -886,7 +894,12 @@ GZIP GPGV GPG PGP -PATH_KRB5_CONFIG' +PATH_KRB5_CONFIG +PKG_CONFIG +PKG_CONFIG_PATH +PKG_CONFIG_LIBDIR +SYSTEMD_CFLAGS +SYSTEMD_LIBS' # Initialize some variables set by options. @@ -1437,7 +1450,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.3 to adapt to many kinds of systems. +\`configure' configures INN 2.6.4 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1503,7 +1516,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of INN 2.6.3:";; + short | recursive ) echo "Configuration of INN 2.6.4:";; esac cat <<\_ACEOF @@ -1521,6 +1534,8 @@ Optional Features: --enable-tagged-hash Use tagged hash table for history --enable-keywords Automatic innd keyword generation support --enable-largefiles Support for files larger than 2GB [default=no] + --enable-hardening-flags + Add hardening build flags like -fPIE [default=yes] --enable-reduced-depends Try to minimize shared library dependencies --disable-largefile omit support for large files @@ -1611,6 +1626,15 @@ Some influential environment variables: PGP Location of PGP verification program PATH_KRB5_CONFIG Path to krb5-config + PKG_CONFIG path to pkg-config utility + PKG_CONFIG_PATH + directories to add to pkg-config's search path + PKG_CONFIG_LIBDIR + path overriding pkg-config's built-in search path + SYSTEMD_CFLAGS + C compiler flags for SYSTEMD, overriding pkg-config + SYSTEMD_LIBS + linker flags for SYSTEMD, overriding pkg-config Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. @@ -1679,7 +1703,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -INN configure 2.6.3 +INN configure 2.6.4 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2518,7 +2542,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.3, which was +It was created by INN $as_me 2.6.4, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3015,6 +3039,11 @@ ac_configure="$SHELL $ac_aux_dir/configu + + + + + # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # # Copyright (C) 1996-2001, 2003-2015 Free Software Foundation, Inc. @@ -4703,6 +4732,31 @@ ac_configure="$SHELL $ac_aux_dir/configu +# pkg.m4 - Macros to locate and use pkg-config. -*- Autoconf -*- +# serial 12 (pkg-config-0.29.2) + + + + + + + + + + + + + + + + + + + + + + + @@ -7689,7 +7743,7 @@ esac fi : ${AR=ar} -: ${AR_FLAGS=cru} +: ${AR_FLAGS=cr} @@ -9452,8 +9506,8 @@ int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 - echo "$AR cru libconftest.a conftest.o" >&5 - $AR cru libconftest.a conftest.o 2>&5 + echo "$AR cr libconftest.a conftest.o" >&5 + $AR cr libconftest.a conftest.o 2>&5 echo "$RANLIB libconftest.a" >&5 $RANLIB libconftest.a 2>&5 cat > conftest.c << _LT_EOF @@ -9485,11 +9539,11 @@ $as_echo "$lt_cv_ld_force_load" >&6; } # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[91]*) + 10.0,*86*-darwin8*|10.0,*-darwin[912]*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; 10.[012][,.]*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - 10.*) + 10.*|11.*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; esac ;; @@ -10315,6 +10369,12 @@ lt_prog_compiler_static= lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; + # flang / f18. f95 an alias for gfortran or flang on Debian + flang* | f18* | f95*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) @@ -13880,6 +13940,7 @@ LIBTOOL='$(top)/libtool' LIBTOOLCC='$(top)/libtool --mode=compile' LIBTOOLINST='$(top)/libtool --mode=install' LIBTOOLLD='$(top)/libtool --mode=link' +LIBTOOLLDDEPS='$(top)/libtool --mode=link --preserve-dup-deps' CCOUTPUT='-c -o $@ $<' @@ -13889,6 +13950,11 @@ CCOUTPUT='-c -o $@ $<' +if test x"$pic_mode" = xno && test x"$enable_shared" = xyes; then : + as_fn_error $? "Incompatible use of --without-pic and --enable-shared" "$LINENO" 5 +fi + + # Check whether --with-control-dir was given. if test "${with_control_dir+set}" = set; then : withval=$with_control_dir; CONTROLDIR=$with_control_dir @@ -14040,7 +14106,7 @@ RUNDIRMODE=0770 # Check whether --with-news-umask was given. if test "${with_news_umask+set}" = set; then : - withval=$with_news_umask; with_news_umask=`echo "$with_news_umask" | sed 's/^0*//'` + withval=$with_news_umask; with_news_umask=`$as_echo "$with_news_umask" | sed 's/^0*//'` if test "x$with_news_umask" = x22 ; then NEWSUMASK=022 FILEMODE=0644 @@ -14316,19 +14382,19 @@ $as_echo_n "checking for flags to link w inn_perl_core_flags=`"$PERL" -MExtUtils::Embed -e ccopts` inn_perl_core_libs=`"$PERL" -MExtUtils::Embed -e ldopts 2>&1 | tail -n 1` inn_perl_core_libs=" $inn_perl_core_libs " - inn_perl_core_libs=`echo "$inn_perl_core_libs" | sed 's/ -lc / /'` + inn_perl_core_libs=`$as_echo "$inn_perl_core_libs" | sed 's/ -lc / /'` case $host in #( *-linux*) : - inn_perl_core_libs=`echo "$inn_perl_core_libs" | sed 's/ -lgdbm / /'` ;; #( + inn_perl_core_libs=`$as_echo "$inn_perl_core_libs" | sed 's/ -lgdbm / /'` ;; #( *-cygwin*) : inn_perl_libname=`"$PERL" -MConfig -e 'print $Config{libperl}'` - inn_perl_libname=`echo "$inn_perl_libname" | sed 's/^lib//; s/\.a$//'` + inn_perl_libname=`$as_echo "$inn_perl_libname" | sed 's/^lib//; s/\.a$//'` inn_perl_core_libs="${inn_perl_core_libs}-l$inn_perl_libname" ;; #( *) : ;; esac - inn_perl_core_libs=`echo "$inn_perl_core_libs" | sed 's/^ *//'` - inn_perl_core_libs=`echo "$inn_perl_core_libs" | sed 's/ *$//'` + inn_perl_core_libs=`$as_echo "$inn_perl_core_libs" | sed 's/^ *//'` + inn_perl_core_libs=`$as_echo "$inn_perl_core_libs" | sed 's/ *$//'` PERL_CPPFLAGS="$inn_perl_core_flags" PERL_LIBS="$inn_perl_core_libs" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL_LIBS" >&5 @@ -14363,11 +14429,11 @@ fi inn_perl_core_flags=" $PERL_CPPFLAGS " if test x"$inn_enable_largefiles" != xyes; then : for f in -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES ; do - inn_perl_core_flags=`echo "$inn_perl_core_flags" | sed "s/ $f / /"` + inn_perl_core_flags=`$as_echo "$inn_perl_core_flags" | sed "s/ $f / /"` done fi - inn_perl_core_flags=`echo "$inn_perl_core_flags" | sed 's/^ *//'` - inn_perl_core_flags=`echo "$inn_perl_core_flags" | sed 's/ *$//'` + inn_perl_core_flags=`$as_echo "$inn_perl_core_flags" | sed 's/^ *//'` + inn_perl_core_flags=`$as_echo "$inn_perl_core_flags" | sed 's/ *$//'` PERL_CPPFLAGS="$inn_perl_core_flags" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wno-extra" >&5 @@ -14378,7 +14444,7 @@ else save_CFLAGS=$CFLAGS case -Wno-extra in #( -Wno-*) : - CFLAGS="$CFLAGS `echo "-Wno-extra" | sed 's/-Wno-/-W/'`" ;; #( + CFLAGS="$CFLAGS `$as_echo "-Wno-extra" | sed 's/-Wno-/-W/'`" ;; #( *) : CFLAGS="$CFLAGS -Wno-extra" ;; #( *) : @@ -14461,13 +14527,13 @@ fi import sys two_okay = False three_okay = False -if sys.argv[1]: - two_tuple = tuple(int(i) for i in sys.argv[1].split(".")) - if sys.version_info.major == 2 and sys.version_info >= two_tuple: +if len(sys.argv) > 1 and sys.argv[1]: + two_tuple = tuple(map(int, sys.argv[1].split("."))) + if sys.version_info[0] == 2 and sys.version_info >= two_tuple: two_okay = True -if sys.argv[2]: - three_tuple = tuple(int(i) for i in sys.argv[2].split(".")) - if sys.version_info.major > 2 and sys.version_info >= three_tuple: +if len(sys.argv) > 2 and sys.argv[2]: + three_tuple = tuple(map(int, sys.argv[2].split("."))) + if sys.version_info[0] > 2 and sys.version_info >= three_tuple: three_okay = True assert(two_okay or three_okay) ' '2.3.0' '3.3.0' >/dev/null 2>&1; then : @@ -14495,13 +14561,13 @@ if "$ac_path_PYTHON" -c ' import sys two_okay = False three_okay = False -if sys.argv[1]: - two_tuple = tuple(int(i) for i in sys.argv[1].split(".")) - if sys.version_info.major == 2 and sys.version_info >= two_tuple: +if len(sys.argv) > 1 and sys.argv[1]: + two_tuple = tuple(map(int, sys.argv[1].split("."))) + if sys.version_info[0] == 2 and sys.version_info >= two_tuple: two_okay = True -if sys.argv[2]: - three_tuple = tuple(int(i) for i in sys.argv[2].split(".")) - if sys.version_info.major > 2 and sys.version_info >= three_tuple: +if len(sys.argv) > 2 and sys.argv[2]: + three_tuple = tuple(map(int, sys.argv[2].split("."))) + if sys.version_info[0] > 2 and sys.version_info >= three_tuple: three_okay = True assert(two_okay or three_okay) ' \ @@ -14545,9 +14611,9 @@ $as_echo_n "checking for flags to link w print(" ".join(distutils.sysconfig.get_config_vars( \ "LIBS", "LIBC", "LIBM", "LOCALMODLIBS", "BASEMODLIBS", \ "LINKFORSHARED", "LDFLAGS")))'` - py_libpython=`echo $py_ldlibrary | sed "s/^lib//" | sed "s/\.[a-z]*$//"` + py_libpython=`$as_echo "$py_ldlibrary" | sed "s/^lib//" | sed "s/\.[a-z]*$//"` PYTHON_LIBS="-L$py_libdir -l$py_libpython $py_linkage" - PYTHON_LIBS=`echo $PYTHON_LIBS | sed -e 's/ \\t*/ /g'` + PYTHON_LIBS=`$as_echo "$PYTHON_LIBS" | sed -e 's/ \\t*/ /g'` { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_LIBS" >&5 $as_echo "$PYTHON_LIBS" >&6; } inn_python_save_CPPFLAGS="$CPPFLAGS" @@ -15005,7 +15071,8 @@ test -n "$YACC" || YACC="yacc" case "$CPP" in *-traditional-cpp*) - CFLAGS="-traditional-cpp $CFLAGS" + CFLAGS="-traditional-cpp ${CFLAGS}" + CC_WARNINGS="-traditional-cpp ${CC_WARNINGS}" ;; esac @@ -15025,7 +15092,8 @@ $as_echo "#define INN_BSDI_HOST 1" >>con *hpux*) if test x"$GCC" != xyes ; then - CFLAGS="$CFLAGS -Ae" + CFLAGS="${CFLAGS} -Ae" + CC_WARNINGS="${CC_WARNINGS} -Ae" case "$CFLAGS" in *-g*) LDFLAGS="$LDFLAGS -g" ;; esac @@ -15038,10 +15106,20 @@ $as_echo "#define INN_BSDI_HOST 1" >>con *UnixWare*|*unixware*|*-sco3*) if test x"$GCC" != xyes ; then - CFLAGS="$CFLAGS -Kalloca" + CFLAGS="${CFLAGS} -Kalloca" + CC_WARNINGS="${CC_WARNINGS} -Kalloca" fi esac +inn_enable_hardening_flags=yes +# Check whether --enable-hardening-flags was given. +if test "${enable_hardening_flags+set}" = set; then : + enableval=$enable_hardening_flags; if test x"$enableval" != xyes; then : + inn_enable_hardening_flags=no +fi +fi + + @@ -16741,7 +16819,7 @@ else BDB_LDFLAGS="$BDB_LDFLAGS -L${inn_BDB_root}/lib/" fi fi - BDB_LDFLAGS=`echo "$BDB_LDFLAGS" | sed -e 's/^ *//'` + BDB_LDFLAGS=`$as_echo "$BDB_LDFLAGS" | sed -e 's/^ *//'` fi fi if test x"$inn_BDB_includedir" != x; then : @@ -16834,7 +16912,7 @@ else BDB_LDFLAGS="$BDB_LDFLAGS -L${inn_BDB_root}/lib/" fi fi - BDB_LDFLAGS=`echo "$BDB_LDFLAGS" | sed -e 's/^ *//'` + BDB_LDFLAGS=`$as_echo "$BDB_LDFLAGS" | sed -e 's/^ *//'` fi fi if test x"$inn_BDB_includedir" != x; then : @@ -16997,7 +17075,7 @@ else KRB5_LDFLAGS="$KRB5_LDFLAGS -L$inn_krb5_root/lib/" fi fi - KRB5_LDFLAGS=`echo "$KRB5_LDFLAGS" | sed -e 's/^ *//'` + KRB5_LDFLAGS=`$as_echo "$KRB5_LDFLAGS" | sed -e 's/^ *//'` fi fi if test x"$inn_krb5_includedir" != x; then : @@ -17009,52 +17087,8 @@ else fi fi fi - inn_krb5_save_CPPFLAGS="$CPPFLAGS" - inn_krb5_save_LDFLAGS="$LDFLAGS" - inn_krb5_save_LIBS="$LIBS" - CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS" - LDFLAGS="$KRB5_LDFLAGS $LDFLAGS" - LIBS="$KRB5_LIBS $LIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_init_context in -lkrb5" >&5 -$as_echo_n "checking for krb5_init_context in -lkrb5... " >&6; } -if ${ac_cv_lib_krb5_krb5_init_context+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lkrb5 $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char krb5_init_context (); -int -main () -{ -return krb5_init_context (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_krb5_krb5_init_context=yes -else - ac_cv_lib_krb5_krb5_init_context=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_krb5_krb5_init_context" >&5 -$as_echo "$ac_cv_lib_krb5_krb5_init_context" >&6; } -if test "x$ac_cv_lib_krb5_krb5_init_context" = xyes; then : - KRB5_LIBS="-lkrb5" - LIBS="$KRB5_LIBS $LIBS" - if test x"$inn_krb5_incroot" = x; then : + inn_krb5_header_found=false + if test x"$inn_krb5_incroot" = x; then : for ac_header in krb5.h kerberosv5/krb5.h krb5/krb5.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` @@ -17063,7 +17097,7 @@ if eval test \"x\$"$as_ac_Header"\" = x" cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF - + inn_krb5_header_found=true fi done @@ -17072,6 +17106,7 @@ else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5.h" >&5 $as_echo_n "checking for krb5.h... " >&6; } if test -f "${inn_krb5_incroot}/krb5.h"; then : + inn_krb5_header_found=true cat >>confdefs.h <<_ACEOF #define HAVE_KRB5_H 1 @@ -17086,6 +17121,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/krb5.h" >&5 $as_echo_n "checking for kerberosv5/krb5.h... " >&6; } if test -f "${inn_krb5_incroot}/kerberosv5/krb5.h"; then : + inn_krb5_header_found=true cat >>confdefs.h <<_ACEOF #define HAVE_KERBEROSV5_KRB5_H 1 @@ -17100,6 +17136,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5/krb5.h" >&5 $as_echo_n "checking for krb5/krb5.h... " >&6; } if test -f "${inn_krb5_incroot}/krb5/krb5.h"; then : + inn_krb5_header_found=true cat >>confdefs.h <<_ACEOF #define HAVE_KRB5_KRB5_H 1 @@ -17112,7 +17149,53 @@ else $as_echo "no" >&6; } fi fi - for ac_func in krb5_get_error_message + if test x"$inn_krb5_header_found" = xtrue; then : + inn_krb5_save_CPPFLAGS="$CPPFLAGS" + inn_krb5_save_LDFLAGS="$LDFLAGS" + inn_krb5_save_LIBS="$LIBS" + CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS" + LDFLAGS="$KRB5_LDFLAGS $LDFLAGS" + LIBS="$KRB5_LIBS $LIBS" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_init_context in -lkrb5" >&5 +$as_echo_n "checking for krb5_init_context in -lkrb5... " >&6; } +if ${ac_cv_lib_krb5_krb5_init_context+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lkrb5 $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char krb5_init_context (); +int +main () +{ +return krb5_init_context (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_krb5_krb5_init_context=yes +else + ac_cv_lib_krb5_krb5_init_context=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_krb5_krb5_init_context" >&5 +$as_echo "$ac_cv_lib_krb5_krb5_init_context" >&6; } +if test "x$ac_cv_lib_krb5_krb5_init_context" = xyes; then : + KRB5_LIBS="-lkrb5" + LIBS="$KRB5_LIBS $LIBS" + for ac_func in krb5_get_error_message do : ac_fn_c_check_func "$LINENO" "krb5_get_error_message" "ac_cv_func_krb5_get_error_message" if test "x$ac_cv_func_krb5_get_error_message" = xyes; then : @@ -17187,9 +17270,9 @@ fi $as_echo "$ac_cv_lib_ksvc_krb5_svc_get_msg" >&6; } if test "x$ac_cv_lib_ksvc_krb5_svc_get_msg" = xyes; then : KRB5_LIBS="$KRB5_LIBS -lksvc" - $as_echo "#define HAVE_KRB5_SVC_GET_MSG 1" >>confdefs.h + $as_echo "#define HAVE_KRB5_SVC_GET_MSG 1" >>confdefs.h - for ac_header in ibm_svc/krb5_svc.h + for ac_header in ibm_svc/krb5_svc.h do : ac_fn_c_check_header_compile "$LINENO" "ibm_svc/krb5_svc.h" "ac_cv_header_ibm_svc_krb5_svc_h" " #if HAVE_KRB5_H @@ -17211,6 +17294,54 @@ fi done else + inn_krb5_header_found=false + if test x"$inn_krb5_incroot" = x; then : + for ac_header in et/com_err.h kerberosv5/com_err.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + inn_krb5_header_found=true +fi + +done + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for et/com_err.h" >&5 +$as_echo_n "checking for et/com_err.h... " >&6; } + if test -f "${inn_krb5_incroot}/et/com_err.h"; then : + inn_krb5_header_found=true + +cat >>confdefs.h <<_ACEOF +#define HAVE_ET_COM_ERR_H 1 +_ACEOF + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/com_err.h" >&5 +$as_echo_n "checking for kerberosv5/com_err.h... " >&6; } + if test -f "${inn_krb5_incroot}/kerberosv5/com_err.h"; then : + inn_krb5_header_found=true + +cat >>confdefs.h <<_ACEOF +#define HAVE_KERBEROSV5_COM_ERR_H 1 +_ACEOF + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +fi + if test x"$inn_krb5_header_found" = xtrue; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for com_err in -lcom_err" >&5 $as_echo_n "checking for com_err in -lcom_err... " >&6; } if ${ac_cv_lib_com_err_com_err+:} false; then : @@ -17257,48 +17388,9 @@ else fi fi - if test x"$inn_krb5_incroot" = x; then : - for ac_header in et/com_err.h kerberosv5/com_err.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for et/com_err.h" >&5 -$as_echo_n "checking for et/com_err.h... " >&6; } - if test -f "${inn_krb5_incroot}/et/com_err.h"; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_ET_COM_ERR_H 1 -_ACEOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/com_err.h" >&5 -$as_echo_n "checking for kerberosv5/com_err.h... " >&6; } - if test -f "${inn_krb5_incroot}/kerberosv5/com_err.h"; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_KERBEROSV5_COM_ERR_H 1 -_ACEOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + if test x"true" = xtrue; then : + as_fn_error $? "cannot find usable com_err header" "$LINENO" 5 fi fi fi @@ -17318,6 +17410,11 @@ else fi fi +else + if test x"true" = xtrue; then : + as_fn_error $? "cannot find usable Kerberos header" "$LINENO" 5 +fi +fi CPPFLAGS="$inn_krb5_save_CPPFLAGS" LDFLAGS="$inn_krb5_save_LDFLAGS" LIBS="$inn_krb5_save_LIBS" @@ -17420,9 +17517,72 @@ fi fi fi if test x"$inn_krb5_config_KRB5_ok" = xyes; then : - KRB5_CPPFLAGS=`echo "$KRB5_CPPFLAGS" | sed 's%-I/usr/include %%'` - KRB5_CPPFLAGS=`echo "$KRB5_CPPFLAGS" | sed 's%-I/usr/include$%%'` - inn_krb5_save_CPPFLAGS="$CPPFLAGS" + KRB5_CPPFLAGS=`$as_echo "$KRB5_CPPFLAGS" | sed 's%-I/usr/include %%'` + KRB5_CPPFLAGS=`$as_echo "$KRB5_CPPFLAGS" | sed 's%-I/usr/include$%%'` + inn_krb5_header_found=false + if test x"$inn_krb5_incroot" = x; then : + for ac_header in krb5.h kerberosv5/krb5.h krb5/krb5.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + inn_krb5_header_found=true +fi + +done + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5.h" >&5 +$as_echo_n "checking for krb5.h... " >&6; } + if test -f "${inn_krb5_incroot}/krb5.h"; then : + inn_krb5_header_found=true + +cat >>confdefs.h <<_ACEOF +#define HAVE_KRB5_H 1 +_ACEOF + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/krb5.h" >&5 +$as_echo_n "checking for kerberosv5/krb5.h... " >&6; } + if test -f "${inn_krb5_incroot}/kerberosv5/krb5.h"; then : + inn_krb5_header_found=true + +cat >>confdefs.h <<_ACEOF +#define HAVE_KERBEROSV5_KRB5_H 1 +_ACEOF + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5/krb5.h" >&5 +$as_echo_n "checking for krb5/krb5.h... " >&6; } + if test -f "${inn_krb5_incroot}/krb5/krb5.h"; then : + inn_krb5_header_found=true + +cat >>confdefs.h <<_ACEOF +#define HAVE_KRB5_KRB5_H 1 +_ACEOF + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +fi + if test x"$inn_krb5_header_found" = xtrue; then : + inn_krb5_save_CPPFLAGS="$CPPFLAGS" inn_krb5_save_LDFLAGS="$LDFLAGS" inn_krb5_save_LIBS="$LIBS" CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS" @@ -17457,7 +17617,7 @@ else KRB5_LDFLAGS="$KRB5_LDFLAGS -L$inn_krb5_root/lib/" fi fi - KRB5_LDFLAGS=`echo "$KRB5_LDFLAGS" | sed -e 's/^ *//'` + KRB5_LDFLAGS=`$as_echo "$KRB5_LDFLAGS" | sed -e 's/^ *//'` fi fi if test x"$inn_krb5_includedir" != x; then : @@ -17469,15 +17629,78 @@ else fi fi fi - inn_krb5_save_CPPFLAGS="$CPPFLAGS" + inn_krb5_header_found=false + if test x"$inn_krb5_incroot" = x; then : + for ac_header in krb5.h kerberosv5/krb5.h krb5/krb5.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + inn_krb5_header_found=true +fi + +done + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5.h" >&5 +$as_echo_n "checking for krb5.h... " >&6; } + if test -f "${inn_krb5_incroot}/krb5.h"; then : + inn_krb5_header_found=true + +cat >>confdefs.h <<_ACEOF +#define HAVE_KRB5_H 1 +_ACEOF + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/krb5.h" >&5 +$as_echo_n "checking for kerberosv5/krb5.h... " >&6; } + if test -f "${inn_krb5_incroot}/kerberosv5/krb5.h"; then : + inn_krb5_header_found=true + +cat >>confdefs.h <<_ACEOF +#define HAVE_KERBEROSV5_KRB5_H 1 +_ACEOF + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5/krb5.h" >&5 +$as_echo_n "checking for krb5/krb5.h... " >&6; } + if test -f "${inn_krb5_incroot}/krb5/krb5.h"; then : + inn_krb5_header_found=true + +cat >>confdefs.h <<_ACEOF +#define HAVE_KRB5_KRB5_H 1 +_ACEOF + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +fi + if test x"$inn_krb5_header_found" = xtrue; then : + inn_krb5_save_CPPFLAGS="$CPPFLAGS" inn_krb5_save_LDFLAGS="$LDFLAGS" inn_krb5_save_LIBS="$LIBS" CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS" LDFLAGS="$KRB5_LDFLAGS $LDFLAGS" LIBS="$KRB5_LIBS $LIBS" - inn_krb5_extra= - LIBS= - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing res_search" >&5 + inn_krb5_extra= + LIBS= + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing res_search" >&5 $as_echo_n "checking for library containing res_search... " >&6; } if ${ac_cv_search_res_search+:} false; then : $as_echo_n "(cached) " >&6 @@ -17590,7 +17813,7 @@ fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5 $as_echo_n "checking for library containing gethostbyname... " >&6; } if ${ac_cv_search_gethostbyname+:} false; then : $as_echo_n "(cached) " >&6 @@ -17646,7 +17869,7 @@ if test "$ac_res" != no; then : fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5 $as_echo_n "checking for library containing socket... " >&6; } if ${ac_cv_search_socket+:} false; then : $as_echo_n "(cached) " >&6 @@ -17743,7 +17966,7 @@ fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing crypt" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing crypt" >&5 $as_echo_n "checking for library containing crypt... " >&6; } if ${ac_cv_search_crypt+:} false; then : $as_echo_n "(cached) " >&6 @@ -17799,7 +18022,7 @@ if test "$ac_res" != no; then : fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing roken_concat" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing roken_concat" >&5 $as_echo_n "checking for library containing roken_concat... " >&6; } if ${ac_cv_search_roken_concat+:} false; then : $as_echo_n "(cached) " >&6 @@ -17855,9 +18078,9 @@ if test "$ac_res" != no; then : fi - inn_krb5_extra="$LIBS" - LIBS="$inn_krb5_save_LIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_init_context in -lkrb5" >&5 + inn_krb5_extra="$LIBS" + LIBS="$inn_krb5_save_LIBS" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_init_context in -lkrb5" >&5 $as_echo_n "checking for krb5_init_context in -lkrb5... " >&6; } if ${ac_cv_lib_krb5_krb5_init_context+:} false; then : $as_echo_n "(cached) " >&6 @@ -18016,7 +18239,7 @@ fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_setspecific in -lkrb5support" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_setspecific in -lkrb5support" >&5 $as_echo_n "checking for krb5int_setspecific in -lkrb5support... " >&6; } if ${ac_cv_lib_krb5support_krb5int_setspecific+:} false; then : $as_echo_n "(cached) " >&6 @@ -18058,7 +18281,7 @@ fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for error_message in -lcom_err" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for error_message in -lcom_err" >&5 $as_echo_n "checking for error_message in -lcom_err... " >&6; } if ${ac_cv_lib_com_err_error_message+:} false; then : $as_echo_n "(cached) " >&6 @@ -18098,7 +18321,7 @@ if test "x$ac_cv_lib_com_err_error_messa inn_krb5_extra="-lcom_err $inn_krb5_extra" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_svc_get_msg in -lksvc" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_svc_get_msg in -lksvc" >&5 $as_echo_n "checking for krb5_svc_get_msg in -lksvc... " >&6; } if ${ac_cv_lib_ksvc_krb5_svc_get_msg+:} false; then : $as_echo_n "(cached) " >&6 @@ -18138,7 +18361,7 @@ if test "x$ac_cv_lib_ksvc_krb5_svc_get_m inn_krb5_extra="-lksvc $inn_krb5_extra" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_hash_md5 in -lk5crypto" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_hash_md5 in -lk5crypto" >&5 $as_echo_n "checking for krb5int_hash_md5 in -lk5crypto... " >&6; } if ${ac_cv_lib_k5crypto_krb5int_hash_md5+:} false; then : $as_echo_n "(cached) " >&6 @@ -18178,7 +18401,7 @@ if test "x$ac_cv_lib_k5crypto_krb5int_ha inn_krb5_extra="-lk5crypto $inn_krb5_extra" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for profile_get_values in -lk5profile" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for profile_get_values in -lk5profile" >&5 $as_echo_n "checking for profile_get_values in -lk5profile... " >&6; } if ${ac_cv_lib_k5profile_profile_get_values+:} false; then : $as_echo_n "(cached) " >&6 @@ -18218,7 +18441,7 @@ if test "x$ac_cv_lib_k5profile_profile_g inn_krb5_extra="-lk5profile $inn_krb5_extra" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_cc_default in -lkrb5" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_cc_default in -lkrb5" >&5 $as_echo_n "checking for krb5_cc_default in -lkrb5... " >&6; } if ${ac_cv_lib_krb5_krb5_cc_default+:} false; then : $as_echo_n "(cached) " >&6 @@ -18264,66 +18487,8 @@ fi fi - LIBS="$KRB5_LIBS $LIBS" - if test x"$inn_krb5_incroot" = x; then : - for ac_header in krb5.h kerberosv5/krb5.h krb5/krb5.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5.h" >&5 -$as_echo_n "checking for krb5.h... " >&6; } - if test -f "${inn_krb5_incroot}/krb5.h"; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_KRB5_H 1 -_ACEOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/krb5.h" >&5 -$as_echo_n "checking for kerberosv5/krb5.h... " >&6; } - if test -f "${inn_krb5_incroot}/kerberosv5/krb5.h"; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_KERBEROSV5_KRB5_H 1 -_ACEOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5/krb5.h" >&5 -$as_echo_n "checking for krb5/krb5.h... " >&6; } - if test -f "${inn_krb5_incroot}/krb5/krb5.h"; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_KRB5_KRB5_H 1 -_ACEOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -fi - for ac_func in krb5_get_error_message + LIBS="$KRB5_LIBS $LIBS" + for ac_func in krb5_get_error_message do : ac_fn_c_check_func "$LINENO" "krb5_get_error_message" "ac_cv_func_krb5_get_error_message" if test "x$ac_cv_func_krb5_get_error_message" = xyes; then : @@ -18389,7 +18554,8 @@ fi done else - if test x"$inn_krb5_incroot" = x; then : + inn_krb5_header_found=false + if test x"$inn_krb5_incroot" = x; then : for ac_header in et/com_err.h kerberosv5/com_err.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` @@ -18398,7 +18564,7 @@ if eval test \"x\$"$as_ac_Header"\" = x" cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF - + inn_krb5_header_found=true fi done @@ -18407,6 +18573,7 @@ else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for et/com_err.h" >&5 $as_echo_n "checking for et/com_err.h... " >&6; } if test -f "${inn_krb5_incroot}/et/com_err.h"; then : + inn_krb5_header_found=true cat >>confdefs.h <<_ACEOF #define HAVE_ET_COM_ERR_H 1 @@ -18418,9 +18585,10 @@ else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/com_err.h" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/com_err.h" >&5 $as_echo_n "checking for kerberosv5/com_err.h... " >&6; } if test -f "${inn_krb5_incroot}/kerberosv5/com_err.h"; then : + inn_krb5_header_found=true cat >>confdefs.h <<_ACEOF #define HAVE_KERBEROSV5_COM_ERR_H 1 @@ -18433,6 +18601,11 @@ else $as_echo "no" >&6; } fi fi + if test x"$inn_krb5_header_found" != xtrue; then : + if test x"true" = xtrue; then : + as_fn_error $? "cannot find usable com_err header" "$LINENO" 5 +fi +fi fi done @@ -18445,76 +18618,23 @@ done fi done +else + if test x"true" = xtrue; then : + as_fn_error $? "cannot find usable Kerberos header" "$LINENO" 5 +fi +fi CPPFLAGS="$inn_krb5_save_CPPFLAGS" LDFLAGS="$inn_krb5_save_LDFLAGS" LIBS="$inn_krb5_save_LIBS" fi - inn_krb5_save_CPPFLAGS="$CPPFLAGS" + inn_krb5_save_CPPFLAGS="$CPPFLAGS" inn_krb5_save_LDFLAGS="$LDFLAGS" inn_krb5_save_LIBS="$LIBS" CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS" LDFLAGS="$KRB5_LDFLAGS $LDFLAGS" LIBS="$KRB5_LIBS $LIBS" - if test x"$inn_krb5_incroot" = x; then : - for ac_header in krb5.h kerberosv5/krb5.h krb5/krb5.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5.h" >&5 -$as_echo_n "checking for krb5.h... " >&6; } - if test -f "${inn_krb5_incroot}/krb5.h"; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_KRB5_H 1 -_ACEOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/krb5.h" >&5 -$as_echo_n "checking for kerberosv5/krb5.h... " >&6; } - if test -f "${inn_krb5_incroot}/kerberosv5/krb5.h"; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_KERBEROSV5_KRB5_H 1 -_ACEOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5/krb5.h" >&5 -$as_echo_n "checking for krb5/krb5.h... " >&6; } - if test -f "${inn_krb5_incroot}/krb5/krb5.h"; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_KRB5_KRB5_H 1 -_ACEOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -fi - for ac_func in krb5_get_error_message + for ac_func in krb5_get_error_message do : ac_fn_c_check_func "$LINENO" "krb5_get_error_message" "ac_cv_func_krb5_get_error_message" if test "x$ac_cv_func_krb5_get_error_message" = xyes; then : @@ -18580,7 +18700,8 @@ fi done else - if test x"$inn_krb5_incroot" = x; then : + inn_krb5_header_found=false + if test x"$inn_krb5_incroot" = x; then : for ac_header in et/com_err.h kerberosv5/com_err.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` @@ -18589,7 +18710,7 @@ if eval test \"x\$"$as_ac_Header"\" = x" cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF - + inn_krb5_header_found=true fi done @@ -18598,6 +18719,7 @@ else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for et/com_err.h" >&5 $as_echo_n "checking for et/com_err.h... " >&6; } if test -f "${inn_krb5_incroot}/et/com_err.h"; then : + inn_krb5_header_found=true cat >>confdefs.h <<_ACEOF #define HAVE_ET_COM_ERR_H 1 @@ -18609,9 +18731,10 @@ else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/com_err.h" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/com_err.h" >&5 $as_echo_n "checking for kerberosv5/com_err.h... " >&6; } if test -f "${inn_krb5_incroot}/kerberosv5/com_err.h"; then : + inn_krb5_header_found=true cat >>confdefs.h <<_ACEOF #define HAVE_KERBEROSV5_COM_ERR_H 1 @@ -18624,6 +18747,11 @@ else $as_echo "no" >&6; } fi fi + if test x"$inn_krb5_header_found" != xtrue; then : + if test x"true" = xtrue; then : + as_fn_error $? "cannot find usable com_err header" "$LINENO" 5 +fi +fi fi done @@ -18636,10 +18764,15 @@ done fi done - CPPFLAGS="$inn_krb5_save_CPPFLAGS" + CPPFLAGS="$inn_krb5_save_CPPFLAGS" LDFLAGS="$inn_krb5_save_LDFLAGS" LIBS="$inn_krb5_save_LIBS" else + if test x"true" = xtrue; then : + as_fn_error $? "cannot find usable Kerberos header" "$LINENO" 5 +fi +fi +else if test x"$inn_krb5_libdir" != x; then : KRB5_LDFLAGS="-L$inn_krb5_libdir" else @@ -18658,7 +18791,7 @@ else KRB5_LDFLAGS="$KRB5_LDFLAGS -L$inn_krb5_root/lib/" fi fi - KRB5_LDFLAGS=`echo "$KRB5_LDFLAGS" | sed -e 's/^ *//'` + KRB5_LDFLAGS=`$as_echo "$KRB5_LDFLAGS" | sed -e 's/^ *//'` fi fi if test x"$inn_krb5_includedir" != x; then : @@ -18670,15 +18803,78 @@ else fi fi fi - inn_krb5_save_CPPFLAGS="$CPPFLAGS" + inn_krb5_header_found=false + if test x"$inn_krb5_incroot" = x; then : + for ac_header in krb5.h kerberosv5/krb5.h krb5/krb5.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + inn_krb5_header_found=true +fi + +done + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5.h" >&5 +$as_echo_n "checking for krb5.h... " >&6; } + if test -f "${inn_krb5_incroot}/krb5.h"; then : + inn_krb5_header_found=true + +cat >>confdefs.h <<_ACEOF +#define HAVE_KRB5_H 1 +_ACEOF + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/krb5.h" >&5 +$as_echo_n "checking for kerberosv5/krb5.h... " >&6; } + if test -f "${inn_krb5_incroot}/kerberosv5/krb5.h"; then : + inn_krb5_header_found=true + +cat >>confdefs.h <<_ACEOF +#define HAVE_KERBEROSV5_KRB5_H 1 +_ACEOF + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5/krb5.h" >&5 +$as_echo_n "checking for krb5/krb5.h... " >&6; } + if test -f "${inn_krb5_incroot}/krb5/krb5.h"; then : + inn_krb5_header_found=true + +cat >>confdefs.h <<_ACEOF +#define HAVE_KRB5_KRB5_H 1 +_ACEOF + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +fi + if test x"$inn_krb5_header_found" = xtrue; then : + inn_krb5_save_CPPFLAGS="$CPPFLAGS" inn_krb5_save_LDFLAGS="$LDFLAGS" inn_krb5_save_LIBS="$LIBS" CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS" LDFLAGS="$KRB5_LDFLAGS $LDFLAGS" LIBS="$KRB5_LIBS $LIBS" - inn_krb5_extra= - LIBS= - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing res_search" >&5 + inn_krb5_extra= + LIBS= + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing res_search" >&5 $as_echo_n "checking for library containing res_search... " >&6; } if ${ac_cv_search_res_search+:} false; then : $as_echo_n "(cached) " >&6 @@ -18791,7 +18987,7 @@ fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5 $as_echo_n "checking for library containing gethostbyname... " >&6; } if ${ac_cv_search_gethostbyname+:} false; then : $as_echo_n "(cached) " >&6 @@ -18847,7 +19043,7 @@ if test "$ac_res" != no; then : fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5 $as_echo_n "checking for library containing socket... " >&6; } if ${ac_cv_search_socket+:} false; then : $as_echo_n "(cached) " >&6 @@ -18944,7 +19140,7 @@ fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing crypt" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing crypt" >&5 $as_echo_n "checking for library containing crypt... " >&6; } if ${ac_cv_search_crypt+:} false; then : $as_echo_n "(cached) " >&6 @@ -19000,7 +19196,7 @@ if test "$ac_res" != no; then : fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing roken_concat" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing roken_concat" >&5 $as_echo_n "checking for library containing roken_concat... " >&6; } if ${ac_cv_search_roken_concat+:} false; then : $as_echo_n "(cached) " >&6 @@ -19056,9 +19252,9 @@ if test "$ac_res" != no; then : fi - inn_krb5_extra="$LIBS" - LIBS="$inn_krb5_save_LIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_init_context in -lkrb5" >&5 + inn_krb5_extra="$LIBS" + LIBS="$inn_krb5_save_LIBS" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_init_context in -lkrb5" >&5 $as_echo_n "checking for krb5_init_context in -lkrb5... " >&6; } if ${ac_cv_lib_krb5_krb5_init_context+:} false; then : $as_echo_n "(cached) " >&6 @@ -19217,7 +19413,7 @@ fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_setspecific in -lkrb5support" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_setspecific in -lkrb5support" >&5 $as_echo_n "checking for krb5int_setspecific in -lkrb5support... " >&6; } if ${ac_cv_lib_krb5support_krb5int_setspecific+:} false; then : $as_echo_n "(cached) " >&6 @@ -19259,7 +19455,7 @@ fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for error_message in -lcom_err" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for error_message in -lcom_err" >&5 $as_echo_n "checking for error_message in -lcom_err... " >&6; } if ${ac_cv_lib_com_err_error_message+:} false; then : $as_echo_n "(cached) " >&6 @@ -19299,7 +19495,7 @@ if test "x$ac_cv_lib_com_err_error_messa inn_krb5_extra="-lcom_err $inn_krb5_extra" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_svc_get_msg in -lksvc" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_svc_get_msg in -lksvc" >&5 $as_echo_n "checking for krb5_svc_get_msg in -lksvc... " >&6; } if ${ac_cv_lib_ksvc_krb5_svc_get_msg+:} false; then : $as_echo_n "(cached) " >&6 @@ -19339,7 +19535,7 @@ if test "x$ac_cv_lib_ksvc_krb5_svc_get_m inn_krb5_extra="-lksvc $inn_krb5_extra" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_hash_md5 in -lk5crypto" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_hash_md5 in -lk5crypto" >&5 $as_echo_n "checking for krb5int_hash_md5 in -lk5crypto... " >&6; } if ${ac_cv_lib_k5crypto_krb5int_hash_md5+:} false; then : $as_echo_n "(cached) " >&6 @@ -19379,7 +19575,7 @@ if test "x$ac_cv_lib_k5crypto_krb5int_ha inn_krb5_extra="-lk5crypto $inn_krb5_extra" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for profile_get_values in -lk5profile" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for profile_get_values in -lk5profile" >&5 $as_echo_n "checking for profile_get_values in -lk5profile... " >&6; } if ${ac_cv_lib_k5profile_profile_get_values+:} false; then : $as_echo_n "(cached) " >&6 @@ -19419,7 +19615,7 @@ if test "x$ac_cv_lib_k5profile_profile_g inn_krb5_extra="-lk5profile $inn_krb5_extra" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_cc_default in -lkrb5" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_cc_default in -lkrb5" >&5 $as_echo_n "checking for krb5_cc_default in -lkrb5... " >&6; } if ${ac_cv_lib_krb5_krb5_cc_default+:} false; then : $as_echo_n "(cached) " >&6 @@ -19465,66 +19661,8 @@ fi fi - LIBS="$KRB5_LIBS $LIBS" - if test x"$inn_krb5_incroot" = x; then : - for ac_header in krb5.h kerberosv5/krb5.h krb5/krb5.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5.h" >&5 -$as_echo_n "checking for krb5.h... " >&6; } - if test -f "${inn_krb5_incroot}/krb5.h"; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_KRB5_H 1 -_ACEOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/krb5.h" >&5 -$as_echo_n "checking for kerberosv5/krb5.h... " >&6; } - if test -f "${inn_krb5_incroot}/kerberosv5/krb5.h"; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_KERBEROSV5_KRB5_H 1 -_ACEOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5/krb5.h" >&5 -$as_echo_n "checking for krb5/krb5.h... " >&6; } - if test -f "${inn_krb5_incroot}/krb5/krb5.h"; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_KRB5_KRB5_H 1 -_ACEOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -fi - for ac_func in krb5_get_error_message + LIBS="$KRB5_LIBS $LIBS" + for ac_func in krb5_get_error_message do : ac_fn_c_check_func "$LINENO" "krb5_get_error_message" "ac_cv_func_krb5_get_error_message" if test "x$ac_cv_func_krb5_get_error_message" = xyes; then : @@ -19590,7 +19728,8 @@ fi done else - if test x"$inn_krb5_incroot" = x; then : + inn_krb5_header_found=false + if test x"$inn_krb5_incroot" = x; then : for ac_header in et/com_err.h kerberosv5/com_err.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` @@ -19599,7 +19738,7 @@ if eval test \"x\$"$as_ac_Header"\" = x" cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF - + inn_krb5_header_found=true fi done @@ -19608,6 +19747,7 @@ else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for et/com_err.h" >&5 $as_echo_n "checking for et/com_err.h... " >&6; } if test -f "${inn_krb5_incroot}/et/com_err.h"; then : + inn_krb5_header_found=true cat >>confdefs.h <<_ACEOF #define HAVE_ET_COM_ERR_H 1 @@ -19619,9 +19759,10 @@ else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/com_err.h" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/com_err.h" >&5 $as_echo_n "checking for kerberosv5/com_err.h... " >&6; } if test -f "${inn_krb5_incroot}/kerberosv5/com_err.h"; then : + inn_krb5_header_found=true cat >>confdefs.h <<_ACEOF #define HAVE_KERBEROSV5_COM_ERR_H 1 @@ -19634,6 +19775,11 @@ else $as_echo "no" >&6; } fi fi + if test x"$inn_krb5_header_found" != xtrue; then : + if test x"true" = xtrue; then : + as_fn_error $? "cannot find usable com_err header" "$LINENO" 5 +fi +fi fi done @@ -19646,6 +19792,11 @@ done fi done +else + if test x"true" = xtrue; then : + as_fn_error $? "cannot find usable Kerberos header" "$LINENO" 5 +fi +fi CPPFLAGS="$inn_krb5_save_CPPFLAGS" LDFLAGS="$inn_krb5_save_LDFLAGS" LIBS="$inn_krb5_save_LIBS" @@ -19669,7 +19820,7 @@ else KRB5_LDFLAGS="$KRB5_LDFLAGS -L$inn_krb5_root/lib/" fi fi - KRB5_LDFLAGS=`echo "$KRB5_LDFLAGS" | sed -e 's/^ *//'` + KRB5_LDFLAGS=`$as_echo "$KRB5_LDFLAGS" | sed -e 's/^ *//'` fi fi if test x"$inn_krb5_includedir" != x; then : @@ -19681,15 +19832,78 @@ else fi fi fi - inn_krb5_save_CPPFLAGS="$CPPFLAGS" + inn_krb5_header_found=false + if test x"$inn_krb5_incroot" = x; then : + for ac_header in krb5.h kerberosv5/krb5.h krb5/krb5.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + inn_krb5_header_found=true +fi + +done + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5.h" >&5 +$as_echo_n "checking for krb5.h... " >&6; } + if test -f "${inn_krb5_incroot}/krb5.h"; then : + inn_krb5_header_found=true + +cat >>confdefs.h <<_ACEOF +#define HAVE_KRB5_H 1 +_ACEOF + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/krb5.h" >&5 +$as_echo_n "checking for kerberosv5/krb5.h... " >&6; } + if test -f "${inn_krb5_incroot}/kerberosv5/krb5.h"; then : + inn_krb5_header_found=true + +cat >>confdefs.h <<_ACEOF +#define HAVE_KERBEROSV5_KRB5_H 1 +_ACEOF + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5/krb5.h" >&5 +$as_echo_n "checking for krb5/krb5.h... " >&6; } + if test -f "${inn_krb5_incroot}/krb5/krb5.h"; then : + inn_krb5_header_found=true + +cat >>confdefs.h <<_ACEOF +#define HAVE_KRB5_KRB5_H 1 +_ACEOF + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +fi + if test x"$inn_krb5_header_found" = xtrue; then : + inn_krb5_save_CPPFLAGS="$CPPFLAGS" inn_krb5_save_LDFLAGS="$LDFLAGS" inn_krb5_save_LIBS="$LIBS" CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS" LDFLAGS="$KRB5_LDFLAGS $LDFLAGS" LIBS="$KRB5_LIBS $LIBS" - inn_krb5_extra= - LIBS= - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing res_search" >&5 + inn_krb5_extra= + LIBS= + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing res_search" >&5 $as_echo_n "checking for library containing res_search... " >&6; } if ${ac_cv_search_res_search+:} false; then : $as_echo_n "(cached) " >&6 @@ -19802,7 +20016,7 @@ fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5 $as_echo_n "checking for library containing gethostbyname... " >&6; } if ${ac_cv_search_gethostbyname+:} false; then : $as_echo_n "(cached) " >&6 @@ -19858,7 +20072,7 @@ if test "$ac_res" != no; then : fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5 $as_echo_n "checking for library containing socket... " >&6; } if ${ac_cv_search_socket+:} false; then : $as_echo_n "(cached) " >&6 @@ -19955,7 +20169,7 @@ fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing crypt" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing crypt" >&5 $as_echo_n "checking for library containing crypt... " >&6; } if ${ac_cv_search_crypt+:} false; then : $as_echo_n "(cached) " >&6 @@ -20011,7 +20225,7 @@ if test "$ac_res" != no; then : fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing roken_concat" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing roken_concat" >&5 $as_echo_n "checking for library containing roken_concat... " >&6; } if ${ac_cv_search_roken_concat+:} false; then : $as_echo_n "(cached) " >&6 @@ -20067,9 +20281,9 @@ if test "$ac_res" != no; then : fi - inn_krb5_extra="$LIBS" - LIBS="$inn_krb5_save_LIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_init_context in -lkrb5" >&5 + inn_krb5_extra="$LIBS" + LIBS="$inn_krb5_save_LIBS" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_init_context in -lkrb5" >&5 $as_echo_n "checking for krb5_init_context in -lkrb5... " >&6; } if ${ac_cv_lib_krb5_krb5_init_context+:} false; then : $as_echo_n "(cached) " >&6 @@ -20228,7 +20442,7 @@ fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_setspecific in -lkrb5support" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_setspecific in -lkrb5support" >&5 $as_echo_n "checking for krb5int_setspecific in -lkrb5support... " >&6; } if ${ac_cv_lib_krb5support_krb5int_setspecific+:} false; then : $as_echo_n "(cached) " >&6 @@ -20270,7 +20484,7 @@ fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for error_message in -lcom_err" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for error_message in -lcom_err" >&5 $as_echo_n "checking for error_message in -lcom_err... " >&6; } if ${ac_cv_lib_com_err_error_message+:} false; then : $as_echo_n "(cached) " >&6 @@ -20310,7 +20524,7 @@ if test "x$ac_cv_lib_com_err_error_messa inn_krb5_extra="-lcom_err $inn_krb5_extra" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_svc_get_msg in -lksvc" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_svc_get_msg in -lksvc" >&5 $as_echo_n "checking for krb5_svc_get_msg in -lksvc... " >&6; } if ${ac_cv_lib_ksvc_krb5_svc_get_msg+:} false; then : $as_echo_n "(cached) " >&6 @@ -20350,7 +20564,7 @@ if test "x$ac_cv_lib_ksvc_krb5_svc_get_m inn_krb5_extra="-lksvc $inn_krb5_extra" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_hash_md5 in -lk5crypto" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_hash_md5 in -lk5crypto" >&5 $as_echo_n "checking for krb5int_hash_md5 in -lk5crypto... " >&6; } if ${ac_cv_lib_k5crypto_krb5int_hash_md5+:} false; then : $as_echo_n "(cached) " >&6 @@ -20390,7 +20604,7 @@ if test "x$ac_cv_lib_k5crypto_krb5int_ha inn_krb5_extra="-lk5crypto $inn_krb5_extra" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for profile_get_values in -lk5profile" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for profile_get_values in -lk5profile" >&5 $as_echo_n "checking for profile_get_values in -lk5profile... " >&6; } if ${ac_cv_lib_k5profile_profile_get_values+:} false; then : $as_echo_n "(cached) " >&6 @@ -20430,7 +20644,7 @@ if test "x$ac_cv_lib_k5profile_profile_g inn_krb5_extra="-lk5profile $inn_krb5_extra" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_cc_default in -lkrb5" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_cc_default in -lkrb5" >&5 $as_echo_n "checking for krb5_cc_default in -lkrb5... " >&6; } if ${ac_cv_lib_krb5_krb5_cc_default+:} false; then : $as_echo_n "(cached) " >&6 @@ -20476,66 +20690,8 @@ fi fi - LIBS="$KRB5_LIBS $LIBS" - if test x"$inn_krb5_incroot" = x; then : - for ac_header in krb5.h kerberosv5/krb5.h krb5/krb5.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5.h" >&5 -$as_echo_n "checking for krb5.h... " >&6; } - if test -f "${inn_krb5_incroot}/krb5.h"; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_KRB5_H 1 -_ACEOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/krb5.h" >&5 -$as_echo_n "checking for kerberosv5/krb5.h... " >&6; } - if test -f "${inn_krb5_incroot}/kerberosv5/krb5.h"; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_KERBEROSV5_KRB5_H 1 -_ACEOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5/krb5.h" >&5 -$as_echo_n "checking for krb5/krb5.h... " >&6; } - if test -f "${inn_krb5_incroot}/krb5/krb5.h"; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_KRB5_KRB5_H 1 -_ACEOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -fi - for ac_func in krb5_get_error_message + LIBS="$KRB5_LIBS $LIBS" + for ac_func in krb5_get_error_message do : ac_fn_c_check_func "$LINENO" "krb5_get_error_message" "ac_cv_func_krb5_get_error_message" if test "x$ac_cv_func_krb5_get_error_message" = xyes; then : @@ -20601,7 +20757,8 @@ fi done else - if test x"$inn_krb5_incroot" = x; then : + inn_krb5_header_found=false + if test x"$inn_krb5_incroot" = x; then : for ac_header in et/com_err.h kerberosv5/com_err.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` @@ -20610,7 +20767,7 @@ if eval test \"x\$"$as_ac_Header"\" = x" cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF - + inn_krb5_header_found=true fi done @@ -20619,6 +20776,7 @@ else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for et/com_err.h" >&5 $as_echo_n "checking for et/com_err.h... " >&6; } if test -f "${inn_krb5_incroot}/et/com_err.h"; then : + inn_krb5_header_found=true cat >>confdefs.h <<_ACEOF #define HAVE_ET_COM_ERR_H 1 @@ -20630,9 +20788,10 @@ else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/com_err.h" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/com_err.h" >&5 $as_echo_n "checking for kerberosv5/com_err.h... " >&6; } if test -f "${inn_krb5_incroot}/kerberosv5/com_err.h"; then : + inn_krb5_header_found=true cat >>confdefs.h <<_ACEOF #define HAVE_KERBEROSV5_COM_ERR_H 1 @@ -20645,6 +20804,11 @@ else $as_echo "no" >&6; } fi fi + if test x"$inn_krb5_header_found" != xtrue; then : + if test x"true" = xtrue; then : + as_fn_error $? "cannot find usable com_err header" "$LINENO" 5 +fi +fi fi done @@ -20657,6 +20821,11 @@ done fi done +else + if test x"true" = xtrue; then : + as_fn_error $? "cannot find usable Kerberos header" "$LINENO" 5 +fi +fi CPPFLAGS="$inn_krb5_save_CPPFLAGS" LDFLAGS="$inn_krb5_save_LDFLAGS" LIBS="$inn_krb5_save_LIBS" @@ -20670,7 +20839,7 @@ fi ;; esac : - KRB5_CPPFLAGS_GCC=`echo "$KRB5_CPPFLAGS" | sed -e 's/-I/-isystem /g'` + KRB5_CPPFLAGS_WARNINGS=`$as_echo "$KRB5_CPPFLAGS" | sed -e 's/-I/-isystem /g'` else inn_krb5_incroot= @@ -20704,7 +20873,7 @@ else KRB5_LDFLAGS="$KRB5_LDFLAGS -L$inn_krb5_root/lib/" fi fi - KRB5_LDFLAGS=`echo "$KRB5_LDFLAGS" | sed -e 's/^ *//'` + KRB5_LDFLAGS=`$as_echo "$KRB5_LDFLAGS" | sed -e 's/^ *//'` fi fi if test x"$inn_krb5_includedir" != x; then : @@ -20716,52 +20885,8 @@ else fi fi fi - inn_krb5_save_CPPFLAGS="$CPPFLAGS" - inn_krb5_save_LDFLAGS="$LDFLAGS" - inn_krb5_save_LIBS="$LIBS" - CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS" - LDFLAGS="$KRB5_LDFLAGS $LDFLAGS" - LIBS="$KRB5_LIBS $LIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_init_context in -lkrb5" >&5 -$as_echo_n "checking for krb5_init_context in -lkrb5... " >&6; } -if ${ac_cv_lib_krb5_krb5_init_context+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lkrb5 $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char krb5_init_context (); -int -main () -{ -return krb5_init_context (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_krb5_krb5_init_context=yes -else - ac_cv_lib_krb5_krb5_init_context=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_krb5_krb5_init_context" >&5 -$as_echo "$ac_cv_lib_krb5_krb5_init_context" >&6; } -if test "x$ac_cv_lib_krb5_krb5_init_context" = xyes; then : - KRB5_LIBS="-lkrb5" - LIBS="$KRB5_LIBS $LIBS" - if test x"$inn_krb5_incroot" = x; then : + inn_krb5_header_found=false + if test x"$inn_krb5_incroot" = x; then : for ac_header in krb5.h kerberosv5/krb5.h krb5/krb5.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` @@ -20770,7 +20895,7 @@ if eval test \"x\$"$as_ac_Header"\" = x" cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF - + inn_krb5_header_found=true fi done @@ -20779,6 +20904,7 @@ else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5.h" >&5 $as_echo_n "checking for krb5.h... " >&6; } if test -f "${inn_krb5_incroot}/krb5.h"; then : + inn_krb5_header_found=true cat >>confdefs.h <<_ACEOF #define HAVE_KRB5_H 1 @@ -20793,6 +20919,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/krb5.h" >&5 $as_echo_n "checking for kerberosv5/krb5.h... " >&6; } if test -f "${inn_krb5_incroot}/kerberosv5/krb5.h"; then : + inn_krb5_header_found=true cat >>confdefs.h <<_ACEOF #define HAVE_KERBEROSV5_KRB5_H 1 @@ -20807,6 +20934,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5/krb5.h" >&5 $as_echo_n "checking for krb5/krb5.h... " >&6; } if test -f "${inn_krb5_incroot}/krb5/krb5.h"; then : + inn_krb5_header_found=true cat >>confdefs.h <<_ACEOF #define HAVE_KRB5_KRB5_H 1 @@ -20819,7 +20947,53 @@ else $as_echo "no" >&6; } fi fi - for ac_func in krb5_get_error_message + if test x"$inn_krb5_header_found" = xtrue; then : + inn_krb5_save_CPPFLAGS="$CPPFLAGS" + inn_krb5_save_LDFLAGS="$LDFLAGS" + inn_krb5_save_LIBS="$LIBS" + CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS" + LDFLAGS="$KRB5_LDFLAGS $LDFLAGS" + LIBS="$KRB5_LIBS $LIBS" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_init_context in -lkrb5" >&5 +$as_echo_n "checking for krb5_init_context in -lkrb5... " >&6; } +if ${ac_cv_lib_krb5_krb5_init_context+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lkrb5 $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char krb5_init_context (); +int +main () +{ +return krb5_init_context (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_krb5_krb5_init_context=yes +else + ac_cv_lib_krb5_krb5_init_context=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_krb5_krb5_init_context" >&5 +$as_echo "$ac_cv_lib_krb5_krb5_init_context" >&6; } +if test "x$ac_cv_lib_krb5_krb5_init_context" = xyes; then : + KRB5_LIBS="-lkrb5" + LIBS="$KRB5_LIBS $LIBS" + for ac_func in krb5_get_error_message do : ac_fn_c_check_func "$LINENO" "krb5_get_error_message" "ac_cv_func_krb5_get_error_message" if test "x$ac_cv_func_krb5_get_error_message" = xyes; then : @@ -20894,9 +21068,9 @@ fi $as_echo "$ac_cv_lib_ksvc_krb5_svc_get_msg" >&6; } if test "x$ac_cv_lib_ksvc_krb5_svc_get_msg" = xyes; then : KRB5_LIBS="$KRB5_LIBS -lksvc" - $as_echo "#define HAVE_KRB5_SVC_GET_MSG 1" >>confdefs.h + $as_echo "#define HAVE_KRB5_SVC_GET_MSG 1" >>confdefs.h - for ac_header in ibm_svc/krb5_svc.h + for ac_header in ibm_svc/krb5_svc.h do : ac_fn_c_check_header_compile "$LINENO" "ibm_svc/krb5_svc.h" "ac_cv_header_ibm_svc_krb5_svc_h" " #if HAVE_KRB5_H @@ -20918,6 +21092,54 @@ fi done else + inn_krb5_header_found=false + if test x"$inn_krb5_incroot" = x; then : + for ac_header in et/com_err.h kerberosv5/com_err.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + inn_krb5_header_found=true +fi + +done + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for et/com_err.h" >&5 +$as_echo_n "checking for et/com_err.h... " >&6; } + if test -f "${inn_krb5_incroot}/et/com_err.h"; then : + inn_krb5_header_found=true + +cat >>confdefs.h <<_ACEOF +#define HAVE_ET_COM_ERR_H 1 +_ACEOF + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/com_err.h" >&5 +$as_echo_n "checking for kerberosv5/com_err.h... " >&6; } + if test -f "${inn_krb5_incroot}/kerberosv5/com_err.h"; then : + inn_krb5_header_found=true + +cat >>confdefs.h <<_ACEOF +#define HAVE_KERBEROSV5_COM_ERR_H 1 +_ACEOF + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +fi + if test x"$inn_krb5_header_found" = xtrue; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for com_err in -lcom_err" >&5 $as_echo_n "checking for com_err in -lcom_err... " >&6; } if ${ac_cv_lib_com_err_com_err+:} false; then : @@ -20964,48 +21186,9 @@ else fi fi - if test x"$inn_krb5_incroot" = x; then : - for ac_header in et/com_err.h kerberosv5/com_err.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for et/com_err.h" >&5 -$as_echo_n "checking for et/com_err.h... " >&6; } - if test -f "${inn_krb5_incroot}/et/com_err.h"; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_ET_COM_ERR_H 1 -_ACEOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/com_err.h" >&5 -$as_echo_n "checking for kerberosv5/com_err.h... " >&6; } - if test -f "${inn_krb5_incroot}/kerberosv5/com_err.h"; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_KERBEROSV5_COM_ERR_H 1 -_ACEOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + if test x"false" = xtrue; then : + as_fn_error $? "cannot find usable com_err header" "$LINENO" 5 fi fi fi @@ -21025,6 +21208,11 @@ else fi fi +else + if test x"false" = xtrue; then : + as_fn_error $? "cannot find usable Kerberos header" "$LINENO" 5 +fi +fi CPPFLAGS="$inn_krb5_save_CPPFLAGS" LDFLAGS="$inn_krb5_save_LDFLAGS" LIBS="$inn_krb5_save_LIBS" @@ -21127,9 +21315,72 @@ fi fi fi if test x"$inn_krb5_config_KRB5_ok" = xyes; then : - KRB5_CPPFLAGS=`echo "$KRB5_CPPFLAGS" | sed 's%-I/usr/include %%'` - KRB5_CPPFLAGS=`echo "$KRB5_CPPFLAGS" | sed 's%-I/usr/include$%%'` - inn_krb5_save_CPPFLAGS="$CPPFLAGS" + KRB5_CPPFLAGS=`$as_echo "$KRB5_CPPFLAGS" | sed 's%-I/usr/include %%'` + KRB5_CPPFLAGS=`$as_echo "$KRB5_CPPFLAGS" | sed 's%-I/usr/include$%%'` + inn_krb5_header_found=false + if test x"$inn_krb5_incroot" = x; then : + for ac_header in krb5.h kerberosv5/krb5.h krb5/krb5.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + inn_krb5_header_found=true +fi + +done + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5.h" >&5 +$as_echo_n "checking for krb5.h... " >&6; } + if test -f "${inn_krb5_incroot}/krb5.h"; then : + inn_krb5_header_found=true + +cat >>confdefs.h <<_ACEOF +#define HAVE_KRB5_H 1 +_ACEOF + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/krb5.h" >&5 +$as_echo_n "checking for kerberosv5/krb5.h... " >&6; } + if test -f "${inn_krb5_incroot}/kerberosv5/krb5.h"; then : + inn_krb5_header_found=true + +cat >>confdefs.h <<_ACEOF +#define HAVE_KERBEROSV5_KRB5_H 1 +_ACEOF + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5/krb5.h" >&5 +$as_echo_n "checking for krb5/krb5.h... " >&6; } + if test -f "${inn_krb5_incroot}/krb5/krb5.h"; then : + inn_krb5_header_found=true + +cat >>confdefs.h <<_ACEOF +#define HAVE_KRB5_KRB5_H 1 +_ACEOF + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +fi + if test x"$inn_krb5_header_found" = xtrue; then : + inn_krb5_save_CPPFLAGS="$CPPFLAGS" inn_krb5_save_LDFLAGS="$LDFLAGS" inn_krb5_save_LIBS="$LIBS" CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS" @@ -21164,7 +21415,7 @@ else KRB5_LDFLAGS="$KRB5_LDFLAGS -L$inn_krb5_root/lib/" fi fi - KRB5_LDFLAGS=`echo "$KRB5_LDFLAGS" | sed -e 's/^ *//'` + KRB5_LDFLAGS=`$as_echo "$KRB5_LDFLAGS" | sed -e 's/^ *//'` fi fi if test x"$inn_krb5_includedir" != x; then : @@ -21176,15 +21427,78 @@ else fi fi fi - inn_krb5_save_CPPFLAGS="$CPPFLAGS" + inn_krb5_header_found=false + if test x"$inn_krb5_incroot" = x; then : + for ac_header in krb5.h kerberosv5/krb5.h krb5/krb5.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + inn_krb5_header_found=true +fi + +done + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5.h" >&5 +$as_echo_n "checking for krb5.h... " >&6; } + if test -f "${inn_krb5_incroot}/krb5.h"; then : + inn_krb5_header_found=true + +cat >>confdefs.h <<_ACEOF +#define HAVE_KRB5_H 1 +_ACEOF + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/krb5.h" >&5 +$as_echo_n "checking for kerberosv5/krb5.h... " >&6; } + if test -f "${inn_krb5_incroot}/kerberosv5/krb5.h"; then : + inn_krb5_header_found=true + +cat >>confdefs.h <<_ACEOF +#define HAVE_KERBEROSV5_KRB5_H 1 +_ACEOF + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5/krb5.h" >&5 +$as_echo_n "checking for krb5/krb5.h... " >&6; } + if test -f "${inn_krb5_incroot}/krb5/krb5.h"; then : + inn_krb5_header_found=true + +cat >>confdefs.h <<_ACEOF +#define HAVE_KRB5_KRB5_H 1 +_ACEOF + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +fi + if test x"$inn_krb5_header_found" = xtrue; then : + inn_krb5_save_CPPFLAGS="$CPPFLAGS" inn_krb5_save_LDFLAGS="$LDFLAGS" inn_krb5_save_LIBS="$LIBS" CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS" LDFLAGS="$KRB5_LDFLAGS $LDFLAGS" LIBS="$KRB5_LIBS $LIBS" - inn_krb5_extra= - LIBS= - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing res_search" >&5 + inn_krb5_extra= + LIBS= + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing res_search" >&5 $as_echo_n "checking for library containing res_search... " >&6; } if ${ac_cv_search_res_search+:} false; then : $as_echo_n "(cached) " >&6 @@ -21297,7 +21611,7 @@ fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5 $as_echo_n "checking for library containing gethostbyname... " >&6; } if ${ac_cv_search_gethostbyname+:} false; then : $as_echo_n "(cached) " >&6 @@ -21353,7 +21667,7 @@ if test "$ac_res" != no; then : fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5 $as_echo_n "checking for library containing socket... " >&6; } if ${ac_cv_search_socket+:} false; then : $as_echo_n "(cached) " >&6 @@ -21450,7 +21764,7 @@ fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing crypt" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing crypt" >&5 $as_echo_n "checking for library containing crypt... " >&6; } if ${ac_cv_search_crypt+:} false; then : $as_echo_n "(cached) " >&6 @@ -21506,7 +21820,7 @@ if test "$ac_res" != no; then : fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing roken_concat" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing roken_concat" >&5 $as_echo_n "checking for library containing roken_concat... " >&6; } if ${ac_cv_search_roken_concat+:} false; then : $as_echo_n "(cached) " >&6 @@ -21562,9 +21876,9 @@ if test "$ac_res" != no; then : fi - inn_krb5_extra="$LIBS" - LIBS="$inn_krb5_save_LIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_init_context in -lkrb5" >&5 + inn_krb5_extra="$LIBS" + LIBS="$inn_krb5_save_LIBS" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_init_context in -lkrb5" >&5 $as_echo_n "checking for krb5_init_context in -lkrb5... " >&6; } if ${ac_cv_lib_krb5_krb5_init_context+:} false; then : $as_echo_n "(cached) " >&6 @@ -21723,7 +22037,7 @@ fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_setspecific in -lkrb5support" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_setspecific in -lkrb5support" >&5 $as_echo_n "checking for krb5int_setspecific in -lkrb5support... " >&6; } if ${ac_cv_lib_krb5support_krb5int_setspecific+:} false; then : $as_echo_n "(cached) " >&6 @@ -21765,7 +22079,7 @@ fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for error_message in -lcom_err" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for error_message in -lcom_err" >&5 $as_echo_n "checking for error_message in -lcom_err... " >&6; } if ${ac_cv_lib_com_err_error_message+:} false; then : $as_echo_n "(cached) " >&6 @@ -21805,7 +22119,7 @@ if test "x$ac_cv_lib_com_err_error_messa inn_krb5_extra="-lcom_err $inn_krb5_extra" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_svc_get_msg in -lksvc" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_svc_get_msg in -lksvc" >&5 $as_echo_n "checking for krb5_svc_get_msg in -lksvc... " >&6; } if ${ac_cv_lib_ksvc_krb5_svc_get_msg+:} false; then : $as_echo_n "(cached) " >&6 @@ -21845,7 +22159,7 @@ if test "x$ac_cv_lib_ksvc_krb5_svc_get_m inn_krb5_extra="-lksvc $inn_krb5_extra" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_hash_md5 in -lk5crypto" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_hash_md5 in -lk5crypto" >&5 $as_echo_n "checking for krb5int_hash_md5 in -lk5crypto... " >&6; } if ${ac_cv_lib_k5crypto_krb5int_hash_md5+:} false; then : $as_echo_n "(cached) " >&6 @@ -21885,7 +22199,7 @@ if test "x$ac_cv_lib_k5crypto_krb5int_ha inn_krb5_extra="-lk5crypto $inn_krb5_extra" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for profile_get_values in -lk5profile" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for profile_get_values in -lk5profile" >&5 $as_echo_n "checking for profile_get_values in -lk5profile... " >&6; } if ${ac_cv_lib_k5profile_profile_get_values+:} false; then : $as_echo_n "(cached) " >&6 @@ -21925,7 +22239,7 @@ if test "x$ac_cv_lib_k5profile_profile_g inn_krb5_extra="-lk5profile $inn_krb5_extra" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_cc_default in -lkrb5" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_cc_default in -lkrb5" >&5 $as_echo_n "checking for krb5_cc_default in -lkrb5... " >&6; } if ${ac_cv_lib_krb5_krb5_cc_default+:} false; then : $as_echo_n "(cached) " >&6 @@ -21971,66 +22285,8 @@ fi fi - LIBS="$KRB5_LIBS $LIBS" - if test x"$inn_krb5_incroot" = x; then : - for ac_header in krb5.h kerberosv5/krb5.h krb5/krb5.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5.h" >&5 -$as_echo_n "checking for krb5.h... " >&6; } - if test -f "${inn_krb5_incroot}/krb5.h"; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_KRB5_H 1 -_ACEOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/krb5.h" >&5 -$as_echo_n "checking for kerberosv5/krb5.h... " >&6; } - if test -f "${inn_krb5_incroot}/kerberosv5/krb5.h"; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_KERBEROSV5_KRB5_H 1 -_ACEOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5/krb5.h" >&5 -$as_echo_n "checking for krb5/krb5.h... " >&6; } - if test -f "${inn_krb5_incroot}/krb5/krb5.h"; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_KRB5_KRB5_H 1 -_ACEOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -fi - for ac_func in krb5_get_error_message + LIBS="$KRB5_LIBS $LIBS" + for ac_func in krb5_get_error_message do : ac_fn_c_check_func "$LINENO" "krb5_get_error_message" "ac_cv_func_krb5_get_error_message" if test "x$ac_cv_func_krb5_get_error_message" = xyes; then : @@ -22096,7 +22352,8 @@ fi done else - if test x"$inn_krb5_incroot" = x; then : + inn_krb5_header_found=false + if test x"$inn_krb5_incroot" = x; then : for ac_header in et/com_err.h kerberosv5/com_err.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` @@ -22105,7 +22362,7 @@ if eval test \"x\$"$as_ac_Header"\" = x" cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF - + inn_krb5_header_found=true fi done @@ -22114,6 +22371,7 @@ else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for et/com_err.h" >&5 $as_echo_n "checking for et/com_err.h... " >&6; } if test -f "${inn_krb5_incroot}/et/com_err.h"; then : + inn_krb5_header_found=true cat >>confdefs.h <<_ACEOF #define HAVE_ET_COM_ERR_H 1 @@ -22125,9 +22383,10 @@ else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/com_err.h" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/com_err.h" >&5 $as_echo_n "checking for kerberosv5/com_err.h... " >&6; } if test -f "${inn_krb5_incroot}/kerberosv5/com_err.h"; then : + inn_krb5_header_found=true cat >>confdefs.h <<_ACEOF #define HAVE_KERBEROSV5_COM_ERR_H 1 @@ -22140,6 +22399,11 @@ else $as_echo "no" >&6; } fi fi + if test x"$inn_krb5_header_found" != xtrue; then : + if test x"false" = xtrue; then : + as_fn_error $? "cannot find usable com_err header" "$LINENO" 5 +fi +fi fi done @@ -22152,76 +22416,23 @@ done fi done +else + if test x"false" = xtrue; then : + as_fn_error $? "cannot find usable Kerberos header" "$LINENO" 5 +fi +fi CPPFLAGS="$inn_krb5_save_CPPFLAGS" LDFLAGS="$inn_krb5_save_LDFLAGS" LIBS="$inn_krb5_save_LIBS" fi - inn_krb5_save_CPPFLAGS="$CPPFLAGS" + inn_krb5_save_CPPFLAGS="$CPPFLAGS" inn_krb5_save_LDFLAGS="$LDFLAGS" inn_krb5_save_LIBS="$LIBS" CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS" LDFLAGS="$KRB5_LDFLAGS $LDFLAGS" LIBS="$KRB5_LIBS $LIBS" - if test x"$inn_krb5_incroot" = x; then : - for ac_header in krb5.h kerberosv5/krb5.h krb5/krb5.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5.h" >&5 -$as_echo_n "checking for krb5.h... " >&6; } - if test -f "${inn_krb5_incroot}/krb5.h"; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_KRB5_H 1 -_ACEOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/krb5.h" >&5 -$as_echo_n "checking for kerberosv5/krb5.h... " >&6; } - if test -f "${inn_krb5_incroot}/kerberosv5/krb5.h"; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_KERBEROSV5_KRB5_H 1 -_ACEOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5/krb5.h" >&5 -$as_echo_n "checking for krb5/krb5.h... " >&6; } - if test -f "${inn_krb5_incroot}/krb5/krb5.h"; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_KRB5_KRB5_H 1 -_ACEOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -fi - for ac_func in krb5_get_error_message + for ac_func in krb5_get_error_message do : ac_fn_c_check_func "$LINENO" "krb5_get_error_message" "ac_cv_func_krb5_get_error_message" if test "x$ac_cv_func_krb5_get_error_message" = xyes; then : @@ -22287,7 +22498,8 @@ fi done else - if test x"$inn_krb5_incroot" = x; then : + inn_krb5_header_found=false + if test x"$inn_krb5_incroot" = x; then : for ac_header in et/com_err.h kerberosv5/com_err.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` @@ -22296,7 +22508,7 @@ if eval test \"x\$"$as_ac_Header"\" = x" cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF - + inn_krb5_header_found=true fi done @@ -22305,6 +22517,7 @@ else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for et/com_err.h" >&5 $as_echo_n "checking for et/com_err.h... " >&6; } if test -f "${inn_krb5_incroot}/et/com_err.h"; then : + inn_krb5_header_found=true cat >>confdefs.h <<_ACEOF #define HAVE_ET_COM_ERR_H 1 @@ -22316,9 +22529,10 @@ else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/com_err.h" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/com_err.h" >&5 $as_echo_n "checking for kerberosv5/com_err.h... " >&6; } if test -f "${inn_krb5_incroot}/kerberosv5/com_err.h"; then : + inn_krb5_header_found=true cat >>confdefs.h <<_ACEOF #define HAVE_KERBEROSV5_COM_ERR_H 1 @@ -22331,6 +22545,11 @@ else $as_echo "no" >&6; } fi fi + if test x"$inn_krb5_header_found" != xtrue; then : + if test x"false" = xtrue; then : + as_fn_error $? "cannot find usable com_err header" "$LINENO" 5 +fi +fi fi done @@ -22343,10 +22562,15 @@ done fi done - CPPFLAGS="$inn_krb5_save_CPPFLAGS" + CPPFLAGS="$inn_krb5_save_CPPFLAGS" LDFLAGS="$inn_krb5_save_LDFLAGS" LIBS="$inn_krb5_save_LIBS" else + if test x"false" = xtrue; then : + as_fn_error $? "cannot find usable Kerberos header" "$LINENO" 5 +fi +fi +else if test x"$inn_krb5_libdir" != x; then : KRB5_LDFLAGS="-L$inn_krb5_libdir" else @@ -22365,7 +22589,7 @@ else KRB5_LDFLAGS="$KRB5_LDFLAGS -L$inn_krb5_root/lib/" fi fi - KRB5_LDFLAGS=`echo "$KRB5_LDFLAGS" | sed -e 's/^ *//'` + KRB5_LDFLAGS=`$as_echo "$KRB5_LDFLAGS" | sed -e 's/^ *//'` fi fi if test x"$inn_krb5_includedir" != x; then : @@ -22377,15 +22601,78 @@ else fi fi fi - inn_krb5_save_CPPFLAGS="$CPPFLAGS" + inn_krb5_header_found=false + if test x"$inn_krb5_incroot" = x; then : + for ac_header in krb5.h kerberosv5/krb5.h krb5/krb5.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + inn_krb5_header_found=true +fi + +done + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5.h" >&5 +$as_echo_n "checking for krb5.h... " >&6; } + if test -f "${inn_krb5_incroot}/krb5.h"; then : + inn_krb5_header_found=true + +cat >>confdefs.h <<_ACEOF +#define HAVE_KRB5_H 1 +_ACEOF + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/krb5.h" >&5 +$as_echo_n "checking for kerberosv5/krb5.h... " >&6; } + if test -f "${inn_krb5_incroot}/kerberosv5/krb5.h"; then : + inn_krb5_header_found=true + +cat >>confdefs.h <<_ACEOF +#define HAVE_KERBEROSV5_KRB5_H 1 +_ACEOF + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5/krb5.h" >&5 +$as_echo_n "checking for krb5/krb5.h... " >&6; } + if test -f "${inn_krb5_incroot}/krb5/krb5.h"; then : + inn_krb5_header_found=true + +cat >>confdefs.h <<_ACEOF +#define HAVE_KRB5_KRB5_H 1 +_ACEOF + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +fi + if test x"$inn_krb5_header_found" = xtrue; then : + inn_krb5_save_CPPFLAGS="$CPPFLAGS" inn_krb5_save_LDFLAGS="$LDFLAGS" inn_krb5_save_LIBS="$LIBS" CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS" LDFLAGS="$KRB5_LDFLAGS $LDFLAGS" LIBS="$KRB5_LIBS $LIBS" - inn_krb5_extra= - LIBS= - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing res_search" >&5 + inn_krb5_extra= + LIBS= + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing res_search" >&5 $as_echo_n "checking for library containing res_search... " >&6; } if ${ac_cv_search_res_search+:} false; then : $as_echo_n "(cached) " >&6 @@ -22498,7 +22785,7 @@ fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5 $as_echo_n "checking for library containing gethostbyname... " >&6; } if ${ac_cv_search_gethostbyname+:} false; then : $as_echo_n "(cached) " >&6 @@ -22554,7 +22841,7 @@ if test "$ac_res" != no; then : fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5 $as_echo_n "checking for library containing socket... " >&6; } if ${ac_cv_search_socket+:} false; then : $as_echo_n "(cached) " >&6 @@ -22651,7 +22938,7 @@ fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing crypt" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing crypt" >&5 $as_echo_n "checking for library containing crypt... " >&6; } if ${ac_cv_search_crypt+:} false; then : $as_echo_n "(cached) " >&6 @@ -22707,7 +22994,7 @@ if test "$ac_res" != no; then : fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing roken_concat" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing roken_concat" >&5 $as_echo_n "checking for library containing roken_concat... " >&6; } if ${ac_cv_search_roken_concat+:} false; then : $as_echo_n "(cached) " >&6 @@ -22763,9 +23050,9 @@ if test "$ac_res" != no; then : fi - inn_krb5_extra="$LIBS" - LIBS="$inn_krb5_save_LIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_init_context in -lkrb5" >&5 + inn_krb5_extra="$LIBS" + LIBS="$inn_krb5_save_LIBS" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_init_context in -lkrb5" >&5 $as_echo_n "checking for krb5_init_context in -lkrb5... " >&6; } if ${ac_cv_lib_krb5_krb5_init_context+:} false; then : $as_echo_n "(cached) " >&6 @@ -22924,7 +23211,7 @@ fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_setspecific in -lkrb5support" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_setspecific in -lkrb5support" >&5 $as_echo_n "checking for krb5int_setspecific in -lkrb5support... " >&6; } if ${ac_cv_lib_krb5support_krb5int_setspecific+:} false; then : $as_echo_n "(cached) " >&6 @@ -22966,7 +23253,7 @@ fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for error_message in -lcom_err" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for error_message in -lcom_err" >&5 $as_echo_n "checking for error_message in -lcom_err... " >&6; } if ${ac_cv_lib_com_err_error_message+:} false; then : $as_echo_n "(cached) " >&6 @@ -23006,7 +23293,7 @@ if test "x$ac_cv_lib_com_err_error_messa inn_krb5_extra="-lcom_err $inn_krb5_extra" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_svc_get_msg in -lksvc" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_svc_get_msg in -lksvc" >&5 $as_echo_n "checking for krb5_svc_get_msg in -lksvc... " >&6; } if ${ac_cv_lib_ksvc_krb5_svc_get_msg+:} false; then : $as_echo_n "(cached) " >&6 @@ -23046,7 +23333,7 @@ if test "x$ac_cv_lib_ksvc_krb5_svc_get_m inn_krb5_extra="-lksvc $inn_krb5_extra" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_hash_md5 in -lk5crypto" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_hash_md5 in -lk5crypto" >&5 $as_echo_n "checking for krb5int_hash_md5 in -lk5crypto... " >&6; } if ${ac_cv_lib_k5crypto_krb5int_hash_md5+:} false; then : $as_echo_n "(cached) " >&6 @@ -23086,7 +23373,7 @@ if test "x$ac_cv_lib_k5crypto_krb5int_ha inn_krb5_extra="-lk5crypto $inn_krb5_extra" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for profile_get_values in -lk5profile" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for profile_get_values in -lk5profile" >&5 $as_echo_n "checking for profile_get_values in -lk5profile... " >&6; } if ${ac_cv_lib_k5profile_profile_get_values+:} false; then : $as_echo_n "(cached) " >&6 @@ -23126,7 +23413,7 @@ if test "x$ac_cv_lib_k5profile_profile_g inn_krb5_extra="-lk5profile $inn_krb5_extra" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_cc_default in -lkrb5" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_cc_default in -lkrb5" >&5 $as_echo_n "checking for krb5_cc_default in -lkrb5... " >&6; } if ${ac_cv_lib_krb5_krb5_cc_default+:} false; then : $as_echo_n "(cached) " >&6 @@ -23172,66 +23459,8 @@ fi fi - LIBS="$KRB5_LIBS $LIBS" - if test x"$inn_krb5_incroot" = x; then : - for ac_header in krb5.h kerberosv5/krb5.h krb5/krb5.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5.h" >&5 -$as_echo_n "checking for krb5.h... " >&6; } - if test -f "${inn_krb5_incroot}/krb5.h"; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_KRB5_H 1 -_ACEOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/krb5.h" >&5 -$as_echo_n "checking for kerberosv5/krb5.h... " >&6; } - if test -f "${inn_krb5_incroot}/kerberosv5/krb5.h"; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_KERBEROSV5_KRB5_H 1 -_ACEOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5/krb5.h" >&5 -$as_echo_n "checking for krb5/krb5.h... " >&6; } - if test -f "${inn_krb5_incroot}/krb5/krb5.h"; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_KRB5_KRB5_H 1 -_ACEOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -fi - for ac_func in krb5_get_error_message + LIBS="$KRB5_LIBS $LIBS" + for ac_func in krb5_get_error_message do : ac_fn_c_check_func "$LINENO" "krb5_get_error_message" "ac_cv_func_krb5_get_error_message" if test "x$ac_cv_func_krb5_get_error_message" = xyes; then : @@ -23297,7 +23526,8 @@ fi done else - if test x"$inn_krb5_incroot" = x; then : + inn_krb5_header_found=false + if test x"$inn_krb5_incroot" = x; then : for ac_header in et/com_err.h kerberosv5/com_err.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` @@ -23306,7 +23536,7 @@ if eval test \"x\$"$as_ac_Header"\" = x" cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF - + inn_krb5_header_found=true fi done @@ -23315,6 +23545,7 @@ else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for et/com_err.h" >&5 $as_echo_n "checking for et/com_err.h... " >&6; } if test -f "${inn_krb5_incroot}/et/com_err.h"; then : + inn_krb5_header_found=true cat >>confdefs.h <<_ACEOF #define HAVE_ET_COM_ERR_H 1 @@ -23326,9 +23557,10 @@ else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/com_err.h" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/com_err.h" >&5 $as_echo_n "checking for kerberosv5/com_err.h... " >&6; } if test -f "${inn_krb5_incroot}/kerberosv5/com_err.h"; then : + inn_krb5_header_found=true cat >>confdefs.h <<_ACEOF #define HAVE_KERBEROSV5_COM_ERR_H 1 @@ -23341,6 +23573,11 @@ else $as_echo "no" >&6; } fi fi + if test x"$inn_krb5_header_found" != xtrue; then : + if test x"false" = xtrue; then : + as_fn_error $? "cannot find usable com_err header" "$LINENO" 5 +fi +fi fi done @@ -23353,6 +23590,11 @@ done fi done +else + if test x"false" = xtrue; then : + as_fn_error $? "cannot find usable Kerberos header" "$LINENO" 5 +fi +fi CPPFLAGS="$inn_krb5_save_CPPFLAGS" LDFLAGS="$inn_krb5_save_LDFLAGS" LIBS="$inn_krb5_save_LIBS" @@ -23376,7 +23618,7 @@ else KRB5_LDFLAGS="$KRB5_LDFLAGS -L$inn_krb5_root/lib/" fi fi - KRB5_LDFLAGS=`echo "$KRB5_LDFLAGS" | sed -e 's/^ *//'` + KRB5_LDFLAGS=`$as_echo "$KRB5_LDFLAGS" | sed -e 's/^ *//'` fi fi if test x"$inn_krb5_includedir" != x; then : @@ -23388,15 +23630,78 @@ else fi fi fi - inn_krb5_save_CPPFLAGS="$CPPFLAGS" + inn_krb5_header_found=false + if test x"$inn_krb5_incroot" = x; then : + for ac_header in krb5.h kerberosv5/krb5.h krb5/krb5.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + inn_krb5_header_found=true +fi + +done + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5.h" >&5 +$as_echo_n "checking for krb5.h... " >&6; } + if test -f "${inn_krb5_incroot}/krb5.h"; then : + inn_krb5_header_found=true + +cat >>confdefs.h <<_ACEOF +#define HAVE_KRB5_H 1 +_ACEOF + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/krb5.h" >&5 +$as_echo_n "checking for kerberosv5/krb5.h... " >&6; } + if test -f "${inn_krb5_incroot}/kerberosv5/krb5.h"; then : + inn_krb5_header_found=true + +cat >>confdefs.h <<_ACEOF +#define HAVE_KERBEROSV5_KRB5_H 1 +_ACEOF + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5/krb5.h" >&5 +$as_echo_n "checking for krb5/krb5.h... " >&6; } + if test -f "${inn_krb5_incroot}/krb5/krb5.h"; then : + inn_krb5_header_found=true + +cat >>confdefs.h <<_ACEOF +#define HAVE_KRB5_KRB5_H 1 +_ACEOF + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +fi + if test x"$inn_krb5_header_found" = xtrue; then : + inn_krb5_save_CPPFLAGS="$CPPFLAGS" inn_krb5_save_LDFLAGS="$LDFLAGS" inn_krb5_save_LIBS="$LIBS" CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS" LDFLAGS="$KRB5_LDFLAGS $LDFLAGS" LIBS="$KRB5_LIBS $LIBS" - inn_krb5_extra= - LIBS= - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing res_search" >&5 + inn_krb5_extra= + LIBS= + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing res_search" >&5 $as_echo_n "checking for library containing res_search... " >&6; } if ${ac_cv_search_res_search+:} false; then : $as_echo_n "(cached) " >&6 @@ -23509,7 +23814,7 @@ fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5 $as_echo_n "checking for library containing gethostbyname... " >&6; } if ${ac_cv_search_gethostbyname+:} false; then : $as_echo_n "(cached) " >&6 @@ -23565,7 +23870,7 @@ if test "$ac_res" != no; then : fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5 $as_echo_n "checking for library containing socket... " >&6; } if ${ac_cv_search_socket+:} false; then : $as_echo_n "(cached) " >&6 @@ -23662,7 +23967,7 @@ fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing crypt" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing crypt" >&5 $as_echo_n "checking for library containing crypt... " >&6; } if ${ac_cv_search_crypt+:} false; then : $as_echo_n "(cached) " >&6 @@ -23718,7 +24023,7 @@ if test "$ac_res" != no; then : fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing roken_concat" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing roken_concat" >&5 $as_echo_n "checking for library containing roken_concat... " >&6; } if ${ac_cv_search_roken_concat+:} false; then : $as_echo_n "(cached) " >&6 @@ -23774,9 +24079,9 @@ if test "$ac_res" != no; then : fi - inn_krb5_extra="$LIBS" - LIBS="$inn_krb5_save_LIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_init_context in -lkrb5" >&5 + inn_krb5_extra="$LIBS" + LIBS="$inn_krb5_save_LIBS" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_init_context in -lkrb5" >&5 $as_echo_n "checking for krb5_init_context in -lkrb5... " >&6; } if ${ac_cv_lib_krb5_krb5_init_context+:} false; then : $as_echo_n "(cached) " >&6 @@ -23935,7 +24240,7 @@ fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_setspecific in -lkrb5support" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_setspecific in -lkrb5support" >&5 $as_echo_n "checking for krb5int_setspecific in -lkrb5support... " >&6; } if ${ac_cv_lib_krb5support_krb5int_setspecific+:} false; then : $as_echo_n "(cached) " >&6 @@ -23977,7 +24282,7 @@ fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for error_message in -lcom_err" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for error_message in -lcom_err" >&5 $as_echo_n "checking for error_message in -lcom_err... " >&6; } if ${ac_cv_lib_com_err_error_message+:} false; then : $as_echo_n "(cached) " >&6 @@ -24017,7 +24322,7 @@ if test "x$ac_cv_lib_com_err_error_messa inn_krb5_extra="-lcom_err $inn_krb5_extra" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_svc_get_msg in -lksvc" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_svc_get_msg in -lksvc" >&5 $as_echo_n "checking for krb5_svc_get_msg in -lksvc... " >&6; } if ${ac_cv_lib_ksvc_krb5_svc_get_msg+:} false; then : $as_echo_n "(cached) " >&6 @@ -24057,7 +24362,7 @@ if test "x$ac_cv_lib_ksvc_krb5_svc_get_m inn_krb5_extra="-lksvc $inn_krb5_extra" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_hash_md5 in -lk5crypto" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5int_hash_md5 in -lk5crypto" >&5 $as_echo_n "checking for krb5int_hash_md5 in -lk5crypto... " >&6; } if ${ac_cv_lib_k5crypto_krb5int_hash_md5+:} false; then : $as_echo_n "(cached) " >&6 @@ -24097,7 +24402,7 @@ if test "x$ac_cv_lib_k5crypto_krb5int_ha inn_krb5_extra="-lk5crypto $inn_krb5_extra" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for profile_get_values in -lk5profile" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for profile_get_values in -lk5profile" >&5 $as_echo_n "checking for profile_get_values in -lk5profile... " >&6; } if ${ac_cv_lib_k5profile_profile_get_values+:} false; then : $as_echo_n "(cached) " >&6 @@ -24137,7 +24442,7 @@ if test "x$ac_cv_lib_k5profile_profile_g inn_krb5_extra="-lk5profile $inn_krb5_extra" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_cc_default in -lkrb5" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_cc_default in -lkrb5" >&5 $as_echo_n "checking for krb5_cc_default in -lkrb5... " >&6; } if ${ac_cv_lib_krb5_krb5_cc_default+:} false; then : $as_echo_n "(cached) " >&6 @@ -24183,66 +24488,8 @@ fi fi - LIBS="$KRB5_LIBS $LIBS" - if test x"$inn_krb5_incroot" = x; then : - for ac_header in krb5.h kerberosv5/krb5.h krb5/krb5.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5.h" >&5 -$as_echo_n "checking for krb5.h... " >&6; } - if test -f "${inn_krb5_incroot}/krb5.h"; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_KRB5_H 1 -_ACEOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/krb5.h" >&5 -$as_echo_n "checking for kerberosv5/krb5.h... " >&6; } - if test -f "${inn_krb5_incroot}/kerberosv5/krb5.h"; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_KERBEROSV5_KRB5_H 1 -_ACEOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5/krb5.h" >&5 -$as_echo_n "checking for krb5/krb5.h... " >&6; } - if test -f "${inn_krb5_incroot}/krb5/krb5.h"; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_KRB5_KRB5_H 1 -_ACEOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -fi - for ac_func in krb5_get_error_message + LIBS="$KRB5_LIBS $LIBS" + for ac_func in krb5_get_error_message do : ac_fn_c_check_func "$LINENO" "krb5_get_error_message" "ac_cv_func_krb5_get_error_message" if test "x$ac_cv_func_krb5_get_error_message" = xyes; then : @@ -24308,7 +24555,8 @@ fi done else - if test x"$inn_krb5_incroot" = x; then : + inn_krb5_header_found=false + if test x"$inn_krb5_incroot" = x; then : for ac_header in et/com_err.h kerberosv5/com_err.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` @@ -24317,7 +24565,7 @@ if eval test \"x\$"$as_ac_Header"\" = x" cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF - + inn_krb5_header_found=true fi done @@ -24326,6 +24574,7 @@ else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for et/com_err.h" >&5 $as_echo_n "checking for et/com_err.h... " >&6; } if test -f "${inn_krb5_incroot}/et/com_err.h"; then : + inn_krb5_header_found=true cat >>confdefs.h <<_ACEOF #define HAVE_ET_COM_ERR_H 1 @@ -24337,9 +24586,10 @@ else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/com_err.h" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kerberosv5/com_err.h" >&5 $as_echo_n "checking for kerberosv5/com_err.h... " >&6; } if test -f "${inn_krb5_incroot}/kerberosv5/com_err.h"; then : + inn_krb5_header_found=true cat >>confdefs.h <<_ACEOF #define HAVE_KERBEROSV5_COM_ERR_H 1 @@ -24352,6 +24602,11 @@ else $as_echo "no" >&6; } fi fi + if test x"$inn_krb5_header_found" != xtrue; then : + if test x"false" = xtrue; then : + as_fn_error $? "cannot find usable com_err header" "$LINENO" 5 +fi +fi fi done @@ -24364,6 +24619,11 @@ done fi done +else + if test x"false" = xtrue; then : + as_fn_error $? "cannot find usable Kerberos header" "$LINENO" 5 +fi +fi CPPFLAGS="$inn_krb5_save_CPPFLAGS" LDFLAGS="$inn_krb5_save_LDFLAGS" LIBS="$inn_krb5_save_LIBS" @@ -24377,7 +24637,7 @@ fi ;; esac : - KRB5_CPPFLAGS_GCC=`echo "$KRB5_CPPFLAGS" | sed -e 's/-I/-isystem /g'` + KRB5_CPPFLAGS_WARNINGS=`$as_echo "$KRB5_CPPFLAGS" | sed -e 's/-I/-isystem /g'` fi else : @@ -24448,7 +24708,7 @@ else OPENSSL_LDFLAGS="$OPENSSL_LDFLAGS -L${inn_OPENSSL_root}/lib/" fi fi - OPENSSL_LDFLAGS=`echo "$OPENSSL_LDFLAGS" | sed -e 's/^ *//'` + OPENSSL_LDFLAGS=`$as_echo "$OPENSSL_LDFLAGS" | sed -e 's/^ *//'` fi fi if test x"$inn_OPENSSL_includedir" != x; then : @@ -24701,7 +24961,7 @@ else OPENSSL_LDFLAGS="$OPENSSL_LDFLAGS -L${inn_OPENSSL_root}/lib/" fi fi - OPENSSL_LDFLAGS=`echo "$OPENSSL_LDFLAGS" | sed -e 's/^ *//'` + OPENSSL_LDFLAGS=`$as_echo "$OPENSSL_LDFLAGS" | sed -e 's/^ *//'` fi fi if test x"$inn_OPENSSL_includedir" != x; then : @@ -25008,7 +25268,7 @@ else SASL_LDFLAGS="$SASL_LDFLAGS -L${inn_SASL_root}/lib/" fi fi - SASL_LDFLAGS=`echo "$SASL_LDFLAGS" | sed -e 's/^ *//'` + SASL_LDFLAGS=`$as_echo "$SASL_LDFLAGS" | sed -e 's/^ *//'` fi fi if test x"$inn_SASL_includedir" != x; then : @@ -25101,7 +25361,7 @@ else SASL_LDFLAGS="$SASL_LDFLAGS -L${inn_SASL_root}/lib/" fi fi - SASL_LDFLAGS=`echo "$SASL_LDFLAGS" | sed -e 's/^ *//'` + SASL_LDFLAGS=`$as_echo "$SASL_LDFLAGS" | sed -e 's/^ *//'` fi fi if test x"$inn_SASL_includedir" != x; then : @@ -25187,6 +25447,329 @@ else $as_echo "#define HAVE_SASL 1" >>confdefs.h fi + + + + + + + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-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_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # 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_PKG_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 +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +$as_echo "$PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-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_ac_pt_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # 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_ac_pt_PKG_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 +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +$as_echo "$ac_pt_PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.9.0 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + PKG_CONFIG="" + fi +fi +if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsystemd\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libsystemd") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libsystemd" >&5 +$as_echo_n "checking for libsystemd... " >&6; } + +if test -n "$SYSTEMD_CFLAGS"; then + pkg_cv_SYSTEMD_CFLAGS="$SYSTEMD_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsystemd\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libsystemd") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_SYSTEMD_CFLAGS=`$PKG_CONFIG --cflags "libsystemd" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$SYSTEMD_LIBS"; then + pkg_cv_SYSTEMD_LIBS="$SYSTEMD_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsystemd\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libsystemd") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_SYSTEMD_LIBS=`$PKG_CONFIG --libs "libsystemd" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + SYSTEMD_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libsystemd" 2>&1` + else + SYSTEMD_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libsystemd" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$SYSTEMD_PKG_ERRORS" >&5 + + as_fn_error $? "Package requirements (libsystemd) were not met: + +$SYSTEMD_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables SYSTEMD_CFLAGS +and SYSTEMD_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details." "$LINENO" 5 +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +Alternatively, you may set the environment variables SYSTEMD_CFLAGS +and SYSTEMD_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. + +To get pkg-config, see . +See \`config.log' for more details" "$LINENO" 5; } +else + SYSTEMD_CFLAGS=$pkg_cv_SYSTEMD_CFLAGS + SYSTEMD_LIBS=$pkg_cv_SYSTEMD_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +fi + +$as_echo "#define HAVE_SD_NOTIFY 1" >>confdefs.h + +else + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsystemd-daemon\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libsystemd-daemon") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libsystemd-daemon" >&5 +$as_echo_n "checking for libsystemd-daemon... " >&6; } + +if test -n "$SYSTEMD_CFLAGS"; then + pkg_cv_SYSTEMD_CFLAGS="$SYSTEMD_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsystemd-daemon\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libsystemd-daemon") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_SYSTEMD_CFLAGS=`$PKG_CONFIG --cflags "libsystemd-daemon" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$SYSTEMD_LIBS"; then + pkg_cv_SYSTEMD_LIBS="$SYSTEMD_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsystemd-daemon\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libsystemd-daemon") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_SYSTEMD_LIBS=`$PKG_CONFIG --libs "libsystemd-daemon" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + SYSTEMD_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libsystemd-daemon" 2>&1` + else + SYSTEMD_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libsystemd-daemon" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$SYSTEMD_PKG_ERRORS" >&5 + + as_fn_error $? "Package requirements (libsystemd-daemon) were not met: + +$SYSTEMD_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables SYSTEMD_CFLAGS +and SYSTEMD_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details." "$LINENO" 5 +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +Alternatively, you may set the environment variables SYSTEMD_CFLAGS +and SYSTEMD_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. + +To get pkg-config, see . +See \`config.log' for more details" "$LINENO" 5; } +else + SYSTEMD_CFLAGS=$pkg_cv_SYSTEMD_CFLAGS + SYSTEMD_LIBS=$pkg_cv_SYSTEMD_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +fi + +$as_echo "#define HAVE_SD_NOTIFY 1" >>confdefs.h + +fi +fi inn_ZLIB_root= inn_ZLIB_libdir= inn_ZLIB_includedir= @@ -25246,7 +25829,7 @@ else ZLIB_LDFLAGS="$ZLIB_LDFLAGS -L${inn_ZLIB_root}/lib/" fi fi - ZLIB_LDFLAGS=`echo "$ZLIB_LDFLAGS" | sed -e 's/^ *//'` + ZLIB_LDFLAGS=`$as_echo "$ZLIB_LDFLAGS" | sed -e 's/^ *//'` fi fi if test x"$inn_ZLIB_includedir" != x; then : @@ -25339,7 +25922,7 @@ else ZLIB_LDFLAGS="$ZLIB_LDFLAGS -L${inn_ZLIB_root}/lib/" fi fi - ZLIB_LDFLAGS=`echo "$ZLIB_LDFLAGS" | sed -e 's/^ *//'` + ZLIB_LDFLAGS=`$as_echo "$ZLIB_LDFLAGS" | sed -e 's/^ *//'` fi fi if test x"$inn_ZLIB_includedir" != x; then : @@ -25927,6 +26510,16 @@ fi cat >>confdefs.h <<_ACEOF #define HAVE_DECL_PWRITE $ac_have_decl _ACEOF +ac_fn_c_check_decl "$LINENO" "reallocarray" "ac_cv_have_decl_reallocarray" "$ac_includes_default" +if test "x$ac_cv_have_decl_reallocarray" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_REALLOCARRAY $ac_have_decl +_ACEOF ac_fn_c_check_decl "$LINENO" "snprintf" "ac_cv_have_decl_snprintf" "$ac_includes_default" if test "x$ac_cv_have_decl_snprintf" = xyes; then : ac_have_decl=1 @@ -26504,16 +27097,6 @@ $as_echo "#define HAVE_TZNAME 1" >>confd fi fi -ac_fn_c_check_member "$LINENO" "struct stat" "st_blksize" "ac_cv_member_struct_stat_st_blksize" "$ac_includes_default" -if test "x$ac_cv_member_struct_stat_st_blksize" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_STRUCT_STAT_ST_BLKSIZE 1 -_ACEOF - - -fi - ac_fn_c_check_member "$LINENO" "struct tm" "tm_gmtoff" "ac_cv_member_struct_tm_tm_gmtoff" "$ac_includes_default" if test "x$ac_cv_member_struct_tm_tm_gmtoff" = xyes; then : @@ -27118,7 +27701,16 @@ $as_echo "$inn_cv_in6_are_addr_equal_bro $as_echo "#define HAVE_BROKEN_IN6_ARE_ADDR_EQUAL 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking value of IOV_MAX" >&5 +ac_fn_c_check_decl "$LINENO" "IOV_MAX" "ac_cv_have_decl_IOV_MAX" "$ac_includes_default +#ifdef HAVE_LIMITS_H +# include +#endif + +" +if test "x$ac_cv_have_decl_IOV_MAX" = xyes; then : + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking value of IOV_MAX" >&5 $as_echo_n "checking value of IOV_MAX... " >&6; } if ${inn_cv_macro_iov_max+:} false; then : $as_echo_n "(cached) " >&6 @@ -27151,12 +27743,9 @@ main () FILE *f = fopen ("conftestval", "w"); if (f == NULL) return 1; -#ifdef IOV_MAX - fprintf (f, "set in limits.h\n"); -#else -# ifdef UIO_MAXIOV +#ifdef UIO_MAXIOV fprintf (f, "%d\n", UIO_MAXIOV); -# else +#else fd = open ("/dev/null", O_WRONLY, 0666); if (fd < 0) return 1; @@ -27173,8 +27762,7 @@ main () } } fprintf (f, "1024\n"); -# endif /* UIO_MAXIOV */ -#endif /* IOV_MAX */ +#endif /* UIO_MAXIOV */ return 0; } @@ -27188,21 +27776,21 @@ rm -f core *.core core.conftest.* gmon.o conftest.$ac_objext conftest.beam conftest.$ac_ext fi - if test x"$inn_cv_macro_iov_max" = xerror ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: probe failure, assuming 16" >&5 + if test x"$inn_cv_macro_iov_max" = xerror; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: probe failure, assuming 16" >&5 $as_echo "$as_me: WARNING: probe failure, assuming 16" >&2;} - inn_cv_macro_iov_max=16 - fi + inn_cv_macro_iov_max=16 +fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $inn_cv_macro_iov_max" >&5 $as_echo "$inn_cv_macro_iov_max" >&6; } - if test x"$inn_cv_macro_iov_max" != x"set in limits.h" ; then cat >>confdefs.h <<_ACEOF #define IOV_MAX $inn_cv_macro_iov_max _ACEOF - fi +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 : @@ -27437,6 +28025,7 @@ else #include #include +#include #include #include @@ -27898,8 +28487,7 @@ fi -if test x"$inn_enable_largefiles" = xyes ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGEFILE_SOURCE value needed for large files" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGEFILE_SOURCE value needed for large files" >&5 $as_echo_n "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; } if ${ac_cv_sys_largefile_source+:} false; then : $as_echo_n "(cached) " >&6 @@ -27967,6 +28555,28 @@ $as_echo "#define HAVE_FSEEKO 1" >>confd fi +if test x"$inn_enable_largefiles" = xyes ; then + ac_fn_c_check_decl "$LINENO" "fseeko" "ac_cv_have_decl_fseeko" "$ac_includes_default" +if test "x$ac_cv_have_decl_fseeko" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FSEEKO $ac_have_decl +_ACEOF +ac_fn_c_check_decl "$LINENO" "ftello" "ac_cv_have_decl_ftello" "$ac_includes_default" +if test "x$ac_cv_have_decl_ftello" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FTELLO $ac_have_decl +_ACEOF + if test x"$ac_cv_sys_largefile_source" = xunknown ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for off_t-compatible fpos_t" >&5 $as_echo_n "checking for off_t-compatible fpos_t... " >&6; } @@ -28009,27 +28619,6 @@ $as_echo "$inn_cv_type_fpos_t_large" >&6 $as_echo "#define HAVE_LARGE_FPOS_T 1" >>confdefs.h fi - ac_fn_c_check_decl "$LINENO" "fseeko" "ac_cv_have_decl_fseeko" "$ac_includes_default" -if test "x$ac_cv_have_decl_fseeko" = xyes; then : - ac_have_decl=1 -else - ac_have_decl=0 -fi - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_FSEEKO $ac_have_decl -_ACEOF -ac_fn_c_check_decl "$LINENO" "ftello" "ac_cv_have_decl_ftello" "$ac_includes_default" -if test "x$ac_cv_have_decl_ftello" = xyes; then : - ac_have_decl=1 -else - ac_have_decl=0 -fi - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_FTELLO $ac_have_decl -_ACEOF - case " $LIBOBJS " in *" fseeko.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS fseeko.$ac_objext" @@ -28043,18 +28632,6 @@ esac esac fi -else - ac_fn_c_check_decl "$LINENO" "fseeko" "ac_cv_have_decl_fseeko" "$ac_includes_default" -if test "x$ac_cv_have_decl_fseeko" = xyes; then : - ac_have_decl=1 -else - ac_have_decl=0 -fi - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_FSEEKO $ac_have_decl -_ACEOF - fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5 @@ -28069,8 +28646,12 @@ else /* end confdefs.h. */ #include -#include #include +#include +#include +#if HAVE_UNISTD_H +# include +#endif int main() @@ -28215,10 +28796,14 @@ else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include #include -#include #include +#include +#include +#include +#if HAVE_UNISTD_H +# include +#endif int main() @@ -28467,7 +29052,232 @@ _ACEOF -LIBS=`echo "$LIBS" | sed 's/^ *//' | sed 's/ */ /g' | sed 's/ *$//'` +if test x"$inn_enable_hardening_flags" = xyes; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -fPIE" >&5 +$as_echo_n "checking if $CC supports -fPIE... " >&6; } + if ${inn_cv_compiler_c__fPIE+:} false; then : + $as_echo_n "(cached) " >&6 +else + save_CFLAGS=$CFLAGS + case -fPIE in #( + -Wno-*) : + CFLAGS="$CFLAGS `$as_echo "-fPIE" | sed 's/-Wno-/-W/'`" ;; #( + *) : + CFLAGS="$CFLAGS -fPIE" ;; #( + *) : + ;; +esac + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +int foo = 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + inn_cv_compiler_c__fPIE=yes +else + inn_cv_compiler_c__fPIE=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS=$save_CFLAGS +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $inn_cv_compiler_c__fPIE" >&5 +$as_echo "$inn_cv_compiler_c__fPIE" >&6; } + if test x"$inn_cv_compiler_c__fPIE" = xyes; then : + CFLAGS="${CFLAGS} -fPIE" + CC_WARNINGS="${CC_WARNINGS} -fPIE" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -pie for linking" >&5 +$as_echo_n "checking if $CC supports -pie for linking... " >&6; } + if ${inn_cv_linker_c__pie+:} false; then : + $as_echo_n "(cached) " >&6 +else + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -pie" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +int foo = 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + inn_cv_linker_c__pie=yes +else + inn_cv_linker_c__pie=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $inn_cv_linker_c__pie" >&5 +$as_echo "$inn_cv_linker_c__pie" >&6; } + if test x"$inn_cv_linker_c__pie" = xyes; then : + LDFLAGS="${LDFLAGS} -pie" +fi +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -fstack-protector-strong" >&5 +$as_echo_n "checking if $CC supports -fstack-protector-strong... " >&6; } + if ${inn_cv_compiler_c__fstack_protector_strong+:} false; then : + $as_echo_n "(cached) " >&6 +else + save_CFLAGS=$CFLAGS + case -fstack-protector-strong in #( + -Wno-*) : + CFLAGS="$CFLAGS `$as_echo "-fstack-protector-strong" | sed 's/-Wno-/-W/'`" ;; #( + *) : + CFLAGS="$CFLAGS -fstack-protector-strong" ;; #( + *) : + ;; +esac + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +int foo = 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + inn_cv_compiler_c__fstack_protector_strong=yes +else + inn_cv_compiler_c__fstack_protector_strong=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS=$save_CFLAGS +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $inn_cv_compiler_c__fstack_protector_strong" >&5 +$as_echo "$inn_cv_compiler_c__fstack_protector_strong" >&6; } + if test x"$inn_cv_compiler_c__fstack_protector_strong" = xyes; then : + CFLAGS="${CFLAGS} -fstack-protector-strong" + CC_WARNINGS="${CC_WARNINGS} -fstack-protector-strong" +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -fstack-protector-strong for linking" >&5 +$as_echo_n "checking if $CC supports -fstack-protector-strong for linking... " >&6; } + if ${inn_cv_linker_c__fstack_protector_strong+:} false; then : + $as_echo_n "(cached) " >&6 +else + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -fstack-protector-strong" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +int foo = 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + inn_cv_linker_c__fstack_protector_strong=yes +else + inn_cv_linker_c__fstack_protector_strong=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $inn_cv_linker_c__fstack_protector_strong" >&5 +$as_echo "$inn_cv_linker_c__fstack_protector_strong" >&6; } + if test x"$inn_cv_linker_c__fstack_protector_strong" = xyes; then : + LDFLAGS="${LDFLAGS} -fstack-protector-strong" +else + CFLAGS=`$as_echo "${CFLAGS}" | sed 's/ -fstack-protector-strong//'` + CC_WARNINGS=`$as_echo "${CC_WARNINGS}" | sed 's/ -fstack-protector-strong//'` +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wl,-z,relro for linking" >&5 +$as_echo_n "checking if $CC supports -Wl,-z,relro for linking... " >&6; } + if ${inn_cv_linker_c__Wl__z_relro+:} false; then : + $as_echo_n "(cached) " >&6 +else + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,-z,relro" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +int foo = 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + inn_cv_linker_c__Wl__z_relro=yes +else + inn_cv_linker_c__Wl__z_relro=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $inn_cv_linker_c__Wl__z_relro" >&5 +$as_echo "$inn_cv_linker_c__Wl__z_relro" >&6; } + if test x"$inn_cv_linker_c__Wl__z_relro" = xyes; then : + LDFLAGS="${LDFLAGS} -Wl,-z,relro" +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wl,-z,now for linking" >&5 +$as_echo_n "checking if $CC supports -Wl,-z,now for linking... " >&6; } + if ${inn_cv_linker_c__Wl__z_now+:} false; then : + $as_echo_n "(cached) " >&6 +else + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,-z,now" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +int foo = 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + inn_cv_linker_c__Wl__z_now=yes +else + inn_cv_linker_c__Wl__z_now=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $inn_cv_linker_c__Wl__z_now" >&5 +$as_echo "$inn_cv_linker_c__Wl__z_now" >&6; } + if test x"$inn_cv_linker_c__Wl__z_now" = xyes; then : + LDFLAGS="${LDFLAGS} -Wl,-z,now" +fi +fi + + +LIBS=`$as_echo "$LIBS" | sed 's/^ *//' | sed 's/ */ /g' | sed 's/ *$//'` ac_config_files="$ac_config_files Makefile.global include/inn/paths.h" @@ -28992,7 +29802,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.3, which was +This file was extended by INN $as_me 2.6.4, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -29059,7 +29869,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.3 +INN config.status 2.6.4 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -Nurp inn-2.6.3/configure.ac inn-2.6.4/configure.ac --- inn-2.6.3/configure.ac 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/configure.ac 2021-01-21 13:53:07.000000000 -0800 @@ -1,5 +1,5 @@ dnl Process this file with Autoconf to produce a configure script. -dnl $Id: configure.ac 10306 2018-12-02 14:26:13Z iulius $ +dnl $Id: configure.ac 10520 2021-01-17 21:48:06Z iulius $ dnl dnl Please try to follow GNU conventions and Autoconf manual conventions as dnl much as possible in this file so that any macros we develop can be easily @@ -26,12 +26,16 @@ 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.3], [inn-workers@lists.isc.org], +AC_INIT([INN], [2.6.4], [inn-workers@lists.isc.org], [inn], [https://www.isc.org/downloads/projects/]) AC_PREREQ([2.64]) -AC_REVISION([$Revision: 10306 $]) +AC_REVISION([$Revision: 10520 $]) AC_CONFIG_AUX_DIR([support]) +dnl Ignore Automake conditionals (called in a few m4 macros) as INN does not +dnl uses Automake yet. +m4_define_default([AM_CONDITIONAL], [:]) + dnl Lots of our macros are stored in separate files for ease of maintenance. m4_include([m4/aux-libs.m4]) m4_include([m4/bdb.m4]) @@ -57,6 +61,7 @@ m4_include([m4/openssl.m4]) m4_include([m4/pam-const.m4]) m4_include([m4/paths.m4]) m4_include([m4/perl.m4]) +m4_include([m4/pkg.m4]) m4_include([m4/prog-ensure.m4]) m4_include([m4/python.m4]) m4_include([m4/sasl.m4]) @@ -66,6 +71,7 @@ m4_include([m4/snprintf.m4]) m4_include([m4/socket-unix.m4]) m4_include([m4/socket.m4]) m4_include([m4/syslog.m4]) +m4_include([m4/systemd.m4]) m4_include([m4/users.m4]) m4_include([m4/vamacros.m4]) m4_include([m4/zlib.m4]) @@ -97,14 +103,23 @@ LIBTOOL='$(top)/libtool' LIBTOOLCC='$(top)/libtool --mode=compile' LIBTOOLINST='$(top)/libtool --mode=install' LIBTOOLLD='$(top)/libtool --mode=link' +LIBTOOLLDDEPS='$(top)/libtool --mode=link --preserve-dup-deps' CCOUTPUT='-c -o $@ $<' AC_SUBST(EXTLIB) AC_SUBST(EXTOBJ) AC_SUBST(LIBTOOLCC) AC_SUBST(LIBTOOLINST) AC_SUBST(LIBTOOLLD) +AC_SUBST(LIBTOOLLDDEPS) AC_SUBST(CCOUTPUT) +dnl If PIC objects are not wanted (--with-pic=no), an error occurs during +dnl the build of shared libraries. Unfortunately, $pic_mode is set after +dnl calling LT_INIT whereas AC_DISABLE_SHARED must be given before, so we +dnl cannot automatically disable it. Just bail out with an error. +AS_IF([test x"$pic_mode" = xno && test x"$enable_shared" = xyes], + [AC_MSG_ERROR([Incompatible use of --without-pic and --enable-shared])]) + dnl Command-line options. Many of these macros just do the command-line dnl component of a set of macros that have additional parts called later. INN_ARG_PATHS @@ -208,10 +223,10 @@ AS_IF([test x"$DO_PERL" = xDO], inn_perl_core_flags=" $PERL_CPPFLAGS " AS_IF([test x"$inn_enable_largefiles" != xyes], [for f in -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES ; do - inn_perl_core_flags=`echo "$inn_perl_core_flags" | sed "s/ $f / /"` + inn_perl_core_flags=`AS_ECHO(["$inn_perl_core_flags"]) | sed "s/ $f / /"` done]) - inn_perl_core_flags=`echo "$inn_perl_core_flags" | sed 's/^ *//'` - inn_perl_core_flags=`echo "$inn_perl_core_flags" | sed 's/ *$//'` + inn_perl_core_flags=`AS_ECHO(["$inn_perl_core_flags"]) | sed 's/^ *//'` + inn_perl_core_flags=`AS_ECHO(["$inn_perl_core_flags"]) | sed 's/ *$//'` PERL_CPPFLAGS="$inn_perl_core_flags" INN_PROG_CC_FLAG([-Wno-extra], [PERL_WARNINGS=-Wno-extra], [PERL_WARNINGS='']) @@ -251,18 +266,19 @@ AC_SUBST(HOSTNAME) dnl Checks for programs. AC_PROG_GCC_TRADITIONAL -AC_PROG_LEX +AC_PROG_LEX([noyywrap]) AC_PROG_LN_S AC_PROG_MAKE_SET AC_PROG_MKDIR_P AC_PROG_RANLIB AC_PROG_YACC -dnl On MacOS X Server, -traditional-cpp is needed for gcc for compiling as +dnl On Mac OS X Server, -traditional-cpp is needed for gcc for compiling as dnl well as preprocessing according to Miro Jurisic . case "$CPP" in *-traditional-cpp*) - CFLAGS="-traditional-cpp $CFLAGS" + CFLAGS="-traditional-cpp ${CFLAGS}" + CC_WARNINGS="-traditional-cpp ${CC_WARNINGS}" ;; esac @@ -286,7 +302,8 @@ dnl HP-UX's native compiler needs a spec dnl -g on link as well as compile for debugging to work. *hpux*) if test x"$GCC" != xyes ; then - CFLAGS="$CFLAGS -Ae" + CFLAGS="${CFLAGS} -Ae" + CC_WARNINGS="${CC_WARNINGS} -Ae" case "$CFLAGS" in *-g*) LDFLAGS="$LDFLAGS -g" ;; esac @@ -294,7 +311,7 @@ dnl -g on link as well as compile for de ;; dnl Mac OS X needed "-multiply_defined suppress" before this linker flag became -dnl obsolete (darwin13 is Mavericks, OS X v10.9). +dnl obsolete (darwin13 is Mavericks, OS X 10.9). *-darwin[[0-9]].*|*-darwin1[[0-2]].*) LDFLAGS="$LDFLAGS -multiply_defined suppress" ;; @@ -303,10 +320,21 @@ dnl From Boyd Gerber dnl the bison-generated parser for innfeed.conf. *UnixWare*|*unixware*|*-sco3*) if test x"$GCC" != xyes ; then - CFLAGS="$CFLAGS -Kalloca" + CFLAGS="${CFLAGS} -Kalloca" + CC_WARNINGS="${CC_WARNINGS} -Kalloca" fi esac - + +dnl Whether to add hardening flags to the build. Ideally, this should just +dnl always be turned on wherever possible, but depending on the compiler and +dnl the platform, it might be useful to easily remove them at configure time. +inn_enable_hardening_flags=yes +AC_ARG_ENABLE([hardening-flags], + [AS_HELP_STRING([--enable-hardening-flags], + [Add hardening build flags like -fPIE @<:@default=yes@:>@])], + [AS_IF([test x"$enableval" != xyes], + [inn_enable_hardening_flags=no])]) + dnl Checks for pathnames. If AC_PROG_* does not manage to find a working dnl program, INN_PATH_PROG_ENSURE will output an error. AC_ARG_VAR([AWK], [Location of awk]) @@ -410,6 +438,7 @@ INN_LIB_BDB_OPTIONAL INN_LIB_KRB5_OPTIONAL INN_LIB_OPENSSL_OPTIONAL INN_LIB_SASL_OPTIONAL +INN_LIB_SYSTEMD_DAEMON_OPTIONAL INN_LIB_ZLIB_OPTIONAL dnl If Kerberos is found, define KRB5_AUTH to auth_krb5 so as to build @@ -468,7 +497,7 @@ AS_IF([test x"$ac_cv_header_gdbm_ndbm_h" [Define if you have the header file.])])]) dnl Check for whether various symbols are declared. -AC_CHECK_DECLS([pread, pwrite, snprintf, setproctitle, strlcat, +AC_CHECK_DECLS([pread, pwrite, reallocarray, snprintf, setproctitle, strlcat, strlcpy, vsnprintf]) AC_CHECK_DECLS([h_errno], [], [], [#include ]) AC_CHECK_DECLS([inet_aton, inet_ntoa], [], [], @@ -485,7 +514,6 @@ INN_C_GNU_VAMACROS dnl Checks for structures. AC_STRUCT_TIMEZONE -AC_CHECK_MEMBERS([struct stat.st_blksize]) AC_CHECK_MEMBERS([struct tm.tm_gmtoff]) AC_CHECK_MEMBERS([struct sockaddr.sa_len], [], [], [#include @@ -569,16 +597,16 @@ AC_REPLACE_FUNCS(asprintf getaddrinfo ge strlcat strlcpy strspn strtok symlink) dnl Probe for fseeko and ftello, which take off_t instead of int. +dnl The logic in clibrary.h is based on the presence of fseeko, and then +dnl for large file support, so keep that order here too. +AC_FUNC_FSEEKO if test x"$inn_enable_largefiles" = xyes ; then - AC_FUNC_FSEEKO + AC_CHECK_DECLS([fseeko, ftello]) if test x"$ac_cv_sys_largefile_source" = xunknown ; then INN_TYPE_FPOS_T_LARGE - AC_CHECK_DECLS([fseeko, ftello]) AC_LIBOBJ([fseeko]) AC_LIBOBJ([ftello]) fi -else - AC_CHECK_DECLS([fseeko]) fi dnl Probe for mmap properties. @@ -593,8 +621,32 @@ INN_SYS_STREAMS_SENDFD INN_SYS_UNIX_SOCKETS INN_LOG_FACILITY +dnl Add hardening build flags, if supported by the compiler. +dnl Solaris has a separate libssp, so -fstack-protector-strong also has +dnl to be passed to the linker. And we assume that if the linker does not +dnl accept -fstack-protector-strong, the build is likely to fail (like on AIX +dnl where libssp_nonshared may not be present). +AS_IF([test x"$inn_enable_hardening_flags" = xyes], + [INN_PROG_CC_FLAG([-fPIE], [CFLAGS="${CFLAGS} -fPIE" + CC_WARNINGS="${CC_WARNINGS} -fPIE" + INN_PROG_LD_FLAG([-pie], + [LDFLAGS="${LDFLAGS} -pie"], [])]) + INN_PROG_CC_FLAG([-fstack-protector-strong], + [CFLAGS="${CFLAGS} -fstack-protector-strong" + CC_WARNINGS="${CC_WARNINGS} -fstack-protector-strong"], + []) + INN_PROG_LD_FLAG([-fstack-protector-strong], + [LDFLAGS="${LDFLAGS} -fstack-protector-strong"], + [CFLAGS=`AS_ECHO(["${CFLAGS}"]) | sed 's/ -fstack-protector-strong//'` + CC_WARNINGS=`AS_ECHO(["${CC_WARNINGS}"]) | sed 's/ -fstack-protector-strong//'`]) + INN_PROG_LD_FLAG([-Wl,-z,relro], + [LDFLAGS="${LDFLAGS} -Wl,-z,relro"], []) + INN_PROG_LD_FLAG([-Wl,-z,now], + [LDFLAGS="${LDFLAGS} -Wl,-z,now"], [])]) +AC_SUBST([CC_WARNINGS]) + dnl Clean up our LIBS, just for grins. -LIBS=`echo "$LIBS" | sed 's/^ *//' | sed 's/ */ /g' | sed 's/ *$//'` +LIBS=`AS_ECHO(["$LIBS"]) | sed 's/^ *//' | sed 's/ */ /g' | sed 's/ *$//'` dnl Configure our output files. Try to keep this as limited as possible, dnl since it directly affects how long it takes configure to complete. @@ -609,7 +661,7 @@ AH_TOP([#include "inn/defines.h" #include "inn/options.h"]) dnl Most configuration information goes here. -AC_CONFIG_HEADER([include/config.h]) +AC_CONFIG_HEADERS([include/config.h]) dnl Generate the configure output. AC_OUTPUT @@ -617,7 +669,7 @@ AC_OUTPUT dnl Print out some additional information on what to check. cat </pgp/ncmring.gpg --import + gpg1 --no-default-keyring --primary-keyring /pgp/ncmring.gpg \ + --no-options --allow-non-selfsigned-uid --no-permission-warning \ + --batch --import chmod 644 /pgp/ncmring.gpg where is the value of the I parameter set in @@ -550,10 +552,10 @@ have to create the directory /p automatically generate the F file) and make sure the news user can read this file, once generated. -For old PGP-generated keys, you may have to use -B<--allow-non-selfsigned-uid> if they are not properly self-signed, -but anyone creating a key really should self-sign the key. Current PGP -implementations do this automatically. +As a few NoCeM issuers are still using old PGP-generated keys, you +may have to use B with various legacy options in command-line +(like in the example above) instead of more recent versions of B +that no longer accept such keys. The keys of NoCeM issuers can be found in the web site of I: L. You can even @@ -643,7 +645,7 @@ Copyright 2000 by Miquel van Smoorenburg Copyright 2001 by Marco d'Itri . -$Id: perl-nocem.in 10245 2018-02-16 21:11:59Z iulius $ +$Id: perl-nocem.in 10399 2020-11-12 20:24:35Z iulius $ =head1 SEE ALSO diff -Nurp inn-2.6.3/control/pgpverify.in inn-2.6.4/control/pgpverify.in --- inn-2.6.3/control/pgpverify.in 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/control/pgpverify.in 2021-01-21 13:53:07.000000000 -0800 @@ -18,8 +18,12 @@ # # Changes from 1.29 -> 1.30 # -- Support for GnuPG's gpg binary (in addition to gpgv). gpg (from -# GnuPG 1.x) still validates signatures made with weak digest -# algorithms like MD5 whereas current versions of gpgv no longer do. +# GnuPG 1.x before 1.4.20, and GnuPG 2.0.x) still validates signatures +# made with weak digest algorithms like MD5 whereas current versions +# of gpgv no longer do. +# -- This new release of pgpverify requires at least GnuPG 1.4.20 or 2.1.0. +# If you're using an older version of GnuPG, you have to keep using +# pgpverify 1.29. # # Changes from 1.28 -> 1.29 # -- Disambiguate numbered lists from description lists in POD to silent diff -Nurp inn-2.6.3/doc/FAQ inn-2.6.4/doc/FAQ --- inn-2.6.3/doc/FAQ 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/FAQ 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -$Id: FAQ 10329 2019-02-07 14:29:19Z iulius $ +$Id: FAQ 10537 2021-01-21 21:37:04Z iulius $ From: Russ Allbery Subject: INN 2.x FAQ @@ -75,7 +75,7 @@ Subject: Contents 5.2. Using raw devices on Solaris destroys the partition table 5.3. Will INN run on Windows? 5.4. Why aren't INN's files where the documentation says they are? - 5.5. Running INN on Mac OS X + 5.5. Running INN on macOS 6. How Do I... 6.1. Set up a server with no external feeds, just local groups @@ -139,7 +139,7 @@ beginner's introduction, see the news.ne Subject: 1.2. What is the current version? -The most recently released version of INN is 2.6.3. +The most recently released version of INN is 2.6.4. INN development proceeds in two branches, as with many other free software projects. The STABLE branch is maintenance of the most recently released @@ -453,11 +453,40 @@ clients. Any INN server that supports readers must therefore have an overview method configured. There are three different methods to choose from: -tradindexed, which is the slowest but the best tested and most reliable -and the method with the best recovery tools; buffindexed, which is fast at -writing because it uses preconfigured large buffers like CNFS, but which -is harder to recover; and the experimental ovdb overview method, which -stores overview information in a BerkeleyDB database. + + - buffindexed, which stores overview data and index information + into preconfigured large files like CNFS. Fast at writing, the + buffindexed overview storage method can keep up with a large feed + more easily and never consumes additional disk space beyond that + allocated to these buffers. The downside is that these buffers + are hard to recover in case of corruption and somewhat slower for + readers and the expiry process; + + - ovdb, which stores overview information into a Berkeley DB database, + whose development pace has stalled these last years. This method + is fast and very robust, but may require more disk space, unless + compression is enabled; + + - tradindexed, which uses two files per newsgroup, one containing + the overview data and one containing the index. Fast for readers, + but slow to write to because it has to update two files for each + incoming article. Its main advantage is to be the best tested, + the most reliable and the method with the best recovery tools. + +Here are a few elements that can be helpful in choosing the right +overview method for your needs and estimating the associated storage +size. In 2020, the volume for a full-text Usenet feed is about 18,000 +articles per day, with peaks to 1,200 articles per hour. Article storage +size is about 65 MB per day. + +As for overview storage size, if you have 5 million articles, you'll +need at least 3.25 GB of disk space for buffindexed, 5.5 GB for ovdb +(4.5 GB if compressed), and 3.10 GB for tradindexed. + +If you store more header fields in overview data than the standard +ones, the space needed to store overview data will be superior than +these estimates. (This is configured in the extraoverviewadvertised +and extraoverviewhidden inn.conf parameters.) ------------------------------ @@ -1023,7 +1052,7 @@ directory under news's home directory. ------------------------------ -Subject: 5.5. Running INN on Mac OS X +Subject: 5.5. Running INN on macOS Richard Tobin provided the following advice in news.software.nntp on 2013-06-29 based on experience with running INN on Snow Leopard: @@ -1052,8 +1081,8 @@ Richard Tobin provided the following adv function related to "vprocmgr". Running from launchd shouldn't have this problem, and it appears to be fixed in Mountain Lion. -The Perl flags come from the Perl configuration, so this problem may be -fixed with newer builds of Mac OS X. +The Perl flags come from the Perl configuration; this problem is fixed +with current builds of macOS. ------------------------------ diff -Nurp inn-2.6.3/doc/hook-perl inn-2.6.4/doc/hook-perl --- inn-2.6.3/doc/hook-perl 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/hook-perl 2021-01-21 13:53:07.000000000 -0800 @@ -337,7 +337,9 @@ The nnrpd Posting Filter format can result in nnrpd trying to post nonsense articles (which will probably then be rejected by innd). If $modify_headers is set, *everything* in the %hdr hash is taken to be article headers and added - to the article. + to the article. If a header field body contains several lines, they are + separated from each other by a mere LF (nnrpd will properly rewrite them + as CRLF when posting). To modify the contents of the Organization: header, you can use: @@ -628,7 +630,7 @@ Available Packages maintaining it since 2007. Postfilter - URL: (by Paolo Amoroso) + URL: (by Paolo Amoroso) Postfilter is an nnrpd Perl filter (filter_nnrpd.pl) which scans all messages sent by local users in order to block abuses. Postfilter @@ -644,5 +646,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 10280 2018-05-14 12:32:44Z iulius $ + $Id: hook-perl.pod 10445 2020-12-09 21:09:12Z iulius $ diff -Nurp inn-2.6.3/doc/man/INN__Config.3pm inn-2.6.4/doc/man/INN__Config.3pm --- inn-2.6.3/doc/man/INN__Config.3pm 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/INN__Config.3pm 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "INN::Config 3pm" -.TH INN::Config 3pm "2018-05-14" "INN 2.6.3" "InterNetNews Documentation" +.TH INN::Config 3pm "2018-05-14" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -140,8 +144,8 @@ INN::Config \- Export all the variables .IX Header "DESCRIPTION" This Perl module sets up any and all the variables that an \s-1INN\s0 Perl script might need. More particularly, it allows using \fIinn.conf\fR variables: -they are all provided by \fBinnconfval\fR, as well as the version of \s-1INN -\&\s0(in the variable \f(CW$INN::Config::VERSION\fR for its short number form, on in +they are all provided by \fBinnconfval\fR, as well as the version of \s-1INN\s0 +(in the variable \f(CW$INN::Config::VERSION\fR for its short number form, on in \&\f(CW$INN::Config::version\fR for its complete form). Other useful variables are also provided (directories, files, programs, masks, parameters). The complete list can be obtained with the following script that prints @@ -219,4 +223,4 @@ module by Julien Elie in 2007. \&\f(CW$Id:\fR Config.pm.in 10283 2018\-05\-14 12:43:05Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIinn.conf\fR\|(5), \fIinnconfval\fR\|(1), \fIperl\fR\|(1). +\&\fBinn.conf\fR\|(5), \fBinnconfval\fR\|(1), \fBperl\fR\|(1). diff -Nurp inn-2.6.3/doc/man/INN__Utils__Shlock.3pm inn-2.6.4/doc/man/INN__Utils__Shlock.3pm --- inn-2.6.3/doc/man/INN__Utils__Shlock.3pm 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/INN__Utils__Shlock.3pm 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "INN::Utils::Shlock 3pm" -.TH INN::Utils::Shlock 3pm "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH INN::Utils::Shlock 3pm "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -138,12 +142,12 @@ INN::Utils::Shlock \- Wrapper around the shlock program .SH "DESCRIPTION" .IX Header "DESCRIPTION" -This Perl module wraps the \fIshlock\fR\|(1) program so that it can easily be used. -Calling \fBshlock\fR is more portable than using \fIflock\fR\|(2) and its corresponding +This Perl module wraps the \fBshlock\fR\|(1) program so that it can easily be used. +Calling \fBshlock\fR is more portable than using \fBflock\fR\|(2) and its corresponding Perl function because this function does not work as expected on all existing systems. .PP -See the \fIshlock\fR\|(1) documentation for more information. +See the \fBshlock\fR\|(1) documentation for more information. .PP Using INN::Utils::Shlock is straight-forward: .PP @@ -212,7 +216,7 @@ Note that \f(CW\*(C`lock(\f(CIlockfile\f 1, 2)\*(C'\fR. .Sp This function returns \f(CW1\fR on success, \f(CW0\fR on failure. -.IP "\fIreleaselocks()\fR" 4 +.IP "\fBreleaselocks()\fR" 4 .IX Item "releaselocks()" Removes all the lock files previously created by calling the \f(CW\*(C`lock(\f(CIlockfile\f(CW)\*(C'\fR function. .Sp @@ -229,4 +233,4 @@ Documentation written by Julien Elie for \&\f(CW$Id:\fR Shlock.pm.in 9408 2012\-05\-28 18:42:29Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIperl\fR\|(1), \fIshlock\fR\|(1). +\&\fBperl\fR\|(1), \fBshlock\fR\|(1). diff -Nurp inn-2.6.3/doc/man/active.5 inn-2.6.4/doc/man/active.5 --- inn-2.6.3/doc/man/active.5 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/active.5 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "ACTIVE 5" -.TH ACTIVE 5 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH ACTIVE 5 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -138,11 +142,11 @@ active \- List of newsgroups carried by the server .SH "DESCRIPTION" .IX Header "DESCRIPTION" -The file \fIpathdb\fR/active lists the newsgroups carried by \s-1INN. \s0 This file -is generally maintained using \fIctlinnd\fR\|(8) to create and remove groups, or -by letting \fIcontrolchan\fR\|(8) do so on the basis of received control messages; +The file \fIpathdb\fR/active lists the newsgroups carried by \s-1INN.\s0 This file +is generally maintained using \fBctlinnd\fR\|(8) to create and remove groups, or +by letting \fBcontrolchan\fR\|(8) do so on the basis of received control messages; this file is then updated and a backup stored in \fIpathdb\fR/active.old. Note -that the \fInewsgroups\fR\|(5) file normally contains the descriptions of the +that the \fBnewsgroups\fR\|(5) file normally contains the descriptions of the newsgroups carried by the news server. .PP The \fIactive\fR file should not be edited directly without throttling \fBinnd\fR, @@ -176,13 +180,13 @@ into a control.* newsgroup named after t group exists, and otherwise are filed into the newsgroup \f(CW\*(C`control\*(C'\fR (without regard to what newsgroups are listed in the Newsgroups: header). If \fImergetogroups\fR is set to true in \fIinn.conf\fR, newsgroups that begin -with \f(CW\*(C`to.\*(C'\fR are also treated specially; see \fIinnd\fR\|(8). +with \f(CW\*(C`to.\*(C'\fR are also treated specially; see \fBinnd\fR\|(8). .PP The second field is the highest article number that has been used in that newsgroup. The third field is the lowest article number in the group; this number is not guaranteed to be accurate, and should only be taken to be a hint. It is normally updated nightly as part of the expire process; -see \fInews.daily\fR\|(8) and look for \f(CW\*(C`lowmark\*(C'\fR or \f(CW\*(C`renumber\*(C'\fR for more details. +see \fBnews.daily\fR\|(8) and look for \f(CW\*(C`lowmark\*(C'\fR or \f(CW\*(C`renumber\*(C'\fR for more details. Note that because of article cancellations, there may be gaps in the numbering sequence. If the lowest article number is greater than the highest article number, then there are no articles in the newsgroup. In @@ -215,7 +219,7 @@ other sites. Any articles received from treated as if they were actually posted to the group named after the equal sign. Note that the Newsgroups: header of the articles is not modified. (Alias groups are typically used during a transition and are typically -created manually with \fIctlinnd\fR\|(8).) An alias should not point to another +created manually with \fBctlinnd\fR\|(8).) An alias should not point to another alias. .PP Note that \fIreaders.conf\fR can be configured so that local posts to newsgroups @@ -246,12 +250,12 @@ the corresponding control messages will is so that users cannot post directly to these groups (control messages should only be posted to the groups that they affect). If you do not want these groups to be visible to clients, do not delete them but simply hide -them in \fIreaders.conf\fR\|(5). +them in \fBreaders.conf\fR\|(5). .PP To create additional groups after the server is running, you can use \&\f(CW\*(C`ctlinnd newgroup\*(C'\fR. You can also synchronize your newsgroup list to -that of another server by using \fIactsync\fR\|(8) or get the \fIactive\fR file -of another \s-1NNTP\s0 server with \fIgetlist\fR\|(1). And do not forget to update +that of another server by using \fBactsync\fR\|(8) or get the \fIactive\fR file +of another \s-1NNTP\s0 server with \fBgetlist\fR\|(1). And do not forget to update your \fInewsgroups\fR file, which can be automatically done thanks to \&\fBdocheckgroups\fR called with the \fB\-u\fR flag. .SH "HISTORY" @@ -262,6 +266,6 @@ Written by Rich \f(CW$alz\fR 0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "ACTIVE.TIMES 5" -.TH ACTIVE.TIMES 5 "2016-10-07" "INN 2.6.3" "InterNetNews Documentation" +.TH ACTIVE.TIMES 5 "2016-10-07" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -159,7 +163,7 @@ message or on the \fBctlinnd\fR command at configure time if no creator argument was given to \fBctlinnd\fR (by default, it is \f(CW\*(C`usenet\*(C'\fR). .PP -You can get the \fIactive.times\fR file of another \s-1NNTP\s0 server with \fIgetlist\fR\|(1). +You can get the \fIactive.times\fR file of another \s-1NNTP\s0 server with \fBgetlist\fR\|(1). .SH "EXAMPLE" .IX Header "EXAMPLE" The line: @@ -169,12 +173,12 @@ The line: .Ve .PP shows that the newsgroup news.admin.moderation was created on April 4th, 2007, -at 20:00:03 \s-1UTC. \s0 This date can be obtained for instance with -\&\f(CW\*(C`convdate \-dc 1175716803\*(C'\fR (\fIconvdate\fR\|(1) is shipped with \s-1INN\s0) or +at 20:00:03 \s-1UTC.\s0 This date can be obtained for instance with +\&\f(CW\*(C`convdate \-dc 1175716803\*(C'\fR (\fBconvdate\fR\|(1) is shipped with \s-1INN\s0) or \&\f(CW\*(C`date \-u \-d "Jan 1, 1970 00:00:00 +0000 + 1175716803 seconds"\*(C'\fR. It is when the newsgroup was locally created; in this example, it is when a control message sent by \f(CW\*(C`group\-admin@isc.org\*(C'\fR was received and processed -by the news server (see \fIcontrol.ctl\fR\|(5) for more details). Therefore, +by the news server (see \fBcontrol.ctl\fR\|(5) for more details). Therefore, the time is not necessarily the same on every news server. .SH "HISTORY" .IX Header "HISTORY" @@ -184,5 +188,5 @@ Written by Rich \f(CW$alz\fR 0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "ACTSYNC 8" -.TH ACTSYNC 8 "2016-11-06" "INN 2.6.3" "InterNetNews Documentation" +.TH ACTSYNC 8 "2016-11-06" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -172,11 +176,11 @@ then, not all hierarchies use \s-1PGP\s0 Your \fIactive\fR file may have been trashed. .PP If either \fIhost\fR argument begins with \f(CW\*(C`.\*(C'\fR or \f(CW\*(C`/\*(C'\fR, it is assumed to be -the name of a file containing information in the \fIactive\fR\|(5) format. The -\&\fIgetlist\fR\|(1) utility may be used to obtain a copy of a remote system's \fIactive\fR +the name of a file containing information in the \fBactive\fR\|(5) format. The +\&\fBgetlist\fR\|(1) utility may be used to obtain a copy of a remote system's \fIactive\fR file via its \s-1NNTP\s0 server, or an \s-1FTP\s0 client program can retrieve such a -file from an \s-1FTP\s0 archive (such as ftp.isc.org available in both \s-1FTP\s0 and \s-1HTTPS -\&\s0; see more about this below). +file from an \s-1FTP\s0 archive (such as ftp.isc.org available in both \s-1FTP\s0 and \s-1HTTPS\s0 +; see more about this below). Newsgroup information from a file may be treated as if it was obtained from a host. In this man page, the \fIhost\fR arguments on the command line are called hosts, even though they may be file names. @@ -214,7 +218,7 @@ The \fBactsyncd\fR daemon provides a con run \fBactsync\fR. If a host is not initially reachable, the daemon will retry up to 9 additional times, waiting 6 minutes before each retry. This daemon runs in the foreground, sending output to standard output and -standard error. It then uses \fImod\-active\fR\|(8) to update the \fIactive\fR file +standard error. It then uses \fBmod\-active\fR\|(8) to update the \fIactive\fR file if there are commands for \fBctlinnd\fR in its output. .PP The configuration filename for the daemon is given as a command line @@ -315,7 +319,7 @@ components: .Sp The newsgroups directory of a newsgroup with a all numeric component could conflict with an article from another group if stored using the -tradspool storage method; see \fIstorage.conf\fR\|(5). For example, the directory +tradspool storage method; see \fBstorage.conf\fR\|(5). For example, the directory for the first newsgroup listed above is the same path as article number 23209 from the newsgroup: .Sp @@ -370,7 +374,7 @@ one of two forms: If the rule begins with a \f(CW\*(C`c\*(C'\fR, the rule requests certain newsgroups to be checked. If the rule begins with an \f(CW\*(C`i\*(C'\fR, the rule requests certain newsgroups to be ignored. The field may be a specific -newsgroup, or a \fIuwildmat\fR\|(3) pattern. +newsgroup, or a \fBuwildmat\fR\|(3) pattern. .Sp If one or more s are specified, then the rule applies to the newsgroup only if it is of the specified type. Types refer to the 4th field @@ -386,7 +390,7 @@ of the \fIactive\fR file; that is, a typ .Ve .Sp Unlike \fIactive\fR files, the \f(CW\*(C`group.name\*(C'\fR in an alias type may be a newsgroup -name or a \fIuwildmat\fR\|(3) pattern. Also, \f(CW\*(C`=\*(C'\fR is equivalent to \f(CW\*(C`=*\*(C'\fR. +name or a \fBuwildmat\fR\|(3) pattern. Also, \f(CW\*(C`=\*(C'\fR is equivalent to \f(CW\*(C`=*\*(C'\fR. .Sp On each rule line, no pattern type may be repeated. For example, one may not have more than one type that begins with \f(CW\*(C`=\*(C'\fR, per line. However, @@ -466,7 +470,7 @@ This flag disables this process, permitt host to be kept. .IP "\fB\-n\fR \fIname\fR" 4 .IX Item "-n name" -Depending on \fB\-o\fR, the \fIctlinnd\fR\|(8) command may be used to create +Depending on \fB\-o\fR, the \fBctlinnd\fR\|(8) command may be used to create newsgroups as necessary. When this is done, the default creator name used is \f(CW\*(C`actsync\*(C'\fR. This flag changes the creator name to \fIname\fR. .IP "\fB\-o\fR \fIformat\fR" 4 @@ -476,27 +480,27 @@ one of: .RS 4 .IP "a" 4 .IX Item "a" -Output in \fIactive\fR\|(5) format. +Output in \fBactive\fR\|(5) format. .IP "a1" 4 .IX Item "a1" -Output in \fIactive\fR\|(5) format and output non-error ignored groups from the +Output in \fBactive\fR\|(5) format and output non-error ignored groups from the local host. .IP "ak" 4 .IX Item "ak" -Output in \fIactive\fR\|(5) format, but use the high and low (2nd and 3rd active +Output in \fBactive\fR\|(5) format, but use the high and low (2nd and 3rd active fields) values from the remote host for any newsgroup being created. .IP "aK" 4 .IX Item "aK" -Output in \fIactive\fR\|(5) format, but use the high and low (2nd and 3rd active +Output in \fBactive\fR\|(5) format, but use the high and low (2nd and 3rd active fields) values from the remote host for all newsgroups found on that host. .IP "a1k" 4 .IX Item "a1k" -Output in \fIactive\fR\|(5) format, but use the high and low (2nd and 3rd active +Output in \fBactive\fR\|(5) format, but use the high and low (2nd and 3rd active fields) values from the remote host for any newsgroup being created and output non-error ignored groups from the local host. .IP "a1K" 4 .IX Item "a1K" -Output in \fIactive\fR\|(5) format, but use the high and low (2nd and 3rd active +Output in \fBactive\fR\|(5) format, but use the high and low (2nd and 3rd active fields) values from the remote host for all newsgroups found on that host and output non-error ignored groups from the local host. .IP "ak1" 4 @@ -534,7 +538,7 @@ This output format is useful to let you affected by the sync (or merge) with the remote host. .Sp The sync (or merge) may be accomplished directly by use of the \f(CW\*(C`x\*(C'\fR or -\&\f(CW\*(C`xi\*(C'\fR format. With this format, \fBactsync\fR uses the \fIexecl\fR\|(2) system call +\&\f(CW\*(C`xi\*(C'\fR format. With this format, \fBactsync\fR uses the \fBexecl\fR\|(2) system call to directly execute \fBctlinnd\fR commands. The output of such exec calls may be seen if the verbosity level is at least \f(CW2\fR. .Sp @@ -546,7 +550,7 @@ The \f(CW\*(C`xi\*(C'\fR format interact directives on standard input. One may pick and choose changes using this format. .Sp -Care should be taken when producing \fIactive\fR\|(5) formatted output. One +Care should be taken when producing \fBactive\fR\|(5) formatted output. One should check to be sure that \fBactsync\fR exited with a zero status prior to using such output. Also one should realize that such output will not contain lines ignored due to \fB\-i\fR even if \f(CW\*(C`\-p 100\*(C'\fR is used. @@ -569,7 +573,7 @@ To force \fBactsync\fR to accept any amo option. To force \fBactsync\fR to reject any changes, use the \f(CW\*(C`\-p 100\*(C'\fR option. .Sp -Care should be taken when producing \fIactive\fR\|(5) formatted output. One +Care should be taken when producing \fBactive\fR\|(5) formatted output. One should check to be sure that \fBactsync\fR exited with a zero status prior to using such output. Also one should realize that such output will not contain lines ignored due to \fB\-i\fR even if \f(CW\*(C`\-p 100\*(C'\fR is used. @@ -902,4 +906,4 @@ Permission to use and modify is hereby g remains. Use at your own risk. No warranty is implied. .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIactive\fR\|(5), \fIctlinnd\fR\|(8), \fIgetlist\fR\|(8), \fIinn.conf\fR\|(5), \fImod\-active\fR\|(8), \fIsimpleftp\fR\|(1). +\&\fBactive\fR\|(5), \fBctlinnd\fR\|(8), \fBgetlist\fR\|(8), \fBinn.conf\fR\|(5), \fBmod\-active\fR\|(8), \fBsimpleftp\fR\|(1). diff -Nurp inn-2.6.3/doc/man/archive.8 inn-2.6.4/doc/man/archive.8 --- inn-2.6.3/doc/man/archive.8 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/archive.8 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "ARCHIVE 8" -.TH ARCHIVE 8 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH ARCHIVE 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -215,7 +219,7 @@ are used to generate overview data (unfo .IP "\fB\-p\fR \fIpattern\fR" 4 .IX Item "-p pattern" Limits the targets taken from the Xref: header to the groups specified in -\&\fIpattern\fR. \fIpattern\fR is a \fIuwildmat\fR\|(3) pattern matching newsgroups that +\&\fIpattern\fR. \fIpattern\fR is a \fBuwildmat\fR\|(3) pattern matching newsgroups that you wish to have \fBarchive\fR handle. .IP "\fB\-r\fR" 4 .IX Item "-r" @@ -234,7 +238,7 @@ to rename this temporary file to be the exit. .SH "EXAMPLES" .IX Header "EXAMPLES" -A typical \fInewsfeeds\fR\|(5) entry to archive most source newsgroups is as +A typical \fBnewsfeeds\fR\|(5) entry to archive most source newsgroups is as follows: .PP .Vb 4 @@ -253,4 +257,4 @@ Written by Rich \f(CW$alz\fR 0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "AUTH_KRB5 8" -.TH AUTH_KRB5 8 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH AUTH_KRB5 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -170,7 +174,7 @@ users are given a separate instance just own password, so their regular account password isn't exposed via \s-1NNTP.\s0 .SH "EXAMPLE" .IX Header "EXAMPLE" -The following \fIreaders.conf\fR\|(5) fragment tells nnrpd to authenticate users +The following \fBreaders.conf\fR\|(5) fragment tells nnrpd to authenticate users by attempting to obtain Kerberos\ v5\ TGTs for them, appending an instance of \f(CW\*(C`nntp\*(C'\fR to usernames before doing so: .PP @@ -211,4 +215,4 @@ written by Russ Allbery 0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "BATCHER 8" -.TH BATCHER 8 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH BATCHER 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -146,10 +150,10 @@ batcher \- Article batching for InterNet .IX Header "DESCRIPTION" \&\fBbatcher\fR reads a list of files and prepares news batches for the specified host. It is generally used to prepare \s-1UUCP\s0 feeds, but the -resulting batches can be used by any application that uses \fIrnews\fR\|(8) to +resulting batches can be used by any application that uses \fBrnews\fR\|(8) to inject the articles. It is normally invoked by a script run out of cron that uses \fBshlock\fR to lock the host, followed by \fBctlinnd\fR to flush the -batch file. See \fIsend\-uucp\fR\|(8) for a front-end for \fBbatcher\fR. +batch file. See \fBsend\-uucp\fR\|(8) for a front-end for \fBbatcher\fR. .PP \&\fBbatcher\fR reads the file \fIinput\fR, or standard input if no file is given. If \fIinput\fR is a relative file name, it is assumed to be in @@ -178,7 +182,7 @@ The default is no limit. .IX Item "-b size" This flag sets the size limit for each batch; as soon as at least this much data has been written out, a new batch will be started. The default -size is 60\ \s-1KB. \s0 Using \f(CW\*(C`\-b 0\*(C'\fR will allow unlimited batch sizes. +size is 60\ \s-1KB.\s0 Using \f(CW\*(C`\-b 0\*(C'\fR will allow unlimited batch sizes. .IP "\fB\-B\fR \fItotal-size\fR" 4 .IX Item "-B total-size" Limits the total number of bytes written for all batches. As soon as the @@ -203,7 +207,7 @@ the input will be deferred. The default By default, batches are written to standard output, which is not useful when more than one output batch is created. If this option is given, each batch will instead be fed via a pipe to the shell command \fIprocess\fR. The -\&\fIprocess\fR argument must be an \fIsprintf\fR\|(3) format string, which may have a +\&\fIprocess\fR argument must be an \fBsprintf\fR\|(3) format string, which may have a single \f(CW%s\fR parameter that will be replaced with the host name. .Sp A common value is: @@ -220,7 +224,7 @@ this redirection and report errors to st .IP "\fB\-s\fR \fIseparator\fR" 4 .IX Item "-s separator" Each article in a batch starts with a separator line that indicates the -size of the article. \fIseparator\fR must be an \fIsprintf\fR\|(3) string, which may +size of the article. \fIseparator\fR must be an \fBsprintf\fR\|(3) string, which may have a single \f(CW%ld\fR in the string that will be replaced with the size of the article. If the separator is not empty, a newline will also be appended to it when it is added to the beginning of each article. @@ -266,4 +270,4 @@ Russ Allbery in \s-1PO \&\f(CW$Id:\fR batcher.pod 9767 2014\-12\-07 21:13:43Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIctlinnd\fR\|(8), \fIinn.conf\fR\|(5), \fInewsfeeds\fR\|(5), \fIrnews\fR\|(8), \fIsend\-uucp\fR\|(8), \fIshlock\fR\|(1). +\&\fBctlinnd\fR\|(8), \fBinn.conf\fR\|(5), \fBnewsfeeds\fR\|(5), \fBrnews\fR\|(8), \fBsend\-uucp\fR\|(8), \fBshlock\fR\|(1). diff -Nurp inn-2.6.3/doc/man/buffchan.8 inn-2.6.4/doc/man/buffchan.8 --- inn-2.6.3/doc/man/buffchan.8 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/buffchan.8 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "BUFFCHAN 8" -.TH BUFFCHAN 8 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH BUFFCHAN 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -158,7 +162,7 @@ filename fields. The output files are k closed based on the schedule given by the \fB\-c\fR, \fB\-C\fR, \fB\-l\fR, and \fB\-L\fR options. .PP -As an exploder feed (see \fInewsfeeds\fR\|(5) for an explanation), \fBbuffchan\fR +As an exploder feed (see \fBnewsfeeds\fR\|(5) for an explanation), \fBbuffchan\fR interprets lines beginning with an exclamation point as commands. Besides \&\f(CW\*(C`!begin\*(C'\fR (which only marks the start of the feed), there are three supported commands: @@ -171,7 +175,7 @@ sent via \fBinnd\fR using \f(CW\*(C`ctli .Sp Applications can tell that flush has completed by renaming the file before issuing the command. When the original file name has reappeared, the -flush is complete. If \fIfchmod\fR\|(3) is available, \fBbuffchan\fR also changes +flush is complete. If \fBfchmod\fR\|(3) is available, \fBbuffchan\fR also changes the file to read-only while it's actively writing to it and changes it back to read/write once it has been closed. It will change the mode back to read-only only if it reopens the same file. @@ -199,7 +203,7 @@ maximum number of files a process may op .IX Item "-b" Force the output to be buffered. (This is generally the default, but it may depend on the operating system.) If \fB\-b\fR is given, a buffer size of -\&\s-1BUFSIZ \s0(a constant of the system standard I/O library) is used. +\&\s-1BUFSIZ\s0 (a constant of the system standard I/O library) is used. .IP "\fB\-c\fR \fIlines\fR" 4 .IX Item "-c lines" If the \fB\-c\fR flag is given, \fBbuffchan\fR will close and reopen a file after @@ -249,7 +253,7 @@ field appears. For example: .IP "\fB\-p\fR \fIpid-file\fR" 4 .IX Item "-p pid-file" If the \fB\-p\fR option is given, \fBbuffchan\fR will write a line containing its -process \s-1ID \s0(in text) to the specified file when it starts. +process \s-1ID\s0 (in text) to the specified file when it starts. .IP "\fB\-r\fR" 4 .IX Item "-r" By default, \fBbuffchan\fR sends its error messages to \fIpathlog\fR/errlog. To @@ -259,7 +263,7 @@ the \fB\-r\fR flag. .IX Item "-s" The \fB\-s\fR flag may be used to specify a format that maps a filename from the filename fields at the end of each line to an actual filename. This -is a \fIsprintf\fR\|(3) format string that should contain a single instance of +is a \fBsprintf\fR\|(3) format string that should contain a single instance of \&\f(CW%s\fR, which will be replaced with the value of the filename field (possibly after mapping with the map file from \fB\-m\fR). The default value is \fIpathoutgoing\fR/\f(CW%s\fR. @@ -305,4 +309,4 @@ Written by Rich \f(CW$alz\fR 0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "BUFFINDEXED.CONF 5" -.TH BUFFINDEXED.CONF 5 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH BUFFINDEXED.CONF 5 "2021-01-21" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -207,12 +211,19 @@ You \s-1MUST\s0 recreate overview comple or replace buffers. However, new buffers can be added without any special care (other than restarting \fBinnd\fR after modifying \fIbuffindexed.conf\fR). If you need to rebuild overview, you should zero all of the buffers first. +.PP +We recommend not to reserve too much spare space in existing buffers, so +that to minimize the duration of the \fBexpireover\fR process, and to just +add new buffers when space left is low (see the result of \f(CW\*(C`inndf \-no\*(C'\fR). +Plan on needing at least 0.65\ \s-1KB\s0 for every article in your spool +(not counting crossposts). So, if you have 5 million articles, you'll +need at least 3.25\ \s-1GB\s0 of disk space for buffindexed. .SH "CREATING BUFFERS" .IX Header "CREATING BUFFERS" There are two methods to create a new buffindexed buffer: .IP "1." 4 Create a large file on top of a regular file system. The easiest way to -do this is probably with \fIdd\fR\|(1), using a command like: +do this is probably with \fBdd\fR\|(1), using a command like: .Sp .Vb 1 \& dd if=/dev/zero of=/path/to/cycbuff bs=1024 count= @@ -226,7 +237,7 @@ at the end of the file, and \s-1INN\s0 i when accessing the buffer. .IP "2." 4 Use block devices directly. If your operating system allows you to call -\&\fImmap()\fR on block devices (Solaris and recent versions of Linux do, FreeBSD +\&\fBmmap()\fR on block devices (Solaris and recent versions of Linux do, FreeBSD at last report does not), this method can avoid all of the native file system overhead. Note, however, that Solaris has problems with byte range locking on block devices, and therefore this method should not be used on @@ -241,7 +252,7 @@ create device files for each block devic It's not recommended to use the block device files in \fI/dev\fR, since the news system doesn't have permission to write to them and changing the permissions of the system device files may affect something else. -Instead, use \fImknod\fR\|(1) to create a new set of block devices (in somewhere +Instead, use \fBmknod\fR\|(1) to create a new set of block devices (in somewhere like \fIpathspool\fR/overview that's only writable by the news user). To do this, run \f(CW\*(C`ls \-Ll\*(C'\fR on the devices in \fI/dev\fR that correspond to the block devices that you want to use. The major and minor device numbers are in @@ -279,7 +290,7 @@ user to read and write. Written by Katsuhiro Kondou for InterNetNews. Converted to \s-1POD\s0 by Russ Allbery . .PP -\&\f(CW$Id:\fR buffindexed.conf.pod 9925 2015\-08\-08 17:05:43Z iulius $ +\&\f(CW$Id:\fR buffindexed.conf.pod 10525 2021\-01\-20 11:51:15Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIexpireover\fR\|(8), \fIinn.conf\fR\|(5), \fIinndf\fR\|(8), \fImakehistory\fR\|(8). +\&\fBexpireover\fR\|(8), \fBinn.conf\fR\|(5), \fBinndf\fR\|(8), \fBmakehistory\fR\|(8). diff -Nurp inn-2.6.3/doc/man/ckpasswd.8 inn-2.6.4/doc/man/ckpasswd.8 --- inn-2.6.3/doc/man/ckpasswd.8 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/ckpasswd.8 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "CKPASSWD 8" -.TH CKPASSWD 8 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH CKPASSWD 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -143,27 +147,27 @@ ckpasswd \- nnrpd password authenticator .SH "DESCRIPTION" .IX Header "DESCRIPTION" \&\fBckpasswd\fR is the basic password authenticator for \fBnnrpd\fR, suitable for -being run from an auth stanza in \fIreaders.conf\fR. See \fIreaders.conf\fR\|(5) for +being run from an auth stanza in \fIreaders.conf\fR. See \fBreaders.conf\fR\|(5) for more information on how to configure an \fBnnrpd\fR authenticator. .PP -\&\fBckpasswd\fR accepts a username and password from \fBnnrpd\fR and tells \fInnrpd\fR\|(8) +\&\fBckpasswd\fR accepts a username and password from \fBnnrpd\fR and tells \fBnnrpd\fR\|(8) whether that's the correct password for that username. By default, when given no arguments, it tries to check the password using \s-1PAM\s0 if support for \s-1PAM\s0 was found when \s-1INN\s0 was built. Failing that, it tries to check the -password against the password field returned by \fIgetpwnam\fR\|(3). Note that +password against the password field returned by \fBgetpwnam\fR\|(3). Note that these days most systems no longer make real passwords available via -\&\fIgetpwnam\fR\|(3) (some still do if and only if the program calling \fIgetpwnam\fR\|(3) +\&\fBgetpwnam\fR\|(3) (some still do if and only if the program calling \fBgetpwnam\fR\|(3) is running as root). .PP -When using \s-1PAM, \s0\fBckpasswd\fR identifies itself as \f(CW\*(C`nnrpd\*(C'\fR, not as +When using \s-1PAM,\s0 \fBckpasswd\fR identifies itself as \f(CW\*(C`nnrpd\*(C'\fR, not as \&\f(CW\*(C`ckpasswd\*(C'\fR, and the \s-1PAM\s0 configuration must be set up accordingly. The details of \s-1PAM\s0 configuration are different on different operating systems (and even different Linux distributions); see \s-1EXAMPLES\s0 below for help -getting started, and look for a \fIpam\fR\|(7) or \fIpam.conf\fR\|(4) manual page on your +getting started, and look for a \fBpam\fR\|(7) or \fBpam.conf\fR\|(4) manual page on your system. .PP -When using any method other than \s-1PAM, \s0\fBckpasswd\fR expects all passwords to -be stored encrypted by the system \fIcrypt\fR\|(3) function and calls \fIcrypt\fR\|(3) on +When using any method other than \s-1PAM,\s0 \fBckpasswd\fR expects all passwords to +be stored encrypted by the system \fBcrypt\fR\|(3) function and calls \fBcrypt\fR\|(3) on the supplied password before comparing it to the expected password. If you're using a different password hash scheme (like \s-1MD5\s0), you must use \&\s-1PAM.\s0 @@ -172,7 +176,7 @@ you're using a different password hash s .IP "\fB\-d\fR \fIdatabase\fR" 4 .IX Item "-d database" Read passwords from a database (ndbm, gdbm or dbm format depending on -what your system has) rather than by using \fIgetpwnam\fR\|(3). \fBckpasswd\fR +what your system has) rather than by using \fBgetpwnam\fR\|(3). \fBckpasswd\fR expects \fIdatabase\fR.dir and \fIdatabase\fR.pag to exist and to be a database keyed by username with the encrypted passwords as the values. .Sp @@ -208,7 +212,7 @@ This option will not be available on sys libraries. .IP "\fB\-f\fR \fIfilename\fR" 4 .IX Item "-f filename" -Read passwords from the given file rather than using \fIgetpwnam\fR\|(3). The +Read passwords from the given file rather than using \fBgetpwnam\fR\|(3). The file is expected to be formatted like a system password file, at least vaguely. That means each line should look something like: .Sp @@ -223,7 +227,7 @@ come with a utility to create the encryp (which comes with Apache) can do so and it's a quick job with Perl (see the example script under \fB\-d\fR, or also below). If using Apache's \&\fBhtpasswd\fR program, be sure to give it the \fB\-d\fR option so that it -will use \fIcrypt\fR\|(3). +will use \fBcrypt\fR\|(3). .Sp A line in \fIfilename\fR for the user \f(CW\*(C`user\*(C'\fR with the password \f(CW\*(C`pass\*(C'\fR would be \f(CW\*(C`user:LIfOpbjNaEQYE\*(C'\fR as obtained by the following command: @@ -255,20 +259,20 @@ involves putting a password on the comma be given. .IP "\fB\-s\fR" 4 .IX Item "-s" -Check passwords against the result of \fIgetspnam\fR\|(3) instead of \fIgetpwnam\fR\|(3). +Check passwords against the result of \fBgetspnam\fR\|(3) instead of \fBgetpwnam\fR\|(3). This function, on those systems that supports it, reads from \fI/etc/shadow\fR or similar more restricted files. If you want to check passwords supplied -to \fInnrpd\fR\|(8) against system account passwords, you will probably have to +to \fBnnrpd\fR\|(8) against system account passwords, you will probably have to use this option on most systems. .Sp -Most systems require special privileges to call \fIgetspnam\fR\|(3), so in order +Most systems require special privileges to call \fBgetspnam\fR\|(3), so in order to use this option you may need to make \fBckpasswd\fR setgid to some group (like group \f(CW\*(C`shadow\*(C'\fR) or even setuid root. \fBckpasswd\fR has not been specifically audited for such uses! It is, however, a very small program that you should be able to check by hand for security. .Sp This configuration is not recommended if it can be avoided, for serious -security reasons. See \*(L"\s-1SECURITY CONSIDERATIONS\*(R"\s0 in \fIreaders.conf\fR\|(5) for +security reasons. See \*(L"\s-1SECURITY CONSIDERATIONS\*(R"\s0 in \fBreaders.conf\fR\|(5) for discussion. .IP "\fB\-u\fR \fIusername\fR" 4 .IX Item "-u username" @@ -278,7 +282,7 @@ when \fBckpasswd\fR is run by \fBnnrpd\f also be given. .SH "EXAMPLES" .IX Header "EXAMPLES" -See \fIreaders.conf\fR\|(5) for examples of \fInnrpd\fR\|(8) authentication configuration +See \fBreaders.conf\fR\|(5) for examples of \fBnnrpd\fR\|(8) authentication configuration that uses \fBckpasswd\fR to check passwords. .PP An example \s-1PAM\s0 configuration for \fI/etc/pam.conf\fR that tells \fBckpasswd\fR @@ -325,4 +329,4 @@ Written by Russ Allbery 0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "CNFSHEADCONF 8" -.TH CNFSHEADCONF 8 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH CNFSHEADCONF 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -165,4 +169,4 @@ to \s-1POD\s0 by Julien Elie. \&\f(CW$Id:\fR cnfsheadconf.pod 8545 2009\-07\-03 21:56:39Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIcycbuff.conf\fR\|(5), \fIinn.conf\fR\|(5), \fIstorage.conf\fR\|(5). +\&\fBcycbuff.conf\fR\|(5), \fBinn.conf\fR\|(5), \fBstorage.conf\fR\|(5). diff -Nurp inn-2.6.3/doc/man/cnfsstat.8 inn-2.6.4/doc/man/cnfsstat.8 --- inn-2.6.3/doc/man/cnfsstat.8 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/cnfsstat.8 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "CNFSSTAT 8" -.TH CNFSSTAT 8 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH CNFSSTAT 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -146,7 +150,7 @@ cnfsstat \- Show usage of CNFS buffers to determine which \s-1CNFS\s0 buffers are available. It then reads the specified cyclic buffers and shows their usage status. \fBcnfsstat\fR can be invoked from \&\fBrc.news\fR if \fIdocnfsstat\fR is set to true in \fIinn.conf\fR, and the result is -written to \fIsyslog\fR\|(3). +written to \fBsyslog\fR\|(3). .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-a\fR" 4 @@ -186,7 +190,7 @@ Print an \s-1MRTG\s0 config file. Write \s-1PID\s0 into \fIpathrun\fR/cnfsstat.pid. .IP "\fB\-s\fR" 4 .IX Item "-s" -Write output to \fIsyslog\fR\|(3) instead of standard output. +Write output to \fBsyslog\fR\|(3) instead of standard output. .IP "\fB\-v\fR" 4 .IX Item "-v" Write additional information, especially about consistency checks for article @@ -199,4 +203,4 @@ to \s-1POD\s0 by Julien Elie. \&\f(CW$Id:\fR cnfsstat.pod 9721 2014\-09\-24 17:35:46Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIcycbuff.conf\fR\|(5), \fIhistory\fR\|(5), \fIinn.conf\fR\|(5), \fIrc.news\fR\|(8), \fIstorage.conf\fR\|(5). +\&\fBcycbuff.conf\fR\|(5), \fBhistory\fR\|(5), \fBinn.conf\fR\|(5), \fBrc.news\fR\|(8), \fBstorage.conf\fR\|(5). diff -Nurp inn-2.6.3/doc/man/control.ctl.5 inn-2.6.4/doc/man/control.ctl.5 --- inn-2.6.3/doc/man/control.ctl.5 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/control.ctl.5 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "CONTROL.CTL 5" -.TH CONTROL.CTL 5 "2018-05-14" "INN 2.6.3" "InterNetNews Documentation" +.TH CONTROL.CTL 5 "2018-05-14" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -205,7 +209,7 @@ specified charset is unknown) is equival .Ve .Sp It means that new descriptions in the \fInewsgroups\fR file will be written -using \s-1UTF\-8. \s0 And \fBcontrolchan\fR will try to read existing descriptions, +using \s-1UTF\-8.\s0 And \fBcontrolchan\fR will try to read existing descriptions, so as to see whether they should be updated, as though they were encoded in \s-1UTF\-8.\s0 .Sp @@ -233,7 +237,7 @@ will be used. The second field, , is a shell-style pattern that matches the e\-mail address of the person posting the message (with the address first converted to lowercase). The matching is done with rules equivalent to -those of the shell's \fIcase\fR statement; see \fIsh\fR\|(1) for more details. +those of the shell's \fIcase\fR statement; see \fBsh\fR\|(1) for more details. .PP If the control message is a newgroup or rmgroup, the third field, , is a shell-style pattern matching the newsgroup affected @@ -310,7 +314,7 @@ then \s-1PGP\s0 verification of the cont of the key of the authenticated signer will be checked against the expected identity defined by the rest of the string (\f(CW\*(C`news.announce.newgroups\*(C'\fR in the above example). This verification is -done via \fBpgpverify\fR; see \fIpgpverify\fR\|(8) for more details. +done via \fBpgpverify\fR; see \fBpgpverify\fR\|(8) for more details. .Sp If no logging is specified (with =\fIfile\fR as mentioned below), logging will be done the same as with \fBdoit\fR as described above. @@ -363,7 +367,7 @@ In order to use \fBverify\fR actions, th be populated with the \s-1PGP\s0 keys of the hierarchy maintainers whose control messages you want to honour. For more details on PGP-authenticated control messages and the \s-1URL\s0 for downloading the \s-1PGP\s0 keys of major hierarchies, -see \fIpgpverify\fR\|(8). +see \fBpgpverify\fR\|(8). .PP Control messages of type cancel are handled internally by \fBinnd\fR and cannot be affected by any of the mechanisms described here. @@ -486,5 +490,5 @@ Written by Rich \f(CW$alz\fR 0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "CONTROLCHAN 8" -.TH CONTROLCHAN 8 "2018-05-14" "INN 2.6.3" "InterNetNews Documentation" +.TH CONTROLCHAN 8 "2018-05-14" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -181,8 +185,8 @@ ihave/sendme control messages, be sure t in \fIinn.conf\fR, because in this case \fBcontrolchan\fR needs a site name, not an \s-1IP\s0 address. .PP -\&\fBcontrolchan\fR tries to report all log messages through \fIsyslog\fR\|(3), -unless connected to an interactive terminal. To enable \fIsyslog\fR\|(3)'ing for +\&\fBcontrolchan\fR tries to report all log messages through \fBsyslog\fR\|(3), +unless connected to an interactive terminal. To enable \fBsyslog\fR\|(3)'ing for versions of Perl prior to 5.6.0, you will need to have run \fBh2ph\fR on your system include files at some point (this is required to make \f(CW\*(C`Sys::Syslog\*(C'\fR work). If you have not done so, do this: @@ -218,4 +222,4 @@ Written by Katsuhiro Kondou 0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "CONVDATE 1" -.TH CONVDATE 1 "2016-10-07" "INN 2.6.3" "InterNetNews Documentation" +.TH CONVDATE 1 "2016-10-07" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -143,9 +147,9 @@ convdate \- Convert to/from RFC\ 5322 da .IX Header "DESCRIPTION" \&\fBconvdate\fR translates the date/time strings given on the command line, outputting the results one to a line. The input can either be a date in -\&\s-1RFC\s0\ 5322 format (accepting the variations on that format that \fIinnd\fR\|(8) is +\&\s-1RFC\s0\ 5322 format (accepting the variations on that format that \fBinnd\fR\|(8) is willing to accept), or the number of seconds since epoch (if \fB\-c\fR is -given). The output is either \fIctime\fR\|(3) results, the number of seconds +given). The output is either \fBctime\fR\|(3) results, the number of seconds since epoch, or a Usenet Date: header, depending on the options given. .PP If \fIdate\fR is not given, \fBconvdate\fR outputs the current date. @@ -157,7 +161,7 @@ Each argument is taken to be the number rather than a date. .IP "\fB\-d\fR" 4 .IX Item "-d" -Output a valid Usenet Date: header instead of the results of \fIctime\fR\|(3) for +Output a valid Usenet Date: header instead of the results of \fBctime\fR\|(3) for each date given on the command line. This is useful for testing the algorithm used to generate Date: headers for local posts. Normally, the date will be in \s-1UTC,\s0 but see the \fB\-l\fR option. @@ -170,13 +174,13 @@ Only makes sense in combination with \fB generated will use the local time zone instead of \s-1UTC.\s0 .IP "\fB\-n\fR" 4 .IX Item "-n" -Rather than outputting the results of \fIctime\fR\|(3) or a Date: header, output +Rather than outputting the results of \fBctime\fR\|(3) or a Date: header, output each date given as the number of seconds since epoch (a time_t). This option doesn't make sense in combination with \fB\-d\fR. .IP "\fB\-s\fR" 4 .IX Item "-s" Pass each given date to the \s-1RFC\s0\ 5322 date parser and print the results of -\&\fIctime\fR\|(3) (or a Date: header if \fB\-d\fR is given). This is the default +\&\fBctime\fR\|(3) (or a Date: header if \fB\-d\fR is given). This is the default behavior. .SH "EXAMPLES" .IX Header "EXAMPLES" @@ -199,7 +203,7 @@ page dating from 1991 and were run in th \& Sun Feb 10 10:00:00 1991 .Ve .PP -\&\fIctime\fR\|(3) results are in the local time zone. Compare to: +\&\fBctime\fR\|(3) results are in the local time zone. Compare to: .PP .Vb 2 \& % convdate \-dc 666198000 @@ -222,4 +226,4 @@ Allbery for the \fB\-d \&\f(CW$Id:\fR convdate.pod 9971 2015\-12\-10 20:30:10Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIactive.times\fR\|(5). +\&\fBactive.times\fR\|(5). diff -Nurp inn-2.6.3/doc/man/ctlinnd.8 inn-2.6.4/doc/man/ctlinnd.8 --- inn-2.6.3/doc/man/ctlinnd.8 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/ctlinnd.8 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "CTLINND 8" -.TH CTLINND 8 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH CTLINND 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -141,7 +145,7 @@ ctlinnd \- Control the main InterNetNews \&\fBctlinnd\fR [\fB\-hs\fR] [\fB\-t\fR \fItimeout\fR] [\fIcommand\fR [\fIargument\fR ...]] .SH "DESCRIPTION" .IX Header "DESCRIPTION" -\&\fBctlinnd\fR sends a message to the control channel of \fIinnd\fR\|(8), the main +\&\fBctlinnd\fR sends a message to the control channel of \fBinnd\fR\|(8), the main InterNetNews daemon. .PP In the normal mode of behavior, the message is sent to the server, which @@ -251,7 +255,7 @@ brief status about all feeds if \fIsite\ .IP "flush \fIsite\fR" 4 .IX Item "flush site" Flush the buffer for the specified site. The action taken depends on the -type of feed the site receives; see \fInewsfeeds\fR\|(5) for more information. +type of feed the site receives; see \fBnewsfeeds\fR\|(5) for more information. This is useful when the site is being fed by a file and batching is about to start, or to cleanly shut down and respawn a channel feed. If \fIsite\fR is an empty string, all sites are flushed and the \fIactive\fR file and @@ -366,7 +370,7 @@ within \fIhold-time\fR seconds. .IP "newgroup \fIgroup\fR [\fIstatus\fR [\fIcreator\fR]]" 4 .IX Item "newgroup group [status [creator]]" Create the specified newsgroup. The \fIstatus\fR parameter is the fourth field -of the \fIactive\fR file entry, as described in \fIactive\fR\|(5). If it is not an +of the \fIactive\fR file entry, as described in \fBactive\fR\|(5). If it is not an equal sign, only the first character is used. \fIcreator\fR should be the identity of the person creating the group. If the newsgroup already exists, this is equivalent to the \f(CW\*(C`changegroup\*(C'\fR command. @@ -432,7 +436,7 @@ spawned by \fBinnd\fR. .IP "reject \fIreason\fR" 4 .IX Item "reject reason" Remote connections (those that would not be handed off to \fBnnrpd\fR) are -rejected with \fIreason\fR given as the explanation, encoded in \s-1UTF\-8. \s0 Existing +rejected with \fIreason\fR given as the explanation, encoded in \s-1UTF\-8.\s0 Existing connections are not closed. .IP "reload \fIwhat\fR \fIreason\fR" 4 .IX Item "reload what reason" @@ -484,7 +488,7 @@ Identical to the \f(CW\*(C`lowmark\*(C'\ .IP "reserve \fIreason\fR" 4 .IX Item "reserve reason" Require the next \f(CW\*(C`pause\*(C'\fR or \f(CW\*(C`throttle\*(C'\fR command to use \fIreason\fR as its -reason, encoded in \s-1UTF\-8. \s0 This reservation is cleared by giving an empty +reason, encoded in \s-1UTF\-8.\s0 This reservation is cleared by giving an empty string for the reason. This is used by programs like \fBexpire\fR to coordinate pauses and throttles of the server and avoid trampling on other instances of themselves. @@ -520,7 +524,7 @@ the contrib tree of the \s-1INN\s0 distr Adjust the frequency with which \fBinnd\fR reports status information to syslog. Status reporting is turned off if \f(CW\*(C`off\*(C'\fR or \f(CW0\fR is given as the argument. Otherwise, status will be reported every \fIinterval\fR seconds. -See \fIstatus\fR in \fIinn.conf\fR\|(5) for information on how to set the default. +See \fIstatus\fR in \fBinn.conf\fR\|(5) for information on how to set the default. .IP "throttle \fIreason\fR" 4 .IX Item "throttle reason" Close all existing incoming connections and outgoing feeds and reject new @@ -538,7 +542,7 @@ flag and \fIreason\fR as the text, encod Adjust the frequency with which \fBinnd\fR reports performance information to syslog. Performance monitoring is turned off if \f(CW\*(C`off\*(C'\fR or \f(CW0\fR is given as the argument. Otherwise, statistics will be reported every \fIinterval\fR -seconds to syslog. See \fItimer\fR in \fIinn.conf\fR\|(5) for information on how to +seconds to syslog. See \fItimer\fR in \fBinn.conf\fR\|(5) for information on how to set the default. .IP "trace \fIitem\fR \fIflag\fR" 4 .IX Item "trace item flag" @@ -573,7 +577,7 @@ command is an exploder (such as \fBbuffc an exploder, the command can be forwarded. In this case, the server will send a command line to the exploder that consists of the \fBctlinnd\fR command name. If the site funnels into an exploder that has an asterisk -(\f(CW\*(C`*\*(C'\fR) in its \f(CW\*(C`W\*(C'\fR flag (see \fInewsfeeds\fR\|(5) for more information on feed +(\f(CW\*(C`*\*(C'\fR) in its \f(CW\*(C`W\*(C'\fR flag (see \fBnewsfeeds\fR\|(5) for more information on feed specifications), the site name will be appended to the command; otherwise, no argument is appended. .SH "BUGS" @@ -590,5 +594,5 @@ Written by Rich \f(CW$alz\fR 0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "CVTBATCH 8" -.TH CVTBATCH 8 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH CVTBATCH 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -159,7 +163,7 @@ If the input file consists of a series o .IX Item "-w items" The \fB\-w\fR flag specifies how each output line should be written. The items for this flag should be chosen from the \f(CW\*(C`W\*(C'\fR flag items -as specified in \fInewsfeeds\fR\|(5). They may be chosen from the following +as specified in \fBnewsfeeds\fR\|(5). They may be chosen from the following set: .Sp .Vb 5 @@ -180,4 +184,4 @@ to \s-1POD\s0 by Julien Elie. \&\f(CW$Id:\fR cvtbatch.pod 8704 2009\-11\-03 18:51:44Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIgrephistory\fR\|(1), \fInewsfeeds\fR\|(5). +\&\fBgrephistory\fR\|(1), \fBnewsfeeds\fR\|(5). diff -Nurp inn-2.6.3/doc/man/cycbuff.conf.5 inn-2.6.4/doc/man/cycbuff.conf.5 --- inn-2.6.3/doc/man/cycbuff.conf.5 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/cycbuff.conf.5 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "CYCBUFF.CONF 5" -.TH CYCBUFF.CONF 5 "2018-01-28" "INN 2.6.3" "InterNetNews Documentation" +.TH CYCBUFF.CONF 5 "2018-01-28" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -139,9 +143,9 @@ cycbuff.conf \- Configuration file for I .SH "DESCRIPTION" .IX Header "DESCRIPTION" This file defines the cyclical buffers that make up the storage pools for -\&\s-1CNFS \s0(Cyclic News File System). Some options controlling the behavior of +\&\s-1CNFS\s0 (Cyclic News File System). Some options controlling the behavior of the \s-1CNFS\s0 storage system can also be set here. \fIcycbuff.conf\fR is required -if the \s-1CNFS \s0(Cyclic News File System) storage method is used. \s-1INN\s0 will +if the \s-1CNFS\s0 (Cyclic News File System) storage method is used. \s-1INN\s0 will look for it in \fIpathetc\fR (as set in \fIinn.conf\fR). .PP \&\s-1CNFS\s0 stores articles in logical objects called \fImetacycbuffs\fR. @@ -157,7 +161,7 @@ cycbuff larger than 2\ \s-1GB\s0 on 32\- \&\fB\-\-enable\-largefiles\fR option. .PP For information about how to configure \s-1INN\s0 to use \s-1CNFS,\s0 see -\&\fIstorage.conf\fR\|(5). +\&\fBstorage.conf\fR\|(5). .PP Blank lines and lines beginning with a hash sign (\f(CW\*(C`#\*(C'\fR) are ignored. All other lines must be of one of the following forms: @@ -203,7 +207,7 @@ If you're trying to stay under 2\ \s-1GB .IP "\fImetacycbuff\fR::[,,...][:]" 4 .IX Item "metacycbuff::[,,...][:]" Specifies a collection of \s-1CNFS\s0 buffers that make up a single logical -storage location from the perspective of \s-1INN. \s0 Metacycbuffs are referred +storage location from the perspective of \s-1INN.\s0 Metacycbuffs are referred to in \fIstorage.conf\fR as storage locations for articles, so in order to actually put articles in a cycbuff, it has to be listed as part of some metacycbuff which is then referenced in \fIstorage.conf\fR. @@ -258,7 +262,7 @@ When creating a new cycbuff, there are t the buffers in which the articles will be stored. .IP "1." 4 Create a large file on top of a regular file system. The easiest way to -do this is probably with \fIdd\fR\|(1), using a command like: +do this is probably with \fBdd\fR\|(1), using a command like: .Sp .Vb 1 \& dd if=/dev/zero of=/path/to/cycbuff bs=1024 count= @@ -274,7 +278,7 @@ at the end of the file, and \s-1INN\s0 i when accessing the cycbuff. .IP "2." 4 Use block devices directly. If your operating system allows you to call -\&\fImmap()\fR on block devices (Solaris and recent versions of Linux do, FreeBSD +\&\fBmmap()\fR on block devices (Solaris and recent versions of Linux do, FreeBSD at last report does not), this is the recommended method since you can avoid all of the native file system overhead. .Sp @@ -296,7 +300,7 @@ device files for each block device you'r It's not recommended to use the block device files in \fI/dev\fR, since the news system doesn't have permission to write to them and changing the permissions of the system device files may affect something else. -Instead, use \fImknod\fR\|(1) to create a new set of block devices (in somewhere +Instead, use \fBmknod\fR\|(1) to create a new set of block devices (in somewhere like \fIpathspool\fR/cycbuffs that's only writable by the news user). To do this, run \f(CW\*(C`ls \-Ll\*(C'\fR on the devices in \fI/dev\fR that correspond to the block devices that you want to use. The major and minor device numbers are in @@ -347,4 +351,4 @@ Rewritten into \s-1POD\s0 by Russ Allber \&\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). +\&\fBctlinnd\fR\|(8), \fBinnd\fR\|(8), \fBnnrpd\fR\|(8), \fBsm\fR\|(1), \fBstorage.conf\fR\|(5). diff -Nurp inn-2.6.3/doc/man/distrib.pats.5 inn-2.6.4/doc/man/distrib.pats.5 --- inn-2.6.3/doc/man/distrib.pats.5 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/distrib.pats.5 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "DISTRIB.PATS 5" -.TH DISTRIB.PATS 5 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH DISTRIB.PATS 5 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -153,7 +157,7 @@ should be an arbitrary integer greater t the file is only important if groups have equal weight (in which case, the first matching line will be used). .PP -The second field is either the name of a newsgroup or a \fIuwildmat\fR\|(3)\-style +The second field is either the name of a newsgroup or a \fBuwildmat\fR\|(3)\-style pattern to specify a set of newsgroups. .PP The third field is the value that should be used for the Distribution: @@ -172,7 +176,7 @@ header will be added. In case a distrib sure it is not rejected by the \fInewsfeeds\fR \f(CW\*(C`ME\*(C'\fR entry. .PP A list of recommended distributions can be specified and described -in \fIdistributions\fR\|(5). +in \fBdistributions\fR\|(5). .SH "HISTORY" .IX Header "HISTORY" Written by Rich \f(CW$alz\fR for InterNetNews. Converted to @@ -181,4 +185,4 @@ Written by Rich \f(CW$alz\fR 0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "DISTRIBUTIONS 5" -.TH DISTRIBUTIONS 5 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH DISTRIBUTIONS 5 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -143,7 +147,7 @@ distributions and their descriptions. I for posters who wish to add a Distribution: header to their articles so as to restrict their propagation, although it does not guarantee that such articles will not leak elsewhere because of a misconfiguration -of a news server to which they are fed. See \fInewsfeeds\fR\|(5) for more +of a news server to which they are fed. See \fBnewsfeeds\fR\|(5) for more information about how a news server handles the Distribution: header. .PP Each line of this file consists of a distribution area followed by @@ -170,7 +174,7 @@ will also send the client an appropriate the distributions list is not maintained on the server. .PP The Distribution: header can also be automatically set by \fBnnrpd\fR -if \fIdistrib.pats\fR\|(5) is correctly configured. +if \fBdistrib.pats\fR\|(5) is correctly configured. .SH "HISTORY" .IX Header "HISTORY" Written by Julien Elie for InterNetNews. @@ -178,4 +182,4 @@ Written by Julien Elie for InterNetNews. \&\f(CW$Id:\fR distributions.pod 9137 2010\-10\-29 18:09:12Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIdistrib.pats\fR\|(5), \fInewsfeeds\fR\|(5), \fInnrpd\fR\|(8). +\&\fBdistrib.pats\fR\|(5), \fBnewsfeeds\fR\|(5), \fBnnrpd\fR\|(8). diff -Nurp inn-2.6.3/doc/man/docheckgroups.8 inn-2.6.4/doc/man/docheckgroups.8 --- inn-2.6.3/doc/man/docheckgroups.8 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/docheckgroups.8 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "DOCHECKGROUPS 8" -.TH DOCHECKGROUPS 8 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH DOCHECKGROUPS 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -144,7 +148,7 @@ docheckgroups \- Process checkgroups and \&\fBdocheckgroups\fR is usually run by \fBcontrolchan\fR in order to process checkgroups control messages. It reads a list of newsgroups along with their descriptions on its standard input. That list should -be formatted like the \fInewsgroups\fR\|(5) file: each line contains the +be formatted like the \fBnewsgroups\fR\|(5) file: each line contains the name of a newsgroup followed by one or more tabulations and its description. .PP @@ -153,7 +157,7 @@ which match \fIinclude-pattern\fR (an \f \&\f(CW\*(C`^comp\e..*$\*(C'\fR for newsgroups starting with \f(CW\*(C`comp.\*(C'\fR) and which do not match \fIexclude-pattern\fR (also an \fBegrep\fR expression) except for newsgroups mentioned in the \fIpathetc\fR/localgroups file. -This file is also formatted like the \fInewsgroups\fR\|(5) file and +This file is also formatted like the \fBnewsgroups\fR\|(5) file and should contain local newsgroups which would otherwise be mentioned for removal. There is no need to put local newsgroups of hierarchies for which no checkgroups control messages are sent, unless @@ -206,7 +210,7 @@ fine, use \fBmod-active\fR and the \fB\- .IX Item "-u" If this flag is given, \fBdocheckgroups\fR will update the \fInewsgroups\fR file: it removes obsolete descriptions and adds new ones. It also sorts -this file alphabetically and improves its general format (see \fInewsgroups\fR\|(5) +this file alphabetically and improves its general format (see \fBnewsgroups\fR\|(5) for an explanation of the preferred number of tabulations). .SH "EXAMPLES" .IX Header "EXAMPLES" @@ -313,4 +317,4 @@ Documentation written by Julien Elie for \&\f(CW$Id:\fR docheckgroups.pod 8357 2009\-02\-27 17:56:00Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIactive\fR\|(5), \fIcontrolchan\fR\|(8), \fIctlinnd\fR\|(8), \fImod\-active\fR\|(8), \fInewsgroups\fR\|(5). +\&\fBactive\fR\|(5), \fBcontrolchan\fR\|(8), \fBctlinnd\fR\|(8), \fBmod\-active\fR\|(8), \fBnewsgroups\fR\|(5). diff -Nurp inn-2.6.3/doc/man/domain.8 inn-2.6.4/doc/man/domain.8 --- inn-2.6.3/doc/man/domain.8 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/domain.8 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "DOMAIN 8" -.TH DOMAIN 8 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH DOMAIN 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -151,7 +155,7 @@ is an error if there is no initial part is \fIexactly\fR the specified \fBdomainname\fR). .SH "EXAMPLE" .IX Header "EXAMPLE" -The following \fIreaders.conf\fR\|(5) fragment grants access to hosts with +The following \fBreaders.conf\fR\|(5) fragment grants access to hosts with internal domain names: .PP .Vb 4 @@ -177,7 +181,7 @@ the remote host \*(L"foo.example.com.org part). .PP Does this resolver actually provide any useful functionality not -available by using wildcards in the \fIreaders.conf\fR\|(5) \fIhosts\fR parameter? +available by using wildcards in the \fBreaders.conf\fR\|(5) \fIhosts\fR parameter? If so, the example above should reflect this functionality. .SH "HISTORY" .IX Header "HISTORY" @@ -186,4 +190,4 @@ This documentation was written by Jeffre \&\f(CW$Id:\fR domain.pod 8200 2008\-11\-30 13:31:30Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fInnrpd\fR\|(8), \fIreaders.conf\fR\|(5) +\&\fBnnrpd\fR\|(8), \fBreaders.conf\fR\|(5) diff -Nurp inn-2.6.3/doc/man/expire.8 inn-2.6.4/doc/man/expire.8 --- inn-2.6.3/doc/man/expire.8 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/expire.8 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "EXPIRE 8" -.TH EXPIRE 8 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH EXPIRE 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -143,7 +147,7 @@ expire \- Usenet article and history exp [\fB\-w\fR \fInumber\fR] [\fB\-z\fR \fIfile\fR] [\fIexpire.ctl\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" -\&\fBexpire\fR scans the \fIhistory\fR\|(5)\-format text file \fIpathdb\fR/history +\&\fBexpire\fR scans the \fBhistory\fR\|(5)\-format text file \fIpathdb\fR/history and uses the information recorded in it to purge itself of old news articles. Articles stored using a storage method that has self-expire functionality are by default not affected by \fBexpire\fR's primary behavior (but see the @@ -182,7 +186,7 @@ to the specified \fIfile\fR. .IP "\fB\-h\fR \fIfile\fR" 4 .IX Item "-h file" To specify an alternate input text history file, use the \fB\-h\fR flag. -\&\fBexpire\fR uses the old \fIdbz\fR\|(3) database to determine the size of the +\&\fBexpire\fR uses the old \fBdbz\fR\|(3) database to determine the size of the new one. (If the \fB\-d\fR flag is not used, the output filename will be the same as the input filename with an extension of \f(CW\*(C`.n\*(C'\fR.) .Sp @@ -199,7 +203,7 @@ which have self-expire functionality. I .IX Item "-n" If \fBinnd\fR is not running, use the \fB\-n\fR flag and \fBexpire\fR will not send the \f(CW\*(C`pause\*(C'\fR or \f(CW\*(C`go\*(C'\fR commands. (For more details on the commands, -see \fIctlinnd\fR\|(8)). Note that \fBexpire\fR only needs exclusive access for +see \fBctlinnd\fR\|(8)). Note that \fBexpire\fR only needs exclusive access for a very short time \-\-\ long enough to see if any new articles arrived since it first hit the end of the file, and to rename the new files to the working files. @@ -255,7 +259,7 @@ space used. .IX Item "-z file" If the \fB\-z\fR flag is used, then articles are not removed, but their names are appended to the specified \fIfile\fR. See the description of \fBdelayrm\fR -in \fInews.daily\fR\|(8). If a filename is specified, it is taken as the control +in \fBnews.daily\fR\|(8). If a filename is specified, it is taken as the control file and parsed according to the rules in \fIexpire.ctl\fR. A single dash (\f(CW\*(C`\-\*(C'\fR) may be used to read the file from standard input. If no file is specified, the file \fIpathetc\fR/expire.ctl is read. @@ -267,5 +271,5 @@ Written by Rich \f(CW$alz\fR 0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "EXPIRE.CTL 5" -.TH EXPIRE.CTL 5 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH EXPIRE.CTL 5 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -173,8 +177,8 @@ offers old articles that were previously expired. Without a history record for such articles, the server would accept the article again and readers would see duplicate articles. Articles older than a certain number of days won't be accepted by the -server at all (see \fIartcutoff\fR in \fIinn.conf\fR\|(5) and the \fB\-c\fR flag in -\&\fIinnd\fR\|(8)), and this setting should probably match that time period +server at all (see \fIartcutoff\fR in \fBinn.conf\fR\|(5) and the \fB\-c\fR flag in +\&\fBinnd\fR\|(8)), and this setting should probably match that time period to ensure that the server never accepts duplicates. As the default value for \fIartcutoff\fR is \f(CW10\fR days, it means that \f(CW\*(C`/remember/\*(C'\fR should be set to \f(CW11\fR days in order to take into account articles @@ -198,7 +202,7 @@ All lines must be in the correct format same file. .PP Normally, a rule matches a newsgroup through the combination of the - and fields. is a \fIuwildmat\fR\|(3)\-style pattern, + and fields. is a \fBuwildmat\fR\|(3)\-style pattern, specifying the newsgroups to which the line is applied. Note that the last matching entry will be used, so general patterns (such as defaults for all groups where is \f(CW\*(C`*\*(C'\fR) should appear at the beginning of @@ -236,7 +240,7 @@ they were posted. .PP The remaining three fields are the same in either format, and are used to determine how long an article should be kept from its original arrival -time (unless the \fB\-p\fR flag is passed to \fIexpire\fR\|(8) or \fIexpireover\fR\|(8), in +time (unless the \fB\-p\fR flag is passed to \fBexpire\fR\|(8) or \fBexpireover\fR\|(8), in which case its original posting time is used). Each field should be either a decimal number of days (fractions like \f(CW8.5\fR are allowed, but remember that articles are only removed when \fBexpire\fR or \fBexpireover\fR is run, @@ -316,5 +320,5 @@ Written by Rich \f(CW$alz\fR 0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "EXPIREOVER 8" -.TH EXPIREOVER 8 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH EXPIREOVER 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -219,7 +223,7 @@ process. \fB\-q\fR suppresses this repo spool if querying the storage method for that article to see if it still exists is considered \*(L"inexpensive\*(R". To always check the existence of all articles regardless of how resource-intensive this may be, use the \fB\-s\fR -flag. See \fIstorage.conf\fR\|(5) for more information about this metric. +flag. See \fBstorage.conf\fR\|(5) for more information about this metric. .IP "\fB\-w\fR \fIoffset\fR" 4 .IX Item "-w offset" \&\*(L"Warps\*(R" time so that \fBexpireover\fR thinks that it's running at some time @@ -232,19 +236,19 @@ flag is ignored if \fIgroupbaseexpiry\fR .IX Item "-z rmfile" Don't remove articles immediately but instead write the path to the article or the token of the article to \fIrmfile\fR, which is suitable input -for \fIfastrm\fR\|(1). This can substantially speed up deletion of expired +for \fBfastrm\fR\|(1). This can substantially speed up deletion of expired articles for those storage methods where each article is a single file (such as tradspool and timehash). See the description of the \fIdelayrm\fR -keyword in \fInews.daily\fR\|(8) for more details. This flag is ignored if +keyword in \fBnews.daily\fR\|(8) for more details. This flag is ignored if \&\fIgroupbaseexpiry\fR is false. .IP "\fB\-Z\fR \fIlowmarkfile\fR" 4 .IX Item "-Z lowmarkfile" Write the lowest article numbers for each newsgroup as it's expired to the specified file. This file is then suitable for \f(CW\*(C`ctlinnd lowmark\*(C'\fR. See -\&\fIctlinnd\fR\|(8) for more information. +\&\fBctlinnd\fR\|(8) for more information. .SH "EXAMPLES" .IX Header "EXAMPLES" -Normally \fBexpireover\fR is invoked from \fInews.daily\fR\|(8), which handles such +Normally \fBexpireover\fR is invoked from \fBnews.daily\fR\|(8), which handles such things as processing the \fIrmfile\fR and \fIlowmarkfile\fR if necessary. Sometimes it's convenient to manually expire a particular newsgroup, however. This can be done with a command like: @@ -267,5 +271,5 @@ for InterNetNews. \&\f(CW$Id:\fR expireover.pod 8571 2009\-08\-17 19:10:07Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIactive\fR\|(5), \fIctlinnd\fR\|(8), \fIexpire\fR\|(8), \fIexpire.ctl\fR\|(5), \fIinn.conf\fR\|(5), -\&\fInews.daily\fR\|(8). +\&\fBactive\fR\|(5), \fBctlinnd\fR\|(8), \fBexpire\fR\|(8), \fBexpire.ctl\fR\|(5), \fBinn.conf\fR\|(5), +\&\fBnews.daily\fR\|(8). diff -Nurp inn-2.6.3/doc/man/expirerm.8 inn-2.6.4/doc/man/expirerm.8 --- inn-2.6.3/doc/man/expirerm.8 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/expirerm.8 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "EXPIRERM 8" -.TH EXPIRERM 8 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH EXPIRERM 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -159,4 +163,4 @@ Written by Landon Curt Noll 0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "FASTRM 1" -.TH FASTRM 1 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH FASTRM 1 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -144,7 +148,7 @@ fastrm \- Quickly remove a list of files .IX Header "DESCRIPTION" \&\fBfastrm\fR reads a list of either file names or storage \s-1API\s0 tokens, one per line, from its standard input and removes them. Storage \s-1API\s0 tokens are -removed via the \fISMcancel()\fR interface. \fBfastrm\fR does not delete files +removed via the \fBSMcancel()\fR interface. \fBfastrm\fR does not delete files safely or with an eye to security, but rather cuts every corner it can to delete files as fast as it can. It should therefore never be run on publically writable directories, or in any other environment where a @@ -158,20 +162,20 @@ directories \f(CW\*(C`.\*(C'\fR or \f(CW .PP \&\fBfastrm\fR is designed to be faster than the typical \f(CW\*(C`| xargs rm\*(C'\fR pipeline when given a sorted list of file names as input. For example, \fBfastrm\fR -will usually \fIchdir\fR\|(2) into a directory before removing files from it, -meaning that if its input is sorted, most names passed to \fIunlink\fR\|(2) will +will usually \fBchdir\fR\|(2) into a directory before removing files from it, +meaning that if its input is sorted, most names passed to \fBunlink\fR\|(2) will be simple names. This can substantially reduce the operating system overhead from directory lookups. .PP \&\fBfastrm\fR assumes that its input is valid and that it is safe to call -\&\fIunlink\fR\|(2) on every file name it is given. As a safety measure, however, -\&\fBfastrm\fR when running as root will check with \fIstat\fR\|(2) that a file name +\&\fBunlink\fR\|(2) on every file name it is given. As a safety measure, however, +\&\fBfastrm\fR when running as root will check with \fBstat\fR\|(2) that a file name doesn't specify a directory before removing it. (In some operating systems, root is allowed to unlink directories, even directories which aren't empty, which can cause file system corruption.) .PP The input to \fBfastrm\fR should always be sorted \-\-\ or even better be in the -order file names are output by \fIfind\fR\|(1)\ \*(-- if speed is an issue and the +order file names are output by \fBfind\fR\|(1)\ \*(-- if speed is an issue and the input isn't solely storage \s-1API\s0 tokens. (It deals fine with unsorted input, but is unlikely to be any faster in that case than a simple \f(CW\*(C`| xargs rm\*(C'\fR command.) Sorting may even slightly speed up the removal of storage @@ -190,27 +194,27 @@ internally. .IX Header "OPTIONS" .IP "\fB\-c\fR[\fII\fR]" 4 .IX Item "-c[I]" -Controls when \fBfastrm\fR calls \fIchdir\fR\|(2). If the number of files to be +Controls when \fBfastrm\fR calls \fBchdir\fR\|(2). If the number of files to be unlinked from a given directory is at least \fII\fR, then \fBfastrm\fR will change to that directory before unlinking those files. Otherwise, it will use either the absolute path names or a path name relative to the current directory (whichever is likely more efficient). The \fII\fR parameter is optional; if just \fB\-c\fR is given, \fB\-c1\fR is assumed, which will cause -\&\fBfastrm\fR to always chdir before calling \fIunlink\fR\|(2). The default is -\&\fB\-c3\fR. Use \fB\-c0\fR to prevent \fBfastrm\fR from ever using \fIchdir\fR\|(2). +\&\fBfastrm\fR to always chdir before calling \fBunlink\fR\|(2). The default is +\&\fB\-c3\fR. Use \fB\-c0\fR to prevent \fBfastrm\fR from ever using \fBchdir\fR\|(2). .IP "\fB\-d\fR" 4 .IX Item "-d" Don't remove any files. Instead, print a list of the files that would be removed to standard output. Each line contains either the current directory of \fBfastrm\fR at the time it would do the unlink and the relative -path name it would pass to \fIunlink\fR\|(2) as two fields separated by whitespace +path name it would pass to \fBunlink\fR\|(2) as two fields separated by whitespace and a \f(CW\*(C`/\*(C'\fR, the absolute path name (as a single field) that would be -passed to \fIunlink\fR\|(2), or the string \f(CW\*(C`Token\*(C'\fR and the storage \s-1API\s0 token that +passed to \fBunlink\fR\|(2), or the string \f(CW\*(C`Token\*(C'\fR and the storage \s-1API\s0 token that would be removed. .IP "\fB\-e\fR" 4 .IX Item "-e" Treat an empty input file as an error. This is most useful when \fBfastrm\fR -is last in a pipeline after a preceding \fIsort\fR\|(1) command, ensuring that +is last in a pipeline after a preceding \fBsort\fR\|(1) command, ensuring that \&\fBfastrm\fR will fail if the sort fails. .IP "\fB\-s\fR[\fIM\fR]" 4 .IX Item "-s[M]" @@ -227,7 +231,7 @@ that it doesn't see in the directory, po up if most of the files to be removed have already been deleted. However, using this option requires \fBfastrm\fR to do more internal work and it also assumes that the order of directory listings is stable in the presence of -calls to \fIunlink\fR\|(2) between calls to \fIreaddir\fR\|(3). This may be a dangerous +calls to \fBunlink\fR\|(2) between calls to \fBreaddir\fR\|(3). This may be a dangerous assumption with some sophisticated file systems (and in general this option is only useful with file systems that use unindexed linear searches to find files in directories or when most of the files to be removed have @@ -238,8 +242,8 @@ This optimization is off by default. .IX Item "-u[N]" Specifying this option promises that there are no symbolic links in the directory tree from which files are being removed. This allows \fBfastrm\fR -to make an additional optimization to its calls to \fIchdir\fR\|(2), constructing -a relative path using \f(CW\*(C`../..\*(C'\fR and the like to pass to \fIchdir\fR\|(2) rather +to make an additional optimization to its calls to \fBchdir\fR\|(2), constructing +a relative path using \f(CW\*(C`../..\*(C'\fR and the like to pass to \fBchdir\fR\|(2) rather than always using absolute paths. Since this reduces the number of directory lookups needed with deeply nested directory structures (such as that typically created by traditional news spool storage), it can be a @@ -262,7 +266,7 @@ exit status of 1 if something went wrong that does not exist is not considered a problem. .SH "EXAMPLES" .IX Header "EXAMPLES" -\&\fBfastrm\fR is typically invoked by \s-1INN\s0 via \fIexpirerm\fR\|(8) using a command +\&\fBfastrm\fR is typically invoked by \s-1INN\s0 via \fBexpirerm\fR\|(8) using a command like: .PP .Vb 1 @@ -283,14 +287,14 @@ nested directory structure, you may want \& fastrm \-e \-u3 < expire.list .Ve .PP -to strongly prefer relative paths but not to use \fIreaddir\fR\|(2) to order the -calls to \fIunlink\fR\|(2). +to strongly prefer relative paths but not to use \fBreaddir\fR\|(2) to order the +calls to \fBunlink\fR\|(2). .PP -You may want to edit \fIexpirerm\fR\|(8) to change the flags passed to \fBfastrm\fR. +You may want to edit \fBexpirerm\fR\|(8) to change the flags passed to \fBfastrm\fR. .SH "WARNINGS" .IX Header "WARNINGS" \&\fBfastrm\fR cuts corners and does not worry about security, so it does not -use \fIchdir\fR\|(2) safely and could be tricked into removing files other than +use \fBchdir\fR\|(2) safely and could be tricked into removing files other than those that were intended if run on a specially constructed file tree or a file tree that is being modified while it is running. It should therefore never be used with world-writable directories or any other directory that @@ -309,4 +313,4 @@ was rewritten in \s-1POD\s0 by Russ Allb \&\f(CW$Id:\fR fastrm.pod 9767 2014\-12\-07 21:13:43Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIexpirerm\fR\|(8). +\&\fBexpirerm\fR\|(8). diff -Nurp inn-2.6.3/doc/man/getlist.1 inn-2.6.4/doc/man/getlist.1 --- inn-2.6.3/doc/man/getlist.1 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/getlist.1 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "GETLIST 1" -.TH GETLIST 1 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH GETLIST 1 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -152,17 +156,17 @@ of the group. \f(CW\*(C`distrib.pats\*( the newsgroups they apply to. \f(CW\*(C`newsgroups\*(C'\fR is a list of newsgroups along with their short descriptions. .PP -For more information on the formats of these files, see \fIactive\fR\|(5), -\&\fIactive.times\fR\|(5), \fIdistrib.pats\fR\|(5) and \fInewsgroups\fR\|(5). +For more information on the formats of these files, see \fBactive\fR\|(5), +\&\fBactive.times\fR\|(5), \fBdistrib.pats\fR\|(5) and \fBnewsgroups\fR\|(5). .PP The listing files other than the \fIactive\fR file are common extensions to the \&\s-1NNTP\s0 protocol and may not be available on all servers. For instance, \f(CW\*(C`counts\*(C'\fR \&\f(CW\*(C`distributions\*(C'\fR, \f(CW\*(C`headers\*(C'\fR, \f(CW\*(C`moderators\*(C'\fR, \f(CW\*(C`motd\*(C'\fR, \f(CW\*(C`overview.fmt\*(C'\fR and -\&\f(CW\*(C`subscriptions\*(C'\fR, amongst other, may be available. Moreover, a \fIuwildmat\fR\|(3) +\&\f(CW\*(C`subscriptions\*(C'\fR, amongst other, may be available. Moreover, a \fBuwildmat\fR\|(3) pattern \fIpattern\fR may also be usable for some of these listing files. .PP -For more information on the formats of these files, see \fIdistributions\fR\|(5), -\&\fImoderators\fR\|(5), \fImotd.news\fR\|(5) and \fIsubscriptions\fR\|(5). The overview fields +For more information on the formats of these files, see \fBdistributions\fR\|(5), +\&\fBmoderators\fR\|(5), \fBmotd.news\fR\|(5) and \fBsubscriptions\fR\|(5). The overview fields obtained with \f(CW\*(C`overview.fmt\*(C'\fR are the ones for which the overview database is consistent (see \fIextraoverviewadvertised\fR in \fIinn.conf\fR for more information). The list obtained with \f(CW\*(C`headers\*(C'\fR contains the fields @@ -173,7 +177,7 @@ is mentioned just before the flag of thi .PP The \fIpattern\fR parameter may be used with a \fIlist\fR value of \f(CW\*(C`active\*(C'\fR, \&\f(CW\*(C`active.times\*(C'\fR or \f(CW\*(C`newsgroups\*(C'\fR to limit the output. If given, only -entries corresponding to newsgroups that match the \fIuwildmat\fR\|(3) pattern +entries corresponding to newsgroups that match the \fBuwildmat\fR\|(3) pattern \&\fIpattern\fR will be printed. .PP If the \fIlist\fR parameter is \f(CW\*(C`active\*(C'\fR, a third parameter, \fItypes\fR, may @@ -187,7 +191,7 @@ groups but not aliased groups or groups .IP "\fB\-A\fR" 4 .IX Item "-A" Try to authenticate using the username and password information in -\&\fIpasswd.nntp\fR\|(5) before issuing the \s-1LIST\s0 command. +\&\fBpasswd.nntp\fR\|(5) before issuing the \s-1LIST\s0 command. .IP "\fB\-h\fR \fIhost\fR" 4 .IX Item "-h host" Connect to the server \fIhost\fR rather than to the value of \fIserver\fR in @@ -234,6 +238,6 @@ in \s-1POD\s0 by Russ Allbery 0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "GREPHISTORY 1" -.TH GREPHISTORY 1 "2016-10-07" "INN 2.6.3" "InterNetNews Documentation" +.TH GREPHISTORY 1 "2016-10-07" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -242,4 +246,4 @@ Written by Rich \f(CW$alz\fR 0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "IDENT 8" -.TH IDENT 8 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH IDENT 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -151,7 +155,7 @@ incoming \s-1NNTP\s0 connection. .IX Item "-p port" If this option is given, attempt to contact identd on the specified remote port (which can be a numeric or symbolic specification). -Non-numeric values will be looked up using \fIgetservbyname\fR\|(3). The +Non-numeric values will be looked up using \fBgetservbyname\fR\|(3). The default value is the result of \f(CW\*(C`getservbyname("ident")\*(C'\fR if available, or port 113 otherwise. .IP "\fB\-t\fR" 4 @@ -165,7 +169,7 @@ domain part is an unqualified local mach domain name). .SH "EXAMPLE" .IX Header "EXAMPLE" -The following \fIreaders.conf\fR\|(5) fragment tells nnrpd to trust ident +The following \fBreaders.conf\fR\|(5) fragment tells nnrpd to trust ident information for hosts on a local network, but to replace the domain returned from the ident query: .PP @@ -191,4 +195,4 @@ This documentation was written by Jeffre \&\f(CW$Id:\fR ident.pod 8200 2008\-11\-30 13:31:30Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fInnrpd\fR\|(8), \fIreaders.conf\fR\|(5) +\&\fBnnrpd\fR\|(8), \fBreaders.conf\fR\|(5) diff -Nurp inn-2.6.3/doc/man/incoming.conf.5 inn-2.6.4/doc/man/incoming.conf.5 --- inn-2.6.3/doc/man/incoming.conf.5 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/incoming.conf.5 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "INCOMING.CONF 5" -.TH INCOMING.CONF 5 "2018-01-28" "INN 2.6.3" "InterNetNews Documentation" +.TH INCOMING.CONF 5 "2018-01-28" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -290,11 +294,11 @@ later. .IP "\fIpassword\fR" 4 .IX Item "password" This key requires a string value. It is used if you wish to require -a peer to supply a password via \s-1AUTHINFO USER/PASS. \s0 The default is +a peer to supply a password via \s-1AUTHINFO USER/PASS.\s0 The default is an empty string, that it to say no password. .IP "\fIpatterns\fR" 4 .IX Item "patterns" -This key requires a string value. It is a list of \fInewsfeeds\fR\|(5)\-style +This key requires a string value. It is a list of \fBnewsfeeds\fR\|(5)\-style list of newsgroups which are to be accepted from this host. The default is the string \f(CW\*(C`*\*(C'\fR, that is to say all groups are accepted. .IP "\fIskip\fR" 4 @@ -313,4 +317,4 @@ Written by Fabien Tassin 0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "INEWS 1" -.TH INEWS 1 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH INEWS 1 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -259,4 +263,4 @@ Written by Rich \f(CW$alz\fR 0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "INN-RADIUS.CONF 5" -.TH INN-RADIUS.CONF 5 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH INN-RADIUS.CONF 5 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -139,7 +143,7 @@ inn\-radius.conf \- Configuration for nn .SH "DESCRIPTION" .IX Header "DESCRIPTION" This describes the format and attributes of the configuration file for -the \fBnnrpd\fR \s-1RADIUS\s0 authenticator. See \fIradius\fR\|(8) for more information +the \fBnnrpd\fR \s-1RADIUS\s0 authenticator. See \fBradius\fR\|(8) for more information about the authenticator program. The default location for this file is \fIinn\-radius.conf\fR in \fIpathetc\fR. .PP @@ -169,7 +173,7 @@ The port to query on the \s-1RADIUS\s0 s .IX Item "lochost" The hostname or \s-1IP\s0 address making the request. The \s-1RADIUS\s0 server expects an \s-1IP\s0 address; a hostname will be translated into an \s-1IP\s0 address with -\&\fIgethostbyname()\fR. If not given, this information isn't included in the +\&\fBgethostbyname()\fR. If not given, this information isn't included in the request (not all \s-1RADIUS\s0 setups require this information). .IP "\fIlocport\fR" 4 .IX Item "locport" @@ -228,4 +232,4 @@ the comments in the sample \fIinn\-radiu \&\f(CW$Id:\fR inn\-radius.conf.pod 9940 2015\-09\-04 12:58:15Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIradius\fR\|(8). +\&\fBradius\fR\|(8). diff -Nurp inn-2.6.3/doc/man/inn.conf.5 inn-2.6.4/doc/man/inn.conf.5 --- inn-2.6.3/doc/man/inn.conf.5 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/inn.conf.5 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "INN.CONF 5" -.TH INN.CONF 5 "2018-12-02" "INN 2.6.3" "InterNetNews Documentation" +.TH INN.CONF 5 "2021-01-21" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -147,7 +151,7 @@ specifies an alternate path to \fIinn.co This file is intended to be fairly static. Any changes made to it will generally not affect any running programs until they restart. Unlike nearly every other configuration file, \fIinn.conf\fR cannot be reloaded -dynamically using \fIctlinnd\fR\|(8); \fIinnd\fR\|(8) must be stopped and restarted for +dynamically using \fBctlinnd\fR\|(8); \fBinnd\fR\|(8) must be stopped and restarted for relevant changes to \fIinn.conf\fR to take effect (\f(CW\*(C`ctlinnd xexec innd\*(C'\fR is the fastest way to do this.) .PP @@ -192,16 +196,16 @@ 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 \fIinn_getfqdn()\fR routine in \fIlibinn\fR\|(3) cannot get the fully qualified -domain name by using either the \fIgethostname\fR\|(3) or \fIgetaddrinfo\fR\|(3) calls. +if the \fBinn_getfqdn()\fR routine in \fBlibinn\fR\|(3) cannot get the fully qualified +domain name by using either the \fBgethostname\fR\|(3) or \fBgetaddrinfo\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 is rarely used, do not use it to affect the righthand side of autogenerated Message-IDs; see instead \fIvirtualhost\fR and \fIdomain\fR in -\&\fIreaders.conf\fR\|(5). The default value is unset. +\&\fBreaders.conf\fR\|(5). The default value is unset. .IP "\fIinnflags\fR" 4 .IX Item "innflags" -The flags to pass to \fBinnd\fR on startup. See \fIinnd\fR\|(8) for details on the +The flags to pass to \fBinnd\fR on startup. See \fBinnd\fR\|(8) for details on the possible flags. The default value is unset. .Sp Note that these flags are only used when \fBinnd\fR is started from \fBrc.news\fR @@ -214,7 +218,7 @@ need to be changed. .IP "\fImta\fR" 4 .IX Item "mta" The command to use when mailing postings to moderators and for the use of -\&\fIinnmail\fR\|(1). The message, with headers and an added To: header, will be +\&\fBinnmail\fR\|(1). The message, with headers and an added To: header, will be piped into this program. The string \f(CW%s\fR, if present, will be replaced by the e\-mail address of the moderator. It's strongly recommended for this command to include \f(CW%s\fR on the command line rather than use the @@ -248,9 +252,9 @@ to be changed. .IP "\fIserver\fR" 4 .IX Item "server" The name of the default \s-1NNTP\s0 server. If \fInnrpdposthost\fR is not set and -\&\s-1UNIX\s0 domain sockets are not supported, \fInnrpd\fR\|(8) tries to hand off +\&\s-1UNIX\s0 domain sockets are not supported, \fBnnrpd\fR\|(8) tries to hand off locally-posted articles through an \s-1INET\s0 domain socket to this server. -\&\fIactsync\fR\|(8), \fInntpget\fR\|(8), and \fIgetlist\fR\|(8) also use this value as the default +\&\fBactsync\fR\|(8), \fBnntpget\fR\|(8), and \fBgetlist\fR\|(8) also use this value as the default 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. @@ -297,11 +301,13 @@ be one more than that number in order to whose posting date is one day into the future. .IP "\fIbindaddress\fR" 4 .IX Item "bindaddress" -Which \s-1IP\s0 address \fIinnd\fR\|(8) should bind itself to. This must be in +Which \s-1IP\s0 address \fBinnd\fR\|(8) should bind itself to. This must be in dotted-quad format (nnn.nnn.nnn.nnn). If set to \f(CW\*(C`all\*(C'\fR or not set, innd defaults to listening on all interfaces. The value of the \&\s-1INND_BIND_ADDRESS\s0 environment variable, if set, overrides this setting. The default value is unset. +.Sp +This parameter has no effect when systemd socket activation is used. .IP "\fIbindaddress6\fR" 4 .IX Item "bindaddress6" Like \fIbindaddress\fR but for IPv6 sockets. If only one of the \fIbindaddress\fR @@ -309,14 +315,16 @@ and \fIbindaddress6\fR parameters is use corresponding address family is created. If both parameters are used then two sockets are created. If neither of them is used, the list of sockets to listen on will be determined by the system library -\&\fI\fIgetaddrinfo\fI\|(3)\fR function. The value of the \s-1INND_BIND_ADDRESS6,\s0 if set, +\&\fI\f(BIgetaddrinfo\fI\|(3)\fR function. The value of the \s-1INND_BIND_ADDRESS6,\s0 if set, overrides this setting. The default value is unset. .Sp Note that you will generally need to put double quotes ("") around this value if you set it, since IPv6 addresses contain colons. +.Sp +This parameter has no effect when systemd socket activation is used. .IP "\fIdontrejectfiltered\fR" 4 .IX Item "dontrejectfiltered" -Normally \fIinnd\fR\|(8) rejects incoming articles when directed to do so by +Normally \fBinnd\fR\|(8) rejects incoming articles when directed to do so by any enabled article filters (Perl or Python). However, this parameter causes such articles \fInot\fR to be rejected; instead filtering can be applied on outbound articles. If this parameter is set, all articles @@ -374,7 +382,7 @@ protected, and with the trailing \*(L"\e \&\fIlocalmaxartsize\fR. .IP "\fImaxconnections\fR" 4 .IX Item "maxconnections" -The maximum number of incoming \s-1NNTP\s0 connections \fIinnd\fR\|(8) will accept. The +The maximum number of incoming \s-1NNTP\s0 connections \fBinnd\fR\|(8) will accept. The default value is \f(CW50\fR. .IP "\fIpathalias\fR" 4 .IX Item "pathalias" @@ -401,7 +409,7 @@ based on whether configure found \fBpgp\ 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 +What \s-1TCP\s0 port \fBinnd\fR\|(8) should listen on. The default value is \f(CW119\fR, the standard \s-1NNTP\s0 port. .IP "\fIrefusecybercancels\fR" 4 .IX Item "refusecybercancels" @@ -421,7 +429,7 @@ hard-coded; general filtering of message filtering support. .IP "\fIremembertrash\fR" 4 .IX Item "remembertrash" -By default, \fIinnd\fR\|(8) records rejected articles in history so that, if +By default, \fBinnd\fR\|(8) records rejected articles in history so that, if offered the same article again, it can be refused before it is sent. If you wish to disable this behavior, set this to false. This can cause a substantial increase in the amount of bandwidth consumed by incoming news @@ -434,8 +442,8 @@ is a boolean value and the default is tr .IP "\fIsourceaddress\fR" 4 .IX Item "sourceaddress" Which local \s-1IP\s0 address to bind to for outgoing \s-1NNTP\s0 sockets (used by -\&\fIinnxmit\fR\|(8) among other programs, as well as \fIinnfeed\fR\|(8) as long as not -overridden by \fIbindaddress\fR in \fIinnfeed.conf\fR\|(5)). This must be in +\&\fBinnxmit\fR\|(8) among other programs, as well as \fBinnfeed\fR\|(8) as long as not +overridden by \fIbindaddress\fR in \fBinnfeed.conf\fR\|(5)). This must be in dotted-quad format (nnn.nnn.nnn.nnn). If set to \f(CW\*(C`all\*(C'\fR, the operating system will choose the source \s-1IP\s0 address for outgoing connections. The default value is unset. @@ -452,11 +460,15 @@ in the cancel message can be found in th check can't be done if the cancel arrives before the article does. This is a boolean value, and the default is false. .Sp -Note that \s-1RFC 5537 \s0(\s-1USEPRO\s0) mentions that \*(L"cancel control messages are +Note that \s-1RFC 5537\s0 (\s-1USEPRO\s0) mentions that \*(L"cancel control messages are not required to contain From: and Sender: header fields matching the target message. This requirement only encouraged cancel issuers to conceal their identity and provided no security\*(R". This check is therefore not done as it is extremely easy to spoof. +.Sp +In order not to actually process any cancel or supersedes messages, +you can start \fBinnd\fR with the \fB\-C\fR flag, or add this flag to the +\&\fIinnflags\fR parameter. .IP "\fIverifygroups\fR" 4 .IX Item "verifygroups" Set this to true to reject incoming articles which contain an unknown @@ -498,8 +510,8 @@ be set. .ie n .IP """hisv6""" 4 .el .IP "\f(CWhisv6\fR" 4 .IX Item "hisv6" -Stores history data in the \s-1INN\s0 history v6 format: \fIhistory\fR\|(5) text -file and a number of \fIdbz\fR\|(3) database files; this may be in true history +Stores history data in the \s-1INN\s0 history v6 format: \fBhistory\fR\|(5) text +file and a number of \fBdbz\fR\|(3) database files; this may be in true history v6 format, or tagged hash format, depending on the build options. Separation of these two is a project which has not yet been undertaken. @@ -554,7 +566,7 @@ of these fields for \fIall\fR articles, in the news spool. Consequently, if you decide to add or remove a field from your overview database, you should either modify \&\fIextraoverviewadvertised\fR and rebuild your overview database with -\&\fImakehistory\fR\|(8) after removing all existing overview files, or implement +\&\fBmakehistory\fR\|(8) after removing all existing overview files, or implement a transition period by first using \fIextraoverviewhidden\fR as described below. .Sp Use of a transition period can accommodate most overview reconfigurations, @@ -570,7 +582,7 @@ to the fields already stored above, you .Sp This way, \f(CW\*(C`To:full\*(C'\fR will not be advertised by \fBnnrpd\fR but will be stored for each new article. Once you know that all articles in your overview -database record the content or absence of that new field (if \fIexpire.ctl\fR\|(5) is +database record the content or absence of that new field (if \fBexpire.ctl\fR\|(5) is parametered so that all your articles expire within 30\ days, you can assume the database is in such a state after 30\ days \-\-\ however, note that time to expiration can be unpredictable with \s-1CNFS\s0 and you then have to use @@ -638,7 +650,7 @@ default is true. Whether to file all postings to \f(CW\*(C`to.*\*(C'\fR groups in the pseudonewsgroup \&\f(CW\*(C`to\*(C'\fR. If this is set to true, the newsgroup \f(CW\*(C`to\*(C'\fR must exist in the \&\fIactive\fR file or \s-1INN\s0 will not start. (See the discussion of \f(CW\*(C`to.\*(C'\fR -groups in \fIinnd\fR\|(8) under \s-1CONTROL MESSAGES.\s0) This is a boolean value and +groups in \fBinnd\fR\|(8) under \s-1CONTROL MESSAGES.\s0) This is a boolean value and the default is false. .IP "\fInfswriter\fR" 4 .IX Item "nfswriter" @@ -658,7 +670,7 @@ around and open that many recently writt articles come in for those newsgroups. Every overview cache slot consumes two file descriptors, so be careful not to set this value too high. You may be able to use the \f(CW\*(C`limit\*(C'\fR command to see how many open file -descriptors your operating system allows. \fIinnd\fR\|(8) also uses an open file +descriptors your operating system allows. \fBinnd\fR\|(8) also uses an open file descriptor for each incoming feed and outgoing channel or batch file, and if it runs out of open file descriptors, it may throttle and stop accepting new news. The default value is \f(CW128\fR (which is probably still too low if @@ -668,7 +680,7 @@ This setting is ignored unless \fIovmeth .IP "\fIovgrouppat\fR" 4 .IX Item "ovgrouppat" If set, restricts the overview data stored by \s-1INN\s0 to only the newsgroups -matching this comma-separated list of \fIuwildmat\fR\|(3) expressions. Newsgroups not +matching this comma-separated list of \fBuwildmat\fR\|(3) expressions. Newsgroups not matching this setting may not be readable, and if \fIgroupbaseexpiry\fR is set to true and the storage method for these newsgroups does not have self-expire functionality, storing overview data will fail. @@ -676,24 +688,35 @@ The default is unset. .IP "\fIovmethod\fR" 4 .IX Item "ovmethod" Which overview storage method to use. Currently supported values are -\&\f(CW\*(C`tradindexed\*(C'\fR, \f(CW\*(C`buffindexed\*(C'\fR, and \f(CW\*(C`ovdb\*(C'\fR. There is no default value; +\&\f(CW\*(C`buffindexed\*(C'\fR, \f(CW\*(C`ovdb\*(C'\fR and \f(CW\*(C`tradindexed\*(C'\fR. There is no default value; this parameter must be set if \fIenableoverview\fR is true (the default). .RS 4 .ie n .IP """buffindexed""" 4 .el .IP "\f(CWbuffindexed\fR" 4 .IX Item "buffindexed" -Stores overview data and index information into buffers, which are -preconfigured files defined in \fIbuffindexed.conf\fR. \f(CW\*(C`buffindexed\*(C'\fR never +It stores overview data and index information into preconfigured +large files like \s-1CNFS.\s0 Fast at writing, the \f(CW\*(C`buffindexed\*(C'\fR overview +storage method can keep up with a large feed more easily and never consumes additional disk space beyond that allocated to these buffers. -.ie n .IP """tradindexed""" 4 -.el .IP "\f(CWtradindexed\fR" 4 -.IX Item "tradindexed" -Uses two files per newsgroup, one containing the overview data and one -containing the index. Fast for readers, but slow to write to. +The downside is that these buffers are hard to recover in case of +corruption and somewhat slower for readers and the expiry process. +See the \fBbuffindexed.conf\fR\|(5) man page for more details, and notably how +to create the buffers. .ie n .IP """ovdb""" 4 .el .IP "\f(CWovdb\fR" 4 .IX Item "ovdb" -Stores data into a Berkeley\ \s-1DB\s0 database. See the \fIovdb\fR\|(5) man page. +It stores overview information into a Berkeley\ \s-1DB\s0 database, whose +development pace has stalled these last years. This method is fast +and very robust, but may require more disk space, unless compression +is enabled. See the \fBovdb\fR\|(5) man page for more details. +.ie n .IP """tradindexed""" 4 +.el .IP "\f(CWtradindexed\fR" 4 +.IX Item "tradindexed" +It uses two files per newsgroup, one containing the overview data +and one containing the index. Fast for readers, but slow to write to +because it has to update two files for each incoming article. Its main +advantage is to be the best tested, the most reliable and the method +with the best recovery tools. .RE .RS 4 .RE @@ -711,10 +734,10 @@ If the tradspool article storage method be true. .IP "\fIuseoverchan\fR" 4 .IX Item "useoverchan" -Whether to \fIinnd\fR\|(8) should create overview data internally through -\&\fIlibstorage\fR\|(3). If set to false, innd creates overview data by itself. If +Whether to \fBinnd\fR\|(8) should create overview data internally through +\&\fBlibstorage\fR\|(3). If set to false, innd creates overview data by itself. If set to true, innd does not create; instead overview data must be created -by \fIoverchan\fR\|(8) from an appropriate entry in \fInewsfeeds\fR. Setting to true +by \fBoverchan\fR\|(8) from an appropriate entry in \fInewsfeeds\fR. Setting to true may be useful, if innd cannot keep up with incoming feed and the bottleneck is creation of overview data within innd. This is a boolean value and the default is false. @@ -743,12 +766,12 @@ example) and see the same internal artic parameter set should generally only have one upstream feed, and should always have \fInnrpdposthost\fR set to hand locally posted articles off to the master server. The upstream should be careful to always feed articles -in order (\fIinnfeed\fR\|(8) can have problems with this in the event of a +in order (\fBinnfeed\fR\|(8) can have problems with this in the event of a backlog). This is a boolean value and the default is false. .SS "Reading" .IX Subsection "Reading" These parameters affect the behavior of \s-1INN\s0 for readers. Most of them are -used by \fInnrpd\fR\|(8). There are some special sets of settings that are broken +used by \fBnnrpd\fR\|(8). There are some special sets of settings that are broken out separately after the initial alphabetized list. .PP Note that the two parameters \fInnrpperlauth\fR and \fInnrppythonauth\fR are now @@ -765,9 +788,9 @@ client. This is a boolean value and the overrides \fIallownewnews\fR. .IP "\fIarticlemmap\fR" 4 .IX Item "articlemmap" -Whether to attempt to \fImmap()\fR articles. Setting this to true will give +Whether to attempt to \fBmmap()\fR articles. Setting this to true will give better performance on most systems, but some systems have problems with -\&\fImmap()\fR. If this is set to false, articles will be read into memory before +\&\fBmmap()\fR. If this is set to false, articles will be read into memory before being sent to readers. This is a boolean value and the default is true. .IP "\fIclienttimeout\fR" 4 .IX Item "clienttimeout" @@ -790,7 +813,7 @@ be increased if many clients connect via .IX Item "msgidcachesize" How many cache slots to reserve for message-IDs to storage token translations. When serving overview data to clients (\s-1NEWNEWS, OVER,\s0 -etc.), \fInnrpd\fR\|(8) can cache the storage token associated with a message-ID +etc.), \fBnnrpd\fR\|(8) can cache the storage token associated with a message-ID and save the cost of looking it up in the \fIhistory\fR file; for some configurations, setting this parameter can save more than 90% of the wall clock time for a session. The default value is \f(CW64000\fR. @@ -821,10 +844,10 @@ number of \*(L"article is missing\*(R" e boolean value and the default is true. .IP "\fInnrpdflags\fR" 4 .IX Item "nnrpdflags" -When \fInnrpd\fR\|(8) is spawned from \fIinnd\fR\|(8), these flags are passed as +When \fBnnrpd\fR\|(8) is spawned from \fBinnd\fR\|(8), these flags are passed as arguments to the nnrpd process. This setting does not affect instances of nnrpd that are started in daemon mode, or instances that are started -via another listener process such as \fIinetd\fR\|(8) or \fIxinetd\fR\|(8). Shell +via another listener process such as \fBinetd\fR\|(8) or \fBxinetd\fR\|(8). Shell quoting and metacharacters are not supported. This is a string value and the default is unset. .IP "\fInnrpdloadlimit\fR" 4 @@ -834,7 +857,7 @@ if the system load average is higher tha is \f(CW16\fR. .IP "\fInoreader\fR" 4 .IX Item "noreader" -Normally, \fIinnd\fR\|(8) will fork a copy of \fInnrpd\fR\|(8) for all incoming +Normally, \fBinnd\fR\|(8) will fork a copy of \fBnnrpd\fR\|(8) for all incoming connections from hosts not listed in \fIincoming.conf\fR. If this parameter is set to true, those connections will instead be rejected with a 502 error code. This should be set to true for a transit-only server that @@ -843,7 +866,7 @@ started out of inetd. This is a boolean .IP "\fIreaderswhenstopped\fR" 4 .IX Item "readerswhenstopped" Whether to allow readers to connect even if the server is paused or -throttled. This is only applicable if \fInnrpd\fR\|(8) is spawned from \fIinnd\fR\|(8) +throttled. This is only applicable if \fBnnrpd\fR\|(8) is spawned from \fBinnd\fR\|(8) rather than run out of inetd or in daemon mode. This is a boolean value and the default is false. .IP "\fIreadertrack\fR" 4 @@ -858,9 +881,9 @@ article will be saved in \fIpathlog\fR/t the default is false. .IP "\fItradindexedmmap\fR" 4 .IX Item "tradindexedmmap" -Whether to attempt to \fImmap()\fR tradindexed overviews articles. Setting +Whether to attempt to \fBmmap()\fR tradindexed overviews articles. Setting this to true will give better performance on most systems, but some -systems have problems with \fImmap()\fR. If this is set to false, overviews +systems have problems with \fBmmap()\fR. If this is set to false, overviews will be read into memory before being sent to readers. This is a boolean value and the default is true. .PP @@ -905,7 +928,7 @@ smaller than this even if the maximum nu default value is \f(CW250\fR. .SS "Posting" .IX Subsection "Posting" -These parameters are only used by \fInnrpd\fR\|(8), \fIinews\fR\|(1), and other programs +These parameters are only used by \fBnnrpd\fR\|(8), \fBinews\fR\|(1), and other programs that accept or generate postings. There are some special sets of settings that are broken out separately after the initial alphabetized list. .IP "\fIaddinjectiondate\fR" 4 @@ -929,7 +952,7 @@ That has to be done with a user-written .IP "\fIaddinjectionpostinghost\fR" 4 .IX Item "addinjectionpostinghost" 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 +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 @@ -937,7 +960,7 @@ known) and \s-1IP\s0 address of the clie 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, an \s-1FQDN \s0(obtained by reverse +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. @@ -959,8 +982,8 @@ and the value of \fIfromhost\fR.) Contains a domain used to construct e\-mail addresses. The address of the local news administrator will be given as @\fIfromhost\fR, where is the newsmaster user set at compile time (\f(CW\*(C`usenet\*(C'\fR by default). This -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). +setting will also be used by \fBmailpost\fR\|(8) to fully qualify addresses and by +\&\fBinews\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 host. @@ -978,7 +1001,7 @@ used if the \fImoderators\fR file doesn' which an article is posted is not matched by any entry in that file, and takes the same form as an entry in the \fImoderators\fR file. In most cases, \&\f(CW\*(C`%s@moderators.isc.org\*(C'\fR is a good value for this parameter (\f(CW%s\fR is -expanded into a form of the newsgroup name). See \fImoderators\fR\|(5) for more +expanded into a form of the newsgroup name). See \fBmoderators\fR\|(5) for more details about the syntax. The default is unset. If this parameter isn't set and an article is posted to a moderated group that does not have a matching entry in the \fImoderators\fR file, the posting will be rejected @@ -994,7 +1017,7 @@ be removed from all posts even if the po boolean value and the default is false. .IP "\fInnrpdposthost\fR" 4 .IX Item "nnrpdposthost" -If set, \fInnrpd\fR\|(8) and \fIrnews\fR\|(1) will pass all locally posted articles to the +If set, \fBnnrpd\fR\|(8) and \fBrnews\fR\|(1) will pass all locally posted articles to the specified host rather than trying to inject them locally. See also \&\fInnrpdpostport\fR. This should always be set if \fIxrefslave\fR is true. The default value is unset. @@ -1010,8 +1033,8 @@ setting. The default is unset, which te Organization: header. .IP "\fIspoolfirst\fR" 4 .IX Item "spoolfirst" -If true, \fInnrpd\fR\|(8) will spool new articles rather than attempting to send -them to \fIinnd\fR\|(8). If false, nnrpd will spool articles only if it receives +If true, \fBnnrpd\fR\|(8) will spool new articles rather than attempting to send +them to \fBinnd\fR\|(8). If false, nnrpd will spool articles only if it receives an error trying to send them to innd. Setting this to true can be useful if nnrpd must respond as fast as possible to the client; however, when set, articles will not appear to readers until they are given to innd. @@ -1021,7 +1044,7 @@ is false. .IP "\fIstrippostcc\fR" 4 .IX Item "strippostcc" Whether to strip To:, Cc:, and Bcc: headers out of all local posts via -\&\fInnrpd\fR\|(8). The primary purpose of this setting is to prevent abuse of the +\&\fBnnrpd\fR\|(8). The primary purpose of this setting is to prevent abuse of the news server by posting to a moderated group and including To: or Cc: headers in the post so that the news server will send the article to arbitrary addresses. \s-1INN\s0 now protects against this abuse in other ways @@ -1029,14 +1052,14 @@ provided \fImta\fR is set to a command t this is generally no longer needed. This is a boolean value and the default is false. .PP -\&\fInnrpd\fR\|(8) has support for controlling high-volume posters via an +\&\fBnnrpd\fR\|(8) has support for controlling high-volume posters via an exponential backoff algorithm, as configured by the following parameters. .PP Exponential posting backoff works as follows: news clients are indexed by \s-1IP\s0 address (or username, see \fIbackoffauth\fR below). Each time a post is received from an \s-1IP\s0 address, the time of posting is stored (along with the previous sleep time, see below). After a configurable number -of posts in a configurable period of time, \fInnrpd\fR\|(8) will begin to sleep +of posts in a configurable period of time, \fBnnrpd\fR\|(8) will begin to sleep for increasing periods of time before actually posting anything (posting backoff is therefore activated). Posts will still be accepted, but at an increasingly reduced rate. @@ -1060,7 +1083,7 @@ Here are the parameters that control exp .IP "\fIbackoffauth\fR" 4 .IX Item "backoffauth" Whether to index posting backoffs by user rather than by source \s-1IP\s0 -address. You must be using authentication in \fInnrpd\fR\|(8) for a value of true +address. You must be using authentication in \fBnnrpd\fR\|(8) for a value of true to have any meaning. This is a boolean value and the default is false. .IP "\fIbackoffdb\fR" 4 .IX Item "backoffdb" @@ -1090,7 +1113,7 @@ This many postings are allowed before th The default value is \f(CW10000\fR. .SS "\s-1TLS/SSL\s0 Support for Reading and Posting" .IX Subsection "TLS/SSL Support for Reading and Posting" -Here are the parameters used by \fInnrpd\fR\|(8) to provide \s-1TLS/SSL\s0 support. +Here are the parameters used by \fBnnrpd\fR\|(8) to provide \s-1TLS/SSL\s0 support. .PP The parameters related to certificates are: .IP "\fItlscafile\fR" 4 @@ -1112,6 +1135,10 @@ default value is \fIpathetc\fR. The path to a file containing the server certificate to present to \&\s-1TLS\s0 clients. This parameter is only used if \fBnnrpd\fR is built with \s-1TLS/SSL\s0 support. The default value is \fIpathetc\fR/cert.pem. +.Sp +Note that unlike Apache's \fISSLCertificateFile\fR directive, \fItlscertfile\fR +should not contain a concatenation of certificates. Instead, if you have +a certificate authority root certificate, set \fItlscafile\fR to its path. .IP "\fItlskeyfile\fR" 4 .IX Item "tlskeyfile" The path to a file containing the encryption key for the server @@ -1130,12 +1157,12 @@ of security provided by \s-1TLS/SSL\s0 i on the \s-1TLS\s0 protocol or some supported cipher suite are discovered: .IP "\fItlsciphers\fR" 4 .IX Item "tlsciphers" -The string describing the cipher suites OpenSSL will support for \s-1TLS\s0\ 1.2 and below. See OpenSSL's \fIciphers\fR\|(1) command documentation for +The string describing the cipher suites OpenSSL will support for \s-1TLS\s0\ 1.2 and below. See OpenSSL's \fBciphers\fR\|(1) command documentation for details. The default is unset, which uses OpenSSL's default cipher suite list. .IP "\fItlsciphers13\fR" 4 .IX Item "tlsciphers13" -The string describing the cipher suites OpenSSL will support for \s-1TLS\s0\ 1.3. See OpenSSL's \fIciphers\fR\|(1) command documentation for +The string describing the cipher suites OpenSSL will support for \s-1TLS\s0\ 1.3. See OpenSSL's \fBciphers\fR\|(1) command documentation for details. The default is unset, which uses OpenSSL's default cipher suite list. .Sp @@ -1189,60 +1216,60 @@ protocols more recent than TLSv1.3, they to be more secure). .SS "Monitoring" .IX Subsection "Monitoring" -These parameters control the behavior of \fIinnwatch\fR\|(8), the program that +These parameters control the behavior of \fBinnwatch\fR\|(8), the program that monitors \s-1INN\s0 and informs the news administrator if anything goes wrong with it. .IP "\fIdoinnwatch\fR" 4 .IX Item "doinnwatch" -Whether to start \fIinnwatch\fR\|(8) from rc.news. This is a boolean value, and +Whether to start \fBinnwatch\fR\|(8) from rc.news. This is a boolean value, and the default is true. .IP "\fIinnwatchbatchspace\fR" 4 .IX Item "innwatchbatchspace" -Free space in \fIpathoutgoing\fR, in \fIinndf\fR\|(8) output units (normally -kilobytes), at which \fIinnd\fR\|(8) will be throttled by \fIinnwatch\fR\|(8), assuming a +Free space in \fIpathoutgoing\fR, in \fBinndf\fR\|(8) output units (normally +kilobytes), at which \fBinnd\fR\|(8) will be throttled by \fBinnwatch\fR\|(8), assuming a default \fIinnwatch.ctl\fR. The default value is \f(CW4000\fR. .IP "\fIinnwatchlibspace\fR" 4 .IX Item "innwatchlibspace" -Free space in \fIpathdb\fR, in \fIinndf\fR\|(8) output units (normally kilobytes), at -which \fIinnd\fR\|(8) will be throttled by \fIinnwatch\fR\|(8), assuming a default +Free space in \fIpathdb\fR, in \fBinndf\fR\|(8) output units (normally kilobytes), at +which \fBinnd\fR\|(8) will be throttled by \fBinnwatch\fR\|(8), assuming a default \&\fIinnwatch.ctl\fR. The default value is \f(CW25000\fR. .IP "\fIinnwatchloload\fR" 4 .IX Item "innwatchloload" -Load average times 100 at which \fIinnd\fR\|(8) will be restarted by \fIinnwatch\fR\|(8) +Load average times 100 at which \fBinnd\fR\|(8) will be restarted by \fBinnwatch\fR\|(8) (undoing a previous pause or throttle), assuming a default \&\fIinnwatch.ctl\fR. The default value is \f(CW1000\fR (that is, a load average of 10.00). .IP "\fIinnwatchhiload\fR" 4 .IX Item "innwatchhiload" -Load average times 100 at which \fIinnd\fR\|(8) will be throttled by \fIinnwatch\fR\|(8), +Load average times 100 at which \fBinnd\fR\|(8) will be throttled by \fBinnwatch\fR\|(8), assuming a default \fIinnwatch.ctl\fR. The default value is \f(CW2000\fR (that is, a load average of 20.00). .IP "\fIinnwatchpauseload\fR" 4 .IX Item "innwatchpauseload" -Load average times 100 at which \fIinnd\fR\|(8) will be paused by \fIinnwatch\fR\|(8), +Load average times 100 at which \fBinnd\fR\|(8) will be paused by \fBinnwatch\fR\|(8), assuming a default \fIinnwatch.ctl\fR. The default value is \f(CW1500\fR (that is, a load average of 15.00). .IP "\fIinnwatchsleeptime\fR" 4 .IX Item "innwatchsleeptime" -How long (in seconds) \fIinnwatch\fR\|(8) will sleep between each check of \s-1INN.\s0 +How long (in seconds) \fBinnwatch\fR\|(8) will sleep between each check of \s-1INN.\s0 The default value is \f(CW600\fR. .IP "\fIinnwatchspoolnodes\fR" 4 .IX Item "innwatchspoolnodes" -Free inodes in \fIpatharticles\fR at which \fIinnd\fR\|(8) will be throttled by -\&\fIinnwatch\fR\|(8), assuming a default \fIinnwatch.ctl\fR. The default value is +Free inodes in \fIpatharticles\fR at which \fBinnd\fR\|(8) will be throttled by +\&\fBinnwatch\fR\|(8), assuming a default \fIinnwatch.ctl\fR. The default value is \&\f(CW200\fR. .IP "\fIinnwatchspoolspace\fR" 4 .IX Item "innwatchspoolspace" -Free space in \fIpatharticles\fR and \fIpathoverview\fR, in \fIinndf\fR\|(8) output -units (normally kilobytes), at which \fIinnd\fR\|(8) will be throttled by -\&\fIinnwatch\fR\|(8), assuming a default \fIinnwatch.ctl\fR. The default value is +Free space in \fIpatharticles\fR and \fIpathoverview\fR, in \fBinndf\fR\|(8) output +units (normally kilobytes), at which \fBinnd\fR\|(8) will be throttled by +\&\fBinnwatch\fR\|(8), assuming a default \fIinnwatch.ctl\fR. The default value is \&\f(CW25000\fR. .SS "Logging" .IX Subsection "Logging" These parameters control what information \s-1INN\s0 logs. .IP "\fIdocnfsstat\fR" 4 .IX Item "docnfsstat" -Whether to start \fIcnfsstat\fR\|(8) when \fIinnd\fR\|(8) is started. cnfsstat will log +Whether to start \fBcnfsstat\fR\|(8) when \fBinnd\fR\|(8) is started. cnfsstat will log the status of all \s-1CNFS\s0 cycbuffs to syslog on a periodic basis (frequency is the default for \f(CW\*(C`cnfsstat \-l\*(C'\fR, currently 600 seconds). This is a boolean value and the default is false. @@ -1268,15 +1295,15 @@ Set this to true to log \f(CW\*(C`ctlinn boolean value and the default is false. .IP "\fIlogcycles\fR" 4 .IX Item "logcycles" -How many old logs \fIscanlogs\fR\|(8) keeps. \fIscanlogs\fR\|(8) is generally run by -\&\fInews.daily\fR\|(8) and will archive compressed copies of this many days worth +How many old logs \fBscanlogs\fR\|(8) keeps. \fBscanlogs\fR\|(8) is generally run by +\&\fBnews.daily\fR\|(8) and will archive compressed copies of this many days worth of old logs. The default value is \f(CW3\fR. .IP "\fIlogipaddr\fR" 4 .IX Item "logipaddr" Whether the verified name of the remote feeding host should be logged to the article log for incoming articles rather than the last entry in the Path: header. The only reason to ever set this to false is due to some -interactions with \fInewsfeeds\fR flags; see \fInewsfeeds\fR\|(5) for more +interactions with \fInewsfeeds\fR flags; see \fBnewsfeeds\fR\|(5) for more information. This is a boolean value and the default is true. .IP "\fIlogsitename\fR" 4 .IX Item "logsitename" @@ -1308,22 +1335,22 @@ false. .IP "\fIstathist\fR" 4 .IX Item "stathist" Where to write history statistics for analysis with -\&\fIcontrib/stathist.pl\fR; this can be modified with \fIctlinnd\fR\|(8) while innd is +\&\fIcontrib/stathist.pl\fR; this can be modified with \fBctlinnd\fR\|(8) while innd is running. Logging does not occur unless a path is given, and there is no default value. .IP "\fIstatus\fR" 4 .IX Item "status" -How frequently (in seconds) \fIinnd\fR\|(8) should write out a status +How frequently (in seconds) \fBinnd\fR\|(8) should write out a status report. The report is written to \fIpathhttp\fR/inn_status.html or \&\fIpathlog\fR/inn.status depending on the value of \fIhtmlstatus\fR. If this is set to \f(CW0\fR or \f(CW\*(C`false\*(C'\fR, status reporting is disabled. The default value is \f(CW600\fR (that is to say reports are written every 10 minutes). .IP "\fItimer\fR" 4 .IX Item "timer" -How frequently (in seconds) \fIinnd\fR\|(8) should report performance timings +How frequently (in seconds) \fBinnd\fR\|(8) should report performance timings to syslog. If this is set to \f(CW0\fR, performance timing is disabled. -Enabling this is highly recommended, and \fIinnreport\fR\|(8) can produce a nice -summary of the timings. If set to \f(CW0\fR, performance timings in \fInnrpd\fR\|(8) +Enabling this is highly recommended, and \fBinnreport\fR\|(8) can produce a nice +summary of the timings. If set to \f(CW0\fR, performance timings in \fBnnrpd\fR\|(8) are also disabled, although \fBnnrpd\fR always reports statistics on exit and therefore any non-zero value is equivalent for it. The default value is \f(CW600\fR (that is to say performance timings are reported every @@ -1331,7 +1358,7 @@ value is \f(CW600\fR (that is to say per .SS "System Tuning" .IX Subsection "System Tuning" The following parameters can be modified to tune the low-level operation -of \s-1INN. \s0 In general, you shouldn't need to modify any of them except +of \s-1INN.\s0 In general, you shouldn't need to modify any of them except possibly \fIrlimitnofile\fR unless the server is having difficulty. .IP "\fIbadiocount\fR" 4 .IX Item "badiocount" @@ -1339,7 +1366,7 @@ How many read or write failures until a closed. The default value is \f(CW5\fR. .IP "\fIblockbackoff\fR" 4 .IX Item "blockbackoff" -Each time an attempted write returns \s-1EAGAIN\s0 or \s-1EWOULDBLOCK,\s0 \fIinnd\fR\|(8) will +Each time an attempted write returns \s-1EAGAIN\s0 or \s-1EWOULDBLOCK,\s0 \fBinnd\fR\|(8) will wait for an increasing number of seconds before trying it again. This is the multiplier for the sleep time. If you're having trouble with channel feeds not keeping up, it may be good to change this value to \f(CW2\fR or \f(CW3\fR, @@ -1380,36 +1407,36 @@ overview storage method. The default va If set to anything other than \f(CW0\fR, maximum buffer size (in bytes) for reading \s-1NNTP\s0 command will have this value. It should not be large on systems which are slow to process and store articles, as that would lead -to \fIinnd\fR\|(8) spending a long time on each channel and keeping other channels +to \fBinnd\fR\|(8) spending a long time on each channel and keeping other channels waiting. The default value is \s-1BUFSIZ\s0 defined in stdio.h (\f(CW1024\fR in most -environments, see \fIsetbuf\fR\|(3)). +environments, see \fBsetbuf\fR\|(3)). .IP "\fImaxforks\fR" 4 .IX Item "maxforks" -How many times to attempt a \fIfork\fR\|(2) before giving up. The default value +How many times to attempt a \fBfork\fR\|(2) before giving up. The default value is \f(CW10\fR. .IP "\fInicekids\fR" 4 .IX Item "nicekids" -If set to anything other than \f(CW0\fR, all child processes of \fIinnd\fR\|(8) will -have this \fInice\fR\|(2) value. This is usually used to give all child processes -of \fIinnd\fR\|(8) a lower priority (higher nice value) so that \fIinnd\fR\|(8) can get +If set to anything other than \f(CW0\fR, all child processes of \fBinnd\fR\|(8) will +have this \fBnice\fR\|(2) value. This is usually used to give all child processes +of \fBinnd\fR\|(8) a lower priority (higher nice value) so that \fBinnd\fR\|(8) can get the lion's share of the \s-1CPU\s0 when it needs it. The default value is \f(CW4\fR. .IP "\fInicenewnews\fR" 4 .IX Item "nicenewnews" -If set to anything greater than \f(CW0\fR, all \fInnrpd\fR\|(8) processes that receive -and process a \s-1NEWNEWS\s0 command will \fInice\fR\|(2) themselves to this value +If set to anything greater than \f(CW0\fR, all \fBnnrpd\fR\|(8) processes that receive +and process a \s-1NEWNEWS\s0 command will \fBnice\fR\|(2) themselves to this value (giving other nnrpd processes a higher priority). The default value is \&\f(CW0\fR. Note that this value will be ignored if set to a lower value than -\&\fInicennrpd\fR (or \fInicekids\fR if \fInnrpd\fR\|(8) is spawned from \fIinnd\fR\|(8)). +\&\fInicennrpd\fR (or \fInicekids\fR if \fBnnrpd\fR\|(8) is spawned from \fBinnd\fR\|(8)). .IP "\fInicennrpd\fR" 4 .IX Item "nicennrpd" -If set to anything greater than \f(CW0\fR, all \fInnrpd\fR\|(8) processes will \fInice\fR\|(1) +If set to anything greater than \f(CW0\fR, all \fBnnrpd\fR\|(8) processes will \fBnice\fR\|(1) themselves to this value. This gives other news processes a higher -priority and can help \fIoverchan\fR\|(8) keep up with incoming news (if that's -the object, be sure \fIoverchan\fR\|(8) isn't also set to a lower priority via -\&\fInicekids\fR). The default value is \f(CW0\fR, which will cause \fInnrpd\fR\|(8) -processes spawned from \fIinnd\fR\|(8) to use the value of \fInicekids\fR, while -\&\fInnrpd\fR\|(8) run as a daemon will use the system default priority. Note that -for \fInnrpd\fR\|(8) processes spawned from \fIinnd\fR\|(8), this value will be ignored if +priority and can help \fBoverchan\fR\|(8) keep up with incoming news (if that's +the object, be sure \fBoverchan\fR\|(8) isn't also set to a lower priority via +\&\fInicekids\fR). The default value is \f(CW0\fR, which will cause \fBnnrpd\fR\|(8) +processes spawned from \fBinnd\fR\|(8) to use the value of \fInicekids\fR, while +\&\fBnnrpd\fR\|(8) run as a daemon will use the system default priority. Note that +for \fBnnrpd\fR\|(8) processes spawned from \fBinnd\fR\|(8), this value will be ignored if set to a value lower than \fInicekids\fR. .IP "\fIpauseretrytime\fR" 4 .IX Item "pauseretrytime" @@ -1419,16 +1446,16 @@ or the number of channel write failures default value is \f(CW300\fR. .IP "\fIpeertimeout\fR" 4 .IX Item "peertimeout" -How long (in seconds) an \fIinnd\fR\|(8) incoming channel may be inactive before +How long (in seconds) an \fBinnd\fR\|(8) incoming channel may be inactive before innd closes it. The default value is \f(CW3600\fR (an hour). .IP "\fIrlimitnofile\fR" 4 .IX Item "rlimitnofile" -The maximum number of file descriptors that \fIinnd\fR\|(8) or \fIinnfeed\fR\|(8) can have -open at once. If \fIinnd\fR\|(8) or \fIinnfeed\fR\|(8) attempts to open more file +The maximum number of file descriptors that \fBinnd\fR\|(8) or \fBinnfeed\fR\|(8) can have +open at once. If \fBinnd\fR\|(8) or \fBinnfeed\fR\|(8) attempts to open more file descriptors than this value, it is possible the program may throttle or otherwise suffer reduced functionality. The number of open file descriptors is roughly the maximum number of incoming feeds and outgoing -batches for \fIinnd\fR\|(8) and the number of outgoing streams for \fIinnfeed\fR\|(8). If +batches for \fBinnd\fR\|(8) and the number of outgoing streams for \fBinnfeed\fR\|(8). If this parameter is set to a negative value, the default limit of the operating system will be used; this will normally be adequate on systems other than Solaris. Nearly all operating systems have some hard maximum @@ -1498,14 +1525,14 @@ The path to news overview files. The de .IX Item "pathrun" The path to files required while the server is running and run-time state information. This includes lock files and the sockets for communicating -with \fIinnd\fR\|(8). This directory and the control sockets in it should be +with \fBinnd\fR\|(8). This directory and the control sockets in it should be protected from unprivileged users other than the news user. The default value is \fIpathnews\fR/run. .IP "\fIpathspool\fR" 4 .IX Item "pathspool" The root of the news spool hierarchy. This used mostly to set the defaults for other parameters, and to determine the path to the backlog -directory for \fIinnfeed\fR\|(8). The default value is \fIpathnews\fR/spool. +directory for \fBinnfeed\fR\|(8). The default value is \fIpathnews\fR/spool. .IP "\fIpathtmp\fR" 4 .IX Item "pathtmp" Where \s-1INN\s0 puts temporary files. For security reasons, this is not the @@ -1536,10 +1563,10 @@ 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 10304 2018\-12\-02 14:05:50Z iulius $ +\&\f(CW$Id:\fR inn.conf.pod 10523 2021\-01\-17 21:52:00Z 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). +\&\fBinews\fR\|(1), \fBinnd\fR\|(8), \fBinnwatch\fR\|(8), \fBmakehistory\fR\|(8), \fBnnrpd\fR\|(8), \fBrnews\fR\|(1). .PP Nearly every program in \s-1INN\s0 uses this file to one degree or another. The above are just the major and most frequently mentioned ones. diff -Nurp inn-2.6.3/doc/man/innbind.8 inn-2.6.4/doc/man/innbind.8 --- inn-2.6.3/doc/man/innbind.8 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/innbind.8 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "INNBIND 8" -.TH INNBIND 8 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH INNBIND 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -198,7 +202,7 @@ option is primarily useful for testing. .SH "SECURITY" .IX Header "SECURITY" As \fBinnbind\fR is normally installed setuid root, security is even more of -an issue for it than for other parts of \s-1INN. \s0 It is a fairly short +an issue for it than for other parts of \s-1INN.\s0 It is a fairly short program, and if you understand C, you are encouraged to audit it yourself to be certain that it does only what it is supposed to do. The only \s-1INN\s0 library functions it uses are the vector functions, the message functions @@ -206,13 +210,13 @@ for error reporting, and xstrdup. .PP The ports that will be bound are restricted to prevent potential attacks made possible by the ability to bind low-numbered ports, such as exploits -of the \fIrsh\fR\|(1) family of commands on some systems. If \fBinnbind\fR is +of the \fBrsh\fR\|(1) family of commands on some systems. If \fBinnbind\fR is installed setuid root, it can only be executed by the news user to prevent other users on the system from being able to bind to even those few privileged ports that it allows. .PP \&\fBinnbind\fR uses no external configuration files; the only files it might -open are through the system \fIgetpwnam\fR\|(3) service to get the \s-1UID\s0 of the news +open are through the system \fBgetpwnam\fR\|(3) service to get the \s-1UID\s0 of the news user. The only user input that it accepts are its command-line arguments. .SH "DIAGNOSTICS" .IX Header "DIAGNOSTICS" @@ -270,13 +274,13 @@ can only bind \s-1SOCK_STREAM\s0 sockets .el .IP "invalid IPv4 address \f(CW%s\fR in \f(CW%s\fR" 4 .IX Item "invalid IPv4 address %s in %s" (Fatal) The IPv4 address specified in the given command-line option could -not be parsed by \fIinet_aton\fR\|(3). IPv4 addresses should be specified in the +not be parsed by \fBinet_aton\fR\|(3). IPv4 addresses should be specified in the standard dotted-quad format (10.2.3.4). .ie n .IP "invalid IPv6 address %s in %s" 4 .el .IP "invalid IPv6 address \f(CW%s\fR in \f(CW%s\fR" 4 .IX Item "invalid IPv6 address %s in %s" (Fatal) The IPv6 address specified in the given command-line option could -not be parsed by \fIinet_pton\fR\|(3). IPv6 addresses should be specified in +not be parsed by \fBinet_pton\fR\|(3). IPv6 addresses should be specified in \&\s-1RFC\s0\ 4291 format (1080:0:0:0:8:800:200C:417A or 1080::8:800:200C:417A). .ie n .IP "invalid command-line argument %s" 4 .el .IP "invalid command-line argument \f(CW%s\fR" 4 @@ -343,4 +347,4 @@ Written by Russ Allbery 0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "INNCHECK 8" -.TH INNCHECK 8 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH INNCHECK 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -278,6 +282,6 @@ Written by Brendan Kehoe 0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "INNCONFVAL 1" -.TH INNCONFVAL 1 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH INNCONFVAL 1 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -191,7 +195,7 @@ these variables are properly exported. .IX Item "-s" Print out parameters as Bourne shell assignment statements. The variable name will be the \fIinn.conf\fR parameter name in all capitals, and all -variables will be exported, if not \s-1NULL. \s0 String values will be enclosed in +variables will be exported, if not \s-1NULL.\s0 String values will be enclosed in single quotes with appropriate escaping, and boolean values will be mapped to \f(CW\*(C`true\*(C'\fR or \f(CW\*(C`false\*(C'\fR. List values will be mapped to a space-separated string representing an array of strings (as Bourne shell does not recognize @@ -232,4 +236,4 @@ Written by Rich \f(CW$alz\fR 0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "INND 8" -.TH INND 8 "2018-01-28" "INN 2.6.3" "InterNetNews Documentation" +.TH INND 8 "2021-01-21" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -146,33 +150,33 @@ innd \- InterNetNews daemon .IX Header "DESCRIPTION" \&\fBinnd\fR, the InterNetNews daemon, handles all incoming \s-1NNTP\s0 feeds, coordinates the storage, retransmission, and overview generation for all -accepted articles, and manages the \fIactive\fR\|(5) and \fIhistory\fR\|(5) databases. It +accepted articles, and manages the \fBactive\fR\|(5) and \fBhistory\fR\|(5) databases. It handles incoming connections on the \s-1NNTP\s0 port, and also creates and listens to a local Unix-domain stream socket in order to receive articles -from local processes such as \fInnrpd\fR\|(8) and \fIrnews\fR\|(1). +from local processes such as \fBnnrpd\fR\|(8) and \fBrnews\fR\|(1). .PP As the master daemon, \fBinnd\fR should generally be started at boot and be always running. It listens to a Unix-domain datagram socket for commands -to control its activities, commands that can be sent using \fIctlinnd\fR\|(8). The +to control its activities, commands that can be sent using \fBctlinnd\fR\|(8). The current status of \fBinnd\fR can be obtained by running \f(CW\*(C`ctlinnd mode\*(C'\fR, or -for more detailed output, \fIinnstat\fR\|(8). +for more detailed output, \fBinnstat\fR\|(8). .PP \&\fBinnd\fR can be in one of three operating modes: running, paused, or throttled. Running is the normal mode; when the server is throttled, it closes connections and rejects new ones. Paused is like a temporary throttle, suspending \fBinnd\fR's activities but not causing the server to shut down existing connections. The mode is normally changed via -\&\fIctlinnd\fR\|(8), either by various automated processes (such as nightly article +\&\fBctlinnd\fR\|(8), either by various automated processes (such as nightly article expiration) or manually by the news administrator, but \fBinnd\fR will also throttle itself if it encounters \s-1ENOSPC\s0 errors in writing data or an excessive number of I/O errors (among other problems). .PP -\&\fBinnd\fR normally takes care of spawning \fInnrpd\fR\|(8) to handle connections +\&\fBinnd\fR normally takes care of spawning \fBnnrpd\fR\|(8) to handle connections from news reading clients, but it can be run on a separate port from -\&\fInnrpd\fR\|(8) so that feed connections and news reading connections are handled +\&\fBnnrpd\fR\|(8) so that feed connections and news reading connections are handled separately (this can often be faster). Normally, \fBinnd\fR listens on port 119, the assigned port for \s-1NNTP\s0; if it is desirable to run \fBinnd\fR and -\&\fInnrpd\fR\|(8) on separate ports, it's recommended that \fInnrpd\fR\|(8) be given port +\&\fBnnrpd\fR\|(8) on separate ports, it's recommended that \fBnnrpd\fR\|(8) be given port 119 (since many news reading clients connect only to that port) and that port 433 be used for \fBinnd\fR. .PP @@ -180,18 +184,18 @@ The primary configuration files that con \&\fIincoming.conf\fR, which specifies what remote sites \fBinnd\fR will accept connections from, \fInewsfeeds\fR, which specifies what is to be done with incoming articles besides storing them, and \fIinn.conf\fR, which sets a wide -variety of configuration parameters. Some parameters in \fIinn.conf\fR\|(5) can +variety of configuration parameters. Some parameters in \fBinn.conf\fR\|(5) can also be set with command-line flags; for these, the command-line flags take precedence if used. .PP \&\fBinnd\fR must be run as the news user and news group. It will check for this at startup and fail to start if not run properly. Normally it should -be started via \fIrc.news\fR\|(8) as part of the system boot up process. It relies -on the setuid root helper program \fIinnbind\fR\|(8) to listen on a privileged +be started via \fBrc.news\fR\|(8) as part of the system boot up process. It relies +on the setuid root helper program \fBinnbind\fR\|(8) to listen on a privileged port (119, 433 or 563). .SH "OPTIONS" .IX Header "OPTIONS" -For the options below that override \fIinn.conf\fR settings, see \fIinn.conf\fR\|(5) +For the options below that override \fIinn.conf\fR settings, see \fBinn.conf\fR\|(5) for the default values if neither the \fIinn.conf\fR setting nor the command-line option is given. .IP "\fB\-4\fR \fIaddress\fR" 4 @@ -204,7 +208,9 @@ local \s-1IP\s0 addresses. The \s-1IP\s .Sp If this option is specified, it's the same as setting \fIbindaddress\fR in \&\fIinn.conf\fR and may cause changes in whether \s-1INN\s0 binds to an IPv6 address -as well. See \fIinn.conf\fR\|(5) for more details and also the \fB\-6\fR flag for \fBinnd\fR. +as well. See \fBinn.conf\fR\|(5) for more details and also the \fB\-6\fR flag for \fBinnd\fR. +.Sp +This option has no effect when systemd socket activation is used. .IP "\fB\-6\fR \fIaddress\fR" 4 .IX Item "-6 address" Only applies when \s-1INN\s0 has been built with IPv6 support. Normally \fBinnd\fR @@ -215,7 +221,9 @@ format (\f(CW\*(C`n:n:n:n:n:n:n:n\*(C'\f .Sp If this option is specified, it's the same as setting \fIbindaddress6\fR in \&\fIinn.conf\fR and may cause changes in whether \s-1INN\s0 binds to an IPv4 address -as well. See \fIinn.conf\fR\|(5) for more details and also the \fB\-4\fR flag for \fBinnd\fR. +as well. See \fBinn.conf\fR\|(5) for more details and also the \fB\-4\fR flag for \fBinnd\fR. +.Sp +This option has no effect when systemd socket activation is used. .IP "\fB\-a\fR" 4 .IX Item "-a" By default, if a host connects to \fBinnd\fR but is not listed in @@ -289,7 +297,7 @@ initial letter. (\f(CW\*(C`g\*(C'\fR is .IX Item "-N" If this option is given, any filters (Perl or Python) are disabled before \&\fBinnd\fR starts (normally, filters default to being enabled). The filters -can be enabled after \fBinnd\fR has started with \fIctlinnd\fR\|(8). +can be enabled after \fBinnd\fR has started with \fBctlinnd\fR\|(8). .IP "\fB\-n\fR \fIflag\fR" 4 .IX Item "-n flag" Whether \fBinnd\fR allows (and hands off to \fBnnrpd\fR) reader connections @@ -309,7 +317,7 @@ and only written out periodically. .Sp Normally you never need to use this option, since the number of outgoing feeds is fixed, being the number of file feeds configured in \fInewsfeeds\fR, -and is generally small (particularly given that \fIinnfeed\fR\|(8) is now used for +and is generally small (particularly given that \fBinnfeed\fR\|(8) is now used for most outgoing feeds at large sites). .IP "\fB\-P\fR \fIport\fR" 4 .IX Item "-P port" @@ -324,10 +332,10 @@ if a \f(CW\*(C`ctlinnd renumber\*(C'\fR .IX Item "-s" Just check the syntax of the \fInewsfeeds\fR file and exit. \fBinnd\fR will exit with a non-zero status if any errors are found; the actual errors -will be reported via \fIsyslog\fR\|(3). +will be reported via \fBsyslog\fR\|(3). .IP "\fB\-S\fR" 4 .IX Item "-S" -Report errors found in \fIincoming.conf\fR via \fIsyslog\fR\|(3) and exit normally. +Report errors found in \fIincoming.conf\fR via \fBsyslog\fR\|(3) and exit normally. (Yes, this is less useful than it should be.) .IP "\fB\-t\fR \fIseconds\fR" 4 .IX Item "-t seconds" @@ -342,7 +350,7 @@ is normally buffered. This option chang .IX Header "CONTROL MESSAGES" Arriving articles that have a Control: header are called \*(L"control messages\*(R". Except for cancel messages, these messages are handled by -\&\fIcontrolchan\fR\|(8) via a feed set up in \fInewsfeeds\fR. +\&\fBcontrolchan\fR\|(8) via a feed set up in \fInewsfeeds\fR. .PP (Cancel messages update the history database, so they must be handled internally; the cost of syncing, locking, then unlocking would be too high @@ -429,15 +437,15 @@ be filed in \f(CW\*(C`to\*(C'\fR and sen \&\s-1RFC\s0\ 4643 (\s-1NNTP\s0 authentication), \s-1RFC\s0\ 4644 (streaming \s-1NNTP\s0 feeds) and \s-1RFC\s0\ 6048 (\s-1NNTP LIST\s0 additions) with the following differences: .IP "1." 4 -A batch transfer command, \s-1XBATCH \s0\fIbyte-count\fR, is provided. This command +A batch transfer command, \s-1XBATCH\s0 \fIbyte-count\fR, is provided. This command will read \fIbyte-count\fR bytes and store them for later processing by -\&\fIrnews\fR\|(1) (which must be run separately, probably from cron). See -\&\fIinnxbatch\fR\|(8) and \fBsendxbatches\fR for more details on this +\&\fBrnews\fR\|(1) (which must be run separately, probably from cron). See +\&\fBinnxbatch\fR\|(8) and \fBsendxbatches\fR for more details on this extension. .IP "2." 4 As \s-1INN\s0 is a mode-switching news server, \fBinnd\fR implements a limited subset of the protocol useful for transferring news. The remaining -commands are mostly only useful for readers and are implemented by \fInnrpd\fR\|(8). +commands are mostly only useful for readers and are implemented by \fBnnrpd\fR\|(8). Use of the \s-1MODE READER\s0 command will cause \fBinnd\fR to pass the connection to \fBnnrpd\fR. .IP "3." 4 @@ -459,7 +467,7 @@ The local site's name (as set with the \ \&\fIinn.conf\fR) and an exclamation point are prepended to the Path: header, provided the first site name in the Path: header is different from the local one. In addition, \fIpathalias\fR and \fIpathcluster\fR may be similarly -respectively prepended and appended to the Path: header; see \fIinn.conf\fR\|(5) +respectively prepended and appended to the Path: header; see \fBinn.conf\fR\|(5) for the details. .PP The Xref: header is removed and a new one created. @@ -475,7 +483,7 @@ special feed mode available only to conn socket (not to connections to any network sockets). .PP To enter this mode, connect to the Unix-domain socket (\fIpathrun\fR/nntpin) -and send the command \s-1MODE CANCEL. \s0 The response will have code \f(CW284\fR. +and send the command \s-1MODE CANCEL.\s0 The response will have code \f(CW284\fR. Every subsequent line sent on that connection should consist of a single message-ID. An attempt will be made to cancel that message-ID, and the server will reply \f(CW289\fR for success or \f(CW484\fR for failure. (Failure can @@ -549,7 +557,7 @@ where \f(CW%s\fR, above, is replaced by and Python filters, if used, may reject articles with other reasons.) .PP If the fourth field is the letter \f(CW\*(C`?\*(C'\fR, the article contains strange -strings, such as \s-1CR\s0 without \s-1LF\s0 or \s-1LF\s0 without \s-1CR. \s0(These characters should +strings, such as \s-1CR\s0 without \s-1LF\s0 or \s-1LF\s0 without \s-1CR.\s0 (These characters should never occur in isolation, only together as \s-1CRLF\s0 to indicate the end of a line.) This log message is just informational, to give an idea of how widespread such articles are; \fBinnd\fR does not reject such articles. @@ -560,7 +568,7 @@ and logged with two lines, a \f(CW\*(C`j \&\fIlogtrash\fR parameter is set to false (in which case only the \f(CW\*(C`j\*(C'\fR line is written). .PP -\&\fBinnd\fR also makes extensive reports through \fIsyslog\fR\|(3). The first word of +\&\fBinnd\fR also makes extensive reports through \fBsyslog\fR\|(3). The first word of the log message will be the name of the site if the entry is site-specific (such as a \*(L"connected\*(R" message). The first word will be \f(CW\*(C`SERVER\*(C'\fR if the message relates to the server itself, such as when a read error occurs. @@ -582,7 +590,7 @@ word \f(CW\*(C`internal\*(C'\fR generall \&\s-1SIGINT\s0 will also be caught and will result in an orderly shutdown. .PP \&\fBinnd\fR will catch the \s-1SIGUSR1\s0 signal and recreate the control channel -used by \fIctlinnd\fR\|(8). +used by \fBctlinnd\fR\|(8). .SH "BUGS" .IX Header "BUGS" \&\fBinnd\fR normally attempts to strip \s-1IP\s0 options from incoming connections, @@ -595,9 +603,9 @@ disables source routing. .IX Header "HISTORY" Written by Rich \f(CW$alz\fR for InterNetNews. .PP -\&\f(CW$Id:\fR innd.pod 10175 2017\-09\-18 19:48:24Z iulius $ +\&\f(CW$Id:\fR innd.pod 10523 2021\-01\-17 21:52:00Z 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), -\&\fIinnbind\fR\|(8), \fIinnfeed\fR\|(8), \fIinnstat\fR\|(8), \fInewsfeeds\fR\|(5), \fInnrpd\fR\|(8), \fIrnews\fR\|(1), -\&\fIsyslog\fR\|(3). +\&\fBactive\fR\|(5), \fBctlinnd\fR\|(8), \fBdbz\fR\|(3), \fBhistory\fR\|(5), \fBincoming.conf\fR\|(5), \fBinn.conf\fR\|(5), +\&\fBinnbind\fR\|(8), \fBinnfeed\fR\|(8), \fBinnstat\fR\|(8), \fBnewsfeeds\fR\|(5), \fBnnrpd\fR\|(8), \fBrnews\fR\|(1), +\&\fBsyslog\fR\|(3). diff -Nurp inn-2.6.3/doc/man/inndf.8 inn-2.6.4/doc/man/inndf.8 --- inn-2.6.3/doc/man/inndf.8 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/inndf.8 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "INNDF 8" -.TH INNDF 8 "2018-05-14" "INN 2.6.3" "InterNetNews Documentation" +.TH INNDF 8 "2018-05-14" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -145,10 +149,10 @@ inndf \- Report free disk, inodes, and o \&\fBinndf\fR \fB\-o\fR .SH "DESCRIPTION" .IX Header "DESCRIPTION" -\&\fBinndf\fR was originally a replacement for \f(CW\*(C`df | awk\*(C'\fR in \fIinnwatch.ctl\fR\|(5) -and \fIinnstat\fR\|(8), and now also reports various other usage information about -\&\s-1INN\s0's storage that \fIdf\fR\|(1) doesn't understand. \fBinndf\fR doesn't sync, forks -less, and is generally less complicated than \fIdf\fR\|(1). +\&\fBinndf\fR was originally a replacement for \f(CW\*(C`df | awk\*(C'\fR in \fBinnwatch.ctl\fR\|(5) +and \fBinnstat\fR\|(8), and now also reports various other usage information about +\&\s-1INN\s0's storage that \fBdf\fR\|(1) doesn't understand. \fBinndf\fR doesn't sync, forks +less, and is generally less complicated than \fBdf\fR\|(1). .PP Its default behavior is to report free kilobytes (not disk blocks), or free inodes if \fB\-i\fR is used, in the file systems holding the directories @@ -173,7 +177,7 @@ after \f(CW\*(C`#\*(C'\fR on any line ar .IX Item "-F" Like \fB\-f\fR except that the filename is \fIpathetc\fR/filesystems and it is not an error if this file doesn't exist. (This option is used primarily -by such things as \fIinnstat\fR\|(8), so that the news administrator can add +by such things as \fBinnstat\fR\|(8), so that the news administrator can add additional file systems to check to \fIpathetc\fR/filesystems without having to modify the script.) .IP "\fB\-h\fR" 4 @@ -247,4 +251,4 @@ added by Fabien Tassin 0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "INNFEED 8" -.TH INNFEED 8 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH INNFEED 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -206,7 +210,7 @@ previously running \fBinnfeed\fR. This directory where it can store backlog files and a configuration file to describe which peers it should handle. .PP -The configuration file is described in \fIinnfeed.conf\fR\|(5). The \fB\-c\fR option +The configuration file is described in \fBinnfeed.conf\fR\|(5). The \fB\-c\fR option can be used to specify a different file. For each peer (say, \f(CW\*(C`foo\*(C'\fR), \&\fBinnfeed\fR manages up to 4 files in the backlog directory: .IP "\(bu" 2 @@ -257,20 +261,20 @@ will be removed if \fBinnfeed\fR exits n and \fBprocbatch\fR can be invoked to process it afterwards. .SH "SIGNALS" .IX Header "SIGNALS" -Upon receipt of a \s-1SIGALRM, \s0\fBinnfeed\fR will close the funnel file specified +Upon receipt of a \s-1SIGALRM,\s0 \fBinnfeed\fR will close the funnel file specified on the command line, and will reopen it (see funnel file description above). .PP \&\fBinnfeed\fR with catch \s-1SIGINT\s0 and will write a large debugging snapshot of the state of the running system. .PP \&\fBinnfeed\fR will catch \s-1SIGHUP\s0 and will reload both the config and the -log files. See \fIinnfeed.conf\fR\|(5) for more details. +log files. See \fBinnfeed.conf\fR\|(5) for more details. .PP \&\fBinnfeed\fR will catch \s-1SIGCHLD\s0 and will close and reopen all backlog files. .PP \&\fBinnfeed\fR will catch \s-1SIGTERM\s0 and will do an orderly shutdown. .PP -Upon receipt of a \s-1SIGUSR1, \s0\fBinnfeed\fR will increment the debugging level +Upon receipt of a \s-1SIGUSR1,\s0 \fBinnfeed\fR will increment the debugging level by one; receipt of a \s-1SIGUSR2\s0 will decrement it by one. The debugging level starts at zero (unless the \fB\-d\fR option it used), in which case no debugging information is emitted. A larger value for the level means more @@ -420,7 +424,7 @@ summary of the statistics over the entir .IP "\fB\-a\fR \fIspool-dir\fR" 4 .IX Item "-a spool-dir" The \fB\-a\fR flag is used to specify the top of the article spool tree. -\&\fBinnfeed\fR does a \fIchdir\fR\|(2) to this directory, so it should probably be an +\&\fBinnfeed\fR does a \fBchdir\fR\|(2) to this directory, so it should probably be an absolute path. The default is \fIpatharticles\fR as set in \fIinn.conf\fR. .IP "\fB\-b\fR \fIdirectory\fR" 4 .IX Item "-b directory" @@ -467,7 +471,7 @@ and expected path names are logged. .IP "\fB\-M\fR" 4 .IX Item "-M" If \fBinnfeed\fR has been built with mmap support, then the \fB\-M\fR flag turns -\&\s-1OFF\s0 the use of \fImmap()\fR; otherwise, it has no effect. +\&\s-1OFF\s0 the use of \fBmmap()\fR; otherwise, it has no effect. .IP "\fB\-o\fR \fIbytes\fR" 4 .IX Item "-o bytes" The \fB\-o\fR flag sets a value of the maximum number of bytes of article data @@ -557,4 +561,4 @@ Earlier versions of \fBinnfeed\fR (up to \&\f(CW$Id:\fR innfeed.pod 9588 2013\-12\-19 17:46:41Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIctlinnd\fR\|(8), \fIinn.conf\fR\|(5), \fIinnfeed.conf\fR\|(5), \fIinnd\fR\|(8), \fIprocbatch\fR\|(8). +\&\fBctlinnd\fR\|(8), \fBinn.conf\fR\|(5), \fBinnfeed.conf\fR\|(5), \fBinnd\fR\|(8), \fBprocbatch\fR\|(8). diff -Nurp inn-2.6.3/doc/man/innfeed.conf.5 inn-2.6.4/doc/man/innfeed.conf.5 --- inn-2.6.3/doc/man/innfeed.conf.5 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/innfeed.conf.5 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "INNFEED.CONF 5" -.TH INNFEED.CONF 5 "2018-01-28" "INN 2.6.3" "InterNetNews Documentation" +.TH INNFEED.CONF 5 "2018-01-28" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -139,7 +143,7 @@ innfeed.conf \- Configuration file for i .SH "DESCRIPTION" .IX Header "DESCRIPTION" The configuration file \fIinnfeed.conf\fR in \fIpathetc\fR is used to control -the \fIinnfeed\fR\|(8) program. It is a fairly free-format file that consists +the \fBinnfeed\fR\|(8) program. It is a fairly free-format file that consists of three types of entries: \fIkey\fR:\fIvalue\fR, \fIpeer\fR and \fIgroup\fR. Comments are from the hash character \f(CW\*(C`#\*(C'\fR to the end of the line. .PP @@ -311,7 +315,7 @@ listeners as soon as it can, even if it This key requires a boolean value and defaults to true. When \fBinnfeed\fR is given file names to send (a fairly rare use case) instead of storage \&\s-1API\s0 tokens, it specifies whether mmaping should be used if \fBinnfeed\fR -has been built with \fImmap\fR\|(2) support. If article data on disk is not in +has been built with \fBmmap\fR\|(2) support. If article data on disk is not in NNTP-ready format (\s-1CR/LF\s0 at the end of each line), then after mmaping, the article is read into memory and fixed up, so mmaping has no positive effect (and possibly some negative effect depending on your system), @@ -320,15 +324,15 @@ to the \fB\-M\fR command-line option. .IP "\fIlog-file\fR" 4 .IX Item "log-file" This key requires a pathname value and defaults to \fIinnfeed.log\fR. -It specifies where any logging messages that could not be sent via \fIsyslog\fR\|(3) +It specifies where any logging messages that could not be sent via \fBsyslog\fR\|(3) should go (such as those generated when a positive value for \fIdebug-value\fR is used). This corresponds to the \fB\-l\fR command-line option. .Sp This pathname is relative to \fIpathlog\fR in \fIinn.conf\fR. .IP "\fIlog-time-format\fR" 4 .IX Item "log-time-format" -This key requires a format string suitable for \fIstrftime\fR\|(3). It is used -for messages sent via \fIsyslog\fR\|(3) and to the \fIstatus-file\fR. Default value +This key requires a format string suitable for \fBstrftime\fR\|(3). It is used +for messages sent via \fBsyslog\fR\|(3) and to the \fIstatus-file\fR. Default value is \f(CW\*(C`%a %b %d %H:%M:%S %Y\*(C'\fR. .IP "\fIbacklog-directory\fR" 4 .IX Item "backlog-directory" @@ -449,12 +453,12 @@ In this case, the \*(L"realm\*(R" is the is valid. Currently this is only needed by the \s-1DIGEST\-MD5 SASL\s0 mechanism. .IP "\fIdeliver-rcpt-to\fR" 4 .IX Item "deliver-rcpt-to" -A \fIprintf\fR\|(3)\-style format string for creating the envelope recipient address. +A \fBprintf\fR\|(3)\-style format string for creating the envelope recipient address. The pattern \s-1MUST\s0 include a single string specifier which will be replaced with the newgroup (e.g. \f(CW\*(C`bb+%s\*(C'\fR). The default is \f(CW\*(C`+%s\*(C'\fR. .IP "\fIdeliver-to-header\fR" 4 .IX Item "deliver-to-header" -An optional \fIprintf\fR\|(3)\-style format string for creating a To: header field +An optional \fBprintf\fR\|(3)\-style format string for creating a To: header field to be prepended to the article. The pattern \s-1MUST\s0 include a single string specifier which will be replaced with the newgroup (e.g. \f(CW\*(C`post+%s@domain\*(C'\fR). If not specified, the To: header field will not be prepended. @@ -733,7 +737,7 @@ tries to authenticate by \s-1AUTHINFO US .IP "\fIpassword\fR" 4 .IX Item "password" This key requires a string value. The value is the password used for -\&\s-1AUTHINFO PASS. \s0\fIusername\fR must also be defined, if this key is defined. +\&\s-1AUTHINFO PASS.\s0 \fIusername\fR must also be defined, if this key is defined. .SH "PEER VALUES" .IX Header "PEER VALUES" As previously explained, the peer definitions can contain redefinitions @@ -791,4 +795,4 @@ version\ 0.9.3. \&\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). +\&\fBinn.conf\fR\|(5), \fBinnfeed\fR\|(8), \fBnewsfeeds\fR\|(5). diff -Nurp inn-2.6.3/doc/man/innmail.1 inn-2.6.4/doc/man/innmail.1 --- inn-2.6.3/doc/man/innmail.1 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/innmail.1 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "INNMAIL 1" -.TH INNMAIL 1 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH INNMAIL 1 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -142,7 +146,7 @@ innmail \- Simple mail\-sending program .SH "DESCRIPTION" .IX Header "DESCRIPTION" \&\fBinnmail\fR is a Perl script intended to provide the non-interactive -mail-sending functionality of \fImail\fR\|(1) while avoiding nasty security +mail-sending functionality of \fBmail\fR\|(1) while avoiding nasty security problems. It takes the body of a mail message on standard input and sends it to the specified addresses by invoking the value of \fImta\fR in \&\fIinn.conf\fR. @@ -190,4 +194,4 @@ M. Vinocur. \&\f(CW$Id:\fR innmail.pod 7851 2008\-05\-26 19:33:08Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIinn.conf\fR\|(5), \fImail\fR\|(1). +\&\fBinn.conf\fR\|(5), \fBmail\fR\|(1). diff -Nurp inn-2.6.3/doc/man/innupgrade.8 inn-2.6.4/doc/man/innupgrade.8 --- inn-2.6.3/doc/man/innupgrade.8 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/innupgrade.8 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "INNUPGRADE 8" -.TH INNUPGRADE 8 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH INNUPGRADE 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.3/doc/man/innwatch.8 inn-2.6.4/doc/man/innwatch.8 --- inn-2.6.3/doc/man/innwatch.8 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/innwatch.8 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "INNWATCH 8" -.TH INNWATCH 8 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH INNWATCH 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -183,4 +187,4 @@ Christophe Wolfhugel . \&\f(CW$Id:\fR innwatch.pod 9722 2014\-09\-24 17:47:12Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIinn.conf\fR\|(5), \fIinnwatch.ctl\fR\|(5), \fInewslog\fR\|(5), \fIrc.news\fR\|(8). +\&\fBinn.conf\fR\|(5), \fBinnwatch.ctl\fR\|(5), \fBnewslog\fR\|(5), \fBrc.news\fR\|(8). diff -Nurp inn-2.6.3/doc/man/innxmit.8 inn-2.6.4/doc/man/innxmit.8 --- inn-2.6.3/doc/man/innxmit.8 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/innxmit.8 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "INNXMIT 8" -.TH INNXMIT 8 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH INNXMIT 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -145,7 +149,7 @@ innxmit \- Send Usenet articles to a rem \&\fBinnxmit\fR connects to the \s-1NNTP\s0 server at the specified \fIhost\fR (validating itself via \fIpasswd.nntp\fR if possible) and sends it the articles specified in the batch file named \fIfile\fR. It is normally -invoked by a script run out of \fIcron\fR\|(8) that uses \fBshlock\fR to lock the +invoked by a script run out of \fBcron\fR\|(8) that uses \fBshlock\fR to lock the host name, followed by a \fBctlinnd\fR command to flush the batch file. If \fIfile\fR is not an absolute path name, it is taken relative to the directory specified by the \fIpathoutgoing\fR parameter in \fIinn.conf\fR. @@ -164,12 +168,12 @@ or a storage \s-1API\s0 token, it is tak \&\fIpatharticles\fR in \fIinn.conf\fR. If the second field is not specified, the message-ID will be obtained by scanning the article. The two fields, if present, are separated by a space. If a communication error such -as a \fIwrite\fR\|(2) failure occurs, \fBinnxmit\fR will stop sending and rewrite +as a \fBwrite\fR\|(2) failure occurs, \fBinnxmit\fR will stop sending and rewrite the batch file to contain the current article and any other unsent articles. .PP An alternative to \fBinnxmit\fR can be \fBinnduct\fR, mentioned in the -\&\fIinnfeed\fR\|(8) man page. +\&\fBinnfeed\fR\|(8) man page. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-a\fR" 4 @@ -247,4 +251,4 @@ by Julien Elie. \&\f(CW$Id:\fR innxmit.pod 9588 2013\-12\-19 17:46:41Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIctlinnd\fR\|(8), \fIinn.conf\fR\|(5), \fIinnd\fR\|(8), \fInewsfeeds\fR\|(5), \fIpasswd.nntp\fR\|(5), \fIshlock\fR\|(1). +\&\fBctlinnd\fR\|(8), \fBinn.conf\fR\|(5), \fBinnd\fR\|(8), \fBnewsfeeds\fR\|(5), \fBpasswd.nntp\fR\|(5), \fBshlock\fR\|(1). diff -Nurp inn-2.6.3/doc/man/libauth.3 inn-2.6.4/doc/man/libauth.3 --- inn-2.6.3/doc/man/libauth.3 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/libauth.3 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "libauth 3" -.TH libauth 3 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH libauth 3 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -166,7 +170,7 @@ this library is \fBnot\fR required; in p authenticators written in languages other than C will need to implement the necessary functionality themselves. .PP -The \fIget_auth_info()\fR and \fIget_res_info()\fR functions allocate sufficient +The \fBget_auth_info()\fR and \fBget_res_info()\fR functions allocate sufficient memory for a \fBstruct auth_info\fR or \fBstruct res_info\fR and any necessary fields, and return a pointer to the struct with the fields filled in from information supplied by nnrpd (the \fBFILE*\fR parameter generally @@ -178,7 +182,7 @@ and \fBlocal\fR fields of \fBstruct res_ \&\fBstruct sockaddr_in\fR (or \fBstruct sockaddr_in6\fR if IPv6 support is compiled in). .PP -The \fIfree_auth_info()\fR and \fIfree_res_info()\fR functions free the struct +The \fBfree_auth_info()\fR and \fBfree_res_info()\fR functions free the struct passed in as argument and all necessary fields. .SH "BUGS" .IX Header "BUGS" @@ -200,4 +204,4 @@ Written by Jeffrey M.\ Vinocur 0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "libinnhist 3" -.TH libinnhist 3 "2018-05-14" "INN 2.6.3" "InterNetNews Documentation" +.TH libinnhist 3 "2018-05-14" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -217,7 +221,7 @@ to how it should handle its data files; the caller would like as much of the data to be kept on disk (and out of memory), \fB\s-1HIS_INCORE\s0\fR indicates that the data files should be kept in main memory where possible and \fB\s-1HIS_MMAP\s0\fR that the files should be -\&\fImmap()\fRed into the processes address space. \fB\s-1HIS_INCORE\s0\fR is typically +\&\fBmmap()\fRed into the processes address space. \fB\s-1HIS_INCORE\s0\fR is typically used where a mass rebuild of the history database is being performed; the underlying history manager may assume that the caller will call \&\fBHISsync\fR() to sync the data files to disk. @@ -374,7 +378,7 @@ associated with \fIhistory\fR are cleare \&\fBHISerror\fR returns a string describing the most recent error associated with \fIhistory\fR; the format and content of these strings is history manager dependent. Note that on setting an error, the history -\&\s-1API\s0 will call the \fBwarn\fR function from \fIlibinn\fR\|(3). +\&\s-1API\s0 will call the \fBwarn\fR function from \fBlibinn\fR\|(3). .PP \&\fBHISctl\fR provides a control interface to the underlying history manager. The \fIrequest\fR argument determines the type of the request @@ -384,7 +388,7 @@ and the meaning of the \fIval\fR argumen .IX Item "HISCTLG_PATH (const char **)" Get the base file path which the history handle represents. \fIval\fR should be a pointer to a location of type \fBconst char *\fR. The -result must not later be passed to \fIfree\fR\|(3). +result must not later be passed to \fBfree\fR\|(3). .ie n .IP """HISCTLS_PATH"" (const char *)" 4 .el .IP "\f(CWHISCTLS_PATH\fR (const char *)" 4 .IX Item "HISCTLS_PATH (const char *)" @@ -419,9 +423,9 @@ value of type \fBbool\fR and will not be .el .IP "\f(CWHISCTLS_STATINTERVAL\fR (time_t *)" 4 .IX Item "HISCTLS_STATINTERVAL (time_t *)" For the history v6 and tagged hash managers, set the interval, in -seconds, between \fIstat\fR\|(2)s of the history files checking for replaced +seconds, between \fBstat\fR\|(2)s of the history files checking for replaced files (as happens during expire); this option is typically used by -\&\fInnrpd\fR\|(8) like applications. \fIval\fR should be a pointer to a value of +\&\fBnnrpd\fR\|(8) like applications. \fIval\fR should be a pointer to a value of type \fBtime_t\fR and will not be modified by the call. .SH "HISTORY" .IX Header "HISTORY" diff -Nurp inn-2.6.3/doc/man/libstorage.3 inn-2.6.4/doc/man/libstorage.3 --- inn-2.6.3/doc/man/libstorage.3 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/libstorage.3 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "libstorage 3" -.TH libstorage 3 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH libstorage 3 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -357,7 +361,7 @@ are ignored by \fBSMstore\fR.) If \fIar its value as article's arrival time; otherwise \fBSMstore\fR uses the current time for it. \fBSMstore\fR returns the token type or returns \fB\s-1TOKEN_EMPTY\s0\fR if the article is not stored because some error occurs or simply does not -match any \fIuwildmat\fR\|(3) expression in \fIstorage.conf\fR. \fBSMstore\fR fails if +match any \fBuwildmat\fR\|(3) expression in \fIstorage.conf\fR. \fBSMstore\fR fails if \&\fB\s-1SM_RDWR\s0\fR has not been set to true with \fBSMsetup\fR. .PP The \fBSMretrieve\fR function retrieves an article specified with \fItoken\fR. @@ -420,7 +424,7 @@ the article number of the token. Check to see whether checking the existence of an article is expensive or not. .PP -The \fBSMprintfiles\fR function shows file name or token usable by \fIfastrm\fR\|(8). +The \fBSMprintfiles\fR function shows file name or token usable by \fBfastrm\fR\|(8). .PP The \fBSMflushcacheddata\fR function flushes cached data on each storage method. \fItype\fR is one of following: @@ -549,4 +553,4 @@ Converted to \s-1POD\s0 by Julien Elie. \&\f(CW$Id:\fR libstorage.pod 9073 2010\-05\-31 19:00:23Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIexpire\fR\|(8), \fIfastrm\fR\|(8), \fIinn.conf\fR\|(5), \fIstorage.conf\fR\|(5). +\&\fBexpire\fR\|(8), \fBfastrm\fR\|(8), \fBinn.conf\fR\|(5), \fBstorage.conf\fR\|(5). diff -Nurp inn-2.6.3/doc/man/list.3 inn-2.6.4/doc/man/list.3 --- inn-2.6.3/doc/man/list.3 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/list.3 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "list 3" -.TH list 3 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH list 3 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.3/doc/man/mailpost.8 inn-2.6.4/doc/man/mailpost.8 --- inn-2.6.3/doc/man/mailpost.8 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/mailpost.8 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "MAILPOST 8" -.TH MAILPOST 8 "2018-01-28" "INN 2.6.3" "InterNetNews Documentation" +.TH MAILPOST 8 "2018-01-28" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -162,7 +166,7 @@ each article it handles), then the artic 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). .PP -Normally, \fBmailpost\fR is run by \fIsendmail\fR\|(8) via an alias entry: +Normally, \fBmailpost\fR is run by \fBsendmail\fR\|(8) via an alias entry: .PP .Vb 2 \& local\-mail\-wreck\-bikes: "|/mailpost @@ -294,4 +298,4 @@ Written by Paul Vixie long ago and then \&\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). +\&\fBactive\fR\|(5), \fBinews\fR\|(1), \fBinn.conf\fR\|(5), \fBnnrpd\fR\|(8), \fBuwildmat\fR\|(3). diff -Nurp inn-2.6.3/doc/man/makedbz.8 inn-2.6.4/doc/man/makedbz.8 --- inn-2.6.3/doc/man/makedbz.8 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/makedbz.8 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "MAKEDBZ 8" -.TH MAKEDBZ 8 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH MAKEDBZ 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -141,7 +145,7 @@ makedbz \- Rebuild dbz files \&\fBmakedbz\fR [\fB\-io\fR] [\fB\-f\fR \fIfilename\fR] [\fB\-s\fR \fIsize\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" -\&\fBmakedbz\fR rebuilds \fIdbz\fR\|(3) database. The default name of the text +\&\fBmakedbz\fR rebuilds \fBdbz\fR\|(3) database. The default name of the text file is \fIpathdb\fR/history; to specify a different name, use the \fB\-f\fR flag. .SH "OPTIONS" .IX Header "OPTIONS" @@ -171,7 +175,7 @@ should be the estimated eventual size of of the old file.) .Sp For more information, see the discussion of \fBdbzfresh\fR and \fBdbzsize\fR -in \fIdbz\fR\|(3). +in \fBdbz\fR\|(3). .SH "HISTORY" .IX Header "HISTORY" Written by Katsuhiro Kondou for InterNetNews. Converted to @@ -180,4 +184,4 @@ Written by Katsuhiro Kondou 0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "MAKEHISTORY 8" -.TH MAKEHISTORY 8 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH MAKEHISTORY 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -142,11 +146,11 @@ makehistory \- Initialize or rebuild INN [\fB\-L\fR \fIload-average\fR] [\fB\-s\fR \fIsize\fR] [\fB\-T\fR \fItmpdir\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" -\&\fBmakehistory\fR rebuilds the \fIhistory\fR\|(5) text file, which contains a list of +\&\fBmakehistory\fR rebuilds the \fBhistory\fR\|(5) text file, which contains a list of message-IDs of articles already seen by the server. It can also be used -to rebuild the overview database. Note that even though the \fIdbz\fR\|(3) indices +to rebuild the overview database. Note that even though the \fBdbz\fR\|(3) indices for the \fIhistory\fR file are also rebuilt by \fBmakehistory\fR, it is useful -to run \fImakedbz\fR\|(8) after \fImakehistory\fR\|(8) in order to improve the efficiency +to run \fBmakedbz\fR\|(8) after \fBmakehistory\fR\|(8) in order to improve the efficiency of the indices (\fBmakehistory\fR does not know how large to make the hash table at first run, unless the size is given by the \fB\-s\fR flag). .PP @@ -157,8 +161,8 @@ By default, \fBmakehistory\fR will scan manager, and write a history line for every article. To also generate overview information, use the \fB\-O\fR flag. .PP -\&\s-1WARNING: \s0 If you're trying to rebuild the overview database, be sure to -stop \fIinnd\fR\|(8) and delete or zero out the existing database before you start +\&\s-1WARNING:\s0 If you're trying to rebuild the overview database, be sure to +stop \fBinnd\fR\|(8) and delete or zero out the existing database before you start for the best results. An overview rebuild should not be done while the server is running. Unless the existing overview is deleted, you may end up with problems like out-of-order overview entries, excessively large @@ -167,14 +171,14 @@ overview buffers, and the like. If \fIovmethod\fR in \fIinn.conf\fR is \f(CW\*(C`ovdb\*(C'\fR, you must have the ovdb processes running while rebuilding overview. ovdb needs them available while writing overview entries. You can start them by hand separate from the -rest of the server by running \fBovdb_init\fR; see \fIovdb_init\fR\|(8) for more +rest of the server by running \fBovdb_init\fR; see \fBovdb_init\fR\|(8) for more details. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-a\fR" 4 .IX Item "-a" Append to the \fIhistory\fR file rather than generating a new one. If you -append to the main \fIhistory\fR file, make sure \fIinnd\fR\|(8) is throttled or not +append to the main \fIhistory\fR file, make sure \fBinnd\fR\|(8) is throttled or not running, or you can corrupt the history. .IP "\fB\-b\fR" 4 .IX Item "-b" @@ -209,7 +213,7 @@ with this option may further improve wri of longer sort times. Also, temporary space will be needed to store the overview batches. At a rough estimate, about 300 * \fIcount\fR bytes of temporary space will be required (not counting temp files created -by \fIsort\fR\|(1)). See the description of the \fB\-T\fR option for how to +by \fBsort\fR\|(1)). See the description of the \fB\-T\fR option for how to specify the temporary storage location. This option has no effect with buffindexed, because buffindexed does not need sorted overview and no batching is done. @@ -219,14 +223,14 @@ Temporarily pause activities if the syst specified level \fIload-average\fR. This allows \fBmakehistory\fR to run on a system being used for other purposes without monopolizing system resources and thus making the response time for other applications -unacceptably slow. Using \fInice\fR\|(1) does not help much for that because -the problem comes from disk I/O usage, and \fIionice\fR\|(1) is not always +unacceptably slow. Using \fBnice\fR\|(1) does not help much for that because +the problem comes from disk I/O usage, and \fBionice\fR\|(1) is not always available or efficient. .IP "\fB\-O\fR" 4 .IX Item "-O" Create the overview database as well as the \fIhistory\fR file. Overview information is only required if the server supports readers; it is not -needed for a transit-only server (see \fIenableoverview\fR in \fIinn.conf\fR\|(5)). +needed for a transit-only server (see \fIenableoverview\fR in \fBinn.conf\fR\|(5)). If you are using the buffindexed overview storage method, erase all of your overview buffers before running \fBmakehistory\fR with \fB\-O\fR. .IP "\fB\-S\fR" 4 @@ -246,10 +250,10 @@ of the \fIhistory\fR file, typically the If \fB\-O\fR is given, \fBmakehistory\fR needs a location to write temporary overview data. By default, it uses \fIpathtmp\fR, set in \fIinn.conf\fR, but if this option is given, the provided \fItmpdir\fR is used instead. This is -also used for temporary files created by \fIsort\fR\|(1) (which is invoked in the +also used for temporary files created by \fBsort\fR\|(1) (which is invoked in the process of writing overview information since sorted overview information writes faster). By default, \fBsort\fR usually uses your system temporary -directory; see the \fIsort\fR\|(1) man page on your system to be sure. +directory; see the \fBsort\fR\|(1) man page on your system to be sure. .IP "\fB\-x\fR" 4 .IX Item "-x" If this option is given, \fBmakehistory\fR won't write out \fIhistory\fR file @@ -318,5 +322,5 @@ updated by various other people since. \&\f(CW$Id:\fR makehistory.pod 8534 2009\-06\-23 18:08:14Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIactive\fR\|(5), \fIctlinnd\fR\|(8), \fIdbz\fR\|(3), \fIhistory\fR\|(5), \fIinn.conf\fR\|(5), \fIinnd\fR\|(8), -\&\fImakedbz\fR\|(8), \fIovdb_init\fR\|(8), \fIoverchan\fR\|(8). +\&\fBactive\fR\|(5), \fBctlinnd\fR\|(8), \fBdbz\fR\|(3), \fBhistory\fR\|(5), \fBinn.conf\fR\|(5), \fBinnd\fR\|(8), +\&\fBmakedbz\fR\|(8), \fBovdb_init\fR\|(8), \fBoverchan\fR\|(8). diff -Nurp inn-2.6.3/doc/man/mod-active.8 inn-2.6.4/doc/man/mod-active.8 --- inn-2.6.3/doc/man/mod-active.8 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/mod-active.8 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "MOD-ACTIVE 8" -.TH MOD-ACTIVE 8 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH MOD-ACTIVE 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -180,4 +184,4 @@ Written by David C Lawrence 0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "MODERATORS 5" -.TH MODERATORS 5 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH MODERATORS 5 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -143,7 +147,7 @@ it is not passed off to \fBinnd\fR for n via e\-mail to the submission address for that newsgroup. The submission address is determined using this configuration file. .PP -The file \fIpathetc\fR/moderators is a list of associations between \fIuwildmat\fR\|(3) +The file \fIpathetc\fR/moderators is a list of associations between \fBuwildmat\fR\|(3) patterns matching newsgroups and the submission address for those newsgroups. Blank lines and lines starting with a number sign (\f(CW\*(C`#\*(C'\fR) are ignored. All other lines should consist of two fields separated by a @@ -153,7 +157,7 @@ colon: \& :
.Ve .PP -The first field is a \fIuwildmat\fR\|(3) pattern matching the group or groups to +The first field is a \fBuwildmat\fR\|(3) pattern matching the group or groups to which this line applies. The first matching line is used, so more specific patterns should be listed before general patterns. .PP @@ -217,4 +221,4 @@ Written by Rich \f(CW$alz\fR 0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "MOTD.NEWS 5" -.TH MOTD.NEWS 5 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH MOTD.NEWS 5 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -146,7 +150,7 @@ new information, notification of upcomin These files are named \fImotd.innd\fR (for news feeders) and \fImotd.nnrpd\fR (for news readers); they are used by \fBinnd\fR and \fBnnrpd\fR, respectively. .PP -Make sure that these files are encoded in \s-1UTF\-8. \s0 They should also be +Make sure that these files are encoded in \s-1UTF\-8.\s0 They should also be \&\*(L"dot-stuffed\*(R", that is to say that a line beginning with a dot should have that dot doubled. .PP @@ -169,4 +173,4 @@ Rewritten in \s-1POD\s0 by Russ Allbery \&\f(CW$Id:\fR motd.news.pod 9767 2014\-12\-07 21:13:43Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIinn.conf\fR\|(5). +\&\fBinn.conf\fR\|(5). diff -Nurp inn-2.6.3/doc/man/news.daily.8 inn-2.6.4/doc/man/news.daily.8 --- inn-2.6.3/doc/man/news.daily.8 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/news.daily.8 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "NEWS.DAILY 8" -.TH NEWS.DAILY 8 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH NEWS.DAILY 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -177,8 +181,8 @@ which is the user specified with \fB\-\- the \fBmailto\fR keyword. .PP By specifying keywords on the command line, it is possible to modify the -functions performed, as well as change the arguments given to \fIexpire\fR\|(8) and -\&\fIexpireover\fR\|(8). \fBnews.daily\fR should be run once a day, typically out of \fIcron\fR\|(8). +functions performed, as well as change the arguments given to \fBexpire\fR\|(8) and +\&\fBexpireover\fR\|(8). \fBnews.daily\fR should be run once a day, typically out of \fBcron\fR\|(8). Since it will slow the server down while it is running, it should be run during periods of low server usage, such as in the middle of the night. To run it at 3am, for example, add the following entry to the news user's @@ -193,7 +197,7 @@ to the above option list for \fBnews.dai .PP It may be run more often, but such invocations should at least use the \&\fBnorotate\fR keyword (or perhaps the \fBnotdaily\fR keyword) to prevent the -log files from being processed and rotated too fast. The \fIshlock\fR\|(1) program +log files from being processed and rotated too fast. The \fBshlock\fR\|(1) program is used to prevent simultaneous executions. .PP The program specified by the given path \fI/path/to/a/program\fR is executed @@ -263,7 +267,7 @@ if \fIenableoverview\fR is set in \fIinn disables this function. .IP "\fBnoexplog\fR" 4 .IX Item "noexplog" -\&\fBexpire\fR normally appends information to \fIpathlog\fR/expire.log (see \fInewslog\fR\|(5)). +\&\fBexpire\fR normally appends information to \fIpathlog\fR/expire.log (see \fBnewslog\fR\|(5)). Using this keyword causes the \fBexpire\fR output to be handled as part of \&\fBnews.daily\fR's output. It has no effect if the \fBnoexpire\fR keyword is used. .IP "\fBnologs\fR" 4 @@ -335,5 +339,5 @@ Julien Elie. \&\f(CW$Id:\fR news.daily.pod 9628 2014\-05\-14 17:22:01Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIactive\fR\|(5), \fIctlinnd\fR\|(8), \fIexpire\fR\|(8), \fIexpire.ctl\fR\|(5), \fIexpireover\fR\|(8), \fIexpirerm\fR\|(8), \fIfastrm\fR\|(8), -\&\fIinn.conf\fR\|(5), \fIinnstat\fR\|(8), \fInewslog\fR\|(5), \fIprocbatch\fR\|(8), \fIscanlogs\fR\|(8), \fIshlock\fR\|(1). +\&\fBactive\fR\|(5), \fBctlinnd\fR\|(8), \fBexpire\fR\|(8), \fBexpire.ctl\fR\|(5), \fBexpireover\fR\|(8), \fBexpirerm\fR\|(8), \fBfastrm\fR\|(8), +\&\fBinn.conf\fR\|(5), \fBinnstat\fR\|(8), \fBnewslog\fR\|(5), \fBprocbatch\fR\|(8), \fBscanlogs\fR\|(8), \fBshlock\fR\|(1). diff -Nurp inn-2.6.3/doc/man/news2mail.8 inn-2.6.4/doc/man/news2mail.8 --- inn-2.6.3/doc/man/news2mail.8 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/news2mail.8 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "NEWS2MAIL 8" -.TH NEWS2MAIL 8 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH NEWS2MAIL 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -212,4 +216,4 @@ field in \fInews2mail.cf\fR was added by \&\f(CW$Id:\fR news2mail.pod 8199 2008\-11\-30 13:30:47Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIinnd\fR\|(8), \fInewsfeeds\fR\|(5). +\&\fBinnd\fR\|(8), \fBnewsfeeds\fR\|(5). diff -Nurp inn-2.6.3/doc/man/newsfeeds.5 inn-2.6.4/doc/man/newsfeeds.5 --- inn-2.6.3/doc/man/newsfeeds.5 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/newsfeeds.5 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "NEWSFEEDS 5" -.TH NEWSFEEDS 5 "2018-05-14" "INN 2.6.3" "InterNetNews Documentation" +.TH NEWSFEEDS 5 "2018-05-14" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -140,18 +144,18 @@ newsfeeds \- Determine where Usenet arti .IX Header "DESCRIPTION" The file \fIpathetc\fR/newsfeeds specifies how incoming articles should be distributed to other programs and files on the server. It is parsed by -the InterNetNews server \fIinnd\fR\|(8) when it starts up, or when directed to by -\&\fIctlinnd\fR\|(8). \fBinnd\fR doesn't send articles to remote sites itself, so +the InterNetNews server \fBinnd\fR\|(8) when it starts up, or when directed to by +\&\fBctlinnd\fR\|(8). \fBinnd\fR doesn't send articles to remote sites itself, so \&\fInewsfeeds\fR doesn't directly determine which remote news servers articles are sent to. Instead, it specifies what batch files should be created or which programs should be run (and what information should be sent to -them), and then this information is used by programs like \fIinnxmit\fR\|(8) and -\&\fIinnfeed\fR\|(8) to feed articles to remote sites. +them), and then this information is used by programs like \fBinnxmit\fR\|(8) and +\&\fBinnfeed\fR\|(8) to feed articles to remote sites. .PP The \fInewsfeeds\fR file isn't used solely to set up feeding accepted articles to remote sites but also to pass them (or bits of information about them) to any local programs or files that want that data. For -example, \fIcontrolchan\fR\|(8), a daemon that processes incoming control +example, \fBcontrolchan\fR\|(8), a daemon that processes incoming control messages, runs out of \fInewsfeeds\fR, as could a news to mail gateway. .PP The file is interpreted as a set of lines, parsed according to the @@ -219,7 +223,7 @@ significant in site names. The comma-separated \fIpattern\fR specifies which groups to send to the site; it is interpreted to build a \*(L"subscription list\*(R" for the site. The default subscription is to get all groups carried by the server. It is a -\&\fIuwildmat\fR\|(3) pattern supporting poison (\f(CW\*(C`@\*(C'\fR) wildcards; see the \fIuwildmat\fR\|(3) +\&\fBuwildmat\fR\|(3) pattern supporting poison (\f(CW\*(C`@\*(C'\fR) wildcards; see the \fBuwildmat\fR\|(3) man page for full details on the pattern matching language. \fIpattern\fR will be matched against every newsgroup carried by the server and all newsgroups that match will be added to the subscription list for the site. @@ -262,10 +266,10 @@ last matching pattern determines whether poison logic only applies if the poison entry is the last matching entry. .PP Control messages follow slightly different propagation rules than normal -articles; see \fIinnd\fR\|(8) for the details. Note that most subscriptions +articles; see \fBinnd\fR\|(8) for the details. Note that most subscriptions should have \f(CW\*(C`!junk,!control,!control.*\*(C'\fR in their pattern list due to those propagation rules (and since \f(CW\*(C`junk\*(C'\fR is a special internal newsgroup; see -\&\fIwanttrash\fR in \fIinn.conf\fR\|(5) for more details on what it's used for) and that +\&\fIwanttrash\fR in \fBinn.conf\fR\|(5) for more details on what it's used for) and that the best way to keep control messages local to a site is with a distribution. .PP A subscription can be further modified by specifying distributions that @@ -521,7 +525,7 @@ unmoderated groups are sent. If this flag is specified, an article will only be sent to this site if it contains an Injection-Info: header (or an X\-Trace: header if no Injection-Info: header is found) and the first field of this header matches -\&\fIoriginator\fR. \fIoriginator\fR is a \fIuwildmat\fR\|(3) expression without commas +\&\fIoriginator\fR. \fIoriginator\fR is a \fBuwildmat\fR\|(3) expression without commas or a list of such expressions, separated by \f(CW\*(C`/\*(C'\fR. The article is never sent if the first character of the pattern begins with \f(CW\*(C`@\*(C'\fR and the rest of the pattern matches. One use of this flag is to restrict the feed to @@ -627,7 +631,7 @@ Expires: header, \f(CW0\fR otherwise. .IP "f" 3 .IX Item "f" The storage \s-1API\s0 token of the article (the same as \f(CW\*(C`n\*(C'\fR). The article can -be retrieved given the storage \s-1API\s0 token by using \fIsm\fR\|(8). +be retrieved given the storage \s-1API\s0 token by using \fBsm\fR\|(8). .IP "g" 3 .IX Item "g" The newsgroup the article is in; if cross-posted, then the first of the @@ -643,7 +647,7 @@ The message \s-1ID\s0 of the article. .IP "n" 3 .IX Item "n" The storage \s-1API\s0 token of the article. The article can be retrieved given -the storage \s-1API\s0 token by using \fIsm\fR\|(8). +the storage \s-1API\s0 token by using \fBsm\fR\|(8). .IP "p" 3 .IX Item "p" The time the article was posted a seconds since epoch. @@ -653,7 +657,7 @@ The site that fed the article to the ser the Path: header or the \s-1IP\s0 address of the sending site depending on the value of \fIlogipaddr\fR in \fIinn.conf\fR. If \fIlogipaddr\fR is true and the \s-1IP\s0 address is \f(CW0.0.0.0\fR (meaning that the article was fed from localhost by -a program like \fIrnews\fR\|(8)), the Path: header value will be sent instead. +a program like \fBrnews\fR\|(8)), the Path: header value will be sent instead. .IP "t" 3 .IX Item "t" The time the article was received as seconds since epoch. @@ -699,7 +703,7 @@ the beginning of the headers.) The defa .Sp The \f(CW\*(C`H\*(C'\fR and \f(CW\*(C`O\*(C'\fR items are intended for use by programs that create news overview databases or require similar information. \fBWnteO\fR is the flag -to generate input needed by the \fIoverchan\fR\|(8) program. +to generate input needed by the \fBoverchan\fR\|(8) program. .Sp The asterisk (\f(CW\*(C`*\*(C'\fR) has special meaning. Normally it expands to a space-separated list of all sites that received the current article. If, @@ -721,7 +725,7 @@ described above with the description of gets every article that would be sent to any of the feeds that funnel into it and normally include the \fBW*\fR flag in their flags so that the program processing that feed knows which sites received which articles. The most -common funnel feed is \fIinnfeed\fR\|(8). +common funnel feed is \fBinnfeed\fR\|(8). .PP Note that the term \*(L"feed\*(R" is technically a misnomer, since the server doesn't transfer articles itself and only writes data to a file, program, @@ -743,17 +747,17 @@ the same file). File feeds are designed for use by external programs that periodically process the written data. To cooperate with \fBinnd\fR properly, such external programs should first rename the batch file and then send a flush -command for that site to \fBinnd\fR using \fIctlinnd\fR\|(8). \fBinnd\fR will then +command for that site to \fBinnd\fR using \fBctlinnd\fR\|(8). \fBinnd\fR will then write out any buffered data, close the file, and reopen it (under the original name), and the program can process the data in the renamed file at its leisure. File feeds are most frequently used in combination with -\&\fInntpsend\fR\|(8). +\&\fBnntpsend\fR\|(8). .PP A program feed (\fBTp\fR) spawns a given program for every article that the site receives. The \fIparameter\fR field must be the command line to execute, and should contain one instance of \f(CW%s\fR, which will be replaced by the storage \s-1API\s0 token of the article (the actual article can be retrieved by -the program using \fIsm\fR\|(8)). The program will not receive anything on +the program using \fBsm\fR\|(8)). The program will not receive anything on standard input (unlike earlier versions of \s-1INN,\s0 where the article is sent to the program on stdin), and standard output and error from the program will be set to the error log (\fIpathlog\fR/errlog). \fBinnd\fR will try to @@ -805,10 +809,10 @@ the server: \& !flush site .Ve .PP -These commands are sent whenever the \fIctlinnd\fR\|(8) command of the same name -is received by the server. In addition, the \fIctlinnd\fR\|(8) \f(CW\*(C`send\*(C'\fR command +These commands are sent whenever the \fBctlinnd\fR\|(8) command of the same name +is received by the server. In addition, the \fBctlinnd\fR\|(8) \f(CW\*(C`send\*(C'\fR command can be used to send an arbitrary command line to an exploder. The primary -exploder is \fIbuffchan\fR\|(8). +exploder is \fBbuffchan\fR\|(8). .PP Finally, \fBTm\fR feeds are the input to a funnel. The \fIparameter\fR field of the site should name the site handling articles for all of the funnel @@ -819,7 +823,7 @@ The syntax of the \fInewsfeeds\fR file i a staggering variety of feeds. \s-1INN\s0 is capable of interacting with a wide variety of programs that do various things with news articles. Far and away the most common two entries in \fInewsfeeds\fR, however, are file feeds -for \fInntpsend\fR\|(8) and funnel feeds for \fIinnfeed\fR\|(8). +for \fBnntpsend\fR\|(8) and funnel feeds for \fBinnfeed\fR\|(8). .PP The former look like this: .PP @@ -849,7 +853,7 @@ header will still be sent), which is com this will be logged in \fIpathlog\fR/news as going to the site \f(CW\*(C`example\*(C'\fR rather than \f(CW\*(C`feed.example.com\*(C'\fR. .PP -The typical feed entry for \fIinnfeed\fR\|(8) is a good example of a channel feed +The typical feed entry for \fBinnfeed\fR\|(8) is a good example of a channel feed that's the target of various funnel feeds (make sure the path to \fBinnfeed\fR is properly set): .PP @@ -860,7 +864,7 @@ is properly set): Note that the \fIpattern\fR for this feed is just \f(CW\*(C`!*\*(C'\fR so that it won't receive any articles directly. The feed should only receive those articles that would go to one of the funnel feeds that are feeding into -it. \fIinnfeed\fR\|(8) will receive one line per article on its standard input +it. \fBinnfeed\fR\|(8) will receive one line per article on its standard input containing the storage \s-1API\s0 token, the message \s-1ID,\s0 and a space-separated list of sites that should receive that article. .PP @@ -892,7 +896,7 @@ example of a fairly fancy program feed: .PP Remember that \f(CW%s\fR is replaced by the storage \s-1API\s0 token, so this retrieves the article and pipes it into \fBinnmail\fR (which is safer than -programs like \fIMail\fR\|(1) because it doesn't parse the body for tilde +programs like \fBMail\fR\|(1) because it doesn't parse the body for tilde commands) with a given subject line. Note the use of \f(CW\*(C`*\*(C'\fR in the command line and \fBW*\fR in the flags; this entry is designed to be used as the target of funnel feeds such as: @@ -915,7 +919,7 @@ at the \f(CW\*(C`mailer!\*(C'\fR site an which will mail the article to both Peter and Sue. .PP Finally, another very useful example of a channel feed: the standard -entry for \fIcontrolchan\fR\|(8). Make sure its path is properly set. +entry for \fBcontrolchan\fR\|(8). Make sure its path is properly set. .PP .Vb 3 \& controlchan!\e @@ -925,15 +929,15 @@ entry for \fIcontrolchan\fR\|(8). Make .PP This program only wants information about articles posted to a control newsgroup other than control.cancel, which due to the sorting of control -messages described in \fIinnd\fR\|(8) will send it all control messages except for +messages described in \fBinnd\fR\|(8) will send it all control messages except for cancel messages. In this case, we also exclude any article with a distribution of \f(CW\*(C`collabra\-internal\*(C'\fR. \fBcontrolchan\fR gets the storage \&\s-1API\s0 token, the name of the sending site (for processing old-style ihave and sendme control messages, be sure to read about \fIlogipaddr\fR in -\&\fIcontrolchan\fR\|(8)), and the message \s-1ID\s0 for each article. +\&\fBcontrolchan\fR\|(8)), and the message \s-1ID\s0 for each article. .PP For many other examples, including examples of the special \f(CW\*(C`ME\*(C'\fR site -entry, see the example \fInewsfeeds\fR file distributed with \s-1INN. \s0 Also see the +entry, see the example \fInewsfeeds\fR file distributed with \s-1INN.\s0 Also see the install documentation that comes with \s-1INN\s0 for information about setting up the standard newsfeeds entries used by most sites. .SH "HISTORY" @@ -944,5 +948,5 @@ and rewritten in \s-1POD\s0 by Russ Allb \&\f(CW$Id:\fR newsfeeds.pod 10283 2018\-05\-14 12:43:05Z 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), -\&\fIinnfeed\fR\|(8), \fIinnxmit\fR\|(8), \fInntpsend\fR\|(8), \fIuwildmat\fR\|(3). +\&\fBactive\fR\|(5), \fBbuffchan\fR\|(8), \fBcontrolchan\fR\|(8), \fBctlinnd\fR\|(8), \fBinn.conf\fR\|(5), \fBinnd\fR\|(8), +\&\fBinnfeed\fR\|(8), \fBinnxmit\fR\|(8), \fBnntpsend\fR\|(8), \fBuwildmat\fR\|(3). diff -Nurp inn-2.6.3/doc/man/newsgroups.5 inn-2.6.4/doc/man/newsgroups.5 --- inn-2.6.3/doc/man/newsgroups.5 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/newsgroups.5 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "NEWSGROUPS 5" -.TH NEWSGROUPS 5 "2016-11-06" "INN 2.6.3" "InterNetNews Documentation" +.TH NEWSGROUPS 5 "2016-11-06" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -140,7 +144,7 @@ newsgroups \- List of newsgroups and the .IX Header "DESCRIPTION" The file \fIpathdb\fR/newsgroups contains a list of newsgroups for which a short description is available. This file is generally updated by -\&\fIcontrolchan\fR\|(8) whenever a control message is received; it is used by +\&\fBcontrolchan\fR\|(8) whenever a control message is received; it is used by \&\fBnnrpd\fR in response to \s-1LIST NEWSGROUPS\s0 and is only meant to provide information to users. News readers often show the list of carried newsgroups along with these descriptions. @@ -167,7 +171,7 @@ by at least one tabulation: The first field is the name of the newsgroup. The second field is its description. .PP -You can get the \fInewsgroups\fR file of another \s-1NNTP\s0 server with \fIgetlist\fR\|(1). +You can get the \fInewsgroups\fR file of another \s-1NNTP\s0 server with \fBgetlist\fR\|(1). .SH "PREFERRED FORMAT FOR A ONE-LINE NEWSGROUP DESCRIPTION" .IX Header "PREFERRED FORMAT FOR A ONE-LINE NEWSGROUP DESCRIPTION" As far as the format of the \fInewsgroups\fR file is concerned, there is a @@ -261,4 +265,4 @@ written by David Lawrence \&\f(CW$Id:\fR newsgroups.pod 10097 2016\-11\-04 22:19:07Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIactive\fR\|(5), \fIcontrolchan\fR\|(8), \fIctlinnd\fR\|(8), \fIgetlist\fR\|(1), \fInnrpd\fR\|(8). +\&\fBactive\fR\|(5), \fBcontrolchan\fR\|(8), \fBctlinnd\fR\|(8), \fBgetlist\fR\|(1), \fBnnrpd\fR\|(8). diff -Nurp inn-2.6.3/doc/man/newslog.5 inn-2.6.4/doc/man/newslog.5 --- inn-2.6.3/doc/man/newslog.5 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/newslog.5 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "NEWSLOG 5" -.TH NEWSLOG 5 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH NEWSLOG 5 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -270,7 +274,7 @@ the article whose Message-ID is \f(CW\*( because it is posted to a poison newsgroup (a Perl or a Python filter located in \fIpathfilter\fR must have brought that reject along). .Sp -See the \*(L"\s-1LOGGING\*(R"\s0 section of the \fIinnd\fR\|(8) man page for more information about +See the \*(L"\s-1LOGGING\*(R"\s0 section of the \fBinnd\fR\|(8) man page for more information about the format of this log file. .Sp \&\fBinnreport\fR summarizes the rejected articles reported in this file @@ -382,7 +386,7 @@ to \s-1POD\s0 by Julien Elie. \&\f(CW$Id:\fR newslog.pod 9903 2015\-06\-20 17:20:46Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIcontrol.ctl\fR\|(5), \fIctlinnd\fR\|(8), \fIexpire\fR\|(8), \fIexpireover\fR\|(8), \fIexpirerm\fR\|(8), \fIinn.conf\fR\|(5), -\&\fIinnd\fR\|(8), \fIinnfeed.conf\fR\|(5), \fIinnreport\fR\|(8), \fIinnreport.conf\fR\|(5), \fInews.daily\fR\|(8), -\&\fInnrpd\fR\|(8), \fInntpsend\fR\|(8), \fIscanlogs\fR\|(8), \fIsend\-nntp\fR\|(8), \fIsend\-uucp\fR\|(8), \fIsyslog.conf\fR\|(5), -\&\fItally.control\fR\|(8). +\&\fBcontrol.ctl\fR\|(5), \fBctlinnd\fR\|(8), \fBexpire\fR\|(8), \fBexpireover\fR\|(8), \fBexpirerm\fR\|(8), \fBinn.conf\fR\|(5), +\&\fBinnd\fR\|(8), \fBinnfeed.conf\fR\|(5), \fBinnreport\fR\|(8), \fBinnreport.conf\fR\|(5), \fBnews.daily\fR\|(8), +\&\fBnnrpd\fR\|(8), \fBnntpsend\fR\|(8), \fBscanlogs\fR\|(8), \fBsend\-nntp\fR\|(8), \fBsend\-uucp\fR\|(8), \fBsyslog.conf\fR\|(5), +\&\fBtally.control\fR\|(8). diff -Nurp inn-2.6.3/doc/man/ninpaths.8 inn-2.6.4/doc/man/ninpaths.8 --- inn-2.6.3/doc/man/ninpaths.8 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/ninpaths.8 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "NINPATHS 8" -.TH NINPATHS 8 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH NINPATHS 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -302,4 +306,4 @@ clarity. This program is in the public \&\f(CW$Id:\fR ninpaths.pod 9383 2011\-12\-25 20:56:10Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fInewsfeeds\fR\|(5), \fIsendinpaths\fR\|(8). +\&\fBnewsfeeds\fR\|(5), \fBsendinpaths\fR\|(8). diff -Nurp inn-2.6.3/doc/man/nnrpd.8 inn-2.6.4/doc/man/nnrpd.8 --- inn-2.6.3/doc/man/nnrpd.8 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/nnrpd.8 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "NNRPD 8" -.TH NNRPD 8 "2018-12-02" "INN 2.6.3" "InterNetNews Documentation" +.TH NNRPD 8 "2020-11-22" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -145,19 +149,19 @@ nnrpd \- NNTP server for reader clients .IX Header "DESCRIPTION" \&\fBnnrpd\fR is an \s-1NNTP\s0 server for newsreaders. It accepts commands on its standard input and responds on its standard output. It is normally -invoked by \fIinnd\fR\|(8) with those descriptors attached to a remote client +invoked by \fBinnd\fR\|(8) with those descriptors attached to a remote client connection. \fBnnrpd\fR also supports running as a standalone daemon. .PP -Unlike \fIinnd\fR\|(8), \fBnnrpd\fR supports all \s-1NNTP\s0 commands for user-oriented +Unlike \fBinnd\fR\|(8), \fBnnrpd\fR supports all \s-1NNTP\s0 commands for user-oriented reading and posting. \fBnnrpd\fR uses the \fIreaders.conf\fR file to control who is authorized to access the Usenet database. .PP -On exit, \fBnnrpd\fR will report usage statistics through \fIsyslog\fR\|(3). +On exit, \fBnnrpd\fR will report usage statistics through \fBsyslog\fR\|(3). .PP \&\fBnnrpd\fR only reads config files (both \fIreaders.conf\fR and \fIinn.conf\fR) when it is spawned. You can therefore never change the behavior of a client that's already connected. If \fBnnrpd\fR is run from \fBinnd\fR (the -default) or from \fIinetd\fR\|(8), \fIxinetd\fR\|(8), or some equivalent, a new \fBnnrpd\fR +default) or from \fBinetd\fR\|(8), \fBxinetd\fR\|(8), or some equivalent, a new \fBnnrpd\fR process is spawned for every connection and therefore any changes to configuration files will be immediately effective for all new connections. If you are instead running \fBnnrpd\fR with the \fB\-D\fR option, @@ -167,12 +171,12 @@ The \fIinn.conf\fR setting \fInnrpdflags options below to instances of \fBnnrpd\fR that are spawned directly from \&\fBinnd\fR. Many options only make sense when \fB\-D\fR is used, so these options should not be used with \fInnrpdflags\fR. See also the discussion -of \fInnrpdflags\fR in \fIinn.conf\fR\|(5). +of \fInnrpdflags\fR in \fBinn.conf\fR\|(5). .PP When \fInnrpdloadlimit\fR in \fIinn.conf\fR is not \f(CW0\fR, it will also reject connections if the load average is greater than that value (typically \&\f(CW16\fR). \fBnnrpd\fR can also prevent high-volume posters from abusing -your resources. See the discussion of exponential backoff in \fIinn.conf\fR\|(5). +your resources. See the discussion of exponential backoff in \fBinn.conf\fR\|(5). .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-4\fR \fIaddress\fR" 4 @@ -209,7 +213,7 @@ addresses with different settings.) If specified, this parameter causes \fBnnrpd\fR to operate as a daemon. That is, it detaches itself and runs in the background, forking a process for every connection. By default, \fBnnrpd\fR listens on the \s-1NNTP\s0 port (119), so -either \fIinnd\fR\|(8) has to be started on another port or the \fB\-p\fR parameter +either \fBinnd\fR\|(8) has to be started on another port or the \fB\-p\fR parameter used. Note that with this parameter, \fBnnrpd\fR continues running until killed. This means that it reads \fIinn.conf\fR once on startup and never again until restarted. \fBnnrpd\fR should therefore be restarted if @@ -244,10 +248,10 @@ speed. .IP "\fB\-o\fR" 4 .IX Item "-o" The \fB\-o\fR flag causes all articles to be spooled instead of sending -them to \fIinnd\fR\|(8). \fBrnews\fR with the \fB\-U\fR flag should be invoked from +them to \fBinnd\fR\|(8). \fBrnews\fR with the \fB\-U\fR flag should be invoked from cron on a regular basis to take care of these articles. This flag is -useful if \fIinnd\fR\|(8) is accepting articles and \fBnnrpd\fR is started -standalone or using \fIinetd\fR\|(8). +useful if \fBinnd\fR\|(8) is accepting articles and \fBnnrpd\fR is started +standalone or using \fBinetd\fR\|(8). .IP "\fB\-p\fR \fIport\fR" 4 .IX Item "-p port" The \fB\-p\fR parameter instructs \fBnnrpd\fR to listen on \fIport\fR when @@ -260,12 +264,12 @@ awaiting connections when started as a s .IP "\fB\-r\fR \fIreason\fR" 4 .IX Item "-r reason" If the \fB\-r\fR flag is used, then \fBnnrpd\fR will reject the incoming -connection giving \fIreason\fR as the text. This flag is used by \fIinnd\fR\|(8) +connection giving \fIreason\fR as the text. This flag is used by \fBinnd\fR\|(8) when it is paused or throttled. \fIreason\fR should be encoded in \s-1UTF\-8.\s0 .IP "\fB\-s\fR \fIpadding\fR" 4 .IX Item "-s padding" As each command is received, \fBnnrpd\fR tries to change its \f(CW\*(C`argv\*(C'\fR -array so that \fIps\fR\|(1) will print out the command being executed. To get +array so that \fBps\fR\|(1) will print out the command being executed. To get a full display, the \fB\-s\fR flag may be used with a long string as its argument, which will be overwritten when the program changes its title. @@ -280,13 +284,13 @@ with \s-1TLS\s0 support, see \*(L"\s-1TL .IX Item "-t" If the \fB\-t\fR flag is used, then all client commands and initial responses will be traced by reporting them in syslog. This flag is set -by \fIinnd\fR\|(8) under the control of the \fIctlinnd\fR\|(8) \f(CW\*(C`trace\*(C'\fR command, and -is toggled upon receipt of a \s-1SIGHUP\s0; see \fIsignal\fR\|(2). +by \fBinnd\fR\|(8) under the control of the \fBctlinnd\fR\|(8) \f(CW\*(C`trace\*(C'\fR command, and +is toggled upon receipt of a \s-1SIGHUP\s0; see \fBsignal\fR\|(2). .SH "TLS SUPPORT" .IX Header "TLS SUPPORT" If \s-1INN\s0 is built with \fB\-\-with\-openssl\fR or if the OpenSSL \s-1SSL\s0 and crypto libraries are found at configure time, \fBnnrpd\fR will support news reading -over \s-1TLS \s0(also known as \s-1SSL\s0). For clients that use the \s-1STARTTLS\s0 command, +over \s-1TLS\s0 (also known as \s-1SSL\s0). For clients that use the \s-1STARTTLS\s0 command, no special configuration is needed beyond creating a \s-1TLS/SSL\s0 certificate for the server. You should do this in exactly the same way that you would generate a certificate for a web server. @@ -321,8 +325,9 @@ You then have to set these \fIinn.conf\f \& tlskeyfile: /key.pem .Ve .PP -In case you have a certificate authority root certificate, you can also -set \fItlscafile\fR to its path. +Note that unlike Apache's \fISSLCertificateFile\fR directive, \fItlscertfile\fR +should not contain a concatenation of certificates. Instead, if you have +a certificate authority root certificate, set \fItlscafile\fR to its path. .PP There are two common ways for a news client to negotiate a \s-1TLS\s0 connection: either via the use of a dedicated port (usually 563) @@ -369,7 +374,7 @@ pattern. The default is the current gro .Sp Note that \s-1LIST NEWSGROUPS\s0 should be used instead of \s-1XGTITLE.\s0 .IP "2." 4 -The \s-1XHDR \s0\fIheader\fR [\fImessage-ID\fR|\fIrange\fR] command is implemented. It +The \s-1XHDR\s0 \fIheader\fR [\fImessage-ID\fR|\fIrange\fR] command is implemented. It returns a \f(CW221\fR reply code, followed by specific headers for the specified range; the default is to return the data for the current article. See \s-1RFC\s0\ 2980. @@ -382,11 +387,11 @@ return the data for the current article. .Sp Note that \s-1OVER\s0 should be used instead of \s-1XOVER.\s0 .IP "4." 4 -A new command, \s-1XPAT \s0\fIheader\fR \fImessage-ID\fR|\fIrange\fR \fIpattern\fR +A new command, \s-1XPAT\s0 \fIheader\fR \fImessage-ID\fR|\fIrange\fR \fIpattern\fR [\fIpattern\fR ...], is provided. The first argument is the case-insensitive name of the header to be searched. The second argument is either an article range or a single message-ID, as specified in \s-1RFC\s0\ 2980. The third -argument is a \fIuwildmat\fR\|(3)\-style pattern; if there are additional arguments, +argument is a \fBuwildmat\fR\|(3)\-style pattern; if there are additional arguments, they are joined together separated by a single space to form the complete pattern. This command is similar to the \s-1XHDR\s0 command. It returns a \f(CW221\fR response code, followed by the text response of all article numbers that @@ -407,7 +412,7 @@ support added by Rob Robertston 0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "NNTPSEND 8" -.TH NNTPSEND 8 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH NNTPSEND 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -165,7 +169,7 @@ flags for that site. Any flags given on default flags for the site. .PP An alternative to \fBnntpsend\fR can be \fBinnduct\fR, mentioned in the -\&\fIinnfeed\fR\|(8) man page. +\&\fBinnfeed\fR\|(8) man page. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-D\fR, \fB\-d\fR" 2 @@ -192,10 +196,10 @@ after flushing the site before launching The \fB\-a\fR, \fB\-c\fR, \fB\-l\fR, \fB\-P\fR \fIportnum\fR, \fB\-p\fR, \fB\-r\fR, \fB\-T\fR \fItimelimit\fR and \fB\-t\fR \fItimeout\fR flags are passed on to the child \fBinnxmit\fR program. The \fB\-N\fR flag is passed as \fB\-s\fR flag to the child \fBinnxmit\fR program. -See \fIinnxmit\fR\|(8) for more details. +See \fBinnxmit\fR\|(8) for more details. .Sp Note that if the \fB\-p\fR flag is used, then no connection is made and no -articles are fed to the remote site. It is useful to have \fIcron\fR\|(8) invoke +articles are fed to the remote site. It is useful to have \fBcron\fR\|(8) invoke \&\fBnntpsend\fR with this flag in case a site cannot be reached for an extended period of time. .SH "EXAMPLES" @@ -248,5 +252,5 @@ Written by Landon Curt Noll 0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "NNTPSEND.CTL 5" -.TH NNTPSEND.CTL 5 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH NNTPSEND.CTL 5 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -159,7 +163,7 @@ that the flag \fB\-a\fR is always given If no \fB\-t\fR flag is given in this field or on the \fBnntpsend\fR command line, \&\f(CW\*(C`\-t 180\*(C'\fR will be given to \fBinnxmit\fR. .PP -See \fInntpsend\fR\|(8) for an example of \fInntpsend.ctl\fR config file. +See \fBnntpsend\fR\|(8) for an example of \fInntpsend.ctl\fR config file. .SH "HISTORY" .IX Header "HISTORY" Written by Landon Curt Noll for InterNetNews. Converted to @@ -168,4 +172,4 @@ Written by Landon Curt Noll 0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "OVDB 5" -.TH OVDB 5 "2018-03-18" "INN 2.6.3" "InterNetNews Documentation" +.TH OVDB 5 "2021-01-21" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -161,7 +165,7 @@ 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 +\&\fBovdb_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, @@ -182,15 +186,17 @@ 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.9\ \s-1KB\s0 per article, +so you'll need at least 4.5\ \s-1GB\s0 of disk space for 5 million articles. +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 the ovdb overview method, set the \fIovmethod\fR parameter in @@ -214,7 +220,7 @@ Size of the memory pool cache, in kiloby 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 +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). @@ -272,7 +278,7 @@ a lot of overflow pages. Changing this already-established database. .IP "\fImaxlocks\fR" 4 .IX Item "maxlocks" -Sets the Berkeley\ \s-1DB \s0\fIlk_max\fR parameter, which is the maximum number of +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" @@ -406,10 +412,10 @@ that you're running. .SH "RUNNING" .IX Header "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 +program. See the \fBovdb_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 \fBovdb_monitor\fR 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" @@ -461,11 +467,11 @@ legacy \fIov3.c\fR file. .IX Header "HISTORY" Written by Heath Kehoe for InterNetNews. .PP -\&\f(CW$Id:\fR ovdb.pod 10241 2018\-02\-04 15:38:19Z iulius $ +\&\f(CW$Id:\fR ovdb.pod 10525 2021\-01\-20 11:51:15Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\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). +\&\fBinn.conf\fR\|(5), \fBinnd\fR\|(8), \fBmakehistory\fR\|(8), \fBnnrpd\fR\|(8), \fBovdb_init\fR\|(8), +\&\fBovdb_monitor\fR\|(8), \fBovdb_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 (). diff -Nurp inn-2.6.3/doc/man/ovdb_init.8 inn-2.6.4/doc/man/ovdb_init.8 --- inn-2.6.3/doc/man/ovdb_init.8 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/ovdb_init.8 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "OVDB_INIT 8" -.TH OVDB_INIT 8 "2018-03-18" "INN 2.6.3" "InterNetNews Documentation" +.TH OVDB_INIT 8 "2018-03-18" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -186,7 +190,7 @@ There are two situations in which the da upgraded: .IP "\(bu" 4 You upgrade the Berkeley\ \s-1DB\s0 library to a newer version, for example -from 2.7.7 to 3.1.17. In this case, the Berkeley\ \s-1DB\s0 db\->\fIupgrade()\fR +from 2.7.7 to 3.1.17. In this case, the Berkeley\ \s-1DB\s0 db\->\fBupgrade()\fR method is used. .IP "\(bu" 4 You upgrade ovdb to a newer major version; i.e., ovdb\-1.0 (shipped with @@ -208,7 +212,7 @@ right Berkeley\ \s-1DB\s0 directory (e.g .IP "3." 4 Do a \f(CW\*(C`make\*(C'\fR; .IP "4." 4 -Shut down \s-1INN \s0(e.g., with \f(CW\*(C`rc.news stop\*(C'\fR) and be sure to kill all +Shut down \s-1INN\s0 (e.g., with \f(CW\*(C`rc.news stop\*(C'\fR) and be sure to kill all instances of \fBnnrpd\fR as well; .IP "5." 4 Do a \f(CW\*(C`make update\*(C'\fR to install the new binaries; @@ -225,4 +229,4 @@ Written by Heath Kehoe 0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "OVDB_MONITOR 8" -.TH OVDB_MONITOR 8 "2018-03-18" "INN 2.6.3" "InterNetNews Documentation" +.TH OVDB_MONITOR 8 "2018-03-18" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -162,4 +166,4 @@ Written by Heath Kehoe 0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "OVDB_SERVER 8" -.TH OVDB_SERVER 8 "2018-01-28" "INN 2.6.3" "InterNetNews Documentation" +.TH OVDB_SERVER 8 "2018-01-28" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -160,4 +164,4 @@ Written by Heath Kehoe 0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "OVDB_STAT 8" -.TH OVDB_STAT 8 "2018-03-18" "INN 2.6.3" "InterNetNews Documentation" +.TH OVDB_STAT 8 "2018-03-18" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -172,15 +176,15 @@ Output is presented in \s-1HTML\s0 forma .IP "\fB\-k\fR" 4 .IX Item "-k" Displays lock region statistics, as returned by the Berkeley\ \s-1DB\s0 -\&\fIlock_stat()\fR call. +\&\fBlock_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. +\&\fBlog_stat()\fR call. .IP "\fB\-m\fR" 4 .IX Item "-m" Displays global memory pool statistics, as returned by the -Berkeley\ \s-1DB\s0 \fImemp_stat()\fR call. +Berkeley\ \s-1DB\s0 \fBmemp_stat()\fR call. .IP "\fB\-M\fR" 4 .IX Item "-M" Same as \fB\-m\fR, and also displays memory pool statistics for each @@ -188,14 +192,14 @@ 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. +\&\fBtxn_stat()\fR call. .IP "\fB\-v\fR" 4 .IX Item "-v" Displays ovdb version, and Berkeley\ \s-1DB\s0 version. .IP "\fB\-d\fR \fIdatabase\fR" 4 .IX Item "-d database" Displays information about the given database, as returned by the -Berkeley\ \s-1DB\s0 db\->\fIstat()\fR call. This operation may take a long time +Berkeley\ \s-1DB\s0 db\->\fBstat()\fR call. This operation may take a long time on busy systems (several minutes or more). .SH "WARNINGS" .IX Header "WARNINGS" @@ -210,4 +214,4 @@ Written by Heath Kehoe 0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "OVERCHAN 8" -.TH OVERCHAN 8 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH OVERCHAN 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -182,4 +186,4 @@ Allbery . \&\f(CW$Id:\fR overchan.pod 9767 2014\-12\-07 21:13:43Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIinn.conf\fR\|(5), \fIinnd\fR\|(8), \fInewsfeeds\fR\|(5) +\&\fBinn.conf\fR\|(5), \fBinnd\fR\|(8), \fBnewsfeeds\fR\|(5) diff -Nurp inn-2.6.3/doc/man/passwd.nntp.5 inn-2.6.4/doc/man/passwd.nntp.5 --- inn-2.6.3/doc/man/passwd.nntp.5 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/passwd.nntp.5 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "PASSWD.NNTP 5" -.TH PASSWD.NNTP 5 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH PASSWD.NNTP 5 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -140,7 +144,7 @@ passwd.nntp \- Passwords for connecting .IX Header "DESCRIPTION" The file \fIpathetc\fR/passwd.nntp contains host / name / password triplets for use when authenticating client programs to \s-1NNTP\s0 servers. -This file is normally interpreted by \fINNTPsendpassword()\fR in \fIlibinn\fR\|(3). +This file is normally interpreted by \fBNNTPsendpassword()\fR in \fBlibinn\fR\|(3). Blank lines and lines beginning with a number sign (\f(CW\*(C`#\*(C'\fR) are ignored. All other lines should consist of three or four fields separated by colons: @@ -182,4 +186,4 @@ Written by Rich \f(CW$alz\fR 0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "PERL-NOCEM 8" -.TH PERL-NOCEM 8 "2018-03-18" "INN 2.6.3" "InterNetNews Documentation" +.TH PERL-NOCEM 8 "2020-11-22" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -161,8 +165,10 @@ Processing NoCeM notices is easy to set Import the keys of the NoCeM issuers you trust in order to check the authenticity of their notices. You can do: .Sp -.Vb 2 -\& gpg \-\-no\-default\-keyring \-\-primary\-keyring /pgp/ncmring.gpg \-\-import +.Vb 4 +\& gpg1 \-\-no\-default\-keyring \-\-primary\-keyring /pgp/ncmring.gpg \e +\& \-\-no\-options \-\-allow\-non\-selfsigned\-uid \-\-no\-permission\-warning \e +\& \-\-batch \-\-import \& chmod 644 /pgp/ncmring.gpg .Ve .Sp @@ -173,10 +179,10 @@ have to create the directory /p automatically generate the \fIncmring.gpg\fR file) and make sure the news user can read this file, once generated. .Sp -For old PGP-generated keys, you may have to use -\&\fB\-\-allow\-non\-selfsigned\-uid\fR if they are not properly self-signed, -but anyone creating a key really should self-sign the key. Current \s-1PGP\s0 -implementations do this automatically. +As a few NoCeM issuers are still using old PGP-generated keys, you +may have to use \fBgpg1\fR with various legacy options in command-line +(like in the example above) instead of more recent versions of \fBgpg\fR +that no longer accept such keys. .Sp The keys of NoCeM issuers can be found in the web site of \fIThe NoCeM Registry\fR: . You can even @@ -246,7 +252,7 @@ The Subject: header is not checked for t check for the presence of the References: header. .PP The Newsgroups: pseudo header is not checked, but this can be done in -\&\fIlocal_want_cancel_id()\fR. +\&\fBlocal_want_cancel_id()\fR. .PP The Hierarchies: header is ignored. .SH "HISTORY" @@ -255,7 +261,7 @@ Copyright 2000 by Miquel van Smoorenburg .PP Copyright 2001 by Marco d'Itri . .PP -\&\f(CW$Id:\fR perl\-nocem.in 10245 2018\-02\-16 21:11:59Z iulius $ +\&\f(CW$Id:\fR perl\-nocem.in 10399 2020\-11\-12 20:24:35Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIgpg\fR\|(1), \fIgpgv\fR\|(1), \fIgrephistory\fR\|(1), \fIinn.conf\fR\|(5), \fInewsfeeds\fR\|(5), \fIpgp\fR\|(1). +\&\fBgpg\fR\|(1), \fBgpgv\fR\|(1), \fBgrephistory\fR\|(1), \fBinn.conf\fR\|(5), \fBnewsfeeds\fR\|(5), \fBpgp\fR\|(1). diff -Nurp inn-2.6.3/doc/man/pgpverify.1 inn-2.6.4/doc/man/pgpverify.1 --- inn-2.6.3/doc/man/pgpverify.1 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/pgpverify.1 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "PGPVERIFY 1" -.TH PGPVERIFY 1 "2018-12-29" "INN 2.6.3" "InterNetNews Documentation" +.TH PGPVERIFY 1 "2021-01-21" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -155,7 +159,7 @@ errors, what temporary directory to use, Otherwise, all of those parameters can be set by editing the beginning of this script. .PP -By default, when running as part of \s-1INN, \s0\fBpgpverify\fR expects the \s-1PGP\s0 key +By default, when running as part of \s-1INN,\s0 \fBpgpverify\fR expects the \s-1PGP\s0 key ring to be found in \fIpathetc\fR/pgp (as either \fIpubring.pgp\fR or \&\fIpubring.gpg\fR depending on whether \s-1PGP\s0 or GnuPG is used to verify signatures). If that directory doesn't exist, it will fall back on using @@ -183,7 +187,7 @@ this key. In case the signature is vali .IP "\fB\-\-test\fR" 4 .IX Item "--test" The \fB\-\-test\fR flag causes \fBpgpverify\fR to print out the input that it is -passing to \s-1PGP \s0(which is a reconstructed version of the input that +passing to \s-1PGP\s0 (which is a reconstructed version of the input that supposedly created the control message) as well as the output from \s-1PGP\s0's analysis of the message. .SH "EXIT STATUS" @@ -294,17 +298,17 @@ permission. .PP \&\s-1THIS SOFTWARE IS PROVIDED BY UUNET \*(L"AS IS\*(R" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\s0 \s-1IN NO EVENT SHALL UUNET BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES \s0(\s-1INCLUDING, BUT NOT LIMITED +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\s0 (\s-1INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES\s0; \s-1LOSS OF USE, DATA, OR PROFITS\s0; \s-1OR BUSINESS INTERRUPTION\s0) \s-1HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT \s0(\s-1INCLUDING +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\s0 (\s-1INCLUDING NEGLIGENCE OR OTHERWISE\s0) \s-1ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\s0 .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIgpg\fR\|(1), \fIgpgv\fR\|(1), \fIpgp\fR\|(1). +\&\fBgpg\fR\|(1), \fBgpgv\fR\|(1), \fBpgp\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.3/doc/man/procbatch.8 inn-2.6.4/doc/man/procbatch.8 --- inn-2.6.3/doc/man/procbatch.8 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/procbatch.8 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "PROCBATCH 8" -.TH PROCBATCH 8 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH PROCBATCH 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -261,4 +265,4 @@ memo by Russ Allbery. \&\f(CW$Id:\fR procbatch.pod 9371 2011\-09\-04 09:21:43Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIfilechan\fR\|(8), \fIinnfeed\fR\|(8), \fIinnxmit\fR\|(8), \fInews.daily\fR\|(8). +\&\fBfilechan\fR\|(8), \fBinnfeed\fR\|(8), \fBinnxmit\fR\|(8), \fBnews.daily\fR\|(8). diff -Nurp inn-2.6.3/doc/man/prunehistory.8 inn-2.6.4/doc/man/prunehistory.8 --- inn-2.6.3/doc/man/prunehistory.8 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/prunehistory.8 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "PRUNEHISTORY 8" -.TH PRUNEHISTORY 8 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH PRUNEHISTORY 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -141,7 +145,7 @@ prunehistory \- Remove tokens from Usene \&\fBprunehistory\fR [\fB\-p\fR] [\fB\-f\fR \fIfilename\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" -\&\fBprunehistory\fR modifies a \fIhistory\fR\|(5)\-format text file to \*(L"remove\*(R" +\&\fBprunehistory\fR modifies a \fBhistory\fR\|(5)\-format text file to \*(L"remove\*(R" a set of tokens from it. The tokens are removed by overwriting them with spaces, so that the size and position of any following entries does not change. This has an effect similar to expiring the article, in @@ -150,7 +154,7 @@ that it is still mentioned in the histor \&\fBprunehistory\fR reads the standard input. The input is taken as a set of lines. Blank lines and lines starting with a number sign (\f(CW\*(C`#\*(C'\fR) are ignored. All other lines should consist of a message-ID followed by zero or more other fields -(which are ignored). The message-ID is used as the \fIdbz\fR\|(3) key to get +(which are ignored). The message-ID is used as the \fBdbz\fR\|(3) key to get an offset into the text file. Since \fBinnd\fR only appends to the text file, \&\fBprunehistory\fR does not need to have any interaction with it. .SH "OPTIONS" @@ -173,4 +177,4 @@ Written by Rich \f(CW$alz\fR 0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "PULLNEWS 1" -.TH PULLNEWS 1 "2018-05-14" "INN 2.6.3" "InterNetNews Documentation" +.TH PULLNEWS 1 "2018-05-14" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -327,7 +331,7 @@ value, the less gets logged. The defaul .IX Item "-r file" Rather than feeding the downloaded articles to a destination server, instead create a batch file that can later be fed to a server using \fBrnews\fR. See -\&\fIrnews\fR\|(1) for more information about the batch file format. +\&\fBrnews\fR\|(1) for more information about the batch file format. .IP "\fB\-R\fR" 4 .IX Item "-R" Be a reader (use \s-1MODE READER\s0 and \s-1POST\s0 commands) to the downstream @@ -428,7 +432,7 @@ when \fBpullnews\fR is run as the news u user's home directory. .SH "HISTORY" .IX Header "HISTORY" -\&\fBpullnews\fR was written by James Brister for \s-1INN. \s0 The documentation was +\&\fBpullnews\fR was written by James Brister for \s-1INN.\s0 The documentation was rewritten in \s-1POD\s0 by Russ Allbery . .PP Geraint A.\ Edwards greatly improved \fBpullnews\fR, adding no more than 16\ new @@ -438,4 +442,4 @@ contrib script by Kai Henningsen, adding \&\f(CW$Id:\fR pullnews.pod 10283 2018\-05\-14 12:43:05Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIincoming.conf\fR\|(5), \fIrnews\fR\|(1). +\&\fBincoming.conf\fR\|(5), \fBrnews\fR\|(1). diff -Nurp inn-2.6.3/doc/man/qio.3 inn-2.6.4/doc/man/qio.3 --- inn-2.6.3/doc/man/qio.3 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/qio.3 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "qio 3" -.TH qio 3 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH qio 3 "2021-01-04" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -163,7 +167,7 @@ qio \- Quick I/O routines for reading fi .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" -The routines described in this manual page are part of \fIlibinn\fR\|(3). They +The routines described in this manual page are part of \fBlibinn\fR\|(3). They are used to provide quick read access to files; the \s-1QIO\s0 routines use buffering adapted to the block size of the device, similar to stdio, but with a more convenient syntax for reading newline-terminated lines. \s-1QIO\s0 @@ -174,13 +178,10 @@ The \s-1QIOSTATE\s0 structure returned b analog to stdio's \s-1FILE\s0 structure and should be treated as a black box by all users of these routines. Only the above \s-1API\s0 should be used. .PP -\&\fBQIOopen\fR opens the given file for reading. For regular files, if your -system provides that information and the size is reasonable, \s-1QIO\s0 will use -the block size of the underlying file system as its buffer size; -otherwise, it will default to a buffer of 8\ \s-1KB. \s0 Returns a pointer to use -for subsequent calls, or \s-1NULL\s0 on error. \fBQIOfdopen\fR performs the same -operation except on an already-open file descriptor (\fIfd\fR must designate -a file open for reading). +\&\fBQIOopen\fR opens the given file for reading with a buffer size of 32KiB. +Returns a pointer to use for subsequent calls, or \s-1NULL\s0 on error. +\&\fBQIOfdopen\fR performs the same operation except on an already-open file +descriptor (\fIfd\fR must designate a file open for reading). .PP \&\fBQIOclose\fR closes the open file and releases any resources used by the \&\s-1QIOSTATE\s0 structure. The \s-1QIOSTATE\s0 pointer should not be used again after @@ -190,9 +191,9 @@ it has been passed to this function. a pointer to it, with the trailing newline replaced by nul. The returned pointer is a pointer into a buffer in the \s-1QIOSTATE\s0 object and therefore will remain valid until \fBQIOclose\fR is called on that object. If \s-1EOF\s0 is -reached, an error occurs, or if the line is longer than the buffer size, -\&\s-1NULL\s0 is returned instead. To distinguish between the error cases, use -\&\fBQIOerror\fR and \fBQIOtoolong\fR. +reached, an error occurs, or if the line is longer than the buffer size +(32KiB), \s-1NULL\s0 is returned instead. To distinguish between the error +cases, use \fBQIOerror\fR and \fBQIOtoolong\fR. .PP \&\fBQIOfileno\fR returns the descriptor of the open file. .PP @@ -204,7 +205,7 @@ reached, an error occurs, or if the line reads the first block of the file in anticipation of future reads. It returns 0 if successful and \-1 on error. .PP -\&\fBQIOtell\fR returns the current value of the read pointer (the \fIlseek\fR\|(2) +\&\fBQIOtell\fR returns the current value of the read pointer (the \fBlseek\fR\|(2) offset at which the next line will start). .PP \&\fBQIOerror\fR returns true if there was an error in the last call to @@ -243,4 +244,4 @@ printing out each line preceded by its o Written by Rich \f(CW$alz\fR for InterNetNews. Updated by Russ Allbery . .PP -\&\f(CW$Id:\fR qio.pod 9767 2014\-12\-07 21:13:43Z iulius $ +\&\f(CW$Id:\fR qio.pod 10457 2020\-12\-19 06:10:49Z eagle $ diff -Nurp inn-2.6.3/doc/man/radius.8 inn-2.6.4/doc/man/radius.8 --- inn-2.6.3/doc/man/radius.8 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/radius.8 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "RADIUS 8" -.TH RADIUS 8 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH RADIUS 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -144,14 +148,14 @@ radius \- nnrpd RADIUS password authenti \&\fBradius\fR is an \fBnnrpd\fR authenticator, accepting a username and password from \fBnnrpd\fR (given to \fBnnrpd\fR by a reader connection) and attempting to authenticate that username and password against a \s-1RADIUS\s0 -server. See \fIreaders.conf\fR\|(5) for more information on how to configure +server. See \fBreaders.conf\fR\|(5) for more information on how to configure an \fBnnrpd\fR authenticator. It is useful for a site that already does user authentication via \s-1RADIUS\s0 and wants to authenticate news reading connections as well. .PP By default, \fBradius\fR reads \fIpathetc\fR/inn\-radius.conf for configuration information, but a different configuration file can be specified with -\&\fB\-f\fR. See \fIinn\-radius.conf\fR\|(5) for a description of the configuration +\&\fB\-f\fR. See \fBinn\-radius.conf\fR\|(5) for a description of the configuration file. .SH "OPTIONS" .IX Header "OPTIONS" @@ -164,7 +168,7 @@ information. Print out a usage message and exit. .SH "EXAMPLE" .IX Header "EXAMPLE" -The following \fIreaders.conf\fR\|(5) fragment tells \fBnnrpd\fR to authenticate +The following \fBreaders.conf\fR\|(5) fragment tells \fBnnrpd\fR to authenticate all connections using this authenticator: .PP .Vb 5 @@ -196,4 +200,4 @@ documentation was written by Russ Allber \&\f(CW$Id:\fR radius.pod 9940 2015\-09\-04 12:58:15Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIinn\-radius.conf\fR\|(5), \fInnrpd\fR\|(8), \fIreaders.conf\fR\|(5). +\&\fBinn\-radius.conf\fR\|(5), \fBnnrpd\fR\|(8), \fBreaders.conf\fR\|(5). diff -Nurp inn-2.6.3/doc/man/rc.news.8 inn-2.6.4/doc/man/rc.news.8 --- inn-2.6.3/doc/man/rc.news.8 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/rc.news.8 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "RC.NEWS 8" -.TH RC.NEWS 8 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH RC.NEWS 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -208,7 +212,7 @@ should at minimum check for this and err user \s-1ID.\s0 .SH "HISTORY" .IX Header "HISTORY" -// \s-1FIXME: \s0 any attribution for \fIrc.news\fR itself? +// \s-1FIXME:\s0 any attribution for \fIrc.news\fR itself? .PP This manual page written by Jeffrey M.\ Vinocur for InterNetNews. @@ -216,4 +220,4 @@ InterNetNews. \&\f(CW$Id:\fR rc.news.pod 9723 2014\-09\-24 17:54:24Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIctlinnd\fR\|(8), \fIcnfsstat\fR\|(8), \fIexpirerm\fR\|(8), \fIinn.conf\fR\|(5), \fIinnwatch\fR\|(8), \fIovdb\fR\|(5). +\&\fBctlinnd\fR\|(8), \fBcnfsstat\fR\|(8), \fBexpirerm\fR\|(8), \fBinn.conf\fR\|(5), \fBinnwatch\fR\|(8), \fBovdb\fR\|(5). diff -Nurp inn-2.6.3/doc/man/readers.conf.5 inn-2.6.4/doc/man/readers.conf.5 --- inn-2.6.3/doc/man/readers.conf.5 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/readers.conf.5 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "READERS.CONF 5" -.TH READERS.CONF 5 "2018-05-14" "INN 2.6.3" "InterNetNews Documentation" +.TH READERS.CONF 5 "2018-05-14" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -138,7 +142,7 @@ readers.conf \- Access control and configuration for nnrpd .SH "DESCRIPTION" .IX Header "DESCRIPTION" -\&\fIreaders.conf\fR in \fIpathetc\fR specifies access control for \fInnrpd\fR\|(8). It +\&\fIreaders.conf\fR in \fIpathetc\fR specifies access control for \fBnnrpd\fR\|(8). It controls who is allowed to connect as a news reader and what they're allowed to do after they connect. nnrpd reads this file when it starts up. This generally means that any changes take effect immediately on all @@ -202,7 +206,7 @@ sometimes just \*(L"\*(R" if n .PP If \fInnrpdauthsender\fR is set in \fIinn.conf\fR, the user identity is also put into the Sender: header of posts made by that user. See the documentation -of that option in \fIinn.conf\fR\|(5) for more details. +of that option in \fBinn.conf\fR\|(5) for more details. .PP An auth group definition looks like: .PP @@ -255,7 +259,7 @@ a different identity than the one assign it is matched against the available access groups again and the actions the user is authorized to do may change. The most common to use is \fBckpasswd\fR, which supports several ways of checking passwords -including using \s-1PAM. \s0 See the \fIckpasswd\fR\|(8) man page for more details. +including using \s-1PAM.\s0 See the \fBckpasswd\fR\|(8) man page for more details. .PP When matching auth groups, the last auth group in the file that matches a given connection and username/password combination is used. @@ -287,7 +291,7 @@ use the form: and matching users will be able to read any group that matches and post to any group that matches . You can also set several other things in the access group as well as override -various \fIinn.conf\fR\|(5) parameters for just a particular group of users. +various \fBinn.conf\fR\|(5) parameters for just a particular group of users. .PP Just like with auth groups, when matching access groups the last matching one in the file is used to determine the user's permissions. There is @@ -430,12 +434,12 @@ A simple command line for a user authent not supported). If a full path is not given, the program executed must be located in the \fIpathbin\fR/auth/passwd directory. An authenticator is a program used to handle a user-supplied username and password, via a -mechanism such as \s-1AUTHINFO USER/PASS. \s0 Like with res:, one auth group can +mechanism such as \s-1AUTHINFO USER/PASS.\s0 Like with res:, one auth group can have multiple auth: parameters; they will be tried in order and the results of the first successful one will be used. See also perl_auth: below. .Sp -The most common authenticator to use is \fIckpasswd\fR\|(8); see its man page for +The most common authenticator to use is \fBckpasswd\fR\|(8); see its man page for more information. .IP "\fBperl_auth:\fR" 4 .IX Item "perl_auth:" @@ -572,7 +576,7 @@ The client may read articles. The client may post articles. .IP "I" 3 .IX Item "I" -The client may inject articles with \s-1IHAVE. \s0 Note that in order to inject +The client may inject articles with \s-1IHAVE.\s0 Note that in order to inject articles with the \s-1IHAVE\s0 command, the user must also have \s-1POST\s0 permission (the \f(CW\*(C`P\*(C'\fR option). Articles injected with \s-1IHAVE\s0 are treated as though they were injected with \s-1POST,\s0 that is to say such articles must not @@ -589,7 +593,7 @@ The client may use the \s-1NEWNEWS\s0 co .IP "L" 3 .IX Item "L" The client may post to newsgroups that are set to disallow local posting -(status fields \f(CW\*(C`j\*(C'\fR, \f(CW\*(C`n\*(C'\fR and \f(CW\*(C`x\*(C'\fR in the \fIactive\fR\|(5) file). +(status fields \f(CW\*(C`j\*(C'\fR, \f(CW\*(C`n\*(C'\fR and \f(CW\*(C`x\*(C'\fR in the \fBactive\fR\|(5) file). .RE .RS 4 .Sp @@ -628,7 +632,7 @@ limiting is applied to the pre-encryptio .IP "\fBlocaltime:\fR" 4 .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 +posted article, \fBnnrpd\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 is added according to the behaviour of the \fIaddinjectiondate\fR parameter in \fIinn.conf\fR, and @@ -642,7 +646,7 @@ but whose clients don't for some reason, server to be in the same time zone as the client. .IP "\fBnewsmaster:\fR" 4 .IX Item "newsmaster:" -Used as the contact address in the help message returned by \fInnrpd\fR\|(8), if +Used as the contact address in the help message returned by \fBnnrpd\fR\|(8), if the virtualhost: parameter is set to true. .IP "\fBstrippath:\fR" 4 .IX Item "strippath:" @@ -675,7 +679,7 @@ before presenting them to the client and performance slightly. .PP In addition, all of the following parameters are valid in access groups -and override the global setting in \fIinn.conf\fR. See \fIinn.conf\fR\|(5) for the +and override the global setting in \fIinn.conf\fR. See \fBinn.conf\fR\|(5) for the descriptions of these parameters: .PP .Vb 6 @@ -803,7 +807,7 @@ first by running \fBckpasswd\fR with the file of encrypted passwords, and then with the \fB\-s\fR option to check the shadow password database (note that this option may require ckpasswd to be setgid to a shadow group, and there are security considerations; see -\&\fIckpasswd\fR\|(8) for details). If both of those fail, the user will continue +\&\fBckpasswd\fR\|(8) for details). If both of those fail, the user will continue to have no identity; otherwise, an identity will be assigned (usually the supplied username, perhaps with a domain appended, although an authenticator technically can provide a completely different username @@ -850,7 +854,7 @@ be allowed access or an opportunity to a Here's a very complicated example. This is for an organization that has an internal hierarchy \*(L"example.*\*(R" only available to local shell users, who are on machines where identd can be trusted. Dialup users must provide a -username and password, which is then checked against \s-1RADIUS. \s0 Remote users +username and password, which is then checked against \s-1RADIUS.\s0 Remote users have to use a username and password that's checked against a database on the news server. Finally, the admin staff (users \*(L"joe\*(R" and \*(L"jane\*(R") can post anywhere (including the \*(L"example.admin.*\*(R" groups that are read-only @@ -990,7 +994,7 @@ above, with ones having global applicabi .IP "\(bu" 4 Consider running \fBnnrpd\fR with the \fB\-S\fR flag (either also with \fB\-D\fR, or out of \*(L"super-server\*(R" like \fBinetd\fR) on the \s-1NNTPS\s0 port (563) for -clients that support \s-1TLS/SSL. \s0 See \fInnrpd\fR\|(8) for more details about how +clients that support \s-1TLS/SSL.\s0 See \fBnnrpd\fR\|(8) for more details about how to configure that. You can use the \fIrequire_ssl\fR parameter or the \&\fB\-c\fR flag to specify an alternate \fIreaders.conf\fR file if you want a substantially different configuration for this case. @@ -1006,5 +1010,5 @@ expanded by Russ Allbery 0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "RNEWS 1" -.TH RNEWS 1 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH RNEWS 1 "2020-11-22" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -138,20 +142,21 @@ rnews \- Inject individual articles and UUCP batches into INN .SH "SYNOPSIS" .IX Header "SYNOPSIS" -\&\fBrnews\fR [\fB\-NUv\fR] [\fB\-h\fR \fIhost\fR] [\fB\-P\fR \fIport\fR] [\fB\-rS\fR \fIserver\fR] +\&\fBrnews\fR [\fB\-abdNUv\fR] [\fB\-h\fR \fIhost\fR] [\fB\-P\fR \fIport\fR] [\fB\-rS\fR \fIserver\fR] [\fIfile\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" \&\fBrnews\fR injects either individual articles or UUCP-style article batches into an \s-1INN\s0 server. It submits articles via \s-1IHAVE\s0 and is suitable for injecting articles received from other sources; local postings should -generally use \fIinews\fR\|(1) instead. It is also used to process spooled +generally use \fBinews\fR\|(1) instead. It is also used to process spooled messages created by, for example, \fBnnrpd\fR while \fBinnd\fR is not available. .PP -The message is read from \fIfile\fR if given, or standard input if no file is -given. Articles are sent to the server given in the \fB\-r\fR or \fB\-S\fR -command line options if given, otherwise to the server set via -\&\fInnrpdposthost\fR in \fIinn.conf\fR, otherwise to the local server. +The message is read from \fIfile\fR if given, spooled files (with the \fB\-U\fR +flag) or standard input if no file is given. Articles are sent to +the server given in the \fB\-r\fR or \fB\-S\fR command line options if given, +otherwise to the server set via \fInnrpdposthost\fR in \fIinn.conf\fR, +otherwise to the local server. .PP When sent over \s-1UUCP,\s0 Usenet articles are typically collected in a single batch to reduce the \s-1UUCP\s0 overhead. Batches can also be compressed to @@ -179,17 +184,17 @@ then the rest of the input is fed to \f( the resulting uncompressed output is re-read as if it were the original input to \fBrnews\fR. A compressed batch should therefore start with this line and contain a batch of articles separated by \f(CW\*(C`#!\ rnews\*(C'\fR lines and -then compressed with \fIcompress\fR\|(1). (Batches compressed with \fIgzip\fR\|(1) should +then compressed with \fBcompress\fR\|(1). (Batches compressed with \fBgzip\fR\|(1) should instead use \f(CW\*(C`gunbatch\*(C'\fR as the batch command; \s-1INN\s0 just uses \fBgzip\fR rather than \fBcompress\fR because it can handle \fBcompress\fR\-style compression but is more widely available, due to old patent issues, than \fBcompress\fR.) .PP -Otherwise, if the command is any other word, then \fBrnews\fR will try to -execute a program with that name, looking for it in the directory -\&\fIpathbin\fR/rnews.libexec. The rest of the batch will be fed to that -program's standard input, and the standard output from the program will be -treated as if it were the original input to \fBrnews\fR. \s-1INN\s0 comes with three -such standard batch processors: +Otherwise, if the command is any other word and the \fB\-a\fR flag is not +given, \fBrnews\fR will try to execute a program with that name, looking +for it in the directory \fIpathbin\fR/rnews.libexec. The rest of the +batch will be fed to that program's standard input, and the standard +output from the program will be treated as if it were the original +input to \fBrnews\fR. \s-1INN\s0 comes with three such standard batch processors: .IP "\fBbunbatch\fR" 2 .IX Item "bunbatch" It invokes \fBbzip2\fR and should be used for batches compressed with \fBbzip2\fR. @@ -200,14 +205,25 @@ and then decompresses it as explained ab .IP "\fBgunbatch\fR" 2 .IX Item "gunbatch" It invokes \fBgzip\fR and should be used for batches compressed with \fBgzip\fR. -.PP -By default, \fBrnews\fR will log and discard any articles that are rejected -by the server or cannot be parsed by \fBrnews\fR for some reason (such as a -missing header). This default can be changed when compiling \s-1INN\s0 by -setting \s-1DO_RNEWS_SAVE_BAD\s0 in \fIinclude/inn/options.h\fR. There is no way to -change it at runtime, unfortunately. .SH "OPTIONS" .IX Header "OPTIONS" +.IP "\fB\-a\fR" 4 +.IX Item "-a" +By default, \fBrnews\fR looks for additional unpackers in the +\&\fIrnews.libexec\fR sub-directory of \fIpathbin\fR (as set in \fIinn.conf\fR). +If \fB\-a\fR is given, no additional batch processor will be used; only +\&\f(CW\*(C`rnews\*(C'\fR and \f(CW\*(C`cunbatch\*(C'\fR will be recognized as valid batch commands. +.IP "\fB\-b\fR" 4 +.IX Item "-b" +By default, \fBrnews\fR will log and discard any articles that are rejected +by the server or cannot be parsed by \fBrnews\fR for some reason (such +as a missing header). If \fB\-b\fR is given, rejected articles will also +be backed up in the \fIbad\fR sub-directory of \fIpathincoming\fR (as set +in \fIinn.conf\fR). +.IP "\fB\-d\fR" 4 +.IX Item "-d" +If \fB\-d\fR is given, \fBrnews\fR will log via syslog the message-ID and the +Path header value of each article rejected as a duplicate by the server. .IP "\fB\-h\fR \fIhost\fR" 4 .IX Item "-h host" If \fB\-h\fR is given, \fBrnews\fR will log the message \s-1ID\s0 and \fIhost\fR via syslog @@ -243,6 +259,10 @@ that directory and processes all spooled filenames do not begin with \f(CW\*(C`.\*(C'\fR, attempting to send them to the server again. It's a good idea to run this periodically out of cron to pick up any articles spooled due to temporary server unavailability. +.IP "\fB\-v\fR" 4 +.IX Item "-v" +Enable verbose mode, with more traces, notably logging the reason why +articles are rejected by the server. .SH "BUGS" .IX Header "BUGS" \&\fBrnews\fR cannot process articles that have embedded nul characters in @@ -252,7 +272,7 @@ them. (Neither can the rest of \s-1INN\ Written by Rich \f(CW$alz\fR for InterNetNews. Rewritten in \&\s-1POD\s0 by Russ Allbery . .PP -\&\f(CW$Id:\fR rnews.pod 9767 2014\-12\-07 21:13:43Z iulius $ +\&\f(CW$Id:\fR rnews.pod 10382 2020\-05\-24 10:24:37Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIbzip2\fR\|(1), \fIcompress\fR\|(1), \fIgzip\fR\|(1), \fIinn.conf\fR\|(5), \fIinnd\fR\|(8), \fInnrpd\fR\|(8). +\&\fBbzip2\fR\|(1), \fBcompress\fR\|(1), \fBgzip\fR\|(1), \fBinn.conf\fR\|(5), \fBinnd\fR\|(8), \fBnnrpd\fR\|(8). diff -Nurp inn-2.6.3/doc/man/scanlogs.8 inn-2.6.4/doc/man/scanlogs.8 --- inn-2.6.3/doc/man/scanlogs.8 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/scanlogs.8 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "SCANLOGS 8" -.TH SCANLOGS 8 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH SCANLOGS 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -142,9 +146,9 @@ scanlogs \- Summarize and rotate INN log .SH "DESCRIPTION" .IX Header "DESCRIPTION" \&\fBscanlogs\fR summarizes the information recorded in the \s-1INN\s0 log files which -reside in the \fIpathlog\fR directory set in \fIinn.conf\fR (see \fInewslog\fR\|(5) for +reside in the \fIpathlog\fR directory set in \fIinn.conf\fR (see \fBnewslog\fR\|(5) for further details about these log files). It is normally invoked by the -\&\fInews.daily\fR\|(8) script which performs daily server maintenance tasks. +\&\fBnews.daily\fR\|(8) script which performs daily server maintenance tasks. .PP It invokes \f(CW\*(C`ctlinnd flushlogs\*(C'\fR to close the news and error log files, rename them to add \f(CW\*(C`.old\*(C'\fR to the file names and open fresh news and @@ -157,14 +161,14 @@ parameter can be set in \fIinn.conf\fR). of the \fIactive\fR file in this directory. .PP It invokes \fBtally.control\fR if \fInewgroup.log\fR or \fIrmgroup.log\fR exists -in \fIpathlog\fR (see the \fIcontrol.log\fR entry of \fInewslog\fR\|(5) for more +in \fIpathlog\fR (see the \fIcontrol.log\fR entry of \fBnewslog\fR\|(5) for more information about that). .PP \&\fBscanlogs\fR displays the first 50 lines of \fIerrlog\fR, \fInews.err\fR and \fInews.crit\fR, if non-empty, and runs \fBinnreport\fR to summarize the contents of \fInews\fR and \fInews.notice\fR, and to update the \&\fIunwanted.log\fR file amongst other things (see more information about -that in \fIinnreport\fR\|(8)). +that in \fBinnreport\fR\|(8)). .SH "OPTIONS" .IX Header "OPTIONS" Only one option is currently accepted: @@ -176,7 +180,7 @@ are altered. If \fBscanlogs\fR is invok option should be used to prevent premature log cleaning. .SH "FILES" .IX Header "FILES" -See \fInewslog\fR\|(5) for the list of log files processed by \fBscanlogs\fR. +See \fBnewslog\fR\|(5) for the list of log files processed by \fBscanlogs\fR. .SH "HISTORY" .IX Header "HISTORY" Written by Landon Curt Noll and Rich \f(CW$alz\fR @@ -185,5 +189,5 @@ Written by Landon Curt Noll 0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "SCANSPOOL 8" -.TH SCANSPOOL 8 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH SCANSPOOL 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -214,7 +218,7 @@ Fatal or internal error. .ie n .IP """WARN:"" (to stderr)" 4 .el .IP "\f(CWWARN:\fR (to stderr)" 4 .IX Item "WARN: (to stderr)" -\&\fIactive\fR or article format problem, newsgroup alias problem, \fIfind\fR\|(1) +\&\fIactive\fR or article format problem, newsgroup alias problem, \fBfind\fR\|(1) error, article open error. .ie n .IP """path/123:"" (to stdout)" 4 .el .IP "\f(CWpath/123:\fR (to stdout)" 4 @@ -255,4 +259,4 @@ comments in the script. \&\f(CW$Id:\fR scanspool.pod 9301 2011\-08\-04 21:09:11Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIactive\fR\|(5). +\&\fBactive\fR\|(5). diff -Nurp inn-2.6.3/doc/man/send-uucp.8 inn-2.6.4/doc/man/send-uucp.8 --- inn-2.6.3/doc/man/send-uucp.8 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/send-uucp.8 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "SEND-UUCP 8" -.TH SEND-UUCP 8 "2016-11-06" "INN 2.6.3" "InterNetNews Documentation" +.TH SEND-UUCP 8 "2016-11-06" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -141,7 +145,7 @@ send\-uucp \- Send Usenet articles via U \&\fBsend-uucp\fR [\fIsite\fR ...] .SH "DESCRIPTION" .IX Header "DESCRIPTION" -The \fBsend-uucp\fR program processes batch files written by \fIinnd\fR\|(8) to send +The \fBsend-uucp\fR program processes batch files written by \fBinnd\fR\|(8) to send Usenet articles to \s-1UUCP\s0 sites. It reads a configuration file to control how it behaves with various sites. Normally, it is run periodically out of cron to put together batches and send them to remote \s-1UUCP\s0 sites. @@ -167,7 +171,7 @@ site is specified with a line of the for .IP "\fIsite\fR" 4 .IX Item "site" The news site name being configured. This must match a site name -from \fInewsfeeds\fR\|(5). +from \fBnewsfeeds\fR\|(5). .IP "\fIhost\fR" 4 .IX Item "host" The \s-1UUCP\s0 host name to which batches should be sent for this site. @@ -248,8 +252,8 @@ The configuration file which specifies a .IX Header "HISTORY" This program was originally written by Edvard Tuinder and then maintained and extended by Miquel van Smoorenburg . -Marco d'Itri cleaned up the code for inclusion in \s-1INN. \s0 This +Marco d'Itri cleaned up the code for inclusion in \s-1INN.\s0 This manual page was written by Mark Brown . .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIinnd\fR\|(8), \fInewsfeeds\fR\|(5), \fIuucp\fR\|(8). +\&\fBinnd\fR\|(8), \fBnewsfeeds\fR\|(5), \fBuucp\fR\|(8). diff -Nurp inn-2.6.3/doc/man/sendinpaths.8 inn-2.6.4/doc/man/sendinpaths.8 --- inn-2.6.3/doc/man/sendinpaths.8 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/sendinpaths.8 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "SENDINPATHS 8" -.TH SENDINPATHS 8 "2018-05-14" "INN 2.6.3" "InterNetNews Documentation" +.TH SENDINPATHS 8 "2018-05-14" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -154,7 +158,7 @@ useful statistics. See 0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "SHLOCK 1" -.TH SHLOCK 1 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH SHLOCK 1 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -142,7 +146,7 @@ shlock \- Create lock files for use in s .SH "DESCRIPTION" .IX Header "DESCRIPTION" \&\fBshlock\fR tries to create a lock file named \fIname\fR and write -the process \s-1ID \s0\fIpid\fR into it. If the file already exists, \fBshlock\fR +the process \s-1ID\s0 \fIpid\fR into it. If the file already exists, \fBshlock\fR will read the process \s-1ID\s0 from the file and test to see whether the process is currently running. If the process exists, then the file will not be created. \fIshlock\fR exits with a zero status if it could @@ -155,7 +159,7 @@ module. .IX Header "OPTIONS" .IP "\fB\-b\fR" 4 .IX Item "-b" -Process IDs are normally read and written in \s-1ASCII. \s0 If the \fB\-b\fR flag +Process IDs are normally read and written in \s-1ASCII.\s0 If the \fB\-b\fR flag is used, then they will be written as a binary int. .IP "\fB\-c\fR" 4 .IX Item "-c" @@ -200,4 +204,4 @@ Converted to \s-1POD\s0 by Julien Elie. \&\f(CW$Id:\fR shlock.pod 9303 2011\-08\-04 22:09:57Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIINN::Utils::Shlock\fR\|(3pm). +\&\fBINN::Utils::Shlock\fR\|(3pm). diff -Nurp inn-2.6.3/doc/man/simpleftp.1 inn-2.6.4/doc/man/simpleftp.1 --- inn-2.6.3/doc/man/simpleftp.1 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/simpleftp.1 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "SIMPLEFTP 1" -.TH SIMPLEFTP 1 "2016-11-06" "INN 2.6.3" "InterNetNews Documentation" +.TH SIMPLEFTP 1 "2016-11-06" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -173,4 +177,4 @@ Rewritten to use \f(CW\*(C`Net::FTP\*(C' \&\f(CW$Id:\fR simpleftp.pod 10097 2016\-11\-04 22:19:07Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIactsync\fR\|(8). +\&\fBactsync\fR\|(8). diff -Nurp inn-2.6.3/doc/man/sm.1 inn-2.6.4/doc/man/sm.1 --- inn-2.6.3/doc/man/sm.1 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/sm.1 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "SM 1" -.TH SM 1 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH SM 1 "2020-11-22" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -161,11 +165,12 @@ input, one per line. The default operat standard output the corresponding article for each token given. .PP If \fB\-s\fR is given, \fBsm\fR instead stores the article given on standard -input (in native format, not wire format) using the standard rules of the -storage subsystem. If the article is stored successfully, the token of -the article is printed to standard output. Please note that this does not -make any attempt to write a history entry or any overview data, and is -therefore only useful under very specific circumstances. +input (in native format, unless \fB\-R\fR is given, in which case wire +format is expected) using the standard rules of the storage subsystem. +If the article is stored successfully, the token of the article is +printed to standard output. Please note that this does not make any +attempt to write a history entry or any overview data, and is therefore +only useful under very specific circumstances. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-c\fR" 4 @@ -178,7 +183,7 @@ to be stored. .IX Item "-d, -r" Rather than retrieving the specified article, remove the article. This will delete the article out of the news spool and it will not subsequently -be retrievable by any part of \s-1INN. \s0 It's equivalent to \f(CW\*(C`ctlinnd cancel\*(C'\fR +be retrievable by any part of \s-1INN.\s0 It's equivalent to \f(CW\*(C`ctlinnd cancel\*(C'\fR except it takes a storage \s-1API\s0 token instead of a message-ID. .IP "\fB\-H\fR" 4 .IX Item "-H" @@ -199,19 +204,23 @@ Display the raw article. This means tha to native line endings and will be left as \s-1CRLF\s0 sequences; leading periods will still be escaped for sending over \s-1NNTP,\s0 and the article will end in a \s-1CRLF.CRLF\s0 sequence. +.Sp +When used with \fB\-s\fR, read articles in wire format. .IP "\fB\-S\fR" 4 .IX Item "-S" Write the article to standard output in the format used by \fBrnews\fR spool files. Multiple articles can be written in this format, and the resulting output can be fed to \fBrnews\fR (on another system, for example) to inject -those articles into \s-1INN. \s0 This option cannot be used with \fB\-d\fR, \fB\-r\fR, +those articles into \s-1INN.\s0 This option cannot be used with \fB\-d\fR, \fB\-r\fR, \&\fB\-H\fR, \fB\-i\fR, or \fB\-R\fR. .IP "\fB\-s\fR" 4 .IX Item "-s" -Store the article given on standard input using the normal storage rules -for articles as configured in \fIstorage.conf\fR\|(5). Print the new token for -the message to standard output if it is stored successfully. If this -option is given, no other options except possibly \fB\-q\fR should be given. +Store the article given on standard input using the normal storage +rules for articles as configured in \fBstorage.conf\fR\|(5). Print the new +token for the message to standard output if it is stored successfully. +If this option is given, no other options except \fB\-R\fR and possibly \fB\-q\fR +should be given. When \fB\-R\fR is given, any number of articles in wire +format are read on standard input and stored. .SH "EXIT STATUS" .IX Header "EXIT STATUS" If all operations were successful, \fBsm\fR exits with status 0. If an @@ -228,7 +237,7 @@ succeeded, you should run \fBsm\fR on on Written by Katsuhiro Kondou for InterNetNews. Rewritten in \s-1POD\s0 by Russ Allbery . .PP -\&\f(CW$Id:\fR sm.pod 9767 2014\-12\-07 21:13:43Z iulius $ +\&\f(CW$Id:\fR sm.pod 10405 2020\-11\-21 07:02:43Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIctlinnd\fR\|(8), \fIgrephistory\fR\|(1), \fIhistory\fR\|(5), \fIrnews\fR\|(1), \fIstorage.conf\fR\|(5). +\&\fBctlinnd\fR\|(8), \fBgrephistory\fR\|(1), \fBhistory\fR\|(5), \fBrnews\fR\|(1), \fBstorage.conf\fR\|(5). diff -Nurp inn-2.6.3/doc/man/storage.conf.5 inn-2.6.4/doc/man/storage.conf.5 --- inn-2.6.3/doc/man/storage.conf.5 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/storage.conf.5 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "STORAGE.CONF 5" -.TH STORAGE.CONF 5 "2018-01-28" "INN 2.6.3" "InterNetNews Documentation" +.TH STORAGE.CONF 5 "2018-01-28" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -149,8 +153,8 @@ use several at the same time for differe different sizes). The rest of \s-1INN\s0 need not care what type of storage method was used for a given article; the storage manager will figure this out automatically when that article is retrieved via the storage -\&\s-1API. \s0 Note that you may also want to see the options provided in -\&\fIinn.conf\fR\|(5) regarding article storage. +\&\s-1API.\s0 Note that you may also want to see the options provided in +\&\fBinn.conf\fR\|(5) regarding article storage. .PP The \fIstorage.conf\fR file consists of a series of storage method entries. Blank lines and lines beginning with a number sign (\f(CW\*(C`#\*(C'\fR) are ignored. @@ -198,18 +202,18 @@ The meanings of the keys in each storage An identifier for this storage method entry. should be a number between 0 and 255. It should be unique across all of the entries in this file. It is mainly used for specifying expiration times by storage class -as described in \fIexpire.ctl\fR\|(5); \f(CW\*(C`timehash\*(C'\fR and \f(CW\*(C`timecaf\*(C'\fR will also set the +as described in \fBexpire.ctl\fR\|(5); \f(CW\*(C`timehash\*(C'\fR and \f(CW\*(C`timecaf\*(C'\fR will also set the top-level directory in which articles accepted by this storage class are stored. The assignment of a particular number to a storage class is arbitrary but permanent (since it is used in storage tokens). Storage classes can be for instance numbered sequentially in \fIstorage.conf\fR. .IP "\fInewsgroups\fR: " 4 .IX Item "newsgroups: " -What newsgroups are stored using this storage method. is a \fIuwildmat\fR\|(3) +What newsgroups are stored using this storage method. is a \fBuwildmat\fR\|(3) pattern which is matched against the newsgroups an article is posted to. If \fIstoreonxref\fR in \fIinn.conf\fR is true, this pattern will be matched against the newsgroup names in the Xref: header; otherwise, it will be matched against -the newsgroup names in the Newsgroups: header (see \fIinn.conf\fR\|(5) for discussion +the newsgroup names in the Newsgroups: header (see \fBinn.conf\fR\|(5) for discussion of the differences between these possibilities). Poison wildmat expressions (expressions starting with \f(CW\*(C`@\*(C'\fR) are allowed and can be used to exclude certain group patterns: articles crossposted to poisoned newsgroups will not be stored @@ -287,7 +291,7 @@ Currently, there are five storage method pros and cons; you can choose any mixture of them as is suitable for your environment. Note that each method has an attribute \s-1EXPENSIVESTAT\s0 which indicates whether checking the existence of an article is expensive -or not. This is used to run \fIexpireover\fR\|(8). +or not. This is used to run \fBexpireover\fR\|(8). .IP "\fBcnfs\fR" 4 .IX Item "cnfs" The \f(CW\*(C`cnfs\*(C'\fR storage method stores articles in large cyclic buffers (\s-1CNFS\s0 @@ -306,7 +310,7 @@ method. subtleties to the basic description given above. Storage method entries for the \f(CW\*(C`cnfs\*(C'\fR storage method must have an options: field specifying the metacycbuff into which articles matching that entry should be stored; -see \fIcycbuff.conf\fR\|(5) for details on metacycbuffs. +see \fBcycbuff.conf\fR\|(5) for details on metacycbuffs. .Sp Advantages: By far the fastest of all storage methods (except for \f(CW\*(C`trash\*(C'\fR), since it eliminates the overhead of dealing with a file system and creating @@ -482,5 +486,5 @@ into \s-1POD\s0 by Julien Elie. \&\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), -\&\fIuwildmat\fR\|(3). +\&\fBcycbuff.conf\fR\|(5), \fBexpire.ctl\fR\|(5), \fBexpireover\fR\|(8), \fBinn.conf\fR\|(5), \fBinnd\fR\|(8), +\&\fBuwildmat\fR\|(3). diff -Nurp inn-2.6.3/doc/man/subscriptions.5 inn-2.6.4/doc/man/subscriptions.5 --- inn-2.6.3/doc/man/subscriptions.5 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/subscriptions.5 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "SUBSCRIPTIONS 5" -.TH SUBSCRIPTIONS 5 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH SUBSCRIPTIONS 5 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -183,4 +187,4 @@ Written by Bettina Fink 0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "TALLY.CONTROL 8" -.TH TALLY.CONTROL 8 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH TALLY.CONTROL 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -151,7 +155,7 @@ in \fIcontrol.log\fR. .PP All these log files reside in the \fIpathlog\fR directory set in \fIinn.conf\fR. In order to generate them, you need to enable control articles logging -in \fIcontrol.ctl\fR\|(5), as explained in the \fIcontrol.log\fR entry of \fInewslog\fR\|(5). +in \fBcontrol.ctl\fR\|(5), as explained in the \fIcontrol.log\fR entry of \fBnewslog\fR\|(5). .SH "FILES" .IX Header "FILES" .IP "\fIpathbin\fR/tally.control" 4 @@ -179,4 +183,4 @@ to \s-1POD\s0 by Julien Elie. \&\f(CW$Id:\fR tally.control.pod 8357 2009\-02\-27 17:56:00Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIcontrol.ctl\fR\|(5), \fInews.daily\fR\|(8), \fInewslog\fR\|(5), \fIscanlogs\fR\|(8). +\&\fBcontrol.ctl\fR\|(5), \fBnews.daily\fR\|(8), \fBnewslog\fR\|(5), \fBscanlogs\fR\|(8). diff -Nurp inn-2.6.3/doc/man/tdx-util.8 inn-2.6.4/doc/man/tdx-util.8 --- inn-2.6.3/doc/man/tdx-util.8 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/tdx-util.8 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "TDX-UTIL 8" -.TH TDX-UTIL 8 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH TDX-UTIL 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -143,7 +147,7 @@ tdx\-util \- Tradindexed overview manipu .SH "DESCRIPTION" .IX Header "DESCRIPTION" \&\fBtdx-util\fR is an administrative interface to the tradindexed overview -method for \s-1INN. \s0 It only works on tradindexed overview databases, not on +method for \s-1INN.\s0 It only works on tradindexed overview databases, not on any other type of \s-1INN\s0 overview. It allows the administrator to dump various information about the internal state of the overview, audit it for errors, and rebuild portions of the overview database. @@ -361,4 +365,4 @@ Written by Russ Allbery 0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "TINYLEAF 8" -.TH TINYLEAF 8 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH TINYLEAF 8 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -142,7 +146,7 @@ tinyleaf \- Very simple IHAVE\-only NNTP .SH "DESCRIPTION" .IX Header "DESCRIPTION" \&\fBtinyleaf\fR is intended to be the simplest possible transit news server -that still does something useful. It must be run under \fIinetd\fR\|(8) or some +that still does something useful. It must be run under \fBinetd\fR\|(8) or some equivalent, and only implements three commands (\s-1HELP, IHAVE,\s0 and \s-1QUIT\s0). When it receives an article, it saves it into the directory \fIspool\fR and, if \fIprocessor\fR is given, passes information about the article to @@ -168,8 +172,8 @@ it's finished doing whatever it needs to \&\fBtinyleaf\fR expects \s-1NNTP\s0 commands on standard input and replies on standard output. Status information and any error messages are sent to standard error. It does no authentication; any authentication must be -done by \fIinetd\fR\|(8) or by a wrapper program. (One simple authentication -mechanism is to invoke \fBtinyleaf\fR via \fItcpd\fR\|(8) from \s-1TCP\s0 wrappers and use +done by \fBinetd\fR\|(8) or by a wrapper program. (One simple authentication +mechanism is to invoke \fBtinyleaf\fR via \fBtcpd\fR\|(8) from \s-1TCP\s0 wrappers and use \&\fI/etc/hosts.allow\fR and \fI/etc/hosts.deny\fR to restrict who can talk to the server.) .PP @@ -195,7 +199,7 @@ Then, add a line like: .PP (all on one line \-\-\ the backslash and split in this line is just for readability) where \f(CW\*(C`archive\*(C'\fR is the user that owns the archive, -\&\fI/usr/sbin/tcpd\fR is the path to \fItcpd\fR\|(8), \fIpathbin\fR/tinyleaf is +\&\fI/usr/sbin/tcpd\fR is the path to \fBtcpd\fR\|(8), \fIpathbin\fR/tinyleaf is the path to this program, \fIpathspool\fR/tinyleaf is some scratch directory that the user \f(CW\*(C`archive\*(C'\fR has write access to, and \&\fIpathbin\fR/archive is the path to your \fBarchive\fR script. @@ -226,4 +230,4 @@ Written by Russ Allbery 0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "tst 3" -.TH tst 3 "2015-09-12" "INN 2.6.3" "InterNetNews Documentation" +.TH tst 3 "2015-09-12" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -163,7 +167,7 @@ success, a pointer to a \fIstruct tst\fR The value for \fInode_line_width\fR must be chosen very carefully. One node is required for every character in the tree. If you choose a value that is too small, your application will spend too much time -calling \fImalloc\fR\|(3) and your node space will be too spread out. Too large +calling \fBmalloc\fR\|(3) and your node space will be too spread out. Too large a value is just a waste of space. .PP \&\fBtst_cleanup\fR frees all memory allocated to nodes, internal structures, diff -Nurp inn-2.6.3/doc/man/uwildmat.3 inn-2.6.4/doc/man/uwildmat.3 --- inn-2.6.3/doc/man/uwildmat.3 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/man/uwildmat.3 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) +.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== @@ -54,16 +54,20 @@ .\" Avoid warning from groff about undefined register 'F'. .de IX .. -.if !\nF .nr F 0 -.if \nF>0 \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{\ -. nr % 0 -. nr F 2 +. 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. @@ -129,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "uwildmat 3" -.TH uwildmat 3 "2018-05-14" "INN 2.6.3" "InterNetNews Documentation" +.TH uwildmat 3 "2018-05-14" "INN 2.6.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -154,7 +158,7 @@ returning true if and only if the expres no special meaning in \fIpattern\fR when passed to \fBuwildmat\fR. Both \fItext\fR and \fIpattern\fR are assumed to be in the \s-1UTF\-8\s0 character encoding, although malformed \s-1UTF\-8\s0 sequences are treated in a way that attempts to be mostly -compatible with single-octet character sets like \s-1ISO 8859\-1. \s0(In other +compatible with single-octet character sets like \s-1ISO 8859\-1.\s0 (In other words, if you try to match \s-1ISO 8859\-1\s0 text with these routines everything should work as expected unless the \s-1ISO 8859\-1\s0 text contains valid \s-1UTF\-8\s0 sequences, which thankfully is somewhat rare.) @@ -292,4 +296,4 @@ it aren't Rich's fault. \&\f(CW$Id:\fR uwildmat.pod 10283 2018\-05\-14 12:43:05Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIgrep\fR\|(1), \fIfnmatch\fR\|(3), \fIregex\fR\|(3), \fIregexp\fR\|(3). +\&\fBgrep\fR\|(1), \fBfnmatch\fR\|(3), \fBregex\fR\|(3), \fBregexp\fR\|(3). diff -Nurp inn-2.6.3/doc/pod/buffindexed.conf.pod inn-2.6.4/doc/pod/buffindexed.conf.pod --- inn-2.6.3/doc/pod/buffindexed.conf.pod 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/pod/buffindexed.conf.pod 2021-01-21 13:53:07.000000000 -0800 @@ -68,6 +68,13 @@ or replace buffers. However, new buffer care (other than restarting B after modifying F). If you need to rebuild overview, you should zero all of the buffers first. +We recommend not to reserve too much spare space in existing buffers, so +that to minimize the duration of the B process, and to just +add new buffers when space left is low (see the result of C). +Plan on needing at least S<0.65 KB> for every article in your spool +(not counting crossposts). So, if you have 5 million articles, you'll +need at least S<3.25 GB> of disk space for buffindexed. + =head1 CREATING BUFFERS There are two methods to create a new buffindexed buffer: @@ -143,7 +150,7 @@ user to read and write. Written by Katsuhiro Kondou for InterNetNews. Converted to POD by Russ Allbery . -$Id: buffindexed.conf.pod 9925 2015-08-08 17:05:43Z iulius $ +$Id: buffindexed.conf.pod 10525 2021-01-20 11:51:15Z iulius $ =head1 SEE ALSO diff -Nurp inn-2.6.3/doc/pod/hacking.pod inn-2.6.4/doc/pod/hacking.pod --- inn-2.6.3/doc/pod/hacking.pod 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/pod/hacking.pod 2021-01-21 13:53:07.000000000 -0800 @@ -69,24 +69,30 @@ At the time of this writing, S are in the F subdirectory, including the files F and F to determine the system name and F for libtool support. -The latter file comes from the Debian package of Libtool, available -from L (F is generated -in the F subdirectory after building the package with -for instance B); the canonical versions of the former two -files are available from L (which currently -redirects to L). -In addition, F and a few others m4 files used by INN are -just a copy of the corresponding files in the F subdirectory -of the Debian package of the libtool distribution. (Using libtool -without using B requires a few odd hacks.) New versions +The latter file comes from the Debian package of Libtool, available from +L (F is generated in the +F subdirectory after building the package with for instance +B); the canonical versions of the former two files +are available from L (which currently +redirects to L). + +In addition, F and a few other m4 files used +by INN are just a copy of the corresponding files in the +F subdirectory of the Debian +package of the libtool distribution. (Using libtool without +using B requires a few odd hacks.) New versions should be checked in periodically when available. There are no INN-specific modifications to those files except for F -which recognizes the additional B<-B> flag that INN's B -script uses. This script should also be updated at the same time from -L; -it similarly contains local modifications in order to support the -additional B<-B> flag, as well as a few other changes mentioned in a -comment at the beginning of the file. +which recognizes the additional B<-S> flag that INN's B +script uses, and a fix for a proper handling of circular dependencies. + +This B script should also be updated at the same time from +L; +it similarly contains a local modification mentioned in a comment +at the beginning of the file. + +Finally, the F macro should be updated from +L. =head1 Autobuilds @@ -614,7 +620,7 @@ to put in a space between a dereference arguments to the called function, misidentifies some macro calls as being type declarations, and fouls up long but simple case statements). It would be excellent if someday we could just run all of INN's code through -B routinely to enforce a consistant coding style, but B +B routinely to enforce a consistent coding style, but B isn't quite ready for that. For users of emacs cc-mode, use the "bsd" style but with: @@ -652,10 +658,11 @@ projects. =item * Make sure that F, F, -F, F and libtool m4 files +F, F, libtool m4 files (F, F, F, F and -F) are the latest versions. See the instructions in -L<"Configuring and Portability"> for details on how to update these files. +F) and F are the latest versions. See the +instructions in L<"Configuring and Portability"> for details on how to +update these files. =item * @@ -699,6 +706,12 @@ and F) could be mer well as support for new TLS versions in the F parameter in F. +=item * + +Check whether a new version of the ternary search trie implementation +(available at L) could be +merged into F. + =back =item 2. @@ -716,6 +729,12 @@ following commands to make sure they do Also build INN (including the F and F directories) with warnings on (C) and run the test suite (C). +Fix any errors. + +Several builds with different configure-time options should be tested, +so as to be sure they work fine (especially B<--enable-shared=no>, +B<--enable-tagged-hash>, B<--enable-keywords>, B<--enable-largefiles> +and B<--enable-reduced-depends>). =item 3. @@ -763,11 +782,30 @@ F which deals with d =item 8. -Check out a copy of the release branch. It's currently necessary to run -C and C to generate F. Then, run -C to generate all necessary files. Afterwards, run -C. There shouldn't be any differences; otherwise, -fix the F file. +Check out a copy of the release branch, and perform the following actions. + +=over 2 + +=item * + +Run C and C that are currently necessary to generate +F. + +=item * + +Then, run C to generate all necessary files. + +=item * + +Run C to ensure dependencies are properly defined in all +INN makefiles. + +=item * + +Afterwards, run C. There shouldn't be any +differences; otherwise, fix the F file. + +=back =item 9. @@ -909,6 +947,6 @@ technical details as needed, useful when =back -$Id: hacking.pod 10257 2018-03-08 16:17:55Z iulius $ +$Id: hacking.pod 10531 2021-01-20 11:59:59Z iulius $ =cut diff -Nurp inn-2.6.3/doc/pod/hook-perl.pod inn-2.6.4/doc/pod/hook-perl.pod --- inn-2.6.3/doc/pod/hook-perl.pod 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/pod/hook-perl.pod 2021-01-21 13:53:07.000000000 -0800 @@ -348,7 +348,10 @@ supplied headers (like Message-ID: and D required headers or modifying headers that need to follow a strict format can result in nnrpd trying to post nonsense articles (which will probably then be rejected by innd). If $modify_headers is set, I in -the %hdr hash is taken to be article headers and added to the article. +the %hdr hash is taken to be article headers and added to the article. If +a header field body contains several lines, they are separated from each +other by a mere LF (B will properly rewrite them as CRLF when +posting). To modify the contents of the Organization: header, you can use: @@ -658,7 +661,7 @@ maintaining it since 2007. =item Postfilter -URL: L (by Paolo Amoroso) +URL: L (by Paolo Amoroso) Postfilter is an B Perl filter (F) which scans all messages sent by local users in order to block abuses. Postfilter can limit @@ -676,6 +679,6 @@ Usenet daily. It uses F Like I but for IPv6 sockets. If only one of the I @@ -198,6 +200,8 @@ overrides this setting. The default val Note that you will generally need to put double quotes ("") around this value if you set it, since IPv6 addresses contain colons. +This parameter has no effect when systemd socket activation is used. + =item I Normally innd(8) rejects incoming articles when directed to do so by @@ -357,6 +361,10 @@ target message. This requirement only e conceal their identity and provided no security". This check is therefore not done as it is extremely easy to spoof. +In order not to actually process any cancel or supersedes messages, +you can start B with the B<-C> flag, or add this flag to the +I parameter. + =item I Set this to true to reject incoming articles which contain an unknown @@ -590,25 +598,36 @@ The default is unset. =item I Which overview storage method to use. Currently supported values are -C, C, and C. There is no default value; +C, C and C. There is no default value; this parameter must be set if I is true (the default). =over 4 =item C -Stores overview data and index information into buffers, which are -preconfigured files defined in F. C never +It stores overview data and index information into preconfigured +large files like CNFS. Fast at writing, the C overview +storage method can keep up with a large feed more easily and never consumes additional disk space beyond that allocated to these buffers. +The downside is that these buffers are hard to recover in case of +corruption and somewhat slower for readers and the expiry process. +See the buffindexed.conf(5) man page for more details, and notably how +to create the buffers. -=item C +=item C -Uses two files per newsgroup, one containing the overview data and one -containing the index. Fast for readers, but slow to write to. +It stores overview information into a S database, whose +development pace has stalled these last years. This method is fast +and very robust, but may require more disk space, unless compression +is enabled. See the ovdb(5) man page for more details. -=item C +=item C -Stores data into a S database. See the ovdb(5) man page. +It uses two files per newsgroup, one containing the overview data +and one containing the index. Fast for readers, but slow to write to +because it has to update two files for each incoming article. Its main +advantage is to be the best tested, the most reliable and the method +with the best recovery tools. =back @@ -1095,6 +1114,10 @@ The path to a file containing the server TLS clients. This parameter is only used if B is built with TLS/SSL support. The default value is I/cert.pem. +Note that unlike Apache's I directive, I +should not contain a concatenation of certificates. Instead, if you have +a certificate authority root certificate, set I to its path. + =item I The path to a file containing the encryption key for the server @@ -1605,7 +1628,7 @@ values for reference. Written by Rich $alz for InterNetNews and since modified, updated, and reorganized by innumerable other people. -$Id: inn.conf.pod 10304 2018-12-02 14:05:50Z iulius $ +$Id: inn.conf.pod 10523 2021-01-17 21:52:00Z iulius $ =head1 SEE ALSO diff -Nurp inn-2.6.3/doc/pod/innd.pod inn-2.6.4/doc/pod/innd.pod --- inn-2.6.3/doc/pod/innd.pod 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/pod/innd.pod 2021-01-21 13:53:07.000000000 -0800 @@ -77,6 +77,8 @@ If this option is specified, it's the sa F and may cause changes in whether INN binds to an IPv6 address as well. See inn.conf(5) for more details and also the B<-6> flag for B. +This option has no effect when systemd socket activation is used. + =item B<-6> I
Only applies when INN has been built with IPv6 support. Normally B @@ -89,6 +91,8 @@ If this option is specified, it's the sa F and may cause changes in whether INN binds to an IPv4 address as well. See inn.conf(5) for more details and also the B<-4> flag for B. +This option has no effect when systemd socket activation is used. + =item B<-a> By default, if a host connects to B but is not listed in @@ -498,7 +502,7 @@ disables source routing. Written by Rich $alz for InterNetNews. -$Id: innd.pod 10175 2017-09-18 19:48:24Z iulius $ +$Id: innd.pod 10523 2021-01-17 21:52:00Z iulius $ =head1 SEE ALSO diff -Nurp inn-2.6.3/doc/pod/install.pod inn-2.6.4/doc/pod/install.pod --- inn-2.6.3/doc/pod/install.pod 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/pod/install.pod 2021-01-21 13:53:07.000000000 -0800 @@ -26,8 +26,7 @@ configure INN with the same options that this approach (in particular, INN compiled with B<--enable-largefiles> can't read the data structures written by INN compiled without that flag, and vice versa). If you don't remember what options you used but you have -your old build tree, look at the comments at the beginning of -F. +your old build tree, look at the beginning of F. If you made B setuid root so that you could use system passwords, you'll have to do that again after C. (It's much better to use @@ -46,19 +45,22 @@ Unix platform. It does, however, make e certain other constructs that may be poorly or incompletely implemented, particularly on very old operating systems. -INN has been confirmed to work on the following operating systems: +INN has been confirmed to work on recent versions of the following +operating systems: - AIX 4.3 - FreeBSD 2.2.x and up - HP-UX 10.20 and up - Linux 2.x (tested with libc 5.4, glibc 2.0 and up) - Mac OS X 10.2 and up - NetBSD 1.6 and up - OpenBSD 2.8 and up - SCO 5.0.4 (tested with gcc 2.8.1, cc) - Solaris 2.5.x and up - UnixWare 7.1 - UX/4800 R11 and up + AIX (including 7.2) + FreeBSD (including 12.1) + Linux (including 3.16, 4.19 and 5.10 kernels, glibc 2.19, 2.28 and 2.31) + macOS (including 11) + NetBSD (including 9.0) + OpenBSD (including 6.8) + Oracle Solaris (including 10 and 11) + +Current versions of INN may also work on other operating systems like +HP-UX, OpenServer, SCO, UnixWare or UX/4800, as well as old versions of +the above list of operating systems, but have not been confirmed to. +Old versions of INN used to, but current ones have not been tested on +such systems or ancient specific versions. If you have gotten INN working on an operating system other than the ones listed above, please let us know at . @@ -96,7 +98,8 @@ INN is tested primarily with newer versi recommended that you install the latest stable distribution of Perl before compiling INN. For instructions on obtaining and installing Perl, see L. Note that you may need to use the same -compiler and options (particularly large file support) for Perl and INN. +compiler and options (particularly large file supporti and shared libraries) +for Perl and INN. If you're using a version of Perl prior to 5.6.0, you may need to make sure that the Perl versions of your system header files have been @@ -139,6 +142,13 @@ information. =item * +If you want to use systemd notifications and socket activation, +you'll need to have B and B (along with its +F configuration) installed so that these features are +enabled at configure time. + +=item * + Many of INN's optional features require other packages (primarily libraries) be installed. If you wish to use any of these optional features, you will need to install those packages first. Here is a table @@ -163,6 +173,12 @@ For most systems, setting the environmen colon-separated list of additional directories in which to look for shared libraries before building INN will be sufficient. +If you build your own libraries, make sure to generate them as either +shared libraries or static libraries built with B<-fPIC> amongst +the options given to the compiler (to obtain position-independent +code). Otherwise, building INN will fail, unless you pass +B<--disable-hardening-flags> to B. + =back =head1 Unpacking the Distribution @@ -177,8 +193,8 @@ are snapshots of the INN Subversion tree made each night (one of the current development branch, and one of the stable branch consisting of bug fixes to the previous major release). They are stored in date format; in other words the snapshots from April -6th, 2000, would be named F and -F. Choose the newest file of whichever branch +6th, 2020, would be named F and +F. Choose the newest file of whichever branch you prefer. (Note that the downloading, configuring, and compiling steps can be done while logged in as any user.) @@ -458,13 +474,13 @@ flag is explicitly passed to configure. For the most common installation, a standalone news server, a suggested set of options is: - ./configure --with-perl + ./configure --with-perl --with-python -provided that you have the necessary version of Perl installed. -(Compiling with an embedded Perl interpreter will allow you to use one of -the available excellent spam filters if you so choose.) +provided that you have the necessary versions of Perl and Python installed. +(Compiling with embedded Perl and Python interpreters will allow you +to use one of the available excellent spam filters if you so choose.) -If the configure program runs successfully, then you are ready to build +If the B program runs successfully, then you are ready to build the distribution. From the root of the INN source tree, type: make @@ -526,12 +542,10 @@ the correct users and groups. It is YOU resulting directories and files are packaged with the users, groups, and modes which INN wanted them to be installed with! -Please note that INN's shared library interface is not stable and may -change drastically in future releases. For this reason, it's also not -properly versioned and won't be until some degree of stability is -guaranteed, and the relevant header files are not installed. Only INN -should use INN's shared libraries, and you should only use the shared -libraries corresponding to the version of INN that you're installing. +Please note that INN's shared library interface is not stable and +may change drastically in future major releases. Only INN should use +INN's shared libraries, and you should only use the shared libraries +corresponding to the version of INN that you're installing. Also, when updating an existing version of INN, INN tries to save backup copies of all files but man pages and shared libraries so that @@ -541,7 +555,7 @@ are not backed up because this confuses the C<.OLD> versions. Nonetheless, reverting to a previous version of INN should work fine for official releases (that is to say releases that are not daily STABLE or CURRENT snapshots) because a proper -versioning is done, if needed, during the release of a new version. +versioning is done, during the release of a new version. If you are configuring TLS/SSL support for newsreaders, you must make a certificate and private key at least once. Type: @@ -660,28 +674,48 @@ There are three overview mechanisms to c =over 4 -=item tradindexed - -It is very fast for readers, but it has to update two files for each -incoming article and can be quite slow to write. - =item buffindexed -It can keep up with a large feed more easily, since it uses large buffers -to store all overview information, but it's somewhat slower for readers -(although not as slow as the unified overview in S). You will need -to create the buffers for it to use (very similar to creating CNFS buffers) -and list the available buffers in F. See -buffindexed.conf(5) for more information. +It stores overview data and index information into preconfigured large files +like CNFS. Fast at writing, the C overview storage method +can keep up with a large feed more easily and never consumes additional +disk space beyond that allocated to these buffers. The downside is that +these buffers are hard to recover in case of corruption and somewhat +slower for readers and the expiry process. See the buffindexed.conf(5) +man page for more details, and notably how to create the buffers. =item ovdb -It stores overview data in a S database; it's fast and very robust, -but may require more disk space. See the ovdb(5) man page for more -information on it. +It stores overview information into a S database, whose +development pace has stalled these last years. This method is fast +and very robust, but may require more disk space, unless compression +is enabled. See the ovdb(5) man page for more details. + +=item tradindexed + +It uses two files per newsgroup, one containing the overview data +and one containing the index. Fast for readers, but slow to write to +because it has to update two files for each incoming article. Its main +advantage is to be the best tested, the most reliable and the method +with the best recovery tools. =back +Here are a few elements that can be helpful in choosing the right +overview method for your needs and estimating the associated storage +size. In 2020, the volume for a full-text Usenet feed is about 18,000 +articles per day, with peaks to 1,200 articles per hour. Article storage +size is about S<65 MB> per day. + +As for overview storage size, if you have 5 million articles, you'll +need at least S<3.25 GB> of disk space for buffindexed, S<5.5 GB> for ovdb +(S<4.5 GB> if compressed), and S<3.10 GB> for tradindexed. + +If you store more header fields in overview data than the standard +ones, the space needed to store overview data will be superior +than these estimates. (This is configured in F, via the +I and I parameters.) + =head1 Configuring INN All documentation from this point on assumes that you have set up the news @@ -690,11 +724,11 @@ your INN installation is F<~news> (I, you'll need to adjust the instructions to account for that. -All of INN's configuration files are located in I. Unless -noted otherwise, any files referred to below are in this directory. When -you first install INN, a sample of each file (containing lots of comments) -is installed in I; refer to these for concrete examples of -everything discussed in this section. +All of INN's configuration files are located in I as set in +F. Unless noted otherwise, any files referred to below are +in this directory. When you first install INN, a sample of each file +(containing lots of comments) is installed in I; refer to +these for concrete examples of everything discussed in this section. All of INN's configuration files, all of the programs that come with it, and some of its library routines have documentation in the form of man @@ -1705,6 +1739,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 10283 2018-05-14 12:43:05Z iulius $ +$Id: install.pod 10535 2021-01-20 17:55:18Z iulius $ =cut diff -Nurp inn-2.6.3/doc/pod/news.pod inn-2.6.4/doc/pod/news.pod --- inn-2.6.3/doc/pod/news.pod 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/pod/news.pod 2021-01-21 13:53:07.000000000 -0800 @@ -1,3 +1,72 @@ +=head1 Changes in 2.6.4 + +=over 2 + +=item * + +Added support for systemd notifications and socket activation. Use of more +features provided by systemd, including more notifications, will come +in future releases. Thanks to Marco d'Itri for this first systemd +integration into INN. + +=item * + +B now adapts the length of the DH parameter used during a DHE +key exchange so as to comply with the security level S +or later expects. Thanks to Michael Baeuerle for the bug report. + +=item * + +B now also returns information about retired CNFS buffers, +that is to say buffers mentioned in F as a cycbuff but +not declared in a metacycbuff. + +=item * + +Switch default B behaviour to common practice of externalizing +CSS into a separate file. Its name can be configured with the +I parameter in F. If this parameter +is unset, the default F file name will be used and +B will generate this CSS file for you. Previously generated +reports are kept untouched, though, and will still contain inline CSS +if you had not already set the I parameter in previous +INN versions. Thanks to Richard Kettlewell for the patch. + +=item * + +B can now read and store any number of articles given in wire format +on its standard input when both B<-s> and B<-R> are used. Only native +format was previously possible. Thanks to Bo Lindbergh for the patch. + +=item * + +Added new B<-a> flag to B to disallow, if needed, the use +of additional unpackers from the F sub-directory of +I (as set in F); only C and C +will then be recognized as valid batch commands. + +=item * + +Added new B<-b> flag to B to save rejected articles in the F +sub-directory of I (as set in F). Otherwise, +B just logs and discards any articles that are rejected or cannot +be parsed for some reason. + +=item * + +Added new B<-d> flag to B to log via syslog the message-ID and the +Path header value of each article rejected as a duplicate. + +=item * + +Added new B<--enable-hardening-flags> configure-time option, +enabled by default, to use hardening build flags like C<-fPIE> and +C<-fstack-protector-strong>. This option can easily be disabled if the +compiler or the platform does not support them well. More hardening +build flags will eventually be added in future releases. + +=back + =head1 Changes in 2.6.3 =over 2 @@ -3206,6 +3275,6 @@ directory, for now). =back -$Id: news.pod 10326 2019-02-04 14:22:34Z iulius $ +$Id: news.pod 10532 2021-01-20 12:00:42Z iulius $ =cut diff -Nurp inn-2.6.3/doc/pod/nnrpd.pod inn-2.6.4/doc/pod/nnrpd.pod --- inn-2.6.3/doc/pod/nnrpd.pod 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/pod/nnrpd.pod 2021-01-21 13:53:07.000000000 -0800 @@ -205,8 +205,9 @@ You then have to set these F p tlscertfile: /cert.pem tlskeyfile: /key.pem -In case you have a certificate authority root certificate, you can also -set I to its path. +Note that unlike Apache's I directive, I +should not contain a concatenation of certificates. Instead, if you have +a certificate authority root certificate, set I to its path. There are two common ways for a news client to negotiate a TLS connection: either via the use of a dedicated port (usually 563) @@ -307,7 +308,7 @@ support added by Rob Robertston 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.9 KB> per article, +so you'll need at least S<4.5 GB> of disk space for 5 million articles. +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 @@ -369,7 +370,7 @@ legacy F file. Written by Heath Kehoe for InterNetNews. -$Id: ovdb.pod 10241 2018-02-04 15:38:19Z iulius $ +$Id: ovdb.pod 10525 2021-01-20 11:51:15Z iulius $ =head1 SEE ALSO diff -Nurp inn-2.6.3/doc/pod/qio.pod inn-2.6.4/doc/pod/qio.pod --- inn-2.6.3/doc/pod/qio.pod 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/pod/qio.pod 2021-01-21 13:53:07.000000000 -0800 @@ -39,13 +39,10 @@ The QIOSTATE structure returned by B opens the given file for reading. For regular files, if your -system provides that information and the size is reasonable, QIO will use -the block size of the underlying file system as its buffer size; -otherwise, it will default to a buffer of S<8 KB>. Returns a pointer to use -for subsequent calls, or NULL on error. B performs the same -operation except on an already-open file descriptor (I must designate -a file open for reading). +B opens the given file for reading with a buffer size of 32KiB. +Returns a pointer to use for subsequent calls, or NULL on error. +B performs the same operation except on an already-open file +descriptor (I must designate a file open for reading). B closes the open file and releases any resources used by the QIOSTATE structure. The QIOSTATE pointer should not be used again after @@ -55,9 +52,9 @@ B reads the next newline-termin a pointer to it, with the trailing newline replaced by nul. The returned pointer is a pointer into a buffer in the QIOSTATE object and therefore will remain valid until B is called on that object. If EOF is -reached, an error occurs, or if the line is longer than the buffer size, -NULL is returned instead. To distinguish between the error cases, use -B and B. +reached, an error occurs, or if the line is longer than the buffer size +(32KiB), NULL is returned instead. To distinguish between the error +cases, use B and B. B returns the descriptor of the open file. @@ -108,6 +105,6 @@ printing out each line preceded by its o Written by Rich $alz for InterNetNews. Updated by Russ Allbery . -$Id: qio.pod 9767 2014-12-07 21:13:43Z iulius $ +$Id: qio.pod 10457 2020-12-19 06:10:49Z eagle $ =cut diff -Nurp inn-2.6.3/doc/pod/readme.pod inn-2.6.4/doc/pod/readme.pod --- inn-2.6.3/doc/pod/readme.pod 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/pod/readme.pod 2021-01-21 13:53:07.000000000 -0800 @@ -220,7 +220,7 @@ answer questions about it. =item Cleanfeed -URL: L (maintained by Steve Crook) +URL: L (maintained by Steve Crook) Cleanfeed is an extremely powerful spam filter, probably the most widely used spam filter on Usenet currently. It catches excessive multiposting @@ -246,7 +246,7 @@ feeds that change periodically. =item innduct -URL: L (maintained by Ian Jackson) +URL: L (maintained by Ian Jackson) A possible replacement for B, B and B that quickly and reliably streams Usenet article to a remote site. @@ -256,7 +256,7 @@ It also permits a realtime feed, contrar =item NewsPortal -URL: L +URL: L A PHP-based web news reader that works as a front-end to a regular news server such as INN and lets people read and post without learning a news @@ -272,7 +272,7 @@ only, unfortunately. =item suck -URL: L +URL: L B is a separate package for downloading a news feed via a reading connection (rather than via a direct NNTP or UUCP feed) and sending @@ -280,16 +280,6 @@ outgoing local posts via POST. It's int small-organization news servers who get their news via an ISP and are too small to warrant setting up a regular news feed. -=item newsx - -URL: L - -Serving the same purpose as B, B is a separate package for -downloading a news feed via a reading connection and sending outgoing -local posts via POST. Some people find B easier to configure and use, -and some people find B easier. If you have problems with one, try the -other. - =back =head1 Supporting the INN Effort @@ -310,6 +300,6 @@ L. Katsuhiro Kondou -$Id: readme.pod 10186 2017-11-05 17:49:59Z eagle $ +$Id: readme.pod 10359 2020-03-08 21:47:11Z eagle $ =cut diff -Nurp inn-2.6.3/doc/pod/rnews.pod inn-2.6.4/doc/pod/rnews.pod --- inn-2.6.3/doc/pod/rnews.pod 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/pod/rnews.pod 2021-01-21 13:53:07.000000000 -0800 @@ -4,7 +4,7 @@ rnews - Inject individual articles and U =head1 SYNOPSIS -B [B<-NUv>] [B<-h> I] [B<-P> I] [B<-rS> I] +B [B<-abdNUv>] [B<-h> I] [B<-P> I] [B<-rS> I] [I] =head1 DESCRIPTION @@ -15,10 +15,11 @@ injecting articles received from other s generally use inews(1) instead. It is also used to process spooled messages created by, for example, B while B is not available. -The message is read from I if given, or standard input if no file is -given. Articles are sent to the server given in the B<-r> or B<-S> -command line options if given, otherwise to the server set via -I in F, otherwise to the local server. +The message is read from I if given, spooled files (with the B<-U> +flag) or standard input if no file is given. Articles are sent to +the server given in the B<-r> or B<-S> command line options if given, +otherwise to the server set via I in F, +otherwise to the local server. When sent over UUCP, Usenet articles are typically collected in a single batch to reduce the UUCP overhead. Batches can also be compressed to @@ -47,12 +48,12 @@ instead use C as the batch com than B because it can handle B-style compression but is more widely available, due to old patent issues, than B.) -Otherwise, if the command is any other word, then B will try to -execute a program with that name, looking for it in the directory -I/rnews.libexec. The rest of the batch will be fed to that -program's standard input, and the standard output from the program will be -treated as if it were the original input to B. INN comes with three -such standard batch processors: +Otherwise, if the command is any other word and the B<-a> flag is not +given, B will try to execute a program with that name, looking +for it in the directory I/rnews.libexec. The rest of the +batch will be fed to that program's standard input, and the standard +output from the program will be treated as if it were the original +input to B. INN comes with three such standard batch processors: =over 2 @@ -71,16 +72,30 @@ It invokes B and should be used fo =back -By default, B will log and discard any articles that are rejected -by the server or cannot be parsed by B for some reason (such as a -missing header). This default can be changed when compiling INN by -setting DO_RNEWS_SAVE_BAD in F. There is no way to -change it at runtime, unfortunately. - =head1 OPTIONS =over 4 +=item B<-a> + +By default, B looks for additional unpackers in the +F sub-directory of I (as set in F). +If B<-a> is given, no additional batch processor will be used; only +C and C will be recognized as valid batch commands. + +=item B<-b> + +By default, B will log and discard any articles that are rejected +by the server or cannot be parsed by B for some reason (such +as a missing header). If B<-b> is given, rejected articles will also +be backed up in the F sub-directory of I (as set +in F). + +=item B<-d> + +If B<-d> is given, B will log via syslog the message-ID and the +Path header value of each article rejected as a duplicate by the server. + =item B<-h> I If B<-h> is given, B will log the message ID and I via syslog @@ -121,6 +136,11 @@ filenames do not begin with C<.>, attemp again. It's a good idea to run this periodically out of cron to pick up any articles spooled due to temporary server unavailability. +=item B<-v> + +Enable verbose mode, with more traces, notably logging the reason why +articles are rejected by the server. + =back =head1 BUGS @@ -133,7 +153,7 @@ them. (Neither can the rest of INN at p Written by Rich $alz for InterNetNews. Rewritten in POD by Russ Allbery . -$Id: rnews.pod 9767 2014-12-07 21:13:43Z iulius $ +$Id: rnews.pod 10382 2020-05-24 10:24:37Z iulius $ =head1 SEE ALSO diff -Nurp inn-2.6.3/doc/pod/sm.pod inn-2.6.4/doc/pod/sm.pod --- inn-2.6.3/doc/pod/sm.pod 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/doc/pod/sm.pod 2021-01-21 13:53:07.000000000 -0800 @@ -26,11 +26,12 @@ input, one per line. The default operat standard output the corresponding article for each token given. If B<-s> is given, B instead stores the article given on standard -input (in native format, not wire format) using the standard rules of the -storage subsystem. If the article is stored successfully, the token of -the article is printed to standard output. Please note that this does not -make any attempt to write a history entry or any overview data, and is -therefore only useful under very specific circumstances. +input (in native format, unless B<-R> is given, in which case wire +format is expected) using the standard rules of the storage subsystem. +If the article is stored successfully, the token of the article is +printed to standard output. Please note that this does not make any +attempt to write a history entry or any overview data, and is therefore +only useful under very specific circumstances. =head1 OPTIONS @@ -73,6 +74,8 @@ to native line endings and will be left will still be escaped for sending over NNTP, and the article will end in a CRLF.CRLF sequence. +When used with B<-s>, read articles in wire format. + =item B<-S> Write the article to standard output in the format used by B spool @@ -83,10 +86,12 @@ B<-H>, B<-i>, or B<-R>. =item B<-s> -Store the article given on standard input using the normal storage rules -for articles as configured in storage.conf(5). Print the new token for -the message to standard output if it is stored successfully. If this -option is given, no other options except possibly B<-q> should be given. +Store the article given on standard input using the normal storage +rules for articles as configured in storage.conf(5). Print the new +token for the message to standard output if it is stored successfully. +If this option is given, no other options except B<-R> and possibly B<-q> +should be given. When B<-R> is given, any number of articles in wire +format are read on standard input and stored. =back @@ -107,7 +112,7 @@ succeeded, you should run B on one t Written by Katsuhiro Kondou for InterNetNews. Rewritten in POD by Russ Allbery . -$Id: sm.pod 9767 2014-12-07 21:13:43Z iulius $ +$Id: sm.pod 10405 2020-11-21 07:02:43Z iulius $ =head1 SEE ALSO diff -Nurp inn-2.6.3/expire/makehistory.c inn-2.6.4/expire/makehistory.c --- inn-2.6.3/expire/makehistory.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/expire/makehistory.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: makehistory.c 9896 2015-06-14 10:09:47Z iulius $ +/* $Id: makehistory.c 10513 2021-01-15 22:34:56Z iulius $ ** ** Rebuild history/overview databases. */ @@ -153,6 +153,7 @@ FlushOverTmpFile(void) char temp[SMBUF]; char *SortedTmpPath; int i, pid, fd; + float f; TOKEN token; QIOSTATE *qp; int count; @@ -278,7 +279,7 @@ FlushOverTmpFile(void) } token = TextToToken(q); if (OVadd(token, r, strlen(r), arrived, expires) == OVADDFAILED) { - if (OVctl(OVSPACE, (void *)&i) && i == OV_NOSPACE) { + if (OVctl(OVSPACE, (void *)&f) && (int)(f+0.01f) == OV_NOSPACE) { warn("no space left for overview"); OVclose(); Fork ? _exit(1) : exit(1); @@ -314,7 +315,8 @@ WriteOverLine(TOKEN *token, const char * { char temp[SMBUF]; const char *p, *q, *r; - int i, fd; + int fd; + float f; /* If WriteStdout is set, just print the overview information to standard output and return. */ @@ -336,7 +338,7 @@ WriteOverLine(TOKEN *token, const char * sysdie("writing overview failed"); fputc('\n', Overchan); } else if (OVadd(*token, overdata, overlen, arrived, expires) == OVADDFAILED) { - if (OVctl(OVSPACE, (void *)&i) && i == OV_NOSPACE) { + if (OVctl(OVSPACE, (void *)&f) && (int)(f+0.01f) == OV_NOSPACE) { warn("no space left for overview"); OVclose(); exit(1); diff -Nurp inn-2.6.3/frontends/Makefile inn-2.6.4/frontends/Makefile --- inn-2.6.3/frontends/Makefile 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/frontends/Makefile 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -## $Id: Makefile 10100 2016-11-04 22:24:26Z iulius $ +## $Id: Makefile 10428 2020-11-24 07:20:05Z iulius $ include ../Makefile.global @@ -63,9 +63,12 @@ $(FIXSCRIPT): ## Compilation rules. -BOTH = $(LIBSTORAGE) $(LIBHIST) $(LIBINN) +# $(LIBSTORAGE) must be listed twice to resolve circular dependencies +# when doing static linking. +BOTH = $(LIBSTORAGE) $(LIBHIST) $(LIBSTORAGE) $(LIBINN) LINK = $(LIBLD) $(LDFLAGS) -o $@ +LINKDEPS = $(LIBLDDEPS) $(LDFLAGS) -o $@ INNLIBS = $(LIBINN) $(LIBS) STORELIBS = $(BOTH) $(STORAGE_LIBS) $(LIBS) @@ -77,12 +80,17 @@ encode: encode.o ; $(LI getlist: getlist.o $(LIBINN) ; $(LINK) getlist.o $(INNLIBS) inews: inews.o $(LIBINN) ; $(LINK) inews.o $(INNLIBS) innconfval: innconfval.o $(LIBINN) ; $(LINK) innconfval.o $(INNLIBS) -ovdb_init: ovdb_init.o $(BOTH) ; $(LINK) ovdb_init.o $(STORELIBS) -ovdb_monitor: ovdb_monitor.o $(BOTH) ; $(LINK) ovdb_monitor.o $(STORELIBS) -ovdb_server: ovdb_server.o $(BOTH) ; $(LINK) ovdb_server.o $(STORELIBS) -ovdb_stat: ovdb_stat.o $(BOTH) ; $(LINK) ovdb_stat.o $(STORELIBS) +ovdb_init: ovdb_init.o $(BOTH) + $(LINKDEPS) ovdb_init.o $(STORELIBS) +ovdb_monitor: ovdb_monitor.o $(BOTH) + $(LINKDEPS) ovdb_monitor.o $(STORELIBS) +ovdb_server: ovdb_server.o $(BOTH) + $(LINKDEPS) ovdb_server.o $(STORELIBS) +ovdb_stat: ovdb_stat.o $(BOTH) + $(LINKDEPS) ovdb_stat.o $(STORELIBS) rnews: rnews.o $(BOTH) ; $(LINK) rnews.o $(STORELIBS) -sm: sm.o $(BOTH) ; $(LINK) sm.o $(STORELIBS) +sm: sm.o $(BOTH) + $(LINKDEPS) sm.o $(STORELIBS) ovdb_init.o: ovdb_init.c $(CC) $(CFLAGS) $(BDB_CPPFLAGS) -c $< diff -Nurp inn-2.6.3/frontends/cnfsstat.in inn-2.6.4/frontends/cnfsstat.in --- inn-2.6.3/frontends/cnfsstat.in 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/frontends/cnfsstat.in 2021-01-21 13:53:07.000000000 -0800 @@ -1,7 +1,7 @@ #! /usr/bin/perl -w # fixscript will replace this line with code to load INN::Config -# $Id: cnfsstat.in 10076 2016-10-08 20:37:36Z iulius $ +# $Id: cnfsstat.in 10350 2019-10-27 14:14:22Z iulius $ # # Copyright Andreas Lamrecht 1998 # @@ -195,7 +195,7 @@ if ($oclass) { print STDERR "Class $oclass not found ...\n"; } } else { # Print all Classes - + my %buffDone; foreach my $c (@storsort) { ($gr, $cl, $min, $max) = split(/:/, $stor{$c}); # Remove leading and trailing double quotes, if present. @@ -226,11 +226,27 @@ if ($oclass) { next; } print_cycbuff_head($buff{$b}); + $buffDone{$b}++; } if (!$use_syslog) { print STDOUT "\n"; } } + + if (!$use_syslog) { + # Finally, print all retired cyclic buffers, still active but no longer + # mentioned in a class. + my $buffRetired = 0; + foreach my $b (sort keys(%buff)) { + if(! exists($buffDone{$b})) { + if (!$buffRetired) { + print STDOUT "Retired cyclic buffers\n"; + } + print_cycbuff_head($buff{$b}); + $buffRetired++; + } + } + } } if(defined($opt{'l'})) { diff -Nurp inn-2.6.3/frontends/inews.c inn-2.6.4/frontends/inews.c --- inn-2.6.3/frontends/inews.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/frontends/inews.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: inews.c 10304 2018-12-02 14:05:50Z iulius $ +/* $Id: inews.c 10365 2020-05-10 12:58:37Z iulius $ ** ** Send an article (prepared by someone on the local site) to the ** master news server. @@ -685,7 +685,7 @@ AppendSignature(bool UseMalloc, char *ar *linesp = 0; if (strlen(homedir) > sizeof(buff) - 14) die("home directory path too long"); - sprintf(buff, "%s/.signature", homedir); + snprintf(buff, sizeof(buff), "%s/.signature", homedir); if ((F = fopen(buff, "r")) == NULL) { if (errno == ENOENT) return article; diff -Nurp inn-2.6.3/frontends/rnews.c inn-2.6.4/frontends/rnews.c --- inn-2.6.3/frontends/rnews.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/frontends/rnews.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: rnews.c 10040 2016-07-31 20:01:43Z iulius $ +/* $Id: rnews.c 10382 2020-05-24 10:24:37Z iulius $ ** ** A front-end for InterNetNews. ** @@ -34,7 +34,10 @@ typedef struct _HEADER { } HEADER; -static bool Verbose; +static bool additionalUnpackers = true; +static bool backupBad = false; +static bool logDuplicates = false; +static bool Verbose = false; static const char *InputFile = "stdin"; static char *UUCPHost; static char *PathBadNews = NULL; @@ -164,37 +167,49 @@ static void Reject(const char *article, size_t length UNUSED, const char *reason, const char *arg) { -#if defined(DO_RNEWS_SAVE_BAD) char *filename; FILE *F; int fd; -#endif /* defined(DO_RNEWS_SAVE_BAD) */ +#if __GNUC__ > 4 +# pragma GCC diagnostic ignored "-Wformat-nonliteral" +#endif notice(reason, arg); +#if __GNUC__ > 4 +# pragma GCC diagnostic warning "-Wformat-nonliteral" +#endif if (Verbose) { fprintf(stderr, "%s: ", InputFile); +#if __GNUC__ > 4 +# pragma GCC diagnostic ignored "-Wformat-nonliteral" +#endif fprintf(stderr, reason, arg); +#if __GNUC__ > 4 +# pragma GCC diagnostic warning "-Wformat-nonliteral" +#endif fprintf(stderr, " [%.40s...]\n", article); } -#if defined(DO_RNEWS_SAVE_BAD) - filename = concat(PathBadNews, "/XXXXXX", (char *) 0); - fd = mkstemp(filename); - if (fd < 0) { - warn("cannot create temporary file"); - return; - } - F = fdopen(fd, "w"); - if (F == NULL) { - warn("cannot fdopen %s", filename); - return; - } - if (fwrite(article, 1, length, F) != length) - warn("cannot fwrite to %s", filename); - if (fclose(F) == EOF) - warn("cannot close %s", filename); - free(filename); -#endif /* defined(DO_RNEWS_SAVE_BAD) */ + if (backupBad) { + filename = concat(PathBadNews, "/XXXXXX", (char *) 0); + fd = mkstemp(filename); + if (fd < 0) { + warn("cannot create temporary file"); + free(filename); + return; + } + F = fdopen(fd, "w"); + if (F == NULL) { + warn("cannot fdopen %s", filename); + free(filename); + return; + } + if (fwrite(article, 1, length, F) != length) + warn("cannot fwrite to %s", filename); + if (fclose(F) == EOF) + warn("cannot close %s", filename); + free(filename); + } } @@ -213,12 +228,7 @@ Process(char *article, size_t artlen) const char *id = NULL; char *msgid; char buff[SMBUF]; -#if defined(FILE_RNEWS_LOG_DUPS) - FILE *F; -#endif /* defined(FILE_RNEWS_LOG_DUPS) */ -#if !defined(DONT_RNEWS_LOG_DUPS) char path[40]; -#endif /* !defined(DONT_RNEWS_LOG_DUPS) */ /* Empty article? */ if (*article == '\0') @@ -239,13 +249,13 @@ Process(char *article, size_t artlen) id = p; continue; } -#if !defined(DONT_RNEWS_LOG_DUPS) - if (IS_PATH(hp)) { - strlcpy(path, p, sizeof(path)); - if ((q = strchr(path, '\r')) != NULL) - *q = '\0'; - } -#endif /* !defined(DONT_RNEWS_LOG_DUPS) */ + if (logDuplicates) { + if (IS_PATH(hp)) { + strlcpy(path, p, sizeof(path)); + if ((q = strchr(path, '\r')) != NULL) + *q = '\0'; + } + } } /* Send the NNTP "ihave" message. */ @@ -288,17 +298,9 @@ Process(char *article, size_t artlen) case NNTP_CONT_IHAVE: break; case NNTP_FAIL_IHAVE_REFUSE: -#if defined(SYSLOG_RNEWS_LOG_DUPS) - *p = '\0'; - notice("duplicate %s %s", id, path); -#endif /* defined(SYSLOG_RNEWS_LOG_DUPS) */ -#if defined(FILE_RNEWS_LOG_DUPS) - if ((F = fopen(INN_PATH_RNEWS_DUP_LOG, "a")) != NULL) { - *p = '\0'; - fprintf(F, "duplicate %s %s\n", id, path); - fclose(F); - } -#endif /* defined(FILE_RNEWS_LOG_DUPS) */ + if (logDuplicates) { + notice("duplicate %s %s", msgid, path); + } free(wirefmt); return true; } @@ -484,10 +486,9 @@ ReadLine(char *p, int size, int fd) static bool UnpackOne(int *fdp, size_t *countp) { -#if defined(DO_RNEWSPROGS) char path[(SMBUF * 2) + 1]; char *p; -#endif /* defined(DO_RNEWSPROGS) */ + int len; char buff[SMBUF]; const char *cargv[4]; int artsize; @@ -575,38 +576,39 @@ UnpackOne(int *fdp, size_t *countp) continue; } -#if defined(DO_RNEWSPROGS) - int len; - - cargv[0] = UNPACK; - cargv[1] = NULL; - /* Ignore any possible leading pathnames, to avoid trouble. */ - if ((p = strrchr(&buff[3], '/')) != NULL) - p++; - else - p = &buff[3]; - if (strchr(INN_PATH_RNEWSPROGS, '/') == NULL) { - snprintf(path, sizeof(path), "%s/%s/%s", innconf->pathbin, - INN_PATH_RNEWSPROGS, p); - len = strlen(innconf->pathbin) + 1 + sizeof INN_PATH_RNEWSPROGS; - } else { - snprintf(path, sizeof(path), "%s/%s", INN_PATH_RNEWSPROGS, p); - len = sizeof INN_PATH_RNEWSPROGS; - } - for (p = &path[len]; *p; p++) - if (ISWHITE(*p)) { - *p = '\0'; - break; - } - *fdp = StartChild(*fdp, path, cargv); - if (*fdp < 0) - return false; - (*countp)++; - continue; -#else - warn("bad_format unknown command %s", buff); - return false; -#endif /* defined(DO_RNEWSPROGS) */ + if (additionalUnpackers) { + cargv[0] = UNPACK; + cargv[1] = NULL; + /* Ignore any possible leading pathnames, to avoid trouble. */ + if ((p = strrchr(&buff[3], '/')) != NULL) { + p++; + } else { + p = &buff[3]; + } + if (strchr(INN_PATH_RNEWSPROGS, '/') == NULL) { + snprintf(path, sizeof(path), "%s/%s/%s", innconf->pathbin, + INN_PATH_RNEWSPROGS, p); + len = strlen(innconf->pathbin) + 1 + + sizeof(INN_PATH_RNEWSPROGS); + } else { + snprintf(path, sizeof(path), "%s/%s", INN_PATH_RNEWSPROGS, p); + len = sizeof(INN_PATH_RNEWSPROGS); + } + for (p = &path[len]; *p; p++) + if (ISWHITE(*p)) { + *p = '\0'; + break; + } + *fdp = StartChild(*fdp, path, cargv); + if (*fdp < 0) { + return false; + } + (*countp)++; + continue; + } else { + warn("bad_format unknown command %s", buff); + return false; + } } return true; } @@ -879,11 +881,20 @@ int main(int ac, char *av[]) /* Parse JCL. */ fd = STDIN_FILENO; mode = '\0'; - while ((i = getopt(ac, av, "h:P:NUvr:S:")) != EOF) + while ((i = getopt(ac, av, "abdh:NP:r:S:Uv")) != EOF) switch (i) { default: die("usage error"); /* NOTRTEACHED */ + case 'a': + additionalUnpackers = false; + break; + case 'b': + backupBad = true; + break; + case 'd': + logDuplicates = true; + break; case 'h': UUCPHost = *optarg ? optarg : NULL; break; diff -Nurp inn-2.6.3/frontends/sm.c inn-2.6.4/frontends/sm.c --- inn-2.6.3/frontends/sm.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/frontends/sm.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: sm.c 9877 2015-05-24 13:59:15Z iulius $ +/* $Id: sm.c 10405 2020-11-21 07:02:43Z iulius $ ** ** Provide a command line interface to the storage manager. */ @@ -15,6 +15,8 @@ #include "inn/libinn.h" #include "inn/storage.h" +#define WIRE_CHUNK_SIZE 0x10000 + static const char usage[] = "\ Usage: sm [-cdHiqrRSs] [token ...]\n\ \n\ @@ -29,8 +31,9 @@ line.\n\ -i Translate tokens into newsgroup names and article numbers\n\ -q Suppress all error messages except usage\n\ -R Display the raw article rather than undoing wire format\n\ + or consume wire format articles when storing\n\ -S Output articles in rnews batch file format\n\ - -s Store the article provided on stdin.\n"; + -s Store the article provided on stdin\n"; /* The options that can be set on the command line, used to determine what to do with each token. */ @@ -39,33 +42,26 @@ struct options { bool clearinfo; /* Show clear information about a token. */ bool delete; /* Delete articles instead of showing them. */ bool header; /* Display article headers only. */ - bool raw; /* Show the raw wire-format articles. */ + bool raw; /* Display or consume wire-format articles. */ bool rnews; /* Output articles as rnews batch files. */ }; /* -** Given a file descriptor, read a post from that file descriptor and then -** store it. This basically duplicates what INN does, except that INN has to +** This basically duplicates what INN does, except that INN has to ** do more complex things to add the Path header. ** ** Note that we make no attempt to add history or overview information, at ** least right now. */ static bool -store_article(int fd) +store_article_common(char *text, size_t size) { - struct buffer *article; - size_t size; - char *text, *start, *end; + char *start, *end; ARTHANDLE handle = ARTHANDLE_INITIALIZER; TOKEN token; /* Build the basic article handle. */ - article = buffer_new(); - if (!buffer_read_file(article, fd)) - sysdie("cannot read article"); - text = wire_from_native(article->data, article->left, &size); handle.type = TOKEN_EMPTY; handle.data = text; handle.iov = xmalloc(sizeof(struct iovec)); @@ -75,7 +71,6 @@ store_article(int fd) handle.len = size; handle.arrived = 0; handle.expires = 0; - buffer_free(article); /* Find the expiration time, if any. */ start = wire_findheader(text, size, "Expires", true); @@ -118,8 +113,8 @@ store_article(int fd) /* Store the article. */ token = SMstore(handle); - free(text); free(handle.iov); + if (token.type == TOKEN_EMPTY) { warn("failed to store article: %s", SMerrorstr); return false; @@ -131,6 +126,104 @@ store_article(int fd) /* +** Given a file descriptor, read a post from that file descriptor and then +** store it. +*/ +static bool +store_article(int fd) +{ + struct buffer *article; + size_t size; + char *text; + bool result; + + article = buffer_new(); + if (!buffer_read_file(article, fd)) { + sysdie("cannot read article"); + } + text = wire_from_native(article->data, article->left, &size); + buffer_free(article); + result = store_article_common(text, size); + free(text); + return result; +} + + +/* +** Given a file descriptor, read any number of posts in wire format +** from that file descriptor and store them. +*/ +static bool +store_wire_articles(int fd) +{ + bool result = true; + bool skipping = false; + struct buffer *input; + size_t offset; + ssize_t got; + + input = buffer_new(); + buffer_resize(input, WIRE_CHUNK_SIZE); + offset = 0; + for (;;) { + got = buffer_read(input, fd); + if (got < 0) { + result = false; + syswarn("article read failed"); + break; + } + if (got == 0) + break; + + while (buffer_find_string(input, "\r\n.\r\n", offset, &offset)) { + size_t size; + + size = offset + 5; + if (skipping) { + skipping = false; + } else { + char *text; + + text = input->data + input->used; + if (!store_article_common(text, size)) + result = false; + } + input->used += size; + input->left -= size; + offset = 0; + } + + if (!skipping && input->used <= 0 && input->left >= input->size) { + if (input->size >= innconf->maxartsize) { + skipping = true; + result = false; + warn("article too large, skipping"); + } else { + buffer_resize(input, input->size + WIRE_CHUNK_SIZE); + } + } + if (skipping && input->left > 4) { + input->used += input->left - 4; + input->left = 4; + } + if (input->left >= 4) { + offset = input->left - 4; + } else { + offset = 0; + } + if (input->used > 0) + buffer_compact(input); + } + + if (input->left > 0) + warn("trailing garbage at end of input"); + + buffer_free(input); + return result; +} + + +/* ** Process a single token, performing the operations specified in the given ** options struct. Calls warn and die to display error messages; -q is ** implemented by removing all the warn and die error handlers. @@ -251,12 +344,12 @@ main(int argc, char *argv[]) die("-R cannot be used with -S"); if (options.header && options.rnews) die("-H cannot be used with -S"); - if (store && (options.artinfo || options.delete || options.header)) - die("-s cannot be used with -i, -r, -d, -H, -R, or -S"); - if (store && (options.raw || options.rnews)) - die("-s cannot be used with -i, -r, -d, -H, -R, or -S"); - if (options.clearinfo && (options.artinfo || options.delete || options.header - || options.raw || options.rnews || store)) + if (store && (options.artinfo || options.delete + || options.header || options.rnews)) + die("-s cannot be used with -i, -r, -d, -H, or -S"); + if (options.clearinfo && (options.artinfo || options.delete + || options.header || options.raw + || options.rnews || store)) die("-c cannot be used with -i, -r, -d, -H, -R, -S, or -s"); /* Initialize the storage manager. If we're doing article deletions, we @@ -270,9 +363,13 @@ main(int argc, char *argv[]) if (!SMinit()) die("cannot initialize storage manager: %s", SMerrorstr); - /* If we're storing an article, do that and then exit. */ + /* If we're storing articles, do that and then exit. */ if (store) { - status = store_article(fileno(stdin)); + if (options.raw) { + status = store_wire_articles(fileno(stdin)); + } else { + status = store_article(fileno(stdin)); + } exit(status ? 0 : 1); } diff -Nurp inn-2.6.3/history/Makefile inn-2.6.4/history/Makefile --- inn-2.6.3/history/Makefile 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/history/Makefile 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -## $Id: Makefile 10321 2018-12-29 13:47:14Z iulius $ +## $Id: Makefile 10423 2020-11-22 21:15:35Z 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:3:0 +LTVERSION = 3:4:0 top = .. CFLAGS = $(GCFLAGS) -I. diff -Nurp inn-2.6.3/include/clibrary.h inn-2.6.4/include/clibrary.h --- inn-2.6.3/include/clibrary.h 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/include/clibrary.h 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: clibrary.h 10287 2018-05-21 12:42:24Z iulius $ +/* $Id: clibrary.h 10444 2020-12-09 21:06:15Z iulius $ * * Standard system includes and portability adjustments. * @@ -27,7 +27,7 @@ * which can be found at . * * Written by Russ Allbery - * Copyright 2014, 2016, 2018 Russ Allbery + * Copyright 2014, 2016, 2018, 2020 Russ Allbery * Copyright 2006-2011, 2013-2014 * The Board of Trustees of the Leland Stanford Junior University * @@ -50,28 +50,28 @@ /* A set of standard ANSI C headers. We don't care about pre-ANSI systems. */ #if HAVE_INTTYPES_H -# include +# include #endif #include #include #include #if HAVE_STDINT_H -# include +# include #endif #include #include #include #if HAVE_STRINGS_H -# include +# include #endif #include #if HAVE_UNISTD_H -# include +# include #endif /* SCO OpenServer gets int32_t from here. */ #if HAVE_SYS_BITYPES_H -# include +# include #endif /* Get the bool type. */ @@ -79,12 +79,12 @@ /* In case uint32_t and associated limits weren't defined. */ #ifndef UINT32_MAX -# define UINT32_MAX 4294967295UL +# define UINT32_MAX 4294967295UL #endif /* Windows provides snprintf under a different name. */ #ifdef _WIN32 -# define snprintf _snprintf +# define snprintf _snprintf #endif /* Define sig_atomic_t if it's not available in signal.h. */ @@ -102,9 +102,9 @@ typedef ptrdiff_t ssize_t; * been defined, all the rest almost certainly have. */ #ifndef STDIN_FILENO -# define STDIN_FILENO 0 -# define STDOUT_FILENO 1 -# define STDERR_FILENO 2 +# define STDIN_FILENO 0 +# define STDOUT_FILENO 1 +# define STDERR_FILENO 2 #endif /* @@ -123,11 +123,21 @@ typedef ptrdiff_t ssize_t; * Autoconf manual, memcpy is a generally portable fallback. */ #ifndef va_copy -# ifdef __va_copy -# define va_copy(d, s) __va_copy((d), (s)) -# else -# define va_copy(d, s) memcpy(&(d), &(s), sizeof(va_list)) -# endif +# ifdef __va_copy +# define va_copy(d, s) __va_copy((d), (s)) +# else +# define va_copy(d, s) memcpy(&(d), &(s), sizeof(va_list)) +# endif +#endif + +/* + * If explicit_bzero is not available, fall back on memset. This does NOT + * provide any of the security guarantees of explicit_bzero and will probably + * be optimized away by the compiler. It just ensures that code will compile + * and function on systems without explicit_bzero. + */ +#if !HAVE_EXPLICIT_BZERO +# define explicit_bzero(s, n) memset((s), 0, (n)) #endif BEGIN_DECLS @@ -195,7 +205,7 @@ extern int vsnprintf(char *, size_t, con #if !HAVE_MKSTEMP extern int mkstemp(char *); #endif -#if !HAVE_REALLOCARRAY +#if !HAVE_DECL_REALLOCARRAY extern void *reallocarray(void *, size_t, size_t); #endif #if !HAVE_SETENV diff -Nurp inn-2.6.3/include/config.h.in inn-2.6.4/include/config.h.in --- inn-2.6.3/include/config.h.in 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/include/config.h.in 2021-01-21 13:53:07.000000000 -0800 @@ -105,6 +105,10 @@ */ #undef HAVE_DECL_PWRITE +/* Define to 1 if you have the declaration of `reallocarray', and to 0 if you + don't. */ +#undef HAVE_DECL_REALLOCARRAY + /* Define to 1 if you have the declaration of `setproctitle', and to 0 if you don't. */ #undef HAVE_DECL_SETPROCTITLE @@ -276,6 +280,9 @@ /* Define if libsasl2 is available. */ #undef HAVE_SASL +/* Define if sd_notify is available. */ +#undef HAVE_SD_NOTIFY + /* Define to 1 if you have the header file. */ #undef HAVE_SECURITY_PAM_APPL_H @@ -369,9 +376,6 @@ /* Define to 1 if `ss_family' is a member of `struct sockaddr_storage'. */ #undef HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY -/* Define to 1 if `st_blksize' is a member of `struct stat'. */ -#undef HAVE_STRUCT_STAT_ST_BLKSIZE - /* Define to 1 if `tm_gmtoff' is a member of `struct tm'. */ #undef HAVE_STRUCT_TM_TM_GMTOFF diff -Nurp inn-2.6.3/include/inn/buffer.h inn-2.6.4/include/inn/buffer.h --- inn-2.6.3/include/inn/buffer.h 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/include/inn/buffer.h 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: buffer.h 10246 2018-02-16 21:12:42Z iulius $ +/* $Id: buffer.h 10396 2020-11-12 20:19:41Z iulius $ * * Counted, reusable memory buffer. * @@ -52,10 +52,10 @@ #include struct buffer { - size_t size; /* Total allocated length. */ - size_t used; /* Data already used. */ - size_t left; /* Remaining unused data. */ - char *data; /* Pointer to allocated memory. */ + size_t size; /* Total allocated length. */ + size_t used; /* Data already used. */ + size_t left; /* Remaining unused data. */ + char *data; /* Pointer to allocated memory. */ }; BEGIN_DECLS @@ -71,15 +71,13 @@ void buffer_free(struct buffer *); * Resize a buffer to be at least as large as the provided size. Invalidates * pointers into the buffer. */ -void buffer_resize(struct buffer *, size_t) - __attribute__((__nonnull__)); +void buffer_resize(struct buffer *, size_t) __attribute__((__nonnull__)); /* * Compact a buffer, removing all used data and moving unused data to the * beginning of the buffer. Invalidates pointers into the buffer. */ -void buffer_compact(struct buffer *) - __attribute__((__nonnull__)); +void buffer_compact(struct buffer *) __attribute__((__nonnull__)); /* * Set the buffer contents, ignoring anything currently there. If length is @@ -120,8 +118,7 @@ void buffer_swap(struct buffer *, struct * the fourth argument. Returns false if the terminator isn't found. */ bool buffer_find_string(struct buffer *, const char *, size_t start, - size_t *offset) - __attribute__((__nonnull__)); + size_t *offset) __attribute__((__nonnull__)); /* * Read from a file descriptor into a buffer, up to the available space in the @@ -130,23 +127,20 @@ bool buffer_find_string(struct buffer *, * error or after any successful read. Returns -1 on an error reading from * the file descriptor and sets errno. */ -ssize_t buffer_read(struct buffer *, int fd) - __attribute__((__nonnull__)); +ssize_t buffer_read(struct buffer *, int fd) __attribute__((__nonnull__)); /* * Read from a file descriptor into a buffer until end of file is reached. * Returns true on success and false (setting errno) on error. */ -bool buffer_read_all(struct buffer *, int fd) - __attribute__((__nonnull__)); +bool buffer_read_all(struct buffer *, int fd) __attribute__((__nonnull__)); /* * Read the contents of a file into a buffer. This should be used instead of * buffer_read_all when fstat can be called on the file descriptor. Returns * true on success and false (setting errno) on error. */ -bool buffer_read_file(struct buffer *, int fd) - __attribute__((__nonnull__)); +bool buffer_read_file(struct buffer *, int fd) __attribute__((__nonnull__)); END_DECLS diff -Nurp inn-2.6.3/include/inn/fdflag.h inn-2.6.4/include/inn/fdflag.h --- inn-2.6.3/include/inn/fdflag.h 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/include/inn/fdflag.h 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: fdflag.h 10246 2018-02-16 21:12:42Z iulius $ +/* $Id: fdflag.h 10396 2020-11-12 20:19:41Z iulius $ * * Prototypes for setting or clearing file descriptor flags. * @@ -34,8 +34,8 @@ #include #include "inn/portable-macros.h" -#include "inn/portable-stdbool.h" #include "inn/portable-socket.h" +#include "inn/portable-stdbool.h" BEGIN_DECLS diff -Nurp inn-2.6.3/include/inn/network-innbind.h inn-2.6.4/include/inn/network-innbind.h --- inn-2.6.3/include/inn/network-innbind.h 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/include/inn/network-innbind.h 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: network-innbind.h 9914 2015-07-07 16:34:36Z iulius $ +/* $Id: network-innbind.h 10396 2020-11-12 20:19:41Z iulius $ * * Prototypes for network connection utility functions using innbind. * @@ -39,8 +39,7 @@ socket_type network_innbind_ipv6(int typ * count holding the count returned. */ bool network_innbind_all(int type, unsigned short port, socket_type **fds, - unsigned int *count) - __attribute__((__nonnull__)); + unsigned int *count) __attribute__((__nonnull__)); END_DECLS diff -Nurp inn-2.6.3/include/inn/network.h inn-2.6.4/include/inn/network.h --- inn-2.6.3/include/inn/network.h 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/include/inn/network.h 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: network.h 10246 2018-02-16 21:12:42Z iulius $ +/* $Id: network.h 10396 2020-11-12 20:19:41Z iulius $ * * Prototypes for network connection utility functions. * @@ -65,8 +65,7 @@ socket_type network_bind_ipv6(int type, * array of file descriptors when no longer needed. */ bool network_bind_all(int type, unsigned short port, socket_type **fds, - unsigned int *count) - __attribute__((__nonnull__)); + unsigned int *count) __attribute__((__nonnull__)); void network_bind_all_free(socket_type *fds); /* @@ -102,8 +101,7 @@ socket_type network_accept_any(socket_ty * not use any particular source address.) */ socket_type network_connect(const struct addrinfo *, const char *source, - time_t) - __attribute__((__nonnull__(1))); + time_t) __attribute__((__nonnull__(1))); /* * Like network_connect but takes a host and port instead. If host lookup diff -Nurp inn-2.6.3/include/inn/options.h inn-2.6.4/include/inn/options.h --- inn-2.6.3/include/inn/options.h 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/include/inn/options.h 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: options.h 9092 2010-08-03 18:40:23Z iulius $ +/* $Id: options.h 10382 2020-05-24 10:24:37Z iulius $ ** ** Compile-time INN configuration. ** @@ -50,15 +50,6 @@ for the full algorithm. */ #define DO_MUNGE_GECOS -/* Define if rnews should syslog articles rejected as duplicates. */ -/* #undef DO_RNEWS_LOG_DUPS */ - -/* Define if rnews should look in INN_PATH_RNEWSPROGS for batch unpackers. */ -#define DO_RNEWSPROGS - -/* Define if rnews should save articles rejected by the server. */ -/* #undef DO_RNEWS_SAVE_BAD */ - /* Value to pass to dbzincore() inside innd. Under some bizarre low memory circumstance, you may want this not to be 1, but normally you always want to load the full history indexes into innd's memory. Has no effect if diff -Nurp inn-2.6.3/include/inn/paths.h.in inn-2.6.4/include/inn/paths.h.in --- inn-2.6.3/include/inn/paths.h.in 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/include/inn/paths.h.in 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: paths.h.in 9476 2013-05-24 16:00:23Z iulius $ -*- c -*- +/* $Id: paths.h.in 10382 2020-05-24 10:24:37Z iulius $ -*- c -*- ** @configure_input@ ** ** Here be #define's for filenames, socket names, environment variables, @@ -86,7 +86,6 @@ /* Absolute paths. */ #define INN_PATH_TMP "@PATH_TMP@" -#define INN_PATH_RNEWS_DUP_LOG "/dev/null" /* Always relative to pathtmp. */ #define INN_PATH_TEMPACTIVE "activeXXXXXX" diff -Nurp inn-2.6.3/include/inn/qio.h inn-2.6.4/include/inn/qio.h --- inn-2.6.3/include/inn/qio.h 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/include/inn/qio.h 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: qio.h 3653 2000-07-29 02:57:50Z rra $ +/* $Id: qio.h 10457 2020-12-19 06:10:49Z eagle $ ** ** Quick I/O package. ** @@ -12,6 +12,11 @@ #include +/* This is the maximum line length that can be read by a QIO operation. Since + QIO is used by some overview manipulation tools, it must therefore be + larger than the longest overview line INN supports. */ +#define QIO_BUFFERSIZE (32 * 1024) + BEGIN_DECLS /* diff -Nurp inn-2.6.3/include/inn/vector.h inn-2.6.4/include/inn/vector.h --- inn-2.6.3/include/inn/vector.h 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/include/inn/vector.h 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: vector.h 10246 2018-02-16 21:12:42Z iulius $ +/* $Id: vector.h 10396 2020-11-12 20:19:41Z iulius $ * * Prototypes for vector handling. * @@ -67,8 +67,7 @@ void vector_addn(struct vector *, const * Resize the array of strings to hold size entries. Saves reallocation work * in vector_add if it's known in advance how many entries there will be. */ -void vector_resize(struct vector *, size_t size) - __attribute__((__nonnull__)); +void vector_resize(struct vector *, size_t size) __attribute__((__nonnull__)); void cvector_resize(struct cvector *, size_t size) __attribute__((__nonnull__)); @@ -77,10 +76,8 @@ void cvector_resize(struct cvector *, si * regular vector, but not freeing the strings array (to cut down on memory * allocations if the vector will be reused). */ -void vector_clear(struct vector *) - __attribute__((__nonnull__)); -void cvector_clear(struct cvector *) - __attribute__((__nonnull__)); +void vector_clear(struct vector *) __attribute__((__nonnull__)); +void cvector_clear(struct cvector *) __attribute__((__nonnull__)); /* * Free the vector and all resources allocated for it. NULL may be passed in diff -Nurp inn-2.6.3/include/inn/xmalloc.h inn-2.6.4/include/inn/xmalloc.h --- inn-2.6.3/include/inn/xmalloc.h 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/include/inn/xmalloc.h 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: xmalloc.h 10246 2018-02-16 21:12:42Z iulius $ +/* $Id: xmalloc.h 10396 2020-11-12 20:19:41Z iulius $ * * Prototypes for malloc routines with failure handling. * @@ -43,12 +43,12 @@ * number information for debugging error messages without the user having to * pass those in every time. */ -#define xcalloc(n, size) x_calloc((n), (size), __FILE__, __LINE__) -#define xmalloc(size) x_malloc((size), __FILE__, __LINE__) -#define xrealloc(p, size) x_realloc((p), (size), __FILE__, __LINE__) -#define xstrdup(p) x_strdup((p), __FILE__, __LINE__) -#define xstrndup(p, size) x_strndup((p), (size), __FILE__, __LINE__) -#define xvasprintf(p, f, a) x_vasprintf((p), (f), (a), __FILE__, __LINE__) +#define xcalloc(n, size) x_calloc((n), (size), __FILE__, __LINE__) +#define xmalloc(size) x_malloc((size), __FILE__, __LINE__) +#define xrealloc(p, size) x_realloc((p), (size), __FILE__, __LINE__) +#define xstrdup(p) x_strdup((p), __FILE__, __LINE__) +#define xstrndup(p, size) x_strndup((p), (size), __FILE__, __LINE__) +#define xvasprintf(p, f, a) x_vasprintf((p), (f), (a), __FILE__, __LINE__) #define xreallocarray(p, n, size) \ x_reallocarray((p), (n), (size), __FILE__, __LINE__) @@ -61,13 +61,13 @@ * are supported. */ #ifdef INN_HAVE_C99_VAMACROS -# define xasprintf(p, f, ...) \ - x_asprintf((p), __FILE__, __LINE__, (f), __VA_ARGS__) +# define xasprintf(p, f, ...) \ + x_asprintf((p), __FILE__, __LINE__, (f), __VA_ARGS__) #elif INN_HAVE_GNU_VAMACROS -# define xasprintf(p, f, args...) \ - x_asprintf((p), __FILE__, __LINE__, (f), args) +# define xasprintf(p, f, args...) \ + x_asprintf((p), __FILE__, __LINE__, (f), args) #else -# define xasprintf x_asprintf +# define xasprintf x_asprintf #endif BEGIN_DECLS diff -Nurp inn-2.6.3/include/portable/getaddrinfo.h inn-2.6.4/include/portable/getaddrinfo.h --- inn-2.6.3/include/portable/getaddrinfo.h 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/include/portable/getaddrinfo.h 2021-01-21 13:53:07.000000000 -0800 @@ -1,10 +1,10 @@ -/* $Id: getaddrinfo.h 10246 2018-02-16 21:12:42Z iulius $ +/* $Id: getaddrinfo.h 10396 2020-11-12 20:19:41Z iulius $ * * Replacement implementation of getaddrinfo. * * This is an implementation of the getaddrinfo family of functions for * systems that lack it, so that code can use getaddrinfo always. It provides - * IPv4 support only; for IPv6 support, a native getaddrinfo implemenation is + * IPv4 support only; for IPv6 support, a native getaddrinfo implementation is * required. * * This file should generally be included by way of portable/socket.h rather @@ -14,7 +14,7 @@ * which can be found at . * * Written by Russ Allbery - * Copyright 2003, 2005 Russ Allbery + * Copyright 2003, 2005, 2020 Russ Allbery * Copyright 2008-2011 * The Board of Trustees of the Leland Stanford Junior University * @@ -36,41 +36,43 @@ #ifndef HAVE_GETADDRINFO /* OpenBSD likes to have sys/types.h included before sys/socket.h. */ -#include -#include +/* clang-format off */ +# include +# include +/* clang-format on */ /* The struct returned by getaddrinfo, from RFC 3493. */ struct addrinfo { - int ai_flags; /* AI_PASSIVE, AI_CANONNAME, .. */ - int ai_family; /* AF_xxx */ - int ai_socktype; /* SOCK_xxx */ - int ai_protocol; /* 0 or IPPROTO_xxx for IPv4 and IPv6 */ - socklen_t ai_addrlen; /* Length of ai_addr */ - char *ai_canonname; /* Canonical name for nodename */ - struct sockaddr *ai_addr; /* Binary address */ - struct addrinfo *ai_next; /* Next structure in linked list */ + int ai_flags; /* AI_PASSIVE, AI_CANONNAME, .. */ + int ai_family; /* AF_xxx */ + int ai_socktype; /* SOCK_xxx */ + int ai_protocol; /* 0 or IPPROTO_xxx for IPv4 and IPv6 */ + socklen_t ai_addrlen; /* Length of ai_addr */ + char *ai_canonname; /* Canonical name for nodename */ + struct sockaddr *ai_addr; /* Binary address */ + struct addrinfo *ai_next; /* Next structure in linked list */ }; /* Constants for ai_flags from RFC 3493, combined with binary or. */ -#define AI_PASSIVE 0x0001 -#define AI_CANONNAME 0x0002 -#define AI_NUMERICHOST 0x0004 -#define AI_NUMERICSERV 0x0008 -#define AI_V4MAPPED 0x0010 -#define AI_ALL 0x0020 -#define AI_ADDRCONFIG 0x0040 +# define AI_PASSIVE 0x0001 +# define AI_CANONNAME 0x0002 +# define AI_NUMERICHOST 0x0004 +# define AI_NUMERICSERV 0x0008 +# define AI_V4MAPPED 0x0010 +# define AI_ALL 0x0020 +# define AI_ADDRCONFIG 0x0040 /* Error return codes from RFC 3493. */ -#define EAI_AGAIN 1 /* Temporary name resolution failure */ -#define EAI_BADFLAGS 2 /* Invalid value in ai_flags parameter */ -#define EAI_FAIL 3 /* Permanent name resolution failure */ -#define EAI_FAMILY 4 /* Address family not recognized */ -#define EAI_MEMORY 5 /* Memory allocation failure */ -#define EAI_NONAME 6 /* nodename or servname unknown */ -#define EAI_SERVICE 7 /* Service not recognized for socket type */ -#define EAI_SOCKTYPE 8 /* Socket type not recognized */ -#define EAI_SYSTEM 9 /* System error occurred, see errno */ -#define EAI_OVERFLOW 10 /* An argument buffer overflowed */ +# define EAI_AGAIN 1 /* Temporary name resolution failure */ +# define EAI_BADFLAGS 2 /* Invalid value in ai_flags parameter */ +# define EAI_FAIL 3 /* Permanent name resolution failure */ +# define EAI_FAMILY 4 /* Address family not recognized */ +# define EAI_MEMORY 5 /* Memory allocation failure */ +# define EAI_NONAME 6 /* nodename or servname unknown */ +# define EAI_SERVICE 7 /* Service not recognized for socket type */ +# define EAI_SOCKTYPE 8 /* Socket type not recognized */ +# define EAI_SYSTEM 9 /* System error occurred, see errno */ +# define EAI_OVERFLOW 10 /* An argument buffer overflowed */ BEGIN_DECLS diff -Nurp inn-2.6.3/include/portable/getnameinfo.h inn-2.6.4/include/portable/getnameinfo.h --- inn-2.6.3/include/portable/getnameinfo.h 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/include/portable/getnameinfo.h 2021-01-21 13:53:07.000000000 -0800 @@ -1,10 +1,10 @@ -/* $Id: getnameinfo.h 10246 2018-02-16 21:12:42Z iulius $ +/* $Id: getnameinfo.h 10396 2020-11-12 20:19:41Z iulius $ * * Replacement implementation of getnameinfo. * * This is an implementation of the getnameinfo function for systems that lack * it, so that code can use getnameinfo always. It provides IPv4 support - * only; for IPv6 support, a native getnameinfo implemenation is required. + * only; for IPv6 support, a native getnameinfo implementation is required. * * This file should generally be included by way of portable/socket.h rather * than directly. @@ -13,7 +13,7 @@ * which can be found at . * * Written by Russ Allbery - * Copyright 2005, 2007 Russ Allbery + * Copyright 2005, 2007, 2020 Russ Allbery * Copyright 2008, 2010-2011 * The Board of Trustees of the Leland Stanford Junior University * @@ -35,34 +35,36 @@ #if !HAVE_GETNAMEINFO /* OpenBSD likes to have sys/types.h included before sys/socket.h. */ -#include -#include +/* clang-format off */ +# include +# include +/* clang-format on */ /* Constants for flags from RFC 3493, combined with binary or. */ -#define NI_NOFQDN 0x0001 -#define NI_NUMERICHOST 0x0002 -#define NI_NAMEREQD 0x0004 -#define NI_NUMERICSERV 0x0008 -#define NI_DGRAM 0x0010 +# define NI_NOFQDN 0x0001 +# define NI_NUMERICHOST 0x0002 +# define NI_NAMEREQD 0x0004 +# define NI_NUMERICSERV 0x0008 +# define NI_DGRAM 0x0010 /* * Maximum length of hostnames and service names. Our implementation doesn't * use these values, so they're taken from Linux. They're provided just for * code that uses them to size buffers. */ -#ifndef NI_MAXHOST -# define NI_MAXHOST 1025 -#endif -#ifndef NI_MAXSERV -# define NI_MAXSERV 32 -#endif +# ifndef NI_MAXHOST +# define NI_MAXHOST 1025 +# endif +# ifndef NI_MAXSERV +# define NI_MAXSERV 32 +# endif BEGIN_DECLS /* Function prototypes. */ -int getnameinfo(const struct sockaddr *sa, socklen_t salen, - char *node, socklen_t nodelen, - char *service, socklen_t servicelen, int flags); +int getnameinfo(const struct sockaddr *sa, socklen_t salen, char *node, + socklen_t nodelen, char *service, socklen_t servicelen, + int flags); END_DECLS diff -Nurp inn-2.6.3/include/portable/macros.h inn-2.6.4/include/portable/macros.h --- inn-2.6.3/include/portable/macros.h 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/include/portable/macros.h 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: macros.h 10246 2018-02-16 21:12:42Z iulius $ +/* $Id: macros.h 10396 2020-11-12 20:19:41Z iulius $ * * Portability macros used in include files. * @@ -27,9 +27,9 @@ * (to avoid confusion with other macros). */ #ifndef __attribute__ -# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) -# define __attribute__(spec) /* empty */ -# endif +# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) +# define __attribute__(spec) /* empty */ +# endif #endif /* @@ -40,10 +40,10 @@ * variadic macro support. */ #if !defined(__attribute__) && !defined(__alloc_size__) -# if (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 3)) \ - && !defined(__clang__) -# define __alloc_size__(spec, args...) /* empty */ -# endif +# if (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 3)) \ + && !defined(__clang__) +# define __alloc_size__(spec, args...) /* empty */ +# endif #endif /* @@ -53,7 +53,7 @@ * compilation context, but there's no push and pop available. */ #if !defined(__attribute__) && (defined(__llvm__) || defined(__clang__)) -# pragma GCC diagnostic ignored "-Wattributes" +# pragma GCC diagnostic ignored "-Wattributes" #endif /* @@ -63,11 +63,11 @@ #undef BEGIN_DECLS #undef END_DECLS #ifdef __cplusplus -# define BEGIN_DECLS extern "C" { -# define END_DECLS } +# define BEGIN_DECLS extern "C" { +# define END_DECLS } #else -# define BEGIN_DECLS /* empty */ -# define END_DECLS /* empty */ +# define BEGIN_DECLS /* empty */ +# define END_DECLS /* empty */ #endif #endif /* !PORTABLE_MACROS_H */ diff -Nurp inn-2.6.3/include/portable/sd-daemon.h inn-2.6.4/include/portable/sd-daemon.h --- inn-2.6.3/include/portable/sd-daemon.h 1969-12-31 16:00:00.000000000 -0800 +++ inn-2.6.4/include/portable/sd-daemon.h 2021-01-21 13:53:07.000000000 -0800 @@ -0,0 +1,38 @@ +/* $Id: sd-daemon.h 10523 2021-01-17 21:52:00Z iulius $ + * + * Portability wrapper around systemd-daemon headers. + * + * Currently, only sd_listen_fds and sd_notify are guaranteed to be provided + * by this interface. This takes the approach of stubbing out these functions + * if the libsystemd-daemon library is not available, rather than providing a + * local implementation, on the grounds that anyone who wants systemd status + * reporting should be able to build with the systemd libraries. + * + * 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 + * 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. + * + * SPDX-License-Identifier: FSFAP + */ + +#ifndef PORTABLE_SD_DAEMON_H +#define PORTABLE_SD_DAEMON_H 1 + +#ifdef HAVE_SD_NOTIFY +# include +#else +# define SD_LISTEN_FDS_START 3 +# define sd_is_socket(fd, f, t, l) 0 +# define sd_listen_fds(u) 0 +# define sd_notify(u, s) 0 +#endif + +#endif /* !PORTABLE_SD_DAEMON_H */ diff -Nurp inn-2.6.3/include/portable/socket-unix.h inn-2.6.4/include/portable/socket-unix.h --- inn-2.6.3/include/portable/socket-unix.h 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/include/portable/socket-unix.h 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: socket-unix.h 10246 2018-02-16 21:12:42Z iulius $ +/* $Id: socket-unix.h 10396 2020-11-12 20:19:41Z iulius $ * * Portability wrapper around . * @@ -33,8 +33,8 @@ * (2nd edition), vol. 1, pg. 917. */ #if !HAVE_SUN_LEN -# define SUN_LEN(sun) \ - (sizeof(*(sun)) - sizeof((sun)->sun_path) + strlen((sun)->sun_path)) +# define SUN_LEN(sun) \ + (sizeof(*(sun)) - sizeof((sun)->sun_path) + strlen((sun)->sun_path)) #endif #endif /* !PORTABLE_SOCKET_UNIX_H */ diff -Nurp inn-2.6.3/include/portable/socket.h inn-2.6.4/include/portable/socket.h --- inn-2.6.3/include/portable/socket.h 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/include/portable/socket.h 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: socket.h 10246 2018-02-16 21:12:42Z iulius $ +/* $Id: socket.h 10396 2020-11-12 20:19:41Z iulius $ * * Portability wrapper around and friends. * @@ -17,7 +17,7 @@ * The canonical version of this file is maintained in the rra-c-util package, * which can be found at . * - * Copyright 2014, 2017 Russ Allbery + * Copyright 2014, 2017, 2020 Russ Allbery * Copyright 2008-2009, 2011, 2013 * The Board of Trustees of the Leland Stanford Junior University * Copyright 2004-2007 Internet Systems Consortium, Inc. ("ISC") @@ -51,15 +51,17 @@ #include /* BSDI needs before . */ +/* clang-format off */ #ifdef _WIN32 -# include -# include +# include +# include #else -# include -# include -# include -# include +# include +# include +# include +# include #endif +/* clang-format on */ /* * Pick up definitions of getaddrinfo and getnameinfo if not otherwise @@ -79,18 +81,19 @@ typedef int socklen_t; * platforms that may require 64-bit alignment for the embedded addresses. */ #if !HAVE_STRUCT_SOCKADDR_STORAGE -# define SS_MAXSIZE_ 128 -# ifdef HAVE_LONG_LONG_INT -# define SS_ALIGNSIZE_ sizeof(long long) -# define SS_ALIGNTYPE_ long long -# else -# define SS_ALIGNSIZE_ sizeof(long) -# define SS_ALIGNTYPE_ long -# endif -# if HAVE_STRUCT_SOCKADDR_SA_LEN -# define SS_PAD1SIZE_ (SS_ALIGNSIZE_ - 2 * sizeof(unsigned char)) -# define SS_PAD2SIZE_ \ - (SS_MAXSIZE_ - (2 * sizeof(unsigned char) + SS_PAD1SIZE_ + SS_ALIGNSIZE_)) +# define SS_MAXSIZE_ 128 +# ifdef HAVE_LONG_LONG_INT +# define SS_ALIGNSIZE_ sizeof(long long) +# define SS_ALIGNTYPE_ long long +# else +# define SS_ALIGNSIZE_ sizeof(long) +# define SS_ALIGNTYPE_ long +# endif +# if HAVE_STRUCT_SOCKADDR_SA_LEN +# define SS_PAD1SIZE_ (SS_ALIGNSIZE_ - 2 * sizeof(unsigned char)) +# define SS_PAD2SIZE_ \ + (SS_MAXSIZE_ \ + - (2 * sizeof(unsigned char) + SS_PAD1SIZE_ + SS_ALIGNSIZE_)) struct sockaddr_storage { unsigned char ss_len; unsigned char ss_family; @@ -98,17 +101,18 @@ struct sockaddr_storage { SS_ALIGNTYPE_ __ss_align; char __ss_pad2[SS_PAD2SIZE_]; }; -# else -# define SS_PAD1SIZE_ (SS_ALIGNSIZE_ - sizeof(unsigned char)) -# define SS_PAD2SIZE_ \ - (SS_MAXSIZE_ - (sizeof(unsigned char) + SS_PAD1SIZE_ + SS_ALIGNSIZE_)) +# else +# define SS_PAD1SIZE_ (SS_ALIGNSIZE_ - sizeof(unsigned char)) +# define SS_PAD2SIZE_ \ + (SS_MAXSIZE_ \ + - (sizeof(unsigned char) + SS_PAD1SIZE_ + SS_ALIGNSIZE_)) struct sockaddr_storage { unsigned short ss_family; char __ss_pad1[SS_PAD1SIZE_]; SS_ALIGNTYPE_ __ss_align; char __ss_pad2[SS_PAD2SIZE_]; }; -# endif +# endif #endif /* @@ -116,15 +120,15 @@ struct sockaddr_storage { * instead of the non-uglified names from RFC 3493. */ #if HAVE_STRUCT_SOCKADDR_STORAGE && !HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY -# define ss_family __ss_family -# define ss_len __ss_len +# define ss_family __ss_family +# define ss_len __ss_len #endif /* Fix IN6_ARE_ADDR_EQUAL if required. */ #ifdef HAVE_BROKEN_IN6_ARE_ADDR_EQUAL -# undef IN6_ARE_ADDR_EQUAL -# define IN6_ARE_ADDR_EQUAL(a, b) \ - (memcmp((a), (b), sizeof(struct in6_addr)) == 0) +# undef IN6_ARE_ADDR_EQUAL +# define IN6_ARE_ADDR_EQUAL(a, b) \ + (memcmp((a), (b), sizeof(struct in6_addr)) == 0) #endif /* @@ -133,7 +137,7 @@ struct sockaddr_storage { * doesn't exist. */ #if !defined(HAVE_GETADDRINFO_ADDRCONFIG) && defined(AI_ADDRCONFIG) -# undef AI_ADDRCONFIG +# undef AI_ADDRCONFIG #endif /* @@ -143,10 +147,10 @@ struct sockaddr_storage { * them harmlessly go away. */ #ifndef AI_ADDRCONFIG -# define AI_ADDRCONFIG 0 +# define AI_ADDRCONFIG 0 #endif #ifndef AI_NUMERICSERV -# define AI_NUMERICSERV 0 +# define AI_NUMERICSERV 0 #endif /* @@ -154,10 +158,10 @@ struct sockaddr_storage { * nul-terminated text representation of the given address type. */ #ifndef INET_ADDRSTRLEN -# define INET_ADDRSTRLEN 16 +# define INET_ADDRSTRLEN 16 #endif #ifndef INET6_ADDRSTRLEN -# define INET6_ADDRSTRLEN 46 +# define INET6_ADDRSTRLEN 46 #endif /* @@ -165,7 +169,7 @@ struct sockaddr_storage { * available on systems too old to have that function. */ #ifndef EAFNOSUPPORT -# define EAFNOSUPPORT EDOM +# define EAFNOSUPPORT EDOM #endif /* @@ -175,7 +179,7 @@ struct sockaddr_storage { * unconditionally. */ #ifndef EAI_ADDRFAMILY -# define EAI_ADDRFAMILY EAI_FAMILY +# define EAI_ADDRFAMILY EAI_FAMILY #endif BEGIN_DECLS @@ -187,28 +191,28 @@ BEGIN_DECLS * accordingly. */ #if !HAVE_DECL_INET_ATON -# if !HAVE_INET_ATON +# if !HAVE_INET_ATON extern int inet_aton(const char *, struct in_addr *) __attribute__((__visibility__("hidden"))); -# else +# else extern int inet_aton(const char *, struct in_addr *); -# endif +# endif #endif #if !HAVE_DECL_INET_NTOA -# if !HAVE_INET_NTOA +# if !HAVE_INET_NTOA extern char *inet_ntoa(struct in_addr) __attribute__((__visibility__("hidden"))); -# else +# else extern char *inet_ntoa(struct in_addr); -# endif +# endif #endif #if !HAVE_INET_NTOP -# ifdef _WIN32 +# ifdef _WIN32 extern const char *inet_ntop(int, const void *, char *, int); -# else +# else extern const char *inet_ntop(int, const void *, char *, socklen_t); -# endif +# endif #endif /* @@ -240,26 +244,26 @@ extern const char *inet_ntop(int, const */ #ifdef _WIN32 int socket_init(void); -# define socket_shutdown() WSACleanup() -# define socket_close(fd) closesocket(fd) -# define socket_read(fd, b, s) recv((fd), (b), (s), 0) -# define socket_write(fd, b, s) send((fd), (b), (s), 0) -# define socket_errno WSAGetLastError() -# define socket_set_errno(e) WSASetLastError(e) -# define socket_set_errno_einval() WSASetLastError(WSAEINVAL) +# define socket_shutdown() WSACleanup() +# define socket_close(fd) closesocket(fd) +# define socket_read(fd, b, s) recv((fd), (b), (s), 0) +# define socket_write(fd, b, s) send((fd), (b), (s), 0) +# define socket_errno WSAGetLastError() +# define socket_set_errno(e) WSASetLastError(e) +# define socket_set_errno_einval() WSASetLastError(WSAEINVAL) const char *socket_strerror(int); typedef SOCKET socket_type; #else -# define socket_init() 1 -# define socket_shutdown() /* empty */ -# define socket_close(fd) close(fd) -# define socket_read(fd, b, s) read((fd), (b), (s)) -# define socket_write(fd, b, s) write((fd), (b), (s)) -# define socket_errno errno -# define socket_set_errno(e) errno = (e) -# define socket_set_errno_einval() errno = EINVAL -# define socket_strerror(e) strerror(e) -# define INVALID_SOCKET -1 +# define socket_init() 1 +# define socket_shutdown() /* empty */ +# define socket_close(fd) close(fd) +# define socket_read(fd, b, s) read((fd), (b), (s)) +# define socket_write(fd, b, s) write((fd), (b), (s)) +# define socket_errno errno +# define socket_set_errno(e) errno = (e) +# define socket_set_errno_einval() errno = EINVAL +# define socket_strerror(e) strerror(e) +# define INVALID_SOCKET -1 typedef int socket_type; #endif diff -Nurp inn-2.6.3/include/portable/stdbool.h inn-2.6.4/include/portable/stdbool.h --- inn-2.6.3/include/portable/stdbool.h 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/include/portable/stdbool.h 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: stdbool.h 10246 2018-02-16 21:12:42Z iulius $ +/* $Id: stdbool.h 10396 2020-11-12 20:19:41Z iulius $ * * Portability wrapper around . * @@ -29,28 +29,28 @@ * stripped-down version of config.h with a different name. */ #ifndef CONFIG_H_INCLUDED -# include "config.h" +# include "config.h" #endif #if HAVE_STDBOOL_H -# include +# include #else -# if HAVE__BOOL -# define bool _Bool -# else -# ifdef __cplusplus +# if HAVE__BOOL +# define bool _Bool +# else +# ifdef __cplusplus typedef bool _Bool; -# elif _WIN32 -# include -# define bool BOOL -# else +# elif _WIN32 +# include +# define bool BOOL +# else typedef unsigned char _Bool; -# define bool _Bool -# endif -# endif -# define false 0 -# define true 1 -# define __bool_true_false_are_defined 1 +# define bool _Bool +# endif +# endif +# define false 0 +# define true 1 +# define __bool_true_false_are_defined 1 #endif /* @@ -58,7 +58,7 @@ typedef unsigned char _Bool; * fail. Only of interest for programs that also include Perl headers. */ #ifndef HAS_BOOL -# define HAS_BOOL 1 +# define HAS_BOOL 1 #endif #endif /* !PORTABLE_STDBOOL_H */ diff -Nurp inn-2.6.3/include/portable/uio.h inn-2.6.4/include/portable/uio.h --- inn-2.6.3/include/portable/uio.h 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/include/portable/uio.h 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: uio.h 10246 2018-02-16 21:12:42Z iulius $ +/* $Id: uio.h 10396 2020-11-12 20:19:41Z iulius $ * * Portability wrapper around . * @@ -28,7 +28,7 @@ /* remctl.h provides its own definition of this struct on Windows. */ #if defined(HAVE_SYS_UIO_H) -# include +# include #elif !defined(REMCTL_H) struct iovec { void *iov_base; diff -Nurp inn-2.6.3/innd/Makefile inn-2.6.4/innd/Makefile --- inn-2.6.3/innd/Makefile 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/innd/Makefile 2021-01-21 13:53:07.000000000 -0800 @@ -1,9 +1,9 @@ -## $Id: Makefile 10149 2017-06-05 12:24:58Z iulius $ +## $Id: Makefile 10523 2021-01-17 21:52:00Z iulius $ include ../Makefile.global top = .. -CFLAGS = $(GCFLAGS) $(TCLINC) +CFLAGS = $(GCFLAGS) $(TCLINC) $(SYSTEMD_CFLAGS) ALL = innd tinyleaf @@ -34,6 +34,7 @@ clean clobber distclean maintclean: ## Compilation rules. INNDLIBS = $(LIBSTORAGE) $(LIBHIST) $(LIBINN) $(STORAGE_LIBS) \ + $(SYSTEMD_LIBS) \ $(PERL_LIBS) $(PYTHON_LIBS) $(REGEX_LIBS) $(LIBS) perl.o: perl.c ; $(CC) $(CFLAGS) $(PERL_CPPFLAGS) -c perl.c @@ -77,22 +78,24 @@ art.o: art.c ../include/config.h ../incl ../include/portable/stdbool.h ../include/portable/macros.h \ ../include/inn/innconf.h ../include/inn/md5.h ../include/inn/ov.h \ ../include/inn/history.h ../include/inn/storage.h \ - ../include/inn/options.h ../include/inn/storage.h \ - ../include/inn/vector.h ../include/inn/wire.h innd.h \ - ../include/portable/socket.h ../include/portable/getaddrinfo.h \ - ../include/portable/getnameinfo.h ../include/inn/buffer.h \ - ../include/inn/messages.h ../include/inn/timer.h ../include/inn/libinn.h \ - ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - ../include/inn/nntp.h ../include/inn/paths.h + ../include/inn/options.h ../include/inn/overview.h \ + ../include/inn/storage.h ../include/inn/vector.h ../include/inn/wire.h \ + innd.h ../include/portable/sd-daemon.h ../include/portable/socket.h \ + ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \ + ../include/inn/buffer.h ../include/inn/messages.h ../include/inn/timer.h \ + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h ../include/inn/nntp.h ../include/inn/paths.h cc.o: cc.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ ../include/inn/defines.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/portable/socket-unix.h \ - ../include/inn/innconf.h ../include/inn/qio.h innd.h \ - ../include/portable/macros.h ../include/portable/socket.h \ - ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \ + ../include/inn/fdflag.h ../include/inn/portable-socket.h \ + ../include/inn/portable-getaddrinfo.h \ + ../include/inn/portable-getnameinfo.h ../include/inn/innconf.h \ + ../include/inn/qio.h innd.h ../include/portable/macros.h \ + ../include/portable/sd-daemon.h ../include/portable/socket.h \ ../include/inn/buffer.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 \ @@ -108,12 +111,12 @@ chan.o: chan.c ../include/config.h ../in ../include/inn/portable-socket.h ../include/inn/portable-getaddrinfo.h \ ../include/inn/portable-getnameinfo.h ../include/inn/innconf.h \ ../include/inn/network.h innd.h ../include/portable/macros.h \ - ../include/portable/socket.h ../include/inn/buffer.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/vector.h + ../include/portable/sd-daemon.h ../include/portable/socket.h \ + ../include/inn/buffer.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/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 \ @@ -124,12 +127,13 @@ icd.o: icd.c ../include/config.h ../incl ../include/inn/portable-getaddrinfo.h \ ../include/inn/portable-getnameinfo.h ../include/inn/innconf.h \ ../include/inn/mmap.h innd.h ../include/portable/macros.h \ - ../include/portable/socket.h ../include/inn/buffer.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/vector.h ../include/inn/ov.h ../include/inn/storage.h + ../include/portable/sd-daemon.h ../include/portable/socket.h \ + ../include/inn/buffer.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/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 \ @@ -137,13 +141,14 @@ innd.o: innd.c ../include/config.h ../in ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/innconf.h \ ../include/inn/messages.h ../include/inn/newsuser.h ../include/innperl.h \ - innd.h ../include/portable/macros.h ../include/portable/socket.h \ - ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \ - ../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/vector.h ../include/inn/ov.h ../include/inn/storage.h + innd.h ../include/portable/macros.h ../include/portable/sd-daemon.h \ + ../include/portable/socket.h ../include/portable/getaddrinfo.h \ + ../include/portable/getnameinfo.h ../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/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 \ @@ -152,11 +157,11 @@ keywords.o: keywords.c ../include/config ../include/portable/stdbool.h ../include/inn/libinn.h \ ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ ../include/inn/innconf.h innd.h ../include/portable/macros.h \ - ../include/portable/socket.h ../include/portable/getaddrinfo.h \ - ../include/portable/getnameinfo.h ../include/inn/buffer.h \ - ../include/inn/history.h ../include/inn/messages.h \ - ../include/inn/timer.h ../include/inn/nntp.h ../include/inn/paths.h \ - ../include/inn/storage.h ../include/inn/options.h \ + ../include/portable/sd-daemon.h ../include/portable/socket.h \ + ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \ + ../include/inn/buffer.h ../include/inn/history.h \ + ../include/inn/messages.h ../include/inn/timer.h ../include/inn/nntp.h \ + ../include/inn/paths.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 \ @@ -164,14 +169,14 @@ lc.o: lc.c ../include/config.h ../includ ../include/inn/defines.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/innconf.h innd.h \ - ../include/portable/macros.h ../include/portable/socket.h \ - ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \ - ../include/inn/buffer.h ../include/inn/history.h \ - ../include/inn/messages.h ../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/vector.h \ - ../include/portable/socket-unix.h + ../include/portable/macros.h ../include/portable/sd-daemon.h \ + ../include/portable/socket.h ../include/portable/getaddrinfo.h \ + ../include/portable/getnameinfo.h ../include/inn/buffer.h \ + ../include/inn/history.h ../include/inn/messages.h \ + ../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/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 \ @@ -179,53 +184,56 @@ nc.o: nc.c ../include/config.h ../includ ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/innconf.h \ ../include/inn/qio.h ../include/inn/version.h innd.h \ - ../include/portable/macros.h ../include/portable/socket.h \ - ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \ - ../include/inn/buffer.h ../include/inn/history.h \ - ../include/inn/messages.h ../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/vector.h + ../include/portable/macros.h ../include/portable/sd-daemon.h \ + ../include/portable/socket.h ../include/portable/getaddrinfo.h \ + ../include/portable/getnameinfo.h ../include/inn/buffer.h \ + ../include/inn/history.h ../include/inn/messages.h \ + ../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/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 \ ../include/inn/defines.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/innconf.h innd.h \ - ../include/portable/macros.h ../include/portable/socket.h \ - ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \ - ../include/inn/buffer.h ../include/inn/history.h \ - ../include/inn/messages.h ../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/vector.h + ../include/portable/macros.h ../include/portable/sd-daemon.h \ + ../include/portable/socket.h ../include/portable/getaddrinfo.h \ + ../include/portable/getnameinfo.h ../include/inn/buffer.h \ + ../include/inn/history.h ../include/inn/messages.h \ + ../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/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 \ ../include/inn/defines.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/innconf.h innd.h \ - ../include/portable/macros.h ../include/portable/socket.h \ - ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \ - ../include/inn/buffer.h ../include/inn/history.h \ - ../include/inn/messages.h ../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/vector.h ../include/inn/ov.h \ - ../include/inn/storage.h + ../include/portable/macros.h ../include/portable/sd-daemon.h \ + ../include/portable/socket.h ../include/portable/getaddrinfo.h \ + ../include/portable/getnameinfo.h ../include/inn/buffer.h \ + ../include/inn/history.h ../include/inn/messages.h \ + ../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/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 \ ../include/inn/defines.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/wire.h innd.h \ - ../include/portable/macros.h ../include/portable/socket.h \ - ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \ - ../include/inn/buffer.h ../include/inn/history.h \ - ../include/inn/messages.h ../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/vector.h \ + ../include/portable/macros.h ../include/portable/sd-daemon.h \ + ../include/portable/socket.h ../include/portable/getaddrinfo.h \ + ../include/portable/getnameinfo.h ../include/inn/buffer.h \ + ../include/inn/history.h ../include/inn/messages.h \ + ../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/vector.h \ ../include/ppport.h \ ../include/innperl.h proc.o: proc.c ../include/config.h ../include/inn/defines.h \ @@ -234,13 +242,13 @@ proc.o: proc.c ../include/config.h ../in ../include/inn/defines.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h innd.h ../include/portable/macros.h \ - ../include/portable/socket.h ../include/portable/getaddrinfo.h \ - ../include/portable/getnameinfo.h ../include/inn/buffer.h \ - ../include/inn/history.h ../include/inn/messages.h \ - ../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/vector.h + ../include/portable/sd-daemon.h ../include/portable/socket.h \ + ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \ + ../include/inn/buffer.h ../include/inn/history.h \ + ../include/inn/messages.h ../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/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 \ @@ -248,13 +256,13 @@ python.o: python.c ../include/config.h . ../include/clibrary.h ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/innconf.h \ ../include/inn/wire.h innd.h ../include/portable/macros.h \ - ../include/portable/socket.h ../include/portable/getaddrinfo.h \ - ../include/portable/getnameinfo.h ../include/inn/buffer.h \ - ../include/inn/history.h ../include/inn/messages.h \ - ../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/vector.h + ../include/portable/sd-daemon.h ../include/portable/socket.h \ + ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \ + ../include/inn/buffer.h ../include/inn/history.h \ + ../include/inn/messages.h ../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/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 \ @@ -265,11 +273,12 @@ rc.o: rc.c ../include/config.h ../includ ../include/portable/getnameinfo.h ../include/inn/fdflag.h \ ../include/inn/portable-socket.h ../include/inn/innconf.h \ ../include/inn/network.h ../include/inn/network-innbind.h \ - ../include/inn/vector.h innd.h ../include/inn/buffer.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/vector.h innd.h ../include/portable/sd-daemon.h \ + ../include/inn/buffer.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 site.o: site.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 \ @@ -278,12 +287,13 @@ site.o: site.c ../include/config.h ../in ../include/portable/stdbool.h ../include/inn/fdflag.h \ ../include/inn/portable-socket.h ../include/inn/portable-getaddrinfo.h \ ../include/inn/portable-getnameinfo.h ../include/inn/innconf.h innd.h \ - ../include/portable/macros.h ../include/portable/socket.h \ - ../include/inn/buffer.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/vector.h + ../include/portable/macros.h ../include/portable/sd-daemon.h \ + ../include/portable/socket.h ../include/inn/buffer.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/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 \ @@ -293,12 +303,12 @@ status.o: status.c ../include/config.h . ../include/portable/macros.h ../include/portable/getaddrinfo.h \ ../include/portable/getnameinfo.h ../include/inn/network.h \ ../include/inn/portable-socket.h ../include/inn/innconf.h \ - ../include/inn/version.h innd.h ../include/inn/buffer.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/vector.h ../include/innperl.h + ../include/inn/version.h innd.h ../include/portable/sd-daemon.h \ + ../include/inn/buffer.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/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 \ @@ -309,10 +319,10 @@ util.o: util.c ../include/config.h ../in ../include/inn/portable-getnameinfo.h ../include/inn/innconf.h \ ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ ../include/inn/xwrite.h innd.h ../include/portable/macros.h \ - ../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/portable/sd-daemon.h ../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/vector.h wip.o: wip.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ @@ -320,13 +330,14 @@ wip.o: wip.c ../include/config.h ../incl ../include/inn/defines.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/innconf.h innd.h \ - ../include/portable/macros.h ../include/portable/socket.h \ - ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \ - ../include/inn/buffer.h ../include/inn/history.h \ - ../include/inn/messages.h ../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/vector.h + ../include/portable/macros.h ../include/portable/sd-daemon.h \ + ../include/portable/socket.h ../include/portable/getaddrinfo.h \ + ../include/portable/getnameinfo.h ../include/inn/buffer.h \ + ../include/inn/history.h ../include/inn/messages.h \ + ../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/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.3/innd/art.c inn-2.6.4/innd/art.c --- inn-2.6.3/innd/art.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/innd/art.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: art.c 10149 2017-06-05 12:24:58Z iulius $ +/* $Id: art.c 10513 2021-01-15 22:34:56Z iulius $ ** ** Article-processing. */ @@ -77,10 +77,6 @@ static char ARTjnk[] = "junk"; static char hostcclass[256]; #define ARThostchar(c) ((hostcclass[(unsigned char)(c)]) != 0) -#if defined(DO_PERL) || defined(DO_PYTHON) -const char *filterPath; -#endif /* DO_PERL || DO_PYTHON */ - /* Prototypes. */ static void ARTerror(CHANNEL *cp, const char *format, ...) __attribute__((__format__(printf, 2, 3))); @@ -1942,6 +1938,7 @@ ARTpost(CHANNEL *cp) { char *p, **groups, ControlWord[SMBUF], **hops, *controlgroup; int i, j, *isp, hopcount, oerrno, canpost; + float f; size_t n; NEWSGROUP *ngp, **ngptr; NEWSGROUP *ngpjunk; @@ -2072,10 +2069,6 @@ ARTpost(CHANNEL *cp) } } -#if defined(DO_PERL) || defined(DO_PYTHON) - filterPath = HDR(HDR__PATH); -#endif /* DO_PERL || DO_PYHTON */ - #if defined(DO_PYTHON) TMRstart(TMR_PYTHON); filterrc = PYartfilter(data, article->data + data->Body, @@ -2539,7 +2532,7 @@ ARTpost(CHANNEL *cp) if (innconf->enableoverview && !innconf->useoverchan) { if ((result = OVadd(token, data->Overview.data, data->Overview.left, data->Arrived, data->Expires)) == OVADDFAILED) { - if (OVctl(OVSPACE, (void *)&i) && i == OV_NOSPACE) + if (OVctl(OVSPACE, (void *)&f) && (int)(f+0.01f) == OV_NOSPACE) IOError("creating overview", ENOSPC); else IOError("creating overview", 0); diff -Nurp inn-2.6.3/innd/cc.c inn-2.6.4/innd/cc.c --- inn-2.6.3/innd/cc.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/innd/cc.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: cc.c 9841 2015-05-02 16:27:37Z iulius $ +/* $Id: cc.c 10523 2021-01-17 21:52:00Z iulius $ ** ** Routines for the control channel. ** @@ -19,6 +19,7 @@ # include "portable/socket-unix.h" #endif +#include "inn/fdflag.h" #include "inn/innconf.h" #include "inn/qio.h" #include "innd.h" @@ -174,6 +175,54 @@ CCcurrmode(void) /* +** Notify systemd of the current operating modes. +*/ +static void +CCsdnotify(void) +{ +#ifdef HAVE_SD_NOTIFY + int status; + + buffer_sprintf(&CCreply, "STATUS=Server "); + + /* Server's mode. */ + switch (Mode) { + default: + buffer_append_sprintf(&CCreply, "Unknown %d", Mode); + break; + case OMrunning: + buffer_append_sprintf(&CCreply, "running"); + break; + case OMpaused: + buffer_append_sprintf(&CCreply, "paused %s", ModeReason); + break; + case OMthrottled: + buffer_append_sprintf(&CCreply, "throttled %s", ModeReason); + break; + } + if (RejectReason) + buffer_append_sprintf(&CCreply, ". Rejecting %s", RejectReason); + + /* Newsreaders. */ + buffer_append_sprintf(&CCreply, ". Readers "); + if (innconf->readerswhenstopped) + buffer_append_sprintf(&CCreply, "independent "); + else + buffer_append_sprintf(&CCreply, "follow "); + if (NNRPReason == NULL) + buffer_append_sprintf(&CCreply, "enabled."); + else + buffer_append_sprintf(&CCreply, "disabled %s.", NNRPReason); + + buffer_append(&CCreply, "", 1); + status = sd_notify(false, CCreply.data); + if (status < 0) + warn("cannot notify systemd of new status: %s", strerror(-status)); +#endif +} + + +/* ** Add <> around Message-ID if needed. */ static const char * @@ -292,6 +341,7 @@ CCallow(char *av[]) return "1 Wrong reason"; free(RejectReason); RejectReason = NULL; + CCsdnotify(); return NULL; } @@ -702,6 +752,7 @@ CCgo(char *av[]) ErrorCount = IO_ERROR_COUNT; InndHisOpen(); syslog(L_NOTICE, "%s running", LogName); + CCsdnotify(); if (ICDneedsetup) ICDsetup(true); SCHANwakeup(&Mode); @@ -1116,6 +1167,7 @@ CCparam(char *av[]) case 'n': if (!CCparsebool('n', (bool *)&innconf->readerswhenstopped, *p)) return BADVAL; + CCsdnotify(); break; case 'o': MaxOutgoing = atoi(p); @@ -1198,6 +1250,7 @@ CCblock(OPERATINGMODE NewMode, char *rea } syslog(L_NOTICE, "%s %s %s", LogName, NewMode == OMpaused ? "paused" : "throttled", reason); + CCsdnotify(); return NULL; } @@ -1255,6 +1308,7 @@ CCreaders(char *av[]) NNRPReason = xstrdup(p); break; } + CCsdnotify(); return NULL; } @@ -1268,6 +1322,9 @@ CCxexec(char *av[]) char *innd; char *p; int i; + const char *s; + int count; + int status; if (CCargv == NULL) return "1 no argv!"; @@ -1288,9 +1345,41 @@ CCxexec(char *av[]) #endif JustCleanup(); syslog(L_NOTICE, "%s execv %s", LogName, CCargv[0]); + status = sd_notify(false, "RELOADING=1"); + if (status < 0) + warn("cannot notify systemd of reloading: %s", strerror(-status)); + + /* Restore the systemd variables which were backed up in RCsetup() + if socket activation was set. */ + s = getenv("INN_BACKUP_LISTEN_FDS"); + if (s != NULL) { + if (setenv("LISTEN_FDS", s, true) != 0) + die("setenv failed for LISTEN_FDS"); + if (unsetenv("INN_BACKUP_LISTEN_FDS") != 0) + die("unsetenv failed for INN_BACKUP_LISTEN_FDS"); + } + s = getenv("INN_BACKUP_LISTEN_PID"); + if (s != NULL) { + if (setenv("LISTEN_PID", s, true) != 0) + die("setenv failed for LISTEN_PID"); + if (unsetenv("INN_BACKUP_LISTEN_PID") != 0) + die("unsetenv failed for INN_BACKUP_LISTEN_PID"); + } + + /* Clear the close-on-exec flag on the socket activation file descriptors. + This is needed because we need to pass them to the new innd process + and sd_listen_fds(), which was called in RCsetup(), set it on all + passed file descriptors. */ + s = getenv("INN_SD_LISTEN_FDS_COUNT"); + if (s == NULL) + count = 0; + else + count = atoi(s); + for (i = SD_LISTEN_FDS_START; i < SD_LISTEN_FDS_START + count; i++) + fdflag_close_exec(i, false); - /* Close all fds to protect possible fd leaking accross successive innds. */ - for (i=3; i<30; i++) + /* Close all fds to protect possible fd leaking across successive innds. */ + for (i = SD_LISTEN_FDS_START + count; i < 30; i++) close(i); execv(CCargv[0], CCargv); @@ -1313,6 +1402,7 @@ CCreject(char *av[]) if (!is_valid_utf8(av[0])) return "1 Invalid UTF-8 reason"; RejectReason = xstrdup(av[0]); + CCsdnotify(); return NULL; } @@ -1355,8 +1445,8 @@ CCreload(char *av[]) #endif #ifdef DO_PYTHON syslog(L_NOTICE, "reloading pyfilter"); - PYreadfilter(); - syslog(L_NOTICE, "reloaded pyfilter OK"); + if (PYreadfilter()) + syslog(L_NOTICE, "reloaded pyfilter OK"); #endif p = "all"; } @@ -2033,6 +2123,8 @@ CCsetup(void) #if defined(SIGUSR1) xsignal(SIGUSR1, CCresetup); #endif /* defined(SIGUSR1) */ + + CCsdnotify(); } diff -Nurp inn-2.6.3/innd/chan.c inn-2.6.4/innd/chan.c --- inn-2.6.3/innd/chan.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/innd/chan.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: chan.c 10305 2018-12-02 14:21:56Z iulius $ +/* $Id: chan.c 10523 2021-01-17 21:52:00Z iulius $ ** ** I/O channel (and buffer) processing. ** @@ -78,6 +78,29 @@ static CHANNEL CHANnull; /* +** Returns true if socket activation is used and the channel given as +** as argument is used for socket activation. Returns false otherwise. +*/ +bool +CHANsystemdsa(CHANNEL *cp) +{ + const char *s; + int count; + + s = getenv("INN_SD_LISTEN_FDS_COUNT"); + if (s == NULL) + return false; + + count = atoi(s); + + if (cp->fd >= SD_LISTEN_FDS_START && cp->fd < SD_LISTEN_FDS_START + count) + return true; + + return false; +} + + +/* ** Tear down our world. Free all of the allocated channels and clear all ** global state data. This function can also be used to initialize the ** channels structure to a known empty state. @@ -98,6 +121,8 @@ CHANshutdown(void) if (channels.table != NULL) { cp = channels.table; for (i = channels.table_size; --i >= 0; cp++) { + if (CHANsystemdsa(cp)) + continue; if (cp->Type != CTfree) CHANclose(cp, CHANname(cp)); if (cp->In.data) @@ -1195,7 +1220,13 @@ CHANreadloop(void) STATUSmainloophook(); if (GotTerminate) { - warn("%s exiting due to signal", LogName); +#ifdef DO_PERL + PLmode(Mode, OMshutdown, (char *) "exiting due to signal"); +#endif +#ifdef DO_PYTHON + PYmode(Mode, OMshutdown, (char *) "exiting due to signal"); +#endif + notice("%s exiting due to signal", LogName); CleanupAndExit(0, NULL); } diff -Nurp inn-2.6.3/innd/innd.c inn-2.6.4/innd/innd.c --- inn-2.6.3/innd/innd.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/innd/innd.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: innd.c 10283 2018-05-14 12:43:05Z iulius $ +/* $Id: innd.c 10514 2021-01-15 22:35:44Z iulius $ ** ** Variable definitions, miscellany, and main(). */ @@ -260,12 +260,19 @@ xmalloc_abort(const char *what, size_t s void CleanupAndExit(int status, const char *why) { + int result; + + result = sd_notify(false, "STOPPING=1"); + if (result < 0) + warn("cannot notify systemd of stopping: %s", strerror(-result)); + JustCleanup(); if (why) syslog(LOG_WARNING, "SERVER shutdown %s", why); else syslog(LOG_WARNING, "SERVER shutdown received signal %lu", (unsigned long) killer_signal); + exit(status); } @@ -364,6 +371,7 @@ main(int ac, char *av[]) bool ShouldRenumber; bool ShouldSyntaxCheck; pid_t pid; + int status; #if defined(_DEBUG_MALLOC_INC) union malloptarg m; #endif /* defined(_DEBUG_MALLOC_INC) */ @@ -773,7 +781,12 @@ main(int ac, char *av[]) if (!ICDrenumberactive()) die("SERVER cant renumber"); } + syslog(LOG_NOTICE, "SERVER starting"); + status = sd_notify(false, "READY=1"); + if (status < 0) + warn("cannot notify systemd of startup: %s", strerror(-status)); + CHANreadloop(); /* CHANreadloop should never return. */ diff -Nurp inn-2.6.3/innd/innd.h inn-2.6.4/innd/innd.h --- inn-2.6.3/innd/innd.h 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/innd/innd.h 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: innd.h 10282 2018-05-14 12:42:14Z iulius $ +/* $Id: innd.h 10523 2021-01-17 21:52:00Z iulius $ ** ** Many of the data types used here have abbreviations, such as CT for a ** channel type. Here are a list of the conventions and meanings: @@ -29,6 +29,7 @@ #include "config.h" #include "portable/macros.h" +#include "portable/sd-daemon.h" #include "portable/socket.h" #include #include @@ -722,11 +723,12 @@ extern void ARTlogreject(CHA extern void ARTreject(Reject_type, CHANNEL *); extern bool CHANsleeping(CHANNEL *cp); -extern CHANNEL * CHANcreate(int fd, enum channel_type Type, - enum channel_state State, - innd_callback_func Reader, - innd_callback_func WriteDone); -extern CHANNEL * CHANiter(int *cp, enum channel_type Type); +extern bool CHANsystemdsa(CHANNEL *cp); +extern CHANNEL * CHANcreate(int fd, enum channel_type type, + enum channel_state state, + innd_callback_func reader, + innd_callback_func write_done); +extern CHANNEL * CHANiter(int *ip, enum channel_type type); extern CHANNEL * CHANfromdescriptor(int fd); extern char * CHANname(CHANNEL *cp); extern int CHANreadtext(CHANNEL *cp); diff -Nurp inn-2.6.3/innd/python.c inn-2.6.4/innd/python.c --- inn-2.6.3/innd/python.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/innd/python.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: python.c 10305 2018-12-02 14:21:56Z iulius $ +/* $Id: python.c 10442 2020-12-09 21:04:31Z iulius $ ** ** Embed Python in the style of innd's Perl stuff. ** @@ -60,7 +60,6 @@ #include "innd.h" bool PythonFilterActive; -char *filterPath; /* This gets set in art.c. */ PyObject *PYFilterObject = NULL; PyObject *PYFilterModule = NULL; @@ -685,8 +684,8 @@ PYreadfilter(void) PyObject *result; if (!Py_IsInitialized()) { - syslog(L_ERROR, "python is not initialized"); - return 0; + syslog(L_NOTICE, "python is not initialized"); + return 0; } /* If there is a filter running, let it clean up first. */ @@ -741,6 +740,16 @@ PYsetup(void) { const ARTHEADER *hp; size_t hdrcount; + char *path; + + path = concatpath(innconf->pathfilter, INN_PATH_PYTHON_STARTUP); + if (access(path, R_OK) < 0) { + syslog(L_NOTICE, "pyfilter %s not installed", path); + PYfilter(false); + free(path); + return; + } + free(path); /* Add path for innd module. The environment variable PYTHONPATH * does it; one can also append innconf->pathfilter to sys.path once diff -Nurp inn-2.6.3/innd/rc.c inn-2.6.4/innd/rc.c --- inn-2.6.3/innd/rc.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/innd/rc.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: rc.c 10229 2018-01-28 21:21:21Z iulius $ +/* $Id: rc.c 10523 2021-01-17 21:52:00Z iulius $ ** ** Routines for the remote connect channel. Create an Internet stream ** socket that processes connect to. If the incoming site is not one of @@ -1513,7 +1513,7 @@ RCwritelist(char *filename) if (*p == '/') q = p + 1; - fprintf (F, "## $Id: rc.c 10229 2018-01-28 21:21:21Z iulius $\n"); + fprintf (F, "## $Id: rc.c 10523 2021-01-17 21:52:00Z iulius $\n"); fprintf (F, "##\n"); fprintf (F, "## %s -- Configuration of incoming news feeds\n", q); free(r); @@ -1733,6 +1733,64 @@ RCsetup(void) unsigned int count, i, start; int *fds; bool okay; + const char *s; + + /* If systemd socket activation is used, backup its environment variables, + which are unset by sd_listen_fds(), to be able to restore them later in + CCxexec() before starting a new innd process. */ + s = getenv("LISTEN_FDS"); + if (s != NULL) { + if (setenv("INN_BACKUP_LISTEN_FDS", s, true) != 0) + die("setenv failed for INN_BACKUP_LISTEN_FDS"); + } + s = getenv("LISTEN_PID"); + if (s != NULL) { + if (setenv("INN_BACKUP_LISTEN_PID", s, true) != 0) + die("setenv failed for INN_BACKUP_LISTEN_PID"); + } + + /* Ignore any configured ports if socket activation is being used. */ + count = sd_listen_fds(true); + if (count > 0) { + char *p; + + xasprintf(&p, "%u", count); + if (setenv("INN_SD_LISTEN_FDS_COUNT", p, true) != 0) + die("setenv failed for INN_SD_LISTEN_FDS_COUNT"); + + free(p); + + /* Make sure that the RCchan array is of the appropriate size. */ + if (chanlimit == 0) { + chanlimit = count; + RCchan = xmalloc(chanlimit * sizeof(CHANNEL *)); + start = 0; + } else { + for (start = 0; start < chanlimit; start++) { + if (RCchan[start] == NULL) + break; + if (chanlimit - start < count) { + chanlimit += count - (chanlimit - start); + RCchan = xrealloc(RCchan, chanlimit * sizeof(CHANNEL *)); + } + } + } + + for (i = SD_LISTEN_FDS_START; i < SD_LISTEN_FDS_START + count; i++) { + if (sd_is_socket(i, AF_UNSPEC, SOCK_STREAM, 1) <= 0) + die("SERVER can't use socket-activated non-AF_INET socket %u", + i); + rc = CHANcreate(i, CTremconn, CSwaiting, RCreader, RCwritedone); + notice("%s rcsetup %s", LogName, CHANname(rc)); + RCHANadd(rc); + RCchan[start + i - SD_LISTEN_FDS_START] = rc; + } + + /* Get the list of hosts we handle. */ + RCreadlist(); + + return; + } /* If neither bindaddress or bindaddress6 are set, we have to do this the hard way. Either way, allocate an fds array to hold the file @@ -1815,8 +1873,13 @@ RCclose(void) unsigned int j; for (j = 0 ; j < chanlimit ; j++) { - if (RCchan[j] != NULL) { - CHANclose(RCchan[j], CHANname(RCchan[j])); + if (RCchan[j] != NULL) { + /* Do not close the listening sockets if socket activation is being + used because they need to be passed as-is by CCxexec() to the + next innd process. */ + if (CHANsystemdsa(RCchan[j])) + continue; + CHANclose(RCchan[j], CHANname(RCchan[j])); } else { break; } diff -Nurp inn-2.6.3/innfeed/config_l.c inn-2.6.4/innfeed/config_l.c --- inn-2.6.3/innfeed/config_l.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/innfeed/config_l.c 2021-01-21 13:53:07.000000000 -0800 @@ -8,7 +8,7 @@ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 6 -#define YY_FLEX_SUBMINOR_VERSION 1 +#define YY_FLEX_SUBMINOR_VERSION 4 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif @@ -83,10 +83,16 @@ typedef unsigned int flex_uint32_t; #define UINT32_MAX (4294967295U) #endif +#ifndef SIZE_MAX +#define SIZE_MAX (~(size_t)0) +#endif + #endif /* ! C99 */ #endif /* ! FLEXINT_H */ +/* begin standard C++ headers. */ + /* TODO: this is always defined, so inline it */ #define yyconst const @@ -99,32 +105,26 @@ typedef unsigned int flex_uint32_t; /* Returned upon end-of-file. */ #define YY_NULL 0 -/* Promotes a possibly negative, possibly signed char to an unsigned - * integer for use as an array index. If the signed char is negative, - * we want to instead treat it as an 8-bit unsigned char, hence the - * double cast. +/* Promotes a possibly negative, possibly signed char to an + * integer in range [0..255] for use as an array index. */ -#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) +#define YY_SC_TO_UI(c) ((YY_CHAR) (c)) /* Enter a start condition. This macro really ought to take a parameter, * but we do it the disgusting crufty way forced on us by the ()-less * definition of BEGIN. */ #define BEGIN (yy_start) = 1 + 2 * - /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The YYSTATE alias is for lex * compatibility. */ #define YY_START (((yy_start) - 1) / 2) #define YYSTATE YY_START - /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) - /* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE yyrestart(yyin ) - +#define YY_NEW_FILE yyrestart( yyin ) #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ @@ -161,7 +161,7 @@ extern FILE *yyin, *yyout; #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 - + #define YY_LESS_LINENO(n) #define YY_LINENO_REWIND_TO(ptr) @@ -178,7 +178,6 @@ extern FILE *yyin, *yyout; YY_DO_BEFORE_ACTION; /* set up yytext again */ \ } \ while ( 0 ) - #define unput(c) yyunput( c, (yytext_ptr) ) #ifndef YY_STRUCT_YY_BUFFER_STATE @@ -260,7 +259,6 @@ static YY_BUFFER_STATE * yy_buffer_stack #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ : NULL) - /* Same as previous macro, but useful when we know that the buffer stack is not * NULL or when we need an lvalue. For internal use only. */ @@ -281,62 +279,56 @@ static int yy_start = 0; /* start state */ static int yy_did_buffer_switch_on_eof; -void yyrestart (FILE *input_file ); -void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ); -YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ); -void yy_delete_buffer (YY_BUFFER_STATE b ); -void yy_flush_buffer (YY_BUFFER_STATE b ); -void yypush_buffer_state (YY_BUFFER_STATE new_buffer ); -void yypop_buffer_state (void ); - -static void yyensure_buffer_stack (void ); -static void yy_load_buffer_state (void ); -static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ); - -#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ) - -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,int len ); - -void *yyalloc (yy_size_t ); -void *yyrealloc (void *,yy_size_t ); -void yyfree (void * ); +void yyrestart ( FILE *input_file ); +void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer ); +YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size ); +void yy_delete_buffer ( YY_BUFFER_STATE b ); +void yy_flush_buffer ( YY_BUFFER_STATE b ); +void yypush_buffer_state ( YY_BUFFER_STATE new_buffer ); +void yypop_buffer_state ( void ); + +static void yyensure_buffer_stack ( void ); +static void yy_load_buffer_state ( void ); +static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file ); +#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER ) + +YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size ); +YY_BUFFER_STATE yy_scan_string ( const char *yy_str ); +YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); + +void *yyalloc ( yy_size_t ); +void *yyrealloc ( void *, yy_size_t ); +void yyfree ( void * ); #define yy_new_buffer yy_create_buffer - #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ yyensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer(yyin,YY_BUF_SIZE ); \ + yy_create_buffer( yyin, YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ } - #define yy_set_bol(at_bol) \ { \ if ( ! YY_CURRENT_BUFFER ){\ yyensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer(yyin,YY_BUF_SIZE ); \ + yy_create_buffer( yyin, YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ } - #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) /* Begin user sect3 */ - -typedef unsigned char YY_CHAR; +typedef flex_uint8_t YY_CHAR; FILE *yyin = NULL, *yyout = NULL; typedef int yy_state_type; extern int yylineno; - int yylineno = 1; extern char *yytext; @@ -345,10 +337,10 @@ extern char *yytext; #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 yynoreturn yy_fatal_error (yyconst char* msg ); +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 yynoreturn yy_fatal_error ( const char* msg ); /* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. @@ -359,7 +351,6 @@ static void yynoreturn yy_fatal_error (y (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; - #define YY_NUM_RULES 19 #define YY_END_OF_BUFFER 20 /* This struct is not used in this scanner, @@ -369,7 +360,7 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[55] = +static const flex_int16_t yy_accept[55] = { 0, 0, 0, 7, 7, 20, 18, 11, 1, 15, 10, 19, 16, 2, 18, 18, 3, 4, 18, 8, 7, @@ -379,7 +370,7 @@ static yyconst flex_int16_t yy_accept[55 18, 18, 6, 0 } ; -static yyconst YY_CHAR yy_ec[256] = +static const 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, @@ -411,14 +402,14 @@ static yyconst YY_CHAR yy_ec[256] = 1, 1, 1, 1, 1 } ; -static yyconst YY_CHAR yy_meta[30] = +static const 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_uint16_t yy_base[62] = +static const flex_int16_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, @@ -429,7 +420,7 @@ static yyconst flex_uint16_t yy_base[62] 88 } ; -static yyconst flex_int16_t yy_def[62] = +static const flex_int16_t yy_def[62] = { 0, 54, 1, 55, 55, 54, 56, 54, 54, 57, 58, 59, 56, 54, 56, 56, 56, 56, 56, 60, 54, @@ -440,7 +431,7 @@ static yyconst flex_int16_t yy_def[62] = 54 } ; -static yyconst flex_uint16_t yy_nxt[137] = +static const flex_int16_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, @@ -459,7 +450,7 @@ static yyconst flex_uint16_t yy_nxt[137] 54, 54, 54, 54, 54, 54 } ; -static yyconst flex_int16_t yy_chk[137] = +static const flex_int16_t yy_chk[137] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -559,8 +550,9 @@ struct includeFile { } include_stack[MAX_INCLUDE_DEPTH]; int include_stack_ptr = 0; +#line 554 "lex.yy.c" -#line 564 "lex.yy.c" +#line 556 "lex.yy.c" #define INITIAL 0 #define incl 1 @@ -577,36 +569,36 @@ int include_stack_ptr = 0; #define YY_EXTRA_TYPE void * #endif -static int yy_init_globals (void ); +static int yy_init_globals ( void ); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ -int yylex_destroy (void ); +int yylex_destroy ( void ); -int yyget_debug (void ); +int yyget_debug ( void ); -void yyset_debug (int debug_flag ); +void yyset_debug ( int debug_flag ); -YY_EXTRA_TYPE yyget_extra (void ); +YY_EXTRA_TYPE yyget_extra ( void ); -void yyset_extra (YY_EXTRA_TYPE user_defined ); +void yyset_extra ( YY_EXTRA_TYPE user_defined ); -FILE *yyget_in (void ); +FILE *yyget_in ( void ); -void yyset_in (FILE * _in_str ); +void yyset_in ( FILE * _in_str ); -FILE *yyget_out (void ); +FILE *yyget_out ( void ); -void yyset_out (FILE * _out_str ); +void yyset_out ( FILE * _out_str ); - int yyget_leng (void ); + int yyget_leng ( void ); -char *yyget_text (void ); +char *yyget_text ( void ); -int yyget_lineno (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. @@ -614,32 +606,31 @@ void yyset_lineno (int _line_number ); #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus -extern "C" int yywrap (void ); +extern "C" int yywrap ( void ); #else -extern int yywrap (void ); +extern int yywrap ( void ); #endif #endif #ifndef YY_NO_UNPUT - static void yyunput (int c,char *buf_ptr ); + static void yyunput ( int c, char *buf_ptr ); #endif #ifndef yytext_ptr -static void yy_flex_strncpy (char *,yyconst char *,int ); +static void yy_flex_strncpy ( char *, const char *, int ); #endif #ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * ); +static int yy_flex_strlen ( const char * ); #endif #ifndef YY_NO_INPUT - #ifdef __cplusplus -static int yyinput (void ); +static int yyinput ( void ); #else -static int input (void ); +static int input ( void ); #endif #endif @@ -670,7 +661,7 @@ static int input (void ); if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ - size_t n; \ + int n; \ for ( n = 0; n < max_size && \ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ @@ -683,7 +674,7 @@ static int input (void ); else \ { \ errno=0; \ - while ( (result = (int) fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ + while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \ { \ if( errno != EINTR) \ { \ @@ -775,17 +766,17 @@ YY_DECL if ( ! YY_CURRENT_BUFFER ) { yyensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer(yyin,YY_BUF_SIZE ); + yy_create_buffer( yyin, YY_BUF_SIZE ); } - yy_load_buffer_state( ); + yy_load_buffer_state( ); } { #line 73 "configfile.l" -#line 789 "lex.yy.c" +#line 780 "lex.yy.c" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -814,9 +805,9 @@ yy_match: { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 55 ) - yy_c = yy_meta[(unsigned int) yy_c]; + yy_c = yy_meta[yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } while ( yy_base[yy_current_state] != 107 ); @@ -908,7 +899,7 @@ YY_RULE_SETUP include_stack_ptr + 1,yytext) ; include_stack[include_stack_ptr].state = YY_CURRENT_BUFFER; include_stack[++include_stack_ptr].name = xstrdup (yytext) ; - yy_switch_to_buffer(yy_create_buffer(yyin,YY_BUF_SIZE)); + yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE)); } BEGIN(INITIAL); @@ -1091,7 +1082,7 @@ YY_RULE_SETUP #line 259 "configfile.l" ECHO; YY_BREAK -#line 1095 "lex.yy.c" +#line 1086 "lex.yy.c" case YY_END_OF_BUFFER: { @@ -1167,7 +1158,7 @@ ECHO; { (yy_did_buffer_switch_on_eof) = 0; - if ( yywrap( ) ) + if ( yywrap( ) ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up @@ -1299,7 +1290,8 @@ static int yy_get_next_buffer (void) b->yy_ch_buf = (char *) /* Include room in for 2 EOB chars. */ - yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); + yyrealloc( (void *) b->yy_ch_buf, + (yy_size_t) (b->yy_buf_size + 2) ); } else /* Can't grow it, we don't own it. */ @@ -1331,7 +1323,7 @@ static int yy_get_next_buffer (void) if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; - yyrestart(yyin ); + yyrestart( yyin ); } else @@ -1348,9 +1340,12 @@ static int yy_get_next_buffer (void) 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. */ 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 ); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( + (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); + /* "- 2" to take care of EOB's */ + YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); } (yy_n_chars) += number_to_move; @@ -1384,9 +1379,9 @@ static int yy_get_next_buffer (void) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 55 ) - yy_c = yy_meta[(unsigned int) yy_c]; + yy_c = yy_meta[yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; } return yy_current_state; @@ -1412,9 +1407,9 @@ static int yy_get_next_buffer (void) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 55 ) - yy_c = yy_meta[(unsigned int) yy_c]; + yy_c = yy_meta[yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; yy_is_jam = (yy_current_state == 54); return yy_is_jam ? 0 : yy_current_state; @@ -1485,7 +1480,7 @@ static int yy_get_next_buffer (void) else { /* need more input */ - int offset = (yy_c_buf_p) - (yytext_ptr); + int offset = (int) ((yy_c_buf_p) - (yytext_ptr)); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) @@ -1502,13 +1497,13 @@ static int yy_get_next_buffer (void) */ /* Reset buffer status. */ - yyrestart(yyin ); + yyrestart( yyin ); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { - if ( yywrap( ) ) + if ( yywrap( ) ) return 0; if ( ! (yy_did_buffer_switch_on_eof) ) @@ -1548,11 +1543,11 @@ static int yy_get_next_buffer (void) if ( ! YY_CURRENT_BUFFER ){ yyensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer(yyin,YY_BUF_SIZE ); + yy_create_buffer( yyin, YY_BUF_SIZE ); } - yy_init_buffer(YY_CURRENT_BUFFER,input_file ); - yy_load_buffer_state( ); + yy_init_buffer( YY_CURRENT_BUFFER, input_file ); + yy_load_buffer_state( ); } /** Switch to a different input buffer. @@ -1580,7 +1575,7 @@ static int yy_get_next_buffer (void) } YY_CURRENT_BUFFER_LVALUE = new_buffer; - yy_load_buffer_state( ); + yy_load_buffer_state( ); /* We don't actually know whether we did this switch during * EOF (yywrap()) processing, but the only time this flag @@ -1608,22 +1603,22 @@ static void yy_load_buffer_state (void) { YY_BUFFER_STATE b; - b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); + b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - b->yy_buf_size = (yy_size_t)size; + b->yy_buf_size = 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. */ - b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 ); + b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) ); if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_is_our_buffer = 1; - yy_init_buffer(b,file ); + yy_init_buffer( b, file ); return b; } @@ -1642,9 +1637,9 @@ static void yy_load_buffer_state (void) YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; if ( b->yy_is_our_buffer ) - yyfree((void *) b->yy_ch_buf ); + yyfree( (void *) b->yy_ch_buf ); - yyfree((void *) b ); + yyfree( (void *) b ); } /* Initializes or reinitializes a buffer. @@ -1656,7 +1651,7 @@ static void yy_load_buffer_state (void) { int oerrno = errno; - yy_flush_buffer(b ); + yy_flush_buffer( b ); b->yy_input_file = file; b->yy_fill_buffer = 1; @@ -1699,7 +1694,7 @@ static void yy_load_buffer_state (void) b->yy_buffer_status = YY_BUFFER_NEW; if ( b == YY_CURRENT_BUFFER ) - yy_load_buffer_state( ); + yy_load_buffer_state( ); } /** Pushes the new state onto the stack. The new state becomes @@ -1730,7 +1725,7 @@ void yypush_buffer_state (YY_BUFFER_STAT YY_CURRENT_BUFFER_LVALUE = new_buffer; /* copied from yy_switch_to_buffer. */ - yy_load_buffer_state( ); + yy_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } @@ -1749,7 +1744,7 @@ void yypop_buffer_state (void) --(yy_buffer_stack_top); if (YY_CURRENT_BUFFER) { - yy_load_buffer_state( ); + yy_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } } @@ -1759,7 +1754,7 @@ void yypop_buffer_state (void) */ static void yyensure_buffer_stack (void) { - int num_to_alloc; + yy_size_t num_to_alloc; if (!(yy_buffer_stack)) { @@ -1816,11 +1811,11 @@ YY_BUFFER_STATE yy_scan_buffer (char * /* They forgot to leave room for the EOB's. */ return NULL; - b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); + b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); - b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ + b->yy_buf_size = (int) (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 = NULL; @@ -1830,7 +1825,7 @@ YY_BUFFER_STATE yy_scan_buffer (char * b->yy_fill_buffer = 0; b->yy_buffer_status = YY_BUFFER_NEW; - yy_switch_to_buffer(b ); + yy_switch_to_buffer( b ); return b; } @@ -1843,10 +1838,10 @@ YY_BUFFER_STATE yy_scan_buffer (char * * @note If you want to scan bytes that may contain NUL values, then use * yy_scan_bytes() instead. */ -YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) +YY_BUFFER_STATE yy_scan_string (const char * yystr ) { - return yy_scan_bytes(yystr,(int) 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 @@ -1856,7 +1851,7 @@ YY_BUFFER_STATE yy_scan_string (yyconst * * @return the newly allocated buffer state object. */ -YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) +YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) { YY_BUFFER_STATE b; char *buf; @@ -1865,7 +1860,7 @@ YY_BUFFER_STATE yy_scan_bytes (yyconst /* Get memory for full buffer, including space for trailing EOB's. */ n = (yy_size_t) (_yybytes_len + 2); - buf = (char *) yyalloc(n ); + buf = (char *) yyalloc( n ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); @@ -1874,7 +1869,7 @@ YY_BUFFER_STATE yy_scan_bytes (yyconst buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; - b = yy_scan_buffer(buf,n ); + b = yy_scan_buffer( buf, n ); if ( ! b ) YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); @@ -1890,9 +1885,9 @@ YY_BUFFER_STATE yy_scan_bytes (yyconst #define YY_EXIT_FAILURE 2 #endif -static void yynoreturn yy_fatal_error (yyconst char* msg ) +static void yynoreturn yy_fatal_error (const char* msg ) { - (void) fprintf( stderr, "%s\n", msg ); + fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } @@ -2027,7 +2022,7 @@ int yylex_destroy (void) /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ - yy_delete_buffer(YY_CURRENT_BUFFER ); + yy_delete_buffer( YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; yypop_buffer_state(); } @@ -2048,7 +2043,7 @@ int yylex_destroy (void) */ #ifndef yytext_ptr -static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) +static void yy_flex_strncpy (char* s1, const char * s2, int n ) { int i; @@ -2058,7 +2053,7 @@ static void yy_flex_strncpy (char* s1, y #endif #ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * s ) +static int yy_flex_strlen (const char * s ) { int n; for ( n = 0; s[n]; ++n ) @@ -2097,6 +2092,5 @@ void yyfree (void * ptr ) - diff -Nurp inn-2.6.3/innfeed/config_y.c inn-2.6.4/innfeed/config_y.c --- inn-2.6.3/innfeed/config_y.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/innfeed/config_y.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,8 +1,9 @@ -/* A Bison parser, made by GNU Bison 3.0.4. */ +/* A Bison parser, made by GNU Bison 3.3.2. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 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 @@ -40,11 +41,14 @@ define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ +/* Undocumented macros, especially those whose name start with YY_, + are private implementation details. Do not rely on them. */ + /* Identify Bison output. */ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.0.4" +#define YYBISON_VERSION "3.3.2" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -61,10 +65,10 @@ -/* Copy the first part of user declarations. */ -#line 1 "configfile.y" /* yacc.c:339 */ +/* First part of user prologue. */ +#line 1 "configfile.y" /* yacc.c:337 */ -/* $Id: configfile.y 10124 2016-11-26 21:08:57Z iulius $ +/* $Id: configfile.y 10394 2020-11-12 20:10:14Z iulius $ ** ** A yacc input file for the innfeed config file. ** @@ -718,13 +722,16 @@ static int doCallbacks (void) static char *key ; -#line 722 "y.tab.c" /* yacc.c:339 */ - +#line 726 "y.tab.c" /* yacc.c:337 */ # ifndef YY_NULLPTR -# if defined __cplusplus && 201103L <= __cplusplus -# define YY_NULLPTR nullptr +# if defined __cplusplus +# if 201103L <= __cplusplus +# define YY_NULLPTR nullptr +# else +# define YY_NULLPTR 0 +# endif # else -# define YY_NULLPTR 0 +# define YY_NULLPTR ((void*)0) # endif # endif @@ -792,7 +799,7 @@ extern int yydebug; union YYSTYPE { -#line 657 "configfile.y" /* yacc.c:355 */ +#line 657 "configfile.y" /* yacc.c:352 */ scope *scp ; value *val ; @@ -802,7 +809,7 @@ union YYSTYPE char *string ; char chr ; -#line 806 "y.tab.c" /* yacc.c:355 */ +#line 813 "y.tab.c" /* yacc.c:352 */ }; typedef union YYSTYPE YYSTYPE; @@ -817,9 +824,7 @@ int yyparse (void); #endif /* !YY_YY_Y_TAB_H_INCLUDED */ -/* Copy the second part of user declarations. */ -#line 823 "y.tab.c" /* yacc.c:358 */ #ifdef short # undef short @@ -840,13 +845,13 @@ typedef signed char yytype_int8; #ifdef YYTYPE_UINT16 typedef YYTYPE_UINT16 yytype_uint16; #else -typedef unsigned short int yytype_uint16; +typedef unsigned short yytype_uint16; #endif #ifdef YYTYPE_INT16 typedef YYTYPE_INT16 yytype_int16; #else -typedef short int yytype_int16; +typedef short yytype_int16; #endif #ifndef YYSIZE_T @@ -858,7 +863,7 @@ typedef short int yytype_int16; # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else -# define YYSIZE_T unsigned int +# define YYSIZE_T unsigned # endif #endif @@ -894,15 +899,6 @@ typedef short int yytype_int16; # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) #endif -#if !defined _Noreturn \ - && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) -# if defined _MSC_VER && 1200 <= _MSC_VER -# define _Noreturn __declspec (noreturn) -# else -# define _Noreturn YY_ATTRIBUTE ((__noreturn__)) -# endif -#endif - /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YYUSE(E) ((void) (E)) @@ -910,7 +906,7 @@ typedef short int yytype_int16; # define YYUSE(E) /* empty */ #endif -#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ _Pragma ("GCC diagnostic push") \ @@ -1072,16 +1068,16 @@ union yyalloc /* YYNSTATES -- Number of states. */ #define YYNSTATES 33 -/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned - by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 #define YYMAXUTOK 272 +/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM + as returned by yylex, with out-of-bounds checking. */ #define YYTRANSLATE(YYX) \ - ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM - as returned by yylex, without out-of-bounds checking. */ + as returned by yylex. */ static const yytype_uint8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -1118,9 +1114,9 @@ static const yytype_uint8 yytranslate[] /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 690, 690, 690, 696, 698, 699, 700, 707, 707, - 714, 714, 721, 729, 729, 736, 742, 747, 753, 759, - 764, 769 + 0, 684, 684, 684, 690, 692, 693, 694, 701, 701, + 708, 708, 715, 723, 723, 730, 736, 741, 747, 753, + 758, 763 }; #endif @@ -1247,22 +1243,22 @@ static const yytype_uint8 yyr2[] = #define YYRECOVERING() (!!yyerrstatus) -#define YYBACKUP(Token, Value) \ -do \ - if (yychar == YYEMPTY) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - YYPOPSTACK (yylen); \ - yystate = *yyssp; \ - goto yybackup; \ - } \ - else \ - { \ - yyerror (YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ -while (0) +#define YYBACKUP(Token, Value) \ + do \ + if (yychar == YYEMPTY) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (yylen); \ + yystate = *yyssp; \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ + while (0) /* Error token number */ #define YYTERROR 1 @@ -1302,37 +1298,37 @@ do { } while (0) -/*----------------------------------------. -| Print this symbol's value on YYOUTPUT. | -`----------------------------------------*/ +/*-----------------------------------. +| Print this symbol's value on YYO. | +`-----------------------------------*/ static void -yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) { - FILE *yyo = yyoutput; - YYUSE (yyo); + FILE *yyoutput = yyo; + YYUSE (yyoutput); if (!yyvaluep) return; # ifdef YYPRINT if (yytype < YYNTOKENS) - YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); + YYPRINT (yyo, yytoknum[yytype], *yyvaluep); # endif YYUSE (yytype); } -/*--------------------------------. -| Print this symbol on YYOUTPUT. | -`--------------------------------*/ +/*---------------------------. +| Print this symbol on YYO. | +`---------------------------*/ static void -yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) { - YYFPRINTF (yyoutput, "%s %s (", + YYFPRINTF (yyo, "%s %s (", yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); - yy_symbol_value_print (yyoutput, yytype, yyvaluep); - YYFPRINTF (yyoutput, ")"); + yy_symbol_value_print (yyo, yytype, yyvaluep); + YYFPRINTF (yyo, ")"); } /*------------------------------------------------------------------. @@ -1366,7 +1362,7 @@ do { static void yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) { - unsigned long int yylno = yyrline[yyrule]; + unsigned long yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", @@ -1377,7 +1373,7 @@ yy_reduce_print (yytype_int16 *yyssp, YY YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, yystos[yyssp[yyi + 1 - yynrhs]], - &(yyvsp[(yyi + 1) - (yynrhs)]) + &yyvsp[(yyi + 1) - (yynrhs)] ); YYFPRINTF (stderr, "\n"); } @@ -1481,7 +1477,10 @@ yytnamerr (char *yyres, const char *yyst case '\\': if (*++yyp != '\\') goto do_not_strip_quotes; - /* Fall through. */ + else + goto append; + + append: default: if (yyres) yyres[yyn] = *yyp; @@ -1499,7 +1498,7 @@ yytnamerr (char *yyres, const char *yyst if (! yyres) return yystrlen (yystr); - return yystpcpy (yyres, yystr) - yyres; + return (YYSIZE_T) (yystpcpy (yyres, yystr) - yyres); } # endif @@ -1577,10 +1576,10 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, c yyarg[yycount++] = yytname[yyx]; { YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); - if (! (yysize <= yysize1 - && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) + yysize = yysize1; + else return 2; - yysize = yysize1; } } } @@ -1592,6 +1591,7 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, c case N: \ yyformat = S; \ break + default: /* Avoid compiler warnings. */ YYCASE_(0, YY_("syntax error")); YYCASE_(1, YY_("syntax error, unexpected %s")); YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); @@ -1603,9 +1603,10 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, c { YYSIZE_T yysize1 = yysize + yystrlen (yyformat); - if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) + yysize = yysize1; + else return 2; - yysize = yysize1; } if (*yymsg_alloc < yysize) @@ -1731,23 +1732,31 @@ yyparse (void) yychar = YYEMPTY; /* Cause a token to be read. */ goto yysetstate; + /*------------------------------------------------------------. -| yynewstate -- Push a new state, which is found in yystate. | +| yynewstate -- push a new state, which is found in yystate. | `------------------------------------------------------------*/ - yynewstate: +yynewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ yyssp++; - yysetstate: - *yyssp = yystate; + +/*--------------------------------------------------------------------. +| yynewstate -- set current state (the top of the stack) to yystate. | +`--------------------------------------------------------------------*/ +yysetstate: + *yyssp = (yytype_int16) yystate; if (yyss + yystacksize - 1 <= yyssp) +#if !defined yyoverflow && !defined YYSTACK_RELOCATE + goto yyexhaustedlab; +#else { /* Get the current used size of the three stacks, in elements. */ - YYSIZE_T yysize = yyssp - yyss + 1; + YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1); -#ifdef yyoverflow +# if defined yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into @@ -1763,14 +1772,10 @@ yyparse (void) &yyss1, yysize * sizeof (*yyssp), &yyvs1, yysize * sizeof (*yyvsp), &yystacksize); - yyss = yyss1; yyvs = yyvs1; } -#else /* no yyoverflow */ -# ifndef YYSTACK_RELOCATE - goto yyexhaustedlab; -# else +# else /* defined YYSTACK_RELOCATE */ /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) goto yyexhaustedlab; @@ -1786,22 +1791,22 @@ yyparse (void) goto yyexhaustedlab; YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); -# undef YYSTACK_RELOCATE +# undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } # endif -#endif /* no yyoverflow */ yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long int) yystacksize)); + (unsigned long) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) YYABORT; } +#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ YYDPRINTF ((stderr, "Entering state %d\n", yystate)); @@ -1810,11 +1815,11 @@ yyparse (void) goto yybackup; + /*-----------. | yybackup. | `-----------*/ yybackup: - /* Do appropriate processing given the current state. Read a lookahead token if we need one and don't already have one. */ @@ -1887,7 +1892,7 @@ yydefault: /*-----------------------------. -| yyreduce -- Do a reduction. | +| yyreduce -- do a reduction. | `-----------------------------*/ yyreduce: /* yyn is the number of a rule to reduce with. */ @@ -1908,69 +1913,69 @@ yyreduce: switch (yyn) { case 2: -#line 690 "configfile.y" /* yacc.c:1646 */ +#line 684 "configfile.y" /* yacc.c:1652 */ { lineCount = 1 ; addScope (NULL,"",newScope ("")) ; topScope = currScope ; } -#line 1918 "y.tab.c" /* yacc.c:1646 */ +#line 1923 "y.tab.c" /* yacc.c:1652 */ break; case 3: -#line 694 "configfile.y" /* yacc.c:1646 */ +#line 688 "configfile.y" /* yacc.c:1652 */ { if (!doCallbacks()) YYABORT ; } -#line 1924 "y.tab.c" /* yacc.c:1646 */ +#line 1929 "y.tab.c" /* yacc.c:1652 */ break; case 7: -#line 700 "configfile.y" /* yacc.c:1646 */ +#line 694 "configfile.y" /* yacc.c:1652 */ { errbuff = xmalloc (strlen(SYNTAX_ERROR) + 12) ; sprintf (errbuff,SYNTAX_ERROR,lineCount) ; YYABORT ; } -#line 1934 "y.tab.c" /* yacc.c:1646 */ +#line 1939 "y.tab.c" /* yacc.c:1652 */ break; case 8: -#line 707 "configfile.y" /* yacc.c:1646 */ +#line 701 "configfile.y" /* yacc.c:1652 */ { errbuff = addScope (currScope,(yyvsp[-1].name),newScope ("peer")) ; free ((yyvsp[-1].name)) ; if (errbuff != NULL) YYABORT ; } -#line 1944 "y.tab.c" /* yacc.c:1646 */ +#line 1949 "y.tab.c" /* yacc.c:1652 */ break; case 9: -#line 711 "configfile.y" /* yacc.c:1646 */ +#line 705 "configfile.y" /* yacc.c:1652 */ { currScope = currScope->parent ; } -#line 1952 "y.tab.c" /* yacc.c:1646 */ +#line 1957 "y.tab.c" /* yacc.c:1652 */ break; case 10: -#line 714 "configfile.y" /* yacc.c:1646 */ +#line 708 "configfile.y" /* yacc.c:1652 */ { errbuff = addScope (currScope,(yyvsp[-1].name),newScope ("group")) ; free ((yyvsp[-1].name)) ; if (errbuff != NULL) YYABORT ; } -#line 1962 "y.tab.c" /* yacc.c:1646 */ +#line 1967 "y.tab.c" /* yacc.c:1652 */ break; case 11: -#line 718 "configfile.y" /* yacc.c:1646 */ +#line 712 "configfile.y" /* yacc.c:1652 */ { currScope = currScope->parent ; } -#line 1970 "y.tab.c" /* yacc.c:1646 */ +#line 1975 "y.tab.c" /* yacc.c:1652 */ break; case 12: -#line 721 "configfile.y" /* yacc.c:1646 */ +#line 715 "configfile.y" /* yacc.c:1652 */ { errbuff = xmalloc (strlen(UNKNOWN_SCOPE_TYPE) + 15 + strlen ((yyvsp[-2].name))) ; @@ -1979,95 +1984,95 @@ yyreduce: free ((yyvsp[-1].name)) ; YYABORT ; } -#line 1983 "y.tab.c" /* yacc.c:1646 */ +#line 1988 "y.tab.c" /* yacc.c:1652 */ break; case 13: -#line 729 "configfile.y" /* yacc.c:1646 */ +#line 723 "configfile.y" /* yacc.c:1652 */ { if ((errbuff = keyOk((yyvsp[0].name))) != NULL) { YYABORT ; } else key = (yyvsp[0].name) ; } -#line 1994 "y.tab.c" /* yacc.c:1646 */ +#line 1999 "y.tab.c" /* yacc.c:1652 */ break; case 15: -#line 736 "configfile.y" /* yacc.c:1646 */ +#line 730 "configfile.y" /* yacc.c:1652 */ { if ((errbuff = addString (currScope, key, (yyvsp[0].name))) != NULL) YYABORT ; free (key) ; free ((yyvsp[0].name)) ; } -#line 2005 "y.tab.c" /* yacc.c:1646 */ +#line 2010 "y.tab.c" /* yacc.c:1652 */ break; case 16: -#line 742 "configfile.y" /* yacc.c:1646 */ +#line 736 "configfile.y" /* yacc.c:1652 */ { if ((errbuff = addInteger(currScope, key, (yyvsp[0].integer))) != NULL) YYABORT; free (key) ; } -#line 2015 "y.tab.c" /* yacc.c:1646 */ +#line 2020 "y.tab.c" /* yacc.c:1652 */ break; case 17: -#line 747 "configfile.y" /* yacc.c:1646 */ +#line 741 "configfile.y" /* yacc.c:1652 */ { if ((errbuff = addBoolean (currScope, key, 1)) != NULL) YYABORT ; free (key) ; free ((yyvsp[0].name)) ; } -#line 2026 "y.tab.c" /* yacc.c:1646 */ +#line 2031 "y.tab.c" /* yacc.c:1652 */ break; case 18: -#line 753 "configfile.y" /* yacc.c:1646 */ +#line 747 "configfile.y" /* yacc.c:1652 */ { if ((errbuff = addBoolean (currScope, key, 0)) != NULL) YYABORT ; free (key) ; free ((yyvsp[0].name)) ; } -#line 2037 "y.tab.c" /* yacc.c:1646 */ +#line 2042 "y.tab.c" /* yacc.c:1652 */ break; case 19: -#line 759 "configfile.y" /* yacc.c:1646 */ +#line 753 "configfile.y" /* yacc.c:1652 */ { if ((errbuff = addReal (currScope, key, (yyvsp[0].real))) != NULL) YYABORT ; free (key) ; } -#line 2047 "y.tab.c" /* yacc.c:1646 */ +#line 2052 "y.tab.c" /* yacc.c:1652 */ break; case 20: -#line 764 "configfile.y" /* yacc.c:1646 */ +#line 758 "configfile.y" /* yacc.c:1652 */ { if ((errbuff = addString (currScope, key, (yyvsp[0].string))) != NULL) YYABORT; free (key) ; } -#line 2057 "y.tab.c" /* yacc.c:1646 */ +#line 2062 "y.tab.c" /* yacc.c:1652 */ break; case 21: -#line 769 "configfile.y" /* yacc.c:1646 */ +#line 763 "configfile.y" /* yacc.c:1652 */ { if ((errbuff = addChar (currScope, key, (yyvsp[0].chr))) != NULL) YYABORT ; free (key) ; } -#line 2067 "y.tab.c" /* yacc.c:1646 */ +#line 2072 "y.tab.c" /* yacc.c:1652 */ break; -#line 2071 "y.tab.c" /* yacc.c:1646 */ +#line 2076 "y.tab.c" /* yacc.c:1652 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -2092,14 +2097,13 @@ yyreduce: /* Now 'shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ - - yyn = yyr1[yyn]; - - yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; - if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) - yystate = yytable[yystate]; - else - yystate = yydefgoto[yyn - YYNTOKENS]; + { + const int yylhs = yyr1[yyn] - YYNTOKENS; + const int yyi = yypgoto[yylhs] + *yyssp; + yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp + ? yytable[yyi] + : yydefgoto[yylhs]); + } goto yynewstate; @@ -2182,12 +2186,10 @@ yyerrlab: | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: - - /* Pacify compilers like GCC when the user code never invokes - YYERROR and the label yyerrorlab therefore never appears in user - code. */ - if (/*CONSTCOND*/ 0) - goto yyerrorlab; + /* Pacify compilers when the user code never invokes YYERROR and the + label yyerrorlab therefore never appears in user code. */ + if (0) + YYERROR; /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ @@ -2249,6 +2251,7 @@ yyacceptlab: yyresult = 0; goto yyreturn; + /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ @@ -2256,6 +2259,7 @@ yyabortlab: yyresult = 1; goto yyreturn; + #if !defined yyoverflow || YYERROR_VERBOSE /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | @@ -2266,6 +2270,10 @@ yyexhaustedlab: /* Fall through. */ #endif + +/*-----------------------------------------------------. +| yyreturn -- parsing is finished, return the result. | +`-----------------------------------------------------*/ yyreturn: if (yychar != YYEMPTY) { @@ -2295,7 +2303,7 @@ yyreturn: #endif return yyresult; } -#line 776 "configfile.y" /* yacc.c:1906 */ +#line 770 "configfile.y" /* yacc.c:1918 */ int yyerror (const char *s) diff -Nurp inn-2.6.3/innfeed/config_y.h inn-2.6.4/innfeed/config_y.h --- inn-2.6.3/innfeed/config_y.h 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/innfeed/config_y.h 2021-01-21 13:53:07.000000000 -0800 @@ -1,8 +1,9 @@ -/* A Bison parser, made by GNU Bison 3.0.4. */ +/* A Bison parser, made by GNU Bison 3.3.2. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 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 @@ -30,6 +31,9 @@ This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ +/* Undocumented macros, especially those whose name start with YY_, + are private implementation details. Do not rely on them. */ + #ifndef YY_YY_Y_TAB_H_INCLUDED # define YY_YY_Y_TAB_H_INCLUDED /* Debug traces. */ @@ -84,7 +88,7 @@ extern int yydebug; union YYSTYPE { -#line 657 "configfile.y" /* yacc.c:1909 */ +#line 657 "configfile.y" /* yacc.c:1921 */ scope *scp ; value *val ; @@ -94,7 +98,7 @@ union YYSTYPE char *string ; char chr ; -#line 98 "y.tab.h" /* yacc.c:1909 */ +#line 102 "y.tab.h" /* yacc.c:1921 */ }; typedef union YYSTYPE YYSTYPE; diff -Nurp inn-2.6.3/innfeed/configfile.y inn-2.6.4/innfeed/configfile.y --- inn-2.6.3/innfeed/configfile.y 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/innfeed/configfile.y 2021-01-21 13:53:07.000000000 -0800 @@ -1,5 +1,5 @@ %{ -/* $Id: configfile.y 10124 2016-11-26 21:08:57Z iulius $ +/* $Id: configfile.y 10394 2020-11-12 20:10:14Z iulius $ ** ** A yacc input file for the innfeed config file. ** @@ -666,26 +666,20 @@ static char *key ; %token PEER %token GROUP -%token IVAL -%token RVAL +%token IVAL +%token RVAL %token NAME -%token XSTRING +%token XSTRING %token SCOPE %token COLON %token LBRACE %token RBRACE -%token TRUEBVAL -%token FALSEBVAL -%token CHAR -%token WORD +%token TRUEBVAL +%token FALSEBVAL +%token CHAR +%token WORD %token IP_ADDRESS -%type IVAL -%type RVAL -%type XSTRING -%type CHAR -%type TRUEBVAL FALSEBVAL WORD - %% input: { lineCount = 1 ; diff -Nurp inn-2.6.3/lib/Makefile inn-2.6.4/lib/Makefile --- inn-2.6.3/lib/Makefile 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/lib/Makefile 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -## $Id: Makefile 10321 2018-12-29 13:47:14Z iulius $ +## $Id: Makefile 10498 2021-01-05 16:11:07Z 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 = 6:0:0 +LTVERSION = 6:1:0 top = .. CFLAGS = $(GCFLAGS) @@ -67,7 +67,7 @@ libinn.a: $(OBJECTS) $(LIBCC) $(CFLAGS) -c $*.c perl.o: perl.c - $(CC) $(CFLAGS) $(PERL_CPPFLAGS) $(LDFLAGS) -c perl.c + $(CC) $(CFLAGS) $(PERL_CPPFLAGS) -c perl.c ../include/inn/system.h: (cd ../include && $(MAKE)) diff -Nurp inn-2.6.3/lib/asprintf.c inn-2.6.4/lib/asprintf.c --- inn-2.6.3/lib/asprintf.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/lib/asprintf.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: asprintf.c 10246 2018-02-16 21:12:42Z iulius $ +/* $Id: asprintf.c 10396 2020-11-12 20:19:41Z iulius $ * * Replacement for a missing asprintf and vasprintf. * @@ -32,10 +32,10 @@ * with the system versions. */ #if TESTING -# undef asprintf -# undef vasprintf -# define asprintf test_asprintf -# define vasprintf test_vasprintf +# undef asprintf +# undef vasprintf +# define asprintf test_asprintf +# define vasprintf test_vasprintf int test_asprintf(char **, const char *, ...) __attribute__((__format__(printf, 2, 3))); int test_vasprintf(char **, const char *, va_list) diff -Nurp inn-2.6.3/lib/buffer.c inn-2.6.4/lib/buffer.c --- inn-2.6.3/lib/buffer.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/lib/buffer.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: buffer.c 10246 2018-02-16 21:12:42Z iulius $ +/* $Id: buffer.c 10396 2020-11-12 20:19:41Z iulius $ * * Counted, reusable memory buffer. * @@ -17,7 +17,7 @@ * which can be found at . * * Written by Russ Allbery - * Copyright 2015-2016 Russ Allbery + * Copyright 2015-2016, 2019 Russ Allbery * Copyright 2011-2012, 2014 * The Board of Trustees of the Leland Stanford Junior University * Copyright 2004-2006 Internet Systems Consortium, Inc. ("ISC") @@ -44,6 +44,7 @@ #include "config.h" #include "clibrary.h" +#include #include #include @@ -112,6 +113,7 @@ void buffer_set(struct buffer *buffer, const char *data, size_t length) { if (length > 0) { + assert(data != NULL); buffer_resize(buffer, length); memmove(buffer->data, data, length); } diff -Nurp inn-2.6.3/lib/clientlib.c inn-2.6.4/lib/clientlib.c --- inn-2.6.3/lib/clientlib.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/lib/clientlib.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: clientlib.c 8903 2010-01-17 18:21:56Z iulius $ +/* $Id: clientlib.c 10365 2020-05-10 12:58:37Z iulius $ ** ** Routines compatible with the NNTP "clientlib" routines. */ @@ -83,19 +83,22 @@ handle_server_response(int response, cha default: printf("Unknown response code %d from %s.\n", response, host); return -1; - case NNTP_FAIL_TERMINATING: - if (atoi(ser_line) == response) { - p = &ser_line[strlen(ser_line) - 1]; - if (*p == '\n' && *--p == '\r') - *p = '\0'; - if (p > &ser_line[3]) { - printf("News server %s unavailable: %s\n", host, - &ser_line[4]); - return -1; - } - } - printf("News server %s unavailable, try later.\n", host); - return -1; + case NNTP_FAIL_TERMINATING: + if (atoi(ser_line) == response) { + size_t ser_line_len = strlen(ser_line); + if (ser_line_len > 4) { + p = &ser_line[ser_line_len - 1]; + if (*p == '\n' && *--p == '\r') + *p = '\0'; + if (p > &ser_line[3]) { + printf("News server %s unavailable: %s\n", host, + &ser_line[4]); + return -1; + } + } + } + printf("News server %s unavailable, try later.\n", host); + return -1; case NNTP_ERR_ACCESS: printf(CANTUSE, host); return -1; diff -Nurp inn-2.6.3/lib/fdflag.c inn-2.6.4/lib/fdflag.c --- inn-2.6.3/lib/fdflag.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/lib/fdflag.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: fdflag.c 10246 2018-02-16 21:12:42Z iulius $ +/* $Id: fdflag.c 10396 2020-11-12 20:19:41Z iulius $ * * Set or clear file descriptor flags. * @@ -36,15 +36,15 @@ #include "clibrary.h" #ifdef _WIN32 -# include +# include #else -# include -# ifndef O_NONBLOCK -# include -# if HAVE_SYS_FILIO_H -# include -# endif -# endif +# include +# ifndef O_NONBLOCK +# include +# if HAVE_SYS_FILIO_H +# include +# endif +# endif #endif #include "inn/fdflag.h" @@ -142,7 +142,7 @@ fdflag_nonblocking(socket_type fd, bool mode = (flag ? (mode | O_NONBLOCK) : (mode & ~O_NONBLOCK)); return (fcntl(fd, F_SETFL, mode) == 0); } -#else /* !O_NONBLOCK */ +#else /* !O_NONBLOCK */ bool fdflag_nonblocking(socket_type fd, bool flag) { diff -Nurp inn-2.6.3/lib/getaddrinfo.c inn-2.6.4/lib/getaddrinfo.c --- inn-2.6.3/lib/getaddrinfo.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/lib/getaddrinfo.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,9 +1,9 @@ -/* $Id: getaddrinfo.c 10246 2018-02-16 21:12:42Z iulius $ +/* $Id: getaddrinfo.c 10396 2020-11-12 20:19:41Z iulius $ * * Replacement for a missing getaddrinfo. * * This is an implementation of getaddrinfo for systems that don't have one so - * that networking code can use a consistant interface without #ifdef. It is + * that networking code can use a consistent interface without #ifdef. It is * a fairly minimal implementation, with the following limitations: * * - IPv4 support only. IPv6 is not supported. @@ -21,7 +21,7 @@ * which can be found at . * * Written by Russ Allbery - * Copyright 2003-2005, 2016-2017 Russ Allbery + * Copyright 2003-2005, 2016-2017, 2019-2020 Russ Allbery * Copyright 2015 Julien ÉLIE * Copyright 2008, 2011, 2013-2014 * The Board of Trustees of the Leland Stanford Junior University @@ -35,8 +35,8 @@ */ #include "config.h" -#include "clibrary.h" #include "portable/socket.h" +#include "clibrary.h" #include @@ -51,13 +51,13 @@ extern int h_errno; * defined so that we can deal with them in case statements. */ #ifndef HOST_NOT_FOUND -# define HOST_NOT_FOUND 1 -# define TRY_AGAIN 2 -# define NO_RECOVERY 3 -# define NO_DATA 4 +# define HOST_NOT_FOUND 1 +# define TRY_AGAIN 2 +# define NO_RECOVERY 3 +# define NO_DATA 4 #endif #ifndef NETDB_INTERNAL -# define NETDB_INTERNAL -1 +# define NETDB_INTERNAL -1 #endif /* @@ -66,12 +66,12 @@ extern int h_errno; * constants, but that should be okay (except possibly for gai_strerror). */ #if TESTING -# undef gai_strerror -# undef freeaddrinfo -# undef getaddrinfo -# define gai_strerror test_gai_strerror -# define freeaddrinfo test_freeaddrinfo -# define getaddrinfo test_getaddrinfo +# undef gai_strerror +# undef freeaddrinfo +# undef getaddrinfo +# define gai_strerror test_gai_strerror +# define freeaddrinfo test_freeaddrinfo +# define getaddrinfo test_getaddrinfo const char *test_gai_strerror(int); void test_freeaddrinfo(struct addrinfo *); int test_getaddrinfo(const char *, const char *, const struct addrinfo *, @@ -83,14 +83,14 @@ int test_getaddrinfo(const char *, const * pick some other values for them. */ #if TESTING -# if AI_NUMERICSERV == 0 -# undef AI_NUMERICSERV -# define AI_NUMERICSERV 0x0080 -# endif -# if AI_NUMERICHOST == 0 -# undef AI_NUMERICHOST -# define AI_NUMERICHOST 0x0100 -# endif +# if AI_NUMERICSERV == 0 +# undef AI_NUMERICSERV +# define AI_NUMERICSERV 0x0080 +# endif +# if AI_NUMERICHOST == 0 +# undef AI_NUMERICHOST +# define AI_NUMERICHOST 0x0100 +# endif #endif /* @@ -99,17 +99,17 @@ int test_getaddrinfo(const char *, const * on these platforms. */ #if TESTING -# ifdef HAVE_GETADDRINFO -# define AI_INTERNAL_ALL 0x1fff -# else -# define AI_INTERNAL_ALL 0x01ff -# endif +# ifdef HAVE_GETADDRINFO +# define AI_INTERNAL_ALL 0x1fff +# else +# define AI_INTERNAL_ALL 0x01ff +# endif #else -# define AI_INTERNAL_ALL 0x007f +# define AI_INTERNAL_ALL 0x007f #endif /* Table of strings corresponding to the EAI_* error codes. */ -static const char * const gai_errors[] = { +static const char *const gai_errors[] = { "Host name lookup failure", /* 1 EAI_AGAIN */ "Invalid flag value", /* 2 EAI_BADFLAGS */ "Unknown server error", /* 3 EAI_FAIL */ @@ -124,9 +124,9 @@ static const char * const gai_errors[] = /* Macro to set the len attribute of sockaddr_in. */ #if HAVE_STRUCT_SOCKADDR_SA_LEN -# define sin_set_length(s) ((s)->sin_len = sizeof(struct sockaddr_in)) +# define sin_set_length(s) ((s)->sin_len = sizeof(struct sockaddr_in)) #else -# define sin_set_length(s) /* empty */ +# define sin_set_length(s) /* empty */ #endif /* @@ -213,15 +213,14 @@ gai_addrinfo_new(int socktype, const cha free(ai); return NULL; } - ai->ai_addr = (struct sockaddr *) sin; ai->ai_next = NULL; if (canonical == NULL) ai->ai_canonname = NULL; else { ai->ai_canonname = strdup(canonical); if (ai->ai_canonname == NULL) { - /* sin will be freed by freeaddrinfo. */ - freeaddrinfo(ai); + free(sin); + free(ai); return NULL; } } @@ -229,11 +228,12 @@ gai_addrinfo_new(int socktype, const cha ai->ai_family = AF_INET; ai->ai_socktype = socktype; ai->ai_protocol = (socktype == SOCK_DGRAM) ? IPPROTO_UDP : IPPROTO_TCP; - ai->ai_addrlen = sizeof(struct sockaddr_in); sin->sin_family = AF_INET; sin->sin_addr = addr; sin->sin_port = htons(port); sin_set_length(sin); + ai->ai_addr = (struct sockaddr *) sin; + ai->ai_addrlen = sizeof(struct sockaddr_in); return ai; } @@ -332,8 +332,8 @@ gai_lookup(const char *nodename, int fla if (host->h_addr_list[0] == NULL) return EAI_FAIL; canonical = (flags & AI_CANONNAME) - ? ((host->h_name != NULL) ? host->h_name : nodename) - : NULL; + ? ((host->h_name != NULL) ? host->h_name : nodename) + : NULL; first = NULL; prev = NULL; for (i = 0; host->h_addr_list[i] != NULL; i++) { diff -Nurp inn-2.6.3/lib/getnameinfo.c inn-2.6.4/lib/getnameinfo.c --- inn-2.6.3/lib/getnameinfo.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/lib/getnameinfo.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,9 +1,9 @@ -/* $Id: getnameinfo.c 10246 2018-02-16 21:12:42Z iulius $ +/* $Id: getnameinfo.c 10444 2020-12-09 21:06:15Z iulius $ * * Replacement for a missing getnameinfo. * * This is an implementation of getnameinfo for systems that don't have one so - * that networking code can use a consistant interface without #ifdef. It is + * that networking code can use a consistent interface without #ifdef. It is * a fairly minimal implementation, with the following limitations: * * - IPv4 support only. IPv6 is not supported. @@ -18,7 +18,7 @@ * which can be found at . * * Written by Russ Allbery - * Copyright 2005 Russ Allbery + * Copyright 2005, 2020 Russ Allbery * Copyright 2008, 2011, 2013-2014 * The Board of Trustees of the Leland Stanford Junior University * @@ -35,6 +35,7 @@ #include "portable/socket.h" #include "clibrary.h" +#include #include /* @@ -43,33 +44,52 @@ * constants, but that should be okay (except possibly for gai_strerror). */ #if TESTING -# undef getnameinfo -# define getnameinfo test_getnameinfo +# undef getnameinfo +# define getnameinfo test_getnameinfo int test_getnameinfo(const struct sockaddr *, socklen_t, char *, socklen_t, char *, socklen_t, int); /* Linux doesn't provide EAI_OVERFLOW, so make up our own for testing. */ -# ifndef EAI_OVERFLOW -# define EAI_OVERFLOW 10 -# endif +# ifndef EAI_OVERFLOW +# define EAI_OVERFLOW 10 +# endif #endif /* Used for unused parameters to silence gcc warnings. */ -#define UNUSED __attribute__((__unused__)) +#define UNUSED __attribute__((__unused__)) /* * Check to see if a name is fully qualified by seeing if it contains a * period. If it does, try to copy it into the provided node buffer and set * status accordingly, returning true. If not, return false. + * + * musl libc returns the text form of the IP address rather than NULL when the + * IP address doesn't resolve. Reject such names here so that NI_NAMEREQD is + * emulated correctly. */ static bool try_name(const char *name, char *node, socklen_t nodelen, int *status) { size_t namelen; + const char *p; + bool found_nondigit = false; + /* Reject unqualified names. */ if (strchr(name, '.') == NULL) return false; + + /* + * Reject names consisting entirely of digits and period, since these are + * converted IP addresses rather than resolved names. + */ + for (p = name; *p != '\0'; p++) + if (!isdigit((unsigned char) *p) && *p != '.') + found_nondigit = true; + if (!found_nondigit) + return false; + + /* Copy the name if it's not too long and return success. */ namelen = strlen(name); if (namelen + 1 > (size_t) nodelen) *status = EAI_OVERFLOW; diff -Nurp inn-2.6.3/lib/getpagesize.c inn-2.6.4/lib/getpagesize.c --- inn-2.6.3/lib/getpagesize.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/lib/getpagesize.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: getpagesize.c 5596 2002-08-17 21:29:35Z rra $ +/* $Id: getpagesize.c 10397 2020-11-12 20:22:51Z iulius $ ** ** Replacement for a missing getpagesize. ** @@ -8,7 +8,9 @@ */ #include "config.h" -#include +#if HAVE_UNISTD_H +# include +#endif int getpagesize(void) diff -Nurp inn-2.6.3/lib/inet_aton.c inn-2.6.4/lib/inet_aton.c --- inn-2.6.3/lib/inet_aton.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/lib/inet_aton.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: inet_aton.c 10246 2018-02-16 21:12:42Z iulius $ +/* $Id: inet_aton.c 10396 2020-11-12 20:19:41Z iulius $ * * Replacement for a missing inet_aton. * @@ -10,7 +10,7 @@ * which can be found at . * * Written by Russ Allbery - * Copyright 2000-2001, 2017 Russ Allbery + * Copyright 2000-2001, 2017, 2019-2020 Russ Allbery * Copyright 2008, 2011, 2014 * The Board of Trustees of the Leland Stanford Junior University * @@ -23,16 +23,16 @@ */ #include "config.h" -#include "clibrary.h" #include "portable/socket.h" +#include "clibrary.h" /* * If we're running the test suite, rename inet_aton to avoid conflicts with * the system version. */ #if TESTING -# undef inet_aton -# define inet_aton test_inet_aton +# undef inet_aton +# define inet_aton test_inet_aton int test_inet_aton(const char *, struct in_addr *); #endif @@ -42,8 +42,8 @@ inet_aton(const char *s, struct in_addr unsigned octet[4]; uint32_t address; const char *p; - int base, i; - int part = 0; + unsigned int base, i; + unsigned int part = 0; if (s == NULL) return 0; @@ -98,6 +98,7 @@ inet_aton(const char *s, struct in_addr * Use a switch statement to parse each digit rather than assuming * ASCII. Probably pointless portability. */ + /* clang-format off */ switch (*p) { case '0': i = 0; break; case '1': i = 1; break; @@ -117,6 +118,7 @@ inet_aton(const char *s, struct in_addr case 'F': case 'f': i = 15; break; default: return 0; } + /* clang-format on */ if (i >= base) return 0; octet[part] = (octet[part] * base) + i; diff -Nurp inn-2.6.3/lib/inet_ntoa.c inn-2.6.4/lib/inet_ntoa.c --- inn-2.6.3/lib/inet_ntoa.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/lib/inet_ntoa.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: inet_ntoa.c 10246 2018-02-16 21:12:42Z iulius $ +/* $Id: inet_ntoa.c 10396 2020-11-12 20:19:41Z iulius $ * * Replacement for a missing or broken inet_ntoa. * @@ -11,7 +11,7 @@ * which can be found at . * * Written by Russ Allbery - * Copyright 2000-2001, 2017 Russ Allbery + * Copyright 2000-2001, 2017, 2020 Russ Allbery * Copyright 2008, 2011, 2014 * The Board of Trustees of the Leland Stanford Junior University * @@ -24,16 +24,16 @@ */ #include "config.h" -#include "clibrary.h" #include "portable/socket.h" +#include "clibrary.h" /* * If we're running the test suite, rename inet_ntoa to avoid conflicts with * the system version. */ #if TESTING -# undef inet_ntoa -# define inet_ntoa test_inet_ntoa +# undef inet_ntoa +# define inet_ntoa test_inet_ntoa char *test_inet_ntoa(struct in_addr); #endif @@ -44,8 +44,10 @@ inet_ntoa(struct in_addr in) const unsigned char *p; p = (const unsigned char *) &in.s_addr; + /* clang-format off */ sprintf(buf, "%u.%u.%u.%u", (unsigned int) (p[0] & 0xff), (unsigned int) (p[1] & 0xff), (unsigned int) (p[2] & 0xff), (unsigned int) (p[3] & 0xff)); + /* clang-format on */ return buf; } diff -Nurp inn-2.6.3/lib/inet_ntop.c inn-2.6.4/lib/inet_ntop.c --- inn-2.6.3/lib/inet_ntop.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/lib/inet_ntop.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: inet_ntop.c 10246 2018-02-16 21:12:42Z iulius $ +/* $Id: inet_ntop.c 10396 2020-11-12 20:19:41Z iulius $ * * Replacement for a missing inet_ntop. * @@ -12,7 +12,7 @@ * which can be found at . * * Written by Russ Allbery - * Copyright 2005 Russ Allbery + * Copyright 2005, 2020 Russ Allbery * Copyright 2008, 2011, 2013-2014 * The Board of Trustees of the Leland Stanford Junior University * @@ -25,19 +25,19 @@ */ #include "config.h" -#include "clibrary.h" #include "portable/socket.h" +#include "clibrary.h" #include /* This may already be defined by the system headers. */ #ifndef INET_ADDRSTRLEN -# define INET_ADDRSTRLEN 16 +# define INET_ADDRSTRLEN 16 #endif /* Systems old enough to not support inet_ntop may not have this either. */ #ifndef EAFNOSUPPORT -# define EAFNOSUPPORT EDOM +# define EAFNOSUPPORT EDOM #endif /* @@ -45,8 +45,8 @@ * the system version. */ #if TESTING -# undef inet_ntop -# define inet_ntop test_inet_ntop +# undef inet_ntop +# define inet_ntop test_inet_ntop const char *test_inet_ntop(int, const void *, char *, socklen_t); #endif @@ -65,11 +65,13 @@ inet_ntop(int af, const void *src, char return NULL; } p = src; + /* clang-format off */ status = snprintf(dst, size, "%u.%u.%u.%u", (unsigned int) (p[0] & 0xff), (unsigned int) (p[1] & 0xff), (unsigned int) (p[2] & 0xff), (unsigned int) (p[3] & 0xff)); + /* clang-format on */ if (status < 0 || (size_t) status >= (size_t) size) return NULL; return dst; diff -Nurp inn-2.6.3/lib/messages.c inn-2.6.4/lib/messages.c --- inn-2.6.3/lib/messages.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/lib/messages.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: messages.c 10246 2018-02-16 21:12:42Z iulius $ +/* $Id: messages.c 10396 2020-11-12 20:19:41Z iulius $ * * Message and error reporting (possibly fatal). * @@ -55,7 +55,7 @@ * which can be found at . * * Written by Russ Allbery - * Copyright 2015-2016 Russ Allbery + * Copyright 2015-2016, 2020 Russ Allbery * Copyright 2008-2010, 2013-2014 * The Board of Trustees of the Leland Stanford Junior University * Copyright 2004-2006 Internet Systems Consortium, Inc. ("ISC") @@ -84,17 +84,17 @@ #include #ifdef HAVE_SYSLOG_H -# include +# include #endif #ifdef _WIN32 -# include -# define LOG_DEBUG EVENTLOG_SUCCESS -# define LOG_INFO EVENTLOG_INFORMATION_TYPE -# define LOG_NOTICE EVENTLOG_INFORMATION_TYPE -# define LOG_WARNING EVENTLOG_WARNING_TYPE -# define LOG_ERR EVENTLOG_ERROR_TYPE -# define LOG_CRIT EVENTLOG_ERROR_TYPE +# include +# define LOG_DEBUG EVENTLOG_SUCCESS +# define LOG_INFO EVENTLOG_INFORMATION_TYPE +# define LOG_NOTICE EVENTLOG_INFORMATION_TYPE +# define LOG_WARNING EVENTLOG_WARNING_TYPE +# define LOG_ERR EVENTLOG_ERROR_TYPE +# define LOG_CRIT EVENTLOG_ERROR_TYPE #endif #include "inn/macros.h" @@ -102,18 +102,14 @@ #include "inn/xmalloc.h" /* The default handler lists. */ -static message_handler_func stdout_handlers[2] = { - message_log_stdout, NULL -}; -static message_handler_func stderr_handlers[2] = { - message_log_stderr, NULL -}; +static message_handler_func stdout_handlers[2] = {message_log_stdout, NULL}; +static message_handler_func stderr_handlers[2] = {message_log_stderr, NULL}; /* The list of logging functions currently in effect. */ -static message_handler_func *debug_handlers = NULL; +static message_handler_func *debug_handlers = NULL; static message_handler_func *notice_handlers = stdout_handlers; -static message_handler_func *warn_handlers = stderr_handlers; -static message_handler_func *die_handlers = stderr_handlers; +static message_handler_func *warn_handlers = stderr_handlers; +static message_handler_func *die_handlers = stderr_handlers; /* If non-NULL, called before exit and its return value passed to exit. */ int (*message_fatal_cleanup)(void) = NULL; @@ -145,16 +141,18 @@ message_handlers(message_handler_func ** * duplication since we can't assume variadic macros, but I can at least make * it easier to write and keep them consistent. */ -#define HANDLER_FUNCTION(type) \ - void \ - message_handlers_ ## type(unsigned int count, ...) \ - { \ - va_list args; \ - \ - va_start(args, count); \ - message_handlers(& type ## _handlers, count, args); \ - va_end(args); \ +/* clang-format off */ +#define HANDLER_FUNCTION(type) \ + void \ + message_handlers_ ## type(unsigned int count, ...) \ + { \ + va_list args; \ + \ + va_start(args, count); \ + message_handlers(& type ## _handlers, count, args); \ + va_end(args); \ } +/* clang-format on */ HANDLER_FUNCTION(debug) HANDLER_FUNCTION(notice) HANDLER_FUNCTION(warn) @@ -255,7 +253,7 @@ message_log_syslog(int pri, size_t len, CloseEventLog(eventlog); } } -#else /* !_WIN32 */ +#else /* !_WIN32 */ if (err == 0) syslog(pri, "%s", buffer); else @@ -269,6 +267,7 @@ message_log_syslog(int pri, size_t len, * Do the same sort of wrapper to generate all of the separate syslog logging * functions. */ +/* clang-format off */ #define SYSLOG_FUNCTION(name, type) \ void \ message_log_syslog_ ## name(size_t l, const char *f, va_list a, int e) \ @@ -281,6 +280,7 @@ SYSLOG_FUNCTION(notice, NOTICE) SYSLOG_FUNCTION(warning, WARNING) SYSLOG_FUNCTION(err, ERR) SYSLOG_FUNCTION(crit, CRIT) +/* clang-format on */ /* diff -Nurp inn-2.6.3/lib/mkstemp.c inn-2.6.4/lib/mkstemp.c --- inn-2.6.3/lib/mkstemp.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/lib/mkstemp.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: mkstemp.c 10246 2018-02-16 21:12:42Z iulius $ +/* $Id: mkstemp.c 10396 2020-11-12 20:19:41Z iulius $ * * Replacement for a missing mkstemp. * @@ -26,7 +26,7 @@ #include #include #ifdef HAVE_SYS_TIME_H -# include +# include #endif #include @@ -36,8 +36,8 @@ * another name. */ #if TESTING -# undef mkstemp -# define mkstemp test_mkstemp +# undef mkstemp +# define mkstemp test_mkstemp int test_mkstemp(char *); #endif diff -Nurp inn-2.6.3/lib/network-innbind.c inn-2.6.4/lib/network-innbind.c --- inn-2.6.3/lib/network-innbind.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/lib/network-innbind.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: network-innbind.c 10105 2016-11-04 22:42:26Z iulius $ +/* $Id: network-innbind.c 10396 2020-11-12 20:19:41Z iulius $ * * Utility functions for network connections using innbind. * @@ -15,8 +15,8 @@ */ #include "config.h" -#include "clibrary.h" #include "portable/socket.h" +#include "clibrary.h" #include #ifdef HAVE_STREAMS_SENDFD diff -Nurp inn-2.6.3/lib/network.c inn-2.6.4/lib/network.c --- inn-2.6.3/lib/network.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/lib/network.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: network.c 10246 2018-02-16 21:12:42Z iulius $ +/* $Id: network.c 10396 2020-11-12 20:19:41Z iulius $ * * Utility functions for network connections. * @@ -46,15 +46,15 @@ */ #include "config.h" -#include "clibrary.h" #include "portable/socket.h" +#include "clibrary.h" #include #ifdef HAVE_SYS_SELECT_H -# include +# include #endif #ifdef HAVE_SYS_TIME_H -# include +# include #endif #include @@ -68,11 +68,11 @@ /* Macros to set the len attribute of sockaddrs. */ #if HAVE_STRUCT_SOCKADDR_SA_LEN -# define sin_set_length(s) ((s)->sin_len = sizeof(struct sockaddr_in)) -# define sin6_set_length(s) ((s)->sin6_len = sizeof(struct sockaddr_in6)) +# define sin_set_length(s) ((s)->sin_len = sizeof(struct sockaddr_in)) +# define sin6_set_length(s) ((s)->sin6_len = sizeof(struct sockaddr_in6)) #else -# define sin_set_length(s) /* empty */ -# define sin6_set_length(s) /* empty */ +# define sin_set_length(s) /* empty */ +# define sin6_set_length(s) /* empty */ #endif /* @@ -80,9 +80,9 @@ * return short writes on blocking sockets. */ #ifdef _WIN32 -# define socket_xwrite(fd, b, s) send((fd), (b), (s), 0) +# define socket_xwrite(fd, b, s) send((fd), (b), (s), 0) #else -# define socket_xwrite(fd, b, s) xwrite((fd), (b), (s)) +# define socket_xwrite(fd, b, s) xwrite((fd), (b), (s)) #endif @@ -600,8 +600,8 @@ network_connect(const struct addrinfo *a * anything useful. */ socket_type -network_connect_host(const char *host, unsigned short port, - const char *source, time_t timeout) +network_connect_host(const char *host, unsigned short port, const char *source, + time_t timeout) { struct addrinfo hints, *ai; char portbuf[16]; @@ -979,7 +979,7 @@ network_addr_match(const char *a, const return false; return (a4.s_addr & addr_mask) == (b4.s_addr & addr_mask); } - + #ifdef HAVE_INET6 /* * Otherwise, if the address is IPv6, the mask is required to be a CIDR diff -Nurp inn-2.6.3/lib/qio.c inn-2.6.4/lib/qio.c --- inn-2.6.3/lib/qio.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/lib/qio.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: qio.c 10014 2016-05-05 12:42:31Z iulius $ +/* $Id: qio.c 10457 2020-12-19 06:10:49Z eagle $ ** ** Quick I/O package. ** @@ -17,44 +17,6 @@ #include "inn/qio.h" #include "inn/libinn.h" -/* A reasonable default buffer size to use. */ -#define QIO_BUFFERSIZE 8192 - -#ifdef HAVE_STRUCT_STAT_ST_BLKSIZE -#define NO_STRUCT_STAT_ST_BLKSIZE_UNUSED -#else -#define NO_STRUCT_STAT_ST_BLKSIZE_UNUSED UNUSED -#endif - -/* -** Given a file descriptor, return a reasonable buffer size to use for that -** file. Uses st_blksize if available and reasonable, QIO_BUFFERSIZE -** otherwise. -*/ -static size_t -buffer_size(int fd NO_STRUCT_STAT_ST_BLKSIZE_UNUSED) -{ - size_t size = QIO_BUFFERSIZE; - -#if HAVE_STRUCT_STAT_ST_BLKSIZE - struct stat st; - - /* The Solaris 2.6 man page says that st_blksize is not defined for - block or character special devices (and could contain garbage), so - only use this value for regular files. */ - if (fstat(fd, &st) == 0 && S_ISREG(st.st_mode)) { - size = st.st_blksize; - if (size > (4 * QIO_BUFFERSIZE) || size == 0) - size = QIO_BUFFERSIZE; - else - while(size < QIO_BUFFERSIZE) - size += st.st_blksize; - } -#endif /* HAVE_STRUCT_STAT_ST_BLKSIZE */ - - return size; -} - /* ** Open a quick file from a descriptor. @@ -67,7 +29,7 @@ QIOfdopen(const int fd) qp = xmalloc(sizeof(*qp)); qp->_fd = fd; qp->_length = 0; - qp->_size = buffer_size(fd); + qp->_size = QIO_BUFFERSIZE; qp->_buffer = xmalloc(qp->_size); qp->_start = qp->_buffer; qp->_end = qp->_buffer; diff -Nurp inn-2.6.3/lib/reallocarray.c inn-2.6.4/lib/reallocarray.c --- inn-2.6.3/lib/reallocarray.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/lib/reallocarray.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: reallocarray.c 10246 2018-02-16 21:12:42Z iulius $ +/* $Id: reallocarray.c 10396 2020-11-12 20:19:41Z iulius $ * * Replacement for a missing reallocarray. * @@ -34,8 +34,8 @@ * it to another name. */ #if TESTING -# undef reallocarray -# define reallocarray test_reallocarray +# undef reallocarray +# define reallocarray test_reallocarray void *test_reallocarray(void *, size_t, size_t); #endif diff -Nurp inn-2.6.3/lib/setenv.c inn-2.6.4/lib/setenv.c --- inn-2.6.3/lib/setenv.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/lib/setenv.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: setenv.c 10246 2018-02-16 21:12:42Z iulius $ +/* $Id: setenv.c 10396 2020-11-12 20:19:41Z iulius $ * * Replacement for a missing setenv. * @@ -29,8 +29,8 @@ * the system version. */ #if TESTING -# undef setenv -# define setenv test_setenv +# undef setenv +# define setenv test_setenv int test_setenv(const char *, const char *, int); #endif diff -Nurp inn-2.6.3/lib/seteuid.c inn-2.6.4/lib/seteuid.c --- inn-2.6.3/lib/seteuid.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/lib/seteuid.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: seteuid.c 10246 2018-02-16 21:12:42Z iulius $ +/* $Id: seteuid.c 10396 2020-11-12 20:19:41Z iulius $ * * Replacement for a missing seteuid. * @@ -31,7 +31,7 @@ #include "config.h" #if HAVE_UNISTD_H -# include +# include #endif int diff -Nurp inn-2.6.3/lib/snprintf.c inn-2.6.4/lib/snprintf.c --- inn-2.6.3/lib/snprintf.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/lib/snprintf.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: snprintf.c 10246 2018-02-16 21:12:42Z iulius $ +/* $Id: snprintf.c 10396 2020-11-12 20:19:41Z iulius $ * * Replacement for a missing snprintf or vsnprintf. * @@ -11,8 +11,9 @@ * that later merges with the original source are easy. Bug fixes and * improvements should be sent back to the original author. * - * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * The canonical version of this file was maintained (until 2020) in the + * rra-c-util package, which can be found at + * . */ /* @@ -26,6 +27,28 @@ # define vsnprintf test_vsnprintf #endif +/* + * __attribute__ is available in gcc 2.5 and later, but only with gcc 2.7 + * could you use the __format__ form of the attributes, which is what we use + * (to avoid confusion with other macros). + */ +#ifndef __attribute__ +# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) +# define __attribute__(spec) /* empty */ +# endif +#endif + +/* + * Older Clang doesn't support __attribute__((fallthrough)) properly and + * complains about the empty statement that it is decorating. Suppress that + * warning. Also suppress warnings about unknown attributes to handle older + * Clang versions. + */ +#if !defined(__attribute__) && (defined(__llvm__) || defined(__clang__)) +# pragma GCC diagnostic ignored "-Wattributes" +# pragma GCC diagnostic ignored "-Wmissing-declarations" +#endif + /* Specific to rra-c-util, but only when debugging is enabled. */ #ifdef DEBUG_SNPRINTF # include "inn/messages.h" @@ -65,7 +88,7 @@ * probably requires libm on most operating systems. Don't yet * support the exponent (e,E) and sigfig (g,G). Also, fmtint() * was pretty badly broken, it just wasn't being exercised in ways - * which showed it, so that's been fixed. Also, formated the code + * which showed it, so that's been fixed. Also, formatted the code * to mutt conventions, and removed dead code left over from the * original. Also, there is now a builtin-test, just compile with: * gcc -DTEST_SNPRINTF -o snprintf snprintf.c -lm @@ -367,7 +390,8 @@ static int dopr (char *buffer, size_t ma break; case 'X': flags |= DP_F_UP; - /* fallthrough */ + __attribute__((fallthrough)); + /* fall through */ case 'x': flags |= DP_F_UNSIGNED; if (cflags == DP_C_SHORT) @@ -389,7 +413,8 @@ static int dopr (char *buffer, size_t ma break; case 'E': flags |= DP_F_UP; - /* fallthrough */ + __attribute__((fallthrough)); + /* fall through */ case 'e': if (cflags == DP_C_LDOUBLE) fvalue = va_arg (args, LDOUBLE); @@ -399,7 +424,8 @@ static int dopr (char *buffer, size_t ma break; case 'G': flags |= DP_F_UP; - /* fallthrough */ + __attribute__((fallthrough)); + /* fall through */ case 'g': flags |= DP_F_FP_G; if (cflags == DP_C_LDOUBLE) @@ -715,7 +741,7 @@ static int fmtfp (char *buffer, size_t * if (intpart != 0) { /* For each digit of INTPART, print one less fractional digit. */ - LLONG temp = intpart; + LLONG temp; for (temp = intpart; temp != 0; temp /= 10) --max; if (max < 0) diff -Nurp inn-2.6.3/lib/vector.c inn-2.6.4/lib/vector.c --- inn-2.6.3/lib/vector.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/lib/vector.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: vector.c 10246 2018-02-16 21:12:42Z iulius $ +/* $Id: vector.c 10396 2020-11-12 20:19:41Z iulius $ * * Vector handling (counted lists of char *'s). * @@ -25,7 +25,7 @@ * which can be found at . * * Written by Russ Allbery - * Copyright 2001-2006, 2016 Russ Allbery + * Copyright 2001-2006, 2016, 2020 Russ Allbery * Copyright 2005-2006, 2008-2011, 2013-2014 * The Board of Trustees of the Leland Stanford Junior University * @@ -102,8 +102,8 @@ cvector_resize(struct cvector *vector, s vector->count = size; if (size == 0) size = 1; - vector->strings - = xreallocarray(vector->strings, size, sizeof(const char *)); + vector->strings = + xreallocarray(vector->strings, size, sizeof(const char *)); vector->allocated = size; } @@ -328,7 +328,7 @@ split_multi_count(const char *string, co return 0; /* - * Walk the string looking for the first separator not preceeded by + * Walk the string looking for the first separator not preceded by * another separator (and ignore a separator at the start of the string). */ for (count = 1, p = string + 1; *p != '\0'; p++) @@ -351,8 +351,7 @@ split_multi_count(const char *string, co * are considered a single separator. Reuse the provided vector if non-NULL. */ struct vector * -vector_split_multi(const char *string, const char *seps, - struct vector *vector) +vector_split_multi(const char *string, const char *seps, struct vector *vector) { const char *p, *start; size_t i, count; @@ -550,7 +549,7 @@ vector_exec(const char *path, struct vec if (vector->allocated == vector->count) vector_resize(vector, vector->count + 1); vector->strings[vector->count] = NULL; - return execv(path, (char * const *) vector->strings); + return execv(path, (char *const *) vector->strings); } int @@ -560,5 +559,5 @@ cvector_exec(const char *path, struct cv if (vector->allocated == vector->count) cvector_resize(vector, vector->count + 1); vector->strings[vector->count] = NULL; - return execv(path, (char * const *) vector->strings); + return execv(path, (char *const *) vector->strings); } diff -Nurp inn-2.6.3/lib/xmalloc.c inn-2.6.4/lib/xmalloc.c --- inn-2.6.3/lib/xmalloc.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/lib/xmalloc.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: xmalloc.c 10246 2018-02-16 21:12:42Z iulius $ +/* $Id: xmalloc.c 10396 2020-11-12 20:19:41Z iulius $ * * malloc routines with failure handling. * @@ -102,8 +102,8 @@ void xmalloc_fail(const char *function, size_t size, const char *file, int line) { if (size == 0) - sysdie("failed to format output with %s at %s line %d", function, - file, line); + sysdie("failed to format output with %s at %s line %d", function, file, + line); else sysdie("failed to %s %lu bytes at %s line %d", function, (unsigned long) size, file, line); @@ -203,7 +203,7 @@ x_strndup(const char *s, size_t size, co char *copy; /* Don't assume that the source string is nul-terminated. */ - for (p = s; (size_t) (p - s) < size && *p != '\0'; p++) + for (p = s; (size_t)(p - s) < size && *p != '\0'; p++) ; length = p - s; copy = malloc(length + 1); @@ -263,7 +263,7 @@ x_asprintf(char **strp, const char *file } va_end(args); } -#else /* !(HAVE_C99_VAMACROS || HAVE_GNU_VAMACROS) */ +#else /* !(HAVE_C99_VAMACROS || HAVE_GNU_VAMACROS) */ void x_asprintf(char **strp, const char *fmt, ...) { diff -Nurp inn-2.6.3/lib/xwrite.c inn-2.6.4/lib/xwrite.c --- inn-2.6.3/lib/xwrite.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/lib/xwrite.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: xwrite.c 10246 2018-02-16 21:12:42Z iulius $ +/* $Id: xwrite.c 10396 2020-11-12 20:19:41Z iulius $ * * write and writev replacements to handle partial writes. * @@ -65,12 +65,12 @@ * and it's possible the other functions may be similarly affected. */ #if TESTING -# undef pwrite -# undef write -# undef writev -# define pwrite fake_pwrite -# define write fake_write -# define writev fake_writev +# undef pwrite +# undef write +# undef writev +# define pwrite fake_pwrite +# define write fake_write +# define writev fake_writev ssize_t fake_pwrite(int, const void *, size_t, off_t); ssize_t fake_write(int, const void *, size_t); ssize_t fake_writev(int, const struct iovec *, int); @@ -85,7 +85,7 @@ xwrite(int fd, const void *buffer, size_ unsigned int count = 0; if (size == 0) - return 0; + return 0; /* Abort the write if we try ten times with no forward progress. */ for (total = 0; total < size; total += status) { @@ -113,7 +113,7 @@ xpwrite(int fd, const void *buffer, size unsigned int count = 0; if (size == 0) - return 0; + return 0; /* Abort the write if we try ten times with no forward progress. */ for (total = 0; total < size; total += status) { @@ -148,7 +148,7 @@ xwritev(int fd, const struct iovec iov[] * writev to fail with an error we'll return. */ if (iovcnt == 0) - return 0; + return 0; if (iovcnt < 0 || (size_t) iovcnt > SIZE_MAX / sizeof(struct iovec)) { errno = EINVAL; return -1; @@ -158,7 +158,7 @@ xwritev(int fd, const struct iovec iov[] for (total = 0, i = 0; i < (unsigned int) iovcnt; i++) total += iov[i].iov_len; if (total == 0) - return 0; + return 0; /* * First, try just writing it all out. Most of the time this will succeed diff -Nurp inn-2.6.3/m4/cc-flags.m4 inn-2.6.4/m4/cc-flags.m4 --- inn-2.6.3/m4/cc-flags.m4 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/m4/cc-flags.m4 2021-01-21 13:53:07.000000000 -0800 @@ -1,14 +1,15 @@ dnl Check whether the compiler supports particular flags. -dnl $Id: cc-flags.m4 10246 2018-02-16 21:12:42Z iulius $ +dnl $Id: cc-flags.m4 10520 2021-01-17 21:48:06Z 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 -dnl not, the commands in the third argument are run. +dnl Provides INN_PROG_CC_FLAG and INN_PROG_LD_FLAG, which checks whether a +dnl compiler supports a given flag for either compilation or linking, +dnl respectively. If it does, the commands in the second argument are run. +dnl If not, the commands in the third argument are run. dnl dnl The canonical version of this file is maintained in the rra-c-util dnl package, available at . dnl -dnl Copyright 2016-2018 Russ Allbery +dnl Copyright 2016-2020 Russ Allbery dnl Copyright 2006, 2009, 2016 dnl by Internet Systems Consortium, Inc. ("ISC") dnl @@ -28,16 +29,19 @@ 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], [-=+,], [____])]) +AC_DEFUN([_INN_PROG_LD_FLAG_CACHE], +[translit([inn_cv_linker_c_$1], [-=+,], [____])]) -dnl Check whether a given flag is supported by the complier. +dnl Check whether a given flag is supported by the compiler when compiling a C +dnl source file. AC_DEFUN([INN_PROG_CC_FLAG], [AC_REQUIRE([AC_PROG_CC]) AC_MSG_CHECKING([if $CC supports $1]) AC_CACHE_VAL([_INN_PROG_CC_FLAG_CACHE([$1])], [save_CFLAGS=$CFLAGS AS_CASE([$1], - [-Wno-*], [CFLAGS="$CFLAGS `echo "$1" | sed 's/-Wno-/-W/'`"], + [-Wno-*], [CFLAGS="$CFLAGS `AS_ECHO(["$1"]) | sed 's/-Wno-/-W/'`"], [*], [CFLAGS="$CFLAGS $1"]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [int foo = 0;])], [_INN_PROG_CC_FLAG_CACHE([$1])=yes], @@ -46,3 +50,18 @@ AC_DEFUN([INN_PROG_CC_FLAG], AC_MSG_RESULT([$_INN_PROG_CC_FLAG_CACHE([$1])]) AS_IF([test x"$_INN_PROG_CC_FLAG_CACHE([$1])" = xyes], [$2], [$3])]) +dnl Check whether a given flag is supported by the compiler when linking an +dnl executable. +AC_DEFUN([INN_PROG_LD_FLAG], +[AC_REQUIRE([AC_PROG_CC]) + AC_MSG_CHECKING([if $CC supports $1 for linking]) + AC_CACHE_VAL([_INN_PROG_LD_FLAG_CACHE([$1])], + [save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $1" + AC_LINK_IFELSE([AC_LANG_PROGRAM([], [int foo = 0;])], + [_INN_PROG_LD_FLAG_CACHE([$1])=yes], + [_INN_PROG_LD_FLAG_CACHE([$1])=no]) + LDFLAGS=$save_LDFLAGS]) + AC_MSG_RESULT([$_INN_PROG_LD_FLAG_CACHE([$1])]) + AS_IF([test x"$_INN_PROG_LD_FLAG_CACHE([$1])" = xyes], [$2], [$3])]) + diff -Nurp inn-2.6.3/m4/iov-max.m4 inn-2.6.4/m4/iov-max.m4 --- inn-2.6.3/m4/iov-max.m4 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/m4/iov-max.m4 2021-01-21 13:53:07.000000000 -0800 @@ -1,5 +1,5 @@ dnl iov-max.m4 -- Probe for the maximum number of iovecs accepted by writev. -dnl $Id: iov-max.m4 8312 2009-01-31 20:35:04Z iulius $ +dnl $Id: iov-max.m4 10352 2019-10-31 01:37:59Z eagle $ dnl dnl Check for the maximum number of elements in an iovec (IOV_MAX). SVr4 dnl systems appear to use that name for this limit (checked Solaris 2.6, IRIX @@ -38,12 +38,9 @@ main () FILE *f = fopen ("conftestval", "w"); if (f == NULL) return 1; -#ifdef IOV_MAX - fprintf (f, "set in limits.h\n"); -#else -# ifdef UIO_MAXIOV +#ifdef UIO_MAXIOV fprintf (f, "%d\n", UIO_MAXIOV); -# else +#else fd = open ("/dev/null", O_WRONLY, 0666); if (fd < 0) return 1; @@ -60,25 +57,31 @@ main () } } fprintf (f, "1024\n"); -# endif /* UIO_MAXIOV */ -#endif /* IOV_MAX */ +#endif /* UIO_MAXIOV */ return 0; } ]])]) +dnl Headers to use for checking for an IOV_MAX definition. +define([_INN_MACRO_IOV_MAX_HEADERS], +[AC_INCLUDES_DEFAULT +#ifdef HAVE_LIMITS_H +# include +#endif +]) + dnl Do the actual check. AC_DEFUN([INN_MACRO_IOV_MAX], -[AC_CACHE_CHECK([value of IOV_MAX], - [inn_cv_macro_iov_max], - [AC_RUN_IFELSE([_INN_MACRO_IOV_MAX_SOURCE], - inn_cv_macro_iov_max=`cat conftestval`, - inn_cv_macro_iov_max=error, - 16) - if test x"$inn_cv_macro_iov_max" = xerror ; then - AC_MSG_WARN([probe failure, assuming 16]) - inn_cv_macro_iov_max=16 - fi]) - if test x"$inn_cv_macro_iov_max" != x"set in limits.h" ; then - AC_DEFINE_UNQUOTED(IOV_MAX, $inn_cv_macro_iov_max, - [Define to the max vectors in an iovec.]) - fi]) +[AC_CHECK_DECL([IOV_MAX], [], + [AC_CACHE_CHECK([value of IOV_MAX], + [inn_cv_macro_iov_max], + [AC_RUN_IFELSE([_INN_MACRO_IOV_MAX_SOURCE], + inn_cv_macro_iov_max=`cat conftestval`, + inn_cv_macro_iov_max=error, + 16) + AS_IF([test x"$inn_cv_macro_iov_max" = xerror], + [AC_MSG_WARN([probe failure, assuming 16]) + inn_cv_macro_iov_max=16])]) + AC_DEFINE_UNQUOTED([IOV_MAX], [$inn_cv_macro_iov_max], + [Define to the max vectors in an iovec.])], + [_INN_MACRO_IOV_MAX_HEADERS])]) diff -Nurp inn-2.6.3/m4/krb5-config.m4 inn-2.6.4/m4/krb5-config.m4 --- inn-2.6.3/m4/krb5-config.m4 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/m4/krb5-config.m4 2021-01-21 13:53:07.000000000 -0800 @@ -1,5 +1,5 @@ dnl Use krb5-config to get link paths for Kerberos libraries. -dnl $Id: krb5-config.m4 10287 2018-05-21 12:42:24Z iulius $ +dnl $Id: krb5-config.m4 10520 2021-01-17 21:48:06Z iulius $ dnl dnl Provides one macro, INN_KRB5_CONFIG, which attempts to get compiler and dnl linker flags for a library via krb5-config and sets the appropriate shell @@ -99,7 +99,7 @@ AC_DEFUN([INN_KRB5_CONFIG], $3[]_LIBS=`"$inn_krb5_config_$3" --libs $2 2>/dev/null` inn_krb5_config_$3[]_ok=yes])])]) AS_IF([test x"$inn_krb5_config_$3[]_ok" = xyes], - [$3[]_CPPFLAGS=`echo "$$3[]_CPPFLAGS" | sed 's%-I/usr/include %%'` - $3[]_CPPFLAGS=`echo "$$3[]_CPPFLAGS" | sed 's%-I/usr/include$%%'` + [$3[]_CPPFLAGS=`AS_ECHO(["$$3[]_CPPFLAGS"]) | sed 's%-I/usr/include %%'` + $3[]_CPPFLAGS=`AS_ECHO(["$$3[]_CPPFLAGS"]) | sed 's%-I/usr/include$%%'` $4], [$5])]) diff -Nurp inn-2.6.3/m4/krb5.m4 inn-2.6.4/m4/krb5.m4 --- inn-2.6.3/m4/krb5.m4 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/m4/krb5.m4 2021-01-21 13:53:07.000000000 -0800 @@ -1,5 +1,4 @@ dnl Find the compiler and linker flags for Kerberos. -dnl $Id: krb5.m4 10306 2018-12-02 14:26:13Z 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 @@ -18,9 +17,9 @@ dnl dnl If KRB5_CPPFLAGS, KRB5_LDFLAGS, or KRB5_LIBS are set before calling these dnl macros, their values will be added to whatever the macros discover. dnl -dnl KRB5_CPPFLAGS_GCC will be set to the same value as KRB5_CPPFLAGS but with -dnl any occurrences of -I changed to -isystem. This may be useful to suppress -dnl warnings from the Kerberos header files when building with GCC and +dnl KRB5_CPPFLAGS_WARNINGS will be set to the same value as KRB5_CPPFLAGS but +dnl with any occurrences of -I changed to -isystem. This may be useful to +dnl suppress warnings from the Kerberos header files when building with and dnl aggressive warning flags. Be aware that this change will change the dnl compiler header file search order as well. dnl @@ -51,7 +50,8 @@ dnl The canonical version of this file i dnl package, available at . dnl dnl Written by Russ Allbery -dnl Copyright 2005-2011, 2013-2014, 2018 +dnl Copyright 2018, 2020-2021 Russ Allbery +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 @@ -60,9 +60,6 @@ dnl notice is preserved. dnl dnl SPDX-License-Identifier: FSFULLR -dnl Ignore Automake conditionals if not using Automake. -m4_define_default([AM_CONDITIONAL], [:]) - dnl Headers to include when probing for Kerberos library properties. AC_DEFUN([INN_INCLUDES_KRB5], [[ #if HAVE_KRB5_H @@ -109,28 +106,33 @@ dnl Check for a header using a file exis dnl AC_CHECK_HEADERS. This is used if there were arguments to configure dnl specifying the Kerberos header path, since we may have one header in the dnl default include path and another under our explicitly-configured Kerberos -dnl location. +dnl location. Sets inn_krb5_header_found to true if the header is found. AC_DEFUN([_INN_LIB_KRB5_CHECK_HEADER], [AC_MSG_CHECKING([for $1]) AS_IF([test -f "${inn_krb5_incroot}/$1"], - [AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_$1]), [1], + [inn_krb5_header_found=true + AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_$1]), [1], [Define to 1 if you have the <$1> header file.]) AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no])])]) dnl Check for the com_err header. Internal helper macro since we need -dnl to do the same checks in multiple places. +dnl to do the same checks in multiple places. Sets inn_krb5_header_found +dnl to true if one header is found. AC_DEFUN([_INN_LIB_KRB5_CHECK_HEADER_COM_ERR], [AS_IF([test x"$inn_krb5_incroot" = x], - [AC_CHECK_HEADERS([et/com_err.h kerberosv5/com_err.h])], - [_INN_LIB_KRB5_CHECK_HEADER([et/com_err.h]) - _INN_LIB_KRB5_CHECK_HEADER([kerberosv5/com_err.h])])]) + [AC_CHECK_HEADERS([et/com_err.h kerberosv5/com_err.h], + [inn_krb5_header_found=true])], + [_INN_LIB_KRB5_CHECK_HEADER([et/com_err.h]) + _INN_LIB_KRB5_CHECK_HEADER([kerberosv5/com_err.h])])]) dnl Check for the main Kerberos header. Internal helper macro since we need -dnl to do the same checks in multiple places. +dnl to do the same checks in multiple places. Sets inn_krb5_header_found +dnl to true if one header is found. AC_DEFUN([_INN_LIB_KRB5_CHECK_HEADER_KRB5], [AS_IF([test x"$inn_krb5_incroot" = x], - [AC_CHECK_HEADERS([krb5.h kerberosv5/krb5.h krb5/krb5.h])], + [AC_CHECK_HEADERS([krb5.h kerberosv5/krb5.h krb5/krb5.h], + [inn_krb5_header_found=true])], [_INN_LIB_KRB5_CHECK_HEADER([krb5.h]) _INN_LIB_KRB5_CHECK_HEADER([kerberosv5/krb5.h]) _INN_LIB_KRB5_CHECK_HEADER([krb5/krb5.h])])]) @@ -139,83 +141,99 @@ dnl Does the appropriate library checks dnl linkage. The single argument, if true, says to fail if Kerberos could not dnl be found. AC_DEFUN([_INN_LIB_KRB5_REDUCED], -[INN_LIB_KRB5_SWITCH - AC_CHECK_LIB([krb5], [krb5_init_context], - [KRB5_LIBS="-lkrb5" - LIBS="$KRB5_LIBS $LIBS" - _INN_LIB_KRB5_CHECK_HEADER_KRB5 - AC_CHECK_FUNCS([krb5_get_error_message], - [AC_CHECK_FUNCS([krb5_free_error_message])], - [AC_CHECK_FUNCS([krb5_get_error_string], [], - [AC_CHECK_FUNCS([krb5_get_err_txt], [], - [AC_CHECK_LIB([ksvc], [krb5_svc_get_msg], - [KRB5_LIBS="$KRB5_LIBS -lksvc" - AC_DEFINE([HAVE_KRB5_SVC_GET_MSG], [1]) - AC_CHECK_HEADERS([ibm_svc/krb5_svc.h], [], [], - [INN_INCLUDES_KRB5])], - [AC_CHECK_LIB([com_err], [com_err], - [KRB5_LIBS="$KRB5_LIBS -lcom_err"], - [AS_IF([test x"$1" = xtrue], - [AC_MSG_ERROR([cannot find usable com_err library])], - [KRB5_LIBS=""])]) - _INN_LIB_KRB5_CHECK_HEADER_COM_ERR])])])])], +[inn_krb5_header_found=false + _INN_LIB_KRB5_CHECK_HEADER_KRB5 + AS_IF([test x"$inn_krb5_header_found" = xtrue], + [INN_LIB_KRB5_SWITCH + AC_CHECK_LIB([krb5], [krb5_init_context], + [KRB5_LIBS="-lkrb5" + LIBS="$KRB5_LIBS $LIBS" + AC_CHECK_FUNCS([krb5_get_error_message], + [AC_CHECK_FUNCS([krb5_free_error_message])], + [AC_CHECK_FUNCS([krb5_get_error_string], [], + [AC_CHECK_FUNCS([krb5_get_err_txt], [], + [AC_CHECK_LIB([ksvc], [krb5_svc_get_msg], + [KRB5_LIBS="$KRB5_LIBS -lksvc" + AC_DEFINE([HAVE_KRB5_SVC_GET_MSG], [1]) + AC_CHECK_HEADERS([ibm_svc/krb5_svc.h], [], [], + [INN_INCLUDES_KRB5])], + [inn_krb5_header_found=false + _INN_LIB_KRB5_CHECK_HEADER_COM_ERR + AS_IF([test x"$inn_krb5_header_found" = xtrue], + [AC_CHECK_LIB([com_err], [com_err], + [KRB5_LIBS="$KRB5_LIBS -lcom_err"], + [AS_IF([test x"$1" = xtrue], + [AC_MSG_ERROR([cannot find usable com_err library])], + [KRB5_LIBS=""])])], + [AS_IF([test x"$1" = xtrue], + [AC_MSG_ERROR([cannot find usable com_err header])])])])])])])], + [AS_IF([test x"$1" = xtrue], + [AC_MSG_ERROR([cannot find usable Kerberos library])])])], [AS_IF([test x"$1" = xtrue], - [AC_MSG_ERROR([cannot find usable Kerberos library])])]) + [AC_MSG_ERROR([cannot find usable Kerberos header])])]) INN_LIB_KRB5_RESTORE]) dnl Does the appropriate library checks for Kerberos linkage when we don't dnl have krb5-config or reduced dependencies. The single argument, if true, dnl says to fail if Kerberos could not be found. AC_DEFUN([_INN_LIB_KRB5_MANUAL], -[INN_LIB_KRB5_SWITCH - inn_krb5_extra= - LIBS= - AC_SEARCH_LIBS([res_search], [resolv], [], - [AC_SEARCH_LIBS([__res_search], [resolv])]) - AC_SEARCH_LIBS([gethostbyname], [nsl]) - AC_SEARCH_LIBS([socket], [socket], [], - [AC_CHECK_LIB([nsl], [socket], [LIBS="-lnsl -lsocket $LIBS"], [], - [-lsocket])]) - AC_SEARCH_LIBS([crypt], [crypt]) - AC_SEARCH_LIBS([roken_concat], [roken]) - inn_krb5_extra="$LIBS" - LIBS="$inn_krb5_save_LIBS" - AC_CHECK_LIB([krb5], [krb5_init_context], - [KRB5_LIBS="-lkrb5 -lasn1 -lcom_err -lcrypto $inn_krb5_extra"], - [AC_CHECK_LIB([krb5support], [krb5int_getspecific], - [inn_krb5_extra="-lkrb5support $inn_krb5_extra"], - [AC_CHECK_LIB([pthreads], [pthread_setspecific], - [inn_krb5_pthread="-lpthreads"], - [AC_CHECK_LIB([pthread], [pthread_setspecific], - [inn_krb5_pthread="-lpthread"])]) - AC_CHECK_LIB([krb5support], [krb5int_setspecific], - [inn_krb5_extra="-lkrb5support $inn_krb5_extra $inn_krb5_pthread"], - [], [$inn_krb5_pthread $inn_krb5_extra])], - [$inn_krb5_extra]) - AC_CHECK_LIB([com_err], [error_message], - [inn_krb5_extra="-lcom_err $inn_krb5_extra"], [], [$inn_krb5_extra]) - AC_CHECK_LIB([ksvc], [krb5_svc_get_msg], - [inn_krb5_extra="-lksvc $inn_krb5_extra"], [], [$inn_krb5_extra]) - AC_CHECK_LIB([k5crypto], [krb5int_hash_md5], - [inn_krb5_extra="-lk5crypto $inn_krb5_extra"], [], [$inn_krb5_extra]) - AC_CHECK_LIB([k5profile], [profile_get_values], - [inn_krb5_extra="-lk5profile $inn_krb5_extra"], [], [$inn_krb5_extra]) - AC_CHECK_LIB([krb5], [krb5_cc_default], - [KRB5_LIBS="-lkrb5 $inn_krb5_extra"], - [AS_IF([test x"$1" = xtrue], - [AC_MSG_ERROR([cannot find usable Kerberos library])])], - [$inn_krb5_extra])], - [-lasn1 -lcom_err -lcrypto $inn_krb5_extra]) - LIBS="$KRB5_LIBS $LIBS" +[inn_krb5_header_found=false _INN_LIB_KRB5_CHECK_HEADER_KRB5 - AC_CHECK_FUNCS([krb5_get_error_message], - [AC_CHECK_FUNCS([krb5_free_error_message])], - [AC_CHECK_FUNCS([krb5_get_error_string], [], - [AC_CHECK_FUNCS([krb5_get_err_txt], [], - [AC_CHECK_FUNCS([krb5_svc_get_msg], - [AC_CHECK_HEADERS([ibm_svc/krb5_svc.h], [], [], - [INN_INCLUDES_KRB5])], - [_INN_LIB_KRB5_CHECK_HEADER_COM_ERR])])])]) + AS_IF([test x"$inn_krb5_header_found" = xtrue], + [INN_LIB_KRB5_SWITCH + inn_krb5_extra= + LIBS= + AC_SEARCH_LIBS([res_search], [resolv], [], + [AC_SEARCH_LIBS([__res_search], [resolv])]) + AC_SEARCH_LIBS([gethostbyname], [nsl]) + AC_SEARCH_LIBS([socket], [socket], [], + [AC_CHECK_LIB([nsl], [socket], [LIBS="-lnsl -lsocket $LIBS"], [], + [-lsocket])]) + AC_SEARCH_LIBS([crypt], [crypt]) + AC_SEARCH_LIBS([roken_concat], [roken]) + inn_krb5_extra="$LIBS" + LIBS="$inn_krb5_save_LIBS" + AC_CHECK_LIB([krb5], [krb5_init_context], + [KRB5_LIBS="-lkrb5 -lasn1 -lcom_err -lcrypto $inn_krb5_extra"], + [AC_CHECK_LIB([krb5support], [krb5int_getspecific], + [inn_krb5_extra="-lkrb5support $inn_krb5_extra"], + [AC_CHECK_LIB([pthreads], [pthread_setspecific], + [inn_krb5_pthread="-lpthreads"], + [AC_CHECK_LIB([pthread], [pthread_setspecific], + [inn_krb5_pthread="-lpthread"])]) + AC_CHECK_LIB([krb5support], [krb5int_setspecific], + [inn_krb5_extra="-lkrb5support $inn_krb5_extra $inn_krb5_pthread"], + [], [$inn_krb5_pthread $inn_krb5_extra])], + [$inn_krb5_extra]) + AC_CHECK_LIB([com_err], [error_message], + [inn_krb5_extra="-lcom_err $inn_krb5_extra"], [], [$inn_krb5_extra]) + AC_CHECK_LIB([ksvc], [krb5_svc_get_msg], + [inn_krb5_extra="-lksvc $inn_krb5_extra"], [], [$inn_krb5_extra]) + AC_CHECK_LIB([k5crypto], [krb5int_hash_md5], + [inn_krb5_extra="-lk5crypto $inn_krb5_extra"], [], [$inn_krb5_extra]) + AC_CHECK_LIB([k5profile], [profile_get_values], + [inn_krb5_extra="-lk5profile $inn_krb5_extra"], [], [$inn_krb5_extra]) + AC_CHECK_LIB([krb5], [krb5_cc_default], + [KRB5_LIBS="-lkrb5 $inn_krb5_extra"], + [AS_IF([test x"$1" = xtrue], + [AC_MSG_ERROR([cannot find usable Kerberos library])])], + [$inn_krb5_extra])], + [-lasn1 -lcom_err -lcrypto $inn_krb5_extra]) + LIBS="$KRB5_LIBS $LIBS" + AC_CHECK_FUNCS([krb5_get_error_message], + [AC_CHECK_FUNCS([krb5_free_error_message])], + [AC_CHECK_FUNCS([krb5_get_error_string], [], + [AC_CHECK_FUNCS([krb5_get_err_txt], [], + [AC_CHECK_FUNCS([krb5_svc_get_msg], + [AC_CHECK_HEADERS([ibm_svc/krb5_svc.h], [], [], + [INN_INCLUDES_KRB5])], + [inn_krb5_header_found=false + _INN_LIB_KRB5_CHECK_HEADER_COM_ERR + AS_IF([test x"$inn_krb5_header_found" != xtrue], + [AS_IF([test x"$1" = xtrue], + [AC_MSG_ERROR([cannot find usable com_err header])])])])])])])], + [AS_IF([test x"$1" = xtrue], + [AC_MSG_ERROR([cannot find usable Kerberos header])])]) INN_LIB_KRB5_RESTORE]) dnl Sanity-check the results of krb5-config and be sure we can really link a @@ -237,18 +255,26 @@ dnl additional probing we need to do to dnl falls back on the manual checks. AC_DEFUN([_INN_LIB_KRB5_CONFIG], [INN_KRB5_CONFIG([${inn_krb5_root}], [krb5], [KRB5], - [_INN_LIB_KRB5_CHECK([$1]) - INN_LIB_KRB5_SWITCH + [inn_krb5_header_found=false _INN_LIB_KRB5_CHECK_HEADER_KRB5 - AC_CHECK_FUNCS([krb5_get_error_message], - [AC_CHECK_FUNCS([krb5_free_error_message])], - [AC_CHECK_FUNCS([krb5_get_error_string], [], - [AC_CHECK_FUNCS([krb5_get_err_txt], [], - [AC_CHECK_FUNCS([krb5_svc_get_msg], - [AC_CHECK_HEADERS([ibm_svc/krb5_svc.h], [], [], - [INN_INCLUDES_KRB5])], - [_INN_LIB_KRB5_CHECK_HEADER_COM_ERR])])])]) - INN_LIB_KRB5_RESTORE], + AS_IF([test x"$inn_krb5_header_found" = xtrue], + [_INN_LIB_KRB5_CHECK([$1]) + INN_LIB_KRB5_SWITCH + AC_CHECK_FUNCS([krb5_get_error_message], + [AC_CHECK_FUNCS([krb5_free_error_message])], + [AC_CHECK_FUNCS([krb5_get_error_string], [], + [AC_CHECK_FUNCS([krb5_get_err_txt], [], + [AC_CHECK_FUNCS([krb5_svc_get_msg], + [AC_CHECK_HEADERS([ibm_svc/krb5_svc.h], [], [], + [INN_INCLUDES_KRB5])], + [inn_krb5_header_found=false + _INN_LIB_KRB5_CHECK_HEADER_COM_ERR + AS_IF([test x"$inn_krb5_header_found" != xtrue], + [AS_IF([test x"$1" = xtrue], + [AC_MSG_ERROR([cannot find usable com_err header])])])])])])]) + INN_LIB_KRB5_RESTORE], + [AS_IF([test x"$1" = xtrue], + [AC_MSG_ERROR([cannot find usable Kerberos header])])])], [_INN_LIB_KRB5_PATHS _INN_LIB_KRB5_MANUAL([$1])])]) @@ -260,7 +286,7 @@ AC_DEFUN([_INN_LIB_KRB5_INTERNAL], [AC_REQUIRE([INN_ENABLE_REDUCED_DEPENDS]) inn_krb5_incroot= AC_SUBST([KRB5_CPPFLAGS]) - AC_SUBST([KRB5_CPPFLAGS_GCC]) + AC_SUBST([KRB5_CPPFLAGS_WARNINGS]) AC_SUBST([KRB5_LDFLAGS]) AC_SUBST([KRB5_LIBS]) AS_IF([test x"$inn_krb5_includedir" != x], @@ -278,7 +304,7 @@ AC_DEFUN([_INN_LIB_KRB5_INTERNAL], AS_CASE([$KRB5_LIBS], [*-lcom_err*], [inn_krb5_uses_com_err=true]) AM_CONDITIONAL([KRB5_USES_COM_ERR], [test x"$inn_krb5_uses_com_err" = xtrue]) - KRB5_CPPFLAGS_GCC=`echo "$KRB5_CPPFLAGS" | sed -e 's/-I/-isystem /g'`]) + KRB5_CPPFLAGS_WARNINGS=`AS_ECHO(["$KRB5_CPPFLAGS"]) | sed -e 's/-I/-isystem /g'`]) dnl The main macro for packages with mandatory Kerberos support. AC_DEFUN([INN_LIB_KRB5], diff -Nurp inn-2.6.3/m4/lib-pathname.m4 inn-2.6.4/m4/lib-pathname.m4 --- inn-2.6.3/m4/lib-pathname.m4 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/m4/lib-pathname.m4 2021-01-21 13:53:07.000000000 -0800 @@ -1,5 +1,5 @@ dnl Determine the library path name. -dnl $Id: lib-pathname.m4 10246 2018-02-16 21:12:42Z iulius $ +dnl $Id: lib-pathname.m4 10520 2021-01-17 21:48:06Z iulius $ dnl dnl Red Hat systems and some other Linux systems use lib64 and lib32 rather dnl than just lib in some circumstances. This file provides an Autoconf @@ -54,7 +54,7 @@ AC_DEFUN([INN_SET_LDFLAGS], [AS_IF([test x"$3" = x], [$1="[$]$1 -L$2/lib"], [$1="[$]$1 -L$2/lib/$3"])]) - $1=`echo "[$]$1" | sed -e 's/^ *//'`]) + $1=`AS_ECHO(["[$]$1"]) | sed -e 's/^ *//'`]) dnl Set libdir to PREFIX/lib{,32,64} as appropriate. AC_DEFUN([INN_SET_LIBDIR], diff -Nurp inn-2.6.3/m4/libtool.m4 inn-2.6.4/m4/libtool.m4 --- inn-2.6.3/m4/libtool.m4 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/m4/libtool.m4 2021-01-21 13:53:07.000000000 -0800 @@ -1041,8 +1041,8 @@ int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD - echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD - $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD + echo "$AR cr libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD + $AR cr libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD cat > conftest.c << _LT_EOF @@ -1071,11 +1071,11 @@ _LT_EOF # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) + 10.0,*86*-darwin8*|10.0,*-darwin[[912]]*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; 10.[[012]][[,.]]*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - 10.*) + 10.*|11.*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; esac ;; @@ -1492,7 +1492,7 @@ need_locks=$enable_libtool_lock m4_defun([_LT_PROG_AR], [AC_CHECK_TOOLS(AR, [ar], false) : ${AR=ar} -: ${AR_FLAGS=cru} +: ${AR_FLAGS=cr} _LT_DECL([], [AR], [1], [The archiver]) _LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) @@ -4704,6 +4704,12 @@ m4_if([$1], [CXX], [ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; + # flang / f18. f95 an alias for gfortran or flang on Debian + flang* | f18* | f95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) diff -Nurp inn-2.6.3/m4/mmap.m4 inn-2.6.4/m4/mmap.m4 --- inn-2.6.3/m4/mmap.m4 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/m4/mmap.m4 2021-01-21 13:53:07.000000000 -0800 @@ -1,5 +1,5 @@ dnl mmap.m4 -- Probe for mmap properties. -dnl $Id: mmap.m4 8313 2009-01-31 21:08:29Z iulius $ +dnl $Id: mmap.m4 10397 2020-11-12 20:22:51Z iulius $ dnl dnl The mmap macro that comes with Autoconf doesn't do anything useful. dnl Define a new INN_FUNC_MMAP that probes for a working mmap that supports @@ -26,8 +26,12 @@ dnl Source used by INN_FUNC_MMAP. define([_INN_FUNC_MMAP_SOURCE], [AC_LANG_SOURCE([[ #include -#include #include +#include +#include +#if HAVE_UNISTD_H +# include +#endif int main() @@ -87,10 +91,14 @@ AC_DEFUN([INN_FUNC_MMAP], dnl Source used by INN_FUNC_MMAP_NEEDS_MSYNC. define([_INN_FUNC_MMAP_NEEDS_MSYNC_SOURCE], [AC_LANG_SOURCE([[ -#include #include -#include #include +#include +#include +#include +#if HAVE_UNISTD_H +# include +#endif int main() diff -Nurp inn-2.6.3/m4/modes.m4 inn-2.6.4/m4/modes.m4 --- inn-2.6.3/m4/modes.m4 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/m4/modes.m4 2021-01-21 13:53:07.000000000 -0800 @@ -1,5 +1,5 @@ dnl modes.m4 -- Setting file and installation modes. -dnl $Id: modes.m4 8495 2009-05-24 12:28:19Z iulius $ +dnl $Id: modes.m4 10520 2021-01-17 21:48:06Z iulius $ dnl dnl INN defaults to a umask of 002 for historical reasons, but offers an dnl option to change them. It also has some programs that are occasionally @@ -16,7 +16,7 @@ DIRMODE=0775 RUNDIRMODE=0770 AC_ARG_WITH([news-umask], [AS_HELP_STRING([--with-news-umask=UMASK], [umask for news files [002]])], - with_news_umask=`echo "$with_news_umask" | sed 's/^0*//'` + with_news_umask=`AS_ECHO(["$with_news_umask"]) | sed 's/^0*//'` if test "x$with_news_umask" = x22 ; then NEWSUMASK=022 FILEMODE=0644 diff -Nurp inn-2.6.3/m4/pam-const.m4 inn-2.6.4/m4/pam-const.m4 --- inn-2.6.3/m4/pam-const.m4 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/m4/pam-const.m4 2021-01-21 13:53:07.000000000 -0800 @@ -1,12 +1,12 @@ dnl Determine whether PAM uses const in prototypes. -dnl $Id: pam-const.m4 10246 2018-02-16 21:12:42Z iulius $ +dnl $Id: pam-const.m4 10450 2020-12-09 21:55:08Z iulius $ dnl dnl Linux marks several PAM arguments const, including the argument to dnl pam_get_item and some arguments to conversation functions, which Solaris -dnl doesn't. Mac OS X marks the first argument to pam_strerror const, and -dnl other platforms don't. This test tries to determine which style is in use -dnl to select whether to declare variables const and how to prototype -dnl functions in order to avoid compiler warnings. +dnl doesn't. Mac OS X, OS X and macOS mark the first argument to pam_strerror +dnl const, and other platforms don't. This test tries to determine which +dnl style is in use to select whether to declare variables const and how +dnl to prototype functions in order to avoid compiler warnings. dnl dnl Since this is just for compiler warnings, it's not horribly important if dnl we guess wrong. This test is ugly, but it seems to work. diff -Nurp inn-2.6.3/m4/perl.m4 inn-2.6.4/m4/perl.m4 --- inn-2.6.3/m4/perl.m4 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/m4/perl.m4 2021-01-21 13:53:07.000000000 -0800 @@ -1,5 +1,5 @@ dnl Probe for Perl properties and, optionally, flags for embedding Perl. -dnl $Id: perl.m4 10307 2018-12-02 14:31:42Z iulius $ +dnl $Id: perl.m4 10520 2021-01-17 21:48:06Z iulius $ dnl dnl Provides the following macros: dnl @@ -93,16 +93,16 @@ AC_DEFUN([INN_LIB_PERL], inn_perl_core_flags=`"$PERL" -MExtUtils::Embed -e ccopts` inn_perl_core_libs=`"$PERL" -MExtUtils::Embed -e ldopts 2>&1 | tail -n 1` inn_perl_core_libs=" $inn_perl_core_libs " - inn_perl_core_libs=`echo "$inn_perl_core_libs" | sed 's/ -lc / /'` + inn_perl_core_libs=`AS_ECHO(["$inn_perl_core_libs"]) | sed 's/ -lc / /'` AS_CASE([$host], [*-linux*], - [inn_perl_core_libs=`echo "$inn_perl_core_libs" | sed 's/ -lgdbm / /'`], + [inn_perl_core_libs=`AS_ECHO(["$inn_perl_core_libs"]) | sed 's/ -lgdbm / /'`], [*-cygwin*], [inn_perl_libname=`"$PERL" -MConfig -e 'print $Config{libperl}'` - inn_perl_libname=`echo "$inn_perl_libname" | sed 's/^lib//; s/\.a$//'` + inn_perl_libname=`AS_ECHO(["$inn_perl_libname"]) | sed 's/^lib//; s/\.a$//'` inn_perl_core_libs="${inn_perl_core_libs}-l$inn_perl_libname"]) - inn_perl_core_libs=`echo "$inn_perl_core_libs" | sed 's/^ *//'` - inn_perl_core_libs=`echo "$inn_perl_core_libs" | sed 's/ *$//'` + inn_perl_core_libs=`AS_ECHO(["$inn_perl_core_libs"]) | sed 's/^ *//'` + inn_perl_core_libs=`AS_ECHO(["$inn_perl_core_libs"]) | sed 's/ *$//'` PERL_CPPFLAGS="$inn_perl_core_flags" PERL_LIBS="$inn_perl_core_libs" AC_MSG_RESULT([$PERL_LIBS]) diff -Nurp inn-2.6.3/m4/pkg.m4 inn-2.6.4/m4/pkg.m4 --- inn-2.6.3/m4/pkg.m4 1969-12-31 16:00:00.000000000 -0800 +++ inn-2.6.4/m4/pkg.m4 2021-01-21 13:53:07.000000000 -0800 @@ -0,0 +1,275 @@ +# pkg.m4 - Macros to locate and use pkg-config. -*- Autoconf -*- +# serial 12 (pkg-config-0.29.2) + +dnl Copyright © 2004 Scott James Remnant . +dnl Copyright © 2012-2015 Dan Nicholson +dnl +dnl This program is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation; either version 2 of the License, or +dnl (at your option) any later version. +dnl +dnl This program is distributed in the hope that it will be useful, but +dnl WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +dnl General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License +dnl along with this program; if not, write to the Free Software +dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +dnl 02111-1307, USA. +dnl +dnl As a special exception to the GNU General Public License, if you +dnl distribute this file as part of a program that contains a +dnl configuration script generated by Autoconf, you may include it under +dnl the same distribution terms that you use for the rest of that +dnl program. + +dnl PKG_PREREQ(MIN-VERSION) +dnl ----------------------- +dnl Since: 0.29 +dnl +dnl Verify that the version of the pkg-config macros are at least +dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's +dnl installed version of pkg-config, this checks the developer's version +dnl of pkg.m4 when generating configure. +dnl +dnl To ensure that this macro is defined, also add: +dnl m4_ifndef([PKG_PREREQ], +dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])]) +dnl +dnl See the "Since" comment for each macro you use to see what version +dnl of the macros you require. +m4_defun([PKG_PREREQ], +[m4_define([PKG_MACROS_VERSION], [0.29.2]) +m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, + [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) +])dnl PKG_PREREQ + +dnl PKG_PROG_PKG_CONFIG([MIN-VERSION]) +dnl ---------------------------------- +dnl Since: 0.16 +dnl +dnl Search for the pkg-config tool and set the PKG_CONFIG variable to +dnl first found in the path. Checks that the version of pkg-config found +dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is +dnl used since that's the first version where most current features of +dnl pkg-config existed. +AC_DEFUN([PKG_PROG_PKG_CONFIG], +[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) +m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) +AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) +AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) +AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=m4_default([$1], [0.9.0]) + AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + PKG_CONFIG="" + fi +fi[]dnl +])dnl PKG_PROG_PKG_CONFIG + +dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +dnl ------------------------------------------------------------------- +dnl Since: 0.18 +dnl +dnl Check to see whether a particular set of modules exists. Similar to +dnl PKG_CHECK_MODULES(), but does not set variables or print errors. +dnl +dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +dnl only at the first occurrence in configure.ac, so if the first place +dnl it's called might be skipped (such as if it is within an "if", you +dnl have to call PKG_CHECK_EXISTS manually +AC_DEFUN([PKG_CHECK_EXISTS], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +if test -n "$PKG_CONFIG" && \ + AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then + m4_default([$2], [:]) +m4_ifvaln([$3], [else + $3])dnl +fi]) + +dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) +dnl --------------------------------------------- +dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting +dnl pkg_failed based on the result. +m4_define([_PKG_CONFIG], +[if test -n "$$1"; then + pkg_cv_[]$1="$$1" + elif test -n "$PKG_CONFIG"; then + PKG_CHECK_EXISTS([$3], + [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes ], + [pkg_failed=yes]) + else + pkg_failed=untried +fi[]dnl +])dnl _PKG_CONFIG + +dnl _PKG_SHORT_ERRORS_SUPPORTED +dnl --------------------------- +dnl Internal check to see if pkg-config supports short errors. +AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi[]dnl +])dnl _PKG_SHORT_ERRORS_SUPPORTED + + +dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +dnl [ACTION-IF-NOT-FOUND]) +dnl -------------------------------------------------------------- +dnl Since: 0.4.0 +dnl +dnl Note that if there is a possibility the first call to +dnl PKG_CHECK_MODULES might not happen, you should be sure to include an +dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac +AC_DEFUN([PKG_CHECK_MODULES], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl +AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl + +pkg_failed=no +AC_MSG_CHECKING([for $2]) + +_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) +_PKG_CONFIG([$1][_LIBS], [libs], [$2]) + +m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS +and $1[]_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details.]) + +if test $pkg_failed = yes; then + AC_MSG_RESULT([no]) + _PKG_SHORT_ERRORS_SUPPORTED + if test $_pkg_short_errors_supported = yes; then + $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` + else + $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD + + m4_default([$4], [AC_MSG_ERROR( +[Package requirements ($2) were not met: + +$$1_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +_PKG_TEXT])[]dnl + ]) +elif test $pkg_failed = untried; then + AC_MSG_RESULT([no]) + m4_default([$4], [AC_MSG_FAILURE( +[The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +_PKG_TEXT + +To get pkg-config, see .])[]dnl + ]) +else + $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS + $1[]_LIBS=$pkg_cv_[]$1[]_LIBS + AC_MSG_RESULT([yes]) + $3 +fi[]dnl +])dnl PKG_CHECK_MODULES + + +dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +dnl [ACTION-IF-NOT-FOUND]) +dnl --------------------------------------------------------------------- +dnl Since: 0.29 +dnl +dnl Checks for existence of MODULES and gathers its build flags with +dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags +dnl and VARIABLE-PREFIX_LIBS from --libs. +dnl +dnl Note that if there is a possibility the first call to +dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to +dnl include an explicit call to PKG_PROG_PKG_CONFIG in your +dnl configure.ac. +AC_DEFUN([PKG_CHECK_MODULES_STATIC], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +_save_PKG_CONFIG=$PKG_CONFIG +PKG_CONFIG="$PKG_CONFIG --static" +PKG_CHECK_MODULES($@) +PKG_CONFIG=$_save_PKG_CONFIG[]dnl +])dnl PKG_CHECK_MODULES_STATIC + + +dnl PKG_INSTALLDIR([DIRECTORY]) +dnl ------------------------- +dnl Since: 0.27 +dnl +dnl Substitutes the variable pkgconfigdir as the location where a module +dnl should install pkg-config .pc files. By default the directory is +dnl $libdir/pkgconfig, but the default can be changed by passing +dnl DIRECTORY. The user can override through the --with-pkgconfigdir +dnl parameter. +AC_DEFUN([PKG_INSTALLDIR], +[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([pkgconfigdir], + [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, + [with_pkgconfigdir=]pkg_default) +AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +])dnl PKG_INSTALLDIR + + +dnl PKG_NOARCH_INSTALLDIR([DIRECTORY]) +dnl -------------------------------- +dnl Since: 0.27 +dnl +dnl Substitutes the variable noarch_pkgconfigdir as the location where a +dnl module should install arch-independent pkg-config .pc files. By +dnl default the directory is $datadir/pkgconfig, but the default can be +dnl changed by passing DIRECTORY. The user can override through the +dnl --with-noarch-pkgconfigdir parameter. +AC_DEFUN([PKG_NOARCH_INSTALLDIR], +[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([noarch-pkgconfigdir], + [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, + [with_noarch_pkgconfigdir=]pkg_default) +AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +])dnl PKG_NOARCH_INSTALLDIR + + +dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, +dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +dnl ------------------------------------------- +dnl Since: 0.28 +dnl +dnl Retrieves the value of the pkg-config variable for the given module. +AC_DEFUN([PKG_CHECK_VAR], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl + +_PKG_CONFIG([$1], [variable="][$3]["], [$2]) +AS_VAR_COPY([$1], [pkg_cv_][$1]) + +AS_VAR_IF([$1], [""], [$5], [$4])dnl +])dnl PKG_CHECK_VAR diff -Nurp inn-2.6.3/m4/python.m4 inn-2.6.4/m4/python.m4 --- inn-2.6.3/m4/python.m4 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/m4/python.m4 2021-01-21 13:53:07.000000000 -0800 @@ -1,5 +1,5 @@ dnl Probe for Python properties and, optionally, flags for embedding Python. -dnl $Id: python.m4 10307 2018-12-02 14:31:42Z iulius $ +dnl $Id: python.m4 10521 2021-01-17 21:48:51Z iulius $ dnl dnl Provides the following macros: dnl @@ -59,13 +59,13 @@ AC_DEFUN([_INN_PROG_PYTHON_CMD], [[ import sys two_okay = False three_okay = False -if sys.argv[1]: - two_tuple = tuple(int(i) for i in sys.argv[1].split(".")) - if sys.version_info.major == 2 and sys.version_info >= two_tuple: +if len(sys.argv) > 1 and sys.argv[1]: + two_tuple = tuple(map(int, sys.argv[1].split("."))) + if sys.version_info[0] == 2 and sys.version_info >= two_tuple: two_okay = True -if sys.argv[2]: - three_tuple = tuple(int(i) for i in sys.argv[2].split(".")) - if sys.version_info.major > 2 and sys.version_info >= three_tuple: +if len(sys.argv) > 2 and sys.argv[2]: + three_tuple = tuple(map(int, sys.argv[2].split("."))) + if sys.version_info[0] > 2 and sys.version_info >= three_tuple: three_okay = True assert(two_okay or three_okay) ]]) @@ -129,9 +129,9 @@ AC_DEFUN([INN_LIB_PYTHON], print(" ".join(distutils.sysconfig.get_config_vars( \ "LIBS", "LIBC", "LIBM", "LOCALMODLIBS", "BASEMODLIBS", \ "LINKFORSHARED", "LDFLAGS")))'` - py_libpython=`echo $py_ldlibrary | sed "s/^lib//" | sed "s/\.@<:@a-z@:>@*$//"` + py_libpython=`AS_ECHO(["$py_ldlibrary"]) | sed "s/^lib//" | sed "s/\.@<:@a-z@:>@*$//"` PYTHON_LIBS="-L$py_libdir -l$py_libpython $py_linkage" - PYTHON_LIBS=`echo $PYTHON_LIBS | sed -e 's/[ \\t]*/ /g'` + PYTHON_LIBS=`AS_ECHO(["$PYTHON_LIBS"]) | sed -e 's/[ \\t]*/ /g'` AC_MSG_RESULT([$PYTHON_LIBS]) inn_python_save_CPPFLAGS="$CPPFLAGS" inn_python_save_LIBS="$LIBS" diff -Nurp inn-2.6.3/m4/snprintf.m4 inn-2.6.4/m4/snprintf.m4 --- inn-2.6.3/m4/snprintf.m4 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/m4/snprintf.m4 2021-01-21 13:53:07.000000000 -0800 @@ -1,5 +1,5 @@ dnl Test for a working C99 snprintf. -dnl $Id: snprintf.m4 10246 2018-02-16 21:12:42Z iulius $ +dnl $Id: snprintf.m4 10396 2020-11-12 20:19:41Z iulius $ dnl dnl Check for a working snprintf. Some systems have an snprintf that doesn't dnl nul-terminate if the buffer isn't large enough. Others return -1 if the @@ -10,8 +10,9 @@ dnl dnl Provides INN_FUNC_SNPRINTF, which adds snprintf.o to LIBOBJS unless a dnl fully working snprintf is found. dnl -dnl The canonical version of this file is maintained in the rra-c-util -dnl package, available at . +dnl The canonical version of this file was maintained (until 2020) in the +dnl rra-c-util package, available at +dnl . dnl dnl Written by Russ Allbery dnl Copyright 2006, 2008-2009 diff -Nurp inn-2.6.3/m4/socket.m4 inn-2.6.4/m4/socket.m4 --- inn-2.6.3/m4/socket.m4 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/m4/socket.m4 2021-01-21 13:53:07.000000000 -0800 @@ -1,5 +1,5 @@ dnl Various checks for socket support and macros. -dnl $Id: socket.m4 10246 2018-02-16 21:12:42Z iulius $ +dnl $Id: socket.m4 10397 2020-11-12 20:22:51Z iulius $ dnl dnl This is a collection of various Autoconf macros for checking networking dnl and socket properties. The macros provided are: @@ -12,7 +12,7 @@ dnl dnl The canonical version of this file is maintained in the rra-c-util dnl package, available at . dnl -dnl Copyright 2017 Russ Allbery +dnl Copyright 2017, 2020 Russ Allbery dnl Copyright 2008-2009, 2011 dnl The Board of Trustees of the Leland Stanford Junior University dnl Copyright 2004-2009 Internet Systems Consortium, Inc. ("ISC") @@ -39,6 +39,7 @@ dnl Source used by INN_FUNC_GETADDRINFO_ AC_DEFUN([_INN_FUNC_GETADDRINFO_ADDRCONFIG_SOURCE], [[ #include #include +#include #include #include diff -Nurp inn-2.6.3/m4/systemd.m4 inn-2.6.4/m4/systemd.m4 --- inn-2.6.3/m4/systemd.m4 1969-12-31 16:00:00.000000000 -0800 +++ inn-2.6.4/m4/systemd.m4 2021-01-21 13:53:07.000000000 -0800 @@ -0,0 +1,58 @@ +dnl Probe for systemd libraries and installation paths. +dnl $Id: systemd.m4 10484 2021-01-04 07:12:59Z iulius $ +dnl +dnl Provides the INN_WITH_SYSTEMD_UNITDIR macro, which adds the +dnl --with-systemdsystemunitdir configure flag, sets the systemdsystemunitdir +dnl substitution variable, and provides the HAVE_SYSTEMD Automake conditional +dnl to use to control whether to install unit files. +dnl +dnl Provides the INN_LIB_SYSTEMD_DAEMON_OPTIONAL macro, which sets +dnl SYSTEMD_CFLAGS and SYSTEMD_LIBS substitution variables if +dnl libsystemd-daemon is available and defines HAVE_SD_NOTIFY. pkg-config +dnl support for libsystemd-daemon is required for it to be detected. +dnl +dnl Depends on the Autoconf macros that come with pkg-config. +dnl +dnl The canonical version of this file is maintained in the rra-c-util +dnl package, available at . +dnl +dnl Written by Russ Allbery +dnl Copyright 2015 Russ Allbery +dnl Copyright 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 Determine the systemd system unit directory, along with a configure flag +dnl to override, and sets @systemdsystemunitdir@. Provides the Automake +dnl HAVE_SYSTEMD Automake conditional. +AC_DEFUN([INN_WITH_SYSTEMD_UNITDIR], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) + AS_IF([test x"$PKG_CONFIG" = x], [PKG_CONFIG=false]) + AC_ARG_WITH([systemdsystemunitdir], + [AS_HELP_STRING([--with-systemdsystemunitdir=DIR], + [Directory for systemd service files])], + [], + [with_systemdsystemunitdir=`$PKG_CONFIG --variable=systemdsystemunitdir systemd`]) + AS_IF([test x"$with_systemdsystemunitdir" != xno], + [AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])]) + AM_CONDITIONAL([HAVE_SYSTEMD], + [test -n "$with_systemdsystemunitdir" -a x"$with_systemdsystemunitdir" != xno])]) + +dnl Check for libsystemd or libsystemd-daemon and define SYSTEMD_{CFLAGS,LIBS} +dnl if it is available. This is called INN_LIB_SYSTEMD_DAEMON_OPTIONAL since +dnl it was originally written when libsystemd-daemon was separate, and only +dnl checks for that library. It may eventually make sense to retire this in +dnl favor of a simple INN_LIB_SYSTEMD_OPTIONAL that isn't backward-compatible. +AC_DEFUN([INN_LIB_SYSTEMD_DAEMON_OPTIONAL], +[PKG_CHECK_EXISTS([libsystemd], + [PKG_CHECK_MODULES([SYSTEMD], [libsystemd]) + AC_DEFINE([HAVE_SD_NOTIFY], 1, [Define if sd_notify is available.])], + [PKG_CHECK_EXISTS([libsystemd-daemon], + [PKG_CHECK_MODULES([SYSTEMD], [libsystemd-daemon]) + AC_DEFINE([HAVE_SD_NOTIFY], 1, + [Define if sd_notify is available.])])])]) diff -Nurp inn-2.6.3/nnrpd/auth-ext.c inn-2.6.4/nnrpd/auth-ext.c --- inn-2.6.3/nnrpd/auth-ext.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/nnrpd/auth-ext.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: auth-ext.c 10179 2017-09-18 20:13:48Z iulius $ +/* $Id: auth-ext.c 10467 2020-12-24 22:33:03Z eagle $ ** ** External authenticator support. ** @@ -134,8 +134,10 @@ output(struct client *client, int fd, st count = buffer_read(buffer, fd); if (buffer->left >= buffer->size - 1) return -1; - if (count < 0) + if (count < 0) { + syswarn("%s auth: read error", client->host); return count; + } /* If reached end of file, process anything left as a line. */ if (count == 0) { @@ -185,7 +187,8 @@ handle_output(struct client *client, str struct buffer *readbuf; struct buffer *errorbuf; double start, end; - bool found; + bool done; + bool error_done = false; bool killed = false; bool errored = false; char *user = NULL; @@ -209,6 +212,8 @@ handle_output(struct client *client, str status = select(maxfd + 1, &rfds, NULL, NULL, &tv); end = TMRnow_double(); IDLEtime += end - start; + + /* Check for select timeout or errors. */ if (status <= 0) { if (status == 0) syswarn("%s auth: program timeout", client->host); @@ -221,23 +226,31 @@ handle_output(struct client *client, str kill(process->pid, SIGTERM); break; } - found = false; + + /* Read from the read and error file descriptors. If we see EOF or an + * error from the read file descriptor, we're done. If we see EOF or + * an error from the error file descriptor, remove it from the set but + * continue waiting for output from the read file descriptor .*/ + done = false; count = 0; if (FD_ISSET(process->read_fd, &rfds)) { fd = process->read_fd; count = output(client, fd, readbuf, handle_result, &user); - if (count > 0) - found = true; + if (count <= 0) + done = true; } - if (count >= 0 && FD_ISSET(process->error_fd, &rfds)) { + if (!error_done && FD_ISSET(process->error_fd, &rfds)) { fd = process->error_fd; count = output(client, fd, errorbuf, handle_error, &user); - if (count > 0) { - found = true; - errored = true; + if (count <= 0) { + error_done = true; + FD_CLR(fd, &fds); + maxfd = process->read_fd; } + if (count > 0) + errored = true; } - if (!found) { + if (done) { close(process->read_fd); close(process->error_fd); if (count < 0) { @@ -259,6 +272,9 @@ handle_output(struct client *client, str syswarn("%s auth: cannot wait for program", client->host); goto fail; } + + /* Check the exit status and fall through to fail if the external + * authentication program didn't exit successfully. */ if (WIFEXITED(status) && WEXITSTATUS(status) == 0) return user; else { @@ -331,6 +347,8 @@ auth_external(struct client *client, con /* Get the results. */ user = handle_output(client, process); + close(process->read_fd); + close(process->error_fd); free(process); return user; } diff -Nurp inn-2.6.3/nnrpd/commands.c inn-2.6.4/nnrpd/commands.c --- inn-2.6.3/nnrpd/commands.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/nnrpd/commands.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: commands.c 10149 2017-06-05 12:24:58Z iulius $ +/* $Id: commands.c 10342 2019-05-30 14:18:48Z iulius $ ** ** Miscellaneous commands. */ @@ -241,7 +241,9 @@ PERMgeneric(char *av[], char *accesslist PERMaccessconf->locpost = strchr(fields[1], 'L') != NULL; PERMaccessconf->allowihave = strchr(fields[1], 'I') != NULL; PERMaccessconf->allownewnews = strchr(fields[1], 'N') != NULL; - snprintf(PERMuser, sizeof(PERMuser), "%s@%s", fields[2], fields[0]); + strlcpy(PERMuser, fields[2], sizeof(PERMuser)); + strlcat(PERMuser, "@", sizeof(PERMuser)); + strlcat(PERMuser, fields[0], sizeof(PERMuser)); //strlcpy(PERMpass, fields[3], sizeof(PERMpass)); strlcpy(accesslist, fields[4], size); diff -Nurp inn-2.6.3/nnrpd/post.c inn-2.6.4/nnrpd/post.c --- inn-2.6.3/nnrpd/post.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/nnrpd/post.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: post.c 10305 2018-12-02 14:21:56Z iulius $ +/* $Id: post.c 10477 2020-12-31 22:46:07Z eagle $ ** ** Check article, send it to the local server. */ @@ -348,6 +348,7 @@ ProcessHeaders(char *idbuff, bool needmo static char *newpath = NULL; HEADER *hp; char *p; + char *bad_header; char *fqdn = NULL; time_t t, now; const char *error; @@ -645,9 +646,16 @@ ProcessHeaders(char *idbuff, bool needmo /* Check that all other header fields are valid. */ for (i = 0; i < OtherCount; i++) { if (!IsValidHeaderField(OtherHeaders[i])) { + p = strchr(OtherHeaders[i], ':'); + if (p == NULL || p == OtherHeaders[i]) + bad_header = xstrdup(OtherHeaders[i]); + else + bad_header = xstrndup(OtherHeaders[i], p - OtherHeaders[i]); snprintf(Error, sizeof(Error), - "Invalid syntax encountered in headers (unexpected " - "byte, no colon-space, or empty content line)"); + "Invalid syntax encountered in header (unexpected " + "byte, no colon-space, or empty content line): %s", + bad_header); + free(bad_header); return Error; } } diff -Nurp inn-2.6.3/nnrpd/python.c inn-2.6.4/nnrpd/python.c --- inn-2.6.3/nnrpd/python.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/nnrpd/python.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: python.c 10313 2018-12-17 08:46:18Z iulius $ +/* $Id: python.c 10447 2020-12-09 21:19:29Z iulius $ ** ** python.c: Embed Python in the style of nnrpd's Perl stuff ** (authentication, authorization and dynamic hooks @@ -392,12 +392,16 @@ PY_access(char* file, struct vector *acc /* ** Initialize dynamic access control code. */ - void PY_dynamic_init (char* file) { - dynamic_file = xstrdup(file); - PY_use_dynamic = true; + if (!access(file, R_OK)) { + syslog(L_NOTICE, "pyfilter %s not installed", file); + return; + } + + dynamic_file = xstrdup(file); + PY_use_dynamic = true; } diff -Nurp inn-2.6.3/nnrpd/tls.c inn-2.6.4/nnrpd/tls.c --- inn-2.6.3/nnrpd/tls.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/nnrpd/tls.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: tls.c 10309 2018-12-02 14:35:10Z iulius $ +/* $Id: tls.c 10348 2019-09-17 19:01:33Z iulius $ ** ** tls.c -- TLS functions. ** Copyright (C) 2000 Kenichi Okada . @@ -95,47 +95,60 @@ apps_ssl_info_callback(const SSL *s, int /* -** Hardcoded DH parameter files, from OpenSSL. -** For information on how these files were generated, see -** "Assigned Number for SKIP Protocols" -** . +** Hardcoded DH parameter files. +** These are pre-defined DH groups recommended by RFC 7919 (Appendix A), +** that have been audited and therefore supposed to be more +** resistant to attacks than ones randomly generated. */ -static const char file_dh512[] = +static const char file_ffdhe2048[] = \ "-----BEGIN DH PARAMETERS-----\n\ -MEYCQQD1Kv884bEpQBgRjXyEpwpy1obEAxnIByl6ypUM2Zafq9AKUJsCRtMIPWak\n\ -XUGfnHy9iUsiGSa6q6Jew1XpKgVfAgEC\n\ +MIIBCAKCAQEA//////////+t+FRYortKmq/cViAnPTzx2LnFg84tNpWp4TZBFGQz\n\ ++8yTnc4kmz75fS/jY2MMddj2gbICrsRhetPfHtXV/WVhJDP1H18GbtCFY2VVPe0a\n\ +87VXE15/V8k1mE8McODmi3fipona8+/och3xWKE2rec1MKzKT0g6eXq8CrGCsyT7\n\ +YdEIqUuyyOP7uWrat2DX9GgdT0Kj3jlN9K5W7edjcrsZCwenyO4KbXCeAvzhzffi\n\ +7MA0BM0oNC9hkXL+nOmFg/+OTxIy7vKBg8P+OxtMb61zO7X8vC7CIAXFjvGDfRaD\n\ +ssbzSibBsu/6iGtCOGEoXJf//////////wIBAg==\n\ -----END DH PARAMETERS-----\n"; -static const char file_dh1024[] = +static const char file_ffdhe4096[] = \ "-----BEGIN DH PARAMETERS-----\n\ -MIGHAoGBAPSI/VhOSdvNILSd5JEHNmszbDgNRR0PfIizHHxbLY7288kjwEPwpVsY\n\ -jY67VYy4XTjTNP18F1dDox0YbN4zISy1Kv884bEpQBgRjXyEpwpy1obEAxnIByl6\n\ -ypUM2Zafq9AKUJsCRtMIPWakXUGfnHy9iUsiGSa6q6Jew1XpL3jHAgEC\n\ +MIICCAKCAgEA//////////+t+FRYortKmq/cViAnPTzx2LnFg84tNpWp4TZBFGQz\n\ ++8yTnc4kmz75fS/jY2MMddj2gbICrsRhetPfHtXV/WVhJDP1H18GbtCFY2VVPe0a\n\ +87VXE15/V8k1mE8McODmi3fipona8+/och3xWKE2rec1MKzKT0g6eXq8CrGCsyT7\n\ +YdEIqUuyyOP7uWrat2DX9GgdT0Kj3jlN9K5W7edjcrsZCwenyO4KbXCeAvzhzffi\n\ +7MA0BM0oNC9hkXL+nOmFg/+OTxIy7vKBg8P+OxtMb61zO7X8vC7CIAXFjvGDfRaD\n\ +ssbzSibBsu/6iGtCOGEfz9zeNVs7ZRkDW7w09N75nAI4YbRvydbmyQd62R0mkff3\n\ +7lmMsPrBhtkcrv4TCYUTknC0EwyTvEN5RPT9RFLi103TZPLiHnH1S/9croKrnJ32\n\ +nuhtK8UiNjoNq8Uhl5sN6todv5pC1cRITgq80Gv6U93vPBsg7j/VnXwl5B0rZp4e\n\ +8W5vUsMWTfT7eTDp5OWIV7asfV9C1p9tGHdjzx1VA0AEh/VbpX4xzHpxNciG77Qx\n\ +iu1qHgEtnmgyqQdgCpGBMMRtx3j5ca0AOAkpmaMzy4t6Gh25PXFAADwqTs6p+Y0K\n\ +zAqCkc3OyX3Pjsm1Wn+IpGtNtahR9EGC4caKAH5eZV9q//////////8CAQI=\n\ -----END DH PARAMETERS-----\n"; -static const char file_dh2048[] = +static const char file_ffdhe8192[] = \ "-----BEGIN DH PARAMETERS-----\n\ -MIIBCAKCAQEA9kJXtwh/CBdyorrWqULzBej5UxE5T7bxbrlLOCDaAadWoxTpj0BV\n\ -89AHxstDqZSt90xkhkn4DIO9ZekX1KHTUPj1WV/cdlJPPT2N286Z4VeSWc39uK50\n\ -T8X8dryDxUcwYc58yWb/Ffm7/ZFexwGq01uejaClcjrUGvC/RgBYK+X0iP1YTknb\n\ -zSC0neSRBzZrM2w4DUUdD3yIsxx8Wy2O9vPJI8BD8KVbGI2Ou1WMuF040zT9fBdX\n\ -Q6MdGGzeMyEstSr/POGxKUAYEY18hKcKctaGxAMZyAcpesqVDNmWn6vQClCbAkbT\n\ -CD1mpF1Bn5x8vYlLIhkmuquiXsNV6TILOwIBAg==\n\ ------END DH PARAMETERS-----\n"; - -static const char file_dh4096[] = -"-----BEGIN DH PARAMETERS-----\n\ -MIICCAKCAgEA+hRyUsFN4VpJ1O8JLcCo/VWr19k3BCgJ4uk+d+KhehjdRqNDNyOQ\n\ -l/MOyQNQfWXPeGKmOmIig6Ev/nm6Nf9Z2B1h3R4hExf+zTiHnvVPeRBhjdQi81rt\n\ -Xeoh6TNrSBIKIHfUJWBh3va0TxxjQIs6IZOLeVNRLMqzeylWqMf49HsIXqbcokUS\n\ -Vt1BkvLdW48j8PPv5DsKRN3tloTxqDJGo9tKvj1Fuk74A+Xda1kNhB7KFlqMyN98\n\ -VETEJ6c7KpfOo30mnK30wqw3S8OtaIR/maYX72tGOno2ehFDkq3pnPtEbD2CScxc\n\ -alJC+EL7RPk5c/tgeTvCngvc1KZn92Y//EI7G9tPZtylj2b56sHtMftIoYJ9+ODM\n\ -sccD5Piz/rejE3Ome8EOOceUSCYAhXn8b3qvxVI1ddd1pED6FHRhFvLrZxFvBEM9\n\ -ERRMp5QqOaHJkM+Dxv8Cj6MqrCbfC4u+ZErxodzuusgDgvZiLF22uxMZbobFWyte\n\ -OvOzKGtwcTqO/1wV5gKkzu1ZVswVUQd5Gg8lJicwqRWyyNRczDDoG9jVDxmogKTH\n\ -AaqLulO7R8Ifa1SwF2DteSGVtgWEN8gDpN3RBmmPTDngyF2DHb5qmpnznwtFKdTL\n\ -KWbuHn491xNO25CQWMtem80uKw+pTnisBRF/454n1Jnhub144YRBoN8CAQI=\n\ +MIIECAKCBAEA//////////+t+FRYortKmq/cViAnPTzx2LnFg84tNpWp4TZBFGQz\n\ ++8yTnc4kmz75fS/jY2MMddj2gbICrsRhetPfHtXV/WVhJDP1H18GbtCFY2VVPe0a\n\ +87VXE15/V8k1mE8McODmi3fipona8+/och3xWKE2rec1MKzKT0g6eXq8CrGCsyT7\n\ +YdEIqUuyyOP7uWrat2DX9GgdT0Kj3jlN9K5W7edjcrsZCwenyO4KbXCeAvzhzffi\n\ +7MA0BM0oNC9hkXL+nOmFg/+OTxIy7vKBg8P+OxtMb61zO7X8vC7CIAXFjvGDfRaD\n\ +ssbzSibBsu/6iGtCOGEfz9zeNVs7ZRkDW7w09N75nAI4YbRvydbmyQd62R0mkff3\n\ +7lmMsPrBhtkcrv4TCYUTknC0EwyTvEN5RPT9RFLi103TZPLiHnH1S/9croKrnJ32\n\ +nuhtK8UiNjoNq8Uhl5sN6todv5pC1cRITgq80Gv6U93vPBsg7j/VnXwl5B0rZp4e\n\ +8W5vUsMWTfT7eTDp5OWIV7asfV9C1p9tGHdjzx1VA0AEh/VbpX4xzHpxNciG77Qx\n\ +iu1qHgEtnmgyqQdgCpGBMMRtx3j5ca0AOAkpmaMzy4t6Gh25PXFAADwqTs6p+Y0K\n\ +zAqCkc3OyX3Pjsm1Wn+IpGtNtahR9EGC4caKAH5eDdkCC/1ktkUDbHpOZ30sOFMq\n\ +OiO6RELK9T6mO7RUMpt2JMiRe91kscD9TLOOjDNMcBw6za0GV/zP7HGbH1w+TkYE\n\ +HziBR/tM/bR3pSRx96mpaRC4VTIu22NA2KAO8JI1BRHjCr7B//njom5/sp+MGDAj\n\ +w1h+ONoAd9m0dj5OS5Syu8GUxmUed8r5ku6qwCMqKBv2s6c5wSJhFoIK6NtYR6Z8\n\ +vvnJCRtGLVOM1ysDdGrnf15iKSwxFWKoRlBdyC24VDOK5J9SNclbkReMzy3Vys70\n\ +A+ydGBDGJysEWztx+dxrgNY/3UqOmtseaWKmlSbUMWHBpB1XDXk42tSkDjKcz/Rq\n\ +qjatAEz2AMg4HkJaMdlRrmT9sj/OyVCdQ2h/62nt0cxeC4zDvfZLEO+GtjFCo6uI\n\ +KVVbL3R8kyZlyywPHMAb1wIpOIg50q8F5FRQSseLdYKCKEbAujXDX1xZFgzARv2C\n\ +UVQfxoychrAiu3CZh2pGDnRRqKkxCXA/7hwhfmw4JuUsUappHg5CPPyZ6eMWUMEh\n\ +e2JIFs2tmpX51bgBlIjZwKCh/jB1pXfiMYP4HUo/L6RXHvyM4LqKT+i2hV3+crCm\n\ +bt7S+6v75Yow+vq+HF1xqH4vdB74wf6G/qa7/eUwZ38Nl9EdSfeoRD0IIuUGqfRh\n\ +TgEeKpSDj/iM1oyLt8XGQkz//////////wIBAg==\n\ -----END DH PARAMETERS-----\n"; @@ -160,9 +173,12 @@ load_dh_buffer (const char *buffer, size /* -** Generate empheral DH key. Because this can take a long -** time to compute, we use precomputed parameters of the -** common key sizes. +** Generate ephemeral DH key. Because this can take a long +** time to compute, we use precomputed parameters of the common +** key sizes. +** Depending on OpenSSL Security Level, a minimal length for +** DH parameters is required: +** ** ** These values can be static (once loaded or computed) since ** the OpenSSL library can effectively generate random keys @@ -175,48 +191,50 @@ load_dh_buffer (const char *buffer, size ** "small group" attacks. */ static DH * -tmp_dh_cb(SSL *s UNUSED, int export UNUSED, int keylength) +tmp_dh_cb(SSL *s UNUSED, int export UNUSED, int keylength UNUSED) { - DH *r = NULL; - static DH *dh = NULL; - static DH *dh512 = NULL; - static DH *dh1024 = NULL; - static DH *dh2048 = NULL; - static DH *dh4096 = NULL; - - switch (keylength) - { - case 512: - if (dh512 == NULL) - dh512 = load_dh_buffer(file_dh512, sizeof file_dh512); - r = dh512; - break; - case 1024: - if (dh1024 == NULL) - dh1024 = load_dh_buffer(file_dh1024, sizeof file_dh1024); - r = dh1024; - break; - case 2048: - if (dh2048 == NULL) - dh2048 = load_dh_buffer(file_dh2048, sizeof file_dh2048); - r = dh2048; - break; - case 4096: - if (dh4096 == NULL) - dh4096 = load_dh_buffer(file_dh4096, sizeof file_dh4096); - r = dh4096; - break; - default: - /* We should check current keylength vs. requested keylength - * also, this is an extremely expensive operation! */ - dh = DH_new(); - if (dh != NULL) { - DH_generate_parameters_ex(dh, keylength, DH_GENERATOR_2, NULL); - } - r = dh; - } + DH *r = NULL; + + static DH *ffdhe2048 = NULL; + static DH *ffdhe4096 = NULL; + static DH *ffdhe8192 = NULL; + int level = 2; /* Default security level. */ + + /* Security levels have been introduced in OpenSSL 1.1.0. */ +#if OPENSSL_VERSION_NUMBER >= 0x010100000L && !defined(LIBRESSL_VERSION_NUMBER) + level = SSL_get_security_level(s); +#endif - return r; + switch(level) + { + case 0: /* Everything is permitted. */ + case 1: /* DH keys shorter than 1024 bits are prohibited. */ + case 2: /* DH keys shorter than 2048 bits are prohibited. */ + if (ffdhe2048 == NULL) { + ffdhe2048 = load_dh_buffer(file_ffdhe2048, + sizeof(file_ffdhe2048)); + } + r = ffdhe2048; + break; + + case 3: /* DH keys shorter than 3072 bits are prohibited. */ + if (ffdhe4096 == NULL) { + ffdhe4096 = load_dh_buffer(file_ffdhe4096, + sizeof(file_ffdhe4096)); + } + r = ffdhe4096; + break; + + case 4: /* DH keys shorter than 7680 bits are prohibited. */ + default: + if (ffdhe8192 == NULL) { + ffdhe8192 = load_dh_buffer(file_ffdhe8192, + sizeof(file_ffdhe8192)); + } + r = ffdhe8192; + } + + return r; } @@ -652,8 +670,11 @@ tls_init_serverengine(int verifydepth, i } } -#if OPENSSL_VERSION_NUMBER >= 0x01010100fL - /* New API added in OpenSSL 1.1.1 for TLSv1.3 cipher suites. */ +#if OPENSSL_VERSION_NUMBER >= 0x01010100fL && defined(SSL_OP_NO_TLSv1_3) + /* New API added in OpenSSL 1.1.1 for TLSv1.3 cipher suites. + * Also check that SSL_OP_NO_TLSv1_3 is defined (to fix a build + * issue with LibreSSL considered as version 2, but without the + * same API as OpenSSL). */ if (tls_ciphers13 != NULL) { if (SSL_CTX_set_ciphersuites(CTX, tls_ciphers13) == 0) { syslog(L_ERROR, "TLS engine: cannot set ciphersuites"); @@ -878,8 +899,9 @@ SSL_writev (SSL *ssl, const struct iovec bytes += vector[i].iov_len; /* Allocate a buffer to hold the data. */ if (NULL == buffer) { - buffer = (char *) xmalloc(bytes); - allocsize = bytes; + size_t to_alloc = (bytes > 0 ? bytes : 1); + buffer = (char *) xmalloc(to_alloc); + allocsize = to_alloc; } else if (bytes > allocsize) { buffer = (char *) xrealloc (buffer, bytes); allocsize = bytes; diff -Nurp inn-2.6.3/samples/control.ctl inn-2.6.4/samples/control.ctl --- inn-2.6.3/samples/control.ctl 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/samples/control.ctl 2021-01-21 13:53:07.000000000 -0800 @@ -1,5 +1,5 @@ ## control.ctl - Access control for control messages. -## Last modified: 2018-01-14 +## Last modified: 2020-12-24 ## ## Based on rone's unified control.ctl file. ## @@ -729,19 +729,6 @@ checkgroups:eric@*cirr.com:dfw.*:doit newgroup:eric@*cirr.com:dfw.*:doit rmgroup:eric@*cirr.com:dfw.*:doit -## DICTATOR (Dictator's Handbook) -# Contact: news@dictatorshandbook.net -# URL: http://dictatorshandbook.net/usenet/usenetadmin.html -# Admin group: dictator.announce -# Key URL: http://www.dictatorshandbook.net/usenet/news-public.key -# Key fingerprint: 6FCA 1263 3947 C2BA 9F15 998F 5B1B 7FF9 4B1A 460A -# *PGP* See comment at top of file. -newgroup:*:dictator.*:drop -rmgroup:*:dictator.*:drop -checkgroups:randito@dictatorshandbook.net:dictator.*:verify-randito@dictatorshandbook.net -newgroup:randito@dictatorshandbook.net:dictator.*:verify-randito@dictatorshandbook.net -rmgroup:randito@dictatorshandbook.net:dictator.*:verify-randito@dictatorshandbook.net - ## DK (Denmark) # URL: http://www.usenet.dk/dk-admin/ # Key URL: http://www.usenet.dk/dk-admin/pubkey.html @@ -975,9 +962,10 @@ newgroup:news@flora.ottawa.on.ca:flora.* rmgroup:news@flora.ottawa.on.ca:flora.*:verify-flora-news ## FR (French language) -# URL: http://www.usenet-fr.net/ +# URL: https://www.usenet-fr.net/ # Admin group: fr.usenet.forums.annonces -# Key URL: http://www.usenet-fr.net/fur/usenet/presentation-fr.html +# Key URL: https://www.usenet-fr.net/pgp-fr-2020.txt +# Key fingerprint: D5F3 69B2 9757 3622 0153 54E7 FA42 3E89 970E B10B # *PGP* See comment at top of file. newgroup:*:fr.*:drop rmgroup:*:fr.*:drop @@ -2124,6 +2112,19 @@ checkgroups:coord@*.relcom.ru:relcom.*:v newgroup:coord@*.relcom.ru:relcom.*:verify-relcom.newsgroups rmgroup:coord@*.relcom.ru:relcom.*:verify-relcom.newsgroups +## ROCKSOLID (Rocksolid network - novabbs.com) +# Contact: usenet@novabbs.com +# URL: http://news.novabbs.com/hierarchy/ +# Admin group: rocksolid.shared.rocksolid +# Key URL: http://news.novabbs.com/hierarchy/rocksolid.txt +# Key fingerprint: FF84 6D73 0B72 CC0C B69B 6480 2A1C 655B F6D1 0B13 +# *PGP* See comment at top of file. +newgroup:*:rocksolid.*:drop +rmgroup:*:rocksolid.*:drop +checkgroups:usenet@novabbs.com:rocksolid.*:verify-usenet@novabbs.com +newgroup:usenet@novabbs.com:rocksolid.*:verify-usenet@novabbs.com +rmgroup:usenet@novabbs.com:rocksolid.*:verify-usenet@novabbs.com + ## RPI (*LOCAL* -- Rensselaer Polytechnic Institute, Troy, NY, USA) # Contact: sofkam@rpi.edu # For local use only, contact the above address for information. diff -Nurp inn-2.6.3/samples/innreport.conf.in inn-2.6.4/samples/innreport.conf.in --- inn-2.6.3/samples/innreport.conf.in 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/samples/innreport.conf.in 2021-01-21 13:53:07.000000000 -0800 @@ -5,7 +5,7 @@ # # (c) 1997, 1998, 1999 by Fabien Tassin # -# $Id: innreport.conf.in 9003 2010-03-16 19:35:34Z iulius $ +# $Id: innreport.conf.in 10385 2020-06-13 15:21:43Z iulius $ ###################################################################### # Default parameters @@ -41,13 +41,11 @@ section default { # html_header_file "header.html"; # ${html_dir}/${html_header_file} # html_footer_file "footer.html"; # ${html_dir}/${html_footer_file} - # html_xhtml11_icon "http://www.w3.org/Icons/valid-xhtml11"; - # html_vcss_icon "http://jigsaw.w3.org/css-validator/images/vcss"; # Character set used in XML and Content-Type declaration. # html_encoding "ISO-8859-1"; - # URL to CSS file. If undefined, a style sheet is embedded in HTML instead. + # URL to CSS file. If undefined, a default style sheet is generated. # html_css_url "innreport.css"; # URL to XSL file. See . diff -Nurp inn-2.6.3/samples/innreport.css inn-2.6.4/samples/innreport.css --- inn-2.6.3/samples/innreport.css 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/samples/innreport.css 2021-01-21 13:53:07.000000000 -0800 @@ -1,9 +1,12 @@ /* -** $Id: innreport.css 8170 2008-11-17 19:14:16Z iulius $ +** $Id: innreport.css 10385 2020-06-13 15:21:43Z iulius $ ** ** innreport.css -- for parameter html_css_url in innreport.conf ** ** Style created by Alexander Bartolich, 2008. +** +** In case you modify this file, please keep old definitions for backward +** compatibility with previously generated reports. */ div.ir-pageTitle { border-bottom:4px double black; @@ -84,6 +87,3 @@ tr.ir-oddRow td, td.ir-primaryKey { background-color:#F8E0E0; } - - - diff -Nurp inn-2.6.3/scripts/innreport.in inn-2.6.4/scripts/innreport.in --- inn-2.6.3/scripts/innreport.in 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/scripts/innreport.in 2021-01-21 13:53:07.000000000 -0800 @@ -6,9 +6,7 @@ # innreport: Perl script to summarize news log files # (with optional HTML output and graphs). # -# $Id: innreport.in 9929 2015-08-09 19:56:52Z iulius $ -# -# Version 3.1.0. +# $Id: innreport.in 10385 2020-06-13 15:21:43Z iulius $ # # Copyright (c) 1996-2001, Fabien Tassin . # @@ -148,7 +146,6 @@ my $NOT_DAILY = "DONT"; ## THERE'S NOTHING TO CHANGE AFTER THIS LINE ## ############################################### -my $version = "3.1.0"; my %output; # content of the configuration file. my $DEBUG = 0; # set to 1 to verify the structure/content of the conf file. my $start_time = time; @@ -567,6 +564,11 @@ my $sec_glob = secondsBetweenFirstAndLas $HTML_output = ''; if ($HTML) { + # Output the CSS in a file if a custom one is not already wanted. + if (!defined($output{'default'}{'html_css_url'})) { + &Make_CSS ($HTML_dir); + } + # Create a new filename (unique and _sortable_). if ($ARCHIVE) { # The filename will contain the first date of the log. @@ -881,99 +883,8 @@ sub GetHTMLHeader($) { } } - my $style_sheet = ''; my $css_url = $output{'default'}{'html_css_url'}; - if (defined($css_url)) { - $css_url = &GetValue($css_url); - $style_sheet = < -EOF - } - else { - $style_sheet = < -EOF - } + $css_url = defined($css_url) ? &GetValue($css_url) : "innreport.css"; my $body = ''; { @@ -993,8 +904,8 @@ EOF $title - -$style_sheet + + $HTML_header EOF @@ -1010,34 +921,13 @@ sub GetHTMLFooter() { $footer = '
' . $v; } - my $xhtml11_icon = 'http://www.w3.org/Icons/valid-xhtml11'; - $v = $output{'default'}{'html_xhtml11_icon'}; - if (defined($v)) { - $xhtml11_icon = &GetValue($v); - } - - my $vcss_icon = 'http://jigsaw.w3.org/css-validator/images/vcss'; - $v = $output{'default'}{'html_vcss_icon'}; - if (defined($v)) { - $vcss_icon = &GetValue($v); - } - my $time = second2time(time - $start_time); return < - Valid XHTML 1.1 Strict - CSS is valid! -
innreport $version (c) 1996-1999 - by Fabien Tassin <fta\@sofaraway.org>$footer +
innreport from $INN::Config::version + based on work (c) 1996-1999 by Fabien Tassin + <fta\@sofaraway.org>$footer
$HTML_footer @@ -1048,6 +938,96 @@ EOF } +# Generate a default CSS file. +# In case you modify it, please keep old definitions for backward +# compatibility with previously generated reports. +sub Make_CSS($) { + my ($rep) = @_; + open (CSS, "> $rep/innreport.css") || die "can't open $rep/innreport.css\n"; + print CSS <\n"; + print "Enhanced by several contributors since then\n"; exit 0; } @@ -2970,7 +2951,8 @@ sub Summary { } # Display the summary - print "\nSummary of my innreport (version $version) configuration:\n"; + print "\nSummary of my innreport configuration:\n"; + print " Version shipped with $INN::Config::version\n"; print " General options:\n"; print " command line='@old_argv' (please, check this value)\n"; print " html=" . ($HTML?"yes":"no") . ", graph=" . diff -Nurp inn-2.6.3/scripts/innreport_inn.pm inn-2.6.4/scripts/innreport_inn.pm --- inn-2.6.3/scripts/innreport_inn.pm 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/scripts/innreport_inn.pm 2021-01-21 13:53:07.000000000 -0800 @@ -1,7 +1,7 @@ ########################################################################## # INN module for innreport (3.*). # -# $Id: innreport_inn.pm 10320 2018-12-29 13:46:28Z iulius $ +# $Id: innreport_inn.pm 10442 2020-12-09 21:04:31Z iulius $ # # Sample file tested with INN 2.5, 2.4, 2.3, 2.2, 1.7.2 and 1.5.1. # @@ -473,6 +473,8 @@ sub collect($$$$$$) { return 1 if $left =~ /^reloading pyfilter$/o; return 1 if $left =~ /^reloaded pyfilter OK$/o; return 1 if $left =~ /^python interpreter initialized OK$/o; + return 1 if $left =~ /^python is not initialized$/o; + return 1 if $left =~ /^pyfilter .+ not installed$/o; return 1 if $left =~ /^python method \w+ not found$/o; return 1 if $left =~ /^python: First load, so I can do initialization stuff\.$/o; return 1 if $left =~ /^python: filter_before_reload executing\.\.\.$/o; @@ -1877,22 +1879,12 @@ sub collect($$$$$$) { $rnews_host{$host}++; return 1; } - # rejected 437 ECP rejected - return 1 if $left =~ m/rejected (?:437|439) ECP rejected/o; # rejected 437 "Subject" header too long return 1 if $left =~ m/header too long/o; - # rejected 437 Too long line in header 1163 bytes - return 1 if $left =~ m/rejected (?:437|439) Too long line in header/o; - # rejected 437 Too many newsgroups (meow) - return 1 if $left =~ m/rejected (?:437|439) Too many newsgroups/o; - # rejected 437 Space before colon in "/dev/console ## @@ -157,8 +157,12 @@ if [ "$OVMETHOD" = "ovdb" ]; then fi ## Start the show. -echo 'Starting innd.' -eval ${WHAT} ${RFLAG} ${INNFLAGS} +## When using systemd, the daemon must be started last with exec to keep +## the same PID of this script. +if [ "x$NOTIFY_SOCKET" = "x" ] && [ "x$LISTEN_PID" = "x" ]; then + echo 'Starting innd.' + eval ${WHAT} ${RFLAG} ${INNFLAGS} +fi # Gee, looks like lisp, doesn't it? ${DOINNWATCH} && { @@ -173,7 +177,7 @@ ${DOCNFSSTAT} && { RMFILE=${MOST_LOGS}/expire.rm for F in ${RMFILE} ${RMFILE}.*; do - if [ -f $F -a -s $F ] ; then + if [ -f $F ] && [ -s $F ]; then echo "Removing articles from pre-downtime expire run (${F})." ( echo 'System shut down during expire.' \ @@ -188,3 +192,9 @@ done & if [ -f ${PATHBIN}/rc.news.local ] ; then ${PATHBIN}/rc.news.local start fi + +## Start innd last when using systemd. +if [ "x$NOTIFY_SOCKET" != "x" ] || [ "x$LISTEN_PID" != "x" ]; then + echo 'Starting innd.' + eval exec ${WHAT} -f ${RFLAG} ${INNFLAGS} +fi diff -Nurp inn-2.6.3/storage/Make.methods inn-2.6.4/storage/Make.methods --- inn-2.6.3/storage/Make.methods 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/storage/Make.methods 2021-01-21 13:53:07.000000000 -0800 @@ -18,7 +18,7 @@ buffindexed/buffindexed_d.$(EXTOBJ): buf $(LIBCC) $(CFLAGS) -DBUFF_DEBUG -c -o $@ buffindexed/buffindexed.c buffindexed/buffindexed_d: buffindexed/buffindexed_d.$(EXTOBJ) libstorage.$(EXTLIB) $(LIBHIST) - $(LIBLD) $(LDFLAGS) -o $@ buffindexed/buffindexed_d.$(EXTOBJ) \ + $(LIBLDDEPS) $(LDFLAGS) -o $@ buffindexed/buffindexed_d.$(EXTOBJ) \ $(LIBSTORAGE) $(LIBHIST) $(LIBINN) $(STORAGE_LIBS) $(LIBS) diff -Nurp inn-2.6.3/storage/Makefile inn-2.6.4/storage/Makefile --- inn-2.6.3/storage/Makefile 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/storage/Makefile 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -## $Id: Makefile 10321 2018-12-29 13:47:14Z iulius $ +## $Id: Makefile 10423 2020-11-22 21:15:35Z 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:3:0 +LTVERSION = 3:4:0 top = .. CFLAGS = $(GCFLAGS) -I. $(BDB_CPPFLAGS) diff -Nurp inn-2.6.3/storage/buffindexed/buffindexed.c inn-2.6.4/storage/buffindexed/buffindexed.c --- inn-2.6.3/storage/buffindexed/buffindexed.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/storage/buffindexed/buffindexed.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: buffindexed.c 10305 2018-12-02 14:21:56Z iulius $ +/* $Id: buffindexed.c 10513 2021-01-15 22:34:56Z iulius $ ** ** Overview buffer and index method. */ @@ -552,15 +552,22 @@ static void ovflushhead(OVBUFF *ovbuff) memset(&rpx, 0, sizeof(OVBUFFHEAD)); ovbuff->updated = time(NULL); + /* Don't use sprintf() or strlcat() directly... + * The terminating '\0' causes grief. */ +#if __GNUC__ > 7 +# pragma GCC diagnostic ignored "-Wstringop-truncation" +#endif strncpy(rpx.magic, OVBUFF_MAGIC, strlen(OVBUFF_MAGIC)); strncpy(rpx.path, ovbuff->path, OVBUFFPASIZ); - /* Don't use sprintf() directly ... the terminating '\0' causes grief */ strncpy(rpx.indexa, offt2hex(ovbuff->index, true), OVBUFFLASIZ); strncpy(rpx.lena, offt2hex(ovbuff->len, true), OVBUFFLASIZ); strncpy(rpx.totala, offt2hex(ovbuff->totalblk, true), OVBUFFLASIZ); strncpy(rpx.useda, offt2hex(ovbuff->usedblk, true), OVBUFFLASIZ); strncpy(rpx.freea, offt2hex(ovbuff->freeblk, true), OVBUFFLASIZ); strncpy(rpx.updateda, offt2hex(ovbuff->updated, true), OVBUFFLASIZ); +#if __GNUC__ > 7 +# pragma GCC diagnostic warning "-Wstringop-truncation" +#endif rpx.version = OVBUFF_VERSION; rpx.freeblk = ovbuff->freeblk; rpx.usedblk = ovbuff->usedblk; @@ -2203,6 +2210,7 @@ buffindexed_expiregroup(const char *grou bool buffindexed_ctl(OVCTLTYPE type, void *val) { int total, used, *i, j; + float *f; OVBUFF *ovbuff = ovbufftab; OVSORTTYPE *sorttype; bool *boolval; @@ -2217,8 +2225,8 @@ bool buffindexed_ctl(OVCTLTYPE type, voi used += ovbuff->usedblk; ovlock(ovbuff, INN_LOCK_UNLOCK); } - i = (int *)val; - *i = (used * 100) / total; + f = (float *)val; + *f = ((float)used / total) * 100; return true; case OVSORT: sorttype = (OVSORTTYPE *)val; @@ -2467,9 +2475,9 @@ main(int argc, char **argv) { } } { - ARTNUM artnum; - char *data; - int len; + ARTNUM artnum = 0; + char *data = NULL; + int len = 0; TOKEN token; while (buffindexed_search((void *)search, &artnum, &data, &len, &token, NULL)) { if (len == 0) diff -Nurp inn-2.6.3/storage/buffindexed/ovmethod.mk inn-2.6.4/storage/buffindexed/ovmethod.mk --- inn-2.6.3/storage/buffindexed/ovmethod.mk 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/storage/buffindexed/ovmethod.mk 2021-01-21 13:53:07.000000000 -0800 @@ -4,5 +4,5 @@ buffindexed/buffindexed_d.$(EXTOBJ): buf $(LIBCC) $(CFLAGS) -DBUFF_DEBUG -c -o $@ buffindexed/buffindexed.c buffindexed/buffindexed_d: buffindexed/buffindexed_d.$(EXTOBJ) libstorage.$(EXTLIB) $(LIBHIST) - $(LIBLD) $(LDFLAGS) -o $@ buffindexed/buffindexed_d.$(EXTOBJ) \ + $(LIBLDDEPS) $(LDFLAGS) -o $@ buffindexed/buffindexed_d.$(EXTOBJ) \ $(LIBSTORAGE) $(LIBHIST) $(LIBINN) $(STORAGE_LIBS) $(LIBS) diff -Nurp inn-2.6.3/storage/cnfs/cnfs-private.h inn-2.6.4/storage/cnfs/cnfs-private.h --- inn-2.6.3/storage/cnfs/cnfs-private.h 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/storage/cnfs/cnfs-private.h 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: cnfs-private.h 8599 2009-08-29 08:34:46Z iulius $ +/* $Id: cnfs-private.h 10397 2020-11-12 20:22:51Z iulius $ ** ** CNFS disk/file mode header file. */ @@ -7,7 +7,9 @@ #define CNFS_PRIVATE_H 1 #include -#include +#if HAVE_UNISTD_H +# include +#endif #define _PATH_CYCBUFFCONFIG "cycbuff.conf" diff -Nurp inn-2.6.3/storage/cnfs/cnfs.c inn-2.6.4/storage/cnfs/cnfs.c --- inn-2.6.3/storage/cnfs/cnfs.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/storage/cnfs/cnfs.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: cnfs.c 10305 2018-12-02 14:21:56Z iulius $ +/* $Id: cnfs.c 10342 2019-05-30 14:18:48Z iulius $ ** ** Storage manager module for Cyclic News File System method. */ @@ -234,13 +234,17 @@ static bool CNFSflushhead(CYCBUFF *cycbu memset(&rpx, 0, sizeof(CYCBUFFEXTERN)); if (cycbuff->magicver == 3 || cycbuff->magicver == 4) { cycbuff->updated = time(NULL); + /* Don't use sprintf() or strlcat() directly... + * The terminating '\0' causes grief. */ +#if __GNUC__ > 7 +# pragma GCC diagnostic ignored "-Wstringop-truncation" +#endif if (cycbuff->magicver == 3) strncpy(rpx.magic, CNFS_MAGICV3, strlen(CNFS_MAGICV3)); else strncpy(rpx.magic, CNFS_MAGICV4, strlen(CNFS_MAGICV4)); strncpy(rpx.name, cycbuff->name, CNFSNASIZ); strncpy(rpx.path, cycbuff->path, CNFSPASIZ); - /* Don't use sprintf() directly ... the terminating '\0' causes grief */ strncpy(rpx.lena, CNFSofft2hex(cycbuff->len, true), CNFSLASIZ); strncpy(rpx.freea, CNFSofft2hex(cycbuff->free, true), CNFSLASIZ); strncpy(rpx.cyclenuma, CNFSofft2hex(cycbuff->cyclenum, true), CNFSLASIZ); @@ -253,6 +257,9 @@ static bool CNFSflushhead(CYCBUFF *cycbu strncpy(rpx.currentbuff, "FALSE", CNFSMASIZ); } strncpy(rpx.blksza, CNFSofft2hex(cycbuff->blksz, true), CNFSLASIZ); +#if __GNUC__ > 7 +# pragma GCC diagnostic warning "-Wstringop-truncation" +#endif memcpy(cycbuff->bitfield, &rpx, sizeof(CYCBUFFEXTERN)); msync(cycbuff->bitfield, cycbuff->minartoffset, MS_ASYNC); cycbuff->needflush = false; @@ -660,7 +667,7 @@ static bool CNFSinit_disks(CYCBUFF *cycb strncpy(buf, rpx->cyclenuma, CNFSLASIZ); buf[CNFSLASIZ] = '\0'; cycbuff->cyclenum = CNFShex2offt(buf); - strncpy(cycbuff->metaname, rpx->metaname, CNFSLASIZ); + strncpy(cycbuff->metaname, rpx->metaname, CNFSNASIZ); strncpy(buf, rpx->orderinmeta, CNFSLASIZ); cycbuff->order = CNFShex2offt(buf); if (strncmp(rpx->currentbuff, "TRUE", CNFSMASIZ) == 0) { @@ -690,7 +697,7 @@ static bool CNFSinit_disks(CYCBUFF *cycb cycbuff->needflush = true; cycbuff->blksz = CNFS_DFL_BLOCKSIZE; cycbuff->free = 0; - memset(cycbuff->metaname, '\0', CNFSLASIZ); + memset(cycbuff->metaname, '\0', CNFSNASIZ); } /* ** The minimum article offset will be the size of the bitfield itself, @@ -734,7 +741,15 @@ static bool CNFS_setcurrent(METACYCBUFF /* this cycbuff is moved from other metacycbuff , or is new */ cycbuff->order = i + 1; cycbuff->currentbuff = false; - strncpy(cycbuff->metaname, metacycbuff->name, CNFSLASIZ); + /* Don't use sprintf() or strlcat() directly... + * The terminating '\0' causes grief. */ +#if __GNUC__ > 7 +# pragma GCC diagnostic ignored "-Wstringop-truncation" +#endif + strncpy(cycbuff->metaname, metacycbuff->name, CNFSNASIZ); +#if __GNUC__ > 7 +# pragma GCC diagnostic warning "-Wstringop-truncation" +#endif cycbuff->needflush = true; continue; } diff -Nurp inn-2.6.3/storage/expire.c inn-2.6.4/storage/expire.c --- inn-2.6.3/storage/expire.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/storage/expire.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: expire.c 10012 2016-05-05 12:41:10Z iulius $ +/* $Id: expire.c 10413 2020-11-21 09:15:14Z iulius $ ** ** Code for overview-driven expiration. ** @@ -90,11 +90,11 @@ static ARTOVERFIELD * ARTfields; static int ARTfieldsize; static bool ReadOverviewfmt = false; +static char * ACTIVE; /* FIXME: The following variables are shared between this file and ov.c. This should be cleaned up with a better internal interface. */ time_t OVnow; -char * ACTIVE; FILE * EXPunlinkfile; bool OVignoreselfexpire; bool OVusepost; diff -Nurp inn-2.6.3/storage/ovdb/ovdb.c inn-2.6.4/storage/ovdb/ovdb.c --- inn-2.6.3/storage/ovdb/ovdb.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/storage/ovdb/ovdb.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: ovdb.c 10306 2018-12-02 14:26:13Z iulius $ +/* $Id: ovdb.c 10513 2021-01-15 22:34:56Z iulius $ * * ovdb.c * ovdb 2.00 @@ -2987,13 +2987,14 @@ ovdb_expiregroup(const char *group, int bool ovdb_ctl(OVCTLTYPE type, void *val) { int *i; + float *f; OVSORTTYPE *sorttype; bool *boolval; switch (type) { case OVSPACE: - i = (int *)val; - *i = -1; + f = (float *)val; + *f = -1.0f; return true; case OVSORT: sorttype = (OVSORTTYPE *)val; diff -Nurp inn-2.6.3/storage/overview.c inn-2.6.4/storage/overview.c --- inn-2.6.3/storage/overview.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/storage/overview.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: overview.c 9658 2014-08-28 18:59:18Z iulius $ +/* $Id: overview.c 10513 2021-01-15 22:34:56Z iulius $ ** ** The implementation of the overview API. ** @@ -409,10 +409,10 @@ overview_config_set(struct overview *ove float overview_free_space(struct overview *overview) { - int space; + float space; if (overview->method->ctl(OVSPACE, &space)) return space; else - return -1; + return -1.0f; } diff -Nurp inn-2.6.3/storage/ovinterface.h inn-2.6.4/storage/ovinterface.h --- inn-2.6.3/storage/ovinterface.h 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/storage/ovinterface.h 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: ovinterface.h 9194 2011-04-16 08:08:54Z iulius $ +/* $Id: ovinterface.h 10413 2020-11-21 09:15:14Z iulius $ ** ** Overview interface header */ @@ -43,7 +43,6 @@ void OVEXPcleanup(void); extern bool OVstatall; extern time_t OVnow; -extern char *ACTIVE; extern FILE *EXPunlinkfile; extern bool OVignoreselfexpire; extern bool OVusepost; diff -Nurp inn-2.6.3/storage/timecaf/caf.c inn-2.6.4/storage/timecaf/caf.c --- inn-2.6.3/storage/timecaf/caf.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/storage/timecaf/caf.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: caf.c 10283 2018-05-14 12:43:05Z iulius $ +/* $Id: caf.c 10342 2019-05-30 14:18:48Z iulius $ ** ** Library routines needed for handling CAF (Crunched Article Files) ** Written by Richard Todd (rmtodd@mailhost.ecn.uoknor.edu) 3/24/96, @@ -687,7 +687,7 @@ CAFCreateCAFFile(char *cfpath, ARTNUM ar } /* Initialize the header. */ - strncpy(head.Magic, CAF_MAGIC, CAF_MAGIC_LEN); + memcpy(head.Magic, CAF_MAGIC, CAF_MAGIC_LEN); head.Low = artnum; head.High = artnum; head.NumSlots = tocsize; diff -Nurp inn-2.6.3/storage/tradindexed/tradindexed.c inn-2.6.4/storage/tradindexed/tradindexed.c --- inn-2.6.3/storage/tradindexed/tradindexed.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/storage/tradindexed/tradindexed.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: tradindexed.c 10283 2018-05-14 12:43:05Z iulius $ +/* $Id: tradindexed.c 10513 2021-01-15 22:34:56Z iulius $ ** ** Interface implementation for the tradindexed overview method. ** @@ -372,6 +372,7 @@ bool tradindexed_ctl(OVCTLTYPE type, void *val) { int *i; + float *f; bool *b; OVSORTTYPE *sort; @@ -382,8 +383,8 @@ tradindexed_ctl(OVCTLTYPE type, void *va switch (type) { case OVSPACE: - i = (int *) val; - *i = -1; + f = (float *) val; + *f = -1.0f; return true; case OVSORT: sort = (OVSORTTYPE *) val; diff -Nurp inn-2.6.3/support/config.guess inn-2.6.4/support/config.guess --- inn-2.6.3/support/config.guess 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/support/config.guess 2021-01-21 13:53:07.000000000 -0800 @@ -1,8 +1,8 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2019 Free Software Foundation, Inc. +# Copyright 1992-2021 Free Software Foundation, Inc. -timestamp='2019-01-15' +timestamp='2021-01-01' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -27,12 +27,12 @@ timestamp='2019-01-15' # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: -# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess +# https://git.savannah.gnu.org/cgit/config.git/plain/config.guess # # Please send patches to . -me=`echo "$0" | sed -e 's,.*/,,'` +me=$(echo "$0" | sed -e 's,.*/,,') usage="\ Usage: $0 [OPTION] @@ -50,7 +50,7 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2019 Free Software Foundation, Inc. +Copyright 1992-2021 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." @@ -99,9 +99,11 @@ tmp= trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15 set_cc_for_build() { + # prevent multiple calls if $tmp is already set + test "$tmp" && return 0 : "${TMPDIR=/tmp}" # shellcheck disable=SC2039 - { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { tmp=$( (umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null) && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } @@ -129,16 +131,14 @@ if test -f /.attbin/uname ; then PATH=$PATH:/.attbin ; export PATH fi -UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown -UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown -UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown +UNAME_MACHINE=$( (uname -m) 2>/dev/null) || UNAME_MACHINE=unknown +UNAME_RELEASE=$( (uname -r) 2>/dev/null) || UNAME_RELEASE=unknown +UNAME_SYSTEM=$( (uname -s) 2>/dev/null) || UNAME_SYSTEM=unknown +UNAME_VERSION=$( (uname -v) 2>/dev/null) || UNAME_VERSION=unknown case "$UNAME_SYSTEM" in Linux|GNU|GNU/*) - # If the system lacks a compiler, then just pick glibc. - # We could probably try harder. - LIBC=gnu + LIBC=unknown set_cc_for_build cat <<-EOF > "$dummy.c" @@ -147,17 +147,29 @@ Linux|GNU|GNU/*) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc - #else + #elif defined(__GLIBC__) LIBC=gnu + #else + #include + /* First heuristic to detect musl libc. */ + #ifdef __DEFINED_va_list + LIBC=musl + #endif #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')" - # If ldd exists, use it to detect musl libc. - if command -v ldd >/dev/null && \ - ldd --version 2>&1 | grep -q ^musl - then - LIBC=musl + # Second heuristic to detect musl libc. + if [ "$LIBC" = unknown ] && + command -v ldd >/dev/null && + ldd --version 2>&1 | grep -q ^musl; then + LIBC=musl + fi + + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + if [ "$LIBC" = unknown ]; then + LIBC=gnu fi ;; esac @@ -177,19 +189,20 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAM # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" - UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ + UNAME_MACHINE_ARCH=$( (uname -p 2>/dev/null || \ "/sbin/$sysctl" 2>/dev/null || \ "/usr/sbin/$sysctl" 2>/dev/null || \ - echo unknown)` + echo unknown)) case "$UNAME_MACHINE_ARCH" in + aarch64eb) machine=aarch64_be-unknown ;; 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'` + 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 ;; @@ -220,7 +233,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAM 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 @@ -233,7 +246,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAM 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: @@ -242,15 +255,15 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAM echo "$machine-${os}${release}${abi-}" exit ;; *:Bitrig:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + UNAME_MACHINE_ARCH=$(arch | sed 's/Bitrig.//') echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE" exit ;; *:OpenBSD:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + UNAME_MACHINE_ARCH=$(arch | sed 's/OpenBSD.//') echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE" exit ;; *:LibertyBSD:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` + UNAME_MACHINE_ARCH=$(arch | sed 's/^.*BSD\.//') echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE" exit ;; *:MidnightBSD:*:*) @@ -262,6 +275,9 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAM *:SolidBSD:*:*) echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE" exit ;; + *:OS108:*:*) + echo "$UNAME_MACHINE"-unknown-os108_"$UNAME_RELEASE" + exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd"$UNAME_RELEASE" exit ;; @@ -271,26 +287,29 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAM *:Sortix:*:*) echo "$UNAME_MACHINE"-unknown-sortix exit ;; + *:Twizzler:*:*) + echo "$UNAME_MACHINE"-unknown-twizzler + exit ;; *:Redox:*:*) echo "$UNAME_MACHINE"-unknown-redox exit ;; mips:OSF1:*.*) - echo mips-dec-osf1 - exit ;; + echo mips-dec-osf1 + exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + UNAME_RELEASE=$(/usr/sbin/sizer -v | awk '{print $3}') ;; *5.*) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + UNAME_RELEASE=$(/usr/sbin/sizer -v | awk '{print $4}') ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. - ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + ALPHA_CPU_TYPE=$(/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1) case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE=alpha ;; @@ -328,7 +347,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAM # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. - echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`" + 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 @@ -362,7 +381,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAM exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then + if test "$( (/bin/universe) 2>/dev/null)" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd @@ -375,17 +394,17 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAM echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) - case `/usr/bin/uname -p` in + case $(/usr/bin/uname -p) in 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" @@ -396,7 +415,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAM # 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. # This test works for both compilers. - if [ "$CC_FOR_BUILD" != no_compiler_found ]; then + if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null @@ -404,30 +423,30 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAM 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 + case "$(/usr/bin/arch -k)" in Series*|S4*) - UNAME_RELEASE=`uname -v` + UNAME_RELEASE=$(uname -v) ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`" + echo sparc-sun-sunos"$(echo "$UNAME_RELEASE"|sed -e 's/-/_/')" exit ;; sun3*:SunOS:*:*) 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` + UNAME_RELEASE=$( (sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null) test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 - case "`/bin/arch`" in + case "$(/bin/arch)" in sun3) echo m68k-sun-sunos"$UNAME_RELEASE" ;; @@ -507,8 +526,8 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAM } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && - dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && - SYSTEM_NAME=`"$dummy" "$dummyarg"` && + dummyarg=$(echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p') && + SYSTEM_NAME=$("$dummy" "$dummyarg") && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos"$UNAME_RELEASE" exit ;; @@ -535,11 +554,11 @@ EOF exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ] + UNAME_PROCESSOR=$(/usr/bin/uname -p) + if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110 then - if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \ - [ "$TARGET_BINARY_INTERFACE"x = x ] + if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ + test "$TARGET_BINARY_INTERFACE"x = x then echo m88k-dg-dgux"$UNAME_RELEASE" else @@ -563,17 +582,17 @@ 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 - exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + exit ;; # Note that: echo "'$(uname -s)'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` + if test -x /usr/bin/oslevel ; then + IBM_REV=$(/usr/bin/oslevel) else IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" fi @@ -593,7 +612,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 @@ -606,15 +625,15 @@ EOF fi exit ;; *:AIX:*:[4567]) - IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + IBM_CPU_ID=$(/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }') if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi - if [ -x /usr/bin/lslpp ] ; then - IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | - awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` + if test -x /usr/bin/lslpp ; then + IBM_REV=$(/usr/bin/lslpp -Lqc bos.rte.libc | + awk -F: '{ print $3 }' | sed s/[0-9]*$/0/) else IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" fi @@ -642,14 +661,14 @@ EOF echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` + 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` + if test -x /usr/bin/getconf; then + sc_cpu_version=$(/usr/bin/getconf SC_CPU_VERSION 2>/dev/null) + sc_kernel_bits=$(/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null) case "$sc_cpu_version" in 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 @@ -661,7 +680,7 @@ EOF esac ;; esac fi - if [ "$HP_ARCH" = "" ]; then + if test "$HP_ARCH" = ""; then set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" @@ -696,11 +715,11 @@ 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 test "$HP_ARCH" = hppa2.0w then set_cc_for_build @@ -724,7 +743,7 @@ EOF echo "$HP_ARCH"-hp-hpux"$HPUX_REV" exit ;; ia64:HP-UX:*:*) - HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` + HPUX_REV=$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//') echo ia64-hp-hpux"$HPUX_REV" exit ;; 3050*:HI-UX:*:*) @@ -754,7 +773,7 @@ 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 ;; @@ -774,7 +793,7 @@ EOF echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then + if test -x /usr/sbin/sysversion ; then echo "$UNAME_MACHINE"-unknown-osf1mk else echo "$UNAME_MACHINE"-unknown-osf1 @@ -823,14 +842,14 @@ EOF 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_PROC=$(uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz) + FUJITSU_SYS=$(uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///') + FUJITSU_REL=$(echo "$UNAME_RELEASE" | sed -e 's/ /_/') echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 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_SYS=$(uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///') + FUJITSU_REL=$(echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/') echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) @@ -843,25 +862,25 @@ EOF echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE" exit ;; arm:FreeBSD:*:*) - UNAME_PROCESSOR=`uname -p` + UNAME_PROCESSOR=$(uname -p) set_cc_for_build if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then - echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabi + echo "${UNAME_PROCESSOR}"-unknown-freebsd"$(echo ${UNAME_RELEASE}|sed -e 's/[-(].*//')"-gnueabi else - echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabihf + echo "${UNAME_PROCESSOR}"-unknown-freebsd"$(echo ${UNAME_RELEASE}|sed -e 's/[-(].*//')"-gnueabihf fi exit ;; *:FreeBSD:*:*) - UNAME_PROCESSOR=`/usr/bin/uname -p` + UNAME_PROCESSOR=$(/usr/bin/uname -p) case "$UNAME_PROCESSOR" in amd64) UNAME_PROCESSOR=x86_64 ;; i386) UNAME_PROCESSOR=i586 ;; esac - echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" + echo "$UNAME_PROCESSOR"-unknown-freebsd"$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')" exit ;; i*:CYGWIN*:*) echo "$UNAME_MACHINE"-pc-cygwin @@ -897,15 +916,15 @@ EOF echo x86_64-pc-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 ;; *:Minix:*:*) echo "$UNAME_MACHINE"-unknown-minix @@ -918,7 +937,7 @@ EOF echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + case $(sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null) in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; @@ -977,6 +996,9 @@ EOF k1om:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; + loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; m32r*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; @@ -985,22 +1007,50 @@ EOF exit ;; mips:Linux:*:* | mips64:Linux:*:*) set_cc_for_build + IS_GLIBC=0 + test x"${LIBC}" = xgnu && IS_GLIBC=1 sed 's/^ //' << EOF > "$dummy.c" #undef CPU - #undef ${UNAME_MACHINE} - #undef ${UNAME_MACHINE}el + #undef mips + #undef mipsel + #undef mips64 + #undef mips64el + #if ${IS_GLIBC} && defined(_ABI64) + LIBCABI=gnuabi64 + #else + #if ${IS_GLIBC} && defined(_ABIN32) + LIBCABI=gnuabin32 + #else + LIBCABI=${LIBC} + #endif + #endif + + #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa64r6 + #else + #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa32r6 + #else + #if defined(__mips64) + CPU=mips64 + #else + CPU=mips + #endif + #endif + #endif + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=${UNAME_MACHINE}el + MIPS_ENDIAN=el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=${UNAME_MACHINE} + MIPS_ENDIAN= #else - CPU= + MIPS_ENDIAN= #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\|^MIPS_ENDIAN\|^LIBCABI')" + test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } ;; mips64el:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" @@ -1019,7 +1069,7 @@ EOF exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level - case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + 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" ;; @@ -1037,7 +1087,7 @@ EOF ppcle:Linux:*:*) echo powerpcle-unknown-linux-"$LIBC" exit ;; - riscv32:Linux:*:* | riscv64:Linux:*:*) + riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; s390:Linux:*:* | s390x:Linux:*:*) @@ -1059,7 +1109,17 @@ EOF echo "$UNAME_MACHINE"-dec-linux-"$LIBC" exit ;; x86_64:Linux:*:*) - echo "$UNAME_MACHINE"-pc-linux-"$LIBC" + set_cc_for_build + LIBCABI=$LIBC + if test "$CC_FOR_BUILD" != no_compiler_found; then + if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_X32 >/dev/null + then + LIBCABI="$LIBC"x32 + fi + fi + echo "$UNAME_MACHINE"-pc-linux-"$LIBCABI" exit ;; xtensa*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" @@ -1099,7 +1159,7 @@ EOF echo "$UNAME_MACHINE"-pc-msdosdjgpp exit ;; i*86:*:4.*:*) - UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` + UNAME_REL=$(echo "$UNAME_RELEASE" | sed 's/\/MP$//') if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL" else @@ -1108,19 +1168,19 @@ EOF exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. - case `/bin/uname -X | grep "^Machine"` in + case $(/bin/uname -X | grep "^Machine") in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac - echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}{$UNAME_VERSION}" + 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/.*= //')` + UNAME_REL=$( (/bin/uname -X|grep Release|sed -e 's/.*= //')) (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 @@ -1170,7 +1230,7 @@ EOF 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + && OS_REL=.$(sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ @@ -1181,7 +1241,7 @@ EOF NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + && OS_REL=.$(sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ @@ -1214,7 +1274,7 @@ EOF exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then - UNAME_MACHINE=`(uname -p) 2>/dev/null` + UNAME_MACHINE=$( (uname -p) 2>/dev/null) echo "$UNAME_MACHINE"-sni-sysv4 else echo ns32k-sni-sysv @@ -1248,7 +1308,7 @@ EOF echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) - if [ -d /usr/nec ]; then + if test -d /usr/nec; then echo mips-nec-sysv"$UNAME_RELEASE" else echo mips-unknown-sysv"$UNAME_RELEASE" @@ -1296,44 +1356,48 @@ EOF *:Rhapsody:*:*) echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE" exit ;; + arm64:Darwin:*:*) + echo aarch64-apple-darwin"$UNAME_RELEASE" + exit ;; *:Darwin:*:*) - UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown - set_cc_for_build - if test "$UNAME_PROCESSOR" = unknown ; then - UNAME_PROCESSOR=powerpc + UNAME_PROCESSOR=$(uname -p) + case $UNAME_PROCESSOR in + unknown) UNAME_PROCESSOR=powerpc ;; + esac + if command -v xcode-select > /dev/null 2> /dev/null && \ + ! xcode-select --print-path > /dev/null 2> /dev/null ; then + # Avoid executing cc if there is no toolchain installed as + # cc will be a stub that puts up a graphical alert + # prompting the user to install developer tools. + CC_FOR_BUILD=no_compiler_found + else + set_cc_for_build fi - 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 - 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 + if test "$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 + 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 elif test "$UNAME_PROCESSOR" = i386 ; then - # Avoid executing cc on OS X 10.9, as it ships with a stub - # that puts up a graphical alert prompting to install - # developer tools. Any system running Mac OS X 10.7 or - # later (Darwin 11 and later) is required to have a 64-bit - # processor. This is not true of the ARM version of Darwin - # that Apple uses in portable devices. - UNAME_PROCESSOR=x86_64 + # uname -m returns i386 or x86_64 + UNAME_PROCESSOR=$UNAME_MACHINE fi echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE" exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) - UNAME_PROCESSOR=`uname -p` + UNAME_PROCESSOR=$(uname -p) if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc @@ -1401,10 +1465,10 @@ EOF 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` + UNAME_MACHINE=$( (uname -p) 2>/dev/null) case "$UNAME_MACHINE" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; @@ -1414,7 +1478,7 @@ 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 @@ -1433,6 +1497,143 @@ EOF exit ;; esac +# No uname command or uname output not recognized. +set_cc_for_build +cat > "$dummy.c" < +#include +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#include +#if defined(_SIZE_T_) || defined(SIGLOST) +#include +#endif +#endif +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=$( (hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null); + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); +#endif + +#if defined (vax) +#if !defined (ultrix) +#include +#if defined (BSD) +#if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +#else +#if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#endif +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#else +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname un; + uname (&un); + printf ("vax-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("vax-dec-ultrix\n"); exit (0); +#endif +#endif +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname *un; + uname (&un); + printf ("mips-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("mips-dec-ultrix\n"); exit (0); +#endif +#endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=$($dummy) && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. +test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } + echo "$0: unable to guess system type" >&2 case "$UNAME_MACHINE:$UNAME_SYSTEM" in @@ -1452,9 +1653,15 @@ This script (version $timestamp), has fa operating system you are using. If your script is old, overwrite *all* copies of config.guess and config.sub with the latest versions from: - https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess + https://git.savannah.gnu.org/cgit/config.git/plain/config.guess and - https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub + https://git.savannah.gnu.org/cgit/config.git/plain/config.sub +EOF + +year=$(echo $timestamp | sed 's,-.*,,') +# shellcheck disable=SC2003 +if test "$(expr "$(date +%Y)" - "$year")" -lt 3 ; then + cat >&2 </dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null` - -hostinfo = `(hostinfo) 2>/dev/null` -/bin/universe = `(/bin/universe) 2>/dev/null` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` -/bin/arch = `(/bin/arch) 2>/dev/null` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` +uname -m = $( (uname -m) 2>/dev/null || echo unknown) +uname -r = $( (uname -r) 2>/dev/null || echo unknown) +uname -s = $( (uname -s) 2>/dev/null || echo unknown) +uname -v = $( (uname -v) 2>/dev/null || echo unknown) + +/usr/bin/uname -p = $( (/usr/bin/uname -p) 2>/dev/null) +/bin/uname -X = $( (/bin/uname -X) 2>/dev/null) + +hostinfo = $( (hostinfo) 2>/dev/null) +/bin/universe = $( (/bin/universe) 2>/dev/null) +/usr/bin/arch -k = $( (/usr/bin/arch -k) 2>/dev/null) +/bin/arch = $( (/bin/arch) 2>/dev/null) +/usr/bin/oslevel = $( (/usr/bin/oslevel) 2>/dev/null) +/usr/convex/getsysinfo = $( (/usr/convex/getsysinfo) 2>/dev/null) UNAME_MACHINE = "$UNAME_MACHINE" UNAME_RELEASE = "$UNAME_RELEASE" UNAME_SYSTEM = "$UNAME_SYSTEM" UNAME_VERSION = "$UNAME_VERSION" EOF +fi exit 1 diff -Nurp inn-2.6.3/support/config.sub inn-2.6.4/support/config.sub --- inn-2.6.3/support/config.sub 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/support/config.sub 2021-01-21 13:53:07.000000000 -0800 @@ -1,8 +1,8 @@ #! /bin/sh # Configuration validation subroutine script. -# Copyright 1992-2019 Free Software Foundation, Inc. +# Copyright 1992-2021 Free Software Foundation, Inc. -timestamp='2019-01-05' +timestamp='2021-01-07' # 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 @@ -33,7 +33,7 @@ timestamp='2019-01-05' # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: -# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub +# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases @@ -50,7 +50,7 @@ timestamp='2019-01-05' # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. -me=`echo "$0" | sed -e 's,.*/,,'` +me=$(echo "$0" | sed -e 's,.*/,,') usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS @@ -67,7 +67,7 @@ Report bugs and patches to &2 - exit 1 + # No normalization, but not necessarily accepted, that comes below. ;; esac + else # Here we handle the default operating systems that come with various machines. @@ -1530,6 +1499,7 @@ else # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. +kernel= case $cpu-$vendor in score-*) os=elf @@ -1541,7 +1511,8 @@ case $cpu-$vendor in os=riscix1.2 ;; arm*-rebel) - os=linux + kernel=linux + os=gnu ;; arm*-semi) os=aout @@ -1707,84 +1678,173 @@ case $cpu-$vendor in os=none ;; esac + fi +# Now, validate our (potentially fixed-up) OS. +case $os in + # Sometimes we do "kernel-abi", so those need to count as OSes. + musl* | newlib* | uclibc*) + ;; + # Likewise for "kernel-libc" + eabi* | gnueabi*) + ;; + # Now accept the basic system types. + # The portable systems comes first. + # Each alternative MUST end in a * to match a version number. + gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ + | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ + | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ + | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ + | hiux* | abug | nacl* | netware* | windows* \ + | os9* | macos* | osx* | ios* \ + | mpw* | magic* | mmixware* | mon960* | lnews* \ + | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ + | aos* | aros* | cloudabi* | sortix* | twizzler* \ + | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ + | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ + | mirbsd* | netbsd* | dicos* | openedition* | ose* \ + | bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \ + | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ + | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ + | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ + | udi* | lites* | ieee* | go32* | aux* | hcos* \ + | chorusrdb* | cegcc* | glidix* \ + | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ + | midipix* | mingw32* | mingw64* | mint* \ + | uxpv* | beos* | mpeix* | udk* | moxiebox* \ + | interix* | uwin* | mks* | rhapsody* | darwin* \ + | openstep* | oskit* | conix* | pw32* | nonstopux* \ + | storm-chaos* | tops10* | tenex* | tops20* | its* \ + | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ + | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ + | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ + | skyos* | haiku* | rdos* | toppers* | drops* | es* \ + | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ + | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ + | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx*) + ;; + # This one is extra strict with allowed versions + sco3.2v2 | sco3.2v[4-9]* | sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + ;; + none) + ;; + *) + echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 + exit 1 + ;; +esac + +# As a final step for OS-related things, validate the OS-kernel combination +# (given a valid OS), if there is a kernel. +case $kernel-$os in + linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* | linux-musl* | linux-uclibc* ) + ;; + uclinux-uclibc* ) + ;; + -dietlibc* | -newlib* | -musl* | -uclibc* ) + # These are just libc implementations, not actual OSes, and thus + # require a kernel. + echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 + exit 1 + ;; + kfreebsd*-gnu* | kopensolaris*-gnu*) + ;; + nto-qnx*) + ;; + os2-emx) + ;; + *-eabi* | *-gnueabi*) + ;; + -*) + # Blank kernel with real OS is always fine. + ;; + *-*) + echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 + exit 1 + ;; +esac + # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. case $vendor in unknown) - case $os in - riscix*) + case $cpu-$os in + *-riscix*) vendor=acorn ;; - sunos*) + *-sunos*) vendor=sun ;; - cnk*|-aix*) + *-cnk* | *-aix*) vendor=ibm ;; - beos*) + *-beos*) vendor=be ;; - hpux*) + *-hpux*) vendor=hp ;; - mpeix*) + *-mpeix*) vendor=hp ;; - hiux*) + *-hiux*) vendor=hitachi ;; - unos*) + *-unos*) vendor=crds ;; - dgux*) + *-dgux*) vendor=dg ;; - luna*) + *-luna*) vendor=omron ;; - genix*) + *-genix*) vendor=ns ;; - clix*) + *-clix*) vendor=intergraph ;; - mvs* | opened*) + *-mvs* | *-opened*) + vendor=ibm + ;; + *-os400*) vendor=ibm ;; - os400*) + s390-* | s390x-*) vendor=ibm ;; - ptx*) + *-ptx*) vendor=sequent ;; - tpf*) + *-tpf*) vendor=ibm ;; - vxsim* | vxworks* | windiss*) + *-vxsim* | *-vxworks* | *-windiss*) vendor=wrs ;; - aux*) + *-aux*) vendor=apple ;; - hms*) + *-hms*) vendor=hitachi ;; - mpw* | macos*) + *-mpw* | *-macos*) vendor=apple ;; - *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) + *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) vendor=atari ;; - vos*) + *-vos*) vendor=stratus ;; esac ;; esac -echo "$cpu-$vendor-$os" +echo "$cpu-$vendor-${kernel:+$kernel-}$os" exit # Local variables: diff -Nurp inn-2.6.3/support/getrra-c-util inn-2.6.4/support/getrra-c-util --- inn-2.6.3/support/getrra-c-util 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/support/getrra-c-util 2021-01-21 13:53:07.000000000 -0800 @@ -1,6 +1,6 @@ #!/bin/sh -## $Id: getrra-c-util 10307 2018-12-02 14:31:42Z iulius $ +## $Id: getrra-c-util 10483 2021-01-04 07:12:27Z iulius $ ## ## Synchronize INN files maintained in rra-c-util with upstream. ## @@ -119,7 +119,7 @@ dnl \$Id\$' \ # define SEEK_END 2\\ #endif\\ " \ - -e "122 i \\ + -e "135 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,16 @@ extern ssize_t pwrite(int, const void *, extern int symlink(const char *, const char *);\\ #endif\\ " \ - -e "163 i \\ + -e "147 i \\ +#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)\\ + __attribute__((__format__(printf, 3, 0)));\\ +#endif" \ + -e "164 i \\ #if !HAVE_DECL_STRLCAT\\ extern size_t strlcat(char *, const char *, size_t);\\ #endif\\ @@ -246,9 +255,9 @@ download m4/pam-const.m4 m4 pam-const.m4 download m4/perl.m4 m4 perl.m4 download m4/python.m4 m4 python.m4 download m4/sasl.m4 m4 sasl.m4 -download m4/snprintf.m4 m4 snprintf.m4 download m4/socket-unix.m4 m4 socket-unix.m4 download m4/socket.m4 m4 socket.m4 +download m4/systemd.m4 m4 systemd.m4 download m4/vamacros.m4 m4 vamacros.m4 download m4/zlib.m4 m4 zlib.m4 @@ -264,9 +273,9 @@ download portable/inet_ntop.c lib inet_n download portable/macros.h include/portable macros.h download portable/mkstemp.c lib mkstemp.c download portable/reallocarray.c lib reallocarray.c +download portable/sd-daemon.h include/portable sd-daemon.h download portable/setenv.c lib setenv.c download portable/seteuid.c lib seteuid.c -download portable/snprintf.c lib snprintf.c download portable/socket.h include/portable socket.h download portable/socket-unix.h include/portable socket-unix.h download portable/stdbool.h include/portable stdbool.h @@ -300,7 +309,6 @@ download tests/portable/inet_ntop-t.c te download tests/portable/mkstemp-t.c tests/lib mkstemp-t.c download tests/portable/reallocarray-t.c tests/lib reallocarray-t.c download tests/portable/setenv-t.c tests/lib setenv-t.c -download tests/portable/snprintf-t.c tests/lib snprintf-t.c ## Synchronize test suite files for utility functions from upstream. download tests/util/buffer-t.c tests/lib buffer-t.c diff -Nurp inn-2.6.3/support/install-sh inn-2.6.4/support/install-sh --- inn-2.6.3/support/install-sh 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/support/install-sh 2021-01-21 13:53:07.000000000 -0800 @@ -1,19 +1,14 @@ #!/bin/sh # install - install a program, script, or datafile -scriptversion=2018-03-11.20; # UTC +scriptversion=2020-11-13.01; # UTC ############################# # NOTICE TO INN MAINTAINERS # ############################# # This file has been modified from the standard libtool version by adding -# the -B option to request saving of the original file (if install is -# overwriting an existing file). -B takes an argument: the suffix to use. -# INN invokes this script as "install-sh -B .OLD". Also modified to use -# cp -p instead of just cp to install programs when invoked as install -c. -# It also handles .exe extensions, for Cygwin portability, and prevents -# existing directories from being chown'ed. -# Search for comments below containing "INN". +# code to handle .exe extensions, for Cygwin portability. +# Search for the comment below containing "INN". # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the @@ -81,7 +76,10 @@ posix_mkdir= # Desired mode of installed file. mode=0755 -# INN addition: backupsuffix (for -B). +# Create dirs (including intermediate dirs) using mode 755. +# This is like GNU 'install' as of coreutils 8.32 (2020). +mkdir_umask=22 + backupsuffix= chgrpcmd= chmodcmd=$chmodprog @@ -98,7 +96,6 @@ dst_arg= copy_on_change=false is_target_a_directory=possibly -# INN addition: -B SUFFIX, and use -c. usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY @@ -113,29 +110,34 @@ Options: --help display this help and exit. --version display version info and exit. - -B SUFFIX backup a file with the suffix SUFFIX. - -c use 'cp -p' instead of 'cp' - -C install only if different (preserve the last data modification time) + -c (ignored) + -C install only if different (preserve data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. + -p pass -p to $cpprog. -s $stripprog installed files. + -S SUFFIX attempt to back up existing files, with suffix SUFFIX. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG + +By default, rm is invoked with -f; when overridden with RMPROG, +it's up to you to specify -f if you want it. + +If -S is not specified, no backups are attempted. + +Email bug reports to bug-automake@gnu.org. +Automake home page: https://www.gnu.org/software/automake/ " -# INN modification: add -B and do something with -c. while test $# -ne 0; do case $1 in - -B) backupsuffix="$2" - shift;; - - -c) cpprog="$cpprog -p";; + -c) ;; -C) copy_on_change=true;; @@ -157,8 +159,13 @@ while test $# -ne 0; do -o) chowncmd="$chownprog $2" shift;; + -p) cpprog="$cpprog -p";; + -s) stripcmd=$stripprog;; + -S) backupsuffix="$2" + shift;; + -t) is_target_a_directory=always dst_arg=$2 @@ -280,7 +287,7 @@ do dstdir=$dst test -d "$dstdir" dstdir_status=$? - # INN modification: don't chown directories that already exist. + # Don't chown directories that already exist. if test $dstdir_status = 0; then chowncmd="" fi @@ -309,8 +316,8 @@ do dstdir=$dst dstbase=`basename "$src"` case $dst in - */) dst=$dst$dstbase;; - *) dst=$dst/$dstbase;; + */) dst=$dst$dstbase;; + *) dst=$dst/$dstbase;; esac dstdir_status=0 else @@ -330,22 +337,6 @@ do if test $dstdir_status != 0; then case $posix_mkdir in '') - # Create intermediate dirs using mode 755 as modified by the umask. - # This is like FreeBSD 'install' as of 1997-10-28. - umask=`umask` - case $stripcmd.$umask in - # Optimize common cases. - *[2367][2367]) mkdir_umask=$umask;; - .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; - - *[0-7]) - mkdir_umask=`expr $umask + 22 \ - - $umask % 100 % 40 + $umask % 20 \ - - $umask % 10 % 4 + $umask % 2 - `;; - *) mkdir_umask=$umask,go-w;; - esac - # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then @@ -355,52 +346,49 @@ do fi posix_mkdir=false - case $umask in - *[123567][0-7][0-7]) - # POSIX mkdir -p sets u+wx bits regardless of umask, which - # 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/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 && - $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. - 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 -- "$test_tmpdir" && { - ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` - test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" - } - } - then posix_mkdir=: - fi - rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" - else - # Remove any dirs left behind by ancient mkdir implementations. - rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null - fi - trap '' 0;; - esac;; + # The $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/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'. + if (umask $mkdir_umask && + $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. + 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 -- "$test_tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null + fi + trap '' 0;; esac if @@ -411,7 +399,7 @@ do then : else - # The umask is ridiculous, or mkdir does not conform to POSIX, + # mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. @@ -440,7 +428,7 @@ do prefixes= else if $posix_mkdir; then - (umask=$mkdir_umask && + (umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 @@ -480,7 +468,18 @@ do trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. - (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && + (umask $cp_umask && + { test -z "$stripcmd" || { + # Create $dsttmp read-write so that cp doesn't create it read-only, + # which would cause strip to fail. + if test -z "$doit"; then + : >"$dsttmp" # No need to fork-exec 'touch'. + else + $doit touch "$dsttmp" + fi + } + } && + $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # @@ -506,12 +505,13 @@ do then rm -f "$dsttmp" else - # INN addition: use -B. - # If $backupsuffix is set, rename the existing file if it exists. - if [ x"$backupsuffix" != x ] && [ -f "$dst" ]; then + # If $backupsuffix is set, and the file being installed + # already exists, attempt a backup. Don't worry if it fails, + # e.g., if mv doesn't support -f. + if test -n "$backupsuffix" && test -f "$dst"; then $doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null fi - + # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || @@ -526,9 +526,9 @@ do # file should still install successfully. { test ! -f "$dst" || - $doit $rmcmd -f "$dst" 2>/dev/null || + $doit $rmcmd "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && - { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + { $doit $rmcmd "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 diff -Nurp inn-2.6.3/support/ltmain.sh inn-2.6.4/support/ltmain.sh --- inn-2.6.3/support/ltmain.sh 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/support/ltmain.sh 2021-01-21 13:53:07.000000000 -0800 @@ -4,10 +4,10 @@ # NOTICE TO INN MAINTAINERS # ############################# # This file has been modified from the standard libtool version to -# recognize the additional -B flag that INN's install-sh program -# recognizes; apart from that, it is identical to the stock libtool -# distribution. -# Only one part of the code is modified; search for the comment below +# recognize the additional -S flag that INN's install-sh program +# supports, and fix a bug when using --preserve-dup-deps Libtool flag; +# apart from that, it is identical to the stock libtool distribution. +# Only two parts of the code are modified; search for the comments below # containing "INN". # libtool (GNU libtool) 2.4.6 @@ -39,7 +39,7 @@ PROGRAM=libtool PACKAGE=libtool -VERSION="2.4.6 Debian-2.4.6-9" +VERSION="2.4.6 Debian-2.4.6-15" package_revision=2.4.6 @@ -395,7 +395,7 @@ EXIT_SKIP=77 # $? = 77 is used to indi # putting '$debug_cmd' at the start of all your functions, you can get # bash to show function call trace with: # -# debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name +# debug_cmd='echo "${FUNCNAME[0]} $*" >&2' bash your-script-name debug_cmd=${debug_cmd-":"} exit_cmd=: @@ -2149,7 +2149,7 @@ include the following information: compiler: $LTCC compiler flags: $LTCFLAGS linker: $LD (gnu? $with_gnu_ld) - version: $progname $scriptversion Debian-2.4.6-9 + version: $progname $scriptversion Debian-2.4.6-15 automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` @@ -4240,8 +4240,8 @@ func_mode_install () prev=$arg fi ;; - -g | -m | -o | -B) - # Modification for INN just above (add support for the -B flag). + -g | -m | -o | -S) + # Modification for INN just above (add support for the -S flag). prev=$arg ;; -s) @@ -7377,10 +7377,12 @@ func_mode_link () # -stdlib=* select c++ std lib with clang # -fsanitize=* Clang/GCC memory and address sanitizer # -fuse-ld=* Linker select flags for GCC + # -static-* direct GCC to link specific libraries statically + # -fcilkplus Cilk Plus language extension features for C/C++ -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \ - -specs=*|-fsanitize=*|-fuse-ld=*) + -specs=*|-fsanitize=*|-fuse-ld=*|-static-*|-fcilkplus) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result func_append compile_command " $arg" @@ -8684,41 +8686,46 @@ func_mode_link () eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do - # FIXME: Pedantically, this is the right thing to do, so - # that some nasty dependency loop isn't accidentally - # broken: - #new_libs="$deplib $new_libs" - # Pragmatically, this seems to cause very few problems in - # practice: - case $deplib in - -L*) new_libs="$deplib $new_libs" ;; - -R*) ;; - *) - # And here is the reason: when a library appears more - # than once as an explicit dependence of a library, or - # is implicitly linked in more than once by the - # compiler, it is considered special, and multiple - # occurrences thereof are not removed. Compare this - # with having the same library being listed as a - # dependency of multiple other libraries: in this case, - # we know (pedantically, we assume) the library does not - # need to be listed more than once, so we keep only the - # last copy. This is not always right, but it is rare - # enough that we require users that really mean to play - # such unportable linking tricks to link the library - # using -Wl,-lname, so that libtool does not consider it - # for duplicate removal. - case " $specialdeplibs " in - *" $deplib "*) new_libs="$deplib $new_libs" ;; + # Modification for INN in the loop (fix --preserve-dup-deps). + if $opt_preserve_dup_deps; then + # Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken. + new_libs="$deplib $new_libs" + else + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; *) - case " $new_libs " in - *" $deplib "*) ;; - *) new_libs="$deplib $new_libs" ;; - esac - ;; - esac - ;; - esac + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. And if not possible for portability + # reasons, then --preserve-dup-deps should be used. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + fi done tmp_libs= for deplib in $new_libs; do diff -Nurp inn-2.6.3/support/mkmanifest inn-2.6.4/support/mkmanifest --- inn-2.6.3/support/mkmanifest 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/support/mkmanifest 2021-01-21 13:53:07.000000000 -0800 @@ -1,6 +1,6 @@ #! /usr/bin/perl -w -## $Id: mkmanifest 10229 2018-01-28 21:21:21Z iulius $ +## $Id: mkmanifest 10398 2020-11-12 20:23:42Z iulius $ ## ## Generate a filename-only manifest from an INN tree. ## @@ -267,6 +267,7 @@ support/fixscript tests/runtests tests/authprogs/ident.t tests/clients/server-list +tests/docs/pod.t tests/innd/artparse.t tests/innd/chan.t tests/lib/asprintf.t diff -Nurp inn-2.6.3/tests/Makefile inn-2.6.4/tests/Makefile --- inn-2.6.3/tests/Makefile 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/tests/Makefile 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -## $Id: Makefile 10229 2018-01-28 21:21:21Z iulius $ +## $Id: Makefile 10498 2021-01-05 16:11:07Z iulius $ include ../Makefile.global @@ -32,7 +32,7 @@ TESTS = authprogs/ident.t innd/artparse. ## Extra stuff that needs to be built before tests can be run. -EXTRA = runtests clients/server-list lib/xmalloc +EXTRA = runtests clients/server-list docs/pod.t lib/xmalloc all check test tests: $(TESTS) $(EXTRA) ./runtests -l TESTS @@ -51,10 +51,11 @@ $(FIXSCRIPT): @echo Run configure before running make. See INSTALL for details. @exit 1 -.c.o: $*.c +.c.o: $(CC) $(CFLAGS) -c -o $@ $*.c -LINK = $(LIBTOOLLD) $(CC) $(LDFLAGS) $(BDB_LDFLAGS) $(SSL_LDFLAGS) $(SASL_LDFLAGS) $(KRB5_LDFLAGS) -o $@ +LINK = $(LIBLD) $(LDFLAGS) $(BDB_LDFLAGS) $(SSL_LDFLAGS) $(SASL_LDFLAGS) $(KRB5_LDFLAGS) -o $@ +LINKDEPS = $(LIBLDDEPS) $(LDFLAGS) $(BDB_LDFLAGS) $(SSL_LDFLAGS) $(SASL_LDFLAGS) $(KRB5_LDFLAGS) -o $@ STORAGEDEPS = $(LIBSTORAGE) $(LIBHIST) $(LIBINN) STORAGELIBS = $(STORAGEDEPS) $(STORAGE_LIBS) @@ -67,7 +68,8 @@ INNOBJS = ../innd/art.o ../innd/cc.o .. # The libraries innd needs to link. INNDLIBS = $(LIBSTORAGE) $(LIBHIST) $(LIBINN) $(STORAGE_LIBS) \ - $(PYTHON_LIBS) $(REGEX_LIBS) $(LIBS) $(PERL_LIBS) + $(SYSTEMD_LIBS) \ + $(PYTHON_LIBS) $(REGEX_LIBS) $(LIBS) $(PERL_LIBS) runtests: runtests.o $(LINK) runtests.o @@ -75,6 +77,9 @@ runtests: runtests.o clients/server-list: clients/server-list.in $(FIXSCRIPT) $(FIXSCRIPT) -i clients/server-list.in +docs/pod.t: docs/pod.t.in $(FIXSCRIPT) + $(FIXSCRIPT) -i docs/pod.t.in + authprogs/ident.t: authprogs/ident-t.o tap/basic.o $(LIBINN) $(LINK) authprogs/ident-t.o tap/basic.o $(LIBINN) $(LIBS) @@ -104,8 +109,8 @@ lib/confparse.t: lib/confparse-t.o tap/b $(LINK) $(LIBM_LDFLAGS) lib/confparse-t.o tap/basic.o tap/float.o \ tap/messages.o tap/string.o $(LIBINN) -lib/date.t: lib/date-t.o tap/basic.o $(LIBINN) - $(LINK) lib/date-t.o tap/basic.o $(LIBINN) +lib/date.t: lib/date-t.o tap/basic.o tap/string.o $(LIBINN) + $(LINK) lib/date-t.o tap/basic.o tap/string.o $(LIBINN) lib/dispatch.t: lib/dispatch-t.o tap/basic.o $(LIBINN) $(LINK) lib/dispatch-t.o tap/basic.o $(LIBINN) @@ -266,22 +271,22 @@ nnrpd/auth-ext.t: nnrpd/auth-ext-t.o ../ tap/messages.o tap/string.o $(LIBINN) overview/api.t: overview/api-t.o tap/basic.o $(STORAGEDEPS) - $(LINK) overview/api-t.o tap/basic.o $(STORAGELIBS) $(LIBS) + $(LINKDEPS) overview/api-t.o tap/basic.o $(STORAGELIBS) $(LIBS) overview/buffindexed-t.o: overview/overview-t.c $(CC) $(CFLAGS) -DOVTYPE=buffindexed -c -o $@ overview/overview-t.c overview/buffindexed.t: overview/buffindexed-t.o tap/basic.o $(STORAGEDEPS) - $(LINK) overview/buffindexed-t.o tap/basic.o $(STORAGELIBS) $(LIBS) + $(LINKDEPS) overview/buffindexed-t.o tap/basic.o $(STORAGELIBS) $(LIBS) overview/tradindexed-t.o: overview/overview-t.c $(CC) $(CFLAGS) -DOVTYPE=tradindexed -c -o $@ overview/overview-t.c overview/tradindexed.t: overview/tradindexed-t.o tap/basic.o $(STORAGEDEPS) - $(LINK) overview/tradindexed-t.o tap/basic.o $(STORAGELIBS) $(LIBS) + $(LINKDEPS) overview/tradindexed-t.o tap/basic.o $(STORAGELIBS) $(LIBS) overview/xref.t: overview/xref-t.o tap/basic.o $(STORAGEDEPS) - $(LINK) overview/xref-t.o tap/basic.o $(STORAGELIBS) $(LIBS) + $(LINKDEPS) overview/xref-t.o tap/basic.o $(STORAGELIBS) $(LIBS) util/innbind.t: util/innbind-t.o tap/basic.o $(LIBINN) $(LINK) util/innbind-t.o tap/basic.o $(LIBINN) $(LIBS) diff -Nurp inn-2.6.3/tests/docs/pod.t inn-2.6.4/tests/docs/pod.t --- inn-2.6.3/tests/docs/pod.t 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/tests/docs/pod.t 1969-12-31 16:00:00.000000000 -0800 @@ -1,86 +0,0 @@ -#!/usr/bin/perl -# -# $Id: pod.t 10311 2018-12-17 08:04:06Z iulius $ -# -# Check all POD documents in the tree for POD formatting errors. -# -# Copyright 2016 Russ Allbery -# Copyright 2012-2014 -# The Board of Trustees of the Leland Stanford Junior University -# -# This file is part of C TAP Harness. The current version plus supporting -# documentation is at . -# -# 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 - -use 5.006; -use strict; -use warnings; - -use File::Spec; - -# Red Hat's base perl package doesn't include Test::More (one has to install -# the perl-core package in addition). Try to detect this and skip any Perl -# tests if Test::More is not present. -eval { - require Test::More; - Test::More->import(); -}; -if ($@) { - print "1..0 # SKIP Test::More required for test\n" - or croak('Cannot write to stdout'); - exit 0; -} - -# Abort if C_TAP_SOURCE isn't set. -if (!$ENV{C_TAP_SOURCE}) { - BAIL_OUT('C_TAP_SOURCE environment variable not set'); -} - -# Load the Test::Pod module. -if (!eval { require Test::Pod }) { - plan(skip_all => 'Test::Pod required for testing POD'); -} -Test::Pod->import; - -# C_TAP_SOURCE will be the test directory. Change to the parent. -my ($vol, $dirs) = File::Spec->splitpath($ENV{C_TAP_SOURCE}, 1); -my @dirs = File::Spec->splitdir($dirs); -pop(@dirs); -if ($dirs[-1] eq File::Spec->updir) { - pop(@dirs); - pop(@dirs); -} -my $root = File::Spec->catpath($vol, File::Spec->catdir(@dirs), q{}); -chdir($root) or BAIL_OUT("cannot chdir to $root: $!"); - -# Add some additional exclusions, useful mostly for other programs that copy -# this test. -## no critic (TestingAndDebugging::ProhibitNoWarnings) -## no critic (Variables::ProhibitPackageVars) -{ - no warnings 'once'; - $Test::Pod::ignore_dirs{'.libs'} = 'libraries'; -} -## use critic - -# Check syntax of every POD file we can find. -all_pod_files_ok(q{.}); diff -Nurp inn-2.6.3/tests/docs/pod.t.in inn-2.6.4/tests/docs/pod.t.in --- inn-2.6.3/tests/docs/pod.t.in 1969-12-31 16:00:00.000000000 -0800 +++ inn-2.6.4/tests/docs/pod.t.in 2021-01-21 13:53:07.000000000 -0800 @@ -0,0 +1,90 @@ +#!/usr/bin/perl +# +# $Id: pod.t.in 10510 2021-01-11 22:06:59Z iulius $ +# +# Check all POD documents in the tree for POD formatting errors. +# +# Copyright 2016 Russ Allbery +# Copyright 2012-2014 +# The Board of Trustees of the Leland Stanford Junior University +# +# This file is part of C TAP Harness. The current version plus supporting +# documentation is at . +# +# 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 + +use 5.006; +use strict; +use warnings; + +use File::Spec; + +# Red Hat's base perl package doesn't include Test::More (one has to install +# the perl-core package in addition). Try to detect this and skip any Perl +# tests if Test::More is not present. +eval { + require Test::More; + Test::More->import(); +}; +if ($@) { + print "1..0 # SKIP Test::More required for test\n" + or croak('Cannot write to stdout'); + exit 0; +} + +# Abort if C_TAP_SOURCE isn't set. +if (!$ENV{C_TAP_SOURCE}) { + BAIL_OUT('C_TAP_SOURCE environment variable not set'); +} + +# Load the Test::Pod module. +if (!eval { require Test::Pod }) { + plan(skip_all => 'Test::Pod required for testing POD'); +} +# Support for %Test::Pod::ignore_dirs has been fixed in version 1.50. +if ($Test::Pod::VERSION < '1.50') { + plan(skip_all => 'Test::Pod 1.50 required for testing POD'); +} +Test::Pod->import; + +# C_TAP_SOURCE will be the test directory. Change to the parent. +my ($vol, $dirs) = File::Spec->splitpath($ENV{C_TAP_SOURCE}, 1); +my @dirs = File::Spec->splitdir($dirs); +pop(@dirs); +if ($dirs[-1] eq File::Spec->updir) { + pop(@dirs); + pop(@dirs); +} +my $root = File::Spec->catpath($vol, File::Spec->catdir(@dirs), q{}); +chdir($root) or BAIL_OUT("cannot chdir to $root: $!"); + +# Add some additional exclusions, useful mostly for other programs that copy +# this test. +## no critic (TestingAndDebugging::ProhibitNoWarnings) +## no critic (Variables::ProhibitPackageVars) +{ + $Test::Pod::ignore_dirs{'.libs'} = 'libraries'; + $Test::Pod::ignore_dirs{'tests'} = 'test suite'; +} +## use critic + +# Check syntax of every POD file we can find. +all_pod_files_ok(q{.}); diff -Nurp inn-2.6.3/tests/lib/buffer-t.c inn-2.6.4/tests/lib/buffer-t.c --- inn-2.6.3/tests/lib/buffer-t.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/tests/lib/buffer-t.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: buffer-t.c 10246 2018-02-16 21:12:42Z iulius $ +/* $Id: buffer-t.c 10396 2020-11-12 20:19:41Z iulius $ * * buffer test suite. * @@ -6,7 +6,7 @@ * which can be found at . * * Written by Russ Allbery - * Copyright 2002-2004, 2006, 2014-2015 Russ Allbery + * Copyright 2002-2004, 2006, 2014-2015, 2020 Russ Allbery * Copyright 2011-2014 * The Board of Trustees of the Leland Stanford Junior University * @@ -65,8 +65,8 @@ test_append_vsprintf(struct buffer *buff int main(void) { - struct buffer one = { 0, 0, 0, NULL }; - struct buffer two = { 0, 0, 0, NULL }; + struct buffer one = {0, 0, 0, NULL}; + struct buffer two = {0, 0, 0, NULL}; struct buffer *three; int fd; char *data; @@ -80,7 +80,7 @@ main(void) is_int(1024, one.size, "minimum size is 1024"); is_int(0, one.used, "used starts at 0"); is_int(sizeof(test_string1), one.left, "left is correct"); - is_string(test_string1, one.data, "data is corect"); + is_string(test_string1, one.data, "data is correct"); buffer_append(&one, test_string2, sizeof(test_string2)); is_int(1024, one.size, "appended data doesn't change size"); is_int(0, one.used, "or used"); @@ -96,7 +96,9 @@ main(void) ok(memcmp(one.data + one.used, test_string2, sizeof(test_string2)) == 0, "and the middle data is unchanged"); ok(memcmp(one.data + one.used + sizeof(test_string2), test_string1, - sizeof(test_string1)) == 0, "and the final data is correct"); + sizeof(test_string1)) + == 0, + "and the final data is correct"); buffer_set(&one, test_string1, sizeof(test_string1)); buffer_set(&two, test_string2, sizeof(test_string2)); buffer_swap(&one, &two); diff -Nurp inn-2.6.3/tests/lib/date-t.c inn-2.6.4/tests/lib/date-t.c --- inn-2.6.3/tests/lib/date-t.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/tests/lib/date-t.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: date-t.c 10305 2018-12-02 14:21:56Z iulius $ */ +/* $Id: date-t.c 10465 2020-12-24 22:26:47Z eagle $ */ /* makedate test suite */ #include "config.h" @@ -7,6 +7,7 @@ #include "inn/libinn.h" #include "tap/basic.h" +#include "tap/string.h" static const time_t test_times[] = { 28800UL, /* Thu, 1 Jan 1970 00:00:00 -0800 (PST) */ @@ -100,26 +101,29 @@ ok_nntp(int n, time_t right, const char static void check_nntp(int *n, time_t timestamp) { - char date[9], hour[7]; + char *date, *hour; struct tm *tmp_tm, tm; tmp_tm = localtime(×tamp); tm = *tmp_tm; - snprintf(date, sizeof(date), "%02d%02d%02d", - tm.tm_year % 100, tm.tm_mon + 1, tm.tm_mday); - snprintf(hour, sizeof(hour), "%02d%02d%02d", - tm.tm_hour, tm.tm_min, tm.tm_sec); + basprintf(&date, "%02d%02d%02d", + tm.tm_year % 100, tm.tm_mon + 1, tm.tm_mday); + basprintf(&hour, "%02d%02d%02d", tm.tm_hour, tm.tm_min, tm.tm_sec); ok_nntp((*n)++, timestamp, date, hour, true); - snprintf(date, sizeof(date), "%04d%02d%02d", - tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday); + free(date); + basprintf(&date, "%04d%02d%02d", + tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday); ok_nntp((*n)++, timestamp, date, hour, true); + free(date); + free(hour); tmp_tm = gmtime(×tamp); tm = *tmp_tm; - snprintf(date, sizeof(date), "%04d%02d%02d", - tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday); - snprintf(hour, sizeof(hour), "%02d%02d%02d", - tm.tm_hour, tm.tm_min, tm.tm_sec); + basprintf(&date, "%04d%02d%02d", + tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday); + basprintf(&hour, "%02d%02d%02d", tm.tm_hour, tm.tm_min, tm.tm_sec); ok_nntp((*n)++, timestamp, date, hour, false); + free(date); + free(hour); } static void diff -Nurp inn-2.6.3/tests/lib/fakewrite.c inn-2.6.4/tests/lib/fakewrite.c --- inn-2.6.3/tests/lib/fakewrite.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/tests/lib/fakewrite.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: fakewrite.c 10246 2018-02-16 21:12:42Z iulius $ +/* $Id: fakewrite.c 10396 2020-11-12 20:19:41Z iulius $ * * Fake write and writev functions for testing xwrite and xwritev. * @@ -36,8 +36,8 @@ #include -#include "inn/macros.h" #include "lib/fakewrite.h" +#include "inn/macros.h" /* @@ -105,7 +105,7 @@ fake_pwrite(int fd UNUSED, const void *d errno = ENOSPC; return -1; } - if ((size_t) (256 - offset) < total) + if ((size_t)(256 - offset) < total) total = 256 - offset; memcpy(write_buffer + offset, data, total); return total; diff -Nurp inn-2.6.3/tests/lib/fdflag-t.c inn-2.6.4/tests/lib/fdflag-t.c --- inn-2.6.3/tests/lib/fdflag-t.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/tests/lib/fdflag-t.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: fdflag-t.c 10246 2018-02-16 21:12:42Z iulius $ +/* $Id: fdflag-t.c 10523 2021-01-17 21:52:00Z iulius $ * * fdflag test suite. * @@ -33,8 +33,8 @@ #define LIBTEST_NEW_FORMAT 1 #include "config.h" -#include "clibrary.h" #include "portable/socket.h" +#include "clibrary.h" #include #include @@ -116,8 +116,10 @@ main(void) if (read(data, buffer, sizeof(buffer)) < (ssize_t) sizeof(buffer)) sysbail("read failed"); fclose(stderr); + /* Use of echo 'ok 7' does not display it on Solaris 11. */ execlp("sh", "sh", "-c", - "printf 'not ' >&8; echo ok 7; echo 'ok 8' >&9", (char *) 0); + "printf 'not ' >&8; printf 'ok 7\n'; echo 'ok 8' >&9", + (char *) 0); sysbail("exec failed"); } waitpid(child, NULL, 0); diff -Nurp inn-2.6.3/tests/lib/getaddrinfo-t.c inn-2.6.4/tests/lib/getaddrinfo-t.c --- inn-2.6.3/tests/lib/getaddrinfo-t.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/tests/lib/getaddrinfo-t.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: getaddrinfo-t.c 10246 2018-02-16 21:12:42Z iulius $ +/* $Id: getaddrinfo-t.c 10396 2020-11-12 20:19:41Z iulius $ * * getaddrinfo test suite. * @@ -6,7 +6,7 @@ * which can be found at . * * Written by Russ Allbery - * Copyright 2003-2005, 2016 Russ Allbery + * Copyright 2003-2005, 2016, 2019 Russ Allbery * Copyright 2015 Julien ÉLIE * Copyright 2007-2009, 2011-2013 * The Board of Trustees of the Leland Stanford Junior University @@ -22,8 +22,8 @@ #define LIBTEST_NEW_FORMAT 1 #include "config.h" -#include "clibrary.h" #include "portable/socket.h" +#include "clibrary.h" #include "tap/basic.h" @@ -33,12 +33,12 @@ * implementation. */ #if AI_NUMERICSERV == 0 -# undef AI_NUMERICSERV -# define AI_NUMERICSERV 0x0080 +# undef AI_NUMERICSERV +# define AI_NUMERICSERV 0x0080 #endif #if AI_NUMERICHOST == 0 -# undef AI_NUMERICHOST -# define AI_NUMERICHOST 0x0100 +# undef AI_NUMERICHOST +# define AI_NUMERICHOST 0x0100 #endif const char *test_gai_strerror(int); @@ -108,8 +108,7 @@ main(void) "AI_NUMERICSERV with 25 smtp"); ok(test_getaddrinfo(NULL, "25 ", &hints, &ai) == EAI_NONAME, "AI_NUMERICSERV with 25 space"); - ok(test_getaddrinfo(NULL, "25", &hints, &ai) == 0, - "valid AI_NUMERICSERV"); + ok(test_getaddrinfo(NULL, "25", &hints, &ai) == 0, "valid AI_NUMERICSERV"); saddr = (struct sockaddr_in *) (void *) ai->ai_addr; is_int(htons(25), saddr->sin_port, "...right port"); is_int(htonl(0x7f000001UL), saddr->sin_addr.s_addr, "...right address"); @@ -198,14 +197,14 @@ main(void) } /* Hopefully this will always resolve. */ - host = gethostbyname("www.isc.org"); + host = gethostbyname("www.eyrie.org"); if (host == NULL) - skip_block(9, "cannot look up www.isc.org"); + skip_block(9, "cannot look up www.eyrie.org"); else { hints.ai_flags = 0; hints.ai_socktype = SOCK_STREAM; - ok(test_getaddrinfo("www.isc.org", "80", &hints, &ai) == 0, - "lookup of www.isc.org"); + ok(test_getaddrinfo("www.eyrie.org", "80", &hints, &ai) == 0, + "lookup of www.eyrie.org"); is_int(SOCK_STREAM, ai->ai_socktype, "...right socktype"); is_string(NULL, ai->ai_canonname, "...no canonname"); saddr = (struct sockaddr_in *) (void *) ai->ai_addr; @@ -215,8 +214,8 @@ main(void) test_freeaddrinfo(ai); hints.ai_flags = AI_CANONNAME; - ok(test_getaddrinfo("www.isc.org", "80", &hints, &ai) == 0, - "lookup of www.isc.org with A_CANONNAME"); + ok(test_getaddrinfo("www.eyrie.org", "80", &hints, &ai) == 0, + "lookup of www.eyrie.org with A_CANONNAME"); ok(ai->ai_canonname != NULL, "...canonname isn't null"); saddr = (struct sockaddr_in *) (void *) ai->ai_addr; is_int(htons(80), saddr->sin_port, "...right port"); diff -Nurp inn-2.6.3/tests/lib/getnameinfo-t.c inn-2.6.4/tests/lib/getnameinfo-t.c --- inn-2.6.3/tests/lib/getnameinfo-t.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/tests/lib/getnameinfo-t.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: getnameinfo-t.c 10287 2018-05-21 12:42:24Z iulius $ +/* $Id: getnameinfo-t.c 10396 2020-11-12 20:19:41Z iulius $ * * getnameinfo test suite. * @@ -21,8 +21,8 @@ #define LIBTEST_NEW_FORMAT 1 #include "config.h" -#include "clibrary.h" #include "portable/socket.h" +#include "clibrary.h" #include "tap/basic.h" #include "inn/xmalloc.h" @@ -32,7 +32,7 @@ int test_getnameinfo(const struct sockad /* Linux doesn't provide EAI_OVERFLOW, so make up our own for testing. */ #ifndef EAI_OVERFLOW -# define EAI_OVERFLOW 10 +# define EAI_OVERFLOW 10 #endif int @@ -107,14 +107,14 @@ main(void) is_int(0, status, "lookup with NI_NUMERICHOST"); is_string("10.20.30.40", node, "...and found correct IP address"); node[0] = '\0'; - status = test_getnameinfo(sa, sizeof(sin), node, 1, NULL, 0, - NI_NUMERICHOST); + status = + test_getnameinfo(sa, sizeof(sin), node, 1, NULL, 0, NI_NUMERICHOST); is_int(EAI_OVERFLOW, status, "EAI_OVERFLOW with one character"); - status = test_getnameinfo(sa, sizeof(sin), node, 11, NULL, 0, - NI_NUMERICHOST); + status = + test_getnameinfo(sa, sizeof(sin), node, 11, NULL, 0, NI_NUMERICHOST); is_int(EAI_OVERFLOW, status, "EAI_OVERFLOW with 11 characters"); - status = test_getnameinfo(sa, sizeof(sin), node, 12, NULL, 0, - NI_NUMERICHOST); + status = + test_getnameinfo(sa, sizeof(sin), node, 12, NULL, 0, NI_NUMERICHOST); is_int(0, status, "fits into 12 characters"); is_string("10.20.30.40", node, "...and found correct IP address"); diff -Nurp inn-2.6.3/tests/lib/inet_aton-t.c inn-2.6.4/tests/lib/inet_aton-t.c --- inn-2.6.3/tests/lib/inet_aton-t.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/tests/lib/inet_aton-t.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: inet_aton-t.c 10246 2018-02-16 21:12:42Z iulius $ +/* $Id: inet_aton-t.c 10396 2020-11-12 20:19:41Z iulius $ * * inet_aton test suite. * @@ -6,7 +6,7 @@ * which can be found at . * * Written by Russ Allbery - * Copyright 2000-2001, 2004, 2017 Russ Allbery + * Copyright 2000-2001, 2004, 2017, 2020 Russ Allbery * Copyright 2007-2009, 2011 * The Board of Trustees of the Leland Stanford Junior University * @@ -21,8 +21,8 @@ #define LIBTEST_NEW_FORMAT 1 #include "config.h" -#include "clibrary.h" #include "portable/socket.h" +#include "clibrary.h" #include "tap/basic.h" @@ -59,6 +59,8 @@ main(void) { plan(92); + /* clang-format off */ + test_addr( "0.0.0.0", 0); test_addr( "127.0.0.000000", 0x7f000000U); test_addr( "255.255.255.255", 0xffffffffU); @@ -110,5 +112,7 @@ main(void) test_fail( "127..127"); test_fail( "de.ad.be.ef"); + /* clang-format on */ + return 0; } diff -Nurp inn-2.6.3/tests/lib/inet_ntoa-t.c inn-2.6.4/tests/lib/inet_ntoa-t.c --- inn-2.6.3/tests/lib/inet_ntoa-t.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/tests/lib/inet_ntoa-t.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: inet_ntoa-t.c 10246 2018-02-16 21:12:42Z iulius $ +/* $Id: inet_ntoa-t.c 10396 2020-11-12 20:19:41Z iulius $ * * inet_ntoa test suite. * @@ -6,7 +6,7 @@ * which can be found at . * * Written by Russ Allbery - * Copyright 2000-2001, 2004, 2016-2017 Russ Allbery + * Copyright 2000-2001, 2004, 2016-2017, 2020 Russ Allbery * Copyright 2006-2009, 2011 * The Board of Trustees of the Leland Stanford Junior University * @@ -21,8 +21,8 @@ #define LIBTEST_NEW_FORMAT 1 #include "config.h" -#include "clibrary.h" #include "portable/socket.h" +#include "clibrary.h" #include "tap/basic.h" @@ -44,11 +44,13 @@ main(void) { plan(5); + /* clang-format off */ test_addr( "0.0.0.0", 0x0); 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); + /* clang-format on */ return 0; } diff -Nurp inn-2.6.3/tests/lib/inet_ntop-t.c inn-2.6.4/tests/lib/inet_ntop-t.c --- inn-2.6.3/tests/lib/inet_ntop-t.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/tests/lib/inet_ntop-t.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: inet_ntop-t.c 10246 2018-02-16 21:12:42Z iulius $ +/* $Id: inet_ntop-t.c 10396 2020-11-12 20:19:41Z iulius $ * * inet_ntop test suite. * @@ -6,7 +6,7 @@ * which can be found at . * * Written by Russ Allbery - * Copyright 2005, 2017 Russ Allbery + * Copyright 2005, 2017, 2020 Russ Allbery * Copyright 2006-2009, 2011 * The Board of Trustees of the Leland Stanford Junior University * @@ -21,8 +21,8 @@ #define LIBTEST_NEW_FORMAT 1 #include "config.h" -#include "clibrary.h" #include "portable/socket.h" +#include "clibrary.h" #include @@ -30,7 +30,7 @@ /* Some systems too old to have inet_ntop don't have EAFNOSUPPORT. */ #ifndef EAFNOSUPPORT -# define EAFNOSUPPORT EDOM +# define EAFNOSUPPORT EDOM #endif const char *test_inet_ntop(int, const void *, char *, socklen_t); @@ -64,11 +64,13 @@ main(void) ok(test_inet_ntop(AF_INET, NULL, NULL, 11) == NULL, "NULL buffer"); is_int(ENOSPC, errno, "...with right errno"); + /* clang-format off */ test_addr( "0.0.0.0", 0x0); 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); + /* clang-format on */ return 0; } diff -Nurp inn-2.6.3/tests/lib/messages-t.c inn-2.6.4/tests/lib/messages-t.c --- inn-2.6.3/tests/lib/messages-t.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/tests/lib/messages-t.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: messages-t.c 10246 2018-02-16 21:12:42Z iulius $ +/* $Id: messages-t.c 10396 2020-11-12 20:19:41Z iulius $ * * Test suite for error handling routines. * @@ -6,7 +6,7 @@ * which can be found at . * * Written by Russ Allbery - * Copyright 2002, 2004-2005, 2015, 2017 Russ Allbery + * Copyright 2002, 2004-2005, 2015, 2017, 2020 Russ Allbery * Copyright 2009-2012 * The Board of Trustees of the Leland Stanford Junior University * @@ -57,7 +57,7 @@ test1(void *data UNUSED) warn("warning"); } -static void __attribute__((__noreturn__)) +__attribute__((__noreturn__)) static void test2(void *data UNUSED) { die("fatal"); @@ -70,7 +70,7 @@ test3(void *data UNUSED) syswarn("permissions"); } -static void __attribute__((__noreturn__)) +__attribute__((__noreturn__)) static void test4(void *data UNUSED) { errno = EACCES; @@ -84,7 +84,7 @@ test5(void *data UNUSED) warn("warning"); } -static void __attribute__((__noreturn__)) +__attribute__((__noreturn__)) static void test6(void *data UNUSED) { message_program_name = "test6"; @@ -99,7 +99,7 @@ test7(void *data UNUSED) syswarn("perms %d", 7); } -static void __attribute__((__noreturn__)) +__attribute__((__noreturn__)) static void test8(void *data UNUSED) { message_program_name = "test8"; @@ -113,14 +113,14 @@ return10(void) return 10; } -static void __attribute__((__noreturn__)) +__attribute__((__noreturn__)) static void test9(void *data UNUSED) { message_fatal_cleanup = return10; die("fatal"); } -static void __attribute__((__noreturn__)) +__attribute__((__noreturn__)) static void test10(void *data UNUSED) { message_program_name = 0; @@ -129,7 +129,7 @@ test10(void *data UNUSED) sysdie("fatal perm"); } -static void __attribute__((__noreturn__)) +__attribute__((__noreturn__)) static void test11(void *data UNUSED) { message_program_name = "test11"; @@ -139,7 +139,7 @@ test11(void *data UNUSED) sysdie("fatal"); } -static void __attribute__((__format__(printf, 2, 0))) +__attribute__((__format__(printf, 2, 0))) static void log_msg(size_t len, const char *format, va_list args, int error) { fprintf(stderr, "%lu %d ", (unsigned long) len, error); @@ -154,7 +154,7 @@ test12(void *data UNUSED) warn("warning"); } -static void __attribute__((__noreturn__)) +__attribute__((__noreturn__)) static void test13(void *data UNUSED) { message_handlers_die(1, log_msg); @@ -169,7 +169,7 @@ test14(void *data UNUSED) syswarn("warning"); } -static void __attribute__((__noreturn__)) +__attribute__((__noreturn__)) static void test15(void *data UNUSED) { message_handlers_die(2, log_msg, log_msg); @@ -221,22 +221,22 @@ test21(void *data UNUSED) debug("baz"); } -static void __attribute__((__noreturn__)) +__attribute__((__noreturn__)) static void 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); @@ -308,7 +308,7 @@ main(void) is_function_output(test20, NULL, 0, "3 0 foo\n", "test20"); is_function_output(test21, NULL, 0, "test23: baz\n", "test21"); - /* Make sure that it's possible to turn off a message type entirely. */ + /* Make sure that it's possible to turn off a message type entirely. */ is_function_output(test22, NULL, 1, "", "test22"); is_function_output(test23, NULL, 0, "", "test23"); is_function_output(test24, NULL, 0, "first\nthird\n", "test24"); diff -Nurp inn-2.6.3/tests/lib/network/addr-ipv4-t.c inn-2.6.4/tests/lib/network/addr-ipv4-t.c --- inn-2.6.3/tests/lib/network/addr-ipv4-t.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/tests/lib/network/addr-ipv4-t.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: addr-ipv4-t.c 10246 2018-02-16 21:12:42Z iulius $ +/* $Id: addr-ipv4-t.c 10396 2020-11-12 20:19:41Z iulius $ * * Test network address functions for IPv4. * @@ -6,7 +6,7 @@ * which can be found at . * * Written by Russ Allbery - * Copyright 2005, 2013, 2016 Russ Allbery + * Copyright 2005, 2013, 2016, 2020 Russ Allbery * Copyright 2009-2013 * The Board of Trustees of the Leland Stanford Junior University * @@ -34,8 +34,8 @@ #define LIBTEST_NEW_FORMAT 1 #include "config.h" -#include "clibrary.h" #include "portable/socket.h" +#include "clibrary.h" #include "tap/basic.h" #include "inn/network.h" @@ -110,6 +110,7 @@ main(void) freeaddrinfo(ai); /* Tests for network_addr_compare. */ + /* clang-format off */ is_addr_compare(1, "127.0.0.1", "127.0.0.1", NULL); is_addr_compare(0, "127.0.0.1", "127.0.0.2", NULL); is_addr_compare(1, "127.0.0.1", "127.0.0.0", "31"); @@ -123,8 +124,10 @@ main(void) is_addr_compare(0, "129.0.0.0", "1.0.0.0", "1"); is_addr_compare(1, "129.0.0.0", "1.0.0.0", "0"); is_addr_compare(1, "129.0.0.0", "1.0.0.0", "0.0.0.0"); + /* clang-format on */ /* Test some invalid addresses. */ + /* clang-format off */ is_addr_compare(0, "fred", "fred", NULL); is_addr_compare(0, "", "", NULL); is_addr_compare(0, "", "", "0"); @@ -133,6 +136,7 @@ main(void) is_addr_compare(0, "127.0.0.1", "127.0.0.1", "1p"); is_addr_compare(0, "127.0.0.1", "127.0.0.1", "-1"); is_addr_compare(0, "127.0.0.1", "127.0.0.1", "33"); + /* clang-format on */ /* Test setting various socket options. */ fd = socket(PF_INET, SOCK_STREAM, IPPROTO_IP); diff -Nurp inn-2.6.3/tests/lib/network/addr-ipv6-t.c inn-2.6.4/tests/lib/network/addr-ipv6-t.c --- inn-2.6.3/tests/lib/network/addr-ipv6-t.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/tests/lib/network/addr-ipv6-t.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: addr-ipv6-t.c 10246 2018-02-16 21:12:42Z iulius $ +/* $Id: addr-ipv6-t.c 10396 2020-11-12 20:19:41Z iulius $ * * Test network address functions for IPv6. * @@ -6,7 +6,7 @@ * which can be found at . * * Written by Russ Allbery - * Copyright 2005, 2013, 2016-2018 Russ Allbery + * Copyright 2005, 2013, 2016-2018, 2020 Russ Allbery * Copyright 2009-2013 * The Board of Trustees of the Leland Stanford Junior University * @@ -34,8 +34,8 @@ #define LIBTEST_NEW_FORMAT 1 #include "config.h" -#include "clibrary.h" #include "portable/socket.h" +#include "clibrary.h" #include @@ -136,6 +136,7 @@ main(void) freeaddrinfo(ai4); /* Tests for network_addr_compare. */ + /* clang-format off */ is_addr_compare(1, ipv6_addr, ipv6_addr, NULL); is_addr_compare(1, ipv6_addr, ipv6_addr, "128"); is_addr_compare(1, ipv6_addr, ipv6_addr, "60"); @@ -152,6 +153,7 @@ main(void) is_addr_compare(0, "ffff::1", "7fff::1", "-1"); is_addr_compare(0, "ffff::1", "ffff::1", "-1"); is_addr_compare(0, "ffff::1", "ffff::1", "129"); + /* clang-format on */ /* Test setting various socket options. */ fd = socket(PF_INET6, SOCK_STREAM, IPPROTO_IP); diff -Nurp inn-2.6.3/tests/lib/network/client-t.c inn-2.6.4/tests/lib/network/client-t.c --- inn-2.6.3/tests/lib/network/client-t.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/tests/lib/network/client-t.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: client-t.c 10287 2018-05-21 12:42:24Z iulius $ +/* $Id: client-t.c 10396 2020-11-12 20:19:41Z iulius $ * * Test suite for network client and read/write functions. * @@ -6,7 +6,7 @@ * which can be found at . * * Written by Russ Allbery - * Copyright 2005, 2013-2014, 2016-2018 Russ Allbery + * Copyright 2005, 2013-2014, 2016-2020 Russ Allbery * Copyright 2009-2013 * The Board of Trustees of the Leland Stanford Junior University * @@ -34,12 +34,12 @@ #define LIBTEST_NEW_FORMAT 1 #include "config.h" -#include "clibrary.h" #include "portable/socket.h" +#include "clibrary.h" #include -#include #include +#include #include "tap/basic.h" #include "inn/macros.h" @@ -52,7 +52,7 @@ * and expects to always succeed on the connection, taking the source address * to pass into network_client_create. */ -static void __attribute__((__noreturn__)) +__attribute__((__noreturn__)) static void client_create_writer(const char *source) { socket_type fd; @@ -82,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 __attribute__((__noreturn__)) +__attribute__((__noreturn__)) static void client_delay_writer(const char *host) { socket_type fd; @@ -105,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 __attribute__((__noreturn__)) +__attribute__((__noreturn__)) static void client_delay_reader(const char *host) { char *buffer; @@ -224,7 +224,8 @@ test_timeout_ipv4(void) socket_type fd, c; pid_t child; socket_type block[20]; - int i, err; + unsigned int conn, i; + int err; /* * Create the listening socket. We set the listening queue size to 1, @@ -261,9 +262,9 @@ test_timeout_ipv4(void) * actually timing out, and sometimes they never do. */ alarm(20); - for (i = 0; i < (int) ARRAY_SIZE(block); i++) { - block[i] = network_connect_host("127.0.0.1", 11119, NULL, 1); - if (block[i] == INVALID_SOCKET) + for (conn = 0; conn < ARRAY_SIZE(block); conn++) { + block[conn] = network_connect_host("127.0.0.1", 11119, NULL, 1); + if (block[conn] == INVALID_SOCKET) break; } err = socket_errno; @@ -276,11 +277,11 @@ test_timeout_ipv4(void) * expect a failure due to timeout in a reasonable amount of time (less * than our 20-second alarm). */ - if (i == ARRAY_SIZE(block)) + if (conn == ARRAY_SIZE(block)) skip_block(2, "short listen queue does not prevent connections"); else { - diag("Finally timed out on socket %d", i); - ok(block[i] == INVALID_SOCKET, "Later connection timed out"); + diag("Finally timed out on socket %u", conn); + ok(block[conn] == INVALID_SOCKET, "Later connection timed out"); if (err == ECONNRESET || err == ECONNREFUSED) skip("connections rejected without timeout"); else @@ -292,7 +293,7 @@ test_timeout_ipv4(void) kill(child, SIGTERM); waitpid(child, NULL, 0); socket_close(c); - for (i--; i >= 0; i--) + for (i = 0; i < conn; i++) if (block[i] != INVALID_SOCKET) socket_close(block[i]); socket_close(fd); @@ -415,8 +416,7 @@ test_network_write(void) */ socket_set_errno(0); ok(network_write(c, buffer, 32 * 1024, 0), "network_write"); - ok(network_write(c, buffer, 32 * 1024, 1), - "network_write with timeout"); + ok(network_write(c, buffer, 32 * 1024, 1), "network_write with timeout"); /* * A longer write cannot be completely absorbed before the client sleep, diff -Nurp inn-2.6.3/tests/lib/network/server-t.c inn-2.6.4/tests/lib/network/server-t.c --- inn-2.6.3/tests/lib/network/server-t.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/tests/lib/network/server-t.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: server-t.c 10311 2018-12-17 08:04:06Z iulius $ +/* $Id: server-t.c 10396 2020-11-12 20:19:41Z iulius $ * * Test suite for network server functions. * @@ -6,7 +6,7 @@ * which can be found at . * * Written by Russ Allbery - * Copyright 2005, 2013, 2016-2018 Russ Allbery + * Copyright 2005, 2013, 2016-2018, 2020 Russ Allbery * Copyright 2009-2013 * The Board of Trustees of the Leland Stanford Junior University * @@ -34,12 +34,12 @@ #define LIBTEST_NEW_FORMAT 1 #include "config.h" -#include "clibrary.h" #include "portable/socket.h" +#include "clibrary.h" #include -#include #include +#include #include "tap/basic.h" #include "inn/fdflag.h" @@ -150,14 +150,14 @@ 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 __attribute__((__noreturn__)) -client_udp_writer(const char *source) +__attribute__((__noreturn__)) static void +client_ipv4_udp_writer(const char *source) { socket_type fd; struct sockaddr_in sin; /* Create and bind the socket. */ - fd = network_client_create(PF_INET, SOCK_DGRAM, source); + fd = network_client_create(AF_INET, SOCK_DGRAM, source); if (fd == INVALID_SOCKET) _exit(1); @@ -177,6 +177,42 @@ client_udp_writer(const char *source) /* + * The same as client_ipv4_udp_writer, but sents the packet via IPv6 instead. + * If somehow this was called without IPv6 being available (which should be + * impossible), do nothing and exit with a non-zero status. + */ +__attribute__((__noreturn__)) static void +client_ipv6_udp_writer(const char *source) +{ +#ifdef HAVE_INET6 + socket_type fd; + struct sockaddr_in6 sin6; + + /* Create and bind the socket. */ + fd = network_client_create(AF_INET6, SOCK_DGRAM, source); + if (fd == INVALID_SOCKET) + _exit(1); + + /* Connect to localhost port 11119. */ + memset(&sin6, 0, sizeof(sin6)); + sin6.sin6_family = AF_INET6; + sin6.sin6_port = htons(11119); + if (inet_pton(AF_INET6, "::1", &sin6.sin6_addr) < 1) + sysbail("cannot convert ::1 to an in6_addr"); + if (connect(fd, (struct sockaddr *) &sin6, sizeof(sin6)) < 0) + _exit(1); + + /* Send our fixed UDP packet. */ + if (send(fd, "socket test\r\n", 13, 0) < 13) + _exit(1); + _exit(0); +#else + _exit(1); +#endif +} + + +/* * When testing the bind (server) functions, we create listening sockets, fork * a child process to connect to it, and accept the connection and read the * data in the server. The test reporting is therefore done by the listener. @@ -236,16 +272,17 @@ test_server_accept(socket_type fd) /* - * A varient version of the server portion of the test. Takes an array of + * A variant 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 an IPv4 address. For skipping purposes, - * this produces three tests. + * correctly by checking that it is an IPv4 or IPv6 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. + * come from other addresses. Hosts that only have IPv6 interfaces will see a + * client connection on ::1 instead. 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 @@ -267,7 +304,10 @@ test_server_accept_any(socket_type fds[] saddr = bcalloc(1, slen); client = network_accept_any(fds, count, saddr, &slen); test_server_connection(client); - is_int(AF_INET, saddr->sa_family, "...address family is IPv4"); + if (saddr->sa_family == AF_INET) + is_int(AF_INET, saddr->sa_family, "...address family is IPv4"); + else + is_int(AF_INET6, saddr->sa_family, "...address family is IPv6"); free(saddr); for (i = 0; i < count; i++) socket_close(fds[i]); @@ -432,9 +472,9 @@ test_all(const char *source_ipv4, const client_writer("127.0.0.1", source_ipv4, true); #ifdef HAVE_INET6 } else if (family == AF_INET6) { -# ifdef IPV6_V6ONLY +# ifdef IPV6_V6ONLY client_writer("127.0.0.1", source_ipv4, false); -# endif +# endif client_writer("::1", source_ipv6, true); #endif } else { @@ -465,20 +505,37 @@ test_any(void) socket_type *fds; unsigned int count, i; pid_t child; - int status; + int status, family; + struct sockaddr *saddr; + /* Bind our socket. + * + * If the host has no IPv4 addresses, we may have only an IPv6 socket and + * thus can't us an IPv4 client. Determine the address family of the + * first socket so that we can use an appropriate client. + */ if (!network_bind_all(SOCK_STREAM, 11119, &fds, &count)) sysbail("cannot create or bind socket"); + saddr = get_sockaddr(fds[0]); + family = saddr->sa_family; + free(saddr); ok(1, "network_accept_any test"); + + /* Listen on all bound sockets. */ for (i = 0; i < count; i++) if (listen(fds[i], 1) < 0) sysbail("cannot listen to socket %d", fds[i]); + + /* Write a packet from a client and receive it on the server. */ child = fork(); if (child < 0) sysbail("cannot fork"); - else if (child == 0) - client_writer("127.0.0.1", NULL, true); - else { + else if (child == 0) { + if (family == AF_INET) + client_writer("127.0.0.1", NULL, true); + else + client_writer("::1", NULL, true); + } else { test_server_accept_any(fds, count); waitpid(child, &status, 0); is_int(0, status, "client made correct connections"); @@ -501,22 +558,34 @@ test_any_udp(void) pid_t child; char buffer[BUFSIZ]; ssize_t length; - int status; + int status, family; struct sockaddr_storage addr; struct sockaddr *saddr; - struct sockaddr_in sin; socklen_t addrlen; - /* Bind our UDP socket. */ + /* + * Bind our UDP socket. + * + * If the host has no IPv4 addresses, we may have only an IPv6 socket and + * thus can't us an IPv4 client. Determine the address family of the + * first socket so that we can use an appropriate client. + */ if (!network_bind_all(SOCK_DGRAM, 11119, &fds, &count)) sysbail("cannot create or bind socket"); + saddr = get_sockaddr(fds[0]); + family = saddr->sa_family; + free(saddr); /* Create a child that writes a single UDP packet to the server. */ child = fork(); if (child < 0) sysbail("cannot fork"); - else if (child == 0) - client_udp_writer("127.0.0.1"); + else if (child == 0) { + if (family == AF_INET) + client_ipv4_udp_writer("127.0.0.1"); + else + client_ipv6_udp_writer("::1"); + } /* Set an alarm, since if the client malfunctions, nothing happens. */ alarm(5); @@ -531,19 +600,7 @@ test_any_udp(void) addrlen = sizeof(addr); length = recvfrom(fd, buffer, sizeof(buffer), 0, saddr, &addrlen); is_int(13, length, "...of correct length"); - sin.sin_family = AF_INET; - sin.sin_port = htons(11119); - - /* - * 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 family and port"); + is_int(family, saddr->sa_family, "...from correct family"); buffer[13] = '\0'; is_string("socket test\r\n", buffer, "...and correct contents"); } diff -Nurp inn-2.6.3/tests/lib/qio-t.c inn-2.6.4/tests/lib/qio-t.c --- inn-2.6.3/tests/lib/qio-t.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/tests/lib/qio-t.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,24 +1,27 @@ -/* $Id: qio-t.c 9669 2014-09-03 17:18:22Z iulius $ */ +/* $Id: qio-t.c 10457 2020-12-19 06:10:49Z eagle $ */ /* Test suite for the Quick I/O library */ +#define LIBTEST_NEW_FORMAT 1 + #include "config.h" #include "clibrary.h" #include #include #include -#include "inn/messages.h" #include "inn/qio.h" #include "inn/libinn.h" #include "tap/basic.h" + static void output(int fd, const void *data, size_t size) { if (xwrite(fd, data, size) < 0) - sysdie("Can't write to .testout"); + sysbail("Can't write to .testout"); } + int main(void) { @@ -26,14 +29,9 @@ main(void) unsigned char c; char *result; int i, count, fd; - size_t size = 8192; QIOSTATE *qio; bool success; -#if HAVE_STRUCT_STAT_ST_BLKSIZE - struct stat st; -#endif - for (c = 1, i = 0; i < 255; i++, c++) data[i] = c; data[9] = ' '; @@ -43,27 +41,15 @@ main(void) memcpy(out, data, 255); out[255] = '\0'; fd = open(".testout", O_RDWR | O_CREAT | O_TRUNC, 0644); - if (fd < 0) sysdie("Can't create .testout"); - -#if HAVE_STRUCT_STAT_ST_BLKSIZE - /* Mostly duplicate the code from qio.c so that we can test with lines - exactly as large as the buffer. */ - if (fstat(fd, &st) == 0 && S_ISREG(st.st_mode)) { - size = st.st_blksize; - if (size > 4 * 8192) - size = 8192; - else - while(size < 8192) - size += st.st_blksize; - } -#endif /* HAVE_STRUCT_STAT_ST_BLKSIZE */ + if (fd < 0) + sysbail("Can't create .testout"); /* Start with small, equally sized lines exactly equal to the buffer. Then a line equal in size to the buffer, then a short line and another line equal in size to the buffer, then a half line and lines repeated to fill another buffer, then a line that's one character too long. Finally, put out another short line. */ - count = size / 256; + count = QIO_BUFFERSIZE / 256; for (i = 0; i < count; i++) output(fd, line, 256); for (i = 0; i < count - 1; i++) @@ -83,82 +69,84 @@ main(void) output(fd, line, 256); close(fd); - test_init(36); + plan(36); /* Now make sure we can read all that back correctly. */ qio = QIOopen(".testout"); - ok(1, qio != NULL); - ok(2, !QIOerror(qio)); - ok(3, QIOfileno(qio) > 0); + ok(qio != NULL, "QIOpen works"); + ok(!QIOerror(qio), "...and there is no error state"); + ok(QIOfileno(qio) > 0, "...and QIOfileno returns something valid"); if (unlink(".testout") < 0) - sysdie("Can't unlink .testout"); + sysbail("Can't unlink .testout"); for (success = true, i = 0; i < count; i++) { result = QIOread(qio); success = (success && !QIOerror(qio) && (QIOlength(qio) == 255) && !strcmp(result, (char *) out)); } - ok(4, success); - ok(5, QIOtell(qio) == (off_t) size); + ok(success, "Able to read the first QIO_BUFFERSIZE of data"); + is_int(QIOtell(qio), (off_t) QIO_BUFFERSIZE, "QIOtell is correct"); result = QIOread(qio); - if (strlen(result) < size - 1) { - ok(6, false); + if (strlen(result) < QIO_BUFFERSIZE - 1) { + ok(false, "Read largest possible line"); } else { for (success = true, i = 0; i < count - 1; i++) success = success && !memcmp(result + i * 256, data, 256); success = success && !memcmp(result + i * 256, data, 255); - ok(6, success); + ok(success, "Read largest possible line"); } - ok(7, QIOtell(qio) == (off_t) (2 * size)); + is_int(QIOtell(qio), (off_t) (2 * QIO_BUFFERSIZE), "QIOtell is correct"); result = QIOread(qio); - ok(8, !QIOerror(qio)); - ok(9, QIOlength(qio) == 0); - ok(10, *result == 0); + ok(!QIOerror(qio), "No error on reading an empty line"); + is_int(QIOlength(qio), 0, "Length of the line is 0"); + is_string(result, "", "...and result is an empty string"); result = QIOread(qio); - if (strlen(result) < size - 1) { - ok(11, false); + if (strlen(result) < QIO_BUFFERSIZE - 1) { + ok(false, "Read largest line again"); } else { for (success = true, i = 0; i < count - 1; i++) success = success && !memcmp(result + i * 256, data, 256); success = success && !memcmp(result + i * 256, data, 255); - ok(11, success); + ok(success, "Read largest line again"); } - ok(12, QIOtell(qio) == (off_t) (3 * size + 1)); + is_int(QIOtell(qio), (off_t) (3 * QIO_BUFFERSIZE + 1), + "QIOtell is correct"); result = QIOread(qio); - ok(13, !QIOerror(qio)); - ok(14, QIOlength(qio) == 127); - ok(15, strlen(result) == 127); - ok(16, !memcmp(result, data, 127)); + ok(!QIOerror(qio), "No error on a shorter read"); + is_int(QIOlength(qio), 127, "Length is 127"); + is_int(strlen(result), 127, "String is 127"); + ok(!memcmp(result, data, 127), "Data is correct"); for (success = true, i = 0; i < count; i++) { result = QIOread(qio); success = (success && !QIOerror(qio) && (QIOlength(qio) == 255) && !strcmp(result, (char *) out)); } - ok(17, success); - ok(18, QIOtell(qio) == (off_t) (4 * size + 129)); - result = QIOread(qio); - ok(19, !result); - ok(20, QIOerror(qio)); - ok(21, QIOtoolong(qio)); - result = QIOread(qio); - ok(22, !QIOerror(qio)); - ok(23, QIOlength(qio) == 255); - ok(24, strlen(result) == 255); - ok(25, !memcmp(result, line, 255)); - result = QIOread(qio); - ok(26, !result); - ok(27, !QIOerror(qio)); - ok(28, QIOrewind(qio) == 0); - ok(29, QIOtell(qio) == 0); - result = QIOread(qio); - ok(30, !QIOerror(qio)); - ok(31, QIOlength(qio) == 255); - ok(32, strlen(result) == 255); - ok(33, !strcmp(result, (char *) out)); - ok(34, QIOtell(qio) == 256); + ok(success, "Able to read another batch of lines"); + is_int(QIOtell(qio), (off_t) (4 * QIO_BUFFERSIZE + 129), + "QIOtell is correct"); + result = QIOread(qio); + ok(!result, "Failed to read too long of line"); + ok(QIOerror(qio), "Error reported"); + ok(QIOtoolong(qio), "...and too long flag is set"); + result = QIOread(qio); + ok(!QIOerror(qio), "Reading again succeeds"); + is_int(QIOlength(qio), 255, "...and returns the next block"); + is_int(strlen(result), 255, "...and length is correct"); + ok(!memcmp(result, line, 255), "...and data is correct"); + result = QIOread(qio); + ok(!result, "End of file reached"); + ok(!QIOerror(qio), "...with no error"); + is_int(QIOrewind(qio), 0, "QIOrewind works"); + is_int(QIOtell(qio), 0, "...and QIOtell is correct"); + result = QIOread(qio); + ok(!QIOerror(qio), "Reading the first line works"); + is_int(QIOlength(qio), 255, "...and QIOlength is correct"); + is_int(strlen(result), 255, "...and the length is correct"); + ok(!strcmp(result, (char *) out), "...and the data is correct"); + is_int(QIOtell(qio), 256, "...and QIOtell is correct"); fd = QIOfileno(qio); QIOclose(qio); - ok(35, close(fd) < 0); - ok(36, errno == EBADF); + ok(close(fd) < 0, "QIOclose closed the file descriptor"); + is_int(errno, EBADF, "...as confirmed by errno"); return 0; } diff -Nurp inn-2.6.3/tests/lib/snprintf-t.c inn-2.6.4/tests/lib/snprintf-t.c --- inn-2.6.3/tests/lib/snprintf-t.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/tests/lib/snprintf-t.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,12 +1,13 @@ -/* $Id: snprintf-t.c 10246 2018-02-16 21:12:42Z iulius $ +/* $Id: snprintf-t.c 10396 2020-11-12 20:19:41Z iulius $ * * snprintf test suite. * - * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * The canonical version of this file was maintained (until 2020) in the + * rra-c-util package, which can be found at + * . * * Written by Russ Allbery - * Copyright 2000-2006, 2018 Russ Allbery + * Copyright 2000-2006, 2018-2020 Russ Allbery * Copyright 2009-2010 * The Board of Trustees of the Leland Stanford Junior University * Copyright 1995 Patrick Powell @@ -31,7 +32,7 @@ * formats for easy testing. */ #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 2) || defined(__clang__) -# pragma GCC diagnostic ignored "-Wformat-nonliteral" +# pragma GCC diagnostic ignored "-Wformat-nonliteral" #endif /* @@ -43,20 +44,12 @@ int test_vsnprintf(char *str, size_t cou static const char string[] = "abcdefghijklmnopqrstuvwxyz0123456789"; +/* clang-format off */ + static const char *const fp_formats[] = { - "%-1.5f", "%1.5f", "%31.9f", "%10.5f", "% 10.5f", "%+22.9f", - "%+4.9f", "%01.3f", "%3.1f", "%3.2f", "%.0f", "%.1f", + "%-1.5f", "%1.5f", "%31.6f", "%10.5f", "% 10.5f", "%+22.6f", + "%+4.6f", "%01.3f", "%3.1f", "%3.2f", "%.0f", "%.1f", "%f", - - /* %e and %g formats aren't really implemented yet. */ -#if 0 - "%-1.5e", "%1.5e", "%31.9e", "%10.5e", "% 10.5e", "%+22.9e", - "%+4.9e", "%01.3e", "%3.1e", "%3.2e", "%.0e", "%.1e", - "%e", - "%-1.5g", "%1.5g", "%31.9g", "%10.5g", "% 10.5g", "%+22.9g", - "%+4.9g", "%01.3g", "%3.1g", "%3.2g", "%.0g", "%.1g", - "%g", -#endif NULL }; static const char *const int_formats[] = { @@ -102,10 +95,12 @@ static unsigned long long ullong_nums[] 0 }; +/* clang-format on */ + static void -test_format(bool trunc, const char *expected, int count, - const char *format, ...) +test_format(bool trunc, const char *expected, int count, const char *format, + ...) { char buf[128]; int result; @@ -127,12 +122,13 @@ main(void) long lcount; char lgbuf[128]; - plan(8 + - (18 + (ARRAY_SIZE(fp_formats) - 1) * ARRAY_SIZE(fp_nums) - + (ARRAY_SIZE(int_formats) - 1) * ARRAY_SIZE(int_nums) - + (ARRAY_SIZE(uint_formats) - 1) * ARRAY_SIZE(uint_nums) - + (ARRAY_SIZE(llong_formats) - 1) * ARRAY_SIZE(llong_nums) - + (ARRAY_SIZE(ullong_formats) - 1) * ARRAY_SIZE(ullong_nums)) * 2); + plan(8 + + (18 + (ARRAY_SIZE(fp_formats) - 1) * ARRAY_SIZE(fp_nums) + + (ARRAY_SIZE(int_formats) - 1) * ARRAY_SIZE(int_nums) + + (ARRAY_SIZE(uint_formats) - 1) * ARRAY_SIZE(uint_nums) + + (ARRAY_SIZE(llong_formats) - 1) * ARRAY_SIZE(llong_nums) + + (ARRAY_SIZE(ullong_formats) - 1) * ARRAY_SIZE(ullong_nums)) + * 2); is_int(4, test_snprintf(NULL, 0, "%s", "abcd"), "simple string length"); is_int(2, test_snprintf(NULL, 0, "%d", 20), "number length"); @@ -159,8 +155,8 @@ main(void) string, -2.5); test_format(true, "abcdefghij4444", 14, "%.10s%n%d", string, &count, 4444); is_int(10, count, "correct output from %%n"); - test_format(true, "abcdefghijklmnopqrstuvwxyz01234", 36, "%n%s%ln", - &count, string, &lcount); + test_format(true, "abcdefghijklmnopqrstuvwxyz01234", 36, "%n%s%ln", &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", (char *) NULL); diff -Nurp inn-2.6.3/tests/lib/xmalloc.c inn-2.6.4/tests/lib/xmalloc.c --- inn-2.6.3/tests/lib/xmalloc.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/tests/lib/xmalloc.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,11 +1,11 @@ -/* $Id: xmalloc.c 10246 2018-02-16 21:12:42Z iulius $ +/* $Id: xmalloc.c 10396 2020-11-12 20:19:41Z iulius $ * * Test suite for xmalloc and family. * * The canonical version of this file is maintained in the rra-c-util package, * which can be found at . * - * Copyright 2000-2001, 2006, 2017 Russ Allbery + * Copyright 2000-2001, 2006, 2017, 2020 Russ Allbery * Copyright 2008, 2012-2014 * The Board of Trustees of the Leland Stanford Junior University * @@ -37,10 +37,11 @@ #include "config.h" #include "clibrary.h" +#include #include #include #ifdef HAVE_SYS_TIME_H -# include +# include #endif #include @@ -97,6 +98,7 @@ test_realloc(size_t size) char *buffer; size_t i; + assert(size > 10); buffer = xmalloc(10); if (buffer == NULL) return 0; @@ -104,8 +106,7 @@ test_realloc(size_t size) buffer = xrealloc(buffer, size); if (buffer == NULL) return 0; - if (size > 0) - memset(buffer + 10, 2, size - 10); + memset(buffer + 10, 2, size - 10); for (i = 0; i < 10; i++) if (buffer[i] != 1) return 0; @@ -386,6 +387,7 @@ main(int argc, char *argv[]) #endif } + /* clang-format off */ switch (code) { case 'c': exit(test_calloc(size) ? willfail : 1); case 'm': exit(test_malloc(size) ? willfail : 1); @@ -397,5 +399,7 @@ main(int argc, char *argv[]) case 'v': exit(test_vasprintf(size) ? willfail : 1); default: die("Unknown mode %c", argv[1][0]); } + /* clang-format on */ + exit(1); } diff -Nurp inn-2.6.3/tests/lib/xmalloc.t inn-2.6.4/tests/lib/xmalloc.t --- inn-2.6.3/tests/lib/xmalloc.t 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/tests/lib/xmalloc.t 2021-01-21 13:53:07.000000000 -0800 @@ -1,6 +1,6 @@ #! /bin/sh # -# $Id: xmalloc.t 10246 2018-02-16 21:12:42Z iulius $ +# $Id: xmalloc.t 10396 2020-11-12 20:19:41Z iulius $ # # Test suite for xmalloc and friends. # @@ -8,7 +8,8 @@ # which can be found at . # # Written by Russ Allbery -# Copyright 2000-2001, 2006, 2014, 2016 Russ Allbery +# Copyright 2000-2001, 2006, 2014, 2016, 2019-2020 +# Russ Allbery # Copyright 2008-2010, 2012 # The Board of Trustees of the Leland Stanford Junior University # @@ -35,7 +36,7 @@ . "$C_TAP_SOURCE/tap/libtap.sh" cd "$C_TAP_BUILD/lib" -# Run an xmalloc test. Takes the description, the expectd exit status, the +# Run an xmalloc test. Takes the description, the expected exit status, the # output, and the arguments. ok_xmalloc () { local desc w_status w_output output status @@ -103,46 +104,46 @@ ok_xmalloc "vasprintf large" 0 "" "v" # We assume that there are enough miscellaneous allocations that an allocation # exactly as large as the limit will always fail. ok_xmalloc "malloc fail" 1 \ - "failed to malloc 30000000 bytes at xmalloc.c line 41" \ + "failed to malloc 30000000 bytes at xmalloc.c line 42" \ "m" "30000000" "30000000" ok_xmalloc "realloc fail" 1 \ - "failed to realloc 30000000 bytes at xmalloc.c line 69" \ + "failed to realloc 30000000 bytes at xmalloc.c line 71" \ "r" "30000000" "30000000" ok_xmalloc "reallocarray fail" 1 \ - "failed to reallocarray 30000000 bytes at xmalloc.c line 99" \ + "failed to reallocarray 30000000 bytes at xmalloc.c line 100" \ "y" "30000000" "30000000" ok_xmalloc "strdup fail" 1 \ - "failed to strdup 30000000 bytes at xmalloc.c line 130" \ + "failed to strdup 30000000 bytes at xmalloc.c line 131" \ "s" "30000000" "30000000" ok_xmalloc "strndup fail" 1 \ - "failed to strndup 30000000 bytes at xmalloc.c line 176" \ + "failed to strndup 30000000 bytes at xmalloc.c line 177" \ "n" "30000000" "30000000" ok_xmalloc "calloc fail" 1 \ - "failed to calloc 30000000 bytes at xmalloc.c line 200" \ + "failed to calloc 30000000 bytes at xmalloc.c line 201" \ "c" "30000000" "30000000" ok_xmalloc "asprintf fail" 1 \ - "failed to asprintf 30000000 bytes at xmalloc.c line 224" \ + "failed to asprintf 30000000 bytes at xmalloc.c line 225" \ "a" "30000000" "30000000" ok_xmalloc "vasprintf fail" 1 \ - "failed to vasprintf 30000000 bytes at xmalloc.c line 243" \ + "failed to vasprintf 30000000 bytes at xmalloc.c line 244" \ "v" "30000000" "30000000" # Check our custom error handler. -ok_xmalloc "malloc custom" 1 "malloc 30000000 xmalloc.c 41" \ +ok_xmalloc "malloc custom" 1 "malloc 30000000 xmalloc.c 42" \ "M" "30000000" "30000000" -ok_xmalloc "realloc custom" 1 "realloc 30000000 xmalloc.c 69" \ +ok_xmalloc "realloc custom" 1 "realloc 30000000 xmalloc.c 71" \ "R" "30000000" "30000000" -ok_xmalloc "reallocarray custom" 1 "reallocarray 30000000 xmalloc.c 99" \ +ok_xmalloc "reallocarray custom" 1 "reallocarray 30000000 xmalloc.c 100" \ "Y" "30000000" "30000000" -ok_xmalloc "strdup custom" 1 "strdup 30000000 xmalloc.c 130" \ +ok_xmalloc "strdup custom" 1 "strdup 30000000 xmalloc.c 131" \ "S" "30000000" "30000000" -ok_xmalloc "strndup custom" 1 "strndup 30000000 xmalloc.c 176" \ +ok_xmalloc "strndup custom" 1 "strndup 30000000 xmalloc.c 177" \ "N" "30000000" "30000000" -ok_xmalloc "calloc custom" 1 "calloc 30000000 xmalloc.c 200" \ +ok_xmalloc "calloc custom" 1 "calloc 30000000 xmalloc.c 201" \ "C" "30000000" "30000000" -ok_xmalloc "asprintf custom" 1 "asprintf 30000000 xmalloc.c 224" \ +ok_xmalloc "asprintf custom" 1 "asprintf 30000000 xmalloc.c 225" \ "A" "30000000" "30000000" -ok_xmalloc "vasprintf custom" 1 "vasprintf 30000000 xmalloc.c 243" \ +ok_xmalloc "vasprintf custom" 1 "vasprintf 30000000 xmalloc.c 244" \ "V" "30000000" "30000000" # Check the smaller ones again just for grins. diff -Nurp inn-2.6.3/tests/nnrpd/auth-ext-t.c inn-2.6.4/tests/nnrpd/auth-ext-t.c --- inn-2.6.3/tests/nnrpd/auth-ext-t.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/tests/nnrpd/auth-ext-t.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,12 +1,15 @@ -/* $Id: auth-ext-t.c 10308 2018-12-02 14:33:59Z iulius $ */ +/* $Id: auth-ext-t.c 10467 2020-12-24 22:33:03Z eagle $ */ /* Test suite for auth_external. */ +#define LIBTEST_NEW_FORMAT 1 + #include "config.h" #include "clibrary.h" #include "inn/messages.h" #include "tap/basic.h" #include "tap/messages.h" +#include "tap/string.h" #include "../../nnrpd/nnrpd.h" @@ -41,10 +44,10 @@ client_new(void) return client; } -/* Validate the input file against the expected data. Takes the current test - number and a flag indicating whether we ran an authenticator. */ +/* Validate the input file against the expected data. Takes a flag indicating + whether we ran an authenticator. */ static void -validate_input(int n, bool auth) +validate_input(bool auth) { char *wanted, *seen; @@ -55,34 +58,39 @@ validate_input(int n, bool auth) seen = ReadInFile("input", NULL); if (seen == NULL) { syswarn("unable to read input"); - ok(n, false); + ok(false, "no input"); } else { - ok_string(n, wanted, seen); + is_string(wanted, seen, "input is as expected"); free(seen); } unlink("input"); free(wanted); } -/* Run the test authenticator, checking its input and output. Takes the test - number, the fake client struct, the argument to pass to the authenticator, - the expected username, and the expected error output. Tries it both as a - resolver and an authenticator to be sure there are no surprises. Returns - the next test number. */ -static int -ok_external(int n, struct client *client, const char *arg, const char *user, - const char *error) +/* Run the test authenticator, checking its input and output. Takes the fake + client struct, the argument to pass to the authenticator, the expected + username, and the expected error output. Tries it both as a resolver and + an authenticator to be sure there are no surprises. Returns the next test + number. */ +static void +test_external(struct client *client, const char *arg, const char *user, + const char *error) { - char *result; - char *command; + char *auth_test_path, *result, *command; + + diag("mode %s", arg); + + auth_test_path = test_file_path("nnrpd/auth-test"); + if (auth_test_path == NULL) + bail("cannot find nnrpd/auth-test helper"); - command = concat("auth-test ", arg, (char *) 0); + basprintf(&command, "%s %s", auth_test_path, arg); errors_capture(); result = auth_external(client, command, ".", NULL, NULL); errors_uncapture(); - validate_input(n++, false); - ok_string(n++, user, result); - ok_string(n++, error, errors); + validate_input(false); + is_string(user, result, "user"); + is_string(error, errors, "errors"); if (errors && (error == NULL || strcmp(error, errors) != 0)) warn("%s", errors); free(errors); @@ -91,51 +99,44 @@ ok_external(int n, struct client *client errors_capture(); result = auth_external(client, command, ".", "tester", "s0pers3cret"); errors_uncapture(); - validate_input(n++, true); - ok_string(n++, user, result); - ok_string(n++, error, errors); + validate_input(true); + is_string(user, result, "user with username and password"); + is_string(error, errors, "errors with username and password"); if (errors && (error == NULL || strcmp(error, errors) != 0)) warn("%s", errors); free(errors); errors = NULL; - return n; + test_file_path_free(auth_test_path); } int main(void) { struct client *client; - int n = 1; - if (access("auth-test", F_OK) < 0) { - if (access("nnrpd/auth-test", F_OK) == 0) { - if (chdir("nnrpd") < 0) { - sysbail("cannot chdir to nnrpd"); - } - } - } - client = client_new(); + plan(12 * 6); - test_init(11 * 6); + client = client_new(); - n = ok_external(n, client, "okay", "tester", NULL); - n = ok_external(n, client, "garbage", "tester", NULL); - n = ok_external(n, client, "error", NULL, - "example.com auth: program error: This is an error\n"); - n = ok_external(n, client, "interspersed", "tester", - "example.com auth: program error: This is an error\n"); - n = ok_external(n, client, "empty", NULL, NULL); - n = ok_external(n, client, "empty-error", NULL, - "example.com auth: program exited with status 1\n"); - n = ok_external(n, client, "okay-error", NULL, - "example.com auth: program exited with status 1\n"); - n = ok_external(n, client, "signal", NULL, - "example.com auth: program caught signal 1\n"); - n = ok_external(n, client, "newline", "tester", NULL); - n = ok_external(n, client, "partial", "tester", NULL); - ok_external(n, client, "partial-error", NULL, - "example.com auth: program error: This is an error\n"); + test_external(client, "okay", "tester", NULL); + test_external(client, "garbage", "tester", NULL); + test_external(client, "error", NULL, + "example.com auth: program error: This is an error\n"); + test_external(client, "interspersed", "tester", + "example.com auth: program error: This is an error\n"); + test_external(client, "empty", NULL, NULL); + test_external(client, "empty-error", NULL, + "example.com auth: program exited with status 1\n"); + test_external(client, "okay-error", NULL, + "example.com auth: program exited with status 1\n"); + test_external(client, "signal", NULL, + "example.com auth: program caught signal 1\n"); + test_external(client, "newline", "tester", NULL); + test_external(client, "partial", "tester", NULL); + test_external(client, "partial-close", "tester", NULL); + test_external(client, "partial-error", NULL, + "example.com auth: program error: This is an error\n"); return 0; } diff -Nurp inn-2.6.3/tests/nnrpd/auth-test inn-2.6.4/tests/nnrpd/auth-test --- inn-2.6.3/tests/nnrpd/auth-test 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/tests/nnrpd/auth-test 2021-01-21 13:53:07.000000000 -0800 @@ -1,5 +1,5 @@ #! /bin/sh -# $Id: auth-test 7949 2008-08-05 19:32:57Z iulius $ +# $Id: auth-test 10467 2020-12-24 22:33:03Z eagle $ # # Test resolver and authenticator, used for testing nnrpd external auth. # Saves all of its input into a file named input in the current directory, as @@ -53,6 +53,10 @@ newline) partial) printf 'User:tester' ;; +partial-close) + exec 2>&- + printf 'User:tester' + ;; partial-error) printf 'User:tester' echo 'This is an error' >&2 diff -Nurp inn-2.6.3/tests/runtests.c inn-2.6.4/tests/runtests.c --- inn-2.6.3/tests/runtests.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/tests/runtests.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: runtests.c 10311 2018-12-17 08:04:06Z iulius $ +/* $Id: runtests.c 10523 2021-01-17 21:52:00Z iulius $ * * Run a set of tests, reporting results. * @@ -9,7 +9,7 @@ * 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 + * Copyright 2000-2001, 2004, 2006-2019 Russ Allbery * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -94,9 +94,9 @@ /* Required for fdopen(), getopt(), and putenv(). */ #if defined(__STRICT_ANSI__) || defined(PEDANTIC) -# ifndef _XOPEN_SOURCE -# define _XOPEN_SOURCE 500 -# endif +# ifndef _XOPEN_SOURCE +# define _XOPEN_SOURCE 500 +# endif #endif #include @@ -121,7 +121,7 @@ /* AIX 6.1 (and possibly later) doesn't have WCOREDUMP. */ #ifndef WCOREDUMP -# define WCOREDUMP(status) ((unsigned)(status) & 0x80) +# define WCOREDUMP(status) ((unsigned) (status) &0x80) #endif /* @@ -130,9 +130,9 @@ * have. */ #ifndef STDIN_FILENO -# define STDIN_FILENO 0 -# define STDOUT_FILENO 1 -# define STDERR_FILENO 2 +# define STDIN_FILENO 0 +# define STDOUT_FILENO 1 +# define STDERR_FILENO 2 #endif /* @@ -150,58 +150,50 @@ * $(abs_top_builddir) respectively. */ #ifndef C_TAP_SOURCE -# define C_TAP_SOURCE NULL +# define C_TAP_SOURCE NULL #endif #ifndef C_TAP_BUILD -# define C_TAP_BUILD NULL +# define C_TAP_BUILD NULL #endif /* Test status codes. */ -enum test_status { - TEST_FAIL, - TEST_PASS, - TEST_SKIP, - TEST_INVALID -}; +enum test_status { TEST_FAIL, TEST_PASS, TEST_SKIP, TEST_INVALID }; /* Really, just a boolean, but this is more self-documenting. */ -enum test_verbose { - CONCISE = 0, - VERBOSE = 1 -}; +enum test_verbose { CONCISE = 0, VERBOSE = 1 }; /* Indicates the state of our plan. */ enum plan_status { - PLAN_INIT, /* Nothing seen yet. */ - PLAN_FIRST, /* Plan seen before any tests. */ - PLAN_PENDING, /* Test seen and no plan yet. */ - PLAN_FINAL /* Plan seen after some tests. */ + PLAN_INIT, /* Nothing seen yet. */ + PLAN_FIRST, /* Plan seen before any tests. */ + PLAN_PENDING, /* Test seen and no plan yet. */ + PLAN_FINAL /* Plan seen after some tests. */ }; /* Error exit statuses for test processes. */ -#define CHILDERR_DUP 100 /* Couldn't redirect stderr or stdout. */ -#define CHILDERR_EXEC 101 /* Couldn't exec child process. */ -#define CHILDERR_STDIN 102 /* Couldn't open stdin file. */ -#define CHILDERR_STDERR 103 /* Couldn't open stderr file. */ +#define CHILDERR_DUP 100 /* Couldn't redirect stderr or stdout. */ +#define CHILDERR_EXEC 101 /* Couldn't exec child process. */ +#define CHILDERR_STDIN 102 /* Couldn't open stdin file. */ +#define CHILDERR_STDERR 103 /* Couldn't open stderr file. */ /* Structure to hold data for a set of tests. */ struct testset { - char *file; /* The file name of the test. */ - char **command; /* The argv vector to run the command. */ - enum plan_status plan; /* The status of our plan. */ - unsigned long count; /* Expected count of tests. */ - unsigned long current; /* The last seen test number. */ - unsigned int length; /* The length of the last status message. */ - unsigned long passed; /* Count of passing tests. */ - unsigned long failed; /* Count of failing lists. */ - unsigned long skipped; /* Count of skipped tests (passed). */ - unsigned long allocated; /* The size of the results table. */ - enum test_status *results; /* Table of results by test number. */ - unsigned int aborted; /* Whether the set was aborted. */ - unsigned int reported; /* Whether the results were reported. */ - int status; /* The exit status of the test. */ - unsigned int all_skipped; /* Whether all tests were skipped. */ - char *reason; /* Why all tests were skipped. */ + char *file; /* The file name of the test. */ + char **command; /* The argv vector to run the command. */ + enum plan_status plan; /* The status of our plan. */ + unsigned long count; /* Expected count of tests. */ + unsigned long current; /* The last seen test number. */ + unsigned int length; /* The length of the last status message. */ + unsigned long passed; /* Count of passing tests. */ + unsigned long failed; /* Count of failing lists. */ + unsigned long skipped; /* Count of skipped tests (passed). */ + unsigned long allocated; /* The size of the results table. */ + enum test_status *results; /* Table of results by test number. */ + unsigned int aborted; /* Whether the set was aborted. */ + unsigned int reported; /* Whether the results were reported. */ + int status; /* The exit status of the test. */ + unsigned int all_skipped; /* Whether all tests were skipped. */ + char *reason; /* Why all tests were skipped. */ }; /* Structure to hold a linked list of test sets. */ @@ -247,12 +239,13 @@ Failed Set Fail/Total (% -------------------------- -------------- ---- ---- ------------------------"; /* Include the file name and line number in malloc failures. */ -#define xcalloc(n, size) x_calloc((n), (size), __FILE__, __LINE__) -#define xmalloc(size) x_malloc((size), __FILE__, __LINE__) -#define xstrdup(p) x_strdup((p), __FILE__, __LINE__) -#define xstrndup(p, size) x_strndup((p), (size), __FILE__, __LINE__) -#define xreallocarray(p, n, size) \ - x_reallocarray((p), (n), (size), __FILE__, __LINE__) +#define xcalloc(n, type) \ + ((type *) x_calloc((n), sizeof(type), __FILE__, __LINE__)) +#define xmalloc(size) ((char *) x_malloc((size), __FILE__, __LINE__)) +#define xstrdup(p) x_strdup((p), __FILE__, __LINE__) +#define xstrndup(p, size) x_strndup((p), (size), __FILE__, __LINE__) +#define xreallocarray(p, n, type) \ + ((type *) x_reallocarray((p), (n), sizeof(type), __FILE__, __LINE__)) /* * __attribute__ is available in gcc 2.5 and later, but only with gcc 2.7 @@ -260,9 +253,9 @@ Failed Set Fail/Total (% * (to avoid confusion with other macros). */ #ifndef __attribute__ -# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) -# define __attribute__(spec) /* empty */ -# endif +# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) +# define __attribute__(spec) /* empty */ +# endif #endif /* @@ -273,11 +266,11 @@ Failed Set Fail/Total (% * variadic macro support. */ #if !defined(__attribute__) && !defined(__alloc_size__) -# if defined(__GNUC__) && !defined(__clang__) -# if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 3) -# define __alloc_size__(spec, args...) /* empty */ -# endif -# endif +# if defined(__GNUC__) && !defined(__clang__) +# if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 3) +# define __alloc_size__(spec, args...) /* empty */ +# endif +# endif #endif /* @@ -287,7 +280,7 @@ Failed Set Fail/Total (% * compilation context, but there's no push and pop available. */ #if !defined(__attribute__) && (defined(__llvm__) || defined(__clang__)) -# pragma GCC diagnostic ignored "-Wattributes" +# pragma GCC diagnostic ignored "-Wattributes" #endif /* Declare internal functions that benefit from compiler attributes. */ @@ -395,6 +388,9 @@ x_malloc(size_t size, const char *file, static void * x_reallocarray(void *p, size_t n, size_t size, const char *file, int line) { + n = (n > 0) ? n : 1; + size = (size > 0) ? size : 1; + if (n > 0 && UINT_MAX / n <= size) sysdie("realloc too large at %s line %d", file, line); p = realloc(p, n * size); @@ -415,10 +411,10 @@ x_strdup(const char *s, const char *file size_t len; len = strlen(s) + 1; - p = malloc(len); + p = (char *) malloc(len); if (p == NULL) - sysdie("failed to strdup %lu bytes at %s line %d", - (unsigned long) len, file, line); + sysdie("failed to strdup %lu bytes at %s line %d", (unsigned long) len, + file, line); memcpy(p, s, len); return p; } @@ -440,10 +436,10 @@ x_strndup(const char *s, size_t size, co char *copy; /* Don't assume that the source string is nul-terminated. */ - for (p = s; (size_t) (p - s) < size && *p != '\0'; p++) + for (p = s; (size_t)(p - s) < size && *p != '\0'; p++) ; - len = (size_t) (p - s); - copy = malloc(len + 1); + len = (size_t)(p - s); + copy = (char *) malloc(len + 1); if (copy == NULL) sysdie("failed to strndup %lu bytes at %s line %d", (unsigned long) len, file, line); @@ -540,7 +536,7 @@ tv_sum(const struct timeval *tv1, const static const char * skip_whitespace(const char *p) { - while (isspace((unsigned char)(*p))) + while (isspace((unsigned char) (*p))) p++; return p; } @@ -553,7 +549,7 @@ skip_whitespace(const char *p) static const char * skip_non_whitespace(const char *p) { - while (*p != '\0' && !isspace((unsigned char)(*p))) + while (*p != '\0' && !isspace((unsigned char) (*p))) p++; return p; } @@ -671,10 +667,10 @@ resize_results(struct testset *ts, unsig */ if (ts->allocated == 0) { s = (n > 32) ? n : 32; - ts->results = xcalloc(s, sizeof(enum test_status)); + ts->results = xcalloc(s, enum test_status); } else { s = (n > ts->allocated + 1024) ? n : ts->allocated + 1024; - ts->results = xreallocarray(ts->results, s, sizeof(enum test_status)); + ts->results = xreallocarray(ts->results, s, enum test_status); } /* Set the results for the newly-allocated test array. */ @@ -788,8 +784,7 @@ test_plan(const char *line, struct tests * reported status. */ static void -test_checkline(const char *line, struct testset *ts, - enum test_verbose verbose) +test_checkline(const char *line, struct testset *ts, enum test_verbose verbose) { enum test_status status = TEST_PASS; const char *bail; @@ -829,7 +824,7 @@ test_checkline(const char *line, struct return; /* If we haven't yet seen a plan, look for one. */ - if (ts->plan == PLAN_INIT && isdigit((unsigned char)(*line))) { + if (ts->plan == PLAN_INIT && isdigit((unsigned char) (*line))) { if (!test_plan(line, ts, verbose)) return; } else if (strncmp(line, "1..", 3) == 0) { @@ -880,7 +875,7 @@ test_checkline(const char *line, struct * Handle directives. We should probably do something more interesting * with unexpected passes of todo tests. */ - while (isdigit((unsigned char)(*line))) + while (isdigit((unsigned char) (*line))) line++; line = skip_whitespace(line); if (*line == '#') { @@ -903,10 +898,17 @@ test_checkline(const char *line, struct /* Good results. Increment our various counters. */ switch (status) { - case TEST_PASS: ts->passed++; break; - case TEST_FAIL: ts->failed++; break; - case TEST_SKIP: ts->skipped++; break; - case TEST_INVALID: break; + case TEST_PASS: + ts->passed++; + break; + case TEST_FAIL: + ts->failed++; + break; + case TEST_SKIP: + ts->skipped++; + break; + case TEST_INVALID: + break; } ts->current = current; ts->results[current - 1] = status; @@ -1138,11 +1140,13 @@ test_run(struct testset *ts, enum test_v * retrieve the exit status, and pass that information to test_analyze() * for eventual output. */ - while (fgets(buffer, sizeof(buffer), output)) - if (verbose) - printf("%s", buffer); + if (!ts->aborted) { + while (fgets(buffer, sizeof(buffer), output)) + if (verbose) + printf("%s", buffer); + } fclose(output); - child = waitpid(testpid, &ts->status, 0); + child = waitpid(testpid, &ts->status, WNOHANG); if (child == (pid_t) -1) { if (!ts->reported) { puts("ABORTED"); @@ -1253,7 +1257,7 @@ find_test(const char *name, const char * char *path = NULL; const char *bases[3], *suffix, *base; unsigned int i, j; - const char *suffixes[3] = { "-t", ".t", "" }; + const char *suffixes[3] = {"-t", ".t", ""}; /* Possible base directories. */ bases[0] = "."; @@ -1345,7 +1349,7 @@ parse_test_list_line(const char *line, s } /* Now, build the command. */ - ts->command = xcalloc(len + 1, sizeof(char *)); + ts->command = xcalloc(len + 1, char *); i = 0; if (use_valgrind && valgrind != NULL) { if (use_libtool) { @@ -1387,7 +1391,7 @@ read_test_list(const char *filename, con struct testlist *listhead, *current; /* Create the initial container list that will hold our results. */ - listhead = xcalloc(1, sizeof(struct testlist)); + listhead = xcalloc(1, struct testlist); current = NULL; /* @@ -1418,10 +1422,10 @@ read_test_list(const char *filename, con if (current == NULL) current = listhead; else { - current->next = xcalloc(1, sizeof(struct testlist)); + current->next = xcalloc(1, struct testlist); current = current->next; } - current->ts = xcalloc(1, sizeof(struct testset)); + current->ts = xcalloc(1, struct testset); current->ts->plan = PLAN_INIT; /* Parse the line and store the results in the testset struct. */ @@ -1453,7 +1457,7 @@ build_test_list(char *argv[], int argc, struct testlist *listhead, *current; /* Create the initial container list that will hold our results. */ - listhead = xcalloc(1, sizeof(struct testlist)); + listhead = xcalloc(1, struct testlist); current = NULL; /* Walk the list of arguments and create test sets for them. */ @@ -1461,13 +1465,13 @@ build_test_list(char *argv[], int argc, if (current == NULL) current = listhead; else { - current->next = xcalloc(1, sizeof(struct testlist)); + current->next = xcalloc(1, struct testlist); current = current->next; } - current->ts = xcalloc(1, sizeof(struct testset)); + current->ts = xcalloc(1, struct testset); current->ts->plan = PLAN_INIT; current->ts->file = xstrdup(argv[i]); - current->ts->command = xcalloc(2, sizeof(char *)); + current->ts->command = xcalloc(2, char *); current->ts->command[0] = find_test(current->ts->file, source, build); current->ts->command[1] = NULL; } @@ -1574,10 +1578,10 @@ test_batch(struct testlist *tests, enum /* If the test fails, we shuffle it over to the fail list. */ if (!succeeded) { if (failhead == NULL) { - failhead = xmalloc(sizeof(struct testset)); + failhead = xcalloc(1, struct testlist); failtail = failhead; } else { - failtail->next = xmalloc(sizeof(struct testset)); + failtail->next = xcalloc(1, struct testlist); failtail = failtail->next; } failtail->ts = ts; @@ -1616,8 +1620,7 @@ test_batch(struct testlist *tests, enum else printf("Aborted %lu test sets", aborted); printf(", passed %lu/%lu tests", passed, total); - } - else if (failed == 0) + } else if (failed == 0) fputs("All tests successful", stdout); else printf("Failed %lu/%lu tests, %.2f%% okay", failed, total, @@ -1631,8 +1634,8 @@ test_batch(struct testlist *tests, enum puts("."); printf("Files=%u, Tests=%lu", count, total); printf(", %.2f seconds", tv_diff(&end, &start)); - printf(" (%.2f usr + %.2f sys = %.2f CPU)\n", - tv_seconds(&stats.ru_utime), tv_seconds(&stats.ru_stime), + printf(" (%.2f usr + %.2f sys = %.2f CPU)\n", tv_seconds(&stats.ru_utime), + tv_seconds(&stats.ru_stime), tv_sum(&stats.ru_utime, &stats.ru_stime)); return (failed == 0 && aborted == 0); } diff -Nurp inn-2.6.3/tests/tap/basic.c inn-2.6.4/tests/tap/basic.c --- inn-2.6.3/tests/tap/basic.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/tests/tap/basic.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: basic.c 10311 2018-12-17 08:04:06Z iulius $ +/* $Id: basic.c 10396 2020-11-12 20:19:41Z iulius $ * * Some utility routines for writing tests. * @@ -14,7 +14,7 @@ * documentation is at . * * Written by Russ Allbery - * Copyright 2009-2018 Russ Allbery + * Copyright 2009-2019 Russ Allbery * Copyright 2001-2002, 2004-2008, 2011-2014 * The Board of Trustees of the Leland Stanford Junior University * @@ -46,9 +46,9 @@ #include #include #ifdef _WIN32 -# include +# include #else -# include +# include #endif #include #include @@ -116,8 +116,8 @@ ok_string(int n UNUSED, const char *want /* Windows provides mkdir and rmdir under different names. */ #ifdef _WIN32 -# define mkdir(p, m) _mkdir(p) -# define rmdir(p) _rmdir(p) +# define mkdir(p, m) _mkdir(p) +# define rmdir(p) _rmdir(p) #endif /* @@ -132,7 +132,7 @@ unsigned long testnum = 1; * We can get the highest test count from testnum. */ static unsigned long _planned = 0; -static unsigned long _failed = 0; +static unsigned long _failed = 0; /* * Store the PID of the process that called plan() and only summarize @@ -188,15 +188,15 @@ static struct diag_file *diag_files = NU * print_desc, which has to be done in a macro. Assumes that format is the * argument immediately before the variadic arguments. */ -#define PRINT_DESC(prefix, format) \ - do { \ - if (format != NULL) { \ - va_list args; \ - printf("%s", prefix); \ - va_start(args, format); \ - vprintf(format, args); \ - va_end(args); \ - } \ +#define PRINT_DESC(prefix, format) \ + do { \ + if (format != NULL) { \ + va_list args; \ + printf("%s", prefix); \ + va_start(args, format); \ + vprintf(format, args); \ + va_end(args); \ + } \ } while (0) @@ -234,7 +234,7 @@ concat(const char *first, ...) length++; /* Create the string. */ - result = bmalloc(length); + result = bcalloc_type(length, char); va_start(args, first); offset = 0; for (string = first; string != NULL; string = va_arg(args, const char *)) { @@ -249,6 +249,68 @@ concat(const char *first, ...) /* + * Helper function for check_diag_files to handle a single line in a diag + * file. + * + * The general scheme here used is as follows: read one line of output. If we + * get NULL, check for an error. If there was one, bail out of the test + * program; otherwise, return, and the enclosing loop will check for EOF. + * + * If we get some data, see if it ends in a newline. If it doesn't end in a + * newline, we have one of two cases: our buffer isn't large enough, in which + * case we resize it and try again, or we have incomplete data in the file, in + * which case we rewind the file and will try again next time. + * + * Returns a boolean indicating whether the last line was incomplete. + */ +static int +handle_diag_file_line(struct diag_file *file, fpos_t where) +{ + int size; + size_t length; + + /* Read the next line from the file. */ + size = file->bufsize > INT_MAX ? INT_MAX : (int) file->bufsize; + if (fgets(file->buffer, size, file->file) == NULL) { + if (ferror(file->file)) + sysbail("cannot read from %s", file->name); + return 0; + } + + /* + * See if the line ends in a newline. If not, see which error case we + * have. + */ + length = strlen(file->buffer); + if (file->buffer[length - 1] != '\n') { + int incomplete = 0; + + /* Check whether we ran out of buffer space and resize if so. */ + if (length < file->bufsize - 1) + incomplete = 1; + else { + file->bufsize += BUFSIZ; + file->buffer = + breallocarray_type(file->buffer, file->bufsize, char); + } + + /* + * On either incomplete lines or too small of a buffer, rewind + * and read the file again (on the next pass, if incomplete). + * It's simpler than trying to double-buffer the file. + */ + if (fsetpos(file->file, &where) < 0) + sysbail("cannot set position in %s", file->name); + return incomplete; + } + + /* We saw a complete line. Print it out. */ + printf("# %s", file->buffer); + return 0; +} + + +/* * Check all registered diag_files for any output. We only print out the * output if we see a complete line; otherwise, we wait for the next newline. */ @@ -257,20 +319,10 @@ check_diag_files(void) { struct diag_file *file; fpos_t where; - size_t length; - int size, incomplete; + int incomplete; /* - * Walk through each file and read each line of output available. The - * general scheme here used is as follows: try to read a line of output at - * a time. If we get NULL, check for EOF; on EOF, advance to the next - * file. - * - * If we get some data, see if it ends in a newline. If it doesn't end in - * a newline, we have one of two cases: our buffer isn't large enough, in - * which case we resize it and try again, or we have incomplete data in - * the file, in which case we rewind the file and will try again next - * time. + * Walk through each file and read each line of output available. */ for (file = diag_files; file != NULL; file = file->next) { clearerr(file->file); @@ -282,41 +334,7 @@ check_diag_files(void) /* Continue until we get EOF or an incomplete line of data. */ incomplete = 0; while (!feof(file->file) && !incomplete) { - size = file->bufsize > INT_MAX ? INT_MAX : (int) file->bufsize; - if (fgets(file->buffer, size, file->file) == NULL) { - if (ferror(file->file)) - sysbail("cannot read from %s", file->name); - continue; - } - - /* - * See if the line ends in a newline. If not, see which error - * case we have. Use UINT_MAX as a substitute for SIZE_MAX (see - * the comment for breallocarray). - */ - length = strlen(file->buffer); - if (file->buffer[length - 1] != '\n') { - if (length < file->bufsize - 1) - incomplete = 1; - else { - if (file->bufsize >= UINT_MAX - BUFSIZ) - sysbail("line too long in %s", file->name); - file->bufsize += BUFSIZ; - file->buffer = brealloc(file->buffer, file->bufsize); - } - - /* - * On either incomplete lines or too small of a buffer, rewind - * and read the file again (on the next pass, if incomplete). - * It's simpler than trying to double-buffer the file. - */ - if (fsetpos(file->file, &where) < 0) - sysbail("cannot set position in %s", file->name); - continue; - } - - /* We saw a complete line. Print it out. */ - printf("# %s", file->buffer); + incomplete = handle_diag_file_line(file, where); } } } @@ -573,7 +591,7 @@ is_bool(int left, int right, const char if (success) printf("ok %lu", testnum++); else { - diag(" left: %s", !!left ? "true" : "false"); + diag(" left: %s", !!left ? "true" : "false"); diag("right: %s", !!right ? "true" : "false"); printf("not ok %lu", testnum++); _failed++; @@ -633,7 +651,7 @@ is_string(const char *left, const char * if (success) printf("ok %lu", testnum++); else { - diag(" left: %s", left == NULL ? "(null)" : left); + diag(" left: %s", left == NULL ? "(null)" : left); diag("right: %s", right == NULL ? "(null)" : right); printf("not ok %lu", testnum++); _failed++; @@ -687,8 +705,8 @@ is_blob(const void *left, const void *ri if (success) printf("ok %lu", testnum++); else { - const unsigned char *left_c = left; - const unsigned char *right_c = right; + const unsigned char *left_c = (const unsigned char *) left; + const unsigned char *right_c = (const unsigned char *) right; for (i = 0; i < len; i++) { if (left_c[i] != right_c[i]) @@ -798,12 +816,12 @@ diag_file_add(const char *name) { struct diag_file *file, *prev; - file = bcalloc(1, sizeof(struct diag_file)); + file = bcalloc_type(1, struct diag_file); file->name = bstrdup(name); file->file = fopen(file->name, "r"); if (file->file == NULL) sysbail("cannot open %s", name); - file->buffer = bmalloc(BUFSIZ); + file->buffer = bcalloc_type(BUFSIZ, char); file->bufsize = BUFSIZ; if (diag_files == NULL) diag_files = file; @@ -851,7 +869,7 @@ bcalloc(size_t n, size_t size) p = calloc(n, size); if (p == NULL) - sysbail("failed to calloc %lu", (unsigned long)(n * size)); + sysbail("failed to calloc %lu", (unsigned long) (n * size)); return p; } @@ -922,7 +940,7 @@ bstrdup(const char *s) size_t len; len = strlen(s) + 1; - p = malloc(len); + p = (char *) malloc(len); if (p == NULL) sysbail("failed to strdup %lu bytes", (unsigned long) len); memcpy(p, s, len); @@ -943,10 +961,10 @@ bstrndup(const char *s, size_t n) size_t length; /* Don't assume that the source string is nul-terminated. */ - for (p = s; (size_t) (p - s) < n && *p != '\0'; p++) + for (p = s; (size_t)(p - s) < n && *p != '\0'; p++) ; - length = (size_t) (p - s); - copy = malloc(length + 1); + length = (size_t)(p - s); + copy = (char *) malloc(length + 1); if (copy == NULL) sysbail("failed to strndup %lu bytes", (unsigned long) length); memcpy(copy, s, length); @@ -966,7 +984,7 @@ test_file_path(const char *file) { char *base; char *path = NULL; - const char *envs[] = { "C_TAP_BUILD", "C_TAP_SOURCE", NULL }; + const char *envs[] = {"C_TAP_BUILD", "C_TAP_SOURCE", NULL}; int i; for (i = 0; envs[i] != NULL; i++) { @@ -1041,7 +1059,7 @@ register_cleanup(test_cleanup_func func, { struct cleanup_func *cleanup, **last; - cleanup = bmalloc(sizeof(struct cleanup_func)); + cleanup = bcalloc_type(1, struct cleanup_func); cleanup->func = func; cleanup->func_with_data = func_with_data; cleanup->data = data; diff -Nurp inn-2.6.3/tests/tap/basic.h inn-2.6.4/tests/tap/basic.h --- inn-2.6.3/tests/tap/basic.h 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/tests/tap/basic.h 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: basic.h 10311 2018-12-17 08:04:06Z iulius $ +/* $Id: basic.h 10396 2020-11-12 20:19:41Z iulius $ * * Basic utility routines for the TAP protocol. * @@ -6,7 +6,7 @@ * documentation is at . * * Written by Russ Allbery - * Copyright 2009-2018 Russ Allbery + * Copyright 2009-2019 Russ Allbery * Copyright 2001-2002, 2004-2008, 2011-2012, 2014 * The Board of Trustees of the Leland Stanford Junior University * @@ -34,9 +34,9 @@ #ifndef TAP_BASIC_H #define TAP_BASIC_H 1 +#include /* va_list */ +#include /* size_t */ #include -#include /* va_list */ -#include /* size_t */ /* * Used for iterating through arrays. ARRAY_SIZE returns the number of @@ -44,8 +44,8 @@ * ARRAY_END returns a pointer to the element past the end (ISO C99 makes it * legal to refer to such a pointer as long as it's never dereferenced). */ -#define ARRAY_SIZE(array) (sizeof(array) / sizeof((array)[0])) -#define ARRAY_END(array) (&(array)[ARRAY_SIZE(array)]) +#define ARRAY_SIZE(array) (sizeof(array) / sizeof((array)[0])) +#define ARRAY_END(array) (&(array)[ARRAY_SIZE(array)]) BEGIN_DECLS @@ -103,8 +103,7 @@ int ok(int success, const char *format, __attribute__((__format__(printf, 2, 3))); int okv(int success, const char *format, va_list args) __attribute__((__format__(printf, 2, 0))); -void skip(const char *reason, ...) - __attribute__((__format__(printf, 1, 2))); +void skip(const char *reason, ...) __attribute__((__format__(printf, 1, 2))); /* * Report the same status on, or skip, the next count tests. ok_block() @@ -114,8 +113,8 @@ int ok_block(unsigned long count, int su __attribute__((__format__(printf, 3, 4))); void skip_block(unsigned long count, const char *reason, ...) __attribute__((__format__(printf, 2, 3))); -#endif +#endif /* * 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 @@ -152,10 +151,8 @@ int sysdiag(const char *format, ...) * diag(). Nul characters are not supported in these files and will result in * truncated output. */ -void diag_file_add(const char *file) - __attribute__((__nonnull__)); -void diag_file_remove(const char *file) - __attribute__((__nonnull__)); +void diag_file_add(const char *file) __attribute__((__nonnull__)); +void diag_file_remove(const char *file) __attribute__((__nonnull__)); /* Allocate memory, reporting a fatal error with bail on failure. */ void *bcalloc(size_t, size_t) @@ -172,6 +169,14 @@ char *bstrndup(const char *, size_t) __attribute__((__malloc__, __nonnull__, __warn_unused_result__)); /* + * Macros that cast the return value from b* memory functions, making them + * usable in C++ code and providing some additional type safety. + */ +#define bcalloc_type(n, type) ((type *) bcalloc((n), sizeof(type))) +#define breallocarray_type(p, n, type) \ + ((type *) breallocarray((p), (n), sizeof(type))) + +/* * Find a test file under C_TAP_BUILD or C_TAP_SOURCE, returning the full * path. The returned path should be freed with test_file_path_free(). */ @@ -183,8 +188,7 @@ void test_file_path_free(char *path); * Create a temporary directory relative to C_TAP_BUILD and return the path. * The returned path should be freed with test_tmpdir_free(). */ -char *test_tmpdir(void) - __attribute__((__malloc__, __warn_unused_result__)); +char *test_tmpdir(void) __attribute__((__malloc__, __warn_unused_result__)); void test_tmpdir_free(char *path); /* @@ -206,8 +210,7 @@ void test_tmpdir_free(char *path); typedef void (*test_cleanup_func)(int, int); typedef void (*test_cleanup_func_with_data)(int, int, void *); -void test_cleanup_register(test_cleanup_func) - __attribute__((__nonnull__)); +void test_cleanup_register(test_cleanup_func) __attribute__((__nonnull__)); void test_cleanup_register_with_data(test_cleanup_func_with_data, void *) __attribute__((__nonnull__)); diff -Nurp inn-2.6.3/tests/tap/float.c inn-2.6.4/tests/tap/float.c --- inn-2.6.3/tests/tap/float.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/tests/tap/float.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: float.c 10269 2018-03-16 06:27:18Z iulius $ +/* $Id: float.c 10396 2020-11-12 20:19:41Z iulius $ * * Utility routines for writing floating point tests. * @@ -11,7 +11,7 @@ * This file is part of C TAP Harness. The current version plus supporting * documentation is at . * - * Copyright 2008, 2010, 2012-2018 Russ Allbery + * Copyright 2008, 2010, 2012-2019 Russ Allbery * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -36,9 +36,9 @@ /* Required for isnan() and isinf(). */ #if defined(__STRICT_ANSI__) || defined(PEDANTIC) -# ifndef _XOPEN_SOURCE -# define _XOPEN_SOURCE 600 -# endif +# ifndef _XOPEN_SOURCE +# define _XOPEN_SOURCE 600 +# endif #endif #include @@ -62,11 +62,25 @@ ok_double(int n UNUSED, double wanted, d * 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" +# pragma clang diagnostic ignored "-Wconversion" +# pragma clang diagnostic ignored "-Wdouble-promotion" #endif /* + * Returns true if the two doubles are equal infinities, false otherwise. + * This requires a bit of machination since isinf is not required to return + * different values for positive and negative infinity, and we're trying to + * avoid direct comparisons between floating point numbers. + */ +static int +is_equal_infinity(double left, double right) +{ + if (!isinf(left) || !isinf(right)) + return 0; + return !!(left < 0) == !!(right < 0); +} + +/* * Takes two doubles and requires they be within epsilon of each other. */ int @@ -77,8 +91,7 @@ is_double(double left, double right, dou va_start(args, format); fflush(stderr); - if ((isnan(left) && isnan(right)) - || (isinf(left) && isinf(left) == isinf(right)) + if ((isnan(left) && isnan(right)) || is_equal_infinity(left, right) || fabs(left - right) <= epsilon) { success = 1; okv(1, format, args); diff -Nurp inn-2.6.3/tests/tap/macros.h inn-2.6.4/tests/tap/macros.h --- inn-2.6.3/tests/tap/macros.h 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/tests/tap/macros.h 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: macros.h 10306 2018-12-02 14:26:13Z iulius $ +/* $Id: macros.h 10396 2020-11-12 20:19:41Z iulius $ * * Helpful macros for TAP header files. * @@ -43,9 +43,9 @@ * the other attributes to work with GCC versions between 2.7 and 2.96. */ #ifndef __attribute__ -# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 96) -# define __attribute__(spec) /* empty */ -# endif +# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 96) +# define __attribute__(spec) /* empty */ +# endif #endif /* @@ -56,18 +56,18 @@ * variadic macro support. */ #if !defined(__attribute__) && !defined(__alloc_size__) -# if defined(__GNUC__) && !defined(__clang__) -# if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 3) -# define __alloc_size__(spec, args...) /* empty */ -# endif -# endif +# if defined(__GNUC__) && !defined(__clang__) +# if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 3) +# define __alloc_size__(spec, args...) /* empty */ +# endif +# endif #endif /* Suppress __warn_unused_result__ if gcc is too old. */ #if !defined(__attribute__) && !defined(__warn_unused_result__) -# if __GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 4) -# define __warn_unused_result__ /* empty */ -# endif +# if __GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 4) +# define __warn_unused_result__ /* empty */ +# endif #endif /* @@ -77,7 +77,7 @@ * compilation context, but there's no push and pop available. */ #if !defined(__attribute__) && (defined(__llvm__) || defined(__clang__)) -# pragma GCC diagnostic ignored "-Wattributes" +# pragma GCC diagnostic ignored "-Wattributes" #endif /* Used for unused parameters to silence gcc warnings. */ @@ -90,11 +90,11 @@ #undef BEGIN_DECLS #undef END_DECLS #ifdef __cplusplus -# define BEGIN_DECLS extern "C" { -# define END_DECLS } +# define BEGIN_DECLS extern "C" { +# define END_DECLS } #else -# define BEGIN_DECLS /* empty */ -# define END_DECLS /* empty */ +# define BEGIN_DECLS /* empty */ +# define END_DECLS /* empty */ #endif #endif /* TAP_MACROS_H */ diff -Nurp inn-2.6.3/tests/tap/process.c inn-2.6.4/tests/tap/process.c --- inn-2.6.3/tests/tap/process.c 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/tests/tap/process.c 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: process.c 10246 2018-02-16 21:12:42Z iulius $ +/* $Id: process.c 10396 2020-11-12 20:19:41Z iulius $ * * Utility functions for tests that use subprocesses. * @@ -49,11 +49,11 @@ #include #include #ifdef HAVE_SYS_SELECT_H -# include +# include #endif #include #ifdef HAVE_SYS_TIME_H -# include +# include #endif #include #include @@ -64,7 +64,7 @@ /* May be defined by the build system. */ #ifndef PATH_FAKEROOT -# define PATH_FAKEROOT "" +# define PATH_FAKEROOT "" #endif /* How long to wait for the process to start in seconds. */ @@ -75,12 +75,12 @@ * everything required to stop the process and clean up after it. */ struct process { - pid_t pid; /* PID of child process */ - char *pidfile; /* PID file to delete on process stop */ - char *tmpdir; /* Temporary directory for log file */ - char *logfile; /* Log file of process output */ - bool is_child; /* Whether we can waitpid for process */ - struct process *next; /* Next process in global list */ + pid_t pid; /* PID of child process */ + char *pidfile; /* PID file to delete on process stop */ + char *tmpdir; /* Temporary directory for log file */ + char *logfile; /* Log file of process output */ + bool is_child; /* Whether we can waitpid for process */ + struct process *next; /* Next process in global list */ }; /* diff -Nurp inn-2.6.3/tests/tap/process.h inn-2.6.4/tests/tap/process.h --- inn-2.6.3/tests/tap/process.h 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/tests/tap/process.h 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: process.h 10246 2018-02-16 21:12:42Z iulius $ +/* $Id: process.h 10396 2020-11-12 20:19:41Z iulius $ * * Utility functions for tests that use subprocesses. * @@ -63,8 +63,7 @@ void is_function_output(test_function_ty * successfully, call bail, with the error message being the output from the * program. */ -void run_setup(const char *const argv[]) - __attribute__((__nonnull__)); +void run_setup(const char *const argv[]) __attribute__((__nonnull__)); /* * process_start starts a process in the background, returning an opaque data diff -Nurp inn-2.6.3/tests/tap/string.h inn-2.6.4/tests/tap/string.h --- inn-2.6.3/tests/tap/string.h 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/tests/tap/string.h 2021-01-21 13:53:07.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: string.h 10246 2018-02-16 21:12:42Z iulius $ +/* $Id: string.h 10396 2020-11-12 20:19:41Z iulius $ * * String utilities for the TAP protocol. * @@ -37,7 +37,7 @@ #include "config.h" #include "tap/macros.h" -#include /* va_list */ +#include /* va_list */ BEGIN_DECLS diff -Nurp inn-2.6.3/tests/util/inndf.t inn-2.6.4/tests/util/inndf.t --- inn-2.6.3/tests/util/inndf.t 2019-02-07 07:02:22.000000000 -0800 +++ inn-2.6.4/tests/util/inndf.t 2021-01-21 13:53:07.000000000 -0800 @@ -1,5 +1,5 @@ #! /bin/sh -# $Id: inndf.t 10113 2016-11-06 14:17:37Z iulius $ +# $Id: inndf.t 10513 2021-01-15 22:34:56Z iulius $ # # Test suite for inndf. @@ -129,7 +129,7 @@ else printcount "not ok" fi out=`$inndf -o` -if [ "$out" = "3.00% overview space used" ] ; then +if [ "$out" = "3.17% overview space used" ] ; then printcount "ok" else echo "$out"