diff -Nurp inn-2.6.0/CONTRIBUTORS inn-2.6.1/CONTRIBUTORS --- inn-2.6.0/CONTRIBUTORS 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/CONTRIBUTORS 2016-11-27 06:03:42.000000000 -0800 @@ -276,5 +276,5 @@ Lars Magne Ingebrigtsen, Sam Varshavchik Edmund H. Ramm, Raphael Barrois, Bo Lindbergh, Matthias Meyser, Dennis Preiser, Paolo Amoroso, Dennis Davis, River Tarnell, Jochen Schmitt, Tim Fardell, Remco Rijnders, David Binderman, Tony Evans, Christian Garbs, -Jesse Rehmer, Colin Watson, Lauri Tirkkonen, Christian Mock, -Richard Kettlewell +Jesse Rehmer, Colin Watson, Lauri Tirkkonen, Christian Mock, Marcus Jodorf, +Richard Kettlewell, Yuriy M. Kaminskiy, Bill Parker diff -Nurp inn-2.6.0/ChangeLog inn-2.6.1/ChangeLog --- inn-2.6.0/ChangeLog 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/ChangeLog 2016-11-27 06:03:42.000000000 -0800 @@ -1,6170 +1,489 @@ -2015-09-12 iulius - - * Remove the paragraph about development versions in README - - * Branch 2.6.0 release. - - * Bump revision numbers in FAQ to reflect the new 2.6.0 release - -2015-09-08 iulius - - * Add additional instruction for STABLE snapshots when making a - release - -2015-09-05 eagle - - * Change syslog messages used by tests/innd/chan-t.c to notice - - Avoids spamming syslog when running the test suite. Using notice - should be equivalent for the callers of this code. (This should - be done more broadly across the code base, but this change will - quiet the immediate issue.) - -2015-09-04 iulius - - * Improve documentation for RADIUS - - Better POD syntax, typo fix, and remove the comment in the - inn-radius.conf sample file about the impossibility to use a hash - tag (#) in the secret password. - -2015-09-03 iulius - - * Typo fix - - * Update config.guess and config.sub to upstream versions from - 2015-08-20 - -2015-09-02 iulius - - * Improve documentation about the use of htpasswd - - * Improve documentation about the use of port 119 with TLS - - * Explicitly say that the dbz config file is the .dir history file - - Thanks to Bernard Higonnet for the report. - - see #138 - -2015-08-28 iulius - - * Improve the documentation of makedbz as for the history.dir file - - * Silent the float-equal GCC warning for Perl XS - - See the thread [perl #125770] Unsafe comparison of floats in - SvTRUE in perl5-porters in August 2015. - - * Update to latest rra-c-util release 5.8 - - * Update to latest C TAP Harness release 3.4 - - Fix segfault in runtests with empty test list. - -2015-08-10 iulius - - * Perl XS code: Clean up the use of ERRSV along with the SvTRUE - macro - - ERRSV macro has a getter C function internally. SvTRUE macro - evaluates its arguments multiple times, leading to exponential - calls of the getter function. ERRSV should be assigned to a SV* - variable before passing that SV* to SvTRUE macro. - - Thanks to bulk88 for having pointed that out in the Perl bug - tracker. - -2015-08-09 iulius - - * innreport: Try to create HTML and IMG directories if they do not - exist - - It can be helful for new INN installations. - -2015-08-08 iulius - - * ninpaths: Improve logging - - When fopen fails, log that the error comes from ninpaths. - Otherwise, the log line in the errlog file is not helpful to fix - the issue. - - * cnfsstat: Improve logging - - Do not write stats until the CNFS buffer has been initialized. - - Also do not write double quotes twice around group patterns. - - * Do not add a line feed in innfeed log lines - - * Fix the wording of two log lines in our documentation - -2015-08-04 iulius - - * nnrpd: improve validation of e-mail addresses - - Check that if an article has a From: header field beginning with - '@' chars, it also has another '@' afterwards in the field. - - It will prevent From: header fields like "@a.b" or "@@@a.b" from - being accepted. - -2015-07-14 iulius - - * Improve a few default values for innfeed.conf - - - Increase max-queue-size from 5 to 20. - - - Enable use-mmap by default. - - * Improve a few default values for inn.conf - - - Make use of the vastly expanded storage and RAM commonly - available today: datamovethreshold (from 8192 to 16384), - msgidcachesize (from 16000 to 64000), overcachesize (from 64 to - 128), wireformat (now enabled by default). - - - Enable the generation of status reports and performance - timings: logstatus and nnrpdoverstats parameters, with a - frequency of 10 minutes (status and timer parameters). - - - Fix the definition of runasgroup and runasuser: they are not - necessarily "news" as they can be specified at configure time. - - - Say that the default value of dontrejectfiltered is false. - - - Say that the default value of pgpverify is false, if not - present in inn.conf. - - - Say that the default value of logcycles should remain 3 because - of privacy impact. - -2015-07-12 iulius - - * nnrpd: fix the parsing of continuation lines in headers - - Empty headers were not properly parsed. Thanks to Richard - Kettlewell for the bug report. - - * Typo - - * Update dependencies - -2015-07-11 iulius - - * Add a comment to keep in mind that nnrpd must not reject - proto-articles with empty headers - -2015-07-07 iulius - - * Change Perl URL to use HTTPS to avoid a redirect - - * Sync with latest C TAP Harness upstream package - - Rebalance usage to avoid too-long strings master - - * Fix segfault in buffer_find_string with empty buffer - - Fix segfault in buffer_find_string if passed a buffer that's - never had any data. Found by Richard Kettlewell. Patch from - upstream rra-c-util. - - * Remove unneeded UNUSED from network support functions - - Patch from upstream rra-c-util package. Also homogenize our local - network-innbind library with the upstream network one. - - * Clean build with -Wmissing-format-attribute - - Add format attributes on various internal functions and a few - utility functions that take va_arg arguments so that all code - builds cleanly with -Wmissing-format-attribute. - -2015-07-06 eagle - - * Change Perl URL to use HTTPS to avoid a redirect - -2015-07-04 iulius - - * Check for new warnings when running "make warnings" - - Add the following flags: -Wformat=2 -Wmissing-include-dirs - -Wtrampolines -Wjump-misses-init -Winvalid-pch - - Using -Wformat=2 checks the use of string literals and permits to - detect where security should be tightened (see ticket #136). - - * Update to latest C TAP Harness version from upstream - - Document the verbose mode. - -2015-06-26 iulius - - * lib/timer.c: Make sure timer arithmetic is done in unsigned types - - Some care is required. The divison must be done in the signed - type (otherwise the answer is wrong if usec<0) but any operation - that can overflow (+ and *) must be done in an unsigned type. - - In the current code the multiplication is done in the signed - type. If it overflows (as it will after a few weeks, on 32-bit - platforms) then we are already into undefined behaviour (C99 - s6.5#5). - - The subsequent conversion to an unsigned type does not make any - difference - the 'working type' for the multiplication is - determined by the operands alone, not by the treatment of the - result. - - Note that overflow behaviour for unsigned types (including - conversion of negative values to unsigned types) is defined: the - result is the residue modulo 2^n (C99 s6.2.5#9). - - Thanks to Richard Kettlewell for the patch. - -2015-06-25 iulius - - * Properly initialize innconf struct - - Thanks to Richard Kettlewell for the patch. - - * lib/hashtab.c: hash_size() would overflow if target=0 - - Thanks to Richard Kettlewell for the patch. - -2015-06-22 iulius - - * Take into account union semun when dealing with semaphores - - Improve commit [9902]. Thanks to The Doctor for the patch. - -2015-06-20 iulius - - * innd: mask signals when not in select - - This excludes the possibility of a signal handler accessing data - that the main code is mutating. - - Rationale: When a child (say, nnrpd) terminates, innd gets - SIGCHLD and immediately invokes PROCreap(). This looks for the - process in PROCtable. However, if another child process has just - been started then PROCwatch() will be part way through executing - realloc() to expand PROCtable at the point the signal arrives. So - PROCreap() may see an old and possibly corrupted version of the - table. - - Thanks to Richard Kettlewell for the patch. - - * innd: don't reap the same process table entry more than once - - Thanks to Richard Kettlewell for the patch. - - * scanlogs: Report the contents of the news.err file - - Only errlog and news.crit were previously reported. - - Also fix the documentation for the max_unknown parameter in - innreport.conf that applies to news.notice and not news.err. - - * Destroy buffindexed's semaphore as well as its shared memory - segment - - buffindexed deletes its shared memory segment when there are no - more users (i.e. when shm_nattch==0), but it fails to delete the - semaphore at the same time. - - "make check" no longer leaks semaphores. - - % ./buffindexed.t - - cant create semaphore using ov-tmp/buffer: No space left on - device failed to create semaphore for ov-tmp/buffer buffindexed: - ovinitdisks: cant create shmem for ov-tmp/buffer len 16384: No - space left on device Opening the overview database failed, cannot - continue - - Thanks to Richard Kettlewell for the patch. - -2015-06-14 iulius - - * Fix the build for Python < 2.5.0 - - Fix (old) commit [9297] where Py_ssize_t was set to ssize_t for - Python versions anterior to 2.5.0 whereas it was an int. We - therefore had an incompatible pointer type when calling - PyDict_Next(). - - As INN is supposed to work on 2.2.0, this bug is now fixed. - - Also use "0" and "1" instead of "False" and "True" that did not - exist in 2.2.0 for the distutils module. - - * Improve documentation for CNFS buffers larger than 2 GB - - Large-file support is useful only for 32-bit platforms (and some - very rare 64-bit platforms that aren't Linux). - - * Python support: use the distutils.sysconfig module at configure - time - - Drop support for Python 2.1 and before. It will allow to properly - search for the python binary (in m4/python.m4) thanks to the - distutils.sysconfig module which appeared in Python 2.2.0, - released in December 2001! So it is no longer an issue in 2015. - - For the record, Python 1.5.2 was currently enough to build INN. - - One of the issues fixed is that on several systems, the - /usr/lib/python2.7/config directory does not exist. It can for - instance be /usr/lib/python2.7/config-x86_64-linux-gnu, so the - build fails because "config" is hard-coded in the current way the - detection is coded. - - see #78 - - * nnrpd: don't strlcpy with equal source/dest - - strlcpy with overlapping source & destination has undefined - behavior. (INN's version of the function passes the source and - destination to memcpy, which also has undefined behavior when - they overlap.) - - Thanks to Richard Kettlewell for the patch. - - * innfeed, innd: fix boring uninteresting memory leaks - - These aren't serious leaks, but do cause noise in analysis tools. - - Thanks to Richard Kettlewell for the patch. - - * innd, expire, makehistory: fix memory leak for extraoverview - - Thanks to Richard Kettlewell for the bug report and the patch. - - * innfeed: avoid underrun of endpoint array - - The underrun would happen when the last endpoint is deleted. - - Thanks to Richard Kettlewell for the patch. - - * innfeed: be more conservative about article read from disk - - Thanks to Richard Kettlewell for the patch. - - * ident: avoid buffer underrun - - Thanks to Richard Kettlewell for the patch. - - * Fix ninpaths memory leak - - Realistically this isn't very likely to cause anyone any trouble. - However, fixing it reduces noise that might obscure more serious - problems. - - Thanks to Richard Kettlewell for the patch. - -2015-06-03 iulius - - * Fix a Clang warning for the test of the equality between floats - - overview_free_space returns a percentage (positive number) or -1 - when free space is irrelevant for the overview method used. - - * Fix Clang warning for unused macros - - Also clean up the code because OVERFLOW is always defined when - tagged-hash is enabled. - - * Fix a gcc warning for an unused variable - - * Update NEWS to mention the upgrade to 2.6 from a version anterior - to 2.5 - -2015-05-25 iulius - - * storage/ovdb/ovdb.c: Fix build issue when Berkeley DB is not - available - - ovdb-private.h correctly undefines HAVE_BDB because db.h is not - available but as portable/socket-unix.h was included just after, - it was setting again HAVE_BDB owing to its definition in - config.h. - - Rearrange the order of the inclusions. - - * contrib/reset-cnfs.c: The status was not correctly updated - - It may have returned true even though an error occurred. - - * contrib/expirectl.c: Remove useless line (base variable was never - read) - - * Handle NULL argument to process_free - - This clears up a Clang warning. - - * Fix getaddrinfo test on Mac OS X - - Mac OS X uses higher-value flags than other platforms, so adjust - the mask so that the portability test works properly there. - - * Add missing va_end in xasprintf implementation - -2015-05-24 iulius - - * storage/buffindexed/buffindexed.c: fix alignment warnings - - Given that GROUPheader is already a pointer to a GROUPHEADER, - just use &GROUPheader[1]. - - Thanks to Russ Allbery for the patch. - - These are all problems with assigning the mmap'd address to a - variable that points to the first element of the structure. A - better way of representing this in C would have been to have a - pointer to GROUPENTRY be the last element of GROUPHEADER, - although I'm not sure what other assumptions that would break, - somewhere else. - - These alignment cast warnings are mostly because the way that - mmap'd data structures are handled are probably correct in terms - of code generation but aren't represented very well for the C - type checker. - - * doc/FAQ: reflect the release of INN 2.5.5 - - * Use a preprocessor symbol to make the initialization of ARTHANDLE - structs easier - -2015-05-23 iulius - - * innxmit: tidy up GetMessageID buffer handling - - In theory, if you could get a message with an empty message-id - header through before anything else, it would call memcpy(NULL, - p, 0) which (surprisingly) has undefined behavior. This doesn't - seem a very likely contingency but I tidied up the code to avoid - it and (hopefully) be clearer anyway. - - Thanks to Richard Kettlewell for the patch. - - * storage/cnfs/cnfs.c: don't read uninitialised cycbuffname - - Thanks to Richard Kettlewell for the patch. - - * backends/actsync.c: host argument to get_active can no longer be - NULL - - process_args() will call die() rather than let this happen. This - change cleans up the code to no longer assume that a null pointer - is a possibility. - - Thanks to Richard Kettlewell for the patch. - -2015-05-17 iulius - - * Fixed alignment issues when storing values - -2015-05-14 iulius - - * Add Richard Kettlewell as a contributor, and update NEWS - - * Correct remap check in tradindexed lookup - - The check was off by one; and when it happened, it invalidated - the 'parent' pointer, causing a use-after-munmap (or - use-after-free) condition. - - Thanks to Richard Kettlewell for the bug report. - - * Fixed Clang warning for an unused variable - - * Document the meaning of TDX_MAGIC (~(0xf1f0f33d)): "fifo feed". - - * Fixed gcc warnings for missing field 'data' initializer - - gcc warns about the new initialization { 0 } - (-Wmissing-field-initializers). - - Following commit [9851]. - - * Verify that setuid() and setgid() actually succeed See: - https://lwn.net/Articles/451985/ for a discussion of the issues - in this area. The checks in newuser.c are probably unnecessary - due to the subsequent tests. rnews.c is straight-up broken - though. - - Thanks to Richard Kettlewell for the patch. - -2015-05-08 iulius - - * Correctly flush CNFS buffers when nfswriter is true in inn.conf - -2015-05-05 iulius - - * Correct remap check in tradindexed group lookup - - Previously the remap check had an off-by-one bug and moreover - would never be done due to the loop condition (making the - off-by-one bug moot). - - This one could be a problem in real life; if creating a group - causes innd to expand the index then an already-running nnrpd - will not automatically notice, and so won't be able to find the - group. - - Thanks to Richard Kettlewell for the patch. - - * Initialize ARTHANDLE objects before passing by value - - Uninitialised fields have indeterminate values (6.2.4#5); this - includes trap representations (3.17.2). The access to such fields - in the subsequent function calls that pass the ARTHANDLE has - undefined behaviour (s6.2.6.1). - - The fix relies on 6.7.8#21. - - All references to C99. - - Thanks to Richard Kettlewell for the patch. - -2015-05-03 iulius - - * nnrpd/commands.c: paranoid checking of AUTHINFO GENERIC reply - - Check the number of arguments returned by AUTHINFO GENERIC. - - Thanks to Richard Kettlewell for the patch. - - * innfeed/connection.c: avoid violating C aliasing rules - - The object was written as a 'struct sockaddr' but then read as a - 'struct sockaddr_storage', which violates C99 s6.5#7. The fix is - to always access it as a 'struct sockaddr' and use a union to - ensure enough space for any possible address type. - - Thanks to Richard Kettlewell for the patch. - - * nnrpd/commands.c: correct sense of PERMgeneric reply - - The comment has always been wrong, as well as the return value - for ~15 years... - - Thanks to Richard Kettlewell for the patch. - - * nnrpd/perm.c: don't dereference a null pointer if there are no - access groups - - Thanks to Richard Kettlewell for the patch. - - * nnrpd/article.c: A wrong variable was used for vhost feature. - - Since these are created by the local innd, the error should not - normally occur. - - Thanks to Richard Kettlewell for the patch. - -2015-05-02 iulius - - * expire/fastrm.c: Fix a dereferencing issue - - * tests/lib/tst-t.c: Fix encoding (a non-ASCII char was used) - - * tests/util/inndf.t: Add support for Mac OS X - - * Fix a few Clang warnings for unused variables and style - improvement - - * configure.ac: Build fix for current Mac OS X versions - - The build was failing with recent versions of Mac OS X: - - clang: error: no such file or directory: - '/usr/local/news/lib/libinn.3.dylib' make[1]: *** [libinn.la] - Error 1 make: *** [all-lib] Error 2 - - The reason is the '-multiply_defined'-part of the command line. - This switch is marked as obsolete in ld(1): - - -multiply_defined treatment Previously provided a way to warn or - error if any of the sym- bols used from a dynamic library were - also available in another linked dynamic library. This option is - obsolete. - - Thanks to Dennis Preiser for the report. - - * innfeed/imap_connection.c: fix support of Cyrus SASL 2.1.25 and - later - - Fix how sasl_callback_ft, added with Cyrus SASL 2.1.25, was - handled by innfeed. See revision [9381] for more information. - - Thanks to Dennis Preiser for the report. - - * innd/art.c: Fix a dereferencing issue when parsing - Injection-Info: header field - - Thanks to David Binderman for the patch. - -2015-05-01 iulius - - * Document a few more steps to do when making a release (especially - a major one) - - * Improve DESTDIR support and non-root installs - - DESTDIR and non-root installs are now properly supported and - documented in INSTALL. The "make install", "make update" and - "make cert" steps properly obey DESTDIR. Besides, it is no longer - a requirement that the installation step be done by the - superuser, as long as the user executing the install has supplied - a DESTDIR value that points to a writable directory, *and* the - person or process performing the install corrects the file - ownerships when INN is installed on the system on which it's - going to run. - - chown and chgrp commands are now executed during install only if - the current user is root. INSTALL also documents how to disable - them, if needed, with the CHOWNPROG and CHGRPPROG environment - variables. - - makedbz is executed only if the current user is root or the news - user. - - innupgrade is now executed also when DESTDIR is in use. - - Thanks to James Ralston for most of the patch. - - see #29 - -2015-04-23 iulius - - * mailpost: change the default location of the database and the - temporary files - - Add new -t flag to specify the default directory to use for - temporary files. - - Also change the default location of the persistent database from - pathtmp to patdb. As a matter of fact, mailpost tries to store - its Message-ID database in INN's pathtmp, but since it's usually - running as the mail system (often daemon) rather than as news, - this fails. - - Check that the directories are writable when mailpost is run, and - otherwise die with an error. - - close #81 - - * Remove unused code (the MOST variable is no longer set) - - Also add quotes around echo'ed text (otherwise, two consecutives - spaces are not displayed). - - Change how the test for the emptiness of the variable $D is done; - make was exiting if the variable is set. - - * Fix GCC 5.1.0 warning for incompatible pointer type - - Rename the "U" macro used by two tests to "SUC" (casting to - String of Unsigned Chars) because it otherwise conflicts with how - Unicode strings are declared in ISO C11, the new default mode for - the GCC 5 series. - -2015-04-20 iulius - - * Update TODO with references to existing patches - -2015-04-16 iulius - - * Update to latest c-tap-harness from upstream - - Major changes are: * Local changes for INN's docs/pod.t test are - now merged into upstream. - - * Add a -v command-line option that enables verbose support, and - rename the environment variable to C_TAP_VERBOSE. - - * C TAP Harness now compiles cleanly with Clang with -Weverything - -Wno-padded -pedantic-errors. - -2015-04-05 iulius - - * Mention required TLS ciphers for interoperability - - * Update TODO with current state of INN 2.6.0 - -2015-04-02 iulius - - * Update changelog to mention other changes for INN 2.5.5 - - * Use Sys::Hostname Perl core module instead of calling - /bin/hostname - -2015-03-25 iulius - - * Re-order libinnhist and libstorage on the command line used when - linking - - Building fastrm was failing on Ubuntu 12.04.1 LTS with the - following error: libstorage.so: undefined reference to - `HISlookup' - -2015-03-24 iulius - - * Mention getrra-c-util and documentation improvements in changelog - for INN 2.6.0 - - * Update copyright years (add 2015) - - * Update config.guess and config.sub to upstream versions from - 2015-03-08 - - * Update control.ctl to upstream version from 2014-06-17 - -2015-03-21 iulius - - * scanlogs: Limit the number of lines to show from error log files - - When lots of lines are present in error log files, they appear in - the news.daily verbatim, and the resulting email is so large it - is bouncing. - - Restrict the number of lines to 50 (the default value for unknown - lines from news.notice). - - Thanks to Jeffrey M. Vinocur for the bug report. - - * nnrpd: Count write time stats when using SASL - - * Improve the count of sleeping channels - - The highest file descriptor of sleeping channels was not always - properly updated. A new CHANresetlastsleeping() function now does - the job when called. - - Also prevent innd from crashing if a channel is supposed to sleep - but does not have a Waker set. - - Thanks to Petr Novopashenniy for the bug report. - - * readers.conf: improve the first example to disambiguate its - effect against local connections - -2015-03-18 iulius - - * pullnews: when giving a port along with a server name, check - there is only one ":" - - Otherwise, it is very likely that the given server name is an - IPv6 address, and therefore its end should not be interpreted as - a port. - - * Do not build with SASL, OpenSSL or zlib support if the related - headers are not found - - Also check for kerberosv5/com_err.h as an alternative for - com_err.h. - -2015-03-17 iulius - - * Include inn/defines.h instead of config.h in include/inn header - files - - config.h should not be an installed header file. - - * Add "INN_" prefix in include/inn header files when needed - - * Update to latest rra-c-util - - Amongst the changes, the one used by INN is: - Port the Kerberos - Autoconf macros and portability framework to the included - Kerberos in Solaris 10 by adding some more entries to the header - search paths. - -2015-01-25 iulius - - * innreport: add a new recognized entry - - When using the reject_with: keyword in an access block of - readers.conf, a log is generated in news.notice for readers - matching the corresponding access block. - - This log was reported as an unknown line in daily Usenet reports. - It is now filtered, and also considered as a notice level instead - of an error. - -2015-01-21 iulius - - * Fix the unsignedness of TMRgettime when printed - -2015-01-10 eagle - - * http://www.imc.org/ietf-usefor/ appears to be gone - - Replace this link in HACKING with a link to the usefor mailing - list archives and to my Usenet article format pages. - -2015-01-10 iulius - - * Enable TLS compression by default - - As the CRIME attack is not exploitable in NNTP, do not disable - TLS compression by default. No vulnerability in TLS compression - is currently known as far as NNTP is concerned. - - * Add a cast to fix a gcc warning - -2015-01-07 iulius - - * Cleanup in include stuff - - - Add missing BEGIN_DECLS/END_DECLS, and also use them instead of - their expansion. - - - Add missing inclusion of "inn/portable-macros.h" and - "inn/portable-stdbool.h". - - * Update dependencies - - * No longer include portability headers in include/inn headers - - Headers in include/inn can be used by other programs, and - therefore should not call headers in include/portable. - - When building INN, copy portability headers into include/inn so - that they can be included. - -2015-01-06 iulius - - * Update to latest version of C TAP Harness - - The runtests harness now supports ignoring comments and blank - lines in the test list specified with -l. Leading whitespace - before the test name is also ignored. - - Also use the latest version of tests/docs/pod.t (no functional - change). - -2015-01-04 eagle - - * Remove dead link to nnrpkrb5auth - -2014-12-16 iulius - - * nnrp.access2readers.conf: add default username when none is - specified - -2014-12-14 iulius - - * Add new contrib/nnrp.access2readers.conf.in script - - This script converts old-style nnrp.access to readers.conf. - - Thanks to Jeffrey M. Vinocur for his contribution. - - * Improve the sample init script for systemd - -2014-12-07 iulius - - * Update Russ's mail address - - * Fix typos - - * Mark two tests for removal when switching confparse-t.c to new C - TAP Harness syntax - - These tests depend on the internal implementation of the vector - library. The functionality is already tested by the vector test - suite. - - * Use system.h from rra-c-util for include/clibrary.h - - Keep INN-specific stuff during the synchronization from upstream. - - * Remove super-ancient definitions of ptrdiff_t, atexit and strtoul - - These functions were missing on some pre-C89 systems like SunOS. - (The on_exit stuff may be for ULTRIX.) They're present on all - modern systems and can just be used unconditionally. - - Also, string.h is now universal. One has to go back to SunOS to - find a version of UNIX that doesn't have it, and it's - standardized by ISO C. It can be included unconditionally. - - Remove checking for stddef.h, not used in the code. - -2014-12-04 iulius - - * Include portable/socket-unix.h only when HAVE_UNIX_DOMAIN_SOCKETS - is set - - * Rationalize the portability layer for SUN_LEN - - Add new portable/socket-unix.h portability layer that includes - sys/un.h and defines SUN_LEN if the implementation does not do - so. Remove the corresponding piece of code from clibrary.h. - - * Sync with latest upstream version of rra-c-util - -2014-12-01 iulius - - * Fix a missing svn property - - * Move PIPE_READ and PIPE_WRITE from clibrary.h to inn/macros.h - - * When testing portability functions, we redefine the function to a - different name to not conflict with system headers. If the - function is implemented by the system as a macro, we have to - undefine it first. This was being done in some places but not in - others, causing compliation problems with inet_aton on FreeBSD. - Do this consistently everywhere. - - * BSD/OS reportedly has implementations of both but doesn't - prototype them in system headers, so switch the prototyping to be - conditional on whether they're declared rather than whether - they're available. - - * Windows doesn't have sys/time.h and defines struct timeval in - time.h. Conditionalize the inclusion of sys/time.h for Windows - and add an include of time.h where it was missing. - - * Add support for choosing the elliptic curve to use with TLS - support - - The new tlseccurve parameter in inn.conf takes the name of a - curve OpenSSL knows about, to use for ephemeral key exchanges. - - Thanks to Christian Mock for the patch. - -2014-11-23 iulius - - * Add a missing dependency in Makefile. - - * m4/sendmail.m4: add missing brackets - - The configure script was failing when running that part of code. - - * Fix gcc warning on FreeBSD - - Casts to time_t * were causing "dereferencing type-punned pointer - will break strict-aliasing rules" warnings on FreeBSD. - -2014-11-12 iulius - - * inn.conf: Improve documentation about tlsprotocols and - tlscompression - -2014-11-11 iulius - - * Improve tuning of the SSL/TLS configuration - - nnrpd's TLS support is basically using OpenSSL's defaults WRT - issues such as protocol support and cipher suites. In these days - of POODLEs and other vulnerabilities, it should be useful to be - able to have better control over what's offered. So this patch - adds a few options to inn.conf: - - - tlsprotocols: allows to select the SSL/TLS versions that are - supported - - - tlsciphers: allows to give an OpenSSL cipher string to tailor - the cipher suites that are offered to clients - - - tlspreferserverciphers: switches on the server-side selection - of the cipher suite (TLS default is "client chooses") - - - tlscompression: allows to turn off TLS compression (because of - the CRIME attack) if the OpenSSL version supports this. - - Many thanks to Christian Mock for his patch. - - * Update the inn.conf sample with the new - addinjectionpostingaccount parameter - - Following commit [9740]. - -2014-11-09 iulius - - * Mention PyClean as a Python-based variant of Cleanfeed. - - * Add support for the posting-account attribute in Injection-Info: - header fields - - Add new addinjectionpostingaccount parameter to inn.conf. When - set to true, the Injection-Info: header field contains an - additional posting-account attribute that mentions the username - assigned to the user at connection time or after authentication. - The default value for this parameter is false. - - closes #51 - -2014-11-01 iulius - - * current version of the script used to keep INN in sync with - rra-c-util - -2014-10-28 iulius - - * Update default paths for Debian and Fedora - - * Fix a dependency in a build rule - - * Fix incorrect sentence about the use of trailing slash for - DESTDIR - - * Build the debugging version of buffindexed and tradindexed so - that it can be included in a shared library if desired - -2014-10-27 iulius - - * Fixed a format-nonliteral warning - - * Update to latest C TAP Harness upstream version - - Also add a missing last NULL argument to new_skip() and - new_skip_block() functions, kept for compatibility with tests - using the old syntax of C TAP Harness. - -2014-10-03 iulius - - * innwatch: report an error when the control file is missing - -2014-09-24 iulius - - * Update changelog to mention previous commit [9722] - - * Add two missing contrib programs in the exceptions of mkmanifest - - * rc.news: no longer explicitly sleep before starting innwatch and - cnfsstat - - Instead, make these two scripts sleep by themselves. - - Also update documentation: improve the list of actions done by - rc.news, and no longer mentions that innd should be throttled - before being stopped (this is not true - the shutdown process - already does the actions throttling does). - - * innwatch: add -i flag to specify how many seconds to sleep at - startup - - - Also fix previous commit [9650] that did not totally fix the - issue it was supposed to fix. - - - Fix the behaviour of the -f flag (it wasn't doing anything). - - - Fix how the -l flag was parsed (a space was required between -l - and its argument, whils it should not have been required). - - - Add new POD documentation for innwatch, and update it at the - same time: document new -i flag, and document already existing -f - flag. - - * cnfsstat: add -i flag to specify how many seconds to sleep at - startup - - Update documentation, and homogenize POD syntax at the same time. - -2014-09-22 iulius - - * Fix build issues on AIX 7.1 - - mmap is redefined to mmap64 when large file support is enabled. - -2014-09-21 iulius - - * Fixed a warning and an unnecessary sys/stropts.h header - - * Do not build with Berkeley DB support if db.h is not found - - * Typos - - * Clean the contrib directory along with the other directories - - * Fix a few warnings, and update svn:ignore for contrib - - * Fix build of contrib/respool.c - - Remove an unused variable. - - Add a link to libhistory. - - * Fix build of contrib/expirectl.c - - Add correct include header files, and fix a few warnings in - printf() calls. - - Add portability code for statfs/statvfs support. - - * Fix build of contrib/reset-cnfs.c - - Add correct include header files. - - Use the right DO_LARGEFILES variable instead of LARGE_FILES. - - Reformat the code (remove tabulations). - - Properly exit with the right status code. - - * Fix build of contrib/newsresp.c - - Add correct include header files and prototypes. - - Remove useless variables. - - punt() now returns a bool instead of an int. - - ierror() now prints its second argument to stdout. - - * Add compilation rules for contrib/auth_pass.c - - Use the right socklen_t type, and add crypt.h header if - available. - - * Improve the use of the __attribute__ GCC keyword - - When __attribute__ is used, be sure to include portable/macros.h - so that this GCC keyword is hidden to compilers that do not - recognize it. - - Also use double underscores around "noreturn" and "packed". - - * FAQ: add how to feed articles arrived between two dates to - another server - -2014-09-20 iulius - - * Fix header inclusions to match the ones from rra-c-util - - * Remove obsolescent AC_HEADER_SYS_WAIT macro, that defined - HAVE_SYS_WAIT_H - - According to the Autoconf manual, this macro is obsolescent. - - * Remove obsolescent AC_HEADER_TIME macro, that defined - TIME_WITH_SYS_TIME - - According to the Autoconf manual: - - "If a program may include both time.h and sys/time.h, define - TIME_WITH_SYS_TIME. On some ancient systems, sys/time.h included - time.h, but time.h was not protected against multiple inclusion, - so programs could not explicitly include both files. - - Current systems can include both sys/time.h and time.h header - files when they exist." - -2014-09-17 iulius - - * Enable IPv6 unconditionally, if available - - * Add a new test for POD formatting - - * Add reallocarray in Makefile - - * update network functions to their latest upstream version - - Use DEFAULT_TIMEOUT (300 seconds) for getlist and ident. - - Entirely remove IP_OPTIONS and network_kill_options(), no longer - necessary nowadays. - - Also remove a few parts of code related to IPV6_V6ONLY, that - should no longer be a problem (AF_UNSPEC can be used instead of - specifically AF_INET when IPv6 is not available). CURRENT will - enable IPv6 unconditionally. - - Add a new network-innbind.c file, along with its headers, to deal - with network connections using innbind. These functions are - called by INN; in case innbind is not necessary (port >= 1024 or - we are root), handle the connection to the generic functions - provided by network.c (from rra-c-util). - - Split the network test suite into 4 specific tests (IPv4, IPv6, - client and server). - - Changes mentioned in rra-c-util changelogs are: - - - When binding IPv6 sockets, restrict them to only IPv6 - connections rather than also allowing IPv4 connections where - possible. The default behavior, for maximum backward - compatibility, is for IPv6-bound sockets to accept IPv4 - connections and expose those connections as IPv4 mapped - addresses. This causes various problems, however, such as with - reuse of bound ports (which was causing test suite failures) and - requirements to handle IPv4 mapped addresses. The network model - (also used by BSD systems) where IPv6 sockets only accept IPv6 - connections is cleaner, even if it requires juggling multiple - sockets in some situations. - - - network_addr_match now always fails (returns false) if either - of the strings are the empty string. AIX 7.1's inet_aton treats - the empty string as equivalent to 0.0.0.0, but we want to treat - it as a syntax error since it's too easy to get an empty string - by accident. - - - The network_connect utility functions now take an optional - timeout. If non-zero, a non-blocking connect is done with that - timeout, rather than blocking on connect until the TCP stack - gives up. The network utility code now depends on the fdflag - code. - - - network_connect, when given a timeout, now resumes waiting for - the nonblocking connect after being interrupted by a signal. This - can mean that a connect can take longer than the timeout if - interrupted; hopefully both timeouts and catching signals are - rare enough that this won't pose a serious issue. - - - In network_read and network_write with a timeout, restart the - I/O attempt if a system call failed with EINTR instead of - aborting the operation. - - - When binding an IPv6-only socket with network_bind_ipv6 and not - binding to all local addresses, use IP_FREEBIND if it's - available. This allows binding to addresses that are not yet - configured, which is much more common with IPv6 given IPv6 - autoconfiguration. - - - Add new network_accept_any() function, which takes an array of - file descriptors (similar to what's returned by network_bind_all) - and blocks accepting incoming connections on any of those file - descriptors. - - - Prefer reallocarray to realloc for multiplied sizes. - - - The network_bind_* functions now more reliably set the socket - errno on failure and log somewhat more informative error messages - with warn. - - - Also improve the error handling and reporting from some of the - other network functions, and refactor the code to avoid more - #ifdefs embedded in the middle of other code. - - - The network_bind_* functions now take a socket type as an - additional argument so that they can be used with UDP-based - services. - - - network_bind_all now returns a boolean, which will be false if - no sockets could be bound due to some error. Callers may check - this instead of checking if the socket count is zero. - - - Check the return status of snprintf when converting port - numbers to strings in network_bind_all and network_connect_host, - and use the correct format for the port number for the latter. - -2014-09-15 iulius - - * Fix typo in INN_HAVE_SYS_BITYPES_H - -2014-09-11 iulius - - * innupgrade: fix its execution - - On a few systems like AIX, innupgrade failed to run during an - upgrade because "perl -T" was not explicitly called. Failure was: - "-T" is on the #! line, it must also be used on the command line - - Thanks to The Doctor for its bug report. - -2014-09-07 iulius - - * Sync message handling utilities for the TAP protocol with - upstream version - - Add tap/messages.c and tap/messages.h to test message handling. - Update our test suite to use these files instead of the hack done - during the synchronization of C TAP Harness (with - support/getc-tap-harness). - - Also fix a typo in MANIFEST (fdflag-t.c was mispelled) and a - missing dependency in tests/Makefile for nnrpd/auth-ext.t. - - * No longer build a special messages library for the test suite - - Further to the use of the new messages test library that no - longer has DEBUG parts, no longer build a special messages.o for - our test suite. - - Besides, fix the build line for the fdflag test suite. - - * Add a fdflag test suite - - Fetched from upstream rra-c-util. - - * Sync the messages test suite with upstream rra-c-util - - - Use calloc in preference to calculating a malloc size with - multiplication everywhere. In most places this caution was - probably not necessary, but uniformity is easier to audit and no - one will ever notice the speed difference between malloc and - calloc. - - - Add new message_handlers_reset function to the messages utility - API. This function resets all handlers to their defaults and - frees any memory allocated by the message_handlers functions. - This is primarily useful to allow freeing all memory when doing - exhaustive memory allocation testing. - - - Check the return status of vsnprintf in the syslog message - handlers for die, warn, and friends, and report an error with - warn if vsnprintf fails. - - - Drop concat from the messages library. asprintf or xasprintf, - provided by the portability and util libraries respectively, are - entirely superior alternatives to concat. - - - Improve the is_function_output TAP add-on interface to take an - opaque data pointer and pass it into the called function. - - - Add a new run_setup TAP add-on function that runs a given - command and calls bail if it fails, used for doing test setup in - an external command. (Some things are easier to do in shell than - in C.) - - * Add new portable/stdbool.h header (extracted from inn/defines.h) - -2014-09-06 eagle - - * Fix reallocarray test suite to not assume errno is preserved - - errno will not be preserved across calls to ok, since it uses - stdio. Save errno and check the saved value instead. - -2014-09-06 iulius - - * Sync the xwrite library with upstream rra-c-util - - - New inn/macros.h, inn/xwrite.h and portable/macros.h headers - (extracted from inn/defines.h and inn/libinn.h). - - - New portable/uio.h header. - - - Update include headers in several files to reflect these - changes. - - - clibrary.h now guarantees the inclusion of limits.h (to ensure - the availability of SIZE_TYPE on older systems). - - - Switch to bmalloc where the other xmalloc infrastructure is not - required. Don't bother converting tests that use xasprintf or - concat for the time being. - - - Use calloc in preference to calculating a malloc size with - multiplication everywhere. In most places this caution was - probably not necessary, but uniformity is easier to audit and no - one will ever notice the speed difference between malloc and - calloc. - - - Add bail or conditionals so that clang --analyze isn't worried - about NULL pointer dereferences in our tests. - - - Also make xwritev more robust by doing range checking on iovcnt - early. It's unlikely this would have caused a real problem - anywhere, but this is more obviously correct. - - - The number of iovs remaining can't actually be zero unless the - system writev call is buggy, but the math is complex enough that - clang --analyze can't figure that out. Add an assert to make the - assumption explicit. - - * Fix the generation of MANIFEST further to the addition of the - reallocarray test - - * Sync the vector library with latest upstream rra-c-util - - Use xreallocarray instead of xrealloc in the vector library. - -2014-09-05 iulius - - * sync the xmalloc library with its latest upstream version - - Changes are: - Add xreallocarray to the xmalloc library, which is - a checked version of reallocarray similar to what xrealloc is for - realloc. - - - Prefer reallocarray to realloc for multiplied sizes in vector - manipulations. - - - Also change the memory thresholds so that the xmalloc test - works on amd64 Debian Linux again. - - - xasprintf and xvasprintf are now void functions and always call - the xmalloc failure handler on any error, not just on ENOMEM - errors. The faint chance that the underlying asprintf function - could return some other error isn't worth the additional code - complexity of still having to check the return status and then - probably abort anyway. - - - In xasprintf and xvasprintf, distinguish between failure to - allocate memory and failure to format the output. Report the - latter by passing 0 to the failure handler, and special-case that - in the default failure handler to report a different error - message. - - - Avoid excessive memory allocation when duplicating short - nul-terminated strings in xstrndup. - -2014-09-04 iulius - - * sync a few tests and headers with upstream - - Better header inclusions, especially portable/socket.h instead of - standard netinet/in.h for inet_aton and inet_ntoa tests. Also - deactivate the Wformat-nonliteral warning for the snprintf test - suite. - - * sync the getaddrinfo test suite with upstream version - - Changes are: - Close memory and file descriptor leaks in the test - suite. - - - In some situations, DNS may just not work, in which case we may - get different error messages than host not found when looking up - invalid hosts. Allow for that and skip the test in those - situations. - - - Also change a few network tests to use is_int for comparing - IPv4 addresses rather than ok with equality. - - * sync the vector test suite with upstream version - - Add new string utilities for the TAP protocol. Update the vector - test suite with latest rra-c-util version. - -2014-09-03 iulius - - * sync the vector library with its latest rra-c-util version - - Changes are: - - - Always allocate room for at least one string to be stored in - the vector. It simplifies some of the internal logic and, more to - the point, unconfuses clang, which otherwise produces tons of - warnings about possibly dereferencing NULL pointers since it - can't follow the logic. - - - Update the confparse test to expect another value for the - allocated size of a vector, further to the previous change. - - - Add __warn_unused_result__ to some vector functions that return - newly-allocated memory. - - - Add asserts to the vector library to catch incoming NULL - vectors. These will probably be optimized away by gcc, but they - also help unconfuse clang. - - - Allow NULL to be passed to (c)vector_free. It's much more - convenient for freeing data structures to be able to call free - routines unconditionally without first testing for NULL. Support - this in the vector interface. - - - Define *_split_space in terms of *_split_multi to save some - code. - - - Check for integer overflow when determining the size of the - results of vector_join and vector_cjoin. - - - Handle empty vectors in vector_join and cvector_join. - - - Don't check whether a pointer is NULL before passing it into - free and instead assume free can handle NULL pointers properly. - This has been true for many years. - - - Fix vector_free to support taking NULL pointers and doing - nothing with them. - - - Allocate memory with calloc and assume this sets pointers to - NULL instead of explicitly initializing them. We already had to - assume this in various places, and architectures where the - all-zero bit pattern is not the NULL pointer are exceedingly - rare. - - * sync with latest rra-c-util - - Add GCC attributes to util/buffer.h functions, mostly nonnull. - Clarify the documentation of some of the functions, particularly - around error reporting. - - Fix visibility for util/buffer.c functions and for inet_aton and - inet_ntoa replacements to match the default hidden visiblity of - other portability and util functions. - - * add getc-tap-harness support script to keep INN in sync with C - TAP Harness - - * sync the test suite driver with latest C TAP Harness 3.1 - - The latest version of the C TAP Harness package is now integrated - into INN. The README file shipped with the test suite driver is - included in the tests directory. Also keep the same name as - upstream for file names in the news tests/tap directory. Update - paths to header files, and keep the INN specificities for legacy - tests (not yet updated to the new syntax). - - The math library is now linked only with the test that needs it. - -2014-08-30 iulius - - * Sync with latest rra-c-util version - - Essentially wording improvement. - - * Do not hide functions from libinn - - Random internal utility functions are supposed to be exposed. Fix - getrra-c-util to remove the visibility stuff when synchronizing - from upstream. - - * Sync lib/fdflag.c and include/inn/fdflag.h with latest rra-c-util - version - - Changes are: - - - Rename lib/fdflags.c to lib/fdflag.c. - - - Add a new header file: include/inn/fdflag.h. - - - Rename the close_on_exec and nonblocking functions to - respectively fdflag_close_exec and fdflag_nonblocking. These - functions now return a boolean; fdflag_nonblocking is now - prototyped to take a socket_type instead of an int, but on UNIX - this should not make a difference. - - - Add an implementation of fdflag_nonblocking for Windows and - allow fdflag.c to be built on Windows. - - - Update the libinn documentation to mention these new functions - (old CloseOnExec and SetNonBlocking functions were still - documented). - -2014-08-28 iulius - - * Sync lib/buffer.c and include/inn/buffer.h with latest rra-c-util - version - - Changes are: - - - Remove the bool arguments to buffer_sprintf and buffer_vsprintf - and instead introduce new buffer_append_sprintf and _vsprintf - functions to append to the buffer, which is what the functions - did with a true argument. This avoids having a bool argument to - functions, the meaning of which is often obscure in the calling - code. - - - Fix buffer_free to support taking NULL pointers and doing - nothing with them. Don't check whether a pointer is NULL before - passing it into free and instead assume free can handle NULL - pointers properly. This has been true for many years. - - - Allocate memory with calloc and assume this sets pointers to - NULL instead of explicitly initializing them. We already had to - assume this in various places, and architectures where the - all-zero bit pattern is not the NULL pointer are exceedingly - rare. - -2014-08-25 iulius - - * pullnews: new -a flag (hashfeed ability) - - Add a new feature to pullnews: hashfeed to split feeds. It uses - MD5 and is Diablo-compatible. - - Thanks to Geraint Edwards for the patch. - -2014-08-24 iulius - - * pullnews: new -B flag (header-only feeding) - - Add a new feature to pullnews: header-only feeding. - - If the article does not already have a Bytes: header field, one - is added. Bodies are kept only for control articles. - - Thanks to Geraint Edwards for the patch. - -2014-08-23 iulius - - * sync with latest rra-c-util - - Avoid strlcpy in the getnameinfo replacement (use memcpy instead) - and the setenv replacement (use asprintf instead). - - * pullnews: bug fix to rnews when -O; improved rnews reporting - - Thanks to Geraint Edwards for the patch. - -2014-08-22 iulius - - * pullnews: improve wording - - * When pullnews runs for the first time against a newsgroup, say - "never" instead of January, 1st 1970 as the last run date. * - Improve spaces, uppercase characters and singular forms when 1 - article is retrieved. * Update the config file even when the - group is empty. - - * pullnews: remove headers matching (or not) a given regexp - - Enable the -m flag to remove headers matching (or not) a given - regexp. - - Thanks to Geraint Edwards for the patch. - -2014-08-09 iulius - - * innwatch: no longer creates a child process for sleeping - - innwatch creates a child process only for sleeping and then waits - on that process. The forked-off process is not killed by 'rc.news - stop' (only its parent is), and will only die after it's done - sleeping. If running under SMF on illumos/Solaris, this causes - the service to likely drop into maintenance state (since not all - processes die within timeout). - - Thanks to Lauri Tirkkonen for the patch. - -2014-07-05 iulius - - * Sync with latest rra-c-util 5.5 - - KRB5_CPPFLAGS_GCC Makefile variable can now be used, if needed, - in combination with gcc warnings (such as the make warnings - target) to suppress warnings from Kerberos headers in non-system - paths. - -2014-05-17 iulius - - * Typos. - - * Bump version number in FAQ for new INN 2.5.4 release - - * Mention the expected rights for ncmring.gpg in perl-nocem man - page - - * Update config.guess and config.sub to upstream versions from - 2014-05-17 - -2014-05-14 iulius - - * Fix a few nits - - * Typo and useless new line logged in innfeed.debug - - * Document already existing res blocks functionality in - readers.conf - - * Document res blocks, their log: and program: keywords, and the - include directive in readers.conf man page. - - * Recognize res blocks and their keywords in inncheck. - - * Do not consider as errors in daily reports the lines logged in - news.notice by the log: keyword in readers.conf. - - * Also teach other known lines to innreport (especially the use - of "ctlinnd xexec" and normal rejection of nnrpd connections - during news.daily operations). - - * Typo in readers.conf man page (access instead of auth). - - * Recognize the no-op XYZZY keyword - - Yep, nothing new happens with that patch. - - * Prevent innwatch from throttling innd when no overview directory - exists - - Thanks to John F. Morse for the report. - - * Mention in news.daily documentation that lowmark requires - expireover - - Thanks to John F. Morse for the report. - -2014-04-13 iulius - - * Update control.ctl to upstream version from 2014-04-06 - -2014-03-16 iulius - - * Fix typo (two "d" in "address") - - Also remove the top1000.org domain that no longer exists. - -2014-03-15 iulius - - * Fix clang warnings about unused variables - - * Handle several UIDs on PGP keys when verifying control messages - - Fixed a long-standing limitation on how controlchan and pgpverify - were checking the signer of control messages. They now properly - handle the case of several UIDs being defined on a single PGP - key, as well as the presence of spaces into UIDs. In previous - versions of INN, a few valid control messages got ignored because - of that limitation (fido.ger.* and grisbi.* were for instance - impacted). - -2014-03-13 iulius - - * Mention that Libtool is updated from the Debian package - - Also remove the paragraph about INN that should not be built with - libtool by default. Starting from INN 2.6, INN is always build - with libtool. - - * Add new files to be synchronized from the upstream rra-c-util - package - - * Update copyright years - - * Update control.ctl to upstream version from 2014-03-13 - - * Update install-sh to upstream version from 2014-03-13 - - * Update libtool to Debian version 2.4.2-1.7 - - * Update config.guess and config.sub to upstream versions from - 2014-03-13 - -2014-02-17 iulius - - * improve documentation about using storeonxref with tradspool - - Mention in the inn.conf man page that storeonxref needs being set - to true in case the tradspool article storage method is used. - - Though a few parts of tradspool handle both values for - storeonxref, the implementation when storeonxref is false is not - complete. For instance, CrackXref() is still called on the - Newsgroups: header once, which obviously fails. - - * sync with latest rra-c-util - - Don't check whether a pointer is NULL before passing it into free - and instead assume free can handle NULL pointers properly. This - has been true for many years. - - * do not install motd files by default, but only samples - - On a fresh INN install, motd.innd and motd.nnrpd are no longer - installed by default. Instead, samples for these files are - provided in >pathetc>, named differently so that their default - contents are not displayed to news clients before they get - customised. - - * readers.conf: make mandatory the program: key in res blocks - - Fixed a segfault occurring in nnrpd when a res block was used in - readers.conf without the program: key. - - This key is now explicitly made mandatory. - - * nnrpd: fixed an overlapping copy - - Fixed an issue where users were denied posting because of an - overlapping buffer copy in a check nnrpd was doing. - - The error seen was "address not in Internet syntax" while using a - From: address of the form . Debugging revealed that - nnrpd copies a buffer into itself to look at the part behind the - "@", and for very specific inputs on an old version of nnrpd that - still uses strcpy, the result did not contain the dot separating - the top-level domain any more. - - Thanks to Florian Schlichting for the patch. - -2014-02-08 iulius - - * add a valid shell when su'ing to the news user - - Pass "-s /bin/sh" to "su news" to cope with the change of the - news user's shell in base-passwd 3.5.30. - - Thanks to Colin Watson for the patch. - -2013-12-27 iulius - - * Use $inn_use_KRB5 instead of $KRB5_LIBS. - - * Mention that --with-sasl requires Cyrus SASL (and not SASL). - - * update m4 files for Berkeley DB and zlib support - - bdb.m4 and zlib.m4 are now part of rra-c-util. - - The "--with-berkeleydb" configure flag used to add Berkeley DB - support is now "--with-bdb". - - When building INN with Berkeley DB or zlib support, no longer add - standard locations to compiler and linker include flags. Such - default paths are now added only if explicitly given to one or - more of the "--with-bdb", "--with-bdb-include", "--with-bdb-lib", - "--with-zlib", "--with-zlib-include", or "--with-zlib-lib" - configure flags. The flags ending with "-include" and "-lib" are - new. - - If the Berkeley DB library is found at configure time, INN will - now be built with support for it unless the B"--without-bdb" flag - is explicitly passed to configure. Note that it was already the - default behaviour for zlib support when Berkeley DB support was - also enabled. - - Use BDB_CPPFLAGS, BDB_LDFLAGS and BDB_LIBS instead of - DB_CPPFLAGS, DB_LDFLAGS and DB_LIBS. Also use HAVE_BDB instead of - USE_BERKELEY_DB. - -2013-12-19 iulius - - * rewording so as to make the documentation of noresendid clearer - - * mention innduct as a possible replacement for innfeed, innxmit - and nntpsend - -2013-12-14 iulius - - * ckpasswd: check for both gdbm/ndbm.h and gdbm-ndbm.h headers - - libgdbm-dev in Debian provides /usr/include/gdbm-ndbm.h whereas - gdbm-devel in Red Hat provides /usr/include/gdbm/ndbm.h; INN then - has to make sure to search for the right header file when DBM - support is found. Define HAVE_GDBM_SLASH_NDBM_H and - HAVE_GDBM_HYPHEN_NDBM_H instead of HAVE_GDBM_NDBM_H to properly - disambiguate the two headers that are mapped to the same - preprocessor name by Autoconf. - - Thanks to Jesse Rehmer for the bug report. - - * auth_krb5: do not try to build it when com_err header is not - found - - The new krb5.m4 used by INN does not guarantee that com_err.h - will exist because it's no longer part of the official Kerberos - API. Therefore, add a special check to clear KRB5_AUTH, - KRB5_CPPFLAGS, KRB5_LDFLAGS, and KRB5_LIBS if neither - et/com_err.h nor com_err.h can be found and --with-krb5 is not - given. - - Thanks to Jesse Rehmer for the bug report. - -2013-12-12 iulius - - * innd: fix a segfault when running news.daily - - On systems where time_t is a 64-bit integer, innd segfaults on - "ctlinnd name" commands (for instance when news.daily uses these - commands on connected peers). - - Thanks to S.P. Zeidler for the patch. - -2013-12-09 iulius - - * Fix a few useless assignments (never read) reported by clang - - * Properly log as notice level Perl and Python hooks by default. - - * innd: write the first character in uppercase for error messages - - * innreport: update the pattern for "strange strings" - - The "Including strange strings" innreport section is now back in - daily Usenet reports. Fix regression introduced with commit - [8389]. - -2013-12-06 eagle - - * Update the URL for BerkeleyDB - - Oracle has gratuitously reorganized their web pages yet again. - -2013-12-05 iulius - - * update (again) the link to ISC INN page - -2013-11-26 iulius - - * update links to ISC and Trac - - * Russ' web site now lists the contributed links that were on the - old ISC web site (the new ISC web site is only a download page of - the last release). * Accessing Trac now requires a TLS - connection. - -2013-11-21 iulius - - * properly link nnrpd with libcrypto - - Since the separation of SSL_LIBS into OPENSSL_LIBS and - CRYPTO_LIBS in openssl.m4, the crypto part has been missing for - nnrpd. Now fixed. - - * improve support for Cyrus SASL - - * new --with-sasl-include and --with-sasl-lib configure flags to - allow the use of non-standard paths for the Cyrus SASL library * - if the Cyrus SASL library is found at configure time, INN will - now be built with support for it unless the --without-sasl flag - is explicitly passed to configure * sasl.m4 is now synchronized - from upstream rra-c-util - - * sync with latest lib-helper.m4 and openssl.m4 from rra-c-util - - Fix a bug in the *_OPTIONAL version of all Autoconf macros using - lib-helper.m4 that would add yes/include and yes/lib to the - compiler and linker search paths. - -2013-11-17 iulius - - * krb5.m4: synchronize with latest rra-c-util 4.11 release - - INN_LIB_KRB5_OPTIONAL now correctly configures the package to not - use Kerberos instead of failing if neither the new Kerberos error - APIs nor libcom_err could be found. - - Also fix the AM_CONDITIONAL that determines whether Kerberos is - linked with libcom_err. - - * fix the path to simpleftp in innshellvars and INN::Config - - When neither wget nor ncftpget nor ncftp was found at configure - time, the path to the simpleftp substitution program shipped with - INN was not proprely set in innshellvars, innshellvars.pl, and - the INN::Config Perl module. - - Thanks to Christian Garbs for the bug report. - -2013-11-11 iulius - - * regenerate Makefile dependencies with gcc 4.7.2 - - Also adapt support/makedepend to keep the two leading spaces, as - in previous versions of gcc. - -2013-11-10 iulius - - * sync a few m4, lib, and include files with latest rra-c-util - - Changes to note: - - * HAVE_KRB5 is now used instead of HAVE_KERBEROS in krb5.m4 * - remove NETDB_SUCCESS (no longer used) from getaddrinfo.c * define - ARRAY_SIZE in getaddrinfo.c * fix two warnings of unused variable - and comparison of a floating point number with 0 in snprintf.c * - define UNUSED in getnameinfo.c * check the return status of - snprintf instead of assuming that it will always succeed in - getnameinfo.c * define SOCKLEN_T in socket.h instead of - clibrary.h * improve the definition of sockaddr_storage in - socket.h - - * improve OpenSSL support - - * sync with latest rra-c-util version of openssl.m4 * use - HAVE_OPENSSL instead of HAVE_SSL * fix how - --enable-reduced-depends works with OpenSSL support (that flag - behaves the opposite it was supposed to) * search for the dl - library to link with, if needed - -2013-11-05 iulius - - * sync with rra-c-util - - * inet_ntop.c: sync with rra-c-util - - - Use socket_set_errno instead of assigning to errno. - - - Check the return status of snprintf in the inet_ntop - replacement function instead of assuming that it will always - succeed. - -2013-11-03 iulius - - * asprintf.c: synchronize with rra-c-util - - In the vasprintf replacement, preserve errno if snprintf fails - when formatting the string into the newly-allocated buffer. - - * add getrra-c-util support script to help the synchronization with - upstream - -2013-10-28 iulius - - * do not stop the build if the crypto library, when optional, is - not found - -2013-10-26 iulius - - * use at least Autoconf 2.64 to bootstrap INN - - AC_INIT has been supporting 5 parameters since Autoconf 2.64. - Switch to this newer version. - - Also improve HACKING as for the files taken from other projects - when releasing a new version of INN: - mention the paths of these - files in the libtool tarball, - mention rra-c-util, and document - how to run a single test, as well as a pointer where to find - automatic build logs of INN. - - * separate m4 macros for networking and UNIX domain sockets - - Use rra-c-util socket.m4 and socket-unix.m4 files. - - * improve the build with Kerberos v5 and OpenSSL support - - * use Kerberos v5 probes from rra-c-util (new krb5-config.m4 and - lib-helper.m4 files, and update of krb5.m4) * use OpenSSL probes - from rra-c-util (update of openssl.m4) * KRB5_AUTH is now defined - directly in configure.ac * --with-kerberos is renamed to - --with-krb5 (configure flag) * --enable-reduced-depends is a new - configure flag, which tries to minimize the shared library - dependencies of the resulting binaries on platforms with proper - shared library dependencies; this is not enabled by default, and - is of interest primarily to people building packages for - distributions * new --with-krb5-include, --with-krb5-lib, - --with-openssl-include, and --with-openssl-lib configure flags to - allow the use of non-standard paths * if the Kerberos v5, or - OpenSSL SSL and crypto libraries are found at configure time, INN - will now be built with support for them unless respectively the - --without-krb5, or --without-openssl flags are explicitly passed - to configure * update documentation and inn.conf sample file - -2013-09-22 iulius - - * fix another link to Berkeley DB in the ovdb documentation - -2013-09-22 eagle - - * Fix link to BerkeleyDB in the ovdb documentation - - * Fix link for downloading Perl in the hook documentation - -2013-09-21 iulius - - * update to latest upstream version of rra-c-util 4.9 - - * typos - - * mention lib32 and lib64 directories when looking at Berkeley DB - libraries - -2013-09-20 iulius - - * improve building with Berkeley DB support - - When building INN with Berkeley DB support, no longer add - standard locations to compiler and linker include flags; - unconditionally adding -L/usr/lib (for instance) may break the - build, especially when /usr/lib32 or /usr/lib64 are also defined. - Such default paths are now added only if explicitly given to one - or more of the --with-berkeleydb, --with-berkeleydb-include, or - --with-berkeleydb-lib configure flags. - - These two last flags are new in INN 2.6.0. - -2013-09-03 iulius - - * pullnews: improve logging when an error occurs during GROUP - - Also rewrite a ternary condition to improve readability. - - Patch from Geraint A. Edwards. - -2013-08-27 iulius - - * add const casts - - * ckpasswd: use the right prototype for PAM functions - - On AIX 7.1, security/pam_appl.h defines - - struct pam_conv { int (*conv)(int, struct pam_message **, struct - pam_response **, void *); void *appdata_ptr; }; - - so pam_message is not a const struct **. - - Add m4/pam-const.m4 taken from rra-c-util to detect at configure - time whether pam_conv expects a const. - -2013-08-25 iulius - - * test suite: more flexibility for inndf - - Increase the allowed difference in the result of the inndf test - suite. It otherwise sometimes fails when files are modified on - the system, outside INN. - - * fix the value of DBM_CPPFLAGS and DBM_LIBS - - It should now work (wrong fix in commit [9528]). - -2013-08-24 iulius - - * fix the value of DBM_CPPFLAGS and DBM_LIBS - - Typo in a test introduced by previous commit [9525]. - -2013-08-08 iulius - - * test suite: add libm for linking - - On some platforms (like AIX), linking with libm is needed as the - test suite uses math functions. Though only lib/confparse-t.c - currently uses is_double()/ok_double(), add libm to the whole - test suite. - - Updating to the latest release of Russ' C TAP Harness will make - it possible to link with libm only for the relevant tests. - -2013-08-07 iulius - - * do not use yyget_leng() function as it is not defined by old flex - versions - - Better keep using yyleng, still cast to size_t. - -2013-08-06 iulius - - * improve the detection of ndbm compatibility layer - - When INN is configured with Berkeley DB support, ckpasswd tries - to use the ndbm compatibility layer provided by Berkeley DB even - though Berkeley DB was not built with ndbm support. This patch - fixes that, by detecting at configure time that Berkeley DB - really has its ndbm compatibility layer. - - Also add support for gdbm libraries in ckpasswd. - -2013-08-01 iulius - - * ckpasswd: use Berkeley DB ndbm compatibility layer first - - On a few systems like Fedora 18 ppc64, the GNU dbm library - shipped as ndbm.h is not usable. - - ckpasswd.c: In function 'password_dbm': ckpasswd.c:165:5: - warning: passing argument 1 of 'dbm_open' discards 'const' - qualifier from pointer target type [enabled by default] database - = dbm_open(file, O_RDONLY, 0600); ^ In file included from - ckpasswd.c:30:0: /usr/include/ndbm.h:55:14: note: expected 'char - *' but argument is of type 'const char *' extern DBM *dbm_open - (char *file, int flags, int mode); ^ ckpasswd.o: In function - `password_dbm': - /home/iulius/autobuild/inn/authprogs/ckpasswd.c:165: undefined - reference to `dbm_open' - /home/iulius/autobuild/inn/authprogs/ckpasswd.c:170: undefined - reference to `dbm_fetch' - /home/iulius/autobuild/inn/authprogs/ckpasswd.c:177: undefined - reference to `dbm_close' - /home/iulius/autobuild/inn/authprogs/ckpasswd.c:172: undefined - reference to `dbm_close' collect2: error: ld returned 1 exit - status - - * fix the test suite for inndf - - When the filesystem name is lengthy, df may output two lines. "df - -k -P ." and "df -i -P ." (-P for a POSIX result) are not - available on all systems, so we just rewrite the df output on one - line. - - $ df -k . Filesystem 1K-blocks Used Available Use% Mounted on - /dev/mapper/gcc12-home 546781616 413506476 133275140 76% /home - -2013-07-31 iulius - - * fix build with flex 2.5.36+ - - Cast yyget_leng() to size_t because it used to be an int in flex - versions anterior to 2.5.35 (not included). - - * fix three casts to unsigned char when using toupper() - - GCC complains because of char-subscripts warnings. - - * fix two casts to const time_t * when using ctime() - - * fix two casts to unsigned long - - * consider that NetBSD behaves like FreeBSD for "df -i" - - Fix the test suite for inndf on NetBSD systems. - -2013-07-30 iulius - - * fix cast-align warnings - - GCC on some platforms warns about casts from struct sockaddr to - one of the more specific subtypes on the grounds that the - alignment requirements increase. Restructure code in - getaddrinfo.c to avoid needing the casts and cast through void * - everywhere else to suppress the warnings. (In all cases, we are - assured that the underlying data is properly aligned.) - - Thanks to Russ Allbery for the patch (from rra-c-util). - -2013-07-26 iulius - - * Update the URL for NoCeM - - * pullnews: fixed a Perl warning - - Latest Perl versions catch this use of uninitialized variable. - - Thanks to Tony Evans for the bug report. - - * pullnews: looks for the config file in the right home directory - - After commits [9304] and [9330], INN 2.5.3 broke the legacy - behaviour of pullnews looking for its configuration file in the - running user's home directory. Adding INN::Config changed the - $HOME environment variable to the news user's home directory (in - fact the pathnews parameter set in inn.conf). Besides, pullnews - was no longer useable outside INN. - - Fixed these issues by: - making INN::Config and - INN::Utils::Shlock optional. If these Perl modules are not - present, pullnews falls back to its legacy handle of locks (that - is unfortunately broken in Solaris); - setting the home directory - to the one of the running user (or to pathdb if pullnews is run - by the news user). - - Thanks to Tony Evans for the bug report. - -2013-07-22 eagle - - * Update the URL for NoCeM - - * Update URL to download Perl in the Perl hook documentation - -2013-07-03 iulius - - * disable the use of SSLv2 owing to its being unsafe - -2013-07-01 iulius - - * clarify distribution restrictions in the ME entry of the - newsfeeds sample file - - Note in the newsfeeds sample file that restrictions on accepted - distributions will have no effect if the article has no - distribution at all. - - Follow up commit [9499]. - -2013-07-01 eagle - - * Clarify distribution restrictions on articles with none - - Note in the newsfeeds man page that restrictions on accepted - distributions will have no deffect if the article has no - distribution at all. - -2013-06-29 eagle - - * Add tips for running INN on Mac OS X from Richard Tobin - - From in news.software.nntp. - -2013-06-25 iulius - - * fix a few resource leaks - - A few files were remaining open. - - Thanks to David Binderman for having reported the issue. - - * imapfeed: fix buffer overflow - - Fixed a buffer overflow when using imapfeed with more than a - million commands during the same IMAP session. - - Thanks to David Binderman for having reported the issue. - - * fix segfault during dereferencing - - Remove a useless unlink(). - - Thanks to David Binderman for having reported the issue. - -2013-06-24 iulius - - * fix a Perl warning in inncheck - - defined(@array) has been deprecated since Perl 5.16. - - Thanks to Remco Rijnders for the report. - -2013-06-12 iulius - - * document htpasswd and perl commands to generate the auth - newsusers database - -2013-06-08 iulius - - * add more gcc warnings to check (based on gcc 4.4.5) - - * mention in INSTALL that CNFS buffers are compatible between LFS - and non-LFS versions - - * innfeed, scanlogs: reopen log files on sighup - - The recent patch [9464] to flush exploder and process channels in - innd, and to send 'ctlinnd flushlogs' again after log rotation - solved the problem of controlchan or ninpaths holding open an - already deleted errlog file. However this does not yet solve the - original issue with innfeed.log when innfeed is run as a - standalone daemon via a funnel-file. - - This patch implements the changes suggested by Julien Elie in - January 2013, to add an openLogFile() call to the sighup handler. - The sigusr1 handler is not available, as it is already used to - increase / decrease the debugging level along with sigusr2. Also, - reopening the log after re-reading the configuration might be a - good idea anyway, as the log file location may have been changed. - - Additionally, call sighup on the innfeed pid in scanlogs, and - document the changes briefly in innfeed(8) / innfeed.conf(5). - - Thanks to Florian Schlichting for the patch. - -2013-06-06 iulius - - * properly undef two hashes used in Perl hooks - - * add the attributes hash to nnrpd Perl posting filter - - The attributes hash was only created for Perl authentication and - access functions. It is now accessible to Perl posting filter. - - Also update the sample filter_nnrpd.pl file. - - Thanks to Steve Crook for the patch. - -2013-05-24 iulius - - * also remove obsolete man5/radius.conf.5 file - - * rename radius.conf to inn-radius.conf - - The name of the radius.conf configuration file shipped with INN - conflicts with the libradius package. innupgrade will take care - of the renaming. - - Reported by Jochen Schmitt. - -2013-05-21 eagle - - * Force the actsync exit code documentation to not be a numbered - list - - POD has changed how it disambiguates numbered lists from - description lists and issues a new warning. Force the exit codes - to be a description list since they don't start with 1. - -2013-05-21 iulius - - * fix two old style definitions - - * remove useless code - - * add a comment to remember why PACKED is needed - -2013-05-20 iulius - - * fixed the occurrence of an unexpected "cant select" error - generated by innd - - errno was not preserved; the status hook was stuck between the - select and the check of its return status, so we're getting a - spurious EPERM from STATUSsummary, probably from some random - glibc internal syscall involved in fopen() that isn't actually - important. - - It only happens twice since it can only happen when select is - interrupted by a signal (triggering EINTR, which then gets - overwritten with EPERM), which is probably due to child processes - completing, which is probably only happening during specific - events on your server during expire. - - The solution is to rewrite this code to the order that it should - have been written in the first place. - - Thanks to Paul Tomblin for having caught that long-standing - issue. - -2013-04-14 iulius - - * compilation with gcc 4.8.0 - - Explicitly give the known size of a pointer used in a snprintf() - call in the OfferArticle() function. New - -Wsizeof-pointer-memaccess warning introduced in gcc 4.8.0. - --Cette ligne, et les suivantes ci-dessous, seront ignorées-- - - M post.c - -2013-03-22 iulius - - * update documentation for the new behaviour of "ctlinnd flushlogs" - - Also fix a POD error introduced by the previous commit. Thanks to - Florian Schlichting for having caught it. - -2013-03-18 iulius - - * Rotate innfeed logs - - Exploder and process channels are now properly reopened when - "ctlinnd flushlogs" is used, which is in particular the command - invoked by scanlogs to rotate log files. It solves the issue that - caused the patch to be reverted by commit [9449]. - - * Superfluous character in innfeed.log output - -2013-02-23 eagle - - * libinn: remove HeaderFind from documentation - - It hasn't existed since 2002... - - Patch from Richard Kettlewell . - - * innconf: Don't test HAVE_SSL This relieves customers of - /usr/include/inn from the need to guess whether INN was built - with SSL support in order to get a header that matches the - installed libraries. - - Patch from Richard Kettlewell . - -2013-01-16 iulius - - * test suite: remove a useless wrapped test for setenv - - Remove a test that makes the test suite fail on a few systems. - The code it is testing is obvious whereas getting the amount of - memory and the data size limits right is extremely difficult in - all cases. Besides, this test does not serve much purpose and is - not present in rra-c-util 4.7. - - * Typos. - - Thanks to Florian Schlichting for the report. - -2012-12-30 eagle - - * Fix the innfeed configfile parser generation rule - - Using $? in the rule, now that the extra dependency has been - added, caused the wrong arguments to be passed to bison. Pass the - correct arguments explicitly. - - This still seems to run bison twice for reasons that I can't - figure out, but that should be harmless. - -2012-12-29 eagle - - * Add additional dependency to de-parallelize innfeed yacc rule - - With a highly parallel make, yacc could be invoked on the innfeed - configuration parser twice, once to build the *.c file and once - to build the *.h file, leading to one of the mv commands failing. - Follow the recommendation in the Automake manual and add an - additional dependency from the *.h file to the *.c file, forcing - the rule to be run once. - - Reported by Remco Rijnders. - -2012-12-23 eagle - - * Do not attempt to rotate innfeed logs - - innfeed with funnel feeds will hold its log files open forever, - so those log files cannot be safely rotated with scanlogs. - There's no way to signal innfeed to close the log file and open a - new one. Remove the code in scanlogs that attempts to deal with - them. - - Patch from Florian Schlichting . - -2012-12-07 eagle - - * Remove reference to reap from prunehistory man page - - The FTP site from which this program was available seems to have - disappeared, and it was already marked as obsolete. - -2012-11-03 eagle - - * Remove link to Elena Samsonova's introduction - - This web site appears to be defunct. - -2012-09-04 iulius - - * Mention CVE-2012-3523 in the NEWS file (though posterior to the - 2.5.3 release) - -2012-07-08 iulius - - * update INSTALL to mention that shared libraries are no longer - backed up - -2012-07-07 eagle - - * Update URL for NewsPortal to one that works - -2012-07-06 eagle - - * Fix the backup extensions referenced library Makefile comments - - * Stop creating backups for shared libraries - - Introduce a new LI_LPUB command and use it for shared library - installation. Document in Makefile.global.in why shared libraries - can't use the normal backup mechanism. - - * Update HACKING release instructions for signing procedure - - ISC no longer signs the releases. We do that ourselves. We also - now need to contact ISC to update ftp.isc.org. - - * Document library versioning in HACKING - - * Reformat HACKING POD source for consistent margins - - * Bump shared library versions - - Increase the shared library version for all the shared libraries - on the grounds that we've almost certainly had ABI-breaking - changes since 2.5 (which was a long time ago). - - Move the shard library versions to near the top of the relevant - Makefiles so that the version is more prominant and document how - the version should be maintained. - - * Reformat file lists in lib/Makefile - -2012-06-15 iulius - - * typos - -2012-06-14 iulius - - * prepare the 2.5.3 release - - * Typo fixed in NEWS. - - * Add the 2012 year to LICENSE. - - * Add a contributor of a recent bug fix in CONTRIBUTORS. (Sorry - for having forgotten to commit the file!) - - * Bump the version of the latest release in FAQ. - - * inncheck: skip warning when expected .OLD backup files are found - - Improve commit 9418 by allowing only expected .OLD backup files - (and not all files whose name ends with ".OLD"). - - * update to latest config.guess and config.sub files - -2012-06-12 iulius - - * auth_init() should be optional in perl_auth - - The documentation (doc/hook-perl) for nnrpd auth hook says: - - If a Perl function auth_init() is defined by that file, it is - called immediately after the file is loaded. - - And later: - - Provided the file loads without errors, auth_init() (if present) - runs without fatal errors, and a Perl function authenticate() is - defined, authenticate() will then be called - - This suggests that auth_init() is optional, but it actually - isn't. When it's not defined, the auth hook will fail: - - 200 isis.rt.uk.eu.org InterNetNews NNRP server INN 2.5.2 ready - (posting ok) authinfo user test 381 Enter password authinfo pass - test 400 Internal error (3). Goodbye! - - It seems more sensible to not require an auth_init() function, as - most hooks probably won't need it. - - Thanks to River Tarnell for the bug report. - - * inncheck: skip warning when .OLD backup files are found - - * ctlinnd: check the syntax of the newsfeeds file on reload - - Add a check of the syntax of the newsfeeds file when trying to - reload "all", "active" and "newsfeeds". Otherwise, innd may crash - on reload. - - Thanks to Tim Fardell for the bug report. - - * innreport: ignore invalid dates in daily HTML reports - - Lines containing invalid dates are now skipped by innreport. The - behaviour of innreport was changed by the previous commit because - the use of Time::Local::timelocal() validates the date and fails - when the date is invalid. We now properly skip it. - - Thanks to Petr Novopashenniy for the bug report. - -2012-06-11 iulius - - * fix the generation of HTML pages by innreport during leap years - - An illegal division by zero occurred during the generation of - HTML pages by innreport. - - The problem comes from the parsing of innreport.db. If you have - in this file a change of year for which the hours are the same - between Dec 31th and Jan 1st, then this error is generated. - - For instance: - - news-notice.2010.12.31-04.15.02.html|Dec 31 04:15:02 -- Jan 1 - 04:15:02|28079|2791|7.9 MB|34320|1500|4.6 MB - - There is an issue in how innreport translates these dates. The - ConvDate() function assumes the dates are relative to the - *current* year. So it thinks it has been between Dec 31th 2012 - and Jan 1st 2012 (whereas it was Dec 31th 2010 and Jan 1st 2011). - As 2012 is a leap year, and Dec 31th is after Feb 28th, the - translated date contains an unexpected "+1 day". - - Thus, the main page of innreport HTML generation has not been - updated since the beginning of the year. Note that no HTML report - is lost. They are properly generated. - - Now, innreport makes use of Time::Local to convert dates to - seconds since epoch, thus modifying the behaviour of ConvDate() - which was converting dates to seconds since January, 1st. - - I bet innreport now runs slower, but I think it is better to - achieve robustness (the code using Time::Local seems easier to - read and maintain). - -2012-05-29 iulius - - * add a sample systemd-like init script - - Include in the contrib directory a systemd-like init script for - INN. - - Thanks to Jochen Schmitt (co-maintainer of the inn package of the - Fedora project) for the proposal. - -2012-05-28 iulius - - * add a releaselocks() function to INN::Utils::Shlock - - Improve how to release existing locks. lock() now keeps a trace - of acquired locks; releaselocks() releases all these locks. - Previously, unlock() had to be called on all locks. - - * add a hint to easily find out the modified line for INN in - ltmain.sh - -2012-05-03 iulius - - * improve documentation for innflags - - Thanks to John F. Morse for the report. - -2012-04-04 eagle - - * Remove old install documentation for --enable-libtool - - Keep the bits about the shared library API and move it to - somewhere else in the installation instructions. - -2012-04-03 eagle - - * Fix a mangled comment in the configure libtool changes - - * Re-enable our special support for -B in libtool - - * Update libtool to Debian version 2.4.2-1 - - * Make libtool support unconditional - - The days when this was too slow on common systems have long past, - and it makes the build system unnecessarily complex to support - having it be optional, particularly as we move forward with - Automake. - -2012-03-04 iulius - - * fixed a trailing extra junk byte in innd answers - - When an error occurs when innd writes on a channel, a trailing - extra junk byte is added to the reply. - - If the write() function fails, "i" is negative and we substract - "i" to cp->Out->left anyway. So if for instance i=-1, we end up - in having cp->Out->left increased by one. Which would add an - extra character after a complete response. (So it appears in fact - before a new response.) - - Issue introduced in changeset [7418]. - - Thanks to River Tarnell for the bug report. - -2012-01-14 iulius - - * fix a segfault when a message does not contain a Newsgroups: - header field - - A bug was introduced by [9121] (also in STABLE, but not in a - release). The Newsgroups: header field was strdup'ed before - having checked the validity of all the header fields. It could - therefore be unset, leading to a segfault. - - The check is now done. If the Newsgroups: header field is - missing, this error will still be reported afterwards. And in - case it is set, the presence of a moderated newsgroup is properly - checked, and nnrpd acts accordingly (it does not add or update - Injection-Date:, Injection-Info: and Path: header fields in this - case). - -2012-01-01 iulius - - * fix invalid 431 response when server is paused - - When innd is paused, its 431 response code does not comply with - RFC 4644. The Message-ID is missing. It is now properly present - as first argument to the response code. - - Thanks to River Tarnell for the bug report. - -2011-12-26 iulius - - * build INN before running the test suite - - * test suite: allow the biff service to be named comsat - - On some systems, the comsat alias for biff is first, so a lookup - of UDP port 512 returns it instead. Thanks to Jeffrey Vinocur for - the report. - -2011-12-26 eagle - - * Remove the Linux PAM link from the ckpasswd man page - - Remove link to the Linux PAM System Administrator's Guide from - the ckpasswd man page, since unfortunately it appears to not be - available on-line any more (except from various hosts that just - re-export the Debian /usr/share/doc tree, but those aren't likely - to be stable). - - * Fix a stray space in the FAQ so that it formats properly - -2011-12-25 iulius - - * update sendinpaths to use the current top1000 addresses - - As the top1000.org domain name has been discontinued for the TOP - 1000 Usenet stats, update our documentation and sendinpaths to - use top1000.anthologeek.net. - -2011-10-01 iulius - - * add paths to external libraries in CFLAGS and LDFLAGS for the - test suite - - A few tests are failing (or not built) because of paths to - external headers or libraries given at configure time unset - during the build of the test suite. - -2011-09-20 iulius - - * fix gcc warning with new Cyrus SASL version - - Cyrus SASL 2.1.25 modified the prototype of SASL callback - functions to fix the "function declaration isn't a prototype" - warning. - - : @@ -33,9 +33,10 @@ * SASL_FAIL -- unable to - find a callback of the requested type * SASL_INTERACT -- caller - must use interaction to get data */ +typedef int - (*sasl_callback_ft)(void); typedef int - sasl_getcallback_t(sasl_conn_t *conn, unsigned long callbackid, - - int (**pproc)(), + sasl_callback_ft * pproc, void **pcontext); - - When using callbacks, we now cast the argument: - (sasl_callback_ft) &getsimple to silent "initialization from - incompatible pointer type" warnings, and define sasl_callback_ft - for older Cyrus SASL versions. - -2011-09-19 eagle - - * Stop using INADDR_LOOPBACK - - It looks like the byte order of INADDR_LOOPBACK is indeterminate - and may require htonl on some systems and not on others. Avoid - the issue by not using it and instead just using - htonl(0x7f000001UL). - -2011-09-13 iulius - - * skip leading whitespace in Xref: header fields when running as a - slave - - Fix a regression that occurred in INN 2.5.0 when leading - whitespace have been made significant in header field bodies. It - could lead INN to drop articles and throttle itself when running - as a slave because Xref: header fields generated by other news - servers, or even INN 2.4.6, could contain (valid) leading - whitespace. - - Thanks to Matija Nalis for having caught this bug. - -2011-09-08 iulius - - * fix signedness issues in the results of ternary constructions - - * fix the return type of main() - - Use an int for main() return type. - - * fix the end of the header in archive (it was 1 byte too long) - -2011-09-04 iulius - - * add documentation for procbatch - - New documentation written by Florian Schlichting, with the help - of a memo by Russ Allbery. - - Add a link to this new documentation in innfeed and news.daily - documentation. - - Use "$INN::Config::pathtmp" instead of "INN::Config::$spooltmp" - in procbatch. (The two variables are the same; the first one is - more wide-spread.) - - Add a warning if -s is used without -c, and if -t is used without - -m. - -2011-08-31 iulius - - * silent a log message about FD_SETSIZE - - As rlimitnofile is set to "-1" by default, innd should handle - silently a decrease of available file descriptors to FD_SETSIZE - minus 1. - -2011-08-22 iulius - - * Update changelog - - * Cast the argument to toupper() - - Following the previous commit dealing with tolower(), cast the - argument to an unsigned char. - -2011-08-21 eagle - - * Cast the argument to tolower() - - Like the other ctype.h functions, tolower takes an int, which on - systems with signed chars can result in unexpected type promotion - and broken behavior. Follow best practice of always casting the - argument to an unsigned char. - - Remove some dead code in the innfeed config parser. - -2011-08-21 iulius - - * update MANIFEST after the removal of hstrerror - -2011-08-21 eagle - - * Fix warning suppression in getnameinfo replacement - - When lengths that may be 0 are cast to unsigned before - subtracting one, we may get underflow. Move the subtraction to an - addition on the other side of the comparison. Use const void * as - the cast for calling gethostbyaddr, since it's more general than - char *. - - * Work around gcc 4.4 misdiagnosis of strict aliasing violation gcc - 4.4 thinks part of the network test suite is a strict aliasing - violation because it declares a local struct sockaddr_storage and - then casts it to other structs. Allocate it from the heap instead - to work around this bug. - -2011-08-20 eagle - - * Move netdb constants from portable/socket.h to lib/getaddrinfo.c - - Nothing outside of the getaddrinfo replacement function now needs - any of the netdb.h constants or h_errno, so remove them from - portable/socket.h and move them to lib/getaddrinfo.c. - - * Remove hstrerror replacement - - This is no longer used anywhere in the source tree since all - callers now use getaddrinfo and its corresponding error message - function instead. - - * Remove obsolete h_errno reference in innfeed - -2011-08-20 iulius - - * strictly check the syntax of a token - - * Check that the last argument to "ctlinnd addhist" is either '' - or a valid token; - - * Use @000000000000000000000000000000000000@ when the token is - empty ('') for "ctlinnd addhist", or badly formatted for any - other function calling TextToToken(); - - * Fix the result of the hexadecimal conversion when a lowercase - character is used. Transform it to an uppercase character. - - * Reject invalid tokens containing '@' or lowercase characters. - (They were previously wrongly accepted.) - - Previously: - - % ctlinnd addhist '' 1312575175 1312575175 1312575175 '' - Ok % grephistory -e '' - @95A9ADC6403A29596359BECC38B651C17020@ - - % ctlinnd addhist '' 1312575175 1312575175 1312575175 - '@aaaaaaaaaaaaaaaaaaaaa@' Ok % grephistory -e '' - @CACACACACACACACACACAA9BA95191402003F@ - - % ctlinnd addhist '' 1312575175 1312575175 1312575175 - '@a' Ok % grephistory -e '' - @CAA95191C66E8A89FC1B8B495EFE9EE9301E@ - - Memory was not properly initialized. - - Now, the first command uses - @000000000000000000000000000000000000@ and the others are - rejected, as invalid. - -2011-08-18 iulius - - * synchronize our libraries with rra-c-util 3.7 - - * Update to the latest release of rra-c-util (3.7). Keep the - specific part for setenv-t.c with the run of a shell script - wrapper. - - * Add support for "make tests" in the tests directory. - - * Add support for $SOURCE and $BUILD in runtests. - - * mkstemp.c: add a check for (errno != EISDIR). - - * snprintf.c: remove the HAVE_LONG_DOUBLE check. All modern - compilers have "long double". - - * fix the libtest support files to make the new libtest format work - - * update the messages library from rra-c-util 3.7 - - * New prototypes for message_handlers_* and message_log_* - functions: size_t for the count/len argument, instead of a signed - int. - - * Add a flush at the end of message_log_stdout. - - * update the vector library from rra-c-util 3.7 - - * Add new vector_addn, vector_split_multi and cvector_split_multi - functions. (Still unused.) - - * Update to the new test suite for vector.c. - - * update xmalloc librairies from rra-c-util 3.7 - - * Switch the xmalloc_fail prototype from lib/xmalloc.c to - include/inn/libinn.h. - - * Update tests/lib/xmalloc.t to the new shell syntax with - libtest.sh for the test suite. - - * Disable the check for RRA_MAINTAINER_TESTS. We'll see whether - we should keep it later. - - * Use 3.5MB instead of 96KB for the tests/lib/xmalloc.t failing - test. - - * Use RLIMIT_AS instead of RLIMIT_DATA in tests/lib/xmalloc.c. - - * update network librairies from rra-c-util 3.7 - - * Change the prototype of network_bind_all to use (unsigned int - *) instead of (signed int *) for the count argument. - - * Adapt nnrpd to use unsigned int for lfdcount, and innd to use - unsigned int for chanlimit. - - * Add the network_accept_any function. (Currently unused.) - - * Define the socket_type type and INVALID_SOCKET. - - * Update dependencies. - - * Fix a typo in a comment in lib/network.c. - - * Update the test suite to use network-t.c from rra-c-util 3.7. - -2011-08-16 iulius - - * docheckgroups: no longer use awk - - On a few systems, docheckgroups fails because of the use of an - old version of awk. A few awk implementations have a limit in the - size of the input they can process; it then cause issues with - large newsgroups files. - - Use Perl instead of awk for the time being. It solves these - issues. Successfully tested on a system where docheckgroups was - previously failing. Thanks to John F. Morse for the bug report. - - The next step will be a total rewrite of docheckgroups. It will - be much more maintainable as a Perl script. - - * cnfsstat: reload configuration files when modified - - cnfsstat now reloads storage.conf and cycbuff.conf if they have - been modified since the last iteration of the script (started - with the "-l" flag). Otherwise, the new configuration is not - taken into account by a "ctlinnd xexec" command; only rc.news - starts cnfsstat. - - Also change the "Cannot open CycBuff Conffile" message because it - is not always true. The message can be logged when an error - occurs during the parsing of the file. Sometimes, even when the - parsing was incorrect, the file was accepted. This behaviour is - also fixed, and the file is refused at cnfsstat startup. - - * fix an error in rc.news documentation about ovmethod and - docnfsstat - -2011-08-10 iulius - - * improve the sample init script - - Based on the Debian package. (Current maintainer: Marco d'Itri.) - - * inncheck: allow to skip the check for certain files - - Setting an empty value to a file to check permits to skip the - actual check. It is useful for people who are not running all the - programs shipped with INN (for instance innfeed, in which case - innfeed.conf is unnecessary). - - Thanks to Florian Schlichting for the patch. - - * inncheck: mention that the run-away quote warning may be a false - positive - - Note: In cases where an option value spans more than two lines, - i.e. there is at least one line that doesn't even contain a - single double-quote, there will also be an error messages about - an invalid option name as well as one about a missing colon... - - Thanks to Jeffrey M. Vinocur and Florian Schlichting for this - suggestion. - - * pullnews: no longer modify invalid empty header fields - - pullnews MUST NOT modify header lines by default. Remove the part - of the code that was removing empty header lines. - - According to RFC 5537: - - 3.6. Duties of a Relaying Agent - - Relaying agents MUST NOT alter, delete, or rearrange any part of - an article except for the Path and Xref header fields. They MUST - NOT modify the body of articles in any way. If an article is not - acceptable as is, the article MUST be rejected rather than - modified. - - Also, fix the first lines of the script to no longer say that - pullnews can be used without INN. (We use shlock.) - -2011-08-06 iulius - - * upgrade to latest control.ctl file - - * confusion in the name of the "die" function - - * fix a cast to signed, and not unsigned - - * temporarily revert commit 9308 because of an unexpected "sed" - error appearing at configure time - - Errors appear at the end of configure: - - checking log facility for news... LOG_NEWS configure: creating - ./config.status Usage: /bin/sed [OPTION]... - {script-only-if-no-other-script} [input-file]... [...] GNU sed - home page: . General help using - GNU software: . ./configure: line - 20063: /bin/sed -e 1s/^X//: No such file or directory - ./configure: line 20063: : command not found ./configure: line - 20063: : command not found ./configure: line 20063: : command not - found ./configure: line 20063: : command not found [...] - - * update our support files to the latest libtool version (2.4) - - * update our support files to the latest automake version (HEAD) - - * update our support files to the latest autoconf version (HEAD) - - * fix compilation of tagged-hash history format when warnings are - on - - Variables names have changed since the last time a build in debug - mode was done. - -2011-08-04 iulius - - * add an INN::Utils::Shlock module to wrap shlock in Perl scripts - - Calling shlock (a program shipped with INN) is more portable than - using flock(2) and its corresponding Perl function because this - function does not work as expected on all existing systems (for - instance on Solaris). - - This patch: - - * contains POD documentation for INN::Utils::Shlock; - - * adds support for INN::Utils::Shlock instead of flock(2) in - pullnews and mailpost. - - * uses INN::Utils::Shlock instead of a subfunction calling - shlock(1) in controlchan, thdexpire and send-uucp. - - Thanks to Dennis Davis for the bug report. - - * add POD documentation for scanspool - - Many thanks to Florian Schlichting for the creation of the POD - documentation. - -2011-08-02 iulius - - * check for wrong leading characters in passwd (for instance a - commented line with //) - - Thanks to Florian Schlichting for the patch. - - * remove inncheck warning about an empty newsfeeds ME entry - - INN works without problems when the newsfeeds ME entry is empty. - inncheck no longer warns about an empty ME entry. - - Thanks to Florian Schlichting for the patch. - -2011-08-01 iulius - - * fix an error in the order of typedef arguments in commit 9291 - - * fix unsigned/signed conversions - -2011-07-31 iulius - - * fix Makefile inclusion variable for Berkeley DB - - Use the right DB_CPPFLAGS variable instead of BERKELEY_DB_CFLAGS. - - * fix gcc 4.6.1 warnings about unused variables - -2011-07-27 iulius - - * add missing types (used in innfeed/config_l.c) - - * fix an autoconf issue with missing brackets - - * fix issues with calls to getgroups() - - Properly check that the getgroups() functions exists and works - before trying to use it. - - Also use GETGROUPS_T set by configure to be whichever of gid_t or - int is the base type of the array argument to getgroups(). - - * use new AC_CHECK_TYPE autoconf syntax - - Autoconf versions prior to 2.13 provide a now deprecated version - of the AC_CHECK_TYPE macro. It was doing more than a CHECK, and - was also defining missing types with #define instead of typedef. - - Swith to the preferred syntax with AC_CHECK_TYPES and typedef. - -2011-07-25 iulius - - * include if available - - Do not include only when is available. It - is required by the XSI extensions to POSIX and may be the only - place that strncasecmp, for instance, is prototyped on some - platforms like FreeBSD. - -2011-07-24 iulius - - * sendinpaths: add a pattern for the dump filenames - - Only process files whose name begin with "inpaths." for legacy - reasons (behaviour of the previous sendinpaths shell script). It - will prevent issues on /path being symlinked to another - directory. - - Also abort the run of sendinpaths if we cannot chdir() to the log - directory. - - Thanks to The Doctor for having reported the problem. - -2011-07-22 iulius - - * better documentation of the available variables in INN::Config - - Document how to obtain the existing INN::Config variables; - provide a Perl script that gives the list. - - Add support for the "undef" value in "innconfval -p" (Perl - output) so that the list could be exhaustive. - - Add a way to retrieve the real short version ("x.y.z") instead of - a long string ("INN x.y.z (prerelease 20110622)"). - $INN::Config::VERSION now contains the short version. - -2011-07-20 iulius - - * sendinpaths: complete rewrite in Perl - - Switch to a new sendinpaths program written in Perl. Based on - Mohan Kokal's work. - - No longer explicitly check for the 'inpath.*' pattern in file - names. - - New -c, -d and -h flags for a copy of the e-mail to the - newsmaster, a debug mode, and a usage information. - - close #22 - -2011-07-18 iulius - - * improve scripts to send Path: statistics - - Add two flags to sendinpaths: -k and -r permit to control the - interval of days for processing dump files. It will allow a - proper generation of daily statistics. - - Also fixed an issue with statistics that could be missing for a - couple of days when monthly sent. - - Improve our documentation. - -2011-07-17 iulius - - * Update our changelog for INN 2.5.3. - -2011-07-12 iulius - - * add a missing dependency to time.h for "struct timeval" - - Thanks to The Doctor for having reported the issue. - - * add a pure attribute, a noreturn attribute, and fix a typo - - * fix a compilation warning - - Make sure FD_SETSIZE is strictly positive. Cast for an unsigned - comparison. Fix a potential bug of affecting -1 to i in case - FD_SETSIZE was 0. - - * synchronize the test suite with C TAP Harness 1.7 - - * homogeneize the CleanupAndExit() function of fakeinnd with the - real one - - * controlchan: use convdate instead of DateTime::Format::Mail - - * Adapt commit [9238] to no longer have a dependency to the Perl - module DateTime::Format::Mail. Use convdate instead. - - * On a date parsing failure, controlchan no longer dies and - rejects the message (which will be actually process only with the - "-c" flag disactivating the cutoff check). - - * Add a "-c" flag to controlchan to disable the cutoff check. - - * Also add a "-h" flag to print basic usage information. - - * Convert controlchan man page into POD: - mention - control.ctl.local; - document the "-c" and "-h" flags; - document - the need for the Perl modules Encode and MIME::Parser; - add an - example of how to manually invoke controlchan. - -2011-07-11 iulius - - * tradindexed remap of index files when writes out of order - - The overview IDX files aren't being re-read after an article is - written to them -- the failing tests (in xref.t, in the test - suite) are the places where a stored overview line is read back - to check that it was stored correctly, except for the first time - each group is read (tests 2-5, 11-18) and when the high water - mark is advanced (7-10), which work correctly. - - There isn't any mechanism in the source code for the files to be - refreshed except in the case that the high water mark has been - advanced. On systems which don't have MMAP_MISSES_WRITES, perhaps - the underlying write shows up automatically (?) - - Thanks to Wim Lewis for the bug report. - - * controlchan: impose a date cutoff, block the replay of old - control articles - - controlchan now requires DateTime::Format::Mail to parse dates. - Otherwise, with the new Injection-Date: header field, old control - articles could be maliciously reinjected into Usenet, and - replayed. - - The Injection-Date: header of old control articles is not always - signed... - - controlchan now imposes a date cutoff. - - According to RFC 5537, a relaying agent processes an article as - follows: - - 2. It MUST examine the Injection-Date header field or, if absent, - the Date header field, and reject the article if that date is - more than 24 hours into the future. It MAY reject articles with - dates in the future with a smaller margin than 24 hours. - - That is to say that the Date: header field can be set to anything - when an Injection-Date header field exists. - - * add a default timeout on outgoing sockets (NNTPconnect) - - For a long time, there have been occasional problems with actsync - syncing from certain servers: instead of erroring out and exiting - (with "cannot connect to server: Connection timed out" or - alternatively "cannot connect to server: Success"), actsync would - hang until manually killed, sometimes for days. - - gdb shows actsync is hanging in a call to fgets in NNTPconnect() - (from actsync.c:get_active()). innxmit and innxbatch can use - alarm() to set a timeout but other users of NNTPconnect, such as - nntpget, rnews, clientlib.c and nnrpd/post.c apparently don't. - - Implement SO_RCVTIMEO with the default timeout of 300 seconds - (set in include/inn/options.h). - - The raised error will be: "actsync: cannot connect to server: - Resource temporarily unavailable" - - Thanks to Florian Schlichting for the patch. - - * inncheck: INN 2.6.0 uses addinjectiondate and - addinjectionpostinghost for readers.conf - - The two addnntppostingdate and addnntppostinghost parameters in - inn.conf have been respectively renamed to addinjectiondate and - addinjectionpostinghost in the 2.6 branch. - - * inncheck: properly find the boundaries of substituted variables - in newsfeeds - - Thanks to Alexander Bartolich for the bug report, and also the - patch. - -2011-07-10 iulius - - * check of global values vs per-peer values in innfeed.conf - - * As no keys are actually required in innfeed.conf, update - inncheck accordingly. - - * Update inncheck, the man page and the innfeed.conf sample file - to correctly mention that deliver-* keys for imapfeed must be - specified at global scope. - - * initial-sleep is a global value; close-period is a per-peer - value. Update inncheck accordingly. - -2011-07-09 iulius - - * check all the default values in innfeed.conf (documentation, - sample, source code) - - * Change the default dynamic method from 0 to 3. It already was - the recommended value in the documentation, and the default value - in the sample innfeed.conf file. - - * Change the default use-mmap setting from true to false. It - already was the recommended value in the documentation. The value - of this parameter is only used when innfeed is given file names - to send instead of storage API tokens, which is a fairly rare use - case. - - * No longer generate an error message (logged in news.err) when a - parameter is not defined in innfeed.conf. It has a default value, - so no need to warn the user. (Also updated in innreport.) - - * Add a "noreturn" hint to the compiler for the dump_core() - function. - - * Homogeneize tape.c with host.c for the default values of - backlog-limit, backlog-factor and backlog-limit-highwater. - - * Log a few more parameters in innfeed.status: "Stats period", - "Stats reset", "Debug shrinking", "Fast exit", "stdio-fdmax", - "reconnection time", "max reconnection time", "DNS retry period", - "DNS expire period", "port num", "force IPv4", "backlog - highwater", "highwater queue". - - * Documentation fixes: - "pid-file" is relative to "pathrun", and - not "backlog-directory"; - "log-file" is relative to "pathlog", - and not "backlog-directory"; - "initial-sleep" is a global value, - and not per-peer; - "close-period" is a per-peer value, and not a - global value; - "max-reconnect-time" is mispelled once in the - documentation; - specify that *no* keys are mandatory. They are - all optional, and have a default value (all of them are now - mentioned in the documentation). - - * Documentation additions: - If a file named "innfeed.debug" - exists in the "pathlog" directory, then "debug-level" is - automatically set to 1. This is a cheap way of avoiding continual - reloading of the "newsfeeds" file when debugging. Note that debug - messages still go to "log-file"; - "backlog-directory" is - relative to "pathspool"; - "status-file" can be set to an - absolute path. - - * inncheck: eliminate perl4-style subroutine calls with &function - - Patch from Florian Schlichting. - - * inncheck: improve how wildmats are recognized - - Thanks to Florian Schlichting for the patch. - -2011-07-08 iulius - - * inncheck: improvements in checks - - * Allow uppercase characters in IPv6 addresses. RFC 5952 section - 4 / 4.3 says that all characters in an IPv6 address MUST be - textually represented in lowercase and advises that humans should - do so, too. At the same time, all implementations must be able to - accept both lowercase and uppercase. - - * Suppress (useless and misleading) error messages after an error - is detected, until the parser is back in sync. The drawback is - that it will hide two consecutive errors until the first one gets - fixed. - - * Allow not to specify the maximum size in storage.conf. "size: - 16384," was treated as an error though it was totally valid and - meant "no upper limit". - - * Recognize inclusions in readers.conf and innfeed.conf. inncheck - will ignore the include statement. The drawback is that every - file must be self-contained on its own: a file must be a - "complete" set of blocks and options. In order to check the - included file, inncheck has to be run again on it (with for - instance the option "readers.conf=/path/to/included/file"). - - Thanks to Florian Schlichting for the patch. - -2011-07-07 iulius - - * improve checks on passwd.nntp - - Improve the error message when the parsed lined is in wrong - format: "Argument list too long" (E2BIG) instead of "Numerical - argument out of domain" (EDOM). - - Also catch a new kind of error in passwd.nntp: any line prior to - a matching , which is not empty or starts with a hash, - but contains a third colon somewhere that is not followed by - "authinfo". - - Thanks to Florian Schlichting for the patch. - - * let innd -S check incoming.conf - - The fully-useful check will have to wait for the new config - parser being used... - - Thanks to Florian Schlichting for this new -S flag. - - * inncheck: use Getopt::Long - - Improve the way inncheck parses the command line arguments. The - last matching argument is taken into account (consequently, - "--noperm --perm --noperm" is valid, as well as "-q -v"). - - As -perm is not just the opposite of -noperm, $perms is handled - differently. So 1 is -perm, 0 is -noperm, and -1 is neither. - - Use --fix, --perms, etc. in our documentation. Keep -fix, -perms, - etc. for backward compatibility. - - Thanks to Florian Schlichting for this patch. - - * inncheck: check for require_ssl and CIDR notations - - inncheck was looking for require-ssl instead of require_ssl; and - it wasn't accepting IPv6 addresses in CIDR notation at all. - - Patch from Florian Schlichting. - -2011-07-06 iulius - - * inncheck: generate a proper exit value and allow quiet (-q) - operation - - Add support for a quiet mode (with the -q flag). This flag cannot - be used along with the exiting -v flag (verbose mode). - - Also add a non-zero exit value when errors are found. - - Thanks to Florian Schlichting for this patch. - - * innfeed.conf: fix documentation wrt. floating-point and optional - values - - Move bindaddress and bindaddress6 to the (newly created) optional - section. - - dynamic-backlog-low and dynamic-backlog-high expect - floating-point values, and not integer values. - - All of the special keys for imapfeed are not required. - - Thanks to Florian Schlichting for the main part of this patch. - - * inncheck: actually check incoming.conf/readers.conf, as well as - innfeed.conf and storage.conf (generic config-syntax parser) - - IDEA: Be more restrictive than current parsers and config-syntax - / lib/confparse.c combined, so that anything that passes inncheck - will be OK both now and in the future. - - A few notes: - cuddled braces: config-syntax says there doesn't - need to be white-space inside, but incoming.conf parser in - innd/rc.c requires it (at least after "{") => DO REQUIRE - WHITESPACE, as it will work everywhere - double quotes: - config-syntax says strings can be continued on multiple lines by - means of a backslash; incoming.conf parser in innd/rc.c does not - know about backslashes, but will continue over newlines until - matching " is found or 32K exceeded => DO REQUIRE strings to stay - on one line - comments: config-syntax says "comments at the end - of lines aren't permitted", but this seems to be standard - practice... Weird things can happen if a "#" is encountered - inside a string - multiple variables: config-syntax says multiple - variable settings can be on one line when separated by semicolon; - incoming.conf parser knows nothing about this - double - assignments: in practice, the latter takes precedence, says - config-syntax, though I wouldn't bet on it for current - incoming.conf... - - Many thanks to Florian Schlichting for this pretty useful patch. - - * inncheck: make perlcritic happy (a little bit at a time...) - - One of these is a bug: an error message was not shown (for - passwd.nntp). - - Thanks to Florian Schlichting for this patch. - - * clean up innd code - - Add the "noreturn" attribute to two functions. - - Fix a typo, add a comment, add an explicit comparison to NULL. - - * implement an upper limit to the number of file descriptors - - select() only handles (FD_SETSIZE-1) file descriptors at most. - Otherwise, macros like FD_SET have an unexpected behaviour. - - Force this upper limit right now (usually 1023). In future - versions of INN, hopefully libevent will deal with a larger - number of file descriptors. - - Thanks to Steve Crook for the bug report. - - * better check of the rights on the private key for TLS connections - - Use stat() instead of lstat(). The permissions of the symlink are - irrelevant; we only care about the permissions of the underlying - file. - - Use getegid() instead of getgid(). - - The news group is fairly trusted already by INN. Ensure that if - the mode is 440 or 640, the group owner is the news group (to - prevent the failure case of having news:users as the owner and - group). - - In the error message, a wrong path to the key was put (cert_file - instead of key_file). - - Thanks to Florian Schlichting for having reported the issue, and - to Russ Allbery for his help on the fix. - -2011-07-05 iulius - - * add 'use strict' mode to signcontrol - - Clean up these Perl scripts. - - Use LOCK_EX instead of the value 2. - - Thanks to Florian Schlichting for this patch. - - * STARTTLS / AUTHINFO SASL plaintext command injection - - Fixed a possible plaintext command injection during the - negotiation of a TLS layer. The vulnerability detailed in - CVE-2011-0411 affects the STARTTLS and AUTHINFO SASL commands. - nnrpd now resets its read buffer upon a successful negotiation of - a TLS layer. It prevents malicious commands, sent unencrypted, - from being executed in the new encrypted state of the session. - - The issue has been present since INN 2.3.0 (when STARTTLS was - implemented). - - Confirmed when sending "STARTTLS\r\nDATE\r\n" with openssl: - - 17:04 news@trigo ~/work/openssl/openssl-1.0.0d% apps/openssl - s_client -quiet -starttls smtp -connect news.trigofacile.com:119 - didn't found starttls in server response, try anyway... depth=0 C - = FR, ST = news.trigofacile.com, O = news.trigofacile.com, CN = - news.trigofacile.com verify error:num=18:self signed certificate - verify return:1 depth=0 C = FR, ST = news.trigofacile.com, O = - news.trigofacile.com, CN = news.trigofacile.com verify return:1 - 500 What? 111 20110403150413 QUIT 205 Bye! - - The 500 artefact is because of the EHLO sent by openssl before - STARTTLS. We see here that the DATE command is answered. - - With this patch, here is a new attempt with openssl: - - 17:06 news@trigo ~/work/openssl/openssl-1.0.0d% apps/openssl - s_client -quiet -starttls smtp -connect news.trigofacile.com:119 - didn't found starttls in server response, try anyway... depth=0 C - = FR, ST = news.trigofacile.com, O = news.trigofacile.com, CN = - news.trigofacile.com verify error:num=18:self signed certificate - verify return:1 depth=0 C = FR, ST = news.trigofacile.com, O = - news.trigofacile.com, CN = news.trigofacile.com verify return:1 - 500 What? DATE 111 20110403150638 QUIT 205 Bye! - - The answer to DATE is not given after "500 What?". We had to - explicitly ask for it. The issue is therefore solved. - - * add 'use strict' mode to cnfsheadconf, cnfsstat, innmail and - procbatch - - Clean up these Perl scripts. - - Thanks to Florian Schlichting for this patch. - - * add 'use strict' mode to mod-active - - Clean up the Perl script (especially a rewrite of the eval() - call). - - Restart INN automatically before (and if) dying, when the old - active file is still present. - - Thanks to Florian Schlichting for this patch. - - * add support for wire-formatted articles in scanspool - - Remove \r from the Newsgroups: header field when parsing it. - Otherwise, scanspool can not properly parse articles stored in - wire-format, and wrongly report that the article does not belong - in its newsgroup. - - Also initialize two variables, and make sure a hash value exists, - to silent three warnings during the execution of scanspool. - - * add 'use strict' mode to scanspool - - Clean up the Perl script. - - Thanks to Florian Schlichting for this patch. - -2011-06-24 iulius - - * fix compilation issues and useless prototypes - - * Remove the useless timerCallback() function. - - * Add a missing argument in a call to prepareWrite(). - - * "len" should be a socklen_t and not an int. - - * "program" was not declared as a char*. - - * Better names for variables. - - * Remove useless prototypes, and make a few functions as static. - - * Typos in comments. - - Thanks for Florian Schlichting for the main part of the patch. - - * fix a bug in the frequency innfeed logs its status - - innfeed was printing lots of useless lines to news.notice. - - TMRnow() doesn't return the current time, as innfeed was assuming - in the code, but the readily usable number of milliseconds since - the last call to TMRsummary() or TMRinit(). - - Thanks to Florian Schlichting for the patch. - -2011-06-14 iulius - - * Build INN with the new "-Wunused-but-set-variable" GCC 4.6.0 - warning. - - Remove unused variables. - - At the same time, do a bit of cleaning! (Useless whitespaces, - useful (for reading) whitespaces, one-line if conditions, - "conn_ret" type instead of "int".) - - Also add checks to WriteToWire_lmtpstr() results, so as to really - return the result (and properly disconnect the session on error), - instead of returning RET_OK as though everything were OK. - - Same thing for WriteToWire_imapstr() at a few places. - - No need to be in any auth step when we are about to close the - IMAP session after a failure of WriteToWire_imapstr(). - - * Build INN with the new "-Wunused-but-set-variable" GCC 4.6.0 - warning. - - Remove unused variable "amt", and at the same time two useless - TRUST_FPRINTF and NO_TRUST_STRLEN branches. - - * Build INN with the new "-Wunused-but-set-variable" and - "-Wunused-but-set-parameter" GCC 4.6.0 warnings. - - Remove unused variables. - - Also fix a potential issue with the incorrect handling of structs - when passed by value instead of by reference. Maybe a - compiler-specific behaviour. - - * Build INN with the new "-Wunused-but-set-variable" GCC 4.6.0 - warning. - - Remove unused "c" variable. - - Well, better rewrite the function at the same time. Thanks to - Russ Allbery for the new array parsing code. - - * Build INN with the new "-Wunused-but-set-variable" and - "-Wunused-but-set-parameter" GCC 4.6.0 warnings. - - Remove unused variables. - - In innd/python.c, also use "wasspace" as a boolean. - - In tests/overview/api-t.c, keep the "expires" variable because it - is set afterwards in the code to the right expected value. Though - unused after being set, it is worth keeping it for the day when - the overview API uses the value. - -2011-06-13 iulius - - * Build INN with the new "-Wunused-but-set-variable" GCC 4.6.0 - warning. It was complaining about an unused "sv" variable. - - This commit fixes the following issues: * innd and nnrpd - segfaults because of a corrupted Perl stack. A copy of the Perl - stack pointer is saved at several places in the code but not - always restored the way it should be. For instance, PerlFilter() - calls could reallocate the Perl stack and subsequently cause - failures when the stack is used afterwards. Make sure that the - Perl stack could not be modified twice in the row without being - properly updated at global scope. - - * use ENTER-SAVETMPS-PUSHMARK-PUTBACK and - SPAGAIN-PUTBACK-FREETMPS-LEAVE macros whenever they are required. - Note that call_argv() does not need PUSHMARK-PUTBACK. - - * fixed two memory leaks because of a xasprintf() which was not - free'd. - - * documentation of the filter_end() Perl routine that is called, - if defined, prior to the deactivation of Perl filters. Both used - by innd and nnrpd when Perl filtering is turned off (either with - "ctlinnd perl n" or when a Perl function dies at run time). - -2011-06-11 iulius - - * Use "localhost" instead of "stdin" in injection fields when an - article is posted from the local system. - - Suggestion from Dieter Stussy and Paolo Amoroso. - - * Fix the build on MacOS because of common variables. We just - declare them as non-common by adding initialisations. - - Root cause seems to be that ranlib behaves different on MacOS X. - By default, ranlib (actual libtool, ranlib is a symbolic link to - libtool) doesn't put common symbols in the index. From ranlib(1): - - -c Include common symbols as definitions with respect to the - table of contents. This is seldom the intended behavior for - linking from a library, as it forces the linking of a library - member just because it uses an uninitialized global that is - undefined at that point in the linking. This option is included - only because this was the original behavior of ranlib. This - option is not the default. - - Thanks to Dennis Preiser and vi Bo Lindbergh for the patch. - - Also remove the three now unnecessary mentions to shmem.o, - expire.o and ov.o in ovmethod.mk. - -2011-05-11 eagle - - * Fix broken or obsolete links in install documentation - - Update the link for installing Perl to the result of the current - permanent redirect. Remove the paragraph about installing the - commercial version of PGP, since www.pgp.com now redirects to the - Symantec product page, which makes no mention of the PGP that - would be of interest to an INN installer. - -2011-04-16 iulius - - * Document the format of ninpaths dump files. - - Add a symbolic link for inpaths(8) to ninpaths(8). - - Mention that INN 1.7 supports the WP newsfeeds flag. - - * The simpleftp script does not switch to binary mode before - transferring files. - - If it is used by actsyncd to get active.gz from ftp.isc.org, the - transferred archive is corrupted. - - Thanks to Matthias Meyser for the bug report. - - * OVrealnow was declared twice in storage/overinterface.h. - - Thanks to Dennis Preiser for the report. - - * On some OS (like FreeBSD), renice emits a status report to - STDERR. - - When using sendinpaths, which uses renice, in a cronjob, an email - is sent every time with that report. STDERR is now redirected to - /dev/null. - - Thanks to Matthias Meyser for having reported the issue. - - * Update changelog after revision 9189. - -2011-03-02 iulius - - * Convert the innfeed.conf man page to POD. - - * Add backlog-highwater, news-spool and input-file in the - innfeed.conf sample file. - - * Add fast-exit, debug-shrinking and initial-sleep in both the - documentation and the sample file. - - * To match what innfeed does by default : - change - host-queue-highwater from 200 to 10 in the sample file - change - max-connections from 5 to 2 in the sample file - change - dynamic-backlog-low from 25.0 to 20.0 in the sample file - - * innfeed/host.c was expecting "backlog-limit-high" whereas - innfeed/tape.c was properly using "backlog-limit-highwater" - (which is the one mentioned in the innfeed.conf configuration - file and the documentation). It then appears that innfeed was not - taking the value into account and always using the default value - of 0. - - * Fix the documentation for the path to innfeed.status. It is - either pathlog or pathhttp, and not the backlog directory. - - * Fix the paragraph about imapfeed: "deliver" is not a parameter. - - * Remove the notion of version 0.9.3 and 1.0 for innfeed. - - * Remove the mention that "in previous versions of innfeed, a - value of 1 had a special meaning for . This is - no longer the case, 1 means a maximum of 1 connection." - - * Remove the mention that "in innfeed 0.9.3 and earlier, - was in the range [0.0, 9.0]". - - * Remove the sample innfeed.conf file from the documentation (no - need to duplicate it). - - * Typos. - -2011-02-12 iulius - - * Add a missing semi-colon. - - * Fix spaces. - - * Convert inncheck man page to POD. - - Update the help usage. - - Fix a few typos, and add the control.ctl.local file. - -2011-02-12 eagle - - * Initialize socket structures and use SUN_LEN properly - - From Bo Lindbergh: innd failed to bind to an unprivileged socket. - I found the problem in lib/network.c (a sockaddr_in with - uninitialised spare bits in it). Then I grepped around and found - more instances of the same problem. I also found a sockaddr_un - problem (SUN_LEN not used). - -2011-02-06 eagle - - * Add imapfeed to NAME section of innfeed man page - -2011-02-01 eagle - - * Ensure flag is declared in innbind for IPV6_V6ONLY - - If SO_REUSEADDR were not defined but IPV6_V6ONLY were defined, - innbind would fail to compile because a flag variable would not - be declared. This is an unlikely set of supported options for a - network stack, but let's be fully correct. Thanks, Florian - Schlichting. - -2011-01-30 iulius - - * Use cat, grep -v and echo instead of sed. The sed syntax is too - different depending on the platform. - - * Add the clibrary.h header to properly define va_list. - - Thanks to The Doctor for having pointed out the issue on FreeBSD. - -2011-01-28 iulius - - * Re-add the legacy *errors to the libtest header. It was removed - by mistake in the last commit. (gcc 4.3 complains about it, - whereas gcc 4.1 does not) - - * Update our test suite to use the official C TAP Harness release - (version 1.6). - - Well, for the time being, use the legacy syntax for the test - suite. A variable named LIBTEST_NEW_FORMAT can be set at the - beginning of a test so as to use the new syntax. - -2011-01-25 iulius - - * inncheck: run under 'use strict'. - - Also don't use hashes with package names (e.g., - %control'messages) as it's an ancient form and prevents syntax - checking. - - Thanks to Florian Schlichting for the improvement. - - * inncheck: delete long-unsused cruft. - - innlog.pl was the precursor to innreport... - - Thanks to Florian Schlichting for the clean up. - -2011-01-24 iulius - - * Mention that SASL is also used by nnrpd. Typo, and improve the - changelog for INN 2.5.3. - - * Add parenthesis for Python print() calls. It otherwise does not - work with Python 3. - - * Convert innfeed man page to POD. - - Improve the help usage (notably, adding a mention of the -o - flag). - - Move innfeed(1) to innfeed(8). - - Add a symbolic link for imapfeed(8) to innfeed(8). - - Fixes during the process: - - * Document the new logging (notably, "accsize", "rejsize" and the - "%d/%.1f" syntax for "deferred" were missing). - - * Document the -s flag in the man page. Thanks to Florian - Schlichting for having found it was missing and provided a - wording for the documentation. - - * Typos. - -2011-01-23 iulius - - * Add the htmlstatus parameter to inn.conf to determine whether the - status file that innd can write out (depending on the value of - the status parameter) is plain text or wrapped in HTML. It - previously only was a compile-time option, set to true by - default. The behaviour was therefore impossible to modify without - compiling again INN. - - Thanks to Florian Schlichting for the patch. - - Also fix the syntax of the generated HTML file. The refresh time - should not end with a semi-colon. Add the English language, and - validate HTML 5. - - * Missing commit, related to revision 9135. I forgot to commit the - new documentation: - - * Add authentication to the downstream server. - - * Improve documentation (especially the example for the "-m" flag - that should be quoted for the shell). - - * Improve the logging of Perl and Python access hooks. The origin - wasn't previously mentioned: - - "syntax error in (null)(2), Expected value." - - Now, nnrpd will log: - - "syntax error in perl_access-block(2), Expected value." - -2011-01-20 iulius - - * Improve the wording of the action taken after a newgroup/rmgroup - control article. Always use a verb. - - Thanks to Florian Schlichting for the patch. - -2010-12-25 eagle - - * Fix wrapping of readers.conf parameters inherited by inn.conf - - * Document the post saving done by readertrack = true - - If readertrack is set to true, in addition to logging client - activity, every post made is also saved in a directory under the - log directory in a file named by message ID. Document this in - inn.conf. - -2010-11-17 iulius - - * The -F flag was not working when the -P flag was not also set - with pullnews. The two flags can now be used separately. - - * The "-k n" flag was not working the way it should in pullnews. - The configuration file was not saved after every n articles - (right behaviour) but after every n articles in one newsgroup. - - Thanks to Edmund H. Ramm for the bug report. - - * pullnews was not properly counting the number of bytes - downloaded. It was not resetting the count between newsgroups; - consequently, the bytes count was only right for the first - newsgroup. - - Thanks to Edmund H. Ramm for the bug report. - -2010-11-01 iulius - - * Fixed an issue in the Python access hook for nnrpd: it has not - been working since Python 2.5 on 64-bit platforms, owing to a - change to Python's C API, using a new Py_ssize_t type definition - instead of int. - - Thanks to Raphael Barrois for the patch. - - Define Py_ssize_t as an int for Python versions < 2.5.0. - - Also include Python.h before any standard headers are included, - because "Python may define some pre-processor definitions which - affect the standard headers on some systems". - -2010-10-30 iulius - - * * Advertise the COUNTS, DISTRIBUTIONS, MODERATORS, MOTD and - SUBSCRIPTIONS keywords in the LIST capability for nnrpd. - Compliance to RFC 6048. - - * Implement the message of the day in innd, and advertise it in - its LIST capability. - - * The motd.news file (previously used only by nnrpd) is renamed - to motd.nnrpd during innupgrade. - - * A new motd.innd file is created for innd. - - * In the 501 error code for an unexpected third argument to a - LIST command, mention it is not necessarily a wildmat. - - * Better wording for the 503 error code in response to LIST. - - * Documentation update. - - * Symbolic links are created for motd.innd.5 and motd.nnrpd.5 - (pointing to the legacy motd.news.5 man page). - -2010-10-29 iulius - - * Before passing the submission template to snprintf(), check that - it is a valid one with "%" followed by only another "%" or a "s" - (but once only). - - * When "cnfsstat -a" is used, a Perl warning occurs if the CNFS - buffer has not been initialized yet or received an article. The - time of the oldest article is unset. We now properly take it into - account. - - Thanks to Florian Schlichting for the bug report. - - * Check MAXARTLINELENGTH in nnrpd, not innd. - - This patch means reverting the previous "CRwithoutLF" patch - [9086] and also ripping out all length checking and both unsigned - long length as well as data->LastCRLF. - - Thanks to Florian Schlichting for the patch. - - * Update our documentation to mention the fact that RFC 6048 now - exists and is implemented in INN. - -2010-10-24 iulius - - * * Add authentication to the downstream server. * Improve - documentation (especially the example for the "-m" flag that - should be quoted for the shell). * Do not connect to an upstream - server when no newsgroups should be fetched. * Do not stop - processing newsgroups when an error occur (for instance when a - newsgroup mentioned in the configuration file has been removed - from the upstream server). - - Thanks to Edmund H. Ramm for the bug reports. - -2010-10-03 iulius - - * Mention in the logs of innfeed that a warning may be fine when a - new CNFS buffer has just been set up. - - Thanks to Michael Grimm for having reported the issue. - - * Ignore in innreport when innfeed rolls its funnel file. - Otherwise, it shows up as "unknown entry" in the report. - - Thanks to Florian Schlichting for the patch. - -2010-09-28 iulius - - * datebuff was no longer initialized... Fix commit 9127. - -2010-09-26 iulius - - * Realign our inn.conf sample (because "extraoverviewadvertised" - and "addinjectionpostinghost" are a bit too long for the current - alignment). - - * Do not add an Injection-Date: header when a message-ID and a - posting date are already present. - - RFC 5537: If the proto-article had both a Message-ID header field - and a Date header field, an Injection-Date header field MUST NOT - be added, since the proto- article may have been multiply - injected by a posting agent that predates this standard. - Otherwise, the injecting agent MUST add an Injection-Date header - field containing the current date and time. - - * Do not forget to free a pointer. - - * Better check for the syntax of the posting-host attribute of the - Injection-Info: header field. "stdin:" without any IP was seen in - the wild. Fix it to only print "stdin". - - * Fix changelog from previous commit. (The issue was only in - CURRENT 2.6.0, not STABLE INN 2.5.3.) - - * nnrpd no longer adds or updates Injection-Date:, Injection-Info: - and Path: header fields when the article is forwarded to a - moderator. It could otherwise lead to rejects at injection time - when the article was approved by the moderator because these - fields show a previous injection (which did not occur). - - Note that if strippath is true, we will still remove the Path: - header. No harm done with that removal. - - Excerpt from RFC 5537: - - 3.5. Duties of an Injecting Agent - - 7. If the Newsgroups header contains one or more moderated groups - and the proto-article does not contain an Approved header field, - the injecting agent MUST either forward it to a moderator as - specified in Section 3.5.1 or, if that is not possible, reject - it. This forwarding MUST be done after adding the Message-ID and - Date headers if required, and before adding the Injection- Info - and Injection-Date headers. - - 8. Otherwise, a Path header field with a MUST be - added if not already present. - - 9. The injecting agent MUST then update the Path header field as - described in Section 3.2.1. - - * Go on checking the syntax of the Date: header field, even though - it is not used by innd when an Injection-Date: header field - exists. - -2010-09-25 iulius - - * No impact because the NeedHeadername member is not used in this - case. Yet, better put it right. - - * innd, as a relaying agent, now examines the Injection-Date: - header, when present. It contains the posting date (used for - history). makehistory now also uses it, when present. Otherwise, - the Date: header is used. - - nnrpd, as an injecting agent, checks whether the Date: header - field is not too far in the past. It is a recommendation of RFC - 5537 since not all news servers support the Injection-Date: - header. (The article would then suffer from poorer propagation.) - -2010-09-24 iulius - - * Update the manifest and Subversion properties after commit 9111. - - * inncheck was not substituting variables in the newsfeeds - configuration file. It therefore wrongly reported errors. - - For instance: $limitHI=131072 - example/example.com:*:Ajp,Tm,<$limitHI:innfeed! - - Now fixed. This example is properly parsed by inncheck. - - Thanks to Michael Grimm for the bug report. - - * Add the possibility to run local innshellvars scripts. - - innshellvars.local, innshellvars.pl.local and - innshellvars.tcl.local are now executed at the end of the run of - the corresponding innshellvars script. A typical use is to add or - override variables. For instance HOME or GNUPGHOME. These local - scripts have to be executable; otherwise, they are not taken into - account. - - Thanks to Matthew Vernon for the suggestion. - -2010-09-10 eagle - - * Yet another update to the Berkeley DB URL - -2010-09-10 iulius - - * INN thinks that OpenBSD (4.6) doesn't support Unix-domain - sockets. The problem is that doesn't include - cleanly unless you include , and the AF_UNIX test in - m4/socket.m4 doesn't include . - - It is also added to the test program for AI_ADDRCONFIG, even - though (a) including stdio.h happens to pull in the necessary - headers and (b) OpenBSD doesn't have AI_ADDRCONFIG anyway. - - Note: m4/sendfd.m4 can be left without the patch. This will - always fail on OpenBSD anyway, so it shouldn't matter. This will - only successfully compile and run on a STREAMS-based system, so - only SysV. It is the same for include/portable/getnameinfo.h and - include/portable/getaddrinfo.h: none of those currently cause - problems because these headers are only included by files which - have already included sys/types.h, and OpenBSD doesn't support - STREAMS at all. - - Thanks to Wim Lewis for the patch. - -2010-08-11 iulius - - * Fix the Tcl innshellvars script (which has not worked since INN - 2.3). - - A variable was unset, and the evaluation of innconfval was not - working. - - Also add a catch block in case the Tcl interpreter does not - recognize the umask command. - -2010-08-10 iulius - - * Revert commit 7405 (for Debian bug #307765) to resolve another - Debian bug: #584234. - - We started setting HOME to try to get pgpverify to look in the - correct place for the keyring. Current versions of pgpverify now - deal with this by setting the keyring location explicitly. - - Overriding HOME breaks things. Most notably, it means that gpg - will try and create files in /.gnupg so if pathnews is - not the same as ~news, things like buildinnkeyring (Debian - specific) and gpgverify won't work. - - Thanks to Matthew Vernon for the bug report. - - We also change where pullnews looks for its configuration file. - It is now pullnews.marks in , instead of .pullnews in - HOME. - -2010-08-05 iulius - - * Use a variable for the width within printf. Following commit - 9092. - - Thanks to Urs Janssen for the hint. - -2010-08-03 iulius - - * Use a constant (ARTNUMPRINTSIZE) for the length of a water mark. - It will be of help if we ever switch from 32-bit to 64-bit - article numbers. - -2010-08-01 iulius - - * Assignment to $[ is deprecated in Perl 5.12.1. Anyway, the - default is 0; so we can remove our assignments. - - Thanks to Dieter Stussy for having noticed. - -2010-07-30 iulius - - * Fix the name of the variable containing the information about - required headers. Following commit 9087. - - * Mention that Perl and Python filters for innd return the *first* - occurrence of header fields in the %hdr variable. Whereas it is - the *last* occurrence for the Perl filter for nnrpd. - - * When a header field appeared more than once in an article, it was - missing from the overview data. OVER/XOVER, as well as - HDR/XHDR/XPAT using the overview, were therefore returning an - empty field. The content of the first occurrence is now returned, - in accordance with RFC 3977. - -2010-07-17 iulius - - * This patch causes both CRwithoutLF (\r) and LFwithoutCR (\n) to - be considered the same as CRLF (\r\n) for purposes of checking - allowable header line length. - - It appears that some people like to grace their articles with - Face: or X-Face: headers of typically 4-6k binary data. While - usually put into nice continuation lines of around 80 characters, - a few clients fail to create proper line breaks for this header, - inserting only a single \r or \n instead. The nnrpd in INN 2.3 - doesn't reject or correct these mistakes for non-system headers, - and offending articles are still "in the wild". - - innd currently counts, logs and ignores such imperfect line - breaks. Alas, when checking for the maximum allowable 'physical' - line length, single \r or \n are not recognized, thus making the - whole 'virtual' (continued) header appear as a single line, - easily exceeding MAXARTLINELENGTH and thus causing the article to - be rejected. - - Thanks to Florian Schlichting for the patch. - - * Confusion between CR and LF when innd parses a body and counts - missing LFs. - - Thanks to Florian Schlichting for having noticed it. - - * A single header field line is limited to 998 bytes, per RFC 5536. - innd was previously accepting, and also generating Xref: header - field lines, up to 1022 bytes. - - Use new MAXARTLINELENGTH and MED_BUFFER constants instead of - MAXHEADERSIZE in the code. - - Update the test suite. - - Meanwhile, fix two bugs in the generation of the Xref: header - field: - - * When resizing the buffer, extra place for a CRLF that may be - added by a continuation line is not taken into account. - Consequently, when p[0] = '\r' and p[1] = '\n' are used, a - segfault may occur. - - * When comparing to MAXARTLINELENGTH, the final CRLF is not taken - into account ("+2" is missing in the count), so the generated - Xref: header field might end up with 1002 bytes! - -2010-07-11 iulius - - * Remove the mention of an unnecessary (and weird) include file. - (See commit 8871.) - -2010-07-03 eagle - - * remove broken tags / ctags make targets - - These targets have been broken for some time and wouldn't work - with GNU ctags anyway. Just do 'ctags -R' in the toplevel source - directory and put 'set tags=./tags,tags,/path/to/source/tags' in - your .vimrc if you want to use tags. - - Patch from Florian Schlichting. - -2010-06-28 iulius - - * Mention in the documentation that e-mail addresses can be used as - arguments to sendinpaths. - - Thanks to Ian Jackson for the bug report. - -2010-06-05 iulius - - * Fix the use of uninitialized values: storage classes and ARGV. - oldart was not declared as a local variable and its value was - then wrongly reused. - - * Allow to *not* compress logs. --with-log-compress=cat will do - that at configure time. - - Idea from Florian Schlichting. - -2010-05-31 iulius - - * Use pre-formatted text for a better HTML and *nroff output. - - * Fix a character badly encoded. - -2010-05-30 iulius - - * Convert libstorage to POD. - - Fixes during the process: - - * ARTHANDLE contains two different ways of representing article - data: an iovec array, and a char*/length pair. One is used by - SMstore and the other by SMretrieve, but this is not documented. - Patch from Ian Jackson to fix that. - - * OVadd has a time_t expires parameter. - - * OVexpiregroup has a struct history *h parameter. - - * OVgetartinfo does not have char **data and int *len parameters. - - * SMexplaintoken(const TOKEN token) was not documented. - - * Dot-stuffing was not clearly documented. - - * Structs and enums were not all mentioned. - - * EXPENSIVESTAT was not documented. - - * OVCACHEKEEP and OVCACHEFREE were not documented. - - * Put variables in italics (POD documentation). - -2010-05-20 iulius - - * Emitting an error if nntpsend is unable to get the lock is better - than silently failing. - - Thanks to Matthew Vernon for his suggestion. - - * Fix the documentation of the -n flag for nntpsend. - - * No upper case to innwatch, innxmit and innreport. - - * Convert nntpsend and nntpsend.ctl documentation to POD. Better - nntpsend.ctl sample configuration file. - - Fixes: * The -a flag is given only when there is no size limit. * - The -d and -D flags were incorrectly described (reported by - Matthew Vernon). * The -S flag does not exist for nntpsend. * - When the -n flag is used, nntpsend does not sleep before spawning - each innxmit child. * In nntpsend.ctl documentation, trunc(1) - does not exist; it is shrinkfile(1). - - * Remove trailing spaces. - -2010-05-08 iulius - - * The order of CNFS buffers in a metacycbuff is now properly read - and written by cnfsheadconf. There previoulsy was a confusion - between hexadecimal and decimal values. - - Thanks to John F. Morse for the bug report. - - * When HDR/XHDR/XPAT was used on a new article coming into a - newsgroup, requesting a header not present in the overview - database, the first subsequent OVER/XOVER command did not show - that article. A remap of the overview data file was missing in - nnrpd. - - Thanks to Sam Varshavchik for the bug report. - - The cached index and the cached data files were not immediately - remapped to reflect the change. When doing an overview search - with (X)OVER, both the index and data files are remapped, if need - be. The same for (X)HDR or XPAT *when* using the overview. Here, - as "(from articles)" is replied by the server, the search is done - in the article itself and does not call an OVopensearch(). The - code uses OVgetartinfo() which calls tdx_article_entry() which - remaps the index file but *not* the data file. Therefore, the - high water mark in the cached data file is still mapped to high-1 - after (X)HDR but tdx_article_entry() updates data->high to be the - new high water mark... Then (X)OVER is used. It believes the - cached data information is right. But obviously does not find the - last article and the cached data file then is marked as - to-be-remapped. Which is done when doing the subsequent overview - search with (X)OVER. - - See also [8451]. - - * cnfsheadconf now properly recognizes continuation lines in - cycbuff.conf, that is to say lines ending with a backslash (\). - - Thanks to John F. Morse for the bug report. - -2010-04-12 eagle - - * Update the URL to Berkeley DB - - * Update URL for svn2cl - - * Remove the README reference to inflow - - The URL appears to be dead. - - * Fix URL for the SCO UNIX tutorial to avoid a redirect - -2010-03-24 eagle - - * Rewording and editing of changes for 2.5.2 - -2010-03-23 iulius - - * Bump revision number. - - * Fix a call to an uninitialized value. Thanks to John F. Morse for - the bug report. - -2010-03-21 iulius - - * Remove a superfluous space. - - * Mention that UTF-8 is needed for LIST DISTRIBUTIONS and LIST - MOTD. - - * Do not allow local postings to junk groups, as it has always been - documented in the active man page (before commit [8735]). - - Posting will be allowed in configured to in readers.conf (local - postings). - - * Enforce UTF-8 for LIST MOTD and LIST DISTRIBUTIONS responses. - -2010-03-19 iulius - - * mailpost should trim the References: header field when it is too - long. Otherwise, inews rejects the article. RFC 5537 explains how - to trim it. - - Original patch from Harald Dunkel. - - * Assume STDC_HEADERS is always true nowadays. - - CTYPE is no longer useful; yet, as Russ Allbery hints at, we keep - the cast because it remains the case that passing signed - characters into is*() functions can cause problems on some - platforms. Some implementations do straight table lookups and, if - given what they think is a negative number, will happily - dereference memory off the beginning of the table. - - * actsync rejects syncing newsgroups whose components start with - '+', '-' or '_'. RFC 5536 in section 3.1.4 states that these MUST - be accepted by news servers (and innd does so), even though their - use is reserved. - - actsync now supports them, as well as a hierarchy name that - starts with one of these characters. - - Thanks to Florian Schlichting for the patch. - - * Remove obsolete AC_HEADER_DIRENT and (unused) AC_STRUCT_TM. - - * Change how innfeed logs its article counts. A checkpoint is added - just before a connection is closed. Checkpoints contain values - accumulated since the last checkpoint. This way, innreport can - rely on checkpoints only, so as to produce more accurate stats. - - See also commit [9002] for innd. - - close #7 - -2010-03-16 iulius - - * Properly show in innreport news clients that failed to post - articles. - - * Prevent negative values from being reported in nnrpd for the - number of groups read by a client. - - * Silent two warnings (gethostbyaddr and getpeername) that used not - to be reported. A change in nnrpd previously broke that. - - * Properly count the number of groups opened during a session, and - which contained at least an article. - - Previously, the count was not taken into account when groups were - opened with no new articles in any of them. And it was taken into - account for groups with no articles, provided that at least one - contained an article. - - The result is now more coherent. - - * innreport was not properly summing post errors: the domain count - was not done (though configured in innreport.conf), and the - reader count was not working. - - * Better report with innreport: NoCeM notices with only bad - messages will now be shown, innxmit feeds with no accepted - articles will also be shown, as well as news readers which never - read any article (for instance those that only post). - - * Change how innd logs its article counts. A checkpoint is added - just before a connection is closed. Checkpoints contain values - accumulated since the last checkpoint. This way, innreport can - rely on checkpoints only, so as to produce more accurate stats. - - see #7 - -2010-03-14 iulius - - * Remove the check for newsgroups containing only ASCII characters - when receiving a newgroup control article. Otherwise, UTF-8 - characters would cause a reject of the control article. - - * Better wording, and a POD typo. - - * Fix a bug in tradindexed cache entries which made innd throttle - because the oldest cache entry couldn't be found. It thought the - cache was empty, kept opening copies of the same overview files, - and eventually ran out of available system open file descriptors. - - * Do not truncate to 9 characters the name of a host when - unspooling files with rnews. - - * Properly create datarootdir and pathhttp with the rights - associated to the news user and the news group. - - * When answering to IHAVE, innd was sending a checkpoint to the - remote server in case it was time to write a checkpoint to - syslog. - -2010-02-16 iulius - - * Update the size limit of block devices. It has changed since the - time our documentation was written. - - Thanks to Miquel van Smoorenburg and Russ Allbery. - -2010-02-15 iulius - - * Update to latest control.ctl file from ISC. - - * Update to latest version of config.guess and config.sub. - - * Update to libtool 2.2.6b. - -2010-02-12 iulius - - * scanlogs was expecting the default innfeed.conf file to look for - the log file to rotate. - - Also fixed a bug in news.daily: procbatch was called without - specifying the innfeed backlog directory. See commit [8978]. - -2010-02-09 iulius - - * Add a new keyword to news.daily: "procbatchdir" specifies the - backlog directories of innfeed when several instances of innfeed - are running or when its configuration file is not the default - one. - - * Regular expression should only match at the beginning of the - line. Otherwise "./configure --prefix=/opt/portable" will fail on - test 8 because additional lines matches "port". Test 8 has to be - adjusted to not count and depend on comment lines. - - Besides, fix an issue of undefined domain or fromhost being - unset. - - Reported by Heiko Schlichting. - -2010-02-08 iulius - - * tdx-util manpage does not know of -F option for correcting - errors. - - Patch from Heiko Schlichting. - - Also fix a few typos. - -2010-02-07 iulius - - * Update the comment of the Python filter sample to mention that - TAKETHIS is taken into account by the message-ID filter. - - See commit [8949]. - - * Variable ARTpathme is filled but not used anywhere. - - It was used in INN 2.3 so as not to process ihave and sendme - control messages we sent ourselves. - - Patch from Heiko Schlichting. - - * Comment corrected: arguments of ok_double() are double, not - integer. - - Patch from Heiko Schlichting. - - * Comment corrected: ok_article produces five test results, not - three. - - Patch from Heiko Schlichting. - - * expire.ctl documentation should use examples with reasonable - limits for min/max of Expire: headers. - - Patch from Heiko Schlichting. - - * dbzstore does return DBZSTORE_RESULT, not bool. - - Patch from Heiko Schlichting. - - * Use Perl and Python filters on message-ID when articles are given - to innd via TAKETHIS. The new RFC-3977 structure of the TAKETHIS - command easily allows such a check. - -2010-02-06 iulius - - * Log the port number of a connection (nnrpd). - - * When using tradindexed, the overview data for a cancelled article - is now properly immediately removed from the overview. - - OVcancel was failing because the article number could be higher - than the cached high water mark. The overview data is now - reopened so as to check the actual high water mark. The article - number was not always parsed without error (a trailing "\r\n" may - be present). - - Thanks to Lars Magne Ingebrigtsen for the patch. - - * When a user is allowed to locally post articles, then LIST COUNTS - will return the right "y" flag (instead of "n" or "x"). - - Also see commit [8945] for LIST ACTIVE. - -2010-02-04 iulius - - * When a user is allowed to locally post articles, then LIST ACTIVE - will return the right "y" flag (instead of "n" or "x"). - - * Do not hide "j" and "x" status in LIST ACTIVE answers. - - Use NF_FLAG_* macro instead of hard-coded chars for the status of - a newsgroup. - - * Allow "Aj" in newsfeeds (new in INN 2.5.2). - - * Fixed a bug in the newsfeeds "C" flag: the count of followup - groups was one less than the real number. When the value of the - Followup-To: header is "poster", it is no longer considered to be - a followup. - - Also fixed the default value of the "C" flag: 2 instead of 1. - - Thanks to Dieter Stussy for the patch. - -2010-01-28 iulius - - * Revert commit [8932]. No longer check how many headers an article - has when posted via inews. - - * Fixed a bug in how mailpost handles cross-posting feature. - - Without this patch, mailpost does not detach from sendmail, i.e. - sendmail starts one mailpost after the other, instead of running - all mailposts for a new message in parallel. - - Thanks to Harald Dunkel for the patch. - -2010-01-26 iulius - - * Fix a typo in the name of a variable. - - Thanks to Manuel Pégourié-Gonnard for the bug report. - - * Mention that when logtrash is set to false, unwanted.log is no - longer generated. - - * Better explanation of why SASL_CONTINUE must be changed to - SASL_BADPROT. Approved by Ken. - - * Clarify how posting backoff is activated. - - Thanks to Manuel Pégourié-Gonnard for the report. - - * The PID is written in nnrpd.pid when the default port is used. - - Thanks to Benoit Izac for having reported that. - -2010-01-24 iulius - - * A new option has been added to inews. When the "-m" flag is - specified, the corresponding value will be used to determine the - maximum number of header fields that are accepted for an article. - The default was C50 and it is now configurable. Thanks to Torsten - Jerzembeck for the bug report. - -2010-01-23 iulius - - * Updated changelog for INN 2.5.2 and INN 2.6.0. - - * Properly return 501 instead of 502 when a peer is already - authenticated and sends a syntactically invalid AUTHINFO command. - -2010-01-22 iulius - - * Optimize how ovgrouppat is handled. Thanks to D. Stussy for the - suggestion. - -2010-01-21 iulius - - * Add a new parameter to inn.conf: logtrash, used to add a line in - the news log file to report unwanted newsgroups. - - * Increase the allowed difference in the result of the inndf test - suite. (It periodically fails for an unkwnown reason...) - -2010-01-20 iulius - - * Though it currently does no harm to use ngp here, it is better to - have another variable (in case the logic of the code changes in - the future, ngp may be used for another purpose and should not be - initialized here). - - * Set a value to INN_HISTORY_H. - - * See commit [8889]. - - Change "feedtrash" (inn.conf) to use "Aj" (newsfeeds) so that we - can have a finer configuration of that behaviour, per feed. - Thanks to D. Stussy for the idea. - -2010-01-17 iulius - - * Check whether a newsgroup has been selected, before asking for - authentication. - - Answer to retry later when POST is not allowed due to backoff - limits. - - * Fix indentation. - - * When a newsgroup is empty, use 0 for the current article number - (instead of the last known low water mark). - - * Update all INN code to use include/inn/nntp.h for NNTP codes and - eliminate include/nntp.h. - - * Revert commit 8869 (423 is the right response code to send when - the current article number is valid but the article no longer - exists). - - Besides, fix HDR and OVER to also use 423 in that case. See - erratum 2004 on RFC 3977. - - * Add complete support for uwildmats in ovgrouppat: negated - patterns "!" are now taken into account (and not considered as - poisoned patterns "@"). - - Also fix a wrong memchr length. - -2010-01-16 iulius - - * Add a new parameter to inn.conf: feedtrash, set to false by - default (which was the historic behaviour of INN), adds the - capability to feed articles accepted and filed in junk (due to - wanttrash) to peers based on their feed patterns (applied to the - Newsgroups: header as though the article were accepted and all - those groups were locally carried). This is useful if you want to - run INN with a minimal active file and propagate all posts. - - Thanks to Andrew Gierth for the patch. - - * No longer check for Comments: and Original-Sender: in nnrpd. - Otherwise, multiple headers for them were rejected by nnrpd, - which violated RFCs 5536 and 5537. - - Only CURRENT was affected. - - * innconfval no longer maps NULL string or list values to an empty - string or list. These values should really be undefined. In - particular, it fixes an issue reported by Kamil Jonca about nnrpd - inserting an empty Organization: header when the organization: - parameter in inn.conf was unset. - - * Fixed a bug in the parsing of the ovgrouppat: wildmat in inn.conf - that prevented overview data from being generated when poisoned - groups were specified but a latter sub-pattern made the group - wanted. - - Thanks to D. Stussy for the bug report. - - Also improve the documentation of the ovgrouppat: parameter. - - * Fixed a bug in nnrpd Perl filter: a header field whose name - begins with the name of a standardized header field was not - properly taken into account. (For instance "Organization-Test".) - - * When an unauthenticated user tried to post an article, nnrpd - replied 440 (posting not allowed) instead of the right 480 - (authentication required) when the user might be able to post - after authentication. - - Thanks to Daniel Weber for the bug report. - - * Typos. +2016-11-27 iulius -2010-01-04 iulius + * Bump version for the new 2.6.1 release - * Fix a segfault when virtualhosting is used in readers.conf. The - new Path: header was generated with an invalid pointer. + * Update to latest rra-c-util and C TAP Harness upstream versions - * Typo: "correspondance" -> "correspondence". + * Reorder compression-related items in NEWS -2009-12-31 iulius +2016-11-26 iulius - * Injection-Info: header body is improperly folded with CRLF when - created. At this point in the nnrpd code, a bare LF must be used. - It is converted to CRLF afterwards. It was breaking mail - moderation (two new lines were added, so the end of the headers - appeared in the mail body). + * Fix use of calloc() without checking for a return value of NULL - Thanks to Ray Banana for the bug report. - - Also fix how the Path: header body should be scanned for - ".POSTED". Same bug as above: LF begins a FWS, and not CR. - -2009-12-30 iulius - - * Commit 8765 (mandatory AUTHINFO USER for authenticated peers) - will be only in INN 2.6.0 -- not INN 2.5.2. - - * Fix a mistake in commit 8873 to handle IHAVE like POST. Sorry! - -2009-12-29 iulius - - * When adding an overview line with OVadd(), check that Xref: is at - the beginning of an overview field (that is to say that a - tabulation precedes it). - - Otherwise, if for instance one has User-Agent:full in LIST - OVERVIEW.FMT and an article is received with the following header - field: User-Agent: test Xref: server test:50 then the overview - data for article 50 in newsgroup test is replaced by the one of - this article. And the real article number of this article is - unknown for the overview. - - * Do not differentiate IHAVE from POST in nnrpd. Articles injected - with IHAVE should be treated the same way as if they were - injected with POST. - - * Add support for the "POSTED" diag-keyword in nnrpd, as described - in RFC 5537. In particular, nnrpd checks that the article does - not already contain a "POSTED" diag-keyword. - - * The O flag in newsfeeds now relies on the contents of the - Injection-Info: header (or X-Trace: header if there is no - Injection-Info: header) to determine the origin of an article. - - Make public the skip_cfws() function so as to skip CFWS defined - in RFC 5322. - - * Use ":" with chown, and not ".", as separator for group name. - -2009-12-28 iulius - - * Return 420 instead of 423 when current article number is used - with ARTICLE, BODY, HEAD and STAT. - -2009-12-27 iulius - - * Use case-insensitive matches for: - distributions, - path - identities, - message-IDs (except for history hashes), - IMAP - commands, - header names, - control commands. - - Note that newsgroups are still matched case-sensitively. - - * Contrary to RFC 1036, the presence of a Subject: header field - starting with the string "cmsg " MUST NOT cause an article to be - interpreted as a control message. (RFC 5537) - - * sendsys, senduuname and version control messages are obsolete - (see RFC 5537) and can no longer be sent via nnrpd or inews. - - * Mark a few headers as obsolete in nnrpd (therefore, they cannot - be present in posts -- it was already the case for the first four - headers): NNTP-Posting-Date, NNTP-Posting-Host, X-Complaints-To, - X-Trace, Also-Control, Article-Names, Article-Updates, See-Also. - - Also mark these two headers as obsolete in innd (it does not - change anything for innd): X-No-Archive, NNTP-Posting-Path. - -2009-12-26 iulius - - * Fix a bug in keyword generation code: an initial comma was still - added at the beginning of the Keywords: header (when the first - word was a noised one). - - * Fixed a bug when HDR, XHDR and XPAT are used when I - is set to true in F. The Xref: header of articles - posted to only one newsgroup appears empty. - - The offset count is too large by one in virtual hosting. - - * Adjust the length of retlen when we have to realloc retval. Fix - after commit 8861. - - * Use "!!" as diag-match in the Path: header after the name of the - virtualhost when virtualhost: is set to true in readers.conf and - it is added at the beginning of the header. - -2009-12-25 iulius - - * Fixed a bug to control-only feeds: junked non-control articles - were being fed down control-only feeds). Thanks to Andrew Gierth - for the patch. - -2009-12-24 iulius - - * * Update protocol differences for innd, now that RFCs 3977, 4643 - and 4644 have been implemented. - - * Mention that the -X flag is unset by default. - - * The Lines: header is not added by innd. - - * Other typos. - - * Mention new RFCs references: - - 974 -> 5321 (SMTP) 822 and 2822 -> 5322 (mail) 2373 -> 4291 - (IPv6) 2553 -> 3493 (IPv6 socket) 2060 -> 3501 (IMAP) 2279 -> - 3629 (UTF-8) - - * Use of Injection-Info: headers. - - * nnrpd no longer generates NNTP-Posting-Date:, - NNTP-Posting-Host:, X-Trace: and X-Complaints-To: headers. - Instead, Injection-Date: and Injection-Info: are used. - - * Rename addnntppostinghost and addnntppostingdate parameters in - inn.conf to respectively addinjectiondate and - addinjectionpostinghost. innupgrade deals with that only for - inn.conf; a manual change will be needed for readers.conf, if - these parameters are overriden in this file. - - * Update the test suite, documentation and the FAQ. - - * Typos. - - * Note that the "L" reading/posting access in readers.conf is also - in effect for groups with status "x" (and not only "n"). - - A secure layer can also be negotiated with AUTHINFO SASL. - -2009-12-22 iulius - - * * Add checks for Archive:, Archived-At:, Comments:, - Injection-Date:, Injection-Info:, Original-Sender: and - User-Agent: headers. - - * No longer check for the Injector-Info: one (it was standardized - under Injection-Info:). - - * No longer generate a Lines: header (deprecated by RFC 5536). - - * Generate the Injection-Date: header. - - * Add access to the new header field Comments: within Perl and - Python hooks for innd. - - Also update the POD documentation and the Python sample. - -2009-12-21 iulius - - * Typo. - - * Search for gpgv2 (besides gpgv). Otherwise, GnuPG cannot be found - on a few platforms like FreeBSD. - -2009-12-16 iulius - - * Fix a bug in the daily Usenet report: a few lines did not appear - in the report whereas the total still took them into account. - These lines do not appear when the peer does not respond during - the whole day. They now appear (and every article is marked as - spooled). - - * Do not overwrite LOCKS from innshellvars in case someone in the - future expects it to have the value in innshellvars in the entire - script. - - Also prevent a call to LOCK afterwards in the script from - failing. - - Thanks to S.P.Zeidler for the patch. - -2009-12-07 iulius - - * Fix the use of an uninitialized value in mailpost. - - Patch from Harald Dunkel. - -2009-12-04 iulius - - * Add access to three new headers within Perl and Python hooks for - innd: - - * Archive [RFC 5536] * Archived-At [RFC 5064] * Summary [RFC - 5536] - - Also update the POD documentation and the Python sample. + Thanks to Bill Parker for the bug report. -2009-12-03 iulius +2016-11-25 iulius - * Fix a typo in the name of the news.lists.filters newsgroup. + * Use a buffer properly for Site.FNLnames - Thanks to John Marshall for having noticed it. + We were using a buffer to store the space-separated list of feed + names to which a funnel feed was being sent, but only by directly + manipulating the underlying struct with (incorrect) uses of + strlcpy and strlcat. Use the buffer API to manipulate this + structure correctly, and fix up the other places where "used" was + incorrectly used as the length of data in the buffer instead of + "left". -2009-12-01 iulius +2016-11-23 iulius - * Add dependencies for tinyleaf compilation. - - It was not recompiled when changes were made to its dependencies. + * Fix build when SASL support is enabled but not TLS support -2009-12-01 eagle +2016-11-09 iulius - * Send a space rather than a blank line in tinyleaf HELP output + * Fix incorrect use of boolean values - GCC format checking doesn't permit an empty format (""), which - meant that tinyleaf failed to compile since format checking was - added to nntp_send_line_noflush. Work around this for the time - being by sending a single space on that line. + Thanks to David Binderman for the bug report. -2009-11-30 eagle +2016-11-06 iulius - * Fix printf attribute for x_asprintf in the non-vamacros case + * Fix build when SASL support is enabled but not TLS support -2009-11-30 iulius + * Update LICENSE and doc, preparing the next release - * Improve gcc warnings on printf-like function calls. - - * Implement LIST COUNTS. It is a combination of LIST ACTIVE and - GROUP. It returns the same result as LIST ACTIVE except that the - number of articles in a newsgroup is inserted before its status. + * Update to latest upstream version of rra-c-util - LIST COUNTS was first implemented in Highwinds products (e.g. - Cyclone, Tornado, Typhoon, Twister -- when they support readers). - -2009-11-29 iulius - - * Typos. - - * LIST SUBSCRIPTIONS recognizes an optional argument: a wildmat can - now be specified to restrict the results of this command to - specific newsgroups. + Work around warning bug in older gcc with snprintf. - Also change the comment returned after the 215 code (the - newsgroups are now "recommended"). + Properly handle signed overflow in run_child_function. - Even though a user does not have any right to read groups, let - him see a possible message of the day (LIST MOTD). - -2009-11-28 iulius - - * tdx-util was improperly considering empty overview fields as - malformed overview data. + Correctly handle -Wno-* options in INN_PROG_CC_FLAG. GCC and + Clang both don't produce fatal errors for unknown -Wno-* flags, + so test the corresponding positive -W flag instead when + determining if they're supported. -2009-11-27 iulius + * Bump version information for our libraries released with INN + 2.6.1 - * * nnrpd now checks the syntax of the Message-ID: header. + * Allow 2^31 - 1 as a valid result from df - * Fixed a bug when nnrpd sends "IHAVE \r\n" to innd. - Arbitrary commands could be passed to innd because nnrpd did not - ensure the validity of the syntax of the message-ID. - - * The permanent variable was not properly set on IHAVE rejects - and defers. - - * innd now accepts commands ending with only "\n". + Latest version of OSX answers 2^31 - 1, so allow it similarly to + 2^32 - 1 that already was allowed. -2009-11-20 iulius +2016-11-04 iulius - * * Mention that the distributions file should be encoded in UTF-8. + * Fix weird !strcmp == 0 construct - * Mention that the motd.news file should be encoded in UTF-8, and - dot-stuffed. - - * Typos. - -2009-11-17 iulius + Thanks to The Doctor for the report. - * When processing a checkgroups, do not take into account - duplicated lines with localgroups. - - * Integrate showtoken into the main distribution. "sm -c" will now - show clear, decoded information about storage API tokens. + * Update to latest rra-c-util version - A new SMexplaintoken() function has been added to the storage - manager. - -2009-11-15 iulius - - * Add two log messages for bad commands (too long NNTP command or - argument) in innd. - - * No need to treat expire.log differently than other log files - during its rotation. + Notably: - Patch from Florian Schlichting. - - * When "lowmark" was used without "expireover" in news.daily, the - warning was never shown (the file it was written into was rotated - before being treated). - - * Update the changelog for INN 2.5.2. - -2009-11-14 iulius - - * Check LIST output for correct dot-stuffing. - -2009-11-11 iulius - - * news.daily: don't send superfluous mails when "nomail" is given + Correct the return-value checks for snprintf to avoid an + off-by-one error when verifying the output was not truncated. + (All locations should have been safe anyway for other reasons, + but be certain.) Based on a patch by Yuriy M. Kaminskiy. - Make sure that when news.daily is called with "nomail", mail is - only sent when there is real output. Previously, there would - always be headings and empty lines useful to structure the full - report, which are now ommitted. + Add more debugging information to network/server test. - Also, postexec has been moved up to be included in the regular - mail, and the "nomail" definition of ${MAIL} is no longer - overwritten with the default. + Fix incorrect use of IPv6 protocol in IPv4 test. - Thanks to Florian Schlichting for this patch. - - * This patch cleans up a little cruft (${T}, ${PROBS}) left in - scanlogs since its rewrite by Gary Palmer in September 1997. + When testing network_set_reuseaddr and related functions, don't + require that the option be set to 1 explicitly, just that it has + a true value. Debian/kFreeBSD returns the numeric value of the + socket option in some cases when the socket option is set rather + than returning 1, and POSIX just documents that this is a boolean + flag (so only the truthfulness of the value matters). - Thanks to Florian Schlichting for this patch. - -2009-11-10 iulius + Increase the buffer size of the network write timeout test: the + default Debian cloud images use a 12MB TCP sending buffer, which + meant that the timeout test never triggered because the entire + write of 8MB was absorbed by the buffer. Bump the buffer size to + 15MB and add a comment explaining why that number was chosen, + with a reference to the Debian bug where the Ruby maintainers + sorted this out. Many thanks to Lucas Nussbaum for investigating + this and to Eric Wong for sorting out why this buffer was causing + tests to fail. - * Documentation fix: a group with status "j" can receive local - articles. + * Update to latest upstream rra-c-util - Mention that groups with status "n" or "x" can receive local - posts, if configured to. + Notably, change inet_ntoa replacement prototype to match POSIX. + While having a const arg and a const return value is more + correct, make the prototype of the replacement function exactly + match POSIX for fewer surprises when the replacement is used. - * Wording: "flag" -> "status" for the last field of the active - field. - - Also fix a typo in hook-python. + * Use cc-flags.m4 from upstream rra-c-util - * Confusion between DISTRIB.PATS and DISTRIBUTIONS. - - LIST ACTIVE.TIMES now accepts a third argument (newsgroups - wildmat). + * Update to latest control.ctl upstream file - Mention LIST HEADERS [MSGID|RANGE]. + Handle reserved hierarchies, and the new key for the dictator.* + hierarchy. - * It is a POST capability, not a READER one. + * Update pgpverify and signcontrol to their latest upstream version - * Wording of LIST answers. + * Update concat library to its latest version in rra-c-util - * "all" and "world" distributions should not be used according to - USEFOR (RFC 5536). - - Fix the doc: when the distributions file is missing, 503 is - returned, not an empty answer. + * Fix all non-https www.eyrie.org URLs -2009-11-08 iulius + * Mark these files as now unmaintained in rra-c-util - * innxmit currently requires the message-ID after 501. + * Use https instead of ftp URLs for ftp.isc.prg - * RFC 3977 compliance: + * Update to Libtool 2.4.6 - * innxbatch and innxmit now recognize 403 for a problem - preventing the action from being taken. + As INN relies on the Debian libtool distribution, the 2.4.6-2 + package used already contains the fix for m4 slowness (absent + from the official 2.4.6 upstream release). - * innxmit now also recognizes 501 when there is a syntax error - and considers it as a reject (IHAVE/CHECK/TAKETHIS). + Also update HACKING to mention the new directories used for + 2.4.6. - * A password is not mandatory with AUTHINFO USER/PASS. A username - may be enough to authenticate according to RFC 4644. + * Update config.guess and config.sub from upstream - * With AUTHINFO USER/PASS, the username is mandatory. + * Update config.guess and config.sub from upstream - * Use uppercase letters. + * Update install-sh from upstream - * tinyleaf should use 201 and not 200 as initial greeting. Using - POST is not possible. + * Update a few URLs to use https instead of http - * Streaming commands were still allowed when streaming was - deactivated. +2016-11-03 eagle - * * Fix a long-standing bug in TAKETHIS: when authentication was - required, a 480 code was answered before having received the - whole multi-data block, which broke the NNTP protocol. + * Relax permission checks in nnrpd for TLS private key - * Implement RFC 3977 and 4644 for streaming. TAKETHIS is now - totally RFC-compliant and checks the syntax. (However, 501 is - still not sent for interoperability reasons). - - * Better response when an article is cancelled. + Second-guessing whether we can read the file can get us in + trouble if file system ACLs are in use, and requiring the group + match the group of nnrpd makes it harder than necessary to set up + automatic certificate renewal via something like Let's Encrypt. + Relax the permission checks to just check that the private key + isn't world-readable and that we can read it. - * When XBATCH answers 501, it is because of an invalid size, not a - missing size (the new parser takes care of it before calling - XBATCH). +2016-10-08 iulius - * HDR, XHDR and XPAT were not properly showing leading spaces in - header values. + * SASL mechanisms and compression algorithms are case-sensitive - Besides, CR and LF were both changed to spaces. It is not what - should be done: CRLF should be removed and CR, LF, NUL, TAB - should be changed to spaces after the removal of CRLF. + Only upper case is allowed. - * * Add a parameter to wire_findheader() so as to keep initial - whitespaces, if needed. It is USEFOR-compliant (RFC 5536). - - * archive, makehistory and tdx-util now generate valid overview - data (with leading spaces). - - * Fix a bug in archive which did not change LF (withouth CR) into - spaces when generating overview data. - - * Update the test suite. + * Fix Perl warning when Sys::Syslog version is not numeric Change + "<" to "lt" to avoid the following warning: Argument "0.33_01" + isn't numeric in numeric lt (<) -2009-11-07 iulius +2016-09-17 iulius - * In streaming mode, there is no code to defer an article sent via - TAKETHIS. When the server was paused, we used 403 (temporary - failure). + * nnrpd: add syntax checks at injection time for header fields - However, RFC 4644 mentions that we MUST send 400 here and close - the connection so as not to reject the article. - - * Fix a bug introduced by commit 8437. If the Message-ID: or the - Supersedes: headers contains trailing white spaces, the article - is stored corrupted (we have a '\r' inside the header). + Control chars and empty content lines in header fields are now + rejected by nnrpd at injection time. - Introduce more intelligence in the parsing (see a wish explained - in commit 6921) and retain the removed character to properly put - it again after the parsing. + Add two new functions IsValidHeaderBody() and + IsValidHeaderField() in libinn, along with a test suite. - * If keyword generation is set to true in inn.conf but the - Keywords: header is not stored in the overview, warn the news - administrator and deactive keyword generation (because it is - useless and eats resources for nothing). +2016-09-04 iulius - * Improve syntax checks on message-IDs: nnrpd was only based on RFC - 3977, and innd on RFC 1036. They are now both based on RFC 5536 - (USEFOR). - -2009-11-06 iulius - - * Record the extra persistant state of NNTP commands per channel - instead of a static global variable. - - * Fix two gcc 4.4 cast warnings. - - * Add two new files for the test suite in the MANIFEST file. - - * Update the prototype of the function for keyword generation code - when INN is compiled without that support. - - * * Add a new "unsigned long" type to the configuration parser. It - will properly warn the user when a variable contains a negative - integer. It will prevent INN from crashing at several places - (like a xmalloc(-5) which in fact allocates 4GB of memory on a - 32-bit architecture). - - * Modify lots of casts (some are now useless, others needed). - - * Also update the test suite, adding case tests for unsigned - integers and lists. - - * * The keyword generation code now generates a Keywords: header - only if the original article does not already have one. - - * Fixed a segfault because of a possible invalid pointer beyond - the allocated Keywords: header. + * Return the right value in TMRsumone() when the timer log exceeds + the buffer size - * In case the generated Keywords: header is empty, nothing will - be retained (because "Keywords: \r\n" is an invalid header). - - * The generated Keywords: header now does not begin with a comma. - -2009-11-04 iulius - - * Fix a memory leak in the LISTGROUP command when the provided - range is invalid. And in GROUP/LISTGROUP commands when the client - does not have read access. - - * Fix a memory leak in the POST command when the Newsgroups: header - is invalid. - - * When INN is compiled without SASL support, AUTHINFO SASL is an - unkwnown AUTHINFO command. It should return 501 (syntax error) - instead of 503 (not mentioned in RFC for that case). - -2009-11-03 iulius + Thanks to Yuriy M. Kaminskiy for the patch. - * Fix a bug in cvtbatch which was returning only the size of the - headers of an article with the "b" flag. It now correctly returns - the size of the whole article (which is what "b" is supposed to - do). + * Fix build for OpenSSL versions prior to 0.9.8m - Also add a missing free() call. - -2009-11-01 iulius - - * Change a few log lines. - - * Remove dead code in batcher (it is no longer possible to use file - names). - - * Convert the documentation for innxmit into POD. - - * * New "t" flag for "-w" with cvtbatch, so as to retrieve the - arrival time of an article. + SSL_CTX_clear_options() was added to OpenSSL 0.9.8m. - * Convert the man page to POD. Mention the default value for - "-w"; it is no longer possible to use file names with cvtbatch. - - * When keyword generation was done on an article which has a - Keywords: header whose length is greater than the keylimit: - parameter, innd crashed. Change memcpy to strlcpy. - - * innreport was not correctly summing innd stats when the hostname - was an IPv6 address instead of a fully qualified domain name. - -2009-10-28 iulius + Also, when building with warnings on, enable the check on + deprecated OpenSSL interfaces. - * Fix two gcc warnings caused by (size_t *) and (unsigned int *) - casts. - -2009-10-25 iulius - - * After successful authentication, MODE-READER is not an available - capability. - - * Call the function for MODE CANCEL before the check on the length - of the arguments. - - * When the argument to CHECK is not valid, make sure we properly - answer 438 with the whole given argument. - - * * Add support for whitespaces in username/password for AUTHINFO - USER/PASS commands. + * Homogenize the use of TLS/SSL in documentation - * Properly retain the whole (possibly syntactically wrong) - message-ID of CHECK/TAKETHIS commands. - - * Implement CAPABILITIES in innd. + Also, when TLS-level compression is wanted, or server preferences + should be followed, be sure it is the case (if OpenSSL supports + it). - * Improve authentication in innd and implement RFC 4643 (AUTHINFO - USER/PASS): + * Improve the robustness of snprintf handling - * If a feeder will not be able to authenticate (because it - already has access to every feeder commands), 502 is returned - instead of letting it authenticate [and fail to]. + snprintf() returns -1 on error, and *value larger than supplied + buffer size* if formatted string will not fit in supplied buffer. + If you add/subtract snprintf() return value without validating + its range, this will lead up to disaster. - * Do not allow AUTHINFO PASS before having sent AUTHINFO USER. - - * Document how nnrpd differs in the implementation of RFC 3977. - -2009-10-24 iulius + Thanks to Yuriy M. Kaminskiy for the patch. - * Fix the test suite because of a change of return value when an - article is totally empty. + * Improve wording about C flag in newsfeeds - * Add support for the third wildmat argument to LIST commands. - - Also check that the output does not contain a dot on a single - line. - - * If ".\r\n" was put into motd.news, the result of LIST MOTD was - breaking the NNTP protocol. + * Fix initialization of CAF header (LastCleaned was not + initialized) - * When innd cannot provide information for LIST NEWSGROUPS and LIST - ACTIVE.TIMES, it now returns 503. It was giving an invalid result - (".\r\n" without any response code!). +2016-08-05 iulius - * Return 502 (permission denied) or 401 MODE-READER to LIST - commands when the feeder cannot use LIST commands. + * Disable TLS-level compression by default in inn.conf -2009-10-23 iulius +2016-08-04 iulius - * Fix a bug when articles were fed to innd via IHAVE or TAKETHIS - with an empty article: the article terminator was not recognized. - Therefore, subsequent NNTP commands were eaten inside the - article... + * Improve syntax checking for the COMPRESS command - See also commit 8149 for the same issue with an empty body. + Add 501 response codes when appropriate. - * * Return 435/438 instead of 501 to IHAVE/CHECK commands for - compatibility reasons. + * Suppresses compiler warnings when built on systems without the + relevant defines - * When a CHECK/TAKETHIS command line is too long and no streaming - is allowed, 500 must be returned (these commands are unknown). - - * Remove dead code. - - * Missing to deallocate grouplist when an error occurs when - accessing the active file. + Patch from upstream rra-c-util. - * Return 412 (no group selected) instead of 501 (syntax error) when - using HEAD/STAT with an article number. + * Add missing prototypes for replacement functions -2009-10-21 iulius +2016-07-31 iulius - * * Improve logging of MODE commands in news.notice. - - * Specify that MODE READER cannot be sent after a successful - authentication because the client is known as a reader. - - * Improve the greeting message and say we are in transit mode with - innd. - - * * Add a flag to each NNTP command so as to mention whether it can - be used without being authenticated (AUTHINFO, HELP, MODE and - QUIT). - - * Eliminate the special casing of the state CSgetauth. Whether - the peer has authenticated is now stored in the channel rather - than in the channel state. It simplifies a lot the code. + * Fix the build on old GCC versions - * Fix a bug in the response for reader commands: innd was - answering with a superfluous blank line when readers were not - allowed. + To build with GCC "-Wformat-nonliteral" warning on, [9911] + suppressed a few checks in the code, waiting to be properly + fixed. However, these pragmas are not understood by old GCC + versions (4.4.7 for instance). So this commit suppresses these + pragmas. - close #99 + They are scheduled to be fixed in a later release of INN. - * Add support for whitespaces in usernames/passwords provided with - AUTHINFO USER/PASS. nnrpd was previously considering as invalid - passwords like "a b" (two arguments "a" and "b" when only one was - expected) or parsing " ab" as "ab" (stripping the leading space). - - nnrpd now treats everything after the first whitespace character - following AUTHINFO USER/PASS, up to, but not including, the CRLF, - as the username/password. - - Thanks to Jeffrey M. Vinocur for the initial patch. - - close #30 +2016-06-01 iulius -2009-10-20 iulius + * Allow posts containing a Received: or a Posted: header field - * Mention in the documentation that when "nnrpd -i" is used (for an - initial command), the connection is closed after the response. + * Advertise XBATCH and XPAT in the capabilities list -2009-10-17 iulius +2016-05-28 iulius - * * Add a decent parser to innd for NNTP commands. It now puts into - a table the given arguments. It permits to have a far better - grammar parser (commands like "IHAVE" are no longer valid, - and commands like " IHAVE " are now valid). - - * The length of each NNTP command is no longer necessary to be - kept in memory by the command handler. + * Fix the build with Perl and large-file support - see #99 - - * Typos, and mark MAXHEADERSIZE to be fixed in innd code. - - * Do not take into account leading white spaces in NNTP commands in - the RTlong case. - - * Do not close the connection upon receiving an NNTP command - containing only spaces! - - * Ignore lines smaller than 2 bytes (that is to say lines - containing only "\r\n" or something else like "a\n"). + It was a regression introduced with commit [10023]. - * * If the length of NNTP arguments is too long (> 497 bytes), a - 501 error is now returned. - - * If a command is given less (or more) arguments than expected, a - 501 error is now returned. - - * Improve the HELP output for innd, specifying expected - arguments. - - * HEAD answers 412 (not in a newsgroup) when requesting an - article number. It was previously sending 501 (syntax error in - mesasge-ID). +2016-05-05 iulius -2009-10-16 iulius + * sys2nf: fix resource leak if the first condition is true - * For unimplemented NNTP commands like SLAVE, do not return 501 - when the command line is too long, but 500. + * Protect $Id$ in support scripts - * NNTP compliance (RFC 3977): + * Add missing va_end to is_double - * Check whether the NNTP command sent by a news client is too - large (> 512 bytes). Return an error (500 or 501, depending on - the base command) if it is the case. + Fix missing va_end() call in is_double(), which would have caused + compilation failures or other problems on some platforms. - * Send 400 instead of 500 when innd closes the connection after - 10 (BAD_COMMAND_COUNT) unrecognized commands. - - * Use integers instead of strings for NNTP response codes (HEAD and - STAT). + Patch taken from upstream C TAP Harness. - * Return a comment for 205 (QUIT), 235 (IHAVE OK) and 400 (failure - and exit) response codes. Do not use strings from include/nntp.h. - -2009-10-10 iulius - - * * Mention --enable-keywords and --with-openssl in the default - inn.conf configuration file. - - * No need to regenerate the overview when the keyword generation - code is used. + * Update to latest C TAP Harness upstream version - * * Mention the OVER command instead of XOVER. + * Update to latest rra-c-util upstream version - * Mention the --enable-keywords configure option in inn.conf for - keyword generation. - - * * The "will" keyword was checked twice. + The portable replacements for strlcat and strlcpy are no longer + maintained in rra-c-util. These had various bugs around edge + cases and should normally be replaced with asprintf or similar + functions. Rewrite vector_join and cvector_join to use memcpy + instead of strlcpy and strlcat. - * Fix a gcc warning (a signed/unsigned cast). + Also improve how IPv6 is handled in the network test suite. - * Fix a segfault in the keyword generation code for articles - already containing a Keywords: header. + * Fix build with OpenSSL 1.1.0 - a few X509_xxx types are now + opaque - Thanks to Nix for the patch. - -2009-10-09 iulius + Check that the current certificate returned by + X509_STORE_CTX_get_current_cert() is not NULL. In the switch + part, err_cert is not NULL though because otherwise the error + would have been different than + X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT. - * Remove duplicate contents in news.daily, as for the run of expire - and expireover. + * Use perl.m4 from upstream rra-c-util - Also add a warning when the "lowmark" keyword is used without - "expireover". - - Thanks to D. Stussy for the patch. - -2009-10-03 iulius + Move INN-specific stuff to configure.ac. - * Mention the bug-fix in the keyword generation code. + * feedone: fix log output when exiting after an error - * inndstart is no longer used (it was removed in INN 2.5.0) so we - mention it in our FAQ. - - * Fix a GNUism in news.daily (a directory and "-print" are needed). + * Update to latest rra-c-util upstream version - Thanks to S.P. Zeidler for the patch. - -2009-10-01 eagle + As network_set_freebind, network_set_reuseaddr, and + network_set_v6only are now public functions, they can be removed + from our local network-innbind.c file. - * Update keyword code to match current article handling + * Remove stdin flushing - We no longer copy the article out of the channel and - nul-terminate it, but the keyword generation code was assuming - that the article was nul-terminated. Modify KEYgenerate to take - an article length and use xmalloc/memcpy to make a copy rather - than strdup. Thanks to Nix for the report. - -2009-09-29 iulius - - * Bump version to INN 2.5.1. + Even though it arguably has defined behaviur, actsync is not + actually relying on it. - * Mention in Perl and Python hooks that UTF-8 should be used for - reject messages. + * Fix an implicit declaration of function 'time' -2009-09-28 iulius + * Fix leaks and dereferences; improve readability (reported by + cppcheck) - * Mention that active.times and distrib.pats should be encoded in - UTF-8, as well as ctlinnd and nnrpd arguments. + * Fix unused variables - * Add a function to validate the encoding of UTF-8 strings. - "ctlinnd pause", "ctlinnd readers", "ctlinnd reject", "ctlinnd - throttle" and "nnrpd -r" commands now expect a properly encoded - reason. + * sys2nf: Remove extra parameter -2009-09-11 iulius + * Missing fclose() and mishandling of *artnum - * Update control.ctl to its last version. + * Unsigned integers cannot be negative (reported by cppcheck) - * Update support files for autoconf to their last stable version. + * Fix the computation of sizeof(buf) for fgets() -2009-09-09 iulius + * Remove redundant or useless code (reported by cppcheck) - * Improve the changelog wording. - - compress does not have patent issues any longer. + * PERMreadlist and PERMpostlist are not booleans - * Use new Autoconf 2.60 macros AC_TYPE_UINT16_T, AC_TYPE_UINT32_T, - AC_TYPE_LONG_LONG_INT and AC_TYPE_SSIZE_T. + * confparse.c: fix the message error when opening braces are + missing - We do not need m4/int32.m4 any longer to define uint32_t (int32_t - is not used). - -2009-09-07 iulius + tag was always NULL in the condition. - * Check that a CAF header contains at least 128 bytes for the free - bitmap header. Otherwise, increase the blocksize. - - On 64-bit systems, a CAF header can exceed the size of the - default bitmap, which prevents timecaf from working. + * Fix signedness in printf-like statements (reported by cppcheck) -2009-09-05 iulius +2016-04-03 iulius - * Update the maximum size of a CAF. Limits are 3.5GB or 262144 - articles in a CAF. + * authprogs/radius.c: fix support for multiple radius servers - * Remove trailing spaces. +2016-03-28 iulius - * Fix a documentation error about timecaf: it does not work per - newsgroup (though it used to). - - FreeZoneIndexBytes does not exist; it is FreeZoneIndexSize. - - Also remove trailing spaces. + * Add support for OpenSSL 1.1.0 - * Support for sequence numbers higher than 65535 (2^16-1) in the - timecaf storage method. We can now integrate up to (2^32-1) - articles in a mere CAF. A CAF contains all the articles that - arrive during 256 seconds. - - Thanks to Kamil Jonca for the bug report and his patch. + * nnrpd: keep TCP_NODELAY only for BSD/OS systems - Also explain how to decode timecaf tokens and paths. - - And use fixed 16-bit and 32-bit numbers for tokens; timecaf did - not work on systems where short ints were not 16-bit integers. - - * Missing explanation for the hexadecimal value of the timehash - storage class. - - * Missing explanation for the hexadecimal value of the tradspool - storage class. - - * Explain how to decode cnfs tokens. + Fixed slow nnrpd responses for a few NNTP commands. The + TCP_NODELAY option was unconditionally set whereas only BSD/OS + systems needed it. Modern networking stacks do not need such + tweaks. - Also remove trailing spaces. + Thanks to Christian Mock for having discovered that. - * Explain how to decode tradspool tokens and paths. - - Also remove trailing spaces. +2016-01-10 iulius - * ts.ng.db no longer exists; it is tradspool.map. + * rnews: fix a segfault while starting setuid news - Also remove trailing spaces. - - * Convert tabs to spaces. - - * Remove trailing spaces. - - * Explain how to decode timehash tokens and paths. + It is a regression introduced with commit [9854]. Previously, + rnews called get_news_uid_gid() that handled the possibility of + inn.conf not having been read. Since that commit, rnews has been + calling ensure_news_user() that does not handle that case. + Especially, when --enable-uucp-rnews was used at configure time, + the effective UID returned by geteuid() was not root, and rnews + segfaulted. - Also use fixed 16-bit and 32-bit numbers for tokens; timehash did - not work on systems where short ints were not 16-bit integers. + Thanks to Marcus Jodorf for the bug report. -2009-09-02 iulius +2015-12-11 iulius - * Do not send 205 on exit when the client does not send QUIT. + * Properly cast size_t to unsigned long when printf'ing them as %lu -2009-08-29 iulius - - * Increase the CNFS blocksize from 512 bytes to 4096 bytes and the - size limit for a buffer from 1 TB to 16 TB. - - Currently the CNFS storage method uses a 512 byte (1 sector)- - granularity for its "filesystem". That was great in the nineties, - but nowadays that is very limiting: + * Initial implementation of the COMPRESS command in INN - - most filesystems use 4K blocks, so a write to a 512 byte- CNFS - block can result in a read-modify-write cycle, slowing down - writes enormously (effectively making them synchronous) - With - larger devices, the block-bitmap at the start balloons in size - - The size limit of a CNFS file/partition is 2^31 * 512 = 1 TB. - (the block-offset is stored in the CNFS token as a signed - integer..) + Based on draft-murchison-nntp-compress-02 (still not published as + an RFC). - So I have updated storage/cnfs/ to use 4K blocks. + The COMPRESS command is an extension to the NNTP protocol to + allow a connection to be effectively and efficiently compressed. + News clients that also support that extension will be able to + benefit from that bandwidth optimization and improvement in + speed. - This introduces a new CNFS version in the CNFS header, version 4. - The header now includes a blocksize member, which is 4K by - default. The block offset is now encoded in the CNFS token as a - unsigned int. CNFSv4 supports files/partitions up to 16 TB with a - 4K blocksize. - - If we want to support > 16TB with 4K blocks, that is doable by - stealing a few bits from the 'cycnum' value in the CNFS token. - The code was updated so that for CNFSv4 and up the cyclenumber - wraps on 2^24 instead of 2^32 (with one wrap per day, that's good - for 45000 years, so there is no problems there). So we have 8 - bits for that, but the rest of the code has not been written yet. - - The code works fine with existing CNFSv3 files/partitions. - - cnfsstat and cnfsheadconf have also been updated to understand - CNFSv4. - - Right now a new CNFS file/device is always initialized with 4K - blocksize, but it would be trivial to make that configurable. - With larger blocksizes we might want to look at the CNFS write - padding though it is perhaps not useful to pad CNFS writes to - larger blocks than 4K. It doesn't do any harm though. - - Thanks to Miquel van Smoorenburg for the CNFSv4 patch. - -2009-08-22 iulius - - * Silent gcc warnings for a possibly uninitialized variable. - -2009-08-21 iulius + Initial implementation in INN contributed by Julien Elie. - * Use Autoconf quadrigraphs to properly encode brackets. +2015-12-10 iulius - * Mention ckpasswd(8) in the "see also" section of the - documentation for auth_krb5. - -2009-08-20 eagle - - * Avoid using markup in prunehistory NAME section - - Avoid POD markup in the prunehistory NAME section. Not all - versions of pod2man will strip this markup when generating the - man page, and *roff markup in NAME confuses some man - implementations. - - * Recommend against using auth_krb5 + * Improve wording around encryption layers - In the auth_krb5 man page, recommend using ckpasswd with PAM - support and a Kerberos PAM module instead of this authenticator. + Keep in mind that two kinds of security layers can be negotiated + (TLS and SASL). - * Rewrite auth_krb5 to use modern Kerberos APIs - - Use krb5_get_init_creds_password and the current APIs and remove - a bunch of cruft that's unnecessary and uninteresting. The - library defaults will take care of things like building the - correct service principal. - - Add a call to krb5_verify_init_creds, although this will only - work if nnrpd is pointed to a keytab that it can read or if it's - run as root. Looking in a different keytab for a local key with - which to validate the credentials is left as future work and - requires additional configuration to point to the correct keytab. - - * Strict aliasing cleanups in innd network code - - gcc 4.4 is now stricter about aliasing checks and doesn't like - taking variables of type struct sockaddr_storage and casting them - or assigning pointers to them to other struct types and then - dereferencing or storing through those other pointers. It may - optimize the stores away, which would be bad. + * SASL: fix the detection of the negotiation of a security layer - The primary affected code is the inetd query code. There, - allocate memory from the heap instead of the stack and use a - variable of type struct sockaddr *, which is cast to other - pointer types. gcc knows how to deal with that. + nnrpd was wrongly discarding any knowledge from the client when + an SASL data integrity layer without encryption was negotiated. - Elsewhere, eliminate RCaddressmatch in favor of - network_sockaddr_equal, which does the same thing but is - aliasing-clean. Stop using SA_LEN to get the length of an address - for memcpy and instead just copy the full size of a - sockaddr_storage, which given that both the source and the - destination are sockaddr_storage variables will be safe. + Note that the patch also makes nnrpd no longer believe the + connection is encrypted in such cases, for use with require_ssl + auth blocks in readers.conf. This fix is not mentioned in NEWS + because that behaviour for require_ssl is not yet released (new + in INN 2.6.1). -2009-08-20 iulius - - * Convert makedbz(8) and prunehistory(8) documentation to POD. - -2009-08-19 iulius - - * Add examples in grephistory documentation. - -2009-08-18 iulius - - * Changelog for previous commit 8578. - - * * Return the contents of the expires history field when - "grephistory -l" is used. It was always empty. + * Update to latest 5.9 release of rra-c-util - * Mention in documentation that "grephistory -l" returns nothing - when the storage API token does not exist. - - * Fixed "grephistory -v" which does not work when the storage API - token does not exist. - - * Convert expire(8) and expirerm(8) documentation to POD. + Just a typo in a comment. - * Various fixes and homogenizations. - -2009-08-17 iulius - - * * History retention is now done, when possible, on posting times - and not arrival times. Otherwise, articles may be kept too long - in history. + * Improve the robustness of SASL handling - * HISremember in history API now has a fourth argument (the - article posting date). + After sasl_decode(), add a check to prevent a call to memcpy() + for 0 byte or for more bytes than the destination buffer. - * The default value for /remember/ is now 11 (artcutoff + 1 in - order to take into account articles posted one day into the - future). - - * Documentation rewording and improvements. - - * Various homogenizations. - -2009-08-15 iulius - - * Typo for logstatus, an inn.conf parameter. + Check that sasl_errdetail() does not return NULL. - close #84 (which was in fact already committed in INN 2.5.0, see - revision [7633]) - - * Typo: occurance -> occurrence. - -2009-08-14 iulius + Improve a few comments in the source code. - * A patch from Christopher Biedl to alter ARTcancelverify to check - whether at least one group in the cancel message can be found in - the article to be cancelled. + * Support older versions of OpenSSL (up to v0.9.8) to disable TLS + compression - The check for matching Sender: and From: headers is useless and - removed. - - close #38 - - * Add a restrictive umask before generating TLS certificates. - - * Typo: interpretor -> interpreter. - -2009-08-05 iulius + The tlscompression parameter in inn.conf now works for OpenSSL + versions superior to v0.9.8. - * The README files provided with snapshots were still mentioning - the inn-bugs mailing-list instead of inn-workers. - -2009-07-30 iulius - - * A wrong source was logged to the news log for local postings, - especially when the local server was not listed in incoming.conf - (RChostname() then returned a wrong static buffer and ARTlog() - also did not handle the case of a local connection). + * Use -0000 instead of +0000 as the time zone in generated headers + not at Universal Time - Also fix the initialization of data->FeedsiteLength when needed. + nnrpd now uses -0000 as the time zone for Date: and + Injection-Date: header fields it generates. It was previously + using +0000, wrongly systematically indicating a local time zone + at Universal Time when the localtime paramater is set to false + (which is the default) in readers.conf. The +0000 time zone will + now be used only if localtime is set to true and UTC is really + the local time zone of the server. - close #15 - -2009-07-29 iulius - - * Move dbz.h into the public inn directory (it is for instance used - by suck). + Improve the documentation of readers.conf, mentioning a use case + for the localtime parameter. Thanks to Russ for it. - However, it should be noted that if another history file format - is implemented in the future, it might cause problems to external - programs. + convdate now similarly also uses -0000. -2009-07-18 iulius - - * Log a checkgroups only once in innreport. Now that all - control.ctl matching lines are used, they were all logged by - innreport as a checkgroups. We only count for several doit - actions. - - * Do not act on a checkgroups when there isn't any matching - newsgroup. - -2009-07-08 iulius - - * If innfeed is not used, news.daily reports an error message when - it tries to find out the pid of all the running instances of - innfeed. We now check for that. + * nnrpd: take into account the require_ssl parameter when using + SASL - Thanks to Andreas M. Kirchwitz for the patch. + When an encryption layer is negotiated after a successful + authentication using a SASL mechanism which negotiates an + encrypted layer, nnrpd now updates the permissions of the news + client according to the new secure state of his connection (that + is to say auth blocks in readers.conf using the require_ssl + parameter are taken into account). Previously, only TLS + connections either on a dedicated port (usually 563) or after a + successful use of STARTTLS were taking benefit from that + parameter. -2009-07-03 iulius - - * Convert the cnfsheadconf man page into POD. - - * When "-c" is not specified, cnfsheadconf exits. It now displays - the status of all CNFS buffers, as written in its documentation. - - * * Use Math::BigInt rather than bigint.pl. + * nntpsend: correctly exit after all of the child processes exit - * Use Math::BigFloat not to wrongly truncate numbers. - -2009-06-28 iulius - - * * Add a "-v" flag to cnfsstat to see the output of consistency - checks for article storage and history. + The documentation for nntpsend claims that it waits until all of + the child innxmit processes exit before it does, but it doesn't. - * Convert the cnfsstat man page into POD. - - * Update the NoCeM sample file. - - * Use gzip instead of compress as the default UUCP batcher. - -2009-06-23 iulius - - * Add the -L flag to makehistory in order to specify a maximum load - average. If exceeded, the rebuild is paused until it decreases - below the specified load. + The reason it does not is because it starts the innxmit + processes, or more accurately the subshells that start the + innxmit processes, in a while loop that is itself in a child + process of the main shell, because of this line: - Patch by Jonathan Kamens. - -2009-06-21 iulius - - * Regenerate dependencies after commit 8530. - -2009-06-21 eagle - - * inn/storage.h depends on inn/defines.h and inn/options.h. - -2009-06-20 iulius - - * Fix a bug in how perl-nocem parses its configuration file. - - * sasl.conf does not exist any longer. - - * * Change the default value for TLS certificates from to - . + cat ${INPUT} | while read SITE HOST SIZE_ARG FLAGS; do - * Add a default value to tlscapath: because it is required by - nnrpd when TLS is used. + Since the while loop is in a pipe, it's executed in a child + process. As a result, its child processes, i.e., the ones running + innxmit, are not direct children of the nntpsend shell script's + process, so it doesn't wait for them. - * Improve the TLS documentation. - - * * Fixed a segfault in imap_connection which can occur when SASL - is used (overflow in strlcpy). + Note that this bug causes nntpsend to fail to work properly on + systems that use systemd, because when nntpsend exits + prematurely, systemd kills all of the processes it launched, + including the innxmit processes. - * Owing to the US-CERT vulnerability note VU#238019, Cyrus SASL - library has slightly changed. imap_connection and nnrpd now - handle that change. Otherwise, some answers are too long to be - properly computed during SASL exchanges (because of a new null - character added by sasl_encode64). - - * The distributions file was not installed. It was an oversight. - -2009-06-17 iulius + Thanks to Jonathan Kamens for the patch. - * * Fixed a segfault when retrieving via HDR/XHDR/XPAT the contents - of an extra overview field absent from the headers of an article. - The NEWNEWS command was also affected on very rare cases. Thanks - to Tim Woodall for the bug report. + * nntpget: NEWNEWS accepts 4-digit years - * HDR/XHDR/XPAT answers are now robust when the overview database - is inconsistent. When the overview schema was modified without - the overview database being rebuilt, wrong results could be - returned for extra fields (especially a random portion of some - other header). The desired header name is now explicitly searched - in the overview information. In order to achieve that, the - overview_getheader() function was split into - overview_get_standard_header() and overview_get_extra_header(). - It allows to search by index for standard headers and to walk - extra overview fields. - - * Fixed a memory leak when requesting metadata information - (:bytes and :lines). - - * Typo: "to precede" instead of "to preceede". - - * Mention to update install-sh to its last version. - - * Typos. + Hopefully NNTP specification is Y2K-compliant and allows 4-digit + years for the NEWNEWS command. Fix nntpget to use that syntax. - * * Fix an inaccuracy in the count of overview stats. + * Add some more release instructions to HACKING - * Also fix a potential segfault in case overview_getheader() - returns a NULL pointer (though it should not for the Message-ID). - -2009-06-11 eagle - - * Link tinyleaf with $(LIBS), needed for networking libraries on - Solaris. - -2009-06-09 iulius - - * Update the release date of INN 2.5.0. + Document more on pushing releases to ftp.isc.org. Mention + updating Russ's unofficial web site, which contains the + autogenerated HTML versions of the documentation. -2009-06-06 iulius - - * Clarify a sentence about the difference between doit and mail for - a checkgroups. - - * * Import new versions of a few m4 files provided by rra-c-util - 1.0. + * nnrpd: take into account the require_ssl parameter when using + STARTTLS - * getaddrinfo.m4 is merged into socket.m4. - - * inncheck now recognizes the new "/maxdocheckgroups/" keyword in - control.ctl. - -2009-05-24 iulius - - * Use AS_HELP_STRING instead of obsolete AC_HELP_STRING. - - * * Use AC_COMPILE_IFELSE instead of AC_EGREP_CPP. + When TLS is negotiated after a successful use of the STARTTLS + command, nnrpd now updates the permissions of the news client + according to the new secure state of his connection (that is to + say auth blocks in readers.conf using the require_ssl parameter + are taken into account). Previously, only connections on a + dedicated port (usually 563) were taking benefit from that + parameter. - * Use AC_CACHE_CHECK instead of AC_MSG_CHECKING, AC_CACHE_VAL and - AC_MSG_RESULT. + Thanks to Steve Crook for the bug report. - * Better wording for the creation of /pgp/ncmring.gpg. +2015-09-12 iulius - * Bump version numbers of TRUNK (2.5.0 -> 2.6.0). + * Bump revision numbers in STABLE to reflect the next release + * Bumping revision numbers in TODO should be done earlier in the + release process diff -Nurp inn-2.6.0/HACKING inn-2.6.1/HACKING --- inn-2.6.0/HACKING 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/HACKING 2016-11-27 06:03:42.000000000 -0800 @@ -12,7 +12,7 @@ Hacking INN considerably easier to integrate your work. You can check out the current development tree using Subversion from: - + or view it with Trac source browser at: @@ -24,7 +24,7 @@ Hacking INN Nightly snapshots can be found at: - + Configuring and Portability @@ -71,19 +71,19 @@ Configuring and Portability including the files config.guess and config.sub to determine the system name and ltmain.sh for libtool support. The latter file comes from the Debian package of Libtool, available from - (ltmain.sh is in the - libltdl/config subdirectory created after building the package with for - instance debuild); the canonical version of the former two are available - from (which currently redirects to - ). In - addition, m4/libtool.m4 and a few others m4 files are just a copy of the - corresponding files in the libltdl/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 + (ltmain.sh is generated in the + 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 @@ -632,7 +632,7 @@ Making a Release * Make sure that the latest upstream version of the C TAP Harness package is used for the test suite driver. It is available at - , and can be + , and can be easily synchronized with the script support/getc-tap-harness; just run it, have a look at the resulting changes in INN source code and, if everything seems all right, commit these changes. @@ -645,14 +645,18 @@ Making a Release * Make sure that the latest upstream version of the files maintained in the rra-c-util package that INN uses are the ones shipped with the release. These files are available at - and can be + and can be easily synchronized with the script support/getrra-c-util; just run it, have a look at the resulting changes in INN source code and, if everything seems all right, commit these changes. + * Make sure that control/pgpverify and control/signcontrol are in + sync with the master version at + . + * Make sure that samples/control.ctl and samples/nocem.ctl are in sync with the master version at - and + and . 2. Update copyright years in LICENSE. @@ -668,11 +672,15 @@ Making a Release or a release candidate. If making a major release, the revision numbers of the STABLE series - should also be bumped at the end of subject 1.2. + should also be bumped in doc/FAQ at the end of subject 1.2, as well + as the revision numbers of scheduled versions in TODO. 5. Double-check that the version information in lib/Makefile, storage/Makefile, and history/Makefile has been updated if there has - been any change in the library sources since the previous release. + been any change in the library sources since the previous release. + Follow the rules given at + . 6. If making a major release, branch the source tree by creating a new directory under branches in Subversion named after the major @@ -727,12 +735,26 @@ Making a Release 12. Move the release into the public area of the ftp site and update the inn.tar.gz link. Also put the diff and the MD5 checksum on the ftp - site and update the inn.tar.gz.md5 link. Sign the release (ASC, - SHA-1, SHA-256 and SHA-512) and update the inn.tar.gz.asc link. - Possibly move older releases off into the OLD directory. Contact - the ISC folks to push the release to ftp.isc.org and to update the - ISC web site (the relevant contact is "web-request" instead of - "webmaster"). + site and update the inn.tar.gz.md5 link. Sign the release, creating + a *.asc file, using: + + gpg --detach-sign --armor inn-Y.Y.Y.tar.gz + + Also create SHA-1, SHA-256, and SHA-512 files, with "sha1sum", + "sha256sum", and "sha512sum", respectively, and then sign them to + create corresponding *.asc files. You don't need to retain the + unsigned checksum files. + + Update the inn.tar.gz* links and possibly move older releases off + into the OLD directory. + + (Currently, this is all done by Russ by updating the files in + and then letting ISC + mirror them via rsync.) + + Contact the ISC folks to push the release to ftp.isc.org and to + update the ISC web site (the relevant contact is "web-request" + instead of "webmaster"). 13. After the ISC web site has been updated with links towards the new release, send an announce on inn-announce and in news.software.nntp @@ -745,27 +767,32 @@ Making a Release file:///srv/svn/inn/branches/Y.Y file:///srv/svn/inn/tags/Y.Y.Y 15. Bump revision numbers to reflect the one of the following release, - especially in doc/pod/install.pod, doc/pod/readme.pod and TODO for - major releases, configure.ac and Makefile.global.in for both minor - and major releases. The release versions in the Trac wiki should - also be updated. - - 16. For major releases, update the branch used for the generation of - STABLE snapshots. + especially in doc/pod/install.pod and doc/pod/readme.pod for major + releases, configure.ac and Makefile.global.in for both minor and + major releases. The release versions in the Trac wiki should also + be updated. + + 16. For major releases, ping Russ to update the branch used for the + generation of STABLE snapshots. + + 17. Ping Russ to update + with the latest version information and, for a major release, clone + the documentation tree for CURRENT as a new stable documentation + tree for the stable release series. References Some additional references that may be hard to find and may be of use to people working on INN: - + The home page for the IETF NNTP standardization effort, including links to the IETF NNTP working group archives and copies of the latest drafts of the new NNTP standard. The old archived mailing list traffic contains a lot of interesting discussion of why NNTP is the way it is. - + A collection of documents about the Usenet article format, including most of the relevant RFCs and Internet-Drafts. @@ -786,5 +813,5 @@ References technical details as needed, useful when working on IPv6 support in INN. - $Id: hacking.pod 9942 2015-09-08 19:49:55Z iulius $ + $Id: hacking.pod 10116 2016-11-06 14:23:01Z iulius $ diff -Nurp inn-2.6.0/INSTALL inn-2.6.1/INSTALL --- inn-2.6.0/INSTALL 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/INSTALL 2016-11-27 06:03:42.000000000 -0800 @@ -116,8 +116,8 @@ Before You Begin is not required, but is highly recommended for systems carrying public Usenet hierarchies) then you will need to install some version of PGP. The recommended version is GnuPG, since it's actively developed, - supports OpenPGP, is freely available from and - free to use for any purpose (in the US and elsewhere), and (as of + supports OpenPGP, is freely available from + and free to use for any purpose (in the US and elsewhere), and (as of version 1.0.4 at least) supports the RSA signatures used by most current control message senders. @@ -143,7 +143,7 @@ Before You Begin and installed in locations where your system doesn't search for shared libraries by default, you may need to encode the paths to those shared libraries in the INN binaries. For more information on shared library - paths, see . + paths, see . For most systems, setting the environment variable LD_RUN_PATH to a colon-separated list of additional directories in which to look for @@ -152,11 +152,11 @@ Before You Begin Unpacking the Distribution Released versions of INN are available from - . New major releases will be announced on + . New major releases will be announced on (see README) when they're made. If you want a more cutting-edge version, you can obtain current - snapshots from . These are + snapshots from . These are snapshots of the INN Subversion tree taken daily; there are two snapshots made each night (one of the current development branch, and one of the stable branch consisting of bug fixes to the previous major @@ -321,6 +321,9 @@ Installing INN Even if you do not use this option, INN still requires Perl as mentioned above. + If the $PERL environment variable is set, it will be used as the + path to Perl. + --with-python Enables support for Python, allowing you to install filter and authentication scripts written in Python. You will need @@ -387,15 +390,22 @@ Installing INN explicitly passed to configure. --with-zlib=PATH - The ovdb storage method can optionally use compression. If - --with-bdb is set, and configure finds a suitable Berkeley DB - version, configure will by default also try to find the zlib - library. INN will then be built with zlib support unless the - --without-zlib flag is explicitly passed to configure. - - In case non-standard paths to the zlib library are used, one or both - of the options --with-zlib-include and --with-zlib-lib can be given - to configure with a path. + Enables support for compression for news reading, which means a + compression layer can be negotiated between your server and + newsreaders supporting that NNTP extension. + + Also enables support for compression with the ovdb storage method. + + This option requires that zlib be installed on your system + (including the header files, not just the runtime libraries). If a + path is given, it sets the installed directory of zlib. In case + non-standard paths to the zlib library are used, one or both of the + options --with-zlib-include and --with-zlib-lib can be given to + configure with a path. + + If the zlib library is found at configure time, INN will be built + with compression support unless the --without-zlib flag is + explicitly passed to configure. --with-openssl=PATH Enables support for TLS/SSL for news reading, which means it will be @@ -1361,7 +1371,7 @@ Creating the Database Files from that server into *pathdb*. Otherwise, you'll need to figure out what newsgroups you want to carry and create new active and newsgroups files for them. If you plan to carry a full feed, or something close to - that, go to and download active + that, go to and download active and newsgroups from there; that will start you off with reasonably complete files. If you plan to only carry a small set of groups, the default minimal active file installed by INN is a good place to start; @@ -1602,7 +1612,7 @@ Processing Newsgroup Control Messages hierarchies; if you don't want to act on all those control messages, you should remove from that file all entries for hierarchies you don't want to carry. The last version of that file is available from - . + . You can tell INN to just authenticate control messages based on the From: header of the message, but this is obviously perilous and control @@ -1635,7 +1645,7 @@ Processing Newsgroup Control Messages cp /pgp/pubring.gpg /pgp/trustedkeys.gpg The URLs from which you can get hierarchy keys are noted in comments in - control.ctl. tries to + control.ctl. tries to collect the major hierarchy keys and you can just import the whole file. If you want to make sure that the keys have been correcly imported, use: @@ -1648,5 +1658,5 @@ Processing Newsgroup Control Messages you may have to remove all the user IDs except the one that matches the control.ctl entry using "gpg --edit-key" and the "delkey" command. - $Id: install.pod 9936 2015-09-02 12:35:17Z iulius $ + $Id: install.pod 10097 2016-11-04 22:19:07Z iulius $ diff -Nurp inn-2.6.0/LICENSE inn-2.6.1/LICENSE --- inn-2.6.0/LICENSE 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/LICENSE 2016-11-27 06:03:42.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 by Internet Systems Consortium, Inc. ("ISC") + 2013, 2014, 2015, 2016 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.0/MANIFEST inn-2.6.1/MANIFEST --- inn-2.6.0/MANIFEST 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/MANIFEST 2016-11-27 06:03:42.000000000 -0800 @@ -381,6 +381,7 @@ include/conffile.h He include/config.h.in Template configuration data include/inn Installed header files (Directory) include/inn/buffer.h Header file for reusable counted buffers +include/inn/concat.h Header file for string concatenation include/inn/confparse.h Header file for configuration parser include/inn/dbz.h Header file for DBZ include/inn/defines.h Portable defs for installed headers @@ -622,6 +623,7 @@ nnrpd/sasl.c SA nnrpd/tls.c Transport layer security nnrpd/tls.h Transport layer security data types nnrpd/track.c Track client behavior +nnrpd/zlib.c Compression support for nnrpd perl Perl libraries (Directory) perl/INN INN Perl modules (Directory) perl/INN/Config.pm.in INN::Config module @@ -888,6 +890,7 @@ tests/lib/getaddrinfo-t.c Te tests/lib/getnameinfo-t.c Tests for lib/getnameinfo.c tests/lib/hash-t.c Tests for lib/hash.c tests/lib/hashtab-t.c Tests for lib/hashtab.c +tests/lib/headers-t.c Tests for lib/headers.c tests/lib/hex-t.c Tests for lib/hex.c tests/lib/inet_aton-t.c Tests for lib/inet_aton.c tests/lib/inet_ntoa-t.c Tests for lib/inet_ntoa.c diff -Nurp inn-2.6.0/Makefile.global.in inn-2.6.1/Makefile.global.in --- inn-2.6.0/Makefile.global.in 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/Makefile.global.in 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -## $Id: Makefile.global.in 9913 2015-07-07 16:31:52Z iulius $ +## $Id: Makefile.global.in 10040 2016-07-31 20:01:43Z 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.0 +VERSION = 2.6.1 VERSION_EXTRA = ## The absolute path to the top of the build directory, used to find the @@ -92,11 +92,11 @@ CCOUTPUT = @CCOUTPUT@ ## -D_FORTIFY_SOURCE=2 enables warn_unused_result attribute markings ## on glibc functions on Linux, as well as more object size checking, ## which catches a few more issues. -## -Wswitch-enum, -Wfloat-equal, -Wlogical-op, +## -Wformat=2, -Wswitch-enum, -Wfloat-equal, -Wlogical-op, ## "-Wconversion -Wno-sign-conversion", ## -Wunreachable-code, -Wstack-protector, -Wdeclaration-after-statement -WARNINGS = -g -O2 -DDEBUG=1 -Werror -Wall -Wextra -Wformat=2 \ +WARNINGS = -g -O2 -DDEBUG=1 -Werror -Wall -Wextra \ -Winit-self -Wmissing-include-dirs \ -Wsync-nand -Wendif-labels -Wtrampolines -Wpointer-arith \ -Wbad-function-cast -Wcast-align -Wwrite-strings \ @@ -126,12 +126,19 @@ EXTLIB = @EXTLIB@ LIBCC = $(LIBTOOLCC) $(CC) LIBLD = $(LIBTOOLLD) $(CC) +## zlib support. Additional flags and libraries used when compiling or +## linking code that contains compression support. + +ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@ +ZLIB_LDFLAGS = @ZLIB_LDFLAGS@ +ZLIB_LIBS = @ZLIB_LIBS@ + ## Berkeley DB support. If this support is configured, anything linking ## against libstorage also needs to link against BDB_LDFLAGS and BDB_LIBS. - -BDB_CPPFLAGS = @BDB_CPPFLAGS@ @ZLIB_CPPFLAGS@ -BDB_LDFLAGS = @BDB_LDFLAGS@ @ZLIB_LDFLAGS@ -BDB_LIBS = @BDB_LIBS@ @ZLIB_LIBS@ + +BDB_CPPFLAGS = @BDB_CPPFLAGS@ $(ZLIB_CPPFLAGS) +BDB_LDFLAGS = @BDB_LDFLAGS@ $(ZLIB_LDFLAGS) +BDB_LIBS = @BDB_LIBS@ $(ZLIB_LIBS) ## INN libraries. Nearly all INN programs are linked with libinn, and any ## INN program that reads from or writes to article storage or overview is diff -Nurp inn-2.6.0/NEWS inn-2.6.1/NEWS --- inn-2.6.0/NEWS 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/NEWS 2016-11-27 06:03:42.000000000 -0800 @@ -1,3 +1,68 @@ +Changes in 2.6.1 + + * nnrpd now uses -0000 as the time zone for Date: and Injection-Date: + header fields it generates. It was previously using +0000, wrongly + systematically indicating a local time zone at Universal Time when + *localtime* is set to false (which is the default) in readers.conf. + The +0000 time zone will now be used only if *localtime* is set to + true and UTC is really the local time zone of the server. + + * Julien Elie has implemented in nnrpd the new COMPRESS command + described in draft-murchison-nntp-compress that extends the NNTP + protocol to allow a connection to be effectively and efficiently + compressed. News clients that also support that extension will be + able to benefit from that bandwidth optimization and improvement in + speed. Moreover, using COMPRESS is more secure than TLS-level + compression, as far as authentication credentials are concerned. + + * The default value for the *tlscompression* parameter in inn.conf has + changed. TLS-level compression is now disabled by default, to comply + with the best current practices for a secure use of TLS in application + protocols like NNTP. Using the new COMPRESS command is recommended. + + * The *tlscompression* parameter in inn.conf now also permits to disable + TLS-level compression with OpenSSL 0.9.8. It previously had an effect + only when OpenSSL 1.0.0 or later was used. + + * rnews no longer segfaults at startup when started setuid news. Thanks + to Marcus Jodorf for the bug report. + + * Fixed slow nnrpd responses for a few NNTP commands. The TCP_NODELAY + option was unconditionally set whereas only BSD/OS systems needed it. + Thanks to Christian Mock for having discovered that. + + * Articles containing a Received: or a Posted: header field are no + longer rejected by nnrpd at injection time. + + * Articles containing control characters or whitespace-only content + lines in their headers are now rejected by nnrpd at injection time. + + * OpenSSL 1.1.0 support has been added to INN. + + * When an encryption layer is negotiated during a successful use of the + STARTTLS command, or after a successful authentication using a SASL + mechanism that negotiates an encryption layer, nnrpd now updates the + permissions of the news client according to the new secure state of + his connection (that is to say auth blocks in readers.conf using the + *require_ssl* parameter are taken into account). Previously, only + connections on a dedicated port (usually 563) were taking benefit from + that parameter. Thanks to Steve Crook for the bug report. + + * When a data integrity layer was negotiated during a successful SASL + authentication, nnrpd was wrongly reseting any knowledge obtained from + the client, such as the current newsgroup and article number. This + behaviour now applies only when an encryption layer is negotiated. + + * nntpsend now correctly waits until all of the child innxmit processes + exit before it does. It was causing nntpsend to fail to work properly + on systems that use systemd, because when it exits prematurely, + systemd kills all of the processes it launched, including the innxmit + processes. Thanks to Jonathan Kamens for the patch. + + * Update from GNU Libtool 2.4.2 to 2.4.6. + + * Other minor bug fixes and documentation improvements. + Upgrading from 2.5 to 2.6 The following changes require your full attention because a manual @@ -18,7 +83,7 @@ Upgrading from 2.5 to 2.6 manually move your current database files mailpost-msgid.dir and mailpost-msgid.pag from *pathtmp* to *pathdb*. - * If you have been using SSL/TLS with nnrpd before, be aware that the + * If you have been using TLS/SSL with nnrpd before, be aware that the default value of a few inn.conf parameters have changed: the server now decides the preferred cipher (instead of the client), and only TLS protocols are allowed (using the flawed SSLv2 and SSLv3 protocols is @@ -194,7 +259,7 @@ Changes in 2.6.0 Changes in 2.5.5 - * New inn.conf parameters used by nnrpd to fine-tune the SSL/TLS + * New inn.conf parameters used by nnrpd to fine-tune the TLS/SSL configuration have been added: *tlsciphers*, *tlscompression*, *tlseccurve*, *tlspreferserverciphers*, and *tlsprotocols*. Many thanks to Christian Mock for his contribution that permits to tighten @@ -2022,7 +2087,7 @@ Upgrading from 2.2 to 2.3 everything gets put into the right place. The easiest way to do this is to generate, on your old server, a list of all of your existing article files and then feed that list to innxmit. Further details can be found - in the FAQ at . + in the FAQ at . If you are using a version of Cleanfeed that still has a line in it like: @@ -2135,7 +2200,7 @@ Changes in 2.2.0 run actsyncd. Be sure to read the manual page for actsync to configure an actsync.ign file for your site, and test simpleftp if you do not "configure" with wget or ncftp. Also see - . + . * Some options to "configure" are now moved to inn.conf (*merge-to-groups* and *pgp-verify*, without the hyphen). @@ -2153,5 +2218,5 @@ Changes in 2.2.0 * The innshellvars.csh.in script is obsolete (and lives in the obsolete directory, for now). - $Id: news.pod 9923 2015-07-14 16:48:11Z iulius $ + $Id: news.pod 10127 2016-11-27 13:43:25Z iulius $ diff -Nurp inn-2.6.0/README inn-2.6.1/README --- inn-2.6.0/README 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/README 2016-11-27 06:03:42.000000000 -0800 @@ -88,12 +88,12 @@ Prerequisites successfully run INN on a platform that isn't listed in INSTALL, please let us know (see "Reporting Bugs" below). - Perl 5.004 or later is required to build INN and use the embedded Perl - filter support (which is highly recommended; some excellent spam filters - have been written for INN). Since all versions of Perl previous to - 5.004 are buggy (including security problems) and have fewer features, - installing Perl 5.004 or later (like at least Perl 5.8.0) is - recommended. + Perl 5.004_03 or later is required to build INN and use the embedded + Perl filter support (which is highly recommended; some excellent spam + filters have been written for INN). Since all versions of Perl previous + to 5.004 are buggy (including security problems) and have fewer + features, installing Perl 5.004_03 or later (like at least Perl 5.8.0) + is recommended. If you want to enable PGP verification of control messages (highly recommended), you will need to have a PGP implementation installed. See @@ -301,5 +301,5 @@ Supporting the INN Effort Katsuhiro Kondou - $Id: readme.pod 9945 2015-09-12 13:05:27Z iulius $ + $Id: readme.pod 10023 2016-05-05 12:50:56Z iulius $ diff -Nurp inn-2.6.0/TODO inn-2.6.1/TODO --- inn-2.6.0/TODO 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/TODO 2016-11-27 06:03:42.000000000 -0800 @@ -23,10 +23,10 @@ suite, which is currently very minimal. to allow more portions of INN to be automatically tested will make all changes easier and will be *greatly* appreciated. -Last modified $Id: TODO 9825 2015-04-20 17:26:55Z iulius $. +Last modified $Id: TODO 9949 2015-09-12 13:48:45Z iulius $. -Scheduled for INN 2.6 +Scheduled for INN 2.7 * Rework and clean up the overview API. The major change is that the initialization function should return a pointer to an opaque struct @@ -90,7 +90,7 @@ Scheduled for INN 2.6 into libinn. -Scheduled for INN 2.7 +Scheduled for INN 2.8 * Add a generic, modular anti-spam and anti-abuse filter, off by default, but coming with INN and prominently mentioned in the INSTALL diff -Nurp inn-2.6.0/authprogs/Makefile inn-2.6.1/authprogs/Makefile --- inn-2.6.0/authprogs/Makefile 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/authprogs/Makefile 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -## $Id: Makefile 9794 2015-03-17 20:49:15Z iulius $ +## $Id: Makefile 10100 2016-11-04 22:24:26Z iulius $ include ../Makefile.global @@ -83,7 +83,8 @@ auth_krb5.o: auth_krb5.c ../include/conf ../include/portable/stdbool.h libauth.h ../include/portable/socket.h \ ../include/portable/macros.h ../include/portable/getaddrinfo.h \ ../include/portable/getnameinfo.h ../include/inn/messages.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h ckpasswd.o: ckpasswd.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 \ @@ -91,8 +92,8 @@ ckpasswd.o: ckpasswd.c ../include/config ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/messages.h \ ../include/inn/qio.h ../include/inn/vector.h ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.h libauth.h \ - ../include/portable/socket.h ../include/portable/macros.h \ + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ + libauth.h ../include/portable/socket.h ../include/portable/macros.h \ ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h domain.o: domain.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ @@ -100,9 +101,10 @@ domain.o: domain.c ../include/config.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/messages.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - libauth.h ../include/portable/socket.h ../include/portable/macros.h \ - ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h libauth.h ../include/portable/socket.h \ + ../include/portable/macros.h ../include/portable/getaddrinfo.h \ + ../include/portable/getnameinfo.h ident.o: ident.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 \ @@ -112,8 +114,8 @@ ident.o: ident.c ../include/config.h ../ ../include/inn/network.h ../include/inn/portable-socket.h \ ../include/inn/portable-getaddrinfo.h \ ../include/inn/portable-getnameinfo.h ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.h libauth.h \ - ../include/portable/socket.h + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ + libauth.h ../include/portable/socket.h libauth.o: libauth.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 \ @@ -122,7 +124,8 @@ libauth.o: libauth.c ../include/config.h ../include/portable/stdbool.h ../include/portable/socket.h \ ../include/portable/macros.h ../include/portable/getaddrinfo.h \ ../include/portable/getnameinfo.h ../include/inn/messages.h libauth.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h radius.o: radius.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 \ @@ -130,8 +133,8 @@ radius.o: radius.c ../include/config.h . ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/innconf.h \ ../include/inn/md5.h ../include/inn/messages.h ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \ - ../include/inn/paths.h ../include/conffile.h \ + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ + ../include/inn/nntp.h ../include/inn/paths.h ../include/conffile.h \ ../include/portable/macros.h libauth.h ../include/portable/socket.h \ ../include/portable/macros.h ../include/portable/getaddrinfo.h \ ../include/portable/getnameinfo.h diff -Nurp inn-2.6.0/authprogs/radius.c inn-2.6.1/authprogs/radius.c --- inn-2.6.0/authprogs/radius.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/authprogs/radius.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: radius.c 9695 2014-09-20 05:53:22Z iulius $ +/* $Id: radius.c 10001 2016-04-03 13:34:28Z iulius $ ** ** Authenticate a user against a remote radius server. */ @@ -481,10 +481,9 @@ static int rad_auth(rad_config_t *radcon } /* FINALLY! Got back a known-good packet. See if we're in. */ close(sock); + done = 1; + req_copyfrom(sreq, &req); return (req.code == PW_AUTHENTICATION_ACK) ? 0 : -1; - done = 1; - req_copyfrom(sreq, &req); - break; } } if (authtries == 0) diff -Nurp inn-2.6.0/backends/Makefile inn-2.6.1/backends/Makefile --- inn-2.6.0/backends/Makefile 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/backends/Makefile 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -## $Id: Makefile 9794 2015-03-17 20:49:15Z iulius $ +## $Id: Makefile 10100 2016-11-04 22:24:26Z iulius $ include ../Makefile.global @@ -129,8 +129,8 @@ actsync.o: actsync.c ../include/config.h ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/innconf.h \ ../include/inn/messages.h ../include/inn/hashtab.h ../include/inn/qio.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - ../include/inn/paths.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h ../include/inn/paths.h archive.o: archive.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 \ @@ -139,8 +139,8 @@ archive.o: archive.c ../include/config.h ../include/portable/stdbool.h ../include/inn/buffer.h \ ../include/inn/innconf.h ../include/inn/messages.h ../include/inn/qio.h \ ../include/inn/vector.h ../include/inn/wire.h ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/paths.h \ - ../include/inn/storage.h ../include/inn/options.h + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ + ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h batcher.o: batcher.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -148,8 +148,9 @@ batcher.o: batcher.c ../include/config.h ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/innconf.h \ ../include/inn/messages.h ../include/inn/timer.h ../include/inn/wire.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h ../include/inn/paths.h ../include/inn/storage.h \ + ../include/inn/options.h buffchan.o: buffchan.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -157,8 +158,8 @@ buffchan.o: buffchan.c ../include/config ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/innconf.h \ ../include/inn/messages.h ../include/inn/qio.h ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/paths.h \ - map.h + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ + ../include/inn/paths.h map.h cvtbatch.o: cvtbatch.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 \ @@ -166,8 +167,9 @@ cvtbatch.o: cvtbatch.c ../include/config ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/innconf.h \ ../include/inn/messages.h ../include/inn/qio.h ../include/inn/wire.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h ../include/inn/paths.h ../include/inn/storage.h \ + ../include/inn/options.h filechan.o: filechan.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -175,8 +177,8 @@ filechan.o: filechan.c ../include/config ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/innconf.h \ ../include/inn/messages.h ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/paths.h \ - map.h + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ + ../include/inn/paths.h map.h innbind.o: innbind.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -185,7 +187,7 @@ innbind.o: innbind.c ../include/config.h ../include/portable/stdbool.h ../include/portable/socket.h \ ../include/portable/macros.h ../include/portable/getaddrinfo.h \ ../include/portable/getnameinfo.h ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.h \ + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ ../include/inn/messages.h ../include/inn/newsuser.h \ ../include/inn/vector.h inndf.o: inndf.c ../include/config.h ../include/inn/defines.h \ @@ -196,8 +198,8 @@ inndf.o: inndf.c ../include/config.h ../ ../include/portable/stdbool.h ../include/inn/innconf.h \ ../include/inn/messages.h ../include/inn/overview.h \ ../include/inn/storage.h ../include/inn/options.h ../include/inn/qio.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - ../include/inn/paths.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h ../include/inn/paths.h innxbatch.o: innxbatch.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -207,7 +209,8 @@ innxbatch.o: innxbatch.c ../include/conf ../include/portable/macros.h ../include/portable/getaddrinfo.h \ ../include/portable/getnameinfo.h ../include/inn/innconf.h \ ../include/inn/messages.h ../include/inn/timer.h ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ + ../include/inn/nntp.h innxmit.o: innxmit.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 \ @@ -218,16 +221,17 @@ innxmit.o: innxmit.c ../include/config.h ../include/portable/getnameinfo.h ../include/inn/history.h \ ../include/inn/innconf.h ../include/inn/messages.h ../include/inn/qio.h \ ../include/inn/timer.h ../include/inn/wire.h ../include/inn/libinn.h \ - ../include/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/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 map.o: map.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ ../include/inn/defines.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/paths.h \ - map.h + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ + ../include/inn/paths.h map.h ninpaths.o: ninpaths.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 \ @@ -243,8 +247,8 @@ nntpget.o: nntpget.c ../include/config.h ../include/portable/macros.h ../include/portable/getaddrinfo.h \ ../include/portable/getnameinfo.h ../include/inn/history.h \ ../include/inn/innconf.h ../include/inn/messages.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - ../include/inn/nntp.h ../include/inn/paths.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 overchan.o: overchan.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 \ @@ -253,8 +257,8 @@ overchan.o: overchan.c ../include/config ../include/portable/stdbool.h ../include/inn/innconf.h \ ../include/inn/messages.h ../include/inn/overview.h \ ../include/inn/storage.h ../include/inn/options.h ../include/inn/qio.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - ../include/inn/paths.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h ../include/inn/paths.h shlock.o: shlock.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 \ @@ -268,4 +272,4 @@ shrinkfile.o: shrinkfile.c ../include/co ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/innconf.h \ ../include/inn/messages.h ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.h + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h diff -Nurp inn-2.6.0/backends/actsync.c inn-2.6.1/backends/actsync.c --- inn-2.6.0/backends/actsync.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/backends/actsync.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: actsync.c 9872 2015-05-23 11:30:49Z iulius $ +/* $Id: actsync.c 10020 2016-05-05 12:46:27Z iulius $ * * actsync - sync or merge two active files * @@ -2536,7 +2536,6 @@ exec_cmd(int mode, const char *cmd, char if (mode == OUTPUT_IEXEC) { /* ask the question */ - fflush(stdin); fflush(stdout); fflush(stderr); if (type == NULL) { diff -Nurp inn-2.6.0/backends/batcher.c inn-2.6.1/backends/batcher.c --- inn-2.6.0/backends/batcher.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/backends/batcher.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: batcher.c 9911 2015-07-04 21:32:56Z iulius $ +/* $Id: batcher.c 10040 2016-07-31 20:01:43Z iulius $ ** ** Read batchfiles on standard input and spew out batches. */ @@ -54,9 +54,7 @@ BATCHstart(void) char buff[SMBUF]; if (Processor && *Processor) { -#pragma GCC diagnostic ignored "-Wformat-nonliteral" snprintf(buff, sizeof(buff), Processor, Host); -#pragma GCC diagnostic warning "-Wformat-nonliteral" F = popen(buff, "w"); if (F == NULL) return NULL; @@ -372,9 +370,7 @@ main(int ac, char *av[]) SendIt: /* Now we can start to send the article! */ if (Separator && *Separator) { -#pragma GCC diagnostic ignored "-Wformat-nonliteral" snprintf(buff, sizeof(buff), Separator, BytesInArt); -#pragma GCC diagnostic warning "-Wformat-nonliteral" BytesInCB += strlen(buff) + 1; BytesWritten += strlen(buff) + 1; if (fprintf(F, "%s\n", buff) == EOF || ferror(F)) { diff -Nurp inn-2.6.0/backends/buffchan.c inn-2.6.1/backends/buffchan.c --- inn-2.6.0/backends/buffchan.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/backends/buffchan.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: buffchan.c 9911 2015-07-04 21:32:56Z iulius $ +/* $Id: buffchan.c 10040 2016-07-31 20:01:43Z iulius $ ** ** Buffered file exploder for innd. */ @@ -122,10 +122,8 @@ SITEcloseall(void) */ static void SITEopen(SITE *sp) { - int e; - if ((sp->F = xfopena(sp->Filename)) == NULL - && ((e = errno) != EACCES || chmod(sp->Filename, 0644) < 0 + && (errno != EACCES || chmod(sp->Filename, 0644) < 0 || (sp->F = xfopena(sp->Filename)) == NULL)) { syswarn("%s cannot fopen %s", sp->Name, sp->Filename); if ((sp->F = fopen("/dev/null", "w")) == NULL) @@ -179,9 +177,7 @@ SITEfind(char *Name, bool CanCreate) /* Fill in the structure for the new site. */ sp->Name = xstrdup(Name); -#pragma GCC diagnostic ignored "-Wformat-nonliteral" snprintf(buff, sizeof(buff), Format, Map ? MAPname(Name) : sp->Name); -#pragma GCC diagnostic warning "-Wformat-nonliteral" sp->Filename = xstrdup(buff); if (BufferMode == 'u') sp->Buffer = NULL; diff -Nurp inn-2.6.0/backends/news2mail.in inn-2.6.1/backends/news2mail.in --- inn-2.6.0/backends/news2mail.in 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/backends/news2mail.in 2016-11-27 06:03:42.000000000 -0800 @@ -1,7 +1,7 @@ #! /usr/bin/perl -w # fixscript will replace this line with code to load INN::Config -# $Id: news2mail.in 8249 2008-12-22 23:12:42Z iulius $ +# $Id: news2mail.in 10076 2016-10-08 20:37:36Z iulius $ # News to mail channel backend. # # INN gives us @@ -46,7 +46,7 @@ my $use_syslog = 0; eval { require Sys::Syslog; import Sys::Syslog; $use_syslog = 1; }; if ($use_syslog) { - if ($Sys::Syslog::VERSION < 0.15) { + if ($Sys::Syslog::VERSION lt 0.15) { eval "sub Sys::Syslog::_PATH_LOG { '/dev/log' }" if $^O eq 'dec_osf'; Sys::Syslog::setlogsock('unix') if $^O =~ /linux|dec_osf|freebsd|darwin/; } diff -Nurp inn-2.6.0/backends/ninpaths.c inn-2.6.1/backends/ninpaths.c --- inn-2.6.0/backends/ninpaths.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/backends/ninpaths.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: ninpaths.c 9928 2015-08-08 17:20:23Z iulius $ +/* $Id: ninpaths.c 10040 2016-07-31 20:01:43Z iulius $ ** ** New inpaths reporting program. ** @@ -199,9 +199,7 @@ writedumpfile(const char *n) writedump(stdout); return; } -#pragma GCC diagnostic ignored "-Wformat-nonliteral" snprintf(buf, sizeof(buf), n, time(0)); -#pragma GCC diagnostic warning "-Wformat-nonliteral" d=fopen(buf, "w"); if (d) { if (writedump(d)<0) diff -Nurp inn-2.6.0/backends/nntpget.c inn-2.6.1/backends/nntpget.c --- inn-2.6.0/backends/nntpget.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/backends/nntpget.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: nntpget.c 9695 2014-09-20 05:53:22Z iulius $ +/* $Id: nntpget.c 10009 2016-05-05 12:39:19Z iulius $ ** ** Connect to a remote site, and get news from it to offer to our local ** server. Read list on stdin, or get it via NEWNEWS command. Writes @@ -243,10 +243,9 @@ main(int ac, char *av[]) if (stat(optarg, &Sb) < 0) sysdie("cannot stat %s", optarg); gt = gmtime(&Sb.st_mtime); - /* Y2K: NNTP Spec currently allows only two digit years. */ - snprintf(tbuff, sizeof(tbuff), "%02d%02d%02d %02d%02d%02d GMT", - gt->tm_year % 100, gt->tm_mon + 1, gt->tm_mday, - gt->tm_hour, gt->tm_min, gt->tm_sec); + snprintf(tbuff, sizeof(tbuff), "%04d%02d%02d %02d%02d%02d GMT", + gt->tm_year + 1900, gt->tm_mon + 1, gt->tm_mday, + gt->tm_hour, gt->tm_min, gt->tm_sec); Since = tbuff; break; case 'n': @@ -462,7 +461,7 @@ main(int ac, char *av[]) if (Update) { if ((F = fopen(Update, "w")) == NULL) sysdie("cannot update %s", Update); - fprintf(F, "got %ld offered %ld sent %ld rejected %ld\n", + fprintf(F, "got %lu offered %lu sent %lu rejected %lu\n", STATgot, STAToffered, STATsent, STATrejected); if (ferror(F) || fclose(F) == EOF) sysdie("cannot update %s", Update); diff -Nurp inn-2.6.0/backends/nntpsend.in inn-2.6.1/backends/nntpsend.in --- inn-2.6.0/backends/nntpsend.in 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/backends/nntpsend.in 2016-11-27 06:03:42.000000000 -0800 @@ -1,7 +1,7 @@ #! /bin/sh # fixscript will replace this line with code to load innshellvars -## $Id: nntpsend.in 9065 2010-05-20 19:51:02Z iulius $ +## $Id: nntpsend.in 9969 2015-12-10 20:28:37Z iulius $ ## Send news via NNTP by running several innxmit processes in the background. ## Usage: ## nntpsend [-acDdlNnpr] [-P portnum] [-s size] [-T limit] [-t timeout] @@ -201,7 +201,7 @@ echo "${PROGNAME}: [${PARENTPID}] start" export BATCH PROGNAME PARENTPID INNFLAGS ## Loop over all sites. -cat ${INPUT} | while read SITE HOST SIZE_ARG FLAGS; do +while read SITE HOST SIZE_ARG FLAGS; do ## Parse the input parameters. if [ -z "${SITE}" -o -z "${HOST}" ] ; then echo "Ignoring bad line: ${SITE} ${HOST} ${SIZE_ARG} ${FLAGS}" 1>&2 @@ -445,7 +445,7 @@ cat ${INPUT} | while read SITE HOST SIZE fi rm -f ${LOCK} ' & -done +done < ${INPUT} ## Release the nntpsend lock and clean up before we wait on child processes. if [ -z "${NOLOCK}" ]; then diff -Nurp inn-2.6.0/backends/send-uucp.in inn-2.6.1/backends/send-uucp.in --- inn-2.6.0/backends/send-uucp.in 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/backends/send-uucp.in 2016-11-27 06:03:42.000000000 -0800 @@ -53,7 +53,7 @@ my $use_syslog = 0; eval { require Sys::Syslog; import Sys::Syslog; $use_syslog = 1; }; if ($use_syslog) { - if ($Sys::Syslog::VERSION < 0.15) { + if ($Sys::Syslog::VERSION lt 0.15) { eval "sub Sys::Syslog::_PATH_LOG { '/dev/log' }" if $^O eq 'dec_osf'; Sys::Syslog::setlogsock('unix') if $^O =~ /linux|dec_osf|freebsd|darwin/; } diff -Nurp inn-2.6.0/configure inn-2.6.1/configure --- inn-2.6.0/configure 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/configure 2016-11-27 06:03:42.000000000 -0800 @@ -1,7 +1,7 @@ #! /bin/sh -# From configure.ac Revision: 9839 . +# From configure.ac Revision: 10046 . # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for INN 2.6.0. +# Generated by GNU Autoconf 2.69 for INN 2.6.1. # # Report bugs to . # @@ -591,8 +591,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='INN' PACKAGE_TARNAME='inn' -PACKAGE_VERSION='2.6.0' -PACKAGE_STRING='INN 2.6.0' +PACKAGE_VERSION='2.6.1' +PACKAGE_STRING='INN 2.6.1' PACKAGE_BUGREPORT='inn-workers@lists.isc.org' PACKAGE_URL='https://www.isc.org/downloads/projects/' @@ -638,10 +638,10 @@ SYSLOG_FACILITY ALLOCA DBM_CPPFLAGS DBM_LIBS +KRB5_AUTH ZLIB_LIBS ZLIB_LDFLAGS ZLIB_CPPFLAGS -KRB5_AUTH SASL_LIBS SASL_LDFLAGS SASL_CPPFLAGS @@ -723,6 +723,7 @@ LIBTOOLINST LIBTOOLCC EXTOBJ EXTLIB +LT_SYS_LIBRARY_PATH OTOOL64 OTOOL LIPO @@ -807,6 +808,7 @@ enable_shared enable_static with_pic enable_fast_install +with_aix_soname with_gnu_ld with_sysroot enable_libtool_lock @@ -862,6 +864,7 @@ LDFLAGS LIBS CPPFLAGS CPP +LT_SYS_LIBRARY_PATH SENDMAIL PERL PYTHON @@ -1421,7 +1424,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.0 to adapt to many kinds of systems. +\`configure' configures INN 2.6.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1486,7 +1489,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of INN 2.6.0:";; + short | recursive ) echo "Configuration of INN 2.6.1:";; esac cat <<\_ACEOF @@ -1513,9 +1516,12 @@ Optional Packages: --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] + --with-aix-soname=aix|svr4|both + shared library versioning (aka "SONAME") variant to + provide on AIX, [default=aix]. --with-gnu-ld assume the C compiler uses GNU ld [default=no] - --with-sysroot=DIR Search for dependent libraries within DIR - (or the compiler's sysroot if not specified). + --with-sysroot[=DIR] Search for dependent libraries within DIR (or the + compiler's sysroot if not specified). --with-control-dir=PATH Path for control programs [PREFIX/bin/control] --with-db-dir=PATH Path for news database files [PREFIX/db] --with-doc-dir=PATH Path for news documentation [PREFIX/doc] @@ -1564,6 +1570,8 @@ Some influential environment variables: CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor + LT_SYS_LIBRARY_PATH + User-defined run-time library search path. SENDMAIL Location of sendmail binary to use PERL Location of Perl interpreter PYTHON Location of Python interpreter @@ -1656,7 +1664,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -INN configure 2.6.0 +INN configure 2.6.1 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2495,7 +2503,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.0, which was +It was created by INN $as_me 2.6.1, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2989,11 +2997,10 @@ ac_configure="$SHELL $ac_aux_dir/configu + # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1996-2001, 2003-2015 Free Software Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives @@ -3002,7 +3009,7 @@ ac_configure="$SHELL $ac_aux_dir/configu -# serial 57 LT_INIT +# serial 58 LT_INIT # LT_PREREQ(VERSION) @@ -3062,16 +3069,23 @@ ac_configure="$SHELL $ac_aux_dir/configu +# _LT_PREPARE_CC_BASENAME +# ----------------------- +# _LT_PREPARE_CC_BASENAME + + # _LT_CC_BASENAME(CC) # ------------------- -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +# It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME, +# but that macro is also expanded into generated libtool script, which +# arranges for $SED and $ECHO to be set by different means. # _LT_FILEUTILS_DEFAULTS # ---------------------- # It is okay to use these file commands and assume they have been set -# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. +# sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'. # _LT_FILEUTILS_DEFAULTS @@ -3087,9 +3101,9 @@ ac_configure="$SHELL $ac_aux_dir/configu # _LT_PROG_LTMAIN # --------------- -# Note that this code is called both from `configure', and `config.status' +# Note that this code is called both from 'configure', and 'config.status' # now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, -# `config.status' has no value for ac_aux_dir unless we are using Automake, +# 'config.status' has no value for ac_aux_dir unless we are using Automake, # so we pass a copy along to make sure it has a sensible value anyway. # _LT_PROG_LTMAIN @@ -3100,7 +3114,7 @@ ac_configure="$SHELL $ac_aux_dir/configu # So that we can recreate a full libtool script including additional # tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS -# in macros and then make a single call at the end using the `libtool' +# in macros and then make a single call at the end using the 'libtool' # label. @@ -3188,8 +3202,8 @@ ac_configure="$SHELL $ac_aux_dir/configu # _LT_CONFIG_STATUS_DECLARE([VARNAME]) # ------------------------------------ -# Quote a variable value, and forward it to `config.status' so that its -# declaration there will have the same value as in `configure'. VARNAME +# Quote a variable value, and forward it to 'config.status' so that its +# declaration there will have the same value as in 'configure'. VARNAME # must have a single quote delimited value for this to work. @@ -3224,7 +3238,7 @@ ac_configure="$SHELL $ac_aux_dir/configu # _LT_LIBTOOL_CONFIG_VARS # ----------------------- # Produce commented declarations of non-tagged libtool config variables -# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' +# suitable for insertion in the LIBTOOL CONFIG section of the 'libtool' # script. Tagged libtool config variables (even for the LIBTOOL CONFIG # section) are produced by _LT_LIBTOOL_TAG_VARS. @@ -3245,8 +3259,8 @@ ac_configure="$SHELL $ac_aux_dir/configu # Send accumulated output to $CONFIG_STATUS. Thanks to the lists of # variables for single and double quote escaping we saved from calls # to _LT_DECL, we can put quote escaped variables declarations -# into `config.status', and then the shell code to quote escape them in -# for loops in `config.status'. Finally, any additional code accumulated +# into 'config.status', and then the shell code to quote escape them in +# for loops in 'config.status'. Finally, any additional code accumulated # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. #_LT_CONFIG_COMMANDS @@ -3259,7 +3273,7 @@ ac_configure="$SHELL $ac_aux_dir/configu # Generate a child script FILE with all initialization necessary to # reuse the environment learned by the parent script, and make the # file executable. If COMMENT is supplied, it is inserted after the -# `#!' sequence but before initialization text begins. After this +# '#!' sequence but before initialization text begins. After this # macro, additional text can be appended to FILE to form the body of # the child script. The macro ends with non-zero status if the # file could not be fully written (such as if the disk is full). @@ -3462,8 +3476,8 @@ ac_configure="$SHELL $ac_aux_dir/configu # ----------------------- # Find how we can fake an echo command that does not interpret backslash. # In particular, with Autoconf 2.60 or later we add some code to the start -# of the generated configure script which will find a shell with a builtin -# printf (which we can use as an echo command). +# of the generated configure script that will find a shell with a builtin +# printf (that we can use as an echo command). # _LT_PROG_ECHO_BACKSLASH @@ -3634,6 +3648,12 @@ ac_configure="$SHELL $ac_aux_dir/configu # _LT_CMD_STRIPLIB +# _LT_PREPARE_MUNGE_PATH_LIST +# --------------------------- +# Make sure func_munge_path_list() is defined correctly. +# _LT_PREPARE_PATH_LIST + + # _LT_SYS_DYNAMIC_LINKER([TAG]) # ----------------------------- # PORTME Fill in your ld.so characteristics @@ -3642,7 +3662,7 @@ ac_configure="$SHELL $ac_aux_dir/configu # _LT_PATH_TOOL_PREFIX(TOOL) # -------------------------- -# find a file program which can recognize shared library +# find a file program that can recognize shared library # _LT_PATH_TOOL_PREFIX # Old name: @@ -3669,7 +3689,7 @@ ac_configure="$SHELL $ac_aux_dir/configu # _LT_PATH_MAGIC # -------------- -# find a file program which can recognize a shared library +# find a file program that can recognize a shared library # _LT_PATH_MAGIC @@ -3731,6 +3751,18 @@ ac_configure="$SHELL $ac_aux_dir/configu # _LT_CMD_RELOAD +# _LT_PATH_DD +# ----------- +# find a working dd +# _LT_PATH_DD + + +# _LT_CMD_TRUNCATE +# ---------------- +# find command to truncate a binary pipe +# _LT_CMD_TRUNCATE + + # _LT_CHECK_MAGIC_METHOD # ---------------------- # how to check for library dependencies @@ -3797,6 +3829,13 @@ ac_configure="$SHELL $ac_aux_dir/configu # _LT_PATH_MANIFEST_TOOL +# _LT_DLL_DEF_P([FILE]) +# --------------------- +# True iff FILE is a Windows DLL '.def' file. +# Keep in sync with func_dll_def_p in the libtool script +# _LT_DLL_DEF_P + + # LT_LIB_M # -------- # check for math library @@ -3849,7 +3888,7 @@ ac_configure="$SHELL $ac_aux_dir/configu # ------------------------ # Ensure that the configuration variables for a C compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to `libtool'. +# the compiler configuration to 'libtool'. # _LT_LANG_C_CONFIG @@ -3857,7 +3896,7 @@ ac_configure="$SHELL $ac_aux_dir/configu # -------------------------- # Ensure that the configuration variables for a C++ compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to `libtool'. +# the compiler configuration to 'libtool'. # _LT_LANG_CXX_CONFIG @@ -3874,6 +3913,7 @@ ac_configure="$SHELL $ac_aux_dir/configu # rather than the libtool script. # _LT_FUNC_STRIPNAME_CNF + # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) # --------------------------------- # Figure out "hidden" library dependencies from verbose @@ -3887,7 +3927,7 @@ ac_configure="$SHELL $ac_aux_dir/configu # -------------------------- # Ensure that the configuration variables for a Fortran 77 compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. +# to write the compiler configuration to 'libtool'. # _LT_LANG_F77_CONFIG @@ -3895,7 +3935,7 @@ ac_configure="$SHELL $ac_aux_dir/configu # ------------------------- # Ensure that the configuration variables for a Fortran compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. +# to write the compiler configuration to 'libtool'. # _LT_LANG_FC_CONFIG @@ -3903,7 +3943,7 @@ ac_configure="$SHELL $ac_aux_dir/configu # -------------------------- # Ensure that the configuration variables for the GNU Java Compiler compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. +# to write the compiler configuration to 'libtool'. # _LT_LANG_GCJ_CONFIG @@ -3911,7 +3951,7 @@ ac_configure="$SHELL $ac_aux_dir/configu # -------------------------- # Ensure that the configuration variables for the GNU Go compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. +# to write the compiler configuration to 'libtool'. # _LT_LANG_GO_CONFIG @@ -3919,7 +3959,7 @@ ac_configure="$SHELL $ac_aux_dir/configu # ------------------------- # Ensure that the configuration variables for the Windows resource compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. +# to write the compiler configuration to 'libtool'. # _LT_LANG_RC_CONFIG @@ -4035,29 +4075,17 @@ ac_configure="$SHELL $ac_aux_dir/configu # _LT_CHECK_SHELL_FEATURES -# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) -# ------------------------------------------------------ -# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and -# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. - - - -# _LT_PROG_REPLACE_SHELLFNS -# ------------------------- -# Replace existing portable implementations of several shell functions with -# equivalent extended shell implementations where those features are available.. - - # _LT_PATH_CONVERSION_FUNCTIONS # ----------------------------- -# Determine which file name conversion functions should be used by +# Determine what file name conversion functions should be used by # func_to_host_file (and, implicitly, by func_to_host_path). These are needed # for certain cross-compile configurations and native mingw. # _LT_PATH_CONVERSION_FUNCTIONS # lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # -# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. +# Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software +# Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives @@ -4068,7 +4096,7 @@ ac_configure="$SHELL $ac_aux_dir/configu # These exist entirely to fool aclocal when bootstrapping libtool. # -# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) +# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN), # which have later been changed to m4_define as they aren't part of the # exported API, or moved to Autoconf or Automake where they belong. # @@ -4156,15 +4184,15 @@ ac_configure="$SHELL $ac_aux_dir/configu # Helper functions for option handling. -*- Autoconf -*- # -# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, -# Inc. +# Copyright (C) 2004-2005, 2007-2009, 2011-2015 Free Software +# Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. -# serial 7 ltoptions.m4 +# serial 8 ltoptions.m4 # This is to help aclocal find these macros, as it can't see m4_define. @@ -4274,9 +4302,9 @@ ac_configure="$SHELL $ac_aux_dir/configu # _LT_ENABLE_SHARED([DEFAULT]) # ---------------------------- -# implement the --enable-shared flag, and supports the `shared' and -# `disable-shared' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +# implement the --enable-shared flag, and supports the 'shared' and +# 'disable-shared' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. # _LT_ENABLE_SHARED @@ -4331,9 +4359,9 @@ ac_configure="$SHELL $ac_aux_dir/configu # _LT_ENABLE_STATIC([DEFAULT]) # ---------------------------- -# implement the --enable-static flag, and support the `static' and -# `disable-static' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +# implement the --enable-static flag, and support the 'static' and +# 'disable-static' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. # _LT_ENABLE_STATIC @@ -4388,9 +4416,9 @@ ac_configure="$SHELL $ac_aux_dir/configu # _LT_ENABLE_FAST_INSTALL([DEFAULT]) # ---------------------------------- -# implement the --enable-fast-install flag, and support the `fast-install' -# and `disable-fast-install' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +# implement the --enable-fast-install flag, and support the 'fast-install' +# and 'disable-fast-install' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. # _LT_ENABLE_FAST_INSTALL @@ -4439,11 +4467,23 @@ ac_configure="$SHELL $ac_aux_dir/configu +# _LT_WITH_AIX_SONAME([DEFAULT]) +# ---------------------------------- +# implement the --with-aix-soname flag, and support the `aix-soname=aix' +# and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT +# is either `aix', `both' or `svr4'. If omitted, it defaults to `aix'. +# _LT_WITH_AIX_SONAME + + + + + + # _LT_WITH_PIC([MODE]) # -------------------- -# implement the --with-pic flag, and support the `pic-only' and `no-pic' +# implement the --with-pic flag, and support the 'pic-only' and 'no-pic' # LT_INIT options. -# MODE is either `yes' or `no'. If omitted, it defaults to `both'. +# MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'. # _LT_WITH_PIC @@ -4486,7 +4526,8 @@ ac_configure="$SHELL $ac_aux_dir/configu # ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # -# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. +# Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software +# Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives @@ -4514,7 +4555,7 @@ ac_configure="$SHELL $ac_aux_dir/configu # ------------ # Manipulate m4 lists. # These macros are necessary as long as will still need to support -# Autoconf-2.59 which quotes differently. +# Autoconf-2.59, which quotes differently. @@ -4522,7 +4563,7 @@ ac_configure="$SHELL $ac_aux_dir/configu # lt_append(MACRO-NAME, STRING, [SEPARATOR]) # ------------------------------------------ -# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. +# Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'. # Note that neither SEPARATOR nor STRING are expanded; they are appended # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). # No SEPARATOR is output if MACRO-NAME was previously undefined (different @@ -4576,7 +4617,7 @@ ac_configure="$SHELL $ac_aux_dir/configu # ltversion.m4 -- version numbers -*- Autoconf -*- # -# Copyright (C) 2004 Free Software Foundation, Inc. +# Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004 # # This file is free software; the Free Software Foundation gives @@ -4585,7 +4626,7 @@ ac_configure="$SHELL $ac_aux_dir/configu # @configure_input@ -# serial 3337 ltversion.m4 +# serial 4179 ltversion.m4 # This file is part of GNU Libtool @@ -6165,8 +6206,8 @@ esac -macro_version='2.4.2' -macro_revision='1.3337' +macro_version='2.4.6' +macro_revision='2.4.6' @@ -6180,7 +6221,7 @@ macro_revision='1.3337' -ltmain="$ac_aux_dir/ltmain.sh" +ltmain=$ac_aux_dir/ltmain.sh # Backslashify metacharacters that are still active within # double-quoted strings. @@ -6229,7 +6270,7 @@ func_echo_all () $ECHO "" } -case "$ECHO" in +case $ECHO in printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 $as_echo "printf" >&6; } ;; print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 @@ -6422,19 +6463,19 @@ test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes + withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld -if test "$GCC" = yes; then +if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw + # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; @@ -6448,7 +6489,7 @@ $as_echo_n "checking for ld used by $CC. while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done - test -z "$LD" && LD="$ac_prog" + test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. @@ -6459,7 +6500,7 @@ $as_echo_n "checking for ld used by $CC. with_gnu_ld=unknown ;; esac -elif test "$with_gnu_ld" = yes; then +elif test yes = "$with_gnu_ld"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else @@ -6470,32 +6511,32 @@ if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" + lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } @@ -6538,33 +6579,38 @@ if ${lt_cv_path_NM+:} false; then : else if test -n "$NM"; then # Let the user override the test. - lt_cv_path_NM="$NM" + lt_cv_path_NM=$NM else - lt_nm_to_check="${ac_tool_prefix}nm" + lt_nm_to_check=${ac_tool_prefix}nm if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/$lt_tmp_nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + tmp_nm=$ac_dir/$lt_tmp_nm + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # Adding the 'sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) + # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty + case $build_os in + mingw*) lt_bad_file=conftest.nm/nofile ;; + *) lt_bad_file=/dev/null ;; + esac + case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in + *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" - break + break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" - break + break 2 ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but @@ -6575,15 +6621,15 @@ else esac fi done - IFS="$lt_save_ifs" + IFS=$lt_save_ifs done : ${lt_cv_path_NM=no} fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 $as_echo "$lt_cv_path_NM" >&6; } -if test "$lt_cv_path_NM" != "no"; then - NM="$lt_cv_path_NM" +if test no != "$lt_cv_path_NM"; then + NM=$lt_cv_path_NM else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : @@ -6689,9 +6735,9 @@ esac fi fi - case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in + case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in *COFF*) - DUMPBIN="$DUMPBIN -symbols" + DUMPBIN="$DUMPBIN -symbols -headers" ;; *) DUMPBIN=: @@ -6699,8 +6745,8 @@ fi esac fi - if test "$DUMPBIN" != ":"; then - NM="$DUMPBIN" + if test : != "$DUMPBIN"; then + NM=$DUMPBIN fi fi test -z "$NM" && NM=nm @@ -6751,7 +6797,7 @@ if ${lt_cv_sys_max_cmd_len+:} false; the $as_echo_n "(cached) " >&6 else i=0 - teststring="ABCD" + teststring=ABCD case $build_os in msdosdjgpp*) @@ -6791,7 +6837,7 @@ else lt_cv_sys_max_cmd_len=8192; ;; - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` @@ -6842,22 +6888,22 @@ else *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ - test undefined != "$lt_cv_sys_max_cmd_len"; then + test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8 ; do + for i in 1 2 3 4 5 6 7 8; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. - while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ + while { test X`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && - test $i != 17 # 1/2 MB should be enough + test 17 != "$i" # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring @@ -6875,7 +6921,7 @@ else fi -if test -n $lt_cv_sys_max_cmd_len ; then +if test -n "$lt_cv_sys_max_cmd_len"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 $as_echo "$lt_cv_sys_max_cmd_len" >&6; } else @@ -6893,30 +6939,6 @@ max_cmd_len=$lt_cv_sys_max_cmd_len : ${MV="mv -f"} : ${RM="rm -f"} -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 -$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } -# Try some XSI features -xsi_shell=no -( _lt_dummy="a/b/c" - test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,b/c, \ - && eval 'test $(( 1 + 1 )) -eq 2 \ - && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ - && xsi_shell=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 -$as_echo "$xsi_shell" >&6; } - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 -$as_echo_n "checking whether the shell understands \"+=\"... " >&6; } -lt_shell_append=no -( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ - >/dev/null 2>&1 \ - && lt_shell_append=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 -$as_echo "$lt_shell_append" >&6; } - - if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else @@ -7039,13 +7061,13 @@ esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in cygwin* | mingw* | pw32* | cegcc*) - if test "$GCC" != yes; then + if test yes != "$GCC"; then reload_cmds=false fi ;; darwin*) - if test "$GCC" = yes; then - reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' + if test yes = "$GCC"; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi @@ -7173,13 +7195,13 @@ lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. -# `unknown' -- same as none, but documents that we really don't know. +# 'unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path -# which responds to the $file_magic_cmd with a given extended regex. -# If you have `file' or equivalent on your system and you're not sure -# whether `pass_all' will *always* work, you probably want this one. +# that responds to the $file_magic_cmd with a given extended regex. +# If you have 'file' or equivalent on your system and you're not sure +# whether 'pass_all' will *always* work, you probably want this one. case $host_os in aix[4-9]*) @@ -7206,8 +7228,7 @@ mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. - # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. - if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then + if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else @@ -7303,8 +7324,8 @@ newos6*) lt_cv_deplibs_check_method=pass_all ;; -openbsd*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +openbsd* | bitrig*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' @@ -7357,6 +7378,9 @@ sysv4 | sysv4.3*) tpf*) lt_cv_deplibs_check_method=pass_all ;; +os2*) + lt_cv_deplibs_check_method=pass_all + ;; esac fi @@ -7514,8 +7538,8 @@ else case $host_os in cygwin* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh - # decide which to use based on capabilities of $DLLTOOL + # two different shell functions defined in ltmain.sh; + # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib @@ -7527,7 +7551,7 @@ cygwin* | mingw* | pw32* | cegcc*) ;; *) # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd="$ECHO" + lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac @@ -7681,7 +7705,7 @@ if ac_fn_c_try_compile "$LINENO"; then : ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } - if test "$ac_status" -eq 0; then + if test 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 @@ -7689,7 +7713,7 @@ if ac_fn_c_try_compile "$LINENO"; then : ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } - if test "$ac_status" -ne 0; then + if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ fi fi @@ -7702,7 +7726,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 $as_echo "$lt_cv_ar_at_file" >&6; } -if test "x$lt_cv_ar_at_file" = xno; then +if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file @@ -7919,7 +7943,7 @@ old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in - openbsd*) + bitrig* | openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) @@ -8051,7 +8075,7 @@ cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then symcode='[ABCDEGRST]' fi ;; @@ -8084,14 +8108,44 @@ case `$NM -V 2>&1` in symcode='[ABCDGIRSTW]' ;; esac +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Gets list of data symbols to import. + lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" + # Adjust the below global symbol transforms to fixup imported variables. + lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" + lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" + lt_c_name_lib_hook="\ + -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ + -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" +else + # Disable hooks by default. + lt_cv_sys_global_symbol_to_import= + lt_cdecl_hook= + lt_c_name_hook= + lt_c_name_lib_hook= +fi + # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" +lt_cv_sys_global_symbol_to_cdecl="sed -n"\ +$lt_cdecl_hook\ +" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ +$lt_c_name_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" + +# Transform an extracted symbol line into symbol name with lib prefix and +# symbol address. +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ +$lt_c_name_lib_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" # Handle CRLF in mingw tool chain opt_cr= @@ -8109,21 +8163,24 @@ for ac_symprfx in "" "_"; do # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function - # and D for any global variable. + # Fake it for dumpbin and say T for any non-static function, + # D for any global variable and I for any imported variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ +" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ +" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ -" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ -" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ -" s[1]~/^[@?]/{print s[1], s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ +" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ +" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ +" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" @@ -8171,11 +8228,11 @@ _LT_EOF if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -/* DATA imports from DLLs on WIN32 con't be const, because runtime +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST -#elif defined(__osf__) +#elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else @@ -8201,7 +8258,7 @@ lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; @@ -8221,13 +8278,13 @@ _LT_EOF mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS - LIBS="conftstm.$ac_objext" + LIBS=conftstm.$ac_objext CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext}; then + test $ac_status = 0; } && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS @@ -8248,7 +8305,7 @@ _LT_EOF rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then + if test yes = "$pipe_works"; then break else lt_cv_sys_global_symbol_pipe= @@ -8301,6 +8358,16 @@ fi + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 $as_echo_n "checking for sysroot... " >&6; } @@ -8313,9 +8380,9 @@ fi lt_sysroot= -case ${with_sysroot} in #( +case $with_sysroot in #( yes) - if test "$GCC" = yes; then + if test yes = "$GCC"; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( @@ -8325,8 +8392,8 @@ case ${with_sysroot} in #( no|'') ;; #( *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5 -$as_echo "${with_sysroot}" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 +$as_echo "$with_sysroot" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac @@ -8338,18 +8405,99 @@ $as_echo "${lt_sysroot:-no}" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 +$as_echo_n "checking for a working dd... " >&6; } +if ${ac_cv_path_lt_DD+:} false; then : + $as_echo_n "(cached) " >&6 +else + printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +: ${lt_DD:=$DD} +if test -z "$lt_DD"; then + ac_path_lt_DD_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + 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_prog in dd; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_lt_DD" || continue +if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: +fi + $ac_path_lt_DD_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_lt_DD"; then + : + fi +else + ac_cv_path_lt_DD=$lt_DD +fi + +rm -f conftest.i conftest2.i conftest.out +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 +$as_echo "$ac_cv_path_lt_DD" >&6; } + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 +$as_echo_n "checking how to truncate binary pipes... " >&6; } +if ${lt_cv_truncate_bin+:} false; then : + $as_echo_n "(cached) " >&6 +else + printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +lt_cv_truncate_bin= +if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" +fi +rm -f conftest.i conftest2.i conftest.out +test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 +$as_echo "$lt_cv_truncate_bin" >&6; } + + + + + + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in $*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then : enableval=$enable_libtool_lock; fi -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes +test no = "$enable_libtool_lock" || enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) - # Find out which ABI we are using. + # Find out what ABI is being produced by ac_compile, and set mode + # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 @@ -8358,24 +8506,25 @@ ia64-*-hpux*) test $ac_status = 0; }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) - HPUX_IA64_MODE="32" + HPUX_IA64_MODE=32 ;; *ELF-64*) - HPUX_IA64_MODE="64" + HPUX_IA64_MODE=64 ;; esac fi rm -rf conftest* ;; *-*-irix6*) - # Find out which ABI we are using. + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - if test "$lt_cv_prog_gnu_ld" = yes; then + if test yes = "$lt_cv_prog_gnu_ld"; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" @@ -8404,9 +8553,50 @@ ia64-*-hpux*) rm -rf conftest* ;; +mips64*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + emul=elf + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + emul="${emul}32" + ;; + *64-bit*) + emul="${emul}64" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *MSB*) + emul="${emul}btsmip" + ;; + *LSB*) + emul="${emul}ltsmip" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *N32*) + emul="${emul}n32" + ;; + esac + LD="${LD-ld} -m $emul" + fi + rm -rf conftest* + ;; + x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out which ABI we are using. + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. Note that the listed cases only cover the + # situations where additional linker options are needed (such as when + # doing 32-bit compilation for a host where ld defaults to 64-bit, or + # vice versa); the common cases where no linker options are needed do + # not appear in the list. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 @@ -8429,10 +8619,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux* ;; esac ;; - powerpc64le-*) + powerpc64le-*linux*) LD="${LD-ld} -m elf32lppclinux" ;; - powerpc64-*) + powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) @@ -8451,10 +8641,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux* x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; - powerpcle-*) + powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; - powerpc-*) + powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) @@ -8472,7 +8662,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux* *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" + SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -belf" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 $as_echo_n "checking whether the C compiler needs -belf... " >&6; } @@ -8512,13 +8702,14 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 $as_echo "$lt_cv_cc_needs_belf" >&6; } - if test x"$lt_cv_cc_needs_belf" != x"yes"; then + if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" + CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) - # Find out which ABI we are using. + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 @@ -8530,7 +8721,7 @@ $as_echo "$lt_cv_cc_needs_belf" >&6; } case $lt_cv_prog_gnu_ld in yes*) case $host in - i?86-*-solaris*) + i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) @@ -8539,7 +8730,7 @@ $as_echo "$lt_cv_cc_needs_belf" >&6; } esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then - LD="${LD-ld}_sol2" + LD=${LD-ld}_sol2 fi ;; *) @@ -8555,7 +8746,7 @@ $as_echo "$lt_cv_cc_needs_belf" >&6; } ;; esac -need_locks="$enable_libtool_lock" +need_locks=$enable_libtool_lock if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. @@ -8666,7 +8857,7 @@ else fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 $as_echo "$lt_cv_path_mainfest_tool" >&6; } -if test "x$lt_cv_path_mainfest_tool" != xyes; then +if test yes != "$lt_cv_path_mainfest_tool"; then MANIFEST_TOOL=: fi @@ -9169,7 +9360,7 @@ if ${lt_cv_apple_cc_single_mod+:} false; $as_echo_n "(cached) " >&6 else lt_cv_apple_cc_single_mod=no - if test -z "${LT_MULTI_MODULE}"; then + if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the @@ -9187,7 +9378,7 @@ else cat conftest.err >&5 # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. - elif test -f libconftest.dylib && test $_lt_result -eq 0; then + elif test -f libconftest.dylib && test 0 = "$_lt_result"; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 @@ -9226,7 +9417,7 @@ else fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" + LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 @@ -9255,7 +9446,7 @@ _LT_EOF _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&5 - elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then + elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then lt_cv_ld_force_load=yes else cat conftest.err >&5 @@ -9268,32 +9459,32 @@ fi $as_echo "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) - _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # 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]*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - 10.[012]*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + 10.[012][,.]*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; 10.*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; esac ;; esac - if test "$lt_cv_apple_cc_single_mod" = "yes"; then + if test yes = "$lt_cv_apple_cc_single_mod"; then _lt_dar_single_mod='$single_module' fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; then - _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + if test yes = "$lt_cv_ld_exported_symbols_list"; then + _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' fi - if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then + if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= @@ -9301,6 +9492,41 @@ $as_echo "$lt_cv_ld_force_load" >&6; } ;; esac +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x$2 in + x) + ;; + *:) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" + ;; + x:*) + eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" + ;; + *) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" + ;; + esac +} + for ac_header in dlfcn.h do : ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default @@ -9337,14 +9563,14 @@ if test "${enable_shared+set}" = set; th *) enable_shared=no # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_shared=yes fi done - IFS="$lt_save_ifs" + IFS=$lt_save_ifs ;; esac else @@ -9368,14 +9594,14 @@ if test "${enable_static+set}" = set; th *) enable_static=no # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_static=yes fi done - IFS="$lt_save_ifs" + IFS=$lt_save_ifs ;; esac else @@ -9399,14 +9625,14 @@ if test "${with_pic+set}" = set; then : *) pic_mode=default # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $withval; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done - IFS="$lt_save_ifs" + IFS=$lt_save_ifs ;; esac else @@ -9414,8 +9640,6 @@ else fi -test -z "$pic_mode" && pic_mode=default - @@ -9431,14 +9655,14 @@ if test "${enable_fast_install+set}" = s *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done - IFS="$lt_save_ifs" + IFS=$lt_save_ifs ;; esac else @@ -9452,11 +9676,63 @@ fi + shared_archive_member_spec= +case $host,$enable_shared in +power*-*-aix[5-9]*,yes) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 +$as_echo_n "checking which variant of shared library versioning to provide... " >&6; } + +# Check whether --with-aix-soname was given. +if test "${with_aix_soname+set}" = set; then : + withval=$with_aix_soname; case $withval in + aix|svr4|both) + ;; + *) + as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 + ;; + esac + lt_cv_with_aix_soname=$with_aix_soname +else + if ${lt_cv_with_aix_soname+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_with_aix_soname=aix +fi + + with_aix_soname=$lt_cv_with_aix_soname +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 +$as_echo "$with_aix_soname" >&6; } + if test aix != "$with_aix_soname"; then + # For the AIX way of multilib, we name the shared archive member + # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', + # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. + # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, + # the AIX toolchain works better with OBJECT_MODE set (default 32). + if test 64 = "${OBJECT_MODE-32}"; then + shared_archive_member_spec=shr_64 + else + shared_archive_member_spec=shr + fi + fi + ;; +*) + with_aix_soname=aix + ;; +esac + + + + + + + # This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ltmain" +LIBTOOL_DEPS=$ltmain # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' @@ -9505,7 +9781,7 @@ test -z "$LN_S" && LN_S="ln -s" -if test -n "${ZSH_VERSION+set}" ; then +if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi @@ -9544,7 +9820,7 @@ aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then + if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi @@ -9555,14 +9831,14 @@ esac ofile=libtool can_build_shared=yes -# All known linkers require a `.a' archive for static linking (except MSVC, +# All known linkers require a '.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a -with_gnu_ld="$lt_cv_prog_gnu_ld" +with_gnu_ld=$lt_cv_prog_gnu_ld -old_CC="$CC" -old_CFLAGS="$CFLAGS" +old_CC=$CC +old_CFLAGS=$CFLAGS # Set sane defaults for various variables test -z "$CC" && CC=cc @@ -9571,15 +9847,8 @@ test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o -for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +func_cc_basename $compiler +cc_basename=$func_cc_basename_result # Only perform the check for file, if the check method requires it @@ -9594,22 +9863,22 @@ if ${lt_cv_path_MAGIC_CMD+:} false; then else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/${ac_tool_prefix}file; then - lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" + if test -f "$ac_dir/${ac_tool_prefix}file"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : @@ -9632,13 +9901,13 @@ _LT_EOF break fi done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac fi -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } @@ -9660,22 +9929,22 @@ if ${lt_cv_path_MAGIC_CMD+:} false; then else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/file; then - lt_cv_path_MAGIC_CMD="$ac_dir/file" + if test -f "$ac_dir/file"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : @@ -9698,13 +9967,13 @@ _LT_EOF break fi done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac fi -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } @@ -9725,7 +9994,7 @@ esac # Use C for the default configuration in the libtool script -lt_save_CC="$CC" +lt_save_CC=$CC ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -9787,7 +10056,7 @@ if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= -if test "$GCC" = yes; then +if test yes = "$GCC"; then case $cc_basename in nvcc*) lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; @@ -9803,7 +10072,7 @@ else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="-fno-rtti -fno-exceptions" + lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins @@ -9833,7 +10102,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } -if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then +if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : @@ -9851,17 +10120,18 @@ lt_prog_compiler_pic= lt_prog_compiler_static= - if test "$GCC" = yes; then + if test yes = "$GCC"; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi + lt_prog_compiler_pic='-fPIC' ;; amigaos*) @@ -9872,8 +10142,8 @@ lt_prog_compiler_static= ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac @@ -9889,6 +10159,11 @@ lt_prog_compiler_static= # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac ;; darwin* | rhapsody*) @@ -9959,7 +10234,7 @@ lt_prog_compiler_static= case $host_os in aix*) lt_prog_compiler_wl='-Wl,' - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else @@ -9967,10 +10242,29 @@ lt_prog_compiler_static= fi ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + case $cc_basename in + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac ;; hpux9* | hpux10* | hpux11*) @@ -9986,7 +10280,7 @@ lt_prog_compiler_static= ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? - lt_prog_compiler_static='${wl}-a ${wl}archive' + lt_prog_compiler_static='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) @@ -9997,7 +10291,7 @@ lt_prog_compiler_static= linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in - # old Intel for x86_64 which still supported -KPIC. + # old Intel for x86_64, which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' @@ -10022,6 +10316,12 @@ lt_prog_compiler_static= lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) @@ -10119,7 +10419,7 @@ lt_prog_compiler_static= ;; sysv4*MP*) - if test -d /usr/nec ;then + if test -d /usr/nec; then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi @@ -10148,7 +10448,7 @@ lt_prog_compiler_static= fi case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: + # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; @@ -10180,7 +10480,7 @@ else lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic -DPIC" + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins @@ -10210,7 +10510,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; } -if test x"$lt_cv_prog_compiler_pic_works" = xyes; then +if test yes = "$lt_cv_prog_compiler_pic_works"; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; @@ -10242,7 +10542,7 @@ if ${lt_cv_prog_compiler_static_works+:} $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works=no - save_LDFLAGS="$LDFLAGS" + save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then @@ -10261,13 +10561,13 @@ else fi fi $RM -r conftest* - LDFLAGS="$save_LDFLAGS" + LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 $as_echo "$lt_cv_prog_compiler_static_works" >&6; } -if test x"$lt_cv_prog_compiler_static_works" = xyes; then +if test yes = "$lt_cv_prog_compiler_static_works"; then : else lt_prog_compiler_static= @@ -10387,8 +10687,8 @@ $as_echo "$lt_cv_prog_compiler_c_o" >&6; -hard_links="nottested" -if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then +hard_links=nottested +if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } @@ -10400,9 +10700,9 @@ $as_echo_n "checking if we can lock with ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } - if test "$hard_links" = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + if test no = "$hard_links"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} need_locks=warn fi else @@ -10445,9 +10745,9 @@ $as_echo_n "checking whether the $compil # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. + # it will be wrapped by ' (' and ')$', so one must not match beginning or + # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', + # as well as any symbol that contains 'd'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if @@ -10462,7 +10762,7 @@ $as_echo_n "checking whether the $compil # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. - if test "$GCC" != yes; then + if test yes != "$GCC"; then with_gnu_ld=no fi ;; @@ -10470,7 +10770,7 @@ $as_echo_n "checking whether the $compil # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; - openbsd*) + openbsd* | bitrig*) with_gnu_ld=no ;; linux* | k*bsd*-gnu | gnu*) @@ -10483,7 +10783,7 @@ $as_echo_n "checking whether the $compil # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no - if test "$with_gnu_ld" = yes; then + if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility @@ -10505,24 +10805,24 @@ $as_echo_n "checking whether the $compil esac fi - if test "$lt_use_gnu_ld_interface" = yes; then + if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' + wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - export_dynamic_flag_spec='${wl}--export-dynamic' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + export_dynamic_flag_spec='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no - case `$LD -v 2>&1` in + case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... @@ -10535,7 +10835,7 @@ $as_echo_n "checking whether the $compil case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then + if test ia64 != "$host_cpu"; then ld_shlibs=no cat <<_LT_EOF 1>&2 @@ -10554,7 +10854,7 @@ _LT_EOF case $host_cpu in powerpc) # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) @@ -10570,7 +10870,7 @@ _LT_EOF allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME - archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else ld_shlibs=no fi @@ -10580,7 +10880,7 @@ _LT_EOF # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' - export_dynamic_flag_spec='${wl}--export-all-symbols' + export_dynamic_flag_spec='$wl--export-all-symbols' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes @@ -10588,61 +10888,89 @@ _LT_EOF exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; haiku*) - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' link_all_deplibs=yes ;; + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + shrext_cmds=.dll + archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes=yes + ;; + interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - export_dynamic_flag_spec='${wl}-E' + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + export_dynamic_flag_spec='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no - if test "$host_os" = linux-dietlibc; then + if test linux-dietlibc = "$host_os"; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test "$tmp_diet" = no + && test no = "$tmp_diet" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; @@ -10653,42 +10981,47 @@ _LT_EOF lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; + nagfor*) # NAGFOR 5.3 + tmp_sharedflag='-Wl,-shared' ;; xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 - whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac - archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then + if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in + tcc*) + export_dynamic_flag_spec='-rdynamic' + ;; xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then + if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac @@ -10702,8 +11035,8 @@ _LT_EOF archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; @@ -10721,8 +11054,8 @@ _LT_EOF _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi @@ -10734,7 +11067,7 @@ _LT_EOF ld_shlibs=no cat <<_LT_EOF 1>&2 -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify @@ -10749,9 +11082,9 @@ _LT_EOF # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi @@ -10768,15 +11101,15 @@ _LT_EOF *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac - if test "$ld_shlibs" = no; then + if test no = "$ld_shlibs"; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= @@ -10792,7 +11125,7 @@ _LT_EOF # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes - if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported @@ -10800,34 +11133,57 @@ _LT_EOF ;; aix[4-9]*) - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' - no_entry_flag="" + no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global - # defined symbols, whereas GNU nm marks them as "W". + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else - export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then aix_use_runtimelinking=yes break fi done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi ;; esac @@ -10846,13 +11202,21 @@ _LT_EOF hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes - file_list_spec='${wl}-f,' + file_list_spec='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # traditional, no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + hardcode_direct=no + hardcode_direct_absolute=no + ;; + esac - if test "$GCC" = yes; then + if test yes = "$GCC"; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` + collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then @@ -10871,36 +11235,42 @@ _LT_EOF ;; esac shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' + if test yes = "$aix_use_runtimelinking"; then + shared_flag="$shared_flag "'$wl-G' fi - link_all_deplibs=no + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' else # not using gcc - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' else - shared_flag='${wl}-bM:SRE' + shared_flag='$wl-bM:SRE' fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' fi fi - export_dynamic_flag_spec='${wl}-bexpall' + export_dynamic_flag_spec='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes - if test "$aix_use_runtimelinking" = yes; then + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. - if test "${lt_cv_aix_libpath+set}" = set; then + if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : @@ -10935,7 +11305,7 @@ fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_="/usr/lib:/lib" + lt_cv_aix_libpath_=/usr/lib:/lib fi fi @@ -10943,17 +11313,17 @@ fi aix_libpath=$lt_cv_aix_libpath_ fi - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else - if test "$host_cpu" = ia64; then - hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + if test ia64 = "$host_cpu"; then + hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. - if test "${lt_cv_aix_libpath+set}" = set; then + if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : @@ -10988,7 +11358,7 @@ fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_="/usr/lib:/lib" + lt_cv_aix_libpath_=/usr/lib:/lib fi fi @@ -10996,21 +11366,33 @@ fi aix_libpath=$lt_cv_aix_libpath_ fi - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. - no_undefined_flag=' ${wl}-bernotok' - allow_undefined_flag=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then + no_undefined_flag=' $wl-bernotok' + allow_undefined_flag=' $wl-berok' + if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. - whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' fi archive_cmds_need_lc=yes - # This is similar to how AIX traditionally builds its shared libraries. - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' fi fi ;; @@ -11019,7 +11401,7 @@ fi case $host_cpu in powerpc) # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) @@ -11049,16 +11431,17 @@ fi # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" + shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' + archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, )='true' enable_shared_with_static_runtimes=yes @@ -11067,18 +11450,18 @@ fi # Don't use ranlib old_postinstall_cmds='chmod 644 $oldlib' postlink_cmds='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' ;; *) # Assume MSVC wrapper @@ -11087,7 +11470,7 @@ fi # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" + shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. @@ -11106,24 +11489,24 @@ fi hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported - if test "$lt_cv_ld_force_load" = "yes"; then - whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + if test yes = "$lt_cv_ld_force_load"; then + whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec='' fi link_all_deplibs=yes - allow_undefined_flag="$_lt_dar_allow_undefined" + allow_undefined_flag=$_lt_dar_allow_undefined case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; + ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac - if test "$_lt_dar_can_shared" = "yes"; then + if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all - archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" + archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" else ld_shlibs=no @@ -11165,33 +11548,33 @@ fi ;; hpux9*) - if test "$GCC" = yes; then - archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + if test yes = "$GCC"; then + archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else - archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' fi - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes - export_dynamic_flag_spec='${wl}-E' + export_dynamic_flag_spec='$wl-E' ;; hpux10*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + if test yes,no = "$GCC,$with_gnu_ld"; then + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi - if test "$with_gnu_ld" = no; then - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes - export_dynamic_flag_spec='${wl}-E' + export_dynamic_flag_spec='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes @@ -11199,25 +11582,25 @@ fi ;; hpux11*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then + if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) - archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) - archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) - archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) - archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) - archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) @@ -11229,7 +11612,7 @@ if ${lt_cv_prog_compiler__b+:} false; th $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler__b=no - save_LDFLAGS="$LDFLAGS" + save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -b" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then @@ -11248,14 +11631,14 @@ else fi fi $RM -r conftest* - LDFLAGS="$save_LDFLAGS" + LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 $as_echo "$lt_cv_prog_compiler__b" >&6; } -if test x"$lt_cv_prog_compiler__b" = xyes; then - archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +if test yes = "$lt_cv_prog_compiler__b"; then + archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi @@ -11263,8 +11646,8 @@ fi ;; esac fi - if test "$with_gnu_ld" = no; then - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: case $host_cpu in @@ -11275,7 +11658,7 @@ fi *) hardcode_direct=yes hardcode_direct_absolute=yes - export_dynamic_flag_spec='${wl}-E' + export_dynamic_flag_spec='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. @@ -11286,8 +11669,8 @@ fi ;; irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + if test yes = "$GCC"; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. @@ -11297,8 +11680,8 @@ $as_echo_n "checking whether the $host_o if ${lt_cv_irix_exported_symbol+:} false; then : $as_echo_n "(cached) " >&6 else - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (void) { return 0; } @@ -11310,24 +11693,35 @@ else fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" + LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 $as_echo "$lt_cv_irix_exported_symbol" >&6; } - if test "$lt_cv_irix_exported_symbol" = yes; then - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + if test yes = "$lt_cv_irix_exported_symbol"; then + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi + link_all_deplibs=no else - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; + linux*) + case $cc_basename in + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + ld_shlibs=yes + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out @@ -11342,7 +11736,7 @@ $as_echo "$lt_cv_irix_exported_symbol" > newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; @@ -11350,27 +11744,19 @@ $as_echo "$lt_cv_irix_exported_symbol" > *nto* | *qnx*) ;; - openbsd*) + openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - export_dynamic_flag_spec='${wl}-E' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + export_dynamic_flag_spec='$wl-E' else - case $host_os in - openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-R$libdir' - ;; - *) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - ;; - esac + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='$wl-rpath,$libdir' fi else ld_shlibs=no @@ -11381,33 +11767,53 @@ $as_echo "$lt_cv_irix_exported_symbol" > hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported - archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + shrext_cmds=.dll + archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes=yes ;; osf3*) - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + if test yes = "$GCC"; then + allow_undefined_flag=' $wl-expect_unresolved $wl\*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + if test yes = "$GCC"; then + allow_undefined_flag=' $wl-expect_unresolved $wl\*' + archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' else allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' @@ -11418,24 +11824,24 @@ $as_echo "$lt_cv_irix_exported_symbol" > solaris*) no_undefined_flag=' -z defs' - if test "$GCC" = yes; then - wlarc='${wl}' - archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + if test yes = "$GCC"; then + wlarc='$wl' + archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' - archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) - wlarc='${wl}' - archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' + wlarc='$wl' + archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi @@ -11445,11 +11851,11 @@ $as_echo "$lt_cv_irix_exported_symbol" > solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. GCC discards it without `$wl', + # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) - if test "$GCC" = yes; then - whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + if test yes = "$GCC"; then + whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi @@ -11459,10 +11865,10 @@ $as_echo "$lt_cv_irix_exported_symbol" > ;; sunos4*) - if test "x$host_vendor" = xsequent; then + if test sequent = "$host_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. - archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi @@ -11511,43 +11917,43 @@ $as_echo "$lt_cv_irix_exported_symbol" > ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag='${wl}-z,text' + no_undefined_flag='$wl-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' - if test "$GCC" = yes; then - archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + if test yes = "$GCC"; then + archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else - archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not + # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. - no_undefined_flag='${wl}-z,text' - allow_undefined_flag='${wl}-z,nodefs' + no_undefined_flag='$wl-z,text' + allow_undefined_flag='$wl-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='${wl}-R,$libdir' + hardcode_libdir_flag_spec='$wl-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes - export_dynamic_flag_spec='${wl}-Bexport' + export_dynamic_flag_spec='$wl-Bexport' runpath_var='LD_RUN_PATH' - if test "$GCC" = yes; then - archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + if test yes = "$GCC"; then + archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else - archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; @@ -11562,10 +11968,10 @@ $as_echo "$lt_cv_irix_exported_symbol" > ;; esac - if test x$host_vendor = xsni; then + if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - export_dynamic_flag_spec='${wl}-Blargedynsym' + export_dynamic_flag_spec='$wl-Blargedynsym' ;; esac fi @@ -11573,7 +11979,7 @@ $as_echo "$lt_cv_irix_exported_symbol" > { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 $as_echo "$ld_shlibs" >&6; } -test "$ld_shlibs" = no && can_build_shared=no +test no = "$ld_shlibs" && can_build_shared=no with_gnu_ld=$with_gnu_ld @@ -11599,7 +12005,7 @@ x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes - if test "$enable_shared" = yes && test "$GCC" = yes; then + if test yes,yes = "$GCC,$enable_shared"; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. @@ -11814,14 +12220,14 @@ esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } -if test "$GCC" = yes; then +if test yes = "$GCC"; then case $host_os in - darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; - *) lt_awk_arg="/^libraries:/" ;; + darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; + *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in - mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; - *) lt_sed_strip_eq="s,=/,/,g" ;; + mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; + *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in @@ -11837,28 +12243,35 @@ if test "$GCC" = yes; then ;; esac # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary. + # and add multilib dir if necessary... lt_tmp_lt_search_path_spec= - lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + # ...but if some path component already ends with the multilib dir we assume + # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). + case "$lt_multi_os_dir; $lt_search_path_spec " in + "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) + lt_multi_os_dir= + ;; + esac for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path/$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" - else + if test -d "$lt_sys_path$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" + elif test -n "$lt_multi_os_dir"; then test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS=" "; FS="/|\n";} { - lt_foo=""; - lt_count=0; +BEGIN {RS = " "; FS = "/|\n";} { + lt_foo = ""; + lt_count = 0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { - lt_foo="/" $lt_i lt_foo; + lt_foo = "/" $lt_i lt_foo; } else { lt_count--; } @@ -11872,7 +12285,7 @@ BEGIN {RS=" "; FS="/|\n";} { # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's,/\([A-Za-z]:\),\1,g'` ;; + $SED 's|/\([A-Za-z]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else @@ -11881,7 +12294,7 @@ fi library_names_spec= libname_spec='lib$name' soname_spec= -shrext_cmds=".so" +shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= @@ -11898,14 +12311,16 @@ hardcode_into_libs=no # flags to be left without arguments need_version=unknown + + case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' + soname_spec='$libname$release$shared_ext$major' ;; aix[4-9]*) @@ -11913,41 +12328,91 @@ aix[4-9]*) need_lib_prefix=no need_version=no hardcode_into_libs=yes - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in + # the line '#! .'. This would cause the generated library to + # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in + # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a(lib.so.V)' # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac shlibpath_var=LIBPATH fi ;; @@ -11957,18 +12422,18 @@ amigaos*) powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) - library_names_spec='${libname}${shared_ext}' + library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; @@ -11976,8 +12441,8 @@ beos*) bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" @@ -11989,7 +12454,7 @@ bsdi[45]*) cygwin* | mingw* | pw32* | cegcc*) version_type=windows - shrext_cmds=".dll" + shrext_cmds=.dll need_version=no need_lib_prefix=no @@ -11998,8 +12463,8 @@ cygwin* | mingw* | pw32* | cegcc*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ @@ -12015,17 +12480,17 @@ cygwin* | mingw* | pw32* | cegcc*) case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' @@ -12034,8 +12499,8 @@ cygwin* | mingw* | pw32* | cegcc*) *,cl*) # Native MSVC libname_spec='$name' - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - library_names_spec='${libname}.dll.lib' + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' case $build_os in mingw*) @@ -12062,7 +12527,7 @@ cygwin* | mingw* | pw32* | cegcc*) sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) - sys_lib_search_path_spec="$LIB" + sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` @@ -12075,8 +12540,8 @@ cygwin* | mingw* | pw32* | cegcc*) esac # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' @@ -12089,7 +12554,7 @@ cygwin* | mingw* | pw32* | cegcc*) *) # Assume MSVC wrapper - library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac @@ -12102,8 +12567,8 @@ darwin* | rhapsody*) version_type=darwin need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' + library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' + soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' @@ -12116,8 +12581,8 @@ dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; @@ -12135,12 +12600,13 @@ freebsd* | dragonfly*) version_type=freebsd-$objformat case $version_type in freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac @@ -12170,10 +12636,10 @@ haiku*) need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=yes + shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; @@ -12191,14 +12657,15 @@ hpux9* | hpux10* | hpux11*) dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + if test 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' @@ -12206,8 +12673,8 @@ hpux9* | hpux10* | hpux11*) dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; @@ -12216,8 +12683,8 @@ hpux9* | hpux10* | hpux11*) dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... @@ -12230,8 +12697,8 @@ interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no @@ -12242,7 +12709,7 @@ irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) - if test "$lt_cv_prog_gnu_ld" = yes; then + if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix @@ -12250,8 +12717,8 @@ irix5* | irix6* | nonstopux*) esac need_lib_prefix=no need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= @@ -12270,8 +12737,8 @@ irix5* | irix6* | nonstopux*) esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" + sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; @@ -12280,13 +12747,33 @@ linux*oldld* | linux*aout* | linux*coff* dynamic_linker=no ;; +linux*android*) + version_type=none # Android doesn't support versioned libraries. + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # Don't embed -rpath directories since the linker doesn't support them. + hardcode_libdir_flag_spec='-L$libdir' + ;; + # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no @@ -12330,7 +12817,12 @@ fi # before this can be enabled. hardcode_into_libs=yes - # Append ld.so.conf contents to the search path + # Ideally, we could use ldconfig to report *all* directores which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" @@ -12362,12 +12854,12 @@ netbsd*) need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH @@ -12377,7 +12869,7 @@ netbsd*) newsos6) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; @@ -12386,58 +12878,68 @@ newsos6) version_type=qnx need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; -openbsd*) +openbsd* | bitrig*) version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" + sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + need_version=no + else + need_version=yes + fi + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[89] | openbsd2.[89].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi + shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' - shrext_cmds=".dll" + version_type=windows + shrext_cmds=.dll + need_version=no need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) @@ -12448,8 +12950,8 @@ solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes @@ -12459,11 +12961,11 @@ solaris*) sunos4*) version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then + if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes @@ -12471,8 +12973,8 @@ sunos4*) sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) @@ -12493,24 +12995,24 @@ sysv4 | sysv4.3*) ;; sysv4*MP*) - if test -d /usr/nec ;then + if test -d /usr/nec; then version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' + library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' + soname_spec='$libname$shared_ext.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf + version_type=sco need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then + if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' @@ -12528,7 +13030,7 @@ tpf*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes @@ -12536,8 +13038,8 @@ tpf*) uts4*) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; @@ -12547,20 +13049,35 @@ uts4*) esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } -test "$dynamic_linker" = no && can_build_shared=no +test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then +if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then + sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" + +if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then + sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + + + + + + @@ -12657,15 +13174,15 @@ $as_echo_n "checking how to hardcode lib hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || - test "X$hardcode_automatic" = "Xyes" ; then + test yes = "$hardcode_automatic"; then # We can hardcode non-existent directories. - if test "$hardcode_direct" != no && + if test no != "$hardcode_direct" && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && - test "$hardcode_minus_L" != no; then + ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && + test no != "$hardcode_minus_L"; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else @@ -12680,12 +13197,12 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 $as_echo "$hardcode_action" >&6; } -if test "$hardcode_action" = relink || - test "$inherit_rpath" = yes; then +if test relink = "$hardcode_action" || + test yes = "$inherit_rpath"; then # Fast installation is not supported enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then +elif test yes = "$shlibpath_overrides_runpath" || + test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi @@ -12695,7 +13212,7 @@ fi - if test "x$enable_dlopen" != xyes; then + if test yes != "$enable_dlopen"; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown @@ -12705,23 +13222,23 @@ else case $host_os in beos*) - lt_cv_dlopen="load_add_on" + lt_cv_dlopen=load_add_on lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) - lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen=LoadLibrary lt_cv_dlopen_libs= ;; cygwin*) - lt_cv_dlopen="dlopen" + lt_cv_dlopen=dlopen lt_cv_dlopen_libs= ;; darwin*) - # if libdl is installed we need to link against it + # if libdl is installed we need to link against it { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : @@ -12759,10 +13276,10 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else - lt_cv_dlopen="dyld" + lt_cv_dlopen=dyld lt_cv_dlopen_libs= lt_cv_dlopen_self=yes @@ -12770,10 +13287,18 @@ fi ;; + tpf*) + # Don't try to run any link tests for TPF. We know it's impossible + # because TPF is a cross-compiler, and we know how we open DSOs. + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + lt_cv_dlopen_self=no + ;; + *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = xyes; then : - lt_cv_dlopen="shl_load" + lt_cv_dlopen=shl_load else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } @@ -12812,11 +13337,11 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 $as_echo "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes; then : - lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" + lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld else ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" + lt_cv_dlopen=dlopen else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } @@ -12855,7 +13380,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } @@ -12894,7 +13419,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } @@ -12933,7 +13458,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 $as_echo "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = xyes; then : - lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" + lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld fi @@ -12954,21 +13479,21 @@ fi ;; esac - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else + if test no = "$lt_cv_dlopen"; then enable_dlopen=no + else + enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + save_CPPFLAGS=$CPPFLAGS + test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - save_LDFLAGS="$LDFLAGS" + save_LDFLAGS=$LDFLAGS wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - save_LIBS="$LIBS" + save_LIBS=$LIBS LIBS="$lt_cv_dlopen_libs $LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 @@ -12976,7 +13501,7 @@ $as_echo_n "checking whether a program c if ${lt_cv_dlopen_self+:} false; then : $as_echo_n "(cached) " >&6 else - if test "$cross_compiling" = yes; then : + if test yes = "$cross_compiling"; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 @@ -13023,9 +13548,9 @@ else # endif #endif -/* When -fvisbility=hidden is used, assume the code has been annotated +/* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif @@ -13055,7 +13580,7 @@ _LT_EOF (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then + test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in @@ -13075,14 +13600,14 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 $as_echo "$lt_cv_dlopen_self" >&6; } - if test "x$lt_cv_dlopen_self" = xyes; then + if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self_static+:} false; then : $as_echo_n "(cached) " >&6 else - if test "$cross_compiling" = yes; then : + if test yes = "$cross_compiling"; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 @@ -13129,9 +13654,9 @@ else # endif #endif -/* When -fvisbility=hidden is used, assume the code has been annotated +/* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif @@ -13161,7 +13686,7 @@ _LT_EOF (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then + test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in @@ -13182,9 +13707,9 @@ fi $as_echo "$lt_cv_dlopen_self_static" >&6; } fi - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" + CPPFLAGS=$save_CPPFLAGS + LDFLAGS=$save_LDFLAGS + LIBS=$save_LIBS ;; esac @@ -13228,7 +13753,7 @@ else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) - if test -n "$STRIP" ; then + if test -n "$STRIP"; then striplib="$STRIP -x" old_striplib="$STRIP -S" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 @@ -13256,7 +13781,7 @@ fi - # Report which library types will actually be built + # Report what library types will actually be built { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 @@ -13264,13 +13789,13 @@ $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } - test "$can_build_shared" = "no" && enable_shared=no + test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) - test "$enable_shared" = yes && enable_static=no + test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' @@ -13278,8 +13803,12 @@ $as_echo_n "checking whether to build sh ;; aix[4-9]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac fi ;; esac @@ -13289,7 +13818,7 @@ $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes + test yes = "$enable_shared" || enable_static=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } @@ -13303,7 +13832,7 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS con ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -CC="$lt_save_CC" +CC=$lt_save_CC @@ -13632,162 +14161,184 @@ if test x"$inn_enable_tagged_hash" = xye fi - -# Check whether --with-perl was given. -if test "${with_perl+set}" = set; then : - withval=$with_perl; case $withval in - yes) DO_PERL=DO - -$as_echo "#define DO_PERL 1" >>confdefs.h - - ;; - no) DO_PERL=DONT ;; - *) as_fn_error $? "invalid argument to --with-perl" "$LINENO" 5 ;; - esac -else - DO_PERL=DONT + if test x"$PERL" != x; then : + if ! test -x "$PERL"; then : + as_fn_error $? "Perl binary $PERL not found" "$LINENO" 5 fi - - -if test x"${PERL}" = x ; then - # Extract the first word of "perl", so it can be a program name with args. -set dummy perl; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } + if ! "$PERL" -e 'use 5.004_03' >/dev/null 2>&1; then : + as_fn_error $? "Perl 5.004_03 or greater is required" "$LINENO" 5 +fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Perl version 5.004_03 or later" >&5 +$as_echo_n "checking for Perl version 5.004_03 or later... " >&6; } if ${ac_cv_path_PERL+:} false; then : $as_echo_n "(cached) " >&6 else - case $PERL in - [\\/]* | ?:[\\/]*) - ac_cv_path_PERL="$PERL" # Let the user override the test with a path. - ;; - *) + if test -z "$PERL"; then + ac_path_PERL_found=false + # Loop through the user's path and test for each of PROGNAME-LIST 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_prog in perl; do 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_PERL="$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 + ac_path_PERL="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_PERL" || continue +if "$ac_path_PERL" -e 'require 5.004_03' >/dev/null 2>&1; then : + ac_cv_path_PERL="$ac_path_PERL" + ac_path_PERL_found=: +fi + $ac_path_PERL_found && break 3 + done + done done IFS=$as_save_IFS + if test -z "$ac_cv_path_PERL"; then + : + fi +else + ac_cv_path_PERL=$PERL +fi - ;; -esac fi -PERL=$ac_cv_path_PERL -if test -n "$PERL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 -$as_echo "$PERL" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_PERL" >&5 +$as_echo "$ac_cv_path_PERL" >&6; } + if test x"$ac_cv_path_PERL" = x; then : + as_fn_error $? "Perl 5.004_03 or greater is required" "$LINENO" 5 +fi + PERL="$ac_cv_path_PERL" +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Perl module Encode" >&5 +$as_echo_n "checking for Perl module Encode... " >&6; } +if ${inn_cv_perl_module_Encode+:} false; then : + $as_echo_n "(cached) " >&6 else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + if "$PERL" -e 'use Encode' >/dev/null 2>&1; then : + inn_cv_perl_module_Encode=yes +else + inn_cv_perl_module_Encode=no fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $inn_cv_perl_module_Encode" >&5 +$as_echo "$inn_cv_perl_module_Encode" >&6; } + if test "x$inn_cv_perl_module_Encode" = xyes; then : +else + inn_perl_mod_warn="$inn_perl_mod_warn Encode (for controlchan)" +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Perl module GD" >&5 +$as_echo_n "checking for Perl module GD... " >&6; } +if ${inn_cv_perl_module_GD+:} false; then : + $as_echo_n "(cached) " >&6 +else + if "$PERL" -e 'use GD' >/dev/null 2>&1; then : + inn_cv_perl_module_GD=yes +else + inn_cv_perl_module_GD=no +fi fi -if test x"${PERL}" = x ; then - as_fn_error $? "perl was not found in path and is required" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $inn_cv_perl_module_GD" >&5 +$as_echo "$inn_cv_perl_module_GD" >&6; } + if test "x$inn_cv_perl_module_GD" = xyes; then : + +else + inn_perl_mod_warn="$inn_perl_mod_warn GD (for innreport's HTML output)" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Perl version" >&5 -$as_echo_n "checking for Perl version... " >&6; } -if ${inn_cv_perl_version+:} false; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Perl module MIME::Parser" >&5 +$as_echo_n "checking for Perl module MIME::Parser... " >&6; } +if ${inn_cv_perl_module_MIME__Parser+:} false; then : $as_echo_n "(cached) " >&6 else - if $PERL -e 'require 5.004_03;' > /dev/null 2>&1 ; then - inn_cv_perl_version=`$PERL -e 'print $]'` - else - as_fn_error $? "Perl 5.004_03 or greater is required" "$LINENO" 5 - fi + if "$PERL" -e 'use MIME::Parser' >/dev/null 2>&1; then : + inn_cv_perl_module_MIME__Parser=yes +else + inn_cv_perl_module_MIME__Parser=no fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $inn_cv_perl_version" >&5 -$as_echo "$inn_cv_perl_version" >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Encode" >&5 -$as_echo_n "checking for Encode... " >&6; } - if $PERL -e 'require Encode;' > /dev/null 2>&1 ; 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; } - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Encode Perl module is required by controlchan" >&5 -$as_echo "$as_me: WARNING: Encode Perl module is required by controlchan" >&2;} - inn_perl_module_warning="$inn_perl_module_warning Encode (for controlchan)" - fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GD" >&5 -$as_echo_n "checking for GD... " >&6; } - if $PERL -e 'require GD;' > /dev/null 2>&1 ; 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; } - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: GD Perl module is required by innreport's HTML output" >&5 -$as_echo "$as_me: WARNING: GD Perl module is required by innreport's HTML output" >&2;} - inn_perl_module_warning="$inn_perl_module_warning GD (for innreport's HTML output)" - fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MIME::Parser" >&5 -$as_echo_n "checking for MIME::Parser... " >&6; } - if $PERL -e 'require MIME::Parser;' > /dev/null 2>&1 ; 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; } - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: MIME::Parser Perl module is required by controlchan" >&5 -$as_echo "$as_me: WARNING: MIME::Parser Perl module is required by controlchan" >&2;} - inn_perl_module_warning="$inn_perl_module_warning MIME::Parser (for controlchan)" - fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $inn_cv_perl_module_MIME__Parser" >&5 +$as_echo "$inn_cv_perl_module_MIME__Parser" >&6; } + if test "x$inn_cv_perl_module_MIME__Parser" = xyes; then : -if test x"$DO_PERL" = xDO ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Perl linkage" >&5 -$as_echo_n "checking for Perl linkage... " >&6; } - inn_perl_core_path=`$PERL -MConfig -e 'print $Config{archlibexp}'` - 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 / /'` - for i in $LIBS ; do - inn_perl_core_libs=`echo "$inn_perl_core_libs" | sed "s/ $i / /"` - done - case $host in - *-linux*) - inn_perl_core_libs=`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_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_flags=" $inn_perl_core_flags " - if test x"$inn_enable_largefiles" != xyes ; then - for f in -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES ; do +else + inn_perl_mod_warn="$inn_perl_mod_warn MIME::Parser (for controlchan)" +fi + + + +# Check whether --with-perl was given. +if test "${with_perl+set}" = set; then : + withval=$with_perl; case $withval in #( + yes) : + DO_PERL=DO + +$as_echo "#define DO_PERL 1" >>confdefs.h + ;; #( + no) : + DO_PERL=DONT ;; #( + *) : + as_fn_error $? "invalid argument to --with-perl" "$LINENO" 5 ;; +esac +else + DO_PERL=DONT +fi + + +if test x"$DO_PERL" = xDO; then : + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for flags to link with Perl" >&5 +$as_echo_n "checking for flags to link with Perl... " >&6; } + inn_perl_core_path=`"$PERL" -MConfig -e 'print $Config{archlibexp}'` + 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 / /'` + case $host in #( + *-linux*) : + inn_perl_core_libs=`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_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/ *$//'` + PERL_CPPFLAGS="$inn_perl_core_flags" + PERL_LIBS="$inn_perl_core_libs" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL_LIBS" >&5 +$as_echo "$PERL_LIBS" >&6; } + 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 / /"` - done - fi - inn_perl_core_flags=`echo "$inn_perl_core_flags" | sed 's/^ *//'` - inn_perl_core_flags=`echo "$inn_perl_core_flags" | sed 's/ *$//'` - PERL_CPPFLAGS="$inn_perl_core_flags" - PERL_LIBS="$inn_perl_core_libs" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $inn_perl_core_path" >&5 -$as_echo "$inn_perl_core_path" >&6; } + done +fi + inn_perl_core_flags=`echo "$inn_perl_core_flags" | sed 's/^ *//'` + inn_perl_core_flags=`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 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wno-extra" >&5 $as_echo_n "checking if $CC supports -Wno-extra... " >&6; } -if ${inn_cv_compiler_c__Wno_extra+:} false; then : + if ${inn_cv_compiler_c__Wno_extra+:} false; then : $as_echo_n "(cached) " >&6 else save_CFLAGS=$CFLAGS -CFLAGS="$CFLAGS -Wno-extra" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext + case -Wno-extra in #( + -Wno-*) : + CFLAGS="$CFLAGS `echo "-Wno-extra" | sed 's/-Wno-/-W/'`" ;; #( + *) : + CFLAGS="$CFLAGS -Wno-extra" ;; #( + *) : + ;; +esac + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -13804,25 +14355,27 @@ else inn_cv_compiler_c__Wno_extra=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -CFLAGS=$save_CFLAGS + CFLAGS=$save_CFLAGS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $inn_cv_compiler_c__Wno_extra" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $inn_cv_compiler_c__Wno_extra" >&5 $as_echo "$inn_cv_compiler_c__Wno_extra" >&6; } - if test x"$inn_cv_compiler_c__Wno_extra" = xyes ; then - PERL_WARNINGS=-Wno-extra - else - PERL_WARNINGS='' - fi + if test x"$inn_cv_compiler_c__Wno_extra" = xyes; then : + PERL_WARNINGS=-Wno-extra else - PERL_CPPFLAGS='' - PERL_LIBS='' - PERL_WARNINGS='' + PERL_WARNINGS='' fi +else + PERL_CPPFLAGS='' + PERL_LIBS='' + PERL_WARNINGS='' +fi + + # Check whether --with-python was given. if test "${with_python+set}" = set; then : @@ -14350,6 +14903,12 @@ $as_echo "#define _GNU_SOURCE 1" >>confd ;; +*-bsdi*) + +$as_echo "#define INN_BSDI_HOST 1" >>confdefs.h + + ;; + *hpux*) if test x"$GCC" != xyes ; then CFLAGS="$CFLAGS -Ae" @@ -23798,9 +24357,9 @@ fi fi if test x"$inn_reduced_depends" = xtrue; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SSL_library_init in -lssl" >&5 -$as_echo_n "checking for SSL_library_init in -lssl... " >&6; } -if ${ac_cv_lib_ssl_SSL_library_init+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SSL_accept in -lssl" >&5 +$as_echo_n "checking for SSL_accept in -lssl... " >&6; } +if ${ac_cv_lib_ssl_SSL_accept+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS @@ -23814,27 +24373,27 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ #ifdef __cplusplus extern "C" #endif -char SSL_library_init (); +char SSL_accept (); int main () { -return SSL_library_init (); +return SSL_accept (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_ssl_SSL_library_init=yes + ac_cv_lib_ssl_SSL_accept=yes else - ac_cv_lib_ssl_SSL_library_init=no + ac_cv_lib_ssl_SSL_accept=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_ssl_SSL_library_init" >&5 -$as_echo "$ac_cv_lib_ssl_SSL_library_init" >&6; } -if test "x$ac_cv_lib_ssl_SSL_library_init" = xyes; then : +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ssl_SSL_accept" >&5 +$as_echo "$ac_cv_lib_ssl_SSL_accept" >&6; } +if test "x$ac_cv_lib_ssl_SSL_accept" = xyes; then : OPENSSL_LIBS=-lssl else if test x"true" = xtrue; then : @@ -23843,9 +24402,9 @@ fi fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SSL_library_init in -lssl" >&5 -$as_echo_n "checking for SSL_library_init in -lssl... " >&6; } -if ${ac_cv_lib_ssl_SSL_library_init+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SSL_accept in -lssl" >&5 +$as_echo_n "checking for SSL_accept in -lssl... " >&6; } +if ${ac_cv_lib_ssl_SSL_accept+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS @@ -23859,27 +24418,27 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ #ifdef __cplusplus extern "C" #endif -char SSL_library_init (); +char SSL_accept (); int main () { -return SSL_library_init (); +return SSL_accept (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_ssl_SSL_library_init=yes + ac_cv_lib_ssl_SSL_accept=yes else - ac_cv_lib_ssl_SSL_library_init=no + ac_cv_lib_ssl_SSL_accept=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_ssl_SSL_library_init" >&5 -$as_echo "$ac_cv_lib_ssl_SSL_library_init" >&6; } -if test "x$ac_cv_lib_ssl_SSL_library_init" = xyes; then : +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ssl_SSL_accept" >&5 +$as_echo "$ac_cv_lib_ssl_SSL_accept" >&6; } +if test "x$ac_cv_lib_ssl_SSL_accept" = xyes; then : OPENSSL_LIBS="-lssl $CRYPTO_LIBS" else if test x"true" = xtrue; then : @@ -24042,9 +24601,9 @@ fi fi if test x"$inn_reduced_depends" = xtrue; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SSL_library_init in -lssl" >&5 -$as_echo_n "checking for SSL_library_init in -lssl... " >&6; } -if ${ac_cv_lib_ssl_SSL_library_init+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SSL_accept in -lssl" >&5 +$as_echo_n "checking for SSL_accept in -lssl... " >&6; } +if ${ac_cv_lib_ssl_SSL_accept+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS @@ -24058,27 +24617,27 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ #ifdef __cplusplus extern "C" #endif -char SSL_library_init (); +char SSL_accept (); int main () { -return SSL_library_init (); +return SSL_accept (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_ssl_SSL_library_init=yes + ac_cv_lib_ssl_SSL_accept=yes else - ac_cv_lib_ssl_SSL_library_init=no + ac_cv_lib_ssl_SSL_accept=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_ssl_SSL_library_init" >&5 -$as_echo "$ac_cv_lib_ssl_SSL_library_init" >&6; } -if test "x$ac_cv_lib_ssl_SSL_library_init" = xyes; then : +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ssl_SSL_accept" >&5 +$as_echo "$ac_cv_lib_ssl_SSL_accept" >&6; } +if test "x$ac_cv_lib_ssl_SSL_accept" = xyes; then : OPENSSL_LIBS=-lssl else if test x"false" = xtrue; then : @@ -24087,9 +24646,9 @@ fi fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SSL_library_init in -lssl" >&5 -$as_echo_n "checking for SSL_library_init in -lssl... " >&6; } -if ${ac_cv_lib_ssl_SSL_library_init+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SSL_accept in -lssl" >&5 +$as_echo_n "checking for SSL_accept in -lssl... " >&6; } +if ${ac_cv_lib_ssl_SSL_accept+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS @@ -24103,27 +24662,27 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ #ifdef __cplusplus extern "C" #endif -char SSL_library_init (); +char SSL_accept (); int main () { -return SSL_library_init (); +return SSL_accept (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_ssl_SSL_library_init=yes + ac_cv_lib_ssl_SSL_accept=yes else - ac_cv_lib_ssl_SSL_library_init=no + ac_cv_lib_ssl_SSL_accept=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_ssl_SSL_library_init" >&5 -$as_echo "$ac_cv_lib_ssl_SSL_library_init" >&6; } -if test "x$ac_cv_lib_ssl_SSL_library_init" = xyes; then : +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ssl_SSL_accept" >&5 +$as_echo "$ac_cv_lib_ssl_SSL_accept" >&6; } +if test "x$ac_cv_lib_ssl_SSL_accept" = xyes; then : OPENSSL_LIBS="-lssl $CRYPTO_LIBS" else if test x"false" = xtrue; then : @@ -24359,140 +24918,7 @@ fi $as_echo "#define HAVE_SASL 1" >>confdefs.h fi - -if test x"$inn_use_KRB5" = xtrue; then : - for ac_header in et/com_err.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "et/com_err.h" "ac_cv_header_et_com_err_h" "$ac_includes_default" -if test "x$ac_cv_header_et_com_err_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_ET_COM_ERR_H 1 -_ACEOF - KRB5_AUTH=auth_krb5 -else - for ac_header in kerberosv5/com_err.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "kerberosv5/com_err.h" "ac_cv_header_kerberosv5_com_err_h" "$ac_includes_default" -if test "x$ac_cv_header_kerberosv5_com_err_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_KERBEROSV5_COM_ERR_H 1 -_ACEOF - KRB5_AUTH=auth_krb5 -else - for ac_header in com_err.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "com_err.h" "ac_cv_header_com_err_h" "$ac_includes_default" -if test "x$ac_cv_header_com_err_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_COM_ERR_H 1 -_ACEOF - KRB5_AUTH=auth_krb5 -else - if test x"$with_krb5" = x; then : - KRB5_CPPFLAGS= - KRB5_LDFLAGS= - KRB5_LIBS= -else - as_fn_error $? "cannot find usable com_err header" "$LINENO" 5 -fi -fi - -done - -fi - -done - -fi - -done - -fi - - -if test x"$inn_use_BDB" = xtrue; then : - inn_BDB_incroot= - inn_BDB_header_found= - if test x"$inn_BDB_includedir" != x; then : - inn_BDB_incroot="$inn_BDB_includedir" -else - if test x"$inn_BDB_root" != x; then : - inn_BDB_incroot="${inn_BDB_root}/include" -fi -fi - if test x"$inn_BDB_incroot" = x; then : - for ac_header in db.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "db.h" "ac_cv_header_db_h" "$ac_includes_default" -if test "x$ac_cv_header_db_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_DB_H 1 -_ACEOF - inn_BDB_header_found=yes -else - inn_BDB_header_found=no -fi - -done - -else - if test -f "${inn_BDB_incroot}/db.h"; then : - inn_BDB_header_found=yes - -$as_echo "#define HAVE_DB_H 1" >>confdefs.h - -else - inn_BDB_header_found=no -fi -fi - if test x"${inn_BDB_header_found}" = xyes; then : - inn_BDB_save_CPPFLAGS="$CPPFLAGS" - inn_BDB_save_LDFLAGS="$LDFLAGS" - inn_BDB_save_LIBS="$LIBS" - CPPFLAGS="$BDB_CPPFLAGS $CPPFLAGS" - LDFLAGS="$BDB_LDFLAGS $LDFLAGS" - LIBS="$BDB_LIBS $LIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working ndbm compatibility layer with Berkeley DB" >&5 -$as_echo_n "checking for working ndbm compatibility layer with Berkeley DB... " >&6; } -if ${inn_cv_lib_bdb_ndbm+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#define DB_DBM_HSEARCH 1 -#include - -int -main(void) -{ - DBM *database; - database = dbm_open("test", 0, 0600); - dbm_close(database); - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - inn_cv_lib_bdb_ndbm=yes -else - inn_cv_lib_bdb_ndbm=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $inn_cv_lib_bdb_ndbm" >&5 -$as_echo "$inn_cv_lib_bdb_ndbm" >&6; } - if test x"$inn_cv_lib_bdb_ndbm" = xyes; then : - -$as_echo "#define HAVE_BDB_NDBM 1" >>confdefs.h - -fi - CPPFLAGS="$inn_BDB_save_CPPFLAGS" - LDFLAGS="$inn_BDB_save_LDFLAGS" - LIBS="$inn_BDB_save_LIBS" - inn_ZLIB_root= +inn_ZLIB_root= inn_ZLIB_libdir= inn_ZLIB_includedir= inn_use_ZLIB= @@ -24708,6 +25134,139 @@ fi $as_echo "#define HAVE_ZLIB 1" >>confdefs.h fi + +if test x"$inn_use_KRB5" = xtrue; then : + for ac_header in et/com_err.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "et/com_err.h" "ac_cv_header_et_com_err_h" "$ac_includes_default" +if test "x$ac_cv_header_et_com_err_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_ET_COM_ERR_H 1 +_ACEOF + KRB5_AUTH=auth_krb5 +else + for ac_header in kerberosv5/com_err.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "kerberosv5/com_err.h" "ac_cv_header_kerberosv5_com_err_h" "$ac_includes_default" +if test "x$ac_cv_header_kerberosv5_com_err_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_KERBEROSV5_COM_ERR_H 1 +_ACEOF + KRB5_AUTH=auth_krb5 +else + for ac_header in com_err.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "com_err.h" "ac_cv_header_com_err_h" "$ac_includes_default" +if test "x$ac_cv_header_com_err_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_COM_ERR_H 1 +_ACEOF + KRB5_AUTH=auth_krb5 +else + if test x"$with_krb5" = x; then : + KRB5_CPPFLAGS= + KRB5_LDFLAGS= + KRB5_LIBS= +else + as_fn_error $? "cannot find usable com_err header" "$LINENO" 5 +fi +fi + +done + +fi + +done + +fi + +done + +fi + + +if test x"$inn_use_BDB" = xtrue; then : + inn_BDB_incroot= + inn_BDB_header_found= + if test x"$inn_BDB_includedir" != x; then : + inn_BDB_incroot="$inn_BDB_includedir" +else + if test x"$inn_BDB_root" != x; then : + inn_BDB_incroot="${inn_BDB_root}/include" +fi +fi + if test x"$inn_BDB_incroot" = x; then : + for ac_header in db.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "db.h" "ac_cv_header_db_h" "$ac_includes_default" +if test "x$ac_cv_header_db_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_DB_H 1 +_ACEOF + inn_BDB_header_found=yes +else + inn_BDB_header_found=no +fi + +done + +else + if test -f "${inn_BDB_incroot}/db.h"; then : + inn_BDB_header_found=yes + +$as_echo "#define HAVE_DB_H 1" >>confdefs.h + +else + inn_BDB_header_found=no +fi +fi + if test x"${inn_BDB_header_found}" = xyes; then : + inn_BDB_save_CPPFLAGS="$CPPFLAGS" + inn_BDB_save_LDFLAGS="$LDFLAGS" + inn_BDB_save_LIBS="$LIBS" + CPPFLAGS="$BDB_CPPFLAGS $CPPFLAGS" + LDFLAGS="$BDB_LDFLAGS $LDFLAGS" + LIBS="$BDB_LIBS $LIBS" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working ndbm compatibility layer with Berkeley DB" >&5 +$as_echo_n "checking for working ndbm compatibility layer with Berkeley DB... " >&6; } +if ${inn_cv_lib_bdb_ndbm+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#define DB_DBM_HSEARCH 1 +#include + +int +main(void) +{ + DBM *database; + database = dbm_open("test", 0, 0600); + dbm_close(database); + return 0; +} + +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + inn_cv_lib_bdb_ndbm=yes +else + inn_cv_lib_bdb_ndbm=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $inn_cv_lib_bdb_ndbm" >&5 +$as_echo "$inn_cv_lib_bdb_ndbm" >&6; } + if test x"$inn_cv_lib_bdb_ndbm" = xyes; then : + +$as_echo "#define HAVE_BDB_NDBM 1" >>confdefs.h + +fi + CPPFLAGS="$inn_BDB_save_CPPFLAGS" + LDFLAGS="$inn_BDB_save_LDFLAGS" + LIBS="$inn_BDB_save_LIBS" else if test x"$with_bdb" = x; then : BDB_CPPFLAGS= @@ -24961,7 +25520,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -25007,7 +25566,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -25031,7 +25590,7 @@ rm -f core conftest.err conftest.$ac_obj We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -25076,7 +25635,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -25100,7 +25659,7 @@ rm -f core conftest.err conftest.$ac_obj We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -27349,6 +27908,19 @@ esac fi +ac_fn_c_check_func "$LINENO" "strtok" "ac_cv_func_strtok" +if test "x$ac_cv_func_strtok" = xyes; then : + $as_echo "#define HAVE_STRTOK 1" >>confdefs.h + +else + case " $LIBOBJS " in + *" strtok.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strtok.$ac_objext" + ;; +esac + +fi + ac_fn_c_check_func "$LINENO" "symlink" "ac_cv_func_symlink" if test "x$ac_cv_func_symlink" = xyes; then : $as_echo "#define HAVE_SYMLINK 1" >>confdefs.h @@ -28458,7 +29030,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.0, which was +This file was extended by INN $as_me 2.6.1, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -28525,7 +29097,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.0 +INN config.status 2.6.1 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" @@ -28658,6 +29230,7 @@ enable_shared='`$ECHO "$enable_shared" | enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' +shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' @@ -28707,10 +29280,13 @@ compiler='`$ECHO "$compiler" | $SED "$de GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' +lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' +lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' @@ -28775,7 +29351,8 @@ finish_cmds='`$ECHO "$finish_cmds" | $SE finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' -sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' +configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' +configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' @@ -28826,9 +29403,12 @@ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ +lt_cv_sys_global_symbol_to_import \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ +lt_cv_nm_interface \ nm_file_list_spec \ +lt_cv_truncate_bin \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_pic \ lt_prog_compiler_wl \ @@ -28863,7 +29443,7 @@ old_striplib \ striplib; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" @@ -28890,10 +29470,11 @@ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ -sys_lib_dlsearch_path_spec; do +configure_time_dlsearch_path \ +configure_time_lt_sys_library_path; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" @@ -28902,19 +29483,16 @@ sys_lib_dlsearch_path_spec; do done ac_aux_dir='$ac_aux_dir' -xsi_shell='$xsi_shell' -lt_shell_append='$lt_shell_append' -# See if we are running on zsh, and set the options which allow our +# See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}" ; then +if test -n "\${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' - TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile' @@ -29497,55 +30075,52 @@ $as_echo "$as_me: executing $ac_file com case $ac_file$ac_mode in "libtool":C) - # See if we are running on zsh, and set the options which allow our + # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then + if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi - cfgfile="${ofile}T" + cfgfile=${ofile}T trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL - -# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# Generated automatically by $as_me ($PACKAGE) $VERSION # NOTE: Changes made to this file will be lost: look at ltmain.sh. + +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit, 1996 + +# Copyright (C) 2014 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. + +# GNU Libtool is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of of the License, or +# (at your option) any later version. # -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is part of GNU Libtool. -# -# GNU Libtool is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 2 of -# the License, or (at your option) any later version. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program or library that is built +# using GNU Libtool, you may include this file under the same +# distribution terms that you use for the rest of that program. # -# GNU Libtool is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of +# GNU Libtool is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -# obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# along with this program. If not, see . # The names of the tagged configurations supported by this script. -available_tags="" +available_tags='' + +# Configured defaults for sys_lib_dlsearch_path munging. +: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} # ### BEGIN LIBTOOL CONFIG @@ -29565,6 +30140,9 @@ pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install +# Shared archive member basename,for filename based shared library versioning on AIX. +shared_archive_member_spec=$shared_archive_member_spec + # Shell to use when invoking shell scripts. SHELL=$lt_SHELL @@ -29682,18 +30260,27 @@ global_symbol_pipe=$lt_lt_cv_sys_global_ # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl +# Transform the output of nm into a list of symbols to manually relocate. +global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import + # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix +# The name lister interface. +nm_interface=$lt_lt_cv_nm_interface + # Specify filename containing input files for \$NM. nm_file_list_spec=$lt_nm_file_list_spec -# The root where to search for dependent libraries,and in which our libraries should be installed. +# The root where to search for dependent libraries,and where our libraries should be installed. lt_sysroot=$lt_sysroot +# Command to truncate a binary pipe. +lt_truncate_bin=$lt_lt_cv_truncate_bin + # The name of the directory that contains temporary libtool files. objdir=$objdir @@ -29784,8 +30371,11 @@ hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec -# Run-time system search path for libraries. -sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec +# Detected run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path + +# Explicit LT_SYS_LIBRARY_PATH set during ./configure time. +configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path # Whether dlopen is supported. dlopen_support=$enable_dlopen @@ -29878,13 +30468,13 @@ hardcode_libdir_flag_spec=$lt_hardcode_l # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \${shlibpath_var} if the +# "absolute",i.e impossible to change by setting \$shlibpath_var if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute @@ -29936,13 +30526,72 @@ hardcode_action=$hardcode_action _LT_EOF + cat <<'_LT_EOF' >> "$cfgfile" + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE + +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x$2 in + x) + ;; + *:) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" + ;; + x:*) + eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" + ;; + *) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" + ;; + esac +} + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in $*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + + +# ### END FUNCTIONS SHARED WITH CONFIGURE + +_LT_EOF + case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then +if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi @@ -29951,7 +30600,7 @@ _LT_EOF esac -ltmain="$ac_aux_dir/ltmain.sh" +ltmain=$ac_aux_dir/ltmain.sh # We use sed instead of cat because bash on DJGPP gets confused if @@ -29961,165 +30610,6 @@ ltmain="$ac_aux_dir/ltmain.sh" sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) - if test x"$xsi_shell" = xyes; then - sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ -func_dirname ()\ -{\ -\ case ${1} in\ -\ */*) func_dirname_result="${1%/*}${2}" ;;\ -\ * ) func_dirname_result="${3}" ;;\ -\ esac\ -} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_basename ()$/,/^} # func_basename /c\ -func_basename ()\ -{\ -\ func_basename_result="${1##*/}"\ -} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ -func_dirname_and_basename ()\ -{\ -\ case ${1} in\ -\ */*) func_dirname_result="${1%/*}${2}" ;;\ -\ * ) func_dirname_result="${3}" ;;\ -\ esac\ -\ func_basename_result="${1##*/}"\ -} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ -func_stripname ()\ -{\ -\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ -\ # positional parameters, so assign one to ordinary parameter first.\ -\ func_stripname_result=${3}\ -\ func_stripname_result=${func_stripname_result#"${1}"}\ -\ func_stripname_result=${func_stripname_result%"${2}"}\ -} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ -func_split_long_opt ()\ -{\ -\ func_split_long_opt_name=${1%%=*}\ -\ func_split_long_opt_arg=${1#*=}\ -} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ -func_split_short_opt ()\ -{\ -\ func_split_short_opt_arg=${1#??}\ -\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ -} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ -func_lo2o ()\ -{\ -\ case ${1} in\ -\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ -\ *) func_lo2o_result=${1} ;;\ -\ esac\ -} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_xform ()$/,/^} # func_xform /c\ -func_xform ()\ -{\ - func_xform_result=${1%.*}.lo\ -} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_arith ()$/,/^} # func_arith /c\ -func_arith ()\ -{\ - func_arith_result=$(( $* ))\ -} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_len ()$/,/^} # func_len /c\ -func_len ()\ -{\ - func_len_result=${#1}\ -} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - -fi - -if test x"$lt_shell_append" = xyes; then - sed -e '/^func_append ()$/,/^} # func_append /c\ -func_append ()\ -{\ - eval "${1}+=\\${2}"\ -} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ -func_append_quoted ()\ -{\ -\ func_quote_for_eval "${2}"\ -\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ -} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - # Save a `func_append' function call where possible by direct use of '+=' - sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -else - # Save a `func_append' function call even when '+=' is not available - sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -fi - -if test x"$_lt_function_replace_fail" = x":"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 -$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} -fi - - mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" @@ -30179,8 +30669,8 @@ everything was set correctly. EOM -if test x"$inn_perl_module_warning" != x ; then - echo "Missing Perl modules: $inn_perl_module_warning." +if test x"$inn_perl_mod_warn" != x ; then + echo "Missing Perl module(s): $inn_perl_mod_warn." echo "You should install them for these programs to work fine." fi diff -Nurp inn-2.6.0/configure.ac inn-2.6.1/configure.ac --- inn-2.6.0/configure.ac 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/configure.ac 2016-11-27 06:03:42.000000000 -0800 @@ -1,5 +1,5 @@ dnl Process this file with Autoconf to produce a configure script. -dnl $Id: configure.ac 9839 2015-05-02 15:38:55Z iulius $ +dnl $Id: configure.ac 10046 2016-08-04 20:04:04Z iulius $ dnl dnl Please try to follow GNU conventions and Autoconf manual conventions as dnl much as possible in this file so that any macros we develop can be easily @@ -26,10 +26,10 @@ dnl bother checking for it. Compile-tim dnl useful information for someone debugging a problem than configure-time dnl errors. -AC_INIT([INN], [2.6.0], [inn-workers@lists.isc.org], +AC_INIT([INN], [2.6.1], [inn-workers@lists.isc.org], [inn], [https://www.isc.org/downloads/projects/]) AC_PREREQ([2.64]) -AC_REVISION([$Revision: 9839 $]) +AC_REVISION([$Revision: 10046 $]) AC_CONFIG_AUX_DIR([support]) dnl Lots of our macros are stored in separate files for ease of maintenance. @@ -168,8 +168,62 @@ if test x"$inn_enable_tagged_hash" = xye AC_MSG_ERROR([--enable-tagged-hash conflicts with --enable-largefiles.]) fi -dnl Checks for embedded interpreters. -INN_ARG_PERL +dnl Checks for a recent enough Perl interpreter. +dnl Embedded Perl requires 5.004. controlchan requires 5.004_03. Other +dnl things may work with 5.003, but make 5.004_03 the minimum level; anyone +dnl should really have at least that these days. +dnl We also check for useful Perl modules. +INN_PROG_PERL([5.004_03]) +INN_PERL_CHECK_MODULE([Encode], [], + [inn_perl_mod_warn="$inn_perl_mod_warn Encode (for controlchan)"]) +INN_PERL_CHECK_MODULE([GD], [], + [inn_perl_mod_warn="$inn_perl_mod_warn GD (for innreport's HTML output)"]) +INN_PERL_CHECK_MODULE([MIME::Parser], [], + [inn_perl_mod_warn="$inn_perl_mod_warn MIME::Parser (for controlchan)"]) + +dnl Support for embedded Perl. +AC_ARG_WITH([perl], + [AS_HELP_STRING([--with-perl], [Embedded Perl script support @<:@no@:>@])], + [AS_CASE([$withval], + [yes], + [DO_PERL=DO + AC_DEFINE([DO_PERL], [1], + [Define to compile in Perl script support.])], + [no], + [DO_PERL=DONT], + [AC_MSG_ERROR([invalid argument to --with-perl])])], + [DO_PERL=DONT]) + +dnl If we aren't compiling with large-file support, strip out the large file +dnl flags from inn_perl_core_flags; otherwise, innd/cc.c and lib/qio.c +dnl disagree over the size of an off_t. Since none of our calls into Perl +dnl use variables of type off_t, this should be harmless; in any event, it's +dnl going to be better than the innd/cc.c breakage. +dnl +dnl Also check to see if the compiler supports -Wno-extra and, if so, add it +dnl to PERL_WARNINGS. This has to be conditional since -Wno-extra is only +dnl supported in gcc 4.0 and later. +AS_IF([test x"$DO_PERL" = xDO], + [INN_LIB_PERL + 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 / /"` + done]) + inn_perl_core_flags=`echo "$inn_perl_core_flags" | sed 's/^ *//'` + inn_perl_core_flags=`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='']) + AC_SUBST([PERL_WARNINGS])], + [PERL_CPPFLAGS='' + PERL_LIBS='' + PERL_WARNINGS='' + AC_SUBST([PERL_CPPFLAGS]) + AC_SUBST([PERL_LIBS]) + AC_SUBST([PERL_WARNINGS])]) + +dnl Check for embedded Python interpreter. INN_ARG_PYTHON dnl Set some configuration file defaults from the machine hostname. @@ -203,6 +257,12 @@ dnl (like asprintf) that we use. [Define if compiling on Linux to get prototypes for some functions.]) ;; +dnl Detect BSD/OS for later use in nnrpd code. +*-bsdi*) + AC_DEFINE([INN_BSDI_HOST], [1], + [Define if compiling on BSD/OS systems.]) + ;; + dnl HP-UX's native compiler needs a special flag to turn on ANSI, and needs dnl -g on link as well as compile for debugging to work. *hpux*) @@ -324,11 +384,12 @@ if test x"$inn_enable_keywords" = x1 ; t fi dnl Handle optional libraries and probing for their locations and component -dnl libraries if needed. Support for zlib is handled later. +dnl libraries if needed. INN_LIB_BDB_OPTIONAL INN_LIB_KRB5_OPTIONAL INN_LIB_OPENSSL_OPTIONAL INN_LIB_SASL_OPTIONAL +INN_LIB_ZLIB_OPTIONAL dnl If Kerberos is found, define KRB5_AUTH to auth_krb5 so as to build dnl that program. In case neither et/com_err.h nor kerberosv5/com_err.h @@ -345,8 +406,8 @@ AS_IF([test x"$inn_use_KRB5" = xtrue], [AC_MSG_ERROR([cannot find usable com_err header])])])])])]) AC_SUBST([KRB5_AUTH]) -dnl If Berkeley DB is found, check the presence of its header. -dnl Also, do not build with zlib support unless Berkeley DB is enabled. +dnl If Berkeley DB is found, check the presence of its header and whether the +dnl Berkeley DB library has ndbm support. AS_IF([test x"$inn_use_BDB" = xtrue], [inn_BDB_incroot= inn_BDB_header_found= @@ -364,8 +425,7 @@ AS_IF([test x"$inn_use_BDB" = xtrue], [Define if you have the header file.])], [inn_BDB_header_found=no])]) AS_IF([test x"${inn_BDB_header_found}" = xyes], - [INN_LIB_BDB_NDBM - INN_LIB_ZLIB_OPTIONAL], + [INN_LIB_BDB_NDBM], [AS_IF([test x"$with_bdb" = x], [BDB_CPPFLAGS= BDB_LDFLAGS= @@ -591,7 +651,7 @@ dnl If we can't find any of the followin AC_REPLACE_FUNCS(asprintf getaddrinfo getnameinfo getpagesize \ inet_aton inet_ntop mkstemp pread pwrite reallocarray \ setenv seteuid strcasecmp \ - strlcat strlcpy strspn symlink) + strlcat strlcpy strspn strtok symlink) dnl Probe for fseeko and ftello, which take off_t instead of int. if test x"$inn_enable_largefiles" = xyes ; then @@ -654,9 +714,9 @@ everything was set correctly. EOM dnl Write a warning for missing Perl modules at the end of the output. -dnl $inn_perl_module_warning already has a leading space. -if test x"$inn_perl_module_warning" != x ; then - echo "Missing Perl modules: $inn_perl_module_warning." +dnl $inn_perl_mod_warn already has a leading space. +if test x"$inn_perl_mod_warn" != x ; then + echo "Missing Perl module(s): $inn_perl_mod_warn." echo "You should install them for these programs to work fine." fi diff -Nurp inn-2.6.0/contrib/README inn-2.6.1/contrib/README --- inn-2.6.0/contrib/README 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/contrib/README 2016-11-27 06:03:42.000000000 -0800 @@ -18,7 +18,7 @@ program does, see below, as well as the file (if any). In addition to these files, also see the contrib section of the INN FTP -site at for more software designed +site at for more software designed to work with INN. ------------------------- diff -Nurp inn-2.6.0/contrib/mlockfile.c inn-2.6.1/contrib/mlockfile.c --- inn-2.6.0/contrib/mlockfile.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/contrib/mlockfile.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: mlockfile.c 9716 2014-09-21 19:53:42Z iulius $ */ +/* $Id: mlockfile.c 10018 2016-05-05 12:45:13Z iulius $ */ /* Locks the files given on the command line into memory using mlock. This code has only been tested on Solaris and may not work on other @@ -151,6 +151,7 @@ main(int argc, char *argv[]) if (errno != 0) { fprintf(stderr, "%s: can't parse offset `%s' - %s\n", progname, at, strerror(errno)); + free(ml); return EX_USAGE; } if (*end == ':') { @@ -160,12 +161,14 @@ main(int argc, char *argv[]) if (errno != 0) { fprintf(stderr, "%s: can't parse length `%s' - %s\n", progname, at, strerror(errno)); + free(ml); return EX_USAGE; } } if (*end != '\0') { fprintf(stderr, "%s: unrecognised separator `%c'\n", progname, *end); + free(ml); return EX_USAGE; } } @@ -179,5 +182,6 @@ main(int argc, char *argv[]) inn_lock_files(ml); poll(NULL, 0, interval); } + free(ml); return EX_OSERR; } diff -Nurp inn-2.6.0/contrib/pullart.c inn-2.6.1/contrib/pullart.c --- inn-2.6.0/contrib/pullart.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/contrib/pullart.c 2016-11-27 06:03:42.000000000 -0800 @@ -105,20 +105,25 @@ int main (int argc, char *argv[]) if (Infile==NULL) { printf ("Cannot open input file.\n"); + free(obuffer); return 1; } if (argc>=4) header = argv[HEADER]; if (argc>=5) string = argv[STRING]; -if (*header=='\0') header=NULL; -if (*string=='\0') string=NULL; +if (header != NULL && *header == '\0') { + header = NULL; +} +if (string != NULL && *string == '\0') { + string = NULL; +} /*test*/ printf ("filename <%s>\n", argv[INFILE]); printf ("fileprefix <%s>\n", argv[FILEPREFIX]); -printf ("header <%s>\n", header); -printf ("string <%s>\n", string); +printf ("header <%s>\n", header != NULL ? header : NULL); +printf ("string <%s>\n", string != NULL ? string : NULL); /* Skip first 0x38000 16byte buffers */ @@ -194,6 +199,7 @@ printf ("string <%s>\n", string); } fclose (Infile); + free(obuffer); return 0; } diff -Nurp inn-2.6.0/contrib/reset-cnfs.c inn-2.6.1/contrib/reset-cnfs.c --- inn-2.6.0/contrib/reset-cnfs.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/contrib/reset-cnfs.c 2016-11-27 06:03:42.000000000 -0800 @@ -12,14 +12,14 @@ int main(int argc, char *argv[]) { int fd; - int i, j; + int i; char buf[512]; #ifdef DO_LARGEFILES struct stat64 st; #else struct stat st; #endif - int numwr; + size_t j, numwr; bool status = true; bzero(buf, sizeof(buf)); @@ -45,11 +45,12 @@ main(int argc, char *argv[]) * fuzz. buf has 512 bytes in it, therefore containing data * for (512 * 8) * 512 bytes of data. */ numwr = (st.st_size / (512*8) / sizeof(buf)) + 50; - printf("File %s: %lu %u\n", argv[i], - (long unsigned) st.st_size, numwr); + printf("File %s: %lu %lu\n", argv[i], + (unsigned long) st.st_size, (unsigned long) numwr); for (j = 0; j < numwr; j++) { if (!(j % 100)) { - printf("\t%d/%d\n", j, numwr); + printf("\t%lu/%lu\n", (unsigned long) j, + (unsigned long) numwr); } write(fd, buf, sizeof(buf)); } diff -Nurp inn-2.6.0/contrib/sample.init.systemd inn-2.6.1/contrib/sample.init.systemd --- inn-2.6.0/contrib/sample.init.systemd 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/contrib/sample.init.systemd 2016-11-27 06:03:42.000000000 -0800 @@ -1,10 +1,10 @@ -# $Id: sample.init.systemd 9769 2014-12-14 20:53:16Z iulius $ +# $Id: sample.init.systemd 10092 2016-11-04 22:09:56Z iulius $ # # This is a simple, bare-bones example of a systemd-style init script for INN. # [Unit] Description=InterNetNews Daemon -Documentation=http://www.eyrie.org/~eagle/software/inn/ +Documentation=https://www.eyrie.org/~eagle/software/inn/ After=syslog.target network.target ConditionPathExists=/etc/news/inn.conf diff -Nurp inn-2.6.0/control/controlchan.in inn-2.6.1/control/controlchan.in --- inn-2.6.0/control/controlchan.in 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/control/controlchan.in 2016-11-27 06:03:42.000000000 -0800 @@ -1,7 +1,7 @@ #! /usr/bin/perl -w # fixscript will replace this line with code to load INN::Config -## $Id: controlchan.in 9620 2014-03-15 16:49:11Z iulius $ +## $Id: controlchan.in 10076 2016-10-08 20:37:36Z iulius $ ## ## Channel feed program to route control messages to an appropriate handler. ## @@ -70,7 +70,7 @@ if (not -t 2) { } if ($use_syslog) { - if ($Sys::Syslog::VERSION < 0.15) { + if ($Sys::Syslog::VERSION lt 0.15) { eval "sub Sys::Syslog::_PATH_LOG { '/dev/log' }" if $^O eq 'dec_osf'; Sys::Syslog::setlogsock('unix') if $^O =~ /linux|dec_osf|freebsd|darwin/; } diff -Nurp inn-2.6.0/control/perl-nocem.in inn-2.6.1/control/perl-nocem.in --- inn-2.6.0/control/perl-nocem.in 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/control/perl-nocem.in 2016-11-27 06:03:42.000000000 -0800 @@ -56,7 +56,7 @@ my $logfile = $INN::Config::pathlog . '/ eval { require Sys::Syslog; import Sys::Syslog; $use_syslog = 1; }; if ($use_syslog) { - if ($Sys::Syslog::VERSION < 0.15) { + if ($Sys::Syslog::VERSION lt 0.15) { eval "sub Sys::Syslog::_PATH_LOG { '/dev/log' }" if $^O eq 'dec_osf'; Sys::Syslog::setlogsock('unix') if $^O =~ /linux|dec_osf|freebsd|darwin/; } @@ -628,7 +628,7 @@ Copyright 2000 by Miquel van Smoorenburg Copyright 2001 by Marco d'Itri . -$Id: perl-nocem.in 9639 2014-05-17 06:24:44Z iulius $ +$Id: perl-nocem.in 10076 2016-10-08 20:37:36Z iulius $ =head1 SEE ALSO diff -Nurp inn-2.6.0/control/pgpverify.in inn-2.6.1/control/pgpverify.in --- inn-2.6.0/control/pgpverify.in 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/control/pgpverify.in 2016-11-27 06:03:42.000000000 -0800 @@ -910,7 +910,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBI gpgv(1), pgp(1). -L is where the most recent versions of +L is where the most recent versions of B and B live, along with PGP public keys used for hierarchy administration. diff -Nurp inn-2.6.0/control/signcontrol.in inn-2.6.1/control/signcontrol.in --- inn-2.6.0/control/signcontrol.in 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/control/signcontrol.in 2016-11-27 06:03:42.000000000 -0800 @@ -1,7 +1,12 @@ #! /usr/bin/perl -w # written April 1996, (David C Lawrence) # Currently maintained by Russ Allbery -# Version 1.8, 2003-07-06 +# Version 1.9, 2016-10-17 +# +# Changes from 1.8 -> 1.9 +# -- Add use strict and explicitly import LOCK_EX. +# -- Fix error reporting around lock files with PGP. +# -- Use https for pgpcontrol URLs. # # Changes from 1.6 -> 1.8 # -- Added support for GnuPG. @@ -80,9 +85,9 @@ my %force; $force{'Path'} = 'bounce-back'; $force{'From'} = 'YOUR_ADDRESS_AND_NAME'; $force{'Approved'} = 'ADDRESS_FOR_Approved_HEADER'; -$force{'X-Info'}='ftp://ftp.isc.org/pub/pgpcontrol/README.html' +$force{'X-Info'}='https://ftp.isc.org/pub/pgpcontrol/README.html' . "\n\t" - . 'ftp://ftp.isc.org/pub/pgpcontrol/README'; + . 'https://ftp.isc.org/pub/pgpcontrol/README'; # these headers are acceptable in input, or if not present then will be # created with the given value. None are enabled by default, because they diff -Nurp inn-2.6.0/doc/FAQ inn-2.6.1/doc/FAQ --- inn-2.6.0/doc/FAQ 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/FAQ 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -$Id: FAQ 9943 2015-09-12 12:40:23Z iulius $ +$Id: FAQ 10131 2016-11-27 13:57:13Z iulius $ From: Russ Allbery Subject: INN 2.x FAQ @@ -7,7 +7,7 @@ Organization: The Eyrie Expires: 35d Archive-name: usenet/software/inn2-faq -URL: http://www.eyrie.org/~eagle/faqs/inn.html +URL: https://www.eyrie.org/~eagle/faqs/inn.html Posting-frequency: monthly This FAQ is intended to answer frequently asked questions concerning the @@ -31,7 +31,7 @@ quicker responses by posting to news.sof quirky way in which I read mail and news, from me). This FAQ is posted monthly to news.software.nntp, and is available on the -web at . +web at . ------------------------------ @@ -138,7 +138,7 @@ beginner's introduction, see the news.ne Subject: 1.2. What is the current version? -The most recently released version of INN is 2.6.0. +The most recently released version of INN is 2.6.1. INN development proceeds in two branches, as with many other free software projects. The STABLE branch is maintenance of the most recently released @@ -158,7 +158,7 @@ a STABLE snapshot before September 12th, Subject: 1.3. Where can I get INN? -The download site for INN is . In that +The download site for INN is . In that directory are the various releases of INN, some additional documentation (particularly of security holes), the original INN Usenix paper. @@ -192,7 +192,7 @@ and reading their individual man pages. There are HTML conversions of the documentation that comes with recent versions of INN available at: - + For additional documentation beyond what is distributed with INN, follow the links suggested in the above page. @@ -333,7 +333,7 @@ that you have a relatively current sourc to check out the current source from Subversion; just point a Subversion client at: - http://inn.eyrie.org/svn/ + https://inn.eyrie.org/svn/ This repository is a read-only mirror that can lag up to an hour behind the working repository. Read the HACKING file at the top of the INN diff -Nurp inn-2.6.0/doc/checklist inn-2.6.1/doc/checklist --- inn-2.6.0/doc/checklist 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/checklist 2016-11-27 06:03:42.000000000 -0800 @@ -1,6 +1,6 @@ Introduction - $Id: checklist.pod 9937 2015-09-02 12:44:39Z iulius $ + $Id: checklist.pod 10097 2016-11-04 22:19:07Z iulius $ This is an installation checklist written by Rebecca Ore, intended to be the beginning of a different presentation of the information in INSTALL, @@ -64,8 +64,8 @@ Setup Compile * Download the INN tarball and unpack. Make sure that you download - the last release from or a snapshot - from . + the last release from or a snapshot + from . * Work out configure options ("./configure --help" for a list). If you aren't working out of /usr/local/news, or want to put some files @@ -143,11 +143,11 @@ Configure * You can now import an active file (*pathdb in inn.conf*/active) and run inncheck again. You may want to look at - and only keep the lines - corresponding to the newsgroups you are interested in. Also import - a newsgroups file which contains the descriptions of these + and only keep the + lines corresponding to the newsgroups you are interested in. Also + import a newsgroups file which contains the descriptions of these newsgroups (see for instance - ). + ). Note that it is not necessary to do that now. INN is shipped with minimal active and newsgroups files and you can add newsgroups later diff -Nurp inn-2.6.0/doc/man/INN__Config.3pm inn-2.6.1/doc/man/INN__Config.3pm --- inn-2.6.0/doc/man/INN__Config.3pm 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/INN__Config.3pm 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "INN::Config 3pm" -.TH INN::Config 3pm "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH INN::Config 3pm "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -135,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 to use \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 @@ -200,7 +209,7 @@ if you specify what you want to import: .Ve .PP Note that a legacy \fIinnshellvars.pl\fR is also provided in \fIpathnews\fR/lib -for compatibility reasons with old Perl scripts not shipped with \s-1INN\s0. +for compatibility reasons with old Perl scripts not shipped with \s-1INN.\s0 It was used by versions of \s-1INN\s0 anterior to 2.5.0. The corresponding scripts for Shell and Tcl are, however, still in use: \fIinnshellvars\fR and \fIinnshellvars.tcl\fR. They offer the same capabilities as this diff -Nurp inn-2.6.0/doc/man/INN__Utils__Shlock.3pm inn-2.6.1/doc/man/INN__Utils__Shlock.3pm --- inn-2.6.0/doc/man/INN__Utils__Shlock.3pm 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/INN__Utils__Shlock.3pm 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "INN::Utils::Shlock 3pm" -.TH INN::Utils::Shlock 3pm "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH INN::Utils::Shlock 3pm "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.0/doc/man/active.5 inn-2.6.1/doc/man/active.5 --- inn-2.6.0/doc/man/active.5 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/active.5 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "ACTIVE 5" -.TH ACTIVE 5 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH ACTIVE 5 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -133,7 +142,7 @@ 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 +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; this file is then updated and a backup stored in \fIpathdb\fR/active.old. Note diff -Nurp inn-2.6.0/doc/man/active.times.5 inn-2.6.1/doc/man/active.times.5 --- inn-2.6.0/doc/man/active.times.5 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/active.times.5 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "ACTIVE.TIMES 5" -.TH ACTIVE.TIMES 5 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH ACTIVE.TIMES 5 "2016-10-07" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -164,8 +173,8 @@ 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 \-c 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 (\fIconvdate\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 @@ -176,7 +185,7 @@ the time is not necessarily the same on Written by Rich \f(CW$alz\fR for InterNetNews. Converted to \&\s-1POD\s0 by Russ Allbery . .PP -\&\f(CW$Id:\fR active.times.pod 9767 2014\-12\-07 21:13:43Z iulius $ +\&\f(CW$Id:\fR active.times.pod 9971 2015\-12\-10 20:30:10Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIactive\fR\|(5), \fIconvdate\fR\|(1), \fIctlinnd\fR\|(8), \fIgetlist\fR\|(1), \fIinn.conf\fR\|(5), \fIinnd\fR\|(8), diff -Nurp inn-2.6.0/doc/man/actsync.8 inn-2.6.1/doc/man/actsync.8 --- inn-2.6.0/doc/man/actsync.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/actsync.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "ACTSYNC 8" -.TH ACTSYNC 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH ACTSYNC 8 "2016-11-06" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -170,8 +179,8 @@ If either \fIhost\fR argument begins wit 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 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 -; 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. @@ -257,7 +266,7 @@ written to standard output will be in \f \&\s-1INN\s0 comes with default values of \f(CW\*(C`ftp.isc.org\*(C'\fR for and \&\f(CW\*(C`/pub/usenet/CONFIG/active.gz\*(C'\fR for . You can read about the policies used for maintaining that \fIactive\fR file at -. Consider synchronizing +. Consider synchronizing from this file on a daily basis by using \fBcron\fR. .SH "OPTIONS" .IX Header "OPTIONS" @@ -887,7 +896,7 @@ Written by Landon Curt Noll . Converted to \&\s-1POD\s0 by Russ Allbery . .PP -\&\f(CW$Id:\fR actsync.pod 9767 2014\-12\-07 21:13:43Z iulius $ +\&\f(CW$Id:\fR actsync.pod 10097 2016\-11\-04 22:19:07Z iulius $ .PP By Landon Curt Noll (chongo was here /\e../\e). .PP diff -Nurp inn-2.6.0/doc/man/archive.8 inn-2.6.1/doc/man/archive.8 --- inn-2.6.0/doc/man/archive.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/archive.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "ARCHIVE 8" -.TH ARCHIVE 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH ARCHIVE 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -205,7 +214,7 @@ destination file name, the Message-ID: h the message, separated by spaces. If either header is missing (normally not possible if the article was accepted by \fBinnd\fR), it will be replaced by \f(CW\*(C`\*(C'\fR. The headers will be transformed using the same rules as -are used to generate overview data (unfolded and then with tabs, \s-1CR\s0, and +are used to generate overview data (unfolded and then with tabs, \s-1CR,\s0 and \&\s-1LF\s0 replaced by spaces). .IP "\fB\-p\fR \fIpattern\fR" 4 .IX Item "-p pattern" diff -Nurp inn-2.6.0/doc/man/auth_krb5.8 inn-2.6.1/doc/man/auth_krb5.8 --- inn-2.6.0/doc/man/auth_krb5.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/auth_krb5.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "AUTH_KRB5 8" -.TH AUTH_KRB5 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH AUTH_KRB5 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -136,7 +145,7 @@ auth_krb5 \- nnrpd Kerberos\ v5 authenti \&\fBauth_krb5\fR [\fB\-i\fR \fIinstance\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" -This program does authentication for \fBnnrpd\fR against a Kerberos\ v5\ \s-1KDC\s0. +This program does authentication for \fBnnrpd\fR against a Kerberos\ v5\ \s-1KDC.\s0 This is \s-1NOT\s0 real Kerberos authentication using service tickets; instead, a username and password is used to attempt to obtain a Kerberos\ v5\ \s-1TGT\s0 to confirm that they are valid. As such, this authenticator assumes that @@ -162,7 +171,7 @@ transformed into \f(CW\*(C`user/nntp\*(C Since giving one's password to \fBnnrpd\fR is not as secure as normal Kerberos authentication, this option supports a configuration where all users are given a separate instance just for news authentication with its -own password, so their regular account password isn't exposed via \s-1NNTP\s0. +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 diff -Nurp inn-2.6.0/doc/man/batcher.8 inn-2.6.1/doc/man/batcher.8 --- inn-2.6.0/doc/man/batcher.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/batcher.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "BATCHER 8" -.TH BATCHER 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH BATCHER 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -173,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 @@ -256,7 +265,7 @@ file as described above. .SH "HISTORY" .IX Header "HISTORY" Written by Rich \f(CW$alz\fR for InterNetNews. Rewritten by -Russ Allbery in \s-1POD\s0. +Russ Allbery in \s-1POD.\s0 .PP \&\f(CW$Id:\fR batcher.pod 9767 2014\-12\-07 21:13:43Z iulius $ .SH "SEE ALSO" diff -Nurp inn-2.6.0/doc/man/buffchan.8 inn-2.6.1/doc/man/buffchan.8 --- inn-2.6.0/doc/man/buffchan.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/buffchan.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "BUFFCHAN 8" -.TH BUFFCHAN 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH BUFFCHAN 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -194,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 @@ -244,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 diff -Nurp inn-2.6.0/doc/man/buffindexed.conf.5 inn-2.6.1/doc/man/buffindexed.conf.5 --- inn-2.6.0/doc/man/buffindexed.conf.5 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/buffindexed.conf.5 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "BUFFINDEXED.CONF 5" -.TH BUFFINDEXED.CONF 5 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH BUFFINDEXED.CONF 5 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -181,7 +190,7 @@ be longer than 63 characters. does not specify a special device, the file size of the buffer must be \ *\ 1024\ bytes. If it does specify a special device, that device must have at least space available. For more -information on setting up the buffers, see \*(L"\s-1CREATING\s0 \s-1BUFFERS\s0\*(R". +information on setting up the buffers, see \*(L"\s-1CREATING BUFFERS\*(R"\s0. .PP An example of \fIbuffindexed.conf\fR file can be: .PP diff -Nurp inn-2.6.0/doc/man/ckpasswd.8 inn-2.6.1/doc/man/ckpasswd.8 --- inn-2.6.0/doc/man/ckpasswd.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/ckpasswd.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "CKPASSWD 8" -.TH CKPASSWD 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH CKPASSWD 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -150,18 +159,18 @@ these days most systems no longer make r \&\fIgetpwnam\fR\|(3) (some still do if and only if the program calling \fIgetpwnam\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 system. .PP -When using any method other than \s-1PAM\s0, \fBckpasswd\fR expects all passwords to +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 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. +\&\s-1PAM.\s0 .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-d\fR \fIdatabase\fR" 4 @@ -263,7 +272,7 @@ specifically audited for such uses! It 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\s0 \s-1CONSIDERATIONS\s0\*(R" in \fIreaders.conf\fR\|(5) for +security reasons. See \*(L"\s-1SECURITY CONSIDERATIONS\*(R"\s0 in \fIreaders.conf\fR\|(5) for discussion. .IP "\fB\-u\fR \fIusername\fR" 4 .IX Item "-u username" diff -Nurp inn-2.6.0/doc/man/cnfsheadconf.8 inn-2.6.1/doc/man/cnfsheadconf.8 --- inn-2.6.0/doc/man/cnfsheadconf.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/cnfsheadconf.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "CNFSHEADCONF 8" -.TH CNFSHEADCONF 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH CNFSHEADCONF 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.0/doc/man/cnfsstat.8 inn-2.6.1/doc/man/cnfsstat.8 --- inn-2.6.0/doc/man/cnfsstat.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/cnfsstat.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "CNFSSTAT 8" -.TH CNFSSTAT 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH CNFSSTAT 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -159,7 +168,7 @@ Print usage information and exit. .IX Item "-i seconds" With this option, \fBcnfsstat\fR has an initial sleep of \fIseconds\fR seconds at startup. This is useful when \fBcnfsstat\fR is started at -the same time as \s-1INN\s0, so that it can wait a little before beginning +the same time as \s-1INN,\s0 so that it can wait a little before beginning performing its checks. .IP "\fB\-l\fR [\fIseconds\fR]" 4 .IX Item "-l [seconds]" @@ -172,7 +181,7 @@ At each iteration, \fBcnfsstat\fR checks if needed. .IP "\fB\-m\fR \fIbuffer\fR" 4 .IX Item "-m buffer" -Print information about the specified buffer in a format suitable for \s-1MRTG\s0. +Print information about the specified buffer in a format suitable for \s-1MRTG.\s0 .IP "\fB\-p\fR" 4 .IX Item "-p" Print an \s-1MRTG\s0 config file. diff -Nurp inn-2.6.0/doc/man/control.ctl.5 inn-2.6.1/doc/man/control.ctl.5 --- inn-2.6.0/doc/man/control.ctl.5 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/control.ctl.5 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "CONTROL.CTL 5" -.TH CONTROL.CTL 5 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH CONTROL.CTL 5 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -170,7 +179,7 @@ messages so that new descriptions could .Ve .Sp means that a description for a newsgroup in the Chinese cn.* -hierarchy will be decoded as though it were encoded in \s-1GB18030\s0, +hierarchy will be decoded as though it were encoded in \s-1GB18030,\s0 unless a charset is specified in the control message (in such a case, the charset mentioned in the message is used). However, it is possible to override the mentioned charset if \f(CW\*(C`=force\*(C'\fR is appended after @@ -200,9 +209,9 @@ 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. +in \s-1UTF\-8.\s0 .Sp The last matching line in \fIcontrol.ctl\fR will be used. .IP "\fB/maxdocheckgroups/\fR" 4 @@ -435,7 +444,7 @@ The newsgroup foo.bar4 is silently creat the description \*(L"A newsgroup you want.\*(R" added to the \fInewsgroups\fR file. In the absence of encoding values (either in the checkgroups message or in \fB/encoding/\fR and \fB/localencoding\fR), the default is -to decode the sentence as \s-1CP1242\s0 and reencode it as \s-1UTF\-8\s0. +to decode the sentence as \s-1CP1242\s0 and reencode it as \s-1UTF\-8.\s0 .Sp If \f(CW\*(C`doit=mail\*(C'\fR was used, a mail would be sent to the news administrator to inform him that foo.bar4 was successfully created. diff -Nurp inn-2.6.0/doc/man/controlchan.8 inn-2.6.1/doc/man/controlchan.8 --- inn-2.6.0/doc/man/controlchan.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/controlchan.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "CONTROLCHAN 8" -.TH CONTROLCHAN 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH CONTROLCHAN 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.0/doc/man/convdate.1 inn-2.6.1/doc/man/convdate.1 --- inn-2.6.0/doc/man/convdate.1 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/convdate.1 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "CONVDATE 1" -.TH CONVDATE 1 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH CONVDATE 1 "2016-10-07" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -155,14 +164,14 @@ rather than a date. Output a valid Usenet Date: header instead of the results of \fIctime\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. +date will be in \s-1UTC,\s0 but see the \fB\-l\fR option. .IP "\fB\-h\fR" 4 .IX Item "-h" Print usage information and exit. .IP "\fB\-l\fR" 4 .IX Item "-l" Only makes sense in combination with \fB\-d\fR. If given, Date: headers -generated will use the local time zone instead of \s-1UTC\s0. +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 @@ -198,7 +207,7 @@ page dating from 1991 and were run in th .PP .Vb 2 \& % convdate \-dc 666198000 -\& Sun, 10 Feb 1991 15:00:00 +0000 (UTC) +\& Sun, 10 Feb 1991 15:00:00 \-0000 (UTC) \& \& % env TZ=PST8PDT convdate \-dlc 666198000 \& Sun, 10 Feb 1991 07:00:00 \-0800 (PST) @@ -214,7 +223,7 @@ determine (or at least override) the loc Written by Rich \f(CW$alz\fR , rewritten and updated by Russ Allbery for the \fB\-d\fR and \fB\-l\fR flags. .PP -\&\f(CW$Id:\fR convdate.pod 9767 2014\-12\-07 21:13:43Z iulius $ +\&\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). diff -Nurp inn-2.6.0/doc/man/ctlinnd.8 inn-2.6.1/doc/man/ctlinnd.8 --- inn-2.6.0/doc/man/ctlinnd.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/ctlinnd.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "CTLINND 8" -.TH CTLINND 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH CTLINND 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -399,7 +408,7 @@ connections are closed, but the history be used for short-term locks, such as when replacing the history database. If the server was not started with the \fB\-n y\fR flag, this command also does the equivalent of a \f(CW\*(C`readers\*(C'\fR command with \f(CW\*(C`no\*(C'\fR as the -flag and \fIreason\fR as the text, encoded in \s-1UTF\-8\s0. +flag and \fIreason\fR as the text, encoded in \s-1UTF\-8.\s0 .IP "perl \fIflag\fR" 4 .IX Item "perl flag" Enable or disable Perl filtering. This command is only available if \s-1INN\s0 @@ -419,7 +428,7 @@ filtering is enabled; if it starts with Allow or disallow readers. If \fIflag\fR starts with the letter \f(CW\*(C`n\*(C'\fR, then reading is disallowed by causing the server to pass \fItext\fR as the value of the \fB\-r\fR flag to \fBnnrpd\fR. If \fIflag\fR starts with the letter \f(CW\*(C`y\*(C'\fR and -\&\fItext\fR is either an empty string or the same string, encoded in \s-1UTF\-8\s0, that +\&\fItext\fR is either an empty string or the same string, encoded in \s-1UTF\-8,\s0 that was used when reading was disabled, reading will be re-enabled. .Sp This command has no effect if \fBnnrpd\fR is being run separately rather than @@ -427,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" @@ -479,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. @@ -527,7 +536,7 @@ server is throttled cannot be done.) .Sp If the server was not started with the \fB\-n y\fR flag, then this command also does the equivalent of a \f(CW\*(C`readers\*(C'\fR command with \f(CW\*(C`no\*(C'\fR as the -flag and \fIreason\fR as the text, encoded in \s-1UTF\-8\s0. +flag and \fIreason\fR as the text, encoded in \s-1UTF\-8.\s0 .IP "timer (off | \fIinterval\fR)" 4 .IX Item "timer (off | interval)" Adjust the frequency with which \fBinnd\fR reports performance information to diff -Nurp inn-2.6.0/doc/man/cvtbatch.8 inn-2.6.1/doc/man/cvtbatch.8 --- inn-2.6.0/doc/man/cvtbatch.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/cvtbatch.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "CVTBATCH 8" -.TH CVTBATCH 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH CVTBATCH 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.0/doc/man/cycbuff.conf.5 inn-2.6.1/doc/man/cycbuff.conf.5 --- inn-2.6.0/doc/man/cycbuff.conf.5 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/cycbuff.conf.5 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "CYCBUFF.CONF 5" -.TH CYCBUFF.CONF 5 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH CYCBUFF.CONF 5 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -134,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. @@ -151,7 +160,7 @@ cycbuff larger than 2\ \s-1GB\s0 on 32\- 64\-bit platforms that aren't Linux), you need to build \s-1INN\s0 with the \&\fB\-\-enable\-largefiles\fR option. .PP -For information about how to configure \s-1INN\s0 to use \s-1CNFS\s0, see +For information about how to configure \s-1INN\s0 to use \s-1CNFS,\s0 see \&\fIstorage.conf\fR\|(5). .PP Blank lines and lines beginning with a hash sign (\f(CW\*(C`#\*(C'\fR) are ignored. All @@ -174,7 +183,7 @@ Sets the number of articles written befo written back to disk to . Under most operating systems, the header doesn't have to be written to disk for the updated data to be available to other processes on the same system that are reading articles -out of \s-1CNFS\s0, but any accesses to the \s-1CNFS\s0 cycbuffs over \s-1NFS\s0 will only see +out of \s-1CNFS,\s0 but any accesses to the \s-1CNFS\s0 cycbuffs over \s-1NFS\s0 will only see the data present at the last write of the header. After a system crash, all updates since the last write of the \s-1CNFS\s0 header may be lost. The default value, if this line is omitted, is \f(CW25\fR, meaning that the header is @@ -194,11 +203,11 @@ device, and must be no longer than 63 ch the buffer in kilobytes (1\ \s-1KB\s0 is 1024 bytes). If is not a block device, it should be \ *\ 1024\ bytes long. .Sp -If you're trying to stay under 2\ \s-1GB\s0, keep your sizes below \f(CW2097152\fR. +If you're trying to stay under 2\ \s-1GB,\s0 keep your sizes below \f(CW2097152\fR. .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. @@ -238,7 +247,7 @@ example, \f(CW\*(C`ctlinnd xexec innd\*( cycbuff, but neither will any articles expire from it. After you no longer need the articles in the cycbuff, just remove it entirely from \&\fIcycbuff.conf\fR. Then all of the articles will appear to have been -deleted to \s-1INN\s0, and the next nightly expire run will clean up any +deleted to \s-1INN,\s0 and the next nightly expire run will clean up any remaining references to them. .PP Adding a new cycbuff just requires creating it (see below), adding a @@ -269,16 +278,16 @@ Use block devices directly. If your ope at last report does not), this is the recommended method since you can avoid all of the native file system overhead. .Sp -Note that some OSes do not support files larger than 2\ \s-1GB\s0, which will +Note that some OSes do not support files larger than 2\ \s-1GB,\s0 which will limit the size you can make a single cycbuff, but you can still combine many cycbuffs into each metacycbuff. Very old versions of Linux (before 2.4 kernels, that raised the limit to 2\ \s-1TB\s0) are known to have this limitation; FreeBSD does not. Some OSes that support large files don't support direct access to block devices for large partitions (Solaris prior to Solaris\ 7, or not running in 64\-bit mode, is in this category); on those OSes, -if you want cycbuffs over 2\ \s-1GB\s0, you'll have to use regular files. -If in doubt, keep your cycbuffs smaller than 2\ \s-1GB\s0. +if you want cycbuffs over 2\ \s-1GB,\s0 you'll have to use regular files. +If in doubt, keep your cycbuffs smaller than 2\ \s-1GB.\s0 .Sp -Partition the disk to make each partition equal to or smaller than 2\ \s-1GB\s0. +Partition the disk to make each partition equal to or smaller than 2\ \s-1GB.\s0 If you're using Solaris, set up your partitions to avoid the first cylinder of the disk (or otherwise the cycbuff header will overwrite the disk partition table and render the cycbuffs inaccessible). Then, create diff -Nurp inn-2.6.0/doc/man/distrib.pats.5 inn-2.6.1/doc/man/distrib.pats.5 --- inn-2.6.0/doc/man/distrib.pats.5 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/distrib.pats.5 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "DISTRIB.PATS 5" -.TH DISTRIB.PATS 5 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH DISTRIB.PATS 5 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -156,7 +165,7 @@ header of a posted article, if this line no Distribution: header was supplied by the user. It can be an empty string, specifying that no Distribution: header should be added. If it is not empty, it is better to only use US-ASCII characters for that field; -otherwise, make sure it is encoded in \s-1UTF\-8\s0. +otherwise, make sure it is encoded in \s-1UTF\-8.\s0 .PP When a post is received by \fBnnrpd\fR that does not already contain a Distribution: header, each newsgroup to which an article is posted will be diff -Nurp inn-2.6.0/doc/man/distributions.5 inn-2.6.1/doc/man/distributions.5 --- inn-2.6.0/doc/man/distributions.5 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/distributions.5 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "DISTRIBUTIONS 5" -.TH DISTRIBUTIONS 5 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH DISTRIBUTIONS 5 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -154,9 +163,9 @@ instance: .PP Blank lines and lines beginning with a number sign (\f(CW\*(C`#\*(C'\fR) are ignored. .PP -Any client that issues the \s-1LIST\s0 \s-1DISTRIBUTIONS\s0 command obtain these -recommended values, if available. However, be aware that use of the \s-1LIST\s0 -\&\s-1DISTRIBUTIONS\s0 command is not widespread (though documented in \s-1RFC\s0\ 6048) +Any client that issues the \s-1LIST DISTRIBUTIONS\s0 command obtain these +recommended values, if available. However, be aware that use of the \s-1LIST +DISTRIBUTIONS\s0 command is not widespread (though documented in \s-1RFC\s0\ 6048) and most news clients will never ask for this file. .PP If this file is empty, it is not an error. The server will just send diff -Nurp inn-2.6.0/doc/man/docheckgroups.8 inn-2.6.1/doc/man/docheckgroups.8 --- inn-2.6.0/doc/man/docheckgroups.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/docheckgroups.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "DOCHECKGROUPS 8" -.TH DOCHECKGROUPS 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH DOCHECKGROUPS 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.0/doc/man/domain.8 inn-2.6.1/doc/man/domain.8 --- inn-2.6.0/doc/man/domain.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/domain.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "DOMAIN 8" -.TH DOMAIN 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH DOMAIN 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.0/doc/man/expire.8 inn-2.6.1/doc/man/expire.8 --- inn-2.6.0/doc/man/expire.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/expire.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "EXPIRE 8" -.TH EXPIRE 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH EXPIRE 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.0/doc/man/expire.ctl.5 inn-2.6.1/doc/man/expire.ctl.5 --- inn-2.6.0/doc/man/expire.ctl.5 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/expire.ctl.5 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "EXPIRE.CTL 5" -.TH EXPIRE.CTL 5 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH EXPIRE.CTL 5 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.0/doc/man/expireover.8 inn-2.6.1/doc/man/expireover.8 --- inn-2.6.0/doc/man/expireover.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/expireover.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "EXPIREOVER 8" -.TH EXPIREOVER 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH EXPIREOVER 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.0/doc/man/expirerm.8 inn-2.6.1/doc/man/expirerm.8 --- inn-2.6.0/doc/man/expirerm.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/expirerm.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "EXPIRERM 8" -.TH EXPIRERM 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH EXPIRERM 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.0/doc/man/fastrm.1 inn-2.6.1/doc/man/fastrm.1 --- inn-2.6.0/doc/man/fastrm.1 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/fastrm.1 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "FASTRM 1" -.TH FASTRM 1 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH FASTRM 1 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.0/doc/man/getlist.1 inn-2.6.1/doc/man/getlist.1 --- inn-2.6.0/doc/man/getlist.1 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/getlist.1 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "GETLIST 1" -.TH GETLIST 1 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH GETLIST 1 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -192,7 +201,7 @@ Connect to the server \fIhost\fR rather Connect to the port \fIport\fR, which is by default \f(CW119\fR. .IP "\fB\-R\fR" 4 .IX Item "-R" -Try to switch to \fBnnrpd\fR with a \s-1MODE\s0 \s-1READER\s0 command before issuing the +Try to switch to \fBnnrpd\fR with a \s-1MODE READER\s0 command before issuing the \&\s-1LIST\s0 request. It can be useful in case a feeding access exists for the news server: more information can be retrieved from \fBnnrpd\fR, compared with \fBinnd\fR. diff -Nurp inn-2.6.0/doc/man/grephistory.1 inn-2.6.1/doc/man/grephistory.1 --- inn-2.6.0/doc/man/grephistory.1 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/grephistory.1 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "GREPHISTORY 1" -.TH GREPHISTORY 1 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH GREPHISTORY 1 "2016-10-07" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -225,7 +234,7 @@ With \fBsm\fR, we can retrieve the artic \& Date: Mon, 08 Jun 2009 20:25:12 \-0700 \& \& % convdate \-dc 1244517912 -\& Tue, 9 Jun 2009 03:25:12 +0000 (UTC) +\& Tue, 9 Jun 2009 03:25:12 \-0000 (UTC) .Ve .PP It matches the number recorded in history as for its posting date. @@ -234,7 +243,7 @@ It matches the number recorded in histor Written by Rich \f(CW$alz\fR for InterNetNews. Rewritten in \&\s-1POD\s0 by Russ Allbery . .PP -\&\f(CW$Id:\fR grephistory.pod 9767 2014\-12\-07 21:13:43Z iulius $ +\&\f(CW$Id:\fR grephistory.pod 9971 2015\-12\-10 20:30:10Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIhistory\fR\|(5), \fIinn.conf\fR\|(5), \fIsm\fR\|(1). diff -Nurp inn-2.6.0/doc/man/ident.8 inn-2.6.1/doc/man/ident.8 --- inn-2.6.0/doc/man/ident.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/ident.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "IDENT 8" -.TH IDENT 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH IDENT 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.0/doc/man/incoming.conf.5 inn-2.6.1/doc/man/incoming.conf.5 --- inn-2.6.0/doc/man/incoming.conf.5 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/incoming.conf.5 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "INCOMING.CONF 5" -.TH INCOMING.CONF 5 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH INCOMING.CONF 5 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -273,7 +282,7 @@ it can. .IP "\fInoresendid\fR" 4 .IX Item "noresendid" This key requires a boolean value. It defines whether \fBinnd\fR should -send \f(CW438\fR (response to \s-1CHECK\s0, in streaming mode) or \f(CW435\fR (response +send \f(CW438\fR (response to \s-1CHECK,\s0 in streaming mode) or \f(CW435\fR (response to \s-1IHAVE\s0 in non-streaming mode) responses instead of \f(CW431\fR (response to \s-1CHECK\s0) or \f(CW436\fR (response to \s-1IHAVE\s0) if a message is offered that is already received from another peer. The deferral feature can be @@ -284,7 +293,7 @@ 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\s0 \s-1USER/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" diff -Nurp inn-2.6.0/doc/man/inews.1 inn-2.6.1/doc/man/inews.1 --- inn-2.6.0/doc/man/inews.1 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/inews.1 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "INEWS 1" -.TH INEWS 1 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH INEWS 1 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.0/doc/man/inn-radius.conf.5 inn-2.6.1/doc/man/inn-radius.conf.5 --- inn-2.6.0/doc/man/inn-radius.conf.5 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/inn-radius.conf.5 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "INN-RADIUS.CONF 5" -.TH INN-RADIUS.CONF 5 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH INN-RADIUS.CONF 5 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.0/doc/man/inn.conf.5 inn-2.6.1/doc/man/inn.conf.5 --- inn-2.6.0/doc/man/inn.conf.5 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/inn.conf.5 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "INN.CONF 5" -.TH INN.CONF 5 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH INN.CONF 5 "2016-10-07" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -182,7 +191,7 @@ new server are discussed in \fI\s-1INSTA .SS "General Settings" .IX Subsection "General Settings" These parameters are used by a wide variety of different components of -\&\s-1INN\s0. +\&\s-1INN.\s0 .IP "\fIdomain\fR" 4 .IX Item "domain" This should be the domain name of the local host. It should not have a @@ -280,7 +289,7 @@ 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\fIgetaddrinfo\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 @@ -423,7 +432,7 @@ 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\s0 5537 (\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 @@ -510,7 +519,7 @@ for each new article at the time of arri .Sp it implies that \fBnnrpd\fR will advertise \f(CW\*(C`Path:full\*(C'\fR and \&\f(CW\*(C`Injection\-Info:full\*(C'\fR as the ninth and tenth fields in response -to \s-1LIST\s0 \s-1OVERVIEW\s0.FMT and that these two headers will be stored in the +to \s-1LIST OVERVIEW.FMT\s0 and that these two headers will be stored in the overview database for each new article. .Sp The default value is an empty list (no additional fields are stored). @@ -555,8 +564,8 @@ to expiration can be unpredictable with The \f(CW\*(C`To\*(C'\fR value must be added at the end of the list because order matters and fields mentioned in \fIextraoverviewhidden\fR are generated after those mentioned in \fIextraoverviewadvertised\fR. -\&\fBnnrpd\fR will now advertise \f(CW\*(C`To:full\*(C'\fR in response to the \s-1LIST\s0 -\&\s-1OVERVIEW\s0.FMT command (\f(CW\*(C`full\*(C'\fR indicates that the header appears +\&\fBnnrpd\fR will now advertise \f(CW\*(C`To:full\*(C'\fR in response to the \s-1LIST +OVERVIEW.FMT\s0 command (\f(CW\*(C`full\*(C'\fR indicates that the header appears followed by its value). .Sp Now suppose you want to remove the content of the Injection-Info: @@ -585,10 +594,10 @@ This parameter should be used in conjunc a list of headers names. Overview data for these headers will be generated for each new article at the time of arrival but, contrary to the fields mentioned in \fIextraoverviewadvertised\fR, \fBnnrpd\fR will -not advertise them in response to the \s-1LIST\s0 \s-1OVERVIEW\s0.FMT command. It +not advertise them in response to the \s-1LIST OVERVIEW.FMT\s0 command. It also implies that \fBnnrpd\fR will not look in the overview database -for fields mentioned in \fIextraoverviewhidden\fR when it handles \s-1HDR\s0, -\&\s-1XHDR\s0 and \s-1XPAT\s0 requests; \fBnnrpd\fR will have to parse the headers +for fields mentioned in \fIextraoverviewhidden\fR when it handles \s-1HDR, +XHDR\s0 and \s-1XPAT\s0 requests; \fBnnrpd\fR will have to parse the headers of the requested articles in the news spool, which is slower than directly querying the overview database. .Sp @@ -609,7 +618,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\s0 \s-1MESSAGES\s0.) This is a boolean value and +groups in \fIinnd\fR\|(8) under \s-1CONTROL MESSAGES.\s0) This is a boolean value and the default is false. .IP "\fInfswriter\fR" 4 .IX Item "nfswriter" @@ -729,7 +738,7 @@ Support for nnrpd\*(R" in \fIdoc/hook\-p .IP "\fIallownewnews\fR" 4 .IX Item "allownewnews" Whether to allow use of the \s-1NEWNEWS\s0 command by clients. This command used -to put a heavy load on the server in older versions of \s-1INN\s0, but is now +to put a heavy load on the server in older versions of \s-1INN,\s0 but is now reasonably efficient, at least if only one newsgroup is specified by the client. This is a boolean value and the default is true. If you use the \&\fIaccess\fR parameter in \fIreaders.conf\fR, be sure to read about the way it @@ -760,7 +769,7 @@ be increased if many clients connect via .IP "\fImsgidcachesize\fR" 4 .IX Item "msgidcachesize" How many cache slots to reserve for message-IDs to storage token -translations. When serving overview data to clients (\s-1NEWNEWS\s0, \s-1OVER\s0, +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 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 @@ -837,7 +846,7 @@ boolean value and the default is true. .PP \&\s-1INN\s0 has optional support for generating keyword information automatically from article body text and putting that information in overview for the -use of clients that know to look for it (\s-1HDR\s0, \s-1OVER\s0 and \s-1XPAT\s0 commands). +use of clients that know to look for it (\s-1HDR, OVER\s0 and \s-1XPAT\s0 commands). The following parameters control that feature. .PP This may be too slow if you're taking a substantial feed, and probably @@ -893,14 +902,14 @@ 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 the \s-1FQDN\s0 (when known) and \s-1IP\s0 address of the system +all local posts giving the \s-1FQDN \s0(when known) and \s-1IP\s0 address of the system from which the post was received. This is a boolean value and the default is true. Note that \s-1INN\s0 either does not add this attribute or adds the name (when known) and \s-1IP\s0 address of the client. There is no intrinsic support for obfuscating the name of the client. That has to be done with a user-written Perl filter, if desired. .Sp -When this parameter is set to true, the \s-1FQDN\s0 (or, if unknown, the \s-1IP\s0 address) +When this parameter is set to true, the \s-1FQDN \s0(or, if unknown, the \s-1IP\s0 address) of the client is also added to the Path: header, after the \f(CW\*(C`!.POSTED\*(C'\fR diagnostic. .IP "\fIcheckincludedtext\fR" 4 @@ -1099,11 +1108,16 @@ is unset, which uses OpenSSL's default c Formally, keeping the \s-1TLS_RSA_WITH_RC4_128_MD5\s0 and \&\s-1TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA\s0 cipher suites is important, as it assures that any two compliant implementations can be configured to -interoperate (see \s-1RFC\s0 4642 for more details). +interoperate (see \s-1RFC 4642\s0 for more details). .IP "\fItlscompression\fR" 4 .IX Item "tlscompression" -Whether to enable or disable \s-1SSL/TLS\s0 compression support. This is a -boolean and the default is true, that is to say compression is enabled. +Whether to enable or disable TLS/SSL\-level compression support. +This is a boolean and the default is false, that is to say compression +is disabled, so as to follow the best current practices for a secure +use of \s-1TLS\s0 in application protocols like \s-1NNTP.\s0 +.Sp +Note that enabling TLS/SSL\-level compression will be possible only if +the OpenSSL library \s-1INN\s0 has been built with, supports that feature. .IP "\fItlseccurve\fR" 4 .IX Item "tlseccurve" The name of the elliptic curve to use for ephemeral key exchanges. @@ -1111,17 +1125,18 @@ To see the list of curves supported by O \&\-list_curves\*(C'\fR. .Sp The default is unset, which means an appropriate curve is auto-selected -(if your OpenSSL version supports it) or the \s-1NIST\s0 P\-256 curve is used. +(if your OpenSSL version supports it) or the \s-1NIST P\-256\s0 curve is used. .Sp This option is only effective if your OpenSSL version has \s-1ECDH\s0 support. .IP "\fItlspreferserverciphers\fR" 4 .IX Item "tlspreferserverciphers" -Whether to let the client or the server decide the preferred cipher. -This is a boolean and the default is true, that is to say the server -decides the preferred cipher. +Whether to let the client or the server decide the preferred cipher +suite, signature algorithm or elliptic curve to use for an incoming +connection. This is a boolean and the default is true, that is to say +the server will choose following its own preferences. .IP "\fItlsprotocols\fR" 4 .IX Item "tlsprotocols" -The list of \s-1SSL/TLS\s0 protocol versions to support. Valid protocols are +The list of \s-1TLS/SSL\s0 protocol versions to support. Valid protocols are \&\fBSSLv2\fR, \fBSSLv3\fR, \fBTLSv1\fR, \fBTLSv1.1\fR and \fBTLSv1.2\fR. The default value is to only allow \s-1TLS\s0 protocols: .Sp @@ -1171,7 +1186,7 @@ assuming a default \fIinnwatch.ctl\fR. 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) \fIinnwatch\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" @@ -1278,7 +1293,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" @@ -1286,7 +1301,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 \fIinnd\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, @@ -1483,7 +1498,7 @@ values for reference. Written by Rich \f(CW$alz\fR for InterNetNews and since modified, updated, and reorganized by innumerable other people. .PP -\&\f(CW$Id:\fR inn.conf.pod 9922 2015\-07\-14 16:43:55Z iulius $ +\&\f(CW$Id:\fR inn.conf.pod 10064 2016\-09\-04 12:55:40Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIinews\fR\|(1), \fIinnd\fR\|(8), \fIinnwatch\fR\|(8), \fImakehistory\fR\|(8), \fInnrpd\fR\|(8), \fIrnews\fR\|(1). diff -Nurp inn-2.6.0/doc/man/innbind.8 inn-2.6.1/doc/man/innbind.8 --- inn-2.6.0/doc/man/innbind.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/innbind.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "INNBIND 8" -.TH INNBIND 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH INNBIND 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -193,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 @@ -311,7 +320,7 @@ zero. .el .IP "unknown protocol family \f(CW%s\fR in \f(CW%s\fR" 4 .IX Item "unknown protocol family %s in %s" (Fatal) The protocol number portion of the given command-line argument is -neither \s-1AF_INET\s0 nor \s-1AF_INET6\s0. +neither \s-1AF_INET\s0 nor \s-1AF_INET6.\s0 .SH "EXAMPLES" .IX Header "EXAMPLES" As mentioned above, \fBinnbind\fR is never run directly, only by \fBinnd\fR and diff -Nurp inn-2.6.0/doc/man/inncheck.8 inn-2.6.1/doc/man/inncheck.8 --- inn-2.6.0/doc/man/inncheck.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/inncheck.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "INNCHECK 8" -.TH INNCHECK 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH INNCHECK 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.0/doc/man/innconfval.1 inn-2.6.1/doc/man/innconfval.1 --- inn-2.6.0/doc/man/innconfval.1 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/innconfval.1 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "INNCONFVAL 1" -.TH INNCONFVAL 1 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH INNCONFVAL 1 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -147,7 +156,7 @@ prints out all parameter values (this is of \fB\-p\fR, \fB\-s\fR, or \fB\-t\fR were specified). .PP All parameters are taken from \fIinn.conf\fR except for \fIversion\fR, which is -always the version string of \s-1INN\s0. +always the version string of \s-1INN.\s0 .PP If given the \fB\-C\fR option, \fBinnconfval\fR instead checks \fIinn.conf\fR, reporting any problems found to standard error. \fBinnconfval\fR will exit @@ -186,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 diff -Nurp inn-2.6.0/doc/man/innd.8 inn-2.6.1/doc/man/innd.8 --- inn-2.6.0/doc/man/innd.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/innd.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "INND 8" -.TH INND 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH INND 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -406,7 +415,7 @@ message posted to \f(CW\*(C`news.admin.c subscribe to \f(CW\*(C`control.cancel\*(C'\fR (or \f(CW\*(C`control\*(C'\fR if that newsgroup doesn't exist) or \f(CW\*(C`news.admin\*(C'\fR. This behavior is present for historical compatibility reasons and should be considered obsolete; support for the -\&\f(CW\*(C`.ctl\*(C'\fR suffix may be removed in a future version of \s-1INN\s0. +\&\f(CW\*(C`.ctl\*(C'\fR suffix may be removed in a future version of \s-1INN.\s0 .PP Finally, articles posted to newsgroups beginning with \f(CW\*(C`to.\*(C'\fR are treated specially. Provided that either that newsgroup exists in the \fIactive\fR file @@ -420,9 +429,9 @@ be filed in \f(CW\*(C`to\*(C'\fR and sen .IX Header "PROTOCOL DIFFERENCES" \&\fBinnd\fR implements the \s-1NNTP\s0 commands defined in \s-1RFC\s0\ 3977 (\s-1NNTP\s0), \&\s-1RFC\s0\ 4643 (\s-1NNTP\s0 authentication), \s-1RFC\s0\ 4644 (streaming \s-1NNTP\s0 feeds) -and \s-1RFC\s0\ 6048 (\s-1NNTP\s0 \s-1LIST\s0 additions) with the following differences: +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 @@ -431,12 +440,12 @@ extension. 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). -Use of the \s-1MODE\s0 \s-1READER\s0 command will cause \fBinnd\fR to pass the connection +Use of the \s-1MODE READER\s0 command will cause \fBinnd\fR to pass the connection to \fBnnrpd\fR. .IP "3." 4 \&\fBinnd\fR allows a wider syntax for wildmats. .IP "4." 4 -Three commands (\s-1IHAVE\s0, \s-1CHECK\s0 and \s-1TAKETHIS\s0) will continue, for +Three commands (\s-1IHAVE, CHECK\s0 and \s-1TAKETHIS\s0) will continue, for interoperability reasons, to return a reject code (respectively \f(CW435\fR, \&\f(CW438\fR and \f(CW439\fR) when the command contains a syntax error (which normally leads to \f(CW501\fR). @@ -468,7 +477,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\s0 \s-1CANCEL\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 @@ -542,7 +551,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. diff -Nurp inn-2.6.0/doc/man/inndf.8 inn-2.6.1/doc/man/inndf.8 --- inn-2.6.0/doc/man/inndf.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/inndf.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "INNDF 8" -.TH INNDF 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH INNDF 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.0/doc/man/innfeed.8 inn-2.6.1/doc/man/innfeed.8 --- inn-2.6.0/doc/man/innfeed.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/innfeed.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "INNFEED 8" -.TH INNFEED 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH INNFEED 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -146,7 +155,7 @@ remote hosts at once and will open multi configured to do so. The only limitations are the process limits for open file descriptors and memory. .PP -As an alternative to using \s-1NNTP\s0, \s-1INN\s0 may also be fed to an \s-1IMAP\s0 server. +As an alternative to using \s-1NNTP, INN\s0 may also be fed to an \s-1IMAP\s0 server. This is done by using an executable called \fBimapfeed\fR, which is identical to \fBinnfeed\fR except for the delivery process. The new version has two types of connections: an \s-1LMTP\s0 connection to deliver regular messages and @@ -177,7 +186,7 @@ writing to this file, so when \fBinnfeed will check periodically for new information. To prevent the funnel file from growing without bounds, you will need to periodically move the file to the side (or simply remove it) and have \fBinnd\fR flush the file. Then, -after the file is flushed by \fBinnd\fR, you can send \fBinnfeed\fR a \s-1SIGALRM\s0, +after the file is flushed by \fBinnd\fR, you can send \fBinnfeed\fR a \s-1SIGALRM,\s0 and it too will close the file and open the new file created by \fBinnd\fR. Something like: .PP @@ -252,7 +261,7 @@ 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 @@ -265,7 +274,7 @@ log files. See \fIinnfeed.conf\fR\|(5) .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 @@ -523,7 +532,7 @@ Probably too many other bugs to count. .IX Header "ALTERNATIVE" An alternative to \fBinnfeed\fR can be \&\fBinnduct\fR, maintained by Ian Jackson and available at -http://www.chiark.greenend.org.uk/ucgi/~ian/git\-manpage/innduct.git/innduct.8 . +. It is intended to solve a design issue in the way \fBinnfeed\fR works. As a matter of fact, the program feed protocol spoken between \fBinnd\fR and \fBinnfeed\fR is lossy: if \fBinnfeed\fR dies unexpectedly, articles diff -Nurp inn-2.6.0/doc/man/innfeed.conf.5 inn-2.6.1/doc/man/innfeed.conf.5 --- inn-2.6.0/doc/man/innfeed.conf.5 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/innfeed.conf.5 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "INNFEED.CONF 5" -.TH INNFEED.CONF 5 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH INNFEED.CONF 5 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -441,7 +450,7 @@ to be using the server. .IP "\fIdeliver-realm\fR" 4 .IX Item "deliver-realm" In this case, the \*(L"realm\*(R" is the realm in which the specified authname -is valid. Currently this is only needed by the \s-1DIGEST\-MD5\s0 \s-1SASL\s0 mechanism. +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. @@ -723,12 +732,12 @@ If not set in \fIinnfeed.conf\fR, \fBinn .IP "\fIusername\fR" 4 .IX Item "username" This key requires a string value. If the value is defined, then \fBinnfeed\fR -tries to authenticate by \s-1AUTHINFO\s0 \s-1USER\s0 and this value used for user name. +tries to authenticate by \s-1AUTHINFO USER\s0 and this value used for user name. \&\fIpassword\fR must also be defined, if this key is defined. .IP "\fIpassword\fR" 4 .IX Item "password" This key requires a string value. The value is the password used for -\&\s-1AUTHINFO\s0 \s-1PASS\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 @@ -737,7 +746,7 @@ peer defaults above. There is one \fIke to a peer definition. .IP "\fIip-name\fR" 4 .IX Item "ip-name" -This key requires a word value. The word is the host's \s-1FQDN\s0, or the dotted +This key requires a word value. The word is the host's \s-1FQDN,\s0 or the dotted quad IP-address. If this value is not specified, then the name of the peer in the enclosing \fIpeer\fR block is taken to also be its \fIip-name\fR. .SH "RELOADING" diff -Nurp inn-2.6.0/doc/man/innmail.1 inn-2.6.1/doc/man/innmail.1 --- inn-2.6.0/doc/man/innmail.1 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/innmail.1 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "INNMAIL 1" -.TH INNMAIL 1 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH INNMAIL 1 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.0/doc/man/innupgrade.8 inn-2.6.1/doc/man/innupgrade.8 --- inn-2.6.0/doc/man/innupgrade.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/innupgrade.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "INNUPGRADE 8" -.TH INNUPGRADE 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH INNUPGRADE 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -148,7 +157,7 @@ files will be saved with a \f(CW\*(C`.OL If the \fB\-f\fR flag is used, only that file will be updated. If the file name doesn't match the standard file name of an \s-1INN\s0 configuration file, the optional \fB\-t\fR flag may be given to specify the type. See -\&\*(L"\s-1EXAMPLES\s0\*(R" for an example of this. +\&\*(L"\s-1EXAMPLES\*(R"\s0 for an example of this. .PP Currently, \fBinnupgrade\fR knows how to apply the following updates: .IP "\fIinn.conf\fR" 2 diff -Nurp inn-2.6.0/doc/man/innwatch.8 inn-2.6.1/doc/man/innwatch.8 --- inn-2.6.0/doc/man/innwatch.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/innwatch.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "INNWATCH 8" -.TH INNWATCH 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH INNWATCH 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -160,7 +169,7 @@ Specify the control file to use, other t .IX Item "-i seconds" With this option, \fBinnwatch\fR has an initial sleep of \fIseconds\fR seconds at startup. This is useful when \fBinnwatch\fR is started at -the same time as \s-1INN\s0, so that it can wait a little before beginning +the same time as \s-1INN,\s0 so that it can wait a little before beginning performing its checks. .IP "\fB\-l\fR \fIlogfile\fR" 4 .IX Item "-l logfile" diff -Nurp inn-2.6.0/doc/man/innxmit.8 inn-2.6.1/doc/man/innxmit.8 --- inn-2.6.0/doc/man/innxmit.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/innxmit.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "INNXMIT 8" -.TH INNXMIT 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH INNXMIT 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.0/doc/man/libauth.3 inn-2.6.1/doc/man/libauth.3 --- inn-2.6.0/doc/man/libauth.3 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/libauth.3 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "libauth 3" -.TH libauth 3 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH libauth 3 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.0/doc/man/libinnhist.3 inn-2.6.1/doc/man/libinnhist.3 --- inn-2.6.0/doc/man/libinnhist.3 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/libinnhist.3 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "libinnhist 3" -.TH libinnhist 3 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH libinnhist 3 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -385,7 +394,7 @@ result must not later be passed to \fIfr .IX Item "HISCTLS_PATH (const char *)" Set the base file path which this history handle should use; typically this is used after an anonymous handle has been created using -\&\fBHISopen(\s-1NULL\s0, ...)\fR. \fIval\fR should be a value of type \fBconst char +\&\fBHISopen(\s-1NULL, ...\s0)\fR. \fIval\fR should be a value of type \fBconst char *\fR and will be copied before being stored internally. .ie n .IP """HISCTLS_SYNCCOUNT"" (size_t *)" 4 .el .IP "\f(CWHISCTLS_SYNCCOUNT\fR (size_t *)" 4 diff -Nurp inn-2.6.0/doc/man/libstorage.3 inn-2.6.1/doc/man/libstorage.3 --- inn-2.6.0/doc/man/libstorage.3 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/libstorage.3 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "libstorage 3" -.TH libstorage 3 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH libstorage 3 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -292,7 +301,7 @@ libstorage \- routines for managing INN .IX Header "DESCRIPTION" \&\fBlibstorage\fR is a library of common utility (the storage manager) routines for accessing Usenet articles and related data independent of particular -storage method; this is known as the storage \s-1API\s0. +storage method; this is known as the storage \s-1API.\s0 .PP The storage manager's function is to isolate the applications from the individual methods and make the policy decisions as to which storage method diff -Nurp inn-2.6.0/doc/man/list.3 inn-2.6.1/doc/man/list.3 --- inn-2.6.0/doc/man/list.3 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/list.3 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "list 3" -.TH list 3 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH list 3 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.0/doc/man/mailpost.8 inn-2.6.1/doc/man/mailpost.8 --- inn-2.6.0/doc/man/mailpost.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/mailpost.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "MAILPOST 8" -.TH MAILPOST 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH MAILPOST 8 "2016-11-06" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -267,7 +276,7 @@ The default database files which record Written by Paul Vixie long ago and then hacked up by James Brister for \&\s-1INN\s0 integration. .PP -\&\f(CW$Id:\fR mailpost.in 9830 2015\-04\-23 18:56:28Z iulius $ +\&\f(CW$Id:\fR mailpost.in 10076 2016\-10\-08 20:37:36Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIactive\fR\|(5), \fIinews\fR\|(1), \fIinn.conf\fR\|(5), \fInnrpd\fR\|(8), \fIuwildmat\fR\|(3). diff -Nurp inn-2.6.0/doc/man/makedbz.8 inn-2.6.1/doc/man/makedbz.8 --- inn-2.6.0/doc/man/makedbz.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/makedbz.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "MAKEDBZ 8" -.TH MAKEDBZ 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH MAKEDBZ 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.0/doc/man/makehistory.8 inn-2.6.1/doc/man/makehistory.8 --- inn-2.6.0/doc/man/makehistory.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/makehistory.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "MAKEHISTORY 8" -.TH MAKEHISTORY 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH MAKEHISTORY 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -152,7 +161,7 @@ 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 +\&\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 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 diff -Nurp inn-2.6.0/doc/man/mod-active.8 inn-2.6.1/doc/man/mod-active.8 --- inn-2.6.0/doc/man/mod-active.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/mod-active.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "MOD-ACTIVE 8" -.TH MOD-ACTIVE 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH MOD-ACTIVE 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.0/doc/man/moderators.5 inn-2.6.1/doc/man/moderators.5 --- inn-2.6.0/doc/man/moderators.5 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/moderators.5 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "MODERATORS 5" -.TH MODERATORS 5 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH MODERATORS 5 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.0/doc/man/motd.news.5 inn-2.6.1/doc/man/motd.news.5 --- inn-2.6.0/doc/man/motd.news.5 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/motd.news.5 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "MOTD.NEWS 5" -.TH MOTD.NEWS 5 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH MOTD.NEWS 5 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -135,17 +144,17 @@ motd.news \- Message of the day informat .IX Header "DESCRIPTION" Two files, found in \fIpathetc\fR, contain local information for news feeders or news readers in a free-form format. The entire files are returned verbatim -to any client that issues the \s-1LIST\s0 \s-1MOTD\s0 command. This might be used for +to any client that issues the \s-1LIST MOTD\s0 command. This might be used for new information, notification of upcoming downtime, or similar purposes. .PP 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 -Be aware that use of the \s-1LIST\s0 \s-1MOTD\s0 command is not widespread (though +Be aware that use of the \s-1LIST MOTD\s0 command is not widespread (though documented in \s-1RFC\s0\ 6048) and most news clients will never ask for this file. .PP diff -Nurp inn-2.6.0/doc/man/news.daily.8 inn-2.6.1/doc/man/news.daily.8 --- inn-2.6.0/doc/man/news.daily.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/news.daily.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "NEWS.DAILY 8" -.TH NEWS.DAILY 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH NEWS.DAILY 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.0/doc/man/news2mail.8 inn-2.6.1/doc/man/news2mail.8 --- inn-2.6.0/doc/man/news2mail.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/news2mail.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "NEWS2MAIL 8" -.TH NEWS2MAIL 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH NEWS2MAIL 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.0/doc/man/newsfeeds.5 inn-2.6.1/doc/man/newsfeeds.5 --- inn-2.6.0/doc/man/newsfeeds.5 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/newsfeeds.5 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "NEWSFEEDS 5" -.TH NEWSFEEDS 5 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH NEWSFEEDS 5 "2016-10-07" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -295,9 +304,9 @@ don't. Distributions are text words, not patterns; entries like \f(CW\*(C`*\*(C'\fR or \f(CW\*(C`all\*(C'\fR have no special meaning. .PP -The \fIflag\fR field is described in \*(L"\s-1FLAG\s0 \s-1VALUES\s0\*(R". The interpretation of +The \fIflag\fR field is described in \*(L"\s-1FLAG VALUES\*(R"\s0. The interpretation of the \fIparameter\fR field depends on the type of feed and is explained in -more detail in \*(L"\s-1FEED\s0 \s-1TYPES\s0\*(R". It can be omitted for some types of +more detail in \*(L"\s-1FEED TYPES\*(R"\s0. It can be omitted for some types of feeds. .PP The site named \f(CW\*(C`ME\*(C'\fR is special. There must be exactly one such entry, @@ -456,9 +465,23 @@ output as soon as it is possible to do s If this flag is specified, an article will only be sent to this site if the number of groups it is posted to, plus the square of the number of groups followups would appear in, is no more than \fIcount\fR. \f(CW30\fR is a -good value for this flag, allowing crossposts to up to 29 groups when -followups are set to a single group or poster and only allowing crossposts -to 5 groups when followups aren't set. +good value for this flag, allowing for instance: +.RS 4 +.IP "\(bu" 3 +crossposts to only 5 groups when followups aren't set; +.IP "\(bu" 3 +crossposts to up to 26 groups when followups are set to two groups; +.IP "\(bu" 3 +crossposts to up to 29 groups when followups are set to a single group; +.IP "\(bu" 3 +crossposts to up to 30 groups when followups are set to poster. +.RE +.RS 4 +.Sp +Note that if an article does not contain a Followup-To: header field, +the number of groups followups would appear in is the number of groups +it is posted to. +.RE .IP "\fBF\fR \fIname\fR" 4 .IX Item "F name" Specifies the name of the file that should be used if it's necessary to @@ -489,7 +512,7 @@ The flag specifies the size of the inter there are more file feeds than allowed by the system, they will be buffered internally in least-recently-used order. If the internal buffer grows bigger then \fIsize\fR bytes, however, the data will be written out to -the appropriate file. The default value is \f(CW16\fR\ \s-1KB\s0. +the appropriate file. The default value is \f(CW16\fR\ \s-1KB.\s0 .IP "\fBN\fR \fIstatus\fR" 4 .IX Item "N status" Restricts the articles sent to this site to those in newsgroups with the @@ -517,7 +540,7 @@ normal if you're using the \fInicekids\f .IX Item "Q hashfeed" Specifies the \fIhashfeed\fR match expression for this site. It must be in the form \f(CW\*(C`value/mod\*(C'\fR or \f(CW\*(C`start\-end/mod\*(C'\fR. The Message-ID of the article -is hashed using \s-1MD5\s0, which results in a 128\-bit hash. The lowest +is hashed using \s-1MD5,\s0 which results in a 128\-bit hash. The lowest 32\ bits are then taken by default as the hashfeed value (which is an integer). If the hashfeed value modulus \f(CW\*(C`mod\*(C'\fR plus one equals \f(CW\*(C`value\*(C'\fR or is between \f(CW\*(C`start\*(C'\fR and \f(CW\*(C`end\*(C'\fR, the article will be fed to this site. All @@ -582,7 +605,7 @@ letter chosen from the following set: \& x Exploder .Ve .Sp -Each feed is described below in \*(L"\s-1FEED\s0 \s-1TYPES\s0\*(R". The default is \fBTf\fR, +Each feed is described below in \*(L"\s-1FEED TYPES\*(R"\s0. The default is \fBTf\fR, for a file feed. .IP "\fBU\fR \fIcount\fR" 4 .IX Item "U count" @@ -734,7 +757,7 @@ site receives. The \fIparameter\fR fiel 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 -standard input (unlike earlier versions of \s-1INN\s0, where the article is sent +standard input (unlike earlier versions of \s-1INN,\s0 where the article is sent to the program on stdin), and standard output and error from the program will be set to the error log (\fIpathlog\fR/errlog). \fBinnd\fR will try to avoid spawning a shell if the command has no shell meta-characters; this @@ -809,7 +832,7 @@ The former look like this: .PP which generates a file named \fIpathoutgoing\fR/feed.example.com containing one line per article consisting of the storage \s-1API\s0 token, a space, and the -message \s-1ID\s0. +message \s-1ID.\s0 .PP The latter look like this: .PP @@ -841,7 +864,7 @@ Note that the \fIpattern\fR for this fee 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 -containing the storage \s-1API\s0 token, the message \s-1ID\s0, and a space-separated +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 Here's a more esoteric example of a channel feed: @@ -852,7 +875,7 @@ Here's a more esoteric example of a chan .Ve .PP This receives the byte size of each article along with the storage \s-1API\s0 -token and message \s-1ID\s0, and prints to the console a line for every article +token and message \s-1ID,\s0 and prints to the console a line for every article that's over a million bytes. This is actually rather a strange way to write this since \s-1INN\s0 can do the size check itself; the following is equivalent: @@ -913,7 +936,7 @@ and sendme control messages, be sure to \&\fIcontrolchan\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" @@ -921,7 +944,7 @@ the standard newsfeeds entries used by m Written by Rich \f(CW$alz\fR for InterNetNews. Reformatted and rewritten in \s-1POD\s0 by Russ Allbery . .PP -\&\f(CW$Id:\fR newsfeeds.pod 9767 2014\-12\-07 21:13:43Z iulius $ +\&\f(CW$Id:\fR newsfeeds.pod 10061 2016\-09\-04 12:48:39Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIactive\fR\|(5), \fIbuffchan\fR\|(8), \fIcontrolchan\fR\|(8), \fIctlinnd\fR\|(8), \fIinn.conf\fR\|(5), \fIinnd\fR\|(8), diff -Nurp inn-2.6.0/doc/man/newsgroups.5 inn-2.6.1/doc/man/newsgroups.5 --- inn-2.6.0/doc/man/newsgroups.5 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/newsgroups.5 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "NEWSGROUPS 5" -.TH NEWSGROUPS 5 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH NEWSGROUPS 5 "2016-11-06" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -136,7 +145,7 @@ newsgroups \- List of newsgroups and the 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 -\&\fBnnrpd\fR in response to \s-1LIST\s0 \s-1NEWSGROUPS\s0 and is only meant to provide +\&\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. .PP @@ -249,11 +258,11 @@ and paste them from above. Written by Julien Elie for InterNetNews. The preferred format for a one-line newsgroup description is based on the policies by which the \fInewsgroups\fR file in - is maintained; they were originally + is maintained; they were originally written by David Lawrence and updated by Russ Allbery . .PP -\&\f(CW$Id:\fR newsgroups.pod 9767 2014\-12\-07 21:13:43Z iulius $ +\&\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). diff -Nurp inn-2.6.0/doc/man/newslog.5 inn-2.6.1/doc/man/newslog.5 --- inn-2.6.0/doc/man/newslog.5 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/newslog.5 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "NEWSLOG 5" -.TH NEWSLOG 5 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH NEWSLOG 5 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -265,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\s0\*(R" section of the \fIinnd\fR\|(8) man page for more information about +See the \*(L"\s-1LOGGING\*(R"\s0 section of the \fIinnd\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 diff -Nurp inn-2.6.0/doc/man/ninpaths.8 inn-2.6.1/doc/man/ninpaths.8 --- inn-2.6.0/doc/man/ninpaths.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/ninpaths.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "NINPATHS 8" -.TH NINPATHS 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH NINPATHS 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.0/doc/man/nnrpd.8 inn-2.6.1/doc/man/nnrpd.8 --- inn-2.6.0/doc/man/nnrpd.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/nnrpd.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "NNRPD 8" -.TH NNRPD 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH NNRPD 8 "2016-10-07" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -256,7 +265,7 @@ awaiting connections when started as a s .IX Item "-r reason" If the \fB\-r\fR flag is used, then \fBnnrpd\fR will reject the incoming connection giving \fIreason\fR as the text. This flag is used by \fIinnd\fR\|(8) -when it is paused or throttled. \fIreason\fR should be encoded in \s-1UTF\-8\s0. +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 @@ -270,7 +279,7 @@ If specified, \fBnnrpd\fR will start a n as soon as connected. To use this flag, the OpenSSL \s-1SSL\s0 and crypto libraries must have been found at configure time, or \fB\-\-with\-openssl\fR specified at configure time. For more information on running \fBnnrpd\fR -with \s-1TLS\s0 support, see \*(L"\s-1TLS\s0 \s-1SUPPORT\s0\*(R". +with \s-1TLS\s0 support, see \*(L"\s-1TLS SUPPORT\*(R"\s0. .IP "\fB\-t\fR" 4 .IX Item "-t" If the \fB\-t\fR flag is used, then all client commands and initial @@ -281,7 +290,7 @@ is toggled upon receipt of a \s-1SIGHUP\ .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. @@ -289,7 +298,7 @@ would generate a certificate for a web s If you're happy with a self-signed certificate (which will generate warnings with some news reader clients), you can create and install one in the default path by running \f(CW\*(C`make cert\*(C'\fR after \f(CW\*(C`make install\*(C'\fR when -installing \s-1INN\s0, or by running the following commands: +installing \s-1INN,\s0 or by running the following commands: .PP .Vb 7 \& umask 077 @@ -320,7 +329,7 @@ set \fItlscafile\fR to its path. .PP There are two common ways for a news client to negotiate a \s-1TLS\s0 connection: either via the use of the \s-1STARTTLS\s0 command on the usual \s-1NNTP\s0 -port (119) or via the now discouraged way (per \s-1RFC\s0 4642) to immediately +port (119) or via the now discouraged way (per \s-1RFC 4642\s0) to immediately negotiate an encrypted session upon connection on a dedicated port (usually 563). As most news clients currently do not use the \s-1STARTTLS\s0 command, and instead expect to connect to a separate port (563) and start @@ -348,36 +357,36 @@ defined in \fI/etc/services\fR on your s .PP Optionally, you may set the \fItlsciphers\fR, \fItlscompression\fR, \&\fItlseccurve\fR, \fItlspreferserverciphers\fR, and \fItlsprotocols\fR parameters -in \fIinn.conf\fR to fine-tune the behaviour of the \s-1SSL/TLS\s0 negotiation +in \fIinn.conf\fR to fine-tune the behaviour of the \s-1TLS/SSL\s0 negotiation whenever a new attack on the \s-1TLS\s0 protocol or some supported cipher suite is discovered. .SH "PROTOCOL DIFFERENCES" .IX Header "PROTOCOL DIFFERENCES" \&\fBnnrpd\fR implements the \s-1NNTP\s0 commands defined in \s-1RFC\s0\ 3977 (\s-1NNTP\s0), \&\s-1RFC\s0\ 4642 (\s-1TLS/NNTP\s0), \s-1RFC\s0\ 4643 (\s-1NNTP\s0 authentication) and \s-1RFC\s0\ 6048 -(\s-1NNTP\s0 \s-1LIST\s0 additions) with the following differences: +(\s-1NNTP LIST\s0 additions) with the following differences: .IP "1." 4 The \s-1XGTITLE\s0 [\fIwildmat\fR] command is provided. This extension is used by ANU-News and documented in \s-1RFC\s0\ 2980. It returns a \f(CW282\fR reply code, followed by a one-line description of all newsgroups that match the pattern. The default is the current group. .Sp -Note that \s-1LIST\s0 \s-1NEWSGROUPS\s0 should be used instead of \s-1XGTITLE\s0. +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. .Sp -Note that \s-1HDR\s0 should be used instead of \s-1XHDR\s0. +Note that \s-1HDR\s0 should be used instead of \s-1XHDR.\s0 .IP "3." 4 The \s-1XOVER\s0 [\fIrange\fR] command is provided. It returns a \f(CW224\fR reply code, followed by the overview data for the specified range; the default is to return the data for the current article. See \s-1RFC\s0\ 2980. .Sp -Note that \s-1OVER\s0 should be used instead of \s-1XOVER\s0. +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 @@ -402,7 +411,7 @@ support added by Rob Robertston in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "NNTPSEND 8" -.TH NNTPSEND 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH NNTPSEND 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.0/doc/man/nntpsend.ctl.5 inn-2.6.1/doc/man/nntpsend.ctl.5 --- inn-2.6.0/doc/man/nntpsend.ctl.5 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/nntpsend.ctl.5 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "NNTPSEND.CTL 5" -.TH NNTPSEND.CTL 5 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH NNTPSEND.CTL 5 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.0/doc/man/ovdb.5 inn-2.6.1/doc/man/ovdb.5 --- inn-2.6.0/doc/man/ovdb.5 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/ovdb.5 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "OVDB 5" -.TH OVDB 5 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH OVDB 5 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -140,7 +149,7 @@ issues). .PP Ovdb makes use of the full transaction/logging/locking functionality of the Berkeley\ \s-1DB\s0 environment. Berkeley\ \s-1DB\s0 may be downloaded from -http://www.oracle.com/technetwork/database/database\-technologies/berkeleydb/overview/index.html + and is needed to build the ovdb backend. .SH "UPGRADING" .IX Header "UPGRADING" @@ -150,7 +159,7 @@ will need to be upgraded using \fIovdb_i \&\fIovdb_init\fR\|(8) for upgrade instructions. .SH "INSTALLATION" .IX Header "INSTALLATION" -To build ovdb support into \s-1INN\s0, specify the option \fB\-\-with\-bdb\fR +To build ovdb support into \s-1INN,\s0 specify the option \fB\-\-with\-bdb\fR when running the configure script. By default, configure will search for Berkeley\ \s-1DB\s0 in default search paths; there will be a message in the configure output indicating the pathname that will be used. @@ -169,7 +178,7 @@ in your spool (not counting crossposts). 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. +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. @@ -177,7 +186,7 @@ the \s-1DB_CONFIG\s0 section. .IX Header "CONFIGURATION" To enable ovdb, set the \fIovmethod\fR parameter in \fIinn.conf\fR to \f(CW\*(C`ovdb\*(C'\fR. The ovdb database is stored in the directory specified by the -\&\fIpathoverview\fR parameter in \fIinn.conf\fR. This is the \*(L"\s-1DB_HOME\s0\*(R" directory. +\&\fIpathoverview\fR parameter in \fIinn.conf\fR. This is the \*(L"\s-1DB_HOME\*(R"\s0 directory. To start out, this directory should be empty (other than an optional \&\fI\s-1DB_CONFIG\s0\fR file; see \s-1DB_CONFIG\s0 for details) and \fBinnd\fR (or \&\fBmakehistory\fR) will create the files as necessary in that directory. @@ -191,7 +200,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 nnrpds when shutting +shut down and restart \s-1INN \s0(be sure to kill all of the nnrpds when shutting down). Default is 8000, which is adequate for small to medium sized servers. Large servers will probably need at least 20000. .IP "compress" 4 @@ -247,7 +256,7 @@ pages. Changing this parameter has no e database. .IP "maxlocks" 4 .IX Item "maxlocks" -Sets the Berkeley\ \s-1DB\s0 \*(L"lk_max\*(R" parameter, which is the maximum number of +Sets the Berkeley\ \s-1DB \s0\*(L"lk_max\*(R" parameter, which is the maximum number of locks that can exist in the database at the same time. Default is 4000. .IP "nocompact" 4 .IX Item "nocompact" @@ -308,7 +317,7 @@ compression starts to become significant .PP If compression is not enabled (either from the \f(CW\*(C`compress\*(C'\fR option in \&\fIovdb.conf\fR or \s-1INN\s0 was not built from zlib), the database will be backward -compatible with older versions of \s-1OVDB\s0. However, if compression is enabled, +compatible with older versions of \s-1OVDB. \s0 However, if compression is enabled, the database is marked with a newer version that will prevent older versions of \s-1OVDB\s0 from opening the database. .PP @@ -319,7 +328,7 @@ compression will be compressed. .PP If you disable compression on a database that previously had it enabled, new records will be stored uncompressed, but the database will still be -incompatible with older versions of \s-1OVDB\s0 (and will also be incompatible +incompatible with older versions of \s-1OVDB \s0(and will also be incompatible with this version of \s-1OVDB\s0 if it was not built with zlib). So to downgrade to a completely uncompressed database you will have to rebuild the database using makehistory. @@ -327,7 +336,7 @@ using makehistory. .IX Header "DB_CONFIG" A file called \fI\s-1DB_CONFIG\s0\fR may be placed in the database directory to customize where the various database files and transaction logs are -written. By default, all of the files are written in the \*(L"\s-1DB_HOME\s0\*(R" +written. By default, all of the files are written in the \*(L"\s-1DB_HOME\*(R"\s0 directory. One way to improve performance is to put the transaction logs on a different disk. To do this, put: .PP @@ -336,9 +345,9 @@ on a different disk. To do this, put: .Ve .PP in the \fI\s-1DB_CONFIG\s0\fR file. If the pathname you give starts with a /, it is -treated as an absolute path; otherwise, it is relative to the \*(L"\s-1DB_HOME\s0\*(R" +treated as an absolute path; otherwise, it is relative to the \*(L"\s-1DB_HOME\*(R"\s0 directory. Make sure that any directories you specify exist and have -proper ownership/mode before starting \s-1INN\s0, because they won't be created +proper ownership/mode before starting \s-1INN,\s0 because they won't be created automatically. Also, don't change the \s-1DB_CONFIG\s0 file while anything that uses ovdb is running. .PP @@ -386,11 +395,11 @@ caused by a system crash or improper shu Starts the \s-1DB\s0 housekeeping processes (\fBovdb_monitor\fR) if they're not already running. .PP -And when stopping \s-1INN\s0, \fBrc.news\fR kills the ovdb_monitor processes after +And when stopping \s-1INN, \s0\fBrc.news\fR kills the ovdb_monitor processes after the other \s-1INN\s0 processes have been shut down. .SH "DIAGNOSTICS" .IX Header "DIAGNOSTICS" -Problems relating to ovdb are logged to news.err with \*(L"\s-1OVDB\s0\*(R" in the error +Problems relating to ovdb are logged to news.err with \*(L"\s-1OVDB\*(R"\s0 in the error message. .PP \&\s-1INN\s0 programs that use overview will fail to start up if the ovdb_monitor @@ -446,4 +455,4 @@ Written by Heath Kehoe ). +(). diff -Nurp inn-2.6.0/doc/man/ovdb_init.8 inn-2.6.1/doc/man/ovdb_init.8 --- inn-2.6.0/doc/man/ovdb_init.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/ovdb_init.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "OVDB_INIT 8" -.TH OVDB_INIT 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH OVDB_INIT 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -203,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; diff -Nurp inn-2.6.0/doc/man/ovdb_monitor.8 inn-2.6.1/doc/man/ovdb_monitor.8 --- inn-2.6.0/doc/man/ovdb_monitor.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/ovdb_monitor.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "OVDB_MONITOR 8" -.TH OVDB_MONITOR 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH OVDB_MONITOR 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.0/doc/man/ovdb_server.8 inn-2.6.1/doc/man/ovdb_server.8 --- inn-2.6.0/doc/man/ovdb_server.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/ovdb_server.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "OVDB_SERVER 8" -.TH OVDB_SERVER 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH OVDB_SERVER 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.0/doc/man/ovdb_stat.8 inn-2.6.1/doc/man/ovdb_stat.8 --- inn-2.6.0/doc/man/ovdb_stat.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/ovdb_stat.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "OVDB_STAT 8" -.TH OVDB_STAT 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH OVDB_STAT 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -192,7 +201,7 @@ Berkeley\ \s-1DB\s0 db\->\fIstat()\fR ca on busy systems (several minutes or more). .SH "WARNINGS" .IX Header "WARNINGS" -ovdb_stat may be safely killed with the \s-1INT\s0, \s-1TERM\s0, or \s-1HUP\s0 signals. +ovdb_stat may be safely killed with the \s-1INT, TERM,\s0 or \s-1HUP\s0 signals. It catches those signals and exits cleanly. Do not kill ovdb_stat with other signals, unless absolutely necessary, because it may leave stale locks in the \s-1DB\s0 environment. diff -Nurp inn-2.6.0/doc/man/overchan.8 inn-2.6.1/doc/man/overchan.8 --- inn-2.6.0/doc/man/overchan.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/overchan.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "OVERCHAN 8" -.TH OVERCHAN 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH OVERCHAN 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.0/doc/man/passwd.nntp.5 inn-2.6.1/doc/man/passwd.nntp.5 --- inn-2.6.0/doc/man/passwd.nntp.5 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/passwd.nntp.5 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "PASSWD.NNTP 5" -.TH PASSWD.NNTP 5 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH PASSWD.NNTP 5 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -153,11 +162,11 @@ The second field is a user name, and the the username or password is empty, then that portion of the authentication will not occur. (For example, a server may require only a username, in which case the password is not necessary. Note that -a username is mandatory with \s-1AUTHINFO\s0 \s-1USER/PASS\s0.) +a username is mandatory with \s-1AUTHINFO USER/PASS.\s0) .PP The optional fourth field specifies the type of authentication to use. At present, the only recognized \*(L"authentication style\*(R" is \f(CW\*(C`authinfo\*(C'\fR; -this is also the default. It means that \s-1AUTHINFO\s0 \s-1USER/PASS\s0 commands +this is also the default. It means that \s-1AUTHINFO USER/PASS\s0 commands are used to authenticate to the remote host. (These \s-1NNTP\s0 commands are described in \s-1RFC\s0\ 4643.) .PP diff -Nurp inn-2.6.0/doc/man/perl-nocem.8 inn-2.6.1/doc/man/perl-nocem.8 --- inn-2.6.0/doc/man/perl-nocem.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/perl-nocem.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "PERL-NOCEM 8" -.TH PERL-NOCEM 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH PERL-NOCEM 8 "2016-11-06" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -250,7 +259,7 @@ Copyright 2000 by Miquel van Smoorenburg .PP Copyright 2001 by Marco d'Itri . .PP -\&\f(CW$Id:\fR perl\-nocem.in 9639 2014\-05\-17 06:24:44Z iulius $ +\&\f(CW$Id:\fR perl\-nocem.in 10076 2016\-10\-08 20:37:36Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIgpgv\fR\|(1), \fIgrephistory\fR\|(1), \fIinn.conf\fR\|(5), \fInewsfeeds\fR\|(5), \fIpgp\fR\|(1). diff -Nurp inn-2.6.0/doc/man/pgpverify.1 inn-2.6.1/doc/man/pgpverify.1 --- inn-2.6.0/doc/man/pgpverify.1 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/pgpverify.1 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "PGPVERIFY 1" -.TH PGPVERIFY 1 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH PGPVERIFY 1 "2016-11-06" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -144,20 +153,20 @@ control message. If the control message \&\fBpgpverify\fR prints (to stdout) the user \s-1ID\s0 of the key that signed the message. Otherwise, it exits with a non-zero exit status. .PP -If \fBpgpverify\fR is installed as part of \s-1INN\s0, it uses \s-1INN\s0's configuration +If \fBpgpverify\fR is installed as part of \s-1INN,\s0 it uses \s-1INN\s0's configuration to determine what signature verification program to use, how to log errors, what temporary directory to use, and what keyring 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 the default key ring, which is in a \fI.pgp\fR or \fI.gnupg\fR subdirectory of the running user's home directory. .PP -\&\s-1INN\s0, when using GnuPG, configures \fBpgpverify\fR to use \fBgpgv\fR, which by +\&\s-1INN,\s0 when using GnuPG, configures \fBpgpverify\fR to use \fBgpgv\fR, which by default expects keys to be in a keyring named \fItrustedkeys.gpg\fR, since it doesn't implement trust checking directly. \fBpgpverify\fR uses that file if present but falls back to \fIpubring.gpg\fR if it's not found. This bypasses @@ -178,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" @@ -283,24 +292,24 @@ display the following acknowledgement: \& This product includes software developed by UUNET Technologies, Inc. .Ve .IP "4." 4 -The name of \s-1UUNET\s0 Technologies (\*(L"\s-1UUNET\s0\*(R") may not be used to endorse or +The name of \s-1UUNET\s0 Technologies (\*(L"\s-1UUNET\*(R"\s0) may not be used to endorse or promote products derived from this software without specific prior written permission. .PP -\&\s-1THIS\s0 \s-1SOFTWARE\s0 \s-1IS\s0 \s-1PROVIDED\s0 \s-1BY\s0 \s-1UUNET\s0 \*(L"\s-1AS\s0 \s-1IS\s0\*(R" \s-1AND\s0 \s-1ANY\s0 \s-1EXPRESS\s0 \s-1OR\s0 \s-1IMPLIED\s0 -\&\s-1WARRANTIES\s0, \s-1INCLUDING\s0, \s-1BUT\s0 \s-1NOT\s0 \s-1LIMITED\s0 \s-1TO\s0, \s-1THE\s0 \s-1IMPLIED\s0 \s-1WARRANTIES\s0 \s-1OF\s0 -\&\s-1MERCHANTABILITY\s0 \s-1AND\s0 \s-1FITNESS\s0 \s-1FOR\s0 A \s-1PARTICULAR\s0 \s-1PURPOSE\s0 \s-1ARE\s0 \s-1DISCLAIMED\s0. \s-1IN\s0 -\&\s-1NO\s0 \s-1EVENT\s0 \s-1SHALL\s0 \s-1UUNET\s0 \s-1BE\s0 \s-1LIABLE\s0 \s-1FOR\s0 \s-1ANY\s0 \s-1DIRECT\s0, \s-1INDIRECT\s0, \s-1INCIDENTAL\s0, -\&\s-1SPECIAL\s0, \s-1EXEMPLARY\s0, \s-1OR\s0 \s-1CONSEQUENTIAL\s0 \s-1DAMAGES\s0 (\s-1INCLUDING\s0, \s-1BUT\s0 \s-1NOT\s0 \s-1LIMITED\s0 -\&\s-1TO\s0, \s-1PROCUREMENT\s0 \s-1OF\s0 \s-1SUBSTITUTE\s0 \s-1GOODS\s0 \s-1OR\s0 \s-1SERVICES\s0; \s-1LOSS\s0 \s-1OF\s0 \s-1USE\s0, \s-1DATA\s0, \s-1OR\s0 -\&\s-1PROFITS\s0; \s-1OR\s0 \s-1BUSINESS\s0 \s-1INTERRUPTION\s0) \s-1HOWEVER\s0 \s-1CAUSED\s0 \s-1AND\s0 \s-1ON\s0 \s-1ANY\s0 \s-1THEORY\s0 \s-1OF\s0 -\&\s-1LIABILITY\s0, \s-1WHETHER\s0 \s-1IN\s0 \s-1CONTRACT\s0, \s-1STRICT\s0 \s-1LIABILITY\s0, \s-1OR\s0 \s-1TORT\s0 (\s-1INCLUDING\s0 -\&\s-1NEGLIGENCE\s0 \s-1OR\s0 \s-1OTHERWISE\s0) \s-1ARISING\s0 \s-1IN\s0 \s-1ANY\s0 \s-1WAY\s0 \s-1OUT\s0 \s-1OF\s0 \s-1THE\s0 \s-1USE\s0 \s-1OF\s0 \s-1THIS\s0 -\&\s-1SOFTWARE\s0, \s-1EVEN\s0 \s-1IF\s0 \s-1ADVISED\s0 \s-1OF\s0 \s-1THE\s0 \s-1POSSIBILITY\s0 \s-1OF\s0 \s-1SUCH\s0 \s-1DAMAGE\s0. +\&\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 +NO EVENT SHALL UUNET BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +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 +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" \&\fIgpgv\fR\|(1), \fIpgp\fR\|(1). .PP - is where the most recent versions of + is where the most recent versions of \&\fBsigncontrol\fR and \fBpgpverify\fR live, along with \s-1PGP\s0 public keys used for hierarchy administration. diff -Nurp inn-2.6.0/doc/man/procbatch.8 inn-2.6.1/doc/man/procbatch.8 --- inn-2.6.0/doc/man/procbatch.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/procbatch.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "PROCBATCH 8" -.TH PROCBATCH 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH PROCBATCH 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.0/doc/man/prunehistory.8 inn-2.6.1/doc/man/prunehistory.8 --- inn-2.6.0/doc/man/prunehistory.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/prunehistory.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "PRUNEHISTORY 8" -.TH PRUNEHISTORY 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH PRUNEHISTORY 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.0/doc/man/pullnews.1 inn-2.6.1/doc/man/pullnews.1 --- inn-2.6.0/doc/man/pullnews.1 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/pullnews.1 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "PULLNEWS 1" -.TH PULLNEWS 1 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH PULLNEWS 1 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -170,7 +179,7 @@ setting up traditional peering and is no .IX Item "-a hashfeed" This option is a deterministic way to control the flow of articles and to split a feed. The \fIhashfeed\fR parameter must be in the form \f(CW\*(C`value/mod\*(C'\fR -or \f(CW\*(C`start\-end/mod\*(C'\fR. The Message-ID of each article is hashed using \s-1MD5\s0, +or \f(CW\*(C`start\-end/mod\*(C'\fR. The Message-ID of each article is hashed using \s-1MD5,\s0 which results in a 128\-bit hash. The lowest 32\ bits are then taken by default as the hashfeed value (which is an integer). If the hashfeed value modulus \f(CW\*(C`mod\*(C'\fR plus one equals \f(CW\*(C`value\*(C'\fR or is between \f(CW\*(C`start\*(C'\fR @@ -227,7 +236,7 @@ the config file instead. This is useful as a system user on an automated basis out of cron or as an individual user, rather than the news user. .Sp -See \*(L"\s-1CONFIG\s0 \s-1FILE\s0\*(R" below for the format of this file. +See \*(L"\s-1CONFIG FILE\*(R"\s0 below for the format of this file. .IP "\fB\-C\fR \fIwidth\fR" 4 .IX Item "-C width" Use \fIwidth\fR characters per line for the progress table. The default value @@ -325,7 +334,7 @@ create a batch file that can later be fe \&\fIrnews\fR\|(1) for more information about the batch file format. .IP "\fB\-R\fR" 4 .IX Item "-R" -Be a reader (use \s-1MODE\s0 \s-1READER\s0 and \s-1POST\s0 commands) to the downstream +Be a reader (use \s-1MODE READER\s0 and \s-1POST\s0 commands) to the downstream server. The default is to use the \s-1IHAVE\s0 command. .IP "\fB\-s\fR \fIto-server\fR[:\fIport\fR]" 4 .IX Item "-s to-server[:port]" @@ -423,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 diff -Nurp inn-2.6.0/doc/man/qio.3 inn-2.6.1/doc/man/qio.3 --- inn-2.6.0/doc/man/qio.3 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/qio.3 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "qio 3" -.TH qio 3 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH qio 3 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -172,7 +181,7 @@ all users of these routines. Only the a \&\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 +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). @@ -205,7 +214,7 @@ offset at which the next line will start \&\fBQIOerror\fR returns true if there was an error in the last call to \&\fBQIOread\fR, false otherwise. \fBQIOtoolong\fR returns true if there was an error and the error was that the line was too long. If \fBQIOread\fR returns -\&\s-1NULL\s0, these functions should be called to determine what happened. If +\&\s-1NULL,\s0 these functions should be called to determine what happened. If \&\fBQIOread\fR returned \s-1NULL\s0 and \fBQIOerror\fR is false, \s-1EOF\s0 was reached. Note that if \fBQIOtoolong\fR returns true, the next call to \fBQIOread\fR will try to read the remainder of the line and will likely return a partial line; diff -Nurp inn-2.6.0/doc/man/radius.8 inn-2.6.1/doc/man/radius.8 --- inn-2.6.0/doc/man/radius.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/radius.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "RADIUS 8" -.TH RADIUS 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH RADIUS 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.0/doc/man/rc.news.8 inn-2.6.1/doc/man/rc.news.8 --- inn-2.6.0/doc/man/rc.news.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/rc.news.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "RC.NEWS 8" -.TH RC.NEWS 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH RC.NEWS 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -200,10 +209,10 @@ To stop \s-1INN:\s0 .IX Header "BUGS" Running \f(CW\*(C`rc.news start\*(C'\fR as root is never the right thing to do, so we should at minimum check for this and error, or perhaps change effective -user \s-1ID\s0. +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. diff -Nurp inn-2.6.0/doc/man/readers.conf.5 inn-2.6.1/doc/man/readers.conf.5 --- inn-2.6.0/doc/man/readers.conf.5 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/readers.conf.5 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "READERS.CONF 5" -.TH READERS.CONF 5 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH READERS.CONF 5 "2016-10-07" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -225,10 +234,12 @@ wildmat expressions, you may also use \s address in a netblock; for example, \*(L"10.10.10.0/24\*(R" will match any \s-1IP\s0 address between 10.10.10.0 and 10.10.10.255 inclusive. .PP -If compiled against the \s-1TLS/SSL\s0 libraries, an auth group with the \fIrequire_ssl\fR -parameter set to true only applies if the incoming connection is using -\&\s-1TLS\s0, either from the beginning if the \fB\-S\fR flag was passed to \fBnnrpd\fR or -after a successful use of \s-1STARTTLS\s0. +If compiled against the \s-1TLS/SSL\s0 or \s-1SASL\s0 libraries, an auth group with +the \fIrequire_ssl\fR parameter set to true only applies if the incoming +connection is using an encryption layer, either from the beginning if +the \fB\-S\fR flag was passed to \fBnnrpd\fR, or after a successful use of +\&\s-1STARTTLS,\s0 or after a successful authentication using a \s-1SASL\s0 mechanism +which negotiates an encryption layer. .PP For any connection from a host that matches that wildmat expression or netblock, each (multiple res: lines may be present in a @@ -240,7 +251,7 @@ the values of the default: and default-d only returns a username, is used as the domain. .PP -If the user later authenticates via the \s-1AUTHINFO\s0 \s-1USER/PASS\s0 commands, the +If the user later authenticates via the \s-1AUTHINFO USER/PASS\s0 commands, the provided username and password are passed to each (multiple auth, perl_auth, or python_auth lines may be present in a block; they are run in sequence until one succeeds), if any. If one succeeds and returns @@ -248,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 \fIckpasswd\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. @@ -423,7 +434,7 @@ 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\s0 \s-1USER/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. @@ -478,12 +489,14 @@ have its privileges determined only by t containing a matching key parameter. .IP "\fBrequire_ssl:\fR" 4 .IX Item "require_ssl:" -If set to true, an incoming connection only matches this auth group if -it is encrypted using \s-1TLS/SSL\s0, either from the beginning if the \fB\-S\fR -flag was passed to \fBnnrpd\fR or after a successful use of \s-1STARTTLS\s0. -This parameter is only valid if \s-1INN\s0 is compiled with \s-1TLS/SSL\s0 support (by -default if the OpenSSL \s-1SSL\s0 and crypto libraries are found at configure -time, otherwise see the \fB\-\-with\-openssl\fR flag passed to configure). +If set to true, an incoming connection only matches this auth group if it +is encrypted, either from the beginning if the \fB\-S\fR flag was passed to +\&\fBnnrpd\fR, or after a successful use of \s-1STARTTLS,\s0 or after a successful +authentication using a \s-1SASL\s0 mechanism which negotiates an encrypted +layer. This parameter is only valid if \s-1INN\s0 is compiled with \s-1TLS/SSL\s0 +or \s-1SASL\s0 support (by default if the OpenSSL \s-1SSL\s0 and crypto libraries or +the Cyrus \s-1SASL\s0 library are found at configure time, otherwise see the +\&\fB\-\-with\-openssl\fR and \fB\-\-with\-sasl\fR flags passed to configure). .IP "\fBperl_access:\fR" 4 .IX Item "perl_access:" A path to a perl script for dynamically generating an access group. If @@ -563,10 +576,10 @@ 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 +they were injected with \s-1POST,\s0 that is to say such articles must not have been previously injected (they must not contain headers like Injection-Info:). .IP "A" 3 @@ -587,7 +600,7 @@ The client may post to newsgroups that a Note that if this parameter is given, \fIallownewnews\fR in \fIinn.conf\fR is ignored for connections matching this access group and the ability of the client to use \s-1NEWNEWS\s0 is entirely determined by the presence of \f(CW\*(C`N\*(C'\fR in -the access string. If you want to support \s-1NEWNEWS\s0, make sure to include +the access string. If you want to support \s-1NEWNEWS,\s0 make sure to include \&\f(CW\*(C`N\*(C'\fR in the access string when you use this parameter. .Sp Note that if this parameter is given and \f(CW\*(C`R\*(C'\fR isn't present in the access @@ -614,14 +627,21 @@ display the reason to the user. .IX Item "max_rate:" If this parameter is present (and nonzero), it is used for \fBnnrpd\fR's rate-limiting code. The client will only be able to download at this -speed (in bytes/second). Note that if \s-1TLS/SSL\s0 is being used, limiting -is applied to the pre-encryption datastream. +speed (in bytes/second). Note that if an encryption layer is being used, +limiting is applied to the pre-encryption datastream. .IP "\fBlocaltime:\fR" 4 .IX Item "localtime:" -If a Date: header is not included in a posted article, \fInnrpd\fR\|(8) normally -adds a new Date: header in \s-1UTC\s0. If this is set to true, the Date: header -will be formatted in local time instead. This is a boolean value and the -default is false. +If a Date: or an Injection-Date: header field is not included in a +posted article, \fInnrpd\fR\|(8) normally adds these header fields in \s-1UTC.\s0 +If this is set to true, the Date: header field will be formatted in +local time instead. (The Injection-Date: header field will remain in +\&\s-1UTC,\s0 though.) This is a boolean value and the default is false. +.Sp +This parameter permits to handle a relatively unusual corner case. +It is mostly a tool for people who \fIwant\fR to disclose their local time +zone (it can be useful information in certain types of discussions), +but whose clients don't for some reason, and who can arrange for the +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 @@ -832,7 +852,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 @@ -912,7 +932,7 @@ can, if they choose, use username and pa their special privileges even if they're logged on as a different user on the shell machines (or if ident isn't working). When they first connect, they'd have the default access for that user, but they could then send -\&\s-1AUTHINFO\s0 \s-1USER\s0 and \s-1AUTHINFO\s0 \s-1PASS\s0 in order to get their extended access. +\&\s-1AUTHINFO USER\s0 and \s-1AUTHINFO PASS\s0 in order to get their extended access. .PP Also note that if the users joe and jane are using their own accounts, they get their special privileges regardless of how they connect, whether @@ -952,19 +972,19 @@ not \*(L"lock out\*(R" accounts or other attacks. So it is best to ensure that a compromised password has minimal effects. .PP -Authentication using the \s-1AUTHINFO\s0 \s-1USER/PASS\s0 commands passes unencrypted +Authentication using the \s-1AUTHINFO USER/PASS\s0 commands passes unencrypted over the network. Extreme caution should therefore be used especially with system passwords (e.g. \f(CW\*(C`auth: ckpasswd \-s\*(C'\fR). Passwords can be -protected by using \s-1NNTP\s0 over \s-1TLS/SSL\s0 or through ssh tunnels, and this usage -can be enforced by a well-considered server configuration that only -permits certain auth groups to be applied in certain cases. Here are -some ideas: +protected by using \s-1NNTP\s0 over \s-1TLS/SSL\s0 or through ssh tunnels, and this +usage can be enforced by a well-considered server configuration that +only permits certain auth groups to be applied in certain cases. One can +also authenticate using a strong \s-1SASL\s0 mechanism. Here are some ideas: .IP "\(bu" 4 -To restrict connections on the standard \s-1NNTP\s0 port (119) to use \s-1TLS\s0 for -some (or all) of the auth groups to match, use the \fIrequire_ssl\fR -parameter. Note that a client can use \s-1STARTTLS\s0 to negotiate an -encrypted connection. A secure layer can also be negotiated during -authentication via \s-1AUTHINFO\s0 \s-1SASL\s0. +To restrict connections on the standard \s-1NNTP\s0 port (119) to use an +encryption layer for some (or all) of the auth groups to match, use +the \fIrequire_ssl\fR parameter. Note that a client can use \s-1STARTTLS\s0 +to negotiate an encrypted \s-1TLS\s0 connection. A secure layer can also be +negotiated during authentication via \s-1AUTHINFO SASL.\s0 .IP "\(bu" 4 If you consider your local network (but not the internet) secure, have some auth groups with a restrictive hosts: parameter; they would go @@ -972,7 +992,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 \fInnrpd\fR\|(8) for more details about how to configure that. You can use the \fIrequire_ssl\fR parameter or the \&\fB\-c\fR flag to specify an alternate \fIreaders.conf\fR file if you want a substantially different configuration for this case. @@ -985,7 +1005,7 @@ tunnel), use the localaddress: parameter Written by Aidan Cully for InterNetNews. Substantially expanded by Russ Allbery . .PP -\&\f(CW$Id:\fR readers.conf.pod 9798 2015\-03\-21 13:30:37Z iulius $ +\&\f(CW$Id:\fR readers.conf.pod 9977 2015\-12\-10 20:49:04Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIauth_krb5\fR\|(8), \fIckpasswd\fR\|(8), \fIinn.conf\fR\|(5), \fIinnd\fR\|(8), \fInewsfeeds\fR\|(5), diff -Nurp inn-2.6.0/doc/man/rnews.1 inn-2.6.1/doc/man/rnews.1 --- inn-2.6.0/doc/man/rnews.1 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/rnews.1 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "RNEWS 1" -.TH RNEWS 1 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH RNEWS 1 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -148,7 +157,7 @@ given. Articles are sent to the server 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 +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 reduce communication time. If the input to \fBrnews\fR does not begin with the characters \f(CW\*(C`#!\*(C'\fR, it is taken to be a single news article; otherwise, diff -Nurp inn-2.6.0/doc/man/scanlogs.8 inn-2.6.1/doc/man/scanlogs.8 --- inn-2.6.0/doc/man/scanlogs.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/scanlogs.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "SCANLOGS 8" -.TH SCANLOGS 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH SCANLOGS 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.0/doc/man/scanspool.8 inn-2.6.1/doc/man/scanspool.8 --- inn-2.6.0/doc/man/scanspool.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/scanspool.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "SCANSPOOL 8" -.TH SCANSPOOL 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH SCANSPOOL 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.0/doc/man/send-uucp.8 inn-2.6.1/doc/man/send-uucp.8 --- inn-2.6.0/doc/man/send-uucp.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/send-uucp.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "SEND-UUCP 8" -.TH SEND-UUCP 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH SEND-UUCP 8 "2016-11-06" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -212,7 +221,7 @@ Here is an example for the \fIsend\-uucp This defines eight \s-1UUCP\s0 sites. The first three and the last two use \f(CW\*(C`gzip\*(C'\fR compression, the fourth site (\f(CW\*(C`drinkel\*(C'\fR) uses \f(CW\*(C`bzip2\*(C'\fR and the remaining sites (\f(CW\*(C`manhole\*(C'\fR and \f(CW\*(C`owl\*(C'\fR) use \f(CW\*(C`compress\*(C'\fR. The first six use a batch size of -1\ \s-1MB\s0, and the two last sites (\f(CW\*(C`able\*(C'\fR and \f(CW\*(C`pern\*(C'\fR) use the default of +1\ \s-1MB,\s0 and the two last sites (\f(CW\*(C`able\*(C'\fR and \f(CW\*(C`pern\*(C'\fR) use the default of 500,000 bytes. The \f(CW\*(C`zoetermeer\*(C'\fR, \f(CW\*(C`hoofddorp\*(C'\fR, \f(CW\*(C`pa3ebv\*(C'\fR, and \f(CW\*(C`manhole\*(C'\fR sites will only have batches generated for them during the hours of 05:00, 18:00, and 22:00, and the \f(CW\*(C`drinkel\*(C'\fR site will only have batches generated during those @@ -243,7 +252,7 @@ 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" diff -Nurp inn-2.6.0/doc/man/sendinpaths.8 inn-2.6.1/doc/man/sendinpaths.8 --- inn-2.6.0/doc/man/sendinpaths.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/sendinpaths.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "SENDINPATHS 8" -.TH SENDINPATHS 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH SENDINPATHS 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.0/doc/man/shlock.1 inn-2.6.1/doc/man/shlock.1 --- inn-2.6.0/doc/man/shlock.1 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/shlock.1 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "SHLOCK 1" -.TH SHLOCK 1 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH SHLOCK 1 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -137,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 @@ -150,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" @@ -188,7 +197,7 @@ a shell script: .SH "HISTORY" .IX Header "HISTORY" Written by Rich \f(CW$alz\fR for InterNetNews after -a description of \s-1HDB\s0 \s-1UUCP\s0 locking given by Peter Honeyman, and +a description of \s-1HDB UUCP\s0 locking given by Peter Honeyman, and improved by Berend Reitsma to solve a race condition. Converted to \s-1POD\s0 by Julien Elie. .PP diff -Nurp inn-2.6.0/doc/man/simpleftp.1 inn-2.6.1/doc/man/simpleftp.1 --- inn-2.6.0/doc/man/simpleftp.1 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/simpleftp.1 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "SIMPLEFTP 1" -.TH SIMPLEFTP 1 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH SIMPLEFTP 1 "2016-11-06" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -140,7 +149,7 @@ simpleftp \- Rudimentary FTP client fetching files with \s-1FTP\s0 in a batch oriented fashion. It takes one or more \&\s-1FTP\s0 URLs on the command line. The file(s) will be retrieved from the remote server and placed in the current directory with the same basename -as on the remote; e.g., +as on the remote; e.g., is stored as \fIactive.gz\fR in the current directory. .PP The script properly understands usernames, passwords and ports specified @@ -154,8 +163,8 @@ as follows: \&\fBsimpleftp\fR is an extremely poor substitute for more complete programs like the freely available \fBwget\fR or \fBncftp\fR utilities. It was written only to provide elementary support in \s-1INN\s0 for non-interactive fetching of -the files in or - without requiring +the files in or + without requiring administrators to install yet another package. Its shortcomings as a general purpose program are too numerous to mention, but one that stands out is that downloaded files by \fBsimpleftp\fR override existing files @@ -165,7 +174,7 @@ with the same name in the local director Tossed off by David C Lawrence for InterNetNews. Rewritten to use \f(CW\*(C`Net::FTP\*(C'\fR by Julien Elie. .PP -\&\f(CW$Id:\fR simpleftp.pod 8357 2009\-02\-27 17:56:00Z iulius $ +\&\f(CW$Id:\fR simpleftp.pod 10097 2016\-11\-04 22:19:07Z iulius $ .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIactsync\fR\|(8). diff -Nurp inn-2.6.0/doc/man/sm.1 inn-2.6.1/doc/man/sm.1 --- inn-2.6.0/doc/man/sm.1 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/sm.1 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "SM 1" -.TH SM 1 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH SM 1 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -173,7 +182,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" @@ -192,14 +201,14 @@ Suppress all error messages except usage .IX Item "-R" Display the raw article. This means that line endings won't be converted 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\s0.CRLF sequence. +will still be escaped for sending over \s-1NNTP,\s0 and the article will end in +a \s-1CRLF.CRLF\s0 sequence. .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" diff -Nurp inn-2.6.0/doc/man/storage.conf.5 inn-2.6.1/doc/man/storage.conf.5 --- inn-2.6.0/doc/man/storage.conf.5 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/storage.conf.5 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "STORAGE.CONF 5" -.TH STORAGE.CONF 5 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH STORAGE.CONF 5 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -144,7 +153,7 @@ 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 +\&\s-1API. \s0 Note that you may also want to see the options provided in \&\fIinn.conf\fR\|(5) regarding article storage. .PP The \fIstorage.conf\fR file consists of a series of storage method entries. @@ -185,7 +194,7 @@ are: \& trash .Ve .PP -See the \*(L"\s-1STORAGE\s0 \s-1METHODS\s0\*(R" section below for more details. +See the \*(L"\s-1STORAGE METHODS\*(R"\s0 section below for more details. .PP The meanings of the keys in each storage method entry are as follows: .IP "\fIclass\fR: " 4 @@ -247,7 +256,7 @@ match any article without an Expires: he .IP "\fIoptions\fR: " 4 .IX Item "options: " This key is for passing special options to storage methods that require them -(currently only \f(CW\*(C`cnfs\*(C'\fR). See the \*(L"\s-1STORAGE\s0 \s-1METHODS\s0\*(R" section below for +(currently only \f(CW\*(C`cnfs\*(C'\fR). See the \*(L"\s-1STORAGE METHODS\*(R"\s0 section below for a description of its use. .IP "\fIexactmatch\fR: " 4 .IX Item "exactmatch: " @@ -303,7 +312,7 @@ see \fIcycbuff.conf\fR\|(5) for details 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 new files. Unlike all other storage methods, it does not require manual -article expiration. With \s-1CNFS\s0, the server will never throttle itself +article expiration. With \s-1CNFS,\s0 the server will never throttle itself due to a full spool disk, and groups are restricted to just the buffer files given so that they can never use more than the amount of disk space allocated to them. diff -Nurp inn-2.6.0/doc/man/subscriptions.5 inn-2.6.1/doc/man/subscriptions.5 --- inn-2.6.0/doc/man/subscriptions.5 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/subscriptions.5 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "SUBSCRIPTIONS 5" -.TH SUBSCRIPTIONS 5 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH SUBSCRIPTIONS 5 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -134,7 +143,7 @@ subscriptions \- Default recommended sub .SH "DESCRIPTION" .IX Header "DESCRIPTION" The \fIpathetc\fR/subscriptions file contains a list of newsgroups that is -returned by the \s-1NNTP\s0 command \s-1LIST\s0 \s-1SUBSCRIPTIONS\s0. +returned by the \s-1NNTP\s0 command \s-1LIST SUBSCRIPTIONS.\s0 .PP Clients that support this command usually send it the first time they connect to a new news server. They use the returned list to initialize the list of @@ -147,7 +156,7 @@ newsgroup names, one per line. The orde significant; the news reading client may present the groups in that order to the user. .PP -Be aware that use of the \s-1LIST\s0 \s-1SUBSCRIPTIONS\s0 command is not widespread +Be aware that use of the \s-1LIST SUBSCRIPTIONS\s0 command is not widespread (though documented in \s-1RFC\s0\ 6048) and most news clients will never ask for this file. .SH "EXAMPLE" diff -Nurp inn-2.6.0/doc/man/tally.control.8 inn-2.6.1/doc/man/tally.control.8 --- inn-2.6.0/doc/man/tally.control.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/tally.control.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "TALLY.CONTROL 8" -.TH TALLY.CONTROL 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH TALLY.CONTROL 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.0/doc/man/tdx-util.8 inn-2.6.1/doc/man/tdx-util.8 --- inn-2.6.0/doc/man/tdx-util.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/tdx-util.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "TDX-UTIL 8" -.TH TDX-UTIL 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH TDX-UTIL 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -138,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. diff -Nurp inn-2.6.0/doc/man/tinyleaf.8 inn-2.6.1/doc/man/tinyleaf.8 --- inn-2.6.0/doc/man/tinyleaf.8 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/tinyleaf.8 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "TINYLEAF 8" -.TH TINYLEAF 8 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH TINYLEAF 8 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -138,7 +147,7 @@ tinyleaf \- Very simple IHAVE\-only NNTP .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 -equivalent, and only implements three commands (\s-1HELP\s0, \s-1IHAVE\s0, and \s-1QUIT\s0). +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 \&\fIprocessor\fR via a pipe. The file name of the article will be the \s-1MD5\s0 @@ -209,7 +218,7 @@ program. .IX Header "BUGS" The timeout and maximum message size should really be configurable. \&\fBtinyleaf\fR should also probably not just respond 500 to every command -other than \s-1HELP\s0, \s-1IHAVE\s0, and \s-1QUIT\s0; there are more useful (and more +other than \s-1HELP, IHAVE,\s0 and \s-1QUIT\s0; there are more useful (and more expected) error codes that could be returned. .PP An option to scan the spool directory for any left-over files and pass diff -Nurp inn-2.6.0/doc/man/tst.3 inn-2.6.1/doc/man/tst.3 --- inn-2.6.0/doc/man/tst.3 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/tst.3 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "tst 3" -.TH tst 3 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH tst 3 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nurp inn-2.6.0/doc/man/uwildmat.3 inn-2.6.1/doc/man/uwildmat.3 --- inn-2.6.0/doc/man/uwildmat.3 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/man/uwildmat.3 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) +.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,6 +38,8 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. @@ -48,17 +50,24 @@ .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "uwildmat 3" -.TH uwildmat 3 "2015-09-12" "INN 2.6.0" "InterNetNews Documentation" +.TH uwildmat 3 "2015-09-12" "INN 2.6.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -149,9 +158,9 @@ 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\s0 8859\-1. (In other -words, if you try to match \s-1ISO\s0 8859\-1 text with these routines everything -should work as expected unless the \s-1ISO\s0 8859\-1 text contains valid \s-1UTF\-8\s0 +compatible with single-octet character sets like \s-1ISO 8859\-1. \s0(In other +words, if you try to match \s-1ISO 8859\-1\s0 text with these routines everything +should work as expected unless the \s-1ISO 8859\-1\s0 text contains valid \s-1UTF\-8\s0 sequences, which thankfully is somewhat rare.) .PP \&\fBuwildmat_simple\fR is identical to \fBuwildmat\fR except that neither \f(CW\*(C`!\*(C'\fR @@ -272,7 +281,7 @@ in June, 1991. Russ Allbery added support for comma-separated patterns and the \f(CW\*(C`!\*(C'\fR and \f(CW\*(C`@\*(C'\fR metacharacters to the core wildmat routines in July, 2000. He also added support for \s-1UTF\-8\s0 characters, changed the default -behavior to assume that both the text and the pattern are in \s-1UTF\-8\s0, and +behavior to assume that both the text and the pattern are in \s-1UTF\-8,\s0 and largely rewrote this documentation to expand and clarify the description of how a wildmat expression matches. .PP diff -Nurp inn-2.6.0/doc/pod/active.times.pod inn-2.6.1/doc/pod/active.times.pod --- inn-2.6.0/doc/pod/active.times.pod 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/pod/active.times.pod 2016-11-27 06:03:42.000000000 -0800 @@ -33,7 +33,7 @@ The line: shows that the newsgroup news.admin.moderation was created on April 4th, 2007, at 20:00:03 UTC. This date can be obtained for instance with -C (convdate(1) is shipped with INN) or +C (convdate(1) is shipped with INN) or C. It is when the newsgroup was locally created; in this example, it is when a control message sent by C was received and processed @@ -45,7 +45,7 @@ the time is not necessarily the same on Written by Rich $alz for InterNetNews. Converted to POD by Russ Allbery . -$Id: active.times.pod 9767 2014-12-07 21:13:43Z iulius $ +$Id: active.times.pod 9971 2015-12-10 20:30:10Z iulius $ =head1 SEE ALSO diff -Nurp inn-2.6.0/doc/pod/actsync.pod inn-2.6.1/doc/pod/actsync.pod --- inn-2.6.0/doc/pod/actsync.pod 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/pod/actsync.pod 2016-11-27 06:03:42.000000000 -0800 @@ -56,8 +56,8 @@ If either I argument begins with C the name of a file containing information in the active(5) format. The getlist(1) utility may be used to obtain a copy of a remote system's F file via its NNTP server, or an FTP client program can retrieve such a -file from an FTP archive (such as -L; see more about this below). +file from an FTP archive (such as ftp.isc.org available in both FTP and HTTPS +L; 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 I arguments on the command line are called hosts, even though they may be file names. @@ -139,7 +139,7 @@ C<-o a1> format. INN comes with default values of C for and C for . You can read about the policies used for maintaining that F file at -L. Consider synchronizing +L. Consider synchronizing from this file on a daily basis by using B. =head1 OPTIONS @@ -774,7 +774,7 @@ Written by Landon Curt Noll . Converted to POD by Russ Allbery . -$Id: actsync.pod 9767 2014-12-07 21:13:43Z iulius $ +$Id: actsync.pod 10097 2016-11-04 22:19:07Z iulius $ By Landon Curt Noll (chongo was here /\../\). diff -Nurp inn-2.6.0/doc/pod/checklist.pod inn-2.6.1/doc/pod/checklist.pod --- inn-2.6.0/doc/pod/checklist.pod 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/pod/checklist.pod 2016-11-27 06:03:42.000000000 -0800 @@ -1,6 +1,6 @@ =head1 Introduction -$Id: checklist.pod 9937 2015-09-02 12:44:39Z iulius $ +$Id: checklist.pod 10097 2016-11-04 22:19:07Z iulius $ This is an installation checklist written by Rebecca Ore, intended to be the beginning of a different presentation of the information in F, @@ -79,8 +79,8 @@ F or F). =item * Download the INN tarball and unpack. Make sure that you download -the last release from L or a snapshot -from L. +the last release from L or a snapshot +from L. =item * @@ -177,10 +177,10 @@ that. =item * You can now import an F file (I/active) and run B -again. You may want to look at L +again. You may want to look at L and only keep the lines corresponding to the newsgroups you are interested in. Also import a F file which contains the descriptions of these -newsgroups (see for instance L). +newsgroups (see for instance L). Note that it is not necessary to do that now. INN is shipped with minimal F and F files and you can add newsgroups later with diff -Nurp inn-2.6.0/doc/pod/convdate.pod inn-2.6.1/doc/pod/convdate.pod --- inn-2.6.0/doc/pod/convdate.pod 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/pod/convdate.pod 2016-11-27 06:03:42.000000000 -0800 @@ -78,7 +78,7 @@ page dating from 1991 and were run in th ctime(3) results are in the local time zone. Compare to: % convdate -dc 666198000 - Sun, 10 Feb 1991 15:00:00 +0000 (UTC) + Sun, 10 Feb 1991 15:00:00 -0000 (UTC) % env TZ=PST8PDT convdate -dlc 666198000 Sun, 10 Feb 1991 07:00:00 -0800 (PST) @@ -94,7 +94,7 @@ determine (or at least override) the loc Written by Rich $alz , rewritten and updated by Russ Allbery for the B<-d> and B<-l> flags. -$Id: convdate.pod 9767 2014-12-07 21:13:43Z iulius $ +$Id: convdate.pod 9971 2015-12-10 20:30:10Z iulius $ =head1 SEE ALSO diff -Nurp inn-2.6.0/doc/pod/grephistory.pod inn-2.6.1/doc/pod/grephistory.pod --- inn-2.6.0/doc/pod/grephistory.pod 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/pod/grephistory.pod 2016-11-27 06:03:42.000000000 -0800 @@ -103,7 +103,7 @@ With B, we can retrieve the article, Date: Mon, 08 Jun 2009 20:25:12 -0700 % convdate -dc 1244517912 - Tue, 9 Jun 2009 03:25:12 +0000 (UTC) + Tue, 9 Jun 2009 03:25:12 -0000 (UTC) It matches the number recorded in history as for its posting date. @@ -112,7 +112,7 @@ It matches the number recorded in histor Written by Rich $alz for InterNetNews. Rewritten in POD by Russ Allbery . -$Id: grephistory.pod 9767 2014-12-07 21:13:43Z iulius $ +$Id: grephistory.pod 9971 2015-12-10 20:30:10Z iulius $ =head1 SEE ALSO diff -Nurp inn-2.6.0/doc/pod/hacking.pod inn-2.6.1/doc/pod/hacking.pod --- inn-2.6.0/doc/pod/hacking.pod 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/pod/hacking.pod 2016-11-27 06:03:42.000000000 -0800 @@ -11,7 +11,7 @@ previous full release, so starting from considerably easier to integrate your work. You can check out the current development tree using Subversion from: - + or view it with Trac source browser at: @@ -23,7 +23,7 @@ files. Nightly snapshots can be found at: - + =head1 Configuring and Portability @@ -70,13 +70,13 @@ The supporting files for B are 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 in the -F subdirectory created after building the package -with for instance B); the canonical version of the former two -are available from L (which currently +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 are just a -copy of the corresponding files in the F subdirectory +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 should be checked in periodically when available. There are no @@ -661,7 +661,7 @@ L<"Configuring and Portability"> for det Make sure that the latest upstream version of the C TAP Harness package is used for the test suite driver. It is available at -L, and can be +L, and can be easily synchronized with the script F; just run it, have a look at the resulting changes in INN source code and, if everything seems all right, commit these changes. @@ -675,16 +675,21 @@ yet been fully updated to use the new fo Make sure that the latest upstream version of the files maintained in the rra-c-util package that INN uses are the ones shipped with the release. These files are available at -L and can be easily +L and can be easily synchronized with the script F; just run it, have a look at the resulting changes in INN source code and, if everything seems all right, commit these changes. =item * +Make sure that F and F are in +sync with the master version at L. + +=item * + Make sure that F and F are in sync with the master version at -L and +L and L. =back @@ -708,13 +713,16 @@ included in a final release. It should a release candidate. If making a major release, the revision numbers of the STABLE series -should also be bumped at the end of subject 1.2. +should also be bumped in F at the end of subject 1.2, as well +as the revision numbers of scheduled versions in F. =item 5. Double-check that the version information in F, F, and F has been updated if there has -been any change in the library sources since the previous release. +been any change in the library sources since the previous release. Follow +the rules given at +L. =item 6. @@ -781,11 +789,26 @@ release announcement to inn-workers for Move the release into the public area of the ftp site and update the F link. Also put the diff and the MD5 checksum on the ftp -site and update the F link. Sign the release (ASC, -SHA-1, SHA-256 and SHA-512) and update the F link. -Possibly move older releases off into the F directory. Contact the -ISC folks to push the release to ftp.isc.org and to update the ISC web -site (the relevant contact is C instead of C). +site and update the F link. Sign the release, creating a +F<*.asc> file, using: + + gpg --detach-sign --armor inn-Y.Y.Y.tar.gz + +Also create SHA-1, SHA-256, and SHA-512 files, with C, +C, and C, respectively, and then sign them to create +corresponding F<*.asc> files. You don't need to retain the unsigned +checksum files. + +Update the F links and possibly move older releases off into +the F directory. + +(Currently, this is all done by Russ by updating the files in +L and then letting ISC mirror +them via rsync.) + +Contact the ISC folks to push the release to ftp.isc.org and to update the +ISC web site (the relevant contact is C instead of +C). =item 13. @@ -804,15 +827,22 @@ release tag by copying it to F in =item 15. Bump revision numbers to reflect the one of the following release, -especially in F, F and F +especially in F and F for major releases, F and F for both minor and major releases. The release versions in the Trac wiki should also be updated. =item 16. -For major releases, update the branch used for the generation of STABLE -snapshots. +For major releases, ping Russ to update the branch used for the +generation of STABLE snapshots. + +=item 17. + +Ping Russ to update L with the +latest version information and, for a major release, clone the +documentation tree for CURRENT as a new stable documentation tree for the +stable release series. =back @@ -823,14 +853,14 @@ people working on INN: =over 4 -=item L +=item L The home page for the IETF NNTP standardization effort, including links to the IETF NNTP working group archives and copies of the latest drafts of the new NNTP standard. The old archived mailing list traffic contains a lot of interesting discussion of why NNTP is the way it is. -=item L +=item L A collection of documents about the Usenet article format, including most of the relevant RFCs and Internet-Drafts. @@ -855,6 +885,6 @@ technical details as needed, useful when =back -$Id: hacking.pod 9942 2015-09-08 19:49:55Z iulius $ +$Id: hacking.pod 10116 2016-11-06 14:23:01Z iulius $ =cut diff -Nurp inn-2.6.0/doc/pod/inn.conf.pod inn-2.6.1/doc/pod/inn.conf.pod --- inn-2.6.0/doc/pod/inn.conf.pod 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/pod/inn.conf.pod 2016-11-27 06:03:42.000000000 -0800 @@ -1096,8 +1096,13 @@ interoperate (see RFC 4642 for more deta =item I -Whether to enable or disable SSL/TLS compression support. This is a -boolean and the default is true, that is to say compression is enabled. +Whether to enable or disable TLS/SSL-level compression support. +This is a boolean and the default is false, that is to say compression +is disabled, so as to follow the best current practices for a secure +use of TLS in application protocols like NNTP. + +Note that enabling TLS/SSL-level compression will be possible only if +the OpenSSL library INN has been built with, supports that feature. =item I @@ -1112,13 +1117,14 @@ This option is only effective if your Op =item I -Whether to let the client or the server decide the preferred cipher. -This is a boolean and the default is true, that is to say the server -decides the preferred cipher. +Whether to let the client or the server decide the preferred cipher +suite, signature algorithm or elliptic curve to use for an incoming +connection. This is a boolean and the default is true, that is to say +the server will choose following its own preferences. =item I -The list of SSL/TLS protocol versions to support. Valid protocols are +The list of TLS/SSL protocol versions to support. Valid protocols are B, B, B, B and B. The default value is to only allow TLS protocols: @@ -1554,7 +1560,7 @@ values for reference. Written by Rich $alz for InterNetNews and since modified, updated, and reorganized by innumerable other people. -$Id: inn.conf.pod 9922 2015-07-14 16:43:55Z iulius $ +$Id: inn.conf.pod 10064 2016-09-04 12:55:40Z iulius $ =head1 SEE ALSO diff -Nurp inn-2.6.0/doc/pod/install.pod inn-2.6.1/doc/pod/install.pod --- inn-2.6.0/doc/pod/install.pod 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/pod/install.pod 2016-11-27 06:03:42.000000000 -0800 @@ -126,7 +126,7 @@ If you want to enable support for authen not required, but is highly recommended for systems carrying public Usenet hierarchies) then you will need to install some version of PGP. The recommended version is B, since it's actively developed, supports -OpenPGP, is freely available from L and free to use +OpenPGP, is freely available from L and free to use for any purpose (in the US and elsewhere), and (as of version 1.0.4 at least) supports the RSA signatures used by most current control message senders. @@ -157,7 +157,7 @@ If any of these libraries (other than Pe installed in locations where your system doesn't search for shared libraries by default, you may need to encode the paths to those shared libraries in the INN binaries. For more information on shared library -paths, see L. +paths, see L. For most systems, setting the environment variable LD_RUN_PATH to a colon-separated list of additional directories in which to look for shared @@ -167,12 +167,12 @@ libraries before building INN will be su =head1 Unpacking the Distribution -Released versions of INN are available from L. +Released versions of INN are available from L. New major releases will be announced on (see F) when they're made. If you want a more cutting-edge version, you can obtain current -snapshots from L. These +snapshots from L. These are snapshots of the INN Subversion tree taken daily; there are two snapshots made each night (one of the current development branch, and one of the stable branch consisting of bug fixes to the previous major release). @@ -343,6 +343,9 @@ filters are written in Perl. See F environment variable is set, it will be used as the path +to Perl. + =item B<--with-python> Enables support for Python, allowing you to install filter and @@ -413,15 +416,21 @@ explicitly passed to configure. =item B<--with-zlib>=PATH -The ovdb storage method can optionally use compression. If B<--with-bdb> -is set, and configure finds a suitable S version, configure -will by default also try to find the zlib library. INN will then be -built with zlib support unless the B<--without-zlib> flag is explicitly -passed to configure. +Enables support for compression for news reading, which means a +compression layer can be negotiated between your server and newsreaders +supporting that NNTP extension. + +Also enables support for compression with the ovdb storage method. + +This option requires that zlib be installed on your system (including the +header files, not just the runtime libraries). If a path is given, it +sets the installed directory of zlib. In case non-standard paths to the +zlib library are used, one or both of the options B<--with-zlib-include> +and B<--with-zlib-lib> can be given to configure with a path. -In case non-standard paths to the zlib library are used, one or both -of the options B<--with-zlib-include> and B<--with-zlib-lib> can be -given to configure with a path. +If the zlib library is found at configure time, INN will be built with +compression support unless the B<--without-zlib> flag is explicitly +passed to configure. =item B<--with-openssl>=PATH @@ -1407,7 +1416,7 @@ new server based on an existing server), from that server into I. Otherwise, you'll need to figure out what newsgroups you want to carry and create new active and newsgroups files for them. If you plan to carry a full feed, or something close to -that, go to L and download F +that, go to L and download F and F from there; that will start you off with reasonably complete files. If you plan to only carry a small set of groups, the default minimal F file installed by INN is a good place to start; @@ -1646,7 +1655,7 @@ F file that processes contr hierarchies; if you don't want to act on all those control messages, you should remove from that file all entries for hierarchies you don't want to carry. The last version of that file is available from -L. +L. You can tell INN to just authenticate control messages based on the From: header of the message, but this is obviously perilous and control messages @@ -1679,7 +1688,7 @@ trust, or certify keys. And you may aft cp /pgp/pubring.gpg /pgp/trustedkeys.gpg The URLs from which you can get hierarchy keys are noted in comments in -F. L tries to +F. L tries to collect the major hierarchy keys and you can just import the whole file. If you want to make sure that the keys have been correcly imported, use: @@ -1692,6 +1701,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 9936 2015-09-02 12:35:17Z iulius $ +$Id: install.pod 10097 2016-11-04 22:19:07Z iulius $ =cut diff -Nurp inn-2.6.0/doc/pod/news.pod inn-2.6.1/doc/pod/news.pod --- inn-2.6.0/doc/pod/news.pod 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/pod/news.pod 2016-11-27 06:03:42.000000000 -0800 @@ -1,3 +1,100 @@ +=head1 Changes in 2.6.1 + +=over 2 + +=item * + +B now uses C<-0000> as the time zone for Date: and Injection-Date: +header fields it generates. It was previously using C<+0000>, wrongly +systematically indicating a local time zone at Universal Time when +I is set to false (which is the default) in F. +The C<+0000> time zone will now be used only if I is set to +true and UTC is really the local time zone of the server. + +=item * + +Julien Elie has implemented in B the new COMPRESS command +described in draft-murchison-nntp-compress that extends the NNTP protocol +to allow a connection to be effectively and efficiently compressed. +News clients that also support that extension will be able to benefit +from that bandwidth optimization and improvement in speed. Moreover, +using COMPRESS is more secure than TLS-level compression, as far as +authentication credentials are concerned. + +=item * + +The default value for the I parameter in F +has changed. TLS-level compression is now disabled by default, to comply +with the best current practices for a secure use of TLS in application +protocols like NNTP. Using the new COMPRESS command is recommended. + +=item * + +The I parameter in F now also permits to +disable TLS-level compression with S. It previously +had an effect only when S or later was used. + +=item * + +B no longer segfaults at startup when started setuid news. +Thanks to Marcus Jodorf for the bug report. + +=item * + +Fixed slow B responses for a few NNTP commands. The TCP_NODELAY +option was unconditionally set whereas only BSD/OS systems needed it. +Thanks to Christian Mock for having discovered that. + +=item * + +Articles containing a Received: or a Posted: header field are no longer +rejected by B at injection time. + +=item * + +Articles containing control characters or whitespace-only content lines +in their headers are now rejected by B at injection time. + +=item * + +S support has been added to INN. + +=item * + +When an encryption layer is negotiated during a successful use of the +STARTTLS command, or after a successful authentication using a SASL +mechanism that negotiates an encryption layer, B now updates +the permissions of the news client according to the new secure state +of his connection (that is to say auth blocks in F using +the I parameter are taken into account). Previously, +only connections on a dedicated port (usually 563) were taking benefit +from that parameter. Thanks to Steve Crook for the bug report. + +=item * + +When a data integrity layer was negotiated during a successful SASL +authentication, B was wrongly reseting any knowledge obtained +from the client, such as the current newsgroup and article number. +This behaviour now applies only when an encryption layer is negotiated. + +=item * + +B now correctly waits until all of the child B +processes exit before it does. It was causing B to fail +to work properly on systems that use systemd, because when it exits +prematurely, systemd kills all of the processes it launched, including +the B processes. Thanks to Jonathan Kamens for the patch. + +=item * + +Update from GNU Libtool 2.4.2 to 2.4.6. + +=item * + +Other minor bug fixes and documentation improvements. + +=back + =head1 Upgrading from 2.5 to 2.6 The following changes require your full attention because a manual @@ -26,7 +123,7 @@ and F from I before, be aware that the +If you have been using TLS/SSL with B before, be aware that the default value of a few F parameters have changed: the server now decides the preferred cipher (instead of the client), and only TLS protocols are allowed (using the flawed SSLv2 and SSLv3 protocols is @@ -260,7 +357,7 @@ Other minor bug fixes and documentation =item * -New F parameters used by B to fine-tune the SSL/TLS +New F parameters used by B to fine-tune the TLS/SSL configuration have been added: I, I, I, I, and I. Many thanks to Christian Mock for his contribution that permits to @@ -2766,7 +2863,7 @@ the old spool. It's more reliable and e into the right place. The easiest way to do this is to generate, on your old server, a list of all of your existing article files and then feed that list to B. Further details can be found in the FAQ at -L. +L. If you are using a version of Cleanfeed that still has a line in it like: @@ -2934,7 +3031,7 @@ Support for B to fetch F if you run B. Be sure to read the manual page for B to configure an F file for your site, and test B if you do not C with B -or B. Also see L. +or B. Also see L. =item * @@ -2966,6 +3063,6 @@ directory, for now). =back -$Id: news.pod 9923 2015-07-14 16:48:11Z iulius $ +$Id: news.pod 10127 2016-11-27 13:43:25Z iulius $ =cut diff -Nurp inn-2.6.0/doc/pod/newsfeeds.pod inn-2.6.1/doc/pod/newsfeeds.pod --- inn-2.6.0/doc/pod/newsfeeds.pod 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/pod/newsfeeds.pod 2016-11-27 06:03:42.000000000 -0800 @@ -340,9 +340,31 @@ output as soon as it is possible to do s If this flag is specified, an article will only be sent to this site if the number of groups it is posted to, plus the square of the number of groups followups would appear in, is no more than I. C<30> is a -good value for this flag, allowing crossposts to up to 29 groups when -followups are set to a single group or poster and only allowing crossposts -to 5 groups when followups aren't set. +good value for this flag, allowing for instance: + +=over 3 + +=item * + +crossposts to only 5 groups when followups aren't set; + +=item * + +crossposts to up to 26 groups when followups are set to two groups; + +=item * + +crossposts to up to 29 groups when followups are set to a single group; + +=item * + +crossposts to up to 30 groups when followups are set to poster. + +=back + +Note that if an article does not contain a Followup-To: header field, +the number of groups followups would appear in is the number of groups +it is posted to. =item B I @@ -813,7 +835,7 @@ the standard newsfeeds entries used by m Written by Rich $alz for InterNetNews. Reformatted and rewritten in POD by Russ Allbery . -$Id: newsfeeds.pod 9767 2014-12-07 21:13:43Z iulius $ +$Id: newsfeeds.pod 10061 2016-09-04 12:48:39Z iulius $ =head1 SEE ALSO diff -Nurp inn-2.6.0/doc/pod/newsgroups.pod inn-2.6.1/doc/pod/newsgroups.pod --- inn-2.6.0/doc/pod/newsgroups.pod 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/pod/newsgroups.pod 2016-11-27 06:03:42.000000000 -0800 @@ -116,11 +116,11 @@ and paste them from above. Written by Julien Elie for InterNetNews. The preferred format for a one-line newsgroup description is based on the policies by which the F file in -L is maintained; they were originally +L is maintained; they were originally written by David Lawrence and updated by Russ Allbery . -$Id: newsgroups.pod 9767 2014-12-07 21:13:43Z iulius $ +$Id: newsgroups.pod 10097 2016-11-04 22:19:07Z iulius $ =head1 SEE ALSO diff -Nurp inn-2.6.0/doc/pod/nnrpd.pod inn-2.6.1/doc/pod/nnrpd.pod --- inn-2.6.0/doc/pod/nnrpd.pod 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/pod/nnrpd.pod 2016-11-27 06:03:42.000000000 -0800 @@ -233,7 +233,7 @@ defined in F on your syst Optionally, you may set the I, I, I, I, and I parameters -in F to fine-tune the behaviour of the SSL/TLS negotiation +in F to fine-tune the behaviour of the TLS/SSL negotiation whenever a new attack on the TLS protocol or some supported cipher suite is discovered. @@ -307,7 +307,7 @@ support added by Rob Robertston -parameter set to true only applies if the incoming connection is using -TLS, either from the beginning if the B<-S> flag was passed to B or -after a successful use of STARTTLS. +If compiled against the TLS/SSL or SASL libraries, an auth group with +the I parameter set to true only applies if the incoming +connection is using an encryption layer, either from the beginning if +the B<-S> flag was passed to B, or after a successful use of +STARTTLS, or after a successful authentication using a SASL mechanism +which negotiates an encryption layer. For any connection from a host that matches that wildmat expression or netblock, each (multiple res: lines may be present in a @@ -344,12 +346,14 @@ containing a matching key parameter. =item B -If set to true, an incoming connection only matches this auth group if -it is encrypted using TLS/SSL, either from the beginning if the B<-S> -flag was passed to B or after a successful use of STARTTLS. -This parameter is only valid if INN is compiled with TLS/SSL support (by -default if the OpenSSL SSL and crypto libraries are found at configure -time, otherwise see the B<--with-openssl> flag passed to configure). +If set to true, an incoming connection only matches this auth group if it +is encrypted, either from the beginning if the B<-S> flag was passed to +B, or after a successful use of STARTTLS, or after a successful +authentication using a SASL mechanism which negotiates an encrypted +layer. This parameter is only valid if INN is compiled with TLS/SSL +or SASL support (by default if the OpenSSL SSL and crypto libraries or +the Cyrus SASL library are found at configure time, otherwise see the +B<--with-openssl> and B<--with-sasl> flags passed to configure). =item B @@ -501,15 +505,22 @@ display the reason to the user. If this parameter is present (and nonzero), it is used for B's rate-limiting code. The client will only be able to download at this -speed (in bytes/second). Note that if TLS/SSL is being used, limiting -is applied to the pre-encryption datastream. +speed (in bytes/second). Note that if an encryption layer is being used, +limiting is applied to the pre-encryption datastream. =item B -If a Date: header is not included in a posted article, nnrpd(8) normally -adds a new Date: header in UTC. If this is set to true, the Date: header -will be formatted in local time instead. This is a boolean value and the -default is false. +If a Date: or an Injection-Date: header field is not included in a +posted article, nnrpd(8) normally adds these header fields in UTC. +If this is set to true, the Date: header field will be formatted in +local time instead. (The Injection-Date: header field will remain in +UTC, though.) This is a boolean value and the default is false. + +This parameter permits to handle a relatively unusual corner case. +It is mostly a tool for people who I to disclose their local time +zone (it can be useful information in certain types of discussions), +but whose clients don't for some reason, and who can arrange for the +server to be in the same time zone as the client. =item B @@ -855,20 +866,20 @@ minimal effects. Authentication using the AUTHINFO USER/PASS commands passes unencrypted over the network. Extreme caution should therefore be used especially with system passwords (e.g. C). Passwords can be -protected by using NNTP over TLS/SSL or through ssh tunnels, and this usage -can be enforced by a well-considered server configuration that only -permits certain auth groups to be applied in certain cases. Here are -some ideas: +protected by using NNTP over TLS/SSL or through ssh tunnels, and this +usage can be enforced by a well-considered server configuration that +only permits certain auth groups to be applied in certain cases. One can +also authenticate using a strong SASL mechanism. Here are some ideas: =over 4 =item * -To restrict connections on the standard NNTP port (119) to use TLS for -some (or all) of the auth groups to match, use the I -parameter. Note that a client can use STARTTLS to negotiate an -encrypted connection. A secure layer can also be negotiated during -authentication via AUTHINFO SASL. +To restrict connections on the standard NNTP port (119) to use an +encryption layer for some (or all) of the auth groups to match, use +the I parameter. Note that a client can use STARTTLS +to negotiate an encrypted TLS connection. A secure layer can also be +negotiated during authentication via AUTHINFO SASL. =item * @@ -898,7 +909,7 @@ tunnel), use the localaddress: parameter Written by Aidan Cully for InterNetNews. Substantially expanded by Russ Allbery . -$Id: readers.conf.pod 9798 2015-03-21 13:30:37Z iulius $ +$Id: readers.conf.pod 9977 2015-12-10 20:49:04Z iulius $ =head1 SEE ALSO diff -Nurp inn-2.6.0/doc/pod/readme.pod inn-2.6.1/doc/pod/readme.pod --- inn-2.6.0/doc/pod/readme.pod 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/pod/readme.pod 2016-11-27 06:03:42.000000000 -0800 @@ -87,11 +87,11 @@ work on. If you encounter problems comp successfully run INN on a platform that isn't listed in F, please let us know (see L<"Reporting Bugs"> below). -S or later is required to build INN and use the embedded Perl +S or later is required to build INN and use the embedded Perl filter support (which is highly recommended; some excellent spam filters have been written for INN). Since all versions of Perl previous to 5.004 are buggy (including security problems) and have fewer features, installing -S or later (like at least S) is recommended. +S or later (like at least S) is recommended. If you want to enable PGP verification of control messages (highly recommended), you will need to have a PGP implementation installed. See @@ -309,6 +309,6 @@ L. Katsuhiro Kondou -$Id: readme.pod 9945 2015-09-12 13:05:27Z iulius $ +$Id: readme.pod 10023 2016-05-05 12:50:56Z iulius $ =cut diff -Nurp inn-2.6.0/doc/pod/simpleftp.pod inn-2.6.1/doc/pod/simpleftp.pod --- inn-2.6.0/doc/pod/simpleftp.pod 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/doc/pod/simpleftp.pod 2016-11-27 06:03:42.000000000 -0800 @@ -12,7 +12,7 @@ B is a Perl script that provi fetching files with FTP in a batch oriented fashion. It takes one or more FTP URLs on the command line. The file(s) will be retrieved from the remote server and placed in the current directory with the same basename -as on the remote; e.g., L +as on the remote; e.g., L is stored as F in the current directory. The script properly understands usernames, passwords and ports specified @@ -25,8 +25,8 @@ as follows: B is an extremely poor substitute for more complete programs like the freely available B or B utilities. It was written only to provide elementary support in INN for non-interactive fetching of -the files in L or -L without requiring +the files in L or +L without requiring administrators to install yet another package. Its shortcomings as a general purpose program are too numerous to mention, but one that stands out is that downloaded files by B override existing files @@ -37,7 +37,7 @@ with the same name in the local director Tossed off by David C Lawrence for InterNetNews. Rewritten to use C by Julien Elie. -$Id: simpleftp.pod 8357 2009-02-27 17:56:00Z iulius $ +$Id: simpleftp.pod 10097 2016-11-04 22:19:07Z iulius $ =head1 SEE ALSO diff -Nurp inn-2.6.0/expire/Makefile inn-2.6.1/expire/Makefile --- inn-2.6.0/expire/Makefile 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/expire/Makefile 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -## $Id: Makefile 9815 2015-03-25 20:26:58Z iulius $ +## $Id: Makefile 10100 2016-11-04 22:24:26Z iulius $ include ../Makefile.global @@ -88,7 +88,8 @@ convdate.o: convdate.c ../include/config ../include/inn/defines.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/messages.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h expire.o: expire.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 \ @@ -97,7 +98,7 @@ expire.o: expire.c ../include/config.h . ../include/portable/stdbool.h ../include/inn/history.h \ ../include/inn/innconf.h ../include/inn/messages.h \ ../include/inn/inndcomm.h ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.h \ + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ ../include/inn/newsuser.h ../include/inn/paths.h \ ../include/inn/storage.h ../include/inn/options.h expireover.o: expireover.c ../include/config.h ../include/inn/defines.h \ @@ -106,11 +107,11 @@ expireover.o: expireover.c ../include/co ../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 \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - ../include/inn/messages.h ../include/inn/newsuser.h ../include/inn/ov.h \ - ../include/inn/history.h ../include/inn/storage.h \ - ../include/inn/options.h ../include/inn/paths.h ../include/inn/qio.h \ - ../include/inn/storage.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h ../include/inn/messages.h \ + ../include/inn/newsuser.h ../include/inn/ov.h ../include/inn/history.h \ + ../include/inn/storage.h ../include/inn/options.h ../include/inn/paths.h \ + ../include/inn/qio.h ../include/inn/storage.h fastrm.o: fastrm.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -118,7 +119,7 @@ fastrm.o: fastrm.c ../include/config.h . ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/innconf.h \ ../include/inn/messages.h ../include/inn/qio.h ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.h \ + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ ../include/inn/storage.h ../include/inn/options.h grephistory.o: grephistory.c ../include/clibrary.h ../include/config.h \ ../include/inn/defines.h ../include/inn/system.h ../include/inn/macros.h \ @@ -127,18 +128,19 @@ grephistory.o: grephistory.c ../include/ ../include/inn/macros.h ../include/portable/stdbool.h \ ../include/inn/history.h ../include/inn/innconf.h \ ../include/inn/messages.h ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/paths.h \ - ../include/inn/storage.h ../include/inn/options.h + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ + ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h makedbz.o: makedbz.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/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/dbz.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - ../include/inn/innconf.h ../include/inn/messages.h \ - ../include/inn/newsuser.h ../include/inn/paths.h ../include/inn/qio.h \ - ../include/inn/storage.h ../include/inn/options.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h ../include/inn/innconf.h \ + ../include/inn/messages.h ../include/inn/newsuser.h \ + ../include/inn/paths.h ../include/inn/qio.h ../include/inn/storage.h \ + ../include/inn/options.h makehistory.o: makehistory.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -146,11 +148,11 @@ makehistory.o: makehistory.c ../include/ ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/buffer.h \ ../include/inn/history.h ../include/inn/innconf.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - ../include/inn/messages.h ../include/inn/newsuser.h ../include/inn/ov.h \ - ../include/inn/storage.h ../include/inn/options.h ../include/inn/paths.h \ - ../include/inn/qio.h ../include/inn/storage.h ../include/inn/vector.h \ - ../include/inn/wire.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h ../include/inn/messages.h \ + ../include/inn/newsuser.h ../include/inn/ov.h ../include/inn/storage.h \ + ../include/inn/options.h ../include/inn/paths.h ../include/inn/qio.h \ + ../include/inn/storage.h ../include/inn/vector.h ../include/inn/wire.h prunehistory.o: prunehistory.c ../include/config.h \ ../include/inn/defines.h ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -158,5 +160,5 @@ prunehistory.o: prunehistory.c ../includ ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/history.h \ ../include/inn/innconf.h ../include/inn/messages.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - ../include/inn/paths.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h ../include/inn/paths.h diff -Nurp inn-2.6.0/expire/expire.c inn-2.6.1/expire/expire.c --- inn-2.6.0/expire/expire.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/expire/expire.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: expire.c 9019 2010-03-19 21:27:15Z iulius $ +/* $Id: expire.c 10012 2016-05-05 12:41:10Z iulius $ ** ** Expire news articles. */ @@ -98,16 +98,7 @@ static int EXPsplit(char *p, char sep, c while (*p == sep) ++p; - if (!*p) - return 0; - - if (!p) - return 0; - - while (*p == sep) - ++p; - - if (!*p) + if (*p == '\0') return 0; for (i = 1, *argv++ = p; *p; ) diff -Nurp inn-2.6.0/expire/expireover.c inn-2.6.1/expire/expireover.c --- inn-2.6.0/expire/expireover.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/expire/expireover.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: expireover.c 8570 2009-08-17 19:05:28Z iulius $ +/* $Id: expireover.c 10009 2016-05-05 12:39:19Z iulius $ ** ** Expire the overview database. ** @@ -201,7 +201,7 @@ main(int argc, char *argv[]) if (!OVexpiregroup(line, &low, history)) warn("can't expire %s", line); else if (lowmark != NULL && low != 0) - fprintf(lowmark, "%s %u\n", line, low); + fprintf(lowmark, "%s %d\n", line, low); line = QIOread(qp); } if (signalled) diff -Nurp inn-2.6.0/frontends/Makefile inn-2.6.1/frontends/Makefile --- inn-2.6.0/frontends/Makefile 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/frontends/Makefile 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -## $Id: Makefile 9794 2015-03-17 20:49:15Z iulius $ +## $Id: Makefile 10100 2016-11-04 22:24:26Z iulius $ include ../Makefile.global @@ -10,6 +10,8 @@ ALL = bunbatch c7unbatch cnfsheadc ovdb_init ovdb_monitor ovdb_server ovdb_stat rnews \ scanspool sm +OPTIONAL = feedone sys2nf + MAN = ../doc/man/mailpost.8 SOURCES = ctlinnd.c decode.c encode.c getlist.c inews.c innconfval.c \ @@ -45,7 +47,7 @@ install: all bootstrap: $(MAN) clean clobber distclean: - rm -f *.o $(ALL) + rm -f *.o $(ALL) $(OPTIONAL) rm -rf .libs maintclean: distclean @@ -138,8 +140,8 @@ ctlinnd.o: ctlinnd.c ../include/config.h ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/innconf.h \ ../include/inn/messages.h ../include/inn/inndcomm.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - ../include/inn/paths.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h ../include/inn/paths.h decode.o: decode.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 \ @@ -159,17 +161,17 @@ getlist.o: getlist.c ../include/config.h ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/innconf.h \ ../include/inn/messages.h ../include/inn/nntp.h ../include/inn/qio.h \ - ../include/inn/vector.h ../include/inn/libinn.h ../include/inn/xmalloc.h \ - ../include/inn/xwrite.h ../include/inn/paths.h + ../include/inn/vector.h ../include/inn/libinn.h ../include/inn/concat.h \ + ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/paths.h inews.o: inews.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 \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - ../include/inn/messages.h ../include/inn/newsuser.h \ - ../include/inn/nntp.h ../include/inn/paths.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h ../include/inn/messages.h \ + ../include/inn/newsuser.h ../include/inn/nntp.h ../include/inn/paths.h innconfval.o: innconfval.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 \ @@ -177,14 +179,15 @@ innconfval.o: innconfval.c ../include/co ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/innconf.h \ ../include/inn/messages.h ../include/inn/version.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h ovdb_init.o: ovdb_init.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ ../include/inn/defines.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.h \ + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ ../include/inn/innconf.h ../include/inn/messages.h ../include/inn/ov.h \ ../include/inn/history.h ../include/inn/storage.h \ ../include/inn/options.h ../storage/ovdb/ovdb.h \ @@ -197,8 +200,8 @@ ovdb_monitor.o: ovdb_monitor.c ../includ ../include/portable/stdbool.h ../include/portable/setproctitle.h \ ../include/portable/macros.h ../include/inn/innconf.h \ ../include/inn/messages.h ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/ov.h \ - ../include/inn/history.h ../include/inn/storage.h \ + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ + ../include/inn/ov.h ../include/inn/history.h ../include/inn/storage.h \ ../include/inn/options.h ../storage/ovdb/ovdb.h \ ../storage/ovdb/ovdb-private.h ovdb_server.o: ovdb_server.c ../include/config.h ../include/inn/defines.h \ @@ -212,10 +215,11 @@ ovdb_server.o: ovdb_server.c ../include/ ../include/portable/getnameinfo.h ../include/portable/socket-unix.h \ ../include/inn/fdflag.h ../include/inn/portable-socket.h \ ../include/inn/innconf.h ../include/inn/messages.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h \ - ../include/inn/ov.h ../include/inn/history.h ../include/inn/storage.h \ - ../storage/ovdb/ovdb.h ../storage/ovdb/ovdb-private.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h ../include/inn/paths.h ../include/inn/storage.h \ + ../include/inn/options.h ../include/inn/ov.h ../include/inn/history.h \ + ../include/inn/storage.h ../storage/ovdb/ovdb.h \ + ../storage/ovdb/ovdb-private.h ovdb_stat.o: ovdb_stat.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -223,8 +227,8 @@ ovdb_stat.o: ovdb_stat.c ../include/conf ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/innconf.h \ ../include/inn/messages.h ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/ov.h \ - ../include/inn/history.h ../include/inn/storage.h \ + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ + ../include/inn/ov.h ../include/inn/history.h ../include/inn/storage.h \ ../include/inn/options.h ../include/inn/paths.h ../include/inn/storage.h \ ../storage/ovdb/ovdb.h ../storage/ovdb/ovdb-private.h rnews.o: rnews.c ../include/config.h ../include/inn/defines.h \ @@ -235,10 +239,10 @@ rnews.o: rnews.c ../include/config.h ../ ../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 \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - ../include/inn/messages.h ../include/inn/newsuser.h \ - ../include/inn/nntp.h ../include/inn/paths.h ../include/inn/storage.h \ - ../include/inn/options.h ../include/inn/wire.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h ../include/inn/messages.h \ + ../include/inn/newsuser.h ../include/inn/nntp.h ../include/inn/paths.h \ + ../include/inn/storage.h ../include/inn/options.h ../include/inn/wire.h sm.o: sm.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 \ @@ -246,6 +250,6 @@ sm.o: sm.c ../include/config.h ../includ ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/buffer.h \ ../include/inn/innconf.h ../include/inn/messages.h ../include/inn/qio.h \ - ../include/inn/wire.h ../include/inn/libinn.h ../include/inn/xmalloc.h \ - ../include/inn/xwrite.h ../include/inn/storage.h \ - ../include/inn/options.h + ../include/inn/wire.h ../include/inn/libinn.h ../include/inn/concat.h \ + ../include/inn/xmalloc.h ../include/inn/xwrite.h \ + ../include/inn/storage.h ../include/inn/options.h diff -Nurp inn-2.6.0/frontends/cnfsstat.in inn-2.6.1/frontends/cnfsstat.in --- inn-2.6.0/frontends/cnfsstat.in 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/frontends/cnfsstat.in 2016-11-27 06:03:42.000000000 -0800 @@ -1,7 +1,7 @@ #! /usr/bin/perl -w # fixscript will replace this line with code to load INN::Config -# $Id: cnfsstat.in 9927 2015-08-08 17:18:23Z iulius $ +# $Id: cnfsstat.in 10076 2016-10-08 20:37:36Z iulius $ # # Copyright Andreas Lamrecht 1998 # @@ -64,7 +64,7 @@ my $use_syslog = 0; if ($opt{'s'}) { eval { require Sys::Syslog; import Sys::Syslog; $use_syslog = 1 }; if ($use_syslog) { - if ($Sys::Syslog::VERSION < 0.15) { + if ($Sys::Syslog::VERSION lt 0.15) { eval "sub Sys::Syslog::_PATH_LOG { '/dev/log' }" if $^O eq 'dec_osf'; Sys::Syslog::setlogsock('unix') if $^O =~ /linux|dec_osf|freebsd|darwin/; } diff -Nurp inn-2.6.0/frontends/feedone.c inn-2.6.1/frontends/feedone.c --- inn-2.6.0/frontends/feedone.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/frontends/feedone.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: feedone.c 8903 2010-01-17 18:21:56Z iulius $ +/* $Id: feedone.c 10022 2016-05-05 12:49:59Z iulius $ ** ** Connect to the NNTP server and feed one article. */ @@ -6,6 +6,7 @@ #include "config.h" #include "clibrary.h" #include +#include #include "inn/libinn.h" #include "inn/messages.h" @@ -27,7 +28,7 @@ GetFromServer(buff, size, text) char *text; { if (fgets(buff, size, FromServer) == NULL) - sysdie("s", text); + sysdie("%s", text); if (Tracing) printf("S: %s", buff); } @@ -83,7 +84,6 @@ main(ac, av) bool PostMode; /* Set defaults. */ - mesgid[0] = '\0'; PostMode = false; message_program_name = "feedone"; diff -Nurp inn-2.6.0/frontends/getlist.c inn-2.6.1/frontends/getlist.c --- inn-2.6.0/frontends/getlist.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/frontends/getlist.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: getlist.c 9691 2014-09-17 16:31:35Z iulius $ +/* $Id: getlist.c 10014 2016-05-05 12:42:31Z iulius $ ** ** Send a LIST command to an NNTP server and print the results. */ @@ -237,8 +237,9 @@ main(int argc, char *argv[]) break; case 'p': port = atoi(optarg); - if (port <= 0) + if (port == 0) { die("%s is not a valid port number", optarg); + } break; case 'R': reader = true; diff -Nurp inn-2.6.0/frontends/inews.c inn-2.6.1/frontends/inews.c --- inn-2.6.0/frontends/inews.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/frontends/inews.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: inews.c 9911 2015-07-04 21:32:56Z iulius $ +/* $Id: inews.c 10017 2016-05-05 12:44:17Z iulius $ ** ** Send an article (prepared by someone on the local site) to the ** master news server. @@ -438,7 +438,6 @@ FormatUserName(struct passwd *pwp, char char *buff; char *out; char *p; - int left; #if !defined(DONT_MUNGE_GETENV) memset(outbuff, 0, SMBUF); @@ -455,7 +454,7 @@ FormatUserName(struct passwd *pwp, char * buffer. Remember that on some Unix systems, the content of the GECOS * field is under (untrusted) user control and we could be setgid. */ p = pwp->pw_gecos; - left = SMBUF - 1; + int left = SMBUF - 1; if (*p == '*') p++; for (out = outbuff; *p && !GECOSTERM(*p) && left; p++) { diff -Nurp inn-2.6.0/frontends/mailpost.in inn-2.6.1/frontends/mailpost.in --- inn-2.6.0/frontends/mailpost.in 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/frontends/mailpost.in 2016-11-27 06:03:42.000000000 -0800 @@ -3,7 +3,7 @@ # mailpost - Yet another mail-to-news filter # -# $Id: mailpost.in 9830 2015-04-23 18:56:28Z iulius $ +# $Id: mailpost.in 10076 2016-10-08 20:37:36Z iulius $ # # 21feb00 [added "lc" to duplicate header fixer stmt to make it case-insensitive] # doka 11may99 [fixed duplicate headers problem] @@ -45,7 +45,7 @@ my $use_syslog = 0; eval { require Sys::Syslog; import Sys::Syslog; $use_syslog = 1; }; if ($use_syslog) { - if ($Sys::Syslog::VERSION < 0.15) { + if ($Sys::Syslog::VERSION lt 0.15) { eval "sub Sys::Syslog::_PATH_LOG { '/dev/log' }" if $^O eq 'dec_osf'; Sys::Syslog::setlogsock('unix') if $^O =~ /linux|dec_osf|freebsd|darwin/; } @@ -768,7 +768,7 @@ The default database files which record Written by Paul Vixie long ago and then hacked up by James Brister for INN integration. -$Id: mailpost.in 9830 2015-04-23 18:56:28Z iulius $ +$Id: mailpost.in 10076 2016-10-08 20:37:36Z iulius $ =head1 SEE ALSO diff -Nurp inn-2.6.0/frontends/rnews.c inn-2.6.1/frontends/rnews.c --- inn-2.6.0/frontends/rnews.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/frontends/rnews.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: rnews.c 9911 2015-07-04 21:32:56Z iulius $ +/* $Id: rnews.c 10040 2016-07-31 20:01:43Z iulius $ ** ** A front-end for InterNetNews. ** @@ -170,14 +170,10 @@ Reject(const char *article, size_t lengt int fd; #endif /* defined(DO_RNEWS_SAVE_BAD) */ -#pragma GCC diagnostic ignored "-Wformat-nonliteral" notice(reason, arg); -#pragma GCC diagnostic warning "-Wformat-nonliteral" if (Verbose) { fprintf(stderr, "%s: ", InputFile); -#pragma GCC diagnostic ignored "-Wformat-nonliteral" fprintf(stderr, reason, arg); -#pragma GCC diagnostic warning "-Wformat-nonliteral" fprintf(stderr, " [%.40s...]\n", article); } @@ -499,7 +495,6 @@ UnpackOne(int *fdp, size_t *countp) int gzip = 0; bool HadCount; bool SawCunbatch; - int len; *countp = 0; for (SawCunbatch = false, HadCount = false; ; ) { @@ -581,6 +576,8 @@ UnpackOne(int *fdp, size_t *countp) } #if defined(DO_RNEWSPROGS) + int len; + cargv[0] = UNPACK; cargv[1] = NULL; /* Ignore any possible leading pathnames, to avoid trouble. */ @@ -861,7 +858,14 @@ int main(int ac, char *av[]) other setups where rnews might be setuid news or be run by other processes in the news group. */ if (getuid() == 0 || geteuid() == 0) { - ensure_news_user(true); + uid_t uid; + + /* Do not use ensure_news_user() because it will fail to deal + * with the case of rnews being setuid news. */ + get_news_uid_gid(&uid, false, true); + if (setuid(uid) < 0) { + sysdie("failed to setuid"); + } } if (!innconf_read(NULL)) diff -Nurp inn-2.6.0/frontends/sys2nf.c inn-2.6.1/frontends/sys2nf.c --- inn-2.6.0/frontends/sys2nf.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/frontends/sys2nf.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: sys2nf.c 9019 2010-03-19 21:27:15Z iulius $ +/* $Id: sys2nf.c 10032 2016-05-05 13:31:40Z iulius $ ** ** Read a C news "sys" file and split it up into a set of INN ** newsfeeds entries. Also works with B news. @@ -309,12 +309,19 @@ main(ac, av) DoSub(F, f2); fprintf(F, "\\\n"); if (strcmp(f3, "n") == 0) - fprintf(F, "\t:Tf,Wnm\\\n", f3); + fprintf(F, "\t:Tf,Wnm\\\n"); else fprintf(F, "\t:HELP%s\\\n", f3); fprintf(F, "\t:%s\n", f4); - if (ferror(F) || fclose(F) == EOF) - perror(TEMPFILE), exit(1); + if (ferror(F) != 0) { + perror(TEMPFILE); + fclose(F); + exit(1); + } + if (fclose(F) == EOF) { + perror(TEMPFILE); + exit(1); + } free(site); diff -Nurp inn-2.6.0/history/Makefile inn-2.6.1/history/Makefile --- inn-2.6.0/history/Makefile 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/history/Makefile 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -## $Id: Makefile 9794 2015-03-17 20:49:15Z iulius $ +## $Id: Makefile 10114 2016-11-06 14:18:27Z iulius $ include ../Makefile.global @@ -8,7 +8,7 @@ include ../Makefile.global # recover from make update. We can't use .OLD extensions for the shared # library since ldconfig will think .OLD sorts after the regular library and # will point the binaries at the old library. -LTVERSION = 3:0:0 +LTVERSION = 3:1:0 top = .. CFLAGS = $(GCFLAGS) -I. @@ -105,7 +105,7 @@ his.o: his.c ../include/config.h ../incl ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/history.h \ ../include/inn/messages.h ../include/inn/timer.h ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.h \ + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ ../include/inn/storage.h ../include/inn/options.h hisinterface.h \ hismethods.h hismethods.o: hismethods.c hisinterface.h ../include/config.h \ @@ -120,7 +120,7 @@ hisv6/hisv6.o: hisv6/hisv6.c ../include/ ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h hisinterface.h hisv6/hisv6.h \ hisv6/hisv6-private.h ../include/inn/history.h ../include/inn/storage.h \ - ../include/inn/options.h ../include/inn/libinn.h \ + ../include/inn/options.h ../include/inn/libinn.h ../include/inn/concat.h \ ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/dbz.h \ ../include/inn/fdflag.h ../include/inn/portable-socket.h \ ../include/inn/portable-getaddrinfo.h \ diff -Nurp inn-2.6.0/include/clibrary.h inn-2.6.1/include/clibrary.h --- inn-2.6.0/include/clibrary.h 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/include/clibrary.h 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: clibrary.h 9763 2014-12-07 20:39:49Z iulius $ +/* $Id: clibrary.h 10099 2016-11-04 22:21:59Z iulius $ * * Standard system includes and portability adjustments. * @@ -24,7 +24,7 @@ * the portable helper library. Also provides some standard #defines. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Written by Russ Allbery * @@ -201,6 +201,22 @@ extern size_t strlcat(char *, const char #if !HAVE_DECL_STRLCPY extern size_t strlcpy(char *, const char *, size_t); #endif +#if !HAVE_GETPAGESIZE +extern int getpagesize(void); +#endif +#if !HAVE_STRCASECMP +extern int strcasecmp(const char *, const char *); +extern int strncasecmp(const char *, const char *, size_t); +#endif +#if !HAVE_STRSPN +extern size_t strspn(const char *, const char *); +#endif +#if !HAVE_STRTOK +extern char * strtok(char *, const char *); +#endif +#if !HAVE_MEMCMP +extern int memcmp(const void *, const void *, size_t); +#endif END_DECLS diff -Nurp inn-2.6.0/include/config.h.in inn-2.6.1/include/config.h.in --- inn-2.6.0/include/config.h.in 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/include/config.h.in 2016-11-27 06:03:42.000000000 -0800 @@ -369,6 +369,9 @@ /* Define to 1 if you have the `strspn' function. */ #undef HAVE_STRSPN +/* Define to 1 if you have the `strtok' function. */ +#undef HAVE_STRTOK + /* Define to 1 if the system has the type `struct sockaddr_in6'. */ #undef HAVE_STRUCT_SOCKADDR_IN6 @@ -470,6 +473,9 @@ /* Additional permitted low-numbered port for innbind. */ #undef INND_PORT +/* Define if compiling on BSD/OS systems. */ +#undef INN_BSDI_HOST + /* Define to the max vectors in an iovec. */ #undef IOV_MAX @@ -479,8 +485,7 @@ /* Syslog facility to use for innd logs. */ #undef LOG_INN_SERVER -/* Define to the sub-directory in which libtool stores uninstalled libraries. - */ +/* Define to the sub-directory where libtool stores uninstalled libraries. */ #undef LT_OBJDIR /* Define if you need to call msync after writes. */ diff -Nurp inn-2.6.0/include/inn/buffer.h inn-2.6.1/include/inn/buffer.h --- inn-2.6.0/include/inn/buffer.h 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/include/inn/buffer.h 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: buffer.h 9913 2015-07-07 16:31:52Z iulius $ +/* $Id: buffer.h 10105 2016-11-04 22:42:26Z iulius $ * * Counted, reusable memory buffer. * @@ -14,10 +14,10 @@ * used can be set to 0 and left stores the length of the data. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Written by Russ Allbery - * Copyright 2014 Russ Allbery + * Copyright 2014, 2015 Russ Allbery * Copyright 2011, 2012 * The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2004, 2005, 2006 diff -Nurp inn-2.6.0/include/inn/concat.h inn-2.6.1/include/inn/concat.h --- inn-2.6.0/include/inn/concat.h 1969-12-31 16:00:00.000000000 -0800 +++ inn-2.6.1/include/inn/concat.h 2016-11-27 06:03:42.000000000 -0800 @@ -0,0 +1,42 @@ +/* $Id: concat.h 10100 2016-11-04 22:24:26Z iulius $ + * + * Prototypes for string concatenation with dynamic memory allocation. + * + * The canonical version of this file *used to be* maintained in the + * rra-c-util package, which can be found at + * . + * + * Written by Russ Allbery + * + * The authors hereby relinquish any claim to any copyright that they may have + * in this work, whether granted under contract or by operation of law or + * international treaty, and hereby commit to the public, at large, that they + * shall not, at any time in the future, seek to enforce any copyright in this + * work against any person or entity, or prevent any person or entity from + * copying, publishing, distributing or creating derivative works of this + * work. + */ + +#ifndef INN_CONCAT_H +#define INN_CONCAT_H 1 + +#include +#include "inn/portable-macros.h" + +BEGIN_DECLS + +/* Concatenate NULL-terminated strings into a newly allocated string. */ +char *concat(const char *first, ...) + __attribute__((__malloc__, __nonnull__(1))); + +/* + * Given a base path and a file name, create a newly allocated path string. + * The name will be appended to base with a / between them. Exceptionally, if + * name begins with a slash, it will be strdup'd and returned as-is. + */ +char *concatpath(const char *base, const char *name) + __attribute__((__malloc__, __nonnull__(2))); + +END_DECLS + +#endif /* INN_CONCAT_H */ diff -Nurp inn-2.6.0/include/inn/fdflag.h inn-2.6.1/include/inn/fdflag.h --- inn-2.6.0/include/inn/fdflag.h 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/include/inn/fdflag.h 2016-11-27 06:03:42.000000000 -0800 @@ -1,9 +1,9 @@ -/* $Id: fdflag.h 9794 2015-03-17 20:49:15Z iulius $ +/* $Id: fdflag.h 10099 2016-11-04 22:21:59Z iulius $ * * Prototypes for setting or clearing file descriptor flags. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Copyright 2008, 2010, 2011 * The Board of Trustees of the Leland Stanford Junior University diff -Nurp inn-2.6.0/include/inn/innconf.h inn-2.6.1/include/inn/innconf.h --- inn-2.6.0/include/inn/innconf.h 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/include/inn/innconf.h 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: innconf.h 9752 2014-12-01 20:22:57Z iulius $ +/* $Id: innconf.h 10064 2016-09-04 12:55:40Z iulius $ ** ** inn.conf parser interface. ** @@ -122,14 +122,14 @@ struct innconf { unsigned long backoffpostslow; /* Lower time limit for slow posting */ unsigned long backofftrigger; /* Number of postings before triggered */ - /* Reading and posting -- SSL and TLS support */ + /* Reading and posting -- TLS/SSL support */ /* Do not test HAVE_OPENSSL. This relieves customers of /usr/include/inn - * from the need to guess whether INN was built with SSL/TLS support in + * from the need to guess whether INN was built with TLS/SSL support in * order to get a header that matches the installed libraries. */ char *tlscafile; /* Path to a certificate authority file */ char *tlscapath; /* Path to a directory of CA certificates */ - char *tlscertfile; /* Path to the SSL certificate to use */ + char *tlscertfile; /* Path to the TLS/SSL certificate to use */ char *tlskeyfile; /* Path to the key for the certificate */ char *tlsciphers; /* OpenSSL-style cipher string */ bool tlscompression; /* Turn TLS compression on/off */ diff -Nurp inn-2.6.0/include/inn/libinn.h inn-2.6.1/include/inn/libinn.h --- inn-2.6.0/include/inn/libinn.h 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/include/inn/libinn.h 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: libinn.h 9905 2015-06-20 20:51:22Z iulius $ +/* $Id: libinn.h 10100 2016-11-04 22:24:26Z iulius $ ** ** Here be declarations of functions in the InterNetNews library. */ @@ -7,6 +7,7 @@ #define INN_LIBINN_H 1 #include +#include "inn/concat.h" #include "inn/xmalloc.h" #include "inn/xwrite.h" @@ -75,8 +76,6 @@ extern bool inn_lock_range(int fd, e /* ** MISCELLANEOUS UTILITY FUNCTIONS */ -extern char * concat(const char *first, ...); -extern char * concatpath(const char *base, const char *name); extern void daemonize(const char *path); extern int getfdlimit(void); extern int setfdlimit(unsigned int limit); @@ -93,6 +92,8 @@ extern char * GenerateMessageI extern void InitializeMessageIDcclass(void); extern bool IsValidMessageID(const char *string, bool stripspaces); extern bool IsValidHeaderName(const char *string); +extern bool IsValidHeaderBody(const char *string); +extern bool IsValidHeaderField(const char *string); extern const char * skip_cfws(const char *p); extern const char * skip_fws(const char *p); extern void HeaderCleanFrom(char *from); diff -Nurp inn-2.6.0/include/inn/macros.h inn-2.6.1/include/inn/macros.h --- inn-2.6.0/include/inn/macros.h 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/include/inn/macros.h 2016-11-27 06:03:42.000000000 -0800 @@ -1,9 +1,9 @@ -/* $Id: macros.h 9778 2015-01-07 20:50:16Z iulius $ +/* $Id: macros.h 10099 2016-11-04 22:21:59Z iulius $ * * Some standard helpful macros. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Written by Russ Allbery * diff -Nurp inn-2.6.0/include/inn/messages.h inn-2.6.1/include/inn/messages.h --- inn-2.6.0/include/inn/messages.h 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/include/inn/messages.h 2016-11-27 06:03:42.000000000 -0800 @@ -1,10 +1,12 @@ -/* $Id: messages.h 9913 2015-07-07 16:31:52Z iulius $ +/* $Id: messages.h 10105 2016-11-04 22:42:26Z iulius $ * * Prototypes for message and error reporting (possibly fatal). * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * + * Written by Russ Allbery + * Copyright 2015 Russ Allbery * Copyright 2008, 2010, 2013, 2014 * The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2004, 2005, 2006 diff -Nurp inn-2.6.0/include/inn/network.h inn-2.6.1/include/inn/network.h --- inn-2.6.0/include/inn/network.h 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/include/inn/network.h 2016-11-27 06:03:42.000000000 -0800 @@ -1,12 +1,12 @@ -/* $Id: network.h 9778 2015-01-07 20:50:16Z iulius $ +/* $Id: network.h 10099 2016-11-04 22:21:59Z iulius $ * * Prototypes for network connection utility functions. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Written by Russ Allbery - * Copyright 2014 Russ Allbery + * Copyright 2014, 2016 Russ Allbery * Copyright 2009, 2010, 2011, 2012, 2013 * The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2004, 2005, 2006, 2007, 2008, 2010 @@ -125,6 +125,22 @@ socket_type network_connect_host(const c socket_type network_client_create(int domain, int type, const char *source); /* + * Set various socket flags if possible, but do nothing, silently, if that + * option is not supported. If the option is supported but setting the flag + * fails, log a warning with syswarn. + * + * network_set_freebind sets IP_FREEBIND, which allows binding IPv6 addresses + * that may not have been set up yet. network_set_reuseaddr sets SO_REUSEADDR + * so that something new can listen on the same port immediately if the daemon + * dies unexpectedly. network_set_v6only sets IP_V6ONLY, which avoids binding + * to the backward-compatibility IPv4 address when binding an IPv6 socket + * (generally preferred since the behavior is more predictable). + */ +void network_set_freebind(socket_type fd); +void network_set_reuseaddr(socket_type fd); +void network_set_v6only(socket_type fd); + +/* * Read or write the specified number of bytes to the network, enforcing a * timeout. Both return true on success and false on failure; on failure, the * socket errno is set. diff -Nurp inn-2.6.0/include/inn/nntp.h inn-2.6.1/include/inn/nntp.h --- inn-2.6.0/include/inn/nntp.h 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/include/inn/nntp.h 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: nntp.h 8903 2010-01-17 18:21:56Z iulius $ +/* $Id: nntp.h 9978 2015-12-11 20:39:56Z iulius $ ** ** NNTP codes and utility functions for speaking the NNTP protocol. ** @@ -55,6 +55,7 @@ enum nntp_code { NNTP_OK_BANNER_POST = 200, NNTP_OK_BANNER_NOPOST = 201, NNTP_OK_QUIT = 205, + NNTP_OK_COMPRESS = 206, NNTP_OK_GROUP = 211, NNTP_OK_LIST = 215, NNTP_OK_ARTICLE = 220, diff -Nurp inn-2.6.0/include/inn/vector.h inn-2.6.1/include/inn/vector.h --- inn-2.6.0/include/inn/vector.h 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/include/inn/vector.h 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: vector.h 9794 2015-03-17 20:49:15Z iulius $ +/* $Id: vector.h 10099 2016-11-04 22:21:59Z iulius $ * * Prototypes for vector handling. * @@ -10,7 +10,7 @@ * handle data elements containing nul characters. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Written by Russ Allbery * diff -Nurp inn-2.6.0/include/inn/xmalloc.h inn-2.6.1/include/inn/xmalloc.h --- inn-2.6.0/include/inn/xmalloc.h 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/include/inn/xmalloc.h 2016-11-27 06:03:42.000000000 -0800 @@ -1,9 +1,9 @@ -/* $Id: xmalloc.h 9913 2015-07-07 16:31:52Z iulius $ +/* $Id: xmalloc.h 10099 2016-11-04 22:21:59Z iulius $ * * Prototypes for malloc routines with failure handling. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Copyright 2010, 2012, 2013, 2014 * The Board of Trustees of the Leland Stanford Junior University diff -Nurp inn-2.6.0/include/inn/xwrite.h inn-2.6.1/include/inn/xwrite.h --- inn-2.6.0/include/inn/xwrite.h 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/include/inn/xwrite.h 2016-11-27 06:03:42.000000000 -0800 @@ -1,9 +1,9 @@ -/* $Id: xwrite.h 9794 2015-03-17 20:49:15Z iulius $ +/* $Id: xwrite.h 10099 2016-11-04 22:21:59Z iulius $ * * Prototypes for write and writev replacements to handle partial writes. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Copyright 2008, 2010, 2013 * The Board of Trustees of the Leland Stanford Junior University diff -Nurp inn-2.6.0/include/portable/getaddrinfo.h inn-2.6.1/include/portable/getaddrinfo.h --- inn-2.6.0/include/portable/getaddrinfo.h 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/include/portable/getaddrinfo.h 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: getaddrinfo.h 9680 2014-09-06 08:07:27Z iulius $ +/* $Id: getaddrinfo.h 10099 2016-11-04 22:21:59Z iulius $ * * Replacement implementation of getaddrinfo. * @@ -11,7 +11,7 @@ * than directly. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Written by Russ Allbery * diff -Nurp inn-2.6.0/include/portable/getnameinfo.h inn-2.6.1/include/portable/getnameinfo.h --- inn-2.6.0/include/portable/getnameinfo.h 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/include/portable/getnameinfo.h 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: getnameinfo.h 9680 2014-09-06 08:07:27Z iulius $ +/* $Id: getnameinfo.h 10099 2016-11-04 22:21:59Z iulius $ * * Replacement implementation of getnameinfo. * @@ -10,7 +10,7 @@ * than directly. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Written by Russ Allbery * diff -Nurp inn-2.6.0/include/portable/macros.h inn-2.6.1/include/portable/macros.h --- inn-2.6.0/include/portable/macros.h 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/include/portable/macros.h 2016-11-27 06:03:42.000000000 -0800 @@ -1,9 +1,9 @@ -/* $Id: macros.h 9932 2015-08-28 19:23:27Z iulius $ +/* $Id: macros.h 10099 2016-11-04 22:21:59Z iulius $ * * Portability macros used in include files. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Written by Russ Allbery * diff -Nurp inn-2.6.0/include/portable/socket-unix.h inn-2.6.1/include/portable/socket-unix.h --- inn-2.6.0/include/portable/socket-unix.h 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/include/portable/socket-unix.h 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: socket-unix.h 9760 2014-12-04 20:37:30Z iulius $ +/* $Id: socket-unix.h 10099 2016-11-04 22:21:59Z iulius $ * * Portability wrapper around . * @@ -7,7 +7,7 @@ * as well for the normal socket functions. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Written by Russ Allbery * diff -Nurp inn-2.6.0/include/portable/socket.h inn-2.6.1/include/portable/socket.h --- inn-2.6.0/include/portable/socket.h 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/include/portable/socket.h 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: socket.h 9691 2014-09-17 16:31:35Z iulius $ +/* $Id: socket.h 10104 2016-11-04 22:41:36Z iulius $ * * Portability wrapper around and friends. * @@ -15,7 +15,7 @@ * and properly prototyped. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Copyright 2014 Russ Allbery * Copyright 2008, 2009, 2011, 2013 @@ -218,10 +218,10 @@ extern int inet_aton(const char *, struc #endif #if !HAVE_DECL_INET_NTOA # if !HAVE_INET_NTOA -extern const char *inet_ntoa(const struct in_addr) +extern char *inet_ntoa(struct in_addr) __attribute__((__visibility__("hidden"))); # else -extern const char *inet_ntoa(const struct in_addr); +extern char *inet_ntoa(struct in_addr); # endif #endif diff -Nurp inn-2.6.0/include/portable/stdbool.h inn-2.6.1/include/portable/stdbool.h --- inn-2.6.0/include/portable/stdbool.h 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/include/portable/stdbool.h 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: stdbool.h 9793 2015-03-17 20:29:20Z iulius $ +/* $Id: stdbool.h 10099 2016-11-04 22:21:59Z iulius $ * * Portability wrapper around . * @@ -7,7 +7,7 @@ * logic is based heavily on the example in the Autoconf manual. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Written by Russ Allbery * diff -Nurp inn-2.6.0/include/portable/uio.h inn-2.6.1/include/portable/uio.h --- inn-2.6.0/include/portable/uio.h 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/include/portable/uio.h 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: uio.h 9680 2014-09-06 08:07:27Z iulius $ +/* $Id: uio.h 10099 2016-11-04 22:21:59Z iulius $ * * Portability wrapper around . * @@ -7,7 +7,7 @@ * functions are not provided or prototyped here. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Written by Russ Allbery * diff -Nurp inn-2.6.0/innd/Makefile inn-2.6.1/innd/Makefile --- inn-2.6.0/innd/Makefile 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/innd/Makefile 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -## $Id: Makefile 9794 2015-03-17 20:49:15Z iulius $ +## $Id: Makefile 10100 2016-11-04 22:24:26Z iulius $ include ../Makefile.global @@ -82,8 +82,8 @@ art.o: art.c ../include/config.h ../incl ../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/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \ - ../include/inn/paths.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 \ @@ -95,9 +95,9 @@ cc.o: cc.c ../include/config.h ../includ ../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/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \ - ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h \ - ../include/inn/inndcomm.h ../include/innperl.h + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ + ../include/inn/nntp.h ../include/inn/paths.h ../include/inn/storage.h \ + ../include/inn/options.h ../include/inn/inndcomm.h ../include/innperl.h chan.o: chan.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -109,9 +109,9 @@ chan.o: chan.c ../include/config.h ../in ../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/xmalloc.h \ - ../include/inn/xwrite.h ../include/inn/nntp.h ../include/inn/paths.h \ - ../include/inn/storage.h ../include/inn/options.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 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,10 +124,10 @@ icd.o: icd.c ../include/config.h ../incl ../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/xmalloc.h \ - ../include/inn/xwrite.h ../include/inn/nntp.h ../include/inn/paths.h \ - ../include/inn/storage.h ../include/inn/options.h ../include/inn/ov.h \ - ../include/inn/storage.h + ../include/inn/timer.h ../include/inn/libinn.h ../include/inn/concat.h \ + ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \ + ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h \ + ../include/inn/ov.h ../include/inn/storage.h 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 \ @@ -138,16 +138,17 @@ innd.o: innd.c ../include/config.h ../in 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/xmalloc.h ../include/inn/xwrite.h \ - ../include/inn/nntp.h ../include/inn/paths.h ../include/inn/storage.h \ - ../include/inn/options.h ../include/inn/ov.h ../include/inn/storage.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h ../include/inn/nntp.h ../include/inn/paths.h \ + ../include/inn/storage.h ../include/inn/options.h ../include/inn/ov.h \ + ../include/inn/storage.h 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 \ ../include/inn/defines.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.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 \ @@ -164,9 +165,9 @@ lc.o: lc.c ../include/config.h ../includ ../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/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \ - ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h \ - ../include/portable/socket-unix.h + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ + ../include/inn/nntp.h ../include/inn/paths.h ../include/inn/storage.h \ + ../include/inn/options.h ../include/portable/socket-unix.h 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 \ @@ -178,8 +179,9 @@ nc.o: nc.c ../include/config.h ../includ ../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/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \ - ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.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 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 \ @@ -190,8 +192,9 @@ newsfeeds.o: newsfeeds.c ../include/conf ../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/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \ - ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.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 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 \ @@ -202,9 +205,9 @@ ng.o: ng.c ../include/config.h ../includ ../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/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \ - ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h \ - ../include/inn/ov.h ../include/inn/storage.h + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ + ../include/inn/nntp.h ../include/inn/paths.h ../include/inn/storage.h \ + ../include/inn/options.h ../include/inn/ov.h ../include/inn/storage.h 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 \ @@ -215,9 +218,11 @@ perl.o: perl.c ../include/config.h ../in ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \ ../include/inn/buffer.h ../include/inn/history.h \ ../include/inn/messages.h ../include/inn/timer.h ../include/inn/libinn.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/ppport.h ../include/innperl.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/ppport.h \ + ../include/innperl.h proc.o: proc.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 \ @@ -227,9 +232,9 @@ proc.o: proc.c ../include/config.h ../in ../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/xmalloc.h \ - ../include/inn/xwrite.h ../include/inn/nntp.h ../include/inn/paths.h \ - ../include/inn/storage.h ../include/inn/options.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 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 \ @@ -240,9 +245,9 @@ python.o: python.c ../include/config.h . ../include/portable/socket.h ../include/portable/getaddrinfo.h \ ../include/portable/getnameinfo.h ../include/inn/buffer.h \ ../include/inn/history.h ../include/inn/messages.h \ - ../include/inn/timer.h ../include/inn/libinn.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/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 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 \ @@ -255,9 +260,9 @@ rc.o: rc.c ../include/config.h ../includ ../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/xmalloc.h \ - ../include/inn/xwrite.h ../include/inn/nntp.h ../include/inn/paths.h \ - ../include/inn/storage.h ../include/inn/options.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 \ @@ -269,8 +274,9 @@ site.o: site.c ../include/config.h ../in ../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/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \ - ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.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 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 \ @@ -282,9 +288,10 @@ status.o: status.c ../include/config.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/xmalloc.h \ - ../include/inn/xwrite.h ../include/inn/nntp.h ../include/inn/paths.h \ - ../include/inn/storage.h ../include/inn/options.h ../include/innperl.h + ../include/inn/timer.h ../include/inn/libinn.h ../include/inn/concat.h \ + ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \ + ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h \ + ../include/innperl.h 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 \ @@ -293,11 +300,12 @@ util.o: util.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 \ - ../include/inn/libinn.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/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 wip.o: wip.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -308,8 +316,9 @@ wip.o: wip.c ../include/config.h ../incl ../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/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \ - ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.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 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 \ @@ -318,5 +327,5 @@ tinyleaf.o: tinyleaf.c ../include/config ../include/portable/stdbool.h ../include/inn/dispatch.h \ ../include/inn/messages.h ../include/inn/md5.h ../include/inn/nntp.h \ ../include/inn/utility.h ../include/inn/vector.h \ - ../include/inn/version.h ../include/inn/libinn.h \ + ../include/inn/version.h ../include/inn/libinn.h ../include/inn/concat.h \ ../include/inn/xmalloc.h ../include/inn/xwrite.h diff -Nurp inn-2.6.0/innd/art.c inn-2.6.1/innd/art.c --- inn-2.6.0/innd/art.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/innd/art.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: art.c 9896 2015-06-14 10:09:47Z iulius $ +/* $Id: art.c 10122 2016-11-25 22:39:35Z iulius $ ** ** Article-processing. */ @@ -1670,7 +1670,6 @@ ARTpropagate(ARTDATA *data, const char * SITE *sp, *funnel; int i, j, Groupcount, Followcount, Crosscount; char *p, *q, *begin, savec; - struct buffer *bp; bool sendit; /* Work out which sites should really get it. */ @@ -1813,13 +1812,9 @@ ARTpropagate(ARTDATA *data, const char * funnel = &Sites[sp->Funnel]; funnel->Sendit = true; if (funnel->FNLwantsnames) { - bp = &funnel->FNLnames; - p = &bp->data[bp->used]; - if (bp->used) { - *p++ = ' '; - bp->used++; - } - bp->used += strlcpy(p, sp->Name, bp->size - bp->used); + if (funnel->FNLnames.left != 0) + buffer_append(&funnel->FNLnames, " ", 1); + buffer_append(&funnel->FNLnames, sp->Name, strlen(sp->Name)); } } } @@ -2181,7 +2176,7 @@ ARTpost(CHANNEL *cp) sp->Poison = false; sp->Sendit = false; sp->Seenit = false; - sp->FNLnames.used = 0; + buffer_set(&sp->FNLnames, NULL, 0); sp->ng = NULL; } diff -Nurp inn-2.6.0/innd/nc.c inn-2.6.1/innd/nc.c --- inn-2.6.0/innd/nc.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/innd/nc.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: nc.c 9630 2014-05-14 17:39:56Z iulius $ +/* $Id: nc.c 10037 2016-06-01 20:07:30Z iulius $ ** ** Routines for the NNTP channel. Other channels get the descriptors which ** we turn into NNTP channels, and over which we speak NNTP. @@ -88,6 +88,9 @@ static NCDISPATCH NCcommands[] = { READER command. */ COMMAND_READER("ARTICLE"), COMMAND_READER("BODY"), +#if defined(HAVE_ZLIB) + COMMAND_READER("COMPRESS"), +#endif /* HAVE_ZLIB */ COMMAND_READER("DATE"), COMMAND_READER("GROUP"), COMMAND_READER("HDR"), @@ -619,6 +622,11 @@ NCcapabilities(CHANNEL *cp) WCHANappend(cp, NCterm, strlen(NCterm)); } + if (cp->IsAuthenticated) { + WCHANappend(cp, "XBATCH", 6); + WCHANappend(cp, NCterm, strlen(NCterm)); + } + NCwritereply(cp, NCdot); } diff -Nurp inn-2.6.0/innd/newsfeeds.c inn-2.6.1/innd/newsfeeds.c --- inn-2.6.0/innd/newsfeeds.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/innd/newsfeeds.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: newsfeeds.c 9170 2011-01-24 22:12:54Z iulius $ +/* $Id: newsfeeds.c 10122 2016-11-25 22:39:35Z iulius $ ** ** Routines for the in-core data structures for the newsfeeds file. */ @@ -842,14 +842,7 @@ SITEfunnelpatch(void) result = false; continue; } - if (funnel->FNLnames.data == NULL) { - funnel->FNLnames.size = length; - funnel->FNLnames.data = xmalloc(length); - } - else if (funnel->FNLnames.size != length) { - funnel->FNLnames.size = length; - funnel->FNLnames.data = xrealloc(funnel->FNLnames.data, length); - } + buffer_resize(&funnel->FNLnames, length); sp->Funnel = funnel - Sites; } diff -Nurp inn-2.6.0/innd/rc.c inn-2.6.1/innd/rc.c --- inn-2.6.0/innd/rc.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/innd/rc.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: rc.c 9897 2015-06-14 10:10:37Z iulius $ +/* $Id: rc.c 10012 2016-05-05 12:41:10Z iulius $ ** ** Routines for the remote connect channel. Create an Internet stream ** socket that processes connect to. If the incoming site is not one of @@ -694,7 +694,7 @@ RCreaddata(int *num, FILE *F, bool *tool if (*p == '"') { /* double quoted string ? */ p++; do { - for (t = p; (*t != '"' || (*t == '"' && *(t - 1) == '\\')) && + for (t = p; (*t != '"' || *(t - 1) == '\\') && *t != '\0'; t++); if (*t == '\0') { *t++ = '\n'; @@ -1513,7 +1513,7 @@ RCwritelist(char *filename) if (*p == '/') q = p + 1; - fprintf (F, "## $Id: rc.c 9897 2015-06-14 10:10:37Z iulius $\n"); + fprintf (F, "## $Id: rc.c 10012 2016-05-05 12:41:10Z iulius $\n"); fprintf (F, "##\n"); fprintf (F, "## %s -- Configuration of incoming news feeds\n", q); free(r); diff -Nurp inn-2.6.0/innd/site.c inn-2.6.1/innd/site.c --- inn-2.6.0/innd/site.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/innd/site.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: site.c 9911 2015-07-04 21:32:56Z iulius $ +/* $Id: site.c 10122 2016-11-25 22:39:35Z iulius $ ** ** Routines to implement site-feeding. Mainly working with channels to ** do buffering and determine what to send. @@ -447,11 +447,11 @@ SITEwritefromflags(SITE *sp, ARTDATA *Da buffer_append(bp, HDR(HDR__MESSAGE_ID), HDR_LEN(HDR__MESSAGE_ID)); break; case FEED_FNLNAMES: - if (sp->FNLnames.data) { + if (sp->FNLnames.left != 0) { /* Funnel; write names of our sites that got it. */ if (Dirty) buffer_append(bp, ITEMSEP, strlen(ITEMSEP)); - buffer_append(bp, sp->FNLnames.data, sp->FNLnames.used); + buffer_append(bp, sp->FNLnames.data, sp->FNLnames.left); } else { /* Not funnel; write names of all sites that got it. */ @@ -516,28 +516,22 @@ SITEsend(SITE *sp, ARTDATA *Data) case FTprogram: /* Set up the argument vector. */ if (sp->FNLwantsnames) { - i = strlen(sp->Param) + sp->FNLnames.used; + i = strlen(sp->Param) + sp->FNLnames.left; if (i + (sizeof(TOKEN) * 2) + 3 >= sizeof buff) { syslog(L_ERROR, "%s toolong need %lu for %s", sp->Name, (unsigned long) (i + (sizeof(TOKEN) * 2) + 3), sp->Name); break; } - temp = xmalloc(i + 1); p = strchr(sp->Param, '*'); *p = '\0'; - strlcpy(temp, sp->Param, i + 1); - strlcat(temp, sp->FNLnames.data, i + 1); - strlcat(temp, &p[1], i + 1); + xasprintf(&temp, "%s%.*s%s", sp->Param, (int) sp->FNLnames.left, + sp->FNLnames.data, &p[1]); *p = '*'; -#pragma GCC diagnostic ignored "-Wformat-nonliteral" snprintf(buff, sizeof(buff), temp, Data->TokenText); -#pragma GCC diagnostic warning "-Wformat-nonliteral" free(temp); } else { -#pragma GCC diagnostic ignored "-Wformat-nonliteral" snprintf(buff, sizeof(buff), sp->Param, Data->TokenText); -#pragma GCC diagnostic warning "-Wformat-nonliteral" } if (NeedShell(buff, (const char **)argv, (const char **)ARRAY_END(argv))) { @@ -1071,6 +1065,8 @@ SITEfree(SITE *sp) free(sp->FNLnames.data); sp->FNLnames.data = NULL; sp->FNLnames.size = 0; + sp->FNLnames.left = 0; + sp->FNLnames.used = 0; } if (sp->HashFeedList) { for (hf = sp->HashFeedList; hf; hf = hn) { diff -Nurp inn-2.6.0/innd/status.c inn-2.6.1/innd/status.c --- inn-2.6.0/innd/status.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/innd/status.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: status.c 9206 2011-06-14 19:07:37Z iulius $ +/* $Id: status.c 10009 2016-05-05 12:39:19Z iulius $ ** ** Periodic status reporting. */ @@ -292,16 +292,16 @@ STATUSsummary(void) fprintf (F, "global (process)\n"); fprintf (F, " seconds: %ld\n", (long) seconds); offered = accepted + refused + rejected; - fprintf (F, " offered: %-9ld\n", offered); + fprintf (F, " offered: %-9lu\n", offered); if (!offered) offered = 1; /* to avoid division by zero */ if (!size) size = 1; /* avoid divide by zero here too */ - fprintf (F, " accepted: %-9ld %%accepted: %.1f%%\n", + fprintf (F, " accepted: %-9lu %%accepted: %.1f%%\n", accepted, (float) accepted / offered * 100); - fprintf (F, " refused: %-9ld %%refused: %.1f%%\n", + fprintf (F, " refused: %-9lu %%refused: %.1f%%\n", refused, (float) refused / offered * 100); - fprintf (F, " rejected: %-9ld %%rejected: %.1f%%\n", + fprintf (F, " rejected: %-9lu %%rejected: %.1f%%\n", rejected, (float) rejected / offered * 100); - fprintf (F, " duplicated: %-9ld %%duplicated: %.1f%%\n", + fprintf (F, " duplicated: %-9lu %%duplicated: %.1f%%\n", duplicate, (float) duplicate / offered * 100); fprintf (F, " bytes: %-7s\n", PrettySize (size + DuplicateSize + RejectSize, str)); fprintf (F, " duplicated size: %-7s %%duplicated size: %.1f%%\n", @@ -311,8 +311,8 @@ STATUSsummary(void) fputc ('\n', F) ; if(innconf->logstatus) { - notice ("%s status seconds %ld accepted %ld " - "refused %ld rejected %ld duplicate %ld " + notice ("%s status seconds %ld accepted %lu " + "refused %lu rejected %lu duplicate %lu " "accepted size %.0f duplicate size %.0f rejected size %.0f\n", "ME", (long) seconds, accepted, refused, rejected, duplicate, @@ -324,49 +324,49 @@ STATUSsummary(void) fprintf (F, "%s\n", status->name); fprintf (F, " ip address: %s\n", status->ip_addr); fprintf (F, " seconds: %-7ld ", (long) status->seconds); - fprintf (F, " duplicates: %-5ld ", status->Duplicate); - fprintf (F, "max allowed cxns: %d\n", status->maxCxn); - fprintf (F, " offered: %-7ld ", + fprintf (F, " duplicates: %-5lu ", status->Duplicate); + fprintf (F, "max allowed cxns: %u\n", status->maxCxn); + fprintf (F, " offered: %-7lu ", status->accepted + status->refused + status->rejected); - fprintf (F, " uw newsgroups: %-7ld ", status->Unwanted_g); - fprintf (F, " active cxns: %d\n", status->activeCxn); - fprintf (F, " accepted: %-7ld ", status->accepted); - fprintf (F, "uw distributions: %-7ld ", status->Unwanted_d); - fprintf (F, " sleeping cxns: %d\n", status->sleepingCxns); - fprintf (F, " refused: %-7ld ", status->refused); - fprintf (F, " unapproved: %-7ld ", status->Unwanted_u); + fprintf (F, " uw newsgroups: %-7lu ", status->Unwanted_g); + fprintf (F, " active cxns: %u\n", status->activeCxn); + fprintf (F, " accepted: %-7lu ", status->accepted); + fprintf (F, "uw distributions: %-7lu ", status->Unwanted_d); + fprintf (F, " sleeping cxns: %u\n", status->sleepingCxns); + fprintf (F, " refused: %-7lu ", status->refused); + fprintf (F, " unapproved: %-7lu ", status->Unwanted_u); fprintf (F, "want streaming: %s\n", status->can_stream ? "Yes" : "No"); - fprintf (F, " rejected: %-7ld ", status->rejected); - fprintf (F, " filtered: %-7ld ", status->Unwanted_f); + fprintf (F, " rejected: %-7lu ", status->rejected); + fprintf (F, " filtered: %-7lu ", status->Unwanted_f); fprintf (F, " is streaming: %s\n", (status->Check || status->Takethis) ? "Yes" : "No"); fprintf (F, " size: %-8s ", PrettySize(status->Size, str)); - fprintf (F, " bad sites: %-7ld ", status->Unwanted_s); + fprintf (F, " bad sites: %-7lu ", status->Unwanted_s); fprintf (F, "duplicate size: %s\n", PrettySize(status->DuplicateSize, str)); fprintf (F, "reject size: %-8s\n", PrettySize(status->RejectSize, str)); fprintf (F, " Protocol:\n"); - fprintf (F, " Ihave: %-6ld SendIt[%d]: %-6ld Got[%d]: %-6ld Deferred[%d]: %ld\n", + fprintf (F, " Ihave: %-6lu SendIt[%d]: %-6lu Got[%d]: %-6lu Deferred[%d]: %lu\n", status->Ihave, NNTP_CONT_IHAVE, status->Ihave_SendIt, NNTP_FAIL_IHAVE_REFUSE, status->Ihave_Duplicate, NNTP_FAIL_IHAVE_DEFER, status->Ihave_Deferred); - fprintf (F, " Check: %-6ld SendIt[%d]: %-6ld Got[%d]: %-6ld Deferred[%d]: %ld\n", + fprintf (F, " Check: %-6lu SendIt[%d]: %-6lu Got[%d]: %-6lu Deferred[%d]: %lu\n", status->Check, NNTP_OK_CHECK, status->Check_send, NNTP_FAIL_CHECK_REFUSE, status->Check_got, NNTP_FAIL_CHECK_DEFER, status->Check_deferred); - fprintf (F, " Takethis: %-6ld Ok[%d]: %-6ld Error[%d]: %-6ld\n", + fprintf (F, " Takethis: %-6lu Ok[%d]: %-6lu Error[%d]: %-6lu\n", status->Takethis, NNTP_OK_TAKETHIS, status->Takethis_Ok, NNTP_FAIL_TAKETHIS_REJECT, status->Takethis_Err); if (innconf->refusecybercancels) { - fprintf (F, " Cancelrejects: Ihave[%d]: %-6ld Check[%d]: %-6ld\n", + fprintf (F, " Cancelrejects: Ihave[%d]: %-6lu Check[%d]: %-6lu\n", NNTP_FAIL_IHAVE_REFUSE, status->Ihave_Cybercan, NNTP_FAIL_CHECK_REFUSE, status->Check_cybercan); } fputc ('\n', F) ; if(innconf->logstatus) { - notice ("%s status seconds %ld accepted %ld " - "refused %ld rejected %ld duplicate %ld " + notice ("%s status seconds %ld accepted %lu " + "refused %lu rejected %lu duplicate %lu " "accepted size %.0f duplicate size %.0f rejected size %.0f\n", status->name, (long) status->seconds, status->accepted, status->refused, status->rejected, status->Duplicate, diff -Nurp inn-2.6.0/innfeed/Makefile inn-2.6.1/innfeed/Makefile --- inn-2.6.0/innfeed/Makefile 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/innfeed/Makefile 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -## $Id: Makefile 9794 2015-03-17 20:49:15Z iulius $ +## $Id: Makefile 10100 2016-11-04 22:24:26Z iulius $ include ../Makefile.global @@ -105,7 +105,7 @@ article.o: article.c innfeed.h ../includ ../include/clibrary.h ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/portable/mmap.h \ ../include/inn/messages.h ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.h \ + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ ../include/inn/storage.h ../include/inn/options.h article.h misc.h \ ../include/portable/macros.h buffer.h endpoint.h buffer.o: buffer.c innfeed.h ../include/inn/timer.h \ @@ -114,14 +114,14 @@ buffer.o: buffer.c innfeed.h ../include/ ../include/config.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/messages.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - buffer.h misc.h ../include/portable/macros.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h buffer.h misc.h ../include/portable/macros.h config_l.o: config_l.c innfeed.h ../include/inn/timer.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/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - configfile.h config_y.h misc.h ../include/config.h \ - ../include/inn/defines.h ../include/inn/options.h \ + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h configfile.h config_y.h misc.h \ + ../include/config.h ../include/inn/defines.h ../include/inn/options.h \ ../include/portable/macros.h config_y.o: config_y.c innfeed.h ../include/inn/timer.h \ ../include/inn/defines.h ../include/inn/system.h ../include/inn/macros.h \ @@ -129,8 +129,8 @@ config_y.o: config_y.c innfeed.h ../incl ../include/config.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/messages.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - configfile.h misc.h ../include/portable/macros.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h configfile.h misc.h ../include/portable/macros.h connection.o: connection.c innfeed.h ../include/inn/timer.h \ ../include/inn/defines.h ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -141,8 +141,9 @@ connection.o: connection.c innfeed.h ../ ../include/portable/getnameinfo.h ../include/inn/fdflag.h \ ../include/inn/portable-socket.h ../include/inn/innconf.h \ ../include/inn/messages.h ../include/inn/network.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - article.h misc.h buffer.h configfile.h connection.h endpoint.h host.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h article.h misc.h buffer.h configfile.h \ + connection.h endpoint.h host.h endpoint.o: endpoint.c innfeed.h ../include/inn/timer.h \ ../include/inn/defines.h ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -152,8 +153,8 @@ endpoint.o: endpoint.c innfeed.h ../incl ../include/portable/macros.h ../include/portable/getaddrinfo.h \ ../include/portable/getnameinfo.h ../include/inn/innconf.h \ ../include/inn/messages.h ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.h buffer.h misc.h \ - configfile.h endpoint.h host.h + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ + buffer.h misc.h configfile.h endpoint.h host.h host.o: host.c innfeed.h ../include/inn/timer.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -164,9 +165,9 @@ host.o: host.c innfeed.h ../include/inn/ ../include/portable/getnameinfo.h ../include/inn/innconf.h \ ../include/inn/messages.h ../include/inn/network.h \ ../include/inn/portable-socket.h ../include/inn/version.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - article.h misc.h buffer.h configfile.h connection.h endpoint.h host.h \ - innlistener.h tape.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h article.h misc.h buffer.h configfile.h \ + connection.h endpoint.h host.h innlistener.h tape.h imap_connection.o: imap_connection.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 \ @@ -175,16 +176,16 @@ imap_connection.o: imap_connection.c ../ ../include/portable/stdbool.h ../include/portable/socket.h \ ../include/portable/macros.h ../include/portable/getaddrinfo.h \ ../include/portable/getnameinfo.h ../include/inn/messages.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - buffer.h misc.h connection.h endpoint.h host.h innfeed.h \ - ../include/inn/timer.h article.h configfile.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h buffer.h misc.h connection.h endpoint.h host.h \ + innfeed.h ../include/inn/timer.h article.h configfile.h innlistener.o: innlistener.c innfeed.h ../include/inn/timer.h \ ../include/inn/defines.h ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ ../include/config.h ../include/inn/defines.h ../include/inn/options.h \ ../include/clibrary.h ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.h \ + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ ../include/inn/messages.h ../include/inn/nntp.h article.h misc.h \ ../include/portable/macros.h buffer.h configfile.h endpoint.h host.h \ innlistener.h tape.h @@ -197,7 +198,7 @@ main.o: main.c innfeed.h ../include/inn/ ../include/portable/macros.h ../include/portable/getaddrinfo.h \ ../include/portable/getnameinfo.h ../include/portable/socket-unix.h \ ../include/inn/innconf.h ../include/inn/messages.h \ - ../include/inn/version.h ../include/inn/libinn.h \ + ../include/inn/version.h ../include/inn/libinn.h ../include/inn/concat.h \ ../include/inn/xmalloc.h ../include/inn/xwrite.h \ ../include/inn/storage.h ../include/inn/options.h article.h misc.h \ buffer.h configfile.h connection.h endpoint.h host.h innlistener.h \ @@ -208,8 +209,9 @@ misc.o: misc.c innfeed.h ../include/inn/ ../include/config.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/messages.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - endpoint.h misc.h ../include/portable/macros.h tape.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h endpoint.h misc.h ../include/portable/macros.h \ + tape.h tape.o: tape.c innfeed.h ../include/inn/timer.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -217,5 +219,6 @@ tape.o: tape.c innfeed.h ../include/inn/ ../include/clibrary.h ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/innconf.h \ ../include/inn/messages.h ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.h article.h misc.h \ - ../include/portable/macros.h configfile.h endpoint.h tape.h + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ + article.h misc.h ../include/portable/macros.h configfile.h endpoint.h \ + tape.h diff -Nurp inn-2.6.0/innfeed/article.c inn-2.6.1/innfeed/article.c --- inn-2.6.0/innfeed/article.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/innfeed/article.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: article.c 9894 2015-06-14 10:06:27Z iulius $ +/* $Id: article.c 10009 2016-05-05 12:39:19Z iulius $ ** ** The Article class for innfeed. ** @@ -296,20 +296,20 @@ void gPrintArticleInfo (FILE *fp, unsign indent [i] = ' ' ; indent [i] = '\0' ; - fprintf (fp,"%sGlobal Article information : (count %d) {\n", + fprintf (fp,"%sGlobal Article information : (count %u) {\n", indent, articlesInUse) ; - fprintf (fp,"%s missingArticleCount : %d\n",indent,missingArticleCount) ; + fprintf (fp,"%s missingArticleCount : %u\n",indent,missingArticleCount) ; fprintf (fp,"%s logMissingArticles : %d\n",indent,logMissingArticles) ; - fprintf (fp,"%s preparedBytes : %d\n",indent,preparedBytes) ; - fprintf (fp,"%s preparedNewlines : %d\n",indent,preparedNewlines) ; - fprintf (fp,"%s avgCharsPerLine : %d\n",indent,avgCharsPerLine) ; + fprintf (fp,"%s preparedBytes : %u\n",indent,preparedBytes) ; + fprintf (fp,"%s preparedNewlines : %u\n",indent,preparedNewlines) ; + fprintf (fp,"%s avgCharsPerLine : %u\n",indent,avgCharsPerLine) ; fprintf (fp,"%s rolledOver : %s\n",indent,boolToString (rolledOver)) ; - fprintf (fp,"%s bytesInUse : %d\n",indent,bytesInUse) ; - fprintf (fp,"%s maxBytesInUse : %d\n",indent,maxBytesInUse) ; - fprintf (fp,"%s articlesInUse : %d\n",indent,articlesInUse) ; - fprintf (fp,"%s byteTotal : %d\n",indent,byteTotal) ; - fprintf (fp,"%s articleTotal : %d\n",indent,articleTotal) ; + fprintf (fp,"%s bytesInUse : %u\n",indent,bytesInUse) ; + fprintf (fp,"%s maxBytesInUse : %u\n",indent,maxBytesInUse) ; + fprintf (fp,"%s articlesInUse : %u\n",indent,articlesInUse) ; + fprintf (fp,"%s byteTotal : %u\n",indent,byteTotal) ; + fprintf (fp,"%s articleTotal : %u\n",indent,articleTotal) ; fprintf (fp,"%s articleStatsId : %d\n",indent,articleStatsId) ; { diff -Nurp inn-2.6.0/innfeed/buffer.c inn-2.6.1/innfeed/buffer.c --- inn-2.6.0/innfeed/buffer.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/innfeed/buffer.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: buffer.c 7585 2006-11-21 09:37:51Z eagle $ +/* $Id: buffer.c 10009 2016-05-05 12:39:19Z iulius $ ** ** The Buffer class for innfeed. ** @@ -184,7 +184,7 @@ void gPrintBufferInfo (FILE *fp, unsigne indent [i] = ' ' ; indent [i] = '\0' ; - fprintf (fp,"%sGlobal Buffer List : (count %d) {\n",indent,bufferCount) ; + fprintf (fp,"%sGlobal Buffer List : (count %u) {\n",indent,bufferCount) ; for (b = gBufferList ; b != NULL ; b = b->next) printBufferInfo (b,fp,indentAmt + INDENT_INCR) ; diff -Nurp inn-2.6.0/innfeed/config_l.c inn-2.6.1/innfeed/config_l.c --- inn-2.6.0/innfeed/config_l.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/innfeed/config_l.c 2016-11-27 06:03:42.000000000 -0800 @@ -8,7 +8,7 @@ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 5 -#define YY_FLEX_SUBMINOR_VERSION 35 +#define YY_FLEX_SUBMINOR_VERSION 39 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif @@ -161,7 +161,12 @@ typedef unsigned int flex_uint32_t; typedef struct yy_buffer_state *YY_BUFFER_STATE; #endif -extern int yyleng; +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + +extern yy_size_t yyleng; extern FILE *yyin, *yyout; @@ -170,6 +175,7 @@ extern FILE *yyin, *yyout; #define EOB_ACT_LAST_MATCH 2 #define YY_LESS_LINENO(n) + #define YY_LINENO_REWIND_TO(ptr) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ @@ -187,11 +193,6 @@ extern FILE *yyin, *yyout; #define unput(c) yyunput( c, (yytext_ptr) ) -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef size_t yy_size_t; -#endif - #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state @@ -209,7 +210,7 @@ struct yy_buffer_state /* Number of characters read into yy_ch_buf, not including EOB * characters. */ - int yy_n_chars; + yy_size_t yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to @@ -279,8 +280,8 @@ static YY_BUFFER_STATE * yy_buffer_stack /* yy_hold_char holds the character lost when yytext is formed. */ static char yy_hold_char; -static int yy_n_chars; /* number of characters read into yy_ch_buf */ -int yyleng; +static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */ +yy_size_t yyleng; /* Points to current character in buffer. */ static char *yy_c_buf_p = (char *) 0; @@ -308,7 +309,7 @@ static void yy_init_buffer (YY_BUFFER_ST YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ); YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ); -YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len ); +YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len ); void *yyalloc (yy_size_t ); void *yyrealloc (void *,yy_size_t ); @@ -561,7 +562,7 @@ struct includeFile { int include_stack_ptr = 0; -#line 565 "lex.yy.c" +#line 566 "lex.yy.c" #define INITIAL 0 #define incl 1 @@ -601,7 +602,7 @@ FILE *yyget_out (void ); void yyset_out (FILE * out_str ); -int yyget_leng (void ); +yy_size_t yyget_leng (void ); char *yyget_text (void ); @@ -667,7 +668,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; \ @@ -680,7 +681,7 @@ static int input (void ); else \ { \ errno=0; \ - while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ + while ( (result = fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \ { \ if( errno != EINTR) \ { \ @@ -752,11 +753,6 @@ YY_DECL register char *yy_cp, *yy_bp; register int yy_act; -#line 66 "configfile.l" - - -#line 759 "lex.yy.c" - if ( !(yy_init) ) { (yy_init) = 1; @@ -783,6 +779,12 @@ YY_DECL yy_load_buffer_state( ); } + { +#line 66 "configfile.l" + + +#line 787 "lex.yy.c" + while ( 1 ) /* loops until end-of-file is reached */ { yy_cp = (yy_c_buf_p); @@ -800,7 +802,7 @@ YY_DECL yy_match: do { - register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; + register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; @@ -1087,7 +1089,7 @@ YY_RULE_SETUP #line 252 "configfile.l" ECHO; YY_BREAK -#line 1091 "lex.yy.c" +#line 1093 "lex.yy.c" case YY_END_OF_BUFFER: { @@ -1216,6 +1218,7 @@ ECHO; "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ + } /* end of user's declarations */ } /* end of yylex */ /* yy_get_next_buffer - try to read in a new buffer @@ -1278,14 +1281,14 @@ static int yy_get_next_buffer (void) { /* Not enough room in the buffer - grow it. */ /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = YY_CURRENT_BUFFER; + YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; int yy_c_buf_p_offset = (int) ((yy_c_buf_p) - b->yy_ch_buf); if ( b->yy_is_our_buffer ) { - int new_size = b->yy_buf_size * 2; + yy_size_t new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; @@ -1316,7 +1319,7 @@ static int yy_get_next_buffer (void) /* Read in more data. */ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), - (yy_n_chars), (size_t) num_to_read ); + (yy_n_chars), num_to_read ); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } @@ -1412,7 +1415,7 @@ static int yy_get_next_buffer (void) yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_is_jam = (yy_current_state == 54); - return yy_is_jam ? 0 : yy_current_state; + return yy_is_jam ? 0 : yy_current_state; } static void yyunput (int c, register char * yy_bp ) @@ -1427,7 +1430,7 @@ static int yy_get_next_buffer (void) if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) { /* need to shift things up to make room */ /* +2 for EOB chars. */ - register int number_to_move = (yy_n_chars) + 2; + register yy_size_t number_to_move = (yy_n_chars) + 2; register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; register char *source = @@ -1476,7 +1479,7 @@ static int yy_get_next_buffer (void) else { /* need more input */ - int offset = (yy_c_buf_p) - (yytext_ptr); + yy_size_t offset = (yy_c_buf_p) - (yytext_ptr); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) @@ -1638,10 +1641,6 @@ static void yy_load_buffer_state (void) yyfree((void *) b ); } -#ifndef __cplusplus -extern int isatty (int ); -#endif /* __cplusplus */ - /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, * such as during a yyrestart() or at EOF. @@ -1754,7 +1753,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)) { @@ -1851,12 +1850,12 @@ 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 (yyconst char * yybytes, yy_size_t _yybytes_len ) { YY_BUFFER_STATE b; char *buf; yy_size_t n; - int i; + yy_size_t i; /* Get memory for full buffer, including space for trailing EOB's. */ n = _yybytes_len + 2; @@ -1938,7 +1937,7 @@ FILE *yyget_out (void) /** Get the length of the current token. * */ -int yyget_leng (void) +yy_size_t yyget_leng (void) { return yyleng; } @@ -2086,7 +2085,7 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 252 "configfile.l" +#line 251 "configfile.l" diff -Nurp inn-2.6.0/innfeed/config_y.c inn-2.6.1/innfeed/config_y.c --- inn-2.6.0/innfeed/config_y.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/innfeed/config_y.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,19 +1,19 @@ -/* A Bison parser, made by GNU Bison 2.5. */ +/* A Bison parser, made by GNU Bison 3.0.2. */ /* Bison implementation for Yacc-like parsers in C - - Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc. - + + Copyright (C) 1984, 1989-1990, 2000-2013 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 the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program. If not, see . */ @@ -26,7 +26,7 @@ special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. - + This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ @@ -44,7 +44,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "2.5" +#define YYBISON_VERSION "3.0.2" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -58,17 +58,13 @@ /* Pull parsers. */ #define YYPULL 1 -/* Using locations. */ -#define YYLSP_NEEDED 0 /* Copy the first part of user declarations. */ +#line 1 "configfile.y" /* yacc.c:339 */ -/* Line 268 of yacc.c */ -#line 1 "configfile.y" - -/* $Id: configfile.y 9363 2011-08-21 23:22:01Z eagle $ +/* $Id: configfile.y 10124 2016-11-26 21:08:57Z iulius $ ** ** A yacc input file for the innfeed config file. ** @@ -220,7 +216,7 @@ char *addInteger (scope *s, const char * if ((error = checkName (currScope,name)) != NULL) return error ; - v = (value *) calloc (1,sizeof (value)) ; + v = (value *) xcalloc (1,sizeof (value)) ; v->name = xstrdup (name) ; v->type = intval ; v->v.int_val = val ; @@ -238,7 +234,7 @@ char *addChar (scope *s, const char *nam if ((error = checkName (currScope,name)) != NULL) return error ; - v = (value *) calloc (1,sizeof (value)) ; + v = (value *) xcalloc (1,sizeof (value)) ; v->name = xstrdup (name) ; v->type = charval ; v->v.char_val = val ; @@ -256,7 +252,7 @@ char *addBoolean (scope *s, const char * if ((error = checkName (currScope,name)) != NULL) return error ; - v = (value *) calloc (1,sizeof (value)) ; + v = (value *) xcalloc (1,sizeof (value)) ; v->name = xstrdup (name) ; v->type = boolval ; v->v.bool_val = val ; @@ -274,7 +270,7 @@ char *addReal (scope *s, const char *nam if ((error = checkName (currScope,name)) != NULL) return error ; - v = (value *) calloc (1,sizeof (value)) ; + v = (value *) xcalloc (1,sizeof (value)) ; v->name = xstrdup (name) ; v->type = realval ; v->v.real_val = val ; @@ -292,7 +288,7 @@ char *addString (scope *s, const char *n if ((error = checkName (currScope,name)) != NULL) return error ; - v = (value *) calloc (1,sizeof (value)) ; + v = (value *) xcalloc (1,sizeof (value)) ; v->name = xstrdup (name) ; v->type = stringval ; v->v.charp_val = xstrdup (val) ; @@ -473,13 +469,13 @@ static void addValue (scope *s, value *v { if (s->values == 0) { - s->values = (value **) calloc (10,sizeof (value *)) ; + s->values = (value **) xcalloc (10,sizeof (value *)) ; s->value_count = 10 ; } else { s->value_count += 10 ; - s->values = (value **) realloc (s->values, + s->values = (value **) xrealloc (s->values, sizeof (value *) * s->value_count); } } @@ -497,7 +493,7 @@ static char *addScope (scope *s, const c if ((error = checkName (s,name)) != NULL) return error ; - v = (value *) calloc (1,sizeof (value)) ; + v = (value *) xcalloc (1,sizeof (value)) ; v->name = xstrdup (name) ; v->type = scopeval ; v->v.scope_val = val ; @@ -594,7 +590,7 @@ static scope *newScope (const char *type scope *t ; int i ; - t = (scope *) calloc (1,sizeof (scope)) ; + t = (scope *) xcalloc (1,sizeof (scope)) ; t->parent = NULL ; t->scope_type = xstrdup (type) ; @@ -722,14 +718,15 @@ static int doCallbacks (void) static char *key ; +#line 722 "y.tab.c" /* yacc.c:339 */ -/* Line 268 of yacc.c */ -#line 728 "y.tab.c" - -/* Enabling traces. */ -#ifndef YYDEBUG -# define YYDEBUG 0 -#endif +# ifndef YY_NULLPTR +# if defined __cplusplus && 201103L <= __cplusplus +# define YY_NULLPTR nullptr +# else +# define YY_NULLPTR 0 +# endif +# endif /* Enabling verbose error messages. */ #ifdef YYERROR_VERBOSE @@ -739,34 +736,39 @@ static char *key ; # define YYERROR_VERBOSE 0 #endif -/* Enabling the token table. */ -#ifndef YYTOKEN_TABLE -# define YYTOKEN_TABLE 0 +/* In a future release of Bison, this section will be replaced + by #include "y.tab.h". */ +#ifndef YY_YY_Y_TAB_H_INCLUDED +# define YY_YY_Y_TAB_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int yydebug; #endif - -/* Tokens. */ +/* Token type. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - PEER = 258, - GROUP = 259, - IVAL = 260, - RVAL = 261, - NAME = 262, - XSTRING = 263, - SCOPE = 264, - COLON = 265, - LBRACE = 266, - RBRACE = 267, - TRUEBVAL = 268, - FALSEBVAL = 269, - CHAR = 270, - WORD = 271, - IP_ADDRESS = 272 - }; + enum yytokentype + { + PEER = 258, + GROUP = 259, + IVAL = 260, + RVAL = 261, + NAME = 262, + XSTRING = 263, + SCOPE = 264, + COLON = 265, + LBRACE = 266, + RBRACE = 267, + TRUEBVAL = 268, + FALSEBVAL = 269, + CHAR = 270, + WORD = 271, + IP_ADDRESS = 272 + }; #endif /* Tokens. */ #define PEER 258 @@ -785,15 +787,12 @@ static char *key ; #define WORD 271 #define IP_ADDRESS 272 - - - +/* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -typedef union YYSTYPE +typedef union YYSTYPE YYSTYPE; +union YYSTYPE { - -/* Line 293 of yacc.c */ -#line 657 "configfile.y" +#line 657 "configfile.y" /* yacc.c:355 */ scope *scp ; value *val ; @@ -803,22 +802,22 @@ typedef union YYSTYPE char *string ; char chr ; - - -/* Line 293 of yacc.c */ -#line 810 "y.tab.c" -} YYSTYPE; +#line 806 "y.tab.c" /* yacc.c:355 */ +}; # define YYSTYPE_IS_TRIVIAL 1 -# define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 #endif -/* Copy the second part of user declarations. */ +extern YYSTYPE yylval; +int yyparse (void); + +#endif /* !YY_YY_Y_TAB_H_INCLUDED */ + +/* Copy the second part of user declarations. */ -/* Line 343 of yacc.c */ -#line 822 "y.tab.c" +#line 821 "y.tab.c" /* yacc.c:358 */ #ifdef short # undef short @@ -832,11 +831,8 @@ typedef unsigned char yytype_uint8; #ifdef YYTYPE_INT8 typedef YYTYPE_INT8 yytype_int8; -#elif (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -typedef signed char yytype_int8; #else -typedef short int yytype_int8; +typedef signed char yytype_int8; #endif #ifdef YYTYPE_UINT16 @@ -856,8 +852,7 @@ typedef short int yytype_int16; # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t -# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# elif ! defined YYSIZE_T # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else @@ -871,38 +866,67 @@ typedef short int yytype_int16; # if defined YYENABLE_NLS && YYENABLE_NLS # if ENABLE_NLS # include /* INFRINGES ON USER NAME SPACE */ -# define YY_(msgid) dgettext ("bison-runtime", msgid) +# define YY_(Msgid) dgettext ("bison-runtime", Msgid) # endif # endif # ifndef YY_ -# define YY_(msgid) msgid +# define YY_(Msgid) Msgid +# endif +#endif + +#ifndef YY_ATTRIBUTE +# if (defined __GNUC__ \ + && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ + || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C +# define YY_ATTRIBUTE(Spec) __attribute__(Spec) +# else +# define YY_ATTRIBUTE(Spec) /* empty */ +# endif +#endif + +#ifndef YY_ATTRIBUTE_PURE +# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) +#endif + +#ifndef YY_ATTRIBUTE_UNUSED +# 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)) +# define YYUSE(E) ((void) (E)) #else -# define YYUSE(e) /* empty */ +# define YYUSE(E) /* empty */ #endif -/* Identity function, used to suppress warnings about constant conditions. */ -#ifndef lint -# define YYID(n) (n) +#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +/* Suppress an incorrect diagnostic about yylval being uninitialized. */ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ + _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ + _Pragma ("GCC diagnostic pop") #else -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static int -YYID (int yyi) -#else -static int -YYID (yyi) - int yyi; +# define YY_INITIAL_VALUE(Value) Value #endif -{ - return yyi; -} +#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_END #endif +#ifndef YY_INITIAL_VALUE +# define YY_INITIAL_VALUE(Value) /* Nothing. */ +#endif + #if ! defined yyoverflow || YYERROR_VERBOSE @@ -921,9 +945,9 @@ YYID (yyi) # define alloca _alloca # else # define YYSTACK_ALLOC alloca -# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS # include /* INFRINGES ON USER NAME SPACE */ + /* Use EXIT_SUCCESS as a witness for stdlib.h. */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 # endif @@ -933,8 +957,8 @@ YYID (yyi) # endif # ifdef YYSTACK_ALLOC - /* Pacify GCC's `empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) + /* Pacify GCC's 'empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely @@ -950,7 +974,7 @@ YYID (yyi) # endif # if (defined __cplusplus && ! defined EXIT_SUCCESS \ && ! ((defined YYMALLOC || defined malloc) \ - && (defined YYFREE || defined free))) + && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 @@ -958,15 +982,13 @@ YYID (yyi) # endif # ifndef YYMALLOC # define YYMALLOC malloc -# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# if ! defined malloc && ! defined EXIT_SUCCESS void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free -# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# if ! defined free && ! defined EXIT_SUCCESS void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif @@ -976,7 +998,7 @@ void free (void *); /* INFRINGES ON USER #if (! defined yyoverflow \ && (! defined __cplusplus \ - || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc @@ -1001,35 +1023,35 @@ union yyalloc elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ -# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ - do \ - { \ - YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ - Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ - } \ - while (YYID (0)) +# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (0) #endif #if defined YYCOPY_NEEDED && YYCOPY_NEEDED -/* Copy COUNT objects from FROM to TO. The source and destination do +/* Copy COUNT objects from SRC to DST. The source and destination do not overlap. */ # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ -# define YYCOPY(To, From, Count) \ - __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# define YYCOPY(Dst, Src, Count) \ + __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) # else -# define YYCOPY(To, From, Count) \ - do \ - { \ - YYSIZE_T yyi; \ - for (yyi = 0; yyi < (Count); yyi++) \ - (To)[yyi] = (From)[yyi]; \ - } \ - while (YYID (0)) +# define YYCOPY(Dst, Src, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (Dst)[yyi] = (Src)[yyi]; \ + } \ + while (0) # endif # endif #endif /* !YYCOPY_NEEDED */ @@ -1045,17 +1067,19 @@ union yyalloc #define YYNNTS 10 /* YYNRULES -- Number of rules. */ #define YYNRULES 21 -/* YYNRULES -- Number of states. */ +/* YYNSTATES -- Number of states. */ #define YYNSTATES 33 -/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned + by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 #define YYMAXUTOK 272 -#define YYTRANSLATE(YYX) \ +#define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) -/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM + as returned by yylex, without out-of-bounds checking. */ static const yytype_uint8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -1089,27 +1113,7 @@ static const yytype_uint8 yytranslate[] }; #if YYDEBUG -/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in - YYRHS. */ -static const yytype_uint8 yyprhs[] = -{ - 0, 0, 3, 4, 7, 9, 10, 13, 16, 17, - 24, 25, 32, 36, 37, 42, 44, 46, 48, 50, - 52, 54 -}; - -/* YYRHS -- A `-1'-separated list of the rules' RHS. */ -static const yytype_int8 yyrhs[] = -{ - 19, 0, -1, -1, 20, 22, -1, 22, -1, -1, - 22, 23, -1, 22, 1, -1, -1, 3, 16, 11, - 24, 21, 12, -1, -1, 4, 16, 11, 25, 21, - 12, -1, 16, 16, 11, -1, -1, 16, 26, 10, - 27, -1, 16, -1, 5, -1, 13, -1, 14, -1, - 6, -1, 8, -1, 15, -1 -}; - -/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ + /* 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, @@ -1118,7 +1122,7 @@ static const yytype_uint16 yyrline[] = }; #endif -#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +#if YYDEBUG || YYERROR_VERBOSE || 0 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = @@ -1126,13 +1130,13 @@ static const char *const yytname[] = "$end", "error", "$undefined", "PEER", "GROUP", "IVAL", "RVAL", "NAME", "XSTRING", "SCOPE", "COLON", "LBRACE", "RBRACE", "TRUEBVAL", "FALSEBVAL", "CHAR", "WORD", "IP_ADDRESS", "$accept", "input", "$@1", "scope", - "entries", "entry", "$@2", "$@3", "$@4", "value", 0 + "entries", "entry", "$@2", "$@3", "$@4", "value", YY_NULLPTR }; #endif # ifdef YYPRINT -/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to - token YYLEX-NUM. */ +/* YYTOKNUM[NUM] -- (External) token number corresponding to the + (internal) symbol number NUM (which must be that of a token). */ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, @@ -1140,25 +1144,29 @@ static const yytype_uint16 yytoknum[] = }; # endif -/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint8 yyr1[] = -{ - 0, 18, 20, 19, 21, 22, 22, 22, 24, 23, - 25, 23, 23, 26, 23, 27, 27, 27, 27, 27, - 27, 27 -}; +#define YYPACT_NINF -12 -/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ -static const yytype_uint8 yyr2[] = +#define yypact_value_is_default(Yystate) \ + (!!((Yystate) == (-12))) + +#define YYTABLE_NINF -5 + +#define yytable_value_is_error(Yytable_value) \ + 0 + + /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +static const yytype_int8 yypact[] = { - 0, 2, 0, 2, 1, 0, 2, 2, 0, 6, - 0, 6, 3, 0, 4, 1, 1, 1, 1, 1, - 1, 1 + -12, 2, -12, -12, 0, -12, -11, -9, -6, -12, + 1, 3, 4, 8, -12, -12, -12, 14, -12, -12, + -12, -12, -12, -12, -12, -12, -12, -12, -1, 5, + 11, -12, -12 }; -/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. - Performed when YYTABLE doesn't specify something else to do. Zero - means the default is an error. */ + /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE does not specify something else to do. Zero + means the default is an error. */ static const yytype_uint8 yydefact[] = { 2, 0, 5, 1, 0, 7, 0, 0, 13, 6, @@ -1167,33 +1175,21 @@ static const yytype_uint8 yydefact[] = 0, 9, 11 }; -/* YYDEFGOTO[NTERM-NUM]. */ -static const yytype_int8 yydefgoto[] = -{ - -1, 1, 2, 28, 29, 9, 18, 19, 13, 27 -}; - -/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -#define YYPACT_NINF -12 -static const yytype_int8 yypact[] = + /* YYPGOTO[NTERM-NUM]. */ +static const yytype_int8 yypgoto[] = { - -12, 2, -12, -12, 0, -12, -11, -9, -6, -12, - 1, 3, 4, 8, -12, -12, -12, 14, -12, -12, - -12, -12, -12, -12, -12, -12, -12, -12, -1, 5, - 11, -12, -12 + -12, -12, -12, 6, 22, -12, -12, -12, -12, -12 }; -/* YYPGOTO[NTERM-NUM]. */ -static const yytype_int8 yypgoto[] = + /* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int8 yydefgoto[] = { - -12, -12, -12, 6, 22, -12, -12, -12, -12, -12 + -1, 1, 2, 28, 29, 9, 18, 19, 13, 27 }; -/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule which - number is the opposite. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -5 + /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule whose + number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int8 yytable[] = { -3, 5, 3, 6, 7, 10, 5, 11, 6, 7, @@ -1202,12 +1198,6 @@ static const yytype_int8 yytable[] = 26 }; -#define yypact_value_is_default(yystate) \ - ((yystate) == (-12)) - -#define yytable_value_is_error(yytable_value) \ - YYID (0) - static const yytype_int8 yycheck[] = { 0, 1, 0, 3, 4, 16, 1, 16, 3, 4, @@ -1216,8 +1206,8 @@ static const yytype_int8 yycheck[] = 16 }; -/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ + /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { 0, 19, 20, 0, 22, 1, 3, 4, 16, 23, @@ -1226,94 +1216,57 @@ static const yytype_uint8 yystos[] = 21, 12, 12 }; -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 - -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrorlab - - -/* Like YYERROR except do call yyerror. This remains here temporarily - to ease the transition to the new meaning of YYERROR, for GCC. - Once GCC version 2 has supplanted version 1, this can go. However, - YYFAIL appears to be in use. Nevertheless, it is formally deprecated - in Bison 2.4.2's NEWS entry, where a plan to phase it out is - discussed. */ - -#define YYFAIL goto yyerrlab -#if defined YYFAIL - /* This is here to suppress warnings from the GCC cpp's - -Wunused-macros. Normally we don't worry about that warning, but - some users do, and we want to make it easy for users to remove - YYFAIL uses, which will produce warnings from Bison 2.5. */ -#endif + /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint8 yyr1[] = +{ + 0, 18, 20, 19, 21, 22, 22, 22, 24, 23, + 25, 23, 23, 26, 23, 27, 27, 27, 27, 27, + 27, 27 +}; -#define YYRECOVERING() (!!yyerrstatus) + /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 0, 2, 1, 0, 2, 2, 0, 6, + 0, 6, 3, 0, 4, 1, 1, 1, 1, 1, + 1, 1 +}; -#define YYBACKUP(Token, Value) \ -do \ - if (yychar == YYEMPTY && yylen == 1) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - YYPOPSTACK (1); \ - goto yybackup; \ - } \ - else \ - { \ - yyerror (YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ -while (YYID (0)) - - -#define YYTERROR 1 -#define YYERRCODE 256 - - -/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. - If N is 0, then set CURRENT to the empty location which ends - the previous symbol: RHS[0] (always defined). */ - -#define YYRHSLOC(Rhs, K) ((Rhs)[K]) -#ifndef YYLLOC_DEFAULT -# define YYLLOC_DEFAULT(Current, Rhs, N) \ - do \ - if (YYID (N)) \ - { \ - (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ - (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ - (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ - (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ - } \ - else \ - { \ - (Current).first_line = (Current).last_line = \ - YYRHSLOC (Rhs, 0).last_line; \ - (Current).first_column = (Current).last_column = \ - YYRHSLOC (Rhs, 0).last_column; \ - } \ - while (YYID (0)) -#endif +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab -/* This macro is provided for backward compatibility. */ -#ifndef YY_LOCATION_PRINT -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) -#endif +#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) + +/* Error token number */ +#define YYTERROR 1 +#define YYERRCODE 256 -/* YYLEX -- calling `yylex' with the right arguments. */ -#ifdef YYLEX_PARAM -# define YYLEX yylex (YYLEX_PARAM) -#else -# define YYLEX yylex () -#endif /* Enable debugging if requested. */ #if YYDEBUG @@ -1323,54 +1276,46 @@ while (YYID (0)) # define YYFPRINTF fprintf # endif -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (YYID (0)) - -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yy_symbol_print (stderr, \ - Type, Value); \ - YYFPRINTF (stderr, "\n"); \ - } \ -} while (YYID (0)) +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (0) + +/* This macro is provided for backward compatibility. */ +#ifndef YY_LOCATION_PRINT +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +#endif + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (0) -/*--------------------------------. -| Print this symbol on YYOUTPUT. | -`--------------------------------*/ -/*ARGSUSED*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +/*----------------------------------------. +| Print this symbol's value on YYOUTPUT. | +`----------------------------------------*/ + static void yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) -#else -static void -yy_symbol_value_print (yyoutput, yytype, yyvaluep) - FILE *yyoutput; - int yytype; - YYSTYPE const * const yyvaluep; -#endif { + FILE *yyo = yyoutput; + YYUSE (yyo); if (!yyvaluep) return; # ifdef YYPRINT if (yytype < YYNTOKENS) YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); -# else - YYUSE (yyoutput); # endif - switch (yytype) - { - default: - break; - } + YYUSE (yytype); } @@ -1378,22 +1323,11 @@ yy_symbol_value_print (yyoutput, yytype, | Print this symbol on YYOUTPUT. | `--------------------------------*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) -#else -static void -yy_symbol_print (yyoutput, yytype, yyvaluep) - FILE *yyoutput; - int yytype; - YYSTYPE const * const yyvaluep; -#endif { - if (yytype < YYNTOKENS) - YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); - else - YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + YYFPRINTF (yyoutput, "%s %s (", + yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); yy_symbol_value_print (yyoutput, yytype, yyvaluep); YYFPRINTF (yyoutput, ")"); @@ -1404,16 +1338,8 @@ yy_symbol_print (yyoutput, yytype, yyval | TOP (included). | `------------------------------------------------------------------*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) -#else -static void -yy_stack_print (yybottom, yytop) - yytype_int16 *yybottom; - yytype_int16 *yytop; -#endif { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) @@ -1424,49 +1350,42 @@ yy_stack_print (yybottom, yytop) YYFPRINTF (stderr, "\n"); } -# define YY_STACK_PRINT(Bottom, Top) \ -do { \ - if (yydebug) \ - yy_stack_print ((Bottom), (Top)); \ -} while (YYID (0)) +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (0) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void -yy_reduce_print (YYSTYPE *yyvsp, int yyrule) -#else -static void -yy_reduce_print (yyvsp, yyrule) - YYSTYPE *yyvsp; - int yyrule; -#endif +yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) { + unsigned long int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; - unsigned long int yylno = yyrline[yyrule]; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", - yyrule - 1, yylno); + yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); - yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], - &(yyvsp[(yyi + 1) - (yynrhs)]) - ); + yy_symbol_print (stderr, + yystos[yyssp[yyi + 1 - yynrhs]], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); YYFPRINTF (stderr, "\n"); } } -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (yyvsp, Rule); \ -} while (YYID (0)) +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyssp, yyvsp, Rule); \ +} while (0) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ @@ -1480,7 +1399,7 @@ int yydebug; /* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH +#ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif @@ -1503,15 +1422,8 @@ int yydebug; # define yystrlen strlen # else /* Return the length of YYSTR. */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static YYSIZE_T yystrlen (const char *yystr) -#else -static YYSIZE_T -yystrlen (yystr) - const char *yystr; -#endif { YYSIZE_T yylen; for (yylen = 0; yystr[yylen]; yylen++) @@ -1527,16 +1439,8 @@ yystrlen (yystr) # else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static char * yystpcpy (char *yydest, const char *yysrc) -#else -static char * -yystpcpy (yydest, yysrc) - char *yydest; - const char *yysrc; -#endif { char *yyd = yydest; const char *yys = yysrc; @@ -1566,27 +1470,27 @@ yytnamerr (char *yyres, const char *yyst char const *yyp = yystr; for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; - - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - /* Fall through. */ - default: - if (yyres) - yyres[yyn] = *yyp; - yyn++; - break; - - case '"': - if (yyres) - yyres[yyn] = '\0'; - return yyn; - } + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } do_not_strip_quotes: ; } @@ -1609,12 +1513,11 @@ static int yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, yytype_int16 *yyssp, int yytoken) { - YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]); + YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); YYSIZE_T yysize = yysize0; - YYSIZE_T yysize1; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; /* Internationalized format string. */ - const char *yyformat = 0; + const char *yyformat = YY_NULLPTR; /* Arguments of yyformat. */ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; /* Number of reported tokens (one for the "unexpected", one per @@ -1622,10 +1525,6 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, c int yycount = 0; /* There are many possibilities here to consider: - - Assume YYFAIL is not used. It's too flawed to consider. See - - for details. YYERROR is fine as it does not invoke this - function. - If this state is a consistent state with a default action, then the only way this function was invoked is if the default action is an error action. In that case, don't check for expected @@ -1674,11 +1573,13 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, c break; } yyarg[yycount++] = yytname[yyx]; - yysize1 = yysize + yytnamerr (0, yytname[yyx]); - if (! (yysize <= yysize1 - && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) - return 2; - yysize = yysize1; + { + YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); + if (! (yysize <= yysize1 + && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } } } } @@ -1698,10 +1599,12 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, c # undef YYCASE_ } - yysize1 = yysize + yystrlen (yyformat); - if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) - return 2; - yysize = yysize1; + { + YYSIZE_T yysize1 = yysize + yystrlen (yyformat); + if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } if (*yymsg_alloc < yysize) { @@ -1738,48 +1641,20 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, c | Release the memory associated to this symbol. | `-----------------------------------------------*/ -/*ARGSUSED*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) -#else -static void -yydestruct (yymsg, yytype, yyvaluep) - const char *yymsg; - int yytype; - YYSTYPE *yyvaluep; -#endif { YYUSE (yyvaluep); - if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); - switch (yytype) - { - - default: - break; - } + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + YYUSE (yytype); + YY_IGNORE_MAYBE_UNINITIALIZED_END } -/* Prevent warnings from -Wmissing-prototypes. */ -#ifdef YYPARSE_PARAM -#if defined __STDC__ || defined __cplusplus -int yyparse (void *YYPARSE_PARAM); -#else -int yyparse (); -#endif -#else /* ! YYPARSE_PARAM */ -#if defined __STDC__ || defined __cplusplus -int yyparse (void); -#else -int yyparse (); -#endif -#endif /* ! YYPARSE_PARAM */ /* The lookahead symbol. */ @@ -1787,7 +1662,6 @@ int yychar; /* The semantic value of the lookahead symbol. */ YYSTYPE yylval; - /* Number of syntax errors so far. */ int yynerrs; @@ -1796,37 +1670,18 @@ int yynerrs; | yyparse. | `----------*/ -#ifdef YYPARSE_PARAM -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -int -yyparse (void *YYPARSE_PARAM) -#else -int -yyparse (YYPARSE_PARAM) - void *YYPARSE_PARAM; -#endif -#else /* ! YYPARSE_PARAM */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) int yyparse (void) -#else -int -yyparse () - -#endif -#endif { int yystate; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; /* The stacks and their tools: - `yyss': related to states. - `yyvs': related to semantic values. + 'yyss': related to states. + 'yyvs': related to semantic values. - Refer to the stacks thru separate pointers, to allow yyoverflow + Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ /* The state stack. */ @@ -1844,7 +1699,7 @@ yyparse () int yyn; int yyresult; /* Lookahead token as an internal (translated) token number. */ - int yytoken; + int yytoken = 0; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; @@ -1862,9 +1717,8 @@ yyparse () Keep to zero when no symbol should be popped. */ int yylen = 0; - yytoken = 0; - yyss = yyssa; - yyvs = yyvsa; + yyssp = yyss = yyssa; + yyvsp = yyvs = yyvsa; yystacksize = YYINITDEPTH; YYDPRINTF ((stderr, "Starting parse\n")); @@ -1873,14 +1727,6 @@ yyparse () yyerrstatus = 0; yynerrs = 0; yychar = YYEMPTY; /* Cause a token to be read. */ - - /* Initialize stack pointers. - Waste one element of value and location stack - so that they stay on the same level as the state stack. - The wasted elements are never initialized. */ - yyssp = yyss; - yyvsp = yyvs; - goto yysetstate; /*------------------------------------------------------------. @@ -1901,23 +1747,23 @@ yyparse () #ifdef yyoverflow { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - YYSTYPE *yyvs1 = yyvs; - yytype_int16 *yyss1 = yyss; - - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. This used to be a - conditional around just the two extra args, but that might - be undefined if yyoverflow is a macro. */ - yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), - &yystacksize); + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + &yystacksize); - yyss = yyss1; - yyvs = yyvs1; + yyss = yyss1; + yyvs = yyvs1; } #else /* no yyoverflow */ # ifndef YYSTACK_RELOCATE @@ -1925,22 +1771,22 @@ yyparse () # else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; + goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; + yystacksize = YYMAXDEPTH; { - yytype_int16 *yyss1 = yyss; - union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); - if (! yyptr) - goto yyexhaustedlab; - YYSTACK_RELOCATE (yyss_alloc, yyss); - YYSTACK_RELOCATE (yyvs_alloc, yyvs); + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, yyvs); # undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); } # endif #endif /* no yyoverflow */ @@ -1949,10 +1795,10 @@ yyparse () yyvsp = yyvs + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long int) yystacksize)); + (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) - YYABORT; + YYABORT; } YYDPRINTF ((stderr, "Entering state %d\n", yystate)); @@ -1981,7 +1827,7 @@ yybackup: if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); - yychar = YYLEX; + yychar = yylex (); } if (yychar <= YYEOF) @@ -2021,7 +1867,9 @@ yybackup: yychar = YYEMPTY; yystate = yyn; + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END goto yynewstate; @@ -2044,7 +1892,7 @@ yyreduce: yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: - `$$ = $1'. + '$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison @@ -2058,184 +1906,166 @@ yyreduce: switch (yyn) { case 2: - -/* Line 1806 of yacc.c */ -#line 690 "configfile.y" +#line 690 "configfile.y" /* yacc.c:1646 */ { lineCount = 1 ; addScope (NULL,"",newScope ("")) ; topScope = currScope ; } +#line 1916 "y.tab.c" /* yacc.c:1646 */ break; case 3: - -/* Line 1806 of yacc.c */ -#line 694 "configfile.y" +#line 694 "configfile.y" /* yacc.c:1646 */ { if (!doCallbacks()) YYABORT ; } +#line 1922 "y.tab.c" /* yacc.c:1646 */ break; case 7: - -/* Line 1806 of yacc.c */ -#line 700 "configfile.y" +#line 700 "configfile.y" /* yacc.c:1646 */ { errbuff = xmalloc (strlen(SYNTAX_ERROR) + 12) ; sprintf (errbuff,SYNTAX_ERROR,lineCount) ; YYABORT ; } +#line 1932 "y.tab.c" /* yacc.c:1646 */ break; case 8: - -/* Line 1806 of yacc.c */ -#line 707 "configfile.y" +#line 707 "configfile.y" /* yacc.c:1646 */ { - errbuff = addScope (currScope,(yyvsp[(2) - (3)].name),newScope ("peer")) ; - free ((yyvsp[(2) - (3)].name)) ; + errbuff = addScope (currScope,(yyvsp[-1].name),newScope ("peer")) ; + free ((yyvsp[-1].name)) ; if (errbuff != NULL) YYABORT ; } +#line 1942 "y.tab.c" /* yacc.c:1646 */ break; case 9: - -/* Line 1806 of yacc.c */ -#line 711 "configfile.y" +#line 711 "configfile.y" /* yacc.c:1646 */ { currScope = currScope->parent ; } +#line 1950 "y.tab.c" /* yacc.c:1646 */ break; case 10: - -/* Line 1806 of yacc.c */ -#line 714 "configfile.y" +#line 714 "configfile.y" /* yacc.c:1646 */ { - errbuff = addScope (currScope,(yyvsp[(2) - (3)].name),newScope ("group")) ; - free ((yyvsp[(2) - (3)].name)) ; + errbuff = addScope (currScope,(yyvsp[-1].name),newScope ("group")) ; + free ((yyvsp[-1].name)) ; if (errbuff != NULL) YYABORT ; } +#line 1960 "y.tab.c" /* yacc.c:1646 */ break; case 11: - -/* Line 1806 of yacc.c */ -#line 718 "configfile.y" +#line 718 "configfile.y" /* yacc.c:1646 */ { currScope = currScope->parent ; } +#line 1968 "y.tab.c" /* yacc.c:1646 */ break; case 12: - -/* Line 1806 of yacc.c */ -#line 721 "configfile.y" +#line 721 "configfile.y" /* yacc.c:1646 */ { errbuff = xmalloc (strlen(UNKNOWN_SCOPE_TYPE) + 15 + - strlen ((yyvsp[(1) - (3)].name))) ; - sprintf (errbuff,UNKNOWN_SCOPE_TYPE,lineCount,(yyvsp[(1) - (3)].name)) ; - free ((yyvsp[(1) - (3)].name)) ; - free ((yyvsp[(2) - (3)].name)) ; + strlen ((yyvsp[-2].name))) ; + sprintf (errbuff,UNKNOWN_SCOPE_TYPE,lineCount,(yyvsp[-2].name)) ; + free ((yyvsp[-2].name)) ; + free ((yyvsp[-1].name)) ; YYABORT ; } +#line 1981 "y.tab.c" /* yacc.c:1646 */ break; case 13: - -/* Line 1806 of yacc.c */ -#line 729 "configfile.y" +#line 729 "configfile.y" /* yacc.c:1646 */ { - if ((errbuff = keyOk((yyvsp[(1) - (1)].name))) != NULL) { + if ((errbuff = keyOk((yyvsp[0].name))) != NULL) { YYABORT ; } else - key = (yyvsp[(1) - (1)].name) ; + key = (yyvsp[0].name) ; } +#line 1992 "y.tab.c" /* yacc.c:1646 */ break; case 15: - -/* Line 1806 of yacc.c */ -#line 736 "configfile.y" +#line 736 "configfile.y" /* yacc.c:1646 */ { - if ((errbuff = addString (currScope, key, (yyvsp[(1) - (1)].name))) != NULL) + if ((errbuff = addString (currScope, key, (yyvsp[0].name))) != NULL) YYABORT ; free (key) ; - free ((yyvsp[(1) - (1)].name)) ; + free ((yyvsp[0].name)) ; } +#line 2003 "y.tab.c" /* yacc.c:1646 */ break; case 16: - -/* Line 1806 of yacc.c */ -#line 742 "configfile.y" +#line 742 "configfile.y" /* yacc.c:1646 */ { - if ((errbuff = addInteger(currScope, key, (yyvsp[(1) - (1)].integer))) != NULL) + if ((errbuff = addInteger(currScope, key, (yyvsp[0].integer))) != NULL) YYABORT; free (key) ; } +#line 2013 "y.tab.c" /* yacc.c:1646 */ break; case 17: - -/* Line 1806 of yacc.c */ -#line 747 "configfile.y" +#line 747 "configfile.y" /* yacc.c:1646 */ { if ((errbuff = addBoolean (currScope, key, 1)) != NULL) YYABORT ; free (key) ; - free ((yyvsp[(1) - (1)].name)) ; + free ((yyvsp[0].name)) ; } +#line 2024 "y.tab.c" /* yacc.c:1646 */ break; case 18: - -/* Line 1806 of yacc.c */ -#line 753 "configfile.y" +#line 753 "configfile.y" /* yacc.c:1646 */ { if ((errbuff = addBoolean (currScope, key, 0)) != NULL) YYABORT ; free (key) ; - free ((yyvsp[(1) - (1)].name)) ; + free ((yyvsp[0].name)) ; } +#line 2035 "y.tab.c" /* yacc.c:1646 */ break; case 19: - -/* Line 1806 of yacc.c */ -#line 759 "configfile.y" +#line 759 "configfile.y" /* yacc.c:1646 */ { - if ((errbuff = addReal (currScope, key, (yyvsp[(1) - (1)].real))) != NULL) + if ((errbuff = addReal (currScope, key, (yyvsp[0].real))) != NULL) YYABORT ; free (key) ; } +#line 2045 "y.tab.c" /* yacc.c:1646 */ break; case 20: - -/* Line 1806 of yacc.c */ -#line 764 "configfile.y" +#line 764 "configfile.y" /* yacc.c:1646 */ { - if ((errbuff = addString (currScope, key, (yyvsp[(1) - (1)].string))) != NULL) + if ((errbuff = addString (currScope, key, (yyvsp[0].string))) != NULL) YYABORT; free (key) ; } +#line 2055 "y.tab.c" /* yacc.c:1646 */ break; case 21: - -/* Line 1806 of yacc.c */ -#line 769 "configfile.y" +#line 769 "configfile.y" /* yacc.c:1646 */ { - if ((errbuff = addChar (currScope, key, (yyvsp[(1) - (1)].chr))) != NULL) + if ((errbuff = addChar (currScope, key, (yyvsp[0].chr))) != NULL) YYABORT ; free (key) ; } +#line 2065 "y.tab.c" /* yacc.c:1646 */ break; - -/* Line 1806 of yacc.c */ -#line 2239 "y.tab.c" +#line 2069 "y.tab.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -2257,7 +2087,7 @@ yyreduce: *++yyvsp = yyval; - /* Now `shift' the result of the reduction. Determine what state + /* 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. */ @@ -2272,9 +2102,9 @@ yyreduce: goto yynewstate; -/*------------------------------------. -| yyerrlab -- here on detecting error | -`------------------------------------*/ +/*--------------------------------------. +| yyerrlab -- here on detecting error. | +`--------------------------------------*/ yyerrlab: /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ @@ -2325,20 +2155,20 @@ yyerrlab: if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an - error, discard it. */ + error, discard it. */ if (yychar <= YYEOF) - { - /* Return failure if at end of input. */ - if (yychar == YYEOF) - YYABORT; - } + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } else - { - yydestruct ("Error: discarding", - yytoken, &yylval); - yychar = YYEMPTY; - } + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } } /* Else will try to reuse lookahead token after shifting the error @@ -2357,7 +2187,7 @@ yyerrorlab: if (/*CONSTCOND*/ 0) goto yyerrorlab; - /* Do not reclaim the symbols of the rule which action triggered + /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; @@ -2370,35 +2200,37 @@ yyerrorlab: | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ + yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;) { yyn = yypact[yystate]; if (!yypact_value_is_default (yyn)) - { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) - { - yyn = yytable[yyn]; - if (0 < yyn) - break; - } - } + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) - YYABORT; + YYABORT; yydestruct ("Error: popping", - yystos[yystate], yyvsp); + yystos[yystate], yyvsp); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); } + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END /* Shift the error token. */ @@ -2422,7 +2254,7 @@ yyabortlab: yyresult = 1; goto yyreturn; -#if !defined(yyoverflow) || YYERROR_VERBOSE +#if !defined yyoverflow || YYERROR_VERBOSE /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ @@ -2441,14 +2273,14 @@ yyreturn: yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval); } - /* Do not reclaim the symbols of the rule which action triggered + /* Do not reclaim the symbols of the rule whose action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp); + yystos[*yyssp], yyvsp); YYPOPSTACK (1); } #ifndef yyoverflow @@ -2459,14 +2291,9 @@ yyreturn: if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); #endif - /* Make sure YYID is used. */ - return YYID (yyresult); + return yyresult; } - - - -/* Line 2067 of yacc.c */ -#line 776 "configfile.y" +#line 776 "configfile.y" /* yacc.c:1906 */ int yyerror (const char *s) @@ -2765,4 +2592,3 @@ int main (int argc, char **argv) { return 0 ; } #endif /* defined (WANT_MAIN) */ - diff -Nurp inn-2.6.0/innfeed/config_y.h inn-2.6.1/innfeed/config_y.h --- inn-2.6.0/innfeed/config_y.h 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/innfeed/config_y.h 2016-11-27 06:03:42.000000000 -0800 @@ -1,19 +1,19 @@ -/* A Bison parser, made by GNU Bison 2.5. */ +/* A Bison parser, made by GNU Bison 3.0.2. */ /* Bison interface for Yacc-like parsers in C - - Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc. - + + Copyright (C) 1984, 1989-1990, 2000-2013 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 the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program. If not, see . */ @@ -26,33 +26,41 @@ special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. - + This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ +#ifndef YY_YY_Y_TAB_H_INCLUDED +# define YY_YY_Y_TAB_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int yydebug; +#endif -/* Tokens. */ +/* Token type. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - PEER = 258, - GROUP = 259, - IVAL = 260, - RVAL = 261, - NAME = 262, - XSTRING = 263, - SCOPE = 264, - COLON = 265, - LBRACE = 266, - RBRACE = 267, - TRUEBVAL = 268, - FALSEBVAL = 269, - CHAR = 270, - WORD = 271, - IP_ADDRESS = 272 - }; + enum yytokentype + { + PEER = 258, + GROUP = 259, + IVAL = 260, + RVAL = 261, + NAME = 262, + XSTRING = 263, + SCOPE = 264, + COLON = 265, + LBRACE = 266, + RBRACE = 267, + TRUEBVAL = 268, + FALSEBVAL = 269, + CHAR = 270, + WORD = 271, + IP_ADDRESS = 272 + }; #endif /* Tokens. */ #define PEER 258 @@ -71,15 +79,12 @@ #define WORD 271 #define IP_ADDRESS 272 - - - +/* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -typedef union YYSTYPE +typedef union YYSTYPE YYSTYPE; +union YYSTYPE { - -/* Line 2068 of yacc.c */ -#line 657 "configfile.y" +#line 657 "configfile.y" /* yacc.c:1909 */ scope *scp ; value *val ; @@ -89,16 +94,15 @@ typedef union YYSTYPE char *string ; char chr ; - - -/* Line 2068 of yacc.c */ -#line 96 "y.tab.h" -} YYSTYPE; +#line 98 "y.tab.h" /* yacc.c:1909 */ +}; # define YYSTYPE_IS_TRIVIAL 1 -# define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 #endif + extern YYSTYPE yylval; +int yyparse (void); +#endif /* !YY_YY_Y_TAB_H_INCLUDED */ diff -Nurp inn-2.6.0/innfeed/configfile.y inn-2.6.1/innfeed/configfile.y --- inn-2.6.0/innfeed/configfile.y 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/innfeed/configfile.y 2016-11-27 06:03:42.000000000 -0800 @@ -1,5 +1,5 @@ %{ -/* $Id: configfile.y 9363 2011-08-21 23:22:01Z eagle $ +/* $Id: configfile.y 10124 2016-11-26 21:08:57Z iulius $ ** ** A yacc input file for the innfeed config file. ** @@ -151,7 +151,7 @@ char *addInteger (scope *s, const char * if ((error = checkName (currScope,name)) != NULL) return error ; - v = (value *) calloc (1,sizeof (value)) ; + v = (value *) xcalloc (1,sizeof (value)) ; v->name = xstrdup (name) ; v->type = intval ; v->v.int_val = val ; @@ -169,7 +169,7 @@ char *addChar (scope *s, const char *nam if ((error = checkName (currScope,name)) != NULL) return error ; - v = (value *) calloc (1,sizeof (value)) ; + v = (value *) xcalloc (1,sizeof (value)) ; v->name = xstrdup (name) ; v->type = charval ; v->v.char_val = val ; @@ -187,7 +187,7 @@ char *addBoolean (scope *s, const char * if ((error = checkName (currScope,name)) != NULL) return error ; - v = (value *) calloc (1,sizeof (value)) ; + v = (value *) xcalloc (1,sizeof (value)) ; v->name = xstrdup (name) ; v->type = boolval ; v->v.bool_val = val ; @@ -205,7 +205,7 @@ char *addReal (scope *s, const char *nam if ((error = checkName (currScope,name)) != NULL) return error ; - v = (value *) calloc (1,sizeof (value)) ; + v = (value *) xcalloc (1,sizeof (value)) ; v->name = xstrdup (name) ; v->type = realval ; v->v.real_val = val ; @@ -223,7 +223,7 @@ char *addString (scope *s, const char *n if ((error = checkName (currScope,name)) != NULL) return error ; - v = (value *) calloc (1,sizeof (value)) ; + v = (value *) xcalloc (1,sizeof (value)) ; v->name = xstrdup (name) ; v->type = stringval ; v->v.charp_val = xstrdup (val) ; @@ -404,13 +404,13 @@ static void addValue (scope *s, value *v { if (s->values == 0) { - s->values = (value **) calloc (10,sizeof (value *)) ; + s->values = (value **) xcalloc (10,sizeof (value *)) ; s->value_count = 10 ; } else { s->value_count += 10 ; - s->values = (value **) realloc (s->values, + s->values = (value **) xrealloc (s->values, sizeof (value *) * s->value_count); } } @@ -428,7 +428,7 @@ static char *addScope (scope *s, const c if ((error = checkName (s,name)) != NULL) return error ; - v = (value *) calloc (1,sizeof (value)) ; + v = (value *) xcalloc (1,sizeof (value)) ; v->name = xstrdup (name) ; v->type = scopeval ; v->v.scope_val = val ; @@ -525,7 +525,7 @@ static scope *newScope (const char *type scope *t ; int i ; - t = (scope *) calloc (1,sizeof (scope)) ; + t = (scope *) xcalloc (1,sizeof (scope)) ; t->parent = NULL ; t->scope_type = xstrdup (type) ; diff -Nurp inn-2.6.0/innfeed/connection.c inn-2.6.1/innfeed/connection.c --- inn-2.6.0/innfeed/connection.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/innfeed/connection.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: connection.c 9926 2015-08-08 17:08:02Z iulius $ +/* $Id: connection.c 10009 2016-05-05 12:39:19Z iulius $ ** ** The implementation of the innfeed Connection class. ** @@ -1089,7 +1089,7 @@ void gPrintCxnInfo (FILE *fp, unsigned i indent [i] = ' ' ; indent [i] = '\0' ; - fprintf (fp,"%sGlobal Connection list : (count %d) {\n", + fprintf (fp,"%sGlobal Connection list : (count %u) {\n", indent,gCxnCount) ; for (cxn = gCxnList ; cxn != NULL ; cxn = cxn->next) printCxnInfo (cxn,fp,indentAmt + INDENT_INCR) ; @@ -1117,10 +1117,10 @@ void printCxnInfo (Connection cxn, FILE fprintf (fp,"%s host : %p\n",indent, (void *) cxn->myHost) ; fprintf (fp,"%s endpoint : %p\n",indent, (void *) cxn->myEp) ; fprintf (fp,"%s state : %s\n",indent, stateToString (cxn->state)) ; - fprintf (fp,"%s ident : %d\n",indent,cxn->ident) ; + fprintf (fp,"%s ident : %u\n",indent,cxn->ident) ; fprintf (fp,"%s ip-name : %s\n", indent, cxn->ipName) ; - fprintf (fp,"%s port-number : %d\n",indent,cxn->port) ; - fprintf (fp,"%s max-checks : %d\n",indent,cxn->maxCheck) ; + fprintf (fp,"%s port-number : %u\n",indent,cxn->port) ; + fprintf (fp,"%s max-checks : %u\n",indent,cxn->maxCheck) ; fprintf (fp,"%s does-streaming : %s\n",indent, boolToString (cxn->doesStreaming)) ; fprintf (fp,"%s authenticated : %s\n",indent, @@ -1131,14 +1131,14 @@ void printCxnInfo (Connection cxn, FILE boolToString (cxn->needsChecks)) ; fprintf (fp,"%s time-connected : %ld\n",indent,(long) cxn->timeCon) ; - fprintf (fp,"%s articles from INN : %d\n",indent,cxn->artsTaken) ; - fprintf (fp,"%s articles offered : %d\n",indent, + fprintf (fp,"%s articles from INN : %u\n",indent,cxn->artsTaken) ; + fprintf (fp,"%s articles offered : %u\n",indent, cxn->checksIssued) ; - fprintf (fp,"%s articles refused : %d\n",indent, + fprintf (fp,"%s articles refused : %u\n",indent, cxn->checksRefused) ; - fprintf (fp,"%s articles rejected : %d\n",indent, + fprintf (fp,"%s articles rejected : %u\n",indent, cxn->takesRejected) ; - fprintf (fp,"%s articles accepted : %d\n",indent, + fprintf (fp,"%s articles accepted : %u\n",indent, cxn->takesOkayed) ; fprintf (fp,"%s low-pass upper limit : %0.6f\n", indent, cxn->onThreshold) ; @@ -1149,19 +1149,19 @@ void printCxnInfo (Connection cxn, FILE fprintf (fp,"%s low-pass filter : %0.6f\n", indent, cxn->filterValue) ; - fprintf (fp,"%s article-timeout : %d\n",indent,cxn->articleReceiptTimeout) ; + fprintf (fp,"%s article-timeout : %u\n",indent,cxn->articleReceiptTimeout) ; fprintf (fp,"%s article-callback : %d\n",indent,cxn->artReceiptTimerId) ; - fprintf (fp,"%s response-timeout : %d\n",indent,cxn->readTimeout) ; + fprintf (fp,"%s response-timeout : %u\n",indent,cxn->readTimeout) ; fprintf (fp,"%s response-callback : %d\n",indent,cxn->readBlockedTimerId) ; - fprintf (fp,"%s write-timeout : %d\n",indent,cxn->writeTimeout) ; + fprintf (fp,"%s write-timeout : %u\n",indent,cxn->writeTimeout) ; fprintf (fp,"%s write-callback : %d\n",indent,cxn->writeBlockedTimerId) ; - fprintf (fp,"%s flushTimeout : %d\n",indent,cxn->flushTimeout) ; + fprintf (fp,"%s flushTimeout : %u\n",indent,cxn->flushTimeout) ; fprintf (fp,"%s flushTimerId : %d\n",indent,cxn->flushTimerId) ; - fprintf (fp,"%s reopen wait : %d\n",indent,cxn->sleepTimeout) ; + fprintf (fp,"%s reopen wait : %u\n",indent,cxn->sleepTimeout) ; fprintf (fp,"%s reopen id : %d\n",indent,cxn->sleepTimerId) ; fprintf (fp,"%s CHECK queue {\n",indent) ; diff -Nurp inn-2.6.0/innfeed/host.c inn-2.6.1/innfeed/host.c --- inn-2.6.0/innfeed/host.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/innfeed/host.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: host.c 9897 2015-06-14 10:10:37Z iulius $ +/* $Id: host.c 10009 2016-05-05 12:39:19Z iulius $ ** ** The implementation of the innfeed Host class. ** @@ -1277,7 +1277,7 @@ void gPrintHostInfo (FILE *fp, unsigned indent [i] = ' ' ; indent [i] = '\0' ; - fprintf (fp,"%sGlobal Host list : (count %d) {\n",indent,gHostCount) ; + fprintf (fp,"%sGlobal Host list : (count %u) {\n",indent,gHostCount) ; for (h = gHostList ; h != NULL ; h = h->next) printHostInfo (h,fp,indentAmt + INDENT_INCR) ; @@ -1292,31 +1292,31 @@ void printHostInfo (Host host, FILE *fp, char indent [INDENT_BUFFER_SIZE] ; unsigned int i ; ProcQElem qe ; - double cnt = (host->blCount) ? (host->blCount) : 1.0; + double cnt ; for (i = 0 ; i < MIN(INDENT_BUFFER_SIZE - 1,indentAmt) ; i++) indent [i] = ' ' ; indent [i] = '\0' ; - fprintf (fp,"%sHost : %p {\n",indent,(void *) host) ; + if (host == NULL) { + fprintf(fp, "%sHost : NULL {\n%s}\n", indent, indent); + return; + } - if (host == NULL) - { - fprintf (fp,"%s}\n",indent) ; - return ; - } - + cnt = (host->blCount) ? (host->blCount) : 1.0; + + fprintf (fp,"%sHost : %p {\n", indent, (void *) host) ; fprintf (fp,"%s peer-name : %s\n",indent,host->params->peerName) ; fprintf (fp,"%s ip-name : %s\n",indent,host->params->ipName) ; fprintf (fp,"%s bindaddress : %s\n",indent, host->params->bindAddr ? host->params->bindAddr : "any") ; fprintf (fp,"%s bindaddress6 : %s\n",indent, host->params->bindAddr6 ? host->params->bindAddr6 : "any") ; - fprintf (fp,"%s abs-max-connections : %d\n",indent, + fprintf (fp,"%s abs-max-connections : %u\n",indent, host->params->absMaxConnections) ; - fprintf (fp,"%s active-connections : %d\n",indent,host->activeCxns) ; - fprintf (fp,"%s sleeping-connections : %d\n",indent,host->sleepingCxns) ; - fprintf (fp,"%s initial-connections : %d\n",indent, + fprintf (fp,"%s active-connections : %u\n",indent,host->activeCxns) ; + fprintf (fp,"%s sleeping-connections : %u\n",indent,host->sleepingCxns) ; + fprintf (fp,"%s initial-connections : %u\n",indent, host->params->initialConnections) ; fprintf (fp,"%s want-streaming : %s\n",indent, boolToString (host->params->wantStreaming)) ; @@ -1326,15 +1326,15 @@ void printHostInfo (Host host, FILE *fp, boolToString (host->params->minQueueCxn)) ; fprintf (fp,"%s remote-streams : %s\n",indent, boolToString (host->remoteStreams)) ; - fprintf (fp,"%s max-checks : %d\n",indent,host->params->maxChecks) ; - fprintf (fp,"%s article-timeout : %d\n",indent, + fprintf (fp,"%s max-checks : %u\n",indent,host->params->maxChecks) ; + fprintf (fp,"%s article-timeout : %u\n",indent, host->params->articleTimeout) ; - fprintf (fp,"%s response-timeout : %d\n",indent, + fprintf (fp,"%s response-timeout : %u\n",indent, host->params->responseTimeout) ; - fprintf (fp,"%s close-period : %d\n",indent, + fprintf (fp,"%s close-period : %u\n",indent, host->params->closePeriod) ; - fprintf (fp,"%s port : %d\n",indent,host->params->portNum) ; - fprintf (fp,"%s dynamic-method : %d\n",indent, + fprintf (fp,"%s port : %u\n",indent,host->params->portNum) ; + fprintf (fp,"%s dynamic-method : %u\n",indent, host->params->dynamicMethod) ; fprintf (fp,"%s dynamic-backlog-filter : %2.1f\n",indent, host->params->dynBacklogFilter) ; @@ -1348,13 +1348,13 @@ void printHostInfo (Host host, FILE *fp, host->params->lowPassLow) ; fprintf (fp,"%s no-check filter : %2.1f\n",indent, host->params->lowPassFilter) ; - fprintf (fp,"%s backlog-limit : %d\n",indent, + fprintf (fp,"%s backlog-limit : %u\n",indent, host->params->backlogLimit) ; - fprintf (fp,"%s backlog-limit-highwater : %d\n",indent, + fprintf (fp,"%s backlog-limit-highwater : %u\n",indent, host->params->backlogLimitHigh) ; fprintf (fp,"%s backlog-factor : %2.1f\n",indent, host->params->backlogFactor) ; - fprintf (fp,"%s max-connections : %d\n",indent, + fprintf (fp,"%s max-connections : %u\n",indent, host->maxConnections) ; fprintf (fp,"%s backlog-feed-first : %s\n",indent, boolToString (host->params->backlogFeedFirst)) ; @@ -1364,8 +1364,8 @@ void printHostInfo (Host host, FILE *fp, fprintf (fp,"%s ChkCxns-id : %d\n",indent,host->ChkCxnsId) ; fprintf (fp,"%s deferred-id : %d\n",indent,host->deferredId) ; fprintf (fp,"%s backed-up : %s\n",indent,boolToString (host->backedUp)); - fprintf (fp,"%s backlog : %d\n",indent,host->backlog) ; - fprintf (fp,"%s deferLen : %d\n",indent,host->deferLen) ; + fprintf (fp,"%s backlog : %u\n",indent,host->backlog) ; + fprintf (fp,"%s deferLen : %u\n",indent,host->deferLen) ; fprintf (fp,"%s loggedModeOn : %s\n",indent, boolToString (host->loggedModeOn)) ; fprintf (fp,"%s loggedModeOff : %s\n",indent, @@ -1374,47 +1374,47 @@ void printHostInfo (Host host, FILE *fp, boolToString (host->loggedBacklog)) ; fprintf (fp,"%s streaming-type changed : %s\n",indent, boolToString (host->notifiedChangedRemBlckd)) ; - fprintf (fp,"%s articles offered : %d\n",indent,host->artsOffered) ; - fprintf (fp,"%s articles accepted : %d\n",indent,host->artsAccepted) ; - fprintf (fp,"%s articles not wanted : %d\n",indent, + fprintf (fp,"%s articles offered : %u\n",indent,host->artsOffered) ; + fprintf (fp,"%s articles accepted : %u\n",indent,host->artsAccepted) ; + fprintf (fp,"%s articles not wanted : %u\n",indent, host->artsNotWanted) ; - fprintf (fp,"%s articles rejected : %d\n",indent,host->artsRejected); - fprintf (fp,"%s articles deferred : %d\n",indent,host->artsDeferred) ; - fprintf (fp,"%s articles missing : %d\n",indent,host->artsMissing) ; - fprintf (fp,"%s articles spooled : %d\n",indent,host->artsToTape) ; - fprintf (fp,"%s because of queue overflow : %d\n",indent, + fprintf (fp,"%s articles rejected : %u\n",indent,host->artsRejected); + fprintf (fp,"%s articles deferred : %u\n",indent,host->artsDeferred) ; + fprintf (fp,"%s articles missing : %u\n",indent,host->artsMissing) ; + fprintf (fp,"%s articles spooled : %u\n",indent,host->artsToTape) ; + fprintf (fp,"%s because of queue overflow : %u\n",indent, host->artsQueueOverflow) ; - fprintf (fp,"%s when the we closed the host : %d\n",indent, + fprintf (fp,"%s when the we closed the host : %u\n",indent, host->artsHostClose) ; - fprintf (fp,"%s because the host was asleep : %d\n",indent, + fprintf (fp,"%s because the host was asleep : %u\n",indent, host->artsHostSleep) ; - fprintf (fp,"%s articles unspooled : %d\n",indent,host->artsFromTape) ; - fprintf (fp,"%s articles requeued from dropped connections : %d\n",indent, + fprintf (fp,"%s articles unspooled : %u\n",indent,host->artsFromTape) ; + fprintf (fp,"%s articles requeued from dropped connections : %u\n",indent, host->artsCxnDrop) ; - fprintf (fp,"%s process articles offered : %d\n",indent, + fprintf (fp,"%s process articles offered : %u\n",indent, host->gArtsOffered) ; - fprintf (fp,"%s process articles accepted : %d\n",indent, + fprintf (fp,"%s process articles accepted : %u\n",indent, host->gArtsAccepted) ; - fprintf (fp,"%s process articles not wanted : %d\n",indent, + fprintf (fp,"%s process articles not wanted : %u\n",indent, host->gArtsNotWanted) ; - fprintf (fp,"%s process articles rejected : %d\n",indent, + fprintf (fp,"%s process articles rejected : %u\n",indent, host->gArtsRejected); - fprintf (fp,"%s process articles deferred : %d\n",indent, + fprintf (fp,"%s process articles deferred : %u\n",indent, host->gArtsDeferred) ; - fprintf (fp,"%s process articles missing : %d\n",indent, + fprintf (fp,"%s process articles missing : %u\n",indent, host->gArtsMissing) ; - fprintf (fp,"%s process articles spooled : %d\n",indent, + fprintf (fp,"%s process articles spooled : %u\n",indent, host->gArtsToTape) ; - fprintf (fp,"%s because of queue overflow : %d\n",indent, + fprintf (fp,"%s because of queue overflow : %u\n",indent, host->gArtsQueueOverflow) ; - fprintf (fp,"%s when the we closed the host : %d\n",indent, + fprintf (fp,"%s when the we closed the host : %u\n",indent, host->gArtsHostClose) ; - fprintf (fp,"%s because the host was asleep : %d\n",indent, + fprintf (fp,"%s because the host was asleep : %u\n",indent, host->gArtsHostSleep) ; - fprintf (fp,"%s process articles unspooled : %d\n",indent, + fprintf (fp,"%s process articles unspooled : %u\n",indent, host->gArtsFromTape) ; - fprintf (fp,"%s process articles requeued from dropped connections : %d\n", + fprintf (fp,"%s process articles requeued from dropped connections : %u\n", indent, host->gArtsCxnDrop) ; fprintf (fp,"%s average (mean) defer length : %.1f\n", indent, @@ -1518,13 +1518,13 @@ void printHostInfo (Host host, FILE *fp, fprintf (fp,"%s Active Connections {\n%s ",indent,indent) ; for (i = 0 ; i < host->maxConnections ; i++) if (host->cxnActive[i]) - fprintf (fp," [%d:%p]",i,(void *) host->connections[i]) ; + fprintf (fp," [%u:%p]",i,(void *) host->connections[i]) ; fprintf (fp,"\n%s }\n",indent) ; fprintf (fp,"%s Sleeping Connections {\n%s ",indent,indent) ; for (i = 0 ; i < host->maxConnections ; i++) if (host->cxnSleeping[i]) - fprintf (fp," [%d:%p]",i,(void *) host->connections[i]) ; + fprintf (fp," [%u:%p]",i,(void *) host->connections[i]) ; fprintf (fp,"\n%s }\n",indent) ; fprintf (fp,"%s}\n",indent) ; @@ -3297,7 +3297,7 @@ static void hostLogStatus (void) INN_VERSION_STRING,(int) myPid,startTime,timeString) ; fprintf (fp,"Stats period: %-5ld Stats reset: %ld\n", (long) statsPeriod, (long) statsResetPeriod); - fprintf (fp,"(peers: %d active-cxns: %d sleeping-cxns: %d idle-cxns: %d)\n\n", + fprintf (fp,"(peers: %u active-cxns: %u sleeping-cxns: %u idle-cxns: %u)\n\n", peerNum, actConn, slpConn,(maxcon - (actConn + slpConn))) ; fprintf (fp,"Configuration file: %s\n\n",configFile) ; @@ -3331,23 +3331,23 @@ Default peer configuration parameters: */ fprintf(fp,"%sDefault peer configuration parameters:%s\n", genHtml ? "" : "", genHtml ? "" : "") ; - fprintf(fp," article timeout: %-5d initial connections: %d\n", + fprintf(fp," article timeout: %-5u initial connections: %u\n", defaultParams->articleTimeout, defaultParams->initialConnections) ; - fprintf(fp," response timeout: %-5d max connections: %d\n", + fprintf(fp," response timeout: %-5u max connections: %u\n", defaultParams->responseTimeout, defaultParams->absMaxConnections) ; - fprintf(fp," reconnection time: %-5d max reconnection time: %d\n", + fprintf(fp," reconnection time: %-5u max reconnection time: %u\n", init_reconnect_period, max_reconnect_period); - fprintf(fp," close period: %-5d max checks: %d\n", + fprintf(fp," close period: %-5u max checks: %u\n", defaultParams->closePeriod, defaultParams->maxChecks) ; - fprintf(fp," DNS retry period: %-5d DNS expire period: %d\n", + fprintf(fp," DNS retry period: %-5u DNS expire period: %u\n", dnsRetPeriod, dnsExpPeriod); - fprintf(fp," port num: %-5d force IPv4: %s\n", + fprintf(fp," port num: %-5u force IPv4: %s\n", defaultParams->portNum, defaultParams->forceIPv4 ? "true " : "false"); - fprintf(fp," want streaming: %-5s dynamic method: %d\n", + fprintf(fp," want streaming: %-5s dynamic method: %u\n", defaultParams->wantStreaming ? "true " : "false", defaultParams->dynamicMethod) ; fprintf(fp," no-check on: %-2.1f%% dynamic backlog low: %-2.1f%%\n", @@ -3359,10 +3359,10 @@ Default peer configuration parameters: fprintf(fp," no-check filter: %-2.1f dynamic backlog filter: %-2.1f\n", defaultParams->lowPassFilter, defaultParams->dynBacklogFilter) ; - fprintf(fp," backlog limit low: %-7d drop-deferred: %s\n", + fprintf(fp," backlog limit low: %-7u drop-deferred: %s\n", defaultParams->backlogLimit, defaultParams->dropDeferred ? "true " : "false"); - fprintf(fp," backlog limit high: %-7d min-queue-cxn: %s\n", + fprintf(fp," backlog limit high: %-7u min-queue-cxn: %s\n", defaultParams->backlogLimitHigh, defaultParams->minQueueCxn ? "true " : "false"); fprintf(fp," backlog feed first: %s\n", @@ -3490,7 +3490,7 @@ static void hostPrintStatus (Host host, fputc ('\n',fp) ; if (host->ipAddrs) { - int i; + size_t i; char ip_addr[INET6_ADDRSTRLEN]; const char *family; @@ -3511,45 +3511,46 @@ static void hostPrintStatus (Host host, network_sockaddr_sprint(ip_addr, sizeof(ip_addr), host->ipAddrs[i]); - fprintf(fp, " Addr %-2u: %-4.4s %s\n", i+1, family, ip_addr); + fprintf(fp, " Addr %-2lu: %-4.4s %s\n", (unsigned long) (i+1), + family, ip_addr); } } - fprintf (fp, " seconds: %-7ld art. timeout: %-5d ip name: %s\n", + fprintf (fp, " seconds: %-7ld art. timeout: %-5u ip name: %s\n", host->firstConnectTime > 0 ? (long)(now - host->firstConnectTime) : 0, host->params->articleTimeout, host->params->ipName) ; - fprintf (fp, " offered: %-7ld resp. timeout: %-5d port: %d\n", + fprintf (fp, " offered: %-7ld resp. timeout: %-5u port: %u\n", (long) host->gArtsOffered, host->params->responseTimeout, host->params->portNum); - fprintf (fp, " accepted: %-7ld want streaming: %s active cxns: %d\n", + fprintf (fp, " accepted: %-7ld want streaming: %s active cxns: %u\n", (long) host->gArtsAccepted, (host->params->wantStreaming ? "yes" : "no "), host->activeCxns) ; - fprintf (fp, " refused: %-7ld is streaming: %s sleeping cxns: %d\n", + fprintf (fp, " refused: %-7ld is streaming: %s sleeping cxns: %u\n", (long) host->gArtsNotWanted, (host->remoteStreams ? "yes" : "no "), host->sleepingCxns) ; - fprintf (fp, " rejected: %-7ld max checks: %-5d initial cxns: %d\n", + fprintf (fp, " rejected: %-7ld max checks: %-5u initial cxns: %u\n", (long) host->gArtsRejected, host->params->maxChecks, host->params->initialConnections) ; - fprintf (fp, " missing: %-7ld no-check on: %-3.1f%% idle cxns: %d\n", + fprintf (fp, " missing: %-7ld no-check on: %-3.1f%% idle cxns: %u\n", (long) host->gArtsMissing, host->params->lowPassHigh, host->maxConnections - (host->activeCxns + host->sleepingCxns)) ; - fprintf (fp, " deferred: %-7ld no-check off: %-3.1f%% max cxns: %d/%d\n", + fprintf (fp, " deferred: %-7ld no-check off: %-3.1f%% max cxns: %u/%u\n", (long) host->gArtsDeferred, host->params->lowPassLow, host->maxConnections, host->params->absMaxConnections) ; - fprintf (fp, " requeued: %-7ld no-check fltr: %-3.1f queue length: %-3.1f/%d\n", + fprintf (fp, " requeued: %-7ld no-check fltr: %-3.1f queue length: %-3.1f/%u\n", (long) host->gArtsCxnDrop, host->params->lowPassFilter, (double)host->blAccum / cnt, hostHighwater) ; - fprintf (fp, " spooled: %-7ld dynamic method: %-5d empty: %-3.1f%%\n", + fprintf (fp, " spooled: %-7ld dynamic method: %-5u empty: %-3.1f%%\n", (long) host->gArtsToTape, host->params->dynamicMethod, 100.0 * host->blNone / cnt) ; @@ -3607,7 +3608,7 @@ static void hostPrintStatus (Host host, fprintf(fp, " refused: %5.2f art/s rejected: %5.2f art/s, %.3g %s/s\n", rr, jr, jrs, tjrs); } - fprintf(fp, " missing %d spooled %d\n", + fprintf(fp, " missing %u spooled %u\n", host->artsMissing, host->artsToTape); } diff -Nurp inn-2.6.0/innfeed/imap_connection.c inn-2.6.1/innfeed/imap_connection.c --- inn-2.6.0/innfeed/imap_connection.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/innfeed/imap_connection.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: imap_connection.c 9911 2015-07-04 21:32:56Z iulius $ +/* $Id: imap_connection.c 10063 2016-09-04 12:53:12Z iulius $ ** ** Feed articles to an IMAP server via LMTP and IMAP. ** @@ -3637,6 +3637,7 @@ static void addrcpt(char *newrcpt, int n int size = strlen(*out); int fsize = size; int newsize = size + 9+strlen(deliver_rcpt_to)+newrcptlen+3; + int rc; char c; /* see if we need to grow the string */ @@ -3650,9 +3651,14 @@ static void addrcpt(char *newrcpt, int n c = newrcpt[newrcptlen]; newrcpt[newrcptlen] = '\0'; -#pragma GCC diagnostic ignored "-Wformat-nonliteral" - size += snprintf((*out) + size, newsize - size, deliver_rcpt_to, newrcpt); -#pragma GCC diagnostic warning "-Wformat-nonliteral" + rc = snprintf((*out) + size, newsize - size, deliver_rcpt_to, newrcpt); + if (rc < 0) { + /* Do nothing. */ + } else if (rc >= newsize - size) { + size = newsize; + } else { + size += rc; + } newrcpt[newrcptlen] = c; strlcpy((*out) + size, ">\r\n", newsize - size); @@ -3715,6 +3721,7 @@ static void addto(char *newrcpt, int new { int size = strlen(*out); int newsize = size + strlen(sep)+1+strlen(deliver_to_header)+newrcptlen+1; + int rc; char c; /* see if we need to grow the string */ @@ -3723,13 +3730,25 @@ static void addto(char *newrcpt, int new (*out) = xrealloc(*out, *outalloc); } - size += snprintf((*out) + size, newsize - size, "%s<", sep); + rc = snprintf((*out) + size, newsize - size, "%s<", sep); + if (rc < 0) { + /* Do nothing. */ + } else if (rc >= newsize - size) { + size = newsize; + } else { + size += rc; + } c = newrcpt[newrcptlen]; newrcpt[newrcptlen] = '\0'; -#pragma GCC diagnostic ignored "-Wformat-nonliteral" - size += snprintf((*out) + size, newsize - size, deliver_to_header,newrcpt); -#pragma GCC diagnostic warning "-Wformat-nonliteral" + rc = snprintf((*out) + size, newsize - size, deliver_to_header,newrcpt); + if (rc < 0) { + /* Do nothing. */ + } else if (rc >= newsize - size) { + size = newsize; + } else { + size += rc; + } newrcpt[newrcptlen] = c; strlcpy((*out) + size, ">", newsize - size); @@ -4560,7 +4579,7 @@ void gPrintCxnInfo (FILE *fp, unsigned i indent [i] = ' ' ; indent [i] = '\0' ; - fprintf (fp,"%sGlobal Connection list : (count %d) {\n", + fprintf (fp,"%sGlobal Connection list : (count %u) {\n", indent,gCxnCount) ; for (cxn = gCxnList ; cxn != NULL ; cxn = cxn->next) printCxnInfo (cxn,fp,indentAmt + INDENT_INCR) ; @@ -4583,7 +4602,7 @@ void printCxnInfo (Connection cxn, FILE fprintf (fp,"%s endpoint (lmtp): %p\n",indent, (void *) cxn->lmtp_endpoint) ; fprintf (fp,"%s state (imap) : %s\n",indent, imap_stateToString (cxn->imap_state)) ; fprintf (fp,"%s state (lmtp) : %s\n",indent, lmtp_stateToString (cxn->lmtp_state)) ; - fprintf (fp,"%s ident : %d\n",indent,cxn->ident) ; + fprintf (fp,"%s ident : %u\n",indent,cxn->ident) ; fprintf (fp,"%s ip-name (imap): %s\n", indent, cxn->ServerName) ; fprintf (fp,"%s ip-name (lmtp): %s\n", indent, cxn->ServerName) ; fprintf (fp,"%s port-number (imap) : %d\n",indent,cxn->imap_port) ; @@ -4614,13 +4633,13 @@ void printCxnInfo (Connection cxn, FILE fprintf(fp,"%s remove: yes: %d no: %d\n",indent, cxn->remove_succeeded, cxn->remove_failed); - fprintf (fp,"%s response-timeout : %d\n",indent,cxn->imap_readTimeout) ; + fprintf (fp,"%s response-timeout : %u\n",indent,cxn->imap_readTimeout) ; fprintf (fp,"%s response-callback : %d\n",indent,cxn->imap_readBlockedTimerId) ; - fprintf (fp,"%s write-timeout : %d\n",indent,cxn->imap_writeTimeout) ; + fprintf (fp,"%s write-timeout : %u\n",indent,cxn->imap_writeTimeout) ; fprintf (fp,"%s write-callback : %d\n",indent,cxn->imap_writeBlockedTimerId) ; - fprintf (fp,"%s reopen wait : %d\n",indent,cxn->imap_sleepTimeout) ; + fprintf (fp,"%s reopen wait : %u\n",indent,cxn->imap_sleepTimeout) ; fprintf (fp,"%s reopen id : %d\n",indent,cxn->imap_sleepTimerId) ; fprintf (fp,"%s IMAP queue {\n",indent) ; diff -Nurp inn-2.6.0/innfeed/innlistener.c inn-2.6.1/innfeed/innlistener.c --- inn-2.6.0/innfeed/innlistener.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/innfeed/innlistener.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: innlistener.c 9233 2011-07-09 19:17:21Z iulius $ +/* $Id: innlistener.c 10009 2016-05-05 12:39:19Z iulius $ ** ** The implementation of the innfeed InnListener class. ** @@ -128,7 +128,7 @@ void gPrintListenerInfo (FILE *fp, unsig indent [i] = ' ' ; indent [i] = '\0' ; - fprintf (fp,"%sGlobal InnListener list : %p (count %d) {\n", + fprintf (fp,"%sGlobal InnListener list : %p (count %u) {\n", indent,(void *) listenerList,listenerCount) ; for (p = listenerList ; p != NULL ; p = p->next) printListenerInfo (p,fp,indentAmt + INDENT_INCR) ; diff -Nurp inn-2.6.0/innfeed/main.c inn-2.6.1/innfeed/main.c --- inn-2.6.0/innfeed/main.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/innfeed/main.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: main.c 9926 2015-08-08 17:08:02Z iulius $ +/* $Id: main.c 10009 2016-05-05 12:39:19Z iulius $ ** ** Main routines for the innfeed program. ** @@ -980,7 +980,7 @@ void mainLogStatus (FILE *fp) fprintf (fp," Log file: %s\n",(logFile == NULL ? "(none)" : logFile)); fprintf (fp," Debug level: %-5u Debug shrinking: %s\n", loggingLevel, boolToString(debugShrinking)); - fprintf (fp," Fast exit: %-5s stdio-fdmax: %d\n", + fprintf (fp," Fast exit: %-5s stdio-fdmax: %u\n", boolToString(fastExit), stdioFdMax); fprintf (fp," Mmap: %s\n", boolToString(useMMap)); fprintf (fp,"\n") ; diff -Nurp inn-2.6.0/innfeed/misc.c inn-2.6.1/innfeed/misc.c --- inn-2.6.0/innfeed/misc.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/innfeed/misc.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: misc.c 9911 2015-07-04 21:32:56Z iulius $ +/* $Id: misc.c 10040 2016-07-31 20:01:43Z iulius $ ** ** Helper routines for the innfeed program. ** @@ -593,10 +593,8 @@ char* timeToString(time_t t, char* buffe { static const char defaultFormat[] = "%a %b %d %H:%M:%S %Y" ; const struct tm *const tm = localtime(&t); -#pragma GCC diagnostic ignored "-Wformat-nonliteral" strftime (buffer, size, timeToStringFormat == 0 ? defaultFormat : timeToStringFormat, tm); -#pragma GCC diagnostic warning "-Wformat-nonliteral" return buffer; } diff -Nurp inn-2.6.0/lib/Makefile inn-2.6.1/lib/Makefile --- inn-2.6.0/lib/Makefile 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/lib/Makefile 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -## $Id: Makefile 9794 2015-03-17 20:49:15Z iulius $ +## $Id: Makefile 10114 2016-11-06 14:18:27Z iulius $ include ../Makefile.global @@ -8,7 +8,7 @@ include ../Makefile.global # recover from make update. We can't use .OLD extensions for the shared # library since ldconfig will think .OLD sorts after the regular library and # will point the binaries at the old library. -LTVERSION = 3:0:0 +LTVERSION = 4:0:0 top = .. CFLAGS = $(GCFLAGS) @@ -101,7 +101,8 @@ argparse.o: argparse.c ../include/config ../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 \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h buffer.o: buffer.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -115,35 +116,37 @@ cleanfrom.o: cleanfrom.c ../include/conf ../include/inn/defines.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.h + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h clientactive.o: clientactive.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 \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - ../include/inn/nntp.h ../include/inn/paths.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 clientlib.o: clientlib.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 \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - ../include/inn/nntp.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h ../include/inn/nntp.h commands.o: commands.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ ../include/inn/defines.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.h + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h concat.o: concat.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/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.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/concat.h \ + ../include/inn/xmalloc.h conffile.o: conffile.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 \ @@ -151,7 +154,7 @@ conffile.o: conffile.c ../include/config ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/conffile.h \ ../include/portable/macros.h ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.h + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h confparse.o: confparse.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 \ @@ -159,30 +162,31 @@ confparse.o: confparse.c ../include/conf ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/confparse.h \ ../include/inn/hashtab.h ../include/inn/messages.h \ - ../include/inn/vector.h ../include/inn/libinn.h ../include/inn/xmalloc.h \ - ../include/inn/xwrite.h + ../include/inn/vector.h ../include/inn/libinn.h ../include/inn/concat.h \ + ../include/inn/xmalloc.h ../include/inn/xwrite.h daemonize.o: daemonize.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/messages.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h date.o: date.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ ../include/inn/defines.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.h + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h dbz.o: dbz.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/mmap.h \ - ../include/inn/dbz.h ../include/inn/libinn.h ../include/inn/xmalloc.h \ - ../include/inn/xwrite.h ../include/inn/fdflag.h \ + ../include/inn/dbz.h ../include/inn/libinn.h ../include/inn/concat.h \ + ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/fdflag.h \ ../include/inn/portable-socket.h ../include/inn/portable-getaddrinfo.h \ ../include/inn/portable-getnameinfo.h ../include/inn/messages.h \ ../include/inn/innconf.h ../include/inn/mmap.h @@ -192,8 +196,8 @@ defdist.o: defdist.c ../include/config.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 \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - ../include/inn/paths.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h ../include/inn/paths.h dispatch.o: dispatch.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 \ @@ -215,29 +219,30 @@ fdlimit.o: fdlimit.c ../include/config.h ../include/inn/defines.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.h + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h getfqdn.o: getfqdn.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ ../include/inn/defines.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/paths.h + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ + ../include/inn/paths.h getmodaddr.o: getmodaddr.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ ../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 \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - ../include/inn/nntp.h ../include/inn/paths.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 hash.o: hash.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/md5.h \ - ../include/inn/utility.h ../include/inn/libinn.h \ + ../include/inn/utility.h ../include/inn/libinn.h ../include/inn/concat.h \ ../include/inn/xmalloc.h ../include/inn/xwrite.h hashtab.o: hashtab.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ @@ -245,14 +250,15 @@ hashtab.o: hashtab.c ../include/config.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/hashtab.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h headers.o: headers.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ ../include/inn/defines.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.h + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h hex.o: hex.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -266,8 +272,8 @@ innconf.o: innconf.c ../include/config.h ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/confparse.h \ ../include/inn/innconf.h ../include/inn/messages.h \ - ../include/inn/vector.h ../include/inn/libinn.h ../include/inn/xmalloc.h \ - ../include/inn/xwrite.h ../include/inn/paths.h + ../include/inn/vector.h ../include/inn/libinn.h ../include/inn/concat.h \ + ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/paths.h inndcomm.o: inndcomm.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 \ @@ -277,8 +283,8 @@ inndcomm.o: inndcomm.c ../include/config ../include/portable/macros.h ../include/portable/getaddrinfo.h \ ../include/portable/getnameinfo.h ../include/portable/socket-unix.h \ ../include/inn/innconf.h ../include/inn/inndcomm.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - ../include/inn/paths.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h ../include/inn/paths.h list.o: list.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -291,8 +297,8 @@ localopen.o: localopen.c ../include/conf ../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 \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - ../include/inn/nntp.h ../include/inn/paths.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/portable/socket-unix.h lockfile.o: lockfile.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ @@ -300,14 +306,14 @@ lockfile.o: lockfile.c ../include/config ../include/inn/defines.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.h + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h makedir.o: makedir.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ ../include/inn/defines.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.h + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h md5.o: md5.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 \ @@ -320,8 +326,8 @@ messageid.o: messageid.c ../include/conf ../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 \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - ../include/inn/nntp.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h ../include/inn/nntp.h messages.o: messages.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 \ @@ -355,9 +361,10 @@ network-innbind.o: network-innbind.c ../ ../include/portable/stdbool.h ../include/portable/socket.h \ ../include/portable/macros.h ../include/portable/getaddrinfo.h \ ../include/portable/getnameinfo.h ../include/inn/innconf.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - ../include/inn/messages.h ../include/inn/network.h \ - ../include/inn/portable-socket.h ../include/inn/network-innbind.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h ../include/inn/messages.h \ + ../include/inn/network.h ../include/inn/portable-socket.h \ + ../include/inn/network-innbind.h newsuser.o: newsuser.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 \ @@ -375,36 +382,37 @@ nntp.o: nntp.c ../include/config.h ../in ../include/portable/getnameinfo.h ../include/inn/buffer.h \ ../include/inn/innconf.h ../include/inn/network.h \ ../include/inn/portable-socket.h ../include/inn/nntp.h \ - ../include/inn/vector.h ../include/inn/libinn.h ../include/inn/xmalloc.h \ - ../include/inn/xwrite.h + ../include/inn/vector.h ../include/inn/libinn.h ../include/inn/concat.h \ + ../include/inn/xmalloc.h ../include/inn/xwrite.h numbers.o: numbers.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ ../include/inn/defines.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.h + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h qio.o: qio.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ ../include/inn/defines.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/qio.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h radix32.o: radix32.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ ../include/inn/defines.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.h + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h readin.o: readin.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ ../include/inn/defines.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.h + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h remopen.o: remopen.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 \ @@ -413,38 +421,39 @@ remopen.o: remopen.c ../include/config.h ../include/portable/stdbool.h ../include/portable/socket.h \ ../include/portable/macros.h ../include/portable/getaddrinfo.h \ ../include/portable/getnameinfo.h ../include/inn/innconf.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - ../include/inn/network.h ../include/inn/portable-socket.h \ - ../include/inn/nntp.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h ../include/inn/network.h \ + ../include/inn/portable-socket.h ../include/inn/nntp.h reservedfd.o: reservedfd.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ ../include/inn/defines.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.h + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h resource.o: resource.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ ../include/inn/defines.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.h + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h sendarticle.o: sendarticle.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ ../include/inn/defines.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ + ../include/inn/nntp.h sendpass.o: sendpass.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 \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - ../include/inn/nntp.h ../include/inn/paths.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 sequence.o: sequence.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 \ @@ -457,22 +466,23 @@ timer.o: timer.c ../include/config.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/messages.h \ - ../include/inn/timer.h ../include/inn/libinn.h ../include/inn/xmalloc.h \ - ../include/inn/xwrite.h + ../include/inn/timer.h ../include/inn/libinn.h ../include/inn/concat.h \ + ../include/inn/xmalloc.h ../include/inn/xwrite.h tst.o: tst.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/tst.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h uwildmat.o: uwildmat.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ ../include/inn/defines.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.h + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h vector.o: vector.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 \ @@ -486,14 +496,15 @@ wire.o: wire.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 ../include/inn/wire.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h xfopena.o: xfopena.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ ../include/inn/defines.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.h + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h xmalloc.o: xmalloc.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 \ @@ -505,7 +516,8 @@ xsignal.o: xsignal.c ../include/config.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/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h xwrite.o: xwrite.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 \ @@ -668,5 +680,5 @@ perl.o: perl.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 ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.h \ + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ ../include/ppport.h ../include/innperl.h diff -Nurp inn-2.6.0/lib/asprintf.c inn-2.6.1/lib/asprintf.c --- inn-2.6.0/lib/asprintf.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/lib/asprintf.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: asprintf.c 9913 2015-07-07 16:31:52Z iulius $ +/* $Id: asprintf.c 10099 2016-11-04 22:21:59Z iulius $ * * Replacement for a missing asprintf and vasprintf. * @@ -6,7 +6,7 @@ * asprintf and vasprintf for those platforms that don't have them. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Written by Russ Allbery * diff -Nurp inn-2.6.0/lib/buffer.c inn-2.6.1/lib/buffer.c --- inn-2.6.0/lib/buffer.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/lib/buffer.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: buffer.c 9915 2015-07-07 16:36:20Z iulius $ +/* $Id: buffer.c 10105 2016-11-04 22:42:26Z iulius $ * * Counted, reusable memory buffer. * @@ -14,9 +14,10 @@ * used can be set to 0 and left stores the length of the data. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Written by Russ Allbery + * Copyright 2015, 2016 Russ Allbery * Copyright 2011, 2012, 2014 * The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2004, 2005, 2006 @@ -156,13 +157,13 @@ buffer_append_vsprintf(struct buffer *bu va_end(args_copy); if (status < 0) return; - if ((size_t) status + 1 <= avail) { + if ((size_t) status < avail) { buffer->left += status; } else { buffer_resize(buffer, total + status + 1); avail = buffer->size - total; status = vsnprintf(buffer->data + total, avail, format, args); - if (status < 0 || (size_t) status + 1 > avail) + if (status < 0 || (size_t) status >= avail) return; buffer->left += status; } diff -Nurp inn-2.6.0/lib/concat.c inn-2.6.1/lib/concat.c --- inn-2.6.0/lib/concat.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/lib/concat.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,40 +1,54 @@ -/* $Id: concat.c 9767 2014-12-07 21:13:43Z iulius $ -** -** Concatenate strings with dynamic memory allocation. -** -** Written by Russ Allbery -** This work is hereby placed in the public domain by its author. -** -** Usage: -** -** string = concat(string1, string2, ..., (char *) 0); -** path = concatpath(base, name); -** -** Dynamically allocates (using xmalloc) sufficient memory to hold all of -** the strings given and then concatenates them together into that -** allocated memory, returning a pointer to it. Caller is responsible for -** freeing. Assumes xmalloc is available. The last argument must be a -** null pointer (to a char *, if you actually find a platform where it -** matters). -** -** concatpath is similar, except that it only takes two arguments. If the -** second argument begins with / or ./, a copy of it is returned; -** otherwise, the first argument, a slash, and the second argument are -** concatenated together and returned. This is useful for building file -** names where names that aren't fully qualified are qualified with some -** particular directory. -*/ +/* $Id: concat.c 10100 2016-11-04 22:24:26Z iulius $ + * + * Concatenate strings with dynamic memory allocation. + * + * Usage: + * + * string = concat(string1, string2, ..., (char *) 0); + * path = concatpath(base, name); + * + * Dynamically allocates (using xmalloc) sufficient memory to hold all of the + * strings given and then concatenates them together into that allocated + * memory, returning a pointer to it. Caller is responsible for freeing. + * Assumes xmalloc is available. The last argument must be a null pointer (to + * a char *, if you actually find a platform where it matters). + * + * concatpath is similar, except that it only takes two arguments. If the + * second argument begins with / or ./, a copy of it is returned; otherwise, + * the first argument, a slash, and the second argument are concatenated + * together and returned. This is useful for building file names where names + * that aren't fully qualified are qualified with some particular directory. + * + * The canonical version of this file *used to be* maintained in the + * rra-c-util package, which can be found at + * . + * + * Written by Russ Allbery + * + * The authors hereby relinquish any claim to any copyright that they may have + * in this work, whether granted under contract or by operation of law or + * international treaty, and hereby commit to the public, at large, that they + * shall not, at any time in the future, seek to enforce any copyright in this + * work against any person or entity, or prevent any person or entity from + * copying, publishing, distributing or creating derivative works of this + * work. + */ #include "config.h" -#include "inn/libinn.h" +#include "clibrary.h" -#include -#include +#include "inn/concat.h" +#include "inn/xmalloc.h" /* Abbreviation for cleaner code. */ -#define VA_NEXT(var, type) ((var) = (type) va_arg(args, type)) +#define VA_NEXT(var, type) ((var) = (type) va_arg(args, type)) -/* ANSI C requires at least one named parameter. */ + +/* + * Concatenate all of the arguments into a newly allocated string. ANSI C + * requires at least one named parameter, but it's not treated any different + * than the rest. + */ char * concat(const char *first, ...) { @@ -50,10 +64,12 @@ concat(const char *first, ...) va_end(args); length++; - /* Create the string. Doing the copy ourselves avoids useless string - traversals of result, if using strcat, or string, if using strlen to - increment a pointer into result, at the cost of losing the native - optimization of strcat if any. */ + /* + * Create the string. Doing the copy ourselves avoids useless string + * traversals of result, if using strcat, or string, if using strlen to + * increment a pointer into result, at the cost of losing the native + * optimization of strcat if any. + */ result = xmalloc(length); p = result; va_start(args, first); @@ -67,6 +83,10 @@ concat(const char *first, ...) } +/* + * Concatenate name with base, unless name begins with / or ./. Return the + * new string in newly allocated memory. + */ char * concatpath(const char *base, const char *name) { diff -Nurp inn-2.6.0/lib/conffile.c inn-2.6.1/lib/conffile.c --- inn-2.6.0/lib/conffile.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/lib/conffile.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: conffile.c 9582 2013-12-09 21:30:42Z iulius $ +/* $Id: conffile.c 10012 2016-05-05 12:41:10Z iulius $ ** ** Routines for reading in incoming.conf-style config files. */ @@ -70,7 +70,7 @@ static char *CONFgetword(CONFFILE *F) if (*p == '"') { /* double quoted string ? */ p++; do { - for (t = p; (*t != '"' || (*t == '"' && *(t - 1) == '\\')) && + for (t = p; (*t != '"' || *(t - 1) == '\\') && *t != '\0'; t++); if (*t == '\0') { if (strlen(F->buf) >= F->sbuf - 2) diff -Nurp inn-2.6.0/lib/confparse.c inn-2.6.1/lib/confparse.c --- inn-2.6.0/lib/confparse.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/lib/confparse.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: confparse.c 9677 2014-09-05 19:32:31Z iulius $ +/* $Id: confparse.c 10010 2016-05-05 12:40:00Z iulius $ ** ** Parse a standard block-structured configuration file syntax. ** @@ -1125,9 +1125,9 @@ parse_group(struct config_file *file, st } if (token != TOKEN_LBRACE && token != TOKEN_LANGLE) { free(type); + expected = tag != NULL ? "'{' or '<'" : "group tag, '{', or '<'"; if (tag != NULL) free(tag); - expected = tag != NULL ? "'{' or '<'" : "group tag, '{', or '<'"; error_unexpected_token(file, expected); return false; } diff -Nurp inn-2.6.0/lib/date.c inn-2.6.1/lib/date.c --- inn-2.6.0/lib/date.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/lib/date.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: date.c 9082 2010-07-11 09:27:43Z iulius $ +/* $Id: date.c 9971 2015-12-10 20:30:10Z iulius $ ** ** Date parsing and conversion routines. ** @@ -210,7 +210,7 @@ makedate(time_t date, bool local, char * 1 2 3 1234567890123456789012345678901 - Sat, 31 Aug 2002 23:45:18 +0000 + Sat, 31 Aug 2002 23:45:18 -0000 31 characters, plus another character for the trailing nul. The buffer will need to have at least another six characters of space to get the @@ -236,7 +236,10 @@ makedate(time_t date, bool local, char * } else { tmp_tm = gmtime(&realdate); tm = *tmp_tm; - tz_sign = 1; + /* Use "-0000" to indicate that the time was generated on a system + that may be in a local time zone other than Universal Time and + therefore contains no information about the local time zone.*/ + tz_sign = -1; tz_hour_offset = 0; tz_min_offset = 0; } diff -Nurp inn-2.6.0/lib/dbz.c inn-2.6.1/lib/dbz.c --- inn-2.6.0/lib/dbz.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/lib/dbz.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: dbz.c 9935 2015-09-02 12:23:29Z iulius $ +/* $Id: dbz.c 10119 2016-11-09 20:30:01Z iulius $ ** ** dbz database implementation V6.1.1 ** @@ -1731,7 +1731,7 @@ main(int argc, char *argv[]) if (initialize) { RemoveDBZ(history); gettimeofday(&start, NULL); - if (dbzfresh(history, dbzsize(size)) < 0) { + if (!dbzfresh(history, dbzsize(size))) { fprintf(stderr, "cant dbzfresh %s\n", history); exit(1); } @@ -1739,7 +1739,7 @@ main(int argc, char *argv[]) printf("dbzfresh: %d msec\n", timediffms(start, end)); } else { gettimeofday(&start, NULL); - if (dbzinit(history) < 0) { + if (!dbzinit(history)) { fprintf(stderr, "cant dbzinit %s\n", history); exit(1); } diff -Nurp inn-2.6.0/lib/fdflag.c inn-2.6.1/lib/fdflag.c --- inn-2.6.0/lib/fdflag.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/lib/fdflag.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: fdflag.c 9680 2014-09-06 08:07:27Z iulius $ +/* $Id: fdflag.c 10099 2016-11-04 22:21:59Z iulius $ * * Set or clear file descriptor flags. * @@ -6,7 +6,7 @@ * flags like close-on-exec or nonblocking I/O. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Copyright 2008, 2011, 2013 * The Board of Trustees of the Leland Stanford Junior University diff -Nurp inn-2.6.0/lib/getaddrinfo.c inn-2.6.1/lib/getaddrinfo.c --- inn-2.6.0/lib/getaddrinfo.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/lib/getaddrinfo.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: getaddrinfo.c 9883 2015-05-25 10:03:20Z iulius $ +/* $Id: getaddrinfo.c 10130 2016-11-27 13:56:40Z iulius $ * * Replacement for a missing getaddrinfo. * @@ -18,7 +18,7 @@ * support should already support getaddrinfo natively. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Written by Russ Allbery * @@ -217,6 +217,7 @@ gai_addrinfo_new(int socktype, const cha else { ai->ai_canonname = strdup(canonical); if (ai->ai_canonname == NULL) { + /* sin will be freed by freeaddrinfo. */ freeaddrinfo(ai); return NULL; } diff -Nurp inn-2.6.0/lib/getfqdn.c inn-2.6.1/lib/getfqdn.c --- inn-2.6.0/lib/getfqdn.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/lib/getfqdn.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: getfqdn.c 7585 2006-11-21 09:37:51Z eagle $ +/* $Id: getfqdn.c 10012 2016-05-05 12:41:10Z iulius $ ** */ @@ -49,10 +49,13 @@ char *GetFQDN(char *domain) strlcat(temp, ".", sizeof(temp)); hp = gethostbyname(temp); } + if (hp == NULL) { + return NULL; + } #endif /* 0 */ /* First, see if the main name is a FQDN. It should be. */ - if (hp != NULL && strchr(hp->h_name, '.') != NULL) { + if (strchr(hp->h_name, '.') != NULL) { if (strlen(hp->h_name) < sizeof buff - 1) { strlcpy(buff, hp->h_name, sizeof(buff)); return buff; diff -Nurp inn-2.6.0/lib/getmodaddr.c inn-2.6.1/lib/getmodaddr.c --- inn-2.6.0/lib/getmodaddr.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/lib/getmodaddr.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: getmodaddr.c 9911 2015-07-04 21:32:56Z iulius $ +/* $Id: getmodaddr.c 10040 2016-07-31 20:01:43Z iulius $ ** */ @@ -201,9 +201,7 @@ GetModeratorAddress(FILE *FromServer, FI if (*p == '.') *p = '-'; if (IsValidSubmissionTemplate(save)) { -#pragma GCC diagnostic ignored "-Wformat-nonliteral" snprintf(address, sizeof(address), save, name); -#pragma GCC diagnostic warning "-Wformat-nonliteral" break; } } @@ -223,9 +221,7 @@ GetModeratorAddress(FILE *FromServer, FI *p = '-'; if (IsValidSubmissionTemplate(save)) { -#pragma GCC diagnostic ignored "-Wformat-nonliteral" snprintf(address, sizeof(address), save, name); -#pragma GCC diagnostic warning "-Wformat-nonliteral" } else { return NULL; } diff -Nurp inn-2.6.0/lib/getnameinfo.c inn-2.6.1/lib/getnameinfo.c --- inn-2.6.0/lib/getnameinfo.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/lib/getnameinfo.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: getnameinfo.c 9759 2014-12-04 20:11:38Z iulius $ +/* $Id: getnameinfo.c 10105 2016-11-04 22:42:26Z iulius $ * * Replacement for a missing getnameinfo. * @@ -15,7 +15,7 @@ * support should already support getnameinfo natively. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Written by Russ Allbery * @@ -154,7 +154,7 @@ lookup_service(unsigned short port, char /* Just convert the port number to ASCII. */ status = snprintf(service, servicelen, "%hu", port); - if (status < 0 || (socklen_t) status > servicelen) + if (status < 0 || (socklen_t) status >= servicelen) return EAI_OVERFLOW; return 0; } diff -Nurp inn-2.6.0/lib/headers.c inn-2.6.1/lib/headers.c --- inn-2.6.0/lib/headers.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/lib/headers.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: headers.c 9019 2010-03-19 21:27:15Z iulius $ +/* $Id: headers.c 10071 2016-09-17 20:40:43Z iulius $ ** ** Routines for headers: manipulation and checks. */ @@ -11,24 +11,19 @@ /* -** We currently only check the requirements for RFC 3977: +** Check whether the argument is a valid header field name. +** +** We currently assume the maximal line length has already been checked. +** Only ensure the requirements for RFC 3977: ** ** o The name [of a header] consists of one or more printable ** US-ASCII characters other than colon. */ bool -IsValidHeaderName(const char *string) +IsValidHeaderName(const char *p) { - const unsigned char *p; - - /* Not NULL. */ - if (string == NULL) - return false; - - p = (const unsigned char *) string; - - /* Not empty. */ - if (*p == '\0') + /* Not NULL and not empty. */ + if (p == NULL || *p == '\0') return false; for (; *p != '\0'; p++) { @@ -42,6 +37,90 @@ IsValidHeaderName(const char *string) } +/* +** Check whether the argument is a valid header field body. It starts +** after the space following the header field name and its colon. +** +** We currently assume the maximal line length has already been checked. +*/ +bool +IsValidHeaderBody(const char *p) +{ + bool emptycontentline = true; + + /* Not NULL and not empty. */ + if (p == NULL || *p == '\0') + return false; + + for (; *p != '\0'; p++) { + if (isgraph((unsigned char) *p)) { + /* Current header content line contains a (non-whitespace) + * printable char. */ + emptycontentline = false; + continue; + } else if (ISWHITE(*p)) { + /* Skip SP and TAB. */ + continue; + } else if (*p == '\n' || (*p == '\r' && *++p == '\n')) { + /* Folding detected. We expect CRLF or lone LF as some parts + * of INN code internally remove CR. + * Check that the line that has just been processed is not + * "empty" and that the following character marks the beginning + * of a continuation line. */ + if (emptycontentline || !ISWHITE(p[1])) { + return false; + } + /* A continuation line begins. This new line should also have + * at least one printable octet other than SP or TAB, so we + * re-initialize emptycontentline to true. */ + emptycontentline = true; + continue; + } else { + /* Invalid character found. */ + return false; + } + } + + return (!emptycontentline); +} + + +/* +** Check whether the argument is a valid header field. +** +** We currently assume the maximal line length has already been checked. +*/ +bool +IsValidHeaderField(const char *p) +{ + /* Not NULL, not empty, and does not begin with a colon. */ + if (p == NULL || *p == '\0' || *p == ':') + return false; + + for (; *p != '\0'; p++) { + /* Header field names contain only printable US-ASCII characters + * other than colon. A colon terminates the header field name. */ + if (!isgraph((unsigned char) *p)) + return false; + if (*p == ':') { + p++; + break; + } + } + + /* Empty body or no colon found in header field. */ + if (*p == '\0') + return false; + + /* Missing space after colon. */ + if (*p != ' ') + return false; + + p++; + return IsValidHeaderBody(p); +} + + /* ** Skip any amount of CFWS (comments and folding whitespace), the RFC 5322 ** grammar term for whitespace, CRLF pairs, and possibly nested comments that diff -Nurp inn-2.6.0/lib/inet_aton.c inn-2.6.1/lib/inet_aton.c --- inn-2.6.0/lib/inet_aton.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/lib/inet_aton.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: inet_aton.c 9759 2014-12-04 20:11:38Z iulius $ +/* $Id: inet_aton.c 10099 2016-11-04 22:21:59Z iulius $ * * Replacement for a missing inet_aton. * @@ -7,7 +7,7 @@ * thread-safe. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Written by Russ Allbery * diff -Nurp inn-2.6.0/lib/inet_ntoa.c inn-2.6.1/lib/inet_ntoa.c --- inn-2.6.0/lib/inet_ntoa.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/lib/inet_ntoa.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: inet_ntoa.c 9759 2014-12-04 20:11:38Z iulius $ +/* $Id: inet_ntoa.c 10104 2016-11-04 22:41:36Z iulius $ * * Replacement for a missing or broken inet_ntoa. * @@ -8,7 +8,7 @@ * it uses static storage (inet_ntop should be used instead when available). * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Written by Russ Allbery * @@ -32,11 +32,11 @@ #if TESTING # undef inet_ntoa # define inet_ntoa test_inet_ntoa -const char *test_inet_ntoa(const struct in_addr); +char *test_inet_ntoa(struct in_addr); #endif -const char * -inet_ntoa(const struct in_addr in) +char * +inet_ntoa(struct in_addr in) { static char buf[16]; const unsigned char *p; diff -Nurp inn-2.6.0/lib/inet_ntop.c inn-2.6.1/lib/inet_ntop.c --- inn-2.6.0/lib/inet_ntop.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/lib/inet_ntop.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: inet_ntop.c 9759 2014-12-04 20:11:38Z iulius $ +/* $Id: inet_ntop.c 10105 2016-11-04 22:42:26Z iulius $ * * Replacement for a missing inet_ntop. * @@ -9,7 +9,7 @@ * host supports IPv6. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Written by Russ Allbery * @@ -68,7 +68,7 @@ inet_ntop(int af, const void *src, char (unsigned int) (p[1] & 0xff), (unsigned int) (p[2] & 0xff), (unsigned int) (p[3] & 0xff)); - if (status < 0) + if (status < 0 || (size_t) status >= (size_t) size) return NULL; return dst; } diff -Nurp inn-2.6.0/lib/innconf.c inn-2.6.1/lib/innconf.c --- inn-2.6.0/lib/innconf.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/lib/innconf.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: innconf.c 9922 2015-07-14 16:43:55Z iulius $ +/* $Id: innconf.c 10064 2016-09-04 12:55:40Z iulius $ ** ** Manage the global innconf struct. ** @@ -233,7 +233,7 @@ const struct config config_table[] = { { K(tlscertfile), STRING (NULL) }, { K(tlskeyfile), STRING (NULL) }, { K(tlsciphers), STRING (NULL) }, - { K(tlscompression), BOOL (true) }, + { K(tlscompression), BOOL (false) }, { K(tlseccurve), STRING (NULL) }, { K(tlspreferserverciphers), BOOL (true) }, { K(tlsprotocols), LIST (NULL) }, @@ -378,7 +378,7 @@ innconf_set_defaults(void) if (innconf->extraoverviewhidden == NULL) innconf->extraoverviewhidden = vector_new(); - /* Defaults used only if TLS (SSL) is supported. */ + /* Defaults used only if TLS/SSL is supported. */ #ifdef HAVE_OPENSSL if (innconf->tlscapath == NULL) innconf->tlscapath = xstrdup(innconf->pathetc); diff -Nurp inn-2.6.0/lib/messages.c inn-2.6.1/lib/messages.c --- inn-2.6.0/lib/messages.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/lib/messages.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: messages.c 9913 2015-07-07 16:31:52Z iulius $ +/* $Id: messages.c 10105 2016-11-04 22:42:26Z iulius $ * * Message and error reporting (possibly fatal). * @@ -52,10 +52,11 @@ * va_list, and the applicable errno value (if any). * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Written by Russ Allbery - * Copyright 2008, 2009, 2010, 2013 + * Copyright 2015, 2016 Russ Allbery + * Copyright 2008, 2009, 2010, 2013, 2014 * The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2004, 2005, 2006 * by Internet Systems Consortium, Inc. ("ISC") @@ -239,7 +240,7 @@ message_log_syslog(int pri, size_t len, exit(message_fatal_cleanup ? (*message_fatal_cleanup)() : 1); } status = vsnprintf(buffer, len + 1, fmt, args); - if (status < 0) { + if (status < 0 || (size_t) status >= len + 1) { warn("failed to format output with vsnprintf in syslog handler"); free(buffer); return; diff -Nurp inn-2.6.0/lib/mkstemp.c inn-2.6.1/lib/mkstemp.c --- inn-2.6.0/lib/mkstemp.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/lib/mkstemp.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: mkstemp.c 9759 2014-12-04 20:11:38Z iulius $ +/* $Id: mkstemp.c 10099 2016-11-04 22:21:59Z iulius $ * * Replacement for a missing mkstemp. * @@ -6,7 +6,7 @@ * systems that don't have it. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Written by Russ Allbery * diff -Nurp inn-2.6.0/lib/network-innbind.c inn-2.6.1/lib/network-innbind.c --- inn-2.6.0/lib/network-innbind.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/lib/network-innbind.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: network-innbind.c 9914 2015-07-07 16:34:36Z iulius $ +/* $Id: network-innbind.c 10105 2016-11-04 22:42:26Z iulius $ * * Utility functions for network connections using innbind. * @@ -32,70 +32,6 @@ #include "inn/network-innbind.h" #include "inn/xmalloc.h" -/* If SO_REUSEADDR isn't available, make calls to set_reuseaddr go away. */ -#ifndef SO_REUSEADDR -# define network_set_reuseaddr(fd) /* empty */ -#endif - -/* If IPV6_V6ONLY isn't available, make calls to set_v6only go away. */ -#ifndef IPV6_V6ONLY -# define network_set_v6only(fd) /* empty */ -#endif - -/* If IP_FREEBIND isn't available, make calls to set_freebind go away. */ -#ifndef IP_FREEBIND -# define network_set_freebind(fd) /* empty */ -#endif - - -/* - * Set SO_REUSEADDR on a socket if possible (so that something new can listen - * on the same port immediately if the daemon dies unexpectedly). - */ -#ifdef SO_REUSEADDR -static void -network_set_reuseaddr(socket_type fd) -{ - int flag = 1; - const void *flagaddr = &flag; - - if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, flagaddr, sizeof(flag)) < 0) - syswarn("cannot mark bind address reusable"); -} -#endif - - -/* - * Set IPV6_V6ONLY on a socket if possible, since the IPv6 behavior is more - * consistent and easier to understand. - */ -#ifdef IPV6_V6ONLY -static void -network_set_v6only(socket_type fd) -{ - int flag = 1; - - if (setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, &flag, sizeof(flag)) < 0) - syswarn("cannot set IPv6 socket to v6only"); -} -#endif - - -/* - * Set IP_FREEBIND on a socket if possible, which allows binding servers to - * IPv6 addresses that may not have been set up yet. - */ -#ifdef IP_FREEBIND -static void -network_set_freebind(socket_type fd) -{ - int flag = 1; - - if (setsockopt(fd, IPPROTO_IP, IP_FREEBIND, &flag, sizeof(flag)) < 0) - syswarn("cannot set IPv6 socket to free binding"); -} -#endif - /* * Function used as a die handler in child processes to prevent any atexit @@ -361,7 +297,7 @@ network_innbind_all(int type, unsigned s hints.ai_family = AF_UNSPEC; hints.ai_socktype = type; status = snprintf(service, sizeof(service), "%hu", port); - if (status < 0 || (size_t) status > sizeof(service)) { + if (status < 0 || (size_t) status >= sizeof(service)) { warn("cannot convert port %hu to string", port); socket_set_errno_einval(); return false; diff -Nurp inn-2.6.0/lib/network.c inn-2.6.1/lib/network.c --- inn-2.6.0/lib/network.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/lib/network.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: network.c 9932 2015-08-28 19:23:27Z iulius $ +/* $Id: network.c 10105 2016-11-04 22:42:26Z iulius $ * * Utility functions for network connections. * @@ -18,10 +18,10 @@ * of knowing that this code is correct. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Written by Russ Allbery - * Copyright 2014, 2015 Russ Allbery + * Copyright 2014, 2015, 2016 Russ Allbery * Copyright 2009, 2011, 2012, 2013, 2014 * The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2004, 2005, 2006, 2007, 2008 @@ -75,21 +75,6 @@ # define sin6_set_length(s) /* empty */ #endif -/* If SO_REUSEADDR isn't available, make calls to set_reuseaddr go away. */ -#ifndef SO_REUSEADDR -# define network_set_reuseaddr(fd) /* empty */ -#endif - -/* If IPV6_V6ONLY isn't available, make calls to set_v6only go away. */ -#ifndef IPV6_V6ONLY -# define network_set_v6only(fd) /* empty */ -#endif - -/* If IP_FREEBIND isn't available, make calls to set_freebind go away. */ -#ifndef IP_FREEBIND -# define network_set_freebind(fd) /* empty */ -#endif - /* * Windows requires a different function when sending to sockets, but can't * return short writes on blocking sockets. @@ -100,53 +85,53 @@ # define socket_xwrite(fd, b, s) xwrite((fd), (b), (s)) #endif + /* * Set SO_REUSEADDR on a socket if possible (so that something new can listen * on the same port immediately if the daemon dies unexpectedly). */ -#ifdef SO_REUSEADDR -static void -network_set_reuseaddr(socket_type fd) +void +network_set_reuseaddr(socket_type fd UNUSED) { +#ifdef SO_REUSEADDR int flag = 1; - const void *flagaddr = &flag; - if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, flagaddr, sizeof(flag)) < 0) + if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &flag, sizeof(flag)) < 0) syswarn("cannot mark bind address reusable"); -} #endif +} /* * Set IPV6_V6ONLY on a socket if possible, since the IPv6 behavior is more * consistent and easier to understand. */ -#ifdef IPV6_V6ONLY -static void -network_set_v6only(socket_type fd) +void +network_set_v6only(socket_type fd UNUSED) { +#ifdef IPV6_V6ONLY int flag = 1; if (setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, &flag, sizeof(flag)) < 0) syswarn("cannot set IPv6 socket to v6only"); -} #endif +} /* * Set IP_FREEBIND on a socket if possible, which allows binding servers to * IPv6 addresses that may not have been set up yet. */ -#ifdef IP_FREEBIND -static void -network_set_freebind(socket_type fd) +void +network_set_freebind(socket_type fd UNUSED) { +#ifdef IP_FREEBIND int flag = 1; if (setsockopt(fd, IPPROTO_IP, IP_FREEBIND, &flag, sizeof(flag)) < 0) syswarn("cannot set IPv6 socket to free binding"); -} #endif +} /* @@ -309,7 +294,7 @@ network_bind_all(int type, unsigned shor hints.ai_family = AF_UNSPEC; hints.ai_socktype = type; status = snprintf(service, sizeof(service), "%hu", port); - if (status < 0 || (size_t) status > sizeof(service)) { + if (status < 0 || (size_t) status >= sizeof(service)) { warn("cannot convert port %hu to string", port); socket_set_errno_einval(); return false; @@ -627,7 +612,7 @@ network_connect_host(const char *host, u hints.ai_family = AF_UNSPEC; hints.ai_socktype = SOCK_STREAM; status = snprintf(portbuf, sizeof(portbuf), "%hu", port); - if (status > 0 && (size_t) status > sizeof(portbuf)) { + if (status > 0 && (size_t) status >= sizeof(portbuf)) { status = -1; socket_set_errno_einval(); } diff -Nurp inn-2.6.0/lib/newsuser.c inn-2.6.1/lib/newsuser.c --- inn-2.6.0/lib/newsuser.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/lib/newsuser.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: newsuser.c 9854 2015-05-14 13:12:36Z iulius $ +/* $Id: newsuser.c 9981 2016-01-10 14:59:10Z iulius $ * * Ensure running as "news" user/group. * @@ -69,14 +69,16 @@ ensure_news_user(bool may_setuid) if (geteuid() == 0) { if (! may_setuid) { /* NB: mustn't be run as root, unless "may_setuid" is true. */ - die("must be run as %s, not as root", innconf->runasuser); + die("must be run as %s, not as root", + innconf != NULL ? innconf->runasuser : RUNASUSER); } if (setuid(uid) < 0) { sysdie("failed to setuid"); } } if (geteuid() != uid || getuid() != uid) { - die("must be run as %s", innconf->runasuser); + die("must be run as %s", + innconf != NULL ? innconf->runasuser : RUNASUSER); } } @@ -95,7 +97,8 @@ ensure_news_grp(bool may_setgid) } } if (getegid() != gid || getgid() != gid) { - die ("must be run as %s group", innconf->runasgroup); + die ("must be run as %s group", + innconf != NULL ? innconf->runasgroup : RUNASGROUP); } } diff -Nurp inn-2.6.0/lib/qio.c inn-2.6.1/lib/qio.c --- inn-2.6.0/lib/qio.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/lib/qio.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: qio.c 9889 2015-06-03 19:05:15Z iulius $ +/* $Id: qio.c 10014 2016-05-05 12:42:31Z iulius $ ** ** Quick I/O package. ** @@ -144,11 +144,11 @@ QIOread(QIOSTATE *qp) while (1) { nleft = qp->_end - qp->_start; - /* If nleft <= 0, the buffer currently contains no data that hasn't - previously been returned by QIOread, so we can overwrite the + /* If (unsigned) nleft = 0, the buffer currently contains no data that + hasn't previously been returned by QIOread, so we can overwrite the buffer with new data. Otherwise, first check the existing data to see if we have a full line. */ - if (nleft <= 0) { + if (nleft == 0) { qp->_start = qp->_buffer; qp->_end = qp->_buffer; } else { diff -Nurp inn-2.6.0/lib/reallocarray.c inn-2.6.1/lib/reallocarray.c --- inn-2.6.0/lib/reallocarray.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/lib/reallocarray.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: reallocarray.c 9759 2014-12-04 20:11:38Z iulius $ +/* $Id: reallocarray.c 10099 2016-11-04 22:21:59Z iulius $ * * Replacement for a missing reallocarray. * @@ -8,7 +8,7 @@ * and checks for overflow so that the caller doesn't need to. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Written by Russ Allbery * diff -Nurp inn-2.6.0/lib/setenv.c inn-2.6.1/lib/setenv.c --- inn-2.6.0/lib/setenv.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/lib/setenv.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: setenv.c 9759 2014-12-04 20:11:38Z iulius $ +/* $Id: setenv.c 10099 2016-11-04 22:21:59Z iulius $ * * Replacement for a missing setenv. * @@ -6,7 +6,7 @@ * those platforms that don't have it. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Written by Russ Allbery * diff -Nurp inn-2.6.0/lib/seteuid.c inn-2.6.1/lib/seteuid.c --- inn-2.6.0/lib/seteuid.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/lib/seteuid.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: seteuid.c 9697 2014-09-20 06:22:24Z iulius $ +/* $Id: seteuid.c 10099 2016-11-04 22:21:59Z iulius $ * * Replacement for a missing seteuid. * @@ -14,7 +14,7 @@ * with seteuid has saved UIDs. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Written by Russ Allbery * diff -Nurp inn-2.6.0/lib/setproctitle.c inn-2.6.1/lib/setproctitle.c --- inn-2.6.0/lib/setproctitle.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/lib/setproctitle.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: setproctitle.c 5943 2002-12-08 02:28:06Z rra $ +/* $Id: setproctitle.c 10063 2016-09-04 12:53:12Z iulius $ ** ** Replacement for a missing setproctitle. ** @@ -35,6 +35,8 @@ setproctitle(const char *format, ...) delta = snprintf(title, sizeof(title), "%s: ", message_program_name); if (delta < 0) delta = 0; + else if ((size_t)delta >= sizeof(title)) + delta = sizeof(title); } va_start(args, format); vsnprintf(title + delta, sizeof(title) - delta, format, args); @@ -82,7 +84,7 @@ setproctitle(const char *format, ...) message_program_name if it's set. */ if (message_program_name != NULL) { delta = snprintf(title, length, "%s: ", message_program_name); - if (delta < 0 || (size_t) delta > length) + if (delta < 0 || (size_t) delta >= length) return; if (delta > 0) { title += delta; @@ -92,7 +94,7 @@ setproctitle(const char *format, ...) va_start(args, format); delta = vsnprintf(title, length, format, args); va_end(args); - if (delta < 0 || (size_t) delta > length) + if (delta < 0 || (size_t) delta >= length) return; if (delta > 0) { title += delta; diff -Nurp inn-2.6.0/lib/snprintf.c inn-2.6.1/lib/snprintf.c --- inn-2.6.0/lib/snprintf.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/lib/snprintf.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: snprintf.c 9759 2014-12-04 20:11:38Z iulius $ +/* $Id: snprintf.c 10115 2016-11-06 14:20:36Z iulius $ * * Replacement for a missing snprintf or vsnprintf. * @@ -12,7 +12,7 @@ * 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 . + * which can be found at . */ /* @@ -80,6 +80,7 @@ * Russ Allbery 2000-08-26 * fixed return value to comply with C99 * fixed handling of snprintf(NULL, ...) + * added explicit casts for double to long long int conversion * * Hrvoje Niksic 2000-11-04 * include for NULL. @@ -181,7 +182,7 @@ static int dopr (char *buffer, size_t ma char *strvalue; int min; int max; - int state; + unsigned int state; int flags; int cflags; int total; @@ -613,7 +614,7 @@ static LDOUBLE abs_val (LDOUBLE value) return result; } -static LDOUBLE pow10_int (int exp) +static LLONG pow10_int (int exp) { LDOUBLE result = 1; @@ -623,14 +624,14 @@ static LDOUBLE pow10_int (int exp) exp--; } - return result; + return (LLONG) result; } static LLONG round_int (LDOUBLE value) { LLONG intpart; - intpart = value; + intpart = (LLONG) value; value = value - intpart; if (value >= 0.5) intpart++; @@ -679,7 +680,7 @@ static int fmtfp (char *buffer, size_t * if (flags & DP_F_UP) caps = 1; /* Should characters be upper case? */ #endif - intpart = ufvalue; + intpart = (LLONG) ufvalue; /* With %g precision is the number of significant digits, which includes the digits in intpart. */ diff -Nurp inn-2.6.0/lib/strlcat.c inn-2.6.1/lib/strlcat.c --- inn-2.6.0/lib/strlcat.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/lib/strlcat.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: strlcat.c 9759 2014-12-04 20:11:38Z iulius $ +/* $Id: strlcat.c 10098 2016-11-04 22:19:40Z iulius $ * * Replacement for a missing strlcat. * @@ -10,8 +10,9 @@ * space available in the destination buffer, not just the amount of space * remaining. * - * 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 *used to be* maintained in the + * rra-c-util package, which can be found at + * . * * Written by Russ Allbery * diff -Nurp inn-2.6.0/lib/strlcpy.c inn-2.6.1/lib/strlcpy.c --- inn-2.6.0/lib/strlcpy.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/lib/strlcpy.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: strlcpy.c 9759 2014-12-04 20:11:38Z iulius $ +/* $Id: strlcpy.c 10098 2016-11-04 22:19:40Z iulius $ * * Replacement for a missing strlcpy. * @@ -9,8 +9,9 @@ * total space required is returned. The destination string is not nul-filled * like strncpy does, just nul-terminated. * - * 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 *used to be* maintained in the + * rra-c-util package, which can be found at + * . * * Written by Russ Allbery * diff -Nurp inn-2.6.0/lib/timer.c inn-2.6.1/lib/timer.c --- inn-2.6.0/lib/timer.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/lib/timer.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: timer.c 9941 2015-09-05 18:03:04Z eagle $ +/* $Id: timer.c 10069 2016-09-04 13:15:36Z iulius $ ** ** Timer functions, to gather profiling data. ** @@ -322,21 +322,39 @@ TMRsumone(const char *const *labels, str { struct timer *node; size_t off = 0; + int rc; /* This results in "child/parent nn(nn)" instead of the arguably more intuitive "parent/child" but it's easy. Since we ensure sane snprintf semantics, it's safe to defer checking for overflow until after formatting all of the timer data. */ - for (node = timer; node != NULL; node = node->parent) - off += snprintf(buf + off, len - off, "%s/", + for (node = timer; node != NULL; node = node->parent) { + rc = snprintf(buf + off, len - off, "%s/", TMRlabel(labels, node->id)); - off--; - off += snprintf(buf + off, len - off, " %lu(%lu) ", timer->total, + if (rc < 0) { + /* Do nothing. */ + } else if ((size_t)rc >= len - off) { + off = len; + } else { + off += rc; + } + } + if (off > 0) + off--; + + rc = snprintf(buf + off, len - off, " %lu(%lu) ", timer->total, timer->count); + if (rc < 0) { + /* Do nothing. */ + } else if ((size_t)rc >= len - off) { + off = len; + } else { + off += rc; + } if (off == len) { warn("timer log too long while processing %s", TMRlabel(labels, timer->id)); - return 0; + return off; } timer->total = 0; @@ -359,6 +377,7 @@ TMRsummary(const char *prefix, const cha char *buf; unsigned int i; size_t len, off; + int rc; /* To find the needed buffer size, note that a 64-bit unsigned number can be up to 20 digits long, so each timer can be 52 characters. We also @@ -369,14 +388,33 @@ TMRsummary(const char *prefix, const cha buffer isn't large enough it will just result in logged errors. */ len = 52 * timer_count + 27 + (prefix == NULL ? 0 : strlen(prefix)) + 1; buf = xmalloc(len); + off = 0; if (prefix == NULL) - off = 0; + rc = 0; else - off = snprintf(buf, len, "%s ", prefix); - off += snprintf(buf + off, len - off, "time %lu ", TMRgettime(true)); - for (i = 0; i < timer_count; i++) - if (timers[i] != NULL) + rc = snprintf(buf, len, "%s ", prefix); + if (rc < 0) { + /* Do nothing. */ + } else if ((size_t)rc >= len) { + off = len; + } else { + off += rc; + } + + rc = snprintf(buf + off, len - off, "time %lu ", TMRgettime(true)); + if (rc < 0) { + /* Do nothing. */ + } else if ((size_t)rc >= len - off) { + off = len; + } else { + off += rc; + } + + for (i = 0; i < timer_count; i++) { + if (timers[i] != NULL) { off += TMRsumone(labels, timers[i], buf + off, len - off); + } + } notice("%s", buf); free(buf); } diff -Nurp inn-2.6.0/lib/vector.c inn-2.6.1/lib/vector.c --- inn-2.6.0/lib/vector.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/lib/vector.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: vector.c 9678 2014-09-06 07:18:09Z iulius $ +/* $Id: vector.c 10099 2016-11-04 22:21:59Z iulius $ * * Vector handling (counted lists of char *'s). * @@ -22,7 +22,7 @@ * sure if it's a violation of the C type aliasing rules. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Written by Russ Allbery * @@ -114,24 +114,20 @@ cvector_resize(struct cvector *vector, s void vector_add(struct vector *vector, const char *string) { - size_t next = vector->count; - assert(vector != NULL); if (vector->count == vector->allocated) vector_resize(vector, vector->allocated + 1); - vector->strings[next] = xstrdup(string); + vector->strings[vector->count] = xstrdup(string); vector->count++; } void cvector_add(struct cvector *vector, const char *string) { - size_t next = vector->count; - assert(vector != NULL); if (vector->count == vector->allocated) cvector_resize(vector, vector->allocated + 1); - vector->strings[next] = string; + vector->strings[vector->count] = string; vector->count++; } @@ -145,12 +141,10 @@ cvector_add(struct cvector *vector, cons void vector_addn(struct vector *vector, const char *string, size_t length) { - size_t next = vector->count; - assert(vector != NULL); if (vector->count == vector->allocated) vector_resize(vector, vector->allocated + 1); - vector->strings[next] = xstrndup(string, length); + vector->strings[vector->count] = xstrndup(string, length); vector->count++; } @@ -464,7 +458,7 @@ char * vector_join(const struct vector *vector, const char *separator) { char *string; - size_t i, size, seplen; + size_t i, length, offset, size, seplen; /* If the vector is empty, this is trivial. */ assert(vector != NULL); @@ -483,13 +477,20 @@ vector_join(const struct vector *vector, assert(SIZE_MAX - size >= (vector->count - 1) * seplen + 1); size += (vector->count - 1) * seplen + 1; - /* Allocate the memory and build up the string using strlcat. */ + /* Allocate the memory and build up the string. */ string = xmalloc(size); - strlcpy(string, vector->strings[0], size); - for (i = 1; i < vector->count; i++) { - strlcat(string, separator, size); - strlcat(string, vector->strings[i], size); + offset = 0; + for (i = 0; i < vector->count; i++) { + if (i != 0) { + memcpy(string + offset, separator, seplen); + offset += seplen; + } + length = strlen(vector->strings[i]); + memcpy(string + offset, vector->strings[i], length); + offset += length; + assert(offset < size); } + string[offset] = '\0'; return string; } @@ -497,7 +498,7 @@ char * cvector_join(const struct cvector *vector, const char *separator) { char *string; - size_t i, size, seplen; + size_t i, length, offset, size, seplen; /* If the vector is empty, this is trivial. */ assert(vector != NULL); @@ -516,13 +517,20 @@ cvector_join(const struct cvector *vecto assert(SIZE_MAX - size >= (vector->count - 1) * seplen + 1); size += (vector->count - 1) * seplen + 1; - /* Allocate the memory and build up the string using strlcat. */ + /* Allocate the memory and build up the string. */ string = xmalloc(size); - strlcpy(string, vector->strings[0], size); - for (i = 1; i < vector->count; i++) { - strlcat(string, separator, size); - strlcat(string, vector->strings[i], size); + offset = 0; + for (i = 0; i < vector->count; i++) { + if (i != 0) { + memcpy(string + offset, separator, seplen); + offset += seplen; + } + length = strlen(vector->strings[i]); + memcpy(string + offset, vector->strings[i], length); + offset += length; + assert(offset < size); } + string[offset] = '\0'; return string; } diff -Nurp inn-2.6.0/lib/xmalloc.c inn-2.6.1/lib/xmalloc.c --- inn-2.6.0/lib/xmalloc.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/lib/xmalloc.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: xmalloc.c 9882 2015-05-25 10:02:28Z iulius $ +/* $Id: xmalloc.c 10099 2016-11-04 22:21:59Z iulius $ * * malloc routines with failure handling. * @@ -13,7 +13,7 @@ * buffer = xmalloc(1024); * xrealloc(buffer, 2048); * free(buffer); - * buffer = xcalloc(1024); + * buffer = xcalloc(1, 1024); * free(buffer); * buffer = xstrdup(string); * free(buffer); @@ -61,8 +61,9 @@ * line number to these functions. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * + * Copyright 2015 Russ Allbery * Copyright 2012, 2013, 2014 * The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2004, 2005, 2006 diff -Nurp inn-2.6.0/lib/xwrite.c inn-2.6.1/lib/xwrite.c --- inn-2.6.0/lib/xwrite.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/lib/xwrite.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: xwrite.c 9932 2015-08-28 19:23:27Z iulius $ +/* $Id: xwrite.c 10099 2016-11-04 22:21:59Z iulius $ * * write and writev replacements to handle partial writes. * @@ -23,7 +23,7 @@ * will return -1 and the number of bytes actually written will be lost. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Copyright 2008, 2013, 2014 * The Board of Trustees of the Leland Stanford Junior University diff -Nurp inn-2.6.0/m4/bdb.m4 inn-2.6.1/m4/bdb.m4 --- inn-2.6.0/m4/bdb.m4 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/m4/bdb.m4 2016-11-27 06:03:42.000000000 -0800 @@ -1,5 +1,5 @@ dnl Find the compiler and linker flags for the Berkeley DB library. -dnl $Id: bdb.m4 9593 2013-12-27 21:16:09Z iulius $ +dnl $Id: bdb.m4 10099 2016-11-04 22:21:59Z iulius $ dnl dnl Finds the compiler and linker flags for linking with the Berkeley DB dnl library. Provides the --with-bdb, --with-bdb-lib, and --with-bdb-include @@ -27,7 +27,7 @@ dnl dnl Depends on the lib-helper.m4 framework. dnl dnl The canonical version of this file is maintained in the rra-c-util -dnl package, available at . +dnl package, available at . dnl dnl Written by Russ Allbery dnl Copyright 2013 diff -Nurp inn-2.6.0/m4/cc-flags.m4 inn-2.6.1/m4/cc-flags.m4 --- inn-2.6.0/m4/cc-flags.m4 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/m4/cc-flags.m4 2016-11-27 06:03:42.000000000 -0800 @@ -1,28 +1,46 @@ -dnl cc-flags.m4 -- Checks whether the compiler supports a given flag. -dnl $Id: cc-flags.m4 8312 2009-01-31 20:35:04Z iulius $ +dnl Check whether the compiler supports particular flags. +dnl $Id: cc-flags.m4 10115 2016-11-06 14:20:36Z iulius $ dnl -dnl Used to check whether a compiler supports a given flag. If it does, the -dnl commands in the second argument are run. If not, the commands in the -dnl third argument are run. +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 +dnl The canonical version of this file is maintained in the rra-c-util +dnl package, available at . +dnl +dnl Copyright 2016 Russ Allbery +dnl Copyright 2006, 2009, 2016 +dnl by Internet Systems Consortium, Inc. ("ISC") +dnl +dnl Permission to use, copy, modify, and distribute this software for any +dnl purpose with or without fee is hereby granted, provided that the above +dnl copyright notice and this permission notice appear in all copies. +dnl +dnl THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +dnl REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +dnl MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY +dnl SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +dnl WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +dnl ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +dnl IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. dnl Used to build the result cache name. AC_DEFUN([_INN_PROG_CC_FLAG_CACHE], -[translit([inn_cv_compiler_c_$1], [-], [_])]) +[translit([inn_cv_compiler_c_$1], [-=], [__])]) +dnl Check whether a given flag is supported by the complier. AC_DEFUN([INN_PROG_CC_FLAG], [AC_REQUIRE([AC_PROG_CC]) -AC_MSG_CHECKING([if $CC supports $1]) -AC_CACHE_VAL([_INN_PROG_CC_FLAG_CACHE([$1])], -[save_CFLAGS=$CFLAGS -CFLAGS="$CFLAGS $1" -AC_COMPILE_IFELSE( -[AC_LANG_PROGRAM([[]], [[int foo = 0;]])], - [_INN_PROG_CC_FLAG_CACHE([$1])=yes], - [_INN_PROG_CC_FLAG_CACHE([$1])=no]) -CFLAGS=$save_CFLAGS]) -AC_MSG_RESULT($_INN_PROG_CC_FLAG_CACHE([$1])) - if test x"$_INN_PROG_CC_FLAG_CACHE([$1])" = xyes ; then - ifelse([$2], , :, [$2]) - else - ifelse([$3], , :, [$3]) - fi]) + 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/'`"], + [*], [CFLAGS="$CFLAGS $1"]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [int foo = 0;])], + [_INN_PROG_CC_FLAG_CACHE([$1])=yes], + [_INN_PROG_CC_FLAG_CACHE([$1])=no]) + CFLAGS=$save_CFLAGS]) + AC_MSG_RESULT([$_INN_PROG_CC_FLAG_CACHE([$1])]) + AS_IF([test x"$_INN_PROG_CC_FLAG_CACHE([$1])" = xyes], [$2], [$3])]) + diff -Nurp inn-2.6.0/m4/inet-ntoa.m4 inn-2.6.1/m4/inet-ntoa.m4 --- inn-2.6.0/m4/inet-ntoa.m4 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/m4/inet-ntoa.m4 2016-11-27 06:03:42.000000000 -0800 @@ -1,5 +1,5 @@ dnl Check for a working inet_ntoa. -dnl $Id: inet-ntoa.m4 9564 2013-11-10 18:27:16Z iulius $ +dnl $Id: inet-ntoa.m4 10099 2016-11-04 22:21:59Z iulius $ dnl dnl Check whether inet_ntoa is present and working. Since calling inet_ntoa dnl involves passing small structs on the stack, present and working versions @@ -8,7 +8,7 @@ dnl Provides INN_FUNC_INET_NTOA and defi dnl present and working. dnl dnl The canonical version of this file is maintained in the rra-c-util -dnl package, available at . +dnl package, available at . dnl dnl Copyright 1999, 2000, 2001, 2003 Russ Allbery dnl Copyright 2008, 2009 diff -Nurp inn-2.6.0/m4/krb5-config.m4 inn-2.6.1/m4/krb5-config.m4 --- inn-2.6.0/m4/krb5-config.m4 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/m4/krb5-config.m4 2016-11-27 06:03:42.000000000 -0800 @@ -1,5 +1,5 @@ dnl Use krb5-config to get link paths for Kerberos libraries. -dnl $Id: krb5-config.m4 9564 2013-11-10 18:27:16Z iulius $ +dnl $Id: krb5-config.m4 10099 2016-11-04 22:21:59Z 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 @@ -9,7 +9,7 @@ dnl dnl Depends on INN_ENABLE_REDUCED_DEPENDS. dnl dnl The canonical version of this file is maintained in the rra-c-util -dnl package, available at . +dnl package, available at . dnl dnl Written by Russ Allbery dnl Copyright 2011, 2012 diff -Nurp inn-2.6.0/m4/krb5.m4 inn-2.6.1/m4/krb5.m4 --- inn-2.6.0/m4/krb5.m4 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/m4/krb5.m4 2016-11-27 06:03:42.000000000 -0800 @@ -1,5 +1,5 @@ dnl Find the compiler and linker flags for Kerberos. -dnl $Id: krb5.m4 9792 2015-03-17 20:10:25Z iulius $ +dnl $Id: krb5.m4 10099 2016-11-04 22:21:59Z 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 @@ -48,7 +48,7 @@ dnl Also provides INN_INCLUDES_KRB5, whi dnl probing the Kerberos library properties. dnl dnl The canonical version of this file is maintained in the rra-c-util -dnl package, available at . +dnl package, available at . dnl dnl Written by Russ Allbery dnl Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2013, 2014 diff -Nurp inn-2.6.0/m4/lib-depends.m4 inn-2.6.1/m4/lib-depends.m4 --- inn-2.6.0/m4/lib-depends.m4 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/m4/lib-depends.m4 2016-11-27 06:03:42.000000000 -0800 @@ -1,5 +1,5 @@ dnl Provides option to change library probes. -dnl $Id: lib-depends.m4 9564 2013-11-10 18:27:16Z iulius $ +dnl $Id: lib-depends.m4 10099 2016-11-04 22:21:59Z iulius $ dnl dnl This file provides INN_ENABLE_REDUCED_DEPENDS, which adds the configure dnl option --enable-reduced-depends to request that library probes assume @@ -11,7 +11,7 @@ dnl This macro doesn't do much but is de dnl can require it with AC_REQUIRE. dnl dnl The canonical version of this file is maintained in the rra-c-util -dnl package, available at . +dnl package, available at . dnl dnl Written by Russ Allbery dnl Copyright 2005, 2006, 2007 diff -Nurp inn-2.6.0/m4/lib-helper.m4 inn-2.6.1/m4/lib-helper.m4 --- inn-2.6.0/m4/lib-helper.m4 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/m4/lib-helper.m4 2016-11-27 06:03:42.000000000 -0800 @@ -1,5 +1,5 @@ dnl Helper functions to manage compiler variables. -dnl $Id: lib-helper.m4 9570 2013-11-21 15:23:24Z iulius $ +dnl $Id: lib-helper.m4 10099 2016-11-04 22:21:59Z iulius $ dnl dnl These are a wide variety of helper macros to make it easier to construct dnl standard macros to probe for a library and to set library-specific @@ -10,7 +10,7 @@ dnl dnl Depends on INN_SET_LDFLAGS. dnl dnl The canonical version of this file is maintained in the rra-c-util -dnl package, available at . +dnl package, available at . dnl dnl Written by Russ Allbery dnl Copyright 2011, 2013 diff -Nurp inn-2.6.0/m4/lib-pathname.m4 inn-2.6.1/m4/lib-pathname.m4 --- inn-2.6.0/m4/lib-pathname.m4 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/m4/lib-pathname.m4 2016-11-27 06:03:42.000000000 -0800 @@ -1,5 +1,5 @@ dnl Determine the library path name. -dnl $Id: lib-pathname.m4 9564 2013-11-10 18:27:16Z iulius $ +dnl $Id: lib-pathname.m4 10099 2016-11-04 22:21:59Z 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 @@ -14,7 +14,7 @@ dnl This file also provides the Autoconf dnl libdir variable to PREFIX/lib{,32,64} as appropriate. dnl dnl The canonical version of this file is maintained in the rra-c-util -dnl package, available at . +dnl package, available at . dnl dnl Written by Russ Allbery dnl Copyright 2008, 2009 diff -Nurp inn-2.6.0/m4/libtool.m4 inn-2.6.1/m4/libtool.m4 --- inn-2.6.0/m4/libtool.m4 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/m4/libtool.m4 2016-11-27 06:03:42.000000000 -0800 @@ -1,8 +1,6 @@ # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1996-2001, 2003-2015 Free Software Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives @@ -10,36 +8,30 @@ # modifications, as long as this notice is preserved. m4_define([_LT_COPYING], [dnl -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is part of GNU Libtool. -# -# GNU Libtool is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 2 of -# the License, or (at your option) any later version. +# Copyright (C) 2014 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. + +# GNU Libtool is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of of the License, or +# (at your option) any later version. # -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program or library that is built +# using GNU Libtool, you may include this file under the same +# distribution terms that you use for the rest of that program. # -# GNU Libtool is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of +# GNU Libtool is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -# obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# along with this program. If not, see . ]) -# serial 57 LT_INIT +# serial 58 LT_INIT # LT_PREREQ(VERSION) @@ -67,7 +59,7 @@ esac # LT_INIT([OPTIONS]) # ------------------ AC_DEFUN([LT_INIT], -[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT +[AC_PREREQ([2.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl AC_BEFORE([$0], [LT_LANG])dnl AC_BEFORE([$0], [LT_OUTPUT])dnl @@ -91,7 +83,7 @@ dnl Parse OPTIONS _LT_SET_OPTIONS([$0], [$1]) # This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ltmain" +LIBTOOL_DEPS=$ltmain # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' @@ -111,26 +103,43 @@ dnl AC_DEFUN([AC_PROG_LIBTOOL], []) dnl AC_DEFUN([AM_PROG_LIBTOOL], []) +# _LT_PREPARE_CC_BASENAME +# ----------------------- +m4_defun([_LT_PREPARE_CC_BASENAME], [ +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in @S|@*""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} +])# _LT_PREPARE_CC_BASENAME + + # _LT_CC_BASENAME(CC) # ------------------- -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +# It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME, +# but that macro is also expanded into generated libtool script, which +# arranges for $SED and $ECHO to be set by different means. m4_defun([_LT_CC_BASENAME], -[for cc_temp in $1""; do - case $cc_temp in - compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; - distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +[m4_require([_LT_PREPARE_CC_BASENAME])dnl +AC_REQUIRE([_LT_DECL_SED])dnl +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl +func_cc_basename $1 +cc_basename=$func_cc_basename_result ]) # _LT_FILEUTILS_DEFAULTS # ---------------------- # It is okay to use these file commands and assume they have been set -# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. +# sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'. m4_defun([_LT_FILEUTILS_DEFAULTS], [: ${CP="cp -f"} : ${MV="mv -f"} @@ -177,15 +186,16 @@ m4_require([_LT_CHECK_SHAREDLIB_FROM_LIN m4_require([_LT_CMD_OLD_ARCHIVE])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_WITH_SYSROOT])dnl +m4_require([_LT_CMD_TRUNCATE])dnl _LT_CONFIG_LIBTOOL_INIT([ -# See if we are running on zsh, and set the options which allow our +# See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}" ; then +if test -n "\${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi ]) -if test -n "${ZSH_VERSION+set}" ; then +if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi @@ -198,7 +208,7 @@ aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then + if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi @@ -209,14 +219,14 @@ esac ofile=libtool can_build_shared=yes -# All known linkers require a `.a' archive for static linking (except MSVC, +# All known linkers require a '.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a -with_gnu_ld="$lt_cv_prog_gnu_ld" +with_gnu_ld=$lt_cv_prog_gnu_ld -old_CC="$CC" -old_CFLAGS="$CFLAGS" +old_CC=$CC +old_CFLAGS=$CFLAGS # Set sane defaults for various variables test -z "$CC" && CC=cc @@ -269,14 +279,14 @@ no_glob_subst='s/\*/\\\*/g' # _LT_PROG_LTMAIN # --------------- -# Note that this code is called both from `configure', and `config.status' +# Note that this code is called both from 'configure', and 'config.status' # now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, -# `config.status' has no value for ac_aux_dir unless we are using Automake, +# 'config.status' has no value for ac_aux_dir unless we are using Automake, # so we pass a copy along to make sure it has a sensible value anyway. m4_defun([_LT_PROG_LTMAIN], [m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl _LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) -ltmain="$ac_aux_dir/ltmain.sh" +ltmain=$ac_aux_dir/ltmain.sh ])# _LT_PROG_LTMAIN @@ -286,7 +296,7 @@ ltmain="$ac_aux_dir/ltmain.sh" # So that we can recreate a full libtool script including additional # tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS -# in macros and then make a single call at the end using the `libtool' +# in macros and then make a single call at the end using the 'libtool' # label. @@ -421,8 +431,8 @@ m4_define([_lt_decl_all_varnames], # _LT_CONFIG_STATUS_DECLARE([VARNAME]) # ------------------------------------ -# Quote a variable value, and forward it to `config.status' so that its -# declaration there will have the same value as in `configure'. VARNAME +# Quote a variable value, and forward it to 'config.status' so that its +# declaration there will have the same value as in 'configure'. VARNAME # must have a single quote delimited value for this to work. m4_define([_LT_CONFIG_STATUS_DECLARE], [$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) @@ -446,7 +456,7 @@ m4_defun([_LT_CONFIG_STATUS_DECLARATIONS # Output comment and list of tags supported by the script m4_defun([_LT_LIBTOOL_TAGS], [_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl -available_tags="_LT_TAGS"dnl +available_tags='_LT_TAGS'dnl ]) @@ -474,7 +484,7 @@ m4_ifval([$2], [_$2])[]m4_popdef([_libto # _LT_LIBTOOL_CONFIG_VARS # ----------------------- # Produce commented declarations of non-tagged libtool config variables -# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' +# suitable for insertion in the LIBTOOL CONFIG section of the 'libtool' # script. Tagged libtool config variables (even for the LIBTOOL CONFIG # section) are produced by _LT_LIBTOOL_TAG_VARS. m4_defun([_LT_LIBTOOL_CONFIG_VARS], @@ -500,8 +510,8 @@ m4_define([_LT_TAGVAR], [m4_ifval([$2], # Send accumulated output to $CONFIG_STATUS. Thanks to the lists of # variables for single and double quote escaping we saved from calls # to _LT_DECL, we can put quote escaped variables declarations -# into `config.status', and then the shell code to quote escape them in -# for loops in `config.status'. Finally, any additional code accumulated +# into 'config.status', and then the shell code to quote escape them in +# for loops in 'config.status'. Finally, any additional code accumulated # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. m4_defun([_LT_CONFIG_COMMANDS], [AC_PROVIDE_IFELSE([LT_OUTPUT], @@ -547,7 +557,7 @@ for var in lt_decl_all_varnames([[ \ ]], lt_decl_quote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" @@ -560,7 +570,7 @@ for var in lt_decl_all_varnames([[ \ ]], lt_decl_dquote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" @@ -576,7 +586,7 @@ _LT_OUTPUT_LIBTOOL_INIT # Generate a child script FILE with all initialization necessary to # reuse the environment learned by the parent script, and make the # file executable. If COMMENT is supplied, it is inserted after the -# `#!' sequence but before initialization text begins. After this +# '#!' sequence but before initialization text begins. After this # macro, additional text can be appended to FILE to form the body of # the child script. The macro ends with non-zero status if the # file could not be fully written (such as if the disk is full). @@ -598,7 +608,7 @@ AS_SHELL_SANITIZE _AS_PREPARE exec AS_MESSAGE_FD>&1 _ASEOF -test $lt_write_fail = 0 && chmod +x $1[]dnl +test 0 = "$lt_write_fail" && chmod +x $1[]dnl m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT # LT_OUTPUT @@ -621,7 +631,7 @@ exec AS_MESSAGE_LOG_FD>>config.log } >&AS_MESSAGE_LOG_FD lt_cl_help="\ -\`$as_me' creates a local libtool stub from the current configuration, +'$as_me' creates a local libtool stub from the current configuration, for use in further configure time tests before the real libtool is generated. @@ -643,7 +653,7 @@ Copyright (C) 2011 Free Software Foundat This config.lt script is free software; the Free Software Foundation gives unlimited permision to copy, distribute and modify it." -while test $[#] != 0 +while test 0 != $[#] do case $[1] in --version | --v* | -V ) @@ -656,10 +666,10 @@ do lt_cl_silent=: ;; -*) AC_MSG_ERROR([unrecognized option: $[1] -Try \`$[0] --help' for more information.]) ;; +Try '$[0] --help' for more information.]) ;; *) AC_MSG_ERROR([unrecognized argument: $[1] -Try \`$[0] --help' for more information.]) ;; +Try '$[0] --help' for more information.]) ;; esac shift done @@ -685,7 +695,7 @@ chmod +x "$CONFIG_LT" # open by configure. Here we exec the FD to /dev/null, effectively closing # config.log, so it can be properly (re)opened and appended to by config.lt. lt_cl_success=: -test "$silent" = yes && +test yes = "$silent" && lt_config_lt_args="$lt_config_lt_args --quiet" exec AS_MESSAGE_LOG_FD>/dev/null $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false @@ -705,27 +715,30 @@ m4_defun([_LT_CONFIG], _LT_CONFIG_SAVE_COMMANDS([ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl m4_if(_LT_TAG, [C], [ - # See if we are running on zsh, and set the options which allow our + # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then + if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi - cfgfile="${ofile}T" + cfgfile=${ofile}T trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL - -# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# Generated automatically by $as_me ($PACKAGE) $VERSION # NOTE: Changes made to this file will be lost: look at ltmain.sh. -# + +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit, 1996 + _LT_COPYING _LT_LIBTOOL_TAGS +# Configured defaults for sys_lib_dlsearch_path munging. +: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} + # ### BEGIN LIBTOOL CONFIG _LT_LIBTOOL_CONFIG_VARS _LT_LIBTOOL_TAG_VARS @@ -733,13 +746,24 @@ _LT_LIBTOOL_TAG_VARS _LT_EOF + cat <<'_LT_EOF' >> "$cfgfile" + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE + +_LT_PREPARE_MUNGE_PATH_LIST +_LT_PREPARE_CC_BASENAME + +# ### END FUNCTIONS SHARED WITH CONFIGURE + +_LT_EOF + case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then +if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi @@ -756,8 +780,6 @@ _LT_EOF sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) - _LT_PROG_REPLACE_SHELLFNS - mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" @@ -775,7 +797,6 @@ _LT_EOF [m4_if([$1], [], [ PACKAGE='$PACKAGE' VERSION='$VERSION' - TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile'], []) ])dnl /_LT_CONFIG_SAVE_COMMANDS @@ -974,7 +995,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECK AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], [lt_cv_apple_cc_single_mod=no - if test -z "${LT_MULTI_MODULE}"; then + if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the @@ -992,7 +1013,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECK cat conftest.err >&AS_MESSAGE_LOG_FD # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. - elif test -f libconftest.dylib && test $_lt_result -eq 0; then + elif test -f libconftest.dylib && test 0 = "$_lt_result"; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&AS_MESSAGE_LOG_FD @@ -1010,7 +1031,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECK AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [lt_cv_ld_exported_symbols_list=yes], [lt_cv_ld_exported_symbols_list=no]) - LDFLAGS="$save_LDFLAGS" + LDFLAGS=$save_LDFLAGS ]) AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], @@ -1032,7 +1053,7 @@ _LT_EOF _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD - elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then + elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then lt_cv_ld_force_load=yes else cat conftest.err >&AS_MESSAGE_LOG_FD @@ -1042,32 +1063,32 @@ _LT_EOF ]) case $host_os in rhapsody* | darwin1.[[012]]) - _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # 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]]*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - 10.[[012]]*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + 10.[[012]][[,.]]*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; 10.*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; esac ;; esac - if test "$lt_cv_apple_cc_single_mod" = "yes"; then + if test yes = "$lt_cv_apple_cc_single_mod"; then _lt_dar_single_mod='$single_module' fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; then - _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + if test yes = "$lt_cv_ld_exported_symbols_list"; then + _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' fi - if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then + if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= @@ -1087,29 +1108,29 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES], _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - if test "$lt_cv_ld_force_load" = "yes"; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + if test yes = "$lt_cv_ld_force_load"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) else _LT_TAGVAR(whole_archive_flag_spec, $1)='' fi _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" + _LT_TAGVAR(allow_undefined_flag, $1)=$_lt_dar_allow_undefined case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; + ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac - if test "$_lt_dar_can_shared" = "yes"; then + if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all - _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" m4_if([$1], [CXX], -[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then - _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" +[ if test yes != "$lt_cv_apple_cc_single_mod"; then + _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" fi ],[]) else @@ -1129,7 +1150,7 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES], # Allow to override them for all tags through lt_cv_aix_libpath. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl -if test "${lt_cv_aix_libpath+set}" = set; then +if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], @@ -1147,7 +1168,7 @@ else _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib fi ]) aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) @@ -1167,8 +1188,8 @@ m4_define([_LT_SHELL_INIT], # ----------------------- # Find how we can fake an echo command that does not interpret backslash. # In particular, with Autoconf 2.60 or later we add some code to the start -# of the generated configure script which will find a shell with a builtin -# printf (which we can use as an echo command). +# of the generated configure script that will find a shell with a builtin +# printf (that we can use as an echo command). m4_defun([_LT_PROG_ECHO_BACKSLASH], [ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO @@ -1196,10 +1217,10 @@ fi # Invoke $ECHO with all args, space-separated. func_echo_all () { - $ECHO "$*" + $ECHO "$*" } -case "$ECHO" in +case $ECHO in printf*) AC_MSG_RESULT([printf]) ;; print*) AC_MSG_RESULT([print -r]) ;; *) AC_MSG_RESULT([cat]) ;; @@ -1225,16 +1246,17 @@ _LT_DECL([], [ECHO], [1], [An echo progr AC_DEFUN([_LT_WITH_SYSROOT], [AC_MSG_CHECKING([for sysroot]) AC_ARG_WITH([sysroot], -[ --with-sysroot[=DIR] Search for dependent libraries within DIR - (or the compiler's sysroot if not specified).], +[AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], + [Search for dependent libraries within DIR (or the compiler's sysroot + if not specified).])], [], [with_sysroot=no]) dnl lt_sysroot will always be passed unquoted. We quote it here dnl in case the user passed a directory name. lt_sysroot= -case ${with_sysroot} in #( +case $with_sysroot in #( yes) - if test "$GCC" = yes; then + if test yes = "$GCC"; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( @@ -1244,14 +1266,14 @@ case ${with_sysroot} in #( no|'') ;; #( *) - AC_MSG_RESULT([${with_sysroot}]) + AC_MSG_RESULT([$with_sysroot]) AC_MSG_ERROR([The sysroot must be an absolute path.]) ;; esac AC_MSG_RESULT([${lt_sysroot:-no}]) _LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl -[dependent libraries, and in which our libraries should be installed.])]) +[dependent libraries, and where our libraries should be installed.])]) # _LT_ENABLE_LOCK # --------------- @@ -1259,31 +1281,33 @@ m4_defun([_LT_ENABLE_LOCK], [AC_ARG_ENABLE([libtool-lock], [AS_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes +test no = "$enable_libtool_lock" || enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) - # Find out which ABI we are using. + # Find out what ABI is being produced by ac_compile, and set mode + # options accordingly. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) - HPUX_IA64_MODE="32" + HPUX_IA64_MODE=32 ;; *ELF-64*) - HPUX_IA64_MODE="64" + HPUX_IA64_MODE=64 ;; esac fi rm -rf conftest* ;; *-*-irix6*) - # Find out which ABI we are using. + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then - if test "$lt_cv_prog_gnu_ld" = yes; then + if test yes = "$lt_cv_prog_gnu_ld"; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" @@ -1312,9 +1336,46 @@ ia64-*-hpux*) rm -rf conftest* ;; +mips64*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + emul=elf + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + emul="${emul}32" + ;; + *64-bit*) + emul="${emul}64" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *MSB*) + emul="${emul}btsmip" + ;; + *LSB*) + emul="${emul}ltsmip" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *N32*) + emul="${emul}n32" + ;; + esac + LD="${LD-ld} -m $emul" + fi + rm -rf conftest* + ;; + x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out which ABI we are using. + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. Note that the listed cases only cover the + # situations where additional linker options are needed (such as when + # doing 32-bit compilation for a host where ld defaults to 64-bit, or + # vice versa); the common cases where no linker options are needed do + # not appear in the list. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in @@ -1333,10 +1394,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux* ;; esac ;; - powerpc64le-*) + powerpc64le-*linux*) LD="${LD-ld} -m elf32lppclinux" ;; - powerpc64-*) + powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) @@ -1355,10 +1416,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux* x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; - powerpcle-*) + powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; - powerpc-*) + powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) @@ -1376,19 +1437,20 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux* *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" + SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) - if test x"$lt_cv_cc_needs_belf" != x"yes"; then + if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" + CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) - # Find out which ABI we are using. + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in @@ -1396,7 +1458,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux* case $lt_cv_prog_gnu_ld in yes*) case $host in - i?86-*-solaris*) + i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) @@ -1405,7 +1467,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux* esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then - LD="${LD-ld}_sol2" + LD=${LD-ld}_sol2 fi ;; *) @@ -1421,7 +1483,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux* ;; esac -need_locks="$enable_libtool_lock" +need_locks=$enable_libtool_lock ])# _LT_ENABLE_LOCK @@ -1440,11 +1502,11 @@ AC_CACHE_CHECK([for archiver @FILE suppo [echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([lt_ar_try]) - if test "$ac_status" -eq 0; then + if test 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a AC_TRY_EVAL([lt_ar_try]) - if test "$ac_status" -ne 0; then + if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ fi fi @@ -1452,7 +1514,7 @@ AC_CACHE_CHECK([for archiver @FILE suppo ]) ]) -if test "x$lt_cv_ar_at_file" = xno; then +if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file @@ -1483,7 +1545,7 @@ old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in - openbsd*) + bitrig* | openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) @@ -1519,7 +1581,7 @@ AC_CACHE_CHECK([$1], [$2], [$2=no m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$3" + lt_compiler_flag="$3" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins @@ -1546,7 +1608,7 @@ AC_CACHE_CHECK([$1], [$2], $RM conftest* ]) -if test x"[$]$2" = xyes; then +if test yes = "[$]$2"; then m4_if([$5], , :, [$5]) else m4_if([$6], , :, [$6]) @@ -1568,7 +1630,7 @@ AC_DEFUN([_LT_LINKER_OPTION], m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no - save_LDFLAGS="$LDFLAGS" + save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $3" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then @@ -1587,10 +1649,10 @@ AC_CACHE_CHECK([$1], [$2], fi fi $RM -r conftest* - LDFLAGS="$save_LDFLAGS" + LDFLAGS=$save_LDFLAGS ]) -if test x"[$]$2" = xyes; then +if test yes = "[$]$2"; then m4_if([$4], , :, [$4]) else m4_if([$5], , :, [$5]) @@ -1611,7 +1673,7 @@ AC_DEFUN([LT_CMD_MAX_LEN], AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 - teststring="ABCD" + teststring=ABCD case $build_os in msdosdjgpp*) @@ -1651,7 +1713,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [d lt_cv_sys_max_cmd_len=8192; ;; - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` @@ -1702,22 +1764,22 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [d *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ - test undefined != "$lt_cv_sys_max_cmd_len"; then + test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8 ; do + for i in 1 2 3 4 5 6 7 8; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. - while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ + while { test X`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && - test $i != 17 # 1/2 MB should be enough + test 17 != "$i" # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring @@ -1733,7 +1795,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [d ;; esac ]) -if test -n $lt_cv_sys_max_cmd_len ; then +if test -n "$lt_cv_sys_max_cmd_len"; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) @@ -1761,7 +1823,7 @@ m4_defun([_LT_HEADER_DLFCN], # ---------------------------------------------------------------- m4_defun([_LT_TRY_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl -if test "$cross_compiling" = yes; then : +if test yes = "$cross_compiling"; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 @@ -1808,9 +1870,9 @@ else # endif #endif -/* When -fvisbility=hidden is used, assume the code has been annotated +/* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif @@ -1836,7 +1898,7 @@ int main () return status; }] _LT_EOF - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then + if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in @@ -1857,7 +1919,7 @@ rm -fr conftest* # ------------------ AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl -if test "x$enable_dlopen" != xyes; then +if test yes != "$enable_dlopen"; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown @@ -1867,44 +1929,52 @@ else case $host_os in beos*) - lt_cv_dlopen="load_add_on" + lt_cv_dlopen=load_add_on lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) - lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen=LoadLibrary lt_cv_dlopen_libs= ;; cygwin*) - lt_cv_dlopen="dlopen" + lt_cv_dlopen=dlopen lt_cv_dlopen_libs= ;; darwin*) - # if libdl is installed we need to link against it + # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ - lt_cv_dlopen="dyld" + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[ + lt_cv_dlopen=dyld lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; + tpf*) + # Don't try to run any link tests for TPF. We know it's impossible + # because TPF is a cross-compiler, and we know how we open DSOs. + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + lt_cv_dlopen_self=no + ;; + *) AC_CHECK_FUNC([shl_load], - [lt_cv_dlopen="shl_load"], + [lt_cv_dlopen=shl_load], [AC_CHECK_LIB([dld], [shl_load], - [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], + [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld], [AC_CHECK_FUNC([dlopen], - [lt_cv_dlopen="dlopen"], + [lt_cv_dlopen=dlopen], [AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl], [AC_CHECK_LIB([svld], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld], [AC_CHECK_LIB([dld], [dld_link], - [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) + [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld]) ]) ]) ]) @@ -1913,21 +1983,21 @@ else ;; esac - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else + if test no = "$lt_cv_dlopen"; then enable_dlopen=no + else + enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + save_CPPFLAGS=$CPPFLAGS + test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - save_LDFLAGS="$LDFLAGS" + save_LDFLAGS=$LDFLAGS wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - save_LIBS="$LIBS" + save_LIBS=$LIBS LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], @@ -1937,7 +2007,7 @@ else lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) - if test "x$lt_cv_dlopen_self" = xyes; then + if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl @@ -1947,9 +2017,9 @@ else ]) fi - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" + CPPFLAGS=$save_CPPFLAGS + LDFLAGS=$save_LDFLAGS + LIBS=$save_LIBS ;; esac @@ -2041,8 +2111,8 @@ m4_defun([_LT_COMPILER_FILE_LOCKS], m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_COMPILER_C_O([$1]) -hard_links="nottested" -if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then +hard_links=nottested +if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes @@ -2052,8 +2122,8 @@ if test "$_LT_TAGVAR(lt_cv_prog_compiler ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) - if test "$hard_links" = no; then - AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) + if test no = "$hard_links"; then + AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe]) need_locks=warn fi else @@ -2080,8 +2150,8 @@ objdir=$lt_cv_objdir _LT_DECL([], [objdir], [0], [The name of the directory that contains temporary libtool files])dnl m4_pattern_allow([LT_OBJDIR])dnl -AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", - [Define to the sub-directory in which libtool stores uninstalled libraries.]) +AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/", + [Define to the sub-directory where libtool stores uninstalled libraries.]) ])# _LT_CHECK_OBJDIR @@ -2093,15 +2163,15 @@ m4_defun([_LT_LINKER_HARDCODE_LIBPATH], _LT_TAGVAR(hardcode_action, $1)= if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || test -n "$_LT_TAGVAR(runpath_var, $1)" || - test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then + test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then # We can hardcode non-existent directories. - if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && + if test no != "$_LT_TAGVAR(hardcode_direct, $1)" && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && - test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then + ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" && + test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; then # Linking always hardcodes the temporary library directory. _LT_TAGVAR(hardcode_action, $1)=relink else @@ -2115,12 +2185,12 @@ else fi AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) -if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || - test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then +if test relink = "$_LT_TAGVAR(hardcode_action, $1)" || + test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then # Fast installation is not supported enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then +elif test yes = "$shlibpath_overrides_runpath" || + test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi @@ -2144,7 +2214,7 @@ else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) - if test -n "$STRIP" ; then + if test -n "$STRIP"; then striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) @@ -2162,6 +2232,47 @@ _LT_DECL([], [striplib], [1]) ])# _LT_CMD_STRIPLIB +# _LT_PREPARE_MUNGE_PATH_LIST +# --------------------------- +# Make sure func_munge_path_list() is defined correctly. +m4_defun([_LT_PREPARE_MUNGE_PATH_LIST], +[[# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x@S|@2 in + x) + ;; + *:) + eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" + ;; + x:*) + eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\" + ;; + *) + eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\" + ;; + esac +} +]])# _LT_PREPARE_PATH_LIST + + # _LT_SYS_DYNAMIC_LINKER([TAG]) # ----------------------------- # PORTME Fill in your ld.so characteristics @@ -2172,17 +2283,18 @@ m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ -if test "$GCC" = yes; then +if test yes = "$GCC"; then case $host_os in - darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; - *) lt_awk_arg="/^libraries:/" ;; + darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; + *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in - mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; - *) lt_sed_strip_eq="s,=/,/,g" ;; + mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;; + *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in @@ -2198,28 +2310,35 @@ if test "$GCC" = yes; then ;; esac # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary. + # and add multilib dir if necessary... lt_tmp_lt_search_path_spec= - lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + # ...but if some path component already ends with the multilib dir we assume + # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). + case "$lt_multi_os_dir; $lt_search_path_spec " in + "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) + lt_multi_os_dir= + ;; + esac for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path/$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" - else + if test -d "$lt_sys_path$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" + elif test -n "$lt_multi_os_dir"; then test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS=" "; FS="/|\n";} { - lt_foo=""; - lt_count=0; +BEGIN {RS = " "; FS = "/|\n";} { + lt_foo = ""; + lt_count = 0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { - lt_foo="/" $lt_i lt_foo; + lt_foo = "/" $lt_i lt_foo; } else { lt_count--; } @@ -2233,7 +2352,7 @@ BEGIN {RS=" "; FS="/|\n";} { # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; + $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else @@ -2242,7 +2361,7 @@ fi]) library_names_spec= libname_spec='lib$name' soname_spec= -shrext_cmds=".so" +shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= @@ -2259,14 +2378,17 @@ hardcode_into_libs=no # flags to be left without arguments need_version=unknown +AC_ARG_VAR([LT_SYS_LIBRARY_PATH], +[User-defined run-time library search path.]) + case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' + soname_spec='$libname$release$shared_ext$major' ;; aix[[4-9]]*) @@ -2274,41 +2396,91 @@ aix[[4-9]]*) need_lib_prefix=no need_version=no hardcode_into_libs=yes - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in + # the line '#! .'. This would cause the generated library to + # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in + # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a[(]lib.so.V[)]' # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)]" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)], lib.a[(]lib.so.V[)]" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a[(]lib.so.V[)], lib.so.V[(]$shared_archive_member_spec.o[)]" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac shlibpath_var=LIBPATH fi ;; @@ -2318,18 +2490,18 @@ amigaos*) powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) - library_names_spec='${libname}${shared_ext}' + library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; @@ -2337,8 +2509,8 @@ beos*) bsdi[[45]]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" @@ -2350,7 +2522,7 @@ bsdi[[45]]*) cygwin* | mingw* | pw32* | cegcc*) version_type=windows - shrext_cmds=".dll" + shrext_cmds=.dll need_version=no need_lib_prefix=no @@ -2359,8 +2531,8 @@ cygwin* | mingw* | pw32* | cegcc*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ @@ -2376,17 +2548,17 @@ cygwin* | mingw* | pw32* | cegcc*) case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' @@ -2395,8 +2567,8 @@ m4_if([$1], [],[ *,cl*) # Native MSVC libname_spec='$name' - soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - library_names_spec='${libname}.dll.lib' + soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' case $build_os in mingw*) @@ -2423,7 +2595,7 @@ m4_if([$1], [],[ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) - sys_lib_search_path_spec="$LIB" + sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` @@ -2436,8 +2608,8 @@ m4_if([$1], [],[ esac # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' @@ -2450,7 +2622,7 @@ m4_if([$1], [],[ *) # Assume MSVC wrapper - library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' + library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac @@ -2463,8 +2635,8 @@ darwin* | rhapsody*) version_type=darwin need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' + library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' + soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' @@ -2477,8 +2649,8 @@ dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; @@ -2496,12 +2668,13 @@ freebsd* | dragonfly*) version_type=freebsd-$objformat case $version_type in freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac @@ -2531,10 +2704,10 @@ haiku*) need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=yes + shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; @@ -2552,14 +2725,15 @@ hpux9* | hpux10* | hpux11*) dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + if test 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' @@ -2567,8 +2741,8 @@ hpux9* | hpux10* | hpux11*) dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; @@ -2577,8 +2751,8 @@ hpux9* | hpux10* | hpux11*) dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... @@ -2591,8 +2765,8 @@ interix[[3-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no @@ -2603,7 +2777,7 @@ irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) - if test "$lt_cv_prog_gnu_ld" = yes; then + if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix @@ -2611,8 +2785,8 @@ irix5* | irix6* | nonstopux*) esac need_lib_prefix=no need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= @@ -2631,8 +2805,8 @@ irix5* | irix6* | nonstopux*) esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" + sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; @@ -2641,13 +2815,33 @@ linux*oldld* | linux*aout* | linux*coff* dynamic_linker=no ;; +linux*android*) + version_type=none # Android doesn't support versioned libraries. + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # Don't embed -rpath directories since the linker doesn't support them. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + ;; + # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no @@ -2672,7 +2866,12 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu # before this can be enabled. hardcode_into_libs=yes - # Append ld.so.conf contents to the search path + # Ideally, we could use ldconfig to report *all* directores which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" @@ -2704,12 +2903,12 @@ netbsd*) need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH @@ -2719,7 +2918,7 @@ netbsd*) newsos6) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; @@ -2728,58 +2927,68 @@ newsos6) version_type=qnx need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; -openbsd*) +openbsd* | bitrig*) version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" + sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[[89]] | openbsd2.[[89]].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + need_version=no else - shlibpath_overrides_runpath=yes + need_version=yes fi + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' - shrext_cmds=".dll" + version_type=windows + shrext_cmds=.dll + need_version=no need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) @@ -2790,8 +2999,8 @@ solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes @@ -2801,11 +3010,11 @@ solaris*) sunos4*) version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then + if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes @@ -2813,8 +3022,8 @@ sunos4*) sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) @@ -2835,24 +3044,24 @@ sysv4 | sysv4.3*) ;; sysv4*MP*) - if test -d /usr/nec ;then + if test -d /usr/nec; then version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' + library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' + soname_spec='$libname$shared_ext.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf + version_type=sco need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then + if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' @@ -2870,7 +3079,7 @@ tpf*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes @@ -2878,8 +3087,8 @@ tpf*) uts4*) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; @@ -2888,20 +3097,30 @@ uts4*) ;; esac AC_MSG_RESULT([$dynamic_linker]) -test "$dynamic_linker" = no && can_build_shared=no +test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then +if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then + sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" + +if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then + sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + _LT_DECL([], [variables_saved_for_relink], [1], [Variables whose values should be saved in libtool wrapper scripts and restored at link time]) @@ -2934,39 +3153,41 @@ _LT_DECL([], [hardcode_into_libs], [0], [Whether we should hardcode library paths into libraries]) _LT_DECL([], [sys_lib_search_path_spec], [2], [Compile-time system search path for libraries]) -_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], - [Run-time system search path for libraries]) +_LT_DECL([sys_lib_dlsearch_path_spec], [configure_time_dlsearch_path], [2], + [Detected run-time system search path for libraries]) +_LT_DECL([], [configure_time_lt_sys_library_path], [2], + [Explicit LT_SYS_LIBRARY_PATH set during ./configure time]) ])# _LT_SYS_DYNAMIC_LINKER # _LT_PATH_TOOL_PREFIX(TOOL) # -------------------------- -# find a file program which can recognize shared library +# find a file program that can recognize shared library AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="m4_if([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$1; then - lt_cv_path_MAGIC_CMD="$ac_dir/$1" + if test -f "$ac_dir/$1"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : @@ -2989,11 +3210,11 @@ _LT_EOF break fi done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac]) -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else @@ -3011,7 +3232,7 @@ dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) # _LT_PATH_MAGIC # -------------- -# find a file program which can recognize a shared library +# find a file program that can recognize a shared library m4_defun([_LT_PATH_MAGIC], [_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then @@ -3038,16 +3259,16 @@ m4_require([_LT_PROG_ECHO_BACKSLASH])dnl AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], - [test "$withval" = no || with_gnu_ld=yes], + [test no = "$withval" || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld -if test "$GCC" = yes; then +if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw + # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; @@ -3061,7 +3282,7 @@ if test "$GCC" = yes; then while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done - test -z "$LD" && LD="$ac_prog" + test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. @@ -3072,37 +3293,37 @@ if test "$GCC" = yes; then with_gnu_ld=unknown ;; esac -elif test "$with_gnu_ld" = yes; then +elif test yes = "$with_gnu_ld"; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" + lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 conftest.i +cat conftest.i conftest.i >conftest2.i +: ${lt_DD:=$DD} +AC_PATH_PROGS_FEATURE_CHECK([lt_DD], [dd], +[if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: +fi]) +rm -f conftest.i conftest2.i conftest.out]) +])# _LT_PATH_DD + + +# _LT_CMD_TRUNCATE +# ---------------- +# find command to truncate a binary pipe +m4_defun([_LT_CMD_TRUNCATE], +[m4_require([_LT_PATH_DD]) +AC_CACHE_CHECK([how to truncate binary pipes], [lt_cv_truncate_bin], +[printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +lt_cv_truncate_bin= +if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" +fi +rm -f conftest.i conftest2.i conftest.out +test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"]) +_LT_DECL([lt_truncate_bin], [lt_cv_truncate_bin], [1], + [Command to truncate a binary pipe]) +])# _LT_CMD_TRUNCATE + + # _LT_CHECK_MAGIC_METHOD # ---------------------- # how to check for library dependencies @@ -3188,13 +3446,13 @@ lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. -# `unknown' -- same as none, but documents that we really don't know. +# 'unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path -# which responds to the $file_magic_cmd with a given extended regex. -# If you have `file' or equivalent on your system and you're not sure -# whether `pass_all' will *always* work, you probably want this one. +# that responds to the $file_magic_cmd with a given extended regex. +# If you have 'file' or equivalent on your system and you're not sure +# whether 'pass_all' will *always* work, you probably want this one. case $host_os in aix[[4-9]]*) @@ -3221,8 +3479,7 @@ mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. - # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. - if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then + if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else @@ -3318,8 +3575,8 @@ newos6*) lt_cv_deplibs_check_method=pass_all ;; -openbsd*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +openbsd* | bitrig*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' @@ -3372,6 +3629,9 @@ sysv4 | sysv4.3*) tpf*) lt_cv_deplibs_check_method=pass_all ;; +os2*) + lt_cv_deplibs_check_method=pass_all + ;; esac ]) @@ -3412,33 +3672,38 @@ AC_DEFUN([LT_PATH_NM], AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. - lt_cv_path_NM="$NM" + lt_cv_path_NM=$NM else - lt_nm_to_check="${ac_tool_prefix}nm" + lt_nm_to_check=${ac_tool_prefix}nm if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/$lt_tmp_nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + tmp_nm=$ac_dir/$lt_tmp_nm + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # Adding the 'sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) + # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty + case $build_os in + mingw*) lt_bad_file=conftest.nm/nofile ;; + *) lt_bad_file=/dev/null ;; + esac + case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in + *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" - break + break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" - break + break 2 ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but @@ -3449,21 +3714,21 @@ else esac fi done - IFS="$lt_save_ifs" + IFS=$lt_save_ifs done : ${lt_cv_path_NM=no} fi]) -if test "$lt_cv_path_NM" != "no"; then - NM="$lt_cv_path_NM" +if test no != "$lt_cv_path_NM"; then + NM=$lt_cv_path_NM else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) - case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in + case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in *COFF*) - DUMPBIN="$DUMPBIN -symbols" + DUMPBIN="$DUMPBIN -symbols -headers" ;; *) DUMPBIN=: @@ -3471,8 +3736,8 @@ else esac fi AC_SUBST([DUMPBIN]) - if test "$DUMPBIN" != ":"; then - NM="$DUMPBIN" + if test : != "$DUMPBIN"; then + NM=$DUMPBIN fi fi test -z "$NM" && NM=nm @@ -3518,8 +3783,8 @@ lt_cv_sharedlib_from_linklib_cmd, case $host_os in cygwin* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh - # decide which to use based on capabilities of $DLLTOOL + # two different shell functions defined in ltmain.sh; + # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib @@ -3531,7 +3796,7 @@ cygwin* | mingw* | pw32* | cegcc*) ;; *) # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd="$ECHO" + lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac ]) @@ -3558,13 +3823,28 @@ AC_CACHE_CHECK([if $MANIFEST_TOOL is a m lt_cv_path_mainfest_tool=yes fi rm -f conftest*]) -if test "x$lt_cv_path_mainfest_tool" != xyes; then +if test yes != "$lt_cv_path_mainfest_tool"; then MANIFEST_TOOL=: fi _LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl ])# _LT_PATH_MANIFEST_TOOL +# _LT_DLL_DEF_P([FILE]) +# --------------------- +# True iff FILE is a Windows DLL '.def' file. +# Keep in sync with func_dll_def_p in the libtool script +AC_DEFUN([_LT_DLL_DEF_P], +[dnl + test DEF = "`$SED -n dnl + -e '\''s/^[[ ]]*//'\'' dnl Strip leading whitespace + -e '\''/^\(;.*\)*$/d'\'' dnl Delete empty lines and comments + -e '\''s/^\(EXPORTS\|LIBRARY\)\([[ ]].*\)*$/DEF/p'\'' dnl + -e q dnl Only consider the first "real" line + $1`" dnl +])# _LT_DLL_DEF_P + + # LT_LIB_M # -------- # check for math library @@ -3576,11 +3856,11 @@ case $host in # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) - AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw) AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) - AC_CHECK_LIB(m, cos, LIBM="-lm") + AC_CHECK_LIB(m, cos, LIBM=-lm) ;; esac AC_SUBST([LIBM]) @@ -3599,7 +3879,7 @@ m4_defun([_LT_COMPILER_NO_RTTI], _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= -if test "$GCC" = yes; then +if test yes = "$GCC"; then case $cc_basename in nvcc*) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; @@ -3651,7 +3931,7 @@ cygwin* | mingw* | pw32* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then symcode='[[ABCDEGRST]]' fi ;; @@ -3684,14 +3964,44 @@ case `$NM -V 2>&1` in symcode='[[ABCDGIRSTW]]' ;; esac +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Gets list of data symbols to import. + lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" + # Adjust the below global symbol transforms to fixup imported variables. + lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" + lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" + lt_c_name_lib_hook="\ + -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ + -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" +else + # Disable hooks by default. + lt_cv_sys_global_symbol_to_import= + lt_cdecl_hook= + lt_c_name_hook= + lt_c_name_lib_hook= +fi + # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" +lt_cv_sys_global_symbol_to_cdecl="sed -n"\ +$lt_cdecl_hook\ +" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ +$lt_c_name_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" + +# Transform an extracted symbol line into symbol name with lib prefix and +# symbol address. +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ +$lt_c_name_lib_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" # Handle CRLF in mingw tool chain opt_cr= @@ -3709,21 +4019,24 @@ for ac_symprfx in "" "_"; do # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function - # and D for any global variable. + # Fake it for dumpbin and say T for any non-static function, + # D for any global variable and I for any imported variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK ['"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ +" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ +" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ -" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ -" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ -" s[1]~/^[@?]/{print s[1], s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ +" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ +" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ +" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx]" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" @@ -3763,11 +4076,11 @@ _LT_EOF if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -/* DATA imports from DLLs on WIN32 con't be const, because runtime +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT@&t@_DLSYM_CONST -#elif defined(__osf__) +#elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT@&t@_DLSYM_CONST #else @@ -3793,7 +4106,7 @@ lt__PROGRAM__LTX_preloaded_symbols[[]] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; @@ -3813,9 +4126,9 @@ _LT_EOF mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS - LIBS="conftstm.$ac_objext" + LIBS=conftstm.$ac_objext CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then + if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS @@ -3836,7 +4149,7 @@ _LT_EOF rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then + if test yes = "$pipe_works"; then break else lt_cv_sys_global_symbol_pipe= @@ -3863,12 +4176,16 @@ _LT_DECL([global_symbol_pipe], [lt_cv_sy [Take the output of nm and produce a listing of raw symbols and C names]) _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], [Transform the output of nm in a proper C declaration]) +_LT_DECL([global_symbol_to_import], [lt_cv_sys_global_symbol_to_import], [1], + [Transform the output of nm into a list of symbols to manually relocate]) _LT_DECL([global_symbol_to_c_name_address], [lt_cv_sys_global_symbol_to_c_name_address], [1], [Transform the output of nm in a C name address pair]) _LT_DECL([global_symbol_to_c_name_address_lib_prefix], [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], [Transform the output of nm in a C name address pair when lib prefix is needed]) +_LT_DECL([nm_interface], [lt_cv_nm_interface], [1], + [The name lister interface]) _LT_DECL([], [nm_file_list_spec], [1], [Specify filename containing input files for $NM]) ]) # _LT_CMD_GLOBAL_SYMBOLS @@ -3884,17 +4201,18 @@ _LT_TAGVAR(lt_prog_compiler_static, $1)= m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. - if test "$GXX" = yes; then + if test yes = "$GXX"; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; amigaos*) @@ -3905,8 +4223,8 @@ m4_if([$1], [CXX], [ ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac @@ -3922,6 +4240,11 @@ m4_if([$1], [CXX], [ # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac ;; darwin* | rhapsody*) # PIC is the default on this platform @@ -3971,7 +4294,7 @@ m4_if([$1], [CXX], [ case $host_os in aix[[4-9]]*) # All AIX code is PIC. - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else @@ -4012,14 +4335,14 @@ m4_if([$1], [CXX], [ case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - if test "$host_cpu" != ia64; then + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' + if test ia64 != "$host_cpu"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default @@ -4056,7 +4379,7 @@ m4_if([$1], [CXX], [ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; ecpc* ) - # old Intel C++ for x86_64 which still supported -KPIC. + # old Intel C++ for x86_64, which still supported -KPIC. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' @@ -4201,17 +4524,18 @@ m4_if([$1], [CXX], [ fi ], [ - if test "$GCC" = yes; then + if test yes = "$GCC"; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; amigaos*) @@ -4222,8 +4546,8 @@ m4_if([$1], [CXX], [ ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac @@ -4240,6 +4564,11 @@ m4_if([$1], [CXX], [ # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac ;; darwin* | rhapsody*) @@ -4310,7 +4639,7 @@ m4_if([$1], [CXX], [ case $host_os in aix*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else @@ -4318,11 +4647,30 @@ m4_if([$1], [CXX], [ fi ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + case $cc_basename in + nagfor*) + # NAG Fortran compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac ;; hpux9* | hpux10* | hpux11*) @@ -4338,7 +4686,7 @@ m4_if([$1], [CXX], [ ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) @@ -4349,7 +4697,7 @@ m4_if([$1], [CXX], [ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in - # old Intel for x86_64 which still supported -KPIC. + # old Intel for x86_64, which still supported -KPIC. ecc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' @@ -4374,6 +4722,12 @@ m4_if([$1], [CXX], [ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) @@ -4471,7 +4825,7 @@ m4_if([$1], [CXX], [ ;; sysv4*MP*) - if test -d /usr/nec ;then + if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi @@ -4500,7 +4854,7 @@ m4_if([$1], [CXX], [ fi ]) case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: + # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; @@ -4566,17 +4920,21 @@ m4_if([$1], [CXX], [ case $host_os in aix[[4-9]]*) # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global defined - # symbols, whereas GNU nm marks them as "W". + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi ;; pw32*) - _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" + _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds ;; cygwin* | mingw* | cegcc*) case $cc_basename in @@ -4625,9 +4983,9 @@ m4_if([$1], [CXX], [ # included in the symbol list _LT_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. + # it will be wrapped by ' (' and ')$', so one must not match beginning or + # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', + # as well as any symbol that contains 'd'. _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if @@ -4643,7 +5001,7 @@ dnl Note also adjust exclude_expsyms for # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. - if test "$GCC" != yes; then + if test yes != "$GCC"; then with_gnu_ld=no fi ;; @@ -4651,7 +5009,7 @@ dnl Note also adjust exclude_expsyms for # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; - openbsd*) + openbsd* | bitrig*) with_gnu_ld=no ;; linux* | k*bsd*-gnu | gnu*) @@ -4664,7 +5022,7 @@ dnl Note also adjust exclude_expsyms for # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no - if test "$with_gnu_ld" = yes; then + if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility @@ -4686,24 +5044,24 @@ dnl Note also adjust exclude_expsyms for esac fi - if test "$lt_use_gnu_ld_interface" = yes; then + if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' + wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no - case `$LD -v 2>&1` in + case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... @@ -4716,7 +5074,7 @@ dnl Note also adjust exclude_expsyms for case $host_os in aix[[3-9]]*) # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then + if test ia64 != "$host_cpu"; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 @@ -4735,7 +5093,7 @@ _LT_EOF case $host_cpu in powerpc) # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) @@ -4751,7 +5109,7 @@ _LT_EOF _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi @@ -4761,7 +5119,7 @@ _LT_EOF # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes @@ -4769,61 +5127,89 @@ _LT_EOF _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no - if test "$host_os" = linux-dietlibc; then + if test linux-dietlibc = "$host_os"; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test "$tmp_diet" = no + && test no = "$tmp_diet" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; @@ -4834,42 +5220,47 @@ _LT_EOF lf95*) # Lahey Fortran 8.1 _LT_TAGVAR(whole_archive_flag_spec, $1)= tmp_sharedflag='--shared' ;; + nagfor*) # NAGFOR 5.3 + tmp_sharedflag='-Wl,-shared' ;; xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac - _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then + if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in + tcc*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic' + ;; xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then + if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac @@ -4883,8 +5274,8 @@ _LT_EOF _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; @@ -4902,8 +5293,8 @@ _LT_EOF _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi @@ -4915,7 +5306,7 @@ _LT_EOF _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify @@ -4930,9 +5321,9 @@ _LT_EOF # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi @@ -4949,15 +5340,15 @@ _LT_EOF *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac - if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then + if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then runpath_var= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= @@ -4973,7 +5364,7 @@ _LT_EOF # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_TAGVAR(hardcode_minus_L, $1)=yes - if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_TAGVAR(hardcode_direct, $1)=unsupported @@ -4981,34 +5372,57 @@ _LT_EOF ;; aix[[4-9]]*) - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' - no_entry_flag="" + no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global - # defined symbols, whereas GNU nm marks them as "W". + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then aix_use_runtimelinking=yes break fi done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi ;; esac @@ -5027,13 +5441,21 @@ _LT_EOF _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' + _LT_TAGVAR(file_list_spec, $1)='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # traditional, no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + ;; + esac - if test "$GCC" = yes; then + if test yes = "$GCC"; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` + collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then @@ -5052,62 +5474,80 @@ _LT_EOF ;; esac shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' + if test yes = "$aix_use_runtimelinking"; then + shared_flag="$shared_flag "'$wl-G' fi - _LT_TAGVAR(link_all_deplibs, $1)=no + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' else # not using gcc - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' else - shared_flag='${wl}-bM:SRE' + shared_flag='$wl-bM:SRE' fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' fi fi - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else - if test "$host_cpu" = ia64; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + if test ia64 = "$host_cpu"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' + if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds its shared libraries. - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' fi fi ;; @@ -5116,7 +5556,7 @@ _LT_EOF case $host_cpu in powerpc) # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) @@ -5146,16 +5586,17 @@ _LT_EOF # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" + shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes @@ -5164,18 +5605,18 @@ _LT_EOF # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' ;; *) # Assume MSVC wrapper @@ -5184,7 +5625,7 @@ _LT_EOF # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" + shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. @@ -5234,33 +5675,33 @@ _LT_EOF ;; hpux9*) - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' ;; hpux10*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + if test yes,no = "$GCC,$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes @@ -5268,25 +5709,25 @@ _LT_EOF ;; hpux11*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then + if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) m4_if($1, [], [ @@ -5294,14 +5735,14 @@ _LT_EOF # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) _LT_LINKER_OPTION([if $CC understands -b], _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], - [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], - [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) + [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) ;; esac fi - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in @@ -5312,7 +5753,7 @@ _LT_EOF *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. @@ -5323,16 +5764,16 @@ _LT_EOF ;; irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], [lt_cv_irix_exported_symbol], - [save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + [save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" AC_LINK_IFELSE( [AC_LANG_SOURCE( [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], @@ -5345,21 +5786,32 @@ _LT_EOF end]])])], [lt_cv_irix_exported_symbol=yes], [lt_cv_irix_exported_symbol=no]) - LDFLAGS="$save_LDFLAGS"]) - if test "$lt_cv_irix_exported_symbol" = yes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + LDFLAGS=$save_LDFLAGS]) + if test yes = "$lt_cv_irix_exported_symbol"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi + _LT_TAGVAR(link_all_deplibs, $1)=no else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes _LT_TAGVAR(link_all_deplibs, $1)=yes ;; + linux*) + case $cc_basename in + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + _LT_TAGVAR(ld_shlibs, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out @@ -5374,7 +5826,7 @@ _LT_EOF newsos6) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; @@ -5382,27 +5834,19 @@ _LT_EOF *nto* | *qnx*) ;; - openbsd*) + openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' else - case $host_os in - openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - ;; - esac + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' fi else _LT_TAGVAR(ld_shlibs, $1)=no @@ -5413,33 +5857,53 @@ _LT_EOF _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; osf3*) - if test "$GCC" = yes; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + if test yes = "$GCC"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + if test yes = "$GCC"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' @@ -5450,24 +5914,24 @@ _LT_EOF solaris*) _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' - if test "$GCC" = yes; then - wlarc='${wl}' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + if test yes = "$GCC"; then + wlarc='$wl' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' - _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) - wlarc='${wl}' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' + wlarc='$wl' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi @@ -5477,11 +5941,11 @@ _LT_EOF solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. GCC discards it without `$wl', + # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) - if test "$GCC" = yes; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + if test yes = "$GCC"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' fi @@ -5491,10 +5955,10 @@ _LT_EOF ;; sunos4*) - if test "x$host_vendor" = xsequent; then + if test sequent = "$host_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi @@ -5543,43 +6007,43 @@ _LT_EOF ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not + # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' runpath_var='LD_RUN_PATH' - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; @@ -5594,17 +6058,17 @@ _LT_EOF ;; esac - if test x$host_vendor = xsni; then + if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym' ;; esac fi fi ]) AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) -test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no +test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no _LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld @@ -5621,7 +6085,7 @@ x|xyes) # Assume -lc should be added _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - if test "$enable_shared" = yes && test "$GCC" = yes; then + if test yes,yes = "$GCC,$enable_shared"; then case $_LT_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. @@ -5701,12 +6165,12 @@ _LT_TAGDECL([], [hardcode_libdir_flag_sp _LT_TAGDECL([], [hardcode_libdir_separator], [1], [Whether we need a single "-rpath" flag with a separated argument]) _LT_TAGDECL([], [hardcode_direct], [0], - [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes + [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_direct_absolute], [0], - [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes + [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes DIR into the resulting binary and the resulting library dependency is - "absolute", i.e impossible to change by setting ${shlibpath_var} if the + "absolute", i.e impossible to change by setting $shlibpath_var if the library is relocated]) _LT_TAGDECL([], [hardcode_minus_L], [0], [Set to "yes" if using the -LDIR flag during linking hardcodes DIR @@ -5747,10 +6211,10 @@ dnl [Compiler flag to generate thread # ------------------------ # Ensure that the configuration variables for a C compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to `libtool'. +# the compiler configuration to 'libtool'. m4_defun([_LT_LANG_C_CONFIG], [m4_require([_LT_DECL_EGREP])dnl -lt_save_CC="$CC" +lt_save_CC=$CC AC_LANG_PUSH(C) # Source file extension for C test sources. @@ -5790,18 +6254,18 @@ if test -n "$compiler"; then LT_SYS_DLOPEN_SELF _LT_CMD_STRIPLIB - # Report which library types will actually be built + # Report what library types will actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no + test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) - test "$enable_shared" = yes && enable_static=no + test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' @@ -5809,8 +6273,12 @@ if test -n "$compiler"; then ;; aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac fi ;; esac @@ -5818,13 +6286,13 @@ if test -n "$compiler"; then AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes + test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_CONFIG($1) fi AC_LANG_POP -CC="$lt_save_CC" +CC=$lt_save_CC ])# _LT_LANG_C_CONFIG @@ -5832,14 +6300,14 @@ CC="$lt_save_CC" # -------------------------- # Ensure that the configuration variables for a C++ compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to `libtool'. +# the compiler configuration to 'libtool'. m4_defun([_LT_LANG_CXX_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl -if test -n "$CXX" && ( test "X$CXX" != "Xno" && - ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || - (test "X$CXX" != "Xg++"))) ; then +if test -n "$CXX" && ( test no != "$CXX" && + ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || + (test g++ != "$CXX"))); then AC_PROG_CXXCPP else _lt_caught_CXX_error=yes @@ -5881,7 +6349,7 @@ _LT_TAGVAR(objext, $1)=$objext # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_caught_CXX_error" != yes; then +if test yes != "$_lt_caught_CXX_error"; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" @@ -5923,35 +6391,35 @@ if test "$_lt_caught_CXX_error" != yes; if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately - if test "$GXX" = yes; then + if test yes = "$GXX"; then _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi - if test "$GXX" = yes; then + if test yes = "$GXX"; then # Set up default GNU C++ configuration LT_PATH_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. - if test "$with_gnu_ld" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + if test yes = "$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) - wlarc='${wl}' + wlarc='$wl' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi @@ -5987,18 +6455,30 @@ if test "$_lt_caught_CXX_error" != yes; _LT_TAGVAR(ld_shlibs, $1)=no ;; aix[[4-9]]*) - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' - no_entry_flag="" + no_entry_flag= else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do case $ld_flag in @@ -6008,6 +6488,13 @@ if test "$_lt_caught_CXX_error" != yes; ;; esac done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi ;; esac @@ -6026,13 +6513,21 @@ if test "$_lt_caught_CXX_error" != yes; _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' + _LT_TAGVAR(file_list_spec, $1)='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + ;; + esac - if test "$GXX" = yes; then + if test yes = "$GXX"; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` + collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then @@ -6050,64 +6545,84 @@ if test "$_lt_caught_CXX_error" != yes; fi esac shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' + if test yes = "$aix_use_runtimelinking"; then + shared_flag=$shared_flag' $wl-G' fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' else # not using gcc - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' else - shared_flag='${wl}-bM:SRE' + shared_flag='$wl-bM:SRE' fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' fi fi - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. _LT_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # The "-G" linker flag allows undefined symbols. + _LT_TAGVAR(no_undefined_flag, $1)='-bernotok' # Determine the default libpath from the value encoded in an empty # executable. _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else - if test "$host_cpu" = ia64; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + if test ia64 = "$host_cpu"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' + if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds its shared - # libraries. - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared + # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' fi fi ;; @@ -6117,7 +6632,7 @@ if test "$_lt_caught_CXX_error" != yes; _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi @@ -6145,57 +6660,58 @@ if test "$_lt_caught_CXX_error" != yes; # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" + shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - func_to_tool_file "$lt_outputfile"~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi @@ -6206,6 +6722,34 @@ if test "$_lt_caught_CXX_error" != yes; _LT_DARWIN_LINKER_FEATURES($1) ;; + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + dgux*) case $cc_basename in ec++*) @@ -6241,14 +6785,14 @@ if test "$_lt_caught_CXX_error" != yes; ;; haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; hpux9*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default @@ -6260,7 +6804,7 @@ if test "$_lt_caught_CXX_error" != yes; _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. @@ -6269,11 +6813,11 @@ if test "$_lt_caught_CXX_error" != yes; # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) - if test "$GXX" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + if test yes = "$GXX"; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no @@ -6283,15 +6827,15 @@ if test "$_lt_caught_CXX_error" != yes; ;; hpux10*|hpux11*) - if test $with_gnu_ld = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) ;; *) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' ;; esac fi @@ -6317,13 +6861,13 @@ if test "$_lt_caught_CXX_error" != yes; aCC*) case $host_cpu in hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists @@ -6334,20 +6878,20 @@ if test "$_lt_caught_CXX_error" != yes; # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) - if test "$GXX" = yes; then - if test $with_gnu_ld = no; then + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then case $host_cpu in hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi @@ -6362,22 +6906,22 @@ if test "$_lt_caught_CXX_error" != yes; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is @@ -6386,17 +6930,17 @@ if test "$_lt_caught_CXX_error" != yes; _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) - if test "$GXX" = yes; then - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' fi fi _LT_TAGVAR(link_all_deplibs, $1)=yes ;; esac - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes ;; @@ -6409,8 +6953,8 @@ if test "$_lt_caught_CXX_error" != yes; # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. @@ -6419,10 +6963,10 @@ if test "$_lt_caught_CXX_error" != yes; # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. @@ -6436,59 +6980,59 @@ if test "$_lt_caught_CXX_error" != yes; # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac - _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ - $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ - $RANLIB $oldlib' + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' ;; cxx*) # Compaq C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' @@ -6502,18 +7046,18 @@ if test "$_lt_caught_CXX_error" != yes; # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi ;; *) @@ -6521,10 +7065,10 @@ if test "$_lt_caught_CXX_error" != yes; *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes # Not sure whether something based on @@ -6582,22 +7126,17 @@ if test "$_lt_caught_CXX_error" != yes; _LT_TAGVAR(ld_shlibs, $1)=yes ;; - openbsd2*) - # C++ shared libraries are fairly broken - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - openbsd*) + openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else @@ -6613,9 +7152,9 @@ if test "$_lt_caught_CXX_error" != yes; # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using @@ -6633,17 +7172,17 @@ if test "$_lt_caught_CXX_error" != yes; cxx*) case $host in osf3*) - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' ;; *) _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ - $RM $lib.exp' + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ + $RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ;; esac @@ -6658,21 +7197,21 @@ if test "$_lt_caught_CXX_error" != yes; # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + if test yes,no = "$GXX,$with_gnu_ld"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' case $host in osf3*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; esac - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists @@ -6718,9 +7257,9 @@ if test "$_lt_caught_CXX_error" != yes; # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no @@ -6728,7 +7267,7 @@ if test "$_lt_caught_CXX_error" != yes; solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. + # but understands '-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; @@ -6745,30 +7284,30 @@ if test "$_lt_caught_CXX_error" != yes; ;; gcx*) # Green Hills C++ Compiler - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' + if test yes,no = "$GXX,$with_gnu_ld"; then + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else - # g++ 2.7 appears to require `-G' NOT `-shared' on this + # g++ 2.7 appears to require '-G' NOT '-shared' on this # platform. - _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when @@ -6776,11 +7315,11 @@ if test "$_lt_caught_CXX_error" != yes; output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir' case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' ;; esac fi @@ -6789,52 +7328,52 @@ if test "$_lt_caught_CXX_error" != yes; ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not + # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ - '"$_LT_TAGVAR(old_archive_cmds, $1)" + '"$_LT_TAGVAR(old_archive_cmds, $1)" _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ - '"$_LT_TAGVAR(reload_cmds, $1)" + '"$_LT_TAGVAR(reload_cmds, $1)" ;; *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; @@ -6865,10 +7404,10 @@ if test "$_lt_caught_CXX_error" != yes; esac AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) - test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no - _LT_TAGVAR(GCC, $1)="$GXX" - _LT_TAGVAR(LD, $1)="$LD" + _LT_TAGVAR(GCC, $1)=$GXX + _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change @@ -6895,7 +7434,7 @@ if test "$_lt_caught_CXX_error" != yes; lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -fi # test "$_lt_caught_CXX_error" != yes +fi # test yes != "$_lt_caught_CXX_error" AC_LANG_POP ])# _LT_LANG_CXX_CONFIG @@ -6917,13 +7456,14 @@ AC_REQUIRE([_LT_DECL_SED]) AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) func_stripname_cnf () { - case ${2} in - .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; + case @S|@2 in + .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;; + *) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;; esac } # func_stripname_cnf ])# _LT_FUNC_STRIPNAME_CNF + # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) # --------------------------------- # Figure out "hidden" library dependencies from verbose @@ -7007,13 +7547,13 @@ if AC_TRY_EVAL(ac_compile); then pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do - case ${prev}${p} in + case $prev$p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. - if test $p = "-L" || - test $p = "-R"; then + if test x-L = "$p" || + test x-R = "$p"; then prev=$p continue fi @@ -7029,16 +7569,16 @@ if AC_TRY_EVAL(ac_compile); then case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac - if test "$pre_test_object_deps_done" = no; then - case ${prev} in + if test no = "$pre_test_object_deps_done"; then + case $prev in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then - _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" + _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p else - _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" + _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p" fi ;; # The "-l" case would never come before the object being @@ -7046,9 +7586,9 @@ if AC_TRY_EVAL(ac_compile); then esac else if test -z "$_LT_TAGVAR(postdeps, $1)"; then - _LT_TAGVAR(postdeps, $1)="${prev}${p}" + _LT_TAGVAR(postdeps, $1)=$prev$p else - _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" + _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p" fi fi prev= @@ -7063,15 +7603,15 @@ if AC_TRY_EVAL(ac_compile); then continue fi - if test "$pre_test_object_deps_done" = no; then + if test no = "$pre_test_object_deps_done"; then if test -z "$_LT_TAGVAR(predep_objects, $1)"; then - _LT_TAGVAR(predep_objects, $1)="$p" + _LT_TAGVAR(predep_objects, $1)=$p else _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" fi else if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then - _LT_TAGVAR(postdep_objects, $1)="$p" + _LT_TAGVAR(postdep_objects, $1)=$p else _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" fi @@ -7102,51 +7642,6 @@ interix[[3-9]]*) _LT_TAGVAR(postdep_objects,$1)= _LT_TAGVAR(postdeps,$1)= ;; - -linux*) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - if test "$solaris_use_stlport4" != yes; then - _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; - -solaris*) - case $cc_basename in - CC* | sunCC*) - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - # Adding this requires a known-good setup of shared libraries for - # Sun compiler versions before 5.6, else PIC objects from an old - # archive will be linked into the output, leading to subtle bugs. - if test "$solaris_use_stlport4" != yes; then - _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; esac ]) @@ -7155,7 +7650,7 @@ case " $_LT_TAGVAR(postdeps, $1) " in esac _LT_TAGVAR(compiler_lib_search_dirs, $1)= if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then - _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` + _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'` fi _LT_TAGDECL([], [compiler_lib_search_dirs], [1], [The directories searched by this compiler when creating a shared library]) @@ -7175,10 +7670,10 @@ _LT_TAGDECL([], [compiler_lib_search_pat # -------------------------- # Ensure that the configuration variables for a Fortran 77 compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. +# to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_F77_CONFIG], [AC_LANG_PUSH(Fortran 77) -if test -z "$F77" || test "X$F77" = "Xno"; then +if test -z "$F77" || test no = "$F77"; then _lt_disable_F77=yes fi @@ -7215,7 +7710,7 @@ _LT_TAGVAR(objext, $1)=$objext # the F77 compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_disable_F77" != yes; then +if test yes != "$_lt_disable_F77"; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t @@ -7237,7 +7732,7 @@ if test "$_lt_disable_F77" != yes; then _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. - lt_save_CC="$CC" + lt_save_CC=$CC lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${F77-"f77"} @@ -7251,21 +7746,25 @@ if test "$_lt_disable_F77" != yes; then AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no + test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) - test "$enable_shared" = yes && enable_static=no + test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac fi ;; esac @@ -7273,11 +7772,11 @@ if test "$_lt_disable_F77" != yes; then AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes + test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) - _LT_TAGVAR(GCC, $1)="$G77" - _LT_TAGVAR(LD, $1)="$LD" + _LT_TAGVAR(GCC, $1)=$G77 + _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change @@ -7294,9 +7793,9 @@ if test "$_lt_disable_F77" != yes; then fi # test -n "$compiler" GCC=$lt_save_GCC - CC="$lt_save_CC" - CFLAGS="$lt_save_CFLAGS" -fi # test "$_lt_disable_F77" != yes + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS +fi # test yes != "$_lt_disable_F77" AC_LANG_POP ])# _LT_LANG_F77_CONFIG @@ -7306,11 +7805,11 @@ AC_LANG_POP # ------------------------- # Ensure that the configuration variables for a Fortran compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. +# to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_FC_CONFIG], [AC_LANG_PUSH(Fortran) -if test -z "$FC" || test "X$FC" = "Xno"; then +if test -z "$FC" || test no = "$FC"; then _lt_disable_FC=yes fi @@ -7347,7 +7846,7 @@ _LT_TAGVAR(objext, $1)=$objext # the FC compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_disable_FC" != yes; then +if test yes != "$_lt_disable_FC"; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t @@ -7369,7 +7868,7 @@ if test "$_lt_disable_FC" != yes; then _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. - lt_save_CC="$CC" + lt_save_CC=$CC lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${FC-"f95"} @@ -7385,21 +7884,25 @@ if test "$_lt_disable_FC" != yes; then AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no + test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) - test "$enable_shared" = yes && enable_static=no + test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac fi ;; esac @@ -7407,11 +7910,11 @@ if test "$_lt_disable_FC" != yes; then AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes + test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) - _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" - _LT_TAGVAR(LD, $1)="$LD" + _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu + _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change @@ -7431,7 +7934,7 @@ if test "$_lt_disable_FC" != yes; then GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS -fi # test "$_lt_disable_FC" != yes +fi # test yes != "$_lt_disable_FC" AC_LANG_POP ])# _LT_LANG_FC_CONFIG @@ -7441,7 +7944,7 @@ AC_LANG_POP # -------------------------- # Ensure that the configuration variables for the GNU Java Compiler compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. +# to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_GCJ_CONFIG], [AC_REQUIRE([LT_PROG_GCJ])dnl AC_LANG_SAVE @@ -7475,7 +7978,7 @@ CC=${GCJ-"gcj"} CFLAGS=$GCJFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC -_LT_TAGVAR(LD, $1)="$LD" +_LT_TAGVAR(LD, $1)=$LD _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. @@ -7512,7 +8015,7 @@ CFLAGS=$lt_save_CFLAGS # -------------------------- # Ensure that the configuration variables for the GNU Go compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. +# to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_GO_CONFIG], [AC_REQUIRE([LT_PROG_GO])dnl AC_LANG_SAVE @@ -7546,7 +8049,7 @@ CC=${GOC-"gccgo"} CFLAGS=$GOFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC -_LT_TAGVAR(LD, $1)="$LD" +_LT_TAGVAR(LD, $1)=$LD _LT_CC_BASENAME([$compiler]) # Go did not exist at the time GCC didn't implicitly link libc in. @@ -7583,7 +8086,7 @@ CFLAGS=$lt_save_CFLAGS # ------------------------- # Ensure that the configuration variables for the Windows resource compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. +# to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_RC_CONFIG], [AC_REQUIRE([LT_PROG_RC])dnl AC_LANG_SAVE @@ -7599,7 +8102,7 @@ _LT_TAGVAR(objext, $1)=$objext lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests -lt_simple_link_test_code="$lt_simple_compile_test_code" +lt_simple_link_test_code=$lt_simple_compile_test_code # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER @@ -7609,7 +8112,7 @@ _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. -lt_save_CC="$CC" +lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC= @@ -7638,7 +8141,7 @@ AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj,) - test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" + test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS)])])[]dnl ]) @@ -7749,7 +8252,7 @@ lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do - test ! -f $lt_ac_sed && continue + test ! -f "$lt_ac_sed" && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in @@ -7766,9 +8269,9 @@ for lt_ac_sed in $lt_ac_sed_list /usr/xp $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough - test $lt_ac_count -gt 10 && break + test 10 -lt "$lt_ac_count" && break lt_ac_count=`expr $lt_ac_count + 1` - if test $lt_ac_count -gt $lt_ac_max; then + if test "$lt_ac_count" -gt "$lt_ac_max"; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi @@ -7792,27 +8295,7 @@ dnl AC_DEFUN([LT_AC_PROG_SED], []) # Find out whether the shell is Bourne or XSI compatible, # or has some other useful features. m4_defun([_LT_CHECK_SHELL_FEATURES], -[AC_MSG_CHECKING([whether the shell understands some XSI constructs]) -# Try some XSI features -xsi_shell=no -( _lt_dummy="a/b/c" - test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,b/c, \ - && eval 'test $(( 1 + 1 )) -eq 2 \ - && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ - && xsi_shell=yes -AC_MSG_RESULT([$xsi_shell]) -_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) - -AC_MSG_CHECKING([whether the shell understands "+="]) -lt_shell_append=no -( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ - >/dev/null 2>&1 \ - && lt_shell_append=yes -AC_MSG_RESULT([$lt_shell_append]) -_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then +[if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false @@ -7836,102 +8319,9 @@ _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn ])# _LT_CHECK_SHELL_FEATURES -# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) -# ------------------------------------------------------ -# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and -# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. -m4_defun([_LT_PROG_FUNCTION_REPLACE], -[dnl { -sed -e '/^$1 ()$/,/^} # $1 /c\ -$1 ()\ -{\ -m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) -} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: -]) - - -# _LT_PROG_REPLACE_SHELLFNS -# ------------------------- -# Replace existing portable implementations of several shell functions with -# equivalent extended shell implementations where those features are available.. -m4_defun([_LT_PROG_REPLACE_SHELLFNS], -[if test x"$xsi_shell" = xyes; then - _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac]) - - _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl - func_basename_result="${1##*/}"]) - - _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac - func_basename_result="${1##*/}"]) - - _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl - # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are - # positional parameters, so assign one to ordinary parameter first. - func_stripname_result=${3} - func_stripname_result=${func_stripname_result#"${1}"} - func_stripname_result=${func_stripname_result%"${2}"}]) - - _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl - func_split_long_opt_name=${1%%=*} - func_split_long_opt_arg=${1#*=}]) - - _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl - func_split_short_opt_arg=${1#??} - func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) - - _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl - case ${1} in - *.lo) func_lo2o_result=${1%.lo}.${objext} ;; - *) func_lo2o_result=${1} ;; - esac]) - - _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) - - _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) - - _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) -fi - -if test x"$lt_shell_append" = xyes; then - _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) - - _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl - func_quote_for_eval "${2}" -dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ - eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) - - # Save a `func_append' function call where possible by direct use of '+=' - sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -else - # Save a `func_append' function call even when '+=' is not available - sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -fi - -if test x"$_lt_function_replace_fail" = x":"; then - AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) -fi -]) - # _LT_PATH_CONVERSION_FUNCTIONS # ----------------------------- -# Determine which file name conversion functions should be used by +# Determine what file name conversion functions should be used by # func_to_host_file (and, implicitly, by func_to_host_path). These are needed # for certain cross-compile configurations and native mingw. m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], diff -Nurp inn-2.6.0/m4/ltoptions.m4 inn-2.6.1/m4/ltoptions.m4 --- inn-2.6.0/m4/ltoptions.m4 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/m4/ltoptions.m4 2016-11-27 06:03:42.000000000 -0800 @@ -1,14 +1,14 @@ # Helper functions for option handling. -*- Autoconf -*- # -# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, -# Inc. +# Copyright (C) 2004-2005, 2007-2009, 2011-2015 Free Software +# Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. -# serial 7 ltoptions.m4 +# serial 8 ltoptions.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) @@ -29,7 +29,7 @@ m4_define([_LT_SET_OPTION], [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), _LT_MANGLE_DEFUN([$1], [$2]), - [m4_warning([Unknown $1 option `$2'])])[]dnl + [m4_warning([Unknown $1 option '$2'])])[]dnl ]) @@ -75,13 +75,15 @@ m4_if([$1],[LT_INIT],[ dnl dnl If no reference was made to various pairs of opposing options, then dnl we run the default mode handler for the pair. For example, if neither - dnl `shared' nor `disable-shared' was passed, we enable building of shared + dnl 'shared' nor 'disable-shared' was passed, we enable building of shared dnl archives by default: _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], - [_LT_ENABLE_FAST_INSTALL]) + [_LT_ENABLE_FAST_INSTALL]) + _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4], + [_LT_WITH_AIX_SONAME([aix])]) ]) ])# _LT_SET_OPTIONS @@ -112,7 +114,7 @@ AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `dlopen' option into LT_INIT's first parameter.]) +put the 'dlopen' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: @@ -148,7 +150,7 @@ AU_DEFUN([AC_LIBTOOL_WIN32_DLL], _LT_SET_OPTION([LT_INIT], [win32-dll]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `win32-dll' option into LT_INIT's first parameter.]) +put the 'win32-dll' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: @@ -157,9 +159,9 @@ dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) # _LT_ENABLE_SHARED([DEFAULT]) # ---------------------------- -# implement the --enable-shared flag, and supports the `shared' and -# `disable-shared' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +# implement the --enable-shared flag, and supports the 'shared' and +# 'disable-shared' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_SHARED], [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([shared], @@ -172,14 +174,14 @@ AC_ARG_ENABLE([shared], *) enable_shared=no # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_shared=yes fi done - IFS="$lt_save_ifs" + IFS=$lt_save_ifs ;; esac], [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) @@ -211,9 +213,9 @@ dnl AC_DEFUN([AM_DISABLE_SHARED], []) # _LT_ENABLE_STATIC([DEFAULT]) # ---------------------------- -# implement the --enable-static flag, and support the `static' and -# `disable-static' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +# implement the --enable-static flag, and support the 'static' and +# 'disable-static' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_STATIC], [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([static], @@ -226,14 +228,14 @@ AC_ARG_ENABLE([static], *) enable_static=no # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_static=yes fi done - IFS="$lt_save_ifs" + IFS=$lt_save_ifs ;; esac], [enable_static=]_LT_ENABLE_STATIC_DEFAULT) @@ -265,9 +267,9 @@ dnl AC_DEFUN([AM_DISABLE_STATIC], []) # _LT_ENABLE_FAST_INSTALL([DEFAULT]) # ---------------------------------- -# implement the --enable-fast-install flag, and support the `fast-install' -# and `disable-fast-install' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +# implement the --enable-fast-install flag, and support the 'fast-install' +# and 'disable-fast-install' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_FAST_INSTALL], [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([fast-install], @@ -280,14 +282,14 @@ AC_ARG_ENABLE([fast-install], *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done - IFS="$lt_save_ifs" + IFS=$lt_save_ifs ;; esac], [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) @@ -304,14 +306,14 @@ AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put -the `fast-install' option into LT_INIT's first parameter.]) +the 'fast-install' option into LT_INIT's first parameter.]) ]) AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put -the `disable-fast-install' option into LT_INIT's first parameter.]) +the 'disable-fast-install' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: @@ -319,11 +321,64 @@ dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [ dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) +# _LT_WITH_AIX_SONAME([DEFAULT]) +# ---------------------------------- +# implement the --with-aix-soname flag, and support the `aix-soname=aix' +# and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT +# is either `aix', `both' or `svr4'. If omitted, it defaults to `aix'. +m4_define([_LT_WITH_AIX_SONAME], +[m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl +shared_archive_member_spec= +case $host,$enable_shared in +power*-*-aix[[5-9]]*,yes) + AC_MSG_CHECKING([which variant of shared library versioning to provide]) + AC_ARG_WITH([aix-soname], + [AS_HELP_STRING([--with-aix-soname=aix|svr4|both], + [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])], + [case $withval in + aix|svr4|both) + ;; + *) + AC_MSG_ERROR([Unknown argument to --with-aix-soname]) + ;; + esac + lt_cv_with_aix_soname=$with_aix_soname], + [AC_CACHE_VAL([lt_cv_with_aix_soname], + [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT) + with_aix_soname=$lt_cv_with_aix_soname]) + AC_MSG_RESULT([$with_aix_soname]) + if test aix != "$with_aix_soname"; then + # For the AIX way of multilib, we name the shared archive member + # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', + # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. + # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, + # the AIX toolchain works better with OBJECT_MODE set (default 32). + if test 64 = "${OBJECT_MODE-32}"; then + shared_archive_member_spec=shr_64 + else + shared_archive_member_spec=shr + fi + fi + ;; +*) + with_aix_soname=aix + ;; +esac + +_LT_DECL([], [shared_archive_member_spec], [0], + [Shared archive member basename, for filename based shared library versioning on AIX])dnl +])# _LT_WITH_AIX_SONAME + +LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])]) +LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])]) +LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])]) + + # _LT_WITH_PIC([MODE]) # -------------------- -# implement the --with-pic flag, and support the `pic-only' and `no-pic' +# implement the --with-pic flag, and support the 'pic-only' and 'no-pic' # LT_INIT options. -# MODE is either `yes' or `no'. If omitted, it defaults to `both'. +# MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'. m4_define([_LT_WITH_PIC], [AC_ARG_WITH([pic], [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], @@ -334,19 +389,17 @@ m4_define([_LT_WITH_PIC], *) pic_mode=default # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $withval; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done - IFS="$lt_save_ifs" + IFS=$lt_save_ifs ;; esac], - [pic_mode=default]) - -test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) + [pic_mode=m4_default([$1], [default])]) _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl ])# _LT_WITH_PIC @@ -359,7 +412,7 @@ AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `pic-only' option into LT_INIT's first parameter.]) +put the 'pic-only' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: diff -Nurp inn-2.6.0/m4/ltsugar.m4 inn-2.6.1/m4/ltsugar.m4 --- inn-2.6.0/m4/ltsugar.m4 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/m4/ltsugar.m4 2016-11-27 06:03:42.000000000 -0800 @@ -1,6 +1,7 @@ # ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # -# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. +# Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software +# Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives @@ -33,7 +34,7 @@ m4_define([_lt_join], # ------------ # Manipulate m4 lists. # These macros are necessary as long as will still need to support -# Autoconf-2.59 which quotes differently. +# Autoconf-2.59, which quotes differently. m4_define([lt_car], [[$1]]) m4_define([lt_cdr], [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], @@ -44,7 +45,7 @@ m4_define([lt_unquote], $1) # lt_append(MACRO-NAME, STRING, [SEPARATOR]) # ------------------------------------------ -# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. +# Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'. # Note that neither SEPARATOR nor STRING are expanded; they are appended # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). # No SEPARATOR is output if MACRO-NAME was previously undefined (different diff -Nurp inn-2.6.0/m4/ltversion.m4 inn-2.6.1/m4/ltversion.m4 --- inn-2.6.0/m4/ltversion.m4 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/m4/ltversion.m4 2016-11-27 06:03:42.000000000 -0800 @@ -1,6 +1,6 @@ # ltversion.m4 -- version numbers -*- Autoconf -*- # -# Copyright (C) 2004 Free Software Foundation, Inc. +# Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004 # # This file is free software; the Free Software Foundation gives @@ -9,15 +9,15 @@ # @configure_input@ -# serial 3337 ltversion.m4 +# serial 4179 ltversion.m4 # This file is part of GNU Libtool -m4_define([LT_PACKAGE_VERSION], [2.4.2]) -m4_define([LT_PACKAGE_REVISION], [1.3337]) +m4_define([LT_PACKAGE_VERSION], [2.4.6]) +m4_define([LT_PACKAGE_REVISION], [2.4.6]) AC_DEFUN([LTVERSION_VERSION], -[macro_version='2.4.2' -macro_revision='1.3337' +[macro_version='2.4.6' +macro_revision='2.4.6' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) diff -Nurp inn-2.6.0/m4/lt~obsolete.m4 inn-2.6.1/m4/lt~obsolete.m4 --- inn-2.6.0/m4/lt~obsolete.m4 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/m4/lt~obsolete.m4 2016-11-27 06:03:42.000000000 -0800 @@ -1,6 +1,7 @@ # lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # -# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. +# Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software +# Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives @@ -11,7 +12,7 @@ # These exist entirely to fool aclocal when bootstrapping libtool. # -# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) +# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN), # which have later been changed to m4_define as they aren't part of the # exported API, or moved to Autoconf or Automake where they belong. # @@ -25,7 +26,7 @@ # included after everything else. This provides aclocal with the # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything # because those macros already exist, or will be overwritten later. -# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. +# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. # # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. # Yes, that means every name once taken will need to remain here until diff -Nurp inn-2.6.0/m4/openssl.m4 inn-2.6.1/m4/openssl.m4 --- inn-2.6.0/m4/openssl.m4 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/m4/openssl.m4 2016-11-27 06:03:42.000000000 -0800 @@ -1,5 +1,5 @@ dnl Find the compiler and linker flags for OpenSSL. -dnl $Id: openssl.m4 9570 2013-11-21 15:23:24Z iulius $ +dnl $Id: openssl.m4 10099 2016-11-04 22:21:59Z iulius $ dnl dnl Finds the compiler and linker flags for linking with both the OpenSSL SSL dnl library and its crypto library. Provides the --with-openssl, @@ -25,9 +25,10 @@ dnl dnl Depends on INN_ENABLE_REDUCED_DEPENDS and the lib-helper.m4 framework. dnl dnl The canonical version of this file is maintained in the rra-c-util -dnl package, available at . +dnl package, available at . dnl dnl Written by Russ Allbery +dnl Copyright 2016 Russ Allbery dnl Copyright 2010, 2013 dnl The Board of Trustees of the Leland Stanford Junior University dnl @@ -71,10 +72,10 @@ AC_DEFUN([_INN_LIB_OPENSSL_INTERNAL], [AC_MSG_ERROR([cannot find usable OpenSSL crypto library])])], [$inn_openssl_extra]) AS_IF([test x"$inn_reduced_depends" = xtrue], - [AC_CHECK_LIB([ssl], [SSL_library_init], [OPENSSL_LIBS=-lssl], + [AC_CHECK_LIB([ssl], [SSL_accept], [OPENSSL_LIBS=-lssl], [AS_IF([test x"$1" = xtrue], [AC_MSG_ERROR([cannot find usable OpenSSL library])])])], - [AC_CHECK_LIB([ssl], [SSL_library_init], + [AC_CHECK_LIB([ssl], [SSL_accept], [OPENSSL_LIBS="-lssl $CRYPTO_LIBS"], [AS_IF([test x"$1" = xtrue], [AC_MSG_ERROR([cannot find usable OpenSSL library])])], diff -Nurp inn-2.6.0/m4/pam-const.m4 inn-2.6.1/m4/pam-const.m4 --- inn-2.6.0/m4/pam-const.m4 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/m4/pam-const.m4 2016-11-27 06:03:42.000000000 -0800 @@ -1,5 +1,5 @@ dnl Determine whether PAM uses const in prototypes. -dnl $Id: pam-const.m4 9792 2015-03-17 20:10:25Z iulius $ +dnl $Id: pam-const.m4 10099 2016-11-04 22:21:59Z 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 @@ -14,7 +14,7 @@ dnl dnl Contributed by Markus Moeller. dnl dnl The canonical version of this file is maintained in the rra-c-util -dnl package, available at . +dnl package, available at . dnl dnl Copyright 2007, 2015 Russ Allbery dnl Copyright 2007, 2008 Markus Moeller diff -Nurp inn-2.6.0/m4/perl.m4 inn-2.6.1/m4/perl.m4 --- inn-2.6.0/m4/perl.m4 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/m4/perl.m4 2016-11-27 06:03:42.000000000 -0800 @@ -1,114 +1,100 @@ -dnl perl.m4 -- Probe for the details needed to embed Perl. -dnl $Id: perl.m4 9240 2011-07-12 09:51:28Z iulius $ +dnl Probe for Perl properties and, optionally, flags for embedding Perl. +dnl $Id: perl.m4 10099 2016-11-04 22:21:59Z iulius $ dnl -dnl Defines INN_ARG_PERL, which sets up the --with-perl command line argument -dnl and also sets various flags needed for embedded Perl if it is requested -dnl and ensures that Perl is the appropriate version. - -dnl Check for a required version of Perl. -AC_DEFUN([_INN_PERL_VERSION], -[AC_CACHE_CHECK([for Perl version], [inn_cv_perl_version], - [if $PERL -e 'require $1;' > /dev/null 2>&1 ; then - inn_cv_perl_version=`$PERL -e 'print [$]@:>@'` - else - AC_MSG_ERROR([Perl $1 or greater is required]) - fi])]) - -dnl Check for Perl modules used by scripts shipped with INN. -AC_DEFUN([INN_PERL_MODULE], -[AC_MSG_CHECKING([for $1]) - if $PERL -e 'require $1;' > /dev/null 2>&1 ; then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - AC_MSG_WARN([$1 Perl module is required by $2]) - inn_perl_module_warning="$inn_perl_module_warning $1 (for $2)" - fi]) +dnl Provides the following macros: +dnl +dnl INN_PROG_PERL +dnl Checks for a specific Perl version and sets the PERL environment +dnl variable to the full path, or aborts the configure run if the version +dnl of Perl is not new enough or couldn't be found. +dnl +dnl INN_PERL_CHECK_MODULE +dnl Checks for the existence of a Perl module and runs provided code based +dnl on whether or not it was found. +dnl +dnl INN_LIB_PERL +dnl Determines the flags required for embedding Perl and sets +dnl PERL_CPPFLAGS and PERL_LIBS. +dnl +dnl The canonical version of this file is maintained in the rra-c-util +dnl package, available at . +dnl +dnl Copyright 2016 Russ Allbery +dnl Copyright (c) 2006, 2009, 2011 +dnl by Internet Systems Consortium, Inc. ("ISC") +dnl Copyright (c) 1998, 1999, 2000, 2001, 2002, 2003 +dnl by The Internet Software Consortium +dnl +dnl Permission to use, copy, modify, and distribute this software for any +dnl purpose with or without fee is hereby granted, provided that the above +dnl copyright notice and this permission notice appear in all copies. +dnl +dnl THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +dnl REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +dnl MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY +dnl SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +dnl WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +dnl ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +dnl IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -dnl Check to see if Perl embedding was requested. Regardless of whether it -dnl was or not, determine the path to Perl. If it was requested, make sure -dnl that we have the right version and then set PERL_CPPFLAGS and PERL_LIBS as -dnl appropriate for embedded Perl. -AC_DEFUN([INN_ARG_PERL], +dnl Check for the path to Perl and ensure it meets our minimum version +dnl requirement (given as the argument). Honor the $PERL environment +dnl variable, if set. +AC_DEFUN([INN_PROG_PERL], [AC_ARG_VAR([PERL], [Location of Perl interpreter]) -AC_ARG_WITH([perl], - [AS_HELP_STRING([--with-perl], [Embedded Perl script support [no]])], - [case $withval in - yes) DO_PERL=DO - AC_DEFINE(DO_PERL, 1, [Define to compile in Perl script support.]) - ;; - no) DO_PERL=DONT ;; - *) AC_MSG_ERROR([invalid argument to --with-perl]) ;; - esac], - DO_PERL=DONT) + AS_IF([test x"$PERL" != x], + [AS_IF([! test -x "$PERL"], + [AC_MSG_ERROR([Perl binary $PERL not found])]) + AS_IF([! "$PERL" -e 'use $1' >/dev/null 2>&1], + [AC_MSG_ERROR([Perl $1 or greater is required])])], + [AC_CACHE_CHECK([for Perl version $1 or later], [ac_cv_path_PERL], + [AC_PATH_PROGS_FEATURE_CHECK([PERL], [perl], + [AS_IF(["$ac_path_PERL" -e 'require $1' >/dev/null 2>&1], + [ac_cv_path_PERL="$ac_path_PERL" + ac_path_PERL_found=:])])]) + AS_IF([test x"$ac_cv_path_PERL" = x], + [AC_MSG_ERROR([Perl $1 or greater is required])]) + PERL="$ac_cv_path_PERL"])]) -dnl Embedded Perl requires 5.004. controlchan requires 5.004_03. Other -dnl things may work with 5.003, but make 5.004_03 the minimum level; anyone -dnl should really have at least that these days. -dnl We also check for useful Perl modules. -INN_PATH_PROG_ENSURE([PERL], [perl]) -_INN_PERL_VERSION(5.004_03) -INN_PERL_MODULE([Encode], [controlchan]) -INN_PERL_MODULE([GD], [innreport's HTML output]) -INN_PERL_MODULE([MIME::Parser], [controlchan]) +dnl Check whether a given Perl module can be loaded. Runs the second argument +dnl if it can, and the third argument if it cannot. +AC_DEFUN([INN_PERL_CHECK_MODULE], +[AS_LITERAL_IF([$1], [], [m4_fatal([$0: requires literal arguments])])dnl + AS_VAR_PUSHDEF([ac_Module], [inn_cv_perl_module_$1])dnl + AC_CACHE_CHECK([for Perl module $1], [ac_Module], + [AS_IF(["$PERL" -e 'use $1' >/dev/null 2>&1], + [AS_VAR_SET([ac_Module], [yes])], + [AS_VAR_SET([ac_Module], [no])])]) + AS_VAR_IF([ac_Module], [yes], [$2], [$3]) + AS_VAR_POPDEF([ac_Module])]) -dnl Libraries and flags for embedded Perl. Some distributions of Linux have -dnl Perl linked with gdbm but don't normally have gdbm installed, so on that -dnl platform only strip -lgdbm out of the Perl libraries. Leave it in on -dnl other platforms where it may be necessary (it isn't on Linux; Linux -dnl shared libraries can manage their own dependencies). Strip -lc out, which -dnl is added on some platforms, is unnecessary, and breaks compiles with -dnl -pthread (which may be added by Python). -dnl -dnl If we aren't compiling with large-file support, strip out the large file -dnl flags from inn_perl_core_flags; otherwise, innd/cc.c and lib/qio.c -dnl disagree over the size of an off_t. Since none of our calls into Perl -dnl use variables of type off_t, this should be harmless; in any event, it's -dnl going to be better than the innd/cc.c breakage. -dnl -dnl Also check to see if the complier supports -Wno-extra and, if so, add it -dnl to PERL_WARNING. This has to be conditional since -Wno-extra is only -dnl supported in gcc 4.0 and later. -if test x"$DO_PERL" = xDO ; then - AC_MSG_CHECKING([for Perl linkage]) - inn_perl_core_path=`$PERL -MConfig -e 'print $Config{archlibexp}'` - 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 / /'` - for i in $LIBS ; do - inn_perl_core_libs=`echo "$inn_perl_core_libs" | sed "s/ $i / /"` - done - case $host in - *-linux*) - inn_perl_core_libs=`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_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_flags=" $inn_perl_core_flags " - 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 / /"` - done - fi - inn_perl_core_flags=`echo "$inn_perl_core_flags" | sed 's/^ *//'` - inn_perl_core_flags=`echo "$inn_perl_core_flags" | sed 's/ *$//'` - PERL_CPPFLAGS="$inn_perl_core_flags" - PERL_LIBS="$inn_perl_core_libs" - AC_MSG_RESULT([$inn_perl_core_path]) - INN_PROG_CC_FLAG([-Wno-extra], [PERL_WARNINGS=-Wno-extra], - [PERL_WARNINGS='']) -else - PERL_CPPFLAGS='' - PERL_LIBS='' - PERL_WARNINGS='' -fi -AC_SUBST([PERL_CPPFLAGS]) -AC_SUBST([PERL_LIBS]) -AC_SUBST([PERL_WARNINGS])]) +dnl Determine the flags used for embedding Perl. +dnl +dnl Some distributions of Linux have Perl linked with gdbm but don't normally +dnl have gdbm installed, so on that platform only strip -lgdbm out of the Perl +dnl libraries. Leave it in on other platforms where it may be necessary (it +dnl isn't on Linux; Linux shared libraries can manage their own dependencies). +dnl Strip -lc out, which is added on some platforms, is unnecessary, and +dnl breaks compiles with -pthread (which may be added by Python). +AC_DEFUN([INN_LIB_PERL], +[AC_REQUIRE([AC_CANONICAL_HOST]) + AC_SUBST([PERL_CPPFLAGS]) + AC_SUBST([PERL_LIBS]) + AC_MSG_CHECKING([for flags to link with Perl]) + inn_perl_core_path=`"$PERL" -MConfig -e 'print $Config{archlibexp}'` + 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 / /'` + AS_CASE([$host], + [*-linux*], + [inn_perl_core_libs=`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_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/ *$//'` + PERL_CPPFLAGS="$inn_perl_core_flags" + PERL_LIBS="$inn_perl_core_libs" + AC_MSG_RESULT([$PERL_LIBS])]) diff -Nurp inn-2.6.0/m4/sasl.m4 inn-2.6.1/m4/sasl.m4 --- inn-2.6.0/m4/sasl.m4 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/m4/sasl.m4 2016-11-27 06:03:42.000000000 -0800 @@ -1,5 +1,5 @@ dnl Find the compiler and linker flags for Cyrus SASL. -dnl $Id: sasl.m4 9571 2013-11-21 15:32:04Z iulius $ +dnl $Id: sasl.m4 10099 2016-11-04 22:21:59Z iulius $ dnl dnl Finds the compiler and linker flags for linking with the Cyrus SASL dnl library. Provides the --with-sasl, --with-sasl-lib, and @@ -23,7 +23,7 @@ dnl dnl Depends on the lib-helper.m4 framework. dnl dnl The canonical version of this file is maintained in the rra-c-util -dnl package, available at . +dnl package, available at . dnl dnl Written by Russ Allbery dnl Copyright 2013 diff -Nurp inn-2.6.0/m4/snprintf.m4 inn-2.6.1/m4/snprintf.m4 --- inn-2.6.0/m4/snprintf.m4 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/m4/snprintf.m4 2016-11-27 06:03:42.000000000 -0800 @@ -1,5 +1,5 @@ dnl Test for a working C99 snprintf. -dnl $Id: snprintf.m4 9564 2013-11-10 18:27:16Z iulius $ +dnl $Id: snprintf.m4 10099 2016-11-04 22:21:59Z 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 @@ -11,7 +11,7 @@ dnl Provides INN_FUNC_SNPRINTF, which ad 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 package, available at . dnl dnl Written by Russ Allbery dnl Copyright 2006, 2008, 2009 diff -Nurp inn-2.6.0/m4/socket-unix.m4 inn-2.6.1/m4/socket-unix.m4 --- inn-2.6.0/m4/socket-unix.m4 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/m4/socket-unix.m4 2016-11-27 06:03:42.000000000 -0800 @@ -1,5 +1,5 @@ dnl Various checks for UNIX domain socket support and macros. -dnl $Id: socket-unix.m4 9549 2013-10-26 18:36:31Z iulius $ +dnl $Id: socket-unix.m4 10099 2016-11-04 22:21:59Z iulius $ dnl dnl This is a collection of various Autoconf macros for checking UNIX domain dnl socket properties. The macros provided are: @@ -10,7 +10,7 @@ dnl dnl They use a separate internal source macro to make the code easier to read. dnl dnl The canonical version of this file is maintained in the rra-c-util -dnl package, available at . +dnl package, available at . dnl dnl Copyright 2009 dnl The Board of Trustees of the Leland Stanford Junior University diff -Nurp inn-2.6.0/m4/socket.m4 inn-2.6.1/m4/socket.m4 --- inn-2.6.0/m4/socket.m4 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/m4/socket.m4 2016-11-27 06:03:42.000000000 -0800 @@ -1,5 +1,5 @@ dnl Various checks for socket support and macros. -dnl $Id: socket.m4 9661 2014-08-30 11:56:11Z iulius $ +dnl $Id: socket.m4 10099 2016-11-04 22:21:59Z iulius $ dnl dnl This is a collection of various Autoconf macros for checking networking dnl and socket properties. The macros provided are: @@ -11,7 +11,7 @@ dnl dnl They use a separate internal source macro to make the code easier to read. dnl dnl The canonical version of this file is maintained in the rra-c-util -dnl package, available at . +dnl package, available at . dnl dnl Copyright 2008, 2009, 2011 dnl The Board of Trustees of the Leland Stanford Junior University diff -Nurp inn-2.6.0/m4/vamacros.m4 inn-2.6.1/m4/vamacros.m4 --- inn-2.6.0/m4/vamacros.m4 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/m4/vamacros.m4 2016-11-27 06:03:42.000000000 -0800 @@ -1,5 +1,5 @@ dnl Check for support for variadic macros. -dnl $Id: vamacros.m4 9564 2013-11-10 18:27:16Z iulius $ +dnl $Id: vamacros.m4 10099 2016-11-04 22:21:59Z iulius $ dnl dnl This file defines two macros for probing for compiler support for variadic dnl macros. Provided are INN_C_C99_VAMACROS, which checks for support for the @@ -15,7 +15,7 @@ dnl dnl They set HAVE_C99_VAMACROS or HAVE_GNU_VAMACROS as appropriate. dnl dnl The canonical version of this file is maintained in the rra-c-util -dnl package, available at . +dnl package, available at . dnl dnl Written by Russ Allbery dnl Copyright 2006, 2008, 2009 diff -Nurp inn-2.6.0/m4/zlib.m4 inn-2.6.1/m4/zlib.m4 --- inn-2.6.0/m4/zlib.m4 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/m4/zlib.m4 2016-11-27 06:03:42.000000000 -0800 @@ -1,5 +1,5 @@ dnl Find the compiler and linker flags for the zlib library. -dnl $Id: zlib.m4 9593 2013-12-27 21:16:09Z iulius $ +dnl $Id: zlib.m4 10099 2016-11-04 22:21:59Z iulius $ dnl dnl Finds the compiler and linker flags for linking with the zlib library. dnl Provides the --with-zlib, --with-zlib-lib, and --with-zlib-include @@ -21,7 +21,7 @@ dnl dnl Depends on the lib-helper.m4 framework. dnl dnl The canonical version of this file is maintained in the rra-c-util -dnl package, available at . +dnl package, available at . dnl dnl Written by Russ Allbery dnl Copyright 2013 diff -Nurp inn-2.6.0/nnrpd/Makefile inn-2.6.1/nnrpd/Makefile --- inn-2.6.0/nnrpd/Makefile 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/nnrpd/Makefile 2016-11-27 06:03:42.000000000 -0800 @@ -1,15 +1,15 @@ -## $Id: Makefile 9815 2015-03-25 20:26:58Z iulius $ +## $Id: Makefile 10117 2016-11-06 14:23:27Z iulius $ include ../Makefile.global top = .. -CFLAGS = $(GCFLAGS) $(SSL_CPPFLAGS) $(SASL_CPPFLAGS) +CFLAGS = $(GCFLAGS) $(SSL_CPPFLAGS) $(SASL_CPPFLAGS) $(ZLIB_CPPFLAGS) ALL = nnrpd -SOURCES = article.c auth-ext.c cache.c group.c commands.c line.c \ +SOURCES = article.c auth-ext.c cache.c commands.c group.c line.c \ list.c misc.c newnews.c nnrpd.c perl.c perm.c post.c \ - python.c sasl.c tls.c track.c + python.c sasl.c tls.c track.c zlib.c INCLUDES = cache.h nnrpd.h post.h tls.h @@ -34,10 +34,11 @@ clean clobber distclean maintclean: NNRPDLIBS = $(LIBSTORAGE) $(LIBHIST) $(LIBINN) $(STORAGE_LIBS) \ $(PERL_LIBS) $(PYTHON_LIBS) $(SSL_LDFLAGS) $(SSL_LIBS) \ - $(CRYPTO_LIBS) $(SASL_LDFLAGS) $(SASL_LIBS) $(LIBS) + $(CRYPTO_LIBS) $(SASL_LDFLAGS) $(SASL_LIBS) \ + $(ZLIB_LDFLAGS) $(ZLIB_LIBS) $(LIBS) .c.o: - $(CC) $(CFLAGS) $(SSL_CPPFLAGS) $(SASL_CPPFLAGS) -c $< + $(CC) $(CFLAGS) -c $< perl.o: perl.c ; $(CC) $(CFLAGS) $(PERL_CPPFLAGS) -c perl.c python.o: python.c ; $(CC) $(CFLAGS) $(PYTHON_CPPFLAGS) -c python.c @@ -78,9 +79,9 @@ article.o: article.c ../include/config.h ../include/inn/messages.h ../include/inn/wire.h nnrpd.h \ ../include/portable/macros.h ../include/portable/socket.h \ ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \ - ../include/inn/qio.h ../include/inn/libinn.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/qio.h ../include/inn/libinn.h ../include/inn/concat.h \ + ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \ + ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h \ ../include/inn/vector.h ../include/inn/timer.h ../include/inn/ov.h \ ../include/inn/history.h ../include/inn/storage.h tls.h cache.h auth-ext.o: auth-ext.c ../include/config.h ../include/inn/defines.h \ @@ -92,9 +93,10 @@ auth-ext.o: auth-ext.c ../include/config ../include/inn/messages.h ../include/inn/vector.h nnrpd.h \ ../include/portable/macros.h ../include/portable/socket.h \ ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \ - ../include/inn/qio.h ../include/inn/libinn.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/timer.h + ../include/inn/qio.h ../include/inn/libinn.h ../include/inn/concat.h \ + ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \ + ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h \ + ../include/inn/timer.h cache.o: cache.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 \ @@ -102,21 +104,8 @@ cache.o: cache.c ../include/config.h ../ ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/innconf.h \ ../include/inn/tst.h ../include/inn/list.h ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.h \ + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ ../include/inn/storage.h ../include/inn/options.h cache.h -group.o: group.c ../include/config.h ../include/inn/defines.h \ - ../include/inn/system.h ../include/inn/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 nnrpd.h \ - ../include/portable/macros.h ../include/portable/socket.h \ - ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \ - ../include/inn/qio.h ../include/inn/libinn.h ../include/inn/xmalloc.h \ - ../include/inn/xwrite.h ../include/inn/nntp.h ../include/inn/paths.h \ - ../include/inn/storage.h ../include/inn/options.h \ - ../include/inn/vector.h ../include/inn/timer.h ../include/inn/ov.h \ - ../include/inn/history.h ../include/inn/storage.h commands.o: commands.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 \ @@ -125,13 +114,27 @@ commands.o: commands.c ../include/config ../include/portable/stdbool.h nnrpd.h ../include/portable/macros.h \ ../include/portable/socket.h ../include/portable/getaddrinfo.h \ ../include/portable/getnameinfo.h ../include/inn/qio.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - ../include/inn/nntp.h ../include/inn/paths.h ../include/inn/storage.h \ - ../include/inn/options.h ../include/inn/vector.h ../include/inn/timer.h \ - ../include/inn/fdflag.h ../include/inn/portable-socket.h \ - ../include/inn/ov.h ../include/inn/history.h ../include/inn/storage.h \ + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h ../include/inn/nntp.h ../include/inn/paths.h \ + ../include/inn/storage.h ../include/inn/options.h \ + ../include/inn/vector.h ../include/inn/timer.h ../include/inn/fdflag.h \ + ../include/inn/portable-socket.h ../include/inn/ov.h \ + ../include/inn/history.h ../include/inn/storage.h \ ../include/inn/innconf.h ../include/inn/messages.h \ ../include/inn/version.h tls.h +group.o: group.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 nnrpd.h \ + ../include/portable/macros.h ../include/portable/socket.h \ + ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \ + ../include/inn/qio.h ../include/inn/libinn.h ../include/inn/concat.h \ + ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \ + ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h \ + ../include/inn/vector.h ../include/inn/timer.h ../include/inn/ov.h \ + ../include/inn/history.h ../include/inn/storage.h line.o: line.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -140,9 +143,9 @@ line.o: line.c ../include/config.h ../in ../include/portable/stdbool.h ../include/inn/messages.h nnrpd.h \ ../include/portable/macros.h ../include/portable/socket.h \ ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \ - ../include/inn/qio.h ../include/inn/libinn.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/qio.h ../include/inn/libinn.h ../include/inn/concat.h \ + ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \ + ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h \ ../include/inn/vector.h ../include/inn/timer.h tls.h list.o: list.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ @@ -152,10 +155,11 @@ list.o: list.c ../include/config.h ../in ../include/portable/stdbool.h nnrpd.h ../include/portable/macros.h \ ../include/portable/socket.h ../include/portable/getaddrinfo.h \ ../include/portable/getnameinfo.h ../include/inn/qio.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - ../include/inn/nntp.h ../include/inn/paths.h ../include/inn/storage.h \ - ../include/inn/options.h ../include/inn/vector.h ../include/inn/timer.h \ - ../include/inn/ov.h ../include/inn/history.h ../include/inn/storage.h \ + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h ../include/inn/nntp.h ../include/inn/paths.h \ + ../include/inn/storage.h ../include/inn/options.h \ + ../include/inn/vector.h ../include/inn/timer.h ../include/inn/ov.h \ + ../include/inn/history.h ../include/inn/storage.h \ ../include/inn/innconf.h ../include/inn/messages.h misc.o: misc.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ @@ -165,9 +169,9 @@ misc.o: misc.c ../include/config.h ../in ../include/portable/stdbool.h ../include/inn/innconf.h nnrpd.h \ ../include/portable/macros.h ../include/portable/socket.h \ ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \ - ../include/inn/qio.h ../include/inn/libinn.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/qio.h ../include/inn/libinn.h ../include/inn/concat.h \ + ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \ + ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h \ ../include/inn/vector.h ../include/inn/timer.h tls.h ../include/inn/ov.h \ ../include/inn/history.h ../include/inn/storage.h newnews.o: newnews.c ../include/config.h ../include/inn/defines.h \ @@ -179,9 +183,9 @@ newnews.o: newnews.c ../include/config.h ../include/inn/messages.h ../include/inn/wire.h nnrpd.h \ ../include/portable/macros.h ../include/portable/socket.h \ ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \ - ../include/inn/qio.h ../include/inn/libinn.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/qio.h ../include/inn/libinn.h ../include/inn/concat.h \ + ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \ + ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h \ ../include/inn/vector.h ../include/inn/timer.h ../include/inn/ov.h \ ../include/inn/history.h ../include/inn/storage.h cache.h nnrpd.o: nnrpd.c ../include/config.h ../include/inn/defines.h \ @@ -193,14 +197,15 @@ nnrpd.o: nnrpd.c ../include/config.h ../ ../include/portable/setproctitle.h ../include/portable/macros.h \ ../include/portable/socket.h ../include/portable/getaddrinfo.h \ ../include/portable/getnameinfo.h ../include/inn/innconf.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - ../include/inn/messages.h ../include/inn/network.h \ - ../include/inn/portable-socket.h ../include/inn/network-innbind.h \ - ../include/inn/newsuser.h ../include/inn/ov.h ../include/inn/history.h \ - ../include/inn/storage.h ../include/inn/options.h \ - ../include/inn/version.h nnrpd.h ../include/inn/qio.h \ - ../include/inn/nntp.h ../include/inn/paths.h ../include/inn/storage.h \ - ../include/inn/vector.h ../include/inn/timer.h tls.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h ../include/inn/messages.h \ + ../include/inn/network.h ../include/inn/portable-socket.h \ + ../include/inn/network-innbind.h ../include/inn/newsuser.h \ + ../include/inn/ov.h ../include/inn/history.h ../include/inn/storage.h \ + ../include/inn/options.h ../include/inn/version.h nnrpd.h \ + ../include/inn/qio.h ../include/inn/nntp.h ../include/inn/paths.h \ + ../include/inn/storage.h ../include/inn/vector.h ../include/inn/timer.h \ + tls.h perl.o: perl.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -209,9 +214,9 @@ perl.o: perl.c ../include/config.h ../in ../include/portable/stdbool.h ../include/inn/innconf.h nnrpd.h \ ../include/portable/macros.h ../include/portable/socket.h \ ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \ - ../include/inn/qio.h ../include/inn/libinn.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/qio.h ../include/inn/libinn.h ../include/inn/concat.h \ + ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \ + ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h \ ../include/inn/vector.h ../include/inn/timer.h post.h \ ../include/ppport.h ../include/innperl.h perm.o: perm.c ../include/config.h ../include/inn/defines.h \ @@ -225,9 +230,10 @@ perm.o: perm.c ../include/config.h ../in ../include/inn/portable-getnameinfo.h ../include/inn/innconf.h \ ../include/innperl.h nnrpd.h ../include/portable/macros.h \ ../include/portable/socket.h ../include/inn/qio.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - ../include/inn/nntp.h ../include/inn/paths.h ../include/inn/storage.h \ - ../include/inn/options.h ../include/inn/vector.h ../include/inn/timer.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h ../include/inn/nntp.h ../include/inn/paths.h \ + ../include/inn/storage.h ../include/inn/options.h \ + ../include/inn/vector.h ../include/inn/timer.h tls.h post.o: post.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -236,9 +242,9 @@ post.o: post.c ../include/config.h ../in ../include/portable/stdbool.h ../include/inn/innconf.h nnrpd.h \ ../include/portable/macros.h ../include/portable/socket.h \ ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \ - ../include/inn/qio.h ../include/inn/libinn.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/qio.h ../include/inn/libinn.h ../include/inn/concat.h \ + ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \ + ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h \ ../include/inn/vector.h ../include/inn/timer.h ../include/inn/ov.h \ ../include/inn/history.h ../include/inn/storage.h post.h python.o: python.c ../include/config.h ../include/inn/defines.h \ @@ -249,9 +255,9 @@ python.o: python.c ../include/config.h . ../include/portable/stdbool.h ../include/inn/innconf.h nnrpd.h \ ../include/portable/macros.h ../include/portable/socket.h \ ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \ - ../include/inn/qio.h ../include/inn/libinn.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/qio.h ../include/inn/libinn.h ../include/inn/concat.h \ + ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \ + ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h \ ../include/inn/vector.h ../include/inn/timer.h ../include/inn/hashtab.h sasl.o: sasl.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ @@ -261,11 +267,11 @@ sasl.o: sasl.c ../include/config.h ../in ../include/portable/stdbool.h ../include/inn/messages.h nnrpd.h \ ../include/portable/macros.h ../include/portable/socket.h \ ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \ - ../include/inn/qio.h ../include/inn/libinn.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/qio.h ../include/inn/libinn.h ../include/inn/concat.h \ + ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \ + ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h \ ../include/inn/vector.h ../include/inn/timer.h ../include/inn/ov.h \ - ../include/inn/history.h ../include/inn/storage.h + ../include/inn/history.h ../include/inn/storage.h tls.h tls.o: tls.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -274,10 +280,11 @@ tls.o: tls.c ../include/config.h ../incl ../include/portable/stdbool.h nnrpd.h ../include/portable/macros.h \ ../include/portable/socket.h ../include/portable/getaddrinfo.h \ ../include/portable/getnameinfo.h ../include/inn/qio.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - ../include/inn/nntp.h ../include/inn/paths.h ../include/inn/storage.h \ - ../include/inn/options.h ../include/inn/vector.h ../include/inn/timer.h \ - ../include/inn/innconf.h tls.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h ../include/inn/nntp.h ../include/inn/paths.h \ + ../include/inn/storage.h ../include/inn/options.h \ + ../include/inn/vector.h ../include/inn/timer.h ../include/inn/innconf.h \ + tls.h track.o: track.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -286,7 +293,19 @@ track.o: track.c ../include/config.h ../ ../include/portable/stdbool.h ../include/inn/innconf.h nnrpd.h \ ../include/portable/macros.h ../include/portable/socket.h \ ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \ - ../include/inn/qio.h ../include/inn/libinn.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/qio.h ../include/inn/libinn.h ../include/inn/concat.h \ + ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \ + ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h \ + ../include/inn/vector.h ../include/inn/timer.h +zlib.o: zlib.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/messages.h nnrpd.h \ + ../include/portable/macros.h ../include/portable/socket.h \ + ../include/portable/getaddrinfo.h ../include/portable/getnameinfo.h \ + ../include/inn/qio.h ../include/inn/libinn.h ../include/inn/concat.h \ + ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/nntp.h \ + ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h \ ../include/inn/vector.h ../include/inn/timer.h diff -Nurp inn-2.6.0/nnrpd/article.c inn-2.6.1/nnrpd/article.c --- inn-2.6.0/nnrpd/article.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/nnrpd/article.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: article.c 9846 2015-05-03 14:56:15Z iulius $ +/* $Id: article.c 9978 2015-12-11 20:39:56Z iulius $ ** ** Article-related routines. */ @@ -64,6 +64,23 @@ PushIOvHelper(struct iovec* vec, int* co TMRstart(TMR_NNTPWRITE); +#if defined(HAVE_ZLIB) + if (compression_layer_on) { + int i; + + for (i = 0; i < *countp; i++) { + if (i+1 == *countp) { + /* Time to flush the compressed output stream. */ + zstream_flush_needed = true; + } + write_buffer(vec[i].iov_base, vec[i].iov_len); + } + + *countp = 0; + return; + } +#endif /* HAVE_ZLIB */ + #ifdef HAVE_SASL if (sasl_conn && sasl_ssf) { int i; @@ -196,6 +213,12 @@ static int highwater = 0; static void PushIOb(void) { +#if defined(HAVE_ZLIB) + /* Last line of a multi-line data block response. + * Time to flush the compressed output stream. */ + zstream_flush_needed = true; +#endif /* HAVE_ZLIB */ + write_buffer(_IO_buffer_, highwater); highwater = 0; } diff -Nurp inn-2.6.0/nnrpd/commands.c inn-2.6.1/nnrpd/commands.c --- inn-2.6.0/nnrpd/commands.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/nnrpd/commands.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: commands.c 9850 2015-05-03 15:25:53Z iulius $ +/* $Id: commands.c 9978 2015-12-11 20:39:56Z iulius $ ** ** Miscellaneous commands. */ @@ -14,8 +14,8 @@ #include "inn/version.h" #include "tls.h" -#ifdef HAVE_OPENSSL -extern bool nnrpd_starttls_done; +#if defined(HAVE_OPENSSL) +extern bool encryption_layer_on; #endif /* HAVE_OPENSSL */ typedef struct { @@ -264,6 +264,14 @@ CMDauthinfo(int ac, char *av[]) char errorstr[BIG_BUFFER]; int code; +#if defined(HAVE_ZLIB) + /* If a compression layer is active, AUTHINFO is not possible. */ + if (compression_layer_on && !tls_compression_on) { + Reply("%d Already using a compression layer\r\n", NNTP_ERR_ACCESS); + return; + } +#endif + if (strcasecmp(av[1], "GENERIC") == 0) { char *logrec = Glom(av); @@ -326,7 +334,7 @@ CMDauthinfo(int ac, char *av[]) #ifdef HAVE_OPENSSL /* Check whether STARTTLS must be used before trying to authenticate. */ if (PERMcanauthenticate && !PERMcanauthenticatewithoutSSL - && !nnrpd_starttls_done) { + && !encryption_layer_on) { Reply("%d Encryption required\r\n", NNTP_FAIL_PRIVACY_NEEDED); return; } @@ -355,7 +363,7 @@ CMDauthinfo(int ac, char *av[]) #ifdef HAVE_OPENSSL /* Check whether STARTTLS must be used before trying to authenticate. */ if (PERMcanauthenticate && !PERMcanauthenticatewithoutSSL - && !nnrpd_starttls_done) { + && !encryption_layer_on) { Reply("%d Encryption required\r\n", NNTP_FAIL_PRIVACY_NEEDED); return; } diff -Nurp inn-2.6.0/nnrpd/line.c inn-2.6.1/nnrpd/line.c --- inn-2.6.0/nnrpd/line.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/nnrpd/line.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: line.c 9563 2013-11-10 13:13:34Z iulius $ +/* $Id: line.c 9979 2015-12-11 20:40:29Z iulius $ ** ** Line by line reading support from sockets/pipes. ** @@ -27,6 +27,7 @@ extern SSL *tls_conn; #endif + /* ** Free a previously allocated line structure. */ @@ -86,6 +87,39 @@ line_doread(void *p, size_t len, int tim ssize_t n; do { +#if defined(HAVE_ZLIB) + /* Process data that may already be available in the zlib buffer. */ + if (compression_layer_on && + (zstream_in->avail_in > 0 || zstream_inflate_needed)) { + int r; + + zstream_in->next_out = p; + zstream_in->avail_out = len; + + r = inflate(zstream_in, Z_SYNC_FLUSH); + + if (!(r == Z_OK || r == Z_BUF_ERROR || r == Z_STREAM_END)) { + sysnotice("inflate() failed: %d; %s", r, + zstream_in->msg != NULL ? zstream_in->msg : + "no detail"); + n = -1; + break; + } + + /* Check whether inflate() has finished to process its input. + * If not, we need to call it again, even though avail_in is 0. */ + zstream_inflate_needed = (r != Z_STREAM_END); + + if (zstream_in->avail_out < len) { + /* Some data has been uncompressed. Treat it now. */ + n = len - zstream_in->avail_out; + break; + } + /* If we reach here, then it means that inflate() needs more + * input, so we go on reading data on the wire. */ + } +#endif /* HAVE_ZLIB */ + #ifdef HAVE_OPENSSL if (tls_conn) { int err; @@ -119,25 +153,79 @@ line_doread(void *p, size_t len, int tim if (n <= 0) break; /* EOF or error. */ -#ifdef HAVE_SASL - if (sasl_conn && sasl_ssf) { - /* Security layer in place, decode the data. */ - const char *out; - unsigned outlen; - int r; - - if ((r = sasl_decode(sasl_conn, p, n, &out, &outlen)) == SASL_OK) { - if (outlen) - memcpy(p, out, outlen); - n = outlen; - } else { - sysnotice("sasl_decode() failed: %s; %s", - sasl_errstring(r, NULL, NULL), - sasl_errdetail(sasl_conn)); - n = -1; - } - } +#if defined(HAVE_SASL) + if (sasl_conn != NULL && sasl_ssf > 0) { + /* Security layer in place, decode the data. + * The incoming data is always encoded in chunks of length + * inferior or equal to NNTP_MAXLEN_COMMAND (the maxbufsize value + * of SASL_SEC_PROPS passed as part of the SASL exchange). + * So there's enough data to read in the p buffer. */ + const char *out; + unsigned outlen; + int r; + + if ((r = sasl_decode(sasl_conn, p, n, &out, &outlen)) == SASL_OK) { + if (outlen > len) { + sysnotice("sasl_decode() returned too much output"); + n = -1; + } else { + if (outlen > 0) { + memcpy(p, out, outlen); + } + n = outlen; + } + } else { + const char *ed = sasl_errdetail(sasl_conn); + + sysnotice("sasl_decode() failed: %s; %s", + sasl_errstring(r, NULL, NULL), + ed != NULL ? ed : "no detail"); + n = -1; + } + } #endif /* HAVE_SASL */ + +#if defined(HAVE_ZLIB) + if (compression_layer_on && n > 0) { + size_t zconsumed; + + if (zstream_in->avail_in > 0 && zstream_in->next_in != Z_NULL) { + zconsumed = zstream_in->next_in - zbuf_in; + } else { + zconsumed = 0; + zbuf_in_allocated = 0; + } + + /* Transfer the data we have just read to zstream_in, + * and loop to actually process it. */ + if ((ssize_t) (zbuf_in_size - zbuf_in_allocated) < n) { + size_t newsize = zbuf_in_size * 2 + n; + + /* Don't grow the buffer bigger than the maximum + * article size we'll accept. */ + if (PERMaccessconf->localmaxartsize > NNTP_MAXLEN_COMMAND) { + if (newsize > PERMaccessconf->localmaxartsize) { + newsize = PERMaccessconf->localmaxartsize; + } + } + if (newsize == zbuf_in_size) { + warn("%s overflowed our zstream_in buffer (%lu)", + Client.host, (unsigned long) newsize); + n = -1; + break; + } + zbuf_in = xrealloc(zbuf_in, newsize); + zbuf_in_size = newsize; + } + memcpy(zbuf_in + zbuf_in_allocated, p, n); + zstream_in->next_in = zbuf_in + zconsumed; + zstream_in->avail_in += n; + zbuf_in_allocated += n; + zstream_inflate_needed = true; + /* Loop to actually inflate the compressed data we received. */ + n = 0; + } +#endif /* HAVE_ZLIB */ } while (n == 0); /* Split SASL blob, need to read more data. */ return n; diff -Nurp inn-2.6.0/nnrpd/misc.c inn-2.6.1/nnrpd/misc.c --- inn-2.6.0/nnrpd/misc.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/nnrpd/misc.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: misc.c 9563 2013-11-10 13:13:34Z iulius $ +/* $Id: misc.c 10078 2016-10-08 20:53:39Z iulius $ ** ** Miscellaneous support routines. */ @@ -18,12 +18,12 @@ /* Outside the ifdef so that make depend works even ifndef HAVE_OPENSSL. */ #include "inn/ov.h" -#ifdef HAVE_OPENSSL +#if defined(HAVE_OPENSSL) extern SSL *tls_conn; extern int tls_cipher_usebits; extern char *tls_peer_CN; -extern bool nnrpd_starttls_done; -#endif +extern bool encryption_layer_on; +#endif /* HAVE_OPENSSL */ /* @@ -244,14 +244,14 @@ PostRecFilename(char *ip, char *user) for (i=0; i<4; i++) quads[i] = (unsigned char) (0xff & (addr>>(i*8))); - snprintf(dirbuff, sizeof(dirbuff), "%s/%03d%03d/%03d", + snprintf(dirbuff, sizeof(dirbuff), "%s/%03u%03u/%03u", postrec_dir, quads[3], quads[2], quads[1]); if (!MakeDirectory(dirbuff,true)) { syslog(L_ERROR, "%s Unable to create postrec directories '%s': %s", Client.host, dirbuff, strerror(errno)); return NULL; } - snprintf(buff, sizeof(buff), "%s/%03d", dirbuff, quads[0]); + snprintf(buff, sizeof(buff), "%s/%03u", dirbuff, quads[0]); return(buff); } @@ -275,7 +275,7 @@ LockPostRec(char *path) fd = open(lockname, O_WRONLY|O_EXCL|O_CREAT, 0600); if (fd >= 0) { /* We got the lock! */ - snprintf(temp, sizeof(temp), "pid:%ld\n", (unsigned long) getpid()); + snprintf(temp, sizeof(temp), "pid:%lu\n", (unsigned long) getpid()); write(fd, temp, strlen(temp)); close(fd); return(1); @@ -449,7 +449,91 @@ RateLimit(long *sleeptime, char *path) return 1; } -#ifdef HAVE_OPENSSL +#if defined(HAVE_SASL) || defined(HAVE_ZLIB) +/* +** Check if the argument has a valid syntax. +** +** Currently used for both SASL mechanisms (RFC 4643) and compression +** algorithms. +** +** algorithm = 1*20alg-char +** alg-char = UPPER / DIGIT / "-" / "_" +*/ +bool +IsValidAlgorithm(const char *string) +{ + size_t len = 0; + const unsigned char *p; + + /* Not NULL. */ + if (string == NULL) { + return false; + } + + p = (const unsigned char *) string; + + for (; *p != '\0'; p++) { + len++; + + if (!isupper((unsigned char) *p) && !isdigit((unsigned char) *p) + && *p != '-' && *p != '_') { + return false; + } + } + + if (len > 0 && len < 21) { + return true; + } else { + return false; + } +} +#endif /* HAVE_SASL || HAVE_ZLIB */ + +#if defined(HAVE_ZLIB) +/* +** The COMPRESS command. +*/ +void +CMDcompress(int ac, char *av[]) +{ + bool result; + + /* Check the argument. */ + if (ac > 1) { + if (!IsValidAlgorithm(av[1])) { + Reply("%d Syntax error in compression algorithm name\r\n", + NNTP_ERR_SYNTAX); + return; + } + if (strcasecmp(av[1], "DEFLATE") != 0) { + Reply("%d Only the DEFLATE compression algorithm is supported\r\n", + NNTP_ERR_UNAVAILABLE); + return; + } + } + + if (compression_layer_on) { + Reply("%d Already using a compression layer\r\n", NNTP_ERR_ACCESS); + return; + } + + result = zlib_init(); + + if (!result) { + Reply("%d Impossible to activate compression\r\n", NNTP_FAIL_ACTION); + return; + } + + Reply("%d Compression now active; enjoy the speed!\r\n", NNTP_OK_COMPRESS); + + /* Flush any pending output, before enabling compression. */ + fflush(stdout); + + compression_layer_on = true; +} +#endif /* HAVE_ZLIB */ + +#if defined(HAVE_OPENSSL) /* ** The STARTTLS command. RFC 4642. */ @@ -459,10 +543,18 @@ CMDstarttls(int ac UNUSED, char *av[] UN int result; bool boolval; - if (nnrpd_starttls_done) { - Reply("%d Already using an active TLS layer\r\n", NNTP_ERR_ACCESS); + if (encryption_layer_on) { + Reply("%d Already using a security layer\r\n", NNTP_ERR_ACCESS); + return; + } + +# if defined(HAVE_ZLIB) + /* If a compression layer is active, STARTTLS is not possible. */ + if (compression_layer_on) { + Reply("%d Already using a compression layer\r\n", NNTP_ERR_ACCESS); return; } +# endif /* HAVE_ZLIB */ /* If the client is already authenticated, STARTTLS is not possible. */ if (PERMauthorized && !PERMneedauth && !PERMcanauthenticate) { @@ -478,6 +570,35 @@ CMDstarttls(int ac UNUSED, char *av[] UN return; } + /* Close out any existing article, report group stats. + * RFC 4642 requires the reset of any knowledge about the client. */ + if (GRPcur) { + ARTclose(); + GRPreport(); + OVctl(OVCACHEFREE, &boolval); + free(GRPcur); + GRPcur = NULL; + if (ARTcount) { + syslog(L_NOTICE, "%s exit for STARTTLS articles %ld groups %ld", + Client.host, ARTcount, GRPcount); + } + GRPcount = 0; + PERMgroupmadeinvalid = false; + } + + /* We can now assume a secure connection will be negotiated because + * nnrpd will exit if STARTTLS fails. + * Check the permissions the client will have after having successfully + * negotiated a TLS layer. (There may be auth blocks requiring the + * negotiation of a security layer in readers.conf that match the + * connection.) + * In case the client would no longer have access to the server, or an + * authentication error happens, the connection aborts after a fatal 400 + * response code sent by PERMgetpermissions(). */ + encryption_layer_on = true; + PERMgetaccess(false); + PERMgetpermissions(); + Reply("%d Begin TLS negotiation now\r\n", NNTP_CONT_STARTTLS); fflush(stdout); @@ -491,7 +612,7 @@ CMDstarttls(int ac UNUSED, char *av[] UN ExitWithStats(1, false); } -#ifdef HAVE_SASL +# if defined(HAVE_SASL) /* Tell SASL about the negotiated layer. */ result = sasl_setprop(sasl_conn, SASL_SSF_EXTERNAL, (sasl_ssf_t *) &tls_cipher_usebits); @@ -503,24 +624,15 @@ CMDstarttls(int ac UNUSED, char *av[] UN if (result != SASL_OK) { syslog(L_NOTICE, "sasl_setprop() failed: CMDstarttls()"); } -#endif /* HAVE_SASL */ +# endif /* HAVE_SASL */ - nnrpd_starttls_done = true; - - /* Close out any existing article, report group stats. - * RFC 4642 requires the reset of any knowledge about the client. */ - if (GRPcur) { - ARTclose(); - GRPreport(); - OVctl(OVCACHEFREE, &boolval); - free(GRPcur); - GRPcur = NULL; - if (ARTcount) - syslog(L_NOTICE, "%s exit for STARTTLS articles %ld groups %ld", - Client.host, ARTcount, GRPcount); - GRPcount = 0; - PERMgroupmadeinvalid = false; - } +# if defined(HAVE_ZLIB) && OPENSSL_VERSION_NUMBER >= 0x00090800fL + /* Check whether a compression layer has just been added. + * SSL_get_current_compression() is defined in OpenSSL versions >= 0.9.8 + * final release. */ + tls_compression_on = (SSL_get_current_compression(tls_conn) != NULL); + compression_layer_on = tls_compression_on; +# endif /* HAVE_ZLIB && OPENSSL >= v0.9.8 */ /* Reset our read buffer so as to prevent plaintext command injection. */ line_reset(&NNTPline); diff -Nurp inn-2.6.0/nnrpd/newnews.c inn-2.6.1/nnrpd/newnews.c --- inn-2.6.0/nnrpd/newnews.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/nnrpd/newnews.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: newnews.c 8903 2010-01-17 18:21:56Z iulius $ +/* $Id: newnews.c 10012 2016-05-05 12:41:10Z iulius $ ** ** The NEWNEWS command. */ @@ -117,7 +117,7 @@ HaveSeen(bool AllGroups, char *group, ch list[1] = NULL; for ( ; *xrefs; xrefs++) { list[0] = *xrefs; - if ((!AllGroups && PERMmatch(groups, list)) && (!PERMspecified || (PERMspecified && PERMmatch(PERMreadlist, list)))) { + if ((!AllGroups && PERMmatch(groups, list)) && (!PERMspecified || PERMmatch(PERMreadlist, list))) { if (!strcmp(*xrefs, group)) return false; else diff -Nurp inn-2.6.0/nnrpd/nnrpd.c inn-2.6.1/nnrpd/nnrpd.c --- inn-2.6.0/nnrpd/nnrpd.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/nnrpd/nnrpd.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: nnrpd.c 9913 2015-07-07 16:31:52Z iulius $ +/* $Id: nnrpd.c 10063 2016-09-04 12:53:12Z iulius $ ** ** NNTP server for readers (NNRP) for InterNetNews. ** @@ -13,7 +13,9 @@ #include "portable/socket.h" #include #include -#include +#if defined(INN_BSDI_HOST) +# include +#endif #if HAVE_GETSPNAM # include @@ -33,9 +35,12 @@ #include "tls.h" -#ifdef HAVE_OPENSSL +#if defined(HAVE_OPENSSL) extern SSL *tls_conn; -bool nnrpd_starttls_done = false; +#endif + +#if defined(HAVE_OPENSSL) || defined(HAVE_SASL) +bool encryption_layer_on = false; #endif @@ -126,6 +131,10 @@ static CMDENT CMDtable[] = { CMDfetchhelp }, { "CAPABILITIES", CMDcapabilities,false, 1, 2, true, "[keyword]" }, +#if defined(HAVE_ZLIB) + { "COMPRESS", CMDcompress, false, 2, 2, true, + "DEFLATE" }, +#endif { "DATE", CMDdate, false, 1, 1, true, NULL }, { "GROUP", CMDgroup, true, 2, 2, true, @@ -254,6 +263,17 @@ ExitWithStats(int x, bool readconf) sasl_done(); #endif /* HAVE_SASL */ +#if defined(HAVE_ZLIB) + if (compression_layer_on) { + inflateEnd(zstream_in); + free(zstream_in); + free(zbuf_in); + deflateEnd(zstream_out); + free(zstream_out); + free(zbuf_out); + } +#endif /* HAVE_ZLIB */ + if (DaemonMode) { shutdown(STDIN_FILENO, 2); shutdown(STDOUT_FILENO, 2); @@ -369,18 +389,24 @@ CMDcapabilities(int ac, char *av[]) if ((!PERMauthorized || PERMneedauth || PERMcanauthenticate)) { Printf("AUTHINFO"); - /* No arguments if the server does not permit any authentication commands - * in its current state. */ - if (PERMcanauthenticate) { + /* No arguments if the server does not permit any authentication + * commands in its current state (either a compression layer other + * than the one negotiated along with TLS is active, or the user + * has no way to authenticate successfully). */ + if ( +#if defined(HAVE_ZLIB) + (!compression_layer_on || tls_compression_on) && +#endif /* HAVE_ZLIB */ + PERMcanauthenticate) { #ifdef HAVE_OPENSSL - if (PERMcanauthenticatewithoutSSL || nnrpd_starttls_done) { + if (PERMcanauthenticatewithoutSSL || encryption_layer_on) { #endif /* AUTHINFO USER is advertised only if a TLS layer is active, * if compiled with TLS support. */ Printf(" USER"); #ifdef HAVE_OPENSSL } else { -#ifdef HAVE_SASL +# ifdef HAVE_SASL /* Remove unsecure PLAIN, LOGIN and EXTERNAL SASL mechanisms, * if compiled with TLS support and a TLS layer is not active. */ if (mechlist != NULL) { @@ -399,7 +425,7 @@ CMDcapabilities(int ac, char *av[]) memmove(p, p+9, strlen(p)-8); } } -#endif /* HAVE_SASL */ +# endif /* HAVE_SASL */ } #endif /* HAVE_OPENSSL */ #ifdef HAVE_SASL @@ -412,6 +438,13 @@ CMDcapabilities(int ac, char *av[]) Printf("\r\n"); } +#if defined(HAVE_ZLIB) + /* A compression layer is not active. */ + if (!compression_layer_on) { + Printf("COMPRESS DEFLATE\r\n"); + } +#endif /* HAVE_ZLIB */ + if (PERMcanread) { Printf("HDR\r\n"); } @@ -437,20 +470,31 @@ CMDcapabilities(int ac, char *av[]) Printf("READER\r\n"); -#ifdef HAVE_SASL - /* Check whether at least one SASL mechanism is available. */ +#if defined(HAVE_SASL) + /* Check whether at least one SASL mechanism is available. + * The SASL capability has to be advertised, even after authentication, + * so that the client can detect a possible active down-negotiation + * attack. */ if (mechlist != NULL && strlen(mechlist) > 2) { Printf("SASL%s\r\n", mechlist); } -#endif +#endif /* HAVE_SASL */ -#ifdef HAVE_OPENSSL - /* A TLS layer is not active and the client is not already authenticated. */ - if (!nnrpd_starttls_done +#if defined(HAVE_OPENSSL) + /* A TLS layer is not active, a compression layer is not active, + * and the client is not already authenticated. */ + if (!encryption_layer_on +# if defined(HAVE_ZLIB) + && !compression_layer_on +# endif /* HAVE_ZLIB */ && (!PERMauthorized || PERMneedauth || PERMcanauthenticate)) { Printf("STARTTLS\r\n"); } -#endif +#endif /* HAVE_OPENSSL */ + + if (PERMcanread) { + Printf("XPAT\r\n"); + } Printf(".\r\n"); } @@ -541,7 +585,6 @@ StartConnection(unsigned short port) struct sockaddr *sas = (struct sockaddr *) &sss; socklen_t length; size_t size; - int nodelay = 1; memset(&Client, 0, sizeof(Client)); strlcpy(Client.host, "?", sizeof(Client.host)); @@ -610,19 +653,25 @@ StartConnection(unsigned short port) Client.serverport = network_sockaddr_port(sas); } +#if defined(INN_BSDI_HOST) /* Setting TCP_NODELAY to nnrpd fixes a problem of slow downloading - * of overviews and slow answers on some architectures (like BSD/OS). */ + * of overviews and slow answers on some architectures (like BSD/OS + * where TCP delayed acknowledgements are enabled). */ + int nodelay = 1; setsockopt(STDIN_FILENO, IPPROTO_TCP, TCP_NODELAY, &nodelay, sizeof(nodelay)); +#endif notice("%s (%s) connect - port %u", Client.host, Client.ip, port); - PERMgetaccess(NNRPACCESS); + PERMgetinitialaccess(NNRPACCESS); + PERMgetaccess(true); PERMgetpermissions(); } /* -** Write a buffer, via SASL security layer and/or TLS if necessary. +** Write a buffer, via compression layer and/or SASL security layer +** and/or TLS if necessary. */ void write_buffer(const char *buff, ssize_t len) @@ -631,29 +680,68 @@ write_buffer(const char *buff, ssize_t l ssize_t n; TMRstart(TMR_NNTPWRITE); - p = buff; + +#if defined(HAVE_ZLIB) + if (compression_layer_on) { + int r; + + zstream_out->next_in = (unsigned char *) p; + zstream_out->avail_in = len; + zstream_out->next_out = zbuf_out; + zstream_out->avail_out = zbuf_out_size; + + do { + /* Grow the output buffer if needed. */ + if (zstream_out->avail_out == 0) { + size_t newsize = zbuf_out_size * 2; + zbuf_out = xrealloc(zbuf_out, newsize); + zstream_out->next_out = zbuf_out + zbuf_out_size; + zstream_out->avail_out = zbuf_out_size; + zbuf_out_size = newsize; + } + + r = deflate(zstream_out, + zstream_flush_needed ? Z_PARTIAL_FLUSH : Z_NO_FLUSH); + + if (!(r == Z_OK || r == Z_BUF_ERROR || r == Z_STREAM_END)) { + sysnotice("deflate() failed: %d; %s", r, + zstream_out->msg != NULL ? zstream_out->msg : + "no detail"); + return; + } + } while (r == Z_OK && zstream_out->avail_out == 0); + + p = (char *) zbuf_out; + len = zbuf_out_size - zstream_out->avail_out; + zstream_flush_needed = false; + } +#endif /* HAVE_ZLIB */ + while (len > 0) { const char *out; unsigned outlen; -#ifdef HAVE_SASL - if (sasl_conn && sasl_ssf) { +#if defined(HAVE_SASL) + if (sasl_conn != NULL && sasl_ssf > 0) { int r; - /* Can only encode as much as the client can handle at one time. */ - n = (len > sasl_maxout) ? sasl_maxout : len; - if ((r = sasl_encode(sasl_conn, p, n, &out, &outlen)) != SASL_OK) { - sysnotice("sasl_encode() failed: %s", - sasl_errstring(r, NULL, NULL)); - return; - } - } else + /* Can only encode as much as the client can handle at one time. */ + n = (len > sasl_maxout) ? sasl_maxout : len; + if ((r = sasl_encode(sasl_conn, p, n, &out, &outlen)) != SASL_OK) { + const char *ed = sasl_errdetail(sasl_conn); + + sysnotice("sasl_encode() failed: %s; %s", + sasl_errstring(r, NULL, NULL), + ed != NULL ? ed : "no detail"); + return; + } + } else #endif /* HAVE_SASL */ { /* Output the entire unencoded string. */ n = len; - out = buff; + out = p; outlen = len; } @@ -702,6 +790,10 @@ VPrintf(const char *fmt, va_list args, i ssize_t len; len = vsnprintf(buff, sizeof(buff), fmt, args); + if (len < 0) + len = 0; + else if ((size_t)len >= sizeof(buff)) + len = sizeof(buff) - 1; write_buffer(buff, len); if (dotrace && Tracing) { @@ -729,6 +821,11 @@ Reply(const char *fmt, ...) { va_list args; +#if defined(HAVE_ZLIB) + /* For single-line responses, immediately flush the output stream. */ + zstream_flush_needed = true; +#endif /* HAVE_ZLIB */ + va_start(args, fmt); VPrintf(fmt, args, 1); va_end(args); @@ -739,6 +836,16 @@ Printf(const char *fmt, ...) { va_list args; +#if defined(HAVE_ZLIB) + /* Last line of a multi-line data block response. + * Time to flush the compressed output stream. + * Check that only when the compression layer is active. */ + if (compression_layer_on && + strlen(fmt) == 3 && strcasecmp(fmt, ".\r\n") == 0) { + zstream_flush_needed = true; + } +#endif /* HAVE_ZLIB */ + va_start(args, fmt); VPrintf(fmt, args, 0); va_end(args); @@ -851,7 +958,7 @@ main(int argc, char *argv[]) char **v; char *Reject; int timeout; - unsigned int vid=0; + unsigned int vid=0; int count=123456789; struct timeval tv; unsigned short ListenPort = NNTP_PORT; @@ -969,7 +1076,7 @@ main(int argc, char *argv[]) Tracing = true; break; #ifdef HAVE_OPENSSL - case 'S': /* Force SSL negotiation. */ + case 'S': /* Force the negotiation of an encryption layer. */ initialSSL = true; break; #endif /* HAVE_OPENSSL */ @@ -1198,10 +1305,18 @@ main(int argc, char *argv[]) if (initialSSL) { tls_init(); if (tls_start_servertls(0, 1) == -1) { - Reply("%d SSL connection failed\r\n", NNTP_FAIL_TERMINATING); + Reply("%d Encrypted TLS connection failed\r\n", NNTP_FAIL_TERMINATING); ExitWithStats(1, false); } - nnrpd_starttls_done = true; + encryption_layer_on = true; + +# if defined(HAVE_ZLIB) && OPENSSL_VERSION_NUMBER >= 0x00090800fL + /* Check whether a compression layer has just been added. + * SSL_get_current_compression() is defined in OpenSSL versions >= 0.9.8 + * final release. */ + tls_compression_on = (SSL_get_current_compression(tls_conn) != NULL); + compression_layer_on = tls_compression_on; +# endif /* HAVE_ZLIB && OPENSSL >= v0.9.8 */ } #endif /* HAVE_OPENSSL */ @@ -1264,7 +1379,7 @@ main(int argc, char *argv[]) vid = tv.tv_sec ^ tv.tv_usec ^ pid ^ count; len = strlen("innconf->pathlog") + strlen("/tracklogs/log-") + BUFSIZ; LocalLogFileName = xmalloc(len); - sprintf(LocalLogFileName, "%s/tracklogs/log-%d", innconf->pathlog, vid); + sprintf(LocalLogFileName, "%s/tracklogs/log-%u", innconf->pathlog, vid); if ((locallog = fopen(LocalLogFileName, "w")) == NULL) { LocalLogDirName = concatpath(innconf->pathlog, "tracklogs"); MakeDirectory(LocalLogDirName, false); diff -Nurp inn-2.6.0/nnrpd/nnrpd.h inn-2.6.1/nnrpd/nnrpd.h --- inn-2.6.0/nnrpd/nnrpd.h 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/nnrpd/nnrpd.h 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: nnrpd.h 9795 2015-03-18 20:31:16Z iulius $ +/* $Id: nnrpd.h 10121 2016-11-23 21:32:53Z iulius $ ** ** NetNews Reading Protocol server. */ @@ -34,6 +34,13 @@ #include #endif +#if !defined(HAVE_ZLIB_H) +# undef HAVE_ZLIB +#endif +#if defined(HAVE_ZLIB) +# include +#endif + /* ** A range of article numbers. */ @@ -160,7 +167,7 @@ enum timer { EXTERN bool PERMauthorized; EXTERN bool PERMcanauthenticate; -#ifdef HAVE_OPENSSL +#if defined(HAVE_OPENSSL) || defined(HAVE_SASL) EXTERN bool PERMcanauthenticatewithoutSSL; #endif EXTERN bool PERMcanpost; @@ -232,7 +239,8 @@ extern char *GetHeader(const char *head extern void GRPreport(void); extern bool NGgetlist(char ***argvp, char *list); extern bool PERMartok(void); -extern void PERMgetaccess(char *nnrpaccess); +extern void PERMgetinitialaccess(char *readersconf); +extern void PERMgetaccess(bool initialconnection); extern void PERMgetpermissions(void); extern void PERMlogin(char *uname, char *pass, int* code, char *errorstr); extern bool PERMmatch(char **Pats, char **list); @@ -245,6 +253,9 @@ extern void Printf(const cha extern void CMDauthinfo (int ac, char** av); extern void CMDcapabilities (int ac, char** av); +#if defined(HAVE_ZLIB) +extern void CMDcompress (int ac, char** av); +#endif extern void CMDdate (int ac, char** av); extern void CMDfetch (int ac, char** av); extern void CMDgroup (int ac, char** av); @@ -313,3 +324,25 @@ extern sasl_callback_t sasl_callbacks[]; void SASLauth(int ac, char *av[]); void SASLnewserver(void); #endif /* HAVE_SASL */ + +#if defined(HAVE_SASL) || defined(HAVE_ZLIB) +bool IsValidAlgorithm(const char *); +#endif /* HAVE_SASL || HAVE_ZLIB */ + +#if defined(HAVE_ZLIB) +extern bool compression_layer_on; +extern bool tls_compression_on; +/* (De)compress streams and related variables. */ +extern z_stream *zstream_in; +extern z_stream *zstream_out; +extern bool zstream_inflate_needed; +extern bool zstream_flush_needed; +/* (De)compress buffers and related variables. */ +extern unsigned char *zbuf_in; +extern size_t zbuf_in_allocated; +extern size_t zbuf_in_size; +extern unsigned char *zbuf_out; +extern size_t zbuf_out_size; + +bool zlib_init(void); +#endif /* HAVE_ZLIB */ diff -Nurp inn-2.6.0/nnrpd/perm.c inn-2.6.1/nnrpd/perm.c --- inn-2.6.0/nnrpd/perm.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/nnrpd/perm.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: perm.c 9847 2015-05-03 15:01:03Z iulius $ +/* $Id: perm.c 10117 2016-11-06 14:23:27Z iulius $ ** ** How to figure out where a user comes from, and what that user can do once ** we know who sie is. @@ -15,15 +15,16 @@ #include "inn/innconf.h" #include "innperl.h" #include "nnrpd.h" +#include "tls.h" /* Needed on AIX 4.1 to get fd_set and friends. */ #ifdef HAVE_SYS_SELECT_H # include #endif -#ifdef HAVE_OPENSSL -extern bool nnrpd_starttls_done; -#endif /* HAVE_OPENSSL */ +#if defined(HAVE_OPENSSL) || defined(HAVE_SASL) +extern bool encryption_layer_on; +#endif /* HAVE_OPENSSL || HAVE_SASL */ /* Data types. */ typedef struct _CONFCHAIN { @@ -42,7 +43,7 @@ typedef struct _METHOD { typedef struct _AUTHGROUP { char *name; char *key; -#ifdef HAVE_OPENSSL +#if defined(HAVE_OPENSSL) || defined(HAVE_SASL) int require_ssl; #endif char *hosts; @@ -161,7 +162,7 @@ extern bool PerlLoaded; #define PERMperl_access 59 #define PERMpython_access 60 #define PERMpython_dynamic 61 -#ifdef HAVE_OPENSSL +#if defined(HAVE_OPENSSL) || defined(HAVE_SASL) #define PERMrequire_ssl 62 #define PERMMAX 63 #else @@ -251,7 +252,7 @@ static CONFTOKEN PERMtoks[] = { { PERMperl_access, (char *) "perl_access:" }, { PERMpython_access, (char *) "python_access:" }, { PERMpython_dynamic, (char *) "python_dynamic:" }, -#ifdef HAVE_OPENSSL +#if defined(HAVE_OPENSSL) || defined(HAVE_SASL) { PERMrequire_ssl, (char *) "require_ssl:" }, #endif { 0, (char *) NULL } @@ -351,7 +352,7 @@ copy_authgroup(AUTHGROUP *orig) else ret->hosts = 0; -#ifdef HAVE_OPENSSL +#if defined(HAVE_OPENSSL) || defined(HAVE_SASL) ret->require_ssl = orig->require_ssl; #endif @@ -453,7 +454,7 @@ copy_accessgroup(ACCESSGROUP *orig) static void SetDefaultAuth(AUTHGROUP *curauth UNUSED) { -#ifdef HAVE_OPENSSL +#if defined(HAVE_OPENSSL) || defined(HAVE_SASL) curauth->require_ssl = false; #endif } @@ -633,7 +634,7 @@ static void authdecl_parse(AUTHGROUP *curauth, CONFFILE *f, CONFTOKEN *tok) { int oldtype; -#ifdef HAVE_OPENSSL +#if defined(HAVE_OPENSSL) || defined(HAVE_SASL) int boolval; #endif METHOD *m; @@ -655,7 +656,7 @@ authdecl_parse(AUTHGROUP *curauth, CONFF ReportError(f, buff); } -#ifdef HAVE_OPENSSL +#if defined(HAVE_OPENSSL) || defined(HAVE_SASL) if (strcasecmp(tok->name, "on") == 0 || strcasecmp(tok->name, "true") == 0 || strcasecmp(tok->name, "yes") == 0) @@ -673,7 +674,7 @@ authdecl_parse(AUTHGROUP *curauth, CONFF curauth->key = xstrdup(tok->name); SET_CONFIG(PERMkey); break; -#ifdef HAVE_OPENSSL +#if defined(HAVE_OPENSSL) || defined(HAVE_SASL) case PERMrequire_ssl: if (boolval != -1) curauth->require_ssl = boolval; @@ -1266,7 +1267,7 @@ PERMreadfile(char *filename) /* Stuff that belongs to an auth group. */ case PERMhost: -#ifdef HAVE_OPENSSL +#if defined(HAVE_OPENSSL) || defined(HAVE_SASL) case PERMrequire_ssl: #endif case PERMauthprog: @@ -1402,10 +1403,9 @@ again: } void -PERMgetaccess(char *nnrpaccess) +PERMgetinitialaccess(char *readersconf) { int i; - char *uname; auth_realms = NULL; access_realms = NULL; @@ -1416,24 +1416,28 @@ PERMgetaccess(char *nnrpaccess) #else PERMcanauthenticate = false; #endif -#ifdef HAVE_OPENSSL +#if defined(HAVE_OPENSSL) || defined(HAVE_SASL) PERMcanauthenticatewithoutSSL = false; #endif PERMgroupmadeinvalid = false; PERMcanpostgreeting = false; PERMcanread = PERMcanpost = false; - PERMreadlist = PERMpostlist = false; + PERMreadlist = PERMpostlist = NULL; PERMaccessconf = NULL; if (ConfigBit == NULL) { - if (PERMMAX % 8 == 0) - ConfigBitsize = PERMMAX/8; - else - ConfigBitsize = (PERMMAX - (PERMMAX % 8))/8 + 1; - ConfigBit = xcalloc(ConfigBitsize, 1); + if (PERMMAX % 8 == 0) { + ConfigBitsize = PERMMAX/8; + } else { + ConfigBitsize = (PERMMAX - (PERMMAX % 8))/8 + 1; + } + ConfigBit = xcalloc(ConfigBitsize, 1); } - PERMreadfile(nnrpaccess); + /* Parse the readers.conf file. */ + PERMreadfile(readersconf); + + /* Remove unused access groups. */ strip_accessgroups(); if (auth_realms == NULL) { @@ -1445,12 +1449,12 @@ PERMgetaccess(char *nnrpaccess) } /* auth_realms are all expected to match the user. - * Be careful whether SSL is required, though. */ - for (i = 0; auth_realms[i]; i++) { + * Be careful whether an encryption layer is required, though. */ + for (i = 0; auth_realms[i] != NULL; i++) { if (auth_realms[i]->auth_methods != NULL) { PERMcanauthenticate = true; -#ifdef HAVE_OPENSSL - if (auth_realms[i]->require_ssl == false) +#if defined(HAVE_OPENSSL) || defined(HAVE_SASL) + if (!auth_realms[i]->require_ssl) PERMcanauthenticatewithoutSSL = true; #endif } @@ -1461,54 +1465,89 @@ PERMgetaccess(char *nnrpaccess) || auth_realms[i]->dynamic_script != NULL) PERMcanpostgreeting = true; } - uname = 0; - while (!uname && i--) { -#ifdef HAVE_OPENSSL - /* If SSL is required, check that the connection is encrypted. */ - if ((auth_realms[i]->require_ssl == true) && !nnrpd_starttls_done) +} + +void +PERMgetaccess(bool initialconnection) +{ + char *uname; + int i; + + if (ConfigBit == NULL) { + if (PERMMAX % 8 == 0) { + ConfigBitsize = PERMMAX/8; + } else { + ConfigBitsize = (PERMMAX - (PERMMAX % 8))/8 + 1; + } + ConfigBit = xcalloc(ConfigBitsize, 1); + } + + if (auth_realms == NULL) { + return; + } + + for (i = 0; auth_realms[i] != NULL; i++) { + ; + } + + uname = NULL; + while (uname == NULL && i-- > 0) { +#if defined(HAVE_OPENSSL) || defined(HAVE_SASL) + /* If an encryption layer is required, check that the connection + * really uses one. */ + if (auth_realms[i]->require_ssl && !encryption_layer_on) { continue; + } #endif - if ((uname = ResolveUser(auth_realms[i])) != NULL) - PERMauthorized = true; - if (!uname && auth_realms[i]->default_user) - uname = xstrdup(auth_realms[i]->default_user); + if ((uname = ResolveUser(auth_realms[i])) != NULL) { + PERMauthorized = true; + } + if (uname == NULL && auth_realms[i]->default_user != NULL) { + uname = xstrdup(auth_realms[i]->default_user); + } } - if (uname) { - strlcpy(PERMuser, uname, sizeof(PERMuser)); + if (uname != NULL) { + strlcpy(PERMuser, uname, sizeof(PERMuser)); free(uname); - uname = strchr(PERMuser, '@'); - if (!uname && auth_realms[i]->default_domain) { - /* Append the default domain to the username. */ - strlcat(PERMuser, "@", sizeof(PERMuser)); - strlcat(PERMuser, auth_realms[i]->default_domain, + uname = strchr(PERMuser, '@'); + if (uname == NULL && auth_realms[i]->default_domain != NULL) { + /* Append the default domain to the username. */ + strlcat(PERMuser, "@", sizeof(PERMuser)); + strlcat(PERMuser, auth_realms[i]->default_domain, sizeof(PERMuser)); - } - PERMneedauth = false; - success_auth = auth_realms[i]; - syslog(L_TRACE, "%s res %s", Client.host, PERMuser); - } else if (!PERMcanauthenticate) { - /* Couldn't resolve the user. */ - syslog(L_NOTICE, "%s no_user", Client.host); - Reply("%d Could not get your access name. Goodbye!\r\n", - NNTP_ERR_ACCESS); - ExitWithStats(1, true); + } + PERMneedauth = false; + success_auth = auth_realms[i]; + syslog(L_TRACE, "%s res %s", Client.host, PERMuser); + } else if (initialconnection && !PERMcanauthenticate) { + /* Couldn't resolve the user. */ + syslog(L_NOTICE, "%s no_user", Client.host); + Reply("%d Could not get your access name. Goodbye!\r\n", + NNTP_ERR_ACCESS); + ExitWithStats(1, true); } else { - PERMneedauth = true; + PERMneedauth = true; } - /* Check maximum allowed permissions for any host that matches (for - * the greeting string). */ - for (i = 0; access_realms[i]; i++) { - if (!PERMcanread) - PERMcanread = (access_realms[i]->read != NULL); - if (!PERMcanpost) - PERMcanpost = (access_realms[i]->post != NULL); - if (!PERMcanpostgreeting) - PERMcanpostgreeting = (access_realms[i]->post != NULL); - } - if (!i) { - /* No applicable access groups. Zeroing all these makes INN - * return permission denied to client. */ - PERMcanread = PERMcanpost = PERMneedauth = false; + + if (initialconnection) { + /* Check maximum allowed permissions for any host that matches (for + * the greeting string). */ + for (i = 0; access_realms[i] != NULL; i++) { + if (!PERMcanread) { + PERMcanread = (access_realms[i]->read != NULL); + } + if (!PERMcanpost) { + PERMcanpost = (access_realms[i]->post != NULL); + } + if (!PERMcanpostgreeting) { + PERMcanpostgreeting = (access_realms[i]->post != NULL); + } + } + if (i == 0) { + /* No applicable access groups. Zeroing all these makes INN + * return permission denied to client. */ + PERMcanread = PERMcanpost = PERMneedauth = false; + } } } @@ -1953,9 +1992,10 @@ ResolveUser(AUTHGROUP *auth) if (auth->res_methods == NULL) return NULL; -#ifdef HAVE_OPENSSL - /* If SSL is required, check that the connection is encrypted. */ - if ((auth->require_ssl == true) && !nnrpd_starttls_done) +#if defined(HAVE_OPENSSL) || defined(HAVE_SASL) + /* If an encryption layer is required, check that the connection + * really uses one. */ + if (auth->require_ssl && !encryption_layer_on) return NULL; #endif @@ -2003,9 +2043,10 @@ AuthenticateUser(AUTHGROUP *auth, char * if (auth->auth_methods == NULL) return NULL; -#ifdef HAVE_OPENSSL - /* If SSL is required, check that the connection is encrypted. */ - if ((auth->require_ssl == true) && !nnrpd_starttls_done) +#if defined(HAVE_OPENSSL) || defined(HAVE_SASL) + /* If an encryption layer is required, check that the connection + * really uses one. */ + if (auth->require_ssl && !encryption_layer_on) return NULL; #endif diff -Nurp inn-2.6.0/nnrpd/post.c inn-2.6.1/nnrpd/post.c --- inn-2.6.0/nnrpd/post.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/nnrpd/post.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: post.c 9924 2015-08-04 12:36:38Z iulius $ +/* $Id: post.c 10071 2016-09-17 20:40:43Z iulius $ ** ** Check article, send it to the local server. */ @@ -27,6 +27,10 @@ static const char * const BadDistribs[] /* ** Do not modify the table without also looking at post.h for potential ** changes in the order of the fields. +** +** The table should reflect the status of the fields in the "Permanent +** Message Header Field Names" registry: +** http://www.iana.org/assignments/message-headers/ */ HEADER Table[] = { /* Name CanSet Type Size Value */ @@ -62,8 +66,6 @@ HEADER Table[] = { { "Keywords", true, HTstd, 0, NULL, NULL, 0 }, { "User-Agent", true, HTstd, 0, NULL, NULL, 0 }, { "Date-Received", false, HTobs, 0, NULL, NULL, 0 }, - { "Received", false, HTobs, 0, NULL, NULL, 0 }, - { "Posted", false, HTobs, 0, NULL, NULL, 0 }, { "Posting-Version", false, HTobs, 0, NULL, NULL, 0 }, { "Relay-Version", false, HTobs, 0, NULL, NULL, 0 }, { "Cc", true, HTstd, 0, NULL, NULL, 0 }, @@ -347,12 +349,15 @@ ProcessHeaders(char *idbuff, bool needmo const char *error; pid_t pid; bool addvirtual = false; + int i; /* Get the current time, used for creating and checking dates. */ now = time(NULL); /* datebuff is used for both Injection-Date: and Date: header fields - * so we have to set it now, and it has to be the UTC date. */ + * so we have to set it now, and it has to be the UTC date (unless + * for the Date: header field if localtime is set to true + * in readers.conf). */ if (!makedate(-1, false, datebuff, sizeof(datebuff))) return "Can't generate Date: header"; @@ -363,15 +368,22 @@ ProcessHeaders(char *idbuff, bool needmo "Can't set system %s: header", hp->Name); return Error; } - if (hp->Value) { - hp->Len = TrimSpaces(hp->Value); + if (hp->Value) { + hp->Len = TrimSpaces(hp->Value); /* If the header is empty, we just remove it. We do not reject * the article, contrary to what an injecting agent is supposed * to do per Section 3.5 of RFC 5537. (A revision to RFC 5537 * may someday allow again that existing and useful feature.) */ - if (hp->Len == 0) - hp->Value = hp->Body = NULL; - } + if (hp->Len == 0) { + hp->Value = hp->Body = NULL; + } else if (!IsValidHeaderBody(hp->Value)) { + snprintf(Error, sizeof(Error), + "Invalid syntax encountered in %s: header field " + "body (unexpected byte or empty content line)", + hp->Name); + return Error; + } + } } /* Set the Injection-Date: header. */ @@ -621,6 +633,16 @@ ProcessHeaders(char *idbuff, bool needmo return Error; } + /* Check that all other header fields are valid. */ + for (i = 0; i < OtherCount; i++) { + if (!IsValidHeaderField(OtherHeaders[i])) { + snprintf(Error, sizeof(Error), + "Invalid syntax encountered in headers (unexpected " + "byte, no colon-space, or empty content line)"); + return Error; + } + } + return NULL; } @@ -687,7 +709,6 @@ MailArticle(char *group, char *article) int i; char *address; char buff[SMBUF]; - char *mta; /* Try to get the address first. */ if ((address = GetModeratorAddress(NULL, NULL, group, PERMaccessconf->moderatormailer)) == NULL) { @@ -700,11 +721,9 @@ MailArticle(char *group, char *article) /* Now build up the command (ignore format/argument mismatch errors, * in case %s isn't in inconf->mta) and send the headers. */ - if ((mta = innconf->mta) == NULL) + if (innconf->mta == NULL) return "Can't start mailer -- mta not set"; -#pragma GCC diagnostic ignored "-Wformat-nonliteral" snprintf(buff, sizeof(buff), innconf->mta, address); -#pragma GCC diagnostic warning "-Wformat-nonliteral" if ((F = popen(buff, "w")) == NULL) return "Can't start mailer"; fprintf(F, "To: %s\n", address); @@ -1159,7 +1178,9 @@ ARTpost(char *article, char *idbuff, boo } #if defined(DO_PERL) - /* Calls the Perl subroutine for headers management. */ + /* Calls the Perl subroutine for headers management. + * The article may be modified, and its syntax may become invalid + * but well... that's the news admin choice! */ p = PERMaccessconf->nnrpdperlfilter ? HandleHeaders(article) : NULL; if (p != NULL) { char SDir[255]; diff -Nurp inn-2.6.0/nnrpd/post.h inn-2.6.1/nnrpd/post.h --- inn-2.6.0/nnrpd/post.h 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/nnrpd/post.h 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: post.h 8857 2009-12-24 12:08:00Z iulius $ +/* $Id: post.h 10038 2016-06-01 20:08:10Z iulius $ ** ** NetNews Reading Protocol server. */ @@ -53,6 +53,6 @@ typedef struct _HEADER { #define HDR__MESSAGEID 15 #define HDR__INJECTION_DATE 26 #define HDR__INJECTION_INFO 27 -#define HDR__CC 36 -#define HDR__BCC 37 -#define HDR__TO 38 +#define HDR__CC 34 +#define HDR__BCC 35 +#define HDR__TO 36 diff -Nurp inn-2.6.0/nnrpd/sasl.c inn-2.6.1/nnrpd/sasl.c --- inn-2.6.0/nnrpd/sasl.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/nnrpd/sasl.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,7 +1,7 @@ /* ** AUTHINFO SASL functionality. ** -** $Id: sasl.c 9870 2015-05-17 17:23:07Z iulius $ +** $Id: sasl.c 10117 2016-11-06 14:23:27Z iulius $ */ #include "config.h" @@ -12,12 +12,15 @@ /* Outside the ifdef so that make depend works even ifndef HAVE_OPENSSL. */ #include "inn/ov.h" +#include "tls.h" -#ifdef HAVE_OPENSSL +#if defined(HAVE_OPENSSL) extern int tls_cipher_usebits; extern char *tls_peer_CN; -extern bool nnrpd_starttls_done; #endif /* HAVE_OPENSSL */ +#if defined(HAVE_OPENSSL) || defined(HAVE_SASL) +extern bool encryption_layer_on; +#endif /* HAVE_OPENSSL || HAVE_SASL */ #ifdef HAVE_SASL sasl_conn_t *sasl_conn = NULL; @@ -33,38 +36,6 @@ sasl_callback_t sasl_callbacks[] = { #define BASE64_BUF_SIZE 21848 /* Per RFC 4422: (floor(n/3) + 1) * 4 where n = 16 kB = 16384 bytes. */ - -/* -** Check if the argument is a valid mechanism according to RFC 4643: -** -** mechanism = 1*20mech-char -** mech-char = UPPER / DIGIT / "-" / "_" -*/ -static bool -IsValidMechanism(const char *string) -{ - int len = 0; - const unsigned char *p; - - /* Not NULL. */ - if (string == NULL) - return false; - - p = (const unsigned char *) string; - - for (; *p != '\0'; p++) { - len++; - if (!isalnum((unsigned char) *p) && *p != '-' && *p != '_') - return false; - } - - if (len > 0 && len < 21) - return true; - else - return false; -} - - /* ** Create a new SASL server authentication object. */ @@ -94,7 +65,7 @@ SASLnewserver(void) sasl_setprop(sasl_conn, SASL_SEC_PROPS, &secprops); #ifdef HAVE_OPENSSL /* Tell SASL about the negotiated TLS layer. */ - if (nnrpd_starttls_done) { + if (encryption_layer_on) { if (sasl_setprop(sasl_conn, SASL_SSF_EXTERNAL, (sasl_ssf_t *) &tls_cipher_usebits) != SASL_OK) { syslog(L_NOTICE, "sasl_setprop() failed: TLS layer for SASL"); @@ -135,8 +106,8 @@ SASLauth(int ac, char *av[]) mech = av[2]; - if (!IsValidMechanism(mech)) { - Reply("%d Syntax error in mechanism\r\n", NNTP_ERR_SYNTAX); + if (!IsValidAlgorithm(mech)) { + Reply("%d Syntax error in mechanism name\r\n", NNTP_ERR_SYNTAX); return; } @@ -153,10 +124,10 @@ SASLauth(int ac, char *av[]) /* Check whether STARTTLS must be used before trying to authenticate * with AUTHINFO SASL PLAIN, LOGIN or EXTERNAL. */ if (PERMcanauthenticate && !PERMcanauthenticatewithoutSSL - && !nnrpd_starttls_done && ((strcasecmp(mech, "PLAIN") == 0 + && !encryption_layer_on && ((strcasecmp(mech, "PLAIN") == 0 || strcasecmp(mech, "LOGIN") == 0 || strcasecmp(mech, "EXTERNAL") == 0))) { - Reply("%d Encryption required\r\n", NNTP_FAIL_PRIVACY_NEEDED); + Reply("%d Encryption layer required\r\n", NNTP_FAIL_PRIVACY_NEEDED); return; } #endif @@ -291,26 +262,22 @@ SASLauth(int ac, char *av[]) } if (r == SASL_OK) { - /* Success. */ - strlcpy(PERMuser, canon_user, sizeof(PERMuser)); - PERMgetpermissions(); - PERMneedauth = false; - PERMauthorized = true; - PERMcanauthenticate = false; - - syslog(L_NOTICE, "%s user %s", Client.host, PERMuser); - - if (serveroutlen) - Reply("%d %s\r\n", NNTP_OK_SASL, base64); - else - Reply("%d Authentication succeeded\r\n", NNTP_OK_AUTHINFO); - - /* Save info about the negotiated security layer for I/O functions. */ - sasl_ssf = *ssfp; - sasl_maxout = - (*maxoutp == 0 || *maxoutp > NNTP_MAXLEN_COMMAND) ? NNTP_MAXLEN_COMMAND : *maxoutp; + /* Success! + * First, save info about the negotiated security layer + * for I/O functions. */ + sasl_ssf = *ssfp; + sasl_maxout = (*maxoutp == 0 || *maxoutp > NNTP_MAXLEN_COMMAND) ? + NNTP_MAXLEN_COMMAND : *maxoutp; + + if (sasl_ssf > 1) { + /* For the forthcoming check of the permissions the client now + * has, tell the connection is encrypted, so that auth blocks + * requiring the negotiation of a security layer in readers.conf + * are properly taken into account. + * When sasl_ssf equals 1, only data integrity is provided, without + * any security. */ + encryption_layer_on = true; - if (sasl_ssf > 0) { /* Close out any existing article, report group stats. * RFC 4643 requires the reset of any knowledge about the client. */ if (GRPcur) { @@ -320,15 +287,33 @@ SASLauth(int ac, char *av[]) OVctl(OVCACHEFREE, &boolval); free(GRPcur); GRPcur = NULL; - if (ARTcount) - syslog(L_NOTICE, "%s exit for AUTHINFO SASL articles %ld groups %ld", + if (ARTcount) { + syslog(L_NOTICE, + "%s exit for AUTHINFO SASL articles %ld groups %ld", Client.host, ARTcount, GRPcount); + } GRPcount = 0; PERMgroupmadeinvalid = false; + + /* Reset our read buffer so as to prevent plaintext + * command injection. */ + line_reset(&NNTPline); } + } - /* Reset our read buffer so as to prevent plaintext command injection. */ - line_reset(&NNTPline); + PERMgetaccess(false); + strlcpy(PERMuser, canon_user, sizeof(PERMuser)); + PERMgetpermissions(); + PERMneedauth = false; + PERMauthorized = true; + PERMcanauthenticate = false; + + syslog(L_NOTICE, "%s user %s", Client.host, PERMuser); + + if (serveroutlen) { + Reply("%d %s\r\n", NNTP_OK_SASL, base64); + } else { + Reply("%d Authentication succeeded\r\n", NNTP_OK_AUTHINFO); } } else { /* Failure. */ diff -Nurp inn-2.6.0/nnrpd/tls.c inn-2.6.1/nnrpd/tls.c --- inn-2.6.0/nnrpd/tls.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/nnrpd/tls.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: tls.c 9841 2015-05-02 16:27:37Z iulius $ +/* $Id: tls.c 10090 2016-11-03 02:30:12Z eagle $ ** ** tls.c -- TLSv1 functions. ** Copyright (C) 2000 Kenichi Okada . @@ -216,7 +216,10 @@ tmp_dh_cb(SSL *s UNUSED, int export UNUS default: /* We should check current keylength vs. requested keylength * also, this is an extremely expensive operation! */ - dh = DH_generate_parameters(keylength, DH_GENERATOR_2, NULL, NULL); + dh = DH_new(); + if (dh != NULL) { + DH_generate_parameters_ex(dh, keylength, DH_GENERATOR_2, NULL); + } r = dh; } @@ -241,9 +244,13 @@ verify_callback(int ok, X509_STORE_CTX * err = X509_STORE_CTX_get_error(ctx); depth = X509_STORE_CTX_get_error_depth(ctx); - X509_NAME_oneline(X509_get_subject_name(err_cert), buf, sizeof(buf)); - if ((tls_serveractive) && (tls_loglevel >= 1)) - Printf("Peer cert verify depth=%d %s", depth, buf); + if (err_cert != NULL) { + X509_NAME_oneline(X509_get_subject_name(err_cert), buf, sizeof(buf)); + if ((tls_serveractive) && (tls_loglevel >= 1)) { + Printf("Peer cert verify depth=%d %s", depth, buf); + } + } + if (ok==0) { syslog(L_NOTICE, "verify error:num=%d:%s", err, @@ -257,9 +264,10 @@ verify_callback(int ok, X509_STORE_CTX * verify_error = X509_V_ERR_CERT_CHAIN_TOO_LONG; } } - switch (ctx->error) { + + switch (err) { case X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT: - X509_NAME_oneline(X509_get_issuer_name(ctx->current_cert), buf, sizeof(buf)); + X509_NAME_oneline(X509_get_issuer_name(err_cert), buf, sizeof(buf)); syslog(L_NOTICE, "issuer= %s", buf); break; case X509_V_ERR_CERT_NOT_YET_VALID: @@ -383,15 +391,13 @@ set_cert_stuff(SSL_CTX * ctx, char *cert return (0); } - /* Check that the key file is a real file, not readable by - * everyone. If the mode is 440 or 640, make sure the group owner - * is the news group (to prevent the failure case of having news:users - * as the owner and group. */ - if (!S_ISREG(buf.st_mode) || (buf.st_mode & 0137) != 0 - || ((buf.st_mode & 0040) != 0 && buf.st_gid != getegid())) { + /* Check that the key file is a real file, isn't world-readable, and + * that we can read it. */ + if (!S_ISREG(buf.st_mode) || (buf.st_mode & 0007) != 0 + || access(key_file, R_OK) < 0) { syslog(L_ERROR, "bad ownership or permissions on private key" - " '%s': private key must be mode 640 at most, and readable" - " by the news group only", key_file); + " '%s': private key must be a regular file, readable by" + " nnrpd, and not world-readable", key_file); return (0); } @@ -492,10 +498,17 @@ tls_init_serverengine(int verifydepth, i if (tls_loglevel >= 2) Printf("starting TLS engine"); +/* New functions have been introduced in OpenSSL 1.1.0. */ +#if OPENSSL_VERSION_NUMBER < 0x010100000L SSL_load_error_strings(); SSLeay_add_ssl_algorithms(); - CTX = SSL_CTX_new(SSLv23_server_method()); +#else + OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS + | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL); + CTX = SSL_CTX_new(TLS_server_method()); +#endif + if (CTX == NULL) { return (-1); }; @@ -563,11 +576,16 @@ tls_init_serverengine(int verifydepth, i } #endif /* HAVE_OPENSSL_ECC */ - if (prefer_server_ciphers) { #ifdef SSL_OP_CIPHER_SERVER_PREFERENCE + if (prefer_server_ciphers) { SSL_CTX_set_options(CTX, SSL_OP_CIPHER_SERVER_PREFERENCE); + } else { +#if OPENSSL_VERSION_NUMBER >= 0x0009080dfL + /* Function first added in OpenSSL 0.9.8m. */ + SSL_CTX_clear_options(CTX, SSL_OP_CIPHER_SERVER_PREFERENCE); #endif } +#endif if ((tls_proto_vect != NULL) && (tls_proto_vect->count > 0)) { for (i = 0; i < tls_proto_vect->count; i++) { @@ -624,9 +642,18 @@ tls_init_serverengine(int verifydepth, i } } - if (!tls_compression) { + if (tls_compression) { +#if defined(SSL_OP_NO_COMPRESSION) && OPENSSL_VERSION_NUMBER >= 0x0009080dfL + /* Function first added in OpenSSL 0.9.8m. */ + SSL_CTX_clear_options(CTX, SSL_OP_NO_COMPRESSION); +#endif + } else { #ifdef SSL_OP_NO_COMPRESSION + /* Option implemented in OpenSSL 1.0.0. */ SSL_CTX_set_options(CTX, SSL_OP_NO_COMPRESSION); +#elif OPENSSL_VERSION_NUMBER >= 0x00090800fL + /* Workaround for OpenSSL 0.9.8. */ + sk_SSL_COMP_zero(SSL_COMP_get_compression_methods()); #endif } @@ -701,13 +728,15 @@ bio_dump_cb(BIO * bio, int cmd, const ch return (ret); if (cmd == (BIO_CB_READ | BIO_CB_RETURN)) { - Printf("read from %08lX [%08lX] (%d bytes => %ld (0x%X))", (long unsigned int) bio, (long unsigned int) argp, - argi, ret, (unsigned int) ret); + Printf("read from %08lX [%08lX] (%d bytes => %ld (0x%X))", + (unsigned long) bio, (unsigned long) argp, + argi, ret, (unsigned int) ret); tls_dump(argp, (int) ret); return (ret); } else if (cmd == (BIO_CB_WRITE | BIO_CB_RETURN)) { - Printf("write to %08lX [%08lX] (%d bytes => %ld (0x%X))", (long unsigned int) bio, (long unsigned int) argp, - argi, ret, (unsigned int) ret); + Printf("write to %08lX [%08lX] (%d bytes => %ld (0x%X))", + (unsigned long) bio, (unsigned long) argp, + argi, ret, (unsigned int) ret); tls_dump(argp, (int) ret); } return (ret); diff -Nurp inn-2.6.0/nnrpd/tls.h inn-2.6.1/nnrpd/tls.h --- inn-2.6.0/nnrpd/tls.h 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/nnrpd/tls.h 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: tls.h 9795 2015-03-18 20:31:16Z iulius $ +/* $Id: tls.h 10067 2016-09-04 13:11:52Z iulius $ ** ** tls.h -- TLSv1 functions. ** Copyright (C) 2000 Kenichi Okada . @@ -22,8 +22,15 @@ #ifndef TLS_H #define TLS_H +/* When building with "make warnings", ensure that INN does not + * use deprecated interfaces from OpenSSL. */ +#if defined(DEBUG) +# define OPENSSL_API_COMPAT 0x010100000L +#endif + #include #include +#include #include #include #include diff -Nurp inn-2.6.0/nnrpd/zlib.c inn-2.6.1/nnrpd/zlib.c --- inn-2.6.0/nnrpd/zlib.c 1969-12-31 16:00:00.000000000 -0800 +++ inn-2.6.1/nnrpd/zlib.c 2016-11-27 06:03:42.000000000 -0800 @@ -0,0 +1,100 @@ +/* $Id: zlib.c 9978 2015-12-11 20:39:56Z iulius $ +** +** COMPRESS functionality. +*/ + +#include "config.h" +#include "clibrary.h" + +#include "inn/messages.h" +#include "nnrpd.h" + +#if defined(HAVE_ZLIB) +# define ZBUFSIZE 65536 +# define MEM_LEVEL 9 +# define WINDOW_BITS (-15) /* Raw deflate. */ +bool compression_layer_on = false; +bool tls_compression_on = false; +z_stream *zstream_in = NULL; +z_stream *zstream_out = NULL; +bool zstream_inflate_needed = false; +bool zstream_flush_needed = false; +unsigned char *zbuf_in = NULL; +unsigned char *zbuf_out = NULL; +size_t zbuf_in_size = NNTP_MAXLEN_COMMAND; /* Initial size of the input + * buffer. Can be reallocated. */ +size_t zbuf_in_allocated = 0; +size_t zbuf_out_size = ZBUFSIZE; /* Initial size of the output buffer. + * Can be reallocated, when needed. */ + +/* +** Wrappers for our memory management functions. +*/ +static voidpf zalloc(voidpf opaque UNUSED, uInt items, uInt size) +{ + return (voidpf) xcalloc(items, size); +} + +static void zfree(voidpf opaque UNUSED, voidpf address) +{ + free(address); +} + + +/* +** The function called by nnrpd to initialize compression support. Calls +** both deflateInit2 and inflateInit2, and then checks the result. +** +** Returns false on error. +*/ +bool +zlib_init(void) +{ + int result; + zstream_in = (z_stream *) xmalloc(sizeof(z_stream)); + zstream_out = (z_stream *) xmalloc(sizeof(z_stream)); + + /* Allocate the buffer for compressed input data given to inflate(). */ + zbuf_in = (unsigned char *) xmalloc(zbuf_in_size); + + /* Allocate the buffer for compressed output data produced by deflate(). */ + zbuf_out = (unsigned char *) xmalloc(zbuf_out_size); + + zstream_in->zalloc = zalloc; + zstream_in->zfree = zfree; + zstream_in->opaque = Z_NULL; + zstream_in->next_in = Z_NULL; + zstream_in->avail_in = 0; + + zstream_out->zalloc = zalloc; + zstream_out->zfree = zfree; + zstream_out->opaque = Z_NULL; + + result = inflateInit2(zstream_in, WINDOW_BITS); + + if (result != Z_OK) { + syslog(L_NOTICE, "inflateInit2() failed with error %d", result); + free(zstream_in); + free(zstream_out); + free(zbuf_in); + free(zbuf_out); + return false; + } + + result = deflateInit2(zstream_out, Z_BEST_COMPRESSION, Z_DEFLATED, + WINDOW_BITS, MEM_LEVEL, Z_DEFAULT_STRATEGY); + + if (result != Z_OK) { + syslog(L_NOTICE, "deflateInit2() failed with error %d", result); + inflateEnd(zstream_in); + free(zstream_in); + free(zstream_out); + free(zbuf_in); + free(zbuf_out); + return false; + } + + return true; +} + +#endif /* HAVE_ZLIB */ diff -Nurp inn-2.6.0/samples/control.ctl inn-2.6.1/samples/control.ctl --- inn-2.6.0/samples/control.ctl 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/samples/control.ctl 2016-11-27 06:03:42.000000000 -0800 @@ -1,5 +1,5 @@ ## control.ctl - Access control for control messages. -## Last modified: 2014-06-17 +## Last modified: 2016-01-03 ## ## Based on rone's unified control.ctl file. ## @@ -97,6 +97,14 @@ ## ## Names used in this file that cannot be encoded in 7bit ASCII are in ## UTF-8. The only non-7bit-ASCII content is in comments. +## +## Information in this file has been contributed by many different people +## and has been based on numerous historical revisions of this file. A +## full, detailed history of contributions and copyright holders probably +## does not exist. So far as the current maintainers are aware, copying +## and distribution of this file, with or without modification, are +## permitted in any medium without royalty. This file is offered as-is, +## without any warranty. ## ------------------------------------------------------------------------- ## DEFAULT @@ -139,6 +147,10 @@ version:*:*:log=version newgroup:*:*:mail rmgroup:*:*:mail +## Special reserved groups +newgroup:*:control|general|junk|test|to:drop +rmgroup:*:control|general|junk|test|to:drop + ## A.BSU (*DEFUNCT* -- Ball State University, USA) # This hierarchy is defunct. Please remove it. newgroup:*:a.bsu.*:mail @@ -629,6 +641,17 @@ checkgroups:news@newsflash.concordia.ca: newgroup:news@newsflash.concordia.ca:concordia.*:doit rmgroup:news@newsflash.concordia.ca:concordia.*:doit +## CONTROL (*RESERVED* -- Special hierarchy for control messages) +# +# The control.* hierarchy is reserved by RFC 5536 and MUST NOT be used +# for regular newsgroups. It is used by some news implementations, such +# as INN, as a local, special hierarchy that shows all control messages +# posted to any group. +# +checkgroups:*:control.*:drop +newgroup:*:control.*:drop +rmgroup:*:control.*:drop + ## COURTS (*DEFUNCT* -- Court discussion) # Contact: trier@ins.cwru.edu # This hierarchy is defunct. Please remove it. @@ -706,13 +729,13 @@ rmgroup:eric@*cirr.com:dfw.*:doit # URL: http://dictatorshandbook.net/usenet/usenetadmin.html # Admin group: dictator.announce # Key URL: http://www.dictatorshandbook.net/usenet/news-public.key -# Key fingerprint: 5C0A 741A F931 D79A D9E9 BBB7 4406 4481 91ED C5F2 +# 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:news@dictatorshandbook.net:dictator.*:verify-news@dictatorshandbook.net -newgroup:news@dictatorshandbook.net:dictator.*:verify-news@dictatorshandbook.net -rmgroup:news@dictatorshandbook.net:dictator.*:verify-news@dictatorshandbook.net +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/ @@ -847,6 +870,7 @@ rmgroup:group-admin@usenet.eu.org:europa # documents, and similar places to avoid clashes with real newsgroup # names. # +checkgroups:*:example.*:drop newgroup:*:example.*:drop rmgroup:*:example.*:drop @@ -983,6 +1007,17 @@ rmgroup:news@picard.cs.osakafu-u.ac.jp:f newgroup:*:fur.*:mail rmgroup:*:fur.*:doit +## GENERAL (*RESERVED* -- Sometimes used as a local catch-all) +# +# There is some history of using a newsgroup named general as a local +# catch-all discussion group. That newsgroup name and hierarchy should +# be avoided on production servers since it may occur at many +# disconnected sites. +# +checkgroups:*:general.*:drop +newgroup:*:general.*:drop +rmgroup:*:general.*:drop + ## GER & HANNOVER & HANNET & HILDESHEIM & HISS (Hannover, Germany) checkgroups:fifi@hiss.han.de:ger.*|hannover.*|hannet.*|hildesheim.*|hiss.*:doit newgroup:fifi@hiss.han.de:ger.*|hannover.*|hannet.*|hildesheim.*|hiss.*:doit @@ -1326,6 +1361,19 @@ checkgroups:news@linux.or.jp:jlug.*:veri newgroup:news@linux.or.jp:jlug.*:verify-news@linux.or.jp rmgroup:news@linux.or.jp:jlug.*:verify-news@linux.or.jp +## JUNK (*RESERVED* -- Used for unwanted newsgroups) +# +# The junk newsgroup is reserved by RFC 5536 and MUST NOT be used. It is +# used by some implementations to store messages to unwanted newsgroups. +# The junk.* hierarchy is not reserved by RFC 5536, but it's marked +# reserved here because, given the special meaning of the junk group, +# using it for any other purpose would be confusing and might trigger +# implementation bugs. +# +checkgroups:*:junk.*:drop +newgroup:*:junk.*:drop +rmgroup:*:junk.*:drop + ## K12 (US Educational Network) # URL: http://www.k12groups.org/ checkgroups:braultr@*csmanoirs.qc.ca:k12.*:doit @@ -1425,6 +1473,7 @@ rmgroup:linux-admin@bofh.it:linux.*:veri # unconnected sites and may confuse news readers that read at multiple # sites. # +checkgroups:*:local.*:drop newgroup:*:local.*:drop rmgroup:*:local.*:drop @@ -2035,6 +2084,16 @@ rmgroup:*:planet.*:doit newgroup:*:prima.*:mail rmgroup:*:prima.*:doit +## PRIVATE (*RESERVED* -- Server-local newsgroups) +# +# Sometimes used for groups intended to be private to a specific server. +# It is not a good idea to use this hierarchy name on any production +# server since they may occur on many unconnected sites. +# +checkgroups:*:private.*:drop +newgroup:*:private.*:drop +rmgroup:*:private.*:drop + ## PSU (*LOCAL* -- Penn State University, USA) # Contact: Dave Barr (barr@math.psu.edu) # For local use only, contact the above address for information. @@ -2343,6 +2402,7 @@ rmgroup:*:termvakt.*:doit # use this hierarchy name on any production server since they may occur # on many unconnected sites. # +checkgroups:*:test.*:drop newgroup:*:test.*:drop rmgroup:*:test.*:drop @@ -2366,6 +2426,17 @@ newgroup:tnn@iij-mc.co.jp:tnn.*:mail rmgroup:netnews@news.iij.ad.jp:tnn.*:doit rmgroup:tnn@iij-mc.co.jp:tnn.*:doit +## TO (*RESERVED* -- Special hierarchy for UUCP point-to-point messages) +# +# Historically, the to.* hierarchy was used with UUCP to send special +# control messages to a particular peer. This usage is very obsolete, +# but the hierarchy is still special-cased in some news software and +# should not be used. +# +checkgroups:*:to.*:drop +newgroup:*:to.*:drop +rmgroup:*:to.*:drop + ## TRIANGLE (Research Triangle, Central North Carolina, USA) checkgroups:jfurr@acpub.duke.edu:triangle.*:doit checkgroups:news@news.duke.edu:triangle.*:doit diff -Nurp inn-2.6.0/samples/inn.conf.in inn-2.6.1/samples/inn.conf.in --- inn-2.6.0/samples/inn.conf.in 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/samples/inn.conf.in 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -## $Id: inn.conf.in 9922 2015-07-14 16:43:55Z iulius $ +## $Id: inn.conf.in 10049 2016-08-05 11:40:25Z iulius $ ## ## inn.conf -- INN configuration data ## @@ -140,7 +140,7 @@ backofftrigger: 10000 #tlscertfile: @sysconfdir@/cert.pem #tlskeyfile: @sysconfdir@/key.pem #tlsciphers: -#tlscompression: true +#tlscompression: false #tlseccurve: #tlspreferserverciphers: true #tlsprotocols: [ TLSv1 TLSv1.1 TLSv1.2 ] diff -Nurp inn-2.6.0/storage/Makefile inn-2.6.1/storage/Makefile --- inn-2.6.0/storage/Makefile 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/storage/Makefile 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -## $Id: Makefile 9919 2015-07-12 13:47:45Z iulius $ +## $Id: Makefile 10114 2016-11-06 14:18:27Z iulius $ include ../Makefile.global @@ -8,7 +8,7 @@ include ../Makefile.global # recover from make update. We can't use .OLD extensions for the shared # library since ldconfig will think .OLD sorts after the regular library and # will point the binaries at the old library. -LTVERSION = 3:0:0 +LTVERSION = 3:1:0 top = .. CFLAGS = $(GCFLAGS) -I. $(BDB_CPPFLAGS) @@ -110,10 +110,10 @@ expire.o: expire.c ../include/config.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 \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - ../include/inn/ov.h ../include/inn/history.h ../include/inn/storage.h \ - ../include/inn/options.h ovinterface.h ../include/inn/storage.h \ - ../include/inn/paths.h ../include/inn/vector.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h ../include/inn/ov.h ../include/inn/history.h \ + ../include/inn/storage.h ../include/inn/options.h ovinterface.h \ + ../include/inn/storage.h ../include/inn/paths.h ../include/inn/vector.h interface.o: interface.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -123,8 +123,8 @@ interface.o: interface.c ../include/conf ../include/portable/macros.h ../include/inn/innconf.h \ ../include/inn/messages.h ../include/inn/wire.h interface.h \ ../include/inn/storage.h ../include/inn/options.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - methods.h ../include/inn/paths.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h methods.h ../include/inn/paths.h methods.o: methods.c interface.h ../include/config.h \ ../include/inn/defines.h ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -139,10 +139,10 @@ ov.o: ov.c ../include/config.h ../includ ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/innconf.h \ ../include/inn/messages.h ../include/inn/wire.h ../include/inn/vector.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - ../include/inn/ov.h ../include/inn/history.h ../include/inn/storage.h \ - ../include/inn/options.h ovinterface.h ../include/inn/storage.h \ - ovmethods.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h ../include/inn/ov.h ../include/inn/history.h \ + ../include/inn/storage.h ../include/inn/options.h ovinterface.h \ + ../include/inn/storage.h ovmethods.h overdata.o: overdata.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 \ @@ -150,10 +150,10 @@ overdata.o: overdata.c ../include/config ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/buffer.h \ ../include/inn/innconf.h ../include/inn/messages.h ../include/inn/wire.h \ - ../include/inn/vector.h ../include/inn/libinn.h ../include/inn/xmalloc.h \ - ../include/inn/xwrite.h ovinterface.h ../include/inn/history.h \ - ../include/inn/ov.h ../include/inn/storage.h ../include/inn/options.h \ - ../include/inn/storage.h + ../include/inn/vector.h ../include/inn/libinn.h ../include/inn/concat.h \ + ../include/inn/xmalloc.h ../include/inn/xwrite.h ovinterface.h \ + ../include/inn/history.h ../include/inn/ov.h ../include/inn/storage.h \ + ../include/inn/options.h ../include/inn/storage.h overview.o: overview.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 \ @@ -163,9 +163,9 @@ overview.o: overview.c ../include/config ../include/inn/innconf.h ../include/inn/messages.h \ ../include/inn/overview.h ../include/inn/storage.h \ ../include/inn/options.h ../include/inn/wire.h ../include/inn/vector.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - ../include/inn/ov.h ../include/inn/history.h ../include/inn/storage.h \ - ovinterface.h ovmethods.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h ../include/inn/ov.h ../include/inn/history.h \ + ../include/inn/storage.h ovinterface.h ovmethods.h ovmethods.o: ovmethods.c ovinterface.h ../include/config.h \ ../include/inn/defines.h ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -180,10 +180,10 @@ buffindexed/buffindexed.o: buffindexed/b ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/portable/mmap.h \ ../include/inn/innconf.h ../include/inn/messages.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - ../include/inn/ov.h ../include/inn/history.h ../include/inn/storage.h \ - ../include/inn/options.h ../include/inn/paths.h ovinterface.h \ - ../include/inn/storage.h ../include/inn/fdflag.h \ + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h ../include/inn/ov.h ../include/inn/history.h \ + ../include/inn/storage.h ../include/inn/options.h ../include/inn/paths.h \ + ovinterface.h ../include/inn/storage.h ../include/inn/fdflag.h \ ../include/inn/portable-socket.h ../include/inn/portable-getaddrinfo.h \ ../include/inn/portable-getnameinfo.h buffindexed/shmem.h \ buffindexed/buffindexed.h @@ -193,8 +193,8 @@ buffindexed/shmem.o: buffindexed/shmem.c ../include/inn/defines.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/messages.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - buffindexed/shmem.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h buffindexed/shmem.h cnfs/cnfs.o: cnfs/cnfs.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 \ @@ -206,9 +206,9 @@ cnfs/cnfs.o: cnfs/cnfs.c ../include/conf ../include/inn/portable-getnameinfo.h ../include/inn/innconf.h \ ../include/inn/messages.h ../include/inn/mmap.h ../include/inn/wire.h \ interface.h ../include/inn/storage.h ../include/inn/options.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - methods.h interface.h ../include/inn/paths.h cnfs/cnfs.h \ - cnfs/cnfs-private.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h methods.h interface.h ../include/inn/paths.h \ + cnfs/cnfs.h cnfs/cnfs-private.h ovdb/ovdb.o: ovdb/ovdb.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -219,9 +219,10 @@ ovdb/ovdb.o: ovdb/ovdb.c ../include/conf ../include/portable/getnameinfo.h ../include/conffile.h \ ../include/portable/macros.h ../include/inn/fdflag.h \ ../include/inn/portable-socket.h ../include/inn/innconf.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - ../include/inn/messages.h ../include/inn/newsuser.h \ - ../include/inn/paths.h ../include/inn/storage.h ../include/inn/options.h \ + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h ../include/inn/messages.h \ + ../include/inn/newsuser.h ../include/inn/paths.h \ + ../include/inn/storage.h ../include/inn/options.h \ ../include/portable/socket-unix.h ../include/inn/ov.h \ ../include/inn/history.h ../include/inn/storage.h ovinterface.h \ ovdb/ovdb.h ovdb/ovdb-private.h @@ -231,8 +232,8 @@ timecaf/caf.o: timecaf/caf.c ../include/ ../include/inn/defines.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/messages.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - timecaf/caf.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h timecaf/caf.h timecaf/timecaf.o: timecaf/timecaf.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 \ @@ -243,9 +244,9 @@ timecaf/timecaf.o: timecaf/timecaf.c ../ ../include/inn/portable-getaddrinfo.h \ ../include/inn/portable-getnameinfo.h ../include/inn/innconf.h \ ../include/inn/messages.h ../include/inn/wire.h ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.h methods.h interface.h \ - ../include/inn/storage.h ../include/inn/options.h timecaf/timecaf.h \ - interface.h ../include/inn/paths.h + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ + methods.h interface.h ../include/inn/storage.h ../include/inn/options.h \ + timecaf/timecaf.h interface.h ../include/inn/paths.h timehash/timehash.o: timehash/timehash.c ../include/config.h \ ../include/inn/defines.h ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -253,9 +254,10 @@ timehash/timehash.o: timehash/timehash.c ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/portable/mmap.h \ ../include/inn/innconf.h ../include/inn/messages.h ../include/inn/wire.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - methods.h interface.h ../include/inn/storage.h ../include/inn/options.h \ - ../include/inn/paths.h timehash/timehash.h interface.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h methods.h interface.h ../include/inn/storage.h \ + ../include/inn/options.h ../include/inn/paths.h timehash/timehash.h \ + interface.h tradindexed/tdx-cache.o: tradindexed/tdx-cache.c ../include/config.h \ ../include/inn/defines.h ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -263,7 +265,7 @@ tradindexed/tdx-cache.o: tradindexed/tdx ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/hashtab.h \ ../include/inn/messages.h ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.h \ + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ ../include/inn/storage.h ../include/inn/options.h \ tradindexed/tdx-private.h tradindexed/tdx-data.o: tradindexed/tdx-data.c ../include/config.h \ @@ -276,10 +278,10 @@ tradindexed/tdx-data.o: tradindexed/tdx- ../include/inn/portable-getaddrinfo.h \ ../include/inn/portable-getnameinfo.h ../include/inn/history.h \ ../include/inn/innconf.h ../include/inn/messages.h ../include/inn/mmap.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - ../include/inn/ov.h ../include/inn/storage.h ../include/inn/options.h \ - ovinterface.h ../include/inn/storage.h tradindexed/tdx-private.h \ - tradindexed/tdx-structure.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h ../include/inn/ov.h ../include/inn/storage.h \ + ../include/inn/options.h ovinterface.h ../include/inn/storage.h \ + tradindexed/tdx-private.h tradindexed/tdx-structure.h tradindexed/tdx-group.o: tradindexed/tdx-group.c ../include/config.h \ ../include/inn/defines.h ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -291,9 +293,10 @@ tradindexed/tdx-group.o: tradindexed/tdx ../include/inn/portable-getnameinfo.h ../include/inn/hashtab.h \ ../include/inn/innconf.h ../include/inn/messages.h ../include/inn/mmap.h \ ../include/inn/qio.h ../include/inn/vector.h ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/paths.h \ - tradindexed/tdx-private.h ../include/inn/storage.h \ - ../include/inn/options.h tradindexed/tdx-structure.h + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ + ../include/inn/paths.h tradindexed/tdx-private.h \ + ../include/inn/storage.h ../include/inn/options.h \ + tradindexed/tdx-structure.h tradindexed/tradindexed.o: tradindexed/tradindexed.c ../include/config.h \ ../include/inn/defines.h ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ @@ -301,8 +304,8 @@ tradindexed/tradindexed.o: tradindexed/t ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/innconf.h \ ../include/inn/messages.h ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/ov.h \ - ../include/inn/history.h ../include/inn/storage.h \ + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ + ../include/inn/ov.h ../include/inn/history.h ../include/inn/storage.h \ ../include/inn/options.h ../include/inn/storage.h \ tradindexed/tdx-private.h tradindexed/tdx-structure.h \ tradindexed/tradindexed.h @@ -313,29 +316,29 @@ tradspool/tradspool.o: tradspool/tradspo ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/portable/mmap.h \ ../include/inn/innconf.h ../include/inn/messages.h ../include/inn/qio.h \ - ../include/inn/wire.h ../include/inn/libinn.h ../include/inn/xmalloc.h \ - ../include/inn/xwrite.h ../include/inn/paths.h methods.h interface.h \ - ../include/inn/storage.h ../include/inn/options.h tradspool/tradspool.h \ - interface.h + ../include/inn/wire.h ../include/inn/libinn.h ../include/inn/concat.h \ + ../include/inn/xmalloc.h ../include/inn/xwrite.h ../include/inn/paths.h \ + methods.h interface.h ../include/inn/storage.h ../include/inn/options.h \ + tradspool/tradspool.h interface.h trash/trash.o: trash/trash.c ../include/config.h ../include/inn/defines.h \ ../include/inn/system.h ../include/inn/macros.h \ ../include/inn/portable-macros.h ../include/inn/portable-stdbool.h \ ../include/inn/defines.h ../include/inn/options.h ../include/clibrary.h \ ../include/config.h ../include/inn/macros.h \ ../include/portable/stdbool.h ../include/inn/libinn.h \ - ../include/inn/xmalloc.h ../include/inn/xwrite.h methods.h interface.h \ - ../include/inn/storage.h ../include/inn/options.h trash/trash.h \ - interface.h + ../include/inn/concat.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ + methods.h interface.h ../include/inn/storage.h ../include/inn/options.h \ + trash/trash.h interface.h tradindexed/tdx-util.o: tradindexed/tdx-util.c ../include/config.h \ ../include/inn/defines.h ../include/inn/system.h ../include/inn/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/buffer.h \ - ../include/inn/libinn.h ../include/inn/xmalloc.h ../include/inn/xwrite.h \ - ../include/inn/history.h ../include/inn/innconf.h \ - ../include/inn/messages.h ../include/inn/newsuser.h ../include/inn/ov.h \ - ../include/inn/storage.h ../include/inn/options.h ../include/inn/paths.h \ - ../include/inn/vector.h ../include/inn/wire.h ovinterface.h \ - ../include/inn/storage.h tradindexed/tdx-private.h \ - tradindexed/tdx-structure.h + ../include/inn/libinn.h ../include/inn/concat.h ../include/inn/xmalloc.h \ + ../include/inn/xwrite.h ../include/inn/history.h \ + ../include/inn/innconf.h ../include/inn/messages.h \ + ../include/inn/newsuser.h ../include/inn/ov.h ../include/inn/storage.h \ + ../include/inn/options.h ../include/inn/paths.h ../include/inn/vector.h \ + ../include/inn/wire.h ovinterface.h ../include/inn/storage.h \ + tradindexed/tdx-private.h tradindexed/tdx-structure.h diff -Nurp inn-2.6.0/storage/buffindexed/buffindexed.c inn-2.6.1/storage/buffindexed/buffindexed.c --- inn-2.6.0/storage/buffindexed/buffindexed.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/storage/buffindexed/buffindexed.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: buffindexed.c 9902 2015-06-20 14:10:08Z iulius $ +/* $Id: buffindexed.c 10018 2016-05-05 12:45:13Z iulius $ ** ** Overview buffer and index method. */ @@ -607,7 +607,7 @@ static bool ovbuffinit_disks(void) { */ for (; ovbuff != (OVBUFF *)NULL; ovbuff = ovbuff->next) { if (ovbuff->fd < 0) { - if ((fd = open(ovbuff->path, ovbuffmode & OV_WRITE ? O_RDWR : O_RDONLY)) < 0) { + if ((fd = open(ovbuff->path, (ovbuffmode & OV_WRITE) ? O_RDWR : O_RDONLY)) < 0) { syswarn("buffindexed: ERROR opening '%s'", ovbuff->path); return false; } else { @@ -633,7 +633,7 @@ static bool ovbuffinit_disks(void) { rpx = (OVBUFFHEAD *)ovbuff->bitfield; /* lock the buffer */ - ovlock(ovbuff, ovbuffmode & OV_WRITE ? INN_LOCK_WRITE : INN_LOCK_READ); + ovlock(ovbuff, (ovbuffmode & OV_WRITE) ? INN_LOCK_WRITE : INN_LOCK_READ); if (pread(ovbuff->fd, &dpx, sizeof(OVBUFFHEAD), 0) < 0) { syswarn("buffindexed: cant read from %s", ovbuff->path); @@ -1016,7 +1016,7 @@ bool buffindexed_open(int mode) { if (Needunlink && unlink(groupfn) == 0) { notice("buffindexed: all buffers are brandnew, unlink '%s'", groupfn); } - GROUPfd = open(groupfn, ovbuffmode & OV_WRITE ? O_RDWR | O_CREAT : O_RDONLY, 0660); + GROUPfd = open(groupfn, (ovbuffmode & OV_WRITE) ? O_RDWR | O_CREAT : O_RDONLY, 0660); if (GROUPfd < 0) { syswarn("buffindexed: Could not create %s", groupfn); free(groupfn); diff -Nurp inn-2.6.0/storage/expire.c inn-2.6.1/storage/expire.c --- inn-2.6.0/storage/expire.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/storage/expire.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: expire.c 9896 2015-06-14 10:09:47Z iulius $ +/* $Id: expire.c 10012 2016-05-05 12:41:10Z iulius $ ** ** Code for overview-driven expiration. ** @@ -151,10 +151,7 @@ EXPsplit(char *p, char sep, char **argv, while (*p == sep) ++p; - if (!*p) - return 0; - - if (!p) + if (*p == '\0') return 0; for (i = 1, *argv++ = p; *p; ) diff -Nurp inn-2.6.0/storage/timecaf/caf.c inn-2.6.1/storage/timecaf/caf.c --- inn-2.6.0/storage/timecaf/caf.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/storage/timecaf/caf.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: caf.c 9492 2013-06-25 17:13:31Z iulius $ +/* $Id: caf.c 10059 2016-09-04 12:47:12Z iulius $ ** ** Library routines needed for handling CAF (Crunched Article Files) ** Written by Richard Todd (rmtodd@mailhost.ecn.uoknor.edu) 3/24/96, @@ -692,6 +692,7 @@ CAFCreateCAFFile(char *cfpath, ARTNUM ar head.High = artnum; head.NumSlots = tocsize; head.Free = 0; + head.LastCleaned = time(NULL); head.BlockSize = CAFFindOptimalBlocksize(tocsize, estcfsize); head.FreeZoneIndexSize = head.BlockSize - sizeof(CAFHEADER); head.FreeZoneTabSize = head.FreeZoneIndexSize @@ -979,7 +980,7 @@ CAFFinishArtWrite(int fd) } tocentry.Offset = CAF_startoffset_write; tocentry.Size = curpos - CAF_startoffset_write; - tocentry.ModTime = time((time_t *)NULL); + tocentry.ModTime = time(NULL); if (OurWrite(fd, &tocentry, sizeof(CAFTOCENT)) < 0) { CAF_fd_write = 0; return -1; @@ -1433,9 +1434,9 @@ CAFClean(char *path, int verbose, double return -1; } - /* compute amount of actual data in file. */ + /* compute amount of actual data in file. */ datasize = statbuf.st_size - head.StartDataBlock; - if (datasize <= 0) { + if (datasize == 0) { /* nothing in the file, set percentfree==0 so won't bother cleaning */ percentfree = 0; } else { @@ -1776,7 +1777,7 @@ CAFClean(char *path, int verbose, double /* Change what we need in new file's header. */ newhead.Low = newlow; newhead.High = head.High; - newhead.LastCleaned = time((time_t *) NULL); + newhead.LastCleaned = time(NULL); /* newhead.NumSlots = newtocsize; */ /* newhead.Free = 0; */ diff -Nurp inn-2.6.0/support/config.guess inn-2.6.1/support/config.guess --- inn-2.6.0/support/config.guess 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/support/config.guess 2016-11-27 06:03:42.000000000 -0800 @@ -1,8 +1,8 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2015 Free Software Foundation, Inc. +# Copyright 1992-2016 Free Software Foundation, Inc. -timestamp='2015-08-20' +timestamp='2016-10-02' # 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,7 +27,7 @@ timestamp='2015-08-20' # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess # # Please send patches to . @@ -50,7 +50,7 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2015 Free Software Foundation, Inc. +Copyright 1992-2016 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." @@ -186,9 +186,12 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$ *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched - # to ELF recently, or will in the future. + # to ELF recently (or will in the future) and ABI. case "${UNAME_MACHINE_ARCH}" in - arm*|earm*|i386|m68k|ns32k|sh3*|sparc|vax) + earm*) + os=netbsdelf + ;; + arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ @@ -237,6 +240,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$ UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; + *:LibertyBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE} + exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; @@ -268,42 +275,42 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$ 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" ;; + UNAME_MACHINE=alpha ;; "EV4.5 (21064)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "LCA4 (21066/21068)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "EV5 (21164)") - UNAME_MACHINE="alphaev5" ;; + UNAME_MACHINE=alphaev5 ;; "EV5.6 (21164A)") - UNAME_MACHINE="alphaev56" ;; + UNAME_MACHINE=alphaev56 ;; "EV5.6 (21164PC)") - UNAME_MACHINE="alphapca56" ;; + UNAME_MACHINE=alphapca56 ;; "EV5.7 (21164PC)") - UNAME_MACHINE="alphapca57" ;; + UNAME_MACHINE=alphapca57 ;; "EV6 (21264)") - UNAME_MACHINE="alphaev6" ;; + UNAME_MACHINE=alphaev6 ;; "EV6.7 (21264A)") - UNAME_MACHINE="alphaev67" ;; + UNAME_MACHINE=alphaev67 ;; "EV6.8CB (21264C)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.8AL (21264B)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.8CX (21264D)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.9A (21264/EV69A)") - UNAME_MACHINE="alphaev69" ;; + UNAME_MACHINE=alphaev69 ;; "EV7 (21364)") - UNAME_MACHINE="alphaev7" ;; + UNAME_MACHINE=alphaev7 ;; "EV7.9 (21364A)") - UNAME_MACHINE="alphaev79" ;; + UNAME_MACHINE=alphaev79 ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # 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 @@ -376,16 +383,16 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$ exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build - SUN_ARCH="i386" + SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then - SUN_ARCH="x86_64" + SUN_ARCH=x86_64 fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` @@ -410,7 +417,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$ exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} @@ -635,13 +642,13 @@ EOF 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 + 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 + 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; - '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + 32) HP_ARCH=hppa2.0n ;; + 64) HP_ARCH=hppa2.0w ;; + '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi @@ -680,11 +687,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 [ ${HP_ARCH} = hppa2.0w ] then eval $set_cc_for_build @@ -697,12 +704,12 @@ EOF # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 - if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then - HP_ARCH="hppa2.0w" + HP_ARCH=hppa2.0w else - HP_ARCH="hppa64" + HP_ARCH=hppa64 fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} @@ -807,14 +814,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_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:*:*) @@ -896,7 +903,7 @@ EOF exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix @@ -919,7 +926,7 @@ EOF EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 - if test "$?" = 0 ; then LIBC="gnulibc1" ; fi + if test "$?" = 0 ; then LIBC=gnulibc1 ; fi echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arc:Linux:*:* | arceb:Linux:*:*) @@ -965,6 +972,9 @@ EOF ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; + k1om:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; @@ -990,6 +1000,9 @@ EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } ;; + mips64el:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; openrisc*:Linux:*:*) echo or1k-unknown-linux-${LIBC} exit ;; @@ -1022,6 +1035,9 @@ EOF ppcle:Linux:*:*) echo powerpcle-unknown-linux-${LIBC} exit ;; + riscv32:Linux:*:* | riscv64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux-${LIBC} exit ;; @@ -1120,7 +1136,7 @@ EOF # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub - # prints for the "djgpp" host, or else GDB configury will decide that + # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; @@ -1269,6 +1285,9 @@ EOF SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; + SX-ACE:SUPER-UX:*:*) + echo sxace-nec-superux${UNAME_RELEASE} + exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; @@ -1282,9 +1301,9 @@ EOF UNAME_PROCESSOR=powerpc fi if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; 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) | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in @@ -1306,7 +1325,7 @@ EOF exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` - if test "$UNAME_PROCESSOR" = "x86"; then + if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi @@ -1337,7 +1356,7 @@ EOF # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. - if test "$cputype" = "386"; then + if test "$cputype" = 386; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" @@ -1379,7 +1398,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 @@ -1390,23 +1409,25 @@ EOF x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; + amd64:Isilon\ OneFS:*:*) + echo x86_64-unknown-onefs + exit ;; esac cat >&2 < in order to provide the needed -information to handle your system. +If $0 has already been updated, send the following data and any +information you think might be pertinent to config-patches@gnu.org to +provide the necessary information to handle your system. config.guess timestamp = $timestamp diff -Nurp inn-2.6.0/support/config.sub inn-2.6.1/support/config.sub --- inn-2.6.0/support/config.sub 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/support/config.sub 2016-11-27 06:03:42.000000000 -0800 @@ -1,8 +1,8 @@ #! /bin/sh # Configuration validation subroutine script. -# Copyright 1992-2015 Free Software Foundation, Inc. +# Copyright 1992-2016 Free Software Foundation, Inc. -timestamp='2015-08-20' +timestamp='2016-09-05' # 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='2015-08-20' # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases @@ -53,8 +53,7 @@ timestamp='2015-08-20' me=`echo "$0" | sed -e 's,.*/,,'` usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS - $0 [OPTION] ALIAS +Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS Canonicalize a configuration name. @@ -68,7 +67,7 @@ Report bugs and patches to . +## . ## ## Running this script permits to keep up-to-date the INN test driver suite ## by automatically fetching the latest version of the upstream files, and @@ -17,7 +17,7 @@ ## if all looks right, commit the changes. ## URL where the files can be downloaded. -URL_START="http://git.eyrie.org/?p=devel/c-tap-harness.git;a=blob_plain;hb=HEAD;f=" +URL_START="https://git.eyrie.org/?p=devel/c-tap-harness.git;a=blob_plain;hb=HEAD;f=" ## This function downloads the files and copies them to the expected ## location in the INN source code, after having performed a few minimal @@ -64,7 +64,7 @@ download () chmod 755 ${TEMP} elif [ "$3" != "README" ] then - sed -i -e '1 s/$/ $Id: getc-tap-harness 9911 2015-07-04 21:32:56Z iulius $\n */' \ + sed -i -e '1 s/$/ \$Id\$\n */' \ -e 's/^#include . +## . ## ## Running this script permits to keep up-to-date most of INN utility and ## portability functions by automatically fetching the latest version of @@ -18,7 +18,7 @@ ## if all looks right, commit the changes. ## URL where the files can be downloaded. -URL_START="http://git.eyrie.org/?p=devel/rra-c-util.git;a=blob_plain;hb=HEAD;f=" +URL_START="https://git.eyrie.org/?p=devel/rra-c-util.git;a=blob_plain;hb=HEAD;f=" ## This function downloads the files and copies them to the expected ## location in the INN source code, after having performed a few minimal @@ -51,8 +51,16 @@ download () sed -i -e 's/RRA_/INN_/g' \ -e 's/rra_/inn_/g' \ -e '1 a\ -dnl $Id: getrra-c-util 9794 2015-03-17 20:49:15Z iulius $' \ +dnl \$Id\$' \ ${TEMP} + + # Remove useless function for INN. + if [ "$3" = "cc-flags.m4" ] + then + sed -i -e '/dnl Provides INN_PROG_CC_WARNINGS_FLAGS/,+6d' \ + -e '/dnl Determine the full set/,$d' \ + ${TEMP} + fi elif [ "$2" = "include/inn" ] || [ "$2" = "include/portable" ] \ || [ "$2" = "include" ] || [ "$2" = "lib" ] || [ "$2" = "tests/lib" ] \ || [ "$2" = "tests/lib/network" ] || [ "$2" = "tests/tap" ] @@ -63,7 +71,7 @@ dnl $Id: getrra-c-util 9794 2015-03-17 2 sed -i -e "3 i \\ # \$Id\$\\ #" \ - -e 's/\$BUILD\/util/\$BUILD\/lib/g' \ + -e 's/\$C_TAP_BUILD\/util/\$C_TAP_BUILD\/lib/g' \ ${TEMP} chmod 755 ${TEMP} else @@ -73,16 +81,16 @@ dnl $Id: getrra-c-util 9794 2015-03-17 2 # and sourceaddress6 work. sed -i -e "61 i \\ #include \"inn/innconf.h\"" \ - -e '470 s/)$/ \&\& innconf == NULL)/' \ - -e '471,472d' \ - -e "477 i \\ + -e '455 s/)$/ \&\& innconf == NULL)/' \ + -e '456,457d' \ + -e "462 i \\ if (source == NULL && innconf != NULL)\\ source = innconf->sourceaddress;\\ if (source == NULL ||\\ strcmp(source, \"all\") == 0 || strcmp(source, \"any\") == 0)\\ return true;\\ " \ - -e "490 i \\ + -e "475 i \\ if (source == NULL && innconf != NULL)\\ source = innconf->sourceaddress6;\\ if (source == NULL ||\\ @@ -153,6 +161,29 @@ extern ssize_t pwrite(int, const void *, extern int symlink(const char *, const char *);\\ #endif\\ " \ + -e "154 i \\ +#if !HAVE_DECL_STRLCAT\\ +extern size_t strlcat(char *, const char *, size_t);\\ +#endif\\ +#if !HAVE_DECL_STRLCPY\\ +extern size_t strlcpy(char *, const char *, size_t);\\ +#endif\\ +#if !HAVE_GETPAGESIZE\\ +extern int getpagesize(void);\\ +#endif\\ +#if !HAVE_STRCASECMP\\ +extern int strcasecmp(const char *, const char *);\\ +extern int strncasecmp(const char *, const char *, size_t);\\ +#endif\\ +#if !HAVE_STRSPN\\ +extern size_t strspn(const char *, const char *);\\ +#endif\\ +#if !HAVE_STRTOK\\ +extern char * strtok(char *, const char *);\\ +#endif\\ +#if !HAVE_MEMCMP\\ +extern int memcmp(const void *, const void *, size_t);\\ +#endif" \ -e '/#if !HAVE_DAEMON/,+2d' \ -e '/#if !HAVE_ISSETUGID/,+2d' \ -e '/#if !HAVE_STRNDUP/,+2d' \ @@ -167,7 +198,7 @@ extern int symlink(const char *, const c -e 's//"inn\/\1"/g' \ -e 's//"portable\/\1"/g' \ -e 's//"tap\/\1"/g' \ - -e '1 s/$/ $Id: getrra-c-util 9794 2015-03-17 20:49:15Z iulius $\n */' \ + -e '1 s/$/ \$Id\$\n */' \ ${TEMP} # For compatibility with the integration of C TAP Harness in INN. @@ -205,6 +236,7 @@ extern int symlink(const char *, const c ## Synchronize Autoconf macros from upstream. download m4/bdb.m4 m4 bdb.m4 +download m4/cc-flags.m4 m4 cc-flags.m4 download m4/inet-ntoa.m4 m4 inet-ntoa.m4 download m4/krb5-config.m4 m4 krb5-config.m4 download m4/krb5.m4 m4 krb5.m4 @@ -213,6 +245,7 @@ download m4/lib-helper.m4 m4 lib-helper. download m4/lib-pathname.m4 m4 lib-pathname.m4 download m4/openssl.m4 m4 openssl.m4 download m4/pam-const.m4 m4 pam-const.m4 +download m4/perl.m4 m4 perl.m4 download m4/sasl.m4 m4 sasl.m4 download m4/snprintf.m4 m4 snprintf.m4 download m4/socket-unix.m4 m4 socket-unix.m4 @@ -238,8 +271,6 @@ download portable/snprintf.c lib snprint 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 -download portable/strlcat.c lib strlcat.c -download portable/strlcpy.c lib strlcpy.c download portable/system.h include clibrary.h download portable/uio.h include/portable uio.h @@ -271,8 +302,6 @@ download tests/portable/mkstemp-t.c test 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 -download tests/portable/strlcat-t.c tests/lib strlcat-t.c -download tests/portable/strlcpy-t.c tests/lib strlcpy-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.0/support/install-sh inn-2.6.1/support/install-sh --- inn-2.6.0/support/install-sh 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/support/install-sh 2016-11-27 06:03:42.000000000 -0800 @@ -1,7 +1,7 @@ #!/bin/sh # install - install a program, script, or datafile -scriptversion=2013-10-30.23; # UTC +scriptversion=2016-01-11.22; # UTC ############################# # NOTICE TO INN MAINTAINERS # @@ -96,7 +96,7 @@ dir_arg= dst_arg= copy_on_change=false -no_target_directory= +is_target_a_directory=possibly # INN addition: -B SUFFIX, and use -c. usage="\ @@ -159,14 +159,16 @@ while test $# -ne 0; do -s) stripcmd=$stripprog;; - -t) dst_arg=$2 + -t) + is_target_a_directory=always + dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; - -T) no_target_directory=true;; + -T) is_target_a_directory=never;; --version) echo "$0 $scriptversion"; exit $?;; @@ -181,6 +183,16 @@ while test $# -ne 0; do shift done +# We allow the use of options -d and -T together, by making -d +# take the precedence; this is for compatibility with GNU install. + +if test -n "$dir_arg"; then + if test -n "$dst_arg"; then + echo "$0: target directory not allowed when installing a directory." >&2 + exit 1 + fi +fi + if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. @@ -212,6 +224,15 @@ if test $# -eq 0; then fi if test -z "$dir_arg"; then + if test $# -gt 1 || test "$is_target_a_directory" = always; then + if test ! -d "$dst_arg"; then + echo "$0: $dst_arg: Is not a directory." >&2 + exit 1 + fi + fi +fi + +if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 @@ -282,7 +303,7 @@ do # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then - if test -n "$no_target_directory"; then + if test "$is_target_a_directory" = never; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi @@ -510,6 +531,6 @@ done # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" +# time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff -Nurp inn-2.6.0/support/ltmain.sh inn-2.6.1/support/ltmain.sh --- inn-2.6.0/support/ltmain.sh 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/support/ltmain.sh 2016-11-27 06:03:42.000000000 -0800 @@ -1,3 +1,5 @@ +#! /bin/sh + ############################# # NOTICE TO INN MAINTAINERS # ############################# @@ -8,11 +10,11 @@ # Only one part of the code is modified; search for the comment below # containing "INN". -# libtool (GNU libtool) 2.4.2 +# libtool (GNU libtool) 2.4.6 +# Provide generalized library-building support services. # Written by Gordon Matzigkeit , 1996 -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, -# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. +# Copyright (C) 1996-2015 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. @@ -32,881 +34,2112 @@ # General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, -# or obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# along with this program. If not, see . -# Usage: $progname [OPTION]... [MODE-ARG]... -# -# Provide generalized library-building support services. -# -# --config show all configuration variables -# --debug enable verbose shell tracing -# -n, --dry-run display commands without modifying any files -# --features display basic configuration information and exit -# --mode=MODE use operation mode MODE -# --preserve-dup-deps don't remove duplicate dependency libraries -# --quiet, --silent don't print informational messages -# --no-quiet, --no-silent -# print informational messages (default) -# --no-warn don't display warning messages -# --tag=TAG use configuration variables from tag TAG -# -v, --verbose print more informational messages than default -# --no-verbose don't print the extra informational messages -# --version print version information -# -h, --help, --help-all print short, long, or detailed help message -# -# MODE must be one of the following: -# -# clean remove files from the build directory -# compile compile a source file into a libtool object -# execute automatically set library path, then run a program -# finish complete the installation of libtool libraries -# install install libraries or executables -# link create a library or an executable -# uninstall remove libraries from an installed directory -# -# MODE-ARGS vary depending on the MODE. When passed as first option, -# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. -# Try `$progname --help --mode=MODE' for a more detailed description of MODE. -# -# When reporting a bug, please describe a test case to reproduce it and -# include the following information: -# -# host-triplet: $host -# shell: $SHELL -# compiler: $LTCC -# compiler flags: $LTCFLAGS -# linker: $LD (gnu? $with_gnu_ld) -# $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1 -# automake: $automake_version -# autoconf: $autoconf_version -# -# Report bugs to . -# GNU libtool home page: . -# General help using GNU software: . PROGRAM=libtool PACKAGE=libtool -VERSION="2.4.2 Debian-2.4.2-1" -TIMESTAMP="" -package_revision=1.3337 +VERSION="2.4.6 Debian-2.4.6-2" +package_revision=2.4.6 -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + +## ------ ## +## Usage. ## +## ------ ## + +# Run './libtool --help' for help with using this script from the +# command line. + + +## ------------------------------- ## +## User overridable command paths. ## +## ------------------------------- ## + +# After configure completes, it has a better idea of some of the +# shell tools we need than the defaults used by the functions shared +# with bootstrap, so set those here where they can still be over- +# ridden by the user, but otherwise take precedence. + +: ${AUTOCONF="autoconf"} +: ${AUTOMAKE="automake"} + + +## -------------------------- ## +## Source external libraries. ## +## -------------------------- ## + +# Much of our low-level functionality needs to be sourced from external +# libraries, which are installed to $pkgauxdir. + +# Set a version string for this script. +scriptversion=2015-01-20.17; # UTC + +# General shell script boiler plate, and helper functions. +# Written by Gary V. Vaughan, 2004 + +# Copyright (C) 2004-2015 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. + +# 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 +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# As a special exception to the GNU General Public License, if you distribute +# this file as part of a program or library that is built using GNU Libtool, +# you may include this file under the same distribution terms that you use +# for the rest of that program. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNES FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Please report bugs or propose patches to gary@gnu.org. + + +## ------ ## +## Usage. ## +## ------ ## + +# Evaluate this file near the top of your script to gain access to +# the functions and variables defined here: +# +# . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh +# +# If you need to override any of the default environment variable +# settings, do that before evaluating this file. + + +## -------------------- ## +## Shell normalisation. ## +## -------------------- ## + +# Some shells need a little help to be as Bourne compatible as possible. +# Before doing anything else, make sure all that help has been provided! + +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else - case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac + case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' -} -# NLS nuisances: We save the old values to restore during execute mode. -lt_user_locale= -lt_safe_locale= -for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES +# NLS nuisances: We save the old values in case they are required later. +_G_user_locale= +_G_safe_locale= +for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do - eval "if test \"\${$lt_var+set}\" = set; then - save_$lt_var=\$$lt_var - $lt_var=C - export $lt_var - lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" - lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" + eval "if test set = \"\${$_G_var+set}\"; then + save_$_G_var=\$$_G_var + $_G_var=C + export $_G_var + _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" + _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" fi" done -LC_ALL=C -LANGUAGE=C -export LANGUAGE LC_ALL -$lt_unset CDPATH +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH +# Make sure IFS has a sensible default +sp=' ' +nl=' +' +IFS="$sp $nl" -# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh -# is ksh but when the shell is invoked as "sh" and the current value of -# the _XPG environment variable is not equal to 1 (one), the special -# positional parameter $0, within a function call, is the name of the -# function. -progpath="$0" +# There are apparently some retarded systems that use ';' as a PATH separator! +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + + +## ------------------------- ## +## Locate command utilities. ## +## ------------------------- ## + + +# func_executable_p FILE +# ---------------------- +# Check that FILE is an executable regular file. +func_executable_p () +{ + test -f "$1" && test -x "$1" +} + + +# func_path_progs PROGS_LIST CHECK_FUNC [PATH] +# -------------------------------------------- +# Search for either a program that responds to --version with output +# containing "GNU", or else returned by CHECK_FUNC otherwise, by +# trying all the directories in PATH with each of the elements of +# PROGS_LIST. +# +# CHECK_FUNC should accept the path to a candidate program, and +# set $func_check_prog_result if it truncates its output less than +# $_G_path_prog_max characters. +func_path_progs () +{ + _G_progs_list=$1 + _G_check_func=$2 + _G_PATH=${3-"$PATH"} + + _G_path_prog_max=0 + _G_path_prog_found=false + _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} + for _G_dir in $_G_PATH; do + IFS=$_G_save_IFS + test -z "$_G_dir" && _G_dir=. + for _G_prog_name in $_G_progs_list; do + for _exeext in '' .EXE; do + _G_path_prog=$_G_dir/$_G_prog_name$_exeext + func_executable_p "$_G_path_prog" || continue + case `"$_G_path_prog" --version 2>&1` in + *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;; + *) $_G_check_func $_G_path_prog + func_path_progs_result=$func_check_prog_result + ;; + esac + $_G_path_prog_found && break 3 + done + done + done + IFS=$_G_save_IFS + test -z "$func_path_progs_result" && { + echo "no acceptable sed could be found in \$PATH" >&2 + exit 1 + } +} + + +# We want to be able to use the functions in this file before configure +# has figured out where the best binaries are kept, which means we have +# to search for them ourselves - except when the results are already set +# where we skip the searches. + +# Unless the user overrides by setting SED, search the path for either GNU +# sed, or the sed that truncates its output the least. +test -z "$SED" && { + _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for _G_i in 1 2 3 4 5 6 7; do + _G_sed_script=$_G_sed_script$nl$_G_sed_script + done + echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed + _G_sed_script= + + func_check_prog_sed () + { + _G_path_prog=$1 + + _G_count=0 + printf 0123456789 >conftest.in + while : + do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo '' >> conftest.nl + "$_G_path_prog" -f conftest.sed conftest.out 2>/dev/null || break + diff conftest.out conftest.nl >/dev/null 2>&1 || break + _G_count=`expr $_G_count + 1` + if test "$_G_count" -gt "$_G_path_prog_max"; then + # Best one so far, save it but keep looking for a better one + func_check_prog_result=$_G_path_prog + _G_path_prog_max=$_G_count + fi + # 10*(2^10) chars as input seems more than enough + test 10 -lt "$_G_count" && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out + } + + func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin + rm -f conftest.sed + SED=$func_path_progs_result +} + + +# Unless the user overrides by setting GREP, search the path for either GNU +# grep, or the grep that truncates its output the least. +test -z "$GREP" && { + func_check_prog_grep () + { + _G_path_prog=$1 + + _G_count=0 + _G_path_prog_max=0 + printf 0123456789 >conftest.in + while : + do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo 'GREP' >> conftest.nl + "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' conftest.out 2>/dev/null || break + diff conftest.out conftest.nl >/dev/null 2>&1 || break + _G_count=`expr $_G_count + 1` + if test "$_G_count" -gt "$_G_path_prog_max"; then + # Best one so far, save it but keep looking for a better one + func_check_prog_result=$_G_path_prog + _G_path_prog_max=$_G_count + fi + # 10*(2^10) chars as input seems more than enough + test 10 -lt "$_G_count" && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out + } + + func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin + GREP=$func_path_progs_result +} +## ------------------------------- ## +## User overridable command paths. ## +## ------------------------------- ## + +# All uppercase variable names are used for environment variables. These +# variables can be overridden by the user before calling a script that +# uses them if a suitable command of that name is not already available +# in the command search PATH. : ${CP="cp -f"} -test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} +: ${ECHO="printf %s\n"} +: ${EGREP="$GREP -E"} +: ${FGREP="$GREP -F"} +: ${LN_S="ln -s"} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} -: ${Xsed="$SED -e 1s/^X//"} - -# Global variables: -EXIT_SUCCESS=0 -EXIT_FAILURE=1 -EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. -EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. -exit_status=$EXIT_SUCCESS - -# Make sure IFS has a sensible default -lt_nl=' -' -IFS=" $lt_nl" -dirname="s,/[^/]*$,," -basename="s,^.*/,," - -# func_dirname file append nondir_replacement -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -func_dirname () -{ - func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` - if test "X$func_dirname_result" = "X${1}"; then - func_dirname_result="${3}" - else - func_dirname_result="$func_dirname_result${2}" - fi -} # func_dirname may be replaced by extended shell implementation +## -------------------- ## +## Useful sed snippets. ## +## -------------------- ## +sed_dirname='s|/[^/]*$||' +sed_basename='s|^.*/||' -# func_basename file -func_basename () -{ - func_basename_result=`$ECHO "${1}" | $SED "$basename"` -} # func_basename may be replaced by extended shell implementation +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s|\([`"$\\]\)|\\\1|g' +# Same as above, but do not quote variable references. +sed_double_quote_subst='s/\(["`\\]\)/\\\1/g' -# func_dirname_and_basename file append nondir_replacement -# perform func_basename and func_dirname in a single function -# call: -# dirname: Compute the dirname of FILE. If nonempty, -# add APPEND to the result, otherwise set result -# to NONDIR_REPLACEMENT. -# value returned in "$func_dirname_result" -# basename: Compute filename of FILE. -# value retuned in "$func_basename_result" -# Implementation must be kept synchronized with func_dirname -# and func_basename. For efficiency, we do not delegate to -# those functions but instead duplicate the functionality here. -func_dirname_and_basename () -{ - # Extract subdirectory from the argument. - func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` - if test "X$func_dirname_result" = "X${1}"; then - func_dirname_result="${3}" - else - func_dirname_result="$func_dirname_result${2}" - fi - func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` -} # func_dirname_and_basename may be replaced by extended shell implementation +# Sed substitution that turns a string into a regex matching for the +# string literally. +sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g' +# Sed substitution that converts a w32 file name or path +# that contains forward slashes, into one that contains +# (escaped) backslashes. A very naive implementation. +sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' -# func_stripname prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -# func_strip_suffix prefix name -func_stripname () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; - esac -} # func_stripname may be replaced by extended shell implementation +# Re-'\' parameter expansions in output of sed_double_quote_subst that +# were '\'-ed in input to the same. If an odd number of '\' preceded a +# '$' in input to sed_double_quote_subst, that '$' was protected from +# expansion. Since each input '\' is now two '\'s, look for any number +# of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'. +_G_bs='\\' +_G_bs2='\\\\' +_G_bs4='\\\\\\\\' +_G_dollar='\$' +sed_double_backslash="\ + s/$_G_bs4/&\\ +/g + s/^$_G_bs2$_G_dollar/$_G_bs&/ + s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g + s/\n//g" -# These SED scripts presuppose an absolute path with a trailing slash. -pathcar='s,^/\([^/]*\).*$,\1,' -pathcdr='s,^/[^/]*,,' -removedotparts=':dotsl - s@/\./@/@g - t dotsl - s,/\.$,/,' -collapseslashes='s@/\{1,\}@/@g' -finalslash='s,/*$,/,' +## ----------------- ## +## Global variables. ## +## ----------------- ## + +# Except for the global variables explicitly listed below, the following +# functions in the '^func_' namespace, and the '^require_' namespace +# variables initialised in the 'Resource management' section, sourcing +# this file will not pollute your global namespace with anything +# else. There's no portable way to scope variables in Bourne shell +# though, so actually running these functions will sometimes place +# results into a variable named after the function, and often use +# temporary variables in the '^_G_' namespace. If you are careful to +# avoid using those namespaces casually in your sourcing script, things +# should continue to work as you expect. And, of course, you can freely +# overwrite any of the functions or variables defined here before +# calling anything to customize them. -# func_normal_abspath PATH -# Remove doubled-up and trailing slashes, "." path components, -# and cancel out any ".." path components in PATH after making -# it an absolute path. -# value returned in "$func_normal_abspath_result" -func_normal_abspath () -{ - # Start from root dir and reassemble the path. - func_normal_abspath_result= - func_normal_abspath_tpath=$1 - func_normal_abspath_altnamespace= - case $func_normal_abspath_tpath in - "") - # Empty path, that just means $cwd. - func_stripname '' '/' "`pwd`" - func_normal_abspath_result=$func_stripname_result - return - ;; - # The next three entries are used to spot a run of precisely - # two leading slashes without using negated character classes; - # we take advantage of case's first-match behaviour. - ///*) - # Unusual form of absolute path, do nothing. - ;; - //*) - # Not necessarily an ordinary path; POSIX reserves leading '//' - # and for example Cygwin uses it to access remote file shares - # over CIFS/SMB, so we conserve a leading double slash if found. - func_normal_abspath_altnamespace=/ - ;; - /*) - # Absolute path, do nothing. - ;; - *) - # Relative path, prepend $cwd. - func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath - ;; - esac - # Cancel out all the simple stuff to save iterations. We also want - # the path to end with a slash for ease of parsing, so make sure - # there is one (and only one) here. - func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` - while :; do - # Processed it all yet? - if test "$func_normal_abspath_tpath" = / ; then - # If we ascended to the root using ".." the result may be empty now. - if test -z "$func_normal_abspath_result" ; then - func_normal_abspath_result=/ - fi - break - fi - func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$pathcar"` - func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$pathcdr"` - # Figure out what to do with it - case $func_normal_abspath_tcomponent in - "") - # Trailing empty path component, ignore it. - ;; - ..) - # Parent dir; strip last assembled component from result. - func_dirname "$func_normal_abspath_result" - func_normal_abspath_result=$func_dirname_result - ;; - *) - # Actual path component, append it. - func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent - ;; - esac - done - # Restore leading double-slash if one was found on entry. - func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result -} +EXIT_SUCCESS=0 +EXIT_FAILURE=1 +EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. +EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. -# func_relative_path SRCDIR DSTDIR -# generates a relative path from SRCDIR to DSTDIR, with a trailing -# slash if non-empty, suitable for immediately appending a filename -# without needing to append a separator. -# value returned in "$func_relative_path_result" -func_relative_path () -{ - func_relative_path_result= - func_normal_abspath "$1" - func_relative_path_tlibdir=$func_normal_abspath_result - func_normal_abspath "$2" - func_relative_path_tbindir=$func_normal_abspath_result - - # Ascend the tree starting from libdir - while :; do - # check if we have found a prefix of bindir - case $func_relative_path_tbindir in - $func_relative_path_tlibdir) - # found an exact match - func_relative_path_tcancelled= - break - ;; - $func_relative_path_tlibdir*) - # found a matching prefix - func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" - func_relative_path_tcancelled=$func_stripname_result - if test -z "$func_relative_path_result"; then - func_relative_path_result=. - fi - break - ;; - *) - func_dirname $func_relative_path_tlibdir - func_relative_path_tlibdir=${func_dirname_result} - if test "x$func_relative_path_tlibdir" = x ; then - # Have to descend all the way to the root! - func_relative_path_result=../$func_relative_path_result - func_relative_path_tcancelled=$func_relative_path_tbindir - break - fi - func_relative_path_result=../$func_relative_path_result - ;; - esac - done +# Allow overriding, eg assuming that you follow the convention of +# 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=${debug_cmd-":"} +exit_cmd=: - # Now calculate path; take care to avoid doubling-up slashes. - func_stripname '' '/' "$func_relative_path_result" - func_relative_path_result=$func_stripname_result - func_stripname '/' '/' "$func_relative_path_tcancelled" - if test "x$func_stripname_result" != x ; then - func_relative_path_result=${func_relative_path_result}/${func_stripname_result} - fi +# By convention, finish your script with: +# +# exit $exit_status +# +# so that you can set exit_status to non-zero if you want to indicate +# something went wrong during execution without actually bailing out at +# the point of failure. +exit_status=$EXIT_SUCCESS - # Normalisation. If bindir is libdir, return empty string, - # else relative path ending with a slash; either way, target - # file name can be directly appended. - if test ! -z "$func_relative_path_result"; then - func_stripname './' '' "$func_relative_path_result/" - func_relative_path_result=$func_stripname_result - fi -} +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath=$0 -# The name of this program: -func_dirname_and_basename "$progpath" -progname=$func_basename_result +# The name of this program. +progname=`$ECHO "$progpath" |$SED "$sed_basename"` -# Make sure we have an absolute path for reexecution: +# Make sure we have an absolute progpath for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) - progdir=$func_dirname_result + progdir=`$ECHO "$progpath" |$SED "$sed_dirname"` progdir=`cd "$progdir" && pwd` - progpath="$progdir/$progname" + progpath=$progdir/$progname ;; *) - save_IFS="$IFS" + _G_IFS=$IFS IFS=${PATH_SEPARATOR-:} for progdir in $PATH; do - IFS="$save_IFS" + IFS=$_G_IFS test -x "$progdir/$progname" && break done - IFS="$save_IFS" + IFS=$_G_IFS test -n "$progdir" || progdir=`pwd` - progpath="$progdir/$progname" + progpath=$progdir/$progname ;; esac -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -Xsed="${SED}"' -e 1s/^X//' -sed_quote_subst='s/\([`"$\\]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\(["`\\]\)/\\\1/g' - -# Sed substitution that turns a string into a regex matching for the -# string literally. -sed_make_literal_regex='s,[].[^$\\*\/],\\&,g' - -# Sed substitution that converts a w32 file name or path -# which contains forward slashes, into one that contains -# (escaped) backslashes. A very naive implementation. -lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' -# Re-`\' parameter expansions in output of double_quote_subst that were -# `\'-ed in input to the same. If an odd number of `\' preceded a '$' -# in input to double_quote_subst, that '$' was protected from expansion. -# Since each input `\' is now two `\'s, look for any number of runs of -# four `\'s followed by two `\'s and then a '$'. `\' that '$'. -bs='\\' -bs2='\\\\' -bs4='\\\\\\\\' -dollar='\$' -sed_double_backslash="\ - s/$bs4/&\\ -/g - s/^$bs2$dollar/$bs&/ - s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g - s/\n//g" +## ----------------- ## +## Standard options. ## +## ----------------- ## + +# The following options affect the operation of the functions defined +# below, and should be set appropriately depending on run-time para- +# meters passed on the command line. -# Standard options: opt_dry_run=false -opt_help=false opt_quiet=false opt_verbose=false -opt_warning=: -# func_echo arg... -# Echo program name prefixed message, along with the current mode -# name if it has been set yet. -func_echo () -{ - $ECHO "$progname: ${opt_mode+$opt_mode: }$*" +# Categories 'all' and 'none' are always available. Append any others +# you will pass as the first argument to func_warning from your own +# code. +warning_categories= + +# By default, display warnings according to 'opt_warning_types'. Set +# 'warning_func' to ':' to elide all warnings, or func_fatal_error to +# treat the next displayed warning as a fatal error. +warning_func=func_warn_and_continue + +# Set to 'all' to display all warnings, 'none' to suppress all +# warnings, or a space delimited list of some subset of +# 'warning_categories' to display only the listed warnings. +opt_warning_types=all + + +## -------------------- ## +## Resource management. ## +## -------------------- ## + +# This section contains definitions for functions that each ensure a +# particular resource (a file, or a non-empty configuration variable for +# example) is available, and if appropriate to extract default values +# from pertinent package files. Call them using their associated +# 'require_*' variable to ensure that they are executed, at most, once. +# +# It's entirely deliberate that calling these functions can set +# variables that don't obey the namespace limitations obeyed by the rest +# of this file, in order that that they be as useful as possible to +# callers. + + +# require_term_colors +# ------------------- +# Allow display of bold text on terminals that support it. +require_term_colors=func_require_term_colors +func_require_term_colors () +{ + $debug_cmd + + test -t 1 && { + # COLORTERM and USE_ANSI_COLORS environment variables take + # precedence, because most terminfo databases neglect to describe + # whether color sequences are supported. + test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} + + if test 1 = "$USE_ANSI_COLORS"; then + # Standard ANSI escape sequences + tc_reset='' + tc_bold=''; tc_standout='' + tc_red=''; tc_green='' + tc_blue=''; tc_cyan='' + else + # Otherwise trust the terminfo database after all. + test -n "`tput sgr0 2>/dev/null`" && { + tc_reset=`tput sgr0` + test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` + tc_standout=$tc_bold + test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` + test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` + test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` + test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` + test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` + } + fi + } + + require_term_colors=: } -# func_verbose arg... -# Echo program name prefixed message in verbose mode only. -func_verbose () -{ - $opt_verbose && func_echo ${1+"$@"} - # A bug in bash halts the script if the last line of a function - # fails when set -e is in force, so we need another command to - # work around that: - : -} +## ----------------- ## +## Function library. ## +## ----------------- ## -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "$*" -} +# This section contains a variety of useful functions to call in your +# scripts. Take note of the portable wrappers for features provided by +# some modern shells, which will fall back to slower equivalents on +# less featureful shells. -# func_error arg... -# Echo program name prefixed message to standard error. -func_error () -{ - $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 -} -# func_warning arg... -# Echo program name prefixed warning message to standard error. -func_warning () -{ - $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 +# func_append VAR VALUE +# --------------------- +# Append VALUE onto the existing contents of VAR. - # bash bug again: - : -} + # We should try to minimise forks, especially on Windows where they are + # unreasonably slow, so skip the feature probes when bash or zsh are + # being used: + if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then + : ${_G_HAVE_ARITH_OP="yes"} + : ${_G_HAVE_XSI_OPS="yes"} + # The += operator was introduced in bash 3.1 + case $BASH_VERSION in + [12].* | 3.0 | 3.0*) ;; + *) + : ${_G_HAVE_PLUSEQ_OP="yes"} + ;; + esac + fi -# func_fatal_error arg... -# Echo program name prefixed message to standard error, and exit. -func_fatal_error () -{ - func_error ${1+"$@"} - exit $EXIT_FAILURE -} + # _G_HAVE_PLUSEQ_OP + # Can be empty, in which case the shell is probed, "yes" if += is + # useable or anything else if it does not work. + test -z "$_G_HAVE_PLUSEQ_OP" \ + && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ + && _G_HAVE_PLUSEQ_OP=yes + +if test yes = "$_G_HAVE_PLUSEQ_OP" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_append () + { + $debug_cmd -# func_fatal_help arg... -# Echo program name prefixed message to standard error, followed by -# a help hint, and exit. -func_fatal_help () -{ - func_error ${1+"$@"} - func_fatal_error "$help" + eval "$1+=\$2" + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_append () + { + $debug_cmd + + eval "$1=\$$1\$2" + } +fi + + +# func_append_quoted VAR VALUE +# ---------------------------- +# Quote VALUE and append to the end of shell variable VAR, separated +# by a space. +if test yes = "$_G_HAVE_PLUSEQ_OP"; then + eval 'func_append_quoted () + { + $debug_cmd + + func_quote_for_eval "$2" + eval "$1+=\\ \$func_quote_for_eval_result" + }' +else + func_append_quoted () + { + $debug_cmd + + func_quote_for_eval "$2" + eval "$1=\$$1\\ \$func_quote_for_eval_result" + } +fi + + +# func_append_uniq VAR VALUE +# -------------------------- +# Append unique VALUE onto the existing contents of VAR, assuming +# entries are delimited by the first character of VALUE. For example: +# +# func_append_uniq options " --another-option option-argument" +# +# will only append to $options if " --another-option option-argument " +# is not already present somewhere in $options already (note spaces at +# each end implied by leading space in second argument). +func_append_uniq () +{ + $debug_cmd + + eval _G_current_value='`$ECHO $'$1'`' + _G_delim=`expr "$2" : '\(.\)'` + + case $_G_delim$_G_current_value$_G_delim in + *"$2$_G_delim"*) ;; + *) func_append "$@" ;; + esac } -help="Try \`$progname --help' for more information." ## default -# func_grep expression filename +# func_arith TERM... +# ------------------ +# Set func_arith_result to the result of evaluating TERMs. + test -z "$_G_HAVE_ARITH_OP" \ + && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ + && _G_HAVE_ARITH_OP=yes + +if test yes = "$_G_HAVE_ARITH_OP"; then + eval 'func_arith () + { + $debug_cmd + + func_arith_result=$(( $* )) + }' +else + func_arith () + { + $debug_cmd + + func_arith_result=`expr "$@"` + } +fi + + +# func_basename FILE +# ------------------ +# Set func_basename_result to FILE with everything up to and including +# the last / stripped. +if test yes = "$_G_HAVE_XSI_OPS"; then + # If this shell supports suffix pattern removal, then use it to avoid + # forking. Hide the definitions single quotes in case the shell chokes + # on unsupported syntax... + _b='func_basename_result=${1##*/}' + _d='case $1 in + */*) func_dirname_result=${1%/*}$2 ;; + * ) func_dirname_result=$3 ;; + esac' + +else + # ...otherwise fall back to using sed. + _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' + _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` + if test "X$func_dirname_result" = "X$1"; then + func_dirname_result=$3 + else + func_append func_dirname_result "$2" + fi' +fi + +eval 'func_basename () +{ + $debug_cmd + + '"$_b"' +}' + + +# func_dirname FILE APPEND NONDIR_REPLACEMENT +# ------------------------------------------- +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +eval 'func_dirname () +{ + $debug_cmd + + '"$_d"' +}' + + +# func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT +# -------------------------------------------------------- +# Perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# For efficiency, we do not delegate to the functions above but instead +# duplicate the functionality here. +eval 'func_dirname_and_basename () +{ + $debug_cmd + + '"$_b"' + '"$_d"' +}' + + +# func_echo ARG... +# ---------------- +# Echo program name prefixed message. +func_echo () +{ + $debug_cmd + + _G_message=$* + + func_echo_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_IFS + $ECHO "$progname: $_G_line" + done + IFS=$func_echo_IFS +} + + +# func_echo_all ARG... +# -------------------- +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + + +# func_echo_infix_1 INFIX ARG... +# ------------------------------ +# Echo program name, followed by INFIX on the first line, with any +# additional lines not showing INFIX. +func_echo_infix_1 () +{ + $debug_cmd + + $require_term_colors + + _G_infix=$1; shift + _G_indent=$_G_infix + _G_prefix="$progname: $_G_infix: " + _G_message=$* + + # Strip color escape sequences before counting printable length + for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" + do + test -n "$_G_tc" && { + _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"` + _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"` + } + done + _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes + + func_echo_infix_1_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_infix_1_IFS + $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 + _G_prefix=$_G_indent + done + IFS=$func_echo_infix_1_IFS +} + + +# func_error ARG... +# ----------------- +# Echo program name prefixed message to standard error. +func_error () +{ + $debug_cmd + + $require_term_colors + + func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 +} + + +# func_fatal_error ARG... +# ----------------------- +# Echo program name prefixed message to standard error, and exit. +func_fatal_error () +{ + $debug_cmd + + func_error "$*" + exit $EXIT_FAILURE +} + + +# func_grep EXPRESSION FILENAME +# ----------------------------- # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { + $debug_cmd + $GREP "$1" "$2" >/dev/null 2>&1 } -# func_mkdir_p directory-path +# func_len STRING +# --------------- +# Set func_len_result to the length of STRING. STRING may not +# start with a hyphen. + test -z "$_G_HAVE_XSI_OPS" \ + && (eval 'x=a/b/c; + test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ + && _G_HAVE_XSI_OPS=yes + +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_len () + { + $debug_cmd + + func_len_result=${#1} + }' +else + func_len () + { + $debug_cmd + + func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` + } +fi + + +# func_mkdir_p DIRECTORY-PATH +# --------------------------- # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { - my_directory_path="$1" - my_dir_list= + $debug_cmd + + _G_directory_path=$1 + _G_dir_list= - if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then + if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then - # Protect directory names starting with `-' - case $my_directory_path in - -*) my_directory_path="./$my_directory_path" ;; + # Protect directory names starting with '-' + case $_G_directory_path in + -*) _G_directory_path=./$_G_directory_path ;; esac # While some portion of DIR does not yet exist... - while test ! -d "$my_directory_path"; do + while test ! -d "$_G_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list incase some portion of path contains whitespace. - my_dir_list="$my_directory_path:$my_dir_list" + _G_dir_list=$_G_directory_path:$_G_dir_list # If the last portion added has no slash in it, the list is done - case $my_directory_path in */*) ;; *) break ;; esac + case $_G_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop - my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` + _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` done - my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` + _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` - save_mkdir_p_IFS="$IFS"; IFS=':' - for my_dir in $my_dir_list; do - IFS="$save_mkdir_p_IFS" - # mkdir can fail with a `File exist' error if two processes + func_mkdir_p_IFS=$IFS; IFS=: + for _G_dir in $_G_dir_list; do + IFS=$func_mkdir_p_IFS + # mkdir can fail with a 'File exist' error if two processes # try to create one of the directories concurrently. Don't # stop in that case! - $MKDIR "$my_dir" 2>/dev/null || : + $MKDIR "$_G_dir" 2>/dev/null || : done - IFS="$save_mkdir_p_IFS" + IFS=$func_mkdir_p_IFS # Bail out if we (or some other process) failed to create a directory. - test -d "$my_directory_path" || \ - func_fatal_error "Failed to create \`$1'" + test -d "$_G_directory_path" || \ + func_fatal_error "Failed to create '$1'" fi } -# func_mktempdir [string] +# func_mktempdir [BASENAME] +# ------------------------- # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If -# given, STRING is the basename for that directory. +# given, BASENAME is the basename for that directory. func_mktempdir () { - my_template="${TMPDIR-/tmp}/${1-$progname}" + $debug_cmd - if test "$opt_dry_run" = ":"; then + _G_template=${TMPDIR-/tmp}/${1-$progname} + + if test : = "$opt_dry_run"; then # Return a directory name, but don't create it in dry-run mode - my_tmpdir="${my_template}-$$" + _G_tmpdir=$_G_template-$$ else # If mktemp works, use that first and foremost - my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` + _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` - if test ! -d "$my_tmpdir"; then + if test ! -d "$_G_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race - my_tmpdir="${my_template}-${RANDOM-0}$$" + _G_tmpdir=$_G_template-${RANDOM-0}$$ + + func_mktempdir_umask=`umask` + umask 0077 + $MKDIR "$_G_tmpdir" + umask $func_mktempdir_umask + fi + + # If we're not in dry-run mode, bomb out on failure + test -d "$_G_tmpdir" || \ + func_fatal_error "cannot create temporary directory '$_G_tmpdir'" + fi + + $ECHO "$_G_tmpdir" +} + + +# func_normal_abspath PATH +# ------------------------ +# Remove doubled-up and trailing slashes, "." path components, +# and cancel out any ".." path components in PATH after making +# it an absolute path. +func_normal_abspath () +{ + $debug_cmd + + # These SED scripts presuppose an absolute path with a trailing slash. + _G_pathcar='s|^/\([^/]*\).*$|\1|' + _G_pathcdr='s|^/[^/]*||' + _G_removedotparts=':dotsl + s|/\./|/|g + t dotsl + s|/\.$|/|' + _G_collapseslashes='s|/\{1,\}|/|g' + _G_finalslash='s|/*$|/|' + + # Start from root dir and reassemble the path. + func_normal_abspath_result= + func_normal_abspath_tpath=$1 + func_normal_abspath_altnamespace= + case $func_normal_abspath_tpath in + "") + # Empty path, that just means $cwd. + func_stripname '' '/' "`pwd`" + func_normal_abspath_result=$func_stripname_result + return + ;; + # The next three entries are used to spot a run of precisely + # two leading slashes without using negated character classes; + # we take advantage of case's first-match behaviour. + ///*) + # Unusual form of absolute path, do nothing. + ;; + //*) + # Not necessarily an ordinary path; POSIX reserves leading '//' + # and for example Cygwin uses it to access remote file shares + # over CIFS/SMB, so we conserve a leading double slash if found. + func_normal_abspath_altnamespace=/ + ;; + /*) + # Absolute path, do nothing. + ;; + *) + # Relative path, prepend $cwd. + func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath + ;; + esac + + # Cancel out all the simple stuff to save iterations. We also want + # the path to end with a slash for ease of parsing, so make sure + # there is one (and only one) here. + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"` + while :; do + # Processed it all yet? + if test / = "$func_normal_abspath_tpath"; then + # If we ascended to the root using ".." the result may be empty now. + if test -z "$func_normal_abspath_result"; then + func_normal_abspath_result=/ + fi + break + fi + func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_pathcar"` + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_pathcdr"` + # Figure out what to do with it + case $func_normal_abspath_tcomponent in + "") + # Trailing empty path component, ignore it. + ;; + ..) + # Parent dir; strip last assembled component from result. + func_dirname "$func_normal_abspath_result" + func_normal_abspath_result=$func_dirname_result + ;; + *) + # Actual path component, append it. + func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent" + ;; + esac + done + # Restore leading double-slash if one was found on entry. + func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result +} + + +# func_notquiet ARG... +# -------------------- +# Echo program name prefixed message only when not in quiet mode. +func_notquiet () +{ + $debug_cmd + + $opt_quiet || func_echo ${1+"$@"} + + # A bug in bash halts the script if the last line of a function + # fails when set -e is in force, so we need another command to + # work around that: + : +} + + +# func_relative_path SRCDIR DSTDIR +# -------------------------------- +# Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. +func_relative_path () +{ + $debug_cmd + + func_relative_path_result= + func_normal_abspath "$1" + func_relative_path_tlibdir=$func_normal_abspath_result + func_normal_abspath "$2" + func_relative_path_tbindir=$func_normal_abspath_result + + # Ascend the tree starting from libdir + while :; do + # check if we have found a prefix of bindir + case $func_relative_path_tbindir in + $func_relative_path_tlibdir) + # found an exact match + func_relative_path_tcancelled= + break + ;; + $func_relative_path_tlibdir*) + # found a matching prefix + func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" + func_relative_path_tcancelled=$func_stripname_result + if test -z "$func_relative_path_result"; then + func_relative_path_result=. + fi + break + ;; + *) + func_dirname $func_relative_path_tlibdir + func_relative_path_tlibdir=$func_dirname_result + if test -z "$func_relative_path_tlibdir"; then + # Have to descend all the way to the root! + func_relative_path_result=../$func_relative_path_result + func_relative_path_tcancelled=$func_relative_path_tbindir + break + fi + func_relative_path_result=../$func_relative_path_result + ;; + esac + done + + # Now calculate path; take care to avoid doubling-up slashes. + func_stripname '' '/' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + func_stripname '/' '/' "$func_relative_path_tcancelled" + if test -n "$func_stripname_result"; then + func_append func_relative_path_result "/$func_stripname_result" + fi + + # Normalisation. If bindir is libdir, return '.' else relative path. + if test -n "$func_relative_path_result"; then + func_stripname './' '' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + fi + + test -n "$func_relative_path_result" || func_relative_path_result=. + + : +} + + +# func_quote_for_eval ARG... +# -------------------------- +# Aesthetically quote ARGs to be evaled later. +# This function returns two values: +# i) func_quote_for_eval_result +# double-quoted, suitable for a subsequent eval +# ii) func_quote_for_eval_unquoted_result +# has all characters that are still active within double +# quotes backslashified. +func_quote_for_eval () +{ + $debug_cmd + + func_quote_for_eval_unquoted_result= + func_quote_for_eval_result= + while test 0 -lt $#; do + case $1 in + *[\\\`\"\$]*) + _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;; + *) + _G_unquoted_arg=$1 ;; + esac + if test -n "$func_quote_for_eval_unquoted_result"; then + func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg" + else + func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg" + fi + + case $_G_unquoted_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting, command substitution and variable expansion + # for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + _G_quoted_arg=\"$_G_unquoted_arg\" + ;; + *) + _G_quoted_arg=$_G_unquoted_arg + ;; + esac + + if test -n "$func_quote_for_eval_result"; then + func_append func_quote_for_eval_result " $_G_quoted_arg" + else + func_append func_quote_for_eval_result "$_G_quoted_arg" + fi + shift + done +} + + +# func_quote_for_expand ARG +# ------------------------- +# Aesthetically quote ARG to be evaled later; same as above, +# but do not quote variable references. +func_quote_for_expand () +{ + $debug_cmd + + case $1 in + *[\\\`\"]*) + _G_arg=`$ECHO "$1" | $SED \ + -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;; + *) + _G_arg=$1 ;; + esac + + case $_G_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting and command substitution for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + _G_arg=\"$_G_arg\" + ;; + esac + + func_quote_for_expand_result=$_G_arg +} + + +# func_stripname PREFIX SUFFIX NAME +# --------------------------------- +# strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_stripname () + { + $debug_cmd + + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary variable first. + func_stripname_result=$3 + func_stripname_result=${func_stripname_result#"$1"} + func_stripname_result=${func_stripname_result%"$2"} + }' +else + func_stripname () + { + $debug_cmd + + case $2 in + .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; + *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; + esac + } +fi + + +# func_show_eval CMD [FAIL_EXP] +# ----------------------------- +# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. +func_show_eval () +{ + $debug_cmd + + _G_cmd=$1 + _G_fail_exp=${2-':'} + + func_quote_for_expand "$_G_cmd" + eval "func_notquiet $func_quote_for_expand_result" + + $opt_dry_run || { + eval "$_G_cmd" + _G_status=$? + if test 0 -ne "$_G_status"; then + eval "(exit $_G_status); $_G_fail_exp" + fi + } +} + + +# func_show_eval_locale CMD [FAIL_EXP] +# ------------------------------------ +# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. Use the saved locale for evaluation. +func_show_eval_locale () +{ + $debug_cmd + + _G_cmd=$1 + _G_fail_exp=${2-':'} + + $opt_quiet || { + func_quote_for_expand "$_G_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + $opt_dry_run || { + eval "$_G_user_locale + $_G_cmd" + _G_status=$? + eval "$_G_safe_locale" + if test 0 -ne "$_G_status"; then + eval "(exit $_G_status); $_G_fail_exp" + fi + } +} + + +# func_tr_sh +# ---------- +# Turn $1 into a string suitable for a shell variable name. +# Result is stored in $func_tr_sh_result. All characters +# not in the set a-zA-Z0-9_ are replaced with '_'. Further, +# if $1 begins with a digit, a '_' is prepended as well. +func_tr_sh () +{ + $debug_cmd + + case $1 in + [0-9]* | *[!a-zA-Z0-9_]*) + func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` + ;; + * ) + func_tr_sh_result=$1 + ;; + esac +} + + +# func_verbose ARG... +# ------------------- +# Echo program name prefixed message in verbose mode only. +func_verbose () +{ + $debug_cmd + + $opt_verbose && func_echo "$*" + + : +} + + +# func_warn_and_continue ARG... +# ----------------------------- +# Echo program name prefixed warning message to standard error. +func_warn_and_continue () +{ + $debug_cmd + + $require_term_colors + + func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 +} + + +# func_warning CATEGORY ARG... +# ---------------------------- +# Echo program name prefixed warning message to standard error. Warning +# messages can be filtered according to CATEGORY, where this function +# elides messages where CATEGORY is not listed in the global variable +# 'opt_warning_types'. +func_warning () +{ + $debug_cmd + + # CATEGORY must be in the warning_categories list! + case " $warning_categories " in + *" $1 "*) ;; + *) func_internal_error "invalid warning category '$1'" ;; + esac + + _G_category=$1 + shift + + case " $opt_warning_types " in + *" $_G_category "*) $warning_func ${1+"$@"} ;; + esac +} + + +# func_sort_ver VER1 VER2 +# ----------------------- +# 'sort -V' is not generally available. +# Note this deviates from the version comparison in automake +# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a +# but this should suffice as we won't be specifying old +# version formats or redundant trailing .0 in bootstrap.conf. +# If we did want full compatibility then we should probably +# use m4_version_compare from autoconf. +func_sort_ver () +{ + $debug_cmd + + printf '%s\n%s\n' "$1" "$2" \ + | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n +} + +# func_lt_ver PREV CURR +# --------------------- +# Return true if PREV and CURR are in the correct order according to +# func_sort_ver, otherwise false. Use it like this: +# +# func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..." +func_lt_ver () +{ + $debug_cmd + + test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q` +} + + +# Local variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" +# time-stamp-time-zone: "UTC" +# End: +#! /bin/sh + +# Set a version string for this script. +scriptversion=2014-01-07.03; # UTC + +# A portable, pluggable option parser for Bourne shell. +# Written by Gary V. Vaughan, 2010 + +# Copyright (C) 2010-2015 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. + +# 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 +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Please report bugs or propose patches to gary@gnu.org. + + +## ------ ## +## Usage. ## +## ------ ## + +# This file is a library for parsing options in your shell scripts along +# with assorted other useful supporting features that you can make use +# of too. +# +# For the simplest scripts you might need only: +# +# #!/bin/sh +# . relative/path/to/funclib.sh +# . relative/path/to/options-parser +# scriptversion=1.0 +# func_options ${1+"$@"} +# eval set dummy "$func_options_result"; shift +# ...rest of your script... +# +# In order for the '--version' option to work, you will need to have a +# suitably formatted comment like the one at the top of this file +# starting with '# Written by ' and ending with '# warranty; '. +# +# For '-h' and '--help' to work, you will also need a one line +# description of your script's purpose in a comment directly above the +# '# Written by ' line, like the one at the top of this file. +# +# The default options also support '--debug', which will turn on shell +# execution tracing (see the comment above debug_cmd below for another +# use), and '--verbose' and the func_verbose function to allow your script +# to display verbose messages only when your user has specified +# '--verbose'. +# +# After sourcing this file, you can plug processing for additional +# options by amending the variables from the 'Configuration' section +# below, and following the instructions in the 'Option parsing' +# section further down. + +## -------------- ## +## Configuration. ## +## -------------- ## + +# You should override these variables in your script after sourcing this +# file so that they reflect the customisations you have added to the +# option parser. + +# The usage line for option parsing errors and the start of '-h' and +# '--help' output messages. You can embed shell variables for delayed +# expansion at the time the message is displayed, but you will need to +# quote other shell meta-characters carefully to prevent them being +# expanded when the contents are evaled. +usage='$progpath [OPTION]...' + +# Short help message in response to '-h' and '--help'. Add to this or +# override it after sourcing this library to reflect the full set of +# options your script accepts. +usage_message="\ + --debug enable verbose shell tracing + -W, --warnings=CATEGORY + report the warnings falling in CATEGORY [all] + -v, --verbose verbosely report processing + --version print version information and exit + -h, --help print short or long help message and exit +" + +# Additional text appended to 'usage_message' in response to '--help'. +long_help_message=" +Warning categories include: + 'all' show all warnings + 'none' turn off all the warnings + 'error' warnings are treated as fatal errors" + +# Help message printed before fatal option parsing errors. +fatal_help="Try '\$progname --help' for more information." + + + +## ------------------------- ## +## Hook function management. ## +## ------------------------- ## + +# This section contains functions for adding, removing, and running hooks +# to the main code. A hook is just a named list of of function, that can +# be run in order later on. + +# func_hookable FUNC_NAME +# ----------------------- +# Declare that FUNC_NAME will run hooks added with +# 'func_add_hook FUNC_NAME ...'. +func_hookable () +{ + $debug_cmd + + func_append hookable_fns " $1" +} + + +# func_add_hook FUNC_NAME HOOK_FUNC +# --------------------------------- +# Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must +# first have been declared "hookable" by a call to 'func_hookable'. +func_add_hook () +{ + $debug_cmd + + case " $hookable_fns " in + *" $1 "*) ;; + *) func_fatal_error "'$1' does not accept hook functions." ;; + esac + + eval func_append ${1}_hooks '" $2"' +} + + +# func_remove_hook FUNC_NAME HOOK_FUNC +# ------------------------------------ +# Remove HOOK_FUNC from the list of functions called by FUNC_NAME. +func_remove_hook () +{ + $debug_cmd + + eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`' +} + + +# func_run_hooks FUNC_NAME [ARG]... +# --------------------------------- +# Run all hook functions registered to FUNC_NAME. +# It is assumed that the list of hook functions contains nothing more +# than a whitespace-delimited list of legal shell function names, and +# no effort is wasted trying to catch shell meta-characters or preserve +# whitespace. +func_run_hooks () +{ + $debug_cmd + + case " $hookable_fns " in + *" $1 "*) ;; + *) func_fatal_error "'$1' does not support hook funcions.n" ;; + esac + + eval _G_hook_fns=\$$1_hooks; shift + + for _G_hook in $_G_hook_fns; do + eval $_G_hook '"$@"' + + # store returned options list back into positional + # parameters for next 'cmd' execution. + eval _G_hook_result=\$${_G_hook}_result + eval set dummy "$_G_hook_result"; shift + done + + func_quote_for_eval ${1+"$@"} + func_run_hooks_result=$func_quote_for_eval_result +} + + + +## --------------- ## +## Option parsing. ## +## --------------- ## + +# In order to add your own option parsing hooks, you must accept the +# full positional parameter list in your hook function, remove any +# options that you action, and then pass back the remaining unprocessed +# options in '_result', escaped suitably for +# 'eval'. Like this: +# +# my_options_prep () +# { +# $debug_cmd +# +# # Extend the existing usage message. +# usage_message=$usage_message' +# -s, --silent don'\''t print informational messages +# ' +# +# func_quote_for_eval ${1+"$@"} +# my_options_prep_result=$func_quote_for_eval_result +# } +# func_add_hook func_options_prep my_options_prep +# +# +# my_silent_option () +# { +# $debug_cmd +# +# # Note that for efficiency, we parse as many options as we can +# # recognise in a loop before passing the remainder back to the +# # caller on the first unrecognised argument we encounter. +# while test $# -gt 0; do +# opt=$1; shift +# case $opt in +# --silent|-s) opt_silent=: ;; +# # Separate non-argument short options: +# -s*) func_split_short_opt "$_G_opt" +# set dummy "$func_split_short_opt_name" \ +# "-$func_split_short_opt_arg" ${1+"$@"} +# shift +# ;; +# *) set dummy "$_G_opt" "$*"; shift; break ;; +# esac +# done +# +# func_quote_for_eval ${1+"$@"} +# my_silent_option_result=$func_quote_for_eval_result +# } +# func_add_hook func_parse_options my_silent_option +# +# +# my_option_validation () +# { +# $debug_cmd +# +# $opt_silent && $opt_verbose && func_fatal_help "\ +# '--silent' and '--verbose' options are mutually exclusive." +# +# func_quote_for_eval ${1+"$@"} +# my_option_validation_result=$func_quote_for_eval_result +# } +# func_add_hook func_validate_options my_option_validation +# +# You'll alse need to manually amend $usage_message to reflect the extra +# options you parse. It's preferable to append if you can, so that +# multiple option parsing hooks can be added safely. + + +# func_options [ARG]... +# --------------------- +# All the functions called inside func_options are hookable. See the +# individual implementations for details. +func_hookable func_options +func_options () +{ + $debug_cmd - save_mktempdir_umask=`umask` - umask 0077 - $MKDIR "$my_tmpdir" - umask $save_mktempdir_umask - fi + func_options_prep ${1+"$@"} + eval func_parse_options \ + ${func_options_prep_result+"$func_options_prep_result"} + eval func_validate_options \ + ${func_parse_options_result+"$func_parse_options_result"} - # If we're not in dry-run mode, bomb out on failure - test -d "$my_tmpdir" || \ - func_fatal_error "cannot create temporary directory \`$my_tmpdir'" - fi + eval func_run_hooks func_options \ + ${func_validate_options_result+"$func_validate_options_result"} - $ECHO "$my_tmpdir" + # save modified positional parameters for caller + func_options_result=$func_run_hooks_result } -# func_quote_for_eval arg -# Aesthetically quote ARG to be evaled later. -# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT -# is double-quoted, suitable for a subsequent eval, whereas -# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters -# which are still active within double quotes backslashified. -func_quote_for_eval () +# func_options_prep [ARG]... +# -------------------------- +# All initialisations required before starting the option parse loop. +# Note that when calling hook functions, we pass through the list of +# positional parameters. If a hook function modifies that list, and +# needs to propogate that back to rest of this script, then the complete +# modified list must be put in 'func_run_hooks_result' before +# returning. +func_hookable func_options_prep +func_options_prep () { - case $1 in - *[\\\`\"\$]*) - func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; - *) - func_quote_for_eval_unquoted_result="$1" ;; - esac + $debug_cmd - case $func_quote_for_eval_unquoted_result in - # Double-quote args containing shell metacharacters to delay - # word splitting, command substitution and and variable - # expansion for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" - ;; - *) - func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" - esac + # Option defaults: + opt_verbose=false + opt_warning_types= + + func_run_hooks func_options_prep ${1+"$@"} + + # save modified positional parameters for caller + func_options_prep_result=$func_run_hooks_result } -# func_quote_for_expand arg -# Aesthetically quote ARG to be evaled later; same as above, -# but do not quote variable references. -func_quote_for_expand () +# func_parse_options [ARG]... +# --------------------------- +# The main option parsing loop. +func_hookable func_parse_options +func_parse_options () { - case $1 in - *[\\\`\"]*) - my_arg=`$ECHO "$1" | $SED \ - -e "$double_quote_subst" -e "$sed_double_backslash"` ;; - *) - my_arg="$1" ;; - esac + $debug_cmd - case $my_arg in - # Double-quote args containing shell metacharacters to delay - # word splitting and command substitution for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - my_arg="\"$my_arg\"" - ;; - esac + func_parse_options_result= - func_quote_for_expand_result="$my_arg" -} + # this just eases exit handling + while test $# -gt 0; do + # Defer to hook functions for initial option parsing, so they + # get priority in the event of reusing an option name. + func_run_hooks func_parse_options ${1+"$@"} + # Adjust func_parse_options positional parameters to match + eval set dummy "$func_run_hooks_result"; shift -# func_show_eval cmd [fail_exp] -# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is -# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -# is given, then evaluate it. -func_show_eval () -{ - my_cmd="$1" - my_fail_exp="${2-:}" + # Break out of the loop if we already parsed every option. + test $# -gt 0 || break - ${opt_silent-false} || { - func_quote_for_expand "$my_cmd" - eval "func_echo $func_quote_for_expand_result" - } + _G_opt=$1 + shift + case $_G_opt in + --debug|-x) debug_cmd='set -x' + func_echo "enabling shell trace mode" + $debug_cmd + ;; + + --no-warnings|--no-warning|--no-warn) + set dummy --warnings none ${1+"$@"} + shift + ;; - if ${opt_dry_run-false}; then :; else - eval "$my_cmd" - my_status=$? - if test "$my_status" -eq 0; then :; else - eval "(exit $my_status); $my_fail_exp" - fi - fi + --warnings|--warning|-W) + test $# = 0 && func_missing_arg $_G_opt && break + case " $warning_categories $1" in + *" $1 "*) + # trailing space prevents matching last $1 above + func_append_uniq opt_warning_types " $1" + ;; + *all) + opt_warning_types=$warning_categories + ;; + *none) + opt_warning_types=none + warning_func=: + ;; + *error) + opt_warning_types=$warning_categories + warning_func=func_fatal_error + ;; + *) + func_fatal_error \ + "unsupported warning category: '$1'" + ;; + esac + shift + ;; + + --verbose|-v) opt_verbose=: ;; + --version) func_version ;; + -\?|-h) func_usage ;; + --help) func_help ;; + + # Separate optargs to long options (plugins may need this): + --*=*) func_split_equals "$_G_opt" + set dummy "$func_split_equals_lhs" \ + "$func_split_equals_rhs" ${1+"$@"} + shift + ;; + + # Separate optargs to short options: + -W*) + func_split_short_opt "$_G_opt" + set dummy "$func_split_short_opt_name" \ + "$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + # Separate non-argument short options: + -\?*|-h*|-v*|-x*) + func_split_short_opt "$_G_opt" + set dummy "$func_split_short_opt_name" \ + "-$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + --) break ;; + -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; + *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; + esac + done + + # save modified positional parameters for caller + func_quote_for_eval ${1+"$@"} + func_parse_options_result=$func_quote_for_eval_result } -# func_show_eval_locale cmd [fail_exp] -# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is -# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -# is given, then evaluate it. Use the saved locale for evaluation. -func_show_eval_locale () +# func_validate_options [ARG]... +# ------------------------------ +# Perform any sanity checks on option settings and/or unconsumed +# arguments. +func_hookable func_validate_options +func_validate_options () { - my_cmd="$1" - my_fail_exp="${2-:}" + $debug_cmd - ${opt_silent-false} || { - func_quote_for_expand "$my_cmd" - eval "func_echo $func_quote_for_expand_result" - } + # Display all warnings if -W was not given. + test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" - if ${opt_dry_run-false}; then :; else - eval "$lt_user_locale - $my_cmd" - my_status=$? - eval "$lt_safe_locale" - if test "$my_status" -eq 0; then :; else - eval "(exit $my_status); $my_fail_exp" - fi - fi -} + func_run_hooks func_validate_options ${1+"$@"} -# func_tr_sh -# Turn $1 into a string suitable for a shell variable name. -# Result is stored in $func_tr_sh_result. All characters -# not in the set a-zA-Z0-9_ are replaced with '_'. Further, -# if $1 begins with a digit, a '_' is prepended as well. -func_tr_sh () -{ - case $1 in - [0-9]* | *[!a-zA-Z0-9_]*) - func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` - ;; - * ) - func_tr_sh_result=$1 - ;; - esac + # Bail if the options were screwed! + $exit_cmd $EXIT_FAILURE + + # save modified positional parameters for caller + func_validate_options_result=$func_run_hooks_result } -# func_version -# Echo version message to standard output and exit. -func_version () -{ - $opt_debug - $SED -n '/(C)/!b go - :more - /\./!{ - N - s/\n# / / - b more - } - :go - /^# '$PROGRAM' (GNU /,/# warranty; / { - s/^# // - s/^# *$// - s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ - p - }' < "$progpath" - exit $? -} +## ----------------- ## +## Helper functions. ## +## ----------------- ## -# func_usage -# Echo short help message to standard output and exit. -func_usage () +# This section contains the helper functions used by the rest of the +# hookable option parser framework in ascii-betical order. + + +# func_fatal_help ARG... +# ---------------------- +# Echo program name prefixed message to standard error, followed by +# a help hint, and exit. +func_fatal_help () { - $opt_debug + $debug_cmd - $SED -n '/^# Usage:/,/^# *.*--help/ { - s/^# // - s/^# *$// - s/\$progname/'$progname'/ - p - }' < "$progpath" - echo - $ECHO "run \`$progname --help | more' for full usage" - exit $? + eval \$ECHO \""Usage: $usage"\" + eval \$ECHO \""$fatal_help"\" + func_error ${1+"$@"} + exit $EXIT_FAILURE } -# func_help [NOEXIT] -# Echo long help message to standard output and exit, -# unless 'noexit' is passed as argument. + +# func_help +# --------- +# Echo long help message to standard output and exit. func_help () { - $opt_debug + $debug_cmd - $SED -n '/^# Usage:/,/# Report bugs to/ { - :print - s/^# // - s/^# *$// - s*\$progname*'$progname'* - s*\$host*'"$host"'* - s*\$SHELL*'"$SHELL"'* - s*\$LTCC*'"$LTCC"'* - s*\$LTCFLAGS*'"$LTCFLAGS"'* - s*\$LD*'"$LD"'* - s/\$with_gnu_ld/'"$with_gnu_ld"'/ - s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ - s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ - p - d - } - /^# .* home page:/b print - /^# General help using/b print - ' < "$progpath" - ret=$? - if test -z "$1"; then - exit $ret - fi + func_usage_message + $ECHO "$long_help_message" + exit 0 } -# func_missing_arg argname + +# func_missing_arg ARGNAME +# ------------------------ # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { - $opt_debug + $debug_cmd - func_error "missing argument for $1." + func_error "Missing argument for '$1'." exit_cmd=exit } -# func_split_short_opt shortopt +# func_split_equals STRING +# ------------------------ +# Set func_split_equals_lhs and func_split_equals_rhs shell variables after +# splitting STRING at the '=' sign. +test -z "$_G_HAVE_XSI_OPS" \ + && (eval 'x=a/b/c; + test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ + && _G_HAVE_XSI_OPS=yes + +if test yes = "$_G_HAVE_XSI_OPS" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_split_equals () + { + $debug_cmd + + func_split_equals_lhs=${1%%=*} + func_split_equals_rhs=${1#*=} + test "x$func_split_equals_lhs" = "x$1" \ + && func_split_equals_rhs= + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_split_equals () + { + $debug_cmd + + func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` + func_split_equals_rhs= + test "x$func_split_equals_lhs" = "x$1" \ + || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` + } +fi #func_split_equals + + +# func_split_short_opt SHORTOPT +# ----------------------------- # Set func_split_short_opt_name and func_split_short_opt_arg shell # variables after splitting SHORTOPT after the 2nd character. -func_split_short_opt () +if test yes = "$_G_HAVE_XSI_OPS" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_split_short_opt () + { + $debug_cmd + + func_split_short_opt_arg=${1#??} + func_split_short_opt_name=${1%"$func_split_short_opt_arg"} + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_split_short_opt () + { + $debug_cmd + + func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'` + func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` + } +fi #func_split_short_opt + + +# func_usage +# ---------- +# Echo short help message to standard output and exit. +func_usage () { - my_sed_short_opt='1s/^\(..\).*$/\1/;q' - my_sed_short_rest='1s/^..\(.*\)$/\1/;q' + $debug_cmd - func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` - func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` -} # func_split_short_opt may be replaced by extended shell implementation + func_usage_message + $ECHO "Run '$progname --help |${PAGER-more}' for full usage" + exit 0 +} -# func_split_long_opt longopt -# Set func_split_long_opt_name and func_split_long_opt_arg shell -# variables after splitting LONGOPT at the `=' sign. -func_split_long_opt () +# func_usage_message +# ------------------ +# Echo short help message to standard output. +func_usage_message () { - my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' - my_sed_long_arg='1s/^--[^=]*=//' + $debug_cmd - func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` - func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` -} # func_split_long_opt may be replaced by extended shell implementation + eval \$ECHO \""Usage: $usage"\" + echo + $SED -n 's|^# || + /^Written by/{ + x;p;x + } + h + /^Written by/q' < "$progpath" + echo + eval \$ECHO \""$usage_message"\" +} -exit_cmd=: +# func_version +# ------------ +# Echo version message to standard output and exit. +func_version () +{ + $debug_cmd + printf '%s\n' "$progname $scriptversion" + $SED -n ' + /(C)/!b go + :more + /\./!{ + N + s|\n# | | + b more + } + :go + /^# Written by /,/# warranty; / { + s|^# || + s|^# *$|| + s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| + p + } + /^# Written by / { + s|^# || + p + } + /^warranty; /q' < "$progpath" + exit $? +} -magic="%%%MAGIC variable%%%" -magic_exe="%%%MAGIC EXE variable%%%" +# Local variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" +# time-stamp-time-zone: "UTC" +# End: -# Global variables. -nonopt= -preserve_args= -lo2o="s/\\.lo\$/.${objext}/" -o2lo="s/\\.${objext}\$/.lo/" -extracted_archives= -extracted_serial=0 +# Set a version string. +scriptversion='(GNU libtool) 2.4.6' -# If this variable is set in any of the actions, the command in it -# will be execed at the end. This prevents here-documents from being -# left over by shells. -exec_cmd= -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () +# func_echo ARG... +# ---------------- +# Libtool also displays the current mode in messages, so override +# funclib.sh func_echo with this custom definition. +func_echo () { - eval "${1}=\$${1}\${2}" -} # func_append may be replaced by extended shell implementation + $debug_cmd -# func_append_quoted var value -# Quote VALUE and append to the end of shell variable VAR, separated -# by a space. -func_append_quoted () -{ - func_quote_for_eval "${2}" - eval "${1}=\$${1}\\ \$func_quote_for_eval_result" -} # func_append_quoted may be replaced by extended shell implementation + _G_message=$* + + func_echo_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_IFS + $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line" + done + IFS=$func_echo_IFS +} -# func_arith arithmetic-term... -func_arith () +# func_warning ARG... +# ------------------- +# Libtool warnings are not categorized, so override funclib.sh +# func_warning with this simpler definition. +func_warning () { - func_arith_result=`expr "${@}"` -} # func_arith may be replaced by extended shell implementation + $debug_cmd + $warning_func ${1+"$@"} +} -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` -} # func_len may be replaced by extended shell implementation +## ---------------- ## +## Options parsing. ## +## ---------------- ## + +# Hook in the functions to make sure our own options are parsed during +# the option parsing loop. + +usage='$progpath [OPTION]... [MODE-ARG]...' + +# Short help message in response to '-h'. +usage_message="Options: + --config show all configuration variables + --debug enable verbose shell tracing + -n, --dry-run display commands without modifying any files + --features display basic configuration information and exit + --mode=MODE use operation mode MODE + --no-warnings equivalent to '-Wnone' + --preserve-dup-deps don't remove duplicate dependency libraries + --quiet, --silent don't print informational messages + --tag=TAG use configuration variables from tag TAG + -v, --verbose print more informational messages than default + --version print version information + -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] + -h, --help, --help-all print short, long, or detailed help message +" -# func_lo2o object -func_lo2o () +# Additional text appended to 'usage_message' in response to '--help'. +func_help () { - func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` -} # func_lo2o may be replaced by extended shell implementation + $debug_cmd + func_usage_message + $ECHO "$long_help_message -# func_xform libobj-or-source -func_xform () -{ - func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` -} # func_xform may be replaced by extended shell implementation +MODE must be one of the following: + + clean remove files from the build directory + compile compile a source file into a libtool object + execute automatically set library path, then run a program + finish complete the installation of libtool libraries + install install libraries or executables + link create a library or an executable + uninstall remove libraries from an installed directory + +MODE-ARGS vary depending on the MODE. When passed as first option, +'--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that. +Try '$progname --help --mode=MODE' for a more detailed description of MODE. + +When reporting a bug, please describe a test case to reproduce it and +include the following information: + + host-triplet: $host + shell: $SHELL + compiler: $LTCC + compiler flags: $LTCFLAGS + linker: $LD (gnu? $with_gnu_ld) + version: $progname $scriptversion Debian-2.4.6-2 + automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` + autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` + +Report bugs to . +GNU libtool home page: . +General help using GNU software: ." + exit 0 +} + + +# func_lo2o OBJECT-NAME +# --------------------- +# Transform OBJECT-NAME from a '.lo' suffix to the platform specific +# object suffix. + +lo2o=s/\\.lo\$/.$objext/ +o2lo=s/\\.$objext\$/.lo/ + +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_lo2o () + { + case $1 in + *.lo) func_lo2o_result=${1%.lo}.$objext ;; + * ) func_lo2o_result=$1 ;; + esac + }' + + # func_xform LIBOBJ-OR-SOURCE + # --------------------------- + # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise) + # suffix to a '.lo' libtool-object suffix. + eval 'func_xform () + { + func_xform_result=${1%.*}.lo + }' +else + # ...otherwise fall back to using sed. + func_lo2o () + { + func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"` + } + + func_xform () + { + func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'` + } +fi -# func_fatal_configuration arg... +# func_fatal_configuration ARG... +# ------------------------------- # Echo program name prefixed message to standard error, followed by # a configuration failure hint, and exit. func_fatal_configuration () { - func_error ${1+"$@"} - func_error "See the $PACKAGE documentation for more information." - func_fatal_error "Fatal configuration error." + func__fatal_error ${1+"$@"} \ + "See the $PACKAGE documentation for more information." \ + "Fatal configuration error." } # func_config +# ----------- # Display the configuration for all the tags in this script. func_config () { @@ -924,17 +2157,19 @@ func_config () exit $? } + # func_features +# ------------- # Display the features supported by this script. func_features () { echo "host: $host" - if test "$build_libtool_libs" = yes; then + if test yes = "$build_libtool_libs"; then echo "enable shared libraries" else echo "disable shared libraries" fi - if test "$build_old_libs" = yes; then + if test yes = "$build_old_libs"; then echo "enable static libraries" else echo "disable static libraries" @@ -943,289 +2178,297 @@ func_features () exit $? } -# func_enable_tag tagname + +# func_enable_tag TAGNAME +# ----------------------- # Verify that TAGNAME is valid, and either flag an error and exit, or # enable the TAGNAME tag. We also add TAGNAME to the global $taglist # variable here. func_enable_tag () { - # Global variable: - tagname="$1" + # Global variable: + tagname=$1 - re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" - re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" - sed_extractcf="/$re_begincf/,/$re_endcf/p" - - # Validate tagname. - case $tagname in - *[!-_A-Za-z0-9,/]*) - func_fatal_error "invalid tag name: $tagname" - ;; - esac + re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" + re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" + sed_extractcf=/$re_begincf/,/$re_endcf/p + + # Validate tagname. + case $tagname in + *[!-_A-Za-z0-9,/]*) + func_fatal_error "invalid tag name: $tagname" + ;; + esac - # Don't test for the "default" C tag, as we know it's - # there but not specially marked. - case $tagname in - CC) ;; + # Don't test for the "default" C tag, as we know it's + # there but not specially marked. + case $tagname in + CC) ;; *) - if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then - taglist="$taglist $tagname" + if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then + taglist="$taglist $tagname" - # Evaluate the configuration. Be careful to quote the path - # and the sed script, to avoid splitting on whitespace, but - # also don't use non-portable quotes within backquotes within - # quotes we have to do it in 2 steps: - extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` - eval "$extractedcf" - else - func_error "ignoring unknown tag $tagname" - fi - ;; - esac + # Evaluate the configuration. Be careful to quote the path + # and the sed script, to avoid splitting on whitespace, but + # also don't use non-portable quotes within backquotes within + # quotes we have to do it in 2 steps: + extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` + eval "$extractedcf" + else + func_error "ignoring unknown tag $tagname" + fi + ;; + esac } + # func_check_version_match +# ------------------------ # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. func_check_version_match () { - if test "$package_revision" != "$macro_revision"; then - if test "$VERSION" != "$macro_version"; then - if test -z "$macro_version"; then - cat >&2 <<_LT_EOF + if test "$package_revision" != "$macro_revision"; then + if test "$VERSION" != "$macro_version"; then + if test -z "$macro_version"; then + cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from an older release. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF - else - cat >&2 <<_LT_EOF + else + cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF - fi - else - cat >&2 <<_LT_EOF + fi + else + cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, $progname: but the definition of this LT_INIT comes from revision $macro_revision. $progname: You should recreate aclocal.m4 with macros from revision $package_revision $progname: of $PACKAGE $VERSION and run autoconf again. _LT_EOF - fi + fi - exit $EXIT_MISMATCH - fi + exit $EXIT_MISMATCH + fi } -# Shorthand for --mode=foo, only valid as the first argument -case $1 in -clean|clea|cle|cl) - shift; set dummy --mode clean ${1+"$@"}; shift - ;; -compile|compil|compi|comp|com|co|c) - shift; set dummy --mode compile ${1+"$@"}; shift - ;; -execute|execut|execu|exec|exe|ex|e) - shift; set dummy --mode execute ${1+"$@"}; shift - ;; -finish|finis|fini|fin|fi|f) - shift; set dummy --mode finish ${1+"$@"}; shift - ;; -install|instal|insta|inst|ins|in|i) - shift; set dummy --mode install ${1+"$@"}; shift - ;; -link|lin|li|l) - shift; set dummy --mode link ${1+"$@"}; shift - ;; -uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) - shift; set dummy --mode uninstall ${1+"$@"}; shift - ;; -esac +# libtool_options_prep [ARG]... +# ----------------------------- +# Preparation for options parsed by libtool. +libtool_options_prep () +{ + $debug_mode + # Option defaults: + opt_config=false + opt_dlopen= + opt_dry_run=false + opt_help=false + opt_mode= + opt_preserve_dup_deps=false + opt_quiet=false + nonopt= + preserve_args= -# Option defaults: -opt_debug=: -opt_dry_run=false -opt_config=false -opt_preserve_dup_deps=false -opt_features=false -opt_finish=false -opt_help=false -opt_help_all=false -opt_silent=: -opt_warning=: -opt_verbose=: -opt_silent=false -opt_verbose=false + # Shorthand for --mode=foo, only valid as the first argument + case $1 in + clean|clea|cle|cl) + shift; set dummy --mode clean ${1+"$@"}; shift + ;; + compile|compil|compi|comp|com|co|c) + shift; set dummy --mode compile ${1+"$@"}; shift + ;; + execute|execut|execu|exec|exe|ex|e) + shift; set dummy --mode execute ${1+"$@"}; shift + ;; + finish|finis|fini|fin|fi|f) + shift; set dummy --mode finish ${1+"$@"}; shift + ;; + install|instal|insta|inst|ins|in|i) + shift; set dummy --mode install ${1+"$@"}; shift + ;; + link|lin|li|l) + shift; set dummy --mode link ${1+"$@"}; shift + ;; + uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) + shift; set dummy --mode uninstall ${1+"$@"}; shift + ;; + esac + # Pass back the list of options. + func_quote_for_eval ${1+"$@"} + libtool_options_prep_result=$func_quote_for_eval_result +} +func_add_hook func_options_prep libtool_options_prep -# Parse options once, thoroughly. This comes as soon as possible in the -# script to make things like `--version' happen as quickly as we can. -{ - # this just eases exit handling - while test $# -gt 0; do - opt="$1" - shift - case $opt in - --debug|-x) opt_debug='set -x' - func_echo "enabling shell trace mode" - $opt_debug - ;; - --dry-run|--dryrun|-n) - opt_dry_run=: - ;; - --config) - opt_config=: -func_config - ;; - --dlopen|-dlopen) - optarg="$1" - opt_dlopen="${opt_dlopen+$opt_dlopen -}$optarg" - shift - ;; - --preserve-dup-deps) - opt_preserve_dup_deps=: - ;; - --features) - opt_features=: -func_features - ;; - --finish) - opt_finish=: -set dummy --mode finish ${1+"$@"}; shift - ;; - --help) - opt_help=: - ;; - --help-all) - opt_help_all=: -opt_help=': help-all' - ;; - --mode) - test $# = 0 && func_missing_arg $opt && break - optarg="$1" - opt_mode="$optarg" -case $optarg in - # Valid mode arguments: - clean|compile|execute|finish|install|link|relink|uninstall) ;; - - # Catch anything else as an error - *) func_error "invalid argument for $opt" - exit_cmd=exit - break - ;; -esac - shift - ;; - --no-silent|--no-quiet) - opt_silent=false -func_append preserve_args " $opt" - ;; - --no-warning|--no-warn) - opt_warning=false -func_append preserve_args " $opt" - ;; - --no-verbose) - opt_verbose=false -func_append preserve_args " $opt" - ;; - --silent|--quiet) - opt_silent=: -func_append preserve_args " $opt" - opt_verbose=false - ;; - --verbose|-v) - opt_verbose=: -func_append preserve_args " $opt" -opt_silent=false - ;; - --tag) - test $# = 0 && func_missing_arg $opt && break - optarg="$1" - opt_tag="$optarg" -func_append preserve_args " $opt $optarg" -func_enable_tag "$optarg" - shift - ;; - - -\?|-h) func_usage ;; - --help) func_help ;; - --version) func_version ;; - - # Separate optargs to long options: - --*=*) - func_split_long_opt "$opt" - set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} - shift - ;; - - # Separate non-argument short options: - -\?*|-h*|-n*|-v*) - func_split_short_opt "$opt" - set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} - shift - ;; - - --) break ;; - -*) func_fatal_help "unrecognized option \`$opt'" ;; - *) set dummy "$opt" ${1+"$@"}; shift; break ;; - esac - done - # Validate options: +# libtool_parse_options [ARG]... +# --------------------------------- +# Provide handling for libtool specific options. +libtool_parse_options () +{ + $debug_cmd - # save first non-option argument - if test "$#" -gt 0; then - nonopt="$opt" - shift - fi + # Perform our own loop to consume as many options as possible in + # each iteration. + while test $# -gt 0; do + _G_opt=$1 + shift + case $_G_opt in + --dry-run|--dryrun|-n) + opt_dry_run=: + ;; + + --config) func_config ;; + + --dlopen|-dlopen) + opt_dlopen="${opt_dlopen+$opt_dlopen +}$1" + shift + ;; + + --preserve-dup-deps) + opt_preserve_dup_deps=: ;; + + --features) func_features ;; + + --finish) set dummy --mode finish ${1+"$@"}; shift ;; + + --help) opt_help=: ;; + + --help-all) opt_help=': help-all' ;; + + --mode) test $# = 0 && func_missing_arg $_G_opt && break + opt_mode=$1 + case $1 in + # Valid mode arguments: + clean|compile|execute|finish|install|link|relink|uninstall) ;; + + # Catch anything else as an error + *) func_error "invalid argument for $_G_opt" + exit_cmd=exit + break + ;; + esac + shift + ;; + + --no-silent|--no-quiet) + opt_quiet=false + func_append preserve_args " $_G_opt" + ;; + + --no-warnings|--no-warning|--no-warn) + opt_warning=false + func_append preserve_args " $_G_opt" + ;; + + --no-verbose) + opt_verbose=false + func_append preserve_args " $_G_opt" + ;; + + --silent|--quiet) + opt_quiet=: + opt_verbose=false + func_append preserve_args " $_G_opt" + ;; + + --tag) test $# = 0 && func_missing_arg $_G_opt && break + opt_tag=$1 + func_append preserve_args " $_G_opt $1" + func_enable_tag "$1" + shift + ;; + + --verbose|-v) opt_quiet=false + opt_verbose=: + func_append preserve_args " $_G_opt" + ;; - # preserve --debug - test "$opt_debug" = : || func_append preserve_args " --debug" + # An option not handled by this hook function: + *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; + esac + done - case $host in - *cygwin* | *mingw* | *pw32* | *cegcc*) - # don't eliminate duplications in $postdeps and $predeps - opt_duplicate_compiler_generated_deps=: - ;; - *) - opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps - ;; - esac - $opt_help || { - # Sanity checks first: - func_check_version_match + # save modified positional parameters for caller + func_quote_for_eval ${1+"$@"} + libtool_parse_options_result=$func_quote_for_eval_result +} +func_add_hook func_parse_options libtool_parse_options - if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then - func_fatal_configuration "not configured to build any kind of library" - fi - # Darwin sucks - eval std_shrext=\"$shrext_cmds\" - # Only execute mode is allowed to have -dlopen flags. - if test -n "$opt_dlopen" && test "$opt_mode" != execute; then - func_error "unrecognized option \`-dlopen'" - $ECHO "$help" 1>&2 - exit $EXIT_FAILURE +# libtool_validate_options [ARG]... +# --------------------------------- +# Perform any sanity checks on option settings and/or unconsumed +# arguments. +libtool_validate_options () +{ + # save first non-option argument + if test 0 -lt $#; then + nonopt=$1 + shift fi - # Change the help message to a mode-specific one. - generic_help="$help" - help="Try \`$progname --help --mode=$opt_mode' for more information." - } + # preserve --debug + test : = "$debug_cmd" || func_append preserve_args " --debug" + + case $host in + # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 + # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 + *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*) + # don't eliminate duplications in $postdeps and $predeps + opt_duplicate_compiler_generated_deps=: + ;; + *) + opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps + ;; + esac + $opt_help || { + # Sanity checks first: + func_check_version_match + + test yes != "$build_libtool_libs" \ + && test yes != "$build_old_libs" \ + && func_fatal_configuration "not configured to build any kind of library" + + # Darwin sucks + eval std_shrext=\"$shrext_cmds\" + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$opt_dlopen" && test execute != "$opt_mode"; then + func_error "unrecognized option '-dlopen'" + $ECHO "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help=$help + help="Try '$progname --help --mode=$opt_mode' for more information." + } - # Bail if the options were screwed - $exit_cmd $EXIT_FAILURE + # Pass back the unparsed argument list + func_quote_for_eval ${1+"$@"} + libtool_validate_options_result=$func_quote_for_eval_result } +func_add_hook func_validate_options libtool_validate_options + +# Process options as early as possible so that --help and --version +# can return quickly. +func_options ${1+"$@"} +eval set dummy "$func_options_result"; shift @@ -1233,24 +2476,52 @@ func_enable_tag "$optarg" ## Main. ## ## ----------- ## +magic='%%%MAGIC variable%%%' +magic_exe='%%%MAGIC EXE variable%%%' + +# Global variables. +extracted_archives= +extracted_serial=0 + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + +# func_generated_by_libtool +# True iff stdin has been generated by Libtool. This function is only +# a basic sanity check; it will hardly flush out determined imposters. +func_generated_by_libtool_p () +{ + $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 +} + # func_lalib_p file -# True iff FILE is a libtool `.la' library or `.lo' object file. +# True iff FILE is a libtool '.la' library or '.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () { test -f "$1" && - $SED -e 4q "$1" 2>/dev/null \ - | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 + $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p } # func_lalib_unsafe_p file -# True iff FILE is a libtool `.la' library or `.lo' object file. +# True iff FILE is a libtool '.la' library or '.lo' object file. # This function implements the same check as func_lalib_p without # resorting to external programs. To this end, it redirects stdin and # closes it afterwards, without saving the original file descriptor. # As a safety measure, use it only where a negative result would be -# fatal anyway. Works if `file' does not exist. +# fatal anyway. Works if 'file' does not exist. func_lalib_unsafe_p () { lalib_p=no @@ -1258,13 +2529,13 @@ func_lalib_unsafe_p () for lalib_p_l in 1 2 3 4 do read lalib_p_line - case "$lalib_p_line" in + case $lalib_p_line in \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; esac done exec 0<&5 5<&- fi - test "$lalib_p" = yes + test yes = "$lalib_p" } # func_ltwrapper_script_p file @@ -1273,7 +2544,8 @@ func_lalib_unsafe_p () # determined imposters. func_ltwrapper_script_p () { - func_lalib_p "$1" + test -f "$1" && + $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p } # func_ltwrapper_executable_p file @@ -1298,7 +2570,7 @@ func_ltwrapper_scriptname () { func_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" - func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" + func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper } # func_ltwrapper_p file @@ -1317,11 +2589,13 @@ func_ltwrapper_p () # FAIL_CMD may read-access the current command in variable CMD! func_execute_cmds () { - $opt_debug + $debug_cmd + save_ifs=$IFS; IFS='~' for cmd in $1; do - IFS=$save_ifs + IFS=$sp$nl eval cmd=\"$cmd\" + IFS=$save_ifs func_show_eval "$cmd" "${2-:}" done IFS=$save_ifs @@ -1333,10 +2607,11 @@ func_execute_cmds () # Note that it is not necessary on cygwin/mingw to append a dot to # FILE even if both FILE and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing -# `FILE.' does not work on cygwin managed mounts. +# 'FILE.' does not work on cygwin managed mounts. func_source () { - $opt_debug + $debug_cmd + case $1 in */* | *\\*) . "$1" ;; *) . "./$1" ;; @@ -1363,10 +2638,10 @@ func_resolve_sysroot () # store the result into func_replace_sysroot_result. func_replace_sysroot () { - case "$lt_sysroot:$1" in + case $lt_sysroot:$1 in ?*:"$lt_sysroot"*) func_stripname "$lt_sysroot" '' "$1" - func_replace_sysroot_result="=$func_stripname_result" + func_replace_sysroot_result='='$func_stripname_result ;; *) # Including no sysroot. @@ -1383,7 +2658,8 @@ func_replace_sysroot () # arg is usually of the form 'gcc ...' func_infer_tag () { - $opt_debug + $debug_cmd + if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do @@ -1402,7 +2678,7 @@ func_infer_tag () for z in $available_tags; do if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. - eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. @@ -1427,7 +2703,7 @@ func_infer_tag () # line option must be used. if test -z "$tagname"; then func_echo "unable to infer tagged configuration" - func_fatal_error "specify a tag with \`--tag'" + func_fatal_error "specify a tag with '--tag'" # else # func_verbose "using $tagname tagged configuration" fi @@ -1443,15 +2719,15 @@ func_infer_tag () # but don't create it if we're doing a dry run. func_write_libtool_object () { - write_libobj=${1} - if test "$build_libtool_libs" = yes; then - write_lobj=\'${2}\' + write_libobj=$1 + if test yes = "$build_libtool_libs"; then + write_lobj=\'$2\' else write_lobj=none fi - if test "$build_old_libs" = yes; then - write_oldobj=\'${3}\' + if test yes = "$build_old_libs"; then + write_oldobj=\'$3\' else write_oldobj=none fi @@ -1459,7 +2735,7 @@ func_write_libtool_object () $opt_dry_run || { cat >${write_libobj}T </dev/null` - if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then + if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | - $SED -e "$lt_sed_naive_backslashify"` + $SED -e "$sed_naive_backslashify"` else func_convert_core_file_wine_to_w32_result= fi @@ -1523,18 +2800,19 @@ func_convert_core_file_wine_to_w32 () # are convertible, then the result may be empty. func_convert_core_path_wine_to_w32 () { - $opt_debug + $debug_cmd + # unfortunately, winepath doesn't convert paths, only file names - func_convert_core_path_wine_to_w32_result="" + func_convert_core_path_wine_to_w32_result= if test -n "$1"; then oldIFS=$IFS IFS=: for func_convert_core_path_wine_to_w32_f in $1; do IFS=$oldIFS func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" - if test -n "$func_convert_core_file_wine_to_w32_result" ; then + if test -n "$func_convert_core_file_wine_to_w32_result"; then if test -z "$func_convert_core_path_wine_to_w32_result"; then - func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" + func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result else func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" fi @@ -1563,7 +2841,8 @@ func_convert_core_path_wine_to_w32 () # environment variable; do not put it in $PATH. func_cygpath () { - $opt_debug + $debug_cmd + if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` if test "$?" -ne 0; then @@ -1572,7 +2851,7 @@ func_cygpath () fi else func_cygpath_result= - func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" + func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'" fi } #end: func_cygpath @@ -1583,10 +2862,11 @@ func_cygpath () # result in func_convert_core_msys_to_w32_result. func_convert_core_msys_to_w32 () { - $opt_debug + $debug_cmd + # awkward: cmd appends spaces to result func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | - $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` + $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` } #end: func_convert_core_msys_to_w32 @@ -1597,13 +2877,14 @@ func_convert_core_msys_to_w32 () # func_to_host_file_result to ARG1). func_convert_file_check () { - $opt_debug - if test -z "$2" && test -n "$1" ; then + $debug_cmd + + if test -z "$2" && test -n "$1"; then func_error "Could not determine host file name corresponding to" - func_error " \`$1'" + func_error " '$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: - func_to_host_file_result="$1" + func_to_host_file_result=$1 fi } # end func_convert_file_check @@ -1615,10 +2896,11 @@ func_convert_file_check () # func_to_host_file_result to a simplistic fallback value (see below). func_convert_path_check () { - $opt_debug + $debug_cmd + if test -z "$4" && test -n "$3"; then func_error "Could not determine the host path corresponding to" - func_error " \`$3'" + func_error " '$3'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This is a deliberately simplistic "conversion" and # should not be "improved". See libtool.info. @@ -1627,7 +2909,7 @@ func_convert_path_check () func_to_host_path_result=`echo "$3" | $SED -e "$lt_replace_pathsep_chars"` else - func_to_host_path_result="$3" + func_to_host_path_result=$3 fi fi } @@ -1639,9 +2921,10 @@ func_convert_path_check () # and appending REPL if ORIG matches BACKPAT. func_convert_path_front_back_pathsep () { - $opt_debug + $debug_cmd + case $4 in - $1 ) func_to_host_path_result="$3$func_to_host_path_result" + $1 ) func_to_host_path_result=$3$func_to_host_path_result ;; esac case $4 in @@ -1655,7 +2938,7 @@ func_convert_path_front_back_pathsep () ################################################## # $build to $host FILE NAME CONVERSION FUNCTIONS # ################################################## -# invoked via `$to_host_file_cmd ARG' +# invoked via '$to_host_file_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # Result will be available in $func_to_host_file_result. @@ -1666,7 +2949,8 @@ func_convert_path_front_back_pathsep () # in func_to_host_file_result. func_to_host_file () { - $opt_debug + $debug_cmd + $to_host_file_cmd "$1" } # end func_to_host_file @@ -1678,7 +2962,8 @@ func_to_host_file () # in (the comma separated) LAZY, no conversion takes place. func_to_tool_file () { - $opt_debug + $debug_cmd + case ,$2, in *,"$to_tool_file_cmd",*) func_to_tool_file_result=$1 @@ -1696,7 +2981,7 @@ func_to_tool_file () # Copy ARG to func_to_host_file_result. func_convert_file_noop () { - func_to_host_file_result="$1" + func_to_host_file_result=$1 } # end func_convert_file_noop @@ -1707,11 +2992,12 @@ func_convert_file_noop () # func_to_host_file_result. func_convert_file_msys_to_w32 () { - $opt_debug - func_to_host_file_result="$1" + $debug_cmd + + func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" - func_to_host_file_result="$func_convert_core_msys_to_w32_result" + func_to_host_file_result=$func_convert_core_msys_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } @@ -1723,8 +3009,9 @@ func_convert_file_msys_to_w32 () # func_to_host_file_result. func_convert_file_cygwin_to_w32 () { - $opt_debug - func_to_host_file_result="$1" + $debug_cmd + + func_to_host_file_result=$1 if test -n "$1"; then # because $build is cygwin, we call "the" cygpath in $PATH; no need to use # LT_CYGPATH in this case. @@ -1740,11 +3027,12 @@ func_convert_file_cygwin_to_w32 () # and a working winepath. Returns result in func_to_host_file_result. func_convert_file_nix_to_w32 () { - $opt_debug - func_to_host_file_result="$1" + $debug_cmd + + func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_file_wine_to_w32 "$1" - func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" + func_to_host_file_result=$func_convert_core_file_wine_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } @@ -1756,12 +3044,13 @@ func_convert_file_nix_to_w32 () # Returns result in func_to_host_file_result. func_convert_file_msys_to_cygwin () { - $opt_debug - func_to_host_file_result="$1" + $debug_cmd + + func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_cygpath -u "$func_convert_core_msys_to_w32_result" - func_to_host_file_result="$func_cygpath_result" + func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } @@ -1774,13 +3063,14 @@ func_convert_file_msys_to_cygwin () # in func_to_host_file_result. func_convert_file_nix_to_cygwin () { - $opt_debug - func_to_host_file_result="$1" + $debug_cmd + + func_to_host_file_result=$1 if test -n "$1"; then # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. func_convert_core_file_wine_to_w32 "$1" func_cygpath -u "$func_convert_core_file_wine_to_w32_result" - func_to_host_file_result="$func_cygpath_result" + func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } @@ -1790,7 +3080,7 @@ func_convert_file_nix_to_cygwin () ############################################# # $build to $host PATH CONVERSION FUNCTIONS # ############################################# -# invoked via `$to_host_path_cmd ARG' +# invoked via '$to_host_path_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # The result will be available in $func_to_host_path_result. @@ -1814,10 +3104,11 @@ func_convert_file_nix_to_cygwin () to_host_path_cmd= func_init_to_host_path_cmd () { - $opt_debug + $debug_cmd + if test -z "$to_host_path_cmd"; then func_stripname 'func_convert_file_' '' "$to_host_file_cmd" - to_host_path_cmd="func_convert_path_${func_stripname_result}" + to_host_path_cmd=func_convert_path_$func_stripname_result fi } @@ -1827,7 +3118,8 @@ func_init_to_host_path_cmd () # in func_to_host_path_result. func_to_host_path () { - $opt_debug + $debug_cmd + func_init_to_host_path_cmd $to_host_path_cmd "$1" } @@ -1838,7 +3130,7 @@ func_to_host_path () # Copy ARG to func_to_host_path_result. func_convert_path_noop () { - func_to_host_path_result="$1" + func_to_host_path_result=$1 } # end func_convert_path_noop @@ -1849,8 +3141,9 @@ func_convert_path_noop () # func_to_host_path_result. func_convert_path_msys_to_w32 () { - $opt_debug - func_to_host_path_result="$1" + $debug_cmd + + func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from ARG. MSYS # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; @@ -1858,7 +3151,7 @@ func_convert_path_msys_to_w32 () func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" - func_to_host_path_result="$func_convert_core_msys_to_w32_result" + func_to_host_path_result=$func_convert_core_msys_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" @@ -1872,8 +3165,9 @@ func_convert_path_msys_to_w32 () # func_to_host_file_result. func_convert_path_cygwin_to_w32 () { - $opt_debug - func_to_host_path_result="$1" + $debug_cmd + + func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" @@ -1892,14 +3186,15 @@ func_convert_path_cygwin_to_w32 () # a working winepath. Returns result in func_to_host_file_result. func_convert_path_nix_to_w32 () { - $opt_debug - func_to_host_path_result="$1" + $debug_cmd + + func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" - func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" + func_to_host_path_result=$func_convert_core_path_wine_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" @@ -1913,15 +3208,16 @@ func_convert_path_nix_to_w32 () # Returns result in func_to_host_file_result. func_convert_path_msys_to_cygwin () { - $opt_debug - func_to_host_path_result="$1" + $debug_cmd + + func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_msys_to_w32_result" - func_to_host_path_result="$func_cygpath_result" + func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" @@ -1936,8 +3232,9 @@ func_convert_path_msys_to_cygwin () # func_to_host_file_result. func_convert_path_nix_to_cygwin () { - $opt_debug - func_to_host_path_result="$1" + $debug_cmd + + func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them @@ -1946,7 +3243,7 @@ func_convert_path_nix_to_cygwin () func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" - func_to_host_path_result="$func_cygpath_result" + func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" @@ -1955,13 +3252,31 @@ func_convert_path_nix_to_cygwin () # end func_convert_path_nix_to_cygwin +# func_dll_def_p FILE +# True iff FILE is a Windows DLL '.def' file. +# Keep in sync with _LT_DLL_DEF_P in libtool.m4 +func_dll_def_p () +{ + $debug_cmd + + func_dll_def_p_tmp=`$SED -n \ + -e 's/^[ ]*//' \ + -e '/^\(;.*\)*$/d' \ + -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \ + -e q \ + "$1"` + test DEF = "$func_dll_def_p_tmp" +} + + # func_mode_compile arg... func_mode_compile () { - $opt_debug + $debug_cmd + # Get the compilation command and the source file. base_compile= - srcfile="$nonopt" # always keep a non-empty value in "srcfile" + srcfile=$nonopt # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal @@ -1974,12 +3289,12 @@ func_mode_compile () case $arg_mode in arg ) # do not "continue". Instead, add this to base_compile - lastarg="$arg" + lastarg=$arg arg_mode=normal ;; target ) - libobj="$arg" + libobj=$arg arg_mode=normal continue ;; @@ -1989,7 +3304,7 @@ func_mode_compile () case $arg in -o) test -n "$libobj" && \ - func_fatal_error "you cannot specify \`-o' more than once" + func_fatal_error "you cannot specify '-o' more than once" arg_mode=target continue ;; @@ -2018,12 +3333,12 @@ func_mode_compile () func_stripname '-Wc,' '' "$arg" args=$func_stripname_result lastarg= - save_ifs="$IFS"; IFS=',' + save_ifs=$IFS; IFS=, for arg in $args; do - IFS="$save_ifs" + IFS=$save_ifs func_append_quoted lastarg "$arg" done - IFS="$save_ifs" + IFS=$save_ifs func_stripname ' ' '' "$lastarg" lastarg=$func_stripname_result @@ -2036,8 +3351,8 @@ func_mode_compile () # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # - lastarg="$srcfile" - srcfile="$arg" + lastarg=$srcfile + srcfile=$arg ;; esac # case $arg ;; @@ -2052,13 +3367,13 @@ func_mode_compile () func_fatal_error "you must specify an argument for -Xcompile" ;; target) - func_fatal_error "you must specify a target with \`-o'" + func_fatal_error "you must specify a target with '-o'" ;; *) # Get the name of the library object. test -z "$libobj" && { func_basename "$srcfile" - libobj="$func_basename_result" + libobj=$func_basename_result } ;; esac @@ -2078,7 +3393,7 @@ func_mode_compile () case $libobj in *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; *) - func_fatal_error "cannot determine name of library object from \`$libobj'" + func_fatal_error "cannot determine name of library object from '$libobj'" ;; esac @@ -2087,8 +3402,8 @@ func_mode_compile () for arg in $later; do case $arg in -shared) - test "$build_libtool_libs" != yes && \ - func_fatal_configuration "can not build a shared library" + test yes = "$build_libtool_libs" \ + || func_fatal_configuration "cannot build a shared library" build_old_libs=no continue ;; @@ -2114,17 +3429,17 @@ func_mode_compile () func_quote_for_eval "$libobj" test "X$libobj" != "X$func_quote_for_eval_result" \ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ - && func_warning "libobj name \`$libobj' may not contain shell special characters." + && func_warning "libobj name '$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" - objname="$func_basename_result" - xdir="$func_dirname_result" - lobj=${xdir}$objdir/$objname + objname=$func_basename_result + xdir=$func_dirname_result + lobj=$xdir$objdir/$objname test -z "$base_compile" && \ func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. - if test "$build_old_libs" = yes; then + if test yes = "$build_old_libs"; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" @@ -2136,16 +3451,16 @@ func_mode_compile () pic_mode=default ;; esac - if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then + if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c - if test "$compiler_c_o" = no; then - output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} - lockfile="$output_obj.lock" + if test no = "$compiler_c_o"; then + output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext + lockfile=$output_obj.lock else output_obj= need_locks=no @@ -2154,12 +3469,12 @@ func_mode_compile () # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file - if test "$need_locks" = yes; then + if test yes = "$need_locks"; then until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done - elif test "$need_locks" = warn; then + elif test warn = "$need_locks"; then if test -f "$lockfile"; then $ECHO "\ *** ERROR, $lockfile exists and contains: @@ -2167,7 +3482,7 @@ func_mode_compile () This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you +your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." @@ -2189,11 +3504,11 @@ compiler." qsrcfile=$func_quote_for_eval_result # Only build a PIC object if we are building libtool libraries. - if test "$build_libtool_libs" = yes; then + if test yes = "$build_libtool_libs"; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile - if test "$pic_mode" != no; then + if test no != "$pic_mode"; then command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code @@ -2210,7 +3525,7 @@ compiler." func_show_eval_locale "$command" \ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' - if test "$need_locks" = warn && + if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: @@ -2221,7 +3536,7 @@ $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you +your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." @@ -2237,20 +3552,20 @@ compiler." fi # Allow error messages only from the first compilation. - if test "$suppress_opt" = yes; then + if test yes = "$suppress_opt"; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. - if test "$build_old_libs" = yes; then - if test "$pic_mode" != yes; then + if test yes = "$build_old_libs"; then + if test yes != "$pic_mode"; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi - if test "$compiler_c_o" = yes; then + if test yes = "$compiler_c_o"; then func_append command " -o $obj" fi @@ -2259,7 +3574,7 @@ compiler." func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' - if test "$need_locks" = warn && + if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: @@ -2270,7 +3585,7 @@ $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you +your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." @@ -2290,7 +3605,7 @@ compiler." func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" # Unlock the critical section if it was locked - if test "$need_locks" != no; then + if test no != "$need_locks"; then removelist=$lockfile $RM "$lockfile" fi @@ -2300,7 +3615,7 @@ compiler." } $opt_help || { - test "$opt_mode" = compile && func_mode_compile ${1+"$@"} + test compile = "$opt_mode" && func_mode_compile ${1+"$@"} } func_mode_help () @@ -2320,7 +3635,7 @@ func_mode_help () Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated @@ -2339,16 +3654,16 @@ This mode accepts the following addition -no-suppress do not suppress compiler output for multiple passes -prefer-pic try to build PIC objects only -prefer-non-pic try to build non-PIC objects only - -shared do not build a \`.o' file suitable for static linking - -static only build a \`.o' file suitable for static linking + -shared do not build a '.o' file suitable for static linking + -static only build a '.o' file suitable for static linking -Wc,FLAG pass FLAG directly to the compiler -COMPILE-COMMAND is a command to be used in creating a \`standard' object file +COMPILE-COMMAND is a command to be used in creating a 'standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from -SOURCEFILE, then substituting the C source code suffix \`.c' with the -library object suffix, \`.lo'." +SOURCEFILE, then substituting the C source code suffix '.c' with the +library object suffix, '.lo'." ;; execute) @@ -2361,7 +3676,7 @@ This mode accepts the following addition -dlopen FILE add the directory containing FILE to the library path -This mode sets the library path environment variable according to \`-dlopen' +This mode sets the library path environment variable according to '-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated @@ -2380,7 +3695,7 @@ Complete the installation of libtool lib Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use -the \`--dry-run' option if you just want to see what would be executed." +the '--dry-run' option if you just want to see what would be executed." ;; install) @@ -2390,7 +3705,7 @@ the \`--dry-run' option if you just want Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be -either the \`install' or \`cp' program. +either the 'install' or 'cp' program. The following components of INSTALL-COMMAND are treated specially: @@ -2416,7 +3731,7 @@ The following components of LINK-COMMAND -avoid-version do not add a version suffix if possible -bindir BINDIR specify path to binaries directory (for systems where libraries must be found in the PATH setting at runtime) - -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime + -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE @@ -2430,7 +3745,8 @@ The following components of LINK-COMMAND -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects - -objectlist FILE Use a list of object files found in FILE to specify objects + -objectlist FILE use a list of object files found in FILE to specify objects + -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes) -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information @@ -2450,20 +3766,20 @@ The following components of LINK-COMMAND -Xlinker FLAG pass linker-specific FLAG directly to the linker -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) -All other options (arguments beginning with \`-') are ignored. +All other options (arguments beginning with '-') are ignored. -Every other argument is treated as a filename. Files ending in \`.la' are +Every other argument is treated as a filename. Files ending in '.la' are treated as uninstalled libtool libraries, other files are standard or library object files. -If the OUTPUT-FILE ends in \`.la', then a libtool library is created, -only library objects (\`.lo' files) may be specified, and \`-rpath' is +If the OUTPUT-FILE ends in '.la', then a libtool library is created, +only library objects ('.lo' files) may be specified, and '-rpath' is required, except when creating a convenience library. -If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created -using \`ar' and \`ranlib', or on Windows using \`lib'. +If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created +using 'ar' and 'ranlib', or on Windows using 'lib'. -If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file +If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file is created, otherwise an executable program is created." ;; @@ -2474,7 +3790,7 @@ is created, otherwise an executable prog Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. @@ -2482,17 +3798,17 @@ Otherwise, only FILE itself is deleted u ;; *) - func_fatal_help "invalid operation mode \`$opt_mode'" + func_fatal_help "invalid operation mode '$opt_mode'" ;; esac echo - $ECHO "Try \`$progname --help' for more information about other modes." + $ECHO "Try '$progname --help' for more information about other modes." } # Now that we've collected a possible --mode arg, show help if necessary if $opt_help; then - if test "$opt_help" = :; then + if test : = "$opt_help"; then func_mode_help else { @@ -2500,7 +3816,7 @@ if $opt_help; then for opt_mode in compile link execute install finish uninstall clean; do func_mode_help done - } | sed -n '1p; 2,$s/^Usage:/ or: /p' + } | $SED -n '1p; 2,$s/^Usage:/ or: /p' { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do @@ -2508,7 +3824,7 @@ if $opt_help; then func_mode_help done } | - sed '1d + $SED '1d /^When reporting/,/^Report/{ H d @@ -2525,16 +3841,17 @@ fi # func_mode_execute arg... func_mode_execute () { - $opt_debug + $debug_cmd + # The first argument is the command name. - cmd="$nonopt" + cmd=$nonopt test -z "$cmd" && \ func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. for file in $opt_dlopen; do test -f "$file" \ - || func_fatal_help "\`$file' is not a file" + || func_fatal_help "'$file' is not a file" dir= case $file in @@ -2544,7 +3861,7 @@ func_mode_execute () # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ - || func_fatal_help "\`$lib' is not a valid libtool archive" + || func_fatal_help "'$lib' is not a valid libtool archive" # Read the libtool library. dlname= @@ -2555,18 +3872,18 @@ func_mode_execute () if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && \ - func_warning "\`$file' was not linked with \`-export-dynamic'" + func_warning "'$file' was not linked with '-export-dynamic'" continue fi func_dirname "$file" "" "." - dir="$func_dirname_result" + dir=$func_dirname_result if test -f "$dir/$objdir/$dlname"; then func_append dir "/$objdir" else if test ! -f "$dir/$dlname"; then - func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" + func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'" fi fi ;; @@ -2574,18 +3891,18 @@ func_mode_execute () *.lo) # Just add the directory containing the .lo file. func_dirname "$file" "" "." - dir="$func_dirname_result" + dir=$func_dirname_result ;; *) - func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" + func_warning "'-dlopen' is ignored for non-libtool libraries and objects" continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` - test -n "$absdir" && dir="$absdir" + test -n "$absdir" && dir=$absdir # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then @@ -2597,7 +3914,7 @@ func_mode_execute () # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. - libtool_execute_magic="$magic" + libtool_execute_magic=$magic # Check if any of the arguments is a wrapper script. args= @@ -2610,12 +3927,12 @@ func_mode_execute () if func_ltwrapper_script_p "$file"; then func_source "$file" # Transform arg to wrapped name. - file="$progdir/$program" + file=$progdir/$program elif func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" func_source "$func_ltwrapper_scriptname_result" # Transform arg to wrapped name. - file="$progdir/$program" + file=$progdir/$program fi ;; esac @@ -2623,7 +3940,15 @@ func_mode_execute () func_append_quoted args "$file" done - if test "X$opt_dry_run" = Xfalse; then + if $opt_dry_run; then + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" + echo "export $shlibpath_var" + fi + $ECHO "$cmd$args" + exit $EXIT_SUCCESS + else if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" @@ -2640,25 +3965,18 @@ func_mode_execute () done # Now prepare to actually exec the command. - exec_cmd="\$cmd$args" - else - # Display what would be done. - if test -n "$shlibpath_var"; then - eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" - echo "export $shlibpath_var" - fi - $ECHO "$cmd$args" - exit $EXIT_SUCCESS + exec_cmd=\$cmd$args fi } -test "$opt_mode" = execute && func_mode_execute ${1+"$@"} +test execute = "$opt_mode" && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { - $opt_debug + $debug_cmd + libs= libdirs= admincmds= @@ -2672,11 +3990,11 @@ func_mode_finish () if func_lalib_unsafe_p "$opt"; then func_append libs " $opt" else - func_warning "\`$opt' is not a valid libtool archive" + func_warning "'$opt' is not a valid libtool archive" fi else - func_fatal_error "invalid argument \`$opt'" + func_fatal_error "invalid argument '$opt'" fi done @@ -2691,12 +4009,12 @@ func_mode_finish () # Remove sysroot references if $opt_dry_run; then for lib in $libs; do - echo "removing references to $lt_sysroot and \`=' prefixes from $lib" + echo "removing references to $lt_sysroot and '=' prefixes from $lib" done else tmpdir=`func_mktempdir` for lib in $libs; do - sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ + $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ > $tmpdir/tmp-la mv -f $tmpdir/tmp-la $lib done @@ -2721,7 +4039,7 @@ func_mode_finish () fi # Exit here if they wanted silent mode. - $opt_silent && exit $EXIT_SUCCESS + $opt_quiet && exit $EXIT_SUCCESS if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then echo "----------------------------------------------------------------------" @@ -2732,27 +4050,27 @@ func_mode_finish () echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" - echo "specify the full pathname of the library, or use the \`-LLIBDIR'" + echo "specify the full pathname of the library, or use the '-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then - echo " - add LIBDIR to the \`$shlibpath_var' environment variable" + echo " - add LIBDIR to the '$shlibpath_var' environment variable" echo " during execution" fi if test -n "$runpath_var"; then - echo " - add LIBDIR to the \`$runpath_var' environment variable" + echo " - add LIBDIR to the '$runpath_var' environment variable" echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" - $ECHO " - use the \`$flag' linker flag" + $ECHO " - use the '$flag' linker flag" fi if test -n "$admincmds"; then $ECHO " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then - echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'" fi echo @@ -2771,18 +4089,20 @@ func_mode_finish () exit $EXIT_SUCCESS } -test "$opt_mode" = finish && func_mode_finish ${1+"$@"} +test finish = "$opt_mode" && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { - $opt_debug + $debug_cmd + # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). - if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || + if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" || # Allow the use of GNU shtool's install command. - case $nonopt in *shtool*) :;; *) false;; esac; then + case $nonopt in *shtool*) :;; *) false;; esac + then # Aesthetically quote it. func_quote_for_eval "$nonopt" install_prog="$func_quote_for_eval_result " @@ -2809,7 +4129,7 @@ func_mode_install () opts= prev= install_type= - isdir=no + isdir=false stripme= no_mode=: for arg @@ -2822,7 +4142,7 @@ func_mode_install () fi case $arg in - -d) isdir=yes ;; + -d) isdir=: ;; -f) if $install_cp; then :; else prev=$arg @@ -2841,7 +4161,7 @@ func_mode_install () *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then - if test "x$prev" = x-m && test -n "$install_override_mode"; then + if test X-m = "X$prev" && test -n "$install_override_mode"; then arg2=$install_override_mode no_mode=false fi @@ -2866,7 +4186,7 @@ func_mode_install () func_fatal_help "you must specify an install program" test -n "$prev" && \ - func_fatal_help "the \`$prev' option requires an argument" + func_fatal_help "the '$prev' option requires an argument" if test -n "$install_override_mode" && $no_mode; then if $install_cp; then :; else @@ -2888,19 +4208,19 @@ func_mode_install () dest=$func_stripname_result # Check to see that the destination is a directory. - test -d "$dest" && isdir=yes - if test "$isdir" = yes; then - destdir="$dest" + test -d "$dest" && isdir=: + if $isdir; then + destdir=$dest destname= else func_dirname_and_basename "$dest" "" "." - destdir="$func_dirname_result" - destname="$func_basename_result" + destdir=$func_dirname_result + destname=$func_basename_result # Not a directory, so check to see that there is only one file specified. set dummy $files; shift test "$#" -gt 1 && \ - func_fatal_help "\`$dest' is not a directory" + func_fatal_help "'$dest' is not a directory" fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; @@ -2909,7 +4229,7 @@ func_mode_install () case $file in *.lo) ;; *) - func_fatal_help "\`$destdir' must be an absolute directory name" + func_fatal_help "'$destdir' must be an absolute directory name" ;; esac done @@ -2918,7 +4238,7 @@ func_mode_install () # This variable tells wrapper scripts just to set variables rather # than running their programs. - libtool_install_magic="$magic" + libtool_install_magic=$magic staticlibs= future_libdirs= @@ -2938,7 +4258,7 @@ func_mode_install () # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ - || func_fatal_help "\`$file' is not a valid libtool archive" + || func_fatal_help "'$file' is not a valid libtool archive" library_names= old_library= @@ -2960,7 +4280,7 @@ func_mode_install () fi func_dirname "$file" "/" "" - dir="$func_dirname_result" + dir=$func_dirname_result func_append dir "$objdir" if test -n "$relink_command"; then @@ -2974,7 +4294,7 @@ func_mode_install () # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. test "$inst_prefix_dir" = "$destdir" && \ - func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" + func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. @@ -2983,29 +4303,36 @@ func_mode_install () relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi - func_warning "relinking \`$file'" + func_warning "relinking '$file'" func_show_eval "$relink_command" \ - 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' + 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"' fi # See the names of the shared library. set dummy $library_names; shift if test -n "$1"; then - realname="$1" + realname=$1 shift - srcname="$realname" - test -n "$relink_command" && srcname="$realname"T + srcname=$realname + test -n "$relink_command" && srcname=${realname}T # Install the shared library and build the symlinks. func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 'exit $?' - tstripme="$stripme" + tstripme=$stripme case $host_os in cygwin* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) - tstripme="" + tstripme= + ;; + esac + ;; + os2*) + case $realname in + *_dll.a) + tstripme= ;; esac ;; @@ -3016,7 +4343,7 @@ func_mode_install () if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. - # Try `ln -sf' first, because the `ln' binary might depend on + # Try 'ln -sf' first, because the 'ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname @@ -3027,14 +4354,14 @@ func_mode_install () fi # Do each command in the postinstall commands. - lib="$destdir/$realname" + lib=$destdir/$realname func_execute_cmds "$postinstall_cmds" 'exit $?' fi # Install the pseudo-library for information purposes. func_basename "$file" - name="$func_basename_result" - instname="$dir/$name"i + name=$func_basename_result + instname=$dir/${name}i func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. @@ -3046,11 +4373,11 @@ func_mode_install () # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then - destfile="$destdir/$destname" + destfile=$destdir/$destname else func_basename "$file" - destfile="$func_basename_result" - destfile="$destdir/$destfile" + destfile=$func_basename_result + destfile=$destdir/$destfile fi # Deduce the name of the destination old-style object file. @@ -3060,11 +4387,11 @@ func_mode_install () staticdest=$func_lo2o_result ;; *.$objext) - staticdest="$destfile" + staticdest=$destfile destfile= ;; *) - func_fatal_help "cannot copy a libtool object to \`$destfile'" + func_fatal_help "cannot copy a libtool object to '$destfile'" ;; esac @@ -3073,7 +4400,7 @@ func_mode_install () func_show_eval "$install_prog $file $destfile" 'exit $?' # Install the old object if enabled. - if test "$build_old_libs" = yes; then + if test yes = "$build_old_libs"; then # Deduce the name of the old-style object file. func_lo2o "$file" staticobj=$func_lo2o_result @@ -3085,23 +4412,23 @@ func_mode_install () *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then - destfile="$destdir/$destname" + destfile=$destdir/$destname else func_basename "$file" - destfile="$func_basename_result" - destfile="$destdir/$destfile" + destfile=$func_basename_result + destfile=$destdir/$destfile fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install - stripped_ext="" + stripped_ext= case $file in *.exe) if test ! -f "$file"; then func_stripname '' '.exe' "$file" file=$func_stripname_result - stripped_ext=".exe" + stripped_ext=.exe fi ;; esac @@ -3129,19 +4456,19 @@ func_mode_install () # Check the variables that should have been set. test -z "$generated_by_libtool_version" && \ - func_fatal_error "invalid libtool wrapper script \`$wrapper'" + func_fatal_error "invalid libtool wrapper script '$wrapper'" - finalize=yes + finalize=: for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then func_source "$lib" fi - libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test + libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'` if test -n "$libdir" && test ! -f "$libfile"; then - func_warning "\`$lib' has not been installed in \`$libdir'" - finalize=no + func_warning "'$lib' has not been installed in '$libdir'" + finalize=false fi done @@ -3149,29 +4476,29 @@ func_mode_install () func_source "$wrapper" outputname= - if test "$fast_install" = no && test -n "$relink_command"; then + if test no = "$fast_install" && test -n "$relink_command"; then $opt_dry_run || { - if test "$finalize" = yes; then + if $finalize; then tmpdir=`func_mktempdir` func_basename "$file$stripped_ext" - file="$func_basename_result" - outputname="$tmpdir/$file" + file=$func_basename_result + outputname=$tmpdir/$file # Replace the output file specification. relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` - $opt_silent || { + $opt_quiet || { func_quote_for_expand "$relink_command" eval "func_echo $func_quote_for_expand_result" } if eval "$relink_command"; then : else - func_error "error: relink \`$file' with the above command before installing it" + func_error "error: relink '$file' with the above command before installing it" $opt_dry_run || ${RM}r "$tmpdir" continue fi - file="$outputname" + file=$outputname else - func_warning "cannot relink \`$file'" + func_warning "cannot relink '$file'" fi } else @@ -3208,10 +4535,10 @@ func_mode_install () for file in $staticlibs; do func_basename "$file" - name="$func_basename_result" + name=$func_basename_result # Set up the ranlib parameters. - oldlib="$destdir/$name" + oldlib=$destdir/$name func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result @@ -3226,18 +4553,18 @@ func_mode_install () done test -n "$future_libdirs" && \ - func_warning "remember to run \`$progname --finish$future_libdirs'" + func_warning "remember to run '$progname --finish$future_libdirs'" if test -n "$current_libdirs"; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" - exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' + exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi } -test "$opt_mode" = install && func_mode_install ${1+"$@"} +test install = "$opt_mode" && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p @@ -3245,16 +4572,17 @@ test "$opt_mode" = install && func_mode_ # a dlpreopen symbol table. func_generate_dlsyms () { - $opt_debug - my_outputname="$1" - my_originator="$2" - my_pic_p="${3-no}" - my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` + $debug_cmd + + my_outputname=$1 + my_originator=$2 + my_pic_p=${3-false} + my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then if test -n "$NM" && test -n "$global_symbol_pipe"; then - my_dlsyms="${my_outputname}S.c" + my_dlsyms=${my_outputname}S.c else func_error "not configured to extract global symbols from dlpreopened files" fi @@ -3265,7 +4593,7 @@ func_generate_dlsyms () "") ;; *.c) # Discover the nlist of each of the dlfiles. - nlist="$output_objdir/${my_outputname}.nm" + nlist=$output_objdir/$my_outputname.nm func_show_eval "$RM $nlist ${nlist}S ${nlist}T" @@ -3273,34 +4601,36 @@ func_generate_dlsyms () func_verbose "creating $output_objdir/$my_dlsyms" $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ -/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ -/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ +/* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */ +/* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */ #ifdef __cplusplus extern \"C\" { #endif -#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) +#if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) #pragma GCC diagnostic ignored \"-Wstrict-prototypes\" #endif /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -/* DATA imports from DLLs on WIN32 con't be const, because runtime +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST -#elif defined(__osf__) +#elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif +#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) + /* External symbol declarations for the compiler. */\ " - if test "$dlself" = yes; then - func_verbose "generating symbol list for \`$output'" + if test yes = "$dlself"; then + func_verbose "generating symbol list for '$output'" $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" @@ -3308,7 +4638,7 @@ extern \"C\" { progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` for progfile in $progfiles; do func_to_tool_file "$progfile" func_convert_file_msys_to_w32 - func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" + func_verbose "extracting global C symbols from '$func_to_tool_file_result'" $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" done @@ -3328,10 +4658,10 @@ extern \"C\" { # Prepare the list of exported symbols if test -z "$export_symbols"; then - export_symbols="$output_objdir/$outputname.exp" + export_symbols=$output_objdir/$outputname.exp $opt_dry_run || { $RM $export_symbols - eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' @@ -3341,7 +4671,7 @@ extern \"C\" { } else $opt_dry_run || { - eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in @@ -3355,22 +4685,22 @@ extern \"C\" { fi for dlprefile in $dlprefiles; do - func_verbose "extracting global C symbols from \`$dlprefile'" + func_verbose "extracting global C symbols from '$dlprefile'" func_basename "$dlprefile" - name="$func_basename_result" + name=$func_basename_result case $host in *cygwin* | *mingw* | *cegcc* ) # if an import library, we need to obtain dlname if func_win32_import_lib_p "$dlprefile"; then func_tr_sh "$dlprefile" eval "curr_lafile=\$libfile_$func_tr_sh_result" - dlprefile_dlbasename="" + dlprefile_dlbasename= if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then # Use subshell, to avoid clobbering current variable values dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` - if test -n "$dlprefile_dlname" ; then + if test -n "$dlprefile_dlname"; then func_basename "$dlprefile_dlname" - dlprefile_dlbasename="$func_basename_result" + dlprefile_dlbasename=$func_basename_result else # no lafile. user explicitly requested -dlpreopen . $sharedlib_from_linklib_cmd "$dlprefile" @@ -3378,7 +4708,7 @@ extern \"C\" { fi fi $opt_dry_run || { - if test -n "$dlprefile_dlbasename" ; then + if test -n "$dlprefile_dlbasename"; then eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' else func_warning "Could not compute DLL name from $name" @@ -3434,6 +4764,11 @@ extern \"C\" { echo '/* NONE */' >> "$output_objdir/$my_dlsyms" fi + func_show_eval '$RM "${nlist}I"' + if test -n "$global_symbol_to_import"; then + eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I' + fi + echo >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ @@ -3442,11 +4777,30 @@ typedef struct { void *address; } lt_dlsymlist; extern LT_DLSYM_CONST lt_dlsymlist -lt_${my_prefix}_LTX_preloaded_symbols[]; +lt_${my_prefix}_LTX_preloaded_symbols[];\ +" + + if test -s "$nlist"I; then + echo >> "$output_objdir/$my_dlsyms" "\ +static void lt_syminit(void) +{ + LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols; + for (; symbol->name; ++symbol) + {" + $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms" + echo >> "$output_objdir/$my_dlsyms" "\ + } +}" + fi + echo >> "$output_objdir/$my_dlsyms" "\ LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = -{\ - { \"$my_originator\", (void *) 0 }," +{ {\"$my_originator\", (void *) 0}," + + if test -s "$nlist"I; then + echo >> "$output_objdir/$my_dlsyms" "\ + {\"@INIT@\", (void *) <_syminit}," + fi case $need_lib_prefix in no) @@ -3488,9 +4842,7 @@ static const void *lt_preloaded_setup() *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; *) - if test "X$my_pic_p" != Xno; then - pic_flag_for_symtable=" $pic_flag" - fi + $my_pic_p && pic_flag_for_symtable=" $pic_flag" ;; esac ;; @@ -3507,10 +4859,10 @@ static const void *lt_preloaded_setup() func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' # Clean up the generated files. - func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' + func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"' # Transform the symbol file into the correct name. - symfileobj="$output_objdir/${my_outputname}S.$objext" + symfileobj=$output_objdir/${my_outputname}S.$objext case $host in *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then @@ -3528,7 +4880,7 @@ static const void *lt_preloaded_setup() esac ;; *) - func_fatal_error "unknown suffix for \`$my_dlsyms'" + func_fatal_error "unknown suffix for '$my_dlsyms'" ;; esac else @@ -3542,6 +4894,32 @@ static const void *lt_preloaded_setup() fi } +# func_cygming_gnu_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is a GNU/binutils-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_gnu_implib_p () +{ + $debug_cmd + + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` + test -n "$func_cygming_gnu_implib_tmp" +} + +# func_cygming_ms_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is an MS-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_ms_implib_p () +{ + $debug_cmd + + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` + test -n "$func_cygming_ms_implib_tmp" +} + # func_win32_libid arg # return the library type of file 'arg' # @@ -3551,8 +4929,9 @@ static const void *lt_preloaded_setup() # Despite the name, also deal with 64 bit binaries. func_win32_libid () { - $opt_debug - win32_libid_type="unknown" + $debug_cmd + + win32_libid_type=unknown win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import @@ -3562,16 +4941,29 @@ func_win32_libid () # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then - func_to_tool_file "$1" func_convert_file_msys_to_w32 - win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | - $SED -n -e ' + case $nm_interface in + "MS dumpbin") + if func_cygming_ms_implib_p "$1" || + func_cygming_gnu_implib_p "$1" + then + win32_nmres=import + else + win32_nmres= + fi + ;; + *) + func_to_tool_file "$1" func_convert_file_msys_to_w32 + win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | + $SED -n -e ' 1,100{ / I /{ - s,.*,import, + s|.*|import| p q } }'` + ;; + esac case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; @@ -3603,7 +4995,8 @@ func_win32_libid () # $sharedlib_from_linklib_result func_cygming_dll_for_implib () { - $opt_debug + $debug_cmd + sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` } @@ -3620,7 +5013,8 @@ func_cygming_dll_for_implib () # specified import library. func_cygming_dll_for_implib_fallback_core () { - $opt_debug + $debug_cmd + match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` $OBJDUMP -s --section "$1" "$2" 2>/dev/null | $SED '/^Contents of section '"$match_literal"':/{ @@ -3656,8 +5050,8 @@ func_cygming_dll_for_implib_fallback_cor /./p' | # we now have a list, one entry per line, of the stringified # contents of the appropriate section of all members of the - # archive which possess that section. Heuristic: eliminate - # all those which have a first or second character that is + # archive that possess that section. Heuristic: eliminate + # all those that have a first or second character that is # a '.' (that is, objdump's representation of an unprintable # character.) This should work for all archives with less than # 0x302f exports -- but will fail for DLLs whose name actually @@ -3668,30 +5062,6 @@ func_cygming_dll_for_implib_fallback_cor $SED -e '/^\./d;/^.\./d;q' } -# func_cygming_gnu_implib_p ARG -# This predicate returns with zero status (TRUE) if -# ARG is a GNU/binutils-style import library. Returns -# with nonzero status (FALSE) otherwise. -func_cygming_gnu_implib_p () -{ - $opt_debug - func_to_tool_file "$1" func_convert_file_msys_to_w32 - func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` - test -n "$func_cygming_gnu_implib_tmp" -} - -# func_cygming_ms_implib_p ARG -# This predicate returns with zero status (TRUE) if -# ARG is an MS-style import library. Returns -# with nonzero status (FALSE) otherwise. -func_cygming_ms_implib_p () -{ - $opt_debug - func_to_tool_file "$1" func_convert_file_msys_to_w32 - func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` - test -n "$func_cygming_ms_implib_tmp" -} - # func_cygming_dll_for_implib_fallback ARG # Platform-specific function to extract the # name of the DLL associated with the specified @@ -3705,16 +5075,17 @@ func_cygming_ms_implib_p () # $sharedlib_from_linklib_result func_cygming_dll_for_implib_fallback () { - $opt_debug - if func_cygming_gnu_implib_p "$1" ; then + $debug_cmd + + if func_cygming_gnu_implib_p "$1"; then # binutils import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` - elif func_cygming_ms_implib_p "$1" ; then + elif func_cygming_ms_implib_p "$1"; then # ms-generated import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` else # unknown - sharedlib_from_linklib_result="" + sharedlib_from_linklib_result= fi } @@ -3722,10 +5093,11 @@ func_cygming_dll_for_implib_fallback () # func_extract_an_archive dir oldlib func_extract_an_archive () { - $opt_debug - f_ex_an_ar_dir="$1"; shift - f_ex_an_ar_oldlib="$1" - if test "$lock_old_archive_extraction" = yes; then + $debug_cmd + + f_ex_an_ar_dir=$1; shift + f_ex_an_ar_oldlib=$1 + if test yes = "$lock_old_archive_extraction"; then lockfile=$f_ex_an_ar_oldlib.lock until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" @@ -3734,7 +5106,7 @@ func_extract_an_archive () fi func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 'stat=$?; rm -f "$lockfile"; exit $stat' - if test "$lock_old_archive_extraction" = yes; then + if test yes = "$lock_old_archive_extraction"; then $opt_dry_run || rm -f "$lockfile" fi if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then @@ -3748,22 +5120,23 @@ func_extract_an_archive () # func_extract_archives gentop oldlib ... func_extract_archives () { - $opt_debug - my_gentop="$1"; shift + $debug_cmd + + my_gentop=$1; shift my_oldlibs=${1+"$@"} - my_oldobjs="" - my_xlib="" - my_xabs="" - my_xdir="" + my_oldobjs= + my_xlib= + my_xabs= + my_xdir= for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in - [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; + [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac func_basename "$my_xlib" - my_xlib="$func_basename_result" + my_xlib=$func_basename_result my_xlib_u=$my_xlib while :; do case " $extracted_archives " in @@ -3775,7 +5148,7 @@ func_extract_archives () esac done extracted_archives="$extracted_archives $my_xlib_u" - my_xdir="$my_gentop/$my_xlib_u" + my_xdir=$my_gentop/$my_xlib_u func_mkdir_p "$my_xdir" @@ -3788,22 +5161,23 @@ func_extract_archives () cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` - darwin_base_archive=`basename "$darwin_archive"` + func_basename "$darwin_archive" + darwin_base_archive=$func_basename_result darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` if test -n "$darwin_arches"; then darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" - for darwin_arch in $darwin_arches ; do - func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" - $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" - cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" - func_extract_an_archive "`pwd`" "${darwin_base_archive}" + for darwin_arch in $darwin_arches; do + func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch" + $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive" + cd "unfat-$$/$darwin_base_archive-$darwin_arch" + func_extract_an_archive "`pwd`" "$darwin_base_archive" cd "$darwin_curdir" - $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" + $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" done # $darwin_arches ## Okay now we've a bunch of thin objects, gotta fatten them up :) - darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do @@ -3825,7 +5199,7 @@ func_extract_archives () my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` done - func_extract_archives_result="$my_oldobjs" + func_extract_archives_result=$my_oldobjs } @@ -3840,7 +5214,7 @@ func_extract_archives () # # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script -# will assume that the directory in which it is stored is +# will assume that the directory where it is stored is # the $objdir directory. This is a cygwin/mingw-specific # behavior. func_emit_wrapper () @@ -3851,7 +5225,7 @@ func_emit_wrapper () #! $SHELL # $output - temporary wrapper script for $objdir/$outputname -# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION +# Generated by $PROGRAM (GNU $PACKAGE) $VERSION # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. @@ -3908,9 +5282,9 @@ _LTECHO_EOF' # Very basic option parsing. These options are (a) specific to # the libtool wrapper, (b) are identical between the wrapper -# /script/ and the wrapper /executable/ which is used only on +# /script/ and the wrapper /executable/ that is used only on # windows platforms, and (c) all begin with the string "--lt-" -# (application programs are unlikely to have options which match +# (application programs are unlikely to have options that match # this pattern). # # There are only two supported options: --lt-debug and @@ -3943,7 +5317,7 @@ func_parse_lt_options () # Print the debug banner immediately: if test -n \"\$lt_option_debug\"; then - echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 + echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2 fi } @@ -3954,7 +5328,7 @@ func_lt_dump_args () lt_dump_args_N=1; for lt_arg do - \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" + \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\" lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` done } @@ -3968,7 +5342,7 @@ func_exec_program_core () *-*-mingw | *-*-os2* | *-cegcc*) $ECHO "\ if test -n \"\$lt_option_debug\"; then - \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 + \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} @@ -3978,7 +5352,7 @@ func_exec_program_core () *) $ECHO "\ if test -n \"\$lt_option_debug\"; then - \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 + \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir/\$program\" \${1+\"\$@\"} @@ -4053,13 +5427,13 @@ func_exec_program () test -n \"\$absdir\" && thisdir=\"\$absdir\" " - if test "$fast_install" = yes; then + if test yes = "$fast_install"; then $ECHO "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || - { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" @@ -4076,7 +5450,7 @@ func_exec_program () if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else - $ECHO \"\$relink_command_output\" >&2 + \$ECHO \"\$relink_command_output\" >&2 $RM \"\$progdir/\$file\" exit 1 fi @@ -4111,7 +5485,7 @@ func_exec_program () fi # Export our shlibpath_var if we have one. - if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" @@ -4131,7 +5505,7 @@ func_exec_program () fi else # The program doesn't exist. - \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 + \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 @@ -4150,7 +5524,7 @@ func_emit_cwrapperexe_src () cat < #include +#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) + /* declarations of non-ANSI functions */ -#if defined(__MINGW32__) +#if defined __MINGW32__ # ifdef __STRICT_ANSI__ int _putenv (const char *); # endif -#elif defined(__CYGWIN__) +#elif defined __CYGWIN__ # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif -/* #elif defined (other platforms) ... */ +/* #elif defined other_platform || defined ... */ #endif /* portability defines, excluding path handling macros */ -#if defined(_MSC_VER) +#if defined _MSC_VER # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv # define S_IXUSR _S_IEXEC -# ifndef _INTPTR_T_DEFINED -# define _INTPTR_T_DEFINED -# define intptr_t int -# endif -#elif defined(__MINGW32__) +#elif defined __MINGW32__ # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv -#elif defined(__CYGWIN__) +#elif defined __CYGWIN__ # define HAVE_SETENV # define FOPEN_WB "wb" -/* #elif defined (other platforms) ... */ +/* #elif defined other platforms ... */ #endif -#if defined(PATH_MAX) +#if defined PATH_MAX # define LT_PATHMAX PATH_MAX -#elif defined(MAXPATHLEN) +#elif defined MAXPATHLEN # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 @@ -4244,8 +5616,8 @@ int setenv (const char *, const char *, # define PATH_SEPARATOR ':' #endif -#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ - defined (__OS2__) +#if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ + defined __OS2__ # define HAVE_DOS_BASED_FILE_SYSTEM # define FOPEN_WB "wb" # ifndef DIR_SEPARATOR_2 @@ -4278,10 +5650,10 @@ int setenv (const char *, const char *, #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ - if (stale) { free ((void *) stale); stale = 0; } \ + if (stale) { free (stale); stale = 0; } \ } while (0) -#if defined(LT_DEBUGWRAPPER) +#if defined LT_DEBUGWRAPPER static int lt_debug = 1; #else static int lt_debug = 0; @@ -4310,11 +5682,16 @@ void lt_dump_script (FILE *f); EOF cat < 0) && IS_PATH_SEPARATOR (new_value[len-1])) + size_t len = strlen (new_value); + while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { - new_value[len-1] = '\0'; + new_value[--len] = '\0'; } lt_setenv (name, new_value); XFREE (new_value); @@ -5092,27 +6469,47 @@ EOF # True if ARG is an import lib, as indicated by $file_magic_cmd func_win32_import_lib_p () { - $opt_debug + $debug_cmd + case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in *import*) : ;; *) false ;; esac } +# func_suncc_cstd_abi +# !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!! +# Several compiler flags select an ABI that is incompatible with the +# Cstd library. Avoid specifying it if any are in CXXFLAGS. +func_suncc_cstd_abi () +{ + $debug_cmd + + case " $compile_command " in + *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*) + suncc_use_cstd_abi=no + ;; + *) + suncc_use_cstd_abi=yes + ;; + esac +} + # func_mode_link arg... func_mode_link () { - $opt_debug + $debug_cmd + case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out - # which system we are compiling for in order to pass an extra + # what system we are compiling for in order to pass an extra # flag for every libtool invocation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying - # to make a dll which has undefined symbols, in which case not + # to make a dll that has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. @@ -5156,10 +6553,11 @@ func_mode_link () module=no no_install=no objs= + os2dllname= non_pic_objects= precious_files_regex= prefer_static_libs=no - preload=no + preload=false prev= prevarg= release= @@ -5171,7 +6569,7 @@ func_mode_link () vinfo= vinfo_number=no weak_libs= - single_module="${wl}-single_module" + single_module=$wl-single_module func_infer_tag $base_compile # We need to know -static, to get the right output filenames. @@ -5179,15 +6577,15 @@ func_mode_link () do case $arg in -shared) - test "$build_libtool_libs" != yes && \ - func_fatal_configuration "can not build a shared library" + test yes != "$build_libtool_libs" \ + && func_fatal_configuration "cannot build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) - if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then + if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then func_warning "complete static linking is impossible in this configuration" fi if test -n "$link_static_flag"; then @@ -5220,7 +6618,7 @@ func_mode_link () # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do - arg="$1" + arg=$1 shift func_quote_for_eval "$arg" qarg=$func_quote_for_eval_unquoted_result @@ -5237,21 +6635,21 @@ func_mode_link () case $prev in bindir) - bindir="$arg" + bindir=$arg prev= continue ;; dlfiles|dlprefiles) - if test "$preload" = no; then + $preload || { # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" - preload=yes - fi + preload=: + } case $arg in *.la | *.lo) ;; # We handle these cases below. force) - if test "$dlself" = no; then + if test no = "$dlself"; then dlself=needless export_dynamic=yes fi @@ -5259,9 +6657,9 @@ func_mode_link () continue ;; self) - if test "$prev" = dlprefiles; then + if test dlprefiles = "$prev"; then dlself=yes - elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then + elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then dlself=yes else dlself=needless @@ -5271,7 +6669,7 @@ func_mode_link () continue ;; *) - if test "$prev" = dlfiles; then + if test dlfiles = "$prev"; then func_append dlfiles " $arg" else func_append dlprefiles " $arg" @@ -5282,14 +6680,14 @@ func_mode_link () esac ;; expsyms) - export_symbols="$arg" + export_symbols=$arg test -f "$arg" \ - || func_fatal_error "symbol file \`$arg' does not exist" + || func_fatal_error "symbol file '$arg' does not exist" prev= continue ;; expsyms_regex) - export_symbols_regex="$arg" + export_symbols_regex=$arg prev= continue ;; @@ -5307,7 +6705,13 @@ func_mode_link () continue ;; inst_prefix) - inst_prefix_dir="$arg" + inst_prefix_dir=$arg + prev= + continue + ;; + mllvm) + # Clang does not use LLVM to link, so we can simply discard any + # '-mllvm $arg' options when doing the link step. prev= continue ;; @@ -5331,21 +6735,21 @@ func_mode_link () if test -z "$pic_object" || test -z "$non_pic_object" || - test "$pic_object" = none && - test "$non_pic_object" = none; then - func_fatal_error "cannot find name of object for \`$arg'" + test none = "$pic_object" && + test none = "$non_pic_object"; then + func_fatal_error "cannot find name of object for '$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" - xdir="$func_dirname_result" + xdir=$func_dirname_result - if test "$pic_object" != none; then + if test none != "$pic_object"; then # Prepend the subdirectory the object is found in. - pic_object="$xdir$pic_object" + pic_object=$xdir$pic_object - if test "$prev" = dlfiles; then - if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + if test dlfiles = "$prev"; then + if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then func_append dlfiles " $pic_object" prev= continue @@ -5356,7 +6760,7 @@ func_mode_link () fi # CHECK ME: I think I busted this. -Ossama - if test "$prev" = dlprefiles; then + if test dlprefiles = "$prev"; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= @@ -5364,23 +6768,23 @@ func_mode_link () # A PIC object. func_append libobjs " $pic_object" - arg="$pic_object" + arg=$pic_object fi # Non-PIC object. - if test "$non_pic_object" != none; then + if test none != "$non_pic_object"; then # Prepend the subdirectory the object is found in. - non_pic_object="$xdir$non_pic_object" + non_pic_object=$xdir$non_pic_object # A standard non-PIC object func_append non_pic_objects " $non_pic_object" - if test -z "$pic_object" || test "$pic_object" = none ; then - arg="$non_pic_object" + if test -z "$pic_object" || test none = "$pic_object"; then + arg=$non_pic_object fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. - non_pic_object="$pic_object" + non_pic_object=$pic_object func_append non_pic_objects " $non_pic_object" fi else @@ -5388,7 +6792,7 @@ func_mode_link () if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" - xdir="$func_dirname_result" + xdir=$func_dirname_result func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result @@ -5396,24 +6800,29 @@ func_mode_link () func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else - func_fatal_error "\`$arg' is not a valid libtool object" + func_fatal_error "'$arg' is not a valid libtool object" fi fi done else - func_fatal_error "link input file \`$arg' does not exist" + func_fatal_error "link input file '$arg' does not exist" fi arg=$save_arg prev= continue ;; + os2dllname) + os2dllname=$arg + prev= + continue + ;; precious_regex) - precious_files_regex="$arg" + precious_files_regex=$arg prev= continue ;; release) - release="-$arg" + release=-$arg prev= continue ;; @@ -5425,7 +6834,7 @@ func_mode_link () func_fatal_error "only absolute run-paths are allowed" ;; esac - if test "$prev" = rpath; then + if test rpath = "$prev"; then case "$rpath " in *" $arg "*) ;; *) func_append rpath " $arg" ;; @@ -5440,7 +6849,7 @@ func_mode_link () continue ;; shrext) - shrext_cmds="$arg" + shrext_cmds=$arg prev= continue ;; @@ -5480,7 +6889,7 @@ func_mode_link () esac fi # test -n "$prev" - prevarg="$arg" + prevarg=$arg case $arg in -all-static) @@ -5494,7 +6903,7 @@ func_mode_link () -allow-undefined) # FIXME: remove this flag sometime in the future. - func_fatal_error "\`-allow-undefined' must not be used because it is the default" + func_fatal_error "'-allow-undefined' must not be used because it is the default" ;; -avoid-version) @@ -5526,7 +6935,7 @@ func_mode_link () if test -n "$export_symbols" || test -n "$export_symbols_regex"; then func_fatal_error "more than one -exported-symbols argument is not allowed" fi - if test "X$arg" = "X-export-symbols"; then + if test X-export-symbols = "X$arg"; then prev=expsyms else prev=expsyms_regex @@ -5560,9 +6969,9 @@ func_mode_link () func_stripname "-L" '' "$arg" if test -z "$func_stripname_result"; then if test "$#" -gt 0; then - func_fatal_error "require no space between \`-L' and \`$1'" + func_fatal_error "require no space between '-L' and '$1'" else - func_fatal_error "need path for \`-L' option" + func_fatal_error "need path for '-L' option" fi fi func_resolve_sysroot "$func_stripname_result" @@ -5573,8 +6982,8 @@ func_mode_link () *) absdir=`cd "$dir" && pwd` test -z "$absdir" && \ - func_fatal_error "cannot determine absolute directory name of \`$dir'" - dir="$absdir" + func_fatal_error "cannot determine absolute directory name of '$dir'" + dir=$absdir ;; esac case "$deplibs " in @@ -5609,7 +7018,7 @@ func_mode_link () ;; -l*) - if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + if test X-lc = "X$arg" || test X-lm = "X$arg"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) @@ -5617,11 +7026,11 @@ func_mode_link () ;; *-*-os2*) # These systems don't actually have a C library (as such) - test "X$arg" = "X-lc" && continue + test X-lc = "X$arg" && continue ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) # Do not include libc due to us having libc/libc_r. - test "X$arg" = "X-lc" && continue + test X-lc = "X$arg" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework @@ -5630,16 +7039,16 @@ func_mode_link () ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype - test "X$arg" = "X-lc" && continue + test X-lc = "X$arg" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work - test "X$arg" = "X-lc" && continue + test X-lc = "X$arg" && continue ;; esac - elif test "X$arg" = "X-lc_r"; then + elif test X-lc_r = "X$arg"; then case $host in - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) # Do not include libc_r directly, use -pthread flag. continue ;; @@ -5649,6 +7058,11 @@ func_mode_link () continue ;; + -mllvm) + prev=mllvm + continue + ;; + -module) module=yes continue @@ -5678,7 +7092,7 @@ func_mode_link () ;; -multi_module) - single_module="${wl}-multi_module" + single_module=$wl-multi_module continue ;; @@ -5692,8 +7106,8 @@ func_mode_link () *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. - func_warning "\`-no-install' is ignored for $host" - func_warning "assuming \`-no-fast-install' instead" + func_warning "'-no-install' is ignored for $host" + func_warning "assuming '-no-fast-install' instead" fast_install=no ;; *) no_install=yes ;; @@ -5711,6 +7125,11 @@ func_mode_link () continue ;; + -os2dllname) + prev=os2dllname + continue + ;; + -o) prev=output ;; -precious-files-regex) @@ -5798,14 +7217,14 @@ func_mode_link () func_stripname '-Wc,' '' "$arg" args=$func_stripname_result arg= - save_ifs="$IFS"; IFS=',' + save_ifs=$IFS; IFS=, for flag in $args; do - IFS="$save_ifs" + IFS=$save_ifs func_quote_for_eval "$flag" func_append arg " $func_quote_for_eval_result" func_append compiler_flags " $func_quote_for_eval_result" done - IFS="$save_ifs" + IFS=$save_ifs func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; @@ -5814,15 +7233,15 @@ func_mode_link () func_stripname '-Wl,' '' "$arg" args=$func_stripname_result arg= - save_ifs="$IFS"; IFS=',' + save_ifs=$IFS; IFS=, for flag in $args; do - IFS="$save_ifs" + IFS=$save_ifs func_quote_for_eval "$flag" func_append arg " $wl$func_quote_for_eval_result" func_append compiler_flags " $wl$func_quote_for_eval_result" func_append linker_flags " $func_quote_for_eval_result" done - IFS="$save_ifs" + IFS=$save_ifs func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; @@ -5845,7 +7264,7 @@ func_mode_link () # -msg_* for osf cc -msg_*) func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" + arg=$func_quote_for_eval_result ;; # Flags to be passed through unchanged, with rationale: @@ -5857,25 +7276,49 @@ func_mode_link () # -m*, -t[45]*, -txscale* architecture-specific flags for GCC # -F/path path to uninstalled frameworks, gcc on darwin # -p, -pg, --coverage, -fprofile-* profiling flags for GCC + # -fstack-protector* stack protector flags for GCC # @file GCC response files # -tp=* Portland pgcc target processor selection # --sysroot=* for sysroot support - # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization + # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization + # -specs=* GCC specs files + # -stdlib=* select c++ std lib with clang + # -fsanitize=* Clang/GCC memory and address sanitizer -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*|-flto*|-fwhopr*|-fuse-linker-plugin) + -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \ + -specs=*|-fsanitize=*) func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" + arg=$func_quote_for_eval_result func_append compile_command " $arg" func_append finalize_command " $arg" func_append compiler_flags " $arg" continue ;; + -Z*) + if test os2 = "`expr $host : '.*\(os2\)'`"; then + # OS/2 uses -Zxxx to specify OS/2-specific options + compiler_flags="$compiler_flags $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + case $arg in + -Zlinker | -Zstack) + prev=xcompiler + ;; + esac + continue + else + # Otherwise treat like 'Some other compiler flag' below + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + fi + ;; + # Some other compiler flag. -* | +*) func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" + arg=$func_quote_for_eval_result ;; *.$objext) @@ -5896,21 +7339,21 @@ func_mode_link () if test -z "$pic_object" || test -z "$non_pic_object" || - test "$pic_object" = none && - test "$non_pic_object" = none; then - func_fatal_error "cannot find name of object for \`$arg'" + test none = "$pic_object" && + test none = "$non_pic_object"; then + func_fatal_error "cannot find name of object for '$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" - xdir="$func_dirname_result" + xdir=$func_dirname_result - if test "$pic_object" != none; then + test none = "$pic_object" || { # Prepend the subdirectory the object is found in. - pic_object="$xdir$pic_object" + pic_object=$xdir$pic_object - if test "$prev" = dlfiles; then - if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + if test dlfiles = "$prev"; then + if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then func_append dlfiles " $pic_object" prev= continue @@ -5921,7 +7364,7 @@ func_mode_link () fi # CHECK ME: I think I busted this. -Ossama - if test "$prev" = dlprefiles; then + if test dlprefiles = "$prev"; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= @@ -5929,23 +7372,23 @@ func_mode_link () # A PIC object. func_append libobjs " $pic_object" - arg="$pic_object" - fi + arg=$pic_object + } # Non-PIC object. - if test "$non_pic_object" != none; then + if test none != "$non_pic_object"; then # Prepend the subdirectory the object is found in. - non_pic_object="$xdir$non_pic_object" + non_pic_object=$xdir$non_pic_object # A standard non-PIC object func_append non_pic_objects " $non_pic_object" - if test -z "$pic_object" || test "$pic_object" = none ; then - arg="$non_pic_object" + if test -z "$pic_object" || test none = "$pic_object"; then + arg=$non_pic_object fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. - non_pic_object="$pic_object" + non_pic_object=$pic_object func_append non_pic_objects " $non_pic_object" fi else @@ -5953,7 +7396,7 @@ func_mode_link () if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" - xdir="$func_dirname_result" + xdir=$func_dirname_result func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result @@ -5961,7 +7404,7 @@ func_mode_link () func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else - func_fatal_error "\`$arg' is not a valid libtool object" + func_fatal_error "'$arg' is not a valid libtool object" fi fi ;; @@ -5977,11 +7420,11 @@ func_mode_link () # A libtool-controlled library. func_resolve_sysroot "$arg" - if test "$prev" = dlfiles; then + if test dlfiles = "$prev"; then # This library was specified with -dlopen. func_append dlfiles " $func_resolve_sysroot_result" prev= - elif test "$prev" = dlprefiles; then + elif test dlprefiles = "$prev"; then # The library was specified with -dlpreopen. func_append dlprefiles " $func_resolve_sysroot_result" prev= @@ -5996,7 +7439,7 @@ func_mode_link () # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" + arg=$func_quote_for_eval_result ;; esac # arg @@ -6008,9 +7451,9 @@ func_mode_link () done # argument parsing loop test -n "$prev" && \ - func_fatal_help "the \`$prevarg' option requires an argument" + func_fatal_help "the '$prevarg' option requires an argument" - if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then + if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" func_append compile_command " $arg" func_append finalize_command " $arg" @@ -6019,20 +7462,23 @@ func_mode_link () oldlibs= # calculate the name of the file, without its directory func_basename "$output" - outputname="$func_basename_result" - libobjs_save="$libobjs" + outputname=$func_basename_result + libobjs_save=$libobjs if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var - eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` + eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + # Definition is injected by LT_CONFIG during libtool generation. + func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH" + func_dirname "$output" "/" "" - output_objdir="$func_dirname_result$objdir" + output_objdir=$func_dirname_result$objdir func_to_tool_file "$output_objdir/" tool_output_objdir=$func_to_tool_file_result # Create the object directory. @@ -6055,7 +7501,7 @@ func_mode_link () # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do - if $opt_preserve_dup_deps ; then + if $opt_preserve_dup_deps; then case "$libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac @@ -6063,7 +7509,7 @@ func_mode_link () func_append libs " $deplib" done - if test "$linkmode" = lib; then + if test lib = "$linkmode"; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps @@ -6095,7 +7541,7 @@ func_mode_link () case $file in *.la) ;; *) - func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" + func_fatal_help "libraries can '-dlopen' only libtool libraries: $file" ;; esac done @@ -6103,7 +7549,7 @@ func_mode_link () prog) compile_deplibs= finalize_deplibs= - alldeplibs=no + alldeplibs=false newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" @@ -6115,32 +7561,32 @@ func_mode_link () for pass in $passes; do # The preopen pass in lib mode reverses $deplibs; put it back here # so that -L comes before libs that need it for instance... - if test "$linkmode,$pass" = "lib,link"; then + if test lib,link = "$linkmode,$pass"; then ## FIXME: Find the place where the list is rebuilt in the wrong ## order, and fix it there properly tmp_deplibs= for deplib in $deplibs; do tmp_deplibs="$deplib $tmp_deplibs" done - deplibs="$tmp_deplibs" + deplibs=$tmp_deplibs fi - if test "$linkmode,$pass" = "lib,link" || - test "$linkmode,$pass" = "prog,scan"; then - libs="$deplibs" + if test lib,link = "$linkmode,$pass" || + test prog,scan = "$linkmode,$pass"; then + libs=$deplibs deplibs= fi - if test "$linkmode" = prog; then + if test prog = "$linkmode"; then case $pass in - dlopen) libs="$dlfiles" ;; - dlpreopen) libs="$dlprefiles" ;; + dlopen) libs=$dlfiles ;; + dlpreopen) libs=$dlprefiles ;; link) libs="$deplibs %DEPLIBS%" test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" ;; esac fi - if test "$linkmode,$pass" = "lib,dlpreopen"; then + if test lib,dlpreopen = "$linkmode,$pass"; then # Collect and forward deplibs of preopened libtool libs for lib in $dlprefiles; do # Ignore non-libtool-libs @@ -6161,26 +7607,26 @@ func_mode_link () esac done done - libs="$dlprefiles" + libs=$dlprefiles fi - if test "$pass" = dlopen; then + if test dlopen = "$pass"; then # Collect dlpreopened libraries - save_deplibs="$deplibs" + save_deplibs=$deplibs deplibs= fi for deplib in $libs; do lib= - found=no + found=false case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) - if test "$linkmode,$pass" = "prog,link"; then + if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append compiler_flags " $deplib" - if test "$linkmode" = lib ; then + if test lib = "$linkmode"; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; @@ -6190,13 +7636,13 @@ func_mode_link () continue ;; -l*) - if test "$linkmode" != lib && test "$linkmode" != prog; then - func_warning "\`-l' is ignored for archives/objects" + if test lib != "$linkmode" && test prog != "$linkmode"; then + func_warning "'-l' is ignored for archives/objects" continue fi func_stripname '-l' '' "$deplib" name=$func_stripname_result - if test "$linkmode" = lib; then + if test lib = "$linkmode"; then searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" else searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" @@ -6204,31 +7650,22 @@ func_mode_link () for searchdir in $searchdirs; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library - lib="$searchdir/lib${name}${search_ext}" + lib=$searchdir/lib$name$search_ext if test -f "$lib"; then - if test "$search_ext" = ".la"; then - found=yes + if test .la = "$search_ext"; then + found=: else - found=no + found=false fi break 2 fi done done - if test "$found" != yes; then - # deplib doesn't seem to be a libtool library - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" - fi - continue - else # deplib is a libtool library + if $found; then + # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $deplib "*) if func_lalib_p "$lib"; then @@ -6236,19 +7673,19 @@ func_mode_link () old_library= func_source "$lib" for l in $old_library $library_names; do - ll="$l" + ll=$l done - if test "X$ll" = "X$old_library" ; then # only static version available - found=no + if test "X$ll" = "X$old_library"; then # only static version available + found=false func_dirname "$lib" "" "." - ladir="$func_dirname_result" + ladir=$func_dirname_result lib=$ladir/$old_library - if test "$linkmode,$pass" = "prog,link"; then + if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" - test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" fi continue fi @@ -6257,15 +7694,25 @@ func_mode_link () *) ;; esac fi + else + # deplib doesn't seem to be a libtool library + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" + fi + continue fi ;; # -l *.ltframework) - if test "$linkmode,$pass" = "prog,link"; then + if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" - if test "$linkmode" = lib ; then + if test lib = "$linkmode"; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; @@ -6278,18 +7725,18 @@ func_mode_link () case $linkmode in lib) deplibs="$deplib $deplibs" - test "$pass" = conv && continue + test conv = "$pass" && continue newdependency_libs="$deplib $newdependency_libs" func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; prog) - if test "$pass" = conv; then + if test conv = "$pass"; then deplibs="$deplib $deplibs" continue fi - if test "$pass" = scan; then + if test scan = "$pass"; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" @@ -6300,13 +7747,13 @@ func_mode_link () func_append newlib_search_path " $func_resolve_sysroot_result" ;; *) - func_warning "\`-L' is ignored for archives/objects" + func_warning "'-L' is ignored for archives/objects" ;; esac # linkmode continue ;; # -L -R*) - if test "$pass" = link; then + if test link = "$pass"; then func_stripname '-R' '' "$deplib" func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result @@ -6324,7 +7771,7 @@ func_mode_link () lib=$func_resolve_sysroot_result ;; *.$libext) - if test "$pass" = conv; then + if test conv = "$pass"; then deplibs="$deplib $deplibs" continue fi @@ -6335,21 +7782,26 @@ func_mode_link () case " $dlpreconveniencelibs " in *" $deplib "*) ;; *) - valid_a_lib=no + valid_a_lib=false case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then - valid_a_lib=yes + valid_a_lib=: fi ;; pass_all) - valid_a_lib=yes + valid_a_lib=: ;; esac - if test "$valid_a_lib" != yes; then + if $valid_a_lib; then + echo + $ECHO "*** Warning: Linking the shared library $output against the" + $ECHO "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + else echo $ECHO "*** Warning: Trying to link with static lib archive $deplib." echo "*** I have the capability to make that library automatically link in when" @@ -6357,18 +7809,13 @@ func_mode_link () echo "*** shared version of the library, which you do not appear to have" echo "*** because the file extensions .$libext of this argument makes me believe" echo "*** that it is just a static archive that I should not use here." - else - echo - $ECHO "*** Warning: Linking the shared library $output against the" - $ECHO "*** static library $deplib is not portable!" - deplibs="$deplib $deplibs" fi ;; esac continue ;; prog) - if test "$pass" != link; then + if test link != "$pass"; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" @@ -6379,10 +7826,10 @@ func_mode_link () esac # linkmode ;; # *.$libext *.lo | *.$objext) - if test "$pass" = conv; then + if test conv = "$pass"; then deplibs="$deplib $deplibs" - elif test "$linkmode" = prog; then - if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + elif test prog = "$linkmode"; then + if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then # If there is no dlopen support or we're linking statically, # we need to preload. func_append newdlprefiles " $deplib" @@ -6395,22 +7842,20 @@ func_mode_link () continue ;; %DEPLIBS%) - alldeplibs=yes + alldeplibs=: continue ;; esac # case $deplib - if test "$found" = yes || test -f "$lib"; then : - else - func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" - fi + $found || test -f "$lib" \ + || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'" # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$lib" \ - || func_fatal_error "\`$lib' is not a valid libtool archive" + || func_fatal_error "'$lib' is not a valid libtool archive" func_dirname "$lib" "" "." - ladir="$func_dirname_result" + ladir=$func_dirname_result dlname= dlopen= @@ -6440,19 +7885,19 @@ func_mode_link () done fi dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - if test "$linkmode,$pass" = "lib,link" || - test "$linkmode,$pass" = "prog,scan" || - { test "$linkmode" != prog && test "$linkmode" != lib; }; then + if test lib,link = "$linkmode,$pass" || + test prog,scan = "$linkmode,$pass" || + { test prog != "$linkmode" && test lib != "$linkmode"; }; then test -n "$dlopen" && func_append dlfiles " $dlopen" test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" fi - if test "$pass" = conv; then + if test conv = "$pass"; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then - func_fatal_error "cannot find name of link library for \`$lib'" + func_fatal_error "cannot find name of link library for '$lib'" fi # It is a libtool convenience library, so add in its objects. func_append convenience " $ladir/$objdir/$old_library" @@ -6460,15 +7905,15 @@ func_mode_link () tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" - if $opt_preserve_dup_deps ; then + if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done - elif test "$linkmode" != prog && test "$linkmode" != lib; then - func_fatal_error "\`$lib' is not a convenience library" + elif test prog != "$linkmode" && test lib != "$linkmode"; then + func_fatal_error "'$lib' is not a convenience library" fi continue fi # $pass = conv @@ -6477,26 +7922,26 @@ func_mode_link () # Get the name of the library we link against. linklib= if test -n "$old_library" && - { test "$prefer_static_libs" = yes || - test "$prefer_static_libs,$installed" = "built,no"; }; then + { test yes = "$prefer_static_libs" || + test built,no = "$prefer_static_libs,$installed"; }; then linklib=$old_library else for l in $old_library $library_names; do - linklib="$l" + linklib=$l done fi if test -z "$linklib"; then - func_fatal_error "cannot find name of link library for \`$lib'" + func_fatal_error "cannot find name of link library for '$lib'" fi # This library was specified with -dlopen. - if test "$pass" = dlopen; then - if test -z "$libdir"; then - func_fatal_error "cannot -dlopen a convenience library: \`$lib'" - fi + if test dlopen = "$pass"; then + test -z "$libdir" \ + && func_fatal_error "cannot -dlopen a convenience library: '$lib'" if test -z "$dlname" || - test "$dlopen_support" != yes || - test "$build_libtool_libs" = no; then + test yes != "$dlopen_support" || + test no = "$build_libtool_libs" + then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't @@ -6510,40 +7955,40 @@ func_mode_link () # We need an absolute path. case $ladir in - [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then - func_warning "cannot determine absolute directory name of \`$ladir'" + func_warning "cannot determine absolute directory name of '$ladir'" func_warning "passing it literally to the linker, although it might fail" - abs_ladir="$ladir" + abs_ladir=$ladir fi ;; esac func_basename "$lib" - laname="$func_basename_result" + laname=$func_basename_result # Find the relevant object directory and library name. - if test "X$installed" = Xyes; then + if test yes = "$installed"; then if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then - func_warning "library \`$lib' was moved." - dir="$ladir" - absdir="$abs_ladir" - libdir="$abs_ladir" + func_warning "library '$lib' was moved." + dir=$ladir + absdir=$abs_ladir + libdir=$abs_ladir else - dir="$lt_sysroot$libdir" - absdir="$lt_sysroot$libdir" + dir=$lt_sysroot$libdir + absdir=$lt_sysroot$libdir fi - test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes + test yes = "$hardcode_automatic" && avoidtemprpath=yes else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then - dir="$ladir" - absdir="$abs_ladir" + dir=$ladir + absdir=$abs_ladir # Remove this search path later func_append notinst_path " $abs_ladir" else - dir="$ladir/$objdir" - absdir="$abs_ladir/$objdir" + dir=$ladir/$objdir + absdir=$abs_ladir/$objdir # Remove this search path later func_append notinst_path " $abs_ladir" fi @@ -6552,11 +7997,11 @@ func_mode_link () name=$func_stripname_result # This library was specified with -dlpreopen. - if test "$pass" = dlpreopen; then - if test -z "$libdir" && test "$linkmode" = prog; then - func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" + if test dlpreopen = "$pass"; then + if test -z "$libdir" && test prog = "$linkmode"; then + func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'" fi - case "$host" in + case $host in # special handling for platforms with PE-DLLs. *cygwin* | *mingw* | *cegcc* ) # Linker will automatically link against shared library if both @@ -6600,9 +8045,9 @@ func_mode_link () if test -z "$libdir"; then # Link the convenience library - if test "$linkmode" = lib; then + if test lib = "$linkmode"; then deplibs="$dir/$old_library $deplibs" - elif test "$linkmode,$pass" = "prog,link"; then + elif test prog,link = "$linkmode,$pass"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else @@ -6612,14 +8057,14 @@ func_mode_link () fi - if test "$linkmode" = prog && test "$pass" != link; then + if test prog = "$linkmode" && test link != "$pass"; then func_append newlib_search_path " $ladir" deplibs="$lib $deplibs" - linkalldeplibs=no - if test "$link_all_deplibs" != no || test -z "$library_names" || - test "$build_libtool_libs" = no; then - linkalldeplibs=yes + linkalldeplibs=false + if test no != "$link_all_deplibs" || test -z "$library_names" || + test no = "$build_libtool_libs"; then + linkalldeplibs=: fi tmp_libs= @@ -6631,14 +8076,14 @@ func_mode_link () ;; esac # Need to link against all dependency_libs? - if test "$linkalldeplibs" = yes; then + if $linkalldeplibs; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi - if $opt_preserve_dup_deps ; then + if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac @@ -6648,15 +8093,15 @@ func_mode_link () continue fi # $linkmode = prog... - if test "$linkmode,$pass" = "prog,link"; then + if test prog,link = "$linkmode,$pass"; then if test -n "$library_names" && - { { test "$prefer_static_libs" = no || - test "$prefer_static_libs,$installed" = "built,yes"; } || + { { test no = "$prefer_static_libs" || + test built,yes = "$prefer_static_libs,$installed"; } || test -z "$old_library"; }; then # We need to hardcode the library path - if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then + if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then # Make sure the rpath contains only unique directories. - case "$temp_rpath:" in + case $temp_rpath: in *"$absdir:"*) ;; *) func_append temp_rpath "$absdir:" ;; esac @@ -6685,9 +8130,9 @@ func_mode_link () esac fi # $linkmode,$pass = prog,link... - if test "$alldeplibs" = yes && - { test "$deplibs_check_method" = pass_all || - { test "$build_libtool_libs" = yes && + if $alldeplibs && + { test pass_all = "$deplibs_check_method" || + { test yes = "$build_libtool_libs" && test -n "$library_names"; }; }; then # We only need to search for static libraries continue @@ -6696,19 +8141,19 @@ func_mode_link () link_static=no # Whether the deplib will be linked statically use_static_libs=$prefer_static_libs - if test "$use_static_libs" = built && test "$installed" = yes; then + if test built = "$use_static_libs" && test yes = "$installed"; then use_static_libs=no fi if test -n "$library_names" && - { test "$use_static_libs" = no || test -z "$old_library"; }; then + { test no = "$use_static_libs" || test -z "$old_library"; }; then case $host in - *cygwin* | *mingw* | *cegcc*) + *cygwin* | *mingw* | *cegcc* | *os2*) # No point in relinking DLLs because paths are not encoded func_append notinst_deplibs " $lib" need_relink=no ;; *) - if test "$installed" = no; then + if test no = "$installed"; then func_append notinst_deplibs " $lib" need_relink=yes fi @@ -6718,24 +8163,24 @@ func_mode_link () # Warn about portability, can't link against -module's on some # systems (darwin). Don't bleat about dlopened modules though! - dlopenmodule="" + dlopenmodule= for dlpremoduletest in $dlprefiles; do if test "X$dlpremoduletest" = "X$lib"; then - dlopenmodule="$dlpremoduletest" + dlopenmodule=$dlpremoduletest break fi done - if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then + if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then echo - if test "$linkmode" = prog; then + if test prog = "$linkmode"; then $ECHO "*** Warning: Linking the executable $output against the loadable module" else $ECHO "*** Warning: Linking the shared library $output against the loadable module" fi $ECHO "*** $linklib is not portable!" fi - if test "$linkmode" = lib && - test "$hardcode_into_libs" = yes; then + if test lib = "$linkmode" && + test yes = "$hardcode_into_libs"; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. @@ -6763,43 +8208,43 @@ func_mode_link () # figure out the soname set dummy $library_names shift - realname="$1" + realname=$1 shift libname=`eval "\\$ECHO \"$libname_spec\""` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then - soname="$dlname" + soname=$dlname elif test -n "$soname_spec"; then # bleh windows case $host in - *cygwin* | mingw* | *cegcc*) + *cygwin* | mingw* | *cegcc* | *os2*) func_arith $current - $age major=$func_arith_result - versuffix="-$major" + versuffix=-$major ;; esac eval soname=\"$soname_spec\" else - soname="$realname" + soname=$realname fi # Make a new name for the extract_expsyms_cmds to use - soroot="$soname" + soroot=$soname func_basename "$soroot" - soname="$func_basename_result" + soname=$func_basename_result func_stripname 'lib' '.dll' "$soname" newlib=libimp-$func_stripname_result.a # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else - func_verbose "extracting exported symbol list from \`$soname'" + func_verbose "extracting exported symbol list from '$soname'" func_execute_cmds "$extract_expsyms_cmds" 'exit $?' fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else - func_verbose "generating import library for \`$soname'" + func_verbose "generating import library for '$soname'" func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' fi # make sure the library variables are pointing to the new library @@ -6807,58 +8252,58 @@ func_mode_link () linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" - if test "$linkmode" = prog || test "$opt_mode" != relink; then + if test prog = "$linkmode" || test relink != "$opt_mode"; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) - if test "$hardcode_direct" = no; then - add="$dir/$linklib" + if test no = "$hardcode_direct"; then + add=$dir/$linklib case $host in - *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; - *-*-sysv4*uw2*) add_dir="-L$dir" ;; + *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;; + *-*-sysv4*uw2*) add_dir=-L$dir ;; *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ - *-*-unixware7*) add_dir="-L$dir" ;; + *-*-unixware7*) add_dir=-L$dir ;; *-*-darwin* ) - # if the lib is a (non-dlopened) module then we can not + # if the lib is a (non-dlopened) module then we cannot # link against it, someone is ignoring the earlier warnings if /usr/bin/file -L $add 2> /dev/null | - $GREP ": [^:]* bundle" >/dev/null ; then + $GREP ": [^:]* bundle" >/dev/null; then if test "X$dlopenmodule" != "X$lib"; then $ECHO "*** Warning: lib $linklib is a module, not a shared library" - if test -z "$old_library" ; then + if test -z "$old_library"; then echo echo "*** And there doesn't seem to be a static archive available" echo "*** The link will probably fail, sorry" else - add="$dir/$old_library" + add=$dir/$old_library fi elif test -n "$old_library"; then - add="$dir/$old_library" + add=$dir/$old_library fi fi esac - elif test "$hardcode_minus_L" = no; then + elif test no = "$hardcode_minus_L"; then case $host in - *-*-sunos*) add_shlibpath="$dir" ;; + *-*-sunos*) add_shlibpath=$dir ;; esac - add_dir="-L$dir" - add="-l$name" - elif test "$hardcode_shlibpath_var" = no; then - add_shlibpath="$dir" - add="-l$name" + add_dir=-L$dir + add=-l$name + elif test no = "$hardcode_shlibpath_var"; then + add_shlibpath=$dir + add=-l$name else lib_linked=no fi ;; relink) - if test "$hardcode_direct" = yes && - test "$hardcode_direct_absolute" = no; then - add="$dir/$linklib" - elif test "$hardcode_minus_L" = yes; then - add_dir="-L$absdir" + if test yes = "$hardcode_direct" && + test no = "$hardcode_direct_absolute"; then + add=$dir/$linklib + elif test yes = "$hardcode_minus_L"; then + add_dir=-L$absdir # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in @@ -6867,10 +8312,10 @@ func_mode_link () ;; esac fi - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then - add_shlibpath="$dir" - add="-l$name" + add=-l$name + elif test yes = "$hardcode_shlibpath_var"; then + add_shlibpath=$dir + add=-l$name else lib_linked=no fi @@ -6878,7 +8323,7 @@ func_mode_link () *) lib_linked=no ;; esac - if test "$lib_linked" != yes; then + if test yes != "$lib_linked"; then func_fatal_configuration "unsupported hardcode properties" fi @@ -6888,15 +8333,15 @@ func_mode_link () *) func_append compile_shlibpath "$add_shlibpath:" ;; esac fi - if test "$linkmode" = prog; then + if test prog = "$linkmode"; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" - if test "$hardcode_direct" != yes && - test "$hardcode_minus_L" != yes && - test "$hardcode_shlibpath_var" = yes; then + if test yes != "$hardcode_direct" && + test yes != "$hardcode_minus_L" && + test yes = "$hardcode_shlibpath_var"; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; @@ -6905,33 +8350,33 @@ func_mode_link () fi fi - if test "$linkmode" = prog || test "$opt_mode" = relink; then + if test prog = "$linkmode" || test relink = "$opt_mode"; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. - if test "$hardcode_direct" = yes && - test "$hardcode_direct_absolute" = no; then - add="$libdir/$linklib" - elif test "$hardcode_minus_L" = yes; then - add_dir="-L$libdir" - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then + if test yes = "$hardcode_direct" && + test no = "$hardcode_direct_absolute"; then + add=$libdir/$linklib + elif test yes = "$hardcode_minus_L"; then + add_dir=-L$libdir + add=-l$name + elif test yes = "$hardcode_shlibpath_var"; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac - add="-l$name" - elif test "$hardcode_automatic" = yes; then + add=-l$name + elif test yes = "$hardcode_automatic"; then if test -n "$inst_prefix_dir" && - test -f "$inst_prefix_dir$libdir/$linklib" ; then - add="$inst_prefix_dir$libdir/$linklib" + test -f "$inst_prefix_dir$libdir/$linklib"; then + add=$inst_prefix_dir$libdir/$linklib else - add="$libdir/$linklib" + add=$libdir/$linklib fi else # We cannot seem to hardcode it, guess we'll fake it. - add_dir="-L$libdir" + add_dir=-L$libdir # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in @@ -6940,10 +8385,10 @@ func_mode_link () ;; esac fi - add="-l$name" + add=-l$name fi - if test "$linkmode" = prog; then + if test prog = "$linkmode"; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else @@ -6951,43 +8396,43 @@ func_mode_link () test -n "$add" && deplibs="$add $deplibs" fi fi - elif test "$linkmode" = prog; then + elif test prog = "$linkmode"; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. - if test "$hardcode_direct" != unsupported; then - test -n "$old_library" && linklib="$old_library" + if test unsupported != "$hardcode_direct"; then + test -n "$old_library" && linklib=$old_library compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi - elif test "$build_libtool_libs" = yes; then + elif test yes = "$build_libtool_libs"; then # Not a shared library - if test "$deplibs_check_method" != pass_all; then + if test pass_all != "$deplibs_check_method"; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. echo - $ECHO "*** Warning: This system can not link to static lib archive $lib." + $ECHO "*** Warning: This system cannot link to static lib archive $lib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." - if test "$module" = yes; then + if test yes = "$module"; then echo "*** But as you try to build a module library, libtool will still create " echo "*** a static module, that should work as long as the dlopening application" echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" - echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + echo "*** lists from a program, using 'nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." - echo "*** \`nm' from GNU binutils and a full rebuild may help." + echo "*** 'nm' from GNU binutils and a full rebuild may help." fi - if test "$build_old_libs" = no; then + if test no = "$build_old_libs"; then build_libtool_libs=module build_old_libs=yes else @@ -7000,11 +8445,11 @@ func_mode_link () fi fi # link shared/static library? - if test "$linkmode" = lib; then + if test lib = "$linkmode"; then if test -n "$dependency_libs" && - { test "$hardcode_into_libs" != yes || - test "$build_old_libs" = yes || - test "$link_static" = yes; }; then + { test yes != "$hardcode_into_libs" || + test yes = "$build_old_libs" || + test yes = "$link_static"; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do @@ -7018,12 +8463,12 @@ func_mode_link () *) func_append temp_deplibs " $libdir";; esac done - dependency_libs="$temp_deplibs" + dependency_libs=$temp_deplibs fi func_append newlib_search_path " $absdir" # Link against this library - test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do @@ -7033,7 +8478,7 @@ func_mode_link () func_resolve_sysroot "$func_stripname_result";; *) func_resolve_sysroot "$deplib" ;; esac - if $opt_preserve_dup_deps ; then + if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $func_resolve_sysroot_result "*) func_append specialdeplibs " $func_resolve_sysroot_result" ;; @@ -7042,12 +8487,12 @@ func_mode_link () func_append tmp_libs " $func_resolve_sysroot_result" done - if test "$link_all_deplibs" != no; then + if test no != "$link_all_deplibs"; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do path= case $deplib in - -L*) path="$deplib" ;; + -L*) path=$deplib ;; *.la) func_resolve_sysroot "$deplib" deplib=$func_resolve_sysroot_result @@ -7055,12 +8500,12 @@ func_mode_link () dir=$func_dirname_result # We need an absolute path. case $dir in - [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; + [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then - func_warning "cannot determine absolute directory name of \`$dir'" - absdir="$dir" + func_warning "cannot determine absolute directory name of '$dir'" + absdir=$dir fi ;; esac @@ -7068,35 +8513,35 @@ func_mode_link () case $host in *-*-darwin*) depdepl= - eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` - if test -n "$deplibrary_names" ; then - for tmp in $deplibrary_names ; do + eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names"; then + for tmp in $deplibrary_names; do depdepl=$tmp done - if test -f "$absdir/$objdir/$depdepl" ; then - depdepl="$absdir/$objdir/$depdepl" - darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + if test -f "$absdir/$objdir/$depdepl"; then + depdepl=$absdir/$objdir/$depdepl + darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` if test -z "$darwin_install_name"; then - darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + darwin_install_name=`$OTOOL64 -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` fi - func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" - func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" + func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl" + func_append linker_flags " -dylib_file $darwin_install_name:$depdepl" path= fi fi ;; *) - path="-L$absdir/$objdir" + path=-L$absdir/$objdir ;; esac else - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ - func_fatal_error "\`$deplib' is not a valid libtool archive" + func_fatal_error "'$deplib' is not a valid libtool archive" test "$absdir" != "$libdir" && \ - func_warning "\`$deplib' seems to be moved" + func_warning "'$deplib' seems to be moved" - path="-L$absdir" + path=-L$absdir fi ;; esac @@ -7108,23 +8553,23 @@ func_mode_link () fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs - if test "$pass" = link; then - if test "$linkmode" = "prog"; then + if test link = "$pass"; then + if test prog = "$linkmode"; then compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi - dependency_libs="$newdependency_libs" - if test "$pass" = dlpreopen; then + dependency_libs=$newdependency_libs + if test dlpreopen = "$pass"; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi - if test "$pass" != dlopen; then - if test "$pass" != conv; then + if test dlopen != "$pass"; then + test conv = "$pass" || { # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do @@ -7134,12 +8579,12 @@ func_mode_link () esac done newlib_search_path= - fi + } - if test "$linkmode,$pass" != "prog,link"; then - vars="deplibs" - else + if test prog,link = "$linkmode,$pass"; then vars="compile_deplibs finalize_deplibs" + else + vars=deplibs fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order @@ -7197,62 +8642,93 @@ func_mode_link () eval $var=\"$tmp_libs\" done # for var fi + + # Add Sun CC postdeps if required: + test CXX = "$tagname" && { + case $host_os in + linux*) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C++ 5.9 + func_suncc_cstd_abi + + if test no != "$suncc_use_cstd_abi"; then + func_append postdeps ' -library=Cstd -library=Crun' + fi + ;; + esac + ;; + + solaris*) + func_cc_basename "$CC" + case $func_cc_basename_result in + CC* | sunCC*) + func_suncc_cstd_abi + + if test no != "$suncc_use_cstd_abi"; then + func_append postdeps ' -library=Cstd -library=Crun' + fi + ;; + esac + ;; + esac + } + # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= - for i in $dependency_libs ; do + for i in $dependency_libs; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) - i="" + i= ;; esac - if test -n "$i" ; then + if test -n "$i"; then func_append tmp_libs " $i" fi done dependency_libs=$tmp_libs done # for pass - if test "$linkmode" = prog; then - dlfiles="$newdlfiles" + if test prog = "$linkmode"; then + dlfiles=$newdlfiles fi - if test "$linkmode" = prog || test "$linkmode" = lib; then - dlprefiles="$newdlprefiles" + if test prog = "$linkmode" || test lib = "$linkmode"; then + dlprefiles=$newdlprefiles fi case $linkmode in oldlib) - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - func_warning "\`-dlopen' is ignored for archives" + if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then + func_warning "'-dlopen' is ignored for archives" fi case " $deplibs" in *\ -l* | *\ -L*) - func_warning "\`-l' and \`-L' are ignored for archives" ;; + func_warning "'-l' and '-L' are ignored for archives" ;; esac test -n "$rpath" && \ - func_warning "\`-rpath' is ignored for archives" + func_warning "'-rpath' is ignored for archives" test -n "$xrpath" && \ - func_warning "\`-R' is ignored for archives" + func_warning "'-R' is ignored for archives" test -n "$vinfo" && \ - func_warning "\`-version-info/-version-number' is ignored for archives" + func_warning "'-version-info/-version-number' is ignored for archives" test -n "$release" && \ - func_warning "\`-release' is ignored for archives" + func_warning "'-release' is ignored for archives" test -n "$export_symbols$export_symbols_regex" && \ - func_warning "\`-export-symbols' is ignored for archives" + func_warning "'-export-symbols' is ignored for archives" # Now set the variables for building old libraries. build_libtool_libs=no - oldlibs="$output" + oldlibs=$output func_append objs "$old_deplibs" ;; lib) - # Make sure we only generate libraries of the form `libNAME.la'. + # Make sure we only generate libraries of the form 'libNAME.la'. case $outputname in lib*) func_stripname 'lib' '.la' "$outputname" @@ -7261,10 +8737,10 @@ func_mode_link () eval libname=\"$libname_spec\" ;; *) - test "$module" = no && \ - func_fatal_help "libtool library \`$output' must begin with \`lib'" + test no = "$module" \ + && func_fatal_help "libtool library '$output' must begin with 'lib'" - if test "$need_lib_prefix" != no; then + if test no != "$need_lib_prefix"; then # Add the "lib" prefix for modules if required func_stripname '' '.la' "$outputname" name=$func_stripname_result @@ -7278,8 +8754,8 @@ func_mode_link () esac if test -n "$objs"; then - if test "$deplibs_check_method" != pass_all; then - func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" + if test pass_all != "$deplibs_check_method"; then + func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs" else echo $ECHO "*** Warning: Linking the shared library $output against the non-libtool" @@ -7288,21 +8764,21 @@ func_mode_link () fi fi - test "$dlself" != no && \ - func_warning "\`-dlopen self' is ignored for libtool libraries" + test no = "$dlself" \ + || func_warning "'-dlopen self' is ignored for libtool libraries" set dummy $rpath shift - test "$#" -gt 1 && \ - func_warning "ignoring multiple \`-rpath's for a libtool library" + test 1 -lt "$#" \ + && func_warning "ignoring multiple '-rpath's for a libtool library" - install_libdir="$1" + install_libdir=$1 oldlibs= if test -z "$rpath"; then - if test "$build_libtool_libs" = yes; then + if test yes = "$build_libtool_libs"; then # Building a libtool convenience library. - # Some compilers have problems with a `.al' extension so + # Some compilers have problems with a '.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" @@ -7311,20 +8787,20 @@ func_mode_link () fi test -n "$vinfo" && \ - func_warning "\`-version-info/-version-number' is ignored for convenience libraries" + func_warning "'-version-info/-version-number' is ignored for convenience libraries" test -n "$release" && \ - func_warning "\`-release' is ignored for convenience libraries" + func_warning "'-release' is ignored for convenience libraries" else # Parse the version information argument. - save_ifs="$IFS"; IFS=':' + save_ifs=$IFS; IFS=: set dummy $vinfo 0 0 0 shift - IFS="$save_ifs" + IFS=$save_ifs test -n "$7" && \ - func_fatal_help "too many parameters to \`-version-info'" + func_fatal_help "too many parameters to '-version-info'" # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts @@ -7332,45 +8808,45 @@ func_mode_link () case $vinfo_number in yes) - number_major="$1" - number_minor="$2" - number_revision="$3" + number_major=$1 + number_minor=$2 + number_revision=$3 # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix - # which has an extra 1 added just for fun + # that has an extra 1 added just for fun # case $version_type in # correct linux to gnu/linux during the next big refactor - darwin|linux|osf|windows|none) + darwin|freebsd-elf|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result - age="$number_minor" - revision="$number_revision" + age=$number_minor + revision=$number_revision ;; - freebsd-aout|freebsd-elf|qnx|sunos) - current="$number_major" - revision="$number_minor" - age="0" + freebsd-aout|qnx|sunos) + current=$number_major + revision=$number_minor + age=0 ;; irix|nonstopux) func_arith $number_major + $number_minor current=$func_arith_result - age="$number_minor" - revision="$number_minor" + age=$number_minor + revision=$number_minor lt_irix_increment=no ;; *) - func_fatal_configuration "$modename: unknown library version type \`$version_type'" + func_fatal_configuration "$modename: unknown library version type '$version_type'" ;; esac ;; no) - current="$1" - revision="$2" - age="$3" + current=$1 + revision=$2 + age=$3 ;; esac @@ -7378,30 +8854,30 @@ func_mode_link () case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) - func_error "CURRENT \`$current' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" + func_error "CURRENT '$current' must be a nonnegative integer" + func_fatal_error "'$vinfo' is not valid version information" ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) - func_error "REVISION \`$revision' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" + func_error "REVISION '$revision' must be a nonnegative integer" + func_fatal_error "'$vinfo' is not valid version information" ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) - func_error "AGE \`$age' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" + func_error "AGE '$age' must be a nonnegative integer" + func_fatal_error "'$vinfo' is not valid version information" ;; esac if test "$age" -gt "$current"; then - func_error "AGE \`$age' is greater than the current interface number \`$current'" - func_fatal_error "\`$vinfo' is not valid version information" + func_error "AGE '$age' is greater than the current interface number '$current'" + func_fatal_error "'$vinfo' is not valid version information" fi # Calculate the version variables. @@ -7416,26 +8892,36 @@ func_mode_link () # verstring for coding it into the library header func_arith $current - $age major=.$func_arith_result - versuffix="$major.$age.$revision" + versuffix=$major.$age.$revision # Darwin ld doesn't like 0 for these options... func_arith $current + 1 minor_current=$func_arith_result - xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" + xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + # On Darwin other compilers + case $CC in + nagfor*) + verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" + ;; + *) + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + ;; + esac ;; freebsd-aout) - major=".$current" - versuffix=".$current.$revision"; + major=.$current + versuffix=.$current.$revision ;; freebsd-elf) - major=".$current" - versuffix=".$current" + func_arith $current - $age + major=.$func_arith_result + versuffix=$major.$age.$revision ;; irix | nonstopux) - if test "X$lt_irix_increment" = "Xno"; then + if test no = "$lt_irix_increment"; then func_arith $current - $age else func_arith $current - $age + 1 @@ -7446,69 +8932,74 @@ func_mode_link () nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac - verstring="$verstring_prefix$major.$revision" + verstring=$verstring_prefix$major.$revision # Add in all the interfaces that we are compatible with. loop=$revision - while test "$loop" -ne 0; do + while test 0 -ne "$loop"; do func_arith $revision - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result - verstring="$verstring_prefix$major.$iface:$verstring" + verstring=$verstring_prefix$major.$iface:$verstring done - # Before this point, $major must not contain `.'. + # Before this point, $major must not contain '.'. major=.$major - versuffix="$major.$revision" + versuffix=$major.$revision ;; linux) # correct to gnu/linux during the next big refactor func_arith $current - $age major=.$func_arith_result - versuffix="$major.$age.$revision" + versuffix=$major.$age.$revision ;; osf) func_arith $current - $age major=.$func_arith_result - versuffix=".$current.$age.$revision" - verstring="$current.$age.$revision" + versuffix=.$current.$age.$revision + verstring=$current.$age.$revision # Add in all the interfaces that we are compatible with. loop=$age - while test "$loop" -ne 0; do + while test 0 -ne "$loop"; do func_arith $current - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result - verstring="$verstring:${iface}.0" + verstring=$verstring:$iface.0 done # Make executables depend on our current version. - func_append verstring ":${current}.0" + func_append verstring ":$current.0" ;; qnx) - major=".$current" - versuffix=".$current" + major=.$current + versuffix=.$current + ;; + + sco) + major=.$current + versuffix=.$current ;; sunos) - major=".$current" - versuffix=".$current.$revision" + major=.$current + versuffix=.$current.$revision ;; windows) # Use '-' rather than '.', since we only want one - # extension on DOS 8.3 filesystems. + # extension on DOS 8.3 file systems. func_arith $current - $age major=$func_arith_result - versuffix="-$major" + versuffix=-$major ;; *) - func_fatal_configuration "unknown library version type \`$version_type'" + func_fatal_configuration "unknown library version type '$version_type'" ;; esac @@ -7522,42 +9013,45 @@ func_mode_link () verstring= ;; *) - verstring="0.0" + verstring=0.0 ;; esac - if test "$need_version" = no; then + if test no = "$need_version"; then versuffix= else - versuffix=".0.0" + versuffix=.0.0 fi fi # Remove version info from name if versioning should be avoided - if test "$avoid_version" = yes && test "$need_version" = no; then + if test yes,no = "$avoid_version,$need_version"; then major= versuffix= - verstring="" + verstring= fi # Check to see if the archive will have undefined symbols. - if test "$allow_undefined" = yes; then - if test "$allow_undefined_flag" = unsupported; then - func_warning "undefined symbols not allowed in $host shared libraries" - build_libtool_libs=no - build_old_libs=yes + if test yes = "$allow_undefined"; then + if test unsupported = "$allow_undefined_flag"; then + if test yes = "$build_old_libs"; then + func_warning "undefined symbols not allowed in $host shared libraries; building static only" + build_libtool_libs=no + else + func_fatal_error "can't build $host shared library unless -no-undefined is specified" + fi fi else # Don't allow undefined symbols. - allow_undefined_flag="$no_undefined_flag" + allow_undefined_flag=$no_undefined_flag fi fi - func_generate_dlsyms "$libname" "$libname" "yes" + func_generate_dlsyms "$libname" "$libname" : func_append libobjs " $symfileobj" - test "X$libobjs" = "X " && libobjs= + test " " = "$libobjs" && libobjs= - if test "$opt_mode" != relink; then + if test relink != "$opt_mode"; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= @@ -7566,8 +9060,8 @@ func_mode_link () case $p in *.$objext | *.gcno) ;; - $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) - if test "X$precious_files_regex" != "X"; then + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*) + if test -n "$precious_files_regex"; then if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue @@ -7583,11 +9077,11 @@ func_mode_link () fi # Now set the variables for building old libraries. - if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then + if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then func_append oldlibs " $output_objdir/$libname.$libext" # Transform .lo files to .o files. - oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` + oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP` fi # Eliminate all temporary directories. @@ -7608,13 +9102,13 @@ func_mode_link () *) func_append finalize_rpath " $libdir" ;; esac done - if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then + if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened - old_dlfiles="$dlfiles" + old_dlfiles=$dlfiles dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in @@ -7624,7 +9118,7 @@ func_mode_link () done # Make sure dlprefiles contains only unique files - old_dlprefiles="$dlprefiles" + old_dlprefiles=$dlprefiles dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in @@ -7633,7 +9127,7 @@ func_mode_link () esac done - if test "$build_libtool_libs" = yes; then + if test yes = "$build_libtool_libs"; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) @@ -7657,7 +9151,7 @@ func_mode_link () ;; *) # Add libc to deplibs on all other systems if necessary. - if test "$build_libtool_need_lc" = "yes"; then + if test yes = "$build_libtool_need_lc"; then func_append deplibs " -lc" fi ;; @@ -7673,9 +9167,9 @@ func_mode_link () # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? - release="" - versuffix="" - major="" + release= + versuffix= + major= newdeplibs= droppeddeps=no case $deplibs_check_method in @@ -7704,20 +9198,20 @@ EOF -l*) func_stripname -l '' "$i" name=$func_stripname_result - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $i "*) func_append newdeplibs " $i" - i="" + i= ;; esac fi - if test -n "$i" ; then + if test -n "$i"; then libname=`eval "\\$ECHO \"$libname_spec\""` deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` set dummy $deplib_matches; shift deplib_match=$1 - if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then + if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then func_append newdeplibs " $i" else droppeddeps=yes @@ -7747,20 +9241,20 @@ EOF $opt_dry_run || $RM conftest if $LTCC $LTCFLAGS -o conftest conftest.c $i; then ldd_output=`ldd conftest` - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $i "*) func_append newdeplibs " $i" - i="" + i= ;; esac fi - if test -n "$i" ; then + if test -n "$i"; then libname=`eval "\\$ECHO \"$libname_spec\""` deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` set dummy $deplib_matches; shift deplib_match=$1 - if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then + if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then func_append newdeplibs " $i" else droppeddeps=yes @@ -7797,24 +9291,24 @@ EOF -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $a_deplib "*) func_append newdeplibs " $a_deplib" - a_deplib="" + a_deplib= ;; esac fi - if test -n "$a_deplib" ; then + if test -n "$a_deplib"; then libname=`eval "\\$ECHO \"$libname_spec\""` if test -n "$file_magic_glob"; then libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob` else libnameglob=$libname fi - test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob` + test yes = "$want_nocaseglob" && nocaseglob=`shopt -p nocaseglob` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do - if test "$want_nocaseglob" = yes; then + if test yes = "$want_nocaseglob"; then shopt -s nocaseglob potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` $nocaseglob @@ -7832,25 +9326,25 @@ EOF # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? - potlib="$potent_lib" + potlib=$potent_lib while test -h "$potlib" 2>/dev/null; do - potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` + potliblink=`ls -ld $potlib | $SED 's/.* -> //'` case $potliblink in - [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; - *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; + [\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;; + *) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then func_append newdeplibs " $a_deplib" - a_deplib="" + a_deplib= break 2 fi done done fi - if test -n "$a_deplib" ; then + if test -n "$a_deplib"; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." @@ -7858,7 +9352,7 @@ EOF echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib" ; then + if test -z "$potlib"; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" @@ -7881,30 +9375,30 @@ EOF -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $a_deplib "*) func_append newdeplibs " $a_deplib" - a_deplib="" + a_deplib= ;; esac fi - if test -n "$a_deplib" ; then + if test -n "$a_deplib"; then libname=`eval "\\$ECHO \"$libname_spec\""` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do - potlib="$potent_lib" # see symlink-check above in file_magic test + potlib=$potent_lib # see symlink-check above in file_magic test if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then func_append newdeplibs " $a_deplib" - a_deplib="" + a_deplib= break 2 fi done done fi - if test -n "$a_deplib" ; then + if test -n "$a_deplib"; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." @@ -7912,7 +9406,7 @@ EOF echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib" ; then + if test -z "$potlib"; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" @@ -7928,18 +9422,18 @@ EOF done # Gone through all deplibs. ;; none | unknown | *) - newdeplibs="" + newdeplibs= tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - for i in $predeps $postdeps ; do + if test yes = "$allow_libtool_libs_with_static_runtimes"; then + for i in $predeps $postdeps; do # can't use Xsed below, because $i might contain '/' - tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` + tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"` done fi case $tmp_deplibs in *[!\ \ ]*) echo - if test "X$deplibs_check_method" = "Xnone"; then + if test none = "$deplibs_check_method"; then echo "*** Warning: inter-library dependencies are not supported in this platform." else echo "*** Warning: inter-library dependencies are not known to be supported." @@ -7963,8 +9457,8 @@ EOF ;; esac - if test "$droppeddeps" = yes; then - if test "$module" = yes; then + if test yes = "$droppeddeps"; then + if test yes = "$module"; then echo echo "*** Warning: libtool could not satisfy all declared inter-library" $ECHO "*** dependencies of module $libname. Therefore, libtool will create" @@ -7973,12 +9467,12 @@ EOF if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" - echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + echo "*** lists from a program, using 'nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." - echo "*** \`nm' from GNU binutils and a full rebuild may help." + echo "*** 'nm' from GNU binutils and a full rebuild may help." fi - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" + if test no = "$build_old_libs"; then + oldlibs=$output_objdir/$libname.$libext build_libtool_libs=module build_old_libs=yes else @@ -7989,14 +9483,14 @@ EOF echo "*** automatically added whenever a program is linked with this library" echo "*** or is declared to -dlopen it." - if test "$allow_undefined" = no; then + if test no = "$allow_undefined"; then echo echo "*** Since this library must not contain undefined symbols," echo "*** because either the platform does not support them or" echo "*** it was explicitly requested with -no-undefined," echo "*** libtool will only create a static version of it." - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" + if test no = "$build_old_libs"; then + oldlibs=$output_objdir/$libname.$libext build_libtool_libs=module build_old_libs=yes else @@ -8042,7 +9536,7 @@ EOF *) func_append new_libs " $deplib" ;; esac done - deplibs="$new_libs" + deplibs=$new_libs # All the library-specific variables (install_libdir is set above). library_names= @@ -8050,25 +9544,25 @@ EOF dlname= # Test again, we may have decided not to build it any more - if test "$build_libtool_libs" = yes; then - # Remove ${wl} instances when linking with ld. + if test yes = "$build_libtool_libs"; then + # Remove $wl instances when linking with ld. # FIXME: should test the right _cmds variable. case $archive_cmds in *\$LD\ *) wl= ;; esac - if test "$hardcode_into_libs" = yes; then + if test yes = "$hardcode_into_libs"; then # Hardcode the library paths hardcode_libdirs= dep_rpath= - rpath="$finalize_rpath" - test "$opt_mode" != relink && rpath="$compile_rpath$rpath" + rpath=$finalize_rpath + test relink = "$opt_mode" || rpath=$compile_rpath$rpath for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then func_replace_sysroot "$libdir" libdir=$func_replace_sysroot_result if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" + hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in @@ -8093,7 +9587,7 @@ EOF # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" + libdir=$hardcode_libdirs eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" fi if test -n "$runpath_var" && test -n "$perm_rpath"; then @@ -8107,8 +9601,8 @@ EOF test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi - shlibpath="$finalize_shlibpath" - test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" + shlibpath=$finalize_shlibpath + test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi @@ -8118,19 +9612,19 @@ EOF eval library_names=\"$library_names_spec\" set dummy $library_names shift - realname="$1" + realname=$1 shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else - soname="$realname" + soname=$realname fi if test -z "$dlname"; then dlname=$soname fi - lib="$output_objdir/$realname" + lib=$output_objdir/$realname linknames= for link do @@ -8144,7 +9638,7 @@ EOF delfiles= if test -n "$export_symbols" && test -n "$include_expsyms"; then $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" - export_symbols="$output_objdir/$libname.uexp" + export_symbols=$output_objdir/$libname.uexp func_append delfiles " $export_symbols" fi @@ -8153,31 +9647,31 @@ EOF cygwin* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile - if test "x`$SED 1q $export_symbols`" != xEXPORTS; then + func_dll_def_p "$export_symbols" || { # and it's NOT already a .def file. Must figure out # which of the given symbols are data symbols and tag # them as such. So, trigger use of export_symbols_cmds. # export_symbols gets reassigned inside the "prepare # the list of exported symbols" if statement, so the # include_expsyms logic still works. - orig_export_symbols="$export_symbols" + orig_export_symbols=$export_symbols export_symbols= always_export_symbols=yes - fi + } fi ;; esac # Prepare the list of exported symbols if test -z "$export_symbols"; then - if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then - func_verbose "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" + if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then + func_verbose "generating symbol list for '$libname.la'" + export_symbols=$output_objdir/$libname.exp $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds - save_ifs="$IFS"; IFS='~' + save_ifs=$IFS; IFS='~' for cmd1 in $cmds; do - IFS="$save_ifs" + IFS=$save_ifs # Take the normal branch if the nm_file_list_spec branch # doesn't work or if tool conversion is not needed. case $nm_file_list_spec~$to_tool_file_cmd in @@ -8191,7 +9685,7 @@ EOF try_normal_branch=no ;; esac - if test "$try_normal_branch" = yes \ + if test yes = "$try_normal_branch" \ && { test "$len" -lt "$max_cmd_len" \ || test "$max_cmd_len" -le -1; } then @@ -8202,7 +9696,7 @@ EOF output_la=$func_basename_result save_libobjs=$libobjs save_output=$output - output=${output_objdir}/${output_la}.nm + output=$output_objdir/$output_la.nm func_to_tool_file "$output" libobjs=$nm_file_list_spec$func_to_tool_file_result func_append delfiles " $output" @@ -8225,8 +9719,8 @@ EOF break fi done - IFS="$save_ifs" - if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then + IFS=$save_ifs + if test -n "$export_symbols_regex" && test : != "$skipped_export"; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi @@ -8234,16 +9728,16 @@ EOF fi if test -n "$export_symbols" && test -n "$include_expsyms"; then - tmp_export_symbols="$export_symbols" - test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" + tmp_export_symbols=$export_symbols + test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi - if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then + if test : != "$skipped_export" && test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" + func_verbose "filter symbol list for '$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands which not all seds can handle. GNU sed should be fine + # 's' commands, which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. @@ -8262,11 +9756,11 @@ EOF ;; esac done - deplibs="$tmp_deplibs" + deplibs=$tmp_deplibs if test -n "$convenience"; then if test -n "$whole_archive_flag_spec" && - test "$compiler_needs_object" = yes && + test yes = "$compiler_needs_object" && test -z "$libobjs"; then # extract the archives, so we have objects to list. # TODO: could optimize this to just extract one archive. @@ -8277,7 +9771,7 @@ EOF eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= else - gentop="$output_objdir/${outputname}x" + gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $convenience @@ -8286,18 +9780,18 @@ EOF fi fi - if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then + if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" func_append linker_flags " $flag" fi # Make a backup of the uninstalled library when relinking - if test "$opt_mode" = relink; then + if test relink = "$opt_mode"; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi # Do each of the archive commands. - if test "$module" = yes && test -n "$module_cmds" ; then + if test yes = "$module" && test -n "$module_cmds"; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds @@ -8315,7 +9809,7 @@ EOF fi fi - if test "X$skipped_export" != "X:" && + if test : != "$skipped_export" && func_len " $test_cmds" && len=$func_len_result && test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then @@ -8348,8 +9842,8 @@ EOF last_robj= k=1 - if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then - output=${output_objdir}/${output_la}.lnkscript + if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then + output=$output_objdir/$output_la.lnkscript func_verbose "creating GNU ld script: $output" echo 'INPUT (' > $output for obj in $save_libobjs @@ -8361,14 +9855,14 @@ EOF func_append delfiles " $output" func_to_tool_file "$output" output=$func_to_tool_file_result - elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then - output=${output_objdir}/${output_la}.lnk + elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then + output=$output_objdir/$output_la.lnk func_verbose "creating linker input file list: $output" : > $output set x $save_libobjs shift firstobj= - if test "$compiler_needs_object" = yes; then + if test yes = "$compiler_needs_object"; then firstobj="$1 " shift fi @@ -8383,7 +9877,7 @@ EOF else if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." - output=$output_objdir/$output_la-${k}.$objext + output=$output_objdir/$output_la-$k.$objext eval test_cmds=\"$reload_cmds\" func_len " $test_cmds" len0=$func_len_result @@ -8395,13 +9889,13 @@ EOF func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result - if test "X$objlist" = X || + if test -z "$objlist" || test "$len" -lt "$max_cmd_len"; then func_append objlist " $obj" else # The command $test_cmds is almost too long, add a # command to the queue. - if test "$k" -eq 1 ; then + if test 1 -eq "$k"; then # The first file doesn't have a previous command to add. reload_objs=$objlist eval concat_cmds=\"$reload_cmds\" @@ -8411,10 +9905,10 @@ EOF reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" fi - last_robj=$output_objdir/$output_la-${k}.$objext + last_robj=$output_objdir/$output_la-$k.$objext func_arith $k + 1 k=$func_arith_result - output=$output_objdir/$output_la-${k}.$objext + output=$output_objdir/$output_la-$k.$objext objlist=" $obj" func_len " $last_robj" func_arith $len0 + $func_len_result @@ -8426,9 +9920,9 @@ EOF # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ reload_objs="$objlist $last_robj" - eval concat_cmds=\"\${concat_cmds}$reload_cmds\" + eval concat_cmds=\"\$concat_cmds$reload_cmds\" if test -n "$last_robj"; then - eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" + eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi func_append delfiles " $output" @@ -8436,9 +9930,9 @@ EOF output= fi - if ${skipped_export-false}; then - func_verbose "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" + ${skipped_export-false} && { + func_verbose "generating symbol list for '$libname.la'" + export_symbols=$output_objdir/$libname.exp $opt_dry_run || $RM $export_symbols libobjs=$output # Append the command to create the export file. @@ -8447,16 +9941,16 @@ EOF if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi - fi + } test -n "$save_libobjs" && func_verbose "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. - save_ifs="$IFS"; IFS='~' + save_ifs=$IFS; IFS='~' for cmd in $concat_cmds; do - IFS="$save_ifs" - $opt_silent || { + IFS=$save_ifs + $opt_quiet || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } @@ -8464,7 +9958,7 @@ EOF lt_exit=$? # Restore the uninstalled library and exit - if test "$opt_mode" = relink; then + if test relink = "$opt_mode"; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) @@ -8473,7 +9967,7 @@ EOF exit $lt_exit } done - IFS="$save_ifs" + IFS=$save_ifs if test -n "$export_symbols_regex" && ${skipped_export-false}; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' @@ -8481,18 +9975,18 @@ EOF fi fi - if ${skipped_export-false}; then + ${skipped_export-false} && { if test -n "$export_symbols" && test -n "$include_expsyms"; then - tmp_export_symbols="$export_symbols" - test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" + tmp_export_symbols=$export_symbols + test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" + func_verbose "filter symbol list for '$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands which not all seds can handle. GNU sed should be fine + # 's' commands, which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. @@ -8501,7 +9995,7 @@ EOF export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi - fi + } libobjs=$output # Restore the value of output. @@ -8515,7 +10009,7 @@ EOF # value of $libobjs for piecewise linking. # Do each of the archive commands. - if test "$module" = yes && test -n "$module_cmds" ; then + if test yes = "$module" && test -n "$module_cmds"; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else @@ -8537,7 +10031,7 @@ EOF # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then - gentop="$output_objdir/${outputname}x" + gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $dlprefiles @@ -8545,11 +10039,12 @@ EOF test "X$libobjs" = "X " && libobjs= fi - save_ifs="$IFS"; IFS='~' + save_ifs=$IFS; IFS='~' for cmd in $cmds; do - IFS="$save_ifs" + IFS=$sp$nl eval cmd=\"$cmd\" - $opt_silent || { + IFS=$save_ifs + $opt_quiet || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } @@ -8557,7 +10052,7 @@ EOF lt_exit=$? # Restore the uninstalled library and exit - if test "$opt_mode" = relink; then + if test relink = "$opt_mode"; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) @@ -8566,10 +10061,10 @@ EOF exit $lt_exit } done - IFS="$save_ifs" + IFS=$save_ifs # Restore the uninstalled library and exit - if test "$opt_mode" = relink; then + if test relink = "$opt_mode"; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? if test -n "$convenience"; then @@ -8589,39 +10084,39 @@ EOF done # If -module or -export-dynamic was specified, set the dlname. - if test "$module" = yes || test "$export_dynamic" = yes; then + if test yes = "$module" || test yes = "$export_dynamic"; then # On all known operating systems, these are identical. - dlname="$soname" + dlname=$soname fi fi ;; obj) - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - func_warning "\`-dlopen' is ignored for objects" + if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then + func_warning "'-dlopen' is ignored for objects" fi case " $deplibs" in *\ -l* | *\ -L*) - func_warning "\`-l' and \`-L' are ignored for objects" ;; + func_warning "'-l' and '-L' are ignored for objects" ;; esac test -n "$rpath" && \ - func_warning "\`-rpath' is ignored for objects" + func_warning "'-rpath' is ignored for objects" test -n "$xrpath" && \ - func_warning "\`-R' is ignored for objects" + func_warning "'-R' is ignored for objects" test -n "$vinfo" && \ - func_warning "\`-version-info' is ignored for objects" + func_warning "'-version-info' is ignored for objects" test -n "$release" && \ - func_warning "\`-release' is ignored for objects" + func_warning "'-release' is ignored for objects" case $output in *.lo) test -n "$objs$old_deplibs" && \ - func_fatal_error "cannot build library object \`$output' from non-libtool objects" + func_fatal_error "cannot build library object '$output' from non-libtool objects" libobj=$output func_lo2o "$libobj" @@ -8629,7 +10124,7 @@ EOF ;; *) libobj= - obj="$output" + obj=$output ;; esac @@ -8642,17 +10137,19 @@ EOF # the extraction. reload_conv_objs= gentop= - # reload_cmds runs $LD directly, so let us get rid of - # -Wl from whole_archive_flag_spec and hope we can get by with - # turning comma into space.. - wl= - + # if reload_cmds runs $LD directly, get rid of -Wl from + # whole_archive_flag_spec and hope we can get by with turning comma + # into space. + case $reload_cmds in + *\$LD[\ \$]*) wl= ;; + esac if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" - reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` + test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` + reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags else - gentop="$output_objdir/${obj}x" + gentop=$output_objdir/${obj}x func_append generated " $gentop" func_extract_archives $gentop $convenience @@ -8661,12 +10158,12 @@ EOF fi # If we're not building shared, we need to use non_pic_objs - test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" + test yes = "$build_libtool_libs" || libobjs=$non_pic_objects # Create the old-style object. - reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs - output="$obj" + output=$obj func_execute_cmds "$reload_cmds" 'exit $?' # Exit if we aren't doing a library object file. @@ -8678,7 +10175,7 @@ EOF exit $EXIT_SUCCESS fi - if test "$build_libtool_libs" != yes; then + test yes = "$build_libtool_libs" || { if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi @@ -8688,12 +10185,12 @@ EOF # $show "echo timestamp > $libobj" # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS - fi + } - if test -n "$pic_flag" || test "$pic_mode" != default; then + if test -n "$pic_flag" || test default != "$pic_mode"; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" - output="$libobj" + output=$libobj func_execute_cmds "$reload_cmds" 'exit $?' fi @@ -8710,16 +10207,14 @@ EOF output=$func_stripname_result.exe;; esac test -n "$vinfo" && \ - func_warning "\`-version-info' is ignored for programs" + func_warning "'-version-info' is ignored for programs" test -n "$release" && \ - func_warning "\`-release' is ignored for programs" + func_warning "'-release' is ignored for programs" - test "$preload" = yes \ - && test "$dlopen_support" = unknown \ - && test "$dlopen_self" = unknown \ - && test "$dlopen_self_static" = unknown && \ - func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." + $preload \ + && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \ + && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support." case $host in *-*-rhapsody* | *-*-darwin1.[012]) @@ -8733,11 +10228,11 @@ EOF *-*-darwin*) # Don't allow lazy linking, it breaks C++ global constructors # But is supposedly fixed on 10.4 or later (yay!). - if test "$tagname" = CXX ; then + if test CXX = "$tagname"; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) - func_append compile_command " ${wl}-bind_at_load" - func_append finalize_command " ${wl}-bind_at_load" + func_append compile_command " $wl-bind_at_load" + func_append finalize_command " $wl-bind_at_load" ;; esac fi @@ -8773,7 +10268,7 @@ EOF *) func_append new_libs " $deplib" ;; esac done - compile_deplibs="$new_libs" + compile_deplibs=$new_libs func_append compile_command " $compile_deplibs" @@ -8797,7 +10292,7 @@ EOF if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" + hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in @@ -8820,7 +10315,7 @@ EOF fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` + testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; ::) dllsearchpath=$libdir;; @@ -8837,10 +10332,10 @@ EOF # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" + libdir=$hardcode_libdirs eval rpath=\" $hardcode_libdir_flag_spec\" fi - compile_rpath="$rpath" + compile_rpath=$rpath rpath= hardcode_libdirs= @@ -8848,7 +10343,7 @@ EOF if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" + hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in @@ -8873,45 +10368,43 @@ EOF # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" + libdir=$hardcode_libdirs eval rpath=\" $hardcode_libdir_flag_spec\" fi - finalize_rpath="$rpath" + finalize_rpath=$rpath - if test -n "$libobjs" && test "$build_old_libs" = yes; then + if test -n "$libobjs" && test yes = "$build_old_libs"; then # Transform all the library objects into standard objects. compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` fi - func_generate_dlsyms "$outputname" "@PROGRAM@" "no" + func_generate_dlsyms "$outputname" "@PROGRAM@" false # template prelinking step if test -n "$prelink_cmds"; then func_execute_cmds "$prelink_cmds" 'exit $?' fi - wrappers_required=yes + wrappers_required=: case $host in *cegcc* | *mingw32ce*) # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. - wrappers_required=no + wrappers_required=false ;; *cygwin* | *mingw* ) - if test "$build_libtool_libs" != yes; then - wrappers_required=no - fi + test yes = "$build_libtool_libs" || wrappers_required=false ;; *) - if test "$need_relink" = no || test "$build_libtool_libs" != yes; then - wrappers_required=no + if test no = "$need_relink" || test yes != "$build_libtool_libs"; then + wrappers_required=false fi ;; esac - if test "$wrappers_required" = no; then + $wrappers_required || { # Replace the output file specification. compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` - link_command="$compile_command$compile_rpath" + link_command=$compile_command$compile_rpath # We have no uninstalled library dependencies, so finalize right now. exit_status=0 @@ -8924,12 +10417,12 @@ EOF fi # Delete the generated files. - if test -f "$output_objdir/${outputname}S.${objext}"; then - func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' + if test -f "$output_objdir/${outputname}S.$objext"; then + func_show_eval '$RM "$output_objdir/${outputname}S.$objext"' fi exit $exit_status - fi + } if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" @@ -8959,9 +10452,9 @@ EOF fi fi - if test "$no_install" = yes; then + if test yes = "$no_install"; then # We don't need to create a wrapper script. - link_command="$compile_var$compile_command$compile_rpath" + link_command=$compile_var$compile_command$compile_rpath # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. @@ -8978,27 +10471,28 @@ EOF exit $EXIT_SUCCESS fi - if test "$hardcode_action" = relink; then - # Fast installation is not supported - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" - - func_warning "this platform does not like uninstalled shared libraries" - func_warning "\`$output' will be relinked during installation" - else - if test "$fast_install" != no; then - link_command="$finalize_var$compile_command$finalize_rpath" - if test "$fast_install" = yes; then - relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` - else - # fast_install is set to needless - relink_command= - fi - else - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" - fi - fi + case $hardcode_action,$fast_install in + relink,*) + # Fast installation is not supported + link_command=$compile_var$compile_command$compile_rpath + relink_command=$finalize_var$finalize_command$finalize_rpath + + func_warning "this platform does not like uninstalled shared libraries" + func_warning "'$output' will be relinked during installation" + ;; + *,yes) + link_command=$finalize_var$compile_command$finalize_rpath + relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` + ;; + *,no) + link_command=$compile_var$compile_command$compile_rpath + relink_command=$finalize_var$finalize_command$finalize_rpath + ;; + *,needless) + link_command=$finalize_var$compile_command$finalize_rpath + relink_command= + ;; + esac # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` @@ -9055,8 +10549,8 @@ EOF func_dirname_and_basename "$output" "" "." output_name=$func_basename_result output_path=$func_dirname_result - cwrappersource="$output_path/$objdir/lt-$output_name.c" - cwrapper="$output_path/$output_name.exe" + cwrappersource=$output_path/$objdir/lt-$output_name.c + cwrapper=$output_path/$output_name.exe $RM $cwrappersource $cwrapper trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 @@ -9077,7 +10571,7 @@ EOF trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 $opt_dry_run || { # note: this script will not be executed, so do not chmod. - if test "x$build" = "x$host" ; then + if test "x$build" = "x$host"; then $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result else func_emit_wrapper no > $func_ltwrapper_scriptname_result @@ -9100,25 +10594,27 @@ EOF # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do - if test "$build_libtool_libs" = convenience; then - oldobjs="$libobjs_save $symfileobj" - addlibs="$convenience" - build_libtool_libs=no - else - if test "$build_libtool_libs" = module; then - oldobjs="$libobjs_save" + case $build_libtool_libs in + convenience) + oldobjs="$libobjs_save $symfileobj" + addlibs=$convenience build_libtool_libs=no - else + ;; + module) + oldobjs=$libobjs_save + addlibs=$old_convenience + build_libtool_libs=no + ;; + *) oldobjs="$old_deplibs $non_pic_objects" - if test "$preload" = yes && test -f "$symfileobj"; then - func_append oldobjs " $symfileobj" - fi - fi - addlibs="$old_convenience" - fi + $preload && test -f "$symfileobj" \ + && func_append oldobjs " $symfileobj" + addlibs=$old_convenience + ;; + esac if test -n "$addlibs"; then - gentop="$output_objdir/${outputname}x" + gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $addlibs @@ -9126,13 +10622,13 @@ EOF fi # Do each command in the archive commands. - if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then cmds=$old_archive_from_new_cmds else # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then - gentop="$output_objdir/${outputname}x" + gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $dlprefiles @@ -9153,7 +10649,7 @@ EOF : else echo "copying selected object files to avoid basename conflicts..." - gentop="$output_objdir/${outputname}x" + gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_mkdir_p "$gentop" save_oldobjs=$oldobjs @@ -9162,7 +10658,7 @@ EOF for obj in $save_oldobjs do func_basename "$obj" - objbase="$func_basename_result" + objbase=$func_basename_result case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) @@ -9231,18 +10727,18 @@ EOF else # the above command should be used before it gets too long oldobjs=$objlist - if test "$obj" = "$last_oldobj" ; then + if test "$obj" = "$last_oldobj"; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" + eval concat_cmds=\"\$concat_cmds$old_archive_cmds\" objlist= len=$len0 fi done RANLIB=$save_RANLIB oldobjs=$objlist - if test "X$oldobjs" = "X" ; then + if test -z "$oldobjs"; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" @@ -9259,7 +10755,7 @@ EOF case $output in *.la) old_library= - test "$build_old_libs" = yes && old_library="$libname.$libext" + test yes = "$build_old_libs" && old_library=$libname.$libext func_verbose "creating $output" # Preserve any variables that may affect compiler behavior @@ -9274,31 +10770,31 @@ EOF fi done # Quote the link command for shipping. - relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` - if test "$hardcode_automatic" = yes ; then + if test yes = "$hardcode_automatic"; then relink_command= fi # Only create the output if not a dry run. $opt_dry_run || { for installed in no yes; do - if test "$installed" = yes; then + if test yes = "$installed"; then if test -z "$install_libdir"; then break fi - output="$output_objdir/$outputname"i + output=$output_objdir/${outputname}i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) func_basename "$deplib" - name="$func_basename_result" + name=$func_basename_result func_resolve_sysroot "$deplib" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` test -z "$libdir" && \ - func_fatal_error "\`$deplib' is not a valid libtool archive" + func_fatal_error "'$deplib' is not a valid libtool archive" func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" ;; -L*) @@ -9314,23 +10810,23 @@ EOF *) func_append newdependency_libs " $deplib" ;; esac done - dependency_libs="$newdependency_libs" + dependency_libs=$newdependency_libs newdlfiles= for lib in $dlfiles; do case $lib in *.la) func_basename "$lib" - name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + name=$func_basename_result + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ - func_fatal_error "\`$lib' is not a valid libtool archive" + func_fatal_error "'$lib' is not a valid libtool archive" func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" ;; *) func_append newdlfiles " $lib" ;; esac done - dlfiles="$newdlfiles" + dlfiles=$newdlfiles newdlprefiles= for lib in $dlprefiles; do case $lib in @@ -9340,34 +10836,34 @@ EOF # didn't already link the preopened objects directly into # the library: func_basename "$lib" - name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + name=$func_basename_result + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ - func_fatal_error "\`$lib' is not a valid libtool archive" + func_fatal_error "'$lib' is not a valid libtool archive" func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" ;; esac done - dlprefiles="$newdlprefiles" + dlprefiles=$newdlprefiles else newdlfiles= for lib in $dlfiles; do case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlfiles " $abs" done - dlfiles="$newdlfiles" + dlfiles=$newdlfiles newdlprefiles= for lib in $dlprefiles; do case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlprefiles " $abs" done - dlprefiles="$newdlprefiles" + dlprefiles=$newdlprefiles fi $RM $output # place dlname in correct position for cygwin @@ -9383,10 +10879,9 @@ EOF case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) # If a -bindir argument was supplied, place the dll there. - if test "x$bindir" != x ; - then + if test -n "$bindir"; then func_relative_path "$install_libdir" "$bindir" - tdlname=$func_relative_path_result$dlname + tdlname=$func_relative_path_result/$dlname else # Otherwise fall back on heuristic. tdlname=../bin/$dlname @@ -9395,7 +10890,7 @@ EOF esac $ECHO > $output "\ # $outputname - a libtool library file -# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION +# Generated by $PROGRAM (GNU $PACKAGE) $VERSION # # Please DO NOT delete this file! # It is necessary for linking the library. @@ -9409,7 +10904,7 @@ library_names='$library_names' # The name of the static archive. old_library='$old_library' -# Linker flags that can not go in dependency_libs. +# Linker flags that cannot go in dependency_libs. inherited_linker_flags='$new_inherited_linker_flags' # Libraries that this one depends upon. @@ -9435,7 +10930,7 @@ dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" - if test "$installed" = no && test "$need_relink" = yes; then + if test no,yes = "$installed,$need_relink"; then $ECHO >> $output "\ relink_command=\"$relink_command\"" fi @@ -9450,27 +10945,29 @@ relink_command=\"$relink_command\"" exit $EXIT_SUCCESS } -{ test "$opt_mode" = link || test "$opt_mode" = relink; } && - func_mode_link ${1+"$@"} +if test link = "$opt_mode" || test relink = "$opt_mode"; then + func_mode_link ${1+"$@"} +fi # func_mode_uninstall arg... func_mode_uninstall () { - $opt_debug - RM="$nonopt" + $debug_cmd + + RM=$nonopt files= - rmforce= + rmforce=false exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. - libtool_install_magic="$magic" + libtool_install_magic=$magic for arg do case $arg in - -f) func_append RM " $arg"; rmforce=yes ;; + -f) func_append RM " $arg"; rmforce=: ;; -*) func_append RM " $arg" ;; *) func_append files " $arg" ;; esac @@ -9483,18 +10980,18 @@ func_mode_uninstall () for file in $files; do func_dirname "$file" "" "." - dir="$func_dirname_result" - if test "X$dir" = X.; then - odir="$objdir" + dir=$func_dirname_result + if test . = "$dir"; then + odir=$objdir else - odir="$dir/$objdir" + odir=$dir/$objdir fi func_basename "$file" - name="$func_basename_result" - test "$opt_mode" = uninstall && odir="$dir" + name=$func_basename_result + test uninstall = "$opt_mode" && odir=$dir # Remember odir for removal later, being careful to avoid duplicates - if test "$opt_mode" = clean; then + if test clean = "$opt_mode"; then case " $rmdirs " in *" $odir "*) ;; *) func_append rmdirs " $odir" ;; @@ -9509,11 +11006,11 @@ func_mode_uninstall () elif test -d "$file"; then exit_status=1 continue - elif test "$rmforce" = yes; then + elif $rmforce; then continue fi - rmfiles="$file" + rmfiles=$file case $name in *.la) @@ -9527,7 +11024,7 @@ func_mode_uninstall () done test -n "$old_library" && func_append rmfiles " $odir/$old_library" - case "$opt_mode" in + case $opt_mode in clean) case " $library_names " in *" $dlname "*) ;; @@ -9538,12 +11035,12 @@ func_mode_uninstall () uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. - func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' + func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. - func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' + func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1' fi # FIXME: should reinstall the best remaining shared library. ;; @@ -9559,21 +11056,19 @@ func_mode_uninstall () func_source $dir/$name # Add PIC object to the list of files to remove. - if test -n "$pic_object" && - test "$pic_object" != none; then + if test -n "$pic_object" && test none != "$pic_object"; then func_append rmfiles " $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. - if test -n "$non_pic_object" && - test "$non_pic_object" != none; then + if test -n "$non_pic_object" && test none != "$non_pic_object"; then func_append rmfiles " $dir/$non_pic_object" fi fi ;; *) - if test "$opt_mode" = clean ; then + if test clean = "$opt_mode"; then noexename=$name case $file in *.exe) @@ -9600,12 +11095,12 @@ func_mode_uninstall () # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles - func_append rmfiles " $odir/$name $odir/${name}S.${objext}" - if test "$fast_install" = yes && test -n "$relink_command"; then + func_append rmfiles " $odir/$name $odir/${name}S.$objext" + if test yes = "$fast_install" && test -n "$relink_command"; then func_append rmfiles " $odir/lt-$name" fi - if test "X$noexename" != "X$name" ; then - func_append rmfiles " $odir/lt-${noexename}.c" + if test "X$noexename" != "X$name"; then + func_append rmfiles " $odir/lt-$noexename.c" fi fi fi @@ -9614,7 +11109,7 @@ func_mode_uninstall () func_show_eval "$RM $rmfiles" 'exit_status=1' done - # Try to remove the ${objdir}s in the directories where we deleted files + # Try to remove the $objdir's in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then func_show_eval "rmdir $dir >/dev/null 2>&1" @@ -9624,16 +11119,17 @@ func_mode_uninstall () exit $exit_status } -{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && - func_mode_uninstall ${1+"$@"} +if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then + func_mode_uninstall ${1+"$@"} +fi test -z "$opt_mode" && { - help="$generic_help" + help=$generic_help func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ - func_fatal_help "invalid operation mode \`$opt_mode'" + func_fatal_help "invalid operation mode '$opt_mode'" if test -n "$exec_cmd"; then eval exec "$exec_cmd" @@ -9644,7 +11140,7 @@ exit $exit_status # The TAGs below are defined such that we never get into a situation -# in which we disable both kinds of libraries. Given conflicting +# where we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support @@ -9667,5 +11163,3 @@ build_old_libs=`case $build_libtool_libs # mode:shell-script # sh-indentation:2 # End: -# vi:sw=2 - diff -Nurp inn-2.6.0/support/mkmanifest inn-2.6.1/support/mkmanifest --- inn-2.6.0/support/mkmanifest 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/support/mkmanifest 2016-11-27 06:03:42.000000000 -0800 @@ -1,6 +1,6 @@ #! /usr/bin/perl -w -## $Id: mkmanifest 9778 2015-01-07 20:50:16Z iulius $ +## $Id: mkmanifest 10071 2016-09-17 20:40:43Z iulius $ ## ## Generate a filename-only manifest from an INN tree. ## @@ -279,6 +279,7 @@ tests/lib/getaddrinfo.t tests/lib/getnameinfo.t tests/lib/hash.t tests/lib/hashtab.t +tests/lib/headers.t tests/lib/hex.t tests/lib/inet_aton.t tests/lib/inet_ntoa.t diff -Nurp inn-2.6.0/tests/Makefile inn-2.6.1/tests/Makefile --- inn-2.6.0/tests/Makefile 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/Makefile 2016-11-27 06:03:42.000000000 -0800 @@ -1,9 +1,9 @@ -## $Id: Makefile 9751 2014-11-23 21:47:38Z iulius $ +## $Id: Makefile 10071 2016-09-17 20:40:43Z iulius $ include ../Makefile.global top = .. -RUNTESTS_CFLAGS = -DSOURCE='"$(abs_builddir)/tests"' -DBUILD='"$(abs_builddir)/tests"' +RUNTESTS_CFLAGS = -DC_TAP_SOURCE='"$(abs_builddir)/tests"' -DC_TAP_BUILD='"$(abs_builddir)/tests"' CFLAGS = $(GCFLAGS) $(BDB_CPPFLAGS) $(DBM_CPPFLAGS) $(PERL_CPPFLAGS) $(PYTHON_CPPFLAGS) $(SSL_CPPFLAGS) $(SASL_CPPFLAGS) $(KRB5_CPPFLAGS) $(RUNTESTS_CFLAGS) -I. ## On some platforms, linking with libm is needed as the test suite uses @@ -19,7 +19,7 @@ TESTS = authprogs/ident.t innd/artparse. lib/buffer.t lib/concat.t lib/conffile.t lib/confparse.t lib/date.t \ lib/dispatch.t lib/fdflag.t \ lib/getaddrinfo.t lib/getnameinfo.t lib/hash.t \ - lib/hashtab.t lib/hex.t lib/inet_aton.t \ + lib/hashtab.t lib/headers.t lib/hex.t lib/inet_aton.t \ lib/inet_ntoa.t lib/inet_ntop.t lib/innconf.t lib/list.t lib/md5.t \ lib/memcmp.t lib/messages.t lib/mkstemp.t \ lib/network/addr-ipv4.t lib/network/addr-ipv6.t \ @@ -133,6 +133,9 @@ lib/hash.t: lib/hash-t.o tap/basic.o $(L lib/hashtab.t: lib/hashtab-t.o tap/basic.o $(LIBINN) $(LINK) lib/hashtab-t.o tap/basic.o $(LIBINN) +lib/headers.t: lib/headers-t.o tap/basic.o $(LIBINN) + $(LINK) lib/headers-t.o tap/basic.o $(LIBINN) + lib/hex.t: lib/hex-t.o tap/basic.o $(LIBINN) $(LINK) lib/hex-t.o tap/basic.o $(LIBINN) $(LIBS) diff -Nurp inn-2.6.0/tests/README inn-2.6.1/tests/README --- inn-2.6.0/tests/README 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/README 2016-11-27 06:03:42.000000000 -0800 @@ -70,18 +70,20 @@ Writing TAP Tests One of the special features of C TAP Harness is the environment that it sets up for your test cases. If your test program is called under - the runtests driver, the environment variables SOURCE and BUILD will - be set to the top of the test directory in the source tree and the top - of the build tree, respectively. You can use those environment - variables to locate additional test data, programs and libraries built - as part of your software build, and other supporting information - needed by tests. + the runtests driver, the environment variables C_TAP_SOURCE and + C_TAP_BUILD will be set to the top of the test directory in the source + tree and the top of the build tree, respectively. You can use those + environment variables to locate additional test data, programs and + libraries built as part of your software build, and other supporting + information needed by tests. The C and shell TAP libraries support a test_file_path() function, which looks for a file under the build tree and then under the source - tree, using the BUILD and SOURCE environment variables, and return the - full path to the file. This can be used to locate supporting data - files. + tree, using the C_TAP_BUILD and C_TAP_SOURCE environment variables, + and return the full path to the file. This can be used to locate + supporting data files. They also support a test_tmpdir() function + that returns a directory that can be used for temporary files during + tests. Perl @@ -151,7 +153,7 @@ Writing TAP Tests Complete API documentation for the basic C TAP library that comes with C TAP Harness is available at: - + It's common to need additional test functions and utility functions for your C tests, particularly if you have to set up and tear down a @@ -168,7 +170,7 @@ Writing TAP Tests Libraries of additional useful TAP test functions are available in rra-c-util at: - + Some of the code there is particularly useful when testing programs that require Kerberos keys. @@ -190,15 +192,15 @@ Writing TAP Tests your test suite area. It can then be loaded by tests written in shell using the environment set up by runtests with: - . "$SOURCE"/tap/libtap.sh + . "$C_TAP_SOURCE"/tap/libtap.sh Here is a complete test case written in shell which produces the same output as the TAP sample above: #!/bin/sh - . "$SOURCE"/tap/libtap.sh - cd "$BUILD" + . "$C_TAP_SOURCE"/tap/libtap.sh + cd "$C_TAP_BUILD" plan 4 ok 'the first test' true @@ -238,9 +240,9 @@ Writing TAP Tests License This file is part of the documentation of C TAP Harness, which can be - found at . + found at . - Copyright 2010 Russ Allbery + Copyright 2010, 2016 Russ Allbery Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff -Nurp inn-2.6.0/tests/TESTS inn-2.6.1/tests/TESTS --- inn-2.6.0/tests/TESTS 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/TESTS 2016-11-27 06:03:42.000000000 -0800 @@ -17,6 +17,7 @@ lib/getaddrinfo lib/getnameinfo lib/hash lib/hashtab +lib/headers lib/hex lib/inet_aton lib/inet_ntoa diff -Nurp inn-2.6.0/tests/docs/pod.t inn-2.6.1/tests/docs/pod.t --- inn-2.6.0/tests/docs/pod.t 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/docs/pod.t 2016-11-27 06:03:42.000000000 -0800 @@ -1,13 +1,13 @@ #!/usr/bin/perl # -# $Id: pod.t 9824 2015-04-16 11:21:24Z iulius $ +# $Id: pod.t 10099 2016-11-04 22:21:59Z iulius $ # # Test POD formatting. # # This file is part of C TAP Harness. The current version plus supporting -# documentation is at . +# documentation is at . # -# Copyright 2009, 2010, 2013, 2014, 2015 Russ Allbery +# Copyright 2009, 2010, 2013, 2014, 2015, 2016 Russ Allbery # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the "Software"), @@ -34,9 +34,9 @@ use warnings; use File::Spec; use Test::More; -# Abort if SOURCE isn't set. -if (!$ENV{SOURCE}) { - BAIL_OUT('SOURCE environment variable not set'); +# 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. @@ -45,8 +45,8 @@ if (!eval { require Test::Pod }) { } Test::Pod->import; -# SOURCE will be the test directory. Change to the parent. -my ($vol, $dirs) = File::Spec->splitpath($ENV{SOURCE}, 1); +# 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) { diff -Nurp inn-2.6.0/tests/lib/asprintf-t.c inn-2.6.1/tests/lib/asprintf-t.c --- inn-2.6.0/tests/lib/asprintf-t.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/lib/asprintf-t.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,9 +1,9 @@ -/* $Id: asprintf-t.c 9759 2014-12-04 20:11:38Z iulius $ +/* $Id: asprintf-t.c 10099 2016-11-04 22:21:59Z iulius $ * * asprintf and vasprintf test suite. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Written by Russ Allbery * diff -Nurp inn-2.6.0/tests/lib/buffer-t.c inn-2.6.1/tests/lib/buffer-t.c --- inn-2.6.0/tests/lib/buffer-t.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/lib/buffer-t.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,9 +1,9 @@ -/* $Id: buffer-t.c 9913 2015-07-07 16:31:52Z iulius $ +/* $Id: buffer-t.c 10099 2016-11-04 22:21:59Z iulius $ * * buffer test suite. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Written by Russ Allbery * diff -Nurp inn-2.6.0/tests/lib/concat-t.c inn-2.6.1/tests/lib/concat-t.c --- inn-2.6.0/tests/lib/concat-t.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/lib/concat-t.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,10 +1,11 @@ /* * concat test suite. * - * $Id: concat-t.c 9767 2014-12-07 21:13:43Z iulius $ + * $Id: concat-t.c 10098 2016-11-04 22:19:40Z iulius $ * - * 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 *used to be* maintained in the + * rra-c-util package, which can be found at + * . * * Written by Russ Allbery * diff -Nurp inn-2.6.0/tests/lib/confparse-t.c inn-2.6.1/tests/lib/confparse-t.c --- inn-2.6.0/tests/lib/confparse-t.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/lib/confparse-t.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: confparse-t.c 9764 2014-12-07 20:54:31Z iulius $ */ +/* $Id: confparse-t.c 10013 2016-05-05 12:41:49Z iulius $ */ /* confparse test suite. */ #include "config.h" @@ -18,7 +18,7 @@ static char * read_section(FILE *file) { - char buf[1024] = ""; + char buf[1024]; char *data = NULL; char *status; diff -Nurp inn-2.6.0/tests/lib/date-t.c inn-2.6.1/tests/lib/date-t.c --- inn-2.6.0/tests/lib/date-t.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/lib/date-t.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: date-t.c 9669 2014-09-03 17:18:22Z iulius $ */ +/* $Id: date-t.c 9971 2015-12-10 20:30:10Z iulius $ */ /* makedate test suite */ #include "config.h" @@ -185,13 +185,13 @@ main(void) status = makedate(100000000UL, false, buff, sizeof(buff)); ok(3, status); - ok_string(4, "Sat, 3 Mar 1973 09:46:40 +0000 (UTC)", buff); + ok_string(4, "Sat, 3 Mar 1973 09:46:40 -0000 (UTC)", buff); status = makedate(100000000UL, true, buff, sizeof(buff)); ok(5, status); ok_string(6, "Sat, 3 Mar 1973 01:46:40 -0800 (PST)", buff); status = makedate(300000000UL, false, buff, sizeof(buff)); ok(7, status); - ok_string(8, "Thu, 5 Jul 1979 05:20:00 +0000 (UTC)", buff); + ok_string(8, "Thu, 5 Jul 1979 05:20:00 -0000 (UTC)", buff); status = makedate(300000000UL, true, buff, sizeof(buff)); ok(9, status); ok_string(10, "Wed, 4 Jul 1979 22:20:00 -0700 (PDT)", buff); @@ -200,7 +200,7 @@ main(void) ok(11, !status); status = makedate(300000000UL, false, buff, 32); ok(12, status); - ok_string(13, "Thu, 5 Jul 1979 05:20:00 +0000", buff); + ok_string(13, "Thu, 5 Jul 1979 05:20:00 -0000", buff); status = makedate(300000000UL, true, buff, 32); ok(14, status); ok_string(15, "Wed, 4 Jul 1979 22:20:00 -0700", buff); diff -Nurp inn-2.6.0/tests/lib/fakewrite.c inn-2.6.1/tests/lib/fakewrite.c --- inn-2.6.0/tests/lib/fakewrite.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/lib/fakewrite.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,9 +1,9 @@ -/* $Id: fakewrite.c 9680 2014-09-06 08:07:27Z iulius $ +/* $Id: fakewrite.c 10099 2016-11-04 22:21:59Z iulius $ * * Fake write and writev functions for testing xwrite and xwritev. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Copyright 2000, 2001, 2002, 2004 Russ Allbery * diff -Nurp inn-2.6.0/tests/lib/fdflag-t.c inn-2.6.1/tests/lib/fdflag-t.c --- inn-2.6.0/tests/lib/fdflag-t.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/lib/fdflag-t.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,9 +1,9 @@ -/* $Id: fdflag-t.c 9758 2014-12-01 21:33:16Z iulius $ +/* $Id: fdflag-t.c 10099 2016-11-04 22:21:59Z iulius $ * * fdflag test suite. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Written by Russ Allbery * Copyright 2008, 2009 diff -Nurp inn-2.6.0/tests/lib/getaddrinfo-t.c inn-2.6.1/tests/lib/getaddrinfo-t.c --- inn-2.6.0/tests/lib/getaddrinfo-t.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/lib/getaddrinfo-t.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,9 +1,9 @@ -/* $Id: getaddrinfo-t.c 9883 2015-05-25 10:03:20Z iulius $ +/* $Id: getaddrinfo-t.c 10106 2016-11-04 22:45:10Z iulius $ * * getaddrinfo test suite. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Written by Russ Allbery * @@ -262,7 +262,7 @@ main(void) is_int(0, saddr->sin_port, "...port is 0"); first = ai; for (found = 0; ai != NULL; ai = ai->ai_next) { - if (!strcmp(ai->ai_canonname, first->ai_canonname) == 0) { + if (strcmp(ai->ai_canonname, first->ai_canonname) != 0) { ok(0, "...canonname matches"); break; } diff -Nurp inn-2.6.0/tests/lib/getnameinfo-t.c inn-2.6.1/tests/lib/getnameinfo-t.c --- inn-2.6.0/tests/lib/getnameinfo-t.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/lib/getnameinfo-t.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,9 +1,9 @@ -/* $Id: getnameinfo-t.c 9677 2014-09-05 19:32:31Z iulius $ +/* $Id: getnameinfo-t.c 10099 2016-11-04 22:21:59Z iulius $ * * getnameinfo test suite. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Written by Russ Allbery * diff -Nurp inn-2.6.0/tests/lib/hashtab-t.c inn-2.6.1/tests/lib/hashtab-t.c --- inn-2.6.0/tests/lib/hashtab-t.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/lib/hashtab-t.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: hashtab-t.c 9669 2014-09-03 17:18:22Z iulius $ */ +/* $Id: hashtab-t.c 10015 2016-05-05 12:43:09Z iulius $ */ /* Test suite for lib/hashtab.c. */ #include "config.h" @@ -165,8 +165,10 @@ main(void) } ok(37, !reported); - if (fseek(words, 0, SEEK_SET) < 0) + if (fseek(words, 0, SEEK_SET) < 0) { + fclose(words); sysdie("Unable to rewind words file"); + } reported = false; if (hash == NULL) reported = true; @@ -182,6 +184,7 @@ main(void) ok(38, !reported); hash_free(hash); + fclose(words); return 0; } diff -Nurp inn-2.6.0/tests/lib/headers-t.c inn-2.6.1/tests/lib/headers-t.c --- inn-2.6.0/tests/lib/headers-t.c 1969-12-31 16:00:00.000000000 -0800 +++ inn-2.6.1/tests/lib/headers-t.c 2016-11-27 06:03:42.000000000 -0800 @@ -0,0 +1,70 @@ +/* +** headers test suite. +** +** $Id: headers-t.c 10071 2016-09-17 20:40:43Z iulius $ +*/ + +#define LIBTEST_NEW_FORMAT 1 + +#include "inn/libinn.h" +#include "tap/basic.h" + +int +main(void) +{ + plan(9+3+9+7+12+5); + + ok(!IsValidHeaderName(NULL), "bad header name 1"); + ok(!IsValidHeaderName(""), "bad header name 2"); + ok(!IsValidHeaderName(":"), "bad header name 3"); + ok(!IsValidHeaderName("Sub:ject"), "bad header name 4"); + ok(!IsValidHeaderName("Subject:"), "bad header name 5"); + /* \177 (octal notation) is DEL. */ + ok(!IsValidHeaderName("\177Subject"), "bad header name 6"); + ok(!IsValidHeaderName("Sub ject"), "bad header name 7"); + ok(!IsValidHeaderName("Sub\tject"), "bad header name 8"); + ok(!IsValidHeaderName("Sub\r\nject"), "bad header name 9"); + + ok(IsValidHeaderName("Subject"), "good header name 1"); + ok(IsValidHeaderName("subJECT"), "good header name 2"); + ok(IsValidHeaderName("X-#%-T`?!"), "good header name 3"); + + ok(!IsValidHeaderBody(NULL), "bad header body 1"); + ok(!IsValidHeaderBody(""), "bad header body 2"); + ok(!IsValidHeaderBody("a\177b"), "bad header body 3"); + ok(!IsValidHeaderBody("a\r\nb"), "bad header body 4"); + ok(!IsValidHeaderBody("a\nb"), "bad header body 5"); + ok(!IsValidHeaderBody("\n"), "bad header body 6"); + ok(!IsValidHeaderBody("\r\n b"), "bad header body 7"); + ok(!IsValidHeaderBody("a\r\n b\r\n"), "bad header body 8"); + ok(!IsValidHeaderBody("a\n\tb\n \t\n c"), "bad header body 9"); + + ok(IsValidHeaderBody(":"), "good header body 1"); + ok(IsValidHeaderBody("a b"), "good header body 2"); + ok(IsValidHeaderBody("a\t\tb"), "good header body 3"); + ok(IsValidHeaderBody("a\r\n b"), "good header body 4"); + ok(IsValidHeaderBody("a\r\n\tb"), "good header body 5"); + ok(IsValidHeaderBody("a\n b"), "good header body 6"); + ok(IsValidHeaderBody("a\n\tb\n \tc\n d"), "good header body 7"); + + ok(!IsValidHeaderField(NULL), "bad header field 1"); + ok(!IsValidHeaderField(""), "bad header field 2"); + ok(!IsValidHeaderField(":"), "bad header field 3"); + ok(!IsValidHeaderField("Subject"), "bad header field 4"); + ok(!IsValidHeaderField("Subject:"), "bad header field 5"); + ok(!IsValidHeaderField("Sub:ject"), "bad header field 6"); + ok(!IsValidHeaderField("Subject: "), "bad header field 7"); + ok(!IsValidHeaderField("Subject:\ta"), "bad header field 8"); + ok(!IsValidHeaderField("Subject: a\n"), "bad header field 9"); + ok(!IsValidHeaderField("\177Subject: a"), "bad header field 10"); + ok(!IsValidHeaderField("Subject: a\177b"), "bad header field 11"); + ok(!IsValidHeaderField("Subject: a\nb"), "bad header field 12"); + + ok(IsValidHeaderField("Subject: a"), "good header field 1"); + ok(IsValidHeaderField("Subject: a\n\tb"), "good header field 2"); + ok(IsValidHeaderField("Sub: ject"), "good header field 3"); + ok(IsValidHeaderField("X-#%-T`?!: yeah"), "good header field 4"); + ok(IsValidHeaderField("Subject: a\r\n\tb"), "good header field 5"); + + return 0; +} diff -Nurp inn-2.6.0/tests/lib/inet_aton-t.c inn-2.6.1/tests/lib/inet_aton-t.c --- inn-2.6.0/tests/lib/inet_aton-t.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/lib/inet_aton-t.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,9 +1,9 @@ -/* $Id: inet_aton-t.c 9675 2014-09-04 19:45:26Z iulius $ +/* $Id: inet_aton-t.c 10099 2016-11-04 22:21:59Z iulius $ * * inet_aton test suite. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Written by Russ Allbery * diff -Nurp inn-2.6.0/tests/lib/inet_ntoa-t.c inn-2.6.1/tests/lib/inet_ntoa-t.c --- inn-2.6.0/tests/lib/inet_ntoa-t.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/lib/inet_ntoa-t.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,9 +1,9 @@ -/* $Id: inet_ntoa-t.c 9675 2014-09-04 19:45:26Z iulius $ +/* $Id: inet_ntoa-t.c 10104 2016-11-04 22:41:36Z iulius $ * * inet_ntoa test suite. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Written by Russ Allbery * @@ -24,7 +24,7 @@ #include "tap/basic.h" -const char *test_inet_ntoa(const struct in_addr); +char *test_inet_ntoa(struct in_addr); static void diff -Nurp inn-2.6.0/tests/lib/inet_ntop-t.c inn-2.6.1/tests/lib/inet_ntop-t.c --- inn-2.6.0/tests/lib/inet_ntop-t.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/lib/inet_ntop-t.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,9 +1,9 @@ -/* $Id: inet_ntop-t.c 9675 2014-09-04 19:45:26Z iulius $ +/* $Id: inet_ntop-t.c 10099 2016-11-04 22:21:59Z iulius $ * * inet_ntop test suite. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Written by Russ Allbery * diff -Nurp inn-2.6.0/tests/lib/messages-t.c inn-2.6.1/tests/lib/messages-t.c --- inn-2.6.0/tests/lib/messages-t.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/lib/messages-t.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,9 +1,9 @@ -/* $Id: messages-t.c 9913 2015-07-07 16:31:52Z iulius $ +/* $Id: messages-t.c 10099 2016-11-04 22:21:59Z iulius $ * * Test suite for error handling routines. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Written by Russ Allbery * Copyright 2002, 2004, 2005, 2015 Russ Allbery diff -Nurp inn-2.6.0/tests/lib/mkstemp-t.c inn-2.6.1/tests/lib/mkstemp-t.c --- inn-2.6.0/tests/lib/mkstemp-t.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/lib/mkstemp-t.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,9 +1,9 @@ -/* $Id: mkstemp-t.c 9675 2014-09-04 19:45:26Z iulius $ +/* $Id: mkstemp-t.c 10099 2016-11-04 22:21:59Z iulius $ * * mkstemp test suite. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Written by Russ Allbery * diff -Nurp inn-2.6.0/tests/lib/network/addr-ipv4-t.c inn-2.6.1/tests/lib/network/addr-ipv4-t.c --- inn-2.6.0/tests/lib/network/addr-ipv4-t.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/lib/network/addr-ipv4-t.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,12 +1,12 @@ -/* $Id: addr-ipv4-t.c 9691 2014-09-17 16:31:35Z iulius $ +/* $Id: addr-ipv4-t.c 10105 2016-11-04 22:42:26Z iulius $ * * Test network address functions for IPv4. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Written by Russ Allbery - * Copyright 2005, 2013 Russ Allbery + * Copyright 2005, 2013, 2016 Russ Allbery * Copyright 2009, 2010, 2011, 2012, 2013 * The Board of Trustees of the Leland Stanford Junior University * @@ -58,14 +58,16 @@ is_addr_compare(bool expected, const cha int main(void) { - int status; + int flag, status; + socklen_t flaglen; struct addrinfo *ai, *ai2; struct addrinfo hints; char addr[INET6_ADDRSTRLEN]; + socket_type fd; static const char *port = "119"; /* Set up the plan. */ - plan(29); + plan(31); /* Get a sockaddr to use for subsequent tests. */ memset(&hints, 0, sizeof(hints)); @@ -126,5 +128,21 @@ 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"); + + /* Test setting various socket options. */ + fd = socket(PF_INET, SOCK_STREAM, IPPROTO_IP); + if (fd == INVALID_SOCKET) + sysbail("cannot create socket"); + network_set_reuseaddr(fd); +#ifdef SO_REUSEADDR + flag = 0; + flaglen = sizeof(flag); + is_int(0, getsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &flag, &flaglen), + "Getting SO_REUSEADDR works"); + ok(flag, "...and it is set"); +#else + skip_block(2, "SO_REUSEADDR not supported"); +#endif + close(fd); return 0; } diff -Nurp inn-2.6.0/tests/lib/network/addr-ipv6-t.c inn-2.6.1/tests/lib/network/addr-ipv6-t.c --- inn-2.6.0/tests/lib/network/addr-ipv6-t.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/lib/network/addr-ipv6-t.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,12 +1,12 @@ -/* $Id: addr-ipv6-t.c 9691 2014-09-17 16:31:35Z iulius $ +/* $Id: addr-ipv6-t.c 10105 2016-11-04 22:42:26Z iulius $ * * Test network address functions for IPv6. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Written by Russ Allbery - * Copyright 2005, 2013 Russ Allbery + * Copyright 2005, 2013, 2016 Russ Allbery * Copyright 2009, 2010, 2011, 2012, 2013 * The Board of Trustees of the Leland Stanford Junior University * @@ -60,11 +60,13 @@ is_addr_compare(bool expected, const cha int main(void) { - int status; + int flag, status; + socklen_t flaglen; struct addrinfo *ai4, *ai6; struct addrinfo hints; char addr[INET6_ADDRSTRLEN]; char *p; + socket_type fd; static const char *port = "119"; static const char *ipv6_addr = "FEDC:BA98:7654:3210:FEDC:BA98:7654:3210"; @@ -73,7 +75,7 @@ main(void) #endif /* Set up the plan. */ - plan(28); + plan(34); /* Get IPv4 and IPv6 sockaddrs to use for subsequent tests. */ memset(&hints, 0, sizeof(hints)); @@ -145,5 +147,42 @@ 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"); + + /* Test setting various socket options. */ + fd = socket(PF_INET6, SOCK_STREAM, IPPROTO_IP); + if (fd == INVALID_SOCKET) + sysbail("cannot create socket"); + network_set_reuseaddr(fd); +#ifdef SO_REUSEADDR + flag = 0; + flaglen = sizeof(flag); + is_int(0, getsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &flag, &flaglen), + "Getting SO_REUSEADDR works"); + ok(flag, "...and it is set"); +#else + skip_block(2, "SO_REUSEADDR not supported"); +#endif + network_set_v6only(fd); +#ifdef IPV6_V6ONLY + flag = 0; + flaglen = sizeof(flag); + is_int(0, getsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, &flag, &flaglen), + "Getting IPV6_V6ONLY works"); + ok(flag, "...and it is set"); +#else + skip_block(2, "IPV6_V6ONLY not supported"); +#endif + network_set_freebind(fd); +#ifdef IP_FREEBIND + flag = 0; + flaglen = sizeof(flag); + is_int(0, getsockopt(fd, IPPROTO_IP, IP_FREEBIND, &flag, &flaglen), + "Getting IP_FREEBIND works"); + ok(flag, "...and it is set"); +#else + skip_block(2, "IP_FREEBIND not supported"); +#endif + close(fd); + return 0; } diff -Nurp inn-2.6.0/tests/lib/network/client-t.c inn-2.6.1/tests/lib/network/client-t.c --- inn-2.6.0/tests/lib/network/client-t.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/lib/network/client-t.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,12 +1,12 @@ -/* $Id: client-t.c 9759 2014-12-04 20:11:38Z iulius $ +/* $Id: client-t.c 10105 2016-11-04 22:42:26Z iulius $ * * Test suite for network client and read/write functions. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Written by Russ Allbery - * Copyright 2005, 2013, 2014 Russ Allbery + * Copyright 2005, 2013, 2014, 2016 Russ Allbery * Copyright 2009, 2010, 2011, 2012, 2013 * The Board of Trustees of the Leland Stanford Junior University * @@ -373,9 +373,15 @@ test_network_write(void) pid_t child; char *buffer; + /* + * 15MB chosen because it's larger than the default TCP buffer size of + * 12MB used by Debian cloud images (see https://bugs.debian.org/830353). + */ + const size_t bufsize = 15 * 1024 * 1024; + /* Create the data that we're going to send. */ - buffer = bmalloc(8192 * 1024); - memset(buffer, 'a', 8192 * 1024); + buffer = bmalloc(bufsize); + memset(buffer, 'a', bufsize); /* Create the listening socket. */ fd = network_bind_ipv4(SOCK_STREAM, "127.0.0.1", 11119); @@ -401,7 +407,10 @@ test_network_write(void) if (c == INVALID_SOCKET) sysbail("cannot accept on socket"); - /* Test some successful writes with and without a timeout. */ + /* + * Test some successful writes with and without a timeout. Don't send + * the whole giant buffer here to make the test run a bit faster. + */ socket_set_errno(0); ok(network_write(c, buffer, 32 * 1024, 0), "network_write"); ok(network_write(c, buffer, 32 * 1024, 1), @@ -411,7 +420,7 @@ test_network_write(void) * A longer write cannot be completely absorbed before the client sleep, * so should fail with a timeout. */ - ok(!network_write(c, buffer, 8192 * 1024, 1), + ok(!network_write(c, buffer, bufsize, 1), "network_write aborted with timeout"); is_int(ETIMEDOUT, socket_errno, "...with correct error"); alarm(0); diff -Nurp inn-2.6.0/tests/lib/network/server-t.c inn-2.6.1/tests/lib/network/server-t.c --- inn-2.6.0/tests/lib/network/server-t.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/lib/network/server-t.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,12 +1,12 @@ -/* $Id: server-t.c 9696 2014-09-20 06:17:39Z iulius $ +/* $Id: server-t.c 10105 2016-11-04 22:42:26Z iulius $ * * Test suite for network server functions. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Written by Russ Allbery - * Copyright 2005, 2013 Russ Allbery + * Copyright 2005, 2013, 2016 Russ Allbery * Copyright 2009, 2010, 2011, 2012, 2013 * The Board of Trustees of the Leland Stanford Junior University * @@ -40,6 +40,7 @@ #include #include "tap/basic.h" +#include "inn/fdflag.h" #include "inn/macros.h" #include "inn/messages.h" #include "inn/network.h" @@ -57,21 +58,50 @@ static bool ipv6_works(void) { - socket_type fd; + socket_type fd, client, server; - /* Create the socket. If this works, ipv6 is supported. */ + /* + * Create the socket and then try to connect to it with a short timeout + * and accept it on the server side. If this works, IPv6 is supported. + */ fd = network_bind_ipv6(SOCK_STREAM, "::1", 11119); if (fd != INVALID_SOCKET) { - close(fd); - return true; + fdflag_nonblocking(fd, true); + client = network_connect_host("::1", 11119, NULL, 1); + if (client == INVALID_SOCKET) { + close(fd); + if (socket_errno == ETIMEDOUT || socket_errno == ENETUNREACH) + return false; + } else { + server = accept(fd, NULL, NULL); + close(fd); + if (server == INVALID_SOCKET) { + close(client); + + /* + * Written as two separate if statements because gcc with + * -Werror=logical-op warns about identical expressions, and + * EAGAIN and EWOULDBLOCK are the same number on Linux (but + * not on some other platforms). + */ + if (socket_errno == EAGAIN) + return false; + if (socket_errno == EWOULDBLOCK) + return false; + } else { + close(server); + close(client); + return true; + } + } } /* IPv6 not recognized, indicating no support. */ - if (errno == EAFNOSUPPORT || errno == EPROTONOSUPPORT) + if (socket_errno == EAFNOSUPPORT || socket_errno == EPROTONOSUPPORT) return false; /* IPv6 is recognized but we can't actually use it. */ - if (errno == EADDRNOTAVAIL) + if (socket_errno == EADDRNOTAVAIL) return false; /* @@ -190,9 +220,16 @@ test_server_accept(socket_type fd) { socket_type client; + /* If there are firewalls that block connections, we could hang here. */ + alarm(5); + + /* Accept the connection and writes from the client. */ client = accept(fd, NULL, NULL); test_server_connection(client); socket_close(fd); + + /* Cancel the alarm. */ + alarm(0); } @@ -215,6 +252,10 @@ test_server_accept_any(socket_type fds[] struct sockaddr *saddr; socklen_t slen; + /* If there are firewalls that block connections, we could hang here. */ + alarm(5); + + /* Accept the connection and writes from the client. */ slen = sizeof(struct sockaddr_storage); saddr = bcalloc(1, slen); client = network_accept_any(fds, count, saddr, &slen); @@ -226,6 +267,9 @@ test_server_accept_any(socket_type fds[] free(saddr); for (i = 0; i < count; i++) socket_close(fds[i]); + + /* Cancel the alarm. */ + alarm(0); } @@ -363,7 +407,7 @@ test_all(const char *source_ipv4, const fd = fds[i]; if (listen(fd, 1) < 0) sysbail("cannot listen to socket %d", fd); - ok(fd != INVALID_SOCKET, "all address server test (part %d)", i + 1); + ok(fd != INVALID_SOCKET, "all address server test (part %u)", i + 1); /* Get the socket type to determine what type of client to run. */ saddr = get_sockaddr(fd); @@ -418,6 +462,7 @@ test_any(void) if (!network_bind_all(SOCK_STREAM, 11119, &fds, &count)) sysbail("cannot create or bind socket"); + ok(1, "network_accept_any test"); for (i = 0; i < count; i++) if (listen(fds[i], 1) < 0) sysbail("cannot listen to socket %d", fds[i]); @@ -503,7 +548,7 @@ int main(void) { /* Set up the plan. */ - plan(42); + plan(43); /* Test network_bind functions. */ test_ipv4(NULL); diff -Nurp inn-2.6.0/tests/lib/reallocarray-t.c inn-2.6.1/tests/lib/reallocarray-t.c --- inn-2.6.0/tests/lib/reallocarray-t.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/lib/reallocarray-t.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: reallocarray-t.c 9681 2014-09-06 21:55:35Z eagle $ +/* $Id: reallocarray-t.c 10099 2016-11-04 22:21:59Z iulius $ * * reallocarray test suite. * @@ -6,7 +6,7 @@ * detection, but isn't particularly thorough. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Written by Russ Allbery * diff -Nurp inn-2.6.0/tests/lib/setenv-t.c inn-2.6.1/tests/lib/setenv-t.c --- inn-2.6.0/tests/lib/setenv-t.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/lib/setenv-t.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,9 +1,9 @@ -/* $Id: setenv-t.c 9675 2014-09-04 19:45:26Z iulius $ +/* $Id: setenv-t.c 10099 2016-11-04 22:21:59Z iulius $ * * setenv test suite. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Written by Russ Allbery * diff -Nurp inn-2.6.0/tests/lib/snprintf-t.c inn-2.6.1/tests/lib/snprintf-t.c --- inn-2.6.0/tests/lib/snprintf-t.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/lib/snprintf-t.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,9 +1,9 @@ -/* $Id: snprintf-t.c 9932 2015-08-28 19:23:27Z iulius $ +/* $Id: snprintf-t.c 10099 2016-11-04 22:21:59Z iulius $ * * snprintf test suite. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Written by Russ Allbery * Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006 diff -Nurp inn-2.6.0/tests/lib/strlcat-t.c inn-2.6.1/tests/lib/strlcat-t.c --- inn-2.6.0/tests/lib/strlcat-t.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/lib/strlcat-t.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,9 +1,10 @@ -/* $Id: strlcat-t.c 9675 2014-09-04 19:45:26Z iulius $ +/* $Id: strlcat-t.c 10098 2016-11-04 22:19:40Z iulius $ * * strlcat 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 *used to be* maintained in the + * rra-c-util package, which can be found at + * . * * Written by Russ Allbery * diff -Nurp inn-2.6.0/tests/lib/strlcpy-t.c inn-2.6.1/tests/lib/strlcpy-t.c --- inn-2.6.0/tests/lib/strlcpy-t.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/lib/strlcpy-t.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,9 +1,10 @@ -/* $Id: strlcpy-t.c 9675 2014-09-04 19:45:26Z iulius $ +/* $Id: strlcpy-t.c 10098 2016-11-04 22:19:40Z iulius $ * * strlcpy 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 *used to be* maintained in the + * rra-c-util package, which can be found at + * . * * Written by Russ Allbery * diff -Nurp inn-2.6.0/tests/lib/tst-t.c inn-2.6.1/tests/lib/tst-t.c --- inn-2.6.0/tests/lib/tst-t.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/lib/tst-t.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: tst-t.c 9843 2015-05-02 16:29:02Z iulius $ */ +/* $Id: tst-t.c 10015 2016-05-05 12:43:09Z iulius $ */ /* Test suite for ternary search tries. */ #include "config.h" @@ -102,8 +102,10 @@ main(void) } ok(37, !reported); - if (fseek(words, 0, SEEK_SET) < 0) + if (fseek(words, 0, SEEK_SET) < 0) { + fclose(words); sysdie("Unable to rewind words file"); + } reported = false; if (tst == NULL) reported = true; @@ -130,6 +132,7 @@ main(void) } } tst_cleanup(tst); + fclose(words); ok(38, !reported); return 0; diff -Nurp inn-2.6.0/tests/lib/vector-t.c inn-2.6.1/tests/lib/vector-t.c --- inn-2.6.0/tests/lib/vector-t.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/lib/vector-t.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,9 +1,9 @@ -/* $Id: vector-t.c 9696 2014-09-20 06:17:39Z iulius $ +/* $Id: vector-t.c 10099 2016-11-04 22:21:59Z iulius $ * * vector test suite. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Written by Russ Allbery * diff -Nurp inn-2.6.0/tests/lib/xmalloc.c inn-2.6.1/tests/lib/xmalloc.c --- inn-2.6.0/tests/lib/xmalloc.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/lib/xmalloc.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,9 +1,9 @@ -/* $Id: xmalloc.c 9913 2015-07-07 16:31:52Z iulius $ +/* $Id: xmalloc.c 10099 2016-11-04 22:21:59Z 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 . + * which can be found at . * * Copyright 2000, 2001, 2006 Russ Allbery * Copyright 2008, 2012, 2013, 2014 diff -Nurp inn-2.6.0/tests/lib/xmalloc.t inn-2.6.1/tests/lib/xmalloc.t --- inn-2.6.0/tests/lib/xmalloc.t 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/lib/xmalloc.t 2016-11-27 06:03:42.000000000 -0800 @@ -1,14 +1,14 @@ #! /bin/sh # -# $Id: xmalloc.t 9759 2014-12-04 20:11:38Z iulius $ +# $Id: xmalloc.t 10099 2016-11-04 22:21:59Z iulius $ # # Test suite for xmalloc and friends. # # The canonical version of this file is maintained in the rra-c-util package, -# which can be found at . +# which can be found at . # # Written by Russ Allbery -# Copyright 2000, 2001, 2006, 2014 Russ Allbery +# Copyright 2000, 2001, 2006, 2014, 2016 Russ Allbery # Copyright 2008, 2009, 2010, 2012 # The Board of Trustees of the Leland Stanford Junior University # @@ -30,8 +30,8 @@ # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # DEALINGS IN THE SOFTWARE. -. "$SOURCE/tap/libtap.sh" -cd "$BUILD/lib" +. "$C_TAP_SOURCE/tap/libtap.sh" +cd "$C_TAP_BUILD/lib" # Run an xmalloc test. Takes the description, the expectd exit status, the # output, and the arguments. diff -Nurp inn-2.6.0/tests/lib/xwrite-t.c inn-2.6.1/tests/lib/xwrite-t.c --- inn-2.6.0/tests/lib/xwrite-t.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/lib/xwrite-t.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,9 +1,9 @@ -/* $Id: xwrite-t.c 9680 2014-09-06 08:07:27Z iulius $ +/* $Id: xwrite-t.c 10099 2016-11-04 22:21:59Z iulius $ * * Test suite for xwrite, xwritev, and xpwrite. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Copyright 2000, 2001, 2002, 2004 Russ Allbery * Copyright 2009, 2014 diff -Nurp inn-2.6.0/tests/overview/api-t.c inn-2.6.1/tests/overview/api-t.c --- inn-2.6.0/tests/overview/api-t.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/overview/api-t.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: api-t.c 9908 2015-06-25 20:00:51Z iulius $ */ +/* $Id: api-t.c 10015 2016-05-05 12:43:09Z iulius $ */ /* Test suite for overview API. */ #include "config.h" @@ -140,7 +140,7 @@ overview_data_parse(char *data, unsigned *start = '\0'; start++; *artnum = strtoul(start, NULL, 10); - if (artnum == 0) + if (*artnum == 0) die("Cannot parse article number in input data"); return start; } @@ -393,8 +393,10 @@ overview_verify_search(const char *data, if (overdata == NULL) sysdie("Cannot open %s for reading", data); expected = vector_new(); - if (fgets(buffer, sizeof(buffer), overdata) == NULL) + if (fgets(buffer, sizeof(buffer), overdata) == NULL) { + fclose(overdata); die("Unexpected end of file in %s", data); + } overview_data_parse(buffer, &artnum); group = xstrdup(buffer); while (fgets(buffer, sizeof(buffer), overdata) != NULL) { @@ -412,6 +414,7 @@ overview_verify_search(const char *data, warn("Unable to open search for %s:%lu", buffer, start); free(group); vector_free(expected); + fclose(overdata); return false; } i = 0; @@ -432,6 +435,7 @@ overview_verify_search(const char *data, } free(group); vector_free(expected); + fclose(overdata); return status; } @@ -470,6 +474,7 @@ overview_verify_full_search(const char * warn("Unable to open full search for %s", group); free(group); vector_free(expected); + fclose(overdata); return false; } i = 0; @@ -490,6 +495,7 @@ overview_verify_full_search(const char * } free(group); vector_free(expected); + fclose(overdata); return status; } diff -Nurp inn-2.6.0/tests/overview/overview-t.c inn-2.6.1/tests/overview/overview-t.c --- inn-2.6.0/tests/overview/overview-t.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/overview/overview-t.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: overview-t.c 9908 2015-06-25 20:00:51Z iulius $ */ +/* $Id: overview-t.c 10015 2016-05-05 12:43:09Z iulius $ */ /* Overview test suite, usable for any of the overview methods. */ /* Compile this program with OVTYPE defined to one of the valid overview @@ -151,7 +151,7 @@ overview_data_parse(char *data, unsigned *start = '\0'; start++; *artnum = strtoul(start, NULL, 10); - if (artnum == 0) + if (*artnum == 0) die("Cannot parse article number in input data"); return start; } @@ -377,8 +377,10 @@ overview_verify_search(const char *data) if (overview == NULL) sysdie("Cannot open %s for reading", data); expected = vector_new(); - if (fgets(buffer, sizeof(buffer), overview) == NULL) + if (fgets(buffer, sizeof(buffer), overview) == NULL) { + fclose(overview); die("Unexpected end of file in %s", data); + } overview_data_parse(buffer, &artnum); group = xstrdup(buffer); while (fgets(buffer, sizeof(buffer), overview) != NULL) { @@ -396,6 +398,7 @@ overview_verify_search(const char *data) warn("Unable to open search for %s:%lu", buffer, start); free(group); vector_free(expected); + fclose(overview); return false; } i = 0; @@ -421,6 +424,7 @@ overview_verify_search(const char *data) } free(group); vector_free(expected); + fclose(overview); return status; } @@ -461,6 +465,7 @@ overview_verify_full_search(const char * warn("Unable to open full search for %s", group); free(group); vector_free(expected); + fclose(overview); return false; } i = 0; @@ -486,6 +491,7 @@ overview_verify_full_search(const char * } free(group); vector_free(expected); + fclose(overview); return status; } diff -Nurp inn-2.6.0/tests/runtests.c inn-2.6.1/tests/runtests.c --- inn-2.6.0/tests/runtests.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/runtests.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: runtests.c 9931 2015-08-28 19:12:02Z iulius $ +/* $Id: runtests.c 10099 2016-11-04 22:21:59Z iulius $ * * Run a set of tests, reporting results. * @@ -49,11 +49,11 @@ * output. This is intended for use with failing tests so that the person * running the test suite can get more details about what failed. * - * If built with the C preprocessor symbols SOURCE and BUILD defined, C TAP - * Harness will export those values in the environment so that tests can find - * the source and build directory and will look for tests under both - * directories. These paths can also be set with the -b and -s command-line - * options, which will override anything set at build time. + * If built with the C preprocessor symbols C_TAP_SOURCE and C_TAP_BUILD + * defined, C TAP Harness will export those values in the environment so that + * tests can find the source and build directory and will look for tests under + * both directories. These paths can also be set with the -b and -s + * command-line options, which will override anything set at build time. * * If the -v option is given, or the C_TAP_VERBOSE environment variable is set, * display the full output of each test as it runs rather than showing a @@ -61,10 +61,10 @@ * * Any bug reports, bug fixes, and improvements are very much welcome and * should be sent to the e-mail address below. This program is part of C TAP - * Harness . + * Harness . * * Copyright 2000, 2001, 2004, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, - * 2014, 2015 Russ Allbery + * 2014, 2015, 2016 Russ Allbery * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -136,15 +136,17 @@ /* * The source and build versions of the tests directory. This is used to set - * the SOURCE and BUILD environment variables and find test programs, if set. - * Normally, this should be set as part of the build process to the test - * subdirectories of $(abs_top_srcdir) and $(abs_top_builddir) respectively. + * the C_TAP_SOURCE and C_TAP_BUILD environment variables (and the SOURCE and + * BUILD environment variables set for backward compatibility) and find test + * programs, if set. Normally, this should be set as part of the build + * process to the test subdirectories of $(abs_top_srcdir) and + * $(abs_top_builddir) respectively. */ -#ifndef SOURCE -# define SOURCE NULL +#ifndef C_TAP_SOURCE +# define C_TAP_SOURCE NULL #endif -#ifndef BUILD -# define BUILD NULL +#ifndef C_TAP_BUILD +# define C_TAP_BUILD NULL #endif /* Test status codes. */ @@ -1480,8 +1482,9 @@ test_single(const char *program, const c /* - * Main routine. Set the SOURCE and BUILD environment variables and then, - * given a file listing tests, run each test listed. + * Main routine. Set the C_TAP_SOURCE, C_TAP_BUILD, SOURCE, and BUILD + * environment variables and then, given a file listing tests, run each test + * listed. */ int main(int argc, char *argv[]) @@ -1490,13 +1493,15 @@ main(int argc, char *argv[]) int status = 0; int single = 0; enum test_verbose verbose = CONCISE; + char *c_tap_source_env = NULL; + char *c_tap_build_env = NULL; char *source_env = NULL; char *build_env = NULL; const char *program; const char *shortlist; const char *list = NULL; - const char *source = SOURCE; - const char *build = BUILD; + const char *source = C_TAP_SOURCE; + const char *build = C_TAP_BUILD; struct testlist *tests; program = argv[0]; @@ -1538,13 +1543,23 @@ main(int argc, char *argv[]) if (getenv("C_TAP_VERBOSE") != NULL) verbose = VERBOSE; - /* Set SOURCE and BUILD environment variables. */ + /* + * Set C_TAP_SOURCE and C_TAP_BUILD environment variables. Also set + * SOURCE and BUILD for backward compatibility, although we're trying to + * migrate to the ones with a C_TAP_* prefix. + */ if (source != NULL) { + c_tap_source_env = concat("C_TAP_SOURCE=", source, (const char *) 0); + if (putenv(c_tap_source_env) != 0) + sysdie("cannot set C_TAP_SOURCE in the environment"); source_env = concat("SOURCE=", source, (const char *) 0); if (putenv(source_env) != 0) sysdie("cannot set SOURCE in the environment"); } if (build != NULL) { + c_tap_build_env = concat("C_TAP_BUILD=", build, (const char *) 0); + if (putenv(c_tap_build_env) != 0) + sysdie("cannot set C_TAP_BUILD in the environment"); build_env = concat("BUILD=", build, (const char *) 0); if (putenv(build_env) != 0) sysdie("cannot set BUILD in the environment"); @@ -1569,11 +1584,15 @@ main(int argc, char *argv[]) /* For valgrind cleanliness, free all our memory. */ if (source_env != NULL) { + putenv((char *) "C_TAP_SOURCE="); putenv((char *) "SOURCE="); + free(c_tap_source_env); free(source_env); } if (build_env != NULL) { + putenv((char *) "C_TAP_BUILD="); putenv((char *) "BUILD="); + free(c_tap_build_env); free(build_env); } exit(status); diff -Nurp inn-2.6.0/tests/tap/basic.c inn-2.6.1/tests/tap/basic.c --- inn-2.6.0/tests/tap/basic.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/tap/basic.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: basic.c 9911 2015-07-04 21:32:56Z iulius $ +/* $Id: basic.c 10130 2016-11-27 13:56:40Z iulius $ * * Some utility routines for writing tests. * @@ -11,9 +11,9 @@ * up the TAP output format, or finding things in the test environment. * * This file is part of C TAP Harness. The current version plus supporting - * documentation is at . + * documentation is at . * - * Copyright 2009, 2010, 2011, 2012, 2013, 2014, 2015 + * Copyright 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 * Russ Allbery * Copyright 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2011, 2012, 2013, 2014 * The Board of Trustees of the Leland Stanford Junior University @@ -72,9 +72,7 @@ ok(int n UNUSED, int success) void skip(int n UNUSED, const char *reason) { -#pragma GCC diagnostic ignored "-Wformat-nonliteral" new_skip(reason, NULL); -#pragma GCC diagnostic warning "-Wformat-nonliteral" } void @@ -86,9 +84,7 @@ ok_block(int n UNUSED, int count, int su void skip_block(int n UNUSED, int count, const char *reason) { -#pragma GCC diagnostic ignored "-Wformat-nonliteral" new_skip_block(count, reason, NULL); -#pragma GCC diagnostic warning "-Wformat-nonliteral" } void @@ -543,6 +539,32 @@ new_skip_block(unsigned long count, cons /* + * Takes an expected boolean value and a seen boolean value and assumes the + * test passes if the truth value of both match. + */ +int +is_bool(int wanted, int seen, const char *format, ...) +{ + int success; + + fflush(stderr); + check_diag_files(); + success = (!!wanted == !!seen); + if (success) + printf("ok %lu", testnum++); + else { + diag("wanted: %s", !!wanted ? "true" : "false"); + diag(" seen: %s", !!seen ? "true" : "false"); + printf("not ok %lu", testnum++); + _failed++; + } + PRINT_DESC(" - ", format); + putchar('\n'); + return success; +} + + +/* * Takes an expected integer and a seen integer and assumes the test passes * if those two numbers match. */ @@ -874,17 +896,17 @@ bstrndup(const char *s, size_t n) /* - * Locate a test file. Given the partial path to a file, look under BUILD and - * then SOURCE for the file and return the full path to the file. Returns - * NULL if the file doesn't exist. A non-NULL return should be freed with - * test_file_path_free(). + * Locate a test file. Given the partial path to a file, look under + * C_TAP_BUILD and then C_TAP_SOURCE for the file and return the full path to + * the file. Returns NULL if the file doesn't exist. A non-NULL return + * should be freed with test_file_path_free(). */ char * test_file_path(const char *file) { char *base; char *path = NULL; - const char *envs[] = { "BUILD", "SOURCE", NULL }; + const char *envs[] = { "C_TAP_BUILD", "C_TAP_SOURCE", NULL }; int i; for (i = 0; envs[i] != NULL; i++) { @@ -914,7 +936,7 @@ test_file_path_free(char *path) /* - * Create a temporary directory, tmp, under BUILD if set and the current + * Create a temporary directory, tmp, under C_TAP_BUILD if set and the current * directory if it does not. Returns the path to the temporary directory in * newly allocated memory, and calls bail on any failure. The return value * should be freed with test_tmpdir_free. @@ -929,7 +951,7 @@ test_tmpdir(void) const char *build; char *path = NULL; - build = getenv("BUILD"); + build = getenv("C_TAP_BUILD"); if (build == NULL) build = "."; path = concat(build, "/tmp", (const char *) 0); diff -Nurp inn-2.6.0/tests/tap/basic.h inn-2.6.1/tests/tap/basic.h --- inn-2.6.0/tests/tap/basic.h 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/tap/basic.h 2016-11-27 06:03:42.000000000 -0800 @@ -1,11 +1,11 @@ -/* $Id: basic.h 9824 2015-04-16 11:21:24Z iulius $ +/* $Id: basic.h 10130 2016-11-27 13:56:40Z iulius $ * * Basic utility routines for the TAP protocol. * * This file is part of C TAP Harness. The current version plus supporting - * documentation is at . + * documentation is at . * - * Copyright 2009, 2010, 2011, 2012, 2013, 2014, 2015 + * Copyright 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 * Russ Allbery * Copyright 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2011, 2012, 2014 * The Board of Trustees of the Leland Stanford Junior University @@ -116,8 +116,12 @@ void skip_block(unsigned long count, con /* * Check an expected value against a seen value. Returns true if the test - * passes and false if it fails. + * passes and false if it fails. is_bool takes an int since the bool type + * isn't fully portable yet, but interprets both arguments for their truth + * value, not for their numeric value. */ +int is_bool(int wanted, int seen, const char *format, ...) + __attribute__((__format__(printf, 3, 4))); int is_int(long wanted, long seen, const char *format, ...) __attribute__((__format__(printf, 3, 4))); int is_string(const char *wanted, const char *seen, const char *format, ...) @@ -164,16 +168,16 @@ char *bstrndup(const char *, size_t) __attribute__((__malloc__, __nonnull__, __warn_unused_result__)); /* - * Find a test file under BUILD or SOURCE, returning the full path. The - * returned path should be freed with test_file_path_free(). + * 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(). */ char *test_file_path(const char *file) __attribute__((__malloc__, __nonnull__, __warn_unused_result__)); void test_file_path_free(char *path); /* - * Create a temporary directory relative to BUILD and return the path. The - * returned path should be freed with test_tmpdir_free. + * 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__)); diff -Nurp inn-2.6.0/tests/tap/float.c inn-2.6.1/tests/tap/float.c --- inn-2.6.0/tests/tap/float.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/tap/float.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: float.c 9824 2015-04-16 11:21:24Z iulius $ +/* $Id: float.c 10099 2016-11-04 22:21:59Z iulius $ * * Utility routines for writing floating point tests. * @@ -9,9 +9,10 @@ * otherwise care about floating point. * * This file is part of C TAP Harness. The current version plus supporting - * documentation is at . + * documentation is at . * - * Copyright 2008, 2010, 2012, 2013, 2014, 2015 Russ Allbery + * Copyright 2008, 2010, 2012, 2013, 2014, 2015, 2016 + * Russ Allbery * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -78,5 +79,6 @@ is_double(double wanted, double seen, do diag(" seen: %g", seen); okv(0, format, args); } + va_end(args); return success; } diff -Nurp inn-2.6.0/tests/tap/float.h inn-2.6.1/tests/tap/float.h --- inn-2.6.0/tests/tap/float.h 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/tap/float.h 2016-11-27 06:03:42.000000000 -0800 @@ -1,9 +1,9 @@ -/* $Id: float.h 9669 2014-09-03 17:18:22Z iulius $ +/* $Id: float.h 10099 2016-11-04 22:21:59Z iulius $ * * Floating point check function for the TAP protocol. * * This file is part of C TAP Harness. The current version plus supporting - * documentation is at . + * documentation is at . * * Copyright 2008, 2010, 2012, 2014 Russ Allbery * diff -Nurp inn-2.6.0/tests/tap/libtap.sh inn-2.6.1/tests/tap/libtap.sh --- inn-2.6.0/tests/tap/libtap.sh 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/tap/libtap.sh 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -# $Id: libtap.sh 9669 2014-09-03 17:18:22Z iulius $ +# $Id: libtap.sh 10099 2016-11-04 22:21:59Z iulius $ # # Shell function library for test cases. # @@ -9,10 +9,10 @@ # # This file provides a TAP-compatible shell function library useful for # writing test cases. It is part of C TAP Harness, which can be found at -# . +# . # # Written by Russ Allbery -# Copyright 2009, 2010, 2011, 2012 Russ Allbery +# Copyright 2009, 2010, 2011, 2012, 2016 Russ Allbery # Copyright 2006, 2007, 2008, 2013 # The Board of Trustees of the Leland Stanford Junior University # @@ -214,32 +214,32 @@ diag () { echo '#' "$@" } -# Search for the given file first in $BUILD and then in $SOURCE and echo the -# path where the file was found, or the empty string if the file wasn't -# found. +# Search for the given file first in $C_TAP_BUILD and then in $C_TAP_SOURCE +# and echo the path where the file was found, or the empty string if the file +# wasn't found. # # This macro uses puts, so don't run it using backticks inside double quotes # or bizarre quoting behavior will happen with Solaris sh. test_file_path () { - if [ -n "$BUILD" ] && [ -f "$BUILD/$1" ] ; then - puts "$BUILD/$1" - elif [ -n "$SOURCE" ] && [ -f "$SOURCE/$1" ] ; then - puts "$SOURCE/$1" + if [ -n "$C_TAP_BUILD" ] && [ -f "$C_TAP_BUILD/$1" ] ; then + puts "$C_TAP_BUILD/$1" + elif [ -n "$C_TAP_SOURCE" ] && [ -f "$C_TAP_SOURCE/$1" ] ; then + puts "$C_TAP_SOURCE/$1" else echo '' fi } -# Create $BUILD/tmp for use by tests for storing temporary files and return -# the path (via standard output). +# Create $C_TAP_BUILD/tmp for use by tests for storing temporary files and +# return the path (via standard output). # # This macro uses puts, so don't run it using backticks inside double quotes # or bizarre quoting behavior will happen with Solaris sh. test_tmpdir () { - if [ -z "$BUILD" ] ; then + if [ -z "$C_TAP_BUILD" ] ; then tap_tmpdir="./tmp" else - tap_tmpdir="$BUILD"/tmp + tap_tmpdir="$C_TAP_BUILD"/tmp fi if [ ! -d "$tap_tmpdir" ] ; then mkdir "$tap_tmpdir" || bail "Error creating $tap_tmpdir" diff -Nurp inn-2.6.0/tests/tap/macros.h inn-2.6.1/tests/tap/macros.h --- inn-2.6.0/tests/tap/macros.h 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/tap/macros.h 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: macros.h 9824 2015-04-16 11:21:24Z iulius $ +/* $Id: macros.h 10099 2016-11-04 22:21:59Z iulius $ * * Helpful macros for TAP header files. * @@ -7,7 +7,7 @@ * everyone can pull them in. * * This file is part of C TAP Harness. The current version plus supporting - * documentation is at . + * documentation is at . * * Copyright 2008, 2012, 2013, 2015 Russ Allbery * diff -Nurp inn-2.6.0/tests/tap/messages.c inn-2.6.1/tests/tap/messages.c --- inn-2.6.0/tests/tap/messages.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/tap/messages.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: messages.c 9913 2015-07-07 16:31:52Z iulius $ +/* $Id: messages.c 10099 2016-11-04 22:21:59Z iulius $ * * Utility functions to test message handling. * @@ -7,7 +7,7 @@ * handling. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Copyright 2002, 2004, 2005, 2015 Russ Allbery * Copyright 2006, 2007, 2009, 2012, 2014 diff -Nurp inn-2.6.0/tests/tap/messages.h inn-2.6.1/tests/tap/messages.h --- inn-2.6.0/tests/tap/messages.h 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/tap/messages.h 2016-11-27 06:03:42.000000000 -0800 @@ -1,9 +1,9 @@ -/* $Id: messages.h 9686 2014-09-07 14:13:32Z iulius $ +/* $Id: messages.h 10099 2016-11-04 22:21:59Z iulius $ * * Utility functions to test message handling. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Copyright 2002 Russ Allbery * Copyright 2006, 2007, 2009 diff -Nurp inn-2.6.0/tests/tap/process.c inn-2.6.1/tests/tap/process.c --- inn-2.6.0/tests/tap/process.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/tap/process.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: process.c 9884 2015-05-25 10:04:16Z iulius $ +/* $Id: process.c 10115 2016-11-06 14:20:36Z iulius $ * * Utility functions for tests that use subprocesses. * @@ -12,10 +12,10 @@ * mkstemp. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Written by Russ Allbery - * Copyright 2002, 2004, 2005, 2013 Russ Allbery + * Copyright 2002, 2004, 2005, 2013, 2016 Russ Allbery * Copyright 2009, 2010, 2011, 2013, 2014 * The Board of Trustees of the Leland Stanford Junior University * @@ -137,6 +137,8 @@ run_child_function(test_function_type fu count = 0; do { ret = read(fds[0], buf + count, buflen - count - 1); + if (SSIZE_MAX - count <= ret) + bail("maximum output size exceeded in run_child_function"); if (ret > 0) count += ret; if (count >= buflen - 1) { @@ -144,7 +146,7 @@ run_child_function(test_function_type fu buf = brealloc(buf, buflen); } } while (ret > 0); - buf[count < 0 ? 0 : count] = '\0'; + buf[count] = '\0'; if (waitpid(child, &rval, 0) == (pid_t) -1) sysbail("waitpid failed"); close(fds[0]); diff -Nurp inn-2.6.0/tests/tap/process.h inn-2.6.1/tests/tap/process.h --- inn-2.6.0/tests/tap/process.h 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/tap/process.h 2016-11-27 06:03:42.000000000 -0800 @@ -1,9 +1,9 @@ -/* $Id: process.h 9683 2014-09-07 10:44:11Z iulius $ +/* $Id: process.h 10099 2016-11-04 22:21:59Z iulius $ * * Utility functions for tests that use subprocesses. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Written by Russ Allbery * Copyright 2009, 2010, 2013 diff -Nurp inn-2.6.0/tests/tap/string.c inn-2.6.1/tests/tap/string.c --- inn-2.6.0/tests/tap/string.c 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/tap/string.c 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: string.c 9673 2014-09-04 19:34:06Z iulius $ +/* $Id: string.c 10099 2016-11-04 22:21:59Z iulius $ * * String utilities for the TAP protocol. * @@ -6,7 +6,7 @@ * because they rely on additional portability code from rra-c-util. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Copyright 2011, 2012 Russ Allbery * diff -Nurp inn-2.6.0/tests/tap/string.h inn-2.6.1/tests/tap/string.h --- inn-2.6.0/tests/tap/string.h 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/tap/string.h 2016-11-27 06:03:42.000000000 -0800 @@ -1,4 +1,4 @@ -/* $Id: string.h 9913 2015-07-07 16:31:52Z iulius $ +/* $Id: string.h 10099 2016-11-04 22:21:59Z iulius $ * * String utilities for the TAP protocol. * @@ -6,7 +6,7 @@ * because they rely on additional portability code from rra-c-util. * * The canonical version of this file is maintained in the rra-c-util package, - * which can be found at . + * which can be found at . * * Copyright 2011, 2012 Russ Allbery * diff -Nurp inn-2.6.0/tests/util/convdate.t inn-2.6.1/tests/util/convdate.t --- inn-2.6.0/tests/util/convdate.t 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/util/convdate.t 2016-11-27 06:03:42.000000000 -0800 @@ -1,5 +1,5 @@ #! /bin/sh -# $Id: convdate.t 7010 2004-10-01 22:08:59Z rra $ +# $Id: convdate.t 9971 2015-12-10 20:30:10Z iulius $ # # Test suite for convdate. @@ -47,7 +47,7 @@ compare "`$convdate -n '10 FEB 1991 10:0 '666198000 641880000' compare "`$convdate -c 666198000`" 'Sun Feb 10 10:00:00 1991' -compare "`$convdate -dc 666198000`" 'Sun, 10 Feb 1991 15:00:00 +0000 (UTC)' +compare "`$convdate -dc 666198000`" 'Sun, 10 Feb 1991 15:00:00 -0000 (UTC)' compare "`env TZ=PST8PDT $convdate -dlc 666198000`" \ 'Sun, 10 Feb 1991 07:00:00 -0800 (PST)' compare "`env TZ=EST5EDT $convdate -dlc 666198000`" \ diff -Nurp inn-2.6.0/tests/util/inndf.t inn-2.6.1/tests/util/inndf.t --- inn-2.6.0/tests/util/inndf.t 2015-09-12 06:25:22.000000000 -0700 +++ inn-2.6.1/tests/util/inndf.t 2016-11-27 06:03:42.000000000 -0800 @@ -1,5 +1,5 @@ #! /bin/sh -# $Id: inndf.t 9842 2015-05-02 16:28:21Z iulius $ +# $Id: inndf.t 10113 2016-11-06 14:17:37Z iulius $ # # Test suite for inndf. @@ -50,9 +50,9 @@ else fi # Make sure df -i works, or we have to just skip this test. Also accept a -# return value of 2^32 - 1 from inndf regardless of what df says, since this -# is what Reiser and some other file systems return in some versions of -# Linux. +# return value of 2^31 - 1 or 2^32 - 1 from inndf regardless of what df says, +# since this is what Reiser and some other file systems return in some +# versions of Linux. if df -i . > /dev/null 2>&1 ; then if [ -z "${UNAME_SYSTEM##IRIX[[:alnum:]]*}" ] ; then real=`df -i . | sed 1d | tr -d '\r\n' | awk '{ print $8 }'` @@ -64,7 +64,7 @@ if df -i . > /dev/null 2>&1 ; then real=`df -i . | sed 1d | tr -d '\r\n' | awk '{ print $4 }'` fi try=`$inndf -i .` - if [ "$try" = 4294967295 ] ; then + if [ "$try" = 2147483647 ] || [ "$try" = 4294967295 ] ; then printcount "ok" else diff=`expr "$real" - "$try"`