------------------------------------------------------------------------
-r1843 | joe | 2011-05-03 13:15:08 +0100 (Tue, 03 May 2011) | 1 line
+r1932 | joe | 2013-07-31 17:00:59 +0100 (Wed, 31 Jul 2013) | 2 lines
+
+Tag 0.30, third time lucky.
-Tag release 0.29.6.
------------------------------------------------------------------------
-r1842 | joe | 2011-05-03 13:14:56 +0100 (Tue, 03 May 2011) | 2 lines
+r1930 | joe | 2013-07-31 16:55:25 +0100 (Wed, 31 Jul 2013) | 3 lines
-* macros/neon.m4: Bump to .6.
+* macros/neon.m4, configure.in: Fix ABI versioning for backwards-compat
+ with 0.27.x.
------------------------------------------------------------------------
-r1841 | joe | 2011-05-03 13:09:46 +0100 (Tue, 03 May 2011) | 2 lines
+r1928 | joe | 2013-07-31 16:48:33 +0100 (Wed, 31 Jul 2013) | 2 lines
-* NEWS: Tweak ordering.
+* po/: make update-po.
------------------------------------------------------------------------
-r1840 | joe | 2011-05-03 13:09:18 +0100 (Tue, 03 May 2011) | 2 lines
+r1925 | joe | 2013-07-31 16:36:53 +0100 (Wed, 31 Jul 2013) | 2 lines
-* More news.
+* src/ne_socket.c: Another GnuTLS 3.x deprecation warning fix.
------------------------------------------------------------------------
-r1839 | joe | 2011-05-03 13:07:08 +0100 (Tue, 03 May 2011) | 22 lines
+r1924 | joe | 2013-07-31 16:35:34 +0100 (Wed, 31 Jul 2013) | 1 line
-Merge r1836, r1837, r1838 from trunk:
+Drop -dev.
+------------------------------------------------------------------------
+r1923 | joe | 2013-07-31 16:34:39 +0100 (Wed, 31 Jul 2013) | 1 line
-* src/ne_gnutls.c (ne__ssl_init): Fix for GnuTLS with Nettle.
+Note GnuTLS 3.x fixes.
+------------------------------------------------------------------------
+r1922 | joe | 2013-07-31 16:22:20 +0100 (Wed, 31 Jul 2013) | 2 lines
-* src/ne_auth.c (get_cnonce): Likewise.
+* src/ne_gnutls.c (provide_client_cert): Avoid segfaults with GnuTLS 3.x.
-Submitted by: Arfrever Frehtes Taifersar Arahesis <arfrever.fta gmail.com>
+------------------------------------------------------------------------
+r1921 | joe | 2013-07-31 15:46:50 +0100 (Wed, 31 Jul 2013) | 2 lines
-* src/ne_auth.c
- (ah_post_send): Clear SSPI context only after successful authentication.
+* test/.gdbinit: New file.
-Submitted by: Ivan Zhakov <ivan visualsvn.com>
+------------------------------------------------------------------------
+r1920 | joe | 2013-07-31 15:46:37 +0100 (Wed, 31 Jul 2013) | 2 lines
-Fix some errors flagged by a Coverity scan:
+* test/common/child.c: More debugging.
-* src/ne_auth.c (verify_negotiate_response): Check for NULL pointer.
+------------------------------------------------------------------------
+r1919 | joe | 2013-07-31 15:40:56 +0100 (Wed, 31 Jul 2013) | 6 lines
-* src/ne_gnutls.c (check_certificate): Initiatialize 'failures'.
- (pkcs12_parse): Check for _crt_init failure.
+* test/request.c (status, status_chunked): Revert r1910. Expect hostname of
+ 127.0.0.1.
+
+* test/utils.c (session_server, sessi
-* src/ne_session.c (ne__ssl_set_verify_err): Pass size-1 to strncat.
------------------------------------------------------------------------
-r1835 | joe | 2011-03-01 13:28:28 +0000 (Tue, 01 Mar 2011) | 2 lines
+r1918 | joe | 2013-07-31 15:21:04 +0100 (Wed, 31 Jul 2013) | 3 lines
-* NEWS: Update.
+* src/ne_gnutls.c (x509_crt_copy, make_peers_chain): Fix potential segv,
+ patch by Matthias Petschick.
------------------------------------------------------------------------
-r1834 | joe | 2011-03-01 13:26:04 +0000 (Tue, 01 Mar 2011) | 6 lines
+r1917 | joe | 2013-07-31 15:15:05 +0100 (Wed, 31 Jul 2013) | 3 lines
-Merge r1833 from trunk:
+* src/ne_privssl.h, src/ne_gnutls.c, src/ne_socket.c: Avoid olde GnuTLS types,
+ avoiding deprecation warnings.
-* src/ne_request.c (ne_request_create): Pass copied method to
- pre_send hooks to avoid lifetime issues (Patrick Ohly).
+------------------------------------------------------------------------
+r1916 | joe | 2013-07-31 15:08:25 +0100 (Wed, 31 Jul 2013) | 5 lines
+
+Omitted in previous commit:
+* src/ne_socket.c: Support build with GnuTLS 3, patch by Bartosz
+ Brachaczek.
------------------------------------------------------------------------
-r1832 | joe | 2010-11-11 12:32:11 +0000 (Thu, 11 Nov 2010) | 2 lines
+r1915 | joe | 2013-07-31 15:05:23 +0100 (Wed, 31 Jul 2013) | 3 lines
-* macros/neon.m4: Really bump to -dev.
+* src/ne_gnutls.c, macros/neon.m4: Support build with GnuTLS 3, patch by
+ Bartosz Brachaczek.
------------------------------------------------------------------------
-r1831 | joe | 2010-11-11 12:31:39 +0000 (Thu, 11 Nov 2010) | 2 lines
+r1914 | joe | 2013-07-31 14:56:22 +0100 (Wed, 31 Jul 2013) | 2 lines
-* macros/neon.m4, NEWS: Bump to .6-dev.
+* macros/ld-version-script.m4: Update from gnulib.
------------------------------------------------------------------------
-r1830 | joe | 2010-11-11 12:29:51 +0000 (Thu, 11 Nov 2010) | 5 lines
+r1913 | joe | 2013-07-31 14:50:34 +0100 (Wed, 31 Jul 2013) | 2 lines
-Merge r1827 from trunk:
+* test/common/tests.c (main): Note fatal errors.
-* doc/ref/iaddr.xml: Update ne_iaddr_* docs.
+------------------------------------------------------------------------
+r1912 | joe | 2013-07-31 14:49:58 +0100 (Wed, 31 Jul 2013) | 2 lines
+* test/ssl.c: Disable SSLv2 test, redundant with modern SSL libraries.
------------------------------------------------------------------------
-r1829 | joe | 2010-11-11 12:26:45 +0000 (Thu, 11 Nov 2010) | 7 lines
+r1911 | joe | 2013-07-26 19:33:54 +0100 (Fri, 26 Jul 2013) | 2 lines
-Merge r1828 from trunk:
+* src/ne_request.c (send_request_body): Use chunk length without prefix in progress.
-* src/ne_gnutls.c (provide_client_cert): Return success with no cert
- if no cert is available; match behaviour with OpenSSL. Thanks to
- Patrick Ohly.
+------------------------------------------------------------------------
+r1910 | joe | 2013-07-26 19:32:08 +0100 (Fri, 26 Jul 2013) | 4 lines
+* test/request.c (print_addr, notifier): Factor out from status; fix for
+ multiple mappings from "localhost" addr.
+ (status_plain, status_chunked): Adapt to use notifier.
------------------------------------------------------------------------
-r1825 | joe | 2010-10-14 16:04:44 +0100 (Thu, 14 Oct 2010) | 2 lines
+r1909 | joe | 2013-07-26 19:25:09 +0100 (Fri, 26 Jul 2013) | 2 lines
-* NEWS: Tweak.
+* src/ne_request.c (send_request_body): Fix double counting.
------------------------------------------------------------------------
-r1824 | joe | 2010-10-14 16:03:02 +0100 (Thu, 14 Oct 2010) | 2 lines
+r1908 | joe | 2013-07-26 19:08:37 +0100 (Fri, 26 Jul 2013) | 3 lines
-* NEWS: Update with GnuTLS fix.
+* test/request.c (retry_after_abort): Correctly catch errors.
+ Re-order tests to avoid triggering some weird glibc getaddrinfo issue.
------------------------------------------------------------------------
-r1823 | joe | 2010-10-14 16:02:41 +0100 (Thu, 14 Oct 2010) | 10 lines
+r1907 | joe | 2013-07-26 18:58:53 +0100 (Fri, 26 Jul 2013) | 2 lines
-Merge r1818 from trunk:
+* macros/neon.m4 (NEON_I18N): Check for bindtextdomain with -liconv. (Brad Smith)
-* test/socket.c (addr_reverse) [HAVE_GETHOSTNAME]: Accept system
- hostname as reverse of 127.0.0.1.
+------------------------------------------------------------------------
+r1906 | joe | 2013-07-26 18:57:48 +0100 (Fri, 26 Jul 2013) | 4 lines
-* macros/neon-test.m4 (NEON_TEST): Check for gethostname().
+* src/ne_socket.c: Include sys/uio.h for writev(2) (Brad Smith).
-Submitted by: joe
-Reviewed by: jorton
+* macros/neon.m4: Check for it.
------------------------------------------------------------------------
-r1822 | joe | 2010-10-14 16:01:53 +0100 (Thu, 14 Oct 2010) | 2 lines
+r1905 | joe | 2013-07-26 18:51:23 +0100 (Fri, 26 Jul 2013) | 8 lines
+
+Support chunked bodies; patch by Julien Reichel.
-* NEWS, macros/neon.m4: Prepare for 0.29.5.
+* src/ne_request.c (send_request_body): Support chunked bodies.
+ (set_body_length): Negative length implies chunked, not C-L.
+ (send_request): Adjust for chunked.
+
+* src/ne_request.h: Update ne_set_request_body_provider API.
------------------------------------------------------------------------
-r1821 | joe | 2010-10-14 16:00:53 +0100 (Thu, 14 Oct 2010) | 6 lines
+r1904 | joe | 2013-07-26 18:38:05 +0100 (Fri, 26 Jul 2013) | 2 lines
-Merge r1797 from trunk:
+* src/ne_basic.h: Update comment.
-* src/ne_auth.c: Add handling of 2xx responses in SSPI code.
-(Danil Shopyrin <danil visualsvn.com>)
+------------------------------------------------------------------------
+r1903 | joe | 2013-07-26 17:17:08 +0100 (Fri, 26 Jul 2013) | 1 line
+
+Win32 fixes.
+------------------------------------------------------------------------
+r1902 | joe | 2013-07-26 17:16:21 +0100 (Fri, 26 Jul 2013) | 3 lines
+* config.hw.in, src/ne_defs.h: Add LFS support for Win32 (patch by
+Diego Santa Cruz).
------------------------------------------------------------------------
-r1820 | joe | 2010-10-09 17:07:17 +0100 (Sat, 09 Oct 2010) | 6 lines
+r1901 | joe | 2013-07-26 17:15:19 +0100 (Fri, 26 Jul 2013) | 2 lines
-Merge r1819 from trunk:
+* config.hw.in, src/ne_openssl.c: Add thread-safety support for SSL on Windows.
-* src/ne_socket.c (ne_sock_connect_ssl): Ignore TLS warnings
- during handshake (Bryan Cain).
+------------------------------------------------------------------------
+r1900 | joe | 2013-07-26 17:11:57 +0100 (Fri, 26 Jul 2013) | 2 lines
+* test/run-tests.sh: Use MALLOC_PERTURB.
------------------------------------------------------------------------
-r1816 | joe | 2010-10-01 13:00:02 +0100 (Fri, 01 Oct 2010) | 2 lines
+r1899 | joe | 2013-07-26 17:11:35 +0100 (Fri, 26 Jul 2013) | 1 line
-* po/: make update-po.
+Changes in trunk.
+------------------------------------------------------------------------
+r1898 | joe | 2013-07-26 17:10:53 +0100 (Fri, 26 Jul 2013) | 2 lines
+
+* test/utils.c (proxied_session_server): Debug more.
------------------------------------------------------------------------
-r1814 | joe | 2010-09-28 13:02:37 +0100 (Tue, 28 Sep 2010) | 2 lines
+r1897 | joe | 2013-07-26 17:08:57 +0100 (Fri, 26 Jul 2013) | 5 lines
-* NEWS: Update.
+* src/ne_session.c (free_proxies): Fix possible double-free.
+(patch by Diego Santa Cruz)
+
+* test/session.c (proxies): Add test case.
------------------------------------------------------------------------
-r1813 | joe | 2010-09-28 13:00:48 +0100 (Tue, 28 Sep 2010) | 10 lines
+r1896 | joe | 2013-03-18 10:33:56 +0000 (Mon, 18 Mar 2013) | 4 lines
-Merge r1811 from trunk:
+* src/ne_md5.c (md5_finish_ctx): Fix aliasing problem.
-* src/ne_session.c (ne__ssl_match_hostname): Deny a wildcard match
- against anything which parses as an IP address.
+http://permalink.gmane.org/gmane.comp.gnu.binutils/58378
-* test/ssl.c (fail_wildcard_ip): Add test case.
+------------------------------------------------------------------------
+r1895 | joe | 2012-07-06 22:23:20 +0100 (Fri, 06 Jul 2012) | 3 lines
-* test/makekeys.sh: Generate test wildcard IP cert.
+* src/ne_socket.c (ne_sock_connect_ssl): Drop OpenSSL version check,
+ inappropriate with OpenSSL 1.x; patch by Mike Frysinger.
+------------------------------------------------------------------------
+r1894 | joe | 2012-07-06 08:55:32 +0100 (Fri, 06 Jul 2012) | 2 lines
+
+* src/ne_auth.c: Fix build, from Nathanael Rensen.
------------------------------------------------------------------------
-r1812 | joe | 2010-09-28 12:57:26 +0100 (Tue, 28 Sep 2010) | 8 lines
+r1893 | joe | 2012-07-05 21:46:03 +0100 (Thu, 05 Jul 2012) | 3 lines
-Merge r1809 from trunk:
+* src/ne_socket.c (timed_connect, ne_sock_connect): Capture socket
+ error code correctly for Windows. (Vlad Grachov)
-* src/ne_request.c (open_connection): If SOCKS proxy fails, set return
- value to NE_ERROR.
+------------------------------------------------------------------------
+r1892 | joe | 2012-07-05 21:41:43 +0100 (Thu, 05 Jul 2012) | 7 lines
-* test/request.c (socks_fail): Add test case.
+Patch from Nathanael Rensen:
+* src/ne_auth.c (ah_post_send): Clear SSPI context for any
+ non-auth-failure response code.
+
+* src/ne_sspi.c (ne_sspi_clear_context): Clear continueNeeded flag.
------------------------------------------------------------------------
-r1808 | joe | 2010-09-22 21:42:08 +0100 (Wed, 22 Sep 2010) | 2 lines
+r1891 | joe | 2012-07-04 09:41:44 +0100 (Wed, 04 Jul 2012) | 3 lines
-* NEWS: Update for 0.29.4.
+* test/makekeys.sh: Use 1024 bit RSA keys to prevent weird OpenSSL
+ test failures.
------------------------------------------------------------------------
-r1807 | joe | 2010-09-22 20:33:36 +0100 (Wed, 22 Sep 2010) | 9 lines
+r1890 | joe | 2012-06-26 11:13:33 +0100 (Tue, 26 Jun 2012) | 2 lines
-Merge r1801 from trunk:
+* test/utils.c (fakeproxied_session_server): New function.
-* src/ne_request.c (body_fd_send): Handle read() errors; thanks to Lou
- Montulli.
+------------------------------------------------------------------------
+r1889 | joe | 2012-06-26 11:12:55 +0100 (Tue, 26 Jun 2012) | 3 lines
-* test/request.c (serve_mirror, send_length): Add test case.
+* test/common/child.c (new_spawn_server2): Factored out, return
+ address used. Fix to ensure local host address is resolved.
-* test/Makefile.in (foobar.txt): Create test file.
+------------------------------------------------------------------------
+r1888 | joe | 2012-06-26 11:02:58 +0100 (Tue, 26 Jun 2012) | 6 lines
+
+* src/ne_session.c (ne_set_addrlist2): Factored out of
+ ne_set_addrlist, take port as argument.
+ (ne_set_addrlist): Reimplement using the above.
+
+* src/neon.vers: Add ne_set_addrlist2.
------------------------------------------------------------------------
-r1806 | joe | 2010-09-22 20:25:52 +0100 (Wed, 22 Sep 2010) | 8 lines
+r1887 | joe | 2012-06-26 09:17:20 +0100 (Tue, 26 Jun 2012) | 7 lines
-Merge r1802, r1805 from trunk:
+* src/ne_auth.h: Add NE_AUTH_GSSAPI_ONLY, NE_AUTH_SSPI.
-* macros/neon.m4 (NE_CHECK_FUNCS): Fix AI_ADDRCONFIG detection.
+* src/ne_auth.c: Adjust for new constants.
+ (auth_register): Map NE_AUTH_GSSAPI to _GSSAPI_ONLY|_SSPI
-* src/ne_auth.c (ah_post_send): Always clear the SSPI context.
-(Danil Shopyrin)
+Patch by Nathanael Rensen <nathanael.rensen zettaserve.com>
+
+------------------------------------------------------------------------
+r1886 | joe | 2012-06-25 12:21:39 +0100 (Mon, 25 Jun 2012) | 3 lines
+* test/ssl.c (fail_ssl_request_with_error2): Fix tests with "fake" hostname
+ where localhost maps to multiple addresses.
------------------------------------------------------------------------
-r1800 | joe | 2010-05-05 09:13:00 +0100 (Wed, 05 May 2010) | 5 lines
+r1885 | joe | 2012-05-22 15:43:58 +0100 (Tue, 22 May 2012) | 2 lines
-Merge r1794 from trunk:
+* test/uri-tests.c (cmp): Don't depend on exact magnitude of *cmp.
-* src/ne_session.c (ne_session_create): Fix to enable SNI by default again.
- (Tobias Gruetzmacher)
+------------------------------------------------------------------------
+r1882 | joe | 2012-01-19 22:17:13 +0000 (Thu, 19 Jan 2012) | 2 lines
+
+* test/basic.c (options2): Untabify.
------------------------------------------------------------------------
-r1796 | joe | 2010-03-29 10:19:04 +0100 (Mon, 29 Mar 2010) | 9 lines
+r1881 | joe | 2012-01-19 22:16:11 +0000 (Thu, 19 Jan 2012) | 6 lines
-Merge r1792, r1793, r1795 from trunk:
+* src/ne_basic.h: Add NE_CAP_EXT_MKCOL.
-* src/ne_request.c (do_connect): Tweak debugging.
+* src/ne_basic.c (options_map): Add NE_CAP_EXT_MKCOL.
-* doc/ref/: Fix some refpurposes.
+* test/basic.c (options2): Add test.
-* doc/ref/reqflags.xml: Doc tweak.
+------------------------------------------------------------------------
+r1874 | joe | 2011-12-09 13:43:02 +0000 (Fri, 09 Dec 2011) | 3 lines
+* src/ne_socket.c (ne_iaddr_reverse) [!USE_GETADDRINFO]:
+ Fix build with Open Watcom compiler. (NormW <normanwheeler bigpond.com)
------------------------------------------------------------------------
-r1790 | joe | 2010-02-08 09:52:54 +0000 (Mon, 08 Feb 2010) | 2 lines
+r1873 | joe | 2011-12-09 13:41:20 +0000 (Fri, 09 Dec 2011) | 2 lines
-* macros/neon-test.m4: Test for signal.h
+* src/ne_gnutls.c (ne_ssl_context_get_flag): Add function.
------------------------------------------------------------------------
-r1787 | joe | 2010-01-11 22:59:31 +0000 (Mon, 11 Jan 2010) | 2 lines
+r1872 | joe | 2011-12-09 13:39:10 +0000 (Fri, 09 Dec 2011) | 5 lines
+
+* src/ne_openssl.c (ne_ssl_context_create): Fail hard with non-SSL
+ build on request for SSLv2 server context
+ (ne_ssl_context_get_flag): Fix build.
-* macros/neon.m4, NEWS: Missed a backport :(
------------------------------------------------------------------------
-r1786 | joe | 2010-01-11 22:57:34 +0000 (Mon, 11 Jan 2010) | 6 lines
+r1871 | joe | 2011-12-09 10:56:12 +0000 (Fri, 09 Dec 2011) | 2 lines
-Merge r1777 from trunk:
+* test/common/tests.c (main): Fix grammar.
-* src/ne_defs.h: Only define NE_PRIVATE if undefined.
+------------------------------------------------------------------------
+r1866 | joe | 2011-11-25 00:15:10 +0000 (Fri, 25 Nov 2011) | 3 lines
-* configure.in: Define NE_PRIVATE to 'extern' for a static build.
+* src/ne_openssl.c (ne_ssl_context_create): Disable TLS ticket support
+ since it inhibits testing of session caching.
------------------------------------------------------------------------
-r1784 | joe | 2010-01-11 20:21:21 +0000 (Mon, 11 Jan 2010) | 2 lines
+r1865 | joe | 2011-11-25 00:11:34 +0000 (Fri, 25 Nov 2011) | 13 lines
-* macros/neon.m4: Bump to 0.29.3.
+Fix build and test suite for OpenSSL without SSLv2 support.
+
+* src/ne_openssl.c (ne_ssl_context_get_flag): New function.
+ (ne_ssl_context_create): Fix compile without SSLv2.
+
+* src/ne_session.c (ne_set_session_flag): Retrieve SSLv2
+ flag value after setting it.
+
+* src/ne_ssl.h, src/neon.vers: Add ne_ssl_context_get_flag.
+
+* test/ssl.c (simple_sslv2): Retrieve flag setting and skip
+ test if it was not enabled.
------------------------------------------------------------------------
-r1783 | joe | 2010-01-11 20:21:06 +0000 (Mon, 11 Jan 2010) | 2 lines
+r1864 | joe | 2011-11-22 23:26:30 +0000 (Tue, 22 Nov 2011) | 3 lines
-* NEWS: Tweaks.
+* src/ne_uri.c (ne_path_escape): Fix over-allocation of memory.
+ (Pierre Crokaert <pct actl.be>)
------------------------------------------------------------------------
-r1782 | joe | 2010-01-11 10:40:42 +0000 (Mon, 11 Jan 2010) | 2 lines
+r1863 | joe | 2011-10-03 23:33:52 +0100 (Mon, 03 Oct 2011) | 3 lines
-* NEWS: Document ne_sock_close() changes.
+* src/ne_socket.c (ne_addr_resolve): Use a bit-wise
+ comparison, suggested by Ivan Zhakov.
------------------------------------------------------------------------
-r1781 | joe | 2010-01-11 10:36:14 +0000 (Mon, 11 Jan 2010) | 8 lines
+r1862 | joe | 2011-10-03 22:48:59 +0100 (Mon, 03 Oct 2011) | 3 lines
-Merge r1780 from trunk:
+* src/ne_socket.c (timed_connect): Don't overwrite an error when
+ resetting fd flags.
-* src/ne_socket.c (ne_sock_close): Do not wait for the peer's
- close_notify alert with either GnuTLS or OpenSSL.
- [HAVE_GNUTLS]: Fix memory leak: free the session object.
+------------------------------------------------------------------------
+r1861 | joe | 2011-10-03 22:41:51 +0100 (Mon, 03 Oct 2011) | 2 lines
-* src/ne_socket.h (ne_sock_close): Clarify close_notify handling.
+* src/ne_socket.c: Tweak comment.
------------------------------------------------------------------------
-r1775 | joe | 2009-12-30 21:31:55 +0000 (Wed, 30 Dec 2009) | 2 lines
+r1860 | joe | 2011-10-03 22:35:49 +0100 (Mon, 03 Oct 2011) | 3 lines
-* po/: make update-po.
+* src/ne_request.c (ne_set_request_flag, ne_get_request_flag): Fix
+ warnings with gcc 4.5 -Wenum-compare.
------------------------------------------------------------------------
-r1774 | joe | 2009-12-30 21:31:30 +0000 (Wed, 30 Dec 2009) | 2 lines
+r1859 | joe | 2011-09-18 21:05:37 +0100 (Sun, 18 Sep 2011) | 2 lines
-* macros/neon.m4: Bump version.
+* test/common/child.c: Better debugging output.
------------------------------------------------------------------------
-r1773 | joe | 2009-12-30 21:30:55 +0000 (Wed, 30 Dec 2009) | 2 lines
+r1858 | joe | 2011-09-18 21:04:49 +0100 (Sun, 18 Sep 2011) | 2 lines
-* NEWS: 0.29.2 news.
+* src/neon.vers: No version 0.31 needed (yet?!).
------------------------------------------------------------------------
-r1772 | joe | 2009-12-30 21:29:30 +0000 (Wed, 30 Dec 2009) | 10 lines
+r1857 | joe | 2011-09-18 21:04:23 +0100 (Sun, 18 Sep 2011) | 2 lines
-Merge r1748 from trunk:
+* src/Makefile.in: Update deps.
-Clear sspi_token buffer after each request.
+------------------------------------------------------------------------
+r1856 | joe | 2011-09-18 20:58:06 +0100 (Sun, 18 Sep 2011) | 3 lines
-* src/ne_auth.c (request_sspi): Return NULL if sspi_token is not present.
+* src/ne_auth.c (continue_sspi, auth_register): Use the proxy hostname
+ for proxy auth with SSPI.
-* src/ne_auth.c (ah_post_send): Clear the buffered sspi_token.
+------------------------------------------------------------------------
+r1855 | joe | 2011-09-14 10:15:08 +0100 (Wed, 14 Sep 2011) | 3 lines
-Submitted by: Danil Shopyrin <danil visualsvn.com>
+* test/common/child.c (spawn_server, spawn_server_repeat): Better
+ debugging output.
------------------------------------------------------------------------
-r1771 | joe | 2009-12-30 21:28:48 +0000 (Wed, 30 Dec 2009) | 7 lines
+r1854 | joe | 2011-09-14 09:53:24 +0100 (Wed, 14 Sep 2011) | 3 lines
-Merge r1770 from trunk:
+* test/request.c, test/ssl.c, test/redirect.c: Fix various
+ memory leaks in the test suite, found by --enable-memleak.
-* src/ne_openssl.c (verify_callback): Handle OpenSSL error code
- X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT as an untrusted cert.
+------------------------------------------------------------------------
+r1853 | joe | 2011-09-02 10:52:44 +0100 (Fri, 02 Sep 2011) | 3 lines
-Submitted by: Tom C <tomc.neon pnl.gov>
+* src/ne_sspi.c (canonical_hostname): Use NE_ADDR_CANON to determine
+ canonical hostname.
------------------------------------------------------------------------
-r1767 | joe | 2009-12-15 22:24:26 +0000 (Tue, 15 Dec 2009) | 2 lines
+r1852 | joe | 2011-09-02 10:51:02 +0100 (Fri, 02 Sep 2011) | 11 lines
-* po/: make update-po.
+* src/ne_socket.h: Add NE_ADDR_CANON flag, ne_addr_canonical.
+
+* src/ne_socket.c (struct ne_sock_addr_s): Add name field for non-gai.
+ (ne_addr_resolve): Handle NE_ADDR_CANON.
+ (ne_addr_canonical): New function.
+ (ne_addr_destroy): Free name field.
+
+* test/socket.c (addr_canonical): New test.
+
+* src/neon.vers: Add ne_addr_canonical.
------------------------------------------------------------------------
-r1753 | joe | 2009-12-14 20:45:16 +0000 (Mon, 14 Dec 2009) | 2 lines
+r1851 | joe | 2011-07-10 20:22:13 +0100 (Sun, 10 Jul 2011) | 3 lines
-* macros/neon.m4, NEWS: Prepare for 0.29.1.
+* test/ssl.c (cache_verify): Trap errors from request dispatch,
+ remove unused variable.
------------------------------------------------------------------------
-r1751 | joe | 2009-12-02 21:40:41 +0000 (Wed, 02 Dec 2009) | 4 lines
+r1850 | joe | 2011-07-10 20:19:26 +0100 (Sun, 10 Jul 2011) | 2 lines
-Merge r1750 from trunk:
+* test/props.c (unbounded_response): Remove set-but-unused variable.
-* src/ne_gnutls.c (map_verify_failures): Fix build for GnuTLS < 2.8.
+------------------------------------------------------------------------
+r1849 | joe | 2011-06-23 14:09:44 +0100 (Thu, 23 Jun 2011) | 2 lines
+
+* src/ne_ssl.h: Tweak wording on ne_ssl_clicert_read,import.
------------------------------------------------------------------------
-r1749 | joe | 2009-12-02 21:27:34 +0000 (Wed, 02 Dec 2009) | 13 lines
+r1848 | joe | 2011-06-23 13:41:00 +0100 (Thu, 23 Jun 2011) | 2 lines
-Merge r1739, r1744, r1746, r1747 from trunk:
+* NEWS: Synch with 0.29.x.
-* config.hw.in: Fix socklen_t with recent SDKs, thanks to Stefan Kung.
+------------------------------------------------------------------------
+r1847 | joe | 2011-06-23 13:40:30 +0100 (Thu, 23 Jun 2011) | 18 lines
-* src/ne_socket.c: Fixed 'missing symbol' win2k runtime problem.
+* src/ne_ssl.h (ne_ssl_clicert_import): New function.
-* src/ne_ntlm.c (ne__ntlm_authenticate)
-* src/ne_auth.c (ntlm_challenge):
- In case of session timeout, do not call auth callback; use
- existing credentials.
+* src/ne_openssl.c (parse_client_cert): Factor out from
+ ne_ssl_clicert_read.
+ (ne_ssl_clicert_read): Reimplement using above.
+ (ne_ssl_clicert_import): New function.
-* src/ne_ntlm.c (mkhash): Fix buffer overflow (basic@mozdev.org).
+* src/ne_gnutls.c (ne_ssl_clicert_import): Factor out from
+ ne_ssl_clicert_read.
+ (ne_ssl_clicert_import): Reimplement using above.
+
+* test/utils.c (file_to_buffer): Move to here...
+
+* test/compress.c (file2buf): ... from here.
+ (do_fetch): Use it.
+
+* test/ssl.c (clicert_import): New test.
------------------------------------------------------------------------
-r1743 | joe | 2009-10-25 11:25:24 +0000 (Sun, 25 Oct 2009) | 5 lines
+r1846 | joe | 2011-06-17 11:54:54 +0100 (Fri, 17 Jun 2011) | 3 lines
-Merge r1742 from trunk:
+* doc/ref/proxy.xml, doc/ref/sess.xml, doc/manual.xml: Split out, and
+ complete, documentation of proxy support.
-* src/ne_session.c (ne_session_create): Only enable SNI by default if
- the server hostname does not parse as a numeric IP address.
+------------------------------------------------------------------------
+r1845 | joe | 2011-05-03 16:27:18 +0100 (Tue, 03 May 2011) | 4 lines
+
+* src/ne_socket.c (ne_sock_accept_ssl) [HAVE_GNUTLS]:
+ Require a client cert if necessary, matching behaviour
+ w/ OpenSSL.
------------------------------------------------------------------------
-r1740 | joe | 2009-09-26 20:58:08 +0100 (Sat, 26 Sep 2009) | 9 lines
+r1844 | joe | 2011-05-03 16:26:03 +0100 (Tue, 03 May 2011) | 2 lines
-Merge r1738, r1739 from trunk:
+* src/Makefile.in: Update deps.
-* src/ne_socket.c (ne_iaddr_parse): Fix Win32 build for both
- USE_GETADDRINFO and !USE_GETADDRINFO cases.
+------------------------------------------------------------------------
+r1838 | joe | 2011-05-03 13:04:23 +0100 (Tue, 03 May 2011) | 9 lines
-* config.hw.in: Fix socklen_t with recent SDKs, thanks to Stefan Kung.
+Fix some errors flagged by a Coverity scan:
-Reviewed by: jorton
+* src/ne_auth.c (verify_negotiate_response): Check for NULL pointer.
+
+* src/ne_gnutls.c (check_certificate): Initiatialize 'failures'.
+ (pkcs12_parse): Check for _crt_init failure.
+
+* src/ne_session.c (ne__ssl_set_verify_err): Pass size-1 to strncat.
------------------------------------------------------------------------
-r1735 | joe | 2009-09-13 13:12:27 +0100 (Sun, 13 Sep 2009) | 2 lines
+r1837 | joe | 2011-05-03 12:58:24 +0100 (Tue, 03 May 2011) | 5 lines
-* macros/neon.m4: Don't ABI-tag LFS builds.
+* src/ne_auth.c
+ (ah_post_send): Clear SSPI context only after successful authentication.
+
+Submitted by: Ivan Zhakov <ivan visualsvn.com>
------------------------------------------------------------------------
-r1733 | joe | 2009-09-13 12:57:58 +0100 (Sun, 13 Sep 2009) | 2 lines
+r1836 | joe | 2011-05-03 12:57:03 +0100 (Tue, 03 May 2011) | 6 lines
-* po/: make update-po.
+* src/ne_gnutls.c (ne__ssl_init): Fix for GnuTLS with Nettle.
+
+* src/ne_auth.c (get_cnonce): Likewise.
+
+Submitted by: Arfrever Frehtes Taifersar Arahesis <arfrever.fta gmail.com>
------------------------------------------------------------------------
-r1732 | joe | 2009-09-13 12:57:18 +0100 (Sun, 13 Sep 2009) | 2 lines
+r1833 | joe | 2011-03-01 13:23:43 +0000 (Tue, 01 Mar 2011) | 3 lines
-* test/ssl.c (simple_sslv2): Skip better.
+* src/ne_request.c (ne_request_create): Pass copied method to
+ pre_send hooks to avoid lifetime issues (Patrick Ohly).
------------------------------------------------------------------------
-r1731 | joe | 2009-09-13 12:56:25 +0100 (Sun, 13 Sep 2009) | 2 lines
+r1828 | joe | 2010-11-11 12:23:05 +0000 (Thu, 11 Nov 2010) | 4 lines
-* test/ssl.c (simple_sslv2): Skip for OpenSSL.
+* src/ne_gnutls.c (provide_client_cert): Return success with no cert
+ if no cert is available; match behaviour with OpenSSL. Thanks to
+ Patrick Ohly.
------------------------------------------------------------------------
-r1730 | joe | 2009-09-13 12:56:10 +0100 (Sun, 13 Sep 2009) | 2 lines
+r1827 | joe | 2010-11-07 19:41:27 +0000 (Sun, 07 Nov 2010) | 2 lines
-* macros/neon.m4: Prep for 0.29.0.
+* doc/ref/iaddr.xml: Update ne_iaddr_* docs.
------------------------------------------------------------------------
-r1729 | joe | 2009-09-13 12:43:01 +0100 (Sun, 13 Sep 2009) | 2 lines
+r1819 | joe | 2010-10-09 17:01:29 +0100 (Sat, 09 Oct 2010) | 3 lines
-* NEWS: Tweak wording.
+* src/ne_socket.c (ne_sock_connect_ssl): Ignore TLS warnings
+ during handshake (Bryan Cain).
------------------------------------------------------------------------
-r1728 | joe | 2009-09-13 12:41:22 +0100 (Sun, 13 Sep 2009) | 2 lines
+r1818 | joe | 2010-10-09 16:56:20 +0100 (Sat, 09 Oct 2010) | 5 lines
-* NEWS: Note OpenSSL 1.0 beta build fix.
+* test/socket.c (addr_reverse) [HAVE_GETHOSTNAME]: Accept system
+ hostname as reverse of 127.0.0.1.
+
+* macros/neon-test.m4 (NEON_TEST): Check for gethostname().
------------------------------------------------------------------------
-r1727 | joe | 2009-09-13 12:40:59 +0100 (Sun, 13 Sep 2009) | 5 lines
+r1811 | joe | 2010-09-28 12:55:07 +0100 (Tue, 28 Sep 2010) | 7 lines
-Merge r1726 from trunk:
+* src/ne_session.c (ne__ssl_match_hostname): Deny a wildcard match
+ against anything which parses as an IP address.
-* src/ne_socket.c (ne_sock_close) [HAVE_OPENSSL]: Ensure SSL
- connection is shut down cleanly.
+* test/ssl.c (fail_wildcard_ip): Add test case.
+
+* test/makekeys.sh: Generate test wildcard IP cert.
------------------------------------------------------------------------
-r1725 | joe | 2009-09-13 12:26:52 +0100 (Sun, 13 Sep 2009) | 10 lines
+r1810 | joe | 2010-09-28 09:49:04 +0100 (Tue, 28 Sep 2010) | 2 lines
-Merge r1724 from trunk:
+* test/request.c: Adjust to new test API throughout.
-* src/ne_openssl.c: Include opensslv.h.
- (SSL_SESSION_cmp): Define if not available, for OpenSSL >= 1.0.
+------------------------------------------------------------------------
+r1809 | joe | 2010-09-28 09:47:07 +0100 (Tue, 28 Sep 2010) | 5 lines
-* src/ne_socket.c (ne_sock_accept_ssl): Add debug log output if
- session is resumed.
+* src/ne_request.c (open_connection): If SOCKS proxy fails, set return
+ value to NE_ERROR.
-* macros/neon.m4 (NEON_SSL): Check for SSL_SESSION_cmp.
+* test/request.c (socks_fail): Add test case.
------------------------------------------------------------------------
-r1723 | joe | 2009-09-04 08:36:26 +0100 (Fri, 04 Sep 2009) | 6 lines
+r1805 | joe | 2010-09-22 20:23:49 +0100 (Wed, 22 Sep 2010) | 4 lines
+
+* src/ne_auth.c (ah_post_send): Always clear the SSPI context.
+(Danil Shopyrin)
-Merge r1722 from trunk:
-* Makefile.in, README: Collect copyright notices from po/*.
+------------------------------------------------------------------------
+r1804 | joe | 2010-09-04 14:17:30 +0100 (Sat, 04 Sep 2010) | 2 lines
-* po/: Update copyright notices.
+* test/ssl.c (fail_ssl_request_with_error2): Document better.
------------------------------------------------------------------------
-r1721 | joe | 2009-09-04 08:29:23 +0100 (Fri, 04 Sep 2009) | 2 lines
+r1803 | joe | 2010-09-04 14:16:22 +0100 (Sat, 04 Sep 2010) | 2 lines
-* po/pl.po, NEWS: Update Polish translation (Arfrever Frehtes Taifersar Arahesis).
+* src/ne_session.h: Wording tweak.
------------------------------------------------------------------------
-r1720 | joe | 2009-09-04 08:27:49 +0100 (Fri, 04 Sep 2009) | 2 lines
+r1802 | joe | 2010-09-04 14:15:29 +0100 (Sat, 04 Sep 2010) | 2 lines
-* NEWS: Update.
+* macros/neon.m4 (NE_CHECK_FUNCS): Fix AI_ADDRCONFIG detection.
------------------------------------------------------------------------
-r1717 | joe | 2009-09-02 21:44:08 +0100 (Wed, 02 Sep 2009) | 2 lines
+r1801 | joe | 2010-05-05 09:25:17 +0100 (Wed, 05 May 2010) | 7 lines
-* po/: make update-po.
+* src/ne_request.c (body_fd_send): Handle read() errors; thanks to Lou
+ Montulli.
+
+* test/request.c (serve_mirror, send_length): Add test case.
+
+* test/Makefile.in (foobar.txt): Create test file.
------------------------------------------------------------------------
-r1716 | joe | 2009-09-02 21:43:09 +0100 (Wed, 02 Sep 2009) | 2 lines
+r1799 | joe | 2010-04-23 10:02:28 +0100 (Fri, 23 Apr 2010) | 2 lines
-* NEWS: Update.
+* src/ne_socket.c (raw_poll): Check for execptions in select().
------------------------------------------------------------------------
-r1715 | joe | 2009-09-02 21:29:42 +0100 (Wed, 02 Sep 2009) | 10 lines
+r1798 | joe | 2010-04-21 21:41:01 +0100 (Wed, 21 Apr 2010) | 3 lines
-Merge r1713, r1714 from trunk:
+* test/lock.c (fake_session): New function.
+ (everywhere): Replace use of make_session with fake_session.
-* src/ne_request.c (socks_origin_lookup): New function.
- (open_connection): Use it to fix support for SOCKSv4 servers.
+------------------------------------------------------------------------
+r1797 | joe | 2010-04-21 21:30:46 +0100 (Wed, 21 Apr 2010) | 3 lines
-* test/request.c (socks_v4_proxy): Add test case.
+* src/ne_auth.c: Add handling of 2xx responses in SSPI code.
+(Danil Shopyrin <danil visualsvn.com>)
+
+------------------------------------------------------------------------
+r1795 | joe | 2010-03-29 10:14:16 +0100 (Mon, 29 Mar 2010) | 2 lines
+
+* doc/ref/reqflags.xml: Doc tweak.
+
+------------------------------------------------------------------------
+r1794 | joe | 2010-03-29 09:49:56 +0100 (Mon, 29 Mar 2010) | 3 lines
+
+* src/ne_session.c (ne_session_create): Fix to enable SNI by default again.
+ (Tobias Gruetzmacher)
+
+------------------------------------------------------------------------
+r1793 | joe | 2010-03-25 07:57:36 +0000 (Thu, 25 Mar 2010) | 2 lines
+
+* doc/ref/: Fix some refpurposes.
+
+------------------------------------------------------------------------
+r1792 | joe | 2010-03-11 10:03:38 +0000 (Thu, 11 Mar 2010) | 2 lines
+
+* src/ne_request.c (do_connect): Tweak debugging.
+
+------------------------------------------------------------------------
+r1780 | joe | 2010-01-11 10:23:06 +0000 (Mon, 11 Jan 2010) | 3 lines
+
+* test/socket.c (ssl_closure, ssl_truncate): Don't expect clean
+ closure.
+
+------------------------------------------------------------------------
+r1779 | joe | 2010-01-10 22:42:55 +0000 (Sun, 10 Jan 2010) | 3 lines
+
+* test/socket.c (ssl_closure, ssl_truncate): Don't expect clean
+ closure.
+
+------------------------------------------------------------------------
+r1778 | joe | 2010-01-10 21:53:58 +0000 (Sun, 10 Jan 2010) | 2 lines
+
+* src/ne_socket.c (ne_sock_accept): Set the socket error string.
+
+------------------------------------------------------------------------
+r1777 | joe | 2010-01-08 11:09:36 +0000 (Fri, 08 Jan 2010) | 4 lines
+
+* src/ne_defs.h: Only define NE_PRIVATE if undefined.
+
+* configure.in: Define NE_PRIVATE to 'extern' for a static build.
+
+------------------------------------------------------------------------
+r1770 | joe | 2009-12-30 21:26:50 +0000 (Wed, 30 Dec 2009) | 5 lines
+
+* src/ne_openssl.c (verify_callback): Handle OpenSSL error code
+ X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT as an untrusted cert.
+
+Submitted by: Tom C <tomc.neon pnl.gov>
+
+------------------------------------------------------------------------
+r1764 | joe | 2009-12-15 22:19:06 +0000 (Tue, 15 Dec 2009) | 1 line
+
+NEWS: Sync with 0.29.x branch.
+------------------------------------------------------------------------
+r1761 | joe | 2009-12-14 21:43:45 +0000 (Mon, 14 Dec 2009) | 2 lines
+
+* test/session.c: Avoid hard-coded references to port 7777.
+
+------------------------------------------------------------------------
+r1760 | joe | 2009-12-14 21:43:22 +0000 (Mon, 14 Dec 2009) | 3 lines
+
+* test/auth.c: Adjust to use {proxied_,}session_server API, avoid
+ hard-coded use of port 7777.
+
+------------------------------------------------------------------------
+r1759 | joe | 2009-12-14 21:41:24 +0000 (Mon, 14 Dec 2009) | 4 lines
+
+* test/common/child.c (new_spawn_server): Take 'repeat' argument.
+
+* test/socket.c, test/utils.c: Adjust accordingly.
+
+------------------------------------------------------------------------
+r1758 | joe | 2009-12-14 21:01:35 +0000 (Mon, 14 Dec 2009) | 2 lines
+
+* test/utils.c (proxied_session_server): Take scheme argument.
+
+------------------------------------------------------------------------
+r1757 | joe | 2009-12-14 20:56:20 +0000 (Mon, 14 Dec 2009) | 2 lines
+
+* test/socket.c, test/stubs.c: Adapt for {proxied_}session_server.
+
+------------------------------------------------------------------------
+r1756 | joe | 2009-12-14 20:55:43 +0000 (Mon, 14 Dec 2009) | 3 lines
+
+* test/auth.c, test/redirect.c, test/props.c: Adapt to use
+ session_server, proxied_session_server.
+
+------------------------------------------------------------------------
+r1755 | joe | 2009-12-14 20:52:45 +0000 (Mon, 14 Dec 2009) | 3 lines
+
+* test/utils.c (session_server, proxied_session_server): New
+ functions. (make_session): Use session_server.
+
+------------------------------------------------------------------------
+r1754 | joe | 2009-12-14 20:48:40 +0000 (Mon, 14 Dec 2009) | 2 lines
+
+* test/common/child.c, child.h (new_spawn_server): New function.
+
+------------------------------------------------------------------------
+r1750 | joe | 2009-12-02 21:38:17 +0000 (Wed, 02 Dec 2009) | 2 lines
+
+* src/ne_gnutls.c (map_verify_failures): Fix build for GnuTLS < 2.8.
+
+------------------------------------------------------------------------
+r1748 | joe | 2009-12-02 21:16:17 +0000 (Wed, 02 Dec 2009) | 8 lines
+
+Clear sspi_token buffer after each request.
+
+* src/ne_auth.c (request_sspi): Return NULL if sspi_token is not present.
+
+* src/ne_auth.c (ah_post_send): Clear the buffered sspi_token.
+
+Submitted by: Danil Shopyrin <danil visualsvn.com>
+
+------------------------------------------------------------------------
+r1747 | joe | 2009-12-02 21:15:12 +0000 (Wed, 02 Dec 2009) | 2 lines
+
+* src/ne_ntlm.c (mkhash): Fix buffer overflow (basic@mozdev.org).
+
+------------------------------------------------------------------------
+r1746 | kso | 2009-11-19 22:36:08 +0000 (Thu, 19 Nov 2009) | 5 lines
+
+* src/ne_ntlm.c (ne__ntlm_authenticate)
+* src/ne_auth.c (ntlm_challenge)
+ - in case of session timeout, do not call auth callback; use
+ existing credentials.
+
+------------------------------------------------------------------------
+r1745 | kso | 2009-11-13 09:29:37 +0000 (Fri, 13 Nov 2009) | 1 line
+
+* src/ne_utils.c, src/ne_utils.h : Added NE_FEATURE_SSPI.
+------------------------------------------------------------------------
+r1744 | kso | 2009-11-13 08:56:21 +0000 (Fri, 13 Nov 2009) | 1 line
+
+fixed 'missing symbol' win2k runtime problem.
+------------------------------------------------------------------------
+r1742 | joe | 2009-10-25 10:20:19 +0000 (Sun, 25 Oct 2009) | 3 lines
+
+* src/ne_session.c (ne_session_create): Only enable SNI by default if
+ the server hostname does not parse as a numeric IP address.
+
+------------------------------------------------------------------------
+r1739 | joe | 2009-09-26 20:56:52 +0100 (Sat, 26 Sep 2009) | 2 lines
+
+* config.hw.in: Fix socklen_t with recent SDKs, thanks to Stefan Kung.
+
+------------------------------------------------------------------------
+r1738 | joe | 2009-09-26 20:55:51 +0100 (Sat, 26 Sep 2009) | 3 lines
+
+* src/ne_socket.c (ne_sock_close) [HAVE_OPENSSL]: Ensure SSL
+ connection is shut down cleanly.
+
+------------------------------------------------------------------------
+r1726 | joe | 2009-09-13 12:37:13 +0100 (Sun, 13 Sep 2009) | 3 lines
+
+* src/ne_socket.c (ne_sock_close) [HAVE_OPENSSL]: Ensure SSL
+ connection is shut down cleanly.
+
+------------------------------------------------------------------------
+r1724 | joe | 2009-09-12 21:03:49 +0100 (Sat, 12 Sep 2009) | 8 lines
* macros/neon.m4 (LIBNEON_SOURCE_CHECKS): Require inet_pton for
getaddrinfo support.
+* src/ne_socket.c (ne_sock_accept_ssl): Add debug log output if
+ session is resumed.
+
+* macros/neon.m4 (NEON_SSL): Check for SSL_SESSION_cmp.
+
------------------------------------------------------------------------
-r1712 | joe | 2009-09-02 20:43:05 +0100 (Wed, 02 Sep 2009) | 22 lines
+r1722 | joe | 2009-09-04 08:35:11 +0100 (Fri, 04 Sep 2009) | 4 lines
-Merge r1709, r1710, r1711 from trunk:
+* Makefile.in, README: Collect copyright notices from po/*.
-* test/util-socks.c (read_socks_0string): Pass through context string.
- (socks_server): Fail for v4 server without expected address.
- Don't write "ok" message for v4 server without say_hello flag.
+* po/: Update copyright notices.
-* src/ne_socket.c (ne_iaddr_parse): New function.
-
-* test/socket.c (check_is_raw127): Factored out from addr_make_v4.
- (parse_v4): New function.
- (addr_make_v6): Test ne_iaddr_parse for IPv6 addresses.
- (socks_proxy): Fix for non-v6-enabled builds.
+------------------------------------------------------------------------
+r1719 | joe | 2009-09-04 08:14:03 +0100 (Fri, 04 Sep 2009) | 2 lines
-* src/ne_socket.c (ne_iaddr_parse) [!USE_GETADDRINFO]: Fail for IPv6
- addresses.
+* po/pl.po: Update, from Arfrever Frehtes Taifersar Arahesis.
-* test/socket.c (addr_make_v6) [!TEST_IPV6]: Test for failure.
+------------------------------------------------------------------------
+r1718 | joe | 2009-09-04 08:12:58 +0100 (Fri, 04 Sep 2009) | 1 line
-Also:
+* macros/neon.m4: Bump to 0.30.0-dev.
+------------------------------------------------------------------------
+r1714 | joe | 2009-09-02 21:26:39 +0100 (Wed, 02 Sep 2009) | 3 lines
-* src/neon.vers: Add ne_iaddr_parse.
+* macros/neon.m4 (LIBNEON_SOURCE_CHECKS): Require inet_pton for
+ getaddrinfo support.
------------------------------------------------------------------------
-r1708 | joe | 2009-09-02 15:51:26 +0100 (Wed, 02 Sep 2009) | 2 lines
+r1713 | joe | 2009-09-02 21:25:59 +0100 (Wed, 02 Sep 2009) | 5 lines
-* macros/neon.m4: Set libtool versions as backwards-compat to 0.27.x.
+* src/ne_request.c (socks_origin_lookup): New function.
+ (open_connection): Use it to fix support for SOCKSv4 servers.
+
+* test/request.c (socks_v4_proxy): Add test case.
------------------------------------------------------------------------
-r1707 | joe | 2009-09-02 15:50:59 +0100 (Wed, 02 Sep 2009) | 2 lines
+r1711 | joe | 2009-09-02 18:28:56 +0100 (Wed, 02 Sep 2009) | 5 lines
-* po/: make update-po.
+* src/ne_socket.c (ne_iaddr_parse) [!USE_GETADDRINFO]: Fail for IPv6
+ addresses.
+
+* test/socket.c (addr_make_v6) [!TEST_IPV6]: Test for failure.
------------------------------------------------------------------------
-r1706 | joe | 2009-09-02 15:40:47 +0100 (Wed, 02 Sep 2009) | 2 lines
+r1710 | joe | 2009-09-02 17:06:11 +0100 (Wed, 02 Sep 2009) | 7 lines
-Branch for 0.29.x.
+* src/ne_socket.c (ne_iaddr_parse): New function.
+
+* test/socket.c (check_is_raw127): Factored out from addr_make_v4.
+ (parse_v4): New function.
+ (addr_make_v6): Test ne_iaddr_parse for IPv6 addresses.
+ (socks_proxy): Fix for non-v6-enabled builds.
+
+------------------------------------------------------------------------
+r1709 | joe | 2009-09-02 16:50:05 +0100 (Wed, 02 Sep 2009) | 4 lines
+
+* test/util-socks.c (read_socks_0string): Pass through context string.
+ (socks_server): Fail for v4 server without expected address.
+ Don't write "ok" message for v4 server without say_hello flag.
------------------------------------------------------------------------
r1705 | joe | 2009-09-02 15:40:13 +0100 (Wed, 02 Sep 2009) | 2 lines
+Changes in release 0.30.0:
+* Interface changes:
+ - none, API and ABI backwards-compatible with 0.27.x and later
+* New interfaces and features:
+ - ne_ssl.h: added ne_ssl_clicert_import, ne_ssl_context_get_flag
+ - ne_session.h: added ne_set_addrlist2
+ - ne_socket.h: added ne_addr_canonical
+ - ne_auth.h: added NE_AUTH_GSSAPI_ONLY, NE_AUTH_SSPI (Nathanael Rensen)
+ - ne_basic.h: added NE_CAP_EXT_MKCOL options test
+ - ne_request.h: support chunked bodies with negative length passed to
+ ne_set_request_body_provider (Julien Reichel)
+* Bug fixes:
+ - ne_path_escape: fix excessive memory allocation (Pierre Crokaert)
+ - SSPI auth: use canonical server hostname, clear SSPI context after
+ successful auth (Nathanael Rensen)
+ - build fixes for Open Watcom compiler (NormW)
+ - fix Win32 error code handling for local ne_sock_prebind bind failure
+ - Win32: support LFS, thread-safe OpenSSL (Diego Santa Cruz)
+ - GnuTLS: fix GnuTLS 3.x support (Matthias Petschick, Bartosz Brachaczek)
+
Changes in release 0.29.6:
* Don't abort SSL handshake with GnuTLS if a client cert is requested
but none is configured/available (thanks to Patrick Ohly)
-* Fix GnuTLS build with Nettle (Arfrever Frehtes Taifersar Arahesis)
-* Win32: Fix handling of SSPI challenges (Ivan Zhakov)
* Fix the method string passed to create_request hooks to have the same
lifetime as the request object (Patrick Ohly)
* Docs updates.
* Fixes for (Unix) NTLM implementation:
- fix handling of session timeout (Kai Sommerfeld)
- fix possible crash (basic@mozdev.org)
+* Fix unnecessary re-authentication with SSPI (Danil Shopyrin)
* Build fixes for Win32:
- fix use of socklen_t with recent SDKs (Stefan Kung)
- fix USE_GETADDRINFO on Win2K (Kai Sommerfeld)
-# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
+# generated automatically by aclocal 1.13.4 -*- Autoconf -*-
+
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
# 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.
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
+m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
# 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 Free Software Foundation,
-# Inc.
+# 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
# Written by Gordon Matzigkeit, 1996
#
# This file is free software; the Free Software Foundation gives
m4_define([_LT_COPYING], [dnl
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
-# Inc.
+# 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
# Written by Gordon Matzigkeit, 1996
#
# This file is part of GNU Libtool.
AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl
AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
+_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl
+dnl
_LT_DECL([], [host_alias], [0], [The host system])dnl
_LT_DECL([], [host], [0])dnl
_LT_DECL([], [host_os], [0])dnl
dnl
m4_require([_LT_FILEUTILS_DEFAULTS])dnl
m4_require([_LT_CHECK_SHELL_FEATURES])dnl
+m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl
m4_require([_LT_CMD_RELOAD])dnl
m4_require([_LT_CHECK_MAGIC_METHOD])dnl
+m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl
m4_require([_LT_CMD_OLD_ARCHIVE])dnl
m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+m4_require([_LT_WITH_SYSROOT])dnl
_LT_CONFIG_LIBTOOL_INIT([
# See if we are running on zsh, and set the options which allow our
m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
configured by $[0], generated by m4_PACKAGE_STRING.
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2011 Free Software Foundation, Inc.
This config.lt script is free software; the Free Software Foundation
gives unlimited permision to copy, distribute and modify it."
# if finds mixed CR/LF and LF-only lines. Since sed operates in
# text mode, it properly converts lines to CR/LF. This bash problem
# is reportedly fixed, but why not run on old versions too?
- sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
- || (rm -f "$cfgfile"; exit 1)
+ sed '$q' "$ltmain" >> "$cfgfile" \
+ || (rm -f "$cfgfile"; exit 1)
- _LT_PROG_XSI_SHELLFNS
+ _LT_PROG_REPLACE_SHELLFNS
- sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
- || (rm -f "$cfgfile"; exit 1)
-
- mv -f "$cfgfile" "$ofile" ||
+ mv -f "$cfgfile" "$ofile" ||
(rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
chmod +x "$ofile"
],
m4_case([$1],
[C], [_LT_LANG(C)],
[C++], [_LT_LANG(CXX)],
+ [Go], [_LT_LANG(GO)],
[Java], [_LT_LANG(GCJ)],
[Fortran 77], [_LT_LANG(F77)],
[Fortran], [_LT_LANG(FC)],
])# _LT_LANG
+m4_ifndef([AC_PROG_GO], [
+# NOTE: This macro has been submitted for inclusion into #
+# GNU Autoconf as AC_PROG_GO. When it is available in #
+# a released version of Autoconf we should remove this #
+# macro and use it instead. #
+m4_defun([AC_PROG_GO],
+[AC_LANG_PUSH(Go)dnl
+AC_ARG_VAR([GOC], [Go compiler command])dnl
+AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl
+_AC_ARG_VAR_LDFLAGS()dnl
+AC_CHECK_TOOL(GOC, gccgo)
+if test -z "$GOC"; then
+ if test -n "$ac_tool_prefix"; then
+ AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo])
+ fi
+fi
+if test -z "$GOC"; then
+ AC_CHECK_PROG(GOC, gccgo, gccgo, false)
+fi
+])#m4_defun
+])#m4_ifndef
+
+
# _LT_LANG_DEFAULT_CONFIG
# -----------------------
m4_defun([_LT_LANG_DEFAULT_CONFIG],
m4_ifdef([LT_PROG_GCJ],
[m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
+AC_PROVIDE_IFELSE([AC_PROG_GO],
+ [LT_LANG(GO)],
+ [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])])
+
AC_PROVIDE_IFELSE([LT_PROG_RC],
[LT_LANG(RC)],
[m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
-dynamiclib -Wl,-single_module conftest.c 2>conftest.err
_lt_result=$?
- if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
+ # If there is a non-empty error log, and "single_module"
+ # appears in it, assume the flag caused a linker warning
+ if test -s conftest.err && $GREP single_module conftest.err; then
+ 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
lt_cv_apple_cc_single_mod=yes
else
cat conftest.err >&AS_MESSAGE_LOG_FD
rm -rf libconftest.dylib*
rm -f conftest.*
fi])
+
AC_CACHE_CHECK([for -exported_symbols_list linker flag],
[lt_cv_ld_exported_symbols_list],
[lt_cv_ld_exported_symbols_list=no
[lt_cv_ld_exported_symbols_list=no])
LDFLAGS="$save_LDFLAGS"
])
+
AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load],
[lt_cv_ld_force_load=no
cat > conftest.c << _LT_EOF
echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD
$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
_lt_result=$?
- if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then
+ 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
lt_cv_ld_force_load=yes
else
cat conftest.err >&AS_MESSAGE_LOG_FD
])
-# _LT_DARWIN_LINKER_FEATURES
-# --------------------------
+# _LT_DARWIN_LINKER_FEATURES([TAG])
+# ---------------------------------
# Checks for linker and compiler features on darwin
m4_defun([_LT_DARWIN_LINKER_FEATURES],
[
_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\"`'
+ 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
fi
])
-# _LT_SYS_MODULE_PATH_AIX
-# -----------------------
+# _LT_SYS_MODULE_PATH_AIX([TAGNAME])
+# ----------------------------------
# Links a minimal program and checks the executable
# for the system default hardcoded library path. In most cases,
# this is /usr/lib:/lib, but when the MPI compilers are used
# the location of the communication and MPI libs are included too.
# If we don't find anything, use the default library path according
# to the aix ld manual.
+# Store the results from the different compilers for each TAGNAME.
+# 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
-AC_LINK_IFELSE(AC_LANG_PROGRAM,[
-lt_aix_libpath_sed='
- /Import File Strings/,/^$/ {
- /^0/ {
- s/^0 *\(.*\)$/\1/
- p
- }
- }'
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then
- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-fi],[])
-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+if test "${lt_cv_aix_libpath+set}" = set; then
+ aix_libpath=$lt_cv_aix_libpath
+else
+ AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])],
+ [AC_LINK_IFELSE([AC_LANG_PROGRAM],[
+ lt_aix_libpath_sed='[
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\([^ ]*\) *$/\1/
+ p
+ }
+ }]'
+ _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+ # Check for a 64-bit object if we didn't find anything.
+ if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
+ _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"
+ fi
+ ])
+ aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])
+fi
])# _LT_SYS_MODULE_PATH_AIX
AC_MSG_CHECKING([how to print strings])
# Test print first, because it will be a builtin if present.
-if test "X`print -r -- -n 2>/dev/null`" = X-n && \
+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
ECHO='print -r --'
elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
])# _LT_PROG_ECHO_BACKSLASH
+# _LT_WITH_SYSROOT
+# ----------------
+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).],
+[], [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 #(
+ yes)
+ if test "$GCC" = yes; then
+ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+ fi
+ ;; #(
+ /*)
+ lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
+ ;; #(
+ no|'')
+ ;; #(
+ *)
+ 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.])])
+
# _LT_ENABLE_LOCK
# ---------------
m4_defun([_LT_ENABLE_LOCK],
CFLAGS="$SAVE_CFLAGS"
fi
;;
-sparc*-*solaris*)
+*-*solaris*)
# Find out which ABI we are using.
echo 'int i;' > conftest.$ac_ext
if AC_TRY_EVAL(ac_compile); then
case `/usr/bin/file conftest.o` in
*64-bit*)
case $lt_cv_prog_gnu_ld in
- yes*) LD="${LD-ld} -m elf64_sparc" ;;
+ yes*)
+ case $host in
+ i?86-*-solaris*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ sparc*-*-solaris*)
+ LD="${LD-ld} -m elf64_sparc"
+ ;;
+ 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"
+ fi
+ ;;
*)
if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
LD="${LD-ld} -64"
])# _LT_ENABLE_LOCK
+# _LT_PROG_AR
+# -----------
+m4_defun([_LT_PROG_AR],
+[AC_CHECK_TOOLS(AR, [ar], false)
+: ${AR=ar}
+: ${AR_FLAGS=cru}
+_LT_DECL([], [AR], [1], [The archiver])
+_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive])
+
+AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file],
+ [lt_cv_ar_at_file=no
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM],
+ [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
+ # 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
+ lt_cv_ar_at_file=@
+ fi
+ fi
+ rm -f conftest.* libconftest.a
+ ])
+ ])
+
+if test "x$lt_cv_ar_at_file" = xno; then
+ archiver_list_spec=
+else
+ archiver_list_spec=$lt_cv_ar_at_file
+fi
+_LT_DECL([], [archiver_list_spec], [1],
+ [How to feed a file listing to the archiver])
+])# _LT_PROG_AR
+
+
# _LT_CMD_OLD_ARCHIVE
# -------------------
m4_defun([_LT_CMD_OLD_ARCHIVE],
-[AC_CHECK_TOOL(AR, ar, false)
-test -z "$AR" && AR=ar
-test -z "$AR_FLAGS" && AR_FLAGS=cru
-_LT_DECL([], [AR], [1], [The archiver])
-_LT_DECL([], [AR_FLAGS], [1])
+[_LT_PROG_AR
AC_CHECK_TOOL(STRIP, strip, :)
test -z "$STRIP" && STRIP=:
if test -n "$RANLIB"; then
case $host_os in
openbsd*)
- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
;;
*)
- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
;;
esac
- old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
fi
case $host_os in
lt_cv_sys_max_cmd_len=196608
;;
+ os2*)
+ # The test takes a long time on OS/2.
+ lt_cv_sys_max_cmd_len=8192
+ ;;
+
osf*)
# Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
# due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
# 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"`func_fallback_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
do
/* When -fvisbility=hidden is used, assume the code has been annotated
correspondingly for the symbols needed. */
#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
-void fnord () __attribute__((visibility("default")));
+int fnord () __attribute__((visibility("default")));
#endif
-void fnord () { int i=42; }
+int fnord () { return 42; }
int main ()
{
void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
case $host_os in
aix3*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
shlibpath_var=LIBPATH
;;
aix[[4-9]]*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
hardcode_into_libs=yes
;;
bsdi[[45]]*)
- version_type=linux
+ 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'
need_version=no
need_lib_prefix=no
- case $GCC,$host_os in
- yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
+ case $GCC,$cc_basename in
+ yes,*)
+ # gcc
library_names_spec='$libname.dll.a'
# DLL is installed to $(libdir)/../bin by postinstall_cmds
postinstall_cmds='base_file=`basename \${file}`~
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'
+ ;;
+
+ *,cl*)
+ # Native MSVC
+ libname_spec='$name'
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ library_names_spec='${libname}.dll.lib'
+
+ case $build_os in
+ mingw*)
+ sys_lib_search_path_spec=
+ lt_save_ifs=$IFS
+ IFS=';'
+ for lt_path in $LIB
+ do
+ IFS=$lt_save_ifs
+ # Let DOS variable expansion print the short 8.3 style file name.
+ lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
+ sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
+ done
+ IFS=$lt_save_ifs
+ # Convert to MSYS style.
+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'`
+ ;;
+ cygwin*)
+ # Convert to unix form, then to dos form, then back to unix form
+ # but this time dos style (no spaces!) so that the unix form looks
+ # like /cygdrive/c/PROGRA~1:/cygdr...
+ sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
+ sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
+ 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"
+ 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'`
+ else
+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ # FIXME: find the short name or the path components, as spaces are
+ # common. (e.g. "Program Files" -> "PROGRA~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'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $RM \$dlpath'
+ shlibpath_overrides_runpath=yes
+ dynamic_linker='Win32 link.exe'
;;
*)
+ # Assume MSVC wrapper
library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ dynamic_linker='Win32 ld.exe'
;;
esac
- dynamic_linker='Win32 ld.exe'
# FIXME: first we should search . and the directory the executable is in
shlibpath_var=PATH
;;
;;
dgux*)
- version_type=linux
+ 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'
shlibpath_var=LD_LIBRARY_PATH
;;
-freebsd1*)
- dynamic_linker=no
- ;;
-
freebsd* | dragonfly*)
# DragonFly does not have aout. When/if they implement a new
# versioning mechanism, adjust this.
objformat=`/usr/bin/objformat`
else
case $host_os in
- freebsd[[123]]*) objformat=aout ;;
+ freebsd[[23]].*) objformat=aout ;;
*) objformat=elf ;;
esac
fi
esac
shlibpath_var=LD_LIBRARY_PATH
case $host_os in
- freebsd2*)
+ freebsd2.*)
shlibpath_overrides_runpath=yes
;;
freebsd3.[[01]]* | freebsdelf3.[[01]]*)
;;
gnu*)
- version_type=linux
+ 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'
shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
hardcode_into_libs=yes
;;
haiku*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
dynamic_linker="$host_os runtime_loader"
;;
interix[[3-9]]*)
- version_type=linux
+ 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}'
nonstopux*) version_type=nonstopux ;;
*)
if test "$lt_cv_prog_gnu_ld" = yes; then
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
else
version_type=irix
fi ;;
dynamic_linker=no
;;
-# This must be Linux ELF.
+# This must be glibc/ELF.
linux* | k*bsd*-gnu | kopensolaris*-gnu)
- version_type=linux
+ 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}'
;;
newsos6)
- version_type=linux
+ 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}'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=yes
;;
solaris*)
- version_type=linux
+ 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}'
;;
sysv4 | sysv4.3*)
- version_type=linux
+ 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'
shlibpath_var=LD_LIBRARY_PATH
sysv4*MP*)
if test -d /usr/nec ;then
- version_type=linux
+ 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'
shlibpath_var=LD_LIBRARY_PATH
tpf*)
# TPF is a cross-target only. Preferred cross-host = GNU/Linux.
- version_type=linux
+ 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}'
;;
uts4*)
- version_type=linux
+ 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'
shlibpath_var=LD_LIBRARY_PATH
esac
reload_cmds='$LD$reload_flag -o $output$reload_objs'
case $host_os in
+ cygwin* | mingw* | pw32* | cegcc*)
+ if test "$GCC" != yes; then
+ reload_cmds=false
+ fi
+ ;;
darwin*)
if test "$GCC" = yes; then
reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
lt_cv_deplibs_check_method=pass_all
;;
-# This must be Linux ELF.
+# This must be glibc/ELF.
linux* | k*bsd*-gnu | kopensolaris*-gnu)
lt_cv_deplibs_check_method=pass_all
;;
;;
esac
])
+
+file_magic_glob=
+want_nocaseglob=no
+if test "$build" = "$host"; then
+ case $host_os in
+ mingw* | pw32*)
+ if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
+ want_nocaseglob=yes
+ else
+ file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"`
+ fi
+ ;;
+ esac
+fi
+
file_magic_cmd=$lt_cv_file_magic_cmd
deplibs_check_method=$lt_cv_deplibs_check_method
test -z "$deplibs_check_method" && deplibs_check_method=unknown
_LT_DECL([], [deplibs_check_method], [1],
[Method to check whether dependent libraries are shared objects])
_LT_DECL([], [file_magic_cmd], [1],
- [Command to use when deplibs_check_method == "file_magic"])
+ [Command to use when deplibs_check_method = "file_magic"])
+_LT_DECL([], [file_magic_glob], [1],
+ [How to find potential files when deplibs_check_method = "file_magic"])
+_LT_DECL([], [want_nocaseglob], [1],
+ [Find potential files using nocaseglob when deplibs_check_method = "file_magic"])
])# _LT_CHECK_MAGIC_METHOD
dnl AC_DEFUN([AM_PROG_NM], [])
dnl AC_DEFUN([AC_PROG_NM], [])
+# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
+# --------------------------------
+# how to determine the name of the shared library
+# associated with a specific link library.
+# -- PORTME fill in with the dynamic library characteristics
+m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB],
+[m4_require([_LT_DECL_EGREP])
+m4_require([_LT_DECL_OBJDUMP])
+m4_require([_LT_DECL_DLLTOOL])
+AC_CACHE_CHECK([how to associate runtime and link libraries],
+lt_cv_sharedlib_from_linklib_cmd,
+[lt_cv_sharedlib_from_linklib_cmd='unknown'
+
+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
+ case `$DLLTOOL --help 2>&1` in
+ *--identify-strict*)
+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
+ ;;
+ *)
+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
+ ;;
+ esac
+ ;;
+*)
+ # fallback: assume linklib IS sharedlib
+ lt_cv_sharedlib_from_linklib_cmd="$ECHO"
+ ;;
+esac
+])
+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
+
+_LT_DECL([], [sharedlib_from_linklib_cmd], [1],
+ [Command to associate shared and link libraries])
+])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
+
+
+# _LT_PATH_MANIFEST_TOOL
+# ----------------------
+# locate the manifest tool
+m4_defun([_LT_PATH_MANIFEST_TOOL],
+[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :)
+test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
+AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool],
+ [lt_cv_path_mainfest_tool=no
+ echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD
+ $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ if $GREP 'Manifest Tool' conftest.out > /dev/null; then
+ lt_cv_path_mainfest_tool=yes
+ fi
+ rm -f conftest*])
+if test "x$lt_cv_path_mainfest_tool" != xyes; then
+ MANIFEST_TOOL=:
+fi
+_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl
+])# _LT_PATH_MANIFEST_TOOL
+
# LT_LIB_M
# --------
lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$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 -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'"
# Handle CRLF in mingw tool chain
opt_cr=
# 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};"\
" \$ 0!~/External *\|/{next};"\
" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
else
lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
fi
+ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
# Check to see that the pipe works correctly.
pipe_works=no
if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
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
+ relocations are performed -- see ld's documentation on pseudo-relocs. */
+# define LT@&t@_DLSYM_CONST
+#elif defined(__osf__)
+/* This system does not cope well with relocations in const data. */
+# define LT@&t@_DLSYM_CONST
+#else
+# define LT@&t@_DLSYM_CONST const
+#endif
+
#ifdef __cplusplus
extern "C" {
#endif
cat <<_LT_EOF >> conftest.$ac_ext
/* The mapping between symbol names and symbols. */
-const struct {
+LT@&t@_DLSYM_CONST struct {
const char *name;
void *address;
}
_LT_EOF
# Now try linking the two files.
mv conftest.$ac_objext conftstm.$ac_objext
- lt_save_LIBS="$LIBS"
- lt_save_CFLAGS="$CFLAGS"
+ lt_globsym_save_LIBS=$LIBS
+ lt_globsym_save_CFLAGS=$CFLAGS
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
pipe_works=yes
fi
- LIBS="$lt_save_LIBS"
- CFLAGS="$lt_save_CFLAGS"
+ LIBS=$lt_globsym_save_LIBS
+ CFLAGS=$lt_globsym_save_CFLAGS
else
echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
fi
AC_MSG_RESULT(ok)
fi
+# Response file support.
+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+ nm_file_list_spec='@'
+elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then
+ nm_file_list_spec='@'
+fi
+
_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
[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],
_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_file_list_spec], [1],
+ [Specify filename containing input files for $NM])
]) # _LT_CMD_GLOBAL_SYMBOLS
_LT_TAGVAR(lt_prog_compiler_pic, $1)=
_LT_TAGVAR(lt_prog_compiler_static, $1)=
-AC_MSG_CHECKING([for $compiler option to produce PIC])
m4_if([$1], [CXX], [
# C++ specific cases for pic, static, wl, etc.
if test "$GXX" = yes; then
;;
esac
;;
+ mingw* | cygwin* | os2* | pw32* | 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'])
+ ;;
dgux*)
case $cc_basename in
ec++*)
case $cc_basename in
nvcc*) # Cuda Compiler Driver 2.2
_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker '
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Xcompiler -fPIC'
+ if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)"
+ fi
;;
esac
else
_LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared'
_LT_TAGVAR(lt_prog_compiler_static, $1)='--static'
;;
+ 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'
+ ;;
pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
# Portland Group compilers (*not* the Pentium gcc compiler,
# which looks to be a dead project)
;;
*)
case `$CC -V 2>&1 | sed 5q` in
- *Sun\ F* | *Sun*Fortran*)
+ *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*)
# Sun Fortran 8.3 passes all unrecognized flags to the linker
_LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
_LT_TAGVAR(lt_prog_compiler_wl, $1)=''
;;
+ *Sun\ F* | *Sun*Fortran*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ ;;
*Sun\ C*)
# Sun C 5.9
_LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
;;
+ *Intel*\ [[CF]]*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'
+ ;;
+ *Portland\ Group*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
esac
;;
esac
_LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])"
;;
esac
-AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
-_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
- [How to pass a linker flag through the compiler])
+
+AC_CACHE_CHECK([for $compiler option to produce PIC],
+ [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)],
+ [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
+_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)
#
# Check to make sure the PIC flag actually works.
_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1],
[Additional compiler flags for building library objects])
+_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
+ [How to pass a linker flag through the compiler])
#
# Check to make sure the static flag actually works.
#
m4_defun([_LT_LINKER_SHLIBS],
[AC_REQUIRE([LT_PATH_LD])dnl
AC_REQUIRE([LT_PATH_NM])dnl
+m4_require([_LT_PATH_MANIFEST_TOOL])dnl
m4_require([_LT_FILEUTILS_DEFAULTS])dnl
m4_require([_LT_DECL_EGREP])dnl
m4_require([_LT_DECL_SED])dnl
AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
m4_if([$1], [CXX], [
_LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
case $host_os in
aix[[4-9]]*)
# If we're using GNU nm, then we don't want the "-C" option.
;;
pw32*)
_LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
- ;;
+ ;;
cygwin* | mingw* | cegcc*)
- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
- ;;
+ case $cc_basename in
+ cl*)
+ _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+ ;;
+ *)
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
+ _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
+ ;;
+ esac
+ ;;
*)
_LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
- ;;
+ ;;
esac
- _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
], [
runpath_var=
_LT_TAGVAR(allow_undefined_flag, $1)=
_LT_TAGVAR(hardcode_direct, $1)=no
_LT_TAGVAR(hardcode_direct_absolute, $1)=no
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
- _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
_LT_TAGVAR(hardcode_libdir_separator, $1)=
_LT_TAGVAR(hardcode_minus_L, $1)=no
_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
_LT_TAGVAR(always_export_symbols, $1)=no
_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
+ _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 $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
&& test "$tmp_diet" = no
then
- tmp_addflag=
+ tmp_addflag=' $pic_flag'
tmp_sharedflag='-shared'
case $cc_basename,$host_cpu in
pgcc*) # Portland Group C compiler
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)=
- _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $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
_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
wlarc=
else
- _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(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
;;
_LT_EOF
elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
- _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(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
*)
if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
- _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(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
_LT_TAGVAR(allow_undefined_flag, $1)='-berok'
# Determine the default libpath from the value encoded in an
# empty executable.
- _LT_SYS_MODULE_PATH_AIX
+ _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"
else
else
# Determine the default libpath from the value encoded in an
# empty executable.
- _LT_SYS_MODULE_PATH_AIX
+ _LT_SYS_MODULE_PATH_AIX([$1])
_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.
# Microsoft Visual C++.
# hardcode_libdir_flag_spec is actually meaningless, as there is
# no search path for DLLs.
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
- # Tell ltmain to make .lib files, not .a files.
- libext=lib
- # Tell ltmain to make .dll files, not .so files.
- 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.
- _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
- # FIXME: Should let the user specify the lib program.
- _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
- _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ case $cc_basename in
+ cl*)
+ # Native MSVC
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_TAGVAR(always_export_symbols, $1)=yes
+ _LT_TAGVAR(file_list_spec, $1)='@'
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ 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='
+ # 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
+ _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
+ # 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'
+ ;;
+ *)
+ # Assume MSVC wrapper
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ 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.
+ _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+ # FIXME: Should let the user specify the lib program.
+ _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ ;;
+ esac
;;
darwin* | rhapsody*)
_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
;;
- freebsd1*)
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
-
# FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
# support. Future versions do this automatically, but an explicit c++rt0.o
# does not break anything, and helps significantly (at the cost of a little
;;
# Unfortunately, older versions of FreeBSD 2 do not have this feature.
- freebsd2*)
+ freebsd2.*)
_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
_LT_TAGVAR(hardcode_direct, $1)=yes
_LT_TAGVAR(hardcode_minus_L, $1)=yes
# FreeBSD 3 and greater uses gcc -shared to do shared libraries.
freebsd* | dragonfly*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
_LT_TAGVAR(hardcode_direct, $1)=yes
_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
hpux9*)
if test "$GCC" = yes; then
- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ _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'
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'
fi
hpux10*)
if test "$GCC" = yes && test "$with_gnu_ld" = no; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${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'
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'
- _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
_LT_TAGVAR(hardcode_libdir_separator, $1)=:
_LT_TAGVAR(hardcode_direct, $1)=yes
_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
_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 -fPIC ${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 -fPIC ${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
irix5* | irix6* | nonstopux*)
if test "$GCC" = yes; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $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'
+ _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.
- save_LDFLAGS="$LDFLAGS"
- LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
- AC_LINK_IFELSE(int foo(void) {},
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $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"
+ # 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"
+ AC_LINK_IFELSE(
+ [AC_LANG_SOURCE(
+ [AC_LANG_CASE([C], [[int foo (void) { return 0; }]],
+ [C++], [[int foo (void) { return 0; }]],
+ [Fortran 77], [[
+ subroutine foo
+ end]],
+ [Fortran], [[
+ subroutine foo
+ 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'
+ fi
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'
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} $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(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(no_undefined_flag, $1)=' -z defs'
if test "$GCC" = yes; then
wlarc='${wl}'
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _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 ${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"*)
_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
[Flag to hardcode $libdir into a binary during linking.
This must work even if $libdir does not exist])
-_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1],
- [[If ld is used when linking, flag to hardcode $libdir into a binary
- during linking. This must work even if $libdir does not exist]])
_LT_TAGDECL([], [hardcode_libdir_separator], [1],
[Whether we need a single "-rpath" flag with a separated argument])
_LT_TAGDECL([], [hardcode_direct], [0],
to runtime path list])
_LT_TAGDECL([], [link_all_deplibs], [0],
[Whether libtool must link a program against all its dependency libraries])
-_LT_TAGDECL([], [fix_srcfile_path], [1],
- [Fix the shell variable $srcfile for the compiler])
_LT_TAGDECL([], [always_export_symbols], [0],
[Set to "yes" if exported symbols are required])
_LT_TAGDECL([], [export_symbols_cmds], [2],
[Symbols that must always be exported])
_LT_TAGDECL([], [prelink_cmds], [2],
[Commands necessary for linking programs (against libraries) with templates])
+_LT_TAGDECL([], [postlink_cmds], [2],
+ [Commands necessary for finishing linking programs])
_LT_TAGDECL([], [file_list_spec], [1],
[Specify filename containing input files])
dnl FIXME: Not yet implemented
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
_LT_TAGVAR(hardcode_direct, $1)=no
_LT_TAGVAR(hardcode_direct_absolute, $1)=no
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
_LT_TAGVAR(hardcode_libdir_separator, $1)=
_LT_TAGVAR(hardcode_minus_L, $1)=no
_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
# Allow CC to be a program name with arguments.
lt_save_CC=$CC
+ lt_save_CFLAGS=$CFLAGS
lt_save_LD=$LD
lt_save_GCC=$GCC
GCC=$GXX
fi
test -z "${LDCXX+set}" || LD=$LDCXX
CC=${CXX-"c++"}
+ CFLAGS=$CXXFLAGS
compiler=$CC
_LT_TAGVAR(compiler, $1)=$CC
_LT_CC_BASENAME([$compiler])
# 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 -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -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(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(allow_undefined_flag, $1)='-berok'
# Determine the default libpath from the value encoded in an empty
# executable.
- _LT_SYS_MODULE_PATH_AIX
+ _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"
else
# Determine the default libpath from the value encoded in an
# empty executable.
- _LT_SYS_MODULE_PATH_AIX
+ _LT_SYS_MODULE_PATH_AIX([$1])
_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.
;;
cygwin* | mingw* | pw32* | cegcc*)
- # _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(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'
- else
- _LT_TAGVAR(ld_shlibs, $1)=no
- fi
- ;;
+ case $GXX,$cc_basename in
+ ,cl* | no,cl*)
+ # Native MSVC
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_TAGVAR(always_export_symbols, $1)=yes
+ _LT_TAGVAR(file_list_spec, $1)='@'
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ 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='
+ # 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'
+ ;;
+ *)
+ # 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(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'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
darwin* | rhapsody*)
_LT_DARWIN_LINKER_FEATURES($1)
;;
esac
;;
- freebsd[[12]]*)
+ freebsd2.*)
# C++ shared libraries reported to be fairly broken before
# switch to ELF
_LT_TAGVAR(ld_shlibs, $1)=no
;;
*)
if test "$GXX" = yes; then
- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${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 -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'
else
# FIXME: insert proper C++ library support
_LT_TAGVAR(ld_shlibs, $1)=no
_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 -fPIC ${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 -fPIC ${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
*)
if test "$GXX" = yes; then
if test "$with_gnu_ld" = no; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -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'
+ _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 -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
_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}-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
if test "$GXX" = yes && test "$with_gnu_ld" = no; 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 -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 $LDFLAGS $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 -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 -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
fi # test -n "$compiler"
CC=$lt_save_CC
+ CFLAGS=$lt_save_CFLAGS
LDCXX=$LD
LD=$lt_save_LD
GCC=$lt_save_GCC
])# _LT_LANG_CXX_CONFIG
+# _LT_FUNC_STRIPNAME_CNF
+# ----------------------
+# func_stripname_cnf 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).
+#
+# This function is identical to the (non-XSI) version of func_stripname,
+# except this one can be used by m4 code that may be executed by configure,
+# rather than the libtool script.
+m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl
+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}\$%%"`;;
+ esac
+} # func_stripname_cnf
+])# _LT_FUNC_STRIPNAME_CNF
+
# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
# ---------------------------------
# Figure out "hidden" library dependencies from verbose
# objects, libraries and library flags.
m4_defun([_LT_SYS_HIDDEN_LIBDEPS],
[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl
# Dependencies to place before and after the object being linked:
_LT_TAGVAR(predep_objects, $1)=
_LT_TAGVAR(postdep_objects, $1)=
}
};
_LT_EOF
+], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF
+package foo
+func foo() {
+}
+_LT_EOF
])
+
+_lt_libdeps_save_CFLAGS=$CFLAGS
+case "$CC $CFLAGS " in #(
+*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
+*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
+*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
+esac
+
dnl Parse the compiler output and extract the necessary
dnl objects, libraries and library flags.
if AC_TRY_EVAL(ac_compile); then
pre_test_object_deps_done=no
for p in `eval "$output_verbose_link_cmd"`; do
- case $p in
+ case ${prev}${p} in
-L* | -R* | -l*)
# Some compilers place space between "-{L,R}" and the path.
test $p = "-R"; then
prev=$p
continue
- else
- prev=
fi
+ # Expand the sysroot to ease extracting the directories later.
+ if test -z "$prev"; then
+ case $p in
+ -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
+ -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
+ -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
+ esac
+ fi
+ case $p in
+ =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
+ esac
if test "$pre_test_object_deps_done" = no; then
- case $p in
- -L* | -R*)
+ 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.
_LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}"
fi
fi
+ prev=
;;
+ *.lto.$objext) ;; # Ignore GCC LTO objects
*.$objext)
# This assumes that the test object file only shows up
# once in the compiler output.
fi
$RM -f confest.$objext
+CFLAGS=$_lt_libdeps_save_CFLAGS
# PORTME: override above test on systems where it is broken
m4_if([$1], [CXX],
_LT_TAGVAR(hardcode_direct, $1)=no
_LT_TAGVAR(hardcode_direct_absolute, $1)=no
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
_LT_TAGVAR(hardcode_libdir_separator, $1)=
_LT_TAGVAR(hardcode_minus_L, $1)=no
_LT_TAGVAR(hardcode_automatic, $1)=no
# Allow CC to be a program name with arguments.
lt_save_CC="$CC"
lt_save_GCC=$GCC
+ lt_save_CFLAGS=$CFLAGS
CC=${F77-"f77"}
+ CFLAGS=$FFLAGS
compiler=$CC
_LT_TAGVAR(compiler, $1)=$CC
_LT_CC_BASENAME([$compiler])
GCC=$lt_save_GCC
CC="$lt_save_CC"
+ CFLAGS="$lt_save_CFLAGS"
fi # test "$_lt_disable_F77" != yes
AC_LANG_POP
_LT_TAGVAR(hardcode_direct, $1)=no
_LT_TAGVAR(hardcode_direct_absolute, $1)=no
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
_LT_TAGVAR(hardcode_libdir_separator, $1)=
_LT_TAGVAR(hardcode_minus_L, $1)=no
_LT_TAGVAR(hardcode_automatic, $1)=no
# Allow CC to be a program name with arguments.
lt_save_CC="$CC"
lt_save_GCC=$GCC
+ lt_save_CFLAGS=$CFLAGS
CC=${FC-"f95"}
+ CFLAGS=$FCFLAGS
compiler=$CC
GCC=$ac_cv_fc_compiler_gnu
fi # test -n "$compiler"
GCC=$lt_save_GCC
- CC="$lt_save_CC"
+ CC=$lt_save_CC
+ CFLAGS=$lt_save_CFLAGS
fi # test "$_lt_disable_FC" != yes
AC_LANG_POP
_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=yes
CC=${GCJ-"gcj"}
+CFLAGS=$GCJFLAGS
compiler=$CC
_LT_TAGVAR(compiler, $1)=$CC
_LT_TAGVAR(LD, $1)="$LD"
AC_LANG_RESTORE
GCC=$lt_save_GCC
-CC="$lt_save_CC"
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
])# _LT_LANG_GCJ_CONFIG
+# _LT_LANG_GO_CONFIG([TAG])
+# --------------------------
+# 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'.
+m4_defun([_LT_LANG_GO_CONFIG],
+[AC_REQUIRE([LT_PROG_GO])dnl
+AC_LANG_SAVE
+
+# Source file extension for Go test sources.
+ac_ext=go
+
+# Object file extension for compiled Go test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="package main; func main() { }"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='package main; func main() { }'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_CFLAGS=$CFLAGS
+lt_save_GCC=$GCC
+GCC=yes
+CC=${GOC-"gccgo"}
+CFLAGS=$GOFLAGS
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_TAGVAR(LD, $1)="$LD"
+_LT_CC_BASENAME([$compiler])
+
+# Go did not exist at the time GCC didn't implicitly link libc in.
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+
+if test -n "$compiler"; then
+ _LT_COMPILER_NO_RTTI($1)
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+
+ _LT_CONFIG($1)
+fi
+
+AC_LANG_RESTORE
+
+GCC=$lt_save_GCC
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
+])# _LT_LANG_GO_CONFIG
+
+
# _LT_LANG_RC_CONFIG([TAG])
# -------------------------
# Ensure that the configuration variables for the Windows resource compiler
# Allow CC to be a program name with arguments.
lt_save_CC="$CC"
+lt_save_CFLAGS=$CFLAGS
lt_save_GCC=$GCC
GCC=
CC=${RC-"windres"}
+CFLAGS=
compiler=$CC
_LT_TAGVAR(compiler, $1)=$CC
_LT_CC_BASENAME([$compiler])
GCC=$lt_save_GCC
AC_LANG_RESTORE
-CC="$lt_save_CC"
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
])# _LT_LANG_RC_CONFIG
dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
+# LT_PROG_GO
+# ----------
+AC_DEFUN([LT_PROG_GO],
+[AC_CHECK_TOOL(GOC, gccgo,)
+])
+
+
# LT_PROG_RC
# ----------
AC_DEFUN([LT_PROG_RC],
AC_SUBST([OBJDUMP])
])
+# _LT_DECL_DLLTOOL
+# ----------------
+# Ensure DLLTOOL variable is set.
+m4_defun([_LT_DECL_DLLTOOL],
+[AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+_LT_DECL([], [DLLTOOL], [1], [DLL creation program])
+AC_SUBST([DLLTOOL])
+])
# _LT_DECL_SED
# ------------
# Try some XSI features
xsi_shell=no
( _lt_dummy="a/b/c"
- test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
- = c,a/b,, \
+ 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
])# _LT_CHECK_SHELL_FEATURES
-# _LT_PROG_XSI_SHELLFNS
-# ---------------------
-# Bourne and XSI compatible variants of some useful shell functions.
-m4_defun([_LT_PROG_XSI_SHELLFNS],
-[case $xsi_shell in
- yes)
- cat << \_LT_EOF >> "$cfgfile"
-
-# 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 ()
-{
- case ${1} in
- */*) func_dirname_result="${1%/*}${2}" ;;
- * ) func_dirname_result="${3}" ;;
- esac
-}
-
-# func_basename file
-func_basename ()
-{
- func_basename_result="${1##*/}"
-}
-
-# 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 ()
-{
- case ${1} in
- */*) func_dirname_result="${1%/*}${2}" ;;
- * ) func_dirname_result="${3}" ;;
- esac
- func_basename_result="${1##*/}"
-}
-
-# 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_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}"}
-}
-
-# func_opt_split
-func_opt_split ()
-{
- func_opt_split_opt=${1%%=*}
- func_opt_split_arg=${1#*=}
-}
-
-# func_lo2o object
-func_lo2o ()
-{
- case ${1} in
- *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
- *) func_lo2o_result=${1} ;;
- esac
-}
-
-# func_xform libobj-or-source
-func_xform ()
-{
- func_xform_result=${1%.*}.lo
-}
-
-# func_arith arithmetic-term...
-func_arith ()
-{
- func_arith_result=$(( $[*] ))
-}
+# _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=:
+])
-# func_len string
-# STRING may not start with a hyphen.
-func_len ()
-{
- func_len_result=${#1}
-}
-_LT_EOF
- ;;
- *) # Bourne compatible functions.
- cat << \_LT_EOF >> "$cfgfile"
+# _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##*/}"])
-# 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 ()
-{
- # Extract subdirectory from the argument.
- 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
-}
+ _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}"}])
-# func_basename file
-func_basename ()
-{
- func_basename_result=`$ECHO "${1}" | $SED "$basename"`
-}
+ _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl
+ func_split_long_opt_name=${1%%=*}
+ func_split_long_opt_arg=${1#*=}])
-dnl func_dirname_and_basename
-dnl A portable version of this function is already defined in general.m4sh
-dnl so there is no need for it here.
+ _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"}])
-# 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
-}
+ _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl
+ case ${1} in
+ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
+ *) func_lo2o_result=${1} ;;
+ esac])
-# sed scripts:
-my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q'
-my_sed_long_arg='1s/^-[[^=]]*=//'
+ _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo])
-# func_opt_split
-func_opt_split ()
-{
- func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"`
- func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"`
-}
+ _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))])
-# func_lo2o object
-func_lo2o ()
-{
- func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
-}
-
-# func_xform libobj-or-source
-func_xform ()
-{
- func_xform_result=`$ECHO "${1}" | $SED 's/\.[[^.]]*$/.lo/'`
-}
+ _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}])
+fi
-# func_arith arithmetic-term...
-func_arith ()
-{
- func_arith_result=`expr "$[@]"`
-}
+if test x"$lt_shell_append" = xyes; then
+ _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"])
-# func_len string
-# STRING may not start with a hyphen.
-func_len ()
-{
- func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len`
-}
+ _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"])
-_LT_EOF
-esac
+ # 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
-case $lt_shell_append in
- yes)
- cat << \_LT_EOF >> "$cfgfile"
+if test x"$_lt_function_replace_fail" = x":"; then
+ AC_MSG_WARN([Unable to substitute extended shell functions in $ofile])
+fi
+])
-# func_append var value
-# Append VALUE to the end of shell variable VAR.
-func_append ()
-{
- eval "$[1]+=\$[2]"
-}
-_LT_EOF
+# _LT_PATH_CONVERSION_FUNCTIONS
+# -----------------------------
+# Determine which 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],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_MSG_CHECKING([how to convert $build file names to $host format])
+AC_CACHE_VAL(lt_cv_to_host_file_cmd,
+[case $host in
+ *-*-mingw* )
+ case $build in
+ *-*-mingw* ) # actually msys
+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
+ ;;
+ *-*-cygwin* )
+ lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
+ ;;
+ * ) # otherwise, assume *nix
+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
+ ;;
+ esac
;;
- *)
- cat << \_LT_EOF >> "$cfgfile"
-
-# func_append var value
-# Append VALUE to the end of shell variable VAR.
-func_append ()
-{
- eval "$[1]=\$$[1]\$[2]"
-}
-
-_LT_EOF
+ *-*-cygwin* )
+ case $build in
+ *-*-mingw* ) # actually msys
+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
+ ;;
+ *-*-cygwin* )
+ lt_cv_to_host_file_cmd=func_convert_file_noop
+ ;;
+ * ) # otherwise, assume *nix
+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
+ ;;
+ esac
;;
- esac
+ * ) # unhandled hosts (and "normal" native builds)
+ lt_cv_to_host_file_cmd=func_convert_file_noop
+ ;;
+esac
+])
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+AC_MSG_RESULT([$lt_cv_to_host_file_cmd])
+_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd],
+ [0], [convert $build file names to $host format])dnl
+
+AC_MSG_CHECKING([how to convert $build file names to toolchain format])
+AC_CACHE_VAL(lt_cv_to_tool_file_cmd,
+[#assume ordinary cross tools, or native build.
+lt_cv_to_tool_file_cmd=func_convert_file_noop
+case $host in
+ *-*-mingw* )
+ case $build in
+ *-*-mingw* ) # actually msys
+ lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
+ ;;
+ esac
+ ;;
+esac
])
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+AC_MSG_RESULT([$lt_cv_to_tool_file_cmd])
+_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd],
+ [0], [convert $build files to toolchain format])dnl
+])# _LT_PATH_CONVERSION_FUNCTIONS
# Helper functions for option handling. -*- Autoconf -*-
#
# 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],
+ [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@],
[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
- [pic_mode="$withval"],
+ [lt_p=${PACKAGE-default}
+ case $withval in
+ yes|no) pic_mode=$withval ;;
+ *)
+ pic_mode=default
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for lt_pkg in $withval; do
+ IFS="$lt_save_ifs"
+ if test "X$lt_pkg" = "X$lt_p"; then
+ pic_mode=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac],
[pic_mode=default])
test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
# unlimited permission to copy and/or distribute it, with or without
# modifications, as long as this notice is preserved.
-# Generated from ltversion.in.
+# @configure_input@
-# serial 3175 ltversion.m4
+# serial 3337 ltversion.m4
# This file is part of GNU Libtool
-m4_define([LT_PACKAGE_VERSION], [2.2.10])
-m4_define([LT_PACKAGE_REVISION], [1.3175])
+m4_define([LT_PACKAGE_VERSION], [2.4.2])
+m4_define([LT_PACKAGE_REVISION], [1.3337])
AC_DEFUN([LTVERSION_VERSION],
-[macro_version='2.2.10'
-macro_revision='1.3175'
+[macro_version='2.4.2'
+macro_revision='1.3337'
_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
_LT_DECL(, macro_revision, 0)
])
m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])])
m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])])
+# AM_CONDITIONAL -*- Autoconf -*-
+
+# Copyright (C) 1997-2013 Free Software Foundation, Inc.
+#
+# 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.
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ([2.52])dnl
+ m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
+ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
+if $2; then
+ $1_TRUE=
+ $1_FALSE='#'
+else
+ $1_TRUE='#'
+ $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+ AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+# Copyright (C) 2006-2013 Free Software Foundation, Inc.
+#
+# 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.
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# AM_SUBST_NOTMAKE(VARIABLE)
+# --------------------------
+# Public sister of _AM_SUBST_NOTMAKE.
+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+
m4_include([macros/ld-version-script.m4])
m4_include([macros/neon-test.m4])
m4_include([macros/neon-xml-parser.m4])
#! /bin/sh
# Attempt to guess a canonical system name.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
-# Free Software Foundation, Inc.
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+# 2011, 2012, 2013 Free Software Foundation, Inc.
-timestamp='2009-11-20'
+timestamp='2012-12-29'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
+# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-
-# Originally written by Per Bothner. Please send patches (context
-# diff format) to <config-patches@gnu.org> and include a ChangeLog
-# entry.
+# the same distribution terms that you use for the rest of that
+# program. This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
#
-# This script attempts to guess a canonical system name similar to
-# config.sub. If it succeeds, it prints the system name on stdout, and
-# exits with 0. Otherwise, it exits with 1.
+# Originally written by Per Bothner.
#
# 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
+#
+# Please send patches with a ChangeLog entry to config-patches@gnu.org.
+
me=`echo "$0" | sed -e 's,.*/,,'`
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011,
+2012, 2013 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."
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
*:NetBSD:*:*)
# NetBSD (nbsd) targets should (where applicable) match one or
- # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+ # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
# *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
# switched to ELF, *-*-netbsd* would select the old
# object file format. This provides both forward
fi
;;
*)
- os=netbsd
+ os=netbsd
;;
esac
# The OS release
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
echo "${machine}-${os}${release}"
exit ;;
+ *:Bitrig:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
+ echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
+ exit ;;
*:OpenBSD:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
;;
*5.*)
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
;;
esac
# According to Compaq, /usr/sbin/psrinfo has been available on
# 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'`
- exit ;;
+ # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+ exitcode=$?
+ trap '' 0
+ exit $exitcode ;;
Alpha\ *:Windows_NT*:*)
# How do we know it's Interix rather than the generic POSIX subsystem?
# Should we change UNAME_MACHINE based on the output of uname instead
echo s390-ibm-zvmoe
exit ;;
*:OS400:*:*)
- echo powerpc-ibm-os400
+ echo powerpc-ibm-os400
exit ;;
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
echo arm-acorn-riscix${UNAME_RELEASE}
exit ;;
- arm:riscos:*:*|arm:RISCOS:*:*)
+ arm*:riscos:*:*|arm*:RISCOS:*:*)
echo arm-unknown-riscos
exit ;;
SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
# MiNT. But MiNT is downward compatible to TOS, so this should
# be no problem.
atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
+ echo m68k-atari-mint${UNAME_RELEASE}
exit ;;
atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
echo m68k-atari-mint${UNAME_RELEASE}
- exit ;;
+ exit ;;
*falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
+ echo m68k-atari-mint${UNAME_RELEASE}
exit ;;
milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
- echo m68k-milan-mint${UNAME_RELEASE}
- exit ;;
+ echo m68k-milan-mint${UNAME_RELEASE}
+ exit ;;
hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
- echo m68k-hades-mint${UNAME_RELEASE}
- exit ;;
+ echo m68k-hades-mint${UNAME_RELEASE}
+ exit ;;
*:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
- echo m68k-unknown-mint${UNAME_RELEASE}
- exit ;;
+ echo m68k-unknown-mint${UNAME_RELEASE}
+ exit ;;
m68k:machten:*:*)
echo m68k-apple-machten${UNAME_RELEASE}
exit ;;
echo m88k-motorola-sysv3
exit ;;
AViiON:dgux:*:*)
- # DG/UX returns AViiON for all architectures
- UNAME_PROCESSOR=`/usr/bin/uname -p`
+ # DG/UX returns AViiON for all architectures
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
then
if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
else
echo i586-dg-dgux${UNAME_RELEASE}
fi
- exit ;;
+ exit ;;
M88*:DolphinOS:*:*) # DolphinOS (SVR3)
echo m88k-dolphin-sysv3
exit ;;
echo rs6000-ibm-aix3.2
fi
exit ;;
- *:AIX:*:[456])
+ *:AIX:*:[4567])
IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
IBM_ARCH=rs6000
9000/[678][0-9][0-9])
if [ -x /usr/bin/getconf ]; then
sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
- sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
- case "${sc_cpu_version}" in
- 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" ;;
+ sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+ case "${sc_cpu_version}" in
+ 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+ 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+ 532) # CPU_PA_RISC2_0
+ case "${sc_kernel_bits}" in
+ 32) HP_ARCH="hppa2.0n" ;;
+ 64) HP_ARCH="hppa2.0w" ;;
'') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
- esac ;;
- esac
+ esac ;;
+ esac
fi
if [ "${HP_ARCH}" = "" ]; then
eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
+ sed 's/^ //' << EOF >$dummy.c
- #define _HPUX_SOURCE
- #include <stdlib.h>
- #include <unistd.h>
+ #define _HPUX_SOURCE
+ #include <stdlib.h>
+ #include <unistd.h>
- int main ()
- {
- #if defined(_SC_KERNEL_BITS)
- long bits = sysconf(_SC_KERNEL_BITS);
- #endif
- long cpu = sysconf (_SC_CPU_VERSION);
+ int main ()
+ {
+ #if defined(_SC_KERNEL_BITS)
+ long bits = sysconf(_SC_KERNEL_BITS);
+ #endif
+ long cpu = sysconf (_SC_CPU_VERSION);
- switch (cpu)
- {
- case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
- case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
- case CPU_PA_RISC2_0:
- #if defined(_SC_KERNEL_BITS)
- switch (bits)
- {
- case 64: puts ("hppa2.0w"); break;
- case 32: puts ("hppa2.0n"); break;
- default: puts ("hppa2.0"); break;
- } break;
- #else /* !defined(_SC_KERNEL_BITS) */
- puts ("hppa2.0"); break;
- #endif
- default: puts ("hppa1.0"); break;
- }
- exit (0);
- }
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+ case CPU_PA_RISC2_0:
+ #if defined(_SC_KERNEL_BITS)
+ switch (bits)
+ {
+ case 64: puts ("hppa2.0w"); break;
+ case 32: puts ("hppa2.0n"); break;
+ default: puts ("hppa2.0"); break;
+ } break;
+ #else /* !defined(_SC_KERNEL_BITS) */
+ puts ("hppa2.0"); break;
+ #endif
+ default: puts ("hppa1.0"); break;
+ }
+ exit (0);
+ }
EOF
(CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
test -z "$HP_ARCH" && HP_ARCH=hppa
exit ;;
C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
echo c1-convex-bsd
- exit ;;
+ exit ;;
C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
if getsysinfo -f scalar_acc
then echo c32-convex-bsd
else echo c2-convex-bsd
fi
- exit ;;
+ exit ;;
C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
echo c34-convex-bsd
- exit ;;
+ exit ;;
C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
echo c38-convex-bsd
- exit ;;
+ exit ;;
C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
echo c4-convex-bsd
- exit ;;
+ exit ;;
CRAY*Y-MP:*:*:*)
echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
exit ;;
exit ;;
F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
- echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit ;;
+ 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/ /_/'`
- echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ 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:*:*)
echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
exit ;;
*:FreeBSD:*:*)
- case ${UNAME_MACHINE} in
- pc98)
- echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
+ case ${UNAME_PROCESSOR} in
amd64)
echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
*)
- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
esac
exit ;;
i*:CYGWIN*:*)
echo ${UNAME_MACHINE}-pc-cygwin
exit ;;
+ *:MINGW64*:*)
+ echo ${UNAME_MACHINE}-pc-mingw64
+ exit ;;
*:MINGW*:*)
echo ${UNAME_MACHINE}-pc-mingw32
exit ;;
+ i*:MSYS*:*)
+ echo ${UNAME_MACHINE}-pc-msys
+ exit ;;
i*:windows32*:*)
- # uname -m includes "-pc" on this system.
- echo ${UNAME_MACHINE}-mingw32
+ # uname -m includes "-pc" on this system.
+ echo ${UNAME_MACHINE}-mingw32
exit ;;
i*:PW*:*)
echo ${UNAME_MACHINE}-pc-pw32
exit ;;
*:Interix*:*)
- case ${UNAME_MACHINE} in
+ case ${UNAME_MACHINE} in
x86)
echo i586-pc-interix${UNAME_RELEASE}
exit ;;
i*86:Minix:*:*)
echo ${UNAME_MACHINE}-pc-minix
exit ;;
+ aarch64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ aarch64_be:Linux:*:*)
+ UNAME_MACHINE=aarch64_be
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
alpha:Linux:*:*)
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
EV5) UNAME_MACHINE=alphaev5 ;;
EV6) UNAME_MACHINE=alphaev6 ;;
EV67) UNAME_MACHINE=alphaev67 ;;
EV68*) UNAME_MACHINE=alphaev68 ;;
- esac
+ esac
objdump --private-headers /bin/sh | grep -q ld.so.1
if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
then
echo ${UNAME_MACHINE}-unknown-linux-gnu
else
- echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+ if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_PCS_VFP
+ then
+ echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+ else
+ echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
+ fi
fi
exit ;;
avr32*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
cris:Linux:*:*)
- echo cris-axis-linux-gnu
+ echo ${UNAME_MACHINE}-axis-linux-gnu
exit ;;
crisv32:Linux:*:*)
- echo crisv32-axis-linux-gnu
+ echo ${UNAME_MACHINE}-axis-linux-gnu
exit ;;
frv:Linux:*:*)
- echo frv-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ hexagon:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
i*86:Linux:*:*)
LIBC=gnu
test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
;;
or32:Linux:*:*)
- echo or32-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
padre:Linux:*:*)
echo sparc-unknown-linux-gnu
echo ${UNAME_MACHINE}-ibm-linux
exit ;;
sh64*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
sh*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
sparc:Linux:*:* | sparc64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
+ tile*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
vax:Linux:*:*)
echo ${UNAME_MACHINE}-dec-linux-gnu
exit ;;
x86_64:Linux:*:*)
- echo x86_64-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
xtensa*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
i*86:DYNIX/ptx:4*:*)
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
echo i386-sequent-sysv4
exit ;;
i*86:UNIX_SV:4.2MP:2.*)
- # Unixware is an offshoot of SVR4, but it has its own version
- # number series starting with 2...
- # I am not positive that other SVR4 systems won't match this,
+ # Unixware is an offshoot of SVR4, but it has its own version
+ # number series starting with 2...
+ # I am not positive that other SVR4 systems won't match this,
# I just have to hope. -- rms.
- # Use sysv4.2uw... so that sysv4* matches it.
+ # Use sysv4.2uw... so that sysv4* matches it.
echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
exit ;;
i*86:OS/2:*:*)
fi
exit ;;
i*86:*:5:[678]*)
- # UnixWare 7.x, OpenUNIX and OpenServer 6.
+ # UnixWare 7.x, OpenUNIX and OpenServer 6.
case `/bin/uname -X | grep "^Machine"` in
*486*) UNAME_MACHINE=i486 ;;
*Pentium) UNAME_MACHINE=i586 ;;
exit ;;
pc:*:*:*)
# Left here for compatibility:
- # uname -m prints for DJGPP always 'pc', but it prints nothing about
- # the processor, so we play safe by assuming i586.
+ # 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
# this is a cross-build.
echo i586-pc-msdosdjgpp
- exit ;;
+ exit ;;
Intel:Mach:3*:*)
echo i386-pc-mach3
exit ;;
/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
&& { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && { echo i486-ncr-sysv4; exit; } ;;
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4; exit; } ;;
NCR*:*:4.2:* | MPRAS*:*:4.2:*)
OS_REL='.3'
test -r /etc/.relid \
echo ns32k-sni-sysv
fi
exit ;;
- PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
- # says <Richard.M.Bartel@ccMail.Census.GOV>
- echo i586-unisys-sysv4
- exit ;;
+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+ # says <Richard.M.Bartel@ccMail.Census.GOV>
+ echo i586-unisys-sysv4
+ exit ;;
*:UNIX_System_V:4*:FTX*)
# From Gerald Hewes <hewes@openmarket.com>.
# How about differentiating between stratus architectures? -djm
exit ;;
R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
if [ -d /usr/nec ]; then
- echo mips-nec-sysv${UNAME_RELEASE}
+ echo mips-nec-sysv${UNAME_RELEASE}
else
- echo mips-unknown-sysv${UNAME_RELEASE}
+ echo mips-unknown-sysv${UNAME_RELEASE}
fi
- exit ;;
+ exit ;;
BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
echo powerpc-be-beos
exit ;;
BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
echo i586-pc-haiku
exit ;;
+ x86_64:Haiku:*:*)
+ echo x86_64-unknown-haiku
+ exit ;;
SX-4:SUPER-UX:*:*)
echo sx4-nec-superux${UNAME_RELEASE}
exit ;;
*:QNX:*:4*)
echo i386-pc-qnx
exit ;;
- NSE-?:NONSTOP_KERNEL:*:*)
+ NEO-?:NONSTOP_KERNEL:*:*)
+ echo neo-tandem-nsk${UNAME_RELEASE}
+ exit ;;
+ NSE-*:NONSTOP_KERNEL:*:*)
echo nse-tandem-nsk${UNAME_RELEASE}
exit ;;
NSR-?:NONSTOP_KERNEL:*:*)
echo pdp10-unknown-its
exit ;;
SEI:*:*:SEIUX)
- echo mips-sei-seiux${UNAME_RELEASE}
+ echo mips-sei-seiux${UNAME_RELEASE}
exit ;;
*:DragonFly:*:*)
echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
exit ;;
*:*VMS:*:*)
- UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
case "${UNAME_MACHINE}" in
A*) echo alpha-dec-vms ; exit ;;
I*) echo ia64-dec-vms ; exit ;;
i*86:AROS:*:*)
echo ${UNAME_MACHINE}-pc-aros
exit ;;
+ x86_64:VMkernel:*:*)
+ echo ${UNAME_MACHINE}-unknown-esx
+ exit ;;
esac
-#echo '(No uname command or uname output not recognized.)' 1>&2
-#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
-
eval $set_cc_for_build
cat >$dummy.c <<EOF
#ifdef _SEQUENT_
#include <sys/param.h>
printf ("m68k-sony-newsos%s\n",
#ifdef NEWSOS4
- "4"
+ "4"
#else
- ""
+ ""
#endif
- ); exit (0);
+ ); exit (0);
#endif
#endif
/* Define if GnuTLS support is enabled */
#undef HAVE_GNUTLS
+/* Define to 1 if you have the `gnutls_certificate_get_issuer' function. */
+#undef HAVE_GNUTLS_CERTIFICATE_GET_ISSUER
+
/* Define to 1 if you have the `gnutls_certificate_get_x509_cas' function. */
#undef HAVE_GNUTLS_CERTIFICATE_GET_X509_CAS
-/* Define to 1 if you have the `gnutls_certificate_verify_peers2' function. */
-#undef HAVE_GNUTLS_CERTIFICATE_VERIFY_PEERS2
-
/* Define to 1 if you have the `gnutls_session_get_data2' function. */
#undef HAVE_GNUTLS_SESSION_GET_DATA2
/* Define to 1 if you have the `gnutls_sign_callback_set' function. */
#undef HAVE_GNUTLS_SIGN_CALLBACK_SET
+/* Define to 1 if you have the `gnutls_x509_crt_sign2' function. */
+#undef HAVE_GNUTLS_X509_CRT_SIGN2
+
/* Define to 1 if you have the `gnutls_x509_dn_get_rdn_ava' function. */
#undef HAVE_GNUTLS_X509_DN_GET_RDN_AVA
/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H
+/* Define to 1 if you have the <sys/uio.h> header file. */
+#undef HAVE_SYS_UIO_H
+
/* Define if the timezone global is available */
#undef HAVE_TIMEZONE
#ifdef WIN32
-#define NEON_VERSION "0.29.6"
+#define NEON_VERSION "0.30.0"
#define NE_VERSION_MAJOR (0)
-#define NE_VERSION_MINOR (29)
+#define NE_VERSION_MINOR (30)
#define HAVE_ERRNO_H
#define HAVE_LIMITS_H
#define HAVE_SSPI
+#define NE_HAVE_TS_SSL 1
+
/* Define to enable debugging */
#define NE_DEBUGGING 1
#define NE_FMT_SIZE_T "u"
#define NE_FMT_SSIZE_T "d"
#define NE_FMT_OFF_T "ld"
+#define NE_FMT_OFF64_T "I64d"
#define NE_FMT_NE_OFF_T NE_FMT_OFF_T
#ifndef NE_FMT_XML_SIZE
#define strcasecmp strcmpi
#define strncasecmp strnicmp
#endif
+#if defined(_MSC_VER) && _MSC_VER >= 1300
+#define HAVE_STRTOLL
+#define strtoll _strtoi64
+#endif
#define ssize_t int
#define inline __inline
+#if defined(NE_LFS)
+#define lseek64 _lseeki64
+#define fstat64 _fstat64
+#define stat64 __stat64
+#else
#define off_t _off_t
+#endif
#ifndef USE_GETADDRINFO
#define in_addr_t unsigned int
#define HAVE_SSPI
+#define NE_HAVE_TS_SSL 1
+
/* Define to enable debugging */
#define NE_DEBUGGING 1
#define NE_FMT_SIZE_T "u"
#define NE_FMT_SSIZE_T "d"
#define NE_FMT_OFF_T "ld"
+#define NE_FMT_OFF64_T "I64d"
#define NE_FMT_NE_OFF_T NE_FMT_OFF_T
#ifndef NE_FMT_XML_SIZE
#define strcasecmp strcmpi
#define strncasecmp strnicmp
#endif
+#if defined(_MSC_VER) && _MSC_VER >= 1300
+#define HAVE_STRTOLL
+#define strtoll _strtoi64
+#endif
#define ssize_t int
#define inline __inline
+#if defined(NE_LFS)
+#define lseek64 _lseeki64
+#define fstat64 _fstat64
+#define stat64 __stat64
+#else
#define off_t _off_t
+#endif
#ifndef USE_GETADDRINFO
#define in_addr_t unsigned int
#! /bin/sh
# Configuration validation subroutine script.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
-# Free Software Foundation, Inc.
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+# 2011, 2012, 2013 Free Software Foundation, Inc.
-timestamp='2009-11-20'
+timestamp='2012-12-29'
-# This file is (in principle) common to ALL GNU software.
-# The presence of a machine in this file suggests that SOME GNU software
-# can handle that machine. It does not imply ALL GNU software can.
-#
-# This file is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
# (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.
+# 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, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
+# the same distribution terms that you use for the rest of that
+# program. This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
-# Please send patches to <config-patches@gnu.org>. Submit a context
-# diff and a properly formatted GNU ChangeLog entry.
+# Please send patches with a ChangeLog entry to config-patches@gnu.org.
#
# Configuration subroutine to validate and canonicalize a configuration type.
# Supply the specified configuration type as an argument.
version="\
GNU config.sub ($timestamp)
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011,
+2012, 2013 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."
# Here we must recognize all the valid KERNEL-OS combinations.
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
- nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
- uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
+ nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
+ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+ knetbsd*-gnu* | netbsd*-gnu* | \
kopensolaris*-gnu* | \
storm-chaos* | os2-emx* | rtmk-nova*)
os=-$maybe_os
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;;
+ android-linux)
+ os=-linux-android
+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
+ ;;
*)
basic_machine=`echo $1 | sed 's/-[^-]*$//'`
if [ $basic_machine != $1 ]
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
- -apple | -axis | -knuth | -cray | -microblaze)
+ -apple | -axis | -knuth | -cray | -microblaze*)
os=
basic_machine=$1
;;
- -bluegene*)
- os=-cnk
+ -bluegene*)
+ os=-cnk
;;
-sim | -cisco | -oki | -wec | -winbond)
os=
os=-chorusos
basic_machine=$1
;;
- -chorusrdb)
- os=-chorusrdb
+ -chorusrdb)
+ os=-chorusrdb
basic_machine=$1
- ;;
+ ;;
-hiux*)
os=-hiuxwe2
;;
-isc*)
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
+ -lynx*178)
+ os=-lynxos178
+ ;;
+ -lynx*5)
+ os=-lynxos5
+ ;;
-lynx*)
os=-lynxos
;;
# Some are omitted here because they have special meanings below.
1750a | 580 \
| a29k \
+ | aarch64 | aarch64_be \
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
| am33_2.0 \
- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
+ | arc \
+ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
+ | avr | avr32 \
+ | be32 | be64 \
| bfin \
| c4x | clipper \
| d10v | d30v | dlx | dsp16xx \
+ | epiphany \
| fido | fr30 | frv \
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+ | hexagon \
| i370 | i860 | i960 | ia64 \
| ip2k | iq2000 \
+ | le32 | le64 \
| lm32 \
| m32c | m32r | m32rle | m68000 | m68k | m88k \
- | maxq | mb | microblaze | mcore | mep | metag \
+ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
| mips | mipsbe | mipseb | mipsel | mipsle \
| mips16 \
| mips64 | mips64el \
| moxie \
| mt \
| msp430 \
+ | nds32 | nds32le | nds32be \
| nios | nios2 \
| ns16k | ns32k \
+ | open8 \
| or32 \
| pdp10 | pdp11 | pj | pjl \
- | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+ | powerpc | powerpc64 | powerpc64le | powerpcle \
| pyramid \
- | rx \
+ | rl78 | rx \
| score \
| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
| sh64 | sh64le \
| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
- | spu | strongarm \
- | tahoe | thumb | tic4x | tic80 | tron \
+ | spu \
+ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
| ubicom32 \
- | v850 | v850e \
+ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
| we32k \
- | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
+ | x86 | xc16x | xstormy16 | xtensa \
| z8k | z80)
basic_machine=$basic_machine-unknown
;;
- m6811 | m68hc11 | m6812 | m68hc12 | picochip)
- # Motorola 68HC11/12.
+ c54x)
+ basic_machine=tic54x-unknown
+ ;;
+ c55x)
+ basic_machine=tic55x-unknown
+ ;;
+ c6x)
+ basic_machine=tic6x-unknown
+ ;;
+ m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
basic_machine=$basic_machine-unknown
os=-none
;;
basic_machine=mt-unknown
;;
+ strongarm | thumb | xscale)
+ basic_machine=arm-unknown
+ ;;
+ xgate)
+ basic_machine=$basic_machine-unknown
+ os=-none
+ ;;
+ xscaleeb)
+ basic_machine=armeb-unknown
+ ;;
+
+ xscaleel)
+ basic_machine=armel-unknown
+ ;;
+
# We use `pc' rather than `unknown'
# because (1) that's what they normally are, and
# (2) the word "unknown" tends to confuse beginning users.
# Recognize the basic CPU types with company name.
580-* \
| a29k-* \
+ | aarch64-* | aarch64_be-* \
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
| avr-* | avr32-* \
+ | be32-* | be64-* \
| bfin-* | bs2000-* \
- | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+ | c[123]* | c30-* | [cjt]90-* | c4x-* \
| clipper-* | craynv-* | cydra-* \
| d10v-* | d30v-* | dlx-* \
| elxsi-* \
| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
| h8300-* | h8500-* \
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+ | hexagon-* \
| i*86-* | i860-* | i960-* | ia64-* \
| ip2k-* | iq2000-* \
+ | le32-* | le64-* \
| lm32-* \
| m32c-* | m32r-* | m32rle-* \
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
- | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
+ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
+ | microblaze-* | microblazeel-* \
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
| mips16-* \
| mips64-* | mips64el-* \
| mmix-* \
| mt-* \
| msp430-* \
+ | nds32-* | nds32le-* | nds32be-* \
| nios-* | nios2-* \
| none-* | np1-* | ns16k-* | ns32k-* \
+ | open8-* \
| orion-* \
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
- | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
| pyramid-* \
- | romp-* | rs6000-* | rx-* \
+ | rl78-* | romp-* | rs6000-* | rx-* \
| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
| sparclite-* \
- | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
- | tahoe-* | thumb-* \
- | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \
+ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
+ | tahoe-* \
+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+ | tile*-* \
| tron-* \
| ubicom32-* \
- | v850-* | v850e-* | vax-* \
+ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
+ | vax-* \
| we32k-* \
- | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
+ | x86-* | x86_64-* | xc16x-* | xps100-* \
| xstormy16-* | xtensa*-* \
| ymp-* \
| z8k-* | z80-*)
basic_machine=a29k-amd
os=-udi
;;
- abacus)
+ abacus)
basic_machine=abacus-unknown
;;
adobe68k)
basic_machine=powerpc-ibm
os=-cnk
;;
+ c54x-*)
+ basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ c55x-*)
+ basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ c6x-*)
+ basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
c90)
basic_machine=c90-cray
os=-unicos
;;
- cegcc)
+ cegcc)
basic_machine=arm-unknown
os=-cegcc
;;
basic_machine=craynv-cray
os=-unicosmp
;;
- cr16)
+ cr16 | cr16-*)
basic_machine=cr16-unknown
os=-elf
;;
i370-ibm* | ibm*)
basic_machine=i370-ibm
;;
-# I'm not sure what "Sysv32" means. Should this be sysv3.2?
i*86v32)
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
os=-sysv32
basic_machine=ns32k-utek
os=-sysv
;;
- microblaze)
+ microblaze*)
basic_machine=microblaze-xilinx
;;
+ mingw64)
+ basic_machine=x86_64-pc
+ os=-mingw64
+ ;;
mingw32)
basic_machine=i386-pc
os=-mingw32
ms1-*)
basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
;;
+ msys)
+ basic_machine=i386-pc
+ os=-msys
+ ;;
mvs)
basic_machine=i370-ibm
os=-mvs
;;
+ nacl)
+ basic_machine=le32-unknown
+ os=-nacl
+ ;;
ncr3000)
basic_machine=i486-ncr
os=-sysv4
np1)
basic_machine=np1-gould
;;
+ neo-tandem)
+ basic_machine=neo-tandem
+ ;;
+ nse-tandem)
+ basic_machine=nse-tandem
+ ;;
nsr-tandem)
basic_machine=nsr-tandem
;;
;;
power) basic_machine=power-ibm
;;
- ppc) basic_machine=powerpc-unknown
+ ppc | ppcbe) basic_machine=powerpc-unknown
;;
- ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ppc-* | ppcbe-*)
+ basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ppcle | powerpclittle | ppc-le | powerpc-little)
basic_machine=powerpcle-unknown
;;
ppc64) basic_machine=powerpc64-unknown
;;
- ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ppc64-* | ppc64p7-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ppc64le | powerpc64little | ppc64-le | powerpc64-little)
basic_machine=powerpc64le-unknown
basic_machine=i586-unknown
os=-pw32
;;
- rdos)
+ rdos | rdos64)
+ basic_machine=x86_64-pc
+ os=-rdos
+ ;;
+ rdos32)
basic_machine=i386-pc
os=-rdos
;;
basic_machine=i860-stratus
os=-sysv4
;;
+ strongarm-* | thumb-*)
+ basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
sun2)
basic_machine=m68000-sun
;;
basic_machine=t90-cray
os=-unicos
;;
- tic54x | c54x*)
- basic_machine=tic54x-unknown
- os=-coff
- ;;
- tic55x | c55x*)
- basic_machine=tic55x-unknown
- os=-coff
- ;;
- tic6x | c6x*)
- basic_machine=tic6x-unknown
- os=-coff
- ;;
tile*)
- basic_machine=tile-unknown
+ basic_machine=$basic_machine-unknown
os=-linux-gnu
;;
tx39)
xps | xps100)
basic_machine=xps100-honeywell
;;
+ xscale-* | xscalee[bl]-*)
+ basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
+ ;;
ymp)
basic_machine=ymp-cray
os=-unicos
if [ x"$os" != x"" ]
then
case $os in
- # First match some system type aliases
- # that might get confused with valid system types.
+ # First match some system type aliases
+ # that might get confused with valid system types.
# -solaris* is a basic system type, with this one exception.
- -auroraux)
- os=-auroraux
+ -auroraux)
+ os=-auroraux
;;
-solaris1 | -solaris1.*)
os=`echo $os | sed -e 's|solaris1|sunos4|'`
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
- | -openbsd* | -solidbsd* \
+ | -bitrig* | -openbsd* | -solidbsd* \
| -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
| -chorusos* | -chorusrdb* | -cegcc* \
- | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
+ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
+ | -linux-newlib* | -linux-musl* | -linux-uclibc* \
| -uxpv* | -beos* | -mpeix* | -udk* \
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
-opened*)
os=-openedition
;;
- -os400*)
+ -os400*)
os=-os400
;;
-wince*)
-sinix*)
os=-sysv4
;;
- -tpf*)
+ -tpf*)
os=-tpf
;;
-triton*)
-dicos*)
os=-dicos
;;
+ -nacl*)
+ ;;
-none)
;;
*)
# system, and we'll never get to this point.
case $basic_machine in
- score-*)
+ score-*)
os=-elf
;;
- spu-*)
+ spu-*)
os=-elf
;;
*-acorn)
arm*-semi)
os=-aout
;;
- c4x-* | tic4x-*)
- os=-coff
+ c4x-* | tic4x-*)
+ os=-coff
+ ;;
+ hexagon-*)
+ os=-elf
+ ;;
+ tic54x-*)
+ os=-coff
+ ;;
+ tic55x-*)
+ os=-coff
+ ;;
+ tic6x-*)
+ os=-coff
;;
# This must come before the *-dec entry.
pdp10-*)
;;
m68000-sun)
os=-sunos3
- # This also exists in the configure program, but was not the
- # default.
- # os=-sunos4
;;
m68*-cisco)
os=-aout
;;
- mep-*)
+ mep-*)
os=-elf
;;
mips*-cisco)
*-ibm)
os=-aix
;;
- *-knuth)
+ *-knuth)
os=-mmixware
;;
*-wec)
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.66 for neon 0.29.6.
+# Generated by GNU Autoconf 2.69 for neon 0.30.0.
#
# Report bugs to <neon@lists.manyfish.co.uk>.
#
#
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
-# Foundation, Inc.
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
#
#
# This configure script is free software; the Free Software Foundation
IFS=" "" $as_nl"
# Find who we are. Look in the path if we contain no directory separator.
+as_myself=
case $0 in #((
*[\\/]* ) as_myself=$0 ;;
*) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
# CDPATH.
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+# Use a proper internal environment variable to ensure we don't fall
+ # into an infinite loop, continuously re-executing ourselves.
+ if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+ _as_can_reexec=no; export _as_can_reexec;
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+ fi
+ # We don't want this to propagate to other subprocesses.
+ { _as_can_reexec=; unset _as_can_reexec;}
if test "x$CONFIG_SHELL" = x; then
as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
emulate sh
else
exitcode=1; echo positional parameters were not saved.
fi
-test x\$exitcode = x0 || exit 1"
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
if test "x$CONFIG_SHELL" != x; then :
- # We cannot yet assume a decent shell, so we have to provide a
- # neutralization value for shells without unset; and this also
- # works around shells that cannot unset nonexistent variables.
- BASH_ENV=/dev/null
- ENV=/dev/null
- (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
- export CONFIG_SHELL
- exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
+ export CONFIG_SHELL
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
fi
if test x$as_have_required = xno; then :
} # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} # as_fn_executable_p
# as_fn_append VAR VALUE
# ----------------------
# Append the text in VALUE to the end of the definition contained in VAR. Take
chmod +x "$as_me.lineno" ||
{ $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+ # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+ # already done that, so ensure we don't try to do so again and fall
+ # in an infinite loop. This has already happened in practice.
+ _as_can_reexec=no; export _as_can_reexec
# Don't try to exec as it changes $[0], causing all sort of problems
# (the dirname of $[0] is not the place where we might find the
# original and so on. Autoconf is especially sensitive to this).
# ... but there are two gotchas:
# 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
# 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -p'.
+ # In both cases, we have to default to `cp -pR'.
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
elif ln conf$$.file conf$$ 2>/dev/null; then
as_ln_s=ln
else
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
fi
else
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null
as_mkdir_p=false
fi
-if test -x / >/dev/null 2>&1; then
- as_test_x='test -x'
-else
- if ls -dL / >/dev/null 2>&1; then
- as_ls_L_option=L
- else
- as_ls_L_option=
- fi
- as_test_x='
- eval sh -c '\''
- if test -d "$1"; then
- test -d "$1/.";
- else
- case $1 in #(
- -*)set "./$1";;
- esac;
- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
- ???[sx]*):;;*)false;;esac;fi
- '\'' sh
- '
-fi
-as_executable_p=$as_test_x
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
# Sed expression to map a string onto a valid CPP name.
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
# Identity of this package.
PACKAGE_NAME='neon'
PACKAGE_TARNAME='neon'
-PACKAGE_VERSION='0.29.6'
-PACKAGE_STRING='neon 0.29.6'
+PACKAGE_VERSION='0.30.0'
+PACKAGE_STRING='neon 0.30.0'
PACKAGE_BUGREPORT='neon@lists.manyfish.co.uk'
PACKAGE_URL=''
NEON_BUILD_BUNDLED
NEON_VERSION
ALL_LINGUAS
+HAVE_LD_VERSION_SCRIPT_FALSE
+HAVE_LD_VERSION_SCRIPT_TRUE
NEON_PC_LIBS
TEST_LDFLAGS
PK12UTIL
LIPO
NMEDIT
DSYMUTIL
+MANIFEST_TOOL
AWK
RANLIB
STRIP
+ac_ct_AR
AR
+DLLTOOL
OBJDUMP
LN_S
NM
with_pic
enable_fast_install
with_gnu_ld
+with_sysroot
enable_libtool_lock
with_libxml2
with_expat
fi
case $ac_option in
- *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
- *) ac_optarg=yes ;;
+ *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+ *=) ac_optarg= ;;
+ *) ac_optarg=yes ;;
esac
# Accept the important Cygnus configure options, so we can diagnose typos.
$as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
$as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
- : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+ : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
;;
esac
if test "x$host_alias" != x; then
if test "x$build_alias" = x; then
cross_compiling=maybe
- $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
- If a cross compiler is detected then cross compile mode will be used" >&2
elif test "x$build_alias" != "x$host_alias"; then
cross_compiling=yes
fi
# 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 neon 0.29.6 to adapt to many kinds of systems.
+\`configure' configures neon 0.30.0 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of neon 0.29.6:";;
+ short | recursive ) echo "Configuration of neon 0.30.0:";;
esac
cat <<\_ACEOF
--with-ca-bundle specify filename of an SSL CA root bundle
--without-gssapi disable GSSAPI support
--without-libproxy disable libproxy support
- --with-pic try to use only PIC/non-PIC objects [default=use
+ --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use
both]
--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-libxml2 force use of libxml 2.x
--with-expat force use of expat
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-neon configure 0.29.6
-generated by GNU Autoconf 2.66
+neon configure 0.30.0
+generated by GNU Autoconf 2.69
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2012 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
ac_retval=1
fi
- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
as_fn_set_status $ac_retval
} # ac_fn_c_try_compile
mv -f conftest.er1 conftest.err
fi
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } >/dev/null && {
+ test $ac_status = 0; } > conftest.i && {
test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
test ! -s conftest.err
}; then :
ac_retval=1
fi
- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
as_fn_set_status $ac_retval
} # ac_fn_c_try_cpp
ac_fn_c_check_header_mongrel ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- if eval "test \"\${$3+set}\"" = set; then :
+ if eval \${$3+:} false; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
$as_echo_n "checking for $2... " >&6; }
-if eval "test \"\${$3+set}\"" = set; then :
+if eval \${$3+:} false; then :
$as_echo_n "(cached) " >&6
fi
eval ac_res=\$$3
else
ac_header_preproc=no
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
$as_echo "$ac_header_preproc" >&6; }
esac
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
$as_echo_n "checking for $2... " >&6; }
-if eval "test \"\${$3+set}\"" = set; then :
+if eval \${$3+:} false; then :
$as_echo_n "(cached) " >&6
else
eval "$3=\$ac_header_compiler"
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
fi
- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_header_mongrel
ac_retval=$ac_status
fi
rm -rf conftest.dSYM conftest_ipa8_conftest.oo
- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
as_fn_set_status $ac_retval
} # ac_fn_c_try_run
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
$as_echo_n "checking for $2... " >&6; }
-if eval "test \"\${$3+set}\"" = set; then :
+if eval \${$3+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
eval ac_res=\$$3
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_header_compile
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
$as_echo_n "checking for $2... " >&6; }
-if eval "test \"\${$3+set}\"" = set; then :
+if eval \${$3+:} false; then :
$as_echo_n "(cached) " >&6
else
eval "$3=no"
eval ac_res=\$$3
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_type
main ()
{
static int test_array [1 - 2 * !(($2) >= 0)];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
;
return 0;
main ()
{
static int test_array [1 - 2 * !(($2) <= $ac_mid)];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
;
return 0;
main ()
{
static int test_array [1 - 2 * !(($2) < 0)];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
;
return 0;
main ()
{
static int test_array [1 - 2 * !(($2) >= $ac_mid)];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
;
return 0;
main ()
{
static int test_array [1 - 2 * !(($2) <= $ac_mid)];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
;
return 0;
rm -f conftest.val
fi
- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
as_fn_set_status $ac_retval
} # ac_fn_c_compute_int
as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
$as_echo_n "checking whether $as_decl_name is declared... " >&6; }
-if eval "test \"\${$3+set}\"" = set; then :
+if eval \${$3+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
eval ac_res=\$$3
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_decl
test ! -s conftest.err
} && test -s conftest$ac_exeext && {
test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
+ test -x conftest$ac_exeext
}; then :
ac_retval=0
else
# interfere with the next link command; also delete a directory that is
# left behind by Apple's compiler. We do this before executing the actions.
rm -rf conftest.dSYM conftest_ipa8_conftest.oo
- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
as_fn_set_status $ac_retval
} # ac_fn_c_try_link
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
$as_echo_n "checking for $2... " >&6; }
-if eval "test \"\${$3+set}\"" = set; then :
+if eval \${$3+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
eval ac_res=\$$3
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_func
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5
$as_echo_n "checking for $2.$3... " >&6; }
-if eval "test \"\${$4+set}\"" = set; then :
+if eval \${$4+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
eval ac_res=\$$4
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_member
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 neon $as_me 0.29.6, which was
-generated by GNU Autoconf 2.66. Invocation command line was
+It was created by neon $as_me 0.30.0, which was
+generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
$as_echo_n "checking for a BSD-compatible install... " >&6; }
if test -z "$INSTALL"; then
-if test "${ac_cv_path_install+set}" = set; then :
+if ${ac_cv_path_install+:} false; then :
$as_echo_n "(cached) " >&6
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
# by default.
for ac_prog in ginstall scoinst install; do
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
if test $ac_prog = install &&
grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
# AIX install. It has an incompatible calling convention.
# Define the current versions.
NE_VERSION_MAJOR=0
-NE_VERSION_MINOR=29
-NE_VERSION_PATCH=6
+NE_VERSION_MINOR=30
+NE_VERSION_PATCH=0
NE_VERSION_TAG=
-# 0.29.x is backwards-compatible to 0.27.x, so AGE=2
-NE_LIBTOOL_VERSINFO="29:${NE_VERSION_PATCH}:2"
+# 0.30.x is backwards-compatible to 0.27.x, so AGE=3
+NE_LIBTOOL_VERSINFO="30:${NE_VERSION_PATCH}:3"
set dummy ${ac_tool_prefix}gcc; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then :
+if ${ac_cv_prog_CC+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$CC"; then
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}gcc"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
set dummy gcc; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$ac_ct_CC"; then
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="gcc"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
set dummy ${ac_tool_prefix}cc; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then :
+if ${ac_cv_prog_CC+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$CC"; then
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}cc"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
set dummy cc; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then :
+if ${ac_cv_prog_CC+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$CC"; then
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
ac_prog_rejected=yes
continue
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then :
+if ${ac_cv_prog_CC+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$CC"; then
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
set dummy $ac_prog; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$ac_ct_CC"; then
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
ac_clean_files=$ac_clean_files_save
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
$as_echo_n "checking for suffix of object files... " >&6; }
-if test "${ac_cv_objext+set}" = set; then :
+if ${ac_cv_objext+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
ac_objext=$OBJEXT
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if test "${ac_cv_c_compiler_gnu+set}" = set; then :
+if ${ac_cv_c_compiler_gnu+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
ac_save_CFLAGS=$CFLAGS
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if test "${ac_cv_prog_cc_g+set}" = set; then :
+if ${ac_cv_prog_cc_g+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_save_c_werror_flag=$ac_c_werror_flag
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if test "${ac_cv_prog_cc_c89+set}" = set; then :
+if ${ac_cv_prog_cc_c89+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_cv_prog_cc_c89=no
/* end confdefs.h. */
#include <stdarg.h>
#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
+struct stat;
/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
struct buf { int x; };
FILE * (*rcsopen) (struct buf *, struct stat *, int);
CPP=
fi
if test -z "$CPP"; then
- if test "${ac_cv_prog_CPP+set}" = set; then :
+ if ${ac_cv_prog_CPP+:} false; then :
$as_echo_n "(cached) " >&6
else
# Double quotes because CPP needs to be expanded
# Broken: fails on valid input.
continue
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
# OK, works on sane cases. Now check whether nonexistent headers
# can be detected and how.
ac_preproc_ok=:
break
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
done
# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.i conftest.err conftest.$ac_ext
if $ac_preproc_ok; then :
break
fi
# Broken: fails on valid input.
continue
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
# OK, works on sane cases. Now check whether nonexistent headers
# can be detected and how.
ac_preproc_ok=:
break
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
done
# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.i conftest.err conftest.$ac_ext
if $ac_preproc_ok; then :
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if test "${ac_cv_path_GREP+set}" = set; then :
+if ${ac_cv_path_GREP+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -z "$GREP"; then
for ac_prog in grep ggrep; do
for ac_exec_ext in '' $ac_executable_extensions; do
ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+ as_fn_executable_p "$ac_path_GREP" || continue
# Check for GNU ac_path_GREP and select it if it is found.
# Check for GNU $ac_path_GREP
case `"$ac_path_GREP" --version 2>&1` in
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
$as_echo_n "checking for egrep... " >&6; }
-if test "${ac_cv_path_EGREP+set}" = set; then :
+if ${ac_cv_path_EGREP+:} false; then :
$as_echo_n "(cached) " >&6
else
if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
for ac_prog in egrep; do
for ac_exec_ext in '' $ac_executable_extensions; do
ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+ as_fn_executable_p "$ac_path_EGREP" || continue
# Check for GNU ac_path_EGREP and select it if it is found.
# Check for GNU $ac_path_EGREP
case `"$ac_path_EGREP" --version 2>&1` in
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
$as_echo_n "checking for ANSI C header files... " >&6; }
-if test "${ac_cv_header_stdc+set}" = set; then :
+if ${ac_cv_header_stdc+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default"
-if test "x$ac_cv_header_minix_config_h" = x""yes; then :
+if test "x$ac_cv_header_minix_config_h" = xyes; then :
MINIX=yes
else
MINIX=
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5
$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }
-if test "${ac_cv_safe_to_define___extensions__+set}" = set; then :
+if ${ac_cv_safe_to_define___extensions__+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-# define __EXTENSIONS__ 1
- $ac_includes_default
+# define __EXTENSIONS__ 1
+ $ac_includes_default
int
main ()
{
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
$as_echo_n "checking for inline... " >&6; }
-if test "${ac_cv_c_inline+set}" = set; then :
+if ${ac_cv_c_inline+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_cv_c_inline=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
-if test "${ac_cv_c_const+set}" = set; then :
+if ${ac_cv_c_const+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
int
main ()
{
-/* FIXME: Include the comments suggested by Paul. */
+
#ifndef __cplusplus
- /* Ultrix mips cc rejects this. */
+ /* Ultrix mips cc rejects this sort of thing. */
typedef int charset[2];
- const charset cs;
+ const charset cs = { 0, 0 };
/* SunOS 4.1.1 cc rejects this. */
char const *const *pcpcc;
char **ppc;
++pcpcc;
ppc = (char**) pcpcc;
pcpcc = (char const *const *) ppc;
- { /* SCO 3.2v4 cc rejects this. */
- char *t;
+ { /* SCO 3.2v4 cc rejects this sort of thing. */
+ char tx;
+ char *t = &tx;
char const *s = 0 ? (char *) 0 : (char const *) 0;
*t++ = 0;
iptr p = 0;
++p;
}
- { /* AIX XL C 1.02.0.0 rejects this saying
+ { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying
"k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
- struct s { int j; const int *ap[3]; };
- struct s *b; b->j = 5;
+ struct s { int j; const int *ap[3]; } bx;
+ struct s *b = &bx; b->j = 5;
}
{ /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
const int foo = 10;
fi
ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
-if test "x$ac_cv_type_size_t" = x""yes; then :
+if test "x$ac_cv_type_size_t" = xyes; then :
else
fi
ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default"
-if test "x$ac_cv_type_off_t" = x""yes; then :
+if test "x$ac_cv_type_off_t" = xyes; then :
else
# Check for Darwin, which needs extra cpp and linker flags.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uname" >&5
$as_echo_n "checking for uname... " >&6; }
-if test "${ne_cv_os_uname+set}" = set; then :
+if ${ne_cv_os_uname+:} false; then :
$as_echo_n "(cached) " >&6
else
$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
set x ${MAKE-make}
ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\"" = set; then :
+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
$as_echo_n "(cached) " >&6
else
cat >conftest.make <<\_ACEOF
# This bug is HP SR number 8606223364.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int" >&5
$as_echo_n "checking size of int... " >&6; }
-if test "${ac_cv_sizeof_int+set}" = set; then :
+if ${ac_cv_sizeof_int+:} false; then :
$as_echo_n "(cached) " >&6
else
if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" "$ac_includes_default"; then :
# This bug is HP SR number 8606223364.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5
$as_echo_n "checking size of long... " >&6; }
-if test "${ac_cv_sizeof_long+set}" = set; then :
+if ${ac_cv_sizeof_long+:} false; then :
$as_echo_n "(cached) " >&6
else
if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default"; then :
# This bug is HP SR number 8606223364.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5
$as_echo_n "checking size of long long... " >&6; }
-if test "${ac_cv_sizeof_long_long+set}" = set; then :
+if ${ac_cv_sizeof_long_long+:} false; then :
$as_echo_n "(cached) " >&6
else
if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long long))" "ac_cv_sizeof_long_long" "$ac_includes_default"; then :
if test "$GCC" = "yes"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gcc -Wformat -Werror sanity" >&5
$as_echo_n "checking for gcc -Wformat -Werror sanity... " >&6; }
-if test "${ne_cv_cc_werror+set}" = set; then :
+if ${ne_cv_cc_werror+:} false; then :
$as_echo_n "(cached) " >&6
else
-for ac_header in errno.h stdarg.h string.h stdlib.h
+for ac_header in errno.h stdarg.h string.h stdlib.h sys/uio.h
do :
as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
# This bug is HP SR number 8606223364.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5
$as_echo_n "checking size of size_t... " >&6; }
-if test "${ac_cv_sizeof_size_t+set}" = set; then :
+if ${ac_cv_sizeof_size_t+:} false; then :
$as_echo_n "(cached) " >&6
else
if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (size_t))" "ac_cv_sizeof_size_t" "$ac_includes_default
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print size_t" >&5
$as_echo_n "checking how to print size_t... " >&6; }
-if test "${ne_cv_fmt_size_t+set}" = set; then :
+if ${ne_cv_fmt_size_t+:} false; then :
$as_echo_n "(cached) " >&6
else
# This bug is HP SR number 8606223364.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of off_t" >&5
$as_echo_n "checking size of off_t... " >&6; }
-if test "${ac_cv_sizeof_off_t+set}" = set; then :
+if ${ac_cv_sizeof_off_t+:} false; then :
$as_echo_n "(cached) " >&6
else
if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (off_t))" "ac_cv_sizeof_off_t" "$ac_includes_default
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print off_t" >&5
$as_echo_n "checking how to print off_t... " >&6; }
-if test "${ne_cv_fmt_off_t+set}" = set; then :
+if ${ne_cv_fmt_off_t+:} false; then :
$as_echo_n "(cached) " >&6
else
# This bug is HP SR number 8606223364.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of ssize_t" >&5
$as_echo_n "checking size of ssize_t... " >&6; }
-if test "${ac_cv_sizeof_ssize_t+set}" = set; then :
+if ${ac_cv_sizeof_ssize_t+:} false; then :
$as_echo_n "(cached) " >&6
else
if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (ssize_t))" "ac_cv_sizeof_ssize_t" "$ac_includes_default
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print ssize_t" >&5
$as_echo_n "checking how to print ssize_t... " >&6; }
-if test "${ne_cv_fmt_ssize_t+set}" = set; then :
+if ${ne_cv_fmt_ssize_t+:} false; then :
$as_echo_n "(cached) " >&6
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
-if test "${ac_cv_c_bigendian+set}" = set; then :
+if ${ac_cv_c_bigendian+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_cv_c_bigendian=unknown
esac
ac_fn_c_check_decl "$LINENO" "strerror_r" "ac_cv_have_decl_strerror_r" "$ac_includes_default"
-if test "x$ac_cv_have_decl_strerror_r" = x""yes; then :
+if test "x$ac_cv_have_decl_strerror_r" = xyes; then :
ac_have_decl=1
else
ac_have_decl=0
for ac_func in strerror_r
do :
ac_fn_c_check_func "$LINENO" "strerror_r" "ac_cv_func_strerror_r"
-if test "x$ac_cv_func_strerror_r" = x""yes; then :
+if test "x$ac_cv_func_strerror_r" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_STRERROR_R 1
_ACEOF
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether strerror_r returns char *" >&5
$as_echo_n "checking whether strerror_r returns char *... " >&6; }
-if test "${ac_cv_func_strerror_r_char_p+set}" = set; then :
+if ${ac_cv_func_strerror_r_char_p+:} false; then :
$as_echo_n "(cached) " >&6
else
LIBS="$LIBS -lm" # Always need -lm
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for trio_vsnprintf in -ltrio" >&5
$as_echo_n "checking for trio_vsnprintf in -ltrio... " >&6; }
-if test "${ac_cv_lib_trio_trio_vsnprintf+set}" = set; then :
+if ${ac_cv_lib_trio_trio_vsnprintf+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_trio_trio_vsnprintf" >&5
$as_echo "$ac_cv_lib_trio_trio_vsnprintf" >&6; }
-if test "x$ac_cv_lib_trio_trio_vsnprintf" = x""yes; then :
+if test "x$ac_cv_lib_trio_trio_vsnprintf" = xyes; then :
for ac_header in trio.h
do :
ac_fn_c_check_header_mongrel "$LINENO" "trio.h" "ac_cv_header_trio_h" "$ac_includes_default"
-if test "x$ac_cv_header_trio_h" = x""yes; then :
+if test "x$ac_cv_header_trio_h" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_TRIO_H 1
_ACEOF
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for timezone global" >&5
$as_echo_n "checking for timezone global... " >&6; }
-if test "${ne_cv_cc_timezone+set}" = set; then :
+if ${ne_cv_cc_timezone+:} false; then :
$as_echo_n "(cached) " >&6
else
ne_save_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE"
ac_fn_c_check_type "$LINENO" "off64_t" "ac_cv_type_off64_t" "$ac_includes_default"
-if test "x$ac_cv_type_off64_t" = x""yes; then :
+if test "x$ac_cv_type_off64_t" = xyes; then :
# This bug is HP SR number 8606223364.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of off64_t" >&5
$as_echo_n "checking size of off64_t... " >&6; }
-if test "${ac_cv_sizeof_off64_t+set}" = set; then :
+if ${ac_cv_sizeof_off64_t+:} false; then :
$as_echo_n "(cached) " >&6
else
if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (off64_t))" "ac_cv_sizeof_off64_t" "$ac_includes_default
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print off64_t" >&5
$as_echo_n "checking how to print off64_t... " >&6; }
-if test "${ne_cv_fmt_off64_t+set}" = set; then :
+if ${ne_cv_fmt_off64_t+:} false; then :
$as_echo_n "(cached) " >&6
else
#define NE_FMT_NE_OFF_T NE_FMT_OFF64_T
_ACEOF
+
+if test "x${NE_LIBTOOL_RELEASE}y" = "xy"; then
+ NE_LIBTOOL_RELEASE="LFS"
+else
+ NE_LIBTOOL_RELEASE="${NE_LIBTOOL_RELEASE}-LFS"
+fi
+
else
cat >>confdefs.h <<_ACEOF
#define NE_FMT_NE_OFF_T NE_FMT_OFF_T
ac_fn_c_check_func "$LINENO" "strcasecmp" "ac_cv_func_strcasecmp"
-if test "x$ac_cv_func_strcasecmp" = x""yes; then :
+if test "x$ac_cv_func_strcasecmp" = xyes; then :
$as_echo "#define HAVE_STRCASECMP 1" >>confdefs.h
else
if test "$ac_cv_func_stpcpy" = "yes"; then
ac_fn_c_check_decl "$LINENO" "stpcpy" "ac_cv_have_decl_stpcpy" "$ac_includes_default"
-if test "x$ac_cv_have_decl_stpcpy" = x""yes; then :
+if test "x$ac_cv_have_decl_stpcpy" = xyes; then :
ac_have_decl=1
else
ac_have_decl=0
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5
$as_echo_n "checking for library containing socket... " >&6; }
-if test "${ne_cv_libsfor_socket+set}" = set; then :
+if ${ne_cv_libsfor_socket+:} false; then :
$as_echo_n "(cached) " >&6
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing getaddrinfo" >&5
$as_echo_n "checking for library containing getaddrinfo... " >&6; }
-if test "${ne_cv_libsfor_getaddrinfo+set}" = set; then :
+if ${ne_cv_libsfor_getaddrinfo+:} false; then :
$as_echo_n "(cached) " >&6
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working AI_ADDRCONFIG" >&5
$as_echo_n "checking for working AI_ADDRCONFIG... " >&6; }
-if test "${ne_cv_gai_addrconfig+set}" = set; then :
+if ${ne_cv_gai_addrconfig+:} false; then :
$as_echo_n "(cached) " >&6
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5
$as_echo_n "checking for library containing gethostbyname... " >&6; }
-if test "${ne_cv_libsfor_gethostbyname+set}" = set; then :
+if ${ne_cv_libsfor_gethostbyname+:} false; then :
$as_echo_n "(cached) " >&6
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing hstrerror" >&5
$as_echo_n "checking for library containing hstrerror... " >&6; }
-if test "${ne_cv_libsfor_hstrerror+set}" = set; then :
+if ${ne_cv_libsfor_hstrerror+:} false; then :
$as_echo_n "(cached) " >&6
else
for ac_func in hstrerror
do :
ac_fn_c_check_func "$LINENO" "hstrerror" "ac_cv_func_hstrerror"
-if test "x$ac_cv_func_hstrerror" = x""yes; then :
+if test "x$ac_cv_func_hstrerror" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_HSTRERROR 1
_ACEOF
# Older Unixes don't declare h_errno.
ac_fn_c_check_decl "$LINENO" "h_errno" "ac_cv_have_decl_h_errno" "#include <netdb.h>
"
-if test "x$ac_cv_have_decl_h_errno" = x""yes; then :
+if test "x$ac_cv_have_decl_h_errno" = xyes; then :
ac_have_decl=1
else
ac_have_decl=0
#endif
"
-if test "x$ac_cv_type_in_addr_t" = x""yes; then :
+if test "x$ac_cv_type_in_addr_t" = xyes; then :
else
#endif
"
-if test "x$ac_cv_type_socklen_t" = x""yes; then :
+if test "x$ac_cv_type_socklen_t" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_SOCKLEN_T 1
ac_fn_c_check_member "$LINENO" "struct tm" "tm_gmtoff" "ac_cv_member_struct_tm_tm_gmtoff" "#include <time.h>
"
-if test "x$ac_cv_member_struct_tm_tm_gmtoff" = x""yes; then :
+if test "x$ac_cv_member_struct_tm_tm_gmtoff" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_STRUCT_TM_TM_GMTOFF 1
fi
ac_fn_c_check_member "$LINENO" "struct tm" "__tm_gmtoff" "ac_cv_member_struct_tm___tm_gmtoff" "#include <time.h>
"
-if test "x$ac_cv_member_struct_tm___tm_gmtoff" = x""yes; then :
+if test "x$ac_cv_member_struct_tm___tm_gmtoff" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_STRUCT_TM___TM_GMTOFF 1
if test "$ne_use_zlib" = "yes"; then
ac_fn_c_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default"
-if test "x$ac_cv_header_zlib_h" = x""yes; then :
+if test "x$ac_cv_header_zlib_h" = xyes; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inflate in -lz" >&5
$as_echo_n "checking for inflate in -lz... " >&6; }
-if test "${ac_cv_lib_z_inflate+set}" = set; then :
+if ${ac_cv_lib_z_inflate+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_inflate" >&5
$as_echo "$ac_cv_lib_z_inflate" >&6; }
-if test "x$ac_cv_lib_z_inflate" = x""yes; then :
+if test "x$ac_cv_lib_z_inflate" = xyes; then :
NEON_LIBS="$NEON_LIBS -lz"
set dummy pkg-config; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
+if ${ac_cv_path_PKG_CONFIG+:} false; then :
$as_echo_n "(cached) " >&6
else
case $PKG_CONFIG in
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing RSA_new" >&5
$as_echo_n "checking for library containing RSA_new... " >&6; }
-if test "${ne_cv_libsfor_RSA_new+set}" = set; then :
+if ${ne_cv_libsfor_RSA_new+:} false; then :
$as_echo_n "(cached) " >&6
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing SSL_library_init" >&5
$as_echo_n "checking for library containing SSL_library_init... " >&6; }
-if test "${ne_cv_libsfor_SSL_library_init+set}" = set; then :
+if ${ne_cv_libsfor_SSL_library_init+:} false; then :
$as_echo_n "(cached) " >&6
else
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for openssl pkg-config data" >&5
$as_echo_n "checking for openssl pkg-config data... " >&6; }
-if test "${ne_cv_pkg_openssl+set}" = set; then :
+if ${ne_cv_pkg_openssl+:} false; then :
$as_echo_n "(cached) " >&6
else
if $PKG_CONFIG openssl; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing RSA_new" >&5
$as_echo_n "checking for library containing RSA_new... " >&6; }
-if test "${ne_cv_libsfor_RSA_new+set}" = set; then :
+if ${ne_cv_libsfor_RSA_new+:} false; then :
$as_echo_n "(cached) " >&6
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing SSL_library_init" >&5
$as_echo_n "checking for library containing SSL_library_init... " >&6; }
-if test "${ne_cv_libsfor_SSL_library_init+set}" = set; then :
+if ${ne_cv_libsfor_SSL_library_init+:} false; then :
$as_echo_n "(cached) " >&6
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking OpenSSL version is >= 0.9.7" >&5
$as_echo_n "checking OpenSSL version is >= 0.9.7... " >&6; }
-if test "${ne_cv_lib_ssl097+set}" = set; then :
+if ${ne_cv_lib_ssl097+:} false; then :
$as_echo_n "(cached) " >&6
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking OpenSSL version is >= 0.9.6" >&5
$as_echo_n "checking OpenSSL version is >= 0.9.6... " >&6; }
-if test "${ne_cv_lib_ssl096+set}" = set; then :
+if ${ne_cv_lib_ssl096+:} false; then :
$as_echo_n "(cached) " >&6
else
*) # Guess whether EGD support is needed
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable EGD support" >&5
$as_echo_n "checking whether to enable EGD support... " >&6; }
-if test "${ne_cv_lib_sslegd+set}" = set; then :
+if ${ne_cv_lib_sslegd+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -r /dev/random || test -r /dev/urandom; then
set dummy pkg-config; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
+if ${ac_cv_path_PKG_CONFIG+:} false; then :
$as_echo_n "(cached) " >&6
else
case $PKG_CONFIG in
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
set dummy libgnutls-config; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_GNUTLS_CONFIG+set}" = set; then :
+if ${ac_cv_path_GNUTLS_CONFIG+:} false; then :
$as_echo_n "(cached) " >&6
else
case $GNUTLS_CONFIG in
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_GNUTLS_CONFIG="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gnutls pkg-config data" >&5
$as_echo_n "checking for gnutls pkg-config data... " >&6; }
-if test "${ne_cv_pkg_gnutls+set}" = set; then :
+if ${ne_cv_pkg_gnutls+:} false; then :
$as_echo_n "(cached) " >&6
else
if $PKG_CONFIG gnutls; then
set dummy libgnutls-config; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_GNUTLS_CONFIG+set}" = set; then :
+if ${ac_cv_path_GNUTLS_CONFIG+:} false; then :
$as_echo_n "(cached) " >&6
else
case $GNUTLS_CONFIG in
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_GNUTLS_CONFIG="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
ac_fn_c_check_header_mongrel "$LINENO" "gnutls/gnutls.h" "ac_cv_header_gnutls_gnutls_h" "$ac_includes_default"
-if test "x$ac_cv_header_gnutls_gnutls_h" = x""yes; then :
+if test "x$ac_cv_header_gnutls_gnutls_h" = xyes; then :
else
as_fn_error $? "could not find gnutls/gnutls.h in include path" "$LINENO" 5
LIBS="$LIBS $NEON_LIBS"
for ac_func in gnutls_session_get_data2 gnutls_x509_dn_get_rdn_ava \
gnutls_sign_callback_set \
+ gnutls_certificate_get_issuer \
gnutls_certificate_get_x509_cas \
- gnutls_certificate_verify_peers2
+ gnutls_x509_crt_sign2
do :
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
LIBS=$ne_cf_save_LIBS
- # fail if gnutls_certificate_verify_peers2 is not found
- if test x${ac_cv_func_gnutls_certificate_verify_peers2} != xyes; then
- as_fn_error $? "GnuTLS version predates gnutls_certificate_verify_peers2, newer version required" "$LINENO" 5
+ # fail if gnutls_x509_crt_sign2 is not found (it was introduced in 1.2.0, which is required)
+ if test x${ac_cv_func_gnutls_x509_crt_sign2} != xyes; then
+ as_fn_error $? "GnuTLS version predates gnutls_x509_crt_sign2, newer version required (at least 1.2.0)" "$LINENO" 5
fi
# Check for iconv support if using the new RDN access functions:
for ac_func in iconv
do :
ac_fn_c_check_func "$LINENO" "iconv" "ac_cv_func_iconv"
-if test "x$ac_cv_func_iconv" = x""yes; then :
+if test "x$ac_cv_func_iconv" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_ICONV 1
_ACEOF
set dummy pkg-config; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
+if ${ac_cv_path_PKG_CONFIG+:} false; then :
$as_echo_n "(cached) " >&6
else
case $PKG_CONFIG in
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for pakchois pkg-config data" >&5
$as_echo_n "checking for pakchois pkg-config data... " >&6; }
-if test "${ne_cv_pkg_pakchois+set}" = set; then :
+if ${ne_cv_pkg_pakchois+:} false; then :
$as_echo_n "(cached) " >&6
else
if $PKG_CONFIG pakchois; then
set dummy krb5-config; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_KRB5_CONFIG+set}" = set; then :
+if ${ac_cv_path_KRB5_CONFIG+:} false; then :
$as_echo_n "(cached) " >&6
else
case $KRB5_CONFIG in
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_KRB5_CONFIG="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
for ac_func in gss_init_sec_context
do :
ac_fn_c_check_func "$LINENO" "gss_init_sec_context" "ac_cv_func_gss_init_sec_context"
-if test "x$ac_cv_func_gss_init_sec_context" = x""yes; then :
+if test "x$ac_cv_func_gss_init_sec_context" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_GSS_INIT_SEC_CONTEXT 1
_ACEOF
for ac_header in gssapi/gssapi_generic.h
do :
ac_fn_c_check_header_mongrel "$LINENO" "gssapi/gssapi_generic.h" "ac_cv_header_gssapi_gssapi_generic_h" "$ac_includes_default"
-if test "x$ac_cv_header_gssapi_gssapi_generic_h" = x""yes; then :
+if test "x$ac_cv_header_gssapi_gssapi_generic_h" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_GSSAPI_GSSAPI_GENERIC_H 1
_ACEOF
#include <gssapi.h>
#endif
"
-if test "x$ac_cv_have_decl_GSS_C_NT_HOSTBASED_SERVICE" = x""yes; then :
+if test "x$ac_cv_have_decl_GSS_C_NT_HOSTBASED_SERVICE" = xyes; then :
else
set dummy pkg-config; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
+if ${ac_cv_path_PKG_CONFIG+:} false; then :
$as_echo_n "(cached) " >&6
else
case $PKG_CONFIG in
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libproxy-1.0 pkg-config data" >&5
$as_echo_n "checking for libproxy-1.0 pkg-config data... " >&6; }
-if test "${ne_cv_pkg_libproxy_1_0+set}" = set; then :
+if ${ne_cv_pkg_libproxy_1_0+:} false; then :
$as_echo_n "(cached) " >&6
else
if $PKG_CONFIG libproxy-1.0; then
-macro_version='2.2.10'
-macro_revision='1.3175'
+macro_version='2.4.2'
+macro_revision='1.3337'
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
$as_echo_n "checking build system type... " >&6; }
-if test "${ac_cv_build+set}" = set; then :
+if ${ac_cv_build+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_build_alias=$build_alias
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
$as_echo_n "checking host system type... " >&6; }
-if test "${ac_cv_host+set}" = set; then :
+if ${ac_cv_host+:} false; then :
$as_echo_n "(cached) " >&6
else
if test "x$host_alias" = x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
$as_echo_n "checking how to print strings... " >&6; }
# Test print first, because it will be a builtin if present.
-if test "X`print -r -- -n 2>/dev/null`" = X-n && \
+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
ECHO='print -r --'
elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
$as_echo_n "checking for a sed that does not truncate output... " >&6; }
-if test "${ac_cv_path_SED+set}" = set; then :
+if ${ac_cv_path_SED+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
for ac_prog in sed gsed; do
for ac_exec_ext in '' $ac_executable_extensions; do
ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue
+ as_fn_executable_p "$ac_path_SED" || continue
# Check for GNU ac_path_SED and select it if it is found.
# Check for GNU $ac_path_SED
case `"$ac_path_SED" --version 2>&1` in
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
$as_echo_n "checking for fgrep... " >&6; }
-if test "${ac_cv_path_FGREP+set}" = set; then :
+if ${ac_cv_path_FGREP+:} false; then :
$as_echo_n "(cached) " >&6
else
if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
for ac_prog in fgrep; do
for ac_exec_ext in '' $ac_executable_extensions; do
ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue
+ as_fn_executable_p "$ac_path_FGREP" || continue
# Check for GNU ac_path_FGREP and select it if it is found.
# Check for GNU $ac_path_FGREP
case `"$ac_path_FGREP" --version 2>&1` in
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
$as_echo_n "checking for non-GNU ld... " >&6; }
fi
-if test "${lt_cv_path_LD+set}" = set; then :
+if ${lt_cv_path_LD+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -z "$LD"; then
test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
-if test "${lt_cv_prog_gnu_ld+set}" = set; then :
+if ${lt_cv_prog_gnu_ld+:} false; then :
$as_echo_n "(cached) " >&6
else
# I'd rather use --version here, but apparently some GNU lds only accept -v.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
-if test "${lt_cv_path_NM+set}" = set; then :
+if ${lt_cv_path_NM+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$NM"; then
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_DUMPBIN+set}" = set; then :
+if ${ac_cv_prog_DUMPBIN+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$DUMPBIN"; then
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
set dummy $ac_prog; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; then :
+if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$ac_ct_DUMPBIN"; then
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
$as_echo_n "checking the name lister ($NM) interface... " >&6; }
-if test "${lt_cv_nm_interface+set}" = set; then :
+if ${lt_cv_nm_interface+:} false; then :
$as_echo_n "(cached) " >&6
else
lt_cv_nm_interface="BSD nm"
# find the maximum length of command line arguments
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
$as_echo_n "checking the maximum length of command line arguments... " >&6; }
-if test "${lt_cv_sys_max_cmd_len+set}" = set; then :
+if ${lt_cv_sys_max_cmd_len+:} false; then :
$as_echo_n "(cached) " >&6
else
i=0
lt_cv_sys_max_cmd_len=196608
;;
+ os2*)
+ # The test takes a long time on OS/2.
+ lt_cv_sys_max_cmd_len=8192
+ ;;
+
osf*)
# Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
# due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
# 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"`func_fallback_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
do
# Try some XSI features
xsi_shell=no
( _lt_dummy="a/b/c"
- test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
- = c,a/b,, \
+ 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}: checking how to convert $build file names to $host format" >&5
+$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
+if ${lt_cv_to_host_file_cmd+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $host in
+ *-*-mingw* )
+ case $build in
+ *-*-mingw* ) # actually msys
+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
+ ;;
+ *-*-cygwin* )
+ lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
+ ;;
+ * ) # otherwise, assume *nix
+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
+ ;;
+ esac
+ ;;
+ *-*-cygwin* )
+ case $build in
+ *-*-mingw* ) # actually msys
+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
+ ;;
+ *-*-cygwin* )
+ lt_cv_to_host_file_cmd=func_convert_file_noop
+ ;;
+ * ) # otherwise, assume *nix
+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
+ ;;
+ esac
+ ;;
+ * ) # unhandled hosts (and "normal" native builds)
+ lt_cv_to_host_file_cmd=func_convert_file_noop
+ ;;
+esac
+
+fi
+
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
+$as_echo "$lt_cv_to_host_file_cmd" >&6; }
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
+$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
+if ${lt_cv_to_tool_file_cmd+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ #assume ordinary cross tools, or native build.
+lt_cv_to_tool_file_cmd=func_convert_file_noop
+case $host in
+ *-*-mingw* )
+ case $build in
+ *-*-mingw* ) # actually msys
+ lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
+ ;;
+ esac
+ ;;
+esac
+
+fi
+
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
+$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
+
+
+
+
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
$as_echo_n "checking for $LD option to reload object files... " >&6; }
-if test "${lt_cv_ld_reload_flag+set}" = set; then :
+if ${lt_cv_ld_reload_flag+:} false; then :
$as_echo_n "(cached) " >&6
else
lt_cv_ld_reload_flag='-r'
esac
reload_cmds='$LD$reload_flag -o $output$reload_objs'
case $host_os in
+ cygwin* | mingw* | pw32* | cegcc*)
+ if test "$GCC" != yes; then
+ reload_cmds=false
+ fi
+ ;;
darwin*)
if test "$GCC" = yes; then
reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
set dummy ${ac_tool_prefix}objdump; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_OBJDUMP+set}" = set; then :
+if ${ac_cv_prog_OBJDUMP+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$OBJDUMP"; then
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
set dummy objdump; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then :
+if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$ac_ct_OBJDUMP"; then
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_OBJDUMP="objdump"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
$as_echo_n "checking how to recognize dependent libraries... " >&6; }
-if test "${lt_cv_deplibs_check_method+set}" = set; then :
+if ${lt_cv_deplibs_check_method+:} false; then :
$as_echo_n "(cached) " >&6
else
lt_cv_file_magic_cmd='$MAGIC_CMD'
lt_cv_deplibs_check_method=pass_all
;;
-# This must be Linux ELF.
+# This must be glibc/ELF.
linux* | k*bsd*-gnu | kopensolaris*-gnu)
lt_cv_deplibs_check_method=pass_all
;;
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
$as_echo "$lt_cv_deplibs_check_method" >&6; }
+
+file_magic_glob=
+want_nocaseglob=no
+if test "$build" = "$host"; then
+ case $host_os in
+ mingw* | pw32*)
+ if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
+ want_nocaseglob=yes
+ else
+ file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
+ fi
+ ;;
+ esac
+fi
+
file_magic_cmd=$lt_cv_file_magic_cmd
deplibs_check_method=$lt_cv_deplibs_check_method
test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+
+
+
+
+
+
+
+
+
if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ar; ac_word=$2
+ # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DLLTOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$DLLTOOL"; then
+ ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+DLLTOOL=$ac_cv_prog_DLLTOOL
+if test -n "$DLLTOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
+$as_echo "$DLLTOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DLLTOOL"; then
+ ac_ct_DLLTOOL=$DLLTOOL
+ # Extract the first word of "dlltool", so it can be a program name with args.
+set dummy dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_DLLTOOL"; then
+ ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_DLLTOOL="dlltool"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
+if test -n "$ac_ct_DLLTOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
+$as_echo "$ac_ct_DLLTOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_DLLTOOL" = x; then
+ DLLTOOL="false"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ DLLTOOL=$ac_ct_DLLTOOL
+ fi
+else
+ DLLTOOL="$ac_cv_prog_DLLTOOL"
+fi
+
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
+$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
+if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_sharedlib_from_linklib_cmd='unknown'
+
+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
+ case `$DLLTOOL --help 2>&1` in
+ *--identify-strict*)
+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
+ ;;
+ *)
+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
+ ;;
+ esac
+ ;;
+*)
+ # fallback: assume linklib IS sharedlib
+ lt_cv_sharedlib_from_linklib_cmd="$ECHO"
+ ;;
+esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
+$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+ for ac_prog in ar
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_AR+set}" = set; then :
+if ${ac_cv_prog_AR+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$AR"; then
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_AR="${ac_tool_prefix}ar"
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
fi
+ test -n "$AR" && break
+ done
fi
-if test -z "$ac_cv_prog_AR"; then
+if test -z "$AR"; then
ac_ct_AR=$AR
- # Extract the first word of "ar", so it can be a program name with args.
-set dummy ar; ac_word=$2
+ for ac_prog in ar
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_AR+set}" = set; then :
+if ${ac_cv_prog_ac_ct_AR+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$ac_ct_AR"; then
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_AR="ar"
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_AR="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
$as_echo "no" >&6; }
fi
+
+ test -n "$ac_ct_AR" && break
+done
+
if test "x$ac_ct_AR" = x; then
AR="false"
else
esac
AR=$ac_ct_AR
fi
-else
- AR="$ac_cv_prog_AR"
fi
-test -z "$AR" && AR=ar
-test -z "$AR_FLAGS" && AR_FLAGS=cru
+: ${AR=ar}
+: ${AR_FLAGS=cru}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
+$as_echo_n "checking for archiver @FILE support... " >&6; }
+if ${lt_cv_ar_at_file+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_ar_at_file=no
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ echo conftest.$ac_objext > conftest.lst
+ lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
+ (eval $lt_ar_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ if test "$ac_status" -eq 0; 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
+ (eval $lt_ar_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ if test "$ac_status" -ne 0; then
+ lt_cv_ar_at_file=@
+ fi
+ fi
+ rm -f conftest.* libconftest.a
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+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
+ archiver_list_spec=
+else
+ archiver_list_spec=$lt_cv_ar_at_file
+fi
+
+
+
+
+
+
+
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
set dummy ${ac_tool_prefix}strip; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_STRIP+set}" = set; then :
+if ${ac_cv_prog_STRIP+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$STRIP"; then
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_STRIP="${ac_tool_prefix}strip"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
set dummy strip; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then :
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$ac_ct_STRIP"; then
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_STRIP="strip"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
set dummy ${ac_tool_prefix}ranlib; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_RANLIB+set}" = set; then :
+if ${ac_cv_prog_RANLIB+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$RANLIB"; then
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
set dummy ranlib; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then :
+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$ac_ct_RANLIB"; then
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_RANLIB="ranlib"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
if test -n "$RANLIB"; then
case $host_os in
openbsd*)
- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
;;
*)
- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
;;
esac
- old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
fi
case $host_os in
set dummy $ac_prog; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_AWK+set}" = set; then :
+if ${ac_cv_prog_AWK+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$AWK"; then
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_AWK="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
# Check for command to grab the raw symbol name followed by C symbol from nm.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
-if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then :
+if ${lt_cv_sys_global_symbol_pipe+:} false; then :
$as_echo_n "(cached) " >&6
else
lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$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 -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'"
# Handle CRLF in mingw tool chain
opt_cr=
# 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};"\
" \$ 0!~/External *\|/{next};"\
" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
else
lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
fi
+ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
# Check to see that the pipe works correctly.
pipe_works=no
if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
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
+ relocations are performed -- see ld's documentation on pseudo-relocs. */
+# define LT_DLSYM_CONST
+#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
+
#ifdef __cplusplus
extern "C" {
#endif
cat <<_LT_EOF >> conftest.$ac_ext
/* The mapping between symbol names and symbols. */
-const struct {
+LT_DLSYM_CONST struct {
const char *name;
void *address;
}
_LT_EOF
# Now try linking the two files.
mv conftest.$ac_objext conftstm.$ac_objext
- lt_save_LIBS="$LIBS"
- lt_save_CFLAGS="$CFLAGS"
+ lt_globsym_save_LIBS=$LIBS
+ lt_globsym_save_CFLAGS=$CFLAGS
LIBS="conftstm.$ac_objext"
CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
test $ac_status = 0; } && test -s conftest${ac_exeext}; then
pipe_works=yes
fi
- LIBS="$lt_save_LIBS"
- CFLAGS="$lt_save_CFLAGS"
+ LIBS=$lt_globsym_save_LIBS
+ CFLAGS=$lt_globsym_save_CFLAGS
else
echo "cannot find nm_test_func in $nlist" >&5
fi
$as_echo "ok" >&6; }
fi
+# Response file support.
+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+ nm_file_list_spec='@'
+elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
+ nm_file_list_spec='@'
+fi
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
+$as_echo_n "checking for sysroot... " >&6; }
+
+# Check whether --with-sysroot was given.
+if test "${with_sysroot+set}" = set; then :
+ withval=$with_sysroot;
+else
+ with_sysroot=no
+fi
+
+
+lt_sysroot=
+case ${with_sysroot} in #(
+ yes)
+ if test "$GCC" = yes; then
+ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+ fi
+ ;; #(
+ /*)
+ lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
+ ;; #(
+ no|'')
+ ;; #(
+ *)
+ { $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
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
+$as_echo "${lt_sysroot:-no}" >&6; }
+
+
+
+
# Check whether --enable-libtool-lock was given.
if test "${enable_libtool_lock+set}" = set; then :
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; }
-if test "${lt_cv_cc_needs_belf+set}" = set; then :
+if ${lt_cv_cc_needs_belf+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_ext=c
CFLAGS="$SAVE_CFLAGS"
fi
;;
-sparc*-*solaris*)
+*-*solaris*)
# Find out which ABI we are using.
echo 'int i;' > conftest.$ac_ext
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
case `/usr/bin/file conftest.o` in
*64-bit*)
case $lt_cv_prog_gnu_ld in
- yes*) LD="${LD-ld} -m elf64_sparc" ;;
+ yes*)
+ case $host in
+ i?86-*-solaris*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ sparc*-*-solaris*)
+ LD="${LD-ld} -m elf64_sparc"
+ ;;
+ 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"
+ fi
+ ;;
*)
if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
LD="${LD-ld} -64"
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.
+set dummy ${ac_tool_prefix}mt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$MANIFEST_TOOL"; then
+ ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
+if test -n "$MANIFEST_TOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
+$as_echo "$MANIFEST_TOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
+ ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
+ # Extract the first word of "mt", so it can be a program name with args.
+set dummy mt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_MANIFEST_TOOL"; then
+ ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
+if test -n "$ac_ct_MANIFEST_TOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
+$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_MANIFEST_TOOL" = x; then
+ MANIFEST_TOOL=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
+ fi
+else
+ MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
+fi
+
+test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
+$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
+if ${lt_cv_path_mainfest_tool+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_path_mainfest_tool=no
+ echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
+ $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
+ cat conftest.err >&5
+ if $GREP 'Manifest Tool' conftest.out > /dev/null; then
+ lt_cv_path_mainfest_tool=yes
+ fi
+ rm -f conftest*
+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
+ MANIFEST_TOOL=:
+fi
+
+
+
+
+
+
case $host_os in
rhapsody* | darwin*)
if test -n "$ac_tool_prefix"; then
set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_DSYMUTIL+set}" = set; then :
+if ${ac_cv_prog_DSYMUTIL+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$DSYMUTIL"; then
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
set dummy dsymutil; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then :
+if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$ac_ct_DSYMUTIL"; then
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
set dummy ${ac_tool_prefix}nmedit; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_NMEDIT+set}" = set; then :
+if ${ac_cv_prog_NMEDIT+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$NMEDIT"; then
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
set dummy nmedit; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then :
+if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$ac_ct_NMEDIT"; then
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_NMEDIT="nmedit"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
set dummy ${ac_tool_prefix}lipo; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_LIPO+set}" = set; then :
+if ${ac_cv_prog_LIPO+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$LIPO"; then
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
set dummy lipo; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; then :
+if ${ac_cv_prog_ac_ct_LIPO+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$ac_ct_LIPO"; then
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_LIPO="lipo"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
set dummy ${ac_tool_prefix}otool; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_OTOOL+set}" = set; then :
+if ${ac_cv_prog_OTOOL+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$OTOOL"; then
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
set dummy otool; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; then :
+if ${ac_cv_prog_ac_ct_OTOOL+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$ac_ct_OTOOL"; then
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_OTOOL="otool"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
set dummy ${ac_tool_prefix}otool64; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_OTOOL64+set}" = set; then :
+if ${ac_cv_prog_OTOOL64+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$OTOOL64"; then
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
set dummy otool64; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; then :
+if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$ac_ct_OTOOL64"; then
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_OTOOL64="otool64"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
$as_echo_n "checking for -single_module linker flag... " >&6; }
-if test "${lt_cv_apple_cc_single_mod+set}" = set; then :
+if ${lt_cv_apple_cc_single_mod+:} false; then :
$as_echo_n "(cached) " >&6
else
lt_cv_apple_cc_single_mod=no
$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
-dynamiclib -Wl,-single_module conftest.c 2>conftest.err
_lt_result=$?
- if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
+ # If there is a non-empty error log, and "single_module"
+ # appears in it, assume the flag caused a linker warning
+ if test -s conftest.err && $GREP single_module conftest.err; then
+ 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
lt_cv_apple_cc_single_mod=yes
else
cat conftest.err >&5
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
-if test "${lt_cv_ld_exported_symbols_list+set}" = set; then :
+if ${lt_cv_ld_exported_symbols_list+:} false; then :
$as_echo_n "(cached) " >&6
else
lt_cv_ld_exported_symbols_list=no
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
$as_echo_n "checking for -force_load linker flag... " >&6; }
-if test "${lt_cv_ld_force_load+set}" = set; then :
+if ${lt_cv_ld_force_load+:} false; then :
$as_echo_n "(cached) " >&6
else
lt_cv_ld_force_load=no
echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
_lt_result=$?
- if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then
+ 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
lt_cv_ld_force_load=yes
else
cat conftest.err >&5
do :
ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
"
-if test "x$ac_cv_header_dlfcn_h" = x""yes; then :
+if test "x$ac_cv_header_dlfcn_h" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_DLFCN_H 1
_ACEOF
# Check whether --with-pic was given.
if test "${with_pic+set}" = set; then :
- withval=$with_pic; pic_mode="$withval"
+ withval=$with_pic; lt_p=${PACKAGE-default}
+ case $withval in
+ yes|no) pic_mode=$withval ;;
+ *)
+ pic_mode=default
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for lt_pkg in $withval; do
+ IFS="$lt_save_ifs"
+ if test "X$lt_pkg" = "X$lt_p"; then
+ pic_mode=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
else
pic_mode=default
fi
+
+
+
+
test -z "$LN_S" && LN_S="ln -s"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
$as_echo_n "checking for objdir... " >&6; }
-if test "${lt_cv_objdir+set}" = set; then :
+if ${lt_cv_objdir+:} false; then :
$as_echo_n "(cached) " >&6
else
rm -f .libs 2>/dev/null
if test "$file_magic_cmd" = '$MAGIC_CMD'; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
-if test "${lt_cv_path_MAGIC_CMD+set}" = set; then :
+if ${lt_cv_path_MAGIC_CMD+:} false; then :
$as_echo_n "(cached) " >&6
else
case $MAGIC_CMD in
if test -n "$ac_tool_prefix"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
$as_echo_n "checking for file... " >&6; }
-if test "${lt_cv_path_MAGIC_CMD+set}" = set; then :
+if ${lt_cv_path_MAGIC_CMD+:} false; then :
$as_echo_n "(cached) " >&6
else
case $MAGIC_CMD in
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
-if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then :
+if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then :
$as_echo_n "(cached) " >&6
else
lt_cv_prog_compiler_rtti_exceptions=no
lt_prog_compiler_pic=
lt_prog_compiler_static=
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
if test "$GCC" = yes; then
lt_prog_compiler_wl='-Wl,'
case $cc_basename in
nvcc*) # Cuda Compiler Driver 2.2
lt_prog_compiler_wl='-Xlinker '
- lt_prog_compiler_pic='-Xcompiler -fPIC'
+ if test -n "$lt_prog_compiler_pic"; then
+ lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic"
+ fi
;;
esac
else
lt_prog_compiler_pic='--shared'
lt_prog_compiler_static='--static'
;;
+ nagfor*)
+ # NAG Fortran compiler
+ lt_prog_compiler_wl='-Wl,-Wl,,'
+ lt_prog_compiler_pic='-PIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
# Portland Group compilers (*not* the Pentium gcc compiler,
# which looks to be a dead project)
;;
*)
case `$CC -V 2>&1 | sed 5q` in
- *Sun\ F* | *Sun*Fortran*)
+ *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
# Sun Fortran 8.3 passes all unrecognized flags to the linker
lt_prog_compiler_pic='-KPIC'
lt_prog_compiler_static='-Bstatic'
lt_prog_compiler_wl=''
;;
+ *Sun\ F* | *Sun*Fortran*)
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ lt_prog_compiler_wl='-Qoption ld '
+ ;;
*Sun\ C*)
# Sun C 5.9
lt_prog_compiler_pic='-KPIC'
lt_prog_compiler_static='-Bstatic'
lt_prog_compiler_wl='-Wl,'
;;
+ *Intel*\ [CF]*Compiler*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-fPIC'
+ lt_prog_compiler_static='-static'
+ ;;
+ *Portland\ Group*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-fpic'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
esac
;;
esac
lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
;;
esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5
-$as_echo "$lt_prog_compiler_pic" >&6; }
-
-
-
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+if ${lt_cv_prog_compiler_pic+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
+$as_echo "$lt_cv_prog_compiler_pic" >&6; }
+lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
#
# Check to make sure the PIC flag actually works.
if test -n "$lt_prog_compiler_pic"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
-if test "${lt_cv_prog_compiler_pic_works+set}" = set; then :
+if ${lt_cv_prog_compiler_pic_works+:} false; then :
$as_echo_n "(cached) " >&6
else
lt_cv_prog_compiler_pic_works=no
+
+
+
+
+
#
# Check to make sure the static flag actually works.
#
wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
-if test "${lt_cv_prog_compiler_static_works+set}" = set; then :
+if ${lt_cv_prog_compiler_static_works+:} false; then :
$as_echo_n "(cached) " >&6
else
lt_cv_prog_compiler_static_works=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if test "${lt_cv_prog_compiler_c_o+set}" = set; then :
+if ${lt_cv_prog_compiler_c_o+:} false; then :
$as_echo_n "(cached) " >&6
else
lt_cv_prog_compiler_c_o=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if test "${lt_cv_prog_compiler_c_o+set}" = set; then :
+if ${lt_cv_prog_compiler_c_o+:} false; then :
$as_echo_n "(cached) " >&6
else
lt_cv_prog_compiler_c_o=no
hardcode_direct=no
hardcode_direct_absolute=no
hardcode_libdir_flag_spec=
- hardcode_libdir_flag_spec_ld=
hardcode_libdir_separator=
hardcode_minus_L=no
hardcode_shlibpath_var=unsupported
allow_undefined_flag=unsupported
always_export_symbols=no
enable_shared_with_static_runtimes=yes
- export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
+ 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 $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
&& test "$tmp_diet" = no
then
- tmp_addflag=
+ tmp_addflag=' $pic_flag'
tmp_sharedflag='-shared'
case $cc_basename,$host_cpu in
pgcc*) # Portland Group C compiler
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=
- hardcode_libdir_flag_spec_ld='-rpath $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
archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
wlarc=
else
- 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'
+ 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
;;
_LT_EOF
elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
- 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'
+ 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
*)
if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
- 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'
+ 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
allow_undefined_flag='-berok'
# Determine the default libpath from the value encoded in an
# empty executable.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ if test "${lt_cv_aix_libpath+set}" = set; then
+ aix_libpath=$lt_cv_aix_libpath
+else
+ if ${lt_cv_aix_libpath_+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
-lt_aix_libpath_sed='
- /Import File Strings/,/^$/ {
- /^0/ {
- s/^0 *\(.*\)$/\1/
- p
- }
- }'
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then
- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-fi
+ lt_aix_libpath_sed='
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\([^ ]*\) *$/\1/
+ p
+ }
+ }'
+ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+ # Check for a 64-bit object if we didn't find anything.
+ if test -z "$lt_cv_aix_libpath_"; then
+ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+ fi
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+ if test -z "$lt_cv_aix_libpath_"; then
+ lt_cv_aix_libpath_="/usr/lib:/lib"
+ fi
+
+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"
else
# Determine the default libpath from the value encoded in an
# empty executable.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ if test "${lt_cv_aix_libpath+set}" = set; then
+ aix_libpath=$lt_cv_aix_libpath
+else
+ if ${lt_cv_aix_libpath_+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
-lt_aix_libpath_sed='
- /Import File Strings/,/^$/ {
- /^0/ {
- s/^0 *\(.*\)$/\1/
- p
- }
- }'
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then
- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-fi
+ lt_aix_libpath_sed='
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\([^ ]*\) *$/\1/
+ p
+ }
+ }'
+ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+ # Check for a 64-bit object if we didn't find anything.
+ if test -z "$lt_cv_aix_libpath_"; then
+ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+ fi
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+ if test -z "$lt_cv_aix_libpath_"; then
+ lt_cv_aix_libpath_="/usr/lib:/lib"
+ fi
+
+fi
+
+ aix_libpath=$lt_cv_aix_libpath_
+fi
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
# Warning - without using the other run time loading flags,
# Microsoft Visual C++.
# hardcode_libdir_flag_spec is actually meaningless, as there is
# no search path for DLLs.
- hardcode_libdir_flag_spec=' '
- allow_undefined_flag=unsupported
- # Tell ltmain to make .lib files, not .a files.
- libext=lib
- # Tell ltmain to make .dll files, not .so files.
- 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.
- old_archive_from_new_cmds='true'
- # FIXME: Should let the user specify the lib program.
- old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
- fix_srcfile_path='`cygpath -w "$srcfile"`'
- enable_shared_with_static_runtimes=yes
+ case $cc_basename in
+ cl*)
+ # Native MSVC
+ hardcode_libdir_flag_spec=' '
+ allow_undefined_flag=unsupported
+ always_export_symbols=yes
+ file_list_spec='@'
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ 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='
+ # 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
+ exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
+ # 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'
+ ;;
+ *)
+ # Assume MSVC wrapper
+ hardcode_libdir_flag_spec=' '
+ allow_undefined_flag=unsupported
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ 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.
+ old_archive_from_new_cmds='true'
+ # FIXME: Should let the user specify the lib program.
+ old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
+ enable_shared_with_static_runtimes=yes
+ ;;
+ esac
;;
darwin* | rhapsody*)
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\"`'
+
else
whole_archive_flag_spec=''
fi
hardcode_shlibpath_var=no
;;
- freebsd1*)
- ld_shlibs=no
- ;;
-
# FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
# support. Future versions do this automatically, but an explicit c++rt0.o
# does not break anything, and helps significantly (at the cost of a little
;;
# Unfortunately, older versions of FreeBSD 2 do not have this feature.
- freebsd2*)
+ freebsd2.*)
archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
hardcode_direct=yes
hardcode_minus_L=yes
# FreeBSD 3 and greater uses gcc -shared to do shared libraries.
freebsd* | dragonfly*)
- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
hardcode_libdir_flag_spec='-R$libdir'
hardcode_direct=yes
hardcode_shlibpath_var=no
hpux9*)
if test "$GCC" = yes; then
- archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ 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'
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'
fi
hpux10*)
if test "$GCC" = yes && test "$with_gnu_ld" = no; then
- archive_cmds='$CC -shared -fPIC ${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'
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'
- hardcode_libdir_flag_spec_ld='+b $libdir'
hardcode_libdir_separator=:
hardcode_direct=yes
hardcode_direct_absolute=yes
archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
;;
ia64*)
- archive_cmds='$CC -shared -fPIC ${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 -fPIC ${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
# (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
$as_echo_n "checking if $CC understands -b... " >&6; }
-if test "${lt_cv_prog_compiler__b+set}" = set; then :
+if ${lt_cv_prog_compiler__b+:} false; then :
$as_echo_n "(cached) " >&6
else
lt_cv_prog_compiler__b=no
irix5* | irix6* | nonstopux*)
if test "$GCC" = yes; then
- archive_cmds='$CC -shared $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'
+ 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.
- save_LDFLAGS="$LDFLAGS"
- LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ # This should be the same for all languages, so no per-tag cache variable.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
+$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
+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"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-int foo(void) {}
+int foo (void) { return 0; }
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
- archive_expsym_cmds='$CC -shared $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'
-
+ lt_cv_irix_exported_symbol=yes
+else
+ lt_cv_irix_exported_symbol=no
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'
+ fi
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'
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} $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'
+ 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 \*'
no_undefined_flag=' -z defs'
if test "$GCC" = yes; then
wlarc='${wl}'
- archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ 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 ${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"*)
# to ld, don't add -lc before -lgcc.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
-if test "${lt_cv_archive_cmds_need_lc+set}" = set; then :
+if ${lt_cv_archive_cmds_need_lc+:} false; then :
$as_echo_n "(cached) " >&6
else
$RM conftest*
-
-
-
-
-
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
$as_echo_n "checking dynamic linker characteristics... " >&6; }
case $host_os in
aix3*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
shlibpath_var=LIBPATH
;;
aix[4-9]*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
hardcode_into_libs=yes
;;
bsdi[45]*)
- version_type=linux
+ 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'
need_version=no
need_lib_prefix=no
- case $GCC,$host_os in
- yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
+ case $GCC,$cc_basename in
+ yes,*)
+ # gcc
library_names_spec='$libname.dll.a'
# DLL is installed to $(libdir)/../bin by postinstall_cmds
postinstall_cmds='base_file=`basename \${file}`~
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'
+ ;;
+
+ *,cl*)
+ # Native MSVC
+ libname_spec='$name'
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ library_names_spec='${libname}.dll.lib'
+
+ case $build_os in
+ mingw*)
+ sys_lib_search_path_spec=
+ lt_save_ifs=$IFS
+ IFS=';'
+ for lt_path in $LIB
+ do
+ IFS=$lt_save_ifs
+ # Let DOS variable expansion print the short 8.3 style file name.
+ lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
+ sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
+ done
+ IFS=$lt_save_ifs
+ # Convert to MSYS style.
+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
+ ;;
+ cygwin*)
+ # Convert to unix form, then to dos form, then back to unix form
+ # but this time dos style (no spaces!) so that the unix form looks
+ # like /cygdrive/c/PROGRA~1:/cygdr...
+ sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
+ sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
+ 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"
+ 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'`
+ else
+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ # FIXME: find the short name or the path components, as spaces are
+ # common. (e.g. "Program Files" -> "PROGRA~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'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $RM \$dlpath'
+ shlibpath_overrides_runpath=yes
+ dynamic_linker='Win32 link.exe'
;;
*)
+ # Assume MSVC wrapper
library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ dynamic_linker='Win32 ld.exe'
;;
esac
- dynamic_linker='Win32 ld.exe'
# FIXME: first we should search . and the directory the executable is in
shlibpath_var=PATH
;;
;;
dgux*)
- version_type=linux
+ 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'
shlibpath_var=LD_LIBRARY_PATH
;;
-freebsd1*)
- dynamic_linker=no
- ;;
-
freebsd* | dragonfly*)
# DragonFly does not have aout. When/if they implement a new
# versioning mechanism, adjust this.
objformat=`/usr/bin/objformat`
else
case $host_os in
- freebsd[123]*) objformat=aout ;;
+ freebsd[23].*) objformat=aout ;;
*) objformat=elf ;;
esac
fi
esac
shlibpath_var=LD_LIBRARY_PATH
case $host_os in
- freebsd2*)
+ freebsd2.*)
shlibpath_overrides_runpath=yes
;;
freebsd3.[01]* | freebsdelf3.[01]*)
;;
gnu*)
- version_type=linux
+ 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'
shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
hardcode_into_libs=yes
;;
haiku*)
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
dynamic_linker="$host_os runtime_loader"
;;
interix[3-9]*)
- version_type=linux
+ 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}'
nonstopux*) version_type=nonstopux ;;
*)
if test "$lt_cv_prog_gnu_ld" = yes; then
- version_type=linux
+ version_type=linux # correct to gnu/linux during the next big refactor
else
version_type=irix
fi ;;
dynamic_linker=no
;;
-# This must be Linux ELF.
+# This must be glibc/ELF.
linux* | k*bsd*-gnu | kopensolaris*-gnu)
- version_type=linux
+ 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}'
shlibpath_overrides_runpath=no
# Some binutils ld are patched to set DT_RUNPATH
- if test "${lt_cv_shlibpath_overrides_runpath+set}" = set; then :
+ if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
$as_echo_n "(cached) " >&6
else
lt_cv_shlibpath_overrides_runpath=no
;;
newsos6)
- version_type=linux
+ 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}'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=yes
;;
solaris*)
- version_type=linux
+ 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}'
;;
sysv4 | sysv4.3*)
- version_type=linux
+ 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'
shlibpath_var=LD_LIBRARY_PATH
sysv4*MP*)
if test -d /usr/nec ;then
- version_type=linux
+ 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'
shlibpath_var=LD_LIBRARY_PATH
tpf*)
# TPF is a cross-target only. Preferred cross-host = GNU/Linux.
- version_type=linux
+ 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}'
;;
uts4*)
- version_type=linux
+ 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'
shlibpath_var=LD_LIBRARY_PATH
# 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 test "${ac_cv_lib_dl_dlopen+set}" = set; then :
+if ${ac_cv_lib_dl_dlopen+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
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" = x""yes; then :
+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
else
*)
ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
-if test "x$ac_cv_func_shl_load" = x""yes; then :
+if test "x$ac_cv_func_shl_load" = xyes; then :
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; }
-if test "${ac_cv_lib_dld_shl_load+set}" = set; then :
+if ${ac_cv_lib_dld_shl_load+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
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" = x""yes; then :
+if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
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" = x""yes; then :
+if test "x$ac_cv_func_dlopen" = xyes; then :
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; }
-if test "${ac_cv_lib_dl_dlopen+set}" = set; then :
+if ${ac_cv_lib_dl_dlopen+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
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" = x""yes; then :
+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
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; }
-if test "${ac_cv_lib_svld_dlopen+set}" = set; then :
+if ${ac_cv_lib_svld_dlopen+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
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" = x""yes; then :
+if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
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; }
-if test "${ac_cv_lib_dld_dld_link+set}" = set; then :
+if ${ac_cv_lib_dld_dld_link+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
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" = x""yes; then :
+if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
$as_echo_n "checking whether a program can dlopen itself... " >&6; }
-if test "${lt_cv_dlopen_self+set}" = set; then :
+if ${lt_cv_dlopen_self+:} false; then :
$as_echo_n "(cached) " >&6
else
if test "$cross_compiling" = yes; then :
/* When -fvisbility=hidden is used, assume the code has been annotated
correspondingly for the symbols needed. */
#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
-void fnord () __attribute__((visibility("default")));
+int fnord () __attribute__((visibility("default")));
#endif
-void fnord () { int i=42; }
+int fnord () { return 42; }
int main ()
{
void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
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 test "${lt_cv_dlopen_self_static+set}" = set; then :
+if ${lt_cv_dlopen_self_static+:} false; then :
$as_echo_n "(cached) " >&6
else
if test "$cross_compiling" = yes; then :
/* When -fvisbility=hidden is used, assume the code has been annotated
correspondingly for the symbols needed. */
#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
-void fnord () __attribute__((visibility("default")));
+int fnord () __attribute__((visibility("default")));
#endif
-void fnord () { int i=42; }
+int fnord () { return 42; }
int main ()
{
void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+
+
ac_config_commands="$ac_config_commands libtool"
# This bug is HP SR number 8606223364.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of time_t" >&5
$as_echo_n "checking size of time_t... " >&6; }
-if test "${ac_cv_sizeof_time_t+set}" = set; then :
+if ${ac_cv_sizeof_time_t+:} false; then :
$as_echo_n "(cached) " >&6
else
if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (time_t))" "ac_cv_sizeof_time_t" "$ac_includes_default
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print time_t" >&5
$as_echo_n "checking how to print time_t... " >&6; }
-if test "${ne_cv_fmt_time_t+set}" = set; then :
+if ${ne_cv_fmt_time_t+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default"
-if test "x$ac_cv_type_pid_t" = x""yes; then :
+if test "x$ac_cv_type_pid_t" = xyes; then :
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5
$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; }
-if test "${ac_cv_header_time+set}" = set; then :
+if ${ac_cv_header_time+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
set dummy ${ac_tool_prefix}ar; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_AR+set}" = set; then :
+if ${ac_cv_path_AR+:} false; then :
$as_echo_n "(cached) " >&6
else
case $AR in
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_AR="$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
set dummy ar; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_ac_pt_AR+set}" = set; then :
+if ${ac_cv_path_ac_pt_AR+:} false; then :
$as_echo_n "(cached) " >&6
else
case $ac_pt_AR in
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_ac_pt_AR="$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
set dummy ${ac_tool_prefix}ranlib; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_RANLIB+set}" = set; then :
+if ${ac_cv_path_RANLIB+:} false; then :
$as_echo_n "(cached) " >&6
else
case $RANLIB in
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_RANLIB="$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
set dummy ranlib; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_ac_pt_RANLIB+set}" = set; then :
+if ${ac_cv_path_ac_pt_RANLIB+:} false; then :
$as_echo_n "(cached) " >&6
else
case $ac_pt_RANLIB in
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_ac_pt_RANLIB="$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
-for ac_header in sys/time.h stdint.h locale.h signal.h
+for ac_header in sys/time.h stdint.h locale.h
do :
as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
case $with_expat in
yes)
ac_fn_c_check_header_mongrel "$LINENO" "expat.h" "ac_cv_header_expat_h" "$ac_includes_default"
-if test "x$ac_cv_header_expat_h" = x""yes; then :
+if test "x$ac_cv_header_expat_h" = xyes; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for XML_SetXmlDeclHandler in -lexpat" >&5
$as_echo_n "checking for XML_SetXmlDeclHandler in -lexpat... " >&6; }
-if test "${ac_cv_lib_expat_XML_SetXmlDeclHandler+set}" = set; then :
+if ${ac_cv_lib_expat_XML_SetXmlDeclHandler+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_expat_XML_SetXmlDeclHandler" >&5
$as_echo "$ac_cv_lib_expat_XML_SetXmlDeclHandler" >&6; }
-if test "x$ac_cv_lib_expat_XML_SetXmlDeclHandler" = x""yes; then :
+if test "x$ac_cv_lib_expat_XML_SetXmlDeclHandler" = xyes; then :
$as_echo "#define HAVE_EXPAT 1" >>confdefs.h
neon_xml_parser=expat
ac_fn_c_check_type "$LINENO" "XML_Size" "ac_cv_type_XML_Size" "#include <expat.h>
"
-if test "x$ac_cv_type_XML_Size" = x""yes; then :
+if test "x$ac_cv_type_XML_Size" = xyes; then :
# This bug is HP SR number 8606223364.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of XML_Size" >&5
$as_echo_n "checking size of XML_Size... " >&6; }
-if test "${ac_cv_sizeof_XML_Size+set}" = set; then :
+if ${ac_cv_sizeof_XML_Size+:} false; then :
$as_echo_n "(cached) " >&6
else
if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (XML_Size))" "ac_cv_sizeof_XML_Size" "$ac_includes_default
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print XML_Size" >&5
$as_echo_n "checking how to print XML_Size... " >&6; }
-if test "${ne_cv_fmt_XML_Size+set}" = set; then :
+if ${ne_cv_fmt_XML_Size+:} false; then :
$as_echo_n "(cached) " >&6
else
set dummy xml2-config; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_XML2_CONFIG+set}" = set; then :
+if ${ac_cv_prog_XML2_CONFIG+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$XML2_CONFIG"; then
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_XML2_CONFIG="xml2-config"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
if test "${neon_xml_parser}-${with_included_expat}" = "none-no"; then
ac_fn_c_check_header_mongrel "$LINENO" "expat.h" "ac_cv_header_expat_h" "$ac_includes_default"
-if test "x$ac_cv_header_expat_h" = x""yes; then :
+if test "x$ac_cv_header_expat_h" = xyes; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for XML_SetXmlDeclHandler in -lexpat" >&5
$as_echo_n "checking for XML_SetXmlDeclHandler in -lexpat... " >&6; }
-if test "${ac_cv_lib_expat_XML_SetXmlDeclHandler+set}" = set; then :
+if ${ac_cv_lib_expat_XML_SetXmlDeclHandler+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_expat_XML_SetXmlDeclHandler" >&5
$as_echo "$ac_cv_lib_expat_XML_SetXmlDeclHandler" >&6; }
-if test "x$ac_cv_lib_expat_XML_SetXmlDeclHandler" = x""yes; then :
+if test "x$ac_cv_lib_expat_XML_SetXmlDeclHandler" = xyes; then :
$as_echo "#define HAVE_EXPAT 1" >>confdefs.h
neon_xml_parser=expat
ac_fn_c_check_type "$LINENO" "XML_Size" "ac_cv_type_XML_Size" "#include <expat.h>
"
-if test "x$ac_cv_type_XML_Size" = x""yes; then :
+if test "x$ac_cv_type_XML_Size" = xyes; then :
# This bug is HP SR number 8606223364.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of XML_Size" >&5
$as_echo_n "checking size of XML_Size... " >&6; }
-if test "${ac_cv_sizeof_XML_Size+set}" = set; then :
+if ${ac_cv_sizeof_XML_Size+:} false; then :
$as_echo_n "(cached) " >&6
else
if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (XML_Size))" "ac_cv_sizeof_XML_Size" "$ac_includes_default
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print XML_Size" >&5
$as_echo_n "checking how to print XML_Size... " >&6; }
-if test "${ne_cv_fmt_XML_Size+set}" = set; then :
+if ${ne_cv_fmt_XML_Size+:} false; then :
$as_echo_n "(cached) " >&6
else
set dummy xml2-config; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_XML2_CONFIG+set}" = set; then :
+if ${ac_cv_prog_XML2_CONFIG+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$XML2_CONFIG"; then
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_XML2_CONFIG="xml2-config"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
set dummy xml2-config; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_XML2_CONFIG+set}" = set; then :
+if ${ac_cv_prog_XML2_CONFIG+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$XML2_CONFIG"; then
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_XML2_CONFIG="xml2-config"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing bindtextdomain" >&5
$as_echo_n "checking for library containing bindtextdomain... " >&6; }
-if test "${ne_cv_libsfor_bindtextdomain+set}" = set; then :
+if ${ne_cv_libsfor_bindtextdomain+:} false; then :
$as_echo_n "(cached) " >&6
else
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
+ LIBS="$ne_sl_save_LIBS -l$lib -liconv $NEON_LIBS"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+int
+main ()
+{
+$ne__code
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ne_cv_libsfor_bindtextdomain="-l$lib -liconv "; break
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
done
LIBS=$ne_sl_save_LIBS
fi
for ac_func in bind_textdomain_codeset
do :
ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset"
-if test "x$ac_cv_func_bind_textdomain_codeset" = x""yes; then :
+if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_BIND_TEXTDOMAIN_CODESET 1
_ACEOF
set dummy openssl; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_OPENSSL+set}" = set; then :
+if ${ac_cv_path_OPENSSL+:} false; then :
$as_echo_n "(cached) " >&6
else
case $OPENSSL in
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_OPENSSL="$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
set dummy certutil; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_CERTUTIL+set}" = set; then :
+if ${ac_cv_path_CERTUTIL+:} false; then :
$as_echo_n "(cached) " >&6
else
case $CERTUTIL in
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_CERTUTIL="$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
set dummy pk12util; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_PK12UTIL+set}" = set; then :
+if ${ac_cv_path_PK12UTIL+:} false; then :
$as_echo_n "(cached) " >&6
else
case $PK12UTIL in
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_PK12UTIL="$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
set dummy pkg-config; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
+if ${ac_cv_path_PKG_CONFIG+:} false; then :
$as_echo_n "(cached) " >&6
else
case $PKG_CONFIG in
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
# Pass the interface version on to libtool when linking libneon.la
NEON_LINK_FLAGS="-version-info ${NE_LIBTOOL_VERSINFO}"
# If any non-default ABI variations are used, add them to the SONAME:
-if test "x${NE_LIBTOOL_RELEASE}y" != "xy"; then
- NEON_LINK_FLAGS="${NEON_LINK_FLAGS} -release ${NE_LIBTOOL_RELEASE}"
-fi
+### disabled for backwards-compat with 0.27.x
+#if test "x${NE_LIBTOOL_RELEASE}y" != "xy"; then
+# NEON_LINK_FLAGS="${NEON_LINK_FLAGS} -release ${NE_LIBTOOL_RELEASE}"
+#fi
# Check whether --enable-ld-version-script was given.
save_LDFLAGS="$LDFLAGS"
LDFLAGS="$LDFLAGS -Wl,--version-script=conftest.map"
cat > conftest.map <<EOF
+foo
+EOF
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ accepts_syntax_errors=yes
+else
+ accepts_syntax_errors=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ if test "$accepts_syntax_errors" = no; then
+ cat > conftest.map <<EOF
VERS_1 {
- global: sym;
+ global: sym;
};
VERS_2 {
global: sym;
} VERS_1;
EOF
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
+ else
+ have_ld_version_script=no
+ fi
rm -f conftest.map
LDFLAGS="$save_LDFLAGS"
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_ld_version_script" >&5
$as_echo "$have_ld_version_script" >&6; }
fi
+ if test "$have_ld_version_script" = "yes"; then
+ HAVE_LD_VERSION_SCRIPT_TRUE=
+ HAVE_LD_VERSION_SCRIPT_FALSE='#'
+else
+ HAVE_LD_VERSION_SCRIPT_TRUE='#'
+ HAVE_LD_VERSION_SCRIPT_FALSE=
+fi
+
# If ld version scripts are supported, enable symbol versioning.
# Otherwise, fall back to any libtool-supported symbol export
:end' >>confcache
if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
if test -w "$cache_file"; then
- test "x$cache_file" != "x/dev/null" &&
+ if test "x$cache_file" != "x/dev/null"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
$as_echo "$as_me: updating cache $cache_file" >&6;}
- cat confcache >$cache_file
+ if test ! -f "$cache_file" || test -h "$cache_file"; then
+ cat confcache >"$cache_file"
+ else
+ case $cache_file in #(
+ */* | ?:*)
+ mv -f confcache "$cache_file"$$ &&
+ mv -f "$cache_file"$$ "$cache_file" ;; #(
+ *)
+ mv -f confcache "$cache_file" ;;
+ esac
+ fi
+ fi
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+if test -z "${HAVE_LD_VERSION_SCRIPT_TRUE}" && test -z "${HAVE_LD_VERSION_SCRIPT_FALSE}"; then
+ as_fn_error $? "conditional \"HAVE_LD_VERSION_SCRIPT\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
-: ${CONFIG_STATUS=./config.status}
+: "${CONFIG_STATUS=./config.status}"
ac_write_fail=0
ac_clean_files_save=$ac_clean_files
ac_clean_files="$ac_clean_files $CONFIG_STATUS"
IFS=" "" $as_nl"
# Find who we are. Look in the path if we contain no directory separator.
+as_myself=
case $0 in #((
*[\\/]* ) as_myself=$0 ;;
*) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
# ... but there are two gotchas:
# 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
# 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -p'.
+ # In both cases, we have to default to `cp -pR'.
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
elif ln conf$$.file conf$$ 2>/dev/null; then
as_ln_s=ln
else
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
fi
else
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null
as_mkdir_p=false
fi
-if test -x / >/dev/null 2>&1; then
- as_test_x='test -x'
-else
- if ls -dL / >/dev/null 2>&1; then
- as_ls_L_option=L
- else
- as_ls_L_option=
- fi
- as_test_x='
- eval sh -c '\''
- if test -d "$1"; then
- test -d "$1/.";
- else
- case $1 in #(
- -*)set "./$1";;
- esac;
- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
- ???[sx]*):;;*)false;;esac;fi
- '\'' sh
- '
-fi
-as_executable_p=$as_test_x
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
# Sed expression to map a string onto a valid CPP name.
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by neon $as_me 0.29.6, which was
-generated by GNU Autoconf 2.66. Invocation command line was
+This file was extended by neon $as_me 0.30.0, which was
+generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-neon config.status 0.29.6
-configured by $0, generated by GNU Autoconf 2.66,
+neon config.status 0.30.0
+configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2012 Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it."
while test $# != 0
do
case $1 in
- --*=*)
+ --*=?*)
ac_option=`expr "X$1" : 'X\([^=]*\)='`
ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
ac_shift=:
;;
+ --*=)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=
+ ac_shift=:
+ ;;
*)
ac_option=$1
ac_optarg=$2
$ac_shift
case $ac_optarg in
*\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ '') as_fn_error $? "missing file argument" ;;
esac
as_fn_append CONFIG_FILES " '$ac_optarg'"
ac_need_defaults=false;;
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
if \$ac_cs_recheck; then
- set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
shift
\$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
CONFIG_SHELL='$SHELL'
enable_fast_install='`$ECHO "$enable_fast_install" | $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"`'
host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
+lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
+lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
+file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
+want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
+DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
+sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
+archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $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_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"`'
+nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
+lt_sysroot='`$ECHO "$lt_sysroot" | $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"`'
-lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
+MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`'
hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
-fix_srcfile_path='`$ECHO "$fix_srcfile_path" | $SED "$delay_single_quote_subst"`'
always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
+postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
# Quote evaled strings.
for var in SHELL \
ECHO \
+PATH_SEPARATOR \
SED \
GREP \
EGREP \
OBJDUMP \
deplibs_check_method \
file_magic_cmd \
+file_magic_glob \
+want_nocaseglob \
+DLLTOOL \
+sharedlib_from_linklib_cmd \
AR \
AR_FLAGS \
+archiver_list_spec \
STRIP \
RANLIB \
CC \
lt_cv_sys_global_symbol_to_cdecl \
lt_cv_sys_global_symbol_to_c_name_address \
lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
+nm_file_list_spec \
lt_prog_compiler_no_builtin_flag \
-lt_prog_compiler_wl \
lt_prog_compiler_pic \
+lt_prog_compiler_wl \
lt_prog_compiler_static \
lt_cv_prog_compiler_c_o \
need_locks \
+MANIFEST_TOOL \
DSYMUTIL \
NMEDIT \
LIPO \
allow_undefined_flag \
no_undefined_flag \
hardcode_libdir_flag_spec \
-hardcode_libdir_flag_spec_ld \
hardcode_libdir_separator \
-fix_srcfile_path \
exclude_expsyms \
include_expsyms \
file_list_spec \
module_expsym_cmds \
export_symbols_cmds \
prelink_cmds \
+postlink_cmds \
postinstall_cmds \
postuninstall_cmds \
finish_cmds \
# after its creation but before its name has been assigned to `$tmp'.
$debug ||
{
- tmp=
+ tmp= ac_tmp=
trap 'exit_status=$?
- { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
+ : "${ac_tmp:=$tmp}"
+ { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
' 0
trap 'as_fn_exit 1' 1 2 13 15
}
{
tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
- test -n "$tmp" && test -d "$tmp"
+ test -d "$tmp"
} ||
{
tmp=./conf$$-$RANDOM
(umask 077 && mkdir "$tmp")
} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
# Set up the scripts for CONFIG_FILES section.
# No need to generate them if there are no CONFIG_FILES.
ac_cs_awk_cr=$ac_cr
fi
-echo 'BEGIN {' >"$tmp/subs1.awk" &&
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
_ACEOF
rm -f conf$$subs.sh
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
_ACEOF
sed -n '
h
rm -f conf$$subs.awk
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
_ACAWK
-cat >>"\$tmp/subs1.awk" <<_ACAWK &&
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
for (key in S) S_is_set[key] = 1
FS = "\a"
sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
else
cat
-fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
|| as_fn_error $? "could not setup config files machinery" "$LINENO" 5
_ACEOF
# No need to generate them if there are no CONFIG_HEADERS.
# This happens for instance with `./config.status Makefile'.
if test -n "$CONFIG_HEADERS"; then
-cat >"$tmp/defines.awk" <<\_ACAWK ||
+cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
BEGIN {
_ACEOF
# handling of long lines.
ac_delim='%!_!# '
for ac_last_try in false false :; do
- ac_t=`sed -n "/$ac_delim/p" confdefs.h`
- if test -z "$ac_t"; then
+ ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
+ if test -z "$ac_tt"; then
break
elif $ac_last_try; then
as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
for ac_f
do
case $ac_f in
- -) ac_f="$tmp/stdin";;
+ -) ac_f="$ac_tmp/stdin";;
*) # Look for the file first in the build tree, then in the source tree
# (if the path is not absolute). The absolute path cannot be DOS-style,
# because $ac_f cannot contain `:'.
esac
case $ac_tag in
- *:-:* | *:-) cat >"$tmp/stdin" \
+ *:-:* | *:-) cat >"$ac_tmp/stdin" \
|| as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
esac
;;
s&@INSTALL@&$ac_INSTALL&;t t
$ac_datarootdir_hack
"
-eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
- || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
- { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
- { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
+ { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \
+ "$ac_tmp/out"`; test -z "$ac_out"; } &&
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
which seems to be undefined. Please make sure it is defined" >&5
$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
which seems to be undefined. Please make sure it is defined" >&2;}
- rm -f "$tmp/stdin"
+ rm -f "$ac_tmp/stdin"
case $ac_file in
- -) cat "$tmp/out" && rm -f "$tmp/out";;
- *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
+ -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+ *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
esac \
|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
;;
if test x"$ac_file" != x-; then
{
$as_echo "/* $configure_input */" \
- && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs"
- } >"$tmp/config.h" \
+ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
+ } >"$ac_tmp/config.h" \
|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
- if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then
+ if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
$as_echo "$as_me: $ac_file is unchanged" >&6;}
else
rm -f "$ac_file"
- mv "$tmp/config.h" "$ac_file" \
+ mv "$ac_tmp/config.h" "$ac_file" \
|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
fi
else
$as_echo "/* $configure_input */" \
- && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \
+ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
|| as_fn_error $? "could not create -" "$LINENO" 5
fi
;;
# NOTE: Changes made to this file will be lost: look at ltmain.sh.
#
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
-# Inc.
+# 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
# Written by Gordon Matzigkeit, 1996
#
# This file is part of GNU Libtool.
# An echo program that protects backslashes.
ECHO=$lt_ECHO
+# The PATH separator for the build system.
+PATH_SEPARATOR=$lt_PATH_SEPARATOR
+
# The host system.
host_alias=$host_alias
host=$host
# turn newlines into spaces.
NL2SP=$lt_lt_NL2SP
+# convert \$build file names to \$host format.
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+
+# convert \$build files to toolchain format.
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+
# An object symbol dumper.
OBJDUMP=$lt_OBJDUMP
# Method to check whether dependent libraries are shared objects.
deplibs_check_method=$lt_deplibs_check_method
-# Command to use when deplibs_check_method == "file_magic".
+# Command to use when deplibs_check_method = "file_magic".
file_magic_cmd=$lt_file_magic_cmd
+# How to find potential files when deplibs_check_method = "file_magic".
+file_magic_glob=$lt_file_magic_glob
+
+# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
+want_nocaseglob=$lt_want_nocaseglob
+
+# DLL creation program.
+DLLTOOL=$lt_DLLTOOL
+
+# Command to associate shared and link libraries.
+sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
+
# The archiver.
AR=$lt_AR
+
+# Flags to create an archive.
AR_FLAGS=$lt_AR_FLAGS
+# How to feed a file listing to the archiver.
+archiver_list_spec=$lt_archiver_list_spec
+
# A symbol stripping program.
STRIP=$lt_STRIP
# 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
+# 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.
+lt_sysroot=$lt_sysroot
+
# The name of the directory that contains temporary libtool files.
objdir=$objdir
# Must we lock files when doing compilation?
need_locks=$lt_need_locks
+# Manifest tool.
+MANIFEST_TOOL=$lt_MANIFEST_TOOL
+
# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
DSYMUTIL=$lt_DSYMUTIL
# Compiler flag to turn off builtin functions.
no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl
-
# Additional compiler flags for building library objects.
pic_flag=$lt_lt_prog_compiler_pic
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl
+
# Compiler flag to prevent dynamic linking.
link_static_flag=$lt_lt_prog_compiler_static
# This must work even if \$libdir does not exist
hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
-# If ld is used when linking, flag to hardcode \$libdir into a binary
-# during linking. This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
-
# Whether we need a single "-rpath" flag with a separated argument.
hardcode_libdir_separator=$lt_hardcode_libdir_separator
# Whether libtool must link a program against all its dependency libraries.
link_all_deplibs=$link_all_deplibs
-# Fix the shell variable \$srcfile for the compiler.
-fix_srcfile_path=$lt_fix_srcfile_path
-
# Set to "yes" if exported symbols are required.
always_export_symbols=$always_export_symbols
# Commands necessary for linking programs (against libraries) with templates.
prelink_cmds=$lt_prelink_cmds
+# Commands necessary for finishing linking programs.
+postlink_cmds=$lt_postlink_cmds
+
# Specify filename containing input files.
file_list_spec=$lt_file_list_spec
# if finds mixed CR/LF and LF-only lines. Since sed operates in
# text mode, it properly converts lines to CR/LF. This bash problem
# is reportedly fixed, but why not run on old versions too?
- sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
- || (rm -f "$cfgfile"; exit 1)
-
- case $xsi_shell in
- yes)
- cat << \_LT_EOF >> "$cfgfile"
-
-# 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 ()
-{
- case ${1} in
- */*) func_dirname_result="${1%/*}${2}" ;;
- * ) func_dirname_result="${3}" ;;
- esac
-}
-
-# func_basename file
-func_basename ()
-{
- func_basename_result="${1##*/}"
-}
-
-# 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 ()
-{
- case ${1} in
- */*) func_dirname_result="${1%/*}${2}" ;;
- * ) func_dirname_result="${3}" ;;
- esac
- func_basename_result="${1##*/}"
-}
-
-# 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_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}"}
-}
-
-# func_opt_split
-func_opt_split ()
-{
- func_opt_split_opt=${1%%=*}
- func_opt_split_arg=${1#*=}
-}
-
-# func_lo2o object
-func_lo2o ()
-{
- case ${1} in
- *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
- *) func_lo2o_result=${1} ;;
- esac
-}
-
-# func_xform libobj-or-source
-func_xform ()
-{
- func_xform_result=${1%.*}.lo
-}
-
-# func_arith arithmetic-term...
-func_arith ()
-{
- func_arith_result=$(( $* ))
-}
-
-# func_len string
-# STRING may not start with a hyphen.
-func_len ()
-{
- func_len_result=${#1}
-}
-
-_LT_EOF
- ;;
- *) # Bourne compatible functions.
- cat << \_LT_EOF >> "$cfgfile"
-
-# 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 ()
-{
- # Extract subdirectory from the argument.
- 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_basename file
-func_basename ()
-{
- func_basename_result=`$ECHO "${1}" | $SED "$basename"`
-}
-
-
-# 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
-}
-
-# sed scripts:
-my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q'
-my_sed_long_arg='1s/^-[^=]*=//'
-
-# func_opt_split
-func_opt_split ()
-{
- func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"`
- func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"`
-}
-
-# func_lo2o object
-func_lo2o ()
-{
- func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
-}
-
-# func_xform libobj-or-source
-func_xform ()
-{
- func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
-}
-
-# func_arith arithmetic-term...
-func_arith ()
-{
- func_arith_result=`expr "$@"`
-}
-
-# func_len string
-# STRING may not start with a hyphen.
-func_len ()
-{
- func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
-}
-
-_LT_EOF
-esac
-
-case $lt_shell_append in
- yes)
- cat << \_LT_EOF >> "$cfgfile"
-
-# func_append var value
-# Append VALUE to the end of shell variable VAR.
-func_append ()
-{
- eval "$1+=\$2"
-}
-_LT_EOF
- ;;
- *)
- cat << \_LT_EOF >> "$cfgfile"
-
-# func_append var value
-# Append VALUE to the end of shell variable VAR.
-func_append ()
-{
- eval "$1=\$$1\$2"
-}
-
-_LT_EOF
- ;;
- esac
-
-
- sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
- || (rm -f "$cfgfile"; exit 1)
-
- mv -f "$cfgfile" "$ofile" ||
+ 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"
# for VPATH builds:
test -d test/common || mkdir test/common
-{ $as_echo "$as_me:${as_lineno-$LINENO}: Configured to build neon 0.29.6:
+{ $as_echo "$as_me:${as_lineno-$LINENO}: Configured to build neon 0.30.0:
Install prefix: ${prefix}
Compiler: ${CC}
zlib support: ${ne_ZLIB_message}
Build libraries: Shared=${enable_shared}, Static=${enable_static}
" >&5
-$as_echo "$as_me: Configured to build neon 0.29.6:
+$as_echo "$as_me: Configured to build neon 0.30.0:
Install prefix: ${prefix}
Compiler: ${CC}
# Pass the interface version on to libtool when linking libneon.la
NEON_LINK_FLAGS="-version-info ${NE_LIBTOOL_VERSINFO}"
# If any non-default ABI variations are used, add them to the SONAME:
-if test "x${NE_LIBTOOL_RELEASE}y" != "xy"; then
- NEON_LINK_FLAGS="${NEON_LINK_FLAGS} -release ${NE_LIBTOOL_RELEASE}"
-fi
+### disabled for backwards-compat with 0.27.x
+#if test "x${NE_LIBTOOL_RELEASE}y" != "xy"; then
+# NEON_LINK_FLAGS="${NEON_LINK_FLAGS} -release ${NE_LIBTOOL_RELEASE}"
+#fi
gl_LD_VERSION_SCRIPT
# If ld version scripts are supported, enable symbol versioning.
- 3 May 2011
\ No newline at end of file
+31 July 2013
\ No newline at end of file
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Chapter 2. The neon C language interface</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="index.html" title="neon HTTP/WebDAV client library"><link rel="prev" href="security.html" title="HTTP Client Security"><link rel="next" href="xml.html" title="Parsing XML"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 2. The neon C language interface</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="security.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="xml.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter 2. The neon C language interface"><div class="titlepage"><div><div><h2 class="title"><a name="api"></a>Chapter 2. The neon C language interface</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="xml.html">Parsing XML</a></span></dt><dd><dl><dt><span class="sect2"><a href="xml.html#xml-sax">Introduction to SAX</a></span></dt><dt><span class="sect2"><a href="xml.html#xml-stacked">Stacked SAX handlers</a></span></dt><dt><span class="sect2"><a href="xml.html#xml-state">Maintaining state</a></span></dt><dt><span class="sect2"><a href="xml.html#xml-ns">XML namespaces</a></span></dt></dl></dd></dl></div><p>The documentation for the neon interface is split between
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Chapter 2. The neon C language interface</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="index.html" title="neon HTTP/WebDAV client library"><link rel="prev" href="security.html" title="HTTP Client Security"><link rel="next" href="xml.html" title="Parsing XML"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 2. The neon C language interface</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="security.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="xml.html">Next</a></td></tr></table><hr></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="api"></a>Chapter 2. The neon C language interface</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="sect1"><a href="xml.html">Parsing XML</a></span></dt><dd><dl><dt><span class="sect2"><a href="xml.html#xml-sax">Introduction to SAX</a></span></dt><dt><span class="sect2"><a href="xml.html#xml-stacked">Stacked SAX handlers</a></span></dt><dt><span class="sect2"><a href="xml.html#xml-state">Maintaining state</a></span></dt><dt><span class="sect2"><a href="xml.html#xml-ns">XML namespaces</a></span></dt></dl></dd></dl></div><p>The documentation for the neon interface is split between
this chapter, which gives a broad introduction to the abstractions
exposed by the library, and <a class="xref" href="ref.html" title="neon API reference">neon API reference</a>, which gives a
function-by-function breakdown of the interface.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="security.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="xml.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">HTTP Client Security </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Parsing XML</td></tr></table></div></body></html>
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Bibliography</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="index.html" title="neon HTTP/WebDAV client library"><link rel="prev" href="refxml.html" title="ne_xml_create"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Bibliography</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refxml.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> </td></tr></table><hr></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h2 class="title"><a name="biblio"></a>Bibliography</h2></div></div></div><div class="biblioentry" title="SSL and TLS: Designing and Building Secure Systems"><a name="bib.ssltls"></a><p>[<abbr class="abbrev">SSL-and-TLS</abbr>] <span class="title"><i><a class="ulink" href="http://www.rtfm.com/sslbook/" target="_top">SSL and
- TLS: Designing and Building Secure Systems</a></i>. </span><span class="author"><span class="firstname">Eric</span> <span class="surname">Rescorla</span>. </span><span class="isbn">0-201-62598-3. </span><span class="publisher"><span class="publishername">Addison-Wesley. </span></span><span class="pubdate">March 2001. </span></p></div><div class="biblioentry" title="Namespaces in XML"><a name="bib.xmlnames"></a><p>[<abbr class="abbrev">REC-XML-names</abbr>] <span class="corpauthor">World Wide Web Consortium. </span><span class="title"><i><a class="ulink" href="http://www.w3.org/TR/REC-xml-names" target="_top">Namespaces in XML</a></i>. </span><span class="pubdate">January 1999. </span></p></div><div class="biblioentry" title="Hypertext Transfer Protocol—HTTP/1.1"><a name="bib.rfc2616"></a><p>[<abbr class="abbrev">RFC2616</abbr>] <span class="title"><i><a class="ulink" href="http://www.ietf.org/rfc/rfc2616.txt" target="_top">Hypertext Transfer
- Protocol—HTTP/1.1</a></i>. </span><span class="authorgroup"><span class="firstname">Roy</span> <span class="surname">Fielding</span>, <span class="firstname">Jim</span> <span class="surname">Gettys</span>, <span class="firstname">Jeff</span> <span class="surname">Mogul</span>, <span class="firstname">Henrik</span> <span class="surname">Frystyk</span>, <span class="firstname">Larry</span> <span class="surname">Masinter</span>, <span class="firstname">Paul</span> <span class="surname">Leach</span>, and <span class="firstname">Tim</span> <span class="surname">Berners-Lee</span>. </span><span class="publishername">IETF. </span><span class="pubdate">June 1999. </span></p></div><div class="biblioentry" title="HTTP Extensions for Distributed Authoring—WEBDAV"><a name="bib.rfc2518"></a><p>[<abbr class="abbrev">RFC2518</abbr>] <span class="title"><i><a class="ulink" href="http://www.ietf.org/rfc/rfc2518.txt" target="_top">HTTP Extensions for Distributed Authoring—WEBDAV</a></i>. </span><span class="authorgroup"><span class="firstname">Yaron</span> <span class="surname">Goland</span>, <span class="firstname">Jim</span> <span class="surname">Whitehead</span>, <span class="firstname">Asad</span> <span class="surname">Faizi</span>, <span class="firstname">Steve</span> <span class="surname">Carter</span>, and <span class="firstname">Del</span> <span class="surname">Jensen</span>. </span><span class="publishername">IETF. </span><span class="pubdate">February 1999. </span></p></div><div class="biblioentry" title="Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile"><a name="bib.rfc3280"></a><p>[<abbr class="abbrev">RFC3280</abbr>] <span class="title"><i><a class="ulink" href="http://www.ietf.org/rfc/rfc3280.txt" target="_top">Internet X.509 Public Key Infrastructure
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Bibliography</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="index.html" title="neon HTTP/WebDAV client library"><link rel="prev" href="refxml.html" title="ne_xml_create"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Bibliography</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refxml.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> </td></tr></table><hr></div><div class="bibliography"><div class="titlepage"><div><div><h1 class="title"><a name="biblio"></a>Bibliography</h1></div></div></div><div class="biblioentry"><a name="bib.ssltls"></a><p>[<abbr class="abbrev">SSL-and-TLS</abbr>] <span class="title"><i><a class="ulink" href="http://www.rtfm.com/sslbook/" target="_top">SSL and
+ TLS: Designing and Building Secure Systems</a></i>. </span><span class="author"><span class="firstname">Eric</span> <span class="surname">Rescorla</span>. </span><span class="isbn">0-201-62598-3. </span><span class="publisher"><span class="publishername">Addison-Wesley. </span></span><span class="pubdate">March 2001. </span></p></div><div class="biblioentry"><a name="bib.xmlnames"></a><p>[<abbr class="abbrev">REC-XML-names</abbr>] <span class="corpauthor">World Wide Web Consortium. </span><span class="title"><i><a class="ulink" href="http://www.w3.org/TR/REC-xml-names" target="_top">Namespaces in XML</a></i>. </span><span class="pubdate">January 1999. </span></p></div><div class="biblioentry"><a name="bib.rfc2616"></a><p>[<abbr class="abbrev">RFC2616</abbr>] <span class="title"><i><a class="ulink" href="http://www.ietf.org/rfc/rfc2616.txt" target="_top">Hypertext Transfer
+ Protocol—HTTP/1.1</a></i>. </span><span class="authorgroup"><span class="firstname">Roy</span> <span class="surname">Fielding</span>, <span class="firstname">Jim</span> <span class="surname">Gettys</span>, <span class="firstname">Jeff</span> <span class="surname">Mogul</span>, <span class="firstname">Henrik</span> <span class="surname">Frystyk</span>, <span class="firstname">Larry</span> <span class="surname">Masinter</span>, <span class="firstname">Paul</span> <span class="surname">Leach</span>, and <span class="firstname">Tim</span> <span class="surname">Berners-Lee</span>. </span><span class="publishername">IETF. </span><span class="pubdate">June 1999. </span></p></div><div class="biblioentry"><a name="bib.rfc2518"></a><p>[<abbr class="abbrev">RFC2518</abbr>] <span class="title"><i><a class="ulink" href="http://www.ietf.org/rfc/rfc2518.txt" target="_top">HTTP Extensions for Distributed Authoring—WEBDAV</a></i>. </span><span class="authorgroup"><span class="firstname">Yaron</span> <span class="surname">Goland</span>, <span class="firstname">Jim</span> <span class="surname">Whitehead</span>, <span class="firstname">Asad</span> <span class="surname">Faizi</span>, <span class="firstname">Steve</span> <span class="surname">Carter</span>, and <span class="firstname">Del</span> <span class="surname">Jensen</span>. </span><span class="publishername">IETF. </span><span class="pubdate">February 1999. </span></p></div><div class="biblioentry"><a name="bib.rfc3280"></a><p>[<abbr class="abbrev">RFC3280</abbr>] <span class="title"><i><a class="ulink" href="http://www.ietf.org/rfc/rfc3280.txt" target="_top">Internet X.509 Public Key Infrastructure
Certificate and Certificate Revocation List (CRL) Profile</a></i>. </span><span class="authorgroup"><span class="firstname">Russel</span> <span class="surname">Housley</span>, <span class="firstname">Warwick</span> <span class="surname">Ford</span>, <span class="firstname">Tim</span> <span class="surname">Polk</span>, and <span class="firstname">David</span> <span class="surname">Solo</span>. </span><span class="publishername">IETF. </span><span class="pubdate">April 2002. </span></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refxml.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> </td></tr><tr><td width="40%" align="left" valign="top">ne_xml_create </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html>
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Standards compliance</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="intro.html" title="Chapter 1. Introduction"><link rel="prev" href="using.html" title="How to use neon from your application"><link rel="next" href="security.html" title="HTTP Client Security"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Standards compliance</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="using.html">Prev</a> </td><th width="60%" align="center">Chapter 1. Introduction</th><td width="20%" align="right"> <a accesskey="n" href="security.html">Next</a></td></tr></table><hr></div><div class="sect1" title="Standards compliance"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="compliance"></a>Standards compliance</h2></div></div></div><p>neon is intended to be compliant with the IETF and W3C
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Standards compliance</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="intro.html" title="Chapter 1. Introduction"><link rel="prev" href="using.html" title="How to use neon from your application"><link rel="next" href="security.html" title="HTTP Client Security"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Standards compliance</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="using.html">Prev</a> </td><th width="60%" align="center">Chapter 1. Introduction</th><td width="20%" align="right"> <a accesskey="n" href="security.html">Next</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="compliance"></a>Standards compliance</h2></div></div></div><p>neon is intended to be compliant with the IETF and W3C
standards which it implements, with a few exceptions due to
practical necessity or interoperability issues. These
- exceptions are documented in this section.</p><div class="sect2" title="RFC 2518, HTTP Extensions for Distributed Authoring—WebDAV"><div class="titlepage"><div><div><h3 class="title"><a name="id444621"></a>RFC 2518, HTTP Extensions for Distributed Authoring—WebDAV</h3></div></div></div><p>neon is deliberately not compliant with section
+ exceptions are documented in this section.</p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idm140368851661440"></a>RFC 2518, HTTP Extensions for Distributed Authoring—WebDAV</h3></div></div></div><p>neon is deliberately not compliant with section
23.4.2, and treats property names as a (namespace-URI, name)
pair. This is <a class="ulink" href="http://lists.w3.org/Archives/Public/w3c-dist-auth/1999OctDec/0343.html" target="_top">generally
considered</a> to be correct behaviour by the WebDAV
working group, and is likely to formally adopted in a future
- revision of the specification.</p></div><div class="sect2" title="RFC 2616, Hypertext Transfer Protocol—HTTP/1.1"><div class="titlepage"><div><div><h3 class="title"><a name="id444637"></a>RFC 2616, Hypertext Transfer Protocol—HTTP/1.1</h3></div></div></div><p>There is some confusion in this specification about the
+ revision of the specification.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idm140368851659456"></a>RFC 2616, Hypertext Transfer Protocol—HTTP/1.1</h3></div></div></div><p>There is some confusion in this specification about the
use of the <span class="quote">“<span class="quote">identity</span>”</span>
<em class="firstterm">transfer-coding</em>. neon ignores the
<code class="literal">Transfer-Encoding</code> response header if it
the header was not present. neon will give an error if a
response includes a <code class="literal">Transfer-Encoding</code>
header with a value other than <span class="quote">“<span class="quote">identity</span>”</span> or
- <span class="quote">“<span class="quote">chunked</span>”</span>.</p></div><div class="sect2" title="RFC 2617, HTTP Authentication: Basic and Digest Access Authentication"><div class="titlepage"><div><div><h3 class="title"><a name="id444676"></a>RFC 2617, HTTP Authentication: Basic and Digest Access Authentication</h3></div></div></div><p>neon is not strictly compliant with the quoting rules
+ <span class="quote">“<span class="quote">chunked</span>”</span>.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idm140368851654848"></a>RFC 2617, HTTP Authentication: Basic and Digest Access Authentication</h3></div></div></div><p>neon is not strictly compliant with the quoting rules
given in the grammar for the <code class="literal">Authorization</code>
header. The grammar requires that the <code class="literal">qop</code>
and <code class="literal">algorithm</code> parameters are not quoted,
(Microsoft® IIS 5) rejects the request if these parameters
are not quoted. neon sends these parameters with
quotes—this is not known to cause any problems with
- other server implementations.</p></div><div class="sect2" title="Namespaces in XML"><div class="titlepage"><div><div><h3 class="title"><a name="id444704"></a>Namespaces in XML</h3></div></div></div><p>The neon XML parser interface will accept and parse
+ other server implementations.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idm140368851651408"></a>Namespaces in XML</h3></div></div></div><p>The neon XML parser interface will accept and parse
without error some XML documents which are well-formed
according to the XML specification but do not conform to the
"Namespaces in XML" specification <a class="xref" href="biblio.html#bib.xmlnames" title="Namespaces in XML">[<abbr class="abbrev">REC-XML-names</abbr>]</a>. Specifically: the restrictions on
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Feature list</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="intro.html" title="Chapter 1. Introduction"><link rel="prev" href="intro.html" title="Chapter 1. Introduction"><link rel="next" href="using.html" title="How to use neon from your application"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Feature list</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="intro.html">Prev</a> </td><th width="60%" align="center">Chapter 1. Introduction</th><td width="20%" align="right"> <a accesskey="n" href="using.html">Next</a></td></tr></table><hr></div><div class="sect1" title="Feature list"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="features"></a>Feature list</h2></div></div></div><p>The major features of the neon library are as follows:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>A high-level interface to common HTTP and WebDAV
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Feature list</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="intro.html" title="Chapter 1. Introduction"><link rel="prev" href="intro.html" title="Chapter 1. Introduction"><link rel="next" href="using.html" title="How to use neon from your application"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Feature list</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="intro.html">Prev</a> </td><th width="60%" align="center">Chapter 1. Introduction</th><td width="20%" align="right"> <a accesskey="n" href="using.html">Next</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="features"></a>Feature list</h2></div></div></div><p>The major features of the neon library are as follows:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>A high-level interface to common HTTP and WebDAV
methods. This allows you to easily dispatch a GET or a MKCOL request
against a resource with a single function call.</p></li><li class="listitem"><p>A low-level interface for HTTP request
handling; allowing you to implement requests using arbitrary methods
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>neon HTTP/WebDAV client library</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="next" href="intro.html" title="Chapter 1. Introduction"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">neon HTTP/WebDAV client library</th></tr><tr><td width="20%" align="left"> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="intro.html">Next</a></td></tr></table><hr></div><div class="book" title="neon HTTP/WebDAV client library"><div class="titlepage"><div><div><h1 class="title"><a name="id402328"></a>neon HTTP/WebDAV client library</h1></div><div><div class="author"><h3 class="author"><span class="firstname">Joe</span> <span class="surname">Orton</span></h3><code class="email"><<a class="email" href="mailto:neon@lists.manyfish.co.uk">neon@lists.manyfish.co.uk</a>></code></div></div><div><p class="copyright">Copyright © 2001-2008 Joe Orton</p></div><div><div class="legalnotice" title="Legal Notice"><a name="id402927"></a><p>This document is free documentation; you can redistribute
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>neon HTTP/WebDAV client library</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="next" href="intro.html" title="Chapter 1. Introduction"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">neon HTTP/WebDAV client library</th></tr><tr><td width="20%" align="left"> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="intro.html">Next</a></td></tr></table><hr></div><div class="book"><div class="titlepage"><div><div><h1 class="title"><a name="idm140368856725360"></a>neon HTTP/WebDAV client library</h1></div><div><div class="author"><h3 class="author"><span class="firstname">Joe</span> <span class="surname">Orton</span></h3><code class="email"><<a class="email" href="mailto:neon@lists.manyfish.co.uk">neon@lists.manyfish.co.uk</a>></code></div></div><div><p class="copyright">Copyright © 2001-2008 Joe Orton</p></div><div><div class="legalnotice"><a name="idm140368856465888"></a><p>This document is free documentation; you can redistribute
it and/or modify it under the terms of the <a class="ulink" href="http://www.gnu.org/copyleft/gpl.html" target="_top">GNU General Public
License</a> as published by the Free Software Foundation;
either version 2 of the License, or (at your option) any later
License for more details.</p><p>You should have received a copy of the GNU General Public
License along with this program; if not, write to the Free
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
- USA.</p></div></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="intro.html">1. Introduction</a></span></dt><dd><dl><dt><span class="sect1"><a href="features.html">Feature list</a></span></dt><dt><span class="sect1"><a href="using.html">How to use neon from your application</a></span></dt><dt><span class="sect1"><a href="compliance.html">Standards compliance</a></span></dt><dd><dl><dt><span class="sect2"><a href="compliance.html#id444621">RFC 2518, HTTP Extensions for Distributed Authoring—WebDAV</a></span></dt><dt><span class="sect2"><a href="compliance.html#id444637">RFC 2616, Hypertext Transfer Protocol—HTTP/1.1</a></span></dt><dt><span class="sect2"><a href="compliance.html#id444676">RFC 2617, HTTP Authentication: Basic and Digest Access Authentication</a></span></dt><dt><span class="sect2"><a href="compliance.html#id444704">Namespaces in XML</a></span></dt></dl></dd><dt><span class="sect1"><a href="security.html">HTTP Client Security</a></span></dt><dd><dl><dt><span class="sect2"><a href="security.html#id444512">CPU or memory consumption attacks</a></span></dt><dt><span class="sect2"><a href="security.html#id444586">SSL/TLS connection security</a></span></dt><dt><span class="sect2"><a href="security.html#id445137">Control character insertion in error messages</a></span></dt><dt><span class="sect2"><a href="security.html#id445154">Attacks against authentication credentials</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="api.html">2. The neon C language interface</a></span></dt><dd><dl><dt><span class="sect1"><a href="xml.html">Parsing XML</a></span></dt><dd><dl><dt><span class="sect2"><a href="xml.html#xml-sax">Introduction to SAX</a></span></dt><dt><span class="sect2"><a href="xml.html#xml-stacked">Stacked SAX handlers</a></span></dt><dt><span class="sect2"><a href="xml.html#xml-state">Maintaining state</a></span></dt><dt><span class="sect2"><a href="xml.html#xml-ns">XML namespaces</a></span></dt></dl></dd></dl></dd><dt><span class="reference"><a href="ref.html">I. neon API reference</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="refneon.html">neon</a></span><span class="refpurpose"> — HTTP and WebDAV client library</span></dt><dt><span class="refentrytitle"><a href="refconfig.html">neon-config</a></span><span class="refpurpose"> — script providing information about installed copy
- of neon library</span></dt><dt><span class="refentrytitle"><a href="refresolve.html">ne_addr_resolve</a></span><span class="refpurpose"> — functions to resolve hostnames to addresses</span></dt><dt><span class="refentrytitle"><a href="refbuf.html">ne_buffer</a></span><span class="refpurpose"> — string buffer handling</span></dt><dt><span class="refentrytitle"><a href="refbufapp.html">ne_buffer_append</a></span><span class="refpurpose"> — append data to a string buffer</span></dt><dt><span class="refentrytitle"><a href="refbufutil.html">ne_buffer_clear</a></span><span class="refpurpose"> — clear, grow, or mark as altered a string buffer</span></dt><dt><span class="refentrytitle"><a href="refbufcr.html">ne_buffer_create</a></span><span class="refpurpose"> — create a string buffer</span></dt><dt><span class="refentrytitle"><a href="refbufdest.html">ne_buffer_destroy</a></span><span class="refpurpose"> — destroy a buffer object</span></dt><dt><span class="refentrytitle"><a href="referr.html">ne_get_error</a></span><span class="refpurpose"> — error handling for HTTP sessions</span></dt><dt><span class="refentrytitle"><a href="refgetst.html">ne_get_status</a></span><span class="refpurpose"> — retrieve HTTP response status for request</span></dt><dt><span class="refentrytitle"><a href="reffeat.html">ne_has_support</a></span><span class="refpurpose"> — determine feature support status</span></dt><dt><span class="refentrytitle"><a href="refi18n.html">ne_i18n_init</a></span><span class="refpurpose"> — functions to initialize internationalization support</span></dt><dt><span class="refentrytitle"><a href="refiaddr.html">ne_iaddr_make</a></span><span class="refpurpose"> — functions to manipulate network addresses</span></dt><dt><span class="refentrytitle"><a href="refalloc.html">ne_malloc</a></span><span class="refpurpose"> — memory allocation wrappers</span></dt><dt><span class="refentrytitle"><a href="refsess.html">ne_session_create</a></span><span class="refpurpose"> — set up HTTP sessions</span></dt><dt><span class="refentrytitle"><a href="refsessflags.html">ne_set_session_flag</a></span><span class="refpurpose"> — set and retrieve session flags</span></dt><dt><span class="refentrytitle"><a href="refreq.html">ne_request_create</a></span><span class="refpurpose"> — low-level HTTP request handling</span></dt><dt><span class="refentrytitle"><a href="refreqhdr.html">ne_add_request_header</a></span><span class="refpurpose"> — add headers to a request</span></dt><dt><span class="refentrytitle"><a href="refresphdr.html">ne_get_response_header</a></span><span class="refpurpose"> — functions to access response headers</span></dt><dt><span class="refentrytitle"><a href="refopts.html">ne_set_useragent</a></span><span class="refpurpose"> — common properties for HTTP sessions</span></dt><dt><span class="refentrytitle"><a href="refreqflags.html">ne_set_request_flag</a></span><span class="refpurpose"> — set and retrieve per-request flags</span></dt><dt><span class="refentrytitle"><a href="refreqbody.html">ne_set_request_body_buffer</a></span><span class="refpurpose"> — include a message body with a request</span></dt><dt><span class="refentrytitle"><a href="refauth.html">ne_set_server_auth</a></span><span class="refpurpose"> — register authentication callbacks</span></dt><dt><span class="refentrytitle"><a href="refshave.html">ne_shave</a></span><span class="refpurpose"> — trim whitespace from a string</span></dt><dt><span class="refentrytitle"><a href="refsockinit.html">ne_sock_init</a></span><span class="refpurpose"> — perform library initialization</span></dt><dt><span class="refentrytitle"><a href="refcert.html">ne_ssl_cert_identity</a></span><span class="refpurpose"> — functions to access certificate properties</span></dt><dt><span class="refentrytitle"><a href="refsslcert2.html">ne_ssl_cert_cmp</a></span><span class="refpurpose"> — functions to operate on certificate objects</span></dt><dt><span class="refentrytitle"><a href="refsslcertio.html">ne_ssl_cert_read</a></span><span class="refpurpose"> — functions to read or write certificates to and from files or strings</span></dt><dt><span class="refentrytitle"><a href="refssldname.html">ne_ssl_dname</a></span><span class="refpurpose"> — SSL distinguished name handling</span></dt><dt><span class="refentrytitle"><a href="refsslca.html">ne_ssl_trust_cert</a></span><span class="refpurpose"> — functions to indicate that certificates are trusted</span></dt><dt><span class="refentrytitle"><a href="refsslvfy.html">ne_ssl_set_verify</a></span><span class="refpurpose"> — register an SSL certificate verification callback</span></dt><dt><span class="refentrytitle"><a href="refclicert.html">ne_ssl_client_cert</a></span><span class="refpurpose"> — SSL client certificate handling</span></dt><dt><span class="refentrytitle"><a href="refstatus.html">ne_status</a></span><span class="refpurpose"> — HTTP status structure</span></dt><dt><span class="refentrytitle"><a href="reftok.html">ne_token</a></span><span class="refpurpose"> — string tokenizers</span></dt><dt><span class="refentrytitle"><a href="refvers.html">ne_version_match</a></span><span class="refpurpose"> — library versioning</span></dt><dt><span class="refentrytitle"><a href="refxml.html">ne_xml_create</a></span><span class="refpurpose"> — create and destroy an XML parser</span></dt></dl></dd><dt><span class="bibliography"><a href="biblio.html">Bibliography</a></span></dt></dl></div><div class="list-of-examples"><p><b>List of Examples</b></p><dl><dt>2.1. <a href="xml.html#xml-example">An example XML document</a></dt></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="intro.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"> </td><td width="40%" align="right" valign="top"> Chapter 1. Introduction</td></tr></table></div></body></html>
+ USA.</p></div></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="chapter"><a href="intro.html">1. Introduction</a></span></dt><dd><dl><dt><span class="sect1"><a href="features.html">Feature list</a></span></dt><dt><span class="sect1"><a href="using.html">How to use neon from your application</a></span></dt><dt><span class="sect1"><a href="compliance.html">Standards compliance</a></span></dt><dd><dl><dt><span class="sect2"><a href="compliance.html#idm140368851661440">RFC 2518, HTTP Extensions for Distributed Authoring—WebDAV</a></span></dt><dt><span class="sect2"><a href="compliance.html#idm140368851659456">RFC 2616, Hypertext Transfer Protocol—HTTP/1.1</a></span></dt><dt><span class="sect2"><a href="compliance.html#idm140368851654848">RFC 2617, HTTP Authentication: Basic and Digest Access Authentication</a></span></dt><dt><span class="sect2"><a href="compliance.html#idm140368851651408">Namespaces in XML</a></span></dt></dl></dd><dt><span class="sect1"><a href="security.html">HTTP Client Security</a></span></dt><dd><dl><dt><span class="sect2"><a href="security.html#idm140368851674016">CPU or memory consumption attacks</a></span></dt><dt><span class="sect2"><a href="security.html#idm140368851664720">SSL/TLS connection security</a></span></dt><dt><span class="sect2"><a href="security.html#idm140368851598880">Control character insertion in error messages</a></span></dt><dt><span class="sect2"><a href="security.html#idm140368851596832">Attacks against authentication credentials</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="api.html">2. The neon C language interface</a></span></dt><dd><dl><dt><span class="sect1"><a href="xml.html">Parsing XML</a></span></dt><dd><dl><dt><span class="sect2"><a href="xml.html#xml-sax">Introduction to SAX</a></span></dt><dt><span class="sect2"><a href="xml.html#xml-stacked">Stacked SAX handlers</a></span></dt><dt><span class="sect2"><a href="xml.html#xml-state">Maintaining state</a></span></dt><dt><span class="sect2"><a href="xml.html#xml-ns">XML namespaces</a></span></dt></dl></dd></dl></dd><dt><span class="reference"><a href="ref.html">I. neon API reference</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="refneon.html">neon</a></span><span class="refpurpose"> — HTTP and WebDAV client library</span></dt><dt><span class="refentrytitle"><a href="refconfig.html">neon-config</a></span><span class="refpurpose"> — script providing information about installed copy
+ of neon library</span></dt><dt><span class="refentrytitle"><a href="refresolve.html">ne_addr_resolve</a></span><span class="refpurpose"> — functions to resolve hostnames to addresses</span></dt><dt><span class="refentrytitle"><a href="refbuf.html">ne_buffer</a></span><span class="refpurpose"> — string buffer handling</span></dt><dt><span class="refentrytitle"><a href="refbufapp.html">ne_buffer_append</a></span><span class="refpurpose"> — append data to a string buffer</span></dt><dt><span class="refentrytitle"><a href="refbufutil.html">ne_buffer_clear</a></span><span class="refpurpose"> — clear, grow, or mark as altered a string buffer</span></dt><dt><span class="refentrytitle"><a href="refbufcr.html">ne_buffer_create</a></span><span class="refpurpose"> — create a string buffer</span></dt><dt><span class="refentrytitle"><a href="refbufdest.html">ne_buffer_destroy</a></span><span class="refpurpose"> — destroy a buffer object</span></dt><dt><span class="refentrytitle"><a href="referr.html">ne_get_error</a></span><span class="refpurpose"> — error handling for HTTP sessions</span></dt><dt><span class="refentrytitle"><a href="refgetst.html">ne_get_status</a></span><span class="refpurpose"> — retrieve HTTP response status for request</span></dt><dt><span class="refentrytitle"><a href="reffeat.html">ne_has_support</a></span><span class="refpurpose"> — determine feature support status</span></dt><dt><span class="refentrytitle"><a href="refi18n.html">ne_i18n_init</a></span><span class="refpurpose"> — functions to initialize internationalization support</span></dt><dt><span class="refentrytitle"><a href="refiaddr.html">ne_iaddr_make</a></span><span class="refpurpose"> — functions to manipulate network addresses</span></dt><dt><span class="refentrytitle"><a href="refalloc.html">ne_malloc</a></span><span class="refpurpose"> — memory allocation wrappers</span></dt><dt><span class="refentrytitle"><a href="refsess.html">ne_session_create</a></span><span class="refpurpose"> — set up HTTP sessions</span></dt><dt><span class="refentrytitle"><a href="refproxy.html">ne_session_proxy</a></span><span class="refpurpose"> — configure proxy servers</span></dt><dt><span class="refentrytitle"><a href="refsessflags.html">ne_set_session_flag</a></span><span class="refpurpose"> — set and retrieve session flags</span></dt><dt><span class="refentrytitle"><a href="refreq.html">ne_request_create</a></span><span class="refpurpose"> — low-level HTTP request handling</span></dt><dt><span class="refentrytitle"><a href="refreqhdr.html">ne_add_request_header</a></span><span class="refpurpose"> — add headers to a request</span></dt><dt><span class="refentrytitle"><a href="refresphdr.html">ne_get_response_header</a></span><span class="refpurpose"> — functions to access response headers</span></dt><dt><span class="refentrytitle"><a href="refopts.html">ne_set_useragent</a></span><span class="refpurpose"> — common properties for HTTP sessions</span></dt><dt><span class="refentrytitle"><a href="refreqflags.html">ne_set_request_flag</a></span><span class="refpurpose"> — set and retrieve per-request flags</span></dt><dt><span class="refentrytitle"><a href="refreqbody.html">ne_set_request_body_buffer</a></span><span class="refpurpose"> — include a message body with a request</span></dt><dt><span class="refentrytitle"><a href="refauth.html">ne_set_server_auth</a></span><span class="refpurpose"> — register authentication callbacks</span></dt><dt><span class="refentrytitle"><a href="refshave.html">ne_shave</a></span><span class="refpurpose"> — trim whitespace from a string</span></dt><dt><span class="refentrytitle"><a href="refsockinit.html">ne_sock_init</a></span><span class="refpurpose"> — perform library initialization</span></dt><dt><span class="refentrytitle"><a href="refcert.html">ne_ssl_cert_identity</a></span><span class="refpurpose"> — functions to access certificate properties</span></dt><dt><span class="refentrytitle"><a href="refsslcert2.html">ne_ssl_cert_cmp</a></span><span class="refpurpose"> — functions to operate on certificate objects</span></dt><dt><span class="refentrytitle"><a href="refsslcertio.html">ne_ssl_cert_read</a></span><span class="refpurpose"> — functions to read or write certificates to and from files or strings</span></dt><dt><span class="refentrytitle"><a href="refssldname.html">ne_ssl_dname</a></span><span class="refpurpose"> — SSL distinguished name handling</span></dt><dt><span class="refentrytitle"><a href="refsslca.html">ne_ssl_trust_cert</a></span><span class="refpurpose"> — functions to indicate that certificates are trusted</span></dt><dt><span class="refentrytitle"><a href="refsslvfy.html">ne_ssl_set_verify</a></span><span class="refpurpose"> — register an SSL certificate verification callback</span></dt><dt><span class="refentrytitle"><a href="refclicert.html">ne_ssl_client_cert</a></span><span class="refpurpose"> — SSL client certificate handling</span></dt><dt><span class="refentrytitle"><a href="refstatus.html">ne_status</a></span><span class="refpurpose"> — HTTP status structure</span></dt><dt><span class="refentrytitle"><a href="reftok.html">ne_token</a></span><span class="refpurpose"> — string tokenizers</span></dt><dt><span class="refentrytitle"><a href="refvers.html">ne_version_match</a></span><span class="refpurpose"> — library versioning</span></dt><dt><span class="refentrytitle"><a href="refxml.html">ne_xml_create</a></span><span class="refpurpose"> — create and destroy an XML parser</span></dt></dl></dd><dt><span class="bibliography"><a href="biblio.html">Bibliography</a></span></dt></dl></div><div class="list-of-examples"><p><b>List of Examples</b></p><dl><dt>2.1. <a href="xml.html#xml-example">An example XML document</a></dt></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="intro.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"> </td><td width="40%" align="right" valign="top"> Chapter 1. Introduction</td></tr></table></div></body></html>
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Chapter 1. Introduction</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="index.html" title="neon HTTP/WebDAV client library"><link rel="prev" href="index.html" title="neon HTTP/WebDAV client library"><link rel="next" href="features.html" title="Feature list"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 1. Introduction</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="features.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter 1. Introduction"><div class="titlepage"><div><div><h2 class="title"><a name="intro"></a>Chapter 1. Introduction</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="features.html">Feature list</a></span></dt><dt><span class="sect1"><a href="using.html">How to use neon from your application</a></span></dt><dt><span class="sect1"><a href="compliance.html">Standards compliance</a></span></dt><dd><dl><dt><span class="sect2"><a href="compliance.html#id444621">RFC 2518, HTTP Extensions for Distributed Authoring—WebDAV</a></span></dt><dt><span class="sect2"><a href="compliance.html#id444637">RFC 2616, Hypertext Transfer Protocol—HTTP/1.1</a></span></dt><dt><span class="sect2"><a href="compliance.html#id444676">RFC 2617, HTTP Authentication: Basic and Digest Access Authentication</a></span></dt><dt><span class="sect2"><a href="compliance.html#id444704">Namespaces in XML</a></span></dt></dl></dd><dt><span class="sect1"><a href="security.html">HTTP Client Security</a></span></dt><dd><dl><dt><span class="sect2"><a href="security.html#id444512">CPU or memory consumption attacks</a></span></dt><dt><span class="sect2"><a href="security.html#id444586">SSL/TLS connection security</a></span></dt><dt><span class="sect2"><a href="security.html#id445137">Control character insertion in error messages</a></span></dt><dt><span class="sect2"><a href="security.html#id445154">Attacks against authentication credentials</a></span></dt></dl></dd></dl></div><p>This chapter provides an introduction to neon, giving an
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Chapter 1. Introduction</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="index.html" title="neon HTTP/WebDAV client library"><link rel="prev" href="index.html" title="neon HTTP/WebDAV client library"><link rel="next" href="features.html" title="Feature list"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 1. Introduction</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="features.html">Next</a></td></tr></table><hr></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="intro"></a>Chapter 1. Introduction</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="sect1"><a href="features.html">Feature list</a></span></dt><dt><span class="sect1"><a href="using.html">How to use neon from your application</a></span></dt><dt><span class="sect1"><a href="compliance.html">Standards compliance</a></span></dt><dd><dl><dt><span class="sect2"><a href="compliance.html#idm140368851661440">RFC 2518, HTTP Extensions for Distributed Authoring—WebDAV</a></span></dt><dt><span class="sect2"><a href="compliance.html#idm140368851659456">RFC 2616, Hypertext Transfer Protocol—HTTP/1.1</a></span></dt><dt><span class="sect2"><a href="compliance.html#idm140368851654848">RFC 2617, HTTP Authentication: Basic and Digest Access Authentication</a></span></dt><dt><span class="sect2"><a href="compliance.html#idm140368851651408">Namespaces in XML</a></span></dt></dl></dd><dt><span class="sect1"><a href="security.html">HTTP Client Security</a></span></dt><dd><dl><dt><span class="sect2"><a href="security.html#idm140368851674016">CPU or memory consumption attacks</a></span></dt><dt><span class="sect2"><a href="security.html#idm140368851664720">SSL/TLS connection security</a></span></dt><dt><span class="sect2"><a href="security.html#idm140368851598880">Control character insertion in error messages</a></span></dt><dt><span class="sect2"><a href="security.html#idm140368851596832">Attacks against authentication credentials</a></span></dt></dl></dd></dl></div><p>This chapter provides an introduction to neon, giving an
overview of the range of features offered, and some general guidelines
for using the neon API.</p><p>neon aims to provide a modern, flexible, and simple API
in the C programming language for implementing HTTP and WebDAV
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>neon API reference</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="index.html" title="neon HTTP/WebDAV client library"><link rel="prev" href="xml.html" title="Parsing XML"><link rel="next" href="refneon.html" title="neon"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">neon API reference</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="xml.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="refneon.html">Next</a></td></tr></table><hr></div><div class="reference" title="neon API reference"><div class="titlepage"><div><div><h1 class="title"><a name="ref"></a>neon API reference</h1></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="refentrytitle"><a href="refneon.html">neon</a></span><span class="refpurpose"> — HTTP and WebDAV client library</span></dt><dt><span class="refentrytitle"><a href="refconfig.html">neon-config</a></span><span class="refpurpose"> — script providing information about installed copy
- of neon library</span></dt><dt><span class="refentrytitle"><a href="refresolve.html">ne_addr_resolve</a></span><span class="refpurpose"> — functions to resolve hostnames to addresses</span></dt><dt><span class="refentrytitle"><a href="refbuf.html">ne_buffer</a></span><span class="refpurpose"> — string buffer handling</span></dt><dt><span class="refentrytitle"><a href="refbufapp.html">ne_buffer_append</a></span><span class="refpurpose"> — append data to a string buffer</span></dt><dt><span class="refentrytitle"><a href="refbufutil.html">ne_buffer_clear</a></span><span class="refpurpose"> — clear, grow, or mark as altered a string buffer</span></dt><dt><span class="refentrytitle"><a href="refbufcr.html">ne_buffer_create</a></span><span class="refpurpose"> — create a string buffer</span></dt><dt><span class="refentrytitle"><a href="refbufdest.html">ne_buffer_destroy</a></span><span class="refpurpose"> — destroy a buffer object</span></dt><dt><span class="refentrytitle"><a href="referr.html">ne_get_error</a></span><span class="refpurpose"> — error handling for HTTP sessions</span></dt><dt><span class="refentrytitle"><a href="refgetst.html">ne_get_status</a></span><span class="refpurpose"> — retrieve HTTP response status for request</span></dt><dt><span class="refentrytitle"><a href="reffeat.html">ne_has_support</a></span><span class="refpurpose"> — determine feature support status</span></dt><dt><span class="refentrytitle"><a href="refi18n.html">ne_i18n_init</a></span><span class="refpurpose"> — functions to initialize internationalization support</span></dt><dt><span class="refentrytitle"><a href="refiaddr.html">ne_iaddr_make</a></span><span class="refpurpose"> — functions to manipulate network addresses</span></dt><dt><span class="refentrytitle"><a href="refalloc.html">ne_malloc</a></span><span class="refpurpose"> — memory allocation wrappers</span></dt><dt><span class="refentrytitle"><a href="refsess.html">ne_session_create</a></span><span class="refpurpose"> — set up HTTP sessions</span></dt><dt><span class="refentrytitle"><a href="refsessflags.html">ne_set_session_flag</a></span><span class="refpurpose"> — set and retrieve session flags</span></dt><dt><span class="refentrytitle"><a href="refreq.html">ne_request_create</a></span><span class="refpurpose"> — low-level HTTP request handling</span></dt><dt><span class="refentrytitle"><a href="refreqhdr.html">ne_add_request_header</a></span><span class="refpurpose"> — add headers to a request</span></dt><dt><span class="refentrytitle"><a href="refresphdr.html">ne_get_response_header</a></span><span class="refpurpose"> — functions to access response headers</span></dt><dt><span class="refentrytitle"><a href="refopts.html">ne_set_useragent</a></span><span class="refpurpose"> — common properties for HTTP sessions</span></dt><dt><span class="refentrytitle"><a href="refreqflags.html">ne_set_request_flag</a></span><span class="refpurpose"> — set and retrieve per-request flags</span></dt><dt><span class="refentrytitle"><a href="refreqbody.html">ne_set_request_body_buffer</a></span><span class="refpurpose"> — include a message body with a request</span></dt><dt><span class="refentrytitle"><a href="refauth.html">ne_set_server_auth</a></span><span class="refpurpose"> — register authentication callbacks</span></dt><dt><span class="refentrytitle"><a href="refshave.html">ne_shave</a></span><span class="refpurpose"> — trim whitespace from a string</span></dt><dt><span class="refentrytitle"><a href="refsockinit.html">ne_sock_init</a></span><span class="refpurpose"> — perform library initialization</span></dt><dt><span class="refentrytitle"><a href="refcert.html">ne_ssl_cert_identity</a></span><span class="refpurpose"> — functions to access certificate properties</span></dt><dt><span class="refentrytitle"><a href="refsslcert2.html">ne_ssl_cert_cmp</a></span><span class="refpurpose"> — functions to operate on certificate objects</span></dt><dt><span class="refentrytitle"><a href="refsslcertio.html">ne_ssl_cert_read</a></span><span class="refpurpose"> — functions to read or write certificates to and from files or strings</span></dt><dt><span class="refentrytitle"><a href="refssldname.html">ne_ssl_dname</a></span><span class="refpurpose"> — SSL distinguished name handling</span></dt><dt><span class="refentrytitle"><a href="refsslca.html">ne_ssl_trust_cert</a></span><span class="refpurpose"> — functions to indicate that certificates are trusted</span></dt><dt><span class="refentrytitle"><a href="refsslvfy.html">ne_ssl_set_verify</a></span><span class="refpurpose"> — register an SSL certificate verification callback</span></dt><dt><span class="refentrytitle"><a href="refclicert.html">ne_ssl_client_cert</a></span><span class="refpurpose"> — SSL client certificate handling</span></dt><dt><span class="refentrytitle"><a href="refstatus.html">ne_status</a></span><span class="refpurpose"> — HTTP status structure</span></dt><dt><span class="refentrytitle"><a href="reftok.html">ne_token</a></span><span class="refpurpose"> — string tokenizers</span></dt><dt><span class="refentrytitle"><a href="refvers.html">ne_version_match</a></span><span class="refpurpose"> — library versioning</span></dt><dt><span class="refentrytitle"><a href="refxml.html">ne_xml_create</a></span><span class="refpurpose"> — create and destroy an XML parser</span></dt></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="xml.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="refneon.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Parsing XML </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> neon</td></tr></table></div></body></html>
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>neon API reference</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="index.html" title="neon HTTP/WebDAV client library"><link rel="prev" href="xml.html" title="Parsing XML"><link rel="next" href="refneon.html" title="neon"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">neon API reference</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="xml.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="refneon.html">Next</a></td></tr></table><hr></div><div class="reference"><div class="titlepage"><div><div><h1 class="title"><a name="ref"></a>neon API reference</h1></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="refentrytitle"><a href="refneon.html">neon</a></span><span class="refpurpose"> — HTTP and WebDAV client library</span></dt><dt><span class="refentrytitle"><a href="refconfig.html">neon-config</a></span><span class="refpurpose"> — script providing information about installed copy
+ of neon library</span></dt><dt><span class="refentrytitle"><a href="refresolve.html">ne_addr_resolve</a></span><span class="refpurpose"> — functions to resolve hostnames to addresses</span></dt><dt><span class="refentrytitle"><a href="refbuf.html">ne_buffer</a></span><span class="refpurpose"> — string buffer handling</span></dt><dt><span class="refentrytitle"><a href="refbufapp.html">ne_buffer_append</a></span><span class="refpurpose"> — append data to a string buffer</span></dt><dt><span class="refentrytitle"><a href="refbufutil.html">ne_buffer_clear</a></span><span class="refpurpose"> — clear, grow, or mark as altered a string buffer</span></dt><dt><span class="refentrytitle"><a href="refbufcr.html">ne_buffer_create</a></span><span class="refpurpose"> — create a string buffer</span></dt><dt><span class="refentrytitle"><a href="refbufdest.html">ne_buffer_destroy</a></span><span class="refpurpose"> — destroy a buffer object</span></dt><dt><span class="refentrytitle"><a href="referr.html">ne_get_error</a></span><span class="refpurpose"> — error handling for HTTP sessions</span></dt><dt><span class="refentrytitle"><a href="refgetst.html">ne_get_status</a></span><span class="refpurpose"> — retrieve HTTP response status for request</span></dt><dt><span class="refentrytitle"><a href="reffeat.html">ne_has_support</a></span><span class="refpurpose"> — determine feature support status</span></dt><dt><span class="refentrytitle"><a href="refi18n.html">ne_i18n_init</a></span><span class="refpurpose"> — functions to initialize internationalization support</span></dt><dt><span class="refentrytitle"><a href="refiaddr.html">ne_iaddr_make</a></span><span class="refpurpose"> — functions to manipulate network addresses</span></dt><dt><span class="refentrytitle"><a href="refalloc.html">ne_malloc</a></span><span class="refpurpose"> — memory allocation wrappers</span></dt><dt><span class="refentrytitle"><a href="refsess.html">ne_session_create</a></span><span class="refpurpose"> — set up HTTP sessions</span></dt><dt><span class="refentrytitle"><a href="refproxy.html">ne_session_proxy</a></span><span class="refpurpose"> — configure proxy servers</span></dt><dt><span class="refentrytitle"><a href="refsessflags.html">ne_set_session_flag</a></span><span class="refpurpose"> — set and retrieve session flags</span></dt><dt><span class="refentrytitle"><a href="refreq.html">ne_request_create</a></span><span class="refpurpose"> — low-level HTTP request handling</span></dt><dt><span class="refentrytitle"><a href="refreqhdr.html">ne_add_request_header</a></span><span class="refpurpose"> — add headers to a request</span></dt><dt><span class="refentrytitle"><a href="refresphdr.html">ne_get_response_header</a></span><span class="refpurpose"> — functions to access response headers</span></dt><dt><span class="refentrytitle"><a href="refopts.html">ne_set_useragent</a></span><span class="refpurpose"> — common properties for HTTP sessions</span></dt><dt><span class="refentrytitle"><a href="refreqflags.html">ne_set_request_flag</a></span><span class="refpurpose"> — set and retrieve per-request flags</span></dt><dt><span class="refentrytitle"><a href="refreqbody.html">ne_set_request_body_buffer</a></span><span class="refpurpose"> — include a message body with a request</span></dt><dt><span class="refentrytitle"><a href="refauth.html">ne_set_server_auth</a></span><span class="refpurpose"> — register authentication callbacks</span></dt><dt><span class="refentrytitle"><a href="refshave.html">ne_shave</a></span><span class="refpurpose"> — trim whitespace from a string</span></dt><dt><span class="refentrytitle"><a href="refsockinit.html">ne_sock_init</a></span><span class="refpurpose"> — perform library initialization</span></dt><dt><span class="refentrytitle"><a href="refcert.html">ne_ssl_cert_identity</a></span><span class="refpurpose"> — functions to access certificate properties</span></dt><dt><span class="refentrytitle"><a href="refsslcert2.html">ne_ssl_cert_cmp</a></span><span class="refpurpose"> — functions to operate on certificate objects</span></dt><dt><span class="refentrytitle"><a href="refsslcertio.html">ne_ssl_cert_read</a></span><span class="refpurpose"> — functions to read or write certificates to and from files or strings</span></dt><dt><span class="refentrytitle"><a href="refssldname.html">ne_ssl_dname</a></span><span class="refpurpose"> — SSL distinguished name handling</span></dt><dt><span class="refentrytitle"><a href="refsslca.html">ne_ssl_trust_cert</a></span><span class="refpurpose"> — functions to indicate that certificates are trusted</span></dt><dt><span class="refentrytitle"><a href="refsslvfy.html">ne_ssl_set_verify</a></span><span class="refpurpose"> — register an SSL certificate verification callback</span></dt><dt><span class="refentrytitle"><a href="refclicert.html">ne_ssl_client_cert</a></span><span class="refpurpose"> — SSL client certificate handling</span></dt><dt><span class="refentrytitle"><a href="refstatus.html">ne_status</a></span><span class="refpurpose"> — HTTP status structure</span></dt><dt><span class="refentrytitle"><a href="reftok.html">ne_token</a></span><span class="refpurpose"> — string tokenizers</span></dt><dt><span class="refentrytitle"><a href="refvers.html">ne_version_match</a></span><span class="refpurpose"> — library versioning</span></dt><dt><span class="refentrytitle"><a href="refxml.html">ne_xml_create</a></span><span class="refpurpose"> — create and destroy an XML parser</span></dt></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="xml.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="refneon.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Parsing XML </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> neon</td></tr></table></div></body></html>
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_malloc</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refiaddr.html" title="ne_iaddr_make"><link rel="next" href="refsess.html" title="ne_session_create"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_malloc</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refiaddr.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refsess.html">Next</a></td></tr></table><hr></div><div class="refentry" title="ne_malloc"><a name="refalloc"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_malloc, ne_calloc, ne_realloc, ne_strdup, ne_strndup, ne_oom_callback — memory allocation wrappers</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_alloc.h></pre><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void *<b class="fsfunc">ne_malloc</b>(</code></td><td>size_t <var class="pdparam">size</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void *<b class="fsfunc">ne_calloc</b>(</code></td><td>size_t <var class="pdparam">size</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void *<b class="fsfunc">ne_realloc</b>(</code></td><td>void *<var class="pdparam">size</var>, </td></tr><tr><td> </td><td>size_t <var class="pdparam">len</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">char *<b class="fsfunc">ne_strdup</b>(</code></td><td>const char *<var class="pdparam">s</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">char *<b class="fsfunc">ne_strndup</b>(</code></td><td>const char *<var class="pdparam">s</var>, </td></tr><tr><td> </td><td>size_t <var class="pdparam">size</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void <b class="fsfunc">ne_oom_callback</b>(</code></td><td>void (*<var class="pdparam">callback</var>)(void)<code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1" title="Description"><a name="id453795"></a><h2>Description</h2><p>The functions <code class="function">ne_malloc</code>,
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_malloc</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refiaddr.html" title="ne_iaddr_make"><link rel="next" href="refsess.html" title="ne_session_create"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_malloc</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refiaddr.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refsess.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refalloc"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_malloc, ne_calloc, ne_realloc, ne_strdup, ne_strndup, ne_oom_callback — memory allocation wrappers</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_alloc.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void *<b class="fsfunc">ne_malloc</b>(</code></td><td>size_t <var class="pdparam">size</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void *<b class="fsfunc">ne_calloc</b>(</code></td><td>size_t <var class="pdparam">size</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void *<b class="fsfunc">ne_realloc</b>(</code></td><td>void *<var class="pdparam">size</var>, </td></tr><tr><td> </td><td>size_t <var class="pdparam">len</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">char *<b class="fsfunc">ne_strdup</b>(</code></td><td>const char *<var class="pdparam">s</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">char *<b class="fsfunc">ne_strndup</b>(</code></td><td>const char *<var class="pdparam">s</var>, </td></tr><tr><td> </td><td>size_t <var class="pdparam">size</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_oom_callback</b>(</code></td><td>void (*<var class="pdparam">callback</var>)(void)<code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm140368850556000"></a><h2>Description</h2><p>The functions <code class="function">ne_malloc</code>,
<code class="function">ne_calloc</code>, <code class="function">ne_realloc</code>,
<code class="function">ne_strdup</code> and <code class="function">ne_strdnup</code>
provide wrappers for the equivalent functions in the standard C
library equivalent returns <code class="literal">NULL</code> when no memory is available, an
optional callback will be called, and the library will then call
<code class="function">abort</code>().</p><p><code class="function">ne_oom_callback</code> registers a callback
-which will be invoked if an out of memory error is detected.</p></div><div class="refsect1" title="Notes"><a name="id453851"></a><h2>Notes</h2><p>If the operating system uses optimistic memory
+which will be invoked if an out of memory error is detected.</p></div><div class="refsect1"><a name="idm140368850549216"></a><h2>Notes</h2><p>If the operating system uses optimistic memory
allocation, the C library memory allocation routines will not return
<code class="literal">NULL</code>, so it is not possible to gracefully handle memory allocation
failures.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refiaddr.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refsess.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_iaddr_make </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_session_create</td></tr></table></div></body></html>
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_set_server_auth</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refreqbody.html" title="ne_set_request_body_buffer"><link rel="next" href="refshave.html" title="ne_shave"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_set_server_auth</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refreqbody.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refshave.html">Next</a></td></tr></table><hr></div><div class="refentry" title="ne_set_server_auth"><a name="refauth"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_set_server_auth, ne_set_proxy_auth, ne_forget_auth — register authentication callbacks</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_auth.h></pre><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">typedef int (*<b class="fsfunc">ne_auth_creds</b>)(</code></td><td>void *<var class="pdparam">userdata</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">realm</var>, </td></tr><tr><td> </td><td>int <var class="pdparam">attempt</var>, </td></tr><tr><td> </td><td>char *<var class="pdparam">username</var>, </td></tr><tr><td> </td><td>char *<var class="pdparam">password</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void <b class="fsfunc">ne_set_server_auth</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>ne_auth_creds <var class="pdparam">callback</var>, </td></tr><tr><td> </td><td>void *<var class="pdparam">userdata</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void <b class="fsfunc">ne_set_proxy_auth</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>ne_auth_creds <var class="pdparam">callback</var>, </td></tr><tr><td> </td><td>void *<var class="pdparam">userdata</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void <b class="fsfunc">ne_forget_auth</b>(</code></td><td>ne_session *<var class="pdparam">session</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1" title="Description"><a name="id459199"></a><h2>Description</h2><p>The <em class="type">ne_auth_creds</em> function type defines a
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_set_server_auth</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refreqbody.html" title="ne_set_request_body_buffer"><link rel="next" href="refshave.html" title="ne_shave"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_set_server_auth</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refreqbody.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refshave.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refauth"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_set_server_auth, ne_set_proxy_auth, ne_forget_auth — register authentication callbacks</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_auth.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">typedef int (*<b class="fsfunc">ne_auth_creds</b>)(</code></td><td>void *<var class="pdparam">userdata</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">realm</var>, </td></tr><tr><td> </td><td>int <var class="pdparam">attempt</var>, </td></tr><tr><td> </td><td>char *<var class="pdparam">username</var>, </td></tr><tr><td> </td><td>char *<var class="pdparam">password</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_set_server_auth</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>ne_auth_creds <var class="pdparam">callback</var>, </td></tr><tr><td> </td><td>void *<var class="pdparam">userdata</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_set_proxy_auth</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>ne_auth_creds <var class="pdparam">callback</var>, </td></tr><tr><td> </td><td>void *<var class="pdparam">userdata</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_forget_auth</b>(</code></td><td>ne_session *<var class="pdparam">session</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm140368849787040"></a><h2>Description</h2><p>The <em class="type">ne_auth_creds</em> function type defines a
callback which is invoked when a server or proxy server requires user
authentication for a particular request. The
<code class="parameter">realm</code> string is supplied by the server. The <code class="parameter">attempt</code> is a counter giving the
<code class="parameter">username</code> and <code class="parameter">password</code>
buffers must contain <code class="literal">NUL</code>-terminated strings. The
<code class="literal">NE_ABUFSIZ</code> constant gives the size of these
-buffers.</p><div class="tip" title="Tip" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Tip</h3><p>If you only wish to allow the user one attempt to enter
+buffers.</p><div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Tip</h3><p>If you only wish to allow the user one attempt to enter
credentials, use the value of the <code class="parameter">attempt</code>
parameter as the return value of the callback.</p></div><p>To abort the request, the callback should return a
non-zero value; in which case the contents of the
<code class="parameter">username</code> and <code class="parameter">password</code>
buffers are ignored.</p><p>The <code class="function">ne_forget_auth</code> function can be
-used to discard the cached authentication credentials.</p></div><div class="refsect1" title="Examples"><a name="id459294"></a><h2>Examples</h2><pre class="programlisting">
+used to discard the cached authentication credentials.</p></div><div class="refsect1"><a name="idm140368849775776"></a><h2>Examples</h2><pre class="programlisting">
/* Function which prompts for a line of user input: */
extern char *prompt_for(const char *prompt);
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_buffer</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refresolve.html" title="ne_addr_resolve"><link rel="next" href="refbufapp.html" title="ne_buffer_append"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_buffer</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refresolve.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refbufapp.html">Next</a></td></tr></table><hr></div><div class="refentry" title="ne_buffer"><a name="refbuf"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_buffer — string buffer handling</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_string.h>
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_buffer</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refresolve.html" title="ne_addr_resolve"><link rel="next" href="refbufapp.html" title="ne_buffer_append"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_buffer</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refresolve.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refbufapp.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refbuf"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_buffer — string buffer handling</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_string.h>
typedef struct {
char *data;
size_t used;
size_t length;
-} <em class="type">ne_buffer</em>;</pre></div></div><div class="refsect1" title="Description"><a name="id449192"></a><h2>Description</h2><p>The <em class="type">ne_buffer</em> type represents an expandable
+} <em class="type">ne_buffer</em>;</pre></div></div><div class="refsect1"><a name="idm140368851109776"></a><h2>Description</h2><p>The <em class="type">ne_buffer</em> type represents an expandable
memory buffer for holding <code class="literal">NUL</code>-terminated strings. The
<em class="structfield"><code>data</code></em> field points to the beginnning of the
string, the length of which is given by the
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_buffer_append</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refbuf.html" title="ne_buffer"><link rel="next" href="refbufutil.html" title="ne_buffer_clear"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_buffer_append</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refbuf.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refbufutil.html">Next</a></td></tr></table><hr></div><div class="refentry" title="ne_buffer_append"><a name="refbufapp"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_buffer_append, ne_buffer_zappend, ne_buffer_concat — append data to a string buffer</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_string.h></pre><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void <b class="fsfunc">ne_buffer_append</b>(</code></td><td>ne_buffer *<var class="pdparam">buf</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">string</var>, </td></tr><tr><td> </td><td>size_t <var class="pdparam">len</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void <b class="fsfunc">ne_buffer_zappend</b>(</code></td><td>ne_buffer *<var class="pdparam">buf</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">string</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void <b class="fsfunc">ne_buffer_concat</b>(</code></td><td>ne_buffer *<var class="pdparam">buf</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">str</var>, </td></tr><tr><td> </td><td>...<code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1" title="Description"><a name="id449573"></a><h2>Description</h2><p>The <code class="function">ne_buffer_append</code> and
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_buffer_append</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refbuf.html" title="ne_buffer"><link rel="next" href="refbufutil.html" title="ne_buffer_clear"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_buffer_append</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refbuf.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refbufutil.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refbufapp"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_buffer_append, ne_buffer_zappend, ne_buffer_concat — append data to a string buffer</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_string.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_buffer_append</b>(</code></td><td>ne_buffer *<var class="pdparam">buf</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">string</var>, </td></tr><tr><td> </td><td>size_t <var class="pdparam">len</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_buffer_zappend</b>(</code></td><td>ne_buffer *<var class="pdparam">buf</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">string</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_buffer_concat</b>(</code></td><td>ne_buffer *<var class="pdparam">buf</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">str</var>, </td></tr><tr><td> </td><td>...<code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm140368851063664"></a><h2>Description</h2><p>The <code class="function">ne_buffer_append</code> and
<code class="function">ne_buffer_zappend</code> functions append a string to
the end of a buffer; extending the buffer as necessary. The
<code class="parameter">len</code> passed to
argument to mark the end of the list. The strings (including
<code class="parameter">str</code>) are appended to the buffer in the order
given. None of the strings passed to
-<code class="function">ne_buffer_concat</code> are modified.</p></div><div class="refsect1" title="Examples"><a name="id449666"></a><h2>Examples</h2><p>The following code will output "<code class="literal">Hello, world.
+<code class="function">ne_buffer_concat</code> are modified.</p></div><div class="refsect1"><a name="idm140368851052608"></a><h2>Examples</h2><p>The following code will output "<code class="literal">Hello, world.
And goodbye.</code>".</p><pre class="programlisting">ne_buffer *buf = ne_buffer_create();
ne_buffer_zappend(buf, "Hello");
ne_buffer_concat(buf, ", world. ", "And ", "goodbye.", NULL);
puts(buf->data);
-ne_buffer_destroy(buf);</pre></div><div class="refsect1" title="See also"><a name="id449687"></a><h2>See also</h2><p><a class="xref" href="refbuf.html#ne_buffer">ne_buffer</a>, <a class="xref" href="refbufcr.html#ne_buffer_create">ne_buffer_create</a>,
+ne_buffer_destroy(buf);</pre></div><div class="refsect1"><a name="idm140368851050016"></a><h2>See also</h2><p><a class="xref" href="refbuf.html#ne_buffer">ne_buffer</a>, <a class="xref" href="refbufcr.html#ne_buffer_create">ne_buffer_create</a>,
<a class="xref" href="refbufdest.html#ne_buffer_destroy">ne_buffer_destroy</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refbuf.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refbufutil.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_buffer </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_buffer_clear</td></tr></table></div></body></html>
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_buffer_create</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refbufutil.html" title="ne_buffer_clear"><link rel="next" href="refbufdest.html" title="ne_buffer_destroy"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_buffer_create</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refbufutil.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refbufdest.html">Next</a></td></tr></table><hr></div><div class="refentry" title="ne_buffer_create"><a name="refbufcr"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_buffer_create, ne_buffer_ncreate — create a string buffer</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_alloc.h></pre><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">ne_buffer *<b class="fsfunc">ne_buffer_create</b>(</code></td><td><code>void)</code>;</td><td> </td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">ne_buffer *<b class="fsfunc">ne_buffer_ncreate</b>(</code></td><td>size_t <var class="pdparam">size</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1" title="Description"><a name="id450487"></a><h2>Description</h2><p><code class="function">ne_buffer_create</code> creates a new
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_buffer_create</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refbufutil.html" title="ne_buffer_clear"><link rel="next" href="refbufdest.html" title="ne_buffer_destroy"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_buffer_create</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refbufutil.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refbufdest.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refbufcr"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_buffer_create, ne_buffer_ncreate — create a string buffer</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_alloc.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">ne_buffer *<b class="fsfunc">ne_buffer_create</b>(</code></td><td><code>void)</code>;</td><td> </td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">ne_buffer *<b class="fsfunc">ne_buffer_ncreate</b>(</code></td><td>size_t <var class="pdparam">size</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm140368850954256"></a><h2>Description</h2><p><code class="function">ne_buffer_create</code> creates a new
buffer object, with an implementation-defined initial size.
<code class="function">ne_buffer_ncreate</code> creates an
<em class="type">ne_buffer</em> where the minimum initial size is given in the
<code class="parameter">size</code> parameter. The buffer created will
-contain the empty string (<code class="literal">""</code>).</p></div><div class="refsect1" title="Return value"><a name="id450519"></a><h2>Return value</h2><p>Both functions return a pointer to a new buffer object,
-and never <code class="literal">NULL</code>.</p></div><div class="refsect1" title="See also"><a name="id450535"></a><h2>See also</h2><p><a class="xref" href="refbuf.html#ne_buffer">ne_buffer</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refbufutil.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refbufdest.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_buffer_clear </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_buffer_destroy</td></tr></table></div></body></html>
+contain the empty string (<code class="literal">""</code>).</p></div><div class="refsect1"><a name="idm140368850950256"></a><h2>Return value</h2><p>Both functions return a pointer to a new buffer object,
+and never <code class="literal">NULL</code>.</p></div><div class="refsect1"><a name="idm140368850948400"></a><h2>See also</h2><p><a class="xref" href="refbuf.html#ne_buffer">ne_buffer</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refbufutil.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refbufdest.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_buffer_clear </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_buffer_destroy</td></tr></table></div></body></html>
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_buffer_destroy</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refbufcr.html" title="ne_buffer_create"><link rel="next" href="referr.html" title="ne_get_error"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_buffer_destroy</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refbufcr.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="referr.html">Next</a></td></tr></table><hr></div><div class="refentry" title="ne_buffer_destroy"><a name="refbufdest"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_buffer_destroy, ne_buffer_finish — destroy a buffer object</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_string.h></pre><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void <b class="fsfunc">ne_buffer_destroy</b>(</code></td><td>ne_buffer *<var class="pdparam">buf</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">char *<b class="fsfunc">ne_buffer_finish</b>(</code></td><td>ne_buffer *<var class="pdparam">buf</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1" title="Description"><a name="id450787"></a><h2>Description</h2><p><code class="function">ne_buffer_destroy</code> frees all memory
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_buffer_destroy</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refbufcr.html" title="ne_buffer_create"><link rel="next" href="referr.html" title="ne_get_error"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_buffer_destroy</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refbufcr.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="referr.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refbufdest"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_buffer_destroy, ne_buffer_finish — destroy a buffer object</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_string.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_buffer_destroy</b>(</code></td><td>ne_buffer *<var class="pdparam">buf</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">char *<b class="fsfunc">ne_buffer_finish</b>(</code></td><td>ne_buffer *<var class="pdparam">buf</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm140368850917856"></a><h2>Description</h2><p><code class="function">ne_buffer_destroy</code> frees all memory
associated with the buffer. <code class="function">ne_buffer_finish</code>
frees the buffer structure, but not the actual string stored in the
buffer, which is returned and must be <code class="function">free</code>()d by
the caller.</p><p>Any use of the buffer object after calling either of these
-functions gives undefined behaviour.</p></div><div class="refsect1" title="Return value"><a name="id450816"></a><h2>Return value</h2><p><code class="function">ne_buffer_finish</code> returns the
-<code class="function">malloc</code>-allocated string stored in the buffer.</p></div><div class="refsect1" title="Examples"><a name="id450835"></a><h2>Examples</h2><p>An example use of <code class="function">ne_buffer_finish</code>;
+functions gives undefined behaviour.</p></div><div class="refsect1"><a name="idm140368850914336"></a><h2>Return value</h2><p><code class="function">ne_buffer_finish</code> returns the
+<code class="function">malloc</code>-allocated string stored in the buffer.</p></div><div class="refsect1"><a name="idm140368850912064"></a><h2>Examples</h2><p>An example use of <code class="function">ne_buffer_finish</code>;
the <code class="function">duplicate</code> function returns a string made up of
<code class="parameter">n</code> copies of <code class="parameter">str</code>:</p><pre class="programlisting">static char *duplicate(int n, const char *str)
{
ne_buffer_zappend(buf, str);
}
return ne_buffer_finish(buf);
-}</pre></div><div class="refsect1" title="See also"><a name="id450872"></a><h2>See also</h2><p><a class="xref" href="refbuf.html#ne_buffer">ne_buffer</a>, <a class="xref" href="refbufcr.html#ne_buffer_create">ne_buffer_create</a>,
+}</pre></div><div class="refsect1"><a name="idm140368850907600"></a><h2>See also</h2><p><a class="xref" href="refbuf.html#ne_buffer">ne_buffer</a>, <a class="xref" href="refbufcr.html#ne_buffer_create">ne_buffer_create</a>,
<a class="xref" href="refbufapp.html#ne_buffer_zappend">ne_buffer_zappend</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refbufcr.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="referr.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_buffer_create </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_get_error</td></tr></table></div></body></html>
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_buffer_clear</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refbufapp.html" title="ne_buffer_append"><link rel="next" href="refbufcr.html" title="ne_buffer_create"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_buffer_clear</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refbufapp.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refbufcr.html">Next</a></td></tr></table><hr></div><div class="refentry" title="ne_buffer_clear"><a name="refbufutil"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_buffer_clear, ne_buffer_grow, ne_buffer_altered — clear, grow, or mark as altered a string buffer</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_string.h></pre><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void <b class="fsfunc">ne_buffer_clear</b>(</code></td><td>ne_buffer *<var class="pdparam">buf</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void <b class="fsfunc">ne_buffer_altered</b>(</code></td><td>ne_buffer *<var class="pdparam">buf</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void <b class="fsfunc">ne_buffer_grow</b>(</code></td><td>ne_buffer *<var class="pdparam">buf</var>, </td></tr><tr><td> </td><td>size_t <var class="pdparam">size</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1" title="Description"><a name="id450133"></a><h2>Description</h2><p>The <code class="function">ne_buffer_clear</code> function sets
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_buffer_clear</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refbufapp.html" title="ne_buffer_append"><link rel="next" href="refbufcr.html" title="ne_buffer_create"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_buffer_clear</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refbufapp.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refbufcr.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refbufutil"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_buffer_clear, ne_buffer_grow, ne_buffer_altered — clear, grow, or mark as altered a string buffer</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_string.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_buffer_clear</b>(</code></td><td>ne_buffer *<var class="pdparam">buf</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_buffer_altered</b>(</code></td><td>ne_buffer *<var class="pdparam">buf</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_buffer_grow</b>(</code></td><td>ne_buffer *<var class="pdparam">buf</var>, </td></tr><tr><td> </td><td>size_t <var class="pdparam">size</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm140368850996656"></a><h2>Description</h2><p>The <code class="function">ne_buffer_clear</code> function sets
the string stored in <code class="parameter">buf</code> to be the empty string
(<code class="literal">""</code>).</p><p>The <code class="function">ne_buffer_altered</code> function must
be used after the string stored in the buffer
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_ssl_cert_identity</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refsockinit.html" title="ne_sock_init"><link rel="next" href="refsslcert2.html" title="ne_ssl_cert_cmp"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_ssl_cert_identity</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refsockinit.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refsslcert2.html">Next</a></td></tr></table><hr></div><div class="refentry" title="ne_ssl_cert_identity"><a name="refcert"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_ssl_cert_identity, ne_ssl_cert_signedby, ne_ssl_cert_issuer, ne_ssl_cert_subject — functions to access certificate properties</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_ssl.h></pre><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">const char *<b class="fsfunc">ne_ssl_cert_identity</b>(</code></td><td>const ne_ssl_certificate *<var class="pdparam">cert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">const ne_ssl_certificate *<b class="fsfunc">ne_ssl_cert_signedby</b>(</code></td><td>const ne_ssl_certificate *<var class="pdparam">cert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">const ne_ssl_dname *<b class="fsfunc">ne_ssl_cert_subject</b>(</code></td><td>const ne_ssl_certificate *<var class="pdparam">cert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">const ne_ssl_dname *<b class="fsfunc">ne_ssl_cert_issuer</b>(</code></td><td>const ne_ssl_certificate *<var class="pdparam">cert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1" title="Description"><a name="id460591"></a><h2>Description</h2><p>The function <code class="function">ne_ssl_cert_identity</code>
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_ssl_cert_identity</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refsockinit.html" title="ne_sock_init"><link rel="next" href="refsslcert2.html" title="ne_ssl_cert_cmp"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_ssl_cert_identity</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refsockinit.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refsslcert2.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refcert"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_ssl_cert_identity, ne_ssl_cert_signedby, ne_ssl_cert_issuer, ne_ssl_cert_subject — functions to access certificate properties</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_ssl.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">const char *<b class="fsfunc">ne_ssl_cert_identity</b>(</code></td><td>const ne_ssl_certificate *<var class="pdparam">cert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">const ne_ssl_certificate *<b class="fsfunc">ne_ssl_cert_signedby</b>(</code></td><td>const ne_ssl_certificate *<var class="pdparam">cert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">const ne_ssl_dname *<b class="fsfunc">ne_ssl_cert_subject</b>(</code></td><td>const ne_ssl_certificate *<var class="pdparam">cert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">const ne_ssl_dname *<b class="fsfunc">ne_ssl_cert_issuer</b>(</code></td><td>const ne_ssl_certificate *<var class="pdparam">cert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm140368849620128"></a><h2>Description</h2><p>The function <code class="function">ne_ssl_cert_identity</code>
retrieves the <span class="quote">“<span class="quote">identity</span>”</span> of a certificate; for an
SSL server certificate, this will be the hostname for which the
certificate was issued. In PKI parlance, the identity is the
<code class="function">ne_ssl_cert_signedby</code> can be used to find the
certificate which signed a particular certificate. For a
self-signed certificate or a certificate for which the full chain
- is not available, this function will return <code class="literal">NULL</code>.</p></div><div class="refsect1" title="Return value"><a name="id460645"></a><h2>Return value</h2><p><code class="function">ne_ssl_cert_issuer</code> and
+ is not available, this function will return <code class="literal">NULL</code>.</p></div><div class="refsect1"><a name="idm140368849613760"></a><h2>Return value</h2><p><code class="function">ne_ssl_cert_issuer</code> and
<code class="function">ne_ssl_cert_subject</code> are guaranteed to never
return <code class="literal">NULL</code>. <code class="function">ne_ssl_cert_identity</code> may
return <code class="literal">NULL</code> if the certificate has no specific
<span class="quote">“<span class="quote">identity</span>”</span>. <code class="function">ne_ssl_cert_signedby</code>
- may return <code class="literal">NULL</code> as covered above.</p></div><div class="refsect1" title="Examples"><a name="id460694"></a><h2>Examples</h2><p>The following function could be used to display information
+ may return <code class="literal">NULL</code> as covered above.</p></div><div class="refsect1"><a name="idm140368849607984"></a><h2>Examples</h2><p>The following function could be used to display information
about a given certificate:</p><pre class="programlisting">void dump_cert(const ne_ssl_certificate *cert) {
const char *id = ne_ssl_cert_identity(cert);
char *dn;
dn = ne_ssl_readable_dname(ne_ssl_cert_issuer(cert));
printf("Issuer: %s\n", dn);
free(dn);
-}</pre></div><div class="refsect1" title="See also"><a name="id460712"></a><h2>See also</h2><p><a class="xref" href="refsslcert2.html#ne_ssl_cert_cmp">ne_ssl_cert_cmp</a>, <a class="xref" href="refssldname.html#ne_ssl_readable_dname">ne_ssl_readable_dname</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refsockinit.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refsslcert2.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_sock_init </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_ssl_cert_cmp</td></tr></table></div></body></html>
+}</pre></div><div class="refsect1"><a name="idm140368849605712"></a><h2>See also</h2><p><a class="xref" href="refsslcert2.html#ne_ssl_cert_cmp">ne_ssl_cert_cmp</a>, <a class="xref" href="refssldname.html#ne_ssl_readable_dname">ne_ssl_readable_dname</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refsockinit.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refsslcert2.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_sock_init </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_ssl_cert_cmp</td></tr></table></div></body></html>
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_ssl_client_cert</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refsslvfy.html" title="ne_ssl_set_verify"><link rel="next" href="refstatus.html" title="ne_status"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_ssl_client_cert</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refsslvfy.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refstatus.html">Next</a></td></tr></table><hr></div><div class="refentry" title="ne_ssl_client_cert"><a name="refclicert"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_ssl_clicert_read, ne_ssl_clicert_name, ne_ssl_clicert_encrypted, ne_ssl_clicert_decrypt, ne_ssl_clicert_owner, ne_ssl_clicert_free — SSL client certificate handling</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_ssl.h></pre><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">ne_ssl_client_cert *<b class="fsfunc">ne_ssl_clicert_read</b>(</code></td><td>const char *<var class="pdparam">filename</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">const char *<b class="fsfunc">ne_ssl_clicert_name</b>(</code></td><td>const ne_ssl_client_cert *<var class="pdparam">ccert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">int <b class="fsfunc">ne_ssl_clicert_encrypted</b>(</code></td><td>const ne_ssl_client_cert *<var class="pdparam">ccert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">int <b class="fsfunc">ne_ssl_clicert_decrypt</b>(</code></td><td>ne_ssl_client_cert *<var class="pdparam">ccert</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">password</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">const ne_ssl_certificate *<b class="fsfunc">ne_ssl_clicert_owner</b>(</code></td><td>const ne_ssl_client_cert *<var class="pdparam">ccert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void <b class="fsfunc">ne_ssl_clicert_free</b>(</code></td><td>ne_ssl_client_cert *<var class="pdparam">ccert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1" title="Description"><a name="id463433"></a><h2>Description</h2><p>The <code class="function">ne_ssl_clicert_read</code> function reads
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_ssl_client_cert</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refsslvfy.html" title="ne_ssl_set_verify"><link rel="next" href="refstatus.html" title="ne_status"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_ssl_client_cert</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refsslvfy.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refstatus.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refclicert"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_ssl_clicert_read, ne_ssl_clicert_name, ne_ssl_clicert_encrypted, ne_ssl_clicert_decrypt, ne_ssl_clicert_owner, ne_ssl_clicert_free — SSL client certificate handling</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_ssl.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">ne_ssl_client_cert *<b class="fsfunc">ne_ssl_clicert_read</b>(</code></td><td>const char *<var class="pdparam">filename</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">const char *<b class="fsfunc">ne_ssl_clicert_name</b>(</code></td><td>const ne_ssl_client_cert *<var class="pdparam">ccert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">ne_ssl_clicert_encrypted</b>(</code></td><td>const ne_ssl_client_cert *<var class="pdparam">ccert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">ne_ssl_clicert_decrypt</b>(</code></td><td>ne_ssl_client_cert *<var class="pdparam">ccert</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">password</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">const ne_ssl_certificate *<b class="fsfunc">ne_ssl_clicert_owner</b>(</code></td><td>const ne_ssl_client_cert *<var class="pdparam">ccert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_ssl_clicert_free</b>(</code></td><td>ne_ssl_client_cert *<var class="pdparam">ccert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm140368849278752"></a><h2>Description</h2><p>The <code class="function">ne_ssl_clicert_read</code> function reads
a <em class="firstterm">client certificate</em> from a
PKCS#12-formatted file, and returns an
<em class="type">ne_ssl_client_cert</em> object. If the client
only be called if the client certificate is in the
<span class="emphasis"><em>decrypted</em></span> state.</p><p>When the client certificate is no longer needed, the
<code class="function">ne_ssl_clicert_free</code> function should be used
- to destroy the object.</p></div><div class="refsect1" title="Return value"><a name="id463544"></a><h2>Return value</h2><p><code class="function">ne_ssl_clicert_read</code> returns a client
+ to destroy the object.</p></div><div class="refsect1"><a name="idm140368849265552"></a><h2>Return value</h2><p><code class="function">ne_ssl_clicert_read</code> returns a client
certificate object, or <code class="literal">NULL</code> if the file could not be read.
<code class="function">ne_ssl_clicert_encrypted</code> returns zero if the
object is in the decrypted state, or non-zero if it is in the
encrypted state. <code class="function">ne_ssl_clicert_name</code> returns
a <code class="literal">NUL</code>-terminated friendly name string, or <code class="literal">NULL</code>.
<code class="function">ne_ssl_clicert_owner</code> returns a certificate
- object.</p></div><div class="refsect1" title="Examples"><a name="id463590"></a><h2>Examples</h2><p>The following code reads a client certificate and decrypts
+ object.</p></div><div class="refsect1"><a name="idm140368849260032"></a><h2>Examples</h2><p>The following code reads a client certificate and decrypts
it if necessary, then loads it into an HTTP session.</p><pre class="programlisting">ne_ssl_client_cert *ccert;
ccert = ne_ssl_clicert_read("/path/to/client.p12");
}
ne_ssl_set_clicert(sess, ccert);
-</pre></div><div class="refsect1" title="See also"><a name="id463609"></a><h2>See also</h2><p><a class="xref" href="refsslcertio.html#ne_ssl_cert_read">ne_ssl_cert_read</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refsslvfy.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refstatus.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_ssl_set_verify </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_status</td></tr></table></div></body></html>
+</pre></div><div class="refsect1"><a name="idm140368849257760"></a><h2>See also</h2><p><a class="xref" href="refsslcertio.html#ne_ssl_cert_read">ne_ssl_cert_read</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refsslvfy.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refstatus.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_ssl_set_verify </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_status</td></tr></table></div></body></html>
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>neon-config</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refneon.html" title="neon"><link rel="next" href="refresolve.html" title="ne_addr_resolve"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">neon-config</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refneon.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refresolve.html">Next</a></td></tr></table><hr></div><div class="refentry" title="neon-config"><a name="refconfig"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>neon-config — script providing information about installed copy
- of neon library</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis"><p><code class="command">neon-config</code> [<code class="option">--prefix</code>] [[<code class="option">--cflags</code>] | [<code class="option">--libs</code>] | [<code class="option">--la-file</code>] | [<code class="option">--support</code> <em class="replaceable"><code>feature</code></em>] | [<code class="option">--help</code>] | [<code class="option">--version</code>]]</p></div></div><div class="refsect1" title="Description"><a name="id447774"></a><h2>Description</h2><p>The <span class="command"><strong>neon-config</strong></span> script provides
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>neon-config</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refneon.html" title="neon"><link rel="next" href="refresolve.html" title="ne_addr_resolve"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">neon-config</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refneon.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refresolve.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refconfig"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>neon-config — script providing information about installed copy
+ of neon library</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis"><p><code class="command">neon-config</code> [<code class="option">--prefix</code>] [[<code class="option">--cflags</code>] | [<code class="option">--libs</code>] | [<code class="option">--la-file</code>] | [<code class="option">--support</code> <em class="replaceable"><code>feature</code></em>] | [<code class="option">--help</code>] | [<code class="option">--version</code>]]</p></div></div><div class="refsect1"><a name="idm140368851280528"></a><h2>Description</h2><p>The <span class="command"><strong>neon-config</strong></span> script provides
information about an installed copy of the neon library. The
<code class="option">--cflags</code> and <code class="option">--libs</code> options instruct
how to compile and link an application against the library; the
<code class="option">--version</code> and <code class="option">--support</code> options can
help determine whether the library meets the applications
-requirements.</p></div><div class="refsect1" title="Options"><a name="id447804"></a><h2>Options</h2><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><p><span class="term"><code class="option">--cflags</code></span></p></td><td>Print the flags which should be passed to
+requirements.</p></div><div class="refsect1"><a name="idm140368851276928"></a><h2>Options</h2><div class="variablelist"><table border="0" class="variablelist"><colgroup><col align="left" valign="top"><col></colgroup><tbody><tr><td><p><span class="term"><code class="option">--cflags</code></span></p></td><td>Print the flags which should be passed to
the C compiler when compiling object files, when the object files use
neon header files.</td></tr><tr><td><p><span class="term"><code class="option">--libs</code></span></p></td><td>Print the flags which should be passed to
the linker when linking an application which uses the neon
installation prefix of the library.</td></tr><tr><td><p><span class="term"><code class="option">--support</code> <em class="replaceable"><code>feature</code></em></span></p></td><td>The script exits with success if
<em class="replaceable"><code>feature</code></em> is supported by the
library.</td></tr><tr><td><p><span class="term"><code class="option">--help</code></span></p></td><td>Print help message; includes list of known
- features and whether they are supported or not.</td></tr></tbody></table></div></div><div class="refsect1" title="Example"><a name="example"></a><h2>Example</h2><p>Below is a Makefile fragment which could be used to
+ features and whether they are supported or not.</td></tr></tbody></table></div></div><div class="refsect1"><a name="example"></a><h2>Example</h2><p>Below is a Makefile fragment which could be used to
build an application against an installed neon library, when the
<span class="command"><strong>neon-config</strong></span> script can be found in
<code class="envar">$PATH</code>.</p><pre class="programlisting">CFLAGS = `neon-config --cflags`
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_get_error</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refbufdest.html" title="ne_buffer_destroy"><link rel="next" href="refgetst.html" title="ne_get_status"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_get_error</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refbufdest.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refgetst.html">Next</a></td></tr></table><hr></div><div class="refentry" title="ne_get_error"><a name="referr"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_get_error, ne_set_error — error handling for HTTP sessions</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_session.h></pre><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">const char *<b class="fsfunc">ne_get_error</b>(</code></td><td>ne_sesssion *<var class="pdparam">session</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void <b class="fsfunc">ne_set_error</b>(</code></td><td>ne_sesssion *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">format</var>, </td></tr><tr><td> </td><td>...<code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1" title="Description"><a name="id451200"></a><h2>Description</h2><p>The session error string is used to store any
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_get_error</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refbufdest.html" title="ne_buffer_destroy"><link rel="next" href="refgetst.html" title="ne_get_status"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_get_error</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refbufdest.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refgetst.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="referr"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_get_error, ne_set_error — error handling for HTTP sessions</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_session.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">const char *<b class="fsfunc">ne_get_error</b>(</code></td><td>ne_sesssion *<var class="pdparam">session</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_set_error</b>(</code></td><td>ne_sesssion *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">format</var>, </td></tr><tr><td> </td><td>...<code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm140368850867888"></a><h2>Description</h2><p>The session error string is used to store any
human-readable error information associated with any errors which
occur whilst using the HTTP session.</p><p>The <code class="function">ne_get_error</code> function returns
the current session error string. This string persists only
translated into the user's current locale.</p><p>The <code class="function">ne_set_error</code> function can be
used to set a new session error string, using a
<code class="function">printf</code>-style format string
- interface.</p></div><div class="refsect1" title="Return value"><a name="id451241"></a><h2>Return value</h2><p><code class="function">ne_set_error</code> returns a constant
+ interface.</p></div><div class="refsect1"><a name="idm140368850863184"></a><h2>Return value</h2><p><code class="function">ne_set_error</code> returns a constant
<code class="literal">NUL</code>-terminated string. In the default English locale, the
returned string will <span class="emphasis"><em>not</em></span> have a
- terminating <span class="quote">“<span class="quote">.</span>”</span> period character.</p></div><div class="refsect1" title="Examples"><a name="id451267"></a><h2>Examples</h2><p>Retrieve the current error string:</p><pre class="programlisting">ne_session *sess = ne_session_create(...);
+ terminating <span class="quote">“<span class="quote">.</span>”</span> period character.</p></div><div class="refsect1"><a name="idm140368850860048"></a><h2>Examples</h2><p>Retrieve the current error string:</p><pre class="programlisting">ne_session *sess = ne_session_create(...);
...
printf("Error was: %s\n", ne_get_error(sess));</pre><p>Set a new error string:</p><pre class="programlisting">ne_session *sess = ne_session_create(...);
...
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_has_support</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refgetst.html" title="ne_get_status"><link rel="next" href="refi18n.html" title="ne_i18n_init"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_has_support</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refgetst.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refi18n.html">Next</a></td></tr></table><hr></div><div class="refentry" title="ne_has_support"><a name="reffeat"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_has_support — determine feature support status</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_utils.h></pre><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">int <b class="fsfunc">ne_has_support</b>(</code></td><td>int <var class="pdparam">feature</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1" title="Description"><a name="id451844"></a><h2>Description</h2><p>The <code class="function">ne_has_support</code> function can be used
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_has_support</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refgetst.html" title="ne_get_status"><link rel="next" href="refi18n.html" title="ne_i18n_init"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_has_support</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refgetst.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refi18n.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="reffeat"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_has_support — determine feature support status</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_utils.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">ne_has_support</b>(</code></td><td>int <var class="pdparam">feature</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm140368850791104"></a><h2>Description</h2><p>The <code class="function">ne_has_support</code> function can be used
to determine whether a particular optional feature, given by the
feature code <code class="parameter">feature</code>, is supported. The
following feature codes are available:
- </p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><p><span class="term"><code class="constant">NE_FEATURE_SSL</code></span></p></td><td>Indicates support for SSL/TLS</td></tr><tr><td><p><span class="term"><code class="constant">NE_FEATURE_ZLIB</code></span></p></td><td>Indicates support for compressed responses</td></tr><tr><td><p><span class="term"><code class="constant">NE_FEATURE_IPV6</code></span></p></td><td>Indicates support for IPv6</td></tr><tr><td><p><span class="term"><code class="constant">NE_FEATURE_LFS</code></span></p></td><td>Indicates support for large files</td></tr><tr><td><p><span class="term"><code class="constant">NE_FEATURE_SOCKS</code></span></p></td><td>Indicates support for SOCKSv5</td></tr><tr><td><p><span class="term"><code class="constant">NE_FEATURE_TS_SSL</code></span></p></td><td>Indicates support for thread-safe SSL
+ </p><div class="variablelist"><table border="0" class="variablelist"><colgroup><col align="left" valign="top"><col></colgroup><tbody><tr><td><p><span class="term"><code class="constant">NE_FEATURE_SSL</code></span></p></td><td>Indicates support for SSL/TLS</td></tr><tr><td><p><span class="term"><code class="constant">NE_FEATURE_ZLIB</code></span></p></td><td>Indicates support for compressed responses</td></tr><tr><td><p><span class="term"><code class="constant">NE_FEATURE_IPV6</code></span></p></td><td>Indicates support for IPv6</td></tr><tr><td><p><span class="term"><code class="constant">NE_FEATURE_LFS</code></span></p></td><td>Indicates support for large files</td></tr><tr><td><p><span class="term"><code class="constant">NE_FEATURE_SOCKS</code></span></p></td><td>Indicates support for SOCKSv5</td></tr><tr><td><p><span class="term"><code class="constant">NE_FEATURE_TS_SSL</code></span></p></td><td>Indicates support for thread-safe SSL
initialization — see <a class="xref" href="refsockinit.html#ne_sock_init">ne_sock_init</a></td></tr></tbody></table></div><p>
- </p></div><div class="refsect1" title="Return value"><a name="id451955"></a><h2>Return value</h2><p><code class="function">ne_has_support</code> returns non-zero if
- the given feature is supported, or zero otherwise.</p></div><div class="refsect1" title="See also"><a name="id451969"></a><h2>See also</h2><p><a class="xref" href="refvers.html" title="ne_version_match"><span class="refentrytitle">ne_version_match</span></a>, <a class="xref" href="refsockinit.html" title="ne_sock_init"><span class="refentrytitle">ne_sock_init</span></a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refgetst.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refi18n.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_get_status </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_i18n_init</td></tr></table></div></body></html>
+ </p></div><div class="refsect1"><a name="idm140368850777840"></a><h2>Return value</h2><p><code class="function">ne_has_support</code> returns non-zero if
+ the given feature is supported, or zero otherwise.</p></div><div class="refsect1"><a name="idm140368850776096"></a><h2>See also</h2><p><a class="xref" href="refvers.html" title="ne_version_match"><span class="refentrytitle">ne_version_match</span></a>, <a class="xref" href="refsockinit.html" title="ne_sock_init"><span class="refentrytitle">ne_sock_init</span></a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refgetst.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refi18n.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_get_status </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_i18n_init</td></tr></table></div></body></html>
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_get_status</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="referr.html" title="ne_get_error"><link rel="next" href="reffeat.html" title="ne_has_support"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_get_status</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="referr.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="reffeat.html">Next</a></td></tr></table><hr></div><div class="refentry" title="ne_get_status"><a name="refgetst"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_get_status — retrieve HTTP response status for request</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_request.h></pre><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">const ne_status *<b class="fsfunc">ne_get_status</b>(</code></td><td>const ne_request *<var class="pdparam">request</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1" title="Description"><a name="id451137"></a><h2>Description</h2><p>The <code class="function">ne_get_status</code> function returns
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_get_status</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="referr.html" title="ne_get_error"><link rel="next" href="reffeat.html" title="ne_has_support"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_get_status</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="referr.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="reffeat.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refgetst"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_get_status — retrieve HTTP response status for request</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_request.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">const ne_status *<b class="fsfunc">ne_get_status</b>(</code></td><td>const ne_request *<var class="pdparam">request</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm140368850876304"></a><h2>Description</h2><p>The <code class="function">ne_get_status</code> function returns
a pointer to the HTTP status object giving the result of a request.
The object returned only becomes valid once the request has been
<span class="emphasis"><em>successfully</em></span> dispatched (the return value of
<code class="function">ne_request_dispatch</code> or
<code class="function">ne_begin_request</code> was zero). The object remains
-valid until the associated request object is destroyed.</p></div><div class="refsect1" title="See also"><a name="id451600"></a><h2>See also</h2><p><a class="xref" href="refstatus.html#ne_status">ne_status</a>, <a class="xref" href="refreq.html#ne_request_create">ne_request_create</a></p></div><div class="refsect1" title="Example"><a name="id451616"></a><h2>Example</h2><p>Display the response status code of applying the
+valid until the associated request object is destroyed.</p></div><div class="refsect1"><a name="idm140368850820464"></a><h2>See also</h2><p><a class="xref" href="refstatus.html#ne_status">ne_status</a>, <a class="xref" href="refreq.html#ne_request_create">ne_request_create</a></p></div><div class="refsect1"><a name="idm140368850818576"></a><h2>Example</h2><p>Display the response status code of applying the
<code class="literal">HEAD</code> method to some resource.</p><pre class="programlisting">ne_request *req = ne_request_create(sess, "HEAD", "/foo/bar");
if (ne_request_dispatch(req))
/* handle errors... */
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_i18n_init</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="reffeat.html" title="ne_has_support"><link rel="next" href="refiaddr.html" title="ne_iaddr_make"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_i18n_init</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="reffeat.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refiaddr.html">Next</a></td></tr></table><hr></div><div class="refentry" title="ne_i18n_init"><a name="refi18n"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_i18n_init — functions to initialize internationalization support</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_i18n.h></pre><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void <b class="fsfunc">ne_i18n_init</b>(</code></td><td>const char *<var class="pdparam">encoding</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1" title="Description"><a name="id452273"></a><h2>Description</h2><p>The <code class="function">ne_i18n_init</code> function can be used
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_i18n_init</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="reffeat.html" title="ne_has_support"><link rel="next" href="refiaddr.html" title="ne_iaddr_make"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_i18n_init</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="reffeat.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refiaddr.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refi18n"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_i18n_init — functions to initialize internationalization support</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_i18n.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_i18n_init</b>(</code></td><td>const char *<var class="pdparam">encoding</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm140368850739712"></a><h2>Description</h2><p>The <code class="function">ne_i18n_init</code> function can be used
to enable support for translated messages in the neon library.
The <code class="parameter">encoding</code> parameter, if non-<code class="literal">NULL</code>,
specifies the character encoding required for generated translated
will otherwise operate correctly.</p><p>Note that the encoding used is a process-global setting and
so results may be unexpected if other users of neon within the
process call <code class="function">ne_i18n_init</code> with a different
- encoding parameter.</p></div><div class="refsect1" title="See also"><a name="id452354"></a><h2>See also</h2><p><a class="xref" href="refsockinit.html#ne_sock_init">ne_sock_init</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="reffeat.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refiaddr.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_has_support </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_iaddr_make</td></tr></table></div></body></html>
+ encoding parameter.</p></div><div class="refsect1"><a name="idm140368850730176"></a><h2>See also</h2><p><a class="xref" href="refsockinit.html#ne_sock_init">ne_sock_init</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="reffeat.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refiaddr.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_has_support </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_iaddr_make</td></tr></table></div></body></html>
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_iaddr_make</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refi18n.html" title="ne_i18n_init"><link rel="next" href="refalloc.html" title="ne_malloc"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_iaddr_make</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refi18n.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refalloc.html">Next</a></td></tr></table><hr></div><div class="refentry" title="ne_iaddr_make"><a name="refiaddr"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_iaddr_make, ne_iaddr_cmp, ne_iaddr_print, ne_iaddr_typeof, ne_iaddr_parse, ne_iaddr_raw, ne_iaddr_reverse, ne_iaddr_free — functions to manipulate network addresses</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_socket.h>
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_iaddr_make</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refi18n.html" title="ne_i18n_init"><link rel="next" href="refalloc.html" title="ne_malloc"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_iaddr_make</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refi18n.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refalloc.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refiaddr"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_iaddr_make, ne_iaddr_cmp, ne_iaddr_print, ne_iaddr_typeof, ne_iaddr_parse, ne_iaddr_raw, ne_iaddr_reverse, ne_iaddr_free — functions to manipulate network addresses</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_socket.h>
typedef enum {
ne_iaddr_ipv4 = 0,
ne_iaddr_ipv6
-} <em class="type">ne_iaddr_type</em>;</pre><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">ne_inet_addr *<b class="fsfunc">ne_iaddr_make</b>(</code></td><td>ne_iaddr_type <var class="pdparam">type</var>, </td></tr><tr><td> </td><td>const unsigned char *<var class="pdparam">raw</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">int <b class="fsfunc">ne_iaddr_cmp</b>(</code></td><td>const ne_inet_addr *<var class="pdparam">ia1</var>, </td></tr><tr><td> </td><td>const ne_inet_addr *<var class="pdparam">ia2</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">char *<b class="fsfunc">ne_iaddr_print</b>(</code></td><td>const ne_inet_addr *<var class="pdparam">ia</var>, </td></tr><tr><td> </td><td>char *<var class="pdparam">buffer</var>, </td></tr><tr><td> </td><td>size_t <var class="pdparam">bufsiz</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">ne_iaddr_type <b class="fsfunc">ne_iaddr_typeof</b>(</code></td><td>const ne_inet_addr *<var class="pdparam">ia</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">ne_inet_addr *<b class="fsfunc">ne_iaddr_parse</b>(</code></td><td>const char *<var class="pdparam">address</var>, </td></tr><tr><td> </td><td>ne_iaddr_type <var class="pdparam">type</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">unsigned char *<b class="fsfunc">ne_iaddr_raw</b>(</code></td><td>const ne_inet_addr *<var class="pdparam">ia</var>, </td></tr><tr><td> </td><td>unsigned char *<var class="pdparam">buffer</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">int <b class="fsfunc">ne_iaddr_reverse</b>(</code></td><td>const ne_inet_addr *<var class="pdparam">ia</var>, </td></tr><tr><td> </td><td>char *<var class="pdparam">buffer</var>, </td></tr><tr><td> </td><td>size_t <var class="pdparam">buflen</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void <b class="fsfunc">ne_iaddr_free</b>(</code></td><td>const ne_inet_addr *<var class="pdparam">ia</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1" title="Description"><a name="id452819"></a><h2>Description</h2><p><code class="function">ne_iaddr_make</code> creates an
+} <em class="type">ne_iaddr_type</em>;</pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">ne_inet_addr *<b class="fsfunc">ne_iaddr_make</b>(</code></td><td>ne_iaddr_type <var class="pdparam">type</var>, </td></tr><tr><td> </td><td>const unsigned char *<var class="pdparam">raw</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">ne_iaddr_cmp</b>(</code></td><td>const ne_inet_addr *<var class="pdparam">ia1</var>, </td></tr><tr><td> </td><td>const ne_inet_addr *<var class="pdparam">ia2</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">char *<b class="fsfunc">ne_iaddr_print</b>(</code></td><td>const ne_inet_addr *<var class="pdparam">ia</var>, </td></tr><tr><td> </td><td>char *<var class="pdparam">buffer</var>, </td></tr><tr><td> </td><td>size_t <var class="pdparam">bufsiz</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">ne_iaddr_type <b class="fsfunc">ne_iaddr_typeof</b>(</code></td><td>const ne_inet_addr *<var class="pdparam">ia</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">ne_inet_addr *<b class="fsfunc">ne_iaddr_parse</b>(</code></td><td>const char *<var class="pdparam">address</var>, </td></tr><tr><td> </td><td>ne_iaddr_type <var class="pdparam">type</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">unsigned char *<b class="fsfunc">ne_iaddr_raw</b>(</code></td><td>const ne_inet_addr *<var class="pdparam">ia</var>, </td></tr><tr><td> </td><td>unsigned char *<var class="pdparam">buffer</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">ne_iaddr_reverse</b>(</code></td><td>const ne_inet_addr *<var class="pdparam">ia</var>, </td></tr><tr><td> </td><td>char *<var class="pdparam">buffer</var>, </td></tr><tr><td> </td><td>size_t <var class="pdparam">buflen</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_iaddr_free</b>(</code></td><td>const ne_inet_addr *<var class="pdparam">ia</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm140368850673184"></a><h2>Description</h2><p><code class="function">ne_iaddr_make</code> creates an
<em class="type">ne_inet_addr</em> object from a raw binary network
address; for instance the four bytes <code class="literal">0x7f 0x00 0x00
0x01</code> represent the IPv4 address
hostname is longer than the buffer it will be silently truncated;
on success the string written to the buffer is always
<code class="literal">NUL</code>-terminated.</p><p><code class="function">ne_iaddr_free</code> releases the memory
- associated with a network address object.</p></div><div class="refsect1" title="Return value"><a name="id452931"></a><h2>Return value</h2><p><code class="function">ne_iaddr_make</code> returns <code class="literal">NULL</code> if the
+ associated with a network address object.</p></div><div class="refsect1"><a name="idm140368850659840"></a><h2>Return value</h2><p><code class="function">ne_iaddr_make</code> returns <code class="literal">NULL</code> if the
address type passed is not supported (for instance on a platform
which does not support IPv6).</p><p><code class="function">ne_iaddr_print</code> returns the
<code class="parameter">buffer</code> pointer, and never <code class="literal">NULL</code>.</p><p><code class="function">ne_iaddr_parse</code> returns a network
<code class="parameter">address</code> parameter.</p><p><code class="function">ne_iaddr_reverse</code> returns zero on
success or non-zero if no hostname is associated with the
address.</p><p><code class="function">ne_iaddr_raw</code> returns the
- <code class="parameter">buffer</code> parameter, and never <code class="literal">NULL</code>.</p></div><div class="refsect1" title="Examples"><a name="id453012"></a><h2>Examples</h2><p>The following example connects a socket to port 80 at the
+ <code class="parameter">buffer</code> parameter, and never <code class="literal">NULL</code>.</p></div><div class="refsect1"><a name="idm140368850650064"></a><h2>Examples</h2><p>The following example connects a socket to port 80 at the
address <code class="literal">127.0.0.1</code>.</p><pre class="programlisting">unsigned char addr[] = "\0x7f\0x00\0x00\0x01";
ne_inet_addr *ia;
/* ... */
} else {
/* ... */
-}</pre></div><div class="refsect1" title="See also"><a name="id453035"></a><h2>See also</h2><p><a class="xref" href="refresolve.html#ne_addr_resolve">ne_addr_resolve</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refi18n.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refalloc.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_i18n_init </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_malloc</td></tr></table></div></body></html>
+}</pre></div><div class="refsect1"><a name="idm140368850647328"></a><h2>See also</h2><p><a class="xref" href="refresolve.html#ne_addr_resolve">ne_addr_resolve</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refi18n.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refalloc.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_i18n_init </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_malloc</td></tr></table></div></body></html>
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>neon</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="ref.html" title="neon API reference"><link rel="next" href="refconfig.html" title="neon-config"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">neon</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ref.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refconfig.html">Next</a></td></tr></table><hr></div><div class="refentry" title="neon"><a name="refneon"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>neon — HTTP and WebDAV client library</p></div><div class="refsect1" title="Description"><a name="id446181"></a><h2>Description</h2><p>neon is an HTTP and WebDAV client library. The major
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>neon</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="ref.html" title="neon API reference"><link rel="next" href="refconfig.html" title="neon-config"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">neon</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ref.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refconfig.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refneon"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>neon — HTTP and WebDAV client library</p></div><div class="refsect1"><a name="idm140368851469392"></a><h2>Description</h2><p>neon is an HTTP and WebDAV client library. The major
abstractions exposed are the HTTP <span class="emphasis"><em>session</em></span>,
created by <a class="xref" href="refsess.html#ne_session_create">ne_session_create</a>; and the HTTP
<span class="emphasis"><em>request</em></span>, created by <a class="xref" href="refreq.html#ne_request_create">ne_request_create</a>. HTTP authentication is handled
transparently for server and proxy servers, see <a class="xref" href="refauth.html#ne_set_server_auth">ne_set_server_auth</a>; complete SSL/TLS support is also
- included, see <a class="xref" href="refsslvfy.html#ne_ssl_set_verify">ne_ssl_set_verify</a>.</p></div><div class="refsect1" title="Conventions"><a name="id446521"></a><h2>Conventions</h2><p>Some conventions are used throughout the neon API, to
+ included, see <a class="xref" href="refsslvfy.html#ne_ssl_set_verify">ne_ssl_set_verify</a>.</p></div><div class="refsect1"><a name="idm140368851464416"></a><h2>Conventions</h2><p>Some conventions are used throughout the neon API, to
provide a consistent and simple interface; these are documented
- below.</p><div class="refsect2" title="Thread-safeness and global initialization"><a name="id446602"></a><h3>Thread-safeness and global initialization</h3><p>neon itself is implemented to be thread-safe (avoiding any
+ below.</p><div class="refsect2"><a name="idm140368851463248"></a><h3>Thread-safeness and global initialization</h3><p>neon itself is implemented to be thread-safe (avoiding any
use of global state), but relies on the operating system providing
a thread-safe resolver interface. Modern operating systems offer
the thread-safe <code class="function">getaddrinfo</code> interface, which
OpenSSL or GnuTLS.</p><p>Some platforms and libraries used by neon require global
initialization before use; notably:
- </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">The <code class="literal">SIGPIPE</code> signal
+ </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">The <code class="literal">SIGPIPE</code> signal
disposition must be set to <span class="emphasis"><em>ignored</em></span> or
otherwise handled to avoid process termination when writing to a
socket which has been shutdown by the peer.</li><li class="listitem">OpenSSL and GnuTLS require global
(and <a class="xref" href="refsockinit.html#ne_sock_exit">ne_sock_exit</a>); neon neither checks whether
these functions are called nor calls them itself.</p><p>For some applications and configurations it may be necessary
to call <a class="xref" href="refi18n.html#ne_i18n_init">ne_i18n_init</a> to initialize the support
- for internationalization in neon.</p></div><div class="refsect2" title="Asynchronous signal safety"><a name="id446695"></a><h3>Asynchronous signal safety</h3><p>No function in neon is defined to be <span class="quote">“<span class="quote">async-signal safe</span>”</span> -
+ for internationalization in neon.</p></div><div class="refsect2"><a name="idm140368851410560"></a><h3>Asynchronous signal safety</h3><p>No function in neon is defined to be <span class="quote">“<span class="quote">async-signal safe</span>”</span> -
that is, no function is safe to call from a signal handler. Any
call into the neon library from a signal handler will have
undefined behaviour - in other words, it may crash the
- process.</p></div><div class="refsect2" title="Functions using global state"><a name="id446711"></a><h3>Functions using global state</h3><p>Any function in neon may modify the
+ process.</p></div><div class="refsect2"><a name="idm140368851408688"></a><h3>Functions using global state</h3><p>Any function in neon may modify the
<code class="literal">errno</code> global variable as a side-effect. Except
where explicitly documented, the value of <code class="literal">errno</code>
is unspecified after any neon function call.</p><p>Other than in the use of <code class="literal">errno</code>, the only
functions which use or modify process-global state in neon are
as follows:
- </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><a class="xref" href="refsockinit.html#ne_sock_init">ne_sock_init</a>, <a class="xref" href="refi18n.html#ne_i18n_init">ne_i18n_init</a>, and <a class="xref" href="refsockinit.html#ne_sock_exit">ne_sock_exit</a>, as
+ </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><a class="xref" href="refsockinit.html#ne_sock_init">ne_sock_init</a>, <a class="xref" href="refi18n.html#ne_i18n_init">ne_i18n_init</a>, and <a class="xref" href="refsockinit.html#ne_sock_exit">ne_sock_exit</a>, as
described above</li><li class="listitem"><code class="function">ne_debug_init</code> and
<code class="function">ne_debug</code>, if enabled at compile time; for
debugging output</li><li class="listitem"><a class="xref" href="refalloc.html#ne_oom_callback">ne_oom_callback</a> for
installing a process-global callback to be invoked on
- <code class="function">malloc</code> failure</li></ul></div></div><div class="refsect2" title="Namespaces"><a name="id446785"></a><h3>Namespaces</h3><p>To avoid possible collisions between names used for symbols
+ <code class="function">malloc</code> failure</li></ul></div></div><div class="refsect2"><a name="idm140368851399744"></a><h3>Namespaces</h3><p>To avoid possible collisions between names used for symbols
and preprocessor macros by an application and the libraries it
uses, it is good practice for each library to reserve a particular
<span class="emphasis"><em>namespace prefix</em></span>. An application which
collisions can only be detected at link time, when the linker
attempts to resolve symbols. The following list documents some of
the namespaces claimed by libraries used by neon; this list may
- be incomplete.</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><p><span class="term">SSL, ssl, TLS, tls, ERR_, BIO_, d2i_, i2d_, ASN1_</span></p></td><td>Some of the many prefixes used by the OpenSSL
+ be incomplete.</p><div class="variablelist"><table border="0" class="variablelist"><colgroup><col align="left" valign="top"><col></colgroup><tbody><tr><td><p><span class="term">SSL, ssl, TLS, tls, ERR_, BIO_, d2i_, i2d_, ASN1_</span></p></td><td>Some of the many prefixes used by the OpenSSL
library; little attempt has been made to keep exported symbols
within any particular prefixes for this
library.</td></tr><tr><td><p><span class="term">gnutls_, gcry_, gpg_</span></p></td><td>Namespaces used by the GnuTLS library (and
library and dependencies thereof; a number of symbols lie
outside these prefixes.</td></tr><tr><td><p><span class="term">pakchois_</span></p></td><td>Namespace used by the pakchois
library.</td></tr><tr><td><p><span class="term">px_</span></p></td><td>Namespace used by the libproxy
- library.</td></tr></tbody></table></div></div><div class="refsect2" title="Argument validation"><a name="id446915"></a><h3>Argument validation</h3><p>neon does not attempt to validate that the parameters
+ library.</td></tr></tbody></table></div></div><div class="refsect2"><a name="idm140368851384144"></a><h3>Argument validation</h3><p>neon does not attempt to validate that the parameters
passed to functions conform to the API (for instance, checking
that pointer arguments are not <code class="literal">NULL</code>). Any use of the neon API
which is not documented to produce a certain behaviour results is
said to produce <span class="emphasis"><em>undefined behaviour</em></span>; it is
- likely that neon will segfault under these conditions.</p></div><div class="refsect2" title="URI paths, WebDAV metadata"><a name="id446928"></a><h3>URI paths, WebDAV metadata</h3><p>The path strings passed to any function must be
+ likely that neon will segfault under these conditions.</p></div><div class="refsect2"><a name="idm140368851380992"></a><h3>URI paths, WebDAV metadata</h3><p>The path strings passed to any function must be
<span class="emphasis"><em>URI-encoded</em></span> by the application; neon never
performs any URI encoding or decoding internally. WebDAV property
names and values must be valid UTF-8 encoded Unicode
- strings.</p></div><div class="refsect2" title="User interaction"><a name="id446952"></a><h3>User interaction</h3><p>As a pure library interface, neon will never produce
+ strings.</p></div><div class="refsect2"><a name="idm140368851379200"></a><h3>User interaction</h3><p>As a pure library interface, neon will never produce
output on <code class="constant">stdout</code> or
<code class="constant">stderr</code>; all user interaction is the
- responsibilty of the application.</p></div><div class="refsect2" title="Memory handling"><a name="id446973"></a><h3>Memory handling</h3><p>neon does not attempt to cope gracefully with an
+ responsibilty of the application.</p></div><div class="refsect2"><a name="idm140368851376816"></a><h3>Memory handling</h3><p>neon does not attempt to cope gracefully with an
out-of-memory situation; instead, by default, the
<code class="function">abort</code> function is called to immediately
terminate the process. An application may register a custom
function which will be called before <code class="function">abort</code> in
- such a situation; see <a class="xref" href="refalloc.html#ne_oom_callback">ne_oom_callback</a>.</p></div><div class="refsect2" title="Callbacks and userdata"><a name="id447001"></a><h3>Callbacks and userdata</h3><p>Whenever a callback is registered, a
+ such a situation; see <a class="xref" href="refalloc.html#ne_oom_callback">ne_oom_callback</a>.</p></div><div class="refsect2"><a name="idm140368851373296"></a><h3>Callbacks and userdata</h3><p>Whenever a callback is registered, a
<code class="literal">userdata</code> pointer is also used to allow the
application to associate a context with the callback. The
userdata is of type <em class="type">void *</em>, allowing any pointer to
- be used.</p></div><div class="refsect2" title="Large File Support"><a name="id447021"></a><h3>Large File Support</h3><p>Since version 0.27.0, neon transparently uses the "LFS
+ be used.</p></div><div class="refsect2"><a name="idm140368851370848"></a><h3>Large File Support</h3><p>Since version 0.27.0, neon transparently uses the "LFS
transitional" interfaces in places where file-backed file
descriptors are manipulated. This means files larger than 2GiB
can be handled on platforms with a native 32-bit
which is defined to be either <code class="literal">off_t</code> or
<code class="literal">off64_t</code> according to whether LFS support is
detected at build time. neon does not use or require the
- <code class="literal">-D_FILE_OFFSET_BITS=64</code> macro definition.</p></div></div><div class="refsect1" title="See also"><a name="id447067"></a><h2>See also</h2><p><a class="xref" href="refsess.html" title="ne_session_create"><span class="refentrytitle">ne_session_create</span></a>, <a class="xref" href="refalloc.html#ne_oom_callback">ne_oom_callback</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ref.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refconfig.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">neon API reference </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> neon-config</td></tr></table></div></body></html>
+ <code class="literal">-D_FILE_OFFSET_BITS=64</code> macro definition.</p></div></div><div class="refsect1"><a name="idm140368851365408"></a><h2>See also</h2><p><a class="xref" href="refsess.html" title="ne_session_create"><span class="refentrytitle">ne_session_create</span></a>, <a class="xref" href="refalloc.html#ne_oom_callback">ne_oom_callback</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ref.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refconfig.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">neon API reference </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> neon-config</td></tr></table></div></body></html>
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_set_useragent</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refresphdr.html" title="ne_get_response_header"><link rel="next" href="refreqflags.html" title="ne_set_request_flag"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_set_useragent</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refresphdr.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refreqflags.html">Next</a></td></tr></table><hr></div><div class="refentry" title="ne_set_useragent"><a name="refopts"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_set_useragent, ne_set_read_timeout, ne_set_connect_timeout, ne_get_scheme, ne_get_server_hostport — common properties for HTTP sessions</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_session.h></pre><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void <b class="fsfunc">ne_set_useragent</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">product</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void <b class="fsfunc">ne_set_read_timeout</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>int <var class="pdparam">timeout</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void <b class="fsfunc">ne_set_connect_timeout</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>int <var class="pdparam">timeout</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">const char *<b class="fsfunc">ne_get_scheme</b>(</code></td><td>ne_sesssion *<var class="pdparam">session</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">const char *<b class="fsfunc">ne_get_server_hostport</b>(</code></td><td>ne_sesssion *<var class="pdparam">session</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1" title="Description"><a name="id457624"></a><h2>Description</h2><p>The <code class="literal">User-Agent</code> request header is used
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_set_useragent</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refresphdr.html" title="ne_get_response_header"><link rel="next" href="refreqflags.html" title="ne_set_request_flag"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_set_useragent</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refresphdr.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refreqflags.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refopts"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_set_useragent, ne_set_read_timeout, ne_set_connect_timeout, ne_get_scheme, ne_get_server_hostport — common properties for HTTP sessions</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_session.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_set_useragent</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">product</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_set_read_timeout</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>int <var class="pdparam">timeout</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_set_connect_timeout</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>int <var class="pdparam">timeout</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">const char *<b class="fsfunc">ne_get_scheme</b>(</code></td><td>ne_sesssion *<var class="pdparam">session</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">const char *<b class="fsfunc">ne_get_server_hostport</b>(</code></td><td>ne_sesssion *<var class="pdparam">session</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm140368849976592"></a><h2>Description</h2><p>The <code class="literal">User-Agent</code> request header is used
to identify the software which generated the request for statistical
or debugging purposes. neon does not send a
<code class="literal">User-Agent</code> header unless a call is made to the
<code class="function">ne_get_server_hostport</code>; for example
<code class="literal">www.example.com:8080</code>. Note that the
<code class="literal">:port</code> will be omitted if the default port
- for the scheme is used.</p></div><div class="refsect1" title="Examples"><a name="id457734"></a><h2>Examples</h2><p>Set a user-agent string:</p><pre class="programlisting">ne_session *sess = ne_session_create(...);
+ for the scheme is used.</p></div><div class="refsect1"><a name="idm140368849963552"></a><h2>Examples</h2><p>Set a user-agent string:</p><pre class="programlisting">ne_session *sess = ne_session_create(...);
ne_set_useragent(sess, "MyApplication/2.1");</pre><p>Set a 30 second read timeout:</p><pre class="programlisting">ne_session *sess = ne_session_create(...);
-ne_set_read_timeout(sess, 30);</pre></div><div class="refsect1" title="See also"><a name="id457759"></a><h2>See also</h2><p><a class="xref" href="refsess.html#ne_session_create">ne_session_create</a>, <a class="xref" href="refsessflags.html#ne_set_session_flag">ne_set_session_flag</a>.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refresphdr.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refreqflags.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_get_response_header </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_set_request_flag</td></tr></table></div></body></html>
+ne_set_read_timeout(sess, 30);</pre></div><div class="refsect1"><a name="idm140368849960576"></a><h2>See also</h2><p><a class="xref" href="refsess.html#ne_session_create">ne_session_create</a>, <a class="xref" href="refsessflags.html#ne_set_session_flag">ne_set_session_flag</a>.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refresphdr.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refreqflags.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_get_response_header </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_set_request_flag</td></tr></table></div></body></html>
--- /dev/null
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_session_proxy</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refsess.html" title="ne_session_create"><link rel="next" href="refsessflags.html" title="ne_set_session_flag"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_session_proxy</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refsess.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refsessflags.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refproxy"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_session_proxy, ne_session_socks_proxy, ne_session_system_proxy, ne_set_addrlist — configure proxy servers</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_session.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_session_proxy</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">hostname</var>, </td></tr><tr><td> </td><td>unsigned int <var class="pdparam">port</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_session_system_proxy</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>unsigned int <var class="pdparam">flags</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_session_socks_proxy</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>enum ne_sock_sversion <var class="pdparam">version</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">hostname</var>, </td></tr><tr><td> </td><td>unsigned int <var class="pdparam">port</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">username</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">password</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_set_addrlist</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>const ne_inet_addr **<var class="pdparam">addrlist</var>, </td></tr><tr><td> </td><td>size_t <var class="pdparam">count</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm140368850403408"></a><h2>Description</h2><p>One (and no more than one) of the functions
+ <code class="function">ne_session_proxy</code>,
+ <code class="function">ne_session_system_proxy</code>,
+ <code class="function">ne_session_socks_proxy</code>,
+ <code class="function">ne_set_addrlist</code> can be used to configure
+ a proxy server for a given session object. If more than one
+ function is invoked for any given session object, only the
+ last call has effect. If one of the functions is to be used,
+ it must be used before the creation of any request object for
+ the session.</p><div class="refsect2"><a name="idm140368850399584"></a><h3>HTTP proxy specification</h3><p>The <code class="function">ne_session_proxy</code> function
+ configures use of an HTTP proxy server for the session, the
+ location of which is given by the
+ <code class="parameter">hostname</code> and
+ <code class="parameter">port</code> paramters. If the proxy
+ requires authentication, <a class="xref" href="refauth.html#ne_set_proxy_auth">ne_set_proxy_auth</a>
+ should be used.</p></div><div class="refsect2"><a name="idm140368850395840"></a><h3>System proxy configuration</h3><p>The <code class="function">ne_session_system_proxy</code>
+ function configures the session to use any proxy servers
+ specified by the system configuration. Support for this
+ function is platform-specific; if unsupported, the function
+ has no effect.</p></div><div class="refsect2"><a name="idm140368850393824"></a><h3>SOCKS proxy configuration</h3><p>The <code class="function">ne_session_socks_proxy</code>
+ function configures the session to use a SOCKS proxy. The
+ <code class="parameter">version</code> indicates which version of
+ the SOCKS protocol should be used. The
+ <code class="parameter">hostname</code> and
+ <code class="parameter">port</code> parameters specify the SOCKS
+ proxy location. Note that a server with only an IPv6
+ address cannot be used with SOCKS v4 or v4A. The
+ interpretation of the other arguments depends on the version
+ specified:</p><div class="variablelist"><table border="0" class="variablelist"><colgroup><col align="left" valign="top"><col></colgroup><tbody><tr><td><p><span class="term"><code class="constant">NE_SOCK_SOCKSV4</code> (version 4)</span></p></td><td>The <code class="parameter">username</code> parameter
+ must be non-<code class="literal">NULL</code>; the <code class="parameter">password</code>
+ parameter is ignored.</td></tr><tr><td><p><span class="term"><code class="constant">NE_SOCK_SOCKSV4A</code> (version 4A)</span></p></td><td>The <code class="parameter">username</code> parameter
+ must be non-<code class="literal">NULL</code>; the <code class="parameter">password</code>
+ parameter is ignored.</td></tr><tr><td><p><span class="term"><code class="constant">NE_SOCK_SOCKSV5</code> (version 5)</span></p></td><td>The <code class="parameter">username</code> parameter
+ may be <code class="literal">NULL</code>; if it is non-<code class="literal">NULL</code>,
+ the <code class="parameter">password</code> parameter must also
+ be non-<code class="literal">NULL</code>; otherwise, it is ignored..</td></tr></tbody></table></div></div><div class="refsect2"><a name="idm140368850377472"></a><h3>Origin server address override</h3><p>The <code class="function">ne_set_addrlist</code> function
+ forces use of an address and port the a specified list when
+ establishing a TCP connection, ignoring the "real" hostname
+ and port identifying the origin server for the session (as
+ passed to <code class="function">ne_session_create</code>). The
+ origin server's "real" hostname and port will still be used
+ in the <code class="literal">Host</code> header in HTTP requests.
+ When a connection is required, the library will iterate
+ through the <code class="parameter">addrlist</code> list, attempting
+ to connect to the address <code class="parameter">addrlist[0]</code>
+ through to <code class="parameter">addrlist[count-1]</code> in turn,
+ until a connection can be established.</p></div></div><div class="refsect1"><a name="idm140368850371872"></a><h2>Return Values</h2><p>None of the functions described here has a return
+ value.</p></div><div class="refsect1"><a name="idm140368850370640"></a><h2>Examples</h2><p>Create and destroy a session:</p><pre class="programlisting">ne_session *sess;
+sess = ne_session_create("http", "host.example.com", 80);
+ne_session_proxy(sess, "proxy.example.com", 3128);
+/* ... use sess ... */
+ne_session_destroy(sess);
+</pre></div><div class="refsect1"><a name="idm140368850368672"></a><h2>See Also</h2><p><a class="xref" href="refsslvfy.html#ne_ssl_set_verify">ne_ssl_set_verify</a>, <a class="xref" href="refsslca.html#ne_ssl_trust_cert">ne_ssl_trust_cert</a>, <a class="xref" href="refsockinit.html#ne_sock_init">ne_sock_init</a>, <a class="xref" href="refsessflags.html#ne_set_session_flag">ne_set_session_flag</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refsess.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refsessflags.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_session_create </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_set_session_flag</td></tr></table></div></body></html>
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_request_create</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refsessflags.html" title="ne_set_session_flag"><link rel="next" href="refreqhdr.html" title="ne_add_request_header"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_request_create</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refsessflags.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refreqhdr.html">Next</a></td></tr></table><hr></div><div class="refentry" title="ne_request_create"><a name="refreq"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_request_create, ne_request_dispatch, ne_request_destroy — low-level HTTP request handling</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_request.h></pre><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">ne_request *<b class="fsfunc">ne_request_create</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">method</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">path</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">int <b class="fsfunc">ne_request_dispatch</b>(</code></td><td>ne_request *<var class="pdparam">req</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void <b class="fsfunc">ne_request_destroy</b>(</code></td><td>ne_request *<var class="pdparam">req</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1" title="Description"><a name="id455639"></a><h2>Description</h2><p>An HTTP request, represented by the
-<em class="type">ne_request</em> type, specifies that some operation is to be
-performed on some resource. The
-<code class="function">ne_request_create</code> function creates a request
-object, specifying the operation in the <code class="parameter">method</code>
-parameter. The location of the resource is determined by the server in
-use for the session given by the <code class="parameter">sess</code>
-parameter, combined with the <code class="parameter">path</code> parameter.</p><p>The <code class="parameter">path</code> string used must conform to the
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_request_create</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refsessflags.html" title="ne_set_session_flag"><link rel="next" href="refreqhdr.html" title="ne_add_request_header"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_request_create</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refsessflags.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refreqhdr.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refreq"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_request_create, ne_request_dispatch, ne_request_destroy — low-level HTTP request handling</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_request.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">ne_request *<b class="fsfunc">ne_request_create</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">method</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">path</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">ne_request_dispatch</b>(</code></td><td>ne_request *<var class="pdparam">req</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_request_destroy</b>(</code></td><td>ne_request *<var class="pdparam">req</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm140368850214640"></a><h2>Description</h2><p>The <em class="type">ne_request</em> object represents an HTTP
+ request and the associated response.
+ The <code class="function">ne_request_create</code> function creates a
+ new request object for the
+ given <code class="parameter">session</code>. The target resource for
+ the request is identified by the <code class="parameter">path</code>,
+ and the method to be performed on that resource via
+ the <code class="parameter">method</code> parameter.</p><p>The <code class="parameter">path</code> string used must conform to the
<code class="literal">abs_path</code> definition given in RFC2396, with an
optional "?query" part, and must be URI-escaped by the caller (for
instance, using <code class="function">ne_path_escape</code>). If the string
request object produces undefined behaviour.</p><p>If a request is being using a non-idempotent method such
as <code class="literal">POST</code>, the
<code class="literal">NE_REQFLAG_IDEMPOTENT</code> flag should be
- disabled; see <a class="xref" href="refreqflags.html#ne_set_request_flag">ne_set_request_flag</a>.</p></div><div class="refsect1" title="Return value"><a name="id455805"></a><h2>Return value</h2><p>The <code class="function">ne_request_create</code> function
+ disabled; see <a class="xref" href="refreqflags.html#ne_set_request_flag">ne_set_request_flag</a>.</p></div><div class="refsect1"><a name="idm140368850194736"></a><h2>Return value</h2><p>The <code class="function">ne_request_create</code> function
returns a pointer to a request object (and never <code class="literal">NULL</code>).</p><p>The <code class="function">ne_request_dispatch</code> function
returns zero if the request was dispatched successfully, and a
-non-zero error code otherwise.</p></div><div class="refsect1" title="Errors"><a name="id455837"></a><h2>Errors</h2><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><p><span class="term"><span class="errorcode">NE_ERROR</span></span></p></td><td>Request failed (see session error string)</td></tr><tr><td><p><span class="term"><span class="errorcode">NE_LOOKUP</span></span></p></td><td>The DNS lookup for the server (or proxy server) failed.</td></tr><tr><td><p><span class="term"><span class="errorcode">NE_AUTH</span></span></p></td><td>Authentication failed on the server.</td></tr><tr><td><p><span class="term"><span class="errorcode">NE_PROXYAUTH</span></span></p></td><td>Authentication failed on the proxy server.</td></tr><tr><td><p><span class="term"><span class="errorcode">NE_CONNECT</span></span></p></td><td>A connection to the server could not be established.</td></tr><tr><td><p><span class="term"><span class="errorcode">NE_TIMEOUT</span></span></p></td><td>A timeout occurred while waiting for the server to respond.</td></tr></tbody></table></div></div><div class="refsect1" title="Example"><a name="id455936"></a><h2>Example</h2><p>An example of applying a <code class="literal">MKCOL</code>
+non-zero error code otherwise.</p></div><div class="refsect1"><a name="idm140368850190880"></a><h2>Errors</h2><div class="variablelist"><table border="0" class="variablelist"><colgroup><col align="left" valign="top"><col></colgroup><tbody><tr><td><p><span class="term"><span class="errorcode">NE_ERROR</span></span></p></td><td>Request failed (see session error string)</td></tr><tr><td><p><span class="term"><span class="errorcode">NE_LOOKUP</span></span></p></td><td>The DNS lookup for the server (or proxy server) failed.</td></tr><tr><td><p><span class="term"><span class="errorcode">NE_AUTH</span></span></p></td><td>Authentication failed on the server.</td></tr><tr><td><p><span class="term"><span class="errorcode">NE_PROXYAUTH</span></span></p></td><td>Authentication failed on the proxy server.</td></tr><tr><td><p><span class="term"><span class="errorcode">NE_CONNECT</span></span></p></td><td>A connection to the server could not be established.</td></tr><tr><td><p><span class="term"><span class="errorcode">NE_TIMEOUT</span></span></p></td><td>A timeout occurred while waiting for the server to respond.</td></tr></tbody></table></div></div><div class="refsect1"><a name="idm140368850178992"></a><h2>Example</h2><p>An example of applying a <code class="literal">MKCOL</code>
operation to the resource at the location
<code class="literal">http://www.example.com/foo/bar/</code>:</p><pre class="programlisting">ne_session *sess = ne_session_create("http", "www.example.com", 80);
ne_request *req = ne_request_create(sess, "MKCOL", "/foo/bar/");
if (ne_request_dispatch(req)) {
printf("Request failed: %s\n", ne_get_error(sess));
}
-ne_request_destroy(req);</pre></div><div class="refsect1" title="See also"><a name="id455963"></a><h2>See also</h2><p><a class="xref" href="referr.html#ne_get_error">ne_get_error</a>, <a class="xref" href="referr.html#ne_set_error">ne_set_error</a>, <a class="xref" href="refgetst.html#ne_get_status">ne_get_status</a>, <a class="xref" href="refreqhdr.html#ne_add_request_header">ne_add_request_header</a>, <a class="xref" href="refreqbody.html#ne_set_request_body_buffer">ne_set_request_body_buffer</a>, <a class="xref" href="refreqflags.html#ne_set_request_flag">ne_set_request_flag</a>.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refsessflags.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refreqhdr.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_set_session_flag </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_add_request_header</td></tr></table></div></body></html>
+ne_request_destroy(req);</pre></div><div class="refsect1"><a name="idm140368850175712"></a><h2>See also</h2><p><a class="xref" href="referr.html#ne_get_error">ne_get_error</a>, <a class="xref" href="referr.html#ne_set_error">ne_set_error</a>, <a class="xref" href="refgetst.html#ne_get_status">ne_get_status</a>, <a class="xref" href="refreqhdr.html#ne_add_request_header">ne_add_request_header</a>, <a class="xref" href="refreqbody.html#ne_set_request_body_buffer">ne_set_request_body_buffer</a>, <a class="xref" href="refreqflags.html#ne_set_request_flag">ne_set_request_flag</a>.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refsessflags.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refreqhdr.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_set_session_flag </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_add_request_header</td></tr></table></div></body></html>
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_set_request_body_buffer</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refreqflags.html" title="ne_set_request_flag"><link rel="next" href="refauth.html" title="ne_set_server_auth"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_set_request_body_buffer</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refreqflags.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refauth.html">Next</a></td></tr></table><hr></div><div class="refentry" title="ne_set_request_body_buffer"><a name="refreqbody"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_set_request_body_buffer, ne_set_request_body_fd, ne_set_request_body_fd64 — include a message body with a request</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_request.h></pre><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void <b class="fsfunc">ne_set_request_body_buffer</b>(</code></td><td>ne_request *<var class="pdparam">req</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">buf</var>, </td></tr><tr><td> </td><td>size_t <var class="pdparam">count</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">int <b class="fsfunc">ne_set_request_body_fd</b>(</code></td><td>ne_request *<var class="pdparam">req</var>, </td></tr><tr><td> </td><td>int <var class="pdparam">fd</var>, </td></tr><tr><td> </td><td>off_t <var class="pdparam">begin</var>, </td></tr><tr><td> </td><td>off_t <var class="pdparam">length</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1" title="Description"><a name="id458690"></a><h2>Description</h2><p>The <code class="function">ne_set_request_body_buffer</code>
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_set_request_body_buffer</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refreqflags.html" title="ne_set_request_flag"><link rel="next" href="refauth.html" title="ne_set_server_auth"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_set_request_body_buffer</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refreqflags.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refauth.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refreqbody"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_set_request_body_buffer, ne_set_request_body_fd, ne_set_request_body_fd64 — include a message body with a request</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_request.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_set_request_body_buffer</b>(</code></td><td>ne_request *<var class="pdparam">req</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">buf</var>, </td></tr><tr><td> </td><td>size_t <var class="pdparam">count</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">ne_set_request_body_fd</b>(</code></td><td>ne_request *<var class="pdparam">req</var>, </td></tr><tr><td> </td><td>int <var class="pdparam">fd</var>, </td></tr><tr><td> </td><td>off_t <var class="pdparam">begin</var>, </td></tr><tr><td> </td><td>off_t <var class="pdparam">length</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm140368849848704"></a><h2>Description</h2><p>The <code class="function">ne_set_request_body_buffer</code>
function specifies that a message body should be included with the
body, which is stored in the <code class="parameter">count</code> bytes buffer
<code class="parameter">buf</code>.</p><p>The <code class="function">ne_set_request_body_fd</code> function
<code class="function">ne_set_request_body_buffer</code> nor the file
descriptor passed to
<code class="function">ne_set_request_body_fd</code> are copied
- internally.</p></div><div class="refsect1" title="See also"><a name="id458764"></a><h2>See also</h2><p><a class="xref" href="refreq.html#ne_request_create">ne_request_create</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refreqflags.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refauth.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_set_request_flag </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_set_server_auth</td></tr></table></div></body></html>
+ internally.</p></div><div class="refsect1"><a name="idm140368849839904"></a><h2>See also</h2><p><a class="xref" href="refreq.html#ne_request_create">ne_request_create</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refreqflags.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refauth.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_set_request_flag </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_set_server_auth</td></tr></table></div></body></html>
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_set_request_flag</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refopts.html" title="ne_set_useragent"><link rel="next" href="refreqbody.html" title="ne_set_request_body_buffer"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_set_request_flag</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refopts.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refreqbody.html">Next</a></td></tr></table><hr></div><div class="refentry" title="ne_set_request_flag"><a name="refreqflags"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_set_request_flag, ne_get_request_flag — set and retrieve per-request flags</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_request.h></pre><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void <b class="fsfunc">ne_set_request_flag</b>(</code></td><td>ne_request *<var class="pdparam">req</var>, </td></tr><tr><td> </td><td>ne_request_flag <var class="pdparam">flag</var>, </td></tr><tr><td> </td><td>int <var class="pdparam">value</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">int <b class="fsfunc">ne_get_request_flag</b>(</code></td><td>ne_request *<var class="pdparam">req</var>, </td></tr><tr><td> </td><td>ne_request_flag <var class="pdparam">flag</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1" title="Description"><a name="id458246"></a><h2>Description</h2><p>The <code class="function">ne_set_request_flag</code> function
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_set_request_flag</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refopts.html" title="ne_set_useragent"><link rel="next" href="refreqbody.html" title="ne_set_request_body_buffer"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_set_request_flag</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refopts.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refreqbody.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refreqflags"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_set_request_flag, ne_get_request_flag — set and retrieve per-request flags</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_request.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_set_request_flag</b>(</code></td><td>ne_request *<var class="pdparam">req</var>, </td></tr><tr><td> </td><td>ne_request_flag <var class="pdparam">flag</var>, </td></tr><tr><td> </td><td>int <var class="pdparam">value</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">ne_get_request_flag</b>(</code></td><td>ne_request *<var class="pdparam">req</var>, </td></tr><tr><td> </td><td>ne_request_flag <var class="pdparam">flag</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm140368849902080"></a><h2>Description</h2><p>The <code class="function">ne_set_request_flag</code> function
enables or disables a per-request flag. Passing a non-zero
<code class="parameter">value</code> argument enables the flag, and zero
- disables it.</p><p>The following flags are defined:</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><p><span class="term"><code class="constant">NE_REQFLAG_EXPECT100</code></span></p></td><td>enable this flag to use the "Expect:
+ disables it.</p><p>The following flags are defined:</p><div class="variablelist"><table border="0" class="variablelist"><colgroup><col align="left" valign="top"><col></colgroup><tbody><tr><td><p><span class="term"><code class="constant">NE_REQFLAG_EXPECT100</code></span></p></td><td>enable this flag to use the "Expect:
100-continue" feature of HTTP/1.1, which allows the
server to process request headers without reading the
entire request body. This saves time and bandwidth if
the request to be resent), but has interoperability
problems with some older servers.</td></tr><tr><td><p><span class="term"><code class="constant">NE_REQFLAG_IDEMPOTENT</code></span></p></td><td>disable this flag if the request uses a
non-idempotent method such as
- <code class="literal">POST</code></td></tr></tbody></table></div></div><div class="refsect1" title="Return value"><a name="id458309"></a><h2>Return value</h2><p>The <code class="function">ne_get_request_flag</code> function returns
+ <code class="literal">POST</code></td></tr></tbody></table></div></div><div class="refsect1"><a name="idm140368849894496"></a><h2>Return value</h2><p>The <code class="function">ne_get_request_flag</code> function returns
zero if a flag is disabled, less than zero if the flag is not
- supported, or greater than zero if the flag is enabled.</p></div><div class="refsect1" title="See also"><a name="id458325"></a><h2>See also</h2><p><a class="xref" href="refreq.html#ne_request_create">ne_request_create</a>.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refopts.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refreqbody.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_set_useragent </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_set_request_body_buffer</td></tr></table></div></body></html>
+ supported, or greater than zero if the flag is enabled.</p></div><div class="refsect1"><a name="idm140368849892560"></a><h2>See also</h2><p><a class="xref" href="refreq.html#ne_request_create">ne_request_create</a>.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refopts.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refreqbody.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_set_useragent </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_set_request_body_buffer</td></tr></table></div></body></html>
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_add_request_header</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refreq.html" title="ne_request_create"><link rel="next" href="refresphdr.html" title="ne_get_response_header"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_add_request_header</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refreq.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refresphdr.html">Next</a></td></tr></table><hr></div><div class="refentry" title="ne_add_request_header"><a name="refreqhdr"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_add_request_header, ne_print_request_header — add headers to a request</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_request.h></pre><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void <b class="fsfunc">ne_add_request_header</b>(</code></td><td>ne_request *<var class="pdparam">request</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">name</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">value</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void <b class="fsfunc">ne_print_request_header</b>(</code></td><td>ne_request *<var class="pdparam">request</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">name</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">format</var>, </td></tr><tr><td> </td><td>...<code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1" title="Description"><a name="id456632"></a><h2>Description</h2><p>The functions <code class="function">ne_add_request_header</code>
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_add_request_header</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refreq.html" title="ne_request_create"><link rel="next" href="refresphdr.html" title="ne_get_response_header"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_add_request_header</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refreq.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refresphdr.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refreqhdr"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_add_request_header, ne_print_request_header — add headers to a request</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_request.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_add_request_header</b>(</code></td><td>ne_request *<var class="pdparam">request</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">name</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">value</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_print_request_header</b>(</code></td><td>ne_request *<var class="pdparam">request</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">name</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">format</var>, </td></tr><tr><td> </td><td>...<code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm140368850095456"></a><h2>Description</h2><p>The functions <code class="function">ne_add_request_header</code>
and <code class="function">ne_print_request_header</code> can be used to add
headers to a request, before it is sent.</p><p><code class="function">ne_add_request_header</code> simply adds a
header of given <code class="parameter">name</code>, with given
<code class="parameter">value</code>.</p><p><code class="function">ne_print_request_header</code> adds a
header of given <code class="parameter">name</code>, taking the value from the
<code class="function">printf</code>-like <code class="parameter">format</code> string
-parameter and subsequent variable-length argument list.</p></div><div class="refsect1" title="See also"><a name="id456694"></a><h2>See also</h2><p><a class="xref" href="refreq.html#ne_request_create">ne_request_create</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refreq.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refresphdr.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_request_create </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_get_response_header</td></tr></table></div></body></html>
+parameter and subsequent variable-length argument list.</p></div><div class="refsect1"><a name="idm140368850088016"></a><h2>See also</h2><p><a class="xref" href="refreq.html#ne_request_create">ne_request_create</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refreq.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refresphdr.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_request_create </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_get_response_header</td></tr></table></div></body></html>
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_addr_resolve</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refconfig.html" title="neon-config"><link rel="next" href="refbuf.html" title="ne_buffer"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_addr_resolve</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refconfig.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refbuf.html">Next</a></td></tr></table><hr></div><div class="refentry" title="ne_addr_resolve"><a name="refresolve"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_addr_resolve, ne_addr_result, ne_addr_first, ne_addr_next, ne_addr_error, ne_addr_destroy — functions to resolve hostnames to addresses</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_socket.h></pre><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">ne_sock_addr *<b class="fsfunc">ne_addr_resolve</b>(</code></td><td>const char *<var class="pdparam">hostname</var>, </td></tr><tr><td> </td><td>int <var class="pdparam">flags</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">int <b class="fsfunc">ne_addr_result</b>(</code></td><td>const ne_sock_addr *<var class="pdparam">addr</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">const ne_inet_addr *<b class="fsfunc">ne_addr_first</b>(</code></td><td>ne_sock_addr *<var class="pdparam">addr</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">const ne_inet_addr *<b class="fsfunc">ne_addr_next</b>(</code></td><td>ne_sock_addr *<var class="pdparam">addr</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">char *<b class="fsfunc">ne_addr_error</b>(</code></td><td>const ne_sock_addr *<var class="pdparam">addr</var>, </td></tr><tr><td> </td><td>char *<var class="pdparam">buffer</var>, </td></tr><tr><td> </td><td>size_t <var class="pdparam">bufsiz</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void <b class="fsfunc">ne_addr_destroy</b>(</code></td><td>ne_sock_addr *<var class="pdparam">addr</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1" title="Description"><a name="id448486"></a><h2>Description</h2><p>The <code class="function">ne_addr_resolve</code> function resolves
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_addr_resolve</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refconfig.html" title="neon-config"><link rel="next" href="refbuf.html" title="ne_buffer"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_addr_resolve</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refconfig.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refbuf.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refresolve"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_addr_resolve, ne_addr_result, ne_addr_first, ne_addr_next, ne_addr_error, ne_addr_destroy — functions to resolve hostnames to addresses</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_socket.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">ne_sock_addr *<b class="fsfunc">ne_addr_resolve</b>(</code></td><td>const char *<var class="pdparam">hostname</var>, </td></tr><tr><td> </td><td>int <var class="pdparam">flags</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">ne_addr_result</b>(</code></td><td>const ne_sock_addr *<var class="pdparam">addr</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">const ne_inet_addr *<b class="fsfunc">ne_addr_first</b>(</code></td><td>ne_sock_addr *<var class="pdparam">addr</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">const ne_inet_addr *<b class="fsfunc">ne_addr_next</b>(</code></td><td>ne_sock_addr *<var class="pdparam">addr</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">char *<b class="fsfunc">ne_addr_error</b>(</code></td><td>const ne_sock_addr *<var class="pdparam">addr</var>, </td></tr><tr><td> </td><td>char *<var class="pdparam">buffer</var>, </td></tr><tr><td> </td><td>size_t <var class="pdparam">bufsiz</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_addr_destroy</b>(</code></td><td>ne_sock_addr *<var class="pdparam">addr</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm140368851194688"></a><h2>Description</h2><p>The <code class="function">ne_addr_resolve</code> function resolves
the given <code class="parameter">hostname</code>, returning an
<em class="type">ne_sock_addr</em> object representing the address (or
addresses) associated with the hostname. The
addresses. The <em class="type">ne_inet_addr</em> pointer returned by
these functions can be passed to
<code class="function">ne_sock_connect</code> to connect a socket.</p><p>After the address object has been used, it should be
- destroyed using <code class="function">ne_addr_destroy</code>.</p></div><div class="refsect1" title="Return value"><a name="id448631"></a><h2>Return value</h2><p><code class="function">ne_addr_resolve</code> returns a pointer to an
+ destroyed using <code class="function">ne_addr_destroy</code>.</p></div><div class="refsect1"><a name="idm140368851177200"></a><h2>Return value</h2><p><code class="function">ne_addr_resolve</code> returns a pointer to an
address object, and never <code class="literal">NULL</code>.
<code class="function">ne_addr_error</code> returns the
- <code class="parameter">buffer</code> parameter .</p></div><div class="refsect1" title="Examples"><a name="id448661"></a><h2>Examples</h2><p>The code below prints out the set of addresses associated
+ <code class="parameter">buffer</code> parameter .</p></div><div class="refsect1"><a name="idm140368851173680"></a><h2>Examples</h2><p>The code below prints out the set of addresses associated
with the hostname <code class="literal">www.google.com</code>.</p><pre class="programlisting">ne_sock_addr *addr;
char buf[256];
putchar('\n');
}
ne_addr_destroy(addr);
-</pre></div><div class="refsect1" title="See also"><a name="id448685"></a><h2>See also</h2><p><a class="xref" href="refiaddr.html#ne_iaddr_print">ne_iaddr_print</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refconfig.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refbuf.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">neon-config </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_buffer</td></tr></table></div></body></html>
+</pre></div><div class="refsect1"><a name="idm140368851170704"></a><h2>See also</h2><p><a class="xref" href="refiaddr.html#ne_iaddr_print">ne_iaddr_print</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refconfig.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refbuf.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">neon-config </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_buffer</td></tr></table></div></body></html>
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_get_response_header</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refreqhdr.html" title="ne_add_request_header"><link rel="next" href="refopts.html" title="ne_set_useragent"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_get_response_header</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refreqhdr.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refopts.html">Next</a></td></tr></table><hr></div><div class="refentry" title="ne_get_response_header"><a name="refresphdr"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_get_response_header, ne_response_header_iterate — functions to access response headers</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_request.h></pre><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">const char *<b class="fsfunc">ne_get_response_header</b>(</code></td><td>ne_request *<var class="pdparam">request</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">name</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void *<b class="fsfunc">ne_response_header_iterate</b>(</code></td><td>ne_request *<var class="pdparam">request</var>, </td></tr><tr><td> </td><td>void *<var class="pdparam">cursor</var>, </td></tr><tr><td> </td><td>const char **<var class="pdparam">name</var>, </td></tr><tr><td> </td><td>const char **<var class="pdparam">value</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1" title="Description"><a name="id457036"></a><h2>Description</h2><p>To retrieve the value of a response header field, the
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_get_response_header</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refreqhdr.html" title="ne_add_request_header"><link rel="next" href="refopts.html" title="ne_set_useragent"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_get_response_header</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refreqhdr.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refopts.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refresphdr"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_get_response_header, ne_response_header_iterate — functions to access response headers</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_request.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">const char *<b class="fsfunc">ne_get_response_header</b>(</code></td><td>ne_request *<var class="pdparam">request</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">name</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void *<b class="fsfunc">ne_response_header_iterate</b>(</code></td><td>ne_request *<var class="pdparam">request</var>, </td></tr><tr><td> </td><td>void *<var class="pdparam">cursor</var>, </td></tr><tr><td> </td><td>const char **<var class="pdparam">name</var>, </td></tr><tr><td> </td><td>const char **<var class="pdparam">value</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm140368850046912"></a><h2>Description</h2><p>To retrieve the value of a response header field, the
<code class="function">ne_get_response_header</code> function can be used,
and is given the name of the header to return.</p><p>To iterate over all the response headers returned, the
<code class="function">ne_response_header_iterate</code> function can be
the <code class="parameter">name</code> and <code class="parameter">value</code>
parameters, and returns a new cursor pointer which can be passed
to <code class="function">ne_response_header_iterate</code> to retrieve the
- next header.</p></div><div class="refsect1" title="Return value"><a name="id457088"></a><h2>Return value</h2><p><code class="function">ne_get_response_header</code> returns a
+ next header.</p></div><div class="refsect1"><a name="idm140368850040688"></a><h2>Return value</h2><p><code class="function">ne_get_response_header</code> returns a
string, or <code class="literal">NULL</code> if no header with that name was given. If used
during request processing, the return value pointer is valid only
until the next call to <code class="function">ne_begin_request</code>, or
else, until the request object is destroyed.</p><p>Likewise, the cursor, names, and values returned by
<code class="function">ne_response_header_iterate</code> are only valid
until the next call to <code class="function">ne_begin_request</code> or
- until the request object is destroyed.</p></div><div class="refsect1" title="Examples"><a name="id457128"></a><h2>Examples</h2><p>The following code will output the value of the
+ until the request object is destroyed.</p></div><div class="refsect1"><a name="idm140368850035920"></a><h2>Examples</h2><p>The following code will output the value of the
<code class="literal">Last-Modified</code> header for a resource:</p><pre class="programlisting">ne_request *req = ne_request_create(sess, "GET", "/foo.txt");
if (ne_request_dispatch(req) == NE_OK) {
const char *mtime = ne_get_response_header(req, "Last-Modified");
printf("/foo.txt has last-modified value %s\n", mtime);
}
}
-ne_request_destroy(req);</pre></div><div class="refsect1" title="See also"><a name="id457150"></a><h2>See also</h2><p><a class="xref" href="refreq.html#ne_request_create">ne_request_create</a>, <a class="xref" href="refreq.html#ne_request_destroy">ne_request_destroy</a>.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refreqhdr.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refopts.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_add_request_header </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_set_useragent</td></tr></table></div></body></html>
+ne_request_destroy(req);</pre></div><div class="refsect1"><a name="idm140368850033216"></a><h2>See also</h2><p><a class="xref" href="refreq.html#ne_request_create">ne_request_create</a>, <a class="xref" href="refreq.html#ne_request_destroy">ne_request_destroy</a>.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refreqhdr.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refopts.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_add_request_header </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_set_useragent</td></tr></table></div></body></html>
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_session_create</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refalloc.html" title="ne_malloc"><link rel="next" href="refsessflags.html" title="ne_set_session_flag"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_session_create</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refalloc.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refsessflags.html">Next</a></td></tr></table><hr></div><div class="refentry" title="ne_session_create"><a name="refsess"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_session_create, ne_close_connection, ne_session_proxy, ne_session_destroy — set up HTTP sessions</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_session.h></pre><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">ne_session *<b class="fsfunc">ne_session_create</b>(</code></td><td>const char *<var class="pdparam">scheme</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">hostname</var>, </td></tr><tr><td> </td><td>unsigned int <var class="pdparam">port</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void <b class="fsfunc">ne_session_proxy</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">hostname</var>, </td></tr><tr><td> </td><td>unsigned int <var class="pdparam">port</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void <b class="fsfunc">ne_close_connection</b>(</code></td><td>ne_session *<var class="pdparam">session</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void <b class="fsfunc">ne_session_destroy</b>(</code></td><td>ne_session *<var class="pdparam">session</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1" title="Description"><a name="id454329"></a><h2>Description</h2><p>An <em class="type">ne_session</em> object represents an HTTP
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_session_create</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refalloc.html" title="ne_malloc"><link rel="next" href="refproxy.html" title="ne_session_proxy"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_session_create</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refalloc.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refproxy.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refsess"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_session_create, ne_close_connection, ne_session_destroy — set up HTTP sessions</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_session.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">ne_session *<b class="fsfunc">ne_session_create</b>(</code></td><td>const char *<var class="pdparam">scheme</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">hostname</var>, </td></tr><tr><td> </td><td>unsigned int <var class="pdparam">port</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_close_connection</b>(</code></td><td>ne_session *<var class="pdparam">session</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_session_destroy</b>(</code></td><td>ne_session *<var class="pdparam">session</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm140368850496016"></a><h2>Description</h2><p>An <em class="type">ne_session</em> object represents an HTTP
session - a logical grouping of a sequence of HTTP requests made to a
certain server. Any requests made using the session can use a
persistent connection, share cached authentication credentials and any
-other common attributes.</p><p>A new HTTP session is created using
-<code class="function">ne_session_create</code>, giving the
-<code class="parameter">hostname</code> and <code class="parameter">port</code> of the
-server to use, along with the <code class="parameter">scheme</code> used to
-contact the server (usually <code class="literal">"http"</code>). Before the
-first use of <code class="function">ne_session_create</code> in a process,
-<a class="xref" href="refsockinit.html#ne_sock_init">ne_sock_init</a> must have been called to perform any
-global initialization needed by any libraries used by neon.</p><p>To enable SSL/TLS for the session, pass the string
+other common attributes.</p><p>A new HTTP session is created using the
+<code class="function">ne_session_create</code> function; the
+<code class="parameter">hostname</code> and <code class="parameter">port</code>
+parameters specify the origin server to use, along with
+the <code class="parameter">scheme</code> (usually <code class="literal">"http"</code>).
+Before the first use of <code class="function">ne_session_create</code> in a
+process, <a class="xref" href="refsockinit.html#ne_sock_init">ne_sock_init</a> must have been called to
+perform any global initialization needed by any libraries used by
+neon.</p><p>To enable SSL/TLS for the session, pass the string
<code class="literal">"https"</code> as the <code class="parameter">scheme</code>
parameter, and either register a certificate verification function
(see <a class="xref" href="refsslvfy.html#ne_ssl_set_verify">ne_ssl_set_verify</a>) or trust the appropriate
-certificate (see <a class="xref" href="refsslca.html#ne_ssl_trust_cert">ne_ssl_trust_cert</a>, <a class="xref" href="refsslca.html#ne_ssl_trust_default_ca">ne_ssl_trust_default_ca</a>).</p><p>If an HTTP proxy server should be used for the session,
- <code class="function">ne_session_proxy</code> must be called giving
- the hostname and port on which to contact the proxy.</p><p>Further per-session options may be changed using the
- <a class="xref" href="refreqflags.html#ne_set_request_flag">ne_set_request_flag</a> interface.</p><p>If it is known that the session will not be used for a
+certificate (see <a class="xref" href="refsslca.html#ne_ssl_trust_cert">ne_ssl_trust_cert</a>, <a class="xref" href="refsslca.html#ne_ssl_trust_default_ca">ne_ssl_trust_default_ca</a>).</p><p>To use a proxy server for the session, it must be
+ configured (see <a class="xref" href="refproxy.html#ne_session_proxy">ne_session_proxy</a>) before any
+ requests are created from session object.</p><p>Further per-session options may be changed using the
+ <a class="xref" href="refsessflags.html#ne_set_session_flag">ne_set_session_flag</a> interface.</p><p>If it is known that the session will not be used for a
significant period of time, <code class="function">ne_close_connection</code>
can be called to close the connection, if one remains open. Use of
this function is entirely optional, but it must not be called if there
is a request active using the session.</p><p>Once a session has been completed,
-<code class="function">ne_session_destroy</code> must be called to destroy the
-resources associated with the session. Any subsequent use of the
-session pointer produces undefined behaviour.</p></div><div class="refsect1" title="Notes"><a name="id454449"></a><h2>Notes</h2><p>The hostname passed to
+ <code class="function">ne_session_destroy</code> must be called to
+ destroy the resources associated with the session. Any
+ subsequent use of the session pointer produces undefined
+ behaviour. The session object must not be destroyed until
+ after all associated request objects have been
+ destroyed.</p></div><div class="refsect1"><a name="idm140368850481840"></a><h2>Notes</h2><p>The hostname passed to
<code class="function">ne_session_create</code> is resolved when the first
request using the session is dispatched; a DNS resolution failure can
only be detected at that time (using the <code class="literal">NE_LOOKUP</code>
error code); see <a class="xref" href="refreq.html#ne_request_dispatch">ne_request_dispatch</a> for
-details.</p></div><div class="refsect1" title="Return Values"><a name="id454474"></a><h2>Return Values</h2><p><code class="function">ne_session_create</code> will return
- a pointer to a new session object (and never <code class="literal">NULL</code>).</p></div><div class="refsect1" title="Examples"><a name="id454494"></a><h2>Examples</h2><p>Create and destroy a session:</p><pre class="programlisting">ne_session *sess;
+details.</p></div><div class="refsect1"><a name="idm140368850478784"></a><h2>Return Values</h2><p><code class="function">ne_session_create</code> will return
+ a pointer to a new session object (and never <code class="literal">NULL</code>).</p></div><div class="refsect1"><a name="idm140368850476432"></a><h2>Examples</h2><p>Create and destroy a session:</p><pre class="programlisting">ne_session *sess;
sess = ne_session_create("http", "host.example.com", 80);
/* ... use sess ... */
ne_session_destroy(sess);
-</pre></div><div class="refsect1" title="See Also"><a name="id454510"></a><h2>See Also</h2><p><a class="xref" href="refsslvfy.html#ne_ssl_set_verify">ne_ssl_set_verify</a>, <a class="xref" href="refsslca.html#ne_ssl_trust_cert">ne_ssl_trust_cert</a>, <a class="xref" href="refsockinit.html#ne_sock_init">ne_sock_init</a>, <a class="xref" href="refsessflags.html#ne_set_session_flag">ne_set_session_flag</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refalloc.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refsessflags.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_malloc </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_set_session_flag</td></tr></table></div></body></html>
+</pre></div><div class="refsect1"><a name="idm140368850474512"></a><h2>See Also</h2><p><a class="xref" href="refsslvfy.html#ne_ssl_set_verify">ne_ssl_set_verify</a>, <a class="xref" href="refsslca.html#ne_ssl_trust_cert">ne_ssl_trust_cert</a>, <a class="xref" href="refsockinit.html#ne_sock_init">ne_sock_init</a>, <a class="xref" href="refsessflags.html#ne_set_session_flag">ne_set_session_flag</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refalloc.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refproxy.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_malloc </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_session_proxy</td></tr></table></div></body></html>
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_set_session_flag</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refsess.html" title="ne_session_create"><link rel="next" href="refreq.html" title="ne_request_create"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_set_session_flag</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refsess.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refreq.html">Next</a></td></tr></table><hr></div><div class="refentry" title="ne_set_session_flag"><a name="refsessflags"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_set_session_flag, ne_get_session_flag — set and retrieve session flags</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_request.h></pre><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void <b class="fsfunc">ne_set_session_flag</b>(</code></td><td>ne_session *<var class="pdparam">sess</var>, </td></tr><tr><td> </td><td>ne_session_flag <var class="pdparam">flag</var>, </td></tr><tr><td> </td><td>int <var class="pdparam">value</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">int <b class="fsfunc">ne_get_session_flag</b>(</code></td><td>ne_session *<var class="pdparam">sess</var>, </td></tr><tr><td> </td><td>ne_session_flag <var class="pdparam">flag</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1" title="Description"><a name="id455042"></a><h2>Description</h2><p>The <code class="function">ne_set_session_flag</code> function
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_set_session_flag</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refproxy.html" title="ne_session_proxy"><link rel="next" href="refreq.html" title="ne_request_create"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_set_session_flag</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refproxy.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refreq.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refsessflags"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_set_session_flag, ne_get_session_flag — set and retrieve session flags</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_request.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_set_session_flag</b>(</code></td><td>ne_session *<var class="pdparam">sess</var>, </td></tr><tr><td> </td><td>ne_session_flag <var class="pdparam">flag</var>, </td></tr><tr><td> </td><td>int <var class="pdparam">value</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">ne_get_session_flag</b>(</code></td><td>ne_session *<var class="pdparam">sess</var>, </td></tr><tr><td> </td><td>ne_session_flag <var class="pdparam">flag</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm140368850286208"></a><h2>Description</h2><p>The <code class="function">ne_set_session_flag</code> function
enables or disables a session flag. Passing a non-zero
<code class="parameter">value</code> argument enables the flag, and zero
- disables it.</p><p>The following flags are defined:</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><p><span class="term"><code class="constant">NE_SESSFLAG_PERSIST</code></span></p></td><td>disable this flag to prevent use of persistent
+ disables it.</p><p>The following flags are defined:</p><div class="variablelist"><table border="0" class="variablelist"><colgroup><col align="left" valign="top"><col></colgroup><tbody><tr><td><p><span class="term"><code class="constant">NE_SESSFLAG_PERSIST</code></span></p></td><td>disable this flag to prevent use of persistent
connections</td></tr><tr><td><p><span class="term"><code class="constant">NE_SESSFLAG_ICYPROTO</code></span></p></td><td>enable this flag to enable support for non-HTTP
ShoutCast-style "ICY" responses</td></tr><tr><td><p><span class="term"><code class="constant">NE_SESSFLAG_SSLv2</code></span></p></td><td>disable this flag to disable support for the SSLv2
protocol</td></tr><tr><td><p><span class="term"><code class="constant">NE_SESSFLAG_RFC4918</code></span></p></td><td>enable this flag to enable support for
which does not correctly support the TLS SNI
extension</td></tr><tr><td><p><span class="term"><code class="constant">NE_SESSFLAG_EXPECT100</code></span></p></td><td>enable this flag to enable the request flag
<code class="constant">NE_REQFLAG_EXPECT100</code> for new
- requests</td></tr></tbody></table></div></div><div class="refsect1" title="Return value"><a name="id455175"></a><h2>Return value</h2><p>The <code class="function">ne_get_session_flag</code> function
+ requests</td></tr></tbody></table></div></div><div class="refsect1"><a name="idm140368850270240"></a><h2>Return value</h2><p>The <code class="function">ne_get_session_flag</code> function
returns zero if a flag is disabled, less than zero if the flag is
- not supported, or greater than zero if the flag is enabled.</p></div><div class="refsect1" title="See also"><a name="id455191"></a><h2>See also</h2><p><a class="xref" href="refsess.html#ne_session_create">ne_session_create</a>, <a class="xref" href="refreqflags.html#ne_set_request_flag">ne_set_request_flag</a>.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refsess.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refreq.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_session_create </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_request_create</td></tr></table></div></body></html>
+ not supported, or greater than zero if the flag is enabled.</p></div><div class="refsect1"><a name="idm140368850268304"></a><h2>See also</h2><p><a class="xref" href="refsess.html#ne_session_create">ne_session_create</a>, <a class="xref" href="refreqflags.html#ne_set_request_flag">ne_set_request_flag</a>.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refproxy.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refreq.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_session_proxy </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_request_create</td></tr></table></div></body></html>
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_shave</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refauth.html" title="ne_set_server_auth"><link rel="next" href="refsockinit.html" title="ne_sock_init"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_shave</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refauth.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refsockinit.html">Next</a></td></tr></table><hr></div><div class="refentry" title="ne_shave"><a name="refshave"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_shave — trim whitespace from a string</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_string.h></pre><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">char *<b class="fsfunc">ne_shave</b>(</code></td><td>char *<var class="pdparam">str</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">whitespace</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1" title="Description"><a name="id459710"></a><h2>Description</h2><p><code class="function">ne_shave</code> returns a portion of
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_shave</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refauth.html" title="ne_set_server_auth"><link rel="next" href="refsockinit.html" title="ne_sock_init"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_shave</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refauth.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refsockinit.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refshave"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_shave — trim whitespace from a string</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_string.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">char *<b class="fsfunc">ne_shave</b>(</code></td><td>char *<var class="pdparam">str</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">whitespace</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm140368849726080"></a><h2>Description</h2><p><code class="function">ne_shave</code> returns a portion of
<code class="parameter">str</code> with any leading or trailing characters in
the <code class="parameter">whitespace</code> array removed.
<code class="parameter">str</code> may be modified. Note that the return
-value may not be equal to <code class="parameter">str</code>.</p></div><div class="refsect1" title="Examples"><a name="id459745"></a><h2>Examples</h2><p>The following code segment will output
+value may not be equal to <code class="parameter">str</code>.</p></div><div class="refsect1"><a name="idm140368849721936"></a><h2>Examples</h2><p>The following code segment will output
<code class="literal">"fish"</code>:</p><pre class="programlisting">char s[] = ".!.fish!.!";
puts(ne_shave(s, ".!"));</pre></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refauth.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refsockinit.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_set_server_auth </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_sock_init</td></tr></table></div></body></html>
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_sock_init</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refshave.html" title="ne_shave"><link rel="next" href="refcert.html" title="ne_ssl_cert_identity"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_sock_init</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refshave.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refcert.html">Next</a></td></tr></table><hr></div><div class="refentry" title="ne_sock_init"><a name="refsockinit"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_sock_init, ne_sock_exit — perform library initialization</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_socket.h></pre><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">int <b class="fsfunc">ne_sock_init</b>(</code></td><td><code>void)</code>;</td><td> </td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void <b class="fsfunc">ne_sock_exit</b>(</code></td><td><code>void)</code>;</td><td> </td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1" title="Description"><a name="id459975"></a><h2>Description</h2><p>In some platforms and configurations, neon may be using
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_sock_init</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refshave.html" title="ne_shave"><link rel="next" href="refcert.html" title="ne_ssl_cert_identity"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_sock_init</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refshave.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refcert.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refsockinit"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_sock_init, ne_sock_exit — perform library initialization</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_socket.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">ne_sock_init</b>(</code></td><td><code>void)</code>;</td><td> </td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_sock_exit</b>(</code></td><td><code>void)</code>;</td><td> </td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm140368849694320"></a><h2>Description</h2><p>In some platforms and configurations, neon may be using
some socket or SSL libraries which require global initialization
before use. To perform this initialization, the
<code class="function">ne_sock_init</code> function must be called before
section. Otherwise, it is not safe to use neon with SSL in a
multi-threaded process. The <a class="xref" href="reffeat.html#ne_has_support">ne_has_support</a>
function can be used to determine whether neon is built to
- enable thread-safety support in the SSL library.</p><div class="refsect2" title="Thread-safe SSL with OpenSSL"><a name="id460070"></a><h3>Thread-safe SSL with OpenSSL</h3><p>neon follows two simple rules when dealing with the
+ enable thread-safety support in the SSL library.</p><div class="refsect2"><a name="idm140368849682864"></a><h3>Thread-safe SSL with OpenSSL</h3><p>neon follows two simple rules when dealing with the
OpenSSL locking callbacks:
- </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><code class="function">ne_sock_init</code> will set
+ </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><code class="function">ne_sock_init</code> will set
thread-safety locking callbacks if and only if no locking
callbacks are already registered.</li><li class="listitem"><code class="function">ne_sock_exit</code> will
unset the thread-safety locking callbacks if and only if the
Applications and libraries should be able to co-operate to
ensure that SSL use is always thread-safe if similar rules are
- always followed.</p></div><div class="refsect2" title="Thread-safe SSL with GnuTLS"><a name="id460109"></a><h3>Thread-safe SSL with GnuTLS</h3><p>The cryptography library used by GnuTLS, libgcrypt, only
+ always followed.</p></div><div class="refsect2"><a name="idm140368849678112"></a><h3>Thread-safe SSL with GnuTLS</h3><p>The cryptography library used by GnuTLS, libgcrypt, only
supports an initialization operation to register thread-safety
callbacks. <code class="function">ne_sock_init</code> will register the
thread-safe locking callbacks on first use;
unsafe to dynamically unload neon from the process if neon
is configured with thread-safe SSL support enabled (since the
callbacks would be left pointing at unmapped memory once neon
- is unloaded).</p></div></div><div class="refsect1" title="Return value"><a name="id460135"></a><h2>Return value</h2><p><code class="function">ne_sock_init</code> returns zero on success,
+ is unloaded).</p></div></div><div class="refsect1"><a name="idm140368849674976"></a><h2>Return value</h2><p><code class="function">ne_sock_init</code> returns zero on success,
or non-zero on error. If an error occurs, no further use of the
- neon library should be attempted.</p></div><div class="refsect1" title="See also"><a name="id460150"></a><h2>See also</h2><p><a class="xref" href="refneon.html" title="neon"><span class="refentrytitle">neon</span></a>, <a class="xref" href="reffeat.html" title="ne_has_support"><span class="refentrytitle">ne_has_support</span></a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refshave.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refcert.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_shave </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_ssl_cert_identity</td></tr></table></div></body></html>
+ neon library should be attempted.</p></div><div class="refsect1"><a name="idm140368849673072"></a><h2>See also</h2><p><a class="xref" href="refneon.html" title="neon"><span class="refentrytitle">neon</span></a>, <a class="xref" href="reffeat.html" title="ne_has_support"><span class="refentrytitle">ne_has_support</span></a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refshave.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refcert.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_shave </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_ssl_cert_identity</td></tr></table></div></body></html>
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_ssl_trust_cert</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refssldname.html" title="ne_ssl_dname"><link rel="next" href="refsslvfy.html" title="ne_ssl_set_verify"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_ssl_trust_cert</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refssldname.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refsslvfy.html">Next</a></td></tr></table><hr></div><div class="refentry" title="ne_ssl_trust_cert"><a name="refsslca"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_ssl_trust_cert, ne_ssl_trust_default_ca — functions to indicate that certificates are trusted</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_session.h></pre><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void <b class="fsfunc">ne_ssl_trust_cert</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>const ne_ssl_certificate *<var class="pdparam">cert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void <b class="fsfunc">ne_ssl_trust_default_ca</b>(</code></td><td>ne_session *<var class="pdparam">session</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1" title="Description"><a name="id462349"></a><h2>Description</h2><p>To indicate that a given certificate is trusted by the
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_ssl_trust_cert</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refssldname.html" title="ne_ssl_dname"><link rel="next" href="refsslvfy.html" title="ne_ssl_set_verify"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_ssl_trust_cert</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refssldname.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refsslvfy.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refsslca"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_ssl_trust_cert, ne_ssl_trust_default_ca — functions to indicate that certificates are trusted</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_session.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_ssl_trust_cert</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>const ne_ssl_certificate *<var class="pdparam">cert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_ssl_trust_default_ca</b>(</code></td><td>ne_session *<var class="pdparam">session</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm140368849409168"></a><h2>Description</h2><p>To indicate that a given certificate is trusted by the
user, the certificate object can be passed to
<code class="function">ne_ssl_trust_cert</code>. The certificate object is
duplicated internally and can subsequently be destroyed.</p><p>The SSL library in use by neon may include a default
set of CA certificates; calling the
<code class="function">ne_ssl_trust_default_ca</code> function will indicate
-that these CAs are trusted by the user.</p></div><div class="refsect1" title="Examples"><a name="id462374"></a><h2>Examples</h2><p>Load the CA certificate stored in <code class="filename">/path/to/cacert.pem</code>:</p><pre class="programlisting">ne_session *sess = ne_session_create(...);
+that these CAs are trusted by the user.</p></div><div class="refsect1"><a name="idm140368849406064"></a><h2>Examples</h2><p>Load the CA certificate stored in <code class="filename">/path/to/cacert.pem</code>:</p><pre class="programlisting">ne_session *sess = ne_session_create(...);
ne_ssl_certificate *cert = ne_ssl_cert_read("/path/to/cacert.pem");
if (cert) {
ne_ssl_cert_free(cert);
} else {
printf("Could not load CA cert: %s\n", ne_get_error(sess));
-}</pre></div><div class="refsect1" title="See also"><a name="id462396"></a><h2>See also</h2><p><a class="xref" href="refsslcertio.html#ne_ssl_cert_read">ne_ssl_cert_read</a>, <a class="xref" href="refsslcertio.html#ne_ssl_cert_import">ne_ssl_cert_import</a>, <a class="xref" href="refsslcert2.html#ne_ssl_cert_free">ne_ssl_cert_free</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refssldname.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refsslvfy.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_ssl_dname </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_ssl_set_verify</td></tr></table></div></body></html>
+}</pre></div><div class="refsect1"><a name="idm140368849403392"></a><h2>See also</h2><p><a class="xref" href="refsslcertio.html#ne_ssl_cert_read">ne_ssl_cert_read</a>, <a class="xref" href="refsslcertio.html#ne_ssl_cert_import">ne_ssl_cert_import</a>, <a class="xref" href="refsslcert2.html#ne_ssl_cert_free">ne_ssl_cert_free</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refssldname.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refsslvfy.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_ssl_dname </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_ssl_set_verify</td></tr></table></div></body></html>
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_ssl_cert_cmp</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refcert.html" title="ne_ssl_cert_identity"><link rel="next" href="refsslcertio.html" title="ne_ssl_cert_read"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_ssl_cert_cmp</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refcert.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refsslcertio.html">Next</a></td></tr></table><hr></div><div class="refentry" title="ne_ssl_cert_cmp"><a name="refsslcert2"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_ssl_cert_cmp, ne_ssl_cert_free — functions to operate on certificate objects</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_header.h></pre><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">int <b class="fsfunc">ne_ssl_cert_cmp</b>(</code></td><td>const ne_ssl_certificate *<var class="pdparam">c1</var>, </td></tr><tr><td> </td><td>const ne_ssl_certificate *<var class="pdparam">c2</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void <b class="fsfunc">ne_ssl_cert_free</b>(</code></td><td>ne_ssl_certificate *<var class="pdparam">cert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1" title="Description"><a name="id461119"></a><h2>Description</h2><p>The <code class="function">ne_ssl_cert_cmp</code> function can be
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_ssl_cert_cmp</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refcert.html" title="ne_ssl_cert_identity"><link rel="next" href="refsslcertio.html" title="ne_ssl_cert_read"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_ssl_cert_cmp</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refcert.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refsslcertio.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refsslcert2"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_ssl_cert_cmp, ne_ssl_cert_free — functions to operate on certificate objects</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_header.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">ne_ssl_cert_cmp</b>(</code></td><td>const ne_ssl_certificate *<var class="pdparam">c1</var>, </td></tr><tr><td> </td><td>const ne_ssl_certificate *<var class="pdparam">c2</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_ssl_cert_free</b>(</code></td><td>ne_ssl_certificate *<var class="pdparam">cert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm140368849556976"></a><h2>Description</h2><p>The <code class="function">ne_ssl_cert_cmp</code> function can be
used to compare two certificate objects; it returns zero if they
refer to the same certificate, and non-zero otherwise.</p><p>The <code class="function">ne_ssl_cert_free</code> function can be
used to destroy a certificate object when it is no longer
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_ssl_cert_read</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refsslcert2.html" title="ne_ssl_cert_cmp"><link rel="next" href="refssldname.html" title="ne_ssl_dname"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_ssl_cert_read</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refsslcert2.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refssldname.html">Next</a></td></tr></table><hr></div><div class="refentry" title="ne_ssl_cert_read"><a name="refsslcertio"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_ssl_cert_read, ne_ssl_cert_write, ne_ssl_cert_import, ne_ssl_cert_export — functions to read or write certificates to and from files or strings</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_ssl.h></pre><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">ne_ssl_certificate *<b class="fsfunc">ne_ssl_cert_read</b>(</code></td><td>const char *<var class="pdparam">filename</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">int <b class="fsfunc">ne_ssl_cert_write</b>(</code></td><td>const ne_ssl_certificate *<var class="pdparam">cert</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">filename</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">ne_ssl_certificate *<b class="fsfunc">ne_ssl_cert_import</b>(</code></td><td>const char *<var class="pdparam">data</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">char *<b class="fsfunc">ne_ssl_cert_export</b>(</code></td><td>const ne_ssl_certificate *<var class="pdparam">cert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1" title="Description"><a name="id461415"></a><h2>Description</h2><p>The <code class="function">ne_ssl_cert_write</code> function writes a
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_ssl_cert_read</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refsslcert2.html" title="ne_ssl_cert_cmp"><link rel="next" href="refssldname.html" title="ne_ssl_dname"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_ssl_cert_read</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refsslcert2.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refssldname.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refsslcertio"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_ssl_cert_read, ne_ssl_cert_write, ne_ssl_cert_import, ne_ssl_cert_export — functions to read or write certificates to and from files or strings</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_ssl.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">ne_ssl_certificate *<b class="fsfunc">ne_ssl_cert_read</b>(</code></td><td>const char *<var class="pdparam">filename</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">ne_ssl_cert_write</b>(</code></td><td>const ne_ssl_certificate *<var class="pdparam">cert</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">filename</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">ne_ssl_certificate *<b class="fsfunc">ne_ssl_cert_import</b>(</code></td><td>const char *<var class="pdparam">data</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">char *<b class="fsfunc">ne_ssl_cert_export</b>(</code></td><td>const ne_ssl_certificate *<var class="pdparam">cert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm140368849521520"></a><h2>Description</h2><p>The <code class="function">ne_ssl_cert_write</code> function writes a
certificate to a file using the PEM encoding. The
<code class="function">ne_ssl_cert_export</code> function returns a
base64-encoded <code class="literal">NUL</code>-terminated string representing the
returns a certificate object from a base64-encoded string,
<code class="parameter">data</code>, as returned by
<code class="function">ne_ssl_cert_export</code>. The certificate object
- returned by these functions should be destroyed using <a class="xref" href="refsslcert2.html#ne_ssl_cert_free">ne_ssl_cert_free</a> after use.</p></div><div class="refsect1" title="Return value"><a name="id461477"></a><h2>Return value</h2><p><code class="function">ne_ssl_cert_read</code> returns <code class="literal">NULL</code> if a
+ returned by these functions should be destroyed using <a class="xref" href="refsslcert2.html#ne_ssl_cert_free">ne_ssl_cert_free</a> after use.</p></div><div class="refsect1"><a name="idm140368849513952"></a><h2>Return value</h2><p><code class="function">ne_ssl_cert_read</code> returns <code class="literal">NULL</code> if a
certificate could not be read from the file.
<code class="function">ne_ssl_cert_write</code> returns non-zero if the
certificate could not be written to the file.
<code class="function">ne_ssl_cert_export</code> always returns a
<code class="literal">NUL</code>-terminated string, and never <code class="literal">NULL</code>.
<code class="function">ne_ssl_cert_import</code> returns <code class="literal">NULL</code> if the
- string was not a valid base64-encoded certificate.</p></div><div class="refsect1" title="Encoding Formats"><a name="id461529"></a><h2>Encoding Formats</h2><p>The string produced by
+ string was not a valid base64-encoded certificate.</p></div><div class="refsect1"><a name="idm140368849507840"></a><h2>Encoding Formats</h2><p>The string produced by
<code class="function">ne_ssl_cert_export</code> is the base64 encoding of
the DER representation of the certificate. The file written by
<code class="function">ne_ssl_cert_write</code> uses the PEM format: this
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_ssl_dname</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refsslcertio.html" title="ne_ssl_cert_read"><link rel="next" href="refsslca.html" title="ne_ssl_trust_cert"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_ssl_dname</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refsslcertio.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refsslca.html">Next</a></td></tr></table><hr></div><div class="refentry" title="ne_ssl_dname"><a name="refssldname"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_ssl_readable_dname, ne_ssl_dname_cmp — SSL distinguished name handling</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_ssl.h></pre><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">const char *<b class="fsfunc">ne_ssl_readable_dname</b>(</code></td><td>const ne_ssl_dname *<var class="pdparam">dname</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">int <b class="fsfunc">ne_ssl_dname_cmp</b>(</code></td><td>const ne_ssl_dname *<var class="pdparam">dn1</var>, </td></tr><tr><td> </td><td>const ne_ssl_dname *<var class="pdparam">dn2</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1" title="Description"><a name="id461952"></a><h2>Description</h2><p>The <code class="function">ne_ssl_readable_dname</code> function
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_ssl_dname</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refsslcertio.html" title="ne_ssl_cert_read"><link rel="next" href="refsslca.html" title="ne_ssl_trust_cert"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_ssl_dname</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refsslcertio.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refsslca.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refssldname"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_ssl_readable_dname, ne_ssl_dname_cmp — SSL distinguished name handling</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_ssl.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">const char *<b class="fsfunc">ne_ssl_readable_dname</b>(</code></td><td>const ne_ssl_dname *<var class="pdparam">dname</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">ne_ssl_dname_cmp</b>(</code></td><td>const ne_ssl_dname *<var class="pdparam">dn1</var>, </td></tr><tr><td> </td><td>const ne_ssl_dname *<var class="pdparam">dn2</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm140368849456720"></a><h2>Description</h2><p>The <code class="function">ne_ssl_readable_dname</code> function
creates a single-line, human-readable string out of an
<em class="type">ne_ssl_dname</em> object. The returned string is
<code class="function">malloc</code>()-allocated, and must be
<code class="function">free</code>()d by the caller.</p><p>The <code class="function">ne_ssl_dname_cmp</code> function
compares two distinguished names, and returns zero if they are
- equal, or non-zero otherwise.</p></div><div class="refsect1" title="Return value"><a name="id461990"></a><h2>Return value</h2><p><code class="function">ne_ssl_readable_dname</code> returns a <code class="function">malloc</code>-allocated
- string, and never <code class="literal">NULL</code>.</p></div><div class="refsect1" title="Examples"><a name="id462015"></a><h2>Examples</h2><p>See <a class="xref" href="refcert.html#ne_ssl_cert_subject">ne_ssl_cert_subject</a> for an example
- use of <code class="function">ne_ssl_readable_dname</code>.</p></div><div class="refsect1" title="See also"><a name="id462034"></a><h2>See also</h2><p><a class="xref" href="refcert.html#ne_ssl_cert_subject">ne_ssl_cert_subject</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refsslcertio.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refsslca.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_ssl_cert_read </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_ssl_trust_cert</td></tr></table></div></body></html>
+ equal, or non-zero otherwise.</p></div><div class="refsect1"><a name="idm140368849452176"></a><h2>Return value</h2><p><code class="function">ne_ssl_readable_dname</code> returns a <code class="function">malloc</code>-allocated
+ string, and never <code class="literal">NULL</code>.</p></div><div class="refsect1"><a name="idm140368849449280"></a><h2>Examples</h2><p>See <a class="xref" href="refcert.html#ne_ssl_cert_subject">ne_ssl_cert_subject</a> for an example
+ use of <code class="function">ne_ssl_readable_dname</code>.</p></div><div class="refsect1"><a name="idm140368849447008"></a><h2>See also</h2><p><a class="xref" href="refcert.html#ne_ssl_cert_subject">ne_ssl_cert_subject</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refsslcertio.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refsslca.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_ssl_cert_read </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_ssl_trust_cert</td></tr></table></div></body></html>
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_ssl_set_verify</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refsslca.html" title="ne_ssl_trust_cert"><link rel="next" href="refclicert.html" title="ne_ssl_client_cert"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_ssl_set_verify</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refsslca.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refclicert.html">Next</a></td></tr></table><hr></div><div class="refentry" title="ne_ssl_set_verify"><a name="refsslvfy"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_ssl_set_verify — register an SSL certificate verification callback</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_session.h></pre><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">typedef int <b class="fsfunc">ne_ssl_verify_fn</b>(</code></td><td>void *<var class="pdparam">userdata</var>, </td></tr><tr><td> </td><td>int <var class="pdparam">failures</var>, </td></tr><tr><td> </td><td>const ne_ssl_certificate *<var class="pdparam">cert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void <b class="fsfunc">ne_ssl_set_verify</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>ne_ssl_verify_fn <var class="pdparam">verify_fn</var>, </td></tr><tr><td> </td><td>void *<var class="pdparam">userdata</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1" title="Description"><a name="id462711"></a><h2>Description</h2><p>To enable manual SSL certificate verification, a
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_ssl_set_verify</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refsslca.html" title="ne_ssl_trust_cert"><link rel="next" href="refclicert.html" title="ne_ssl_client_cert"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_ssl_set_verify</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refsslca.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refclicert.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refsslvfy"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_ssl_set_verify — register an SSL certificate verification callback</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_session.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">typedef int <b class="fsfunc">ne_ssl_verify_fn</b>(</code></td><td>void *<var class="pdparam">userdata</var>, </td></tr><tr><td> </td><td>int <var class="pdparam">failures</var>, </td></tr><tr><td> </td><td>const ne_ssl_certificate *<var class="pdparam">cert</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_ssl_set_verify</b>(</code></td><td>ne_session *<var class="pdparam">session</var>, </td></tr><tr><td> </td><td>ne_ssl_verify_fn <var class="pdparam">verify_fn</var>, </td></tr><tr><td> </td><td>void *<var class="pdparam">userdata</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm140368849365584"></a><h2>Description</h2><p>To enable manual SSL certificate verification, a
callback can be registered using
<code class="function">ne_ssl_set_verify</code>. If such a callback is not
registered, when a connection is established to an SSL server which
<code class="parameter">failures</code> parameter gives a bitmask indicating
in what way the automatic certificate verification failed. The value
is equal to the bit-wise OR of one or more of the following
-constants (and is guaranteed to be non-zero):</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><p><span class="term"><code class="constant">NE_SSL_NOTYETVALID</code></span></p></td><td>The certificate is not yet valid.</td></tr><tr><td><p><span class="term"><code class="constant">NE_SSL_EXPIRED</code></span></p></td><td>The certificate has expired.</td></tr><tr><td><p><span class="term"><code class="constant">NE_SSL_IDMISMATCH</code></span></p></td><td>The hostname used for the session does not match
+constants (and is guaranteed to be non-zero):</p><div class="variablelist"><table border="0" class="variablelist"><colgroup><col align="left" valign="top"><col></colgroup><tbody><tr><td><p><span class="term"><code class="constant">NE_SSL_NOTYETVALID</code></span></p></td><td>The certificate is not yet valid.</td></tr><tr><td><p><span class="term"><code class="constant">NE_SSL_EXPIRED</code></span></p></td><td>The certificate has expired.</td></tr><tr><td><p><span class="term"><code class="constant">NE_SSL_IDMISMATCH</code></span></p></td><td>The hostname used for the session does not match
the hostname to which the certificate was issued.</td></tr><tr><td><p><span class="term"><code class="constant">NE_SSL_UNTRUSTED</code></span></p></td><td>The Certificate Authority which signed the certificate
is not trusted.</td></tr></tbody></table></div><p>Note that if either of the
<code class="constant">NE_SSL_IDMISMATCH</code> or
If the server presented a chain of certificates, the chain can be
accessed using <a class="xref" href="refcert.html#ne_ssl_cert_signedby">ne_ssl_cert_signedby</a>. The
<code class="parameter">cert</code> object given is not valid after the
-callback returns.</p></div><div class="refsect1" title="Return value"><a name="id462833"></a><h2>Return value</h2><p>The verification callback must return zero to indicate
+callback returns.</p></div><div class="refsect1"><a name="idm140368849351088"></a><h2>Return value</h2><p>The verification callback must return zero to indicate
that the certificate should be trusted; and non-zero otherwise (in
-which case, the connection will fail).</p></div><div class="refsect1" title="Examples"><a name="id462844"></a><h2>Examples</h2><p>The following code implements an example verification
+which case, the connection will fail).</p></div><div class="refsect1"><a name="idm140368849349760"></a><h2>Examples</h2><p>The following code implements an example verification
callback, using the <code class="function">dump_cert</code> function
from <a class="xref" href="refcert.html#ne_ssl_cert_subject">ne_ssl_cert_subject</a> to display
certification information. Notice that the hostname of the
ne_session *sess = ne_session_create("https", "some.host.name", 443);
ne_ssl_set_verify(sess, my_verify, "some.host.name");
...
-}</pre></div><div class="refsect1" title="See also"><a name="id462889"></a><h2>See also</h2><p><a class="xref" href="refsslca.html#ne_ssl_trust_cert">ne_ssl_trust_cert</a>, <a class="xref" href="refssldname.html#ne_ssl_readable_dname">ne_ssl_readable_dname</a>, <a class="xref" href="refcert.html#ne_ssl_cert_subject">ne_ssl_cert_subject</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refsslca.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refclicert.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_ssl_trust_cert </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_ssl_client_cert</td></tr></table></div></body></html>
+}</pre></div><div class="refsect1"><a name="idm140368849344336"></a><h2>See also</h2><p><a class="xref" href="refsslca.html#ne_ssl_trust_cert">ne_ssl_trust_cert</a>, <a class="xref" href="refssldname.html#ne_ssl_readable_dname">ne_ssl_readable_dname</a>, <a class="xref" href="refcert.html#ne_ssl_cert_subject">ne_ssl_cert_subject</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refsslca.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="refclicert.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_ssl_trust_cert </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_ssl_client_cert</td></tr></table></div></body></html>
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_status</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refclicert.html" title="ne_ssl_client_cert"><link rel="next" href="reftok.html" title="ne_token"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_status</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refclicert.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="reftok.html">Next</a></td></tr></table><hr></div><div class="refentry" title="ne_status"><a name="refstatus"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_status — HTTP status structure</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_utils.h>
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_status</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refclicert.html" title="ne_ssl_client_cert"><link rel="next" href="reftok.html" title="ne_token"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_status</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refclicert.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="reftok.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refstatus"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_status — HTTP status structure</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_utils.h>
typedef struct {
int major_version, minor_version;
int code, klass;
const char *reason_phrase;
-} <em class="type">ne_status</em>;</pre></div></div><div class="refsect1" title="Description"><a name="id464077"></a><h2>Description</h2><p>An <em class="type">ne_status</em> type represents an HTTP
+} <em class="type">ne_status</em>;</pre></div></div><div class="refsect1"><a name="idm140368849201776"></a><h2>Description</h2><p>An <em class="type">ne_status</em> type represents an HTTP
response status; used in response messages giving a result of request.
The <em class="structfield"><code>major_version</code></em> and
<em class="structfield"><code>minor_version</code></em> fields give the HTTP version
<em class="structfield"><code>code</code></em> field gives the status code of the
result (lying between 100 and 999 inclusive), and the
<em class="structfield"><code>klass</code></em> field gives the
-class<sup>[<a name="id464102" href="#ftn.id464102" class="footnote">2</a>]</sup>, which is equal to the most significant digit
+class<a href="#ftn.idm140368849198752" class="footnote" name="idm140368849198752"><sup class="footnote">[2]</sup></a>, which is equal to the most significant digit
of the status.</p><p>There are five classes of HTTP status code defined by
- RFC2616:</p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><p><span class="term"><code class="literal">1xx</code></span></p></td><td>Informational response.</td></tr><tr><td><p><span class="term"><code class="literal">2xx</code></span></p></td><td>Success: the operation was successful</td></tr><tr><td><p><span class="term"><code class="literal">3xx</code></span></p></td><td>Redirection</td></tr><tr><td><p><span class="term"><code class="literal">4xx</code></span></p></td><td>Client
+ RFC2616:</p><div class="variablelist"><table border="0" class="variablelist"><colgroup><col align="left" valign="top"><col></colgroup><tbody><tr><td><p><span class="term"><code class="literal">1xx</code></span></p></td><td>Informational response.</td></tr><tr><td><p><span class="term"><code class="literal">2xx</code></span></p></td><td>Success: the operation was successful</td></tr><tr><td><p><span class="term"><code class="literal">3xx</code></span></p></td><td>Redirection</td></tr><tr><td><p><span class="term"><code class="literal">4xx</code></span></p></td><td>Client
error: the request made was incorrect in some
- manner.</td></tr><tr><td><p><span class="term"><code class="literal">5xx</code></span></p></td><td>Server error</td></tr></tbody></table></div></div><div class="refsect1" title="See also"><a name="id464196"></a><h2>See also</h2><p><a class="xref" href="refgetst.html#ne_get_status">ne_get_status</a>.</p></div><div class="footnotes"><br><hr width="100" align="left"><div class="footnote"><p><sup>[<a id="ftn.id464102" href="#id464102" class="para">2</a>] </sup>the field is named <span class="quote">“<span class="quote">klass</span>”</span> not
+ manner.</td></tr><tr><td><p><span class="term"><code class="literal">5xx</code></span></p></td><td>Server error</td></tr></tbody></table></div></div><div class="refsect1"><a name="idm140368849187584"></a><h2>See also</h2><p><a class="xref" href="refgetst.html#ne_get_status">ne_get_status</a>.</p></div><div class="footnotes"><br><hr style="width:100; text-align:left;margin-left: 0"><div id="ftn.idm140368849198752" class="footnote"><p><a href="#idm140368849198752" class="para"><sup class="para">[2] </sup></a>the field is named <span class="quote">“<span class="quote">klass</span>”</span> not
<span class="quote">“<span class="quote">class</span>”</span> so that the header can be used from a C++
program, in which <span class="quote">“<span class="quote">class</span>”</span> is a reserved
word)</p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refclicert.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="reftok.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_ssl_client_cert </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> ne_token</td></tr></table></div></body></html>
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_token</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refstatus.html" title="ne_status"><link rel="next" href="refvers.html" title="ne_version_match"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_token</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refstatus.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refvers.html">Next</a></td></tr></table><hr></div><div class="refentry" title="ne_token"><a name="reftok"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_token, ne_qtoken — string tokenizers</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_string.h></pre><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">char *<b class="fsfunc">ne_token</b>(</code></td><td>char **<var class="pdparam">str</var>, </td></tr><tr><td> </td><td>char <var class="pdparam">sep</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">char *<b class="fsfunc">ne_qtoken</b>(</code></td><td>char **<var class="pdparam">str</var>, </td></tr><tr><td> </td><td>char <var class="pdparam">sep</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">quotes</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1" title="Description"><a name="id464512"></a><h2>Description</h2><p><code class="function">ne_token</code> and
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_token</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refstatus.html" title="ne_status"><link rel="next" href="refvers.html" title="ne_version_match"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_token</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refstatus.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refvers.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="reftok"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_token, ne_qtoken — string tokenizers</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_string.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">char *<b class="fsfunc">ne_token</b>(</code></td><td>char **<var class="pdparam">str</var>, </td></tr><tr><td> </td><td>char <var class="pdparam">sep</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">char *<b class="fsfunc">ne_qtoken</b>(</code></td><td>char **<var class="pdparam">str</var>, </td></tr><tr><td> </td><td>char <var class="pdparam">sep</var>, </td></tr><tr><td> </td><td>const char *<var class="pdparam">quotes</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm140368849149616"></a><h2>Description</h2><p><code class="function">ne_token</code> and
<code class="function">ne_qtoken</code> tokenize the string at the location
stored in the pointer <code class="parameter">str</code>. Each time the
function is called, it returns the next token, and modifies the
is enclosed in a pair of one of the characters given in the
<code class="parameter">quotes</code> string.</p><p>The string being tokenized is modified each time
the tokenizing function is called; replacing the next separator
-character with a <code class="literal">NUL</code> terminator.</p></div><div class="refsect1" title="Examples"><a name="id464578"></a><h2>Examples</h2><p>The following function prints out each token in a
+character with a <code class="literal">NUL</code> terminator.</p></div><div class="refsect1"><a name="idm140368849141808"></a><h2>Examples</h2><p>The following function prints out each token in a
comma-separated string <code class="parameter">list</code>, which is
modified in-place:</p><pre class="programlisting">static void splitter(char *list)
{
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_version_match</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="reftok.html" title="ne_token"><link rel="next" href="refxml.html" title="ne_xml_create"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_version_match</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="reftok.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refxml.html">Next</a></td></tr></table><hr></div><div class="refentry" title="ne_version_match"><a name="refvers"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_version_match, ne_version_string — library versioning</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_utils.h></pre><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">int <b class="fsfunc">ne_version_match</b>(</code></td><td>int <var class="pdparam">major</var>, </td></tr><tr><td> </td><td>int <var class="pdparam">minor</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">const char *<b class="fsfunc">ne_version_string</b>(</code></td><td><code>void)</code>;</td><td> </td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1" title="Description"><a name="id464894"></a><h2>Description</h2><p>The <code class="function">ne_version_match</code> function returns
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_version_match</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="reftok.html" title="ne_token"><link rel="next" href="refxml.html" title="ne_xml_create"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_version_match</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="reftok.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="refxml.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refvers"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_version_match, ne_version_string — library versioning</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_utils.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">ne_version_match</b>(</code></td><td>int <var class="pdparam">major</var>, </td></tr><tr><td> </td><td>int <var class="pdparam">minor</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">const char *<b class="fsfunc">ne_version_string</b>(</code></td><td><code>void)</code>;</td><td> </td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm140368849103568"></a><h2>Description</h2><p>The <code class="function">ne_version_match</code> function returns
non-zero if the library version is not of major version
<code class="parameter">major</code>, or the minor version is less than
<code class="parameter">minor</code>. For neon versions 0.x, every
minor version is assumed to be incompatible with every other minor
version.</p><p>The <code class="function">ne_version_string</code> function returns
- a string giving the library version.</p></div><div class="refsect1" title="Examples"><a name="id464932"></a><h2>Examples</h2><p>To require neon 1.x, version 1.2 or later:</p><pre class="programlisting">if (ne_version_match(1, 2)) {
+ a string giving the library version.</p></div><div class="refsect1"><a name="idm140368849099152"></a><h2>Examples</h2><p>To require neon 1.x, version 1.2 or later:</p><pre class="programlisting">if (ne_version_match(1, 2)) {
printf("Library version out of date: 1.2 required, found %s.",
ne_version_string());
exit(1);
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_xml_create</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refvers.html" title="ne_version_match"><link rel="next" href="biblio.html" title="Bibliography"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_xml_create</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refvers.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="biblio.html">Next</a></td></tr></table><hr></div><div class="refentry" title="ne_xml_create"><a name="refxml"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_xml_create, ne_xml_destroy — create and destroy an XML parser</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_xml.h></pre><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">ne_xml_parser *<b class="fsfunc">ne_xml_create</b>(</code></td><td><code>void)</code>;</td><td> </td></tr></table><div class="funcprototype-spacer"> </div><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void <b class="fsfunc">ne_xml_destroy</b>(</code></td><td>ne_xml_parser *<var class="pdparam">parser</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1" title="Description"><a name="id465180"></a><h2>Description</h2><p>The <code class="function">ne_xml_create</code> function creates an
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ne_xml_create</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="ref.html" title="neon API reference"><link rel="prev" href="refvers.html" title="ne_version_match"><link rel="next" href="biblio.html" title="Bibliography"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ne_xml_create</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="refvers.html">Prev</a> </td><th width="60%" align="center">neon API reference</th><td width="20%" align="right"> <a accesskey="n" href="biblio.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="refxml"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ne_xml_create, ne_xml_destroy — create and destroy an XML parser</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><pre class="funcsynopsisinfo">#include <ne_xml.h></pre><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">ne_xml_parser *<b class="fsfunc">ne_xml_create</b>(</code></td><td><code>void)</code>;</td><td> </td></tr></table><div class="funcprototype-spacer"> </div><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">ne_xml_destroy</b>(</code></td><td>ne_xml_parser *<var class="pdparam">parser</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idm140368849069472"></a><h2>Description</h2><p>The <code class="function">ne_xml_create</code> function creates an
XML parser object, which can be used for parsing XML documents
- using stacked SAX handlers.</p></div><div class="refsect1" title="Return value"><a name="id465196"></a><h2>Return value</h2><p><code class="function">ne_xml_create</code> returns a pointer to an
- XML parser object, and never <code class="literal">NULL</code></p></div><div class="refsect1" title="See also"><a name="id465214"></a><h2>See also</h2><p>XXX</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refvers.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="biblio.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_version_match </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Bibliography</td></tr></table></div></body></html>
+ using stacked SAX handlers.</p></div><div class="refsect1"><a name="idm140368849067568"></a><h2>Return value</h2><p><code class="function">ne_xml_create</code> returns a pointer to an
+ XML parser object, and never <code class="literal">NULL</code></p></div><div class="refsect1"><a name="idm140368849065360"></a><h2>See also</h2><p>XXX</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="refvers.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ref.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="biblio.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ne_version_match </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Bibliography</td></tr></table></div></body></html>
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>HTTP Client Security</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="intro.html" title="Chapter 1. Introduction"><link rel="prev" href="compliance.html" title="Standards compliance"><link rel="next" href="api.html" title="Chapter 2. The neon C language interface"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">HTTP Client Security</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="compliance.html">Prev</a> </td><th width="60%" align="center">Chapter 1. Introduction</th><td width="20%" align="right"> <a accesskey="n" href="api.html">Next</a></td></tr></table><hr></div><div class="sect1" title="HTTP Client Security"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="security"></a>HTTP Client Security</h2></div></div></div><p>neon is intended to be secure against a specific threat
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>HTTP Client Security</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="intro.html" title="Chapter 1. Introduction"><link rel="prev" href="compliance.html" title="Standards compliance"><link rel="next" href="api.html" title="Chapter 2. The neon C language interface"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">HTTP Client Security</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="compliance.html">Prev</a> </td><th width="60%" align="center">Chapter 1. Introduction</th><td width="20%" align="right"> <a accesskey="n" href="api.html">Next</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="security"></a>HTTP Client Security</h2></div></div></div><p>neon is intended to be secure against a specific threat
model: use of a malicious HTTP server. Under this threat model, a
range of attacks are possible against a client when the user (or
application) can be tricked into accessing an HTTP server which is
controlled by an attacker. This section documents various types of
possible attack and describes what mitigation is used in
- neon.</p><div class="sect2" title="CPU or memory consumption attacks"><div class="titlepage"><div><div><h3 class="title"><a name="id444512"></a>CPU or memory consumption attacks</h3></div></div></div><p>neon uses fixed resource limits to prevent the following
- attacks:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>memory/CPU consumption attack using an unbounded number
+ neon.</p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idm140368851674016"></a>CPU or memory consumption attacks</h3></div></div></div><p>neon uses fixed resource limits to prevent the following
+ attacks:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>memory/CPU consumption attack using an unbounded number
of response header fields</p></li><li class="listitem"><p>memory consumption attack using an unbounded length of
individual response header lines (or continuation
headers)</p></li><li class="listitem"><p>memory consumption attack against the PROPFIND code
must be mitigated at application level. Memory consumption in
neon itself is fixed and is not proportional to the response
size.</p><p>Test cases for all the above attacks are present in the
- neon test suite.</p></div><div class="sect2" title="SSL/TLS connection security"><div class="titlepage"><div><div><h3 class="title"><a name="id444586"></a>SSL/TLS connection security</h3></div></div></div><p>When using a connection secured by SSL/TLS, it is necessary
+ neon test suite.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idm140368851664720"></a>SSL/TLS connection security</h3></div></div></div><p>When using a connection secured by SSL/TLS, it is necessary
for clients to verify that the X.509 certificate presented by the
server matches the server's expected identity. The algorithm
required for this purpose is described in RFC 2818 and RFC 3280,
- and is implemented by neon in the following manner:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>the hostname argument passed to <a class="xref" href="refsess.html#ne_session_create">ne_session_create</a> is the expected identity of the
+ and is implemented by neon in the following manner:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>the hostname argument passed to <a class="xref" href="refsess.html#ne_session_create">ne_session_create</a> is the expected identity of the
server</p></li><li class="listitem"><p>the subjectAltName extension of the certificate is used
for comparision against the expected identity, in preference
to the Subject name's commonName attribute.</p></li><li class="listitem"><p>the dNSName, iPAddress, and uniformResourceIdentifier
present the certificate details to a user for manual/off-line
verification, if possible.</p><p>Test cases for the correctness of the implementation of the
identity verification algorithm are present in the neon test
- suite.</p></div><div class="sect2" title="Control character insertion in error messages"><div class="titlepage"><div><div><h3 class="title"><a name="id445137"></a>Control character insertion in error messages</h3></div></div></div><p>Where error messages (as returned by
+ suite.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idm140368851598880"></a>Control character insertion in error messages</h3></div></div></div><p>Where error messages (as returned by
(<a class="xref" href="referr.html#ne_get_error">ne_get_error</a>) contain data supplied by the
server, the untrusted data is sanitised to remove both control
characters and non-ASCII characters. This prevents any attacks
where such error messages are exposed to the user and can
potentially distort the presentation of the interface (for
example, through the use of a carriage return character in a text
- user interface).</p></div><div class="sect2" title="Attacks against authentication credentials"><div class="titlepage"><div><div><h3 class="title"><a name="id445154"></a>Attacks against authentication credentials</h3></div></div></div><p>Authentication credentials can be compromised by a
+ user interface).</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idm140368851596832"></a>Attacks against authentication credentials</h3></div></div></div><p>Authentication credentials can be compromised by a
"downgrade attack" by an active attacker; for example, where a
MITM presents a Basic authentication challenge in place of the
server's Digest challenge. neon mitigates these attacks by
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>How to use neon from your application</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="intro.html" title="Chapter 1. Introduction"><link rel="prev" href="features.html" title="Feature list"><link rel="next" href="compliance.html" title="Standards compliance"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">How to use neon from your application</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="features.html">Prev</a> </td><th width="60%" align="center">Chapter 1. Introduction</th><td width="20%" align="right"> <a accesskey="n" href="compliance.html">Next</a></td></tr></table><hr></div><div class="sect1" title="How to use neon from your application"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="using"></a>How to use neon from your application</h2></div></div></div><p>This section describes how to add neon support to an
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>How to use neon from your application</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="intro.html" title="Chapter 1. Introduction"><link rel="prev" href="features.html" title="Feature list"><link rel="next" href="compliance.html" title="Standards compliance"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">How to use neon from your application</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="features.html">Prev</a> </td><th width="60%" align="center">Chapter 1. Introduction</th><td width="20%" align="right"> <a accesskey="n" href="compliance.html">Next</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="using"></a>How to use neon from your application</h2></div></div></div><p>This section describes how to add neon support to an
application. If you just want to quickly try out neon, use
the <a class="xref" href="refconfig.html" title="neon-config"><span class="refentrytitle">neon-config</span></a> script.</p><p>The neon source code is designed to be easily embedded
into an application source tree. neon has no dependencies on
source tree can be configured to have no support for SSL or XML
if desired. To configure the neon source code some <a class="ulink" href="http://www.gnu.org/software/autoconf/" target="_top">GNU autoconf</a>
macros are supplied, which can be used in a number of ways, as
- follows:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>autoconf macros are distributed in the 'macros'
+ follows:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>autoconf macros are distributed in the 'macros'
subdirectory of the neon distribution. Use the NEON_LIBRARY
macro from your configure.in to check for the presence of
the neon library installed on the system. The macro adds an
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Parsing XML</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="api.html" title="Chapter 2. The neon C language interface"><link rel="prev" href="api.html" title="Chapter 2. The neon C language interface"><link rel="next" href="ref.html" title="neon API reference"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Parsing XML</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="api.html">Prev</a> </td><th width="60%" align="center">Chapter 2. The neon C language interface</th><td width="20%" align="right"> <a accesskey="n" href="ref.html">Next</a></td></tr></table><hr></div><div class="sect1" title="Parsing XML"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="xml"></a>Parsing XML</h2></div></div></div><p>The neon XML interface is exposed by the
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Parsing XML</title><link rel="stylesheet" type="text/css" href="../manual.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="neon HTTP/WebDAV client library"><link rel="up" href="api.html" title="Chapter 2. The neon C language interface"><link rel="prev" href="api.html" title="Chapter 2. The neon C language interface"><link rel="next" href="ref.html" title="neon API reference"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Parsing XML</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="api.html">Prev</a> </td><th width="60%" align="center">Chapter 2. The neon C language interface</th><td width="20%" align="right"> <a accesskey="n" href="ref.html">Next</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="xml"></a>Parsing XML</h2></div></div></div><p>The neon XML interface is exposed by the
<code class="filename">ne_xml.h</code> header file. This interface gives a
wrapper around the standard <a class="ulink" href="http://www.saxproject.org/" target="_top">SAX</a> API used by XML
parsers, with an additional abstraction, <em class="firstterm">stacked SAX
- handlers</em>, and also giving consistent <a class="ulink" href="http://www.w3.org/TR/REC-xml-names" target="_top">XML Namespace</a> support.</p><div class="sect2" title="Introduction to SAX"><div class="titlepage"><div><div><h3 class="title"><a name="xml-sax"></a>Introduction to SAX</h3></div></div></div><p>A SAX-based parser works by emitting a sequence of
+ handlers</em>, and also giving consistent <a class="ulink" href="http://www.w3.org/TR/REC-xml-names" target="_top">XML Namespace</a> support.</p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="xml-sax"></a>Introduction to SAX</h3></div></div></div><p>A SAX-based parser works by emitting a sequence of
<em class="firstterm">events</em> to reflect the tokens being parsed
from the XML document. For example, parsing the following document
fragment:
subset of SAX exposed by the neon XML interface: <span class="emphasis"><em>start-element</em></span>,
<span class="emphasis"><em>character-data</em></span> and <span class="emphasis"><em>end-element</em></span>. In a C API, an <span class="quote">“<span class="quote">event</span>”</span> is
implemented as a function callback; three callback types are used in
- neon, one for each type of event.</p></div><div class="sect2" title="Stacked SAX handlers"><div class="titlepage"><div><div><h3 class="title"><a name="xml-stacked"></a>Stacked SAX handlers</h3></div></div></div><p>WebDAV property values are represented as fragments of XML,
+ neon, one for each type of event.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="xml-stacked"></a>Stacked SAX handlers</h3></div></div></div><p>WebDAV property values are represented as fragments of XML,
transmitted as parts of larger XML documents over HTTP (notably in
the body of the response to a <code class="literal">PROPFIND</code> request).
When neon parses such documents, the SAX events generated for
these property value fragments may need to be handled by the
application, since neon has no knowledge of the structure of
- properties used by the application.</p><p>To solve this problem<sup>[<a name="foot.xml.sax" href="#ftn.foot.xml.sax" class="footnote">1</a>]</sup> the neon XML interface introduces
+ properties used by the application.</p><p>To solve this problem<a href="#ftn.foot.xml.sax" class="footnote" name="foot.xml.sax"><sup class="footnote">[1]</sup></a> the neon XML interface introduces
the concept of a <em class="firstterm">SAX handler</em>. A SAX handler
comprises a <span class="emphasis"><em>start-element</em></span>, <span class="emphasis"><em>character-data</em></span> and <span class="emphasis"><em>end-element</em></span> callback; the
<span class="emphasis"><em>start-element</em></span> callback being defined such that each handler may
the stack. In the above example, handler A is at the base, and
handler B at the top; if the <code class="literal">name</code> element had any
children, only B's <span class="emphasis"><em>start-element</em></span> would be invoked to accept
- them.</p></div><div class="sect2" title="Maintaining state"><div class="titlepage"><div><div><h3 class="title"><a name="xml-state"></a>Maintaining state</h3></div></div></div><p>To facilitate communication between independent handlers, a
+ them.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="xml-state"></a>Maintaining state</h3></div></div></div><p>To facilitate communication between independent handlers, a
<em class="firstterm">state integer</em> is associated with each element
being parsed. This integer is returned by <span class="emphasis"><em>start-element</em></span> callback and
is passed to the subsequent <span class="emphasis"><em>character-data</em></span> and <span class="emphasis"><em>end-element</em></span> callbacks
<span class="emphasis"><em>decline</em></span></li><li class="listitem">B <span class="emphasis"><em>start-element</em></span> (parent = 42, "name") →
<span class="emphasis"><em>accept</em></span>, state = 99</li><li class="listitem">B <span class="emphasis"><em>character-data</em></span> (state = 99, "Bob")</li><li class="listitem">B <span class="emphasis"><em>end-element</em></span> (state = 99, "name")</li><li class="listitem">A <span class="emphasis"><em>end-element</em></span> (state = 42, "cat")</li></ol></div><p>To avoid collisions between state integers used by different
handlers, the interface definition of any handler includes the range
- of integers it will use.</p></div><div class="sect2" title="XML namespaces"><div class="titlepage"><div><div><h3 class="title"><a name="xml-ns"></a>XML namespaces</h3></div></div></div><p>To support XML namespaces, every element name is represented
+ of integers it will use.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="xml-ns"></a>XML namespaces</h3></div></div></div><p>To support XML namespaces, every element name is represented
as a <span class="emphasis"><em>(namespace, name)</em></span> pair. The <span class="emphasis"><em>start-element</em></span>
and <span class="emphasis"><em>end-element</em></span> callbacks are passed namespace and name strings
accordingly. If an element in the XML document has no declared
namespace, the namespace given will be the empty string,
- <code class="literal">""</code>.</p></div><div class="footnotes"><br><hr width="100" align="left"><div class="footnote"><p><sup>[<a id="ftn.foot.xml.sax" href="#foot.xml.sax" class="para">1</a>] </sup>This
+ <code class="literal">""</code>.</p></div><div class="footnotes"><br><hr style="width:100; text-align:left;margin-left: 0"><div id="ftn.foot.xml.sax" class="footnote"><p><a href="#foot.xml.sax" class="para"><sup class="para">[1] </sup></a>This
<span class="quote">“<span class="quote">problem</span>”</span> only needs solving because the SAX interface
is so inflexible when implemented as C function callbacks; a better
approach would be to use an XML parser interface which is not based
'\" t
.\" Title: ne_add_request_header
.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\" Date: 3 May 2011
+.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+.\" Date: 31 July 2013
.\" Manual: neon API reference
-.\" Source: neon 0.29.6
+.\" Source: neon 0.30.0
.\" Language: English
.\"
-.TH "NE_ADD_REQUEST_HEADE" "3" "3 May 2011" "neon 0.29.6" "neon API reference"
+.TH "NE_ADD_REQUEST_HEADE" "3" "31 July 2013" "neon 0.30.0" "neon API reference"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
-.so ne_addr_resolve.3
+.so man3/ne_addr_resolve.3
-.so ne_addr_resolve.3
+.so man3/ne_addr_resolve.3
-.so ne_addr_resolve.3
+.so man3/ne_addr_resolve.3
-.so ne_addr_resolve.3
+.so man3/ne_addr_resolve.3
'\" t
.\" Title: ne_addr_resolve
.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\" Date: 3 May 2011
+.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+.\" Date: 31 July 2013
.\" Manual: neon API reference
-.\" Source: neon 0.29.6
+.\" Source: neon 0.30.0
.\" Language: English
.\"
-.TH "NE_ADDR_RESOLVE" "3" "3 May 2011" "neon 0.29.6" "neon API reference"
+.TH "NE_ADDR_RESOLVE" "3" "31 July 2013" "neon 0.30.0" "neon API reference"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
-.so ne_addr_resolve.3
+.so man3/ne_addr_resolve.3
'\" t
.\" Title: ne_buffer
.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\" Date: 3 May 2011
+.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+.\" Date: 31 July 2013
.\" Manual: neon API reference
-.\" Source: neon 0.29.6
+.\" Source: neon 0.30.0
.\" Language: English
.\"
-.TH "NE_BUFFER" "3" "3 May 2011" "neon 0.29.6" "neon API reference"
+.TH "NE_BUFFER" "3" "31 July 2013" "neon 0.30.0" "neon API reference"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
-.so ne_buffer_clear.3
+.so man3/ne_buffer_clear.3
'\" t
.\" Title: ne_buffer_append
.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\" Date: 3 May 2011
+.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+.\" Date: 31 July 2013
.\" Manual: neon API reference
-.\" Source: neon 0.29.6
+.\" Source: neon 0.30.0
.\" Language: English
.\"
-.TH "NE_BUFFER_APPEND" "3" "3 May 2011" "neon 0.29.6" "neon API reference"
+.TH "NE_BUFFER_APPEND" "3" "31 July 2013" "neon 0.30.0" "neon API reference"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
'\" t
.\" Title: ne_buffer_clear
.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\" Date: 3 May 2011
+.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+.\" Date: 31 July 2013
.\" Manual: neon API reference
-.\" Source: neon 0.29.6
+.\" Source: neon 0.30.0
.\" Language: English
.\"
-.TH "NE_BUFFER_CLEAR" "3" "3 May 2011" "neon 0.29.6" "neon API reference"
+.TH "NE_BUFFER_CLEAR" "3" "31 July 2013" "neon 0.30.0" "neon API reference"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
-.so ne_buffer_append.3
+.so man3/ne_buffer_append.3
'\" t
.\" Title: ne_buffer_create
.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\" Date: 3 May 2011
+.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+.\" Date: 31 July 2013
.\" Manual: neon API reference
-.\" Source: neon 0.29.6
+.\" Source: neon 0.30.0
.\" Language: English
.\"
-.TH "NE_BUFFER_CREATE" "3" "3 May 2011" "neon 0.29.6" "neon API reference"
+.TH "NE_BUFFER_CREATE" "3" "31 July 2013" "neon 0.30.0" "neon API reference"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
'\" t
.\" Title: ne_buffer_destroy
.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\" Date: 3 May 2011
+.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+.\" Date: 31 July 2013
.\" Manual: neon API reference
-.\" Source: neon 0.29.6
+.\" Source: neon 0.30.0
.\" Language: English
.\"
-.TH "NE_BUFFER_DESTROY" "3" "3 May 2011" "neon 0.29.6" "neon API reference"
+.TH "NE_BUFFER_DESTROY" "3" "31 July 2013" "neon 0.30.0" "neon API reference"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
-.so ne_buffer_destroy.3
+.so man3/ne_buffer_destroy.3
-.so ne_buffer_clear.3
+.so man3/ne_buffer_clear.3
-.so ne_buffer_create.3
+.so man3/ne_buffer_create.3
-.so ne_buffer_append.3
+.so man3/ne_buffer_append.3
-.so ne_malloc.3
+.so man3/ne_malloc.3
-.so ne_session_create.3
+.so man3/ne_session_create.3
-.so ne_set_server_auth.3
+.so man3/ne_set_server_auth.3
'\" t
.\" Title: ne_get_error
.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\" Date: 3 May 2011
+.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+.\" Date: 31 July 2013
.\" Manual: neon API reference
-.\" Source: neon 0.29.6
+.\" Source: neon 0.30.0
.\" Language: English
.\"
-.TH "NE_GET_ERROR" "3" "3 May 2011" "neon 0.29.6" "neon API reference"
+.TH "NE_GET_ERROR" "3" "31 July 2013" "neon 0.30.0" "neon API reference"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
-.so ne_set_request_flag.3
+.so man3/ne_set_request_flag.3
'\" t
.\" Title: ne_get_response_header
.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\" Date: 3 May 2011
+.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+.\" Date: 31 July 2013
.\" Manual: neon API reference
-.\" Source: neon 0.29.6
+.\" Source: neon 0.30.0
.\" Language: English
.\"
-.TH "NE_GET_RESPONSE_HEAD" "3" "3 May 2011" "neon 0.29.6" "neon API reference"
+.TH "NE_GET_RESPONSE_HEAD" "3" "31 July 2013" "neon 0.30.0" "neon API reference"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
-.so ne_set_useragent.3
+.so man3/ne_set_useragent.3
-.so ne_set_useragent.3
+.so man3/ne_set_useragent.3
-.so ne_set_session_flag.3
+.so man3/ne_set_session_flag.3
'\" t
.\" Title: ne_get_status
.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\" Date: 3 May 2011
+.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+.\" Date: 31 July 2013
.\" Manual: neon API reference
-.\" Source: neon 0.29.6
+.\" Source: neon 0.30.0
.\" Language: English
.\"
-.TH "NE_GET_STATUS" "3" "3 May 2011" "neon 0.29.6" "neon API reference"
+.TH "NE_GET_STATUS" "3" "31 July 2013" "neon 0.30.0" "neon API reference"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
'\" t
.\" Title: ne_has_support
.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\" Date: 3 May 2011
+.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+.\" Date: 31 July 2013
.\" Manual: neon API reference
-.\" Source: neon 0.29.6
+.\" Source: neon 0.30.0
.\" Language: English
.\"
-.TH "NE_HAS_SUPPORT" "3" "3 May 2011" "neon 0.29.6" "neon API reference"
+.TH "NE_HAS_SUPPORT" "3" "31 July 2013" "neon 0.30.0" "neon API reference"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
'\" t
.\" Title: ne_i18n_init
.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\" Date: 3 May 2011
+.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+.\" Date: 31 July 2013
.\" Manual: neon API reference
-.\" Source: neon 0.29.6
+.\" Source: neon 0.30.0
.\" Language: English
.\"
-.TH "NE_I18N_INIT" "3" "3 May 2011" "neon 0.29.6" "neon API reference"
+.TH "NE_I18N_INIT" "3" "31 July 2013" "neon 0.30.0" "neon API reference"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
-.so ne_iaddr_make.3
+.so man3/ne_iaddr_make.3
-.so ne_iaddr_make.3
+.so man3/ne_iaddr_make.3
'\" t
.\" Title: ne_iaddr_make
.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\" Date: 3 May 2011
+.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+.\" Date: 31 July 2013
.\" Manual: neon API reference
-.\" Source: neon 0.29.6
+.\" Source: neon 0.30.0
.\" Language: English
.\"
-.TH "NE_IADDR_MAKE" "3" "3 May 2011" "neon 0.29.6" "neon API reference"
+.TH "NE_IADDR_MAKE" "3" "31 July 2013" "neon 0.30.0" "neon API reference"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
-.so ne_iaddr_make.3
+.so man3/ne_iaddr_make.3
-.so ne_iaddr_make.3
+.so man3/ne_iaddr_make.3
-.so ne_iaddr_make.3
+.so man3/ne_iaddr_make.3
-.so ne_iaddr_make.3
+.so man3/ne_iaddr_make.3
-.so ne_iaddr_make.3
+.so man3/ne_iaddr_make.3
'\" t
.\" Title: ne_malloc
.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\" Date: 3 May 2011
+.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+.\" Date: 31 July 2013
.\" Manual: neon API reference
-.\" Source: neon 0.29.6
+.\" Source: neon 0.30.0
.\" Language: English
.\"
-.TH "NE_MALLOC" "3" "3 May 2011" "neon 0.29.6" "neon API reference"
+.TH "NE_MALLOC" "3" "31 July 2013" "neon 0.30.0" "neon API reference"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
-.so ne_malloc.3
+.so man3/ne_malloc.3
-.so ne_add_request_header.3
+.so man3/ne_add_request_header.3
-.so ne_token.3
+.so man3/ne_token.3
-.so ne_malloc.3
+.so man3/ne_malloc.3
'\" t
.\" Title: ne_request_create
.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\" Date: 3 May 2011
+.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+.\" Date: 31 July 2013
.\" Manual: neon API reference
-.\" Source: neon 0.29.6
+.\" Source: neon 0.30.0
.\" Language: English
.\"
-.TH "NE_REQUEST_CREATE" "3" "3 May 2011" "neon 0.29.6" "neon API reference"
+.TH "NE_REQUEST_CREATE" "3" "31 July 2013" "neon 0.30.0" "neon API reference"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.BI "void ne_request_destroy(ne_request\ *" "req" ");"
.SH "DESCRIPTION"
.PP
-An HTTP request, represented by the
+The
\fBne_request\fR
-type, specifies that some operation is to be performed on some resource\&. The
+object represents an HTTP request and the associated response\&. The
\fBne_request_create\fR
-function creates a request object, specifying the operation in the
+function creates a new request object for the given
+\fIsession\fR\&. The target resource for the request is identified by the
+\fIpath\fR, and the method to be performed on that resource via the
\fImethod\fR
-parameter\&. The location of the resource is determined by the server in use for the session given by the
-\fIsess\fR
-parameter, combined with the
-\fIpath\fR
parameter\&.
.PP
The
-.so ne_request_create.3
+.so man3/ne_request_create.3
-.so ne_request_create.3
+.so man3/ne_request_create.3
-.so ne_get_response_header.3
+.so man3/ne_get_response_header.3
'\" t
.\" Title: ne_session_create
.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\" Date: 3 May 2011
+.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+.\" Date: 31 July 2013
.\" Manual: neon API reference
-.\" Source: neon 0.29.6
+.\" Source: neon 0.30.0
.\" Language: English
.\"
-.TH "NE_SESSION_CREATE" "3" "3 May 2011" "neon 0.29.6" "neon API reference"
+.TH "NE_SESSION_CREATE" "3" "31 July 2013" "neon 0.30.0" "neon API reference"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
-ne_session_create, ne_close_connection, ne_session_proxy, ne_session_destroy \- set up HTTP sessions
+ne_session_create, ne_close_connection, ne_session_destroy \- set up HTTP sessions
.SH "SYNOPSIS"
.sp
.ft B
.ft
.HP \w'ne_session\ *ne_session_create('u
.BI "ne_session *ne_session_create(const\ char\ *" "scheme" ", const\ char\ *" "hostname" ", unsigned\ int\ " "port" ");"
-.HP \w'void\ ne_session_proxy('u
-.BI "void ne_session_proxy(ne_session\ *" "session" ", const\ char\ *" "hostname" ", unsigned\ int\ " "port" ");"
.HP \w'void\ ne_close_connection('u
.BI "void ne_close_connection(ne_session\ *" "session" ");"
.HP \w'void\ ne_session_destroy('u
\fBne_session\fR
object represents an HTTP session \- a logical grouping of a sequence of HTTP requests made to a certain server\&. Any requests made using the session can use a persistent connection, share cached authentication credentials and any other common attributes\&.
.PP
-A new HTTP session is created using
-\fBne_session_create\fR, giving the
+A new HTTP session is created using the
+\fBne_session_create\fR
+function; the
\fIhostname\fR
and
\fIport\fR
-of the server to use, along with the
+parameters specify the origin server to use, along with the
\fIscheme\fR
-used to contact the server (usually
+(usually
"http")\&. Before the first use of
\fBne_session_create\fR
in a process,
ne_ssl_trust_cert,
ne_ssl_trust_default_ca)\&.
.PP
-If an HTTP proxy server should be used for the session,
-\fBne_session_proxy\fR
-must be called giving the hostname and port on which to contact the proxy\&.
+To use a proxy server for the session, it must be configured (see
+ne_session_proxy) before any requests are created from session object\&.
.PP
Further per\-session options may be changed using the
-ne_set_request_flag
+ne_set_session_flag
interface\&.
.PP
If it is known that the session will not be used for a significant period of time,
.PP
Once a session has been completed,
\fBne_session_destroy\fR
-must be called to destroy the resources associated with the session\&. Any subsequent use of the session pointer produces undefined behaviour\&.
+must be called to destroy the resources associated with the session\&. Any subsequent use of the session pointer produces undefined behaviour\&. The session object must not be destroyed until after all associated request objects have been destroyed\&.
.SH "NOTES"
.PP
The hostname passed to
-.so ne_session_create.3
+.so man3/ne_session_create.3
-.so ne_session_create.3
+'\" t
+.\" Title: ne_session_proxy
+.\" Author:
+.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+.\" Date: 31 July 2013
+.\" Manual: neon API reference
+.\" Source: neon 0.30.0
+.\" Language: English
+.\"
+.TH "NE_SESSION_PROXY" "3" "31 July 2013" "neon 0.30.0" "neon API reference"
+.\" -----------------------------------------------------------------
+.\" * Define some portability stuff
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" http://bugs.debian.org/507673
+.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
+ne_session_proxy, ne_session_socks_proxy, ne_session_system_proxy, ne_set_addrlist \- configure proxy servers
+.SH "SYNOPSIS"
+.sp
+.ft B
+.nf
+#include <ne_session\&.h>
+.fi
+.ft
+.HP \w'void\ ne_session_proxy('u
+.BI "void ne_session_proxy(ne_session\ *" "session" ", const\ char\ *" "hostname" ", unsigned\ int\ " "port" ");"
+.HP \w'void\ ne_session_system_proxy('u
+.BI "void ne_session_system_proxy(ne_session\ *" "session" ", unsigned\ int\ " "flags" ");"
+.HP \w'void\ ne_session_socks_proxy('u
+.BI "void ne_session_socks_proxy(ne_session\ *" "session" ", enum\ ne_sock_sversion\ " "version" ", const\ char\ *" "hostname" ", unsigned\ int\ " "port" ", const\ char\ *" "username" ", const\ char\ *" "password" ");"
+.HP \w'void\ ne_set_addrlist('u
+.BI "void ne_set_addrlist(ne_session\ *" "session" ", const\ ne_inet_addr\ **" "addrlist" ", size_t\ " "count" ");"
+.SH "DESCRIPTION"
+.PP
+One (and no more than one) of the functions
+\fBne_session_proxy\fR,
+\fBne_session_system_proxy\fR,
+\fBne_session_socks_proxy\fR,
+\fBne_set_addrlist\fR
+can be used to configure a proxy server for a given session object\&. If more than one function is invoked for any given session object, only the last call has effect\&. If one of the functions is to be used, it must be used before the creation of any request object for the session\&.
+.SS "HTTP proxy specification"
+.PP
+The
+\fBne_session_proxy\fR
+function configures use of an HTTP proxy server for the session, the location of which is given by the
+\fIhostname\fR
+and
+\fIport\fR
+paramters\&. If the proxy requires authentication,
+ne_set_proxy_auth
+should be used\&.
+.SS "System proxy configuration"
+.PP
+The
+\fBne_session_system_proxy\fR
+function configures the session to use any proxy servers specified by the system configuration\&. Support for this function is platform\-specific; if unsupported, the function has no effect\&.
+.SS "SOCKS proxy configuration"
+.PP
+The
+\fBne_session_socks_proxy\fR
+function configures the session to use a SOCKS proxy\&. The
+\fIversion\fR
+indicates which version of the SOCKS protocol should be used\&. The
+\fIhostname\fR
+and
+\fIport\fR
+parameters specify the SOCKS proxy location\&. Note that a server with only an IPv6 address cannot be used with SOCKS v4 or v4A\&. The interpretation of the other arguments depends on the version specified:
+.PP
+\fBNE_SOCK_SOCKSV4\fR (version 4)
+.RS 4
+The
+\fIusername\fR
+parameter must be non\-NULL; the
+\fIpassword\fR
+parameter is ignored\&.
+.RE
+.PP
+\fBNE_SOCK_SOCKSV4A\fR (version 4A)
+.RS 4
+The
+\fIusername\fR
+parameter must be non\-NULL; the
+\fIpassword\fR
+parameter is ignored\&.
+.RE
+.PP
+\fBNE_SOCK_SOCKSV5\fR (version 5)
+.RS 4
+The
+\fIusername\fR
+parameter may be
+NULL; if it is non\-NULL, the
+\fIpassword\fR
+parameter must also be non\-NULL; otherwise, it is ignored\&.\&.
+.RE
+.SS "Origin server address override"
+.PP
+The
+\fBne_set_addrlist\fR
+function forces use of an address and port the a specified list when establishing a TCP connection, ignoring the "real" hostname and port identifying the origin server for the session (as passed to
+\fBne_session_create\fR)\&. The origin server\*(Aqs "real" hostname and port will still be used in the
+Host
+header in HTTP requests\&. When a connection is required, the library will iterate through the
+\fIaddrlist\fR
+list, attempting to connect to the address
+\fIaddrlist[0]\fR
+through to
+\fIaddrlist[count\-1]\fR
+in turn, until a connection can be established\&.
+.SH "RETURN VALUES"
+.PP
+None of the functions described here has a return value\&.
+.SH "EXAMPLES"
+.PP
+Create and destroy a session:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+ne_session *sess;
+sess = ne_session_create("http", "host\&.example\&.com", 80);
+ne_session_proxy(sess, "proxy\&.example\&.com", 3128);
+/* \&.\&.\&. use sess \&.\&.\&. */
+ne_session_destroy(sess);
+.fi
+.if n \{\
+.RE
+.\}
+.SH "SEE ALSO"
+.PP
+ne_ssl_set_verify,
+ne_ssl_trust_cert,
+ne_sock_init,
+ne_set_session_flag
+.SH "AUTHOR"
+.PP
+\fBJoe Orton\fR <\&neon@lists.manyfish.co.uk\&>
+.RS 4
+Author.
+.RE
+.SH "COPYRIGHT"
+.br
--- /dev/null
+.so man3/ne_session_proxy.3
--- /dev/null
+.so man3/ne_session_proxy.3
--- /dev/null
+.so man3/ne_session_proxy.3
-.so ne_set_useragent.3
+.so man3/ne_set_useragent.3
-.so ne_get_error.3
+.so man3/ne_get_error.3
-.so ne_set_server_auth.3
+.so man3/ne_set_server_auth.3
-.so ne_set_useragent.3
+.so man3/ne_set_useragent.3
'\" t
.\" Title: ne_set_request_body_buffer
.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\" Date: 3 May 2011
+.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+.\" Date: 31 July 2013
.\" Manual: neon API reference
-.\" Source: neon 0.29.6
+.\" Source: neon 0.30.0
.\" Language: English
.\"
-.TH "NE_SET_REQUEST_BODY_" "3" "3 May 2011" "neon 0.29.6" "neon API reference"
+.TH "NE_SET_REQUEST_BODY_" "3" "31 July 2013" "neon 0.30.0" "neon API reference"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
-.so ne_set_request_body_buffer.3
+.so man3/ne_set_request_body_buffer.3
-.so ne_set_request_body_buffer.3
+.so man3/ne_set_request_body_buffer.3
'\" t
.\" Title: ne_set_request_flag
.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\" Date: 3 May 2011
+.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+.\" Date: 31 July 2013
.\" Manual: neon API reference
-.\" Source: neon 0.29.6
+.\" Source: neon 0.30.0
.\" Language: English
.\"
-.TH "NE_SET_REQUEST_FLAG" "3" "3 May 2011" "neon 0.29.6" "neon API reference"
+.TH "NE_SET_REQUEST_FLAG" "3" "31 July 2013" "neon 0.30.0" "neon API reference"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
'\" t
.\" Title: ne_set_server_auth
.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\" Date: 3 May 2011
+.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+.\" Date: 31 July 2013
.\" Manual: neon API reference
-.\" Source: neon 0.29.6
+.\" Source: neon 0.30.0
.\" Language: English
.\"
-.TH "NE_SET_SERVER_AUTH" "3" "3 May 2011" "neon 0.29.6" "neon API reference"
+.TH "NE_SET_SERVER_AUTH" "3" "31 July 2013" "neon 0.30.0" "neon API reference"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
'\" t
.\" Title: ne_set_session_flag
.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\" Date: 3 May 2011
+.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+.\" Date: 31 July 2013
.\" Manual: neon API reference
-.\" Source: neon 0.29.6
+.\" Source: neon 0.30.0
.\" Language: English
.\"
-.TH "NE_SET_SESSION_FLAG" "3" "3 May 2011" "neon 0.29.6" "neon API reference"
+.TH "NE_SET_SESSION_FLAG" "3" "31 July 2013" "neon 0.30.0" "neon API reference"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
'\" t
.\" Title: ne_set_useragent
.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\" Date: 3 May 2011
+.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+.\" Date: 31 July 2013
.\" Manual: neon API reference
-.\" Source: neon 0.29.6
+.\" Source: neon 0.30.0
.\" Language: English
.\"
-.TH "NE_SET_USERAGENT" "3" "3 May 2011" "neon 0.29.6" "neon API reference"
+.TH "NE_SET_USERAGENT" "3" "31 July 2013" "neon 0.30.0" "neon API reference"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
'\" t
.\" Title: ne_shave
.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\" Date: 3 May 2011
+.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+.\" Date: 31 July 2013
.\" Manual: neon API reference
-.\" Source: neon 0.29.6
+.\" Source: neon 0.30.0
.\" Language: English
.\"
-.TH "NE_SHAVE" "3" "3 May 2011" "neon 0.29.6" "neon API reference"
+.TH "NE_SHAVE" "3" "31 July 2013" "neon 0.30.0" "neon API reference"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
-.so ne_sock_init.3
+.so man3/ne_sock_init.3
'\" t
.\" Title: ne_sock_init
.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\" Date: 3 May 2011
+.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+.\" Date: 31 July 2013
.\" Manual: neon API reference
-.\" Source: neon 0.29.6
+.\" Source: neon 0.30.0
.\" Language: English
.\"
-.TH "NE_SOCK_INIT" "3" "3 May 2011" "neon 0.29.6" "neon API reference"
+.TH "NE_SOCK_INIT" "3" "31 July 2013" "neon 0.30.0" "neon API reference"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
'\" t
.\" Title: ne_ssl_cert_cmp
.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\" Date: 3 May 2011
+.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+.\" Date: 31 July 2013
.\" Manual: neon API reference
-.\" Source: neon 0.29.6
+.\" Source: neon 0.30.0
.\" Language: English
.\"
-.TH "NE_SSL_CERT_CMP" "3" "3 May 2011" "neon 0.29.6" "neon API reference"
+.TH "NE_SSL_CERT_CMP" "3" "31 July 2013" "neon 0.30.0" "neon API reference"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
-.so ne_ssl_cert_read.3
+.so man3/ne_ssl_cert_read.3
-.so ne_ssl_cert_cmp.3
+.so man3/ne_ssl_cert_cmp.3
'\" t
.\" Title: ne_ssl_cert_identity
.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\" Date: 3 May 2011
+.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+.\" Date: 31 July 2013
.\" Manual: neon API reference
-.\" Source: neon 0.29.6
+.\" Source: neon 0.30.0
.\" Language: English
.\"
-.TH "NE_SSL_CERT_IDENTITY" "3" "3 May 2011" "neon 0.29.6" "neon API reference"
+.TH "NE_SSL_CERT_IDENTITY" "3" "31 July 2013" "neon 0.30.0" "neon API reference"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
-.so ne_ssl_cert_read.3
+.so man3/ne_ssl_cert_read.3
-.so ne_ssl_cert_identity.3
+.so man3/ne_ssl_cert_identity.3
'\" t
.\" Title: ne_ssl_cert_read
.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\" Date: 3 May 2011
+.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+.\" Date: 31 July 2013
.\" Manual: neon API reference
-.\" Source: neon 0.29.6
+.\" Source: neon 0.30.0
.\" Language: English
.\"
-.TH "NE_SSL_CERT_READ" "3" "3 May 2011" "neon 0.29.6" "neon API reference"
+.TH "NE_SSL_CERT_READ" "3" "31 July 2013" "neon 0.30.0" "neon API reference"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
-.so ne_ssl_cert_identity.3
+.so man3/ne_ssl_cert_identity.3
-.so ne_ssl_cert_identity.3
+.so man3/ne_ssl_cert_identity.3
-.so ne_ssl_cert_read.3
+.so man3/ne_ssl_cert_read.3
-.so ne_ssl_clicert_read.3
+.so man3/ne_ssl_clicert_read.3
-.so ne_ssl_clicert_read.3
+.so man3/ne_ssl_clicert_read.3
-.so ne_ssl_clicert_read.3
+.so man3/ne_ssl_clicert_read.3
-.so ne_ssl_clicert_read.3
+.so man3/ne_ssl_clicert_read.3
-.so ne_ssl_clicert_read.3
+.so man3/ne_ssl_clicert_read.3
'\" t
.\" Title: ne_ssl_client_cert
.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\" Date: 3 May 2011
+.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+.\" Date: 31 July 2013
.\" Manual: neon API reference
-.\" Source: neon 0.29.6
+.\" Source: neon 0.30.0
.\" Language: English
.\"
-.TH "NE_SSL_CLIENT_CERT" "3" "3 May 2011" "neon 0.29.6" "neon API reference"
+.TH "NE_SSL_CLIENT_CERT" "3" "31 July 2013" "neon 0.30.0" "neon API reference"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
-.so ne_ssl_readable_dname.3
+.so man3/ne_ssl_readable_dname.3
'\" t
.\" Title: ne_ssl_dname
.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\" Date: 3 May 2011
+.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+.\" Date: 31 July 2013
.\" Manual: neon API reference
-.\" Source: neon 0.29.6
+.\" Source: neon 0.30.0
.\" Language: English
.\"
-.TH "NE_SSL_DNAME" "3" "3 May 2011" "neon 0.29.6" "neon API reference"
+.TH "NE_SSL_DNAME" "3" "31 July 2013" "neon 0.30.0" "neon API reference"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
'\" t
.\" Title: ne_ssl_set_verify
.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\" Date: 3 May 2011
+.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+.\" Date: 31 July 2013
.\" Manual: neon API reference
-.\" Source: neon 0.29.6
+.\" Source: neon 0.30.0
.\" Language: English
.\"
-.TH "NE_SSL_SET_VERIFY" "3" "3 May 2011" "neon 0.29.6" "neon API reference"
+.TH "NE_SSL_SET_VERIFY" "3" "31 July 2013" "neon 0.30.0" "neon API reference"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
'\" t
.\" Title: ne_ssl_trust_cert
.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\" Date: 3 May 2011
+.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+.\" Date: 31 July 2013
.\" Manual: neon API reference
-.\" Source: neon 0.29.6
+.\" Source: neon 0.30.0
.\" Language: English
.\"
-.TH "NE_SSL_TRUST_CERT" "3" "3 May 2011" "neon 0.29.6" "neon API reference"
+.TH "NE_SSL_TRUST_CERT" "3" "31 July 2013" "neon 0.30.0" "neon API reference"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
-.so ne_ssl_trust_cert.3
+.so man3/ne_ssl_trust_cert.3
'\" t
.\" Title: ne_status
.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\" Date: 3 May 2011
+.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+.\" Date: 31 July 2013
.\" Manual: neon API reference
-.\" Source: neon 0.29.6
+.\" Source: neon 0.30.0
.\" Language: English
.\"
-.TH "NE_STATUS" "3" "3 May 2011" "neon 0.29.6" "neon API reference"
+.TH "NE_STATUS" "3" "31 July 2013" "neon 0.30.0" "neon API reference"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
-.so ne_malloc.3
+.so man3/ne_malloc.3
-.so ne_malloc.3
+.so man3/ne_malloc.3
'\" t
.\" Title: ne_token
.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\" Date: 3 May 2011
+.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+.\" Date: 31 July 2013
.\" Manual: neon API reference
-.\" Source: neon 0.29.6
+.\" Source: neon 0.30.0
.\" Language: English
.\"
-.TH "NE_TOKEN" "3" "3 May 2011" "neon 0.29.6" "neon API reference"
+.TH "NE_TOKEN" "3" "31 July 2013" "neon 0.30.0" "neon API reference"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
'\" t
.\" Title: ne_version_match
.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\" Date: 3 May 2011
+.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+.\" Date: 31 July 2013
.\" Manual: neon API reference
-.\" Source: neon 0.29.6
+.\" Source: neon 0.30.0
.\" Language: English
.\"
-.TH "NE_VERSION_MATCH" "3" "3 May 2011" "neon 0.29.6" "neon API reference"
+.TH "NE_VERSION_MATCH" "3" "31 July 2013" "neon 0.30.0" "neon API reference"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
-.so ne_version_match.3
+.so man3/ne_version_match.3
'\" t
.\" Title: ne_xml_create
.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\" Date: 3 May 2011
+.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+.\" Date: 31 July 2013
.\" Manual: neon API reference
-.\" Source: neon 0.29.6
+.\" Source: neon 0.30.0
.\" Language: English
.\"
-.TH "NE_XML_CREATE" "3" "3 May 2011" "neon 0.29.6" "neon API reference"
+.TH "NE_XML_CREATE" "3" "31 July 2013" "neon 0.30.0" "neon API reference"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
-.so ne_xml_create.3
+.so man3/ne_xml_create.3
'\" t
.\" Title: neon-config
.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\" Date: 3 May 2011
+.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+.\" Date: 31 July 2013
.\" Manual: neon API reference
-.\" Source: neon 0.29.6
+.\" Source: neon 0.30.0
.\" Language: English
.\"
-.TH "NEON\-CONFIG" "1" "3 May 2011" "neon 0.29.6" "neon API reference"
+.TH "NEON\-CONFIG" "1" "31 July 2013" "neon 0.30.0" "neon API reference"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
'\" t
.\" Title: neon
.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\" Date: 3 May 2011
+.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+.\" Date: 31 July 2013
.\" Manual: neon API reference
-.\" Source: neon 0.29.6
+.\" Source: neon 0.30.0
.\" Language: English
.\"
-.TH "NEON" "3" "3 May 2011" "neon 0.29.6" "neon API reference"
+.TH "NEON" "3" "31 July 2013" "neon 0.30.0" "neon API reference"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
<!ENTITY refsessflags SYSTEM "ref/sessflags.xml">
<!ENTITY referr SYSTEM "ref/err.xml">
<!ENTITY refopts SYSTEM "ref/opts.xml">
+<!ENTITY refproxy SYSTEM "ref/proxy.xml">
<!ENTITY refsslvfy SYSTEM "ref/sslvfy.xml">
<!ENTITY refsslcert SYSTEM "ref/sslcert.xml">
<!ENTITY refsslcert2 SYSTEM "ref/sslcert2.xml">
&refiaddr; <!-- ne_iaddr_make -->
&refalloc; <!-- ne_malloc -->
&refsess; <!-- ne_session_create -->
+ &refproxy; <!-- ne_session_proxy -->
&refsessflags; <!-- ne_set_session_flag -->
&refreq; <!-- ne_request_create -->
&refreqhdr; <!-- ne_add_request_header -->
--- /dev/null
+ <refentry id="refproxy">
+
+ <refmeta>
+ <refentrytitle>ne_session_proxy</refentrytitle>
+ <manvolnum>3</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname id="ne_session_proxy">ne_session_proxy</refname>
+ <refname id="ne_session_socks_proxy">ne_session_socks_proxy</refname>
+ <refname id="ne_session_system_proxy">ne_session_system_proxy</refname>
+ <refname id="ne_set_addrlist">ne_set_addrlist</refname>
+ <refpurpose>configure proxy servers</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <funcsynopsis>
+ <funcsynopsisinfo>#include <ne_session.h></funcsynopsisinfo>
+
+ <funcprototype>
+ <funcdef>void <function>ne_session_proxy</function></funcdef>
+ <paramdef>ne_session *<parameter>session</parameter></paramdef>
+ <paramdef>const char *<parameter>hostname</parameter></paramdef>
+ <paramdef>unsigned int <parameter>port</parameter></paramdef>
+ </funcprototype>
+
+ <funcprototype>
+ <funcdef>void <function>ne_session_system_proxy</function></funcdef>
+ <paramdef>ne_session *<parameter>session</parameter></paramdef>
+ <paramdef>unsigned int <parameter>flags</parameter></paramdef>
+ </funcprototype>
+
+ <funcprototype>
+ <funcdef>void <function>ne_session_socks_proxy</function></funcdef>
+ <paramdef>ne_session *<parameter>session</parameter></paramdef>
+ <paramdef>enum ne_sock_sversion <parameter>version</parameter></paramdef>
+ <paramdef>const char *<parameter>hostname</parameter></paramdef>
+ <paramdef>unsigned int <parameter>port</parameter></paramdef>
+ <paramdef>const char *<parameter>username</parameter></paramdef>
+ <paramdef>const char *<parameter>password</parameter></paramdef>
+ </funcprototype>
+
+ <funcprototype>
+ <funcdef>void <function>ne_set_addrlist</function></funcdef>
+ <paramdef>ne_session *<parameter>session</parameter></paramdef>
+ <paramdef>const ne_inet_addr **<parameter>addrlist</parameter></paramdef>
+ <paramdef>size_t <parameter>count</parameter></paramdef>
+ </funcprototype>
+
+ </funcsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+
+ <para>One (and no more than one) of the functions
+ <function>ne_session_proxy</function>,
+ <function>ne_session_system_proxy</function>,
+ <function>ne_session_socks_proxy</function>,
+ <function>ne_set_addrlist</function> can be used to configure
+ a proxy server for a given session object. If more than one
+ function is invoked for any given session object, only the
+ last call has effect. If one of the functions is to be used,
+ it must be used before the creation of any request object for
+ the session.</para>
+
+ <refsect2>
+ <title>HTTP proxy specification</title>
+
+ <para>The <function>ne_session_proxy</function> function
+ configures use of an HTTP proxy server for the session, the
+ location of which is given by the
+ <parameter>hostname</parameter> and
+ <parameter>port</parameter> paramters. If the proxy
+ requires authentication, <xref linkend="ne_set_proxy_auth"/>
+ should be used.</para>
+ </refsect2>
+
+ <refsect2>
+ <title>System proxy configuration</title>
+
+ <para>The <function>ne_session_system_proxy</function>
+ function configures the session to use any proxy servers
+ specified by the system configuration. Support for this
+ function is platform-specific; if unsupported, the function
+ has no effect.</para>
+ </refsect2>
+
+ <refsect2>
+ <title>SOCKS proxy configuration</title>
+
+ <para>The <function>ne_session_socks_proxy</function>
+ function configures the session to use a SOCKS proxy. The
+ <parameter>version</parameter> indicates which version of
+ the SOCKS protocol should be used. The
+ <parameter>hostname</parameter> and
+ <parameter>port</parameter> parameters specify the SOCKS
+ proxy location. Note that a server with only an IPv6
+ address cannot be used with SOCKS v4 or v4A. The
+ interpretation of the other arguments depends on the version
+ specified:</para>
+
+ <variablelist>
+ <varlistentry><term><constant>NE_SOCK_SOCKSV4</constant> (version 4)</term>
+ <listitem>
+ <simpara>The <parameter>username</parameter> parameter
+ must be non-&null;; the <parameter>password</parameter>
+ parameter is ignored.</simpara>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term><constant>NE_SOCK_SOCKSV4A</constant> (version 4A)</term>
+ <listitem>
+ <simpara>The <parameter>username</parameter> parameter
+ must be non-&null;; the <parameter>password</parameter>
+ parameter is ignored.</simpara>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry><term><constant>NE_SOCK_SOCKSV5</constant> (version 5)</term>
+ <listitem>
+ <simpara>The <parameter>username</parameter> parameter
+ may be &null;; if it is non-&null;,
+ the <parameter>password</parameter> parameter must also
+ be non-&null;; otherwise, it is ignored..</simpara>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </refsect2>
+
+ <refsect2>
+ <title>Origin server address override</title>
+
+ <para>The <function>ne_set_addrlist</function> function
+ forces use of an address and port the a specified list when
+ establishing a TCP connection, ignoring the "real" hostname
+ and port identifying the origin server for the session (as
+ passed to <function>ne_session_create</function>). The
+ origin server's "real" hostname and port will still be used
+ in the <literal>Host</literal> header in HTTP requests.
+ When a connection is required, the library will iterate
+ through the <parameter>addrlist</parameter> list, attempting
+ to connect to the address <parameter>addrlist[0]</parameter>
+ through to <parameter>addrlist[count-1]</parameter> in turn,
+ until a connection can be established.</para>
+
+ </refsect2>
+
+ </refsect1>
+
+ <refsect1>
+ <title>Return Values</title>
+ <para>None of the functions described here has a return
+ value.</para>
+ </refsect1>
+
+ <refsect1>
+ <title>Examples</title>
+ <para>Create and destroy a session:</para>
+ <programlisting>ne_session *sess;
+sess = ne_session_create("http", "host.example.com", 80);
+ne_session_proxy(sess, "proxy.example.com", 3128);
+/* ... use sess ... */
+ne_session_destroy(sess);
+</programlisting>
+ </refsect1>
+
+ <refsect1>
+ <title>See Also</title>
+
+ <para><xref linkend="ne_ssl_set_verify"/>, <xref linkend="ne_ssl_trust_cert"/>, <xref linkend="ne_sock_init"/>, <xref linkend="ne_set_session_flag"/></para>
+ </refsect1>
+
+ </refentry>
<refsect1>
<title>Description</title>
- <para>An HTTP request, represented by the
-<type>ne_request</type> type, specifies that some operation is to be
-performed on some resource. The
-<function>ne_request_create</function> function creates a request
-object, specifying the operation in the <parameter>method</parameter>
-parameter. The location of the resource is determined by the server in
-use for the session given by the <parameter>sess</parameter>
-parameter, combined with the <parameter>path</parameter> parameter.</para>
+ <para>The <type>ne_request</type> object represents an HTTP
+ request and the associated response.
+ The <function>ne_request_create</function> function creates a
+ new request object for the
+ given <parameter>session</parameter>. The target resource for
+ the request is identified by the <parameter>path</parameter>,
+ and the method to be performed on that resource via
+ the <parameter>method</parameter> parameter.</para>
<para>The <parameter>path</parameter> string used must conform to the
<literal>abs_path</literal> definition given in RFC2396, with an
<refnamediv>
<refname id="ne_session_create">ne_session_create</refname>
<refname id="ne_close_connection">ne_close_connection</refname>
- <refname id="ne_session_proxy">ne_session_proxy</refname>
<refname id="ne_session_destroy">ne_session_destroy</refname>
<refpurpose>set up HTTP sessions</refpurpose>
</refnamediv>
</funcprototype>
<funcprototype>
- <funcdef>void <function>ne_session_proxy</function></funcdef>
- <paramdef>ne_session *<parameter>session</parameter></paramdef>
- <paramdef>const char *<parameter>hostname</parameter></paramdef>
- <paramdef>unsigned int <parameter>port</parameter></paramdef>
- </funcprototype>
-
- <funcprototype>
<funcdef>void <function>ne_close_connection</function></funcdef>
<paramdef>ne_session *<parameter>session</parameter></paramdef>
</funcprototype>
persistent connection, share cached authentication credentials and any
other common attributes.</para>
- <para>A new HTTP session is created using
-<function>ne_session_create</function>, giving the
-<parameter>hostname</parameter> and <parameter>port</parameter> of the
-server to use, along with the <parameter>scheme</parameter> used to
-contact the server (usually <literal>"http"</literal>). Before the
-first use of <function>ne_session_create</function> in a process,
-<xref linkend="ne_sock_init"/> must have been called to perform any
-global initialization needed by any libraries used by &neon;.</para>
+ <para>A new HTTP session is created using the
+<function>ne_session_create</function> function; the
+<parameter>hostname</parameter> and <parameter>port</parameter>
+parameters specify the origin server to use, along with
+the <parameter>scheme</parameter> (usually <literal>"http"</literal>).
+Before the first use of <function>ne_session_create</function> in a
+process, <xref linkend="ne_sock_init"/> must have been called to
+perform any global initialization needed by any libraries used by
+&neon;.</para>
<para>To enable SSL/TLS for the session, pass the string
<literal>"https"</literal> as the <parameter>scheme</parameter>
certificate (see <xref linkend="ne_ssl_trust_cert"/>, <xref
linkend="ne_ssl_trust_default_ca"/>).</para>
- <para>If an HTTP proxy server should be used for the session,
- <function>ne_session_proxy</function> must be called giving
- the hostname and port on which to contact the proxy.</para>
+ <para>To use a proxy server for the session, it must be
+ configured (see <xref linkend="ne_session_proxy"/>) before any
+ requests are created from session object.</para>
<para>Further per-session options may be changed using the
- <xref linkend="ne_set_request_flag"/> interface.</para>
+ <xref linkend="ne_set_session_flag"/> interface.</para>
<para>If it is known that the session will not be used for a
significant period of time, <function>ne_close_connection</function>
is a request active using the session.</para>
<para>Once a session has been completed,
-<function>ne_session_destroy</function> must be called to destroy the
-resources associated with the session. Any subsequent use of the
-session pointer produces undefined behaviour.</para>
+ <function>ne_session_destroy</function> must be called to
+ destroy the resources associated with the session. Any
+ subsequent use of the session pointer produces undefined
+ behaviour. The session object must not be destroyed until
+ after all associated request objects have been
+ destroyed.</para>
</refsect1>
-0.29.6
\ No newline at end of file
+0.30.0
\ No newline at end of file
#!/bin/sh
# install - install a program, script, or datafile
-scriptversion=2009-04-28.21; # UTC
+scriptversion=2011-01-19.21; # UTC
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
-s) stripcmd=$stripprog;;
-t) 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;;
fi
shift # arg
dst_arg=$arg
+ # Protect names problematic for `test' and other utilities.
+ case $dst_arg in
+ -* | [=\(\)!]) dst_arg=./$dst_arg;;
+ esac
done
fi
fi
if test -z "$dir_arg"; then
- trap '(exit $?); exit' 1 2 13 15
+ do_exit='(exit $ret); exit $ret'
+ trap "ret=129; $do_exit" 1
+ trap "ret=130; $do_exit" 2
+ trap "ret=141; $do_exit" 13
+ trap "ret=143; $do_exit" 15
# Set umask so as not to create temps with too-generous modes.
# However, 'strip' requires both read and write access to temps.
for src
do
- # Protect names starting with `-'.
+ # Protect names problematic for `test' and other utilities.
case $src in
- -*) src=./$src;;
+ -* | [=\(\)!]) src=./$src;;
esac
if test -n "$dir_arg"; then
echo "$0: no destination specified." >&2
exit 1
fi
-
dst=$dst_arg
- # Protect names starting with `-'.
- case $dst in
- -*) dst=./$dst;;
- esac
# If destination is a directory, append the input filename; won't work
# if double slashes aren't ignored.
case $dstdir in
/*) prefix='/';;
- -*) prefix='./';;
+ [-=\(\)!]*) prefix='./';;
*) prefix='';;
esac
for d
do
- test -z "$d" && continue
+ test X"$d" = X && continue
prefix=$prefix$d
if test -d "$prefix"; then
-# Generated from ltmain.m4sh.
-# libtool (GNU libtool) 2.2.10
+# libtool (GNU libtool) 2.4.2
# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
-# 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# 2007, 2008, 2009, 2010, 2011 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.
# --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
# compiler: $LTCC
# compiler flags: $LTCFLAGS
# linker: $LD (gnu? $with_gnu_ld)
-# $progname: (GNU libtool) 2.2.10
+# $progname: (GNU libtool) 2.4.2
# automake: $automake_version
# autoconf: $autoconf_version
#
# Report bugs to <bug-libtool@gnu.org>.
+# GNU libtool home page: <http://www.gnu.org/software/libtool/>.
+# General help using GNU software: <http://www.gnu.org/gethelp/>.
PROGRAM=libtool
PACKAGE=libtool
-VERSION=2.2.10
+VERSION=2.4.2
TIMESTAMP=""
-package_revision=1.3175
+package_revision=1.3337
# Be Bourne compatible
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
: ${CP="cp -f"}
test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
-: ${EGREP="/bin/grep -E"}
-: ${FGREP="/bin/grep -F"}
-: ${GREP="/bin/grep"}
-: ${LN_S="ln -s"}
: ${MAKE="make"}
: ${MKDIR="mkdir"}
: ${MV="mv -f"}
: ${RM="rm -f"}
-: ${SED="/bin/sed"}
: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
: ${Xsed="$SED -e 1s/^X//"}
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
+
+
+# func_basename file
+func_basename ()
+{
+ func_basename_result=`$ECHO "${1}" | $SED "$basename"`
+} # func_basename may be replaced by extended shell implementation
+
+
# func_dirname_and_basename file append nondir_replacement
# perform func_basename and func_dirname in a single function
# call:
# 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"`
-}
+ # 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
+
+
+# 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
-# Generated shell functions inserted here.
# These SED scripts presuppose an absolute path with a trailing slash.
pathcar='s,^/\([^/]*\).*$,\1,'
;;
*)
save_IFS="$IFS"
- IFS=:
+ IFS=${PATH_SEPARATOR-:}
for progdir in $PATH; do
IFS="$save_IFS"
test -x "$progdir/$progname" && break
# 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.
# name if it has been set yet.
func_echo ()
{
- $ECHO "$progname${mode+: }$mode: $*"
+ $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
}
# func_verbose arg...
# Echo program name prefixed message to standard error.
func_error ()
{
- $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
+ $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${mode+: }$mode: warning: "${1+"$@"} 1>&2
+ $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
# bash bug again:
:
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 ()
+{
+ 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
+}
+
# func_version
# Echo version message to standard output and exit.
func_version ()
{
+ $opt_debug
+
$SED -n '/(C)/!b go
:more
/\./!{
# Echo short help message to standard output and exit.
func_usage ()
{
+ $opt_debug
+
$SED -n '/^# Usage:/,/^# *.*--help/ {
s/^# //
s/^# *$//
# unless 'noexit' is passed as argument.
func_help ()
{
+ $opt_debug
+
$SED -n '/^# Usage:/,/# Report bugs to/ {
+ :print
s/^# //
s/^# *$//
s*\$progname*'$progname'*
s*\$LTCFLAGS*'"$LTCFLAGS"'*
s*\$LD*'"$LD"'*
s/\$with_gnu_ld/'"$with_gnu_ld"'/
- s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
- s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
+ s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/
+ s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/
p
- }' < "$progpath"
+ d
+ }
+ /^# .* home page:/b print
+ /^# General help using/b print
+ ' < "$progpath"
ret=$?
if test -z "$1"; then
exit $ret
# exit_cmd.
func_missing_arg ()
{
+ $opt_debug
+
func_error "missing argument for $1."
exit_cmd=exit
}
-exit_cmd=:
+# 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 ()
+{
+ my_sed_short_opt='1s/^\(..\).*$/\1/;q'
+ my_sed_short_rest='1s/^..\(.*\)$/\1/;q'
+
+ 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_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 ()
+{
+ my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
+ my_sed_long_arg='1s/^--[^=]*=//'
+
+ 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
+
+exit_cmd=:
magic_exe="%%%MAGIC EXE variable%%%"
# Global variables.
-# $mode is unset
nonopt=
-execute_dlfiles=
preserve_args=
lo2o="s/\\.lo\$/.${objext}/"
o2lo="s/\\.${objext}\$/.lo/"
extracted_archives=
extracted_serial=0
-opt_dry_run=false
-opt_duplicate_deps=false
-opt_silent=false
-opt_debug=:
-
# 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 ()
+{
+ eval "${1}=\$${1}\${2}"
+} # func_append may be replaced by extended shell implementation
+
+# 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
+
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+ func_arith_result=`expr "${@}"`
+} # func_arith may be replaced by extended shell implementation
+
+
+# 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
+
+
+# func_lo2o object
+func_lo2o ()
+{
+ func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
+} # func_lo2o may be replaced by extended shell implementation
+
+
+# func_xform libobj-or-source
+func_xform ()
+{
+ func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
+} # func_xform may be replaced by extended shell implementation
+
+
# func_fatal_configuration arg...
# Echo program name prefixed message to standard error, followed by
# a configuration failure hint, and exit.
esac
}
-# Parse options once, thoroughly. This comes as soon as possible in
-# the script to make things like `libtool --version' happen quickly.
+# 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
+$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
+$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
+$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
+
+ 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
+
+
+
+# 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
- # Parse non-mode specific arguments:
- while test "$#" -gt 0; do
+# 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
- --config) func_config ;;
-
- --debug) preserve_args="$preserve_args $opt"
+ --debug|-x) opt_debug='set -x'
func_echo "enabling shell trace mode"
- opt_debug='set -x'
$opt_debug
;;
-
- -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break
- execute_dlfiles="$execute_dlfiles $1"
- shift
+ --dry-run|--dryrun|-n)
+ opt_dry_run=:
;;
-
- --dry-run | -n) opt_dry_run=: ;;
- --features) func_features ;;
- --finish) mode="finish" ;;
-
- --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break
- 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 $opt"
- exit_cmd=exit
- break
- ;;
- esac
-
- mode="$1"
+ --config)
+ opt_config=:
+func_config
+ ;;
+ --dlopen|-dlopen)
+ optarg="$1"
+ opt_dlopen="${opt_dlopen+$opt_dlopen
+}$optarg"
shift
;;
-
--preserve-dup-deps)
- opt_duplicate_deps=: ;;
-
- --quiet|--silent) preserve_args="$preserve_args $opt"
- opt_silent=:
- opt_verbose=false
+ opt_preserve_dup_deps=:
;;
-
- --no-quiet|--no-silent)
- preserve_args="$preserve_args $opt"
- opt_silent=false
+ --features)
+ opt_features=:
+func_features
;;
-
- --verbose| -v) preserve_args="$preserve_args $opt"
+ --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
- opt_verbose=:
+func_append preserve_args " $opt"
;;
-
- --no-verbose) preserve_args="$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"
;;
-
- --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break
- preserve_args="$preserve_args $opt $1"
- func_enable_tag "$1" # tagname is set here
+ --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:
- -dlopen=*|--mode=*|--tag=*)
- func_opt_split "$opt"
- set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
+ --*=*)
+ func_split_long_opt "$opt"
+ set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}
shift
;;
- -\?|-h) func_usage ;;
- --help) opt_help=: ;;
- --help-all) opt_help=': help-all' ;;
- --version) func_version ;;
-
- -*) func_fatal_help "unrecognized option \`$opt'" ;;
-
- *) nonopt="$opt"
- break
+ # 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:
+
+ # save first non-option argument
+ if test "$#" -gt 0; then
+ nonopt="$opt"
+ shift
+ fi
+
+ # preserve --debug
+ test "$opt_debug" = : || func_append preserve_args " --debug"
case $host in
*cygwin* | *mingw* | *pw32* | *cegcc*)
opt_duplicate_compiler_generated_deps=:
;;
*)
- opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
+ opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
;;
esac
- # Having warned about all mis-specified options, bail out if
- # anything was wrong.
- $exit_cmd $EXIT_FAILURE
-}
+ $opt_help || {
+ # Sanity checks first:
+ func_check_version_match
-# 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
-$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
-$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
-$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
+ if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+ func_fatal_configuration "not configured to build any kind of library"
fi
- exit $EXIT_MISMATCH
- 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
+ fi
-## ----------- ##
-## Main. ##
-## ----------- ##
-
-$opt_help || {
- # Sanity checks first:
- func_check_version_match
-
- if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
- func_fatal_configuration "not configured to build any kind of library"
- fi
-
- test -z "$mode" && func_fatal_error "error: you must specify a MODE."
+ # Change the help message to a mode-specific one.
+ generic_help="$help"
+ help="Try \`$progname --help --mode=$opt_mode' for more information."
+ }
- # Darwin sucks
- eval std_shrext=\"$shrext_cmds\"
+ # Bail if the options were screwed
+ $exit_cmd $EXIT_FAILURE
+}
- # Only execute mode is allowed to have -dlopen flags.
- if test -n "$execute_dlfiles" && test "$mode" != execute; 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=$mode' for more information."
-}
+## ----------- ##
+## Main. ##
+## ----------- ##
# func_lalib_p file
# True iff FILE is a libtool `.la' library or `.lo' object file.
# temporary ltwrapper_script.
func_ltwrapper_scriptname ()
{
- func_ltwrapper_scriptname_result=""
- if func_ltwrapper_executable_p "$1"; then
- func_dirname_and_basename "$1" "" "."
- func_stripname '' '.exe' "$func_basename_result"
- func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
- fi
+ 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_p file
}
+# func_resolve_sysroot PATH
+# Replace a leading = in PATH with a sysroot. Store the result into
+# func_resolve_sysroot_result
+func_resolve_sysroot ()
+{
+ func_resolve_sysroot_result=$1
+ case $func_resolve_sysroot_result in
+ =*)
+ func_stripname '=' '' "$func_resolve_sysroot_result"
+ func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
+ ;;
+ esac
+}
+
+# func_replace_sysroot PATH
+# If PATH begins with the sysroot, replace it with = and
+# store the result into func_replace_sysroot_result.
+func_replace_sysroot ()
+{
+ case "$lt_sysroot:$1" in
+ ?*:"$lt_sysroot"*)
+ func_stripname "$lt_sysroot" '' "$1"
+ func_replace_sysroot_result="=$func_stripname_result"
+ ;;
+ *)
+ # Including no sysroot.
+ func_replace_sysroot_result=$1
+ ;;
+ esac
+}
+
# func_infer_tag arg
# Infer tagged configuration to use if any are available and
# if one wasn't chosen via the "--tag" command line option.
if test -n "$available_tags" && test -z "$tagname"; then
CC_quoted=
for arg in $CC; do
- func_quote_for_eval "$arg"
- CC_quoted="$CC_quoted $func_quote_for_eval_result"
+ func_append_quoted CC_quoted "$arg"
done
CC_expanded=`func_echo_all $CC`
CC_quoted_expanded=`func_echo_all $CC_quoted`
CC_quoted=
for arg in $CC; do
# Double-quote args containing other shell metacharacters.
- func_quote_for_eval "$arg"
- CC_quoted="$CC_quoted $func_quote_for_eval_result"
+ func_append_quoted CC_quoted "$arg"
done
CC_expanded=`func_echo_all $CC`
CC_quoted_expanded=`func_echo_all $CC_quoted`
}
-
-# func_write_libtool_object output_name pic_name nonpic_name
-# Create a libtool object file (analogous to a ".la" file),
-# but don't create it if we're doing a dry run.
-func_write_libtool_object ()
+
+# func_write_libtool_object output_name pic_name nonpic_name
+# Create a libtool object file (analogous to a ".la" file),
+# 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}\'
+ else
+ write_lobj=none
+ fi
+
+ if test "$build_old_libs" = yes; then
+ write_oldobj=\'${3}\'
+ else
+ write_oldobj=none
+ fi
+
+ $opt_dry_run || {
+ cat >${write_libobj}T <<EOF
+# $write_libobj - a libtool object file
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object=$write_lobj
+
+# Name of the non-PIC object
+non_pic_object=$write_oldobj
+
+EOF
+ $MV "${write_libobj}T" "${write_libobj}"
+ }
+}
+
+
+##################################################
+# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
+##################################################
+
+# func_convert_core_file_wine_to_w32 ARG
+# Helper function used by file name conversion functions when $build is *nix,
+# and $host is mingw, cygwin, or some other w32 environment. Relies on a
+# correctly configured wine environment available, with the winepath program
+# in $build's $PATH.
+#
+# ARG is the $build file name to be converted to w32 format.
+# Result is available in $func_convert_core_file_wine_to_w32_result, and will
+# be empty on error (or when ARG is empty)
+func_convert_core_file_wine_to_w32 ()
+{
+ $opt_debug
+ func_convert_core_file_wine_to_w32_result="$1"
+ if test -n "$1"; then
+ # Unfortunately, winepath does not exit with a non-zero error code, so we
+ # are forced to check the contents of stdout. On the other hand, if the
+ # command is not found, the shell will set an exit code of 127 and print
+ # *an error message* to stdout. So we must check for both error code of
+ # zero AND non-empty stdout, which explains the odd construction:
+ func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
+ 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"`
+ else
+ func_convert_core_file_wine_to_w32_result=
+ fi
+ fi
+}
+# end: func_convert_core_file_wine_to_w32
+
+
+# func_convert_core_path_wine_to_w32 ARG
+# Helper function used by path conversion functions when $build is *nix, and
+# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
+# configured wine environment available, with the winepath program in $build's
+# $PATH. Assumes ARG has no leading or trailing path separator characters.
+#
+# ARG is path to be converted from $build format to win32.
+# Result is available in $func_convert_core_path_wine_to_w32_result.
+# Unconvertible file (directory) names in ARG are skipped; if no directory names
+# are convertible, then the result may be empty.
+func_convert_core_path_wine_to_w32 ()
+{
+ $opt_debug
+ # unfortunately, winepath doesn't convert paths, only file names
+ 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 -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"
+ else
+ func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
+ fi
+ fi
+ done
+ IFS=$oldIFS
+ fi
+}
+# end: func_convert_core_path_wine_to_w32
+
+
+# func_cygpath ARGS...
+# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
+# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
+# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
+# (2), returns the Cygwin file name or path in func_cygpath_result (input
+# file name or path is assumed to be in w32 format, as previously converted
+# from $build's *nix or MSYS format). In case (3), returns the w32 file name
+# or path in func_cygpath_result (input file name or path is assumed to be in
+# Cygwin format). Returns an empty string on error.
+#
+# ARGS are passed to cygpath, with the last one being the file name or path to
+# be converted.
+#
+# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
+# environment variable; do not put it in $PATH.
+func_cygpath ()
+{
+ $opt_debug
+ if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
+ func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
+ if test "$?" -ne 0; then
+ # on failure, ensure result is empty
+ func_cygpath_result=
+ fi
+ else
+ func_cygpath_result=
+ func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'"
+ fi
+}
+#end: func_cygpath
+
+
+# func_convert_core_msys_to_w32 ARG
+# Convert file name or path ARG from MSYS format to w32 format. Return
+# result in func_convert_core_msys_to_w32_result.
+func_convert_core_msys_to_w32 ()
+{
+ $opt_debug
+ # 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"`
+}
+#end: func_convert_core_msys_to_w32
+
+
+# func_convert_file_check ARG1 ARG2
+# Verify that ARG1 (a file name in $build format) was converted to $host
+# format in ARG2. Otherwise, emit an error message, but continue (resetting
+# func_to_host_file_result to ARG1).
+func_convert_file_check ()
+{
+ $opt_debug
+ if test -z "$2" && test -n "$1" ; then
+ func_error "Could not determine host file name corresponding to"
+ func_error " \`$1'"
+ func_error "Continuing, but uninstalled executables may not work."
+ # Fallback:
+ func_to_host_file_result="$1"
+ fi
+}
+# end func_convert_file_check
+
+
+# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
+# Verify that FROM_PATH (a path in $build format) was converted to $host
+# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
+# func_to_host_file_result to a simplistic fallback value (see below).
+func_convert_path_check ()
+{
+ $opt_debug
+ if test -z "$4" && test -n "$3"; then
+ func_error "Could not determine the host path corresponding to"
+ 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.
+ if test "x$1" != "x$2"; then
+ lt_replace_pathsep_chars="s|$1|$2|g"
+ func_to_host_path_result=`echo "$3" |
+ $SED -e "$lt_replace_pathsep_chars"`
+ else
+ func_to_host_path_result="$3"
+ fi
+ fi
+}
+# end func_convert_path_check
+
+
+# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
+# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
+# and appending REPL if ORIG matches BACKPAT.
+func_convert_path_front_back_pathsep ()
+{
+ $opt_debug
+ case $4 in
+ $1 ) func_to_host_path_result="$3$func_to_host_path_result"
+ ;;
+ esac
+ case $4 in
+ $2 ) func_append func_to_host_path_result "$3"
+ ;;
+ esac
+}
+# end func_convert_path_front_back_pathsep
+
+
+##################################################
+# $build to $host FILE NAME CONVERSION FUNCTIONS #
+##################################################
+# 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.
+
+
+# func_to_host_file ARG
+# Converts the file name ARG from $build format to $host format. Return result
+# in func_to_host_file_result.
+func_to_host_file ()
+{
+ $opt_debug
+ $to_host_file_cmd "$1"
+}
+# end func_to_host_file
+
+
+# func_to_tool_file ARG LAZY
+# converts the file name ARG from $build format to toolchain format. Return
+# result in func_to_tool_file_result. If the conversion in use is listed
+# in (the comma separated) LAZY, no conversion takes place.
+func_to_tool_file ()
+{
+ $opt_debug
+ case ,$2, in
+ *,"$to_tool_file_cmd",*)
+ func_to_tool_file_result=$1
+ ;;
+ *)
+ $to_tool_file_cmd "$1"
+ func_to_tool_file_result=$func_to_host_file_result
+ ;;
+ esac
+}
+# end func_to_tool_file
+
+
+# func_convert_file_noop ARG
+# Copy ARG to func_to_host_file_result.
+func_convert_file_noop ()
+{
+ func_to_host_file_result="$1"
+}
+# end func_convert_file_noop
+
+
+# func_convert_file_msys_to_w32 ARG
+# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
+# conversion to w32 is not available inside the cwrapper. Returns result in
+# func_to_host_file_result.
+func_convert_file_msys_to_w32 ()
+{
+ $opt_debug
+ 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"
+ fi
+ func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_msys_to_w32
+
+
+# func_convert_file_cygwin_to_w32 ARG
+# Convert file name ARG from Cygwin to w32 format. Returns result in
+# func_to_host_file_result.
+func_convert_file_cygwin_to_w32 ()
+{
+ $opt_debug
+ 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.
+ func_to_host_file_result=`cygpath -m "$1"`
+ fi
+ func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_cygwin_to_w32
+
+
+# func_convert_file_nix_to_w32 ARG
+# Convert file name ARG from *nix to w32 format. Requires a wine environment
+# 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"
+ 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"
+ fi
+ func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_nix_to_w32
+
+
+# func_convert_file_msys_to_cygwin ARG
+# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set.
+# Returns result in func_to_host_file_result.
+func_convert_file_msys_to_cygwin ()
+{
+ $opt_debug
+ 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"
+ fi
+ func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_msys_to_cygwin
+
+
+# func_convert_file_nix_to_cygwin ARG
+# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed
+# in a wine environment, working winepath, and LT_CYGPATH set. Returns result
+# in func_to_host_file_result.
+func_convert_file_nix_to_cygwin ()
+{
+ $opt_debug
+ 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"
+ fi
+ func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_nix_to_cygwin
+
+
+#############################################
+# $build to $host PATH CONVERSION FUNCTIONS #
+#############################################
+# 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.
+#
+# Path separators are also converted from $build format to $host format. If
+# ARG begins or ends with a path separator character, it is preserved (but
+# converted to $host format) on output.
+#
+# All path conversion functions are named using the following convention:
+# file name conversion function : func_convert_file_X_to_Y ()
+# path conversion function : func_convert_path_X_to_Y ()
+# where, for any given $build/$host combination the 'X_to_Y' value is the
+# same. If conversion functions are added for new $build/$host combinations,
+# the two new functions must follow this pattern, or func_init_to_host_path_cmd
+# will break.
+
+
+# func_init_to_host_path_cmd
+# Ensures that function "pointer" variable $to_host_path_cmd is set to the
+# appropriate value, based on the value of $to_host_file_cmd.
+to_host_path_cmd=
+func_init_to_host_path_cmd ()
+{
+ $opt_debug
+ 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}"
+ fi
+}
+
+
+# func_to_host_path ARG
+# Converts the path ARG from $build format to $host format. Return result
+# in func_to_host_path_result.
+func_to_host_path ()
+{
+ $opt_debug
+ func_init_to_host_path_cmd
+ $to_host_path_cmd "$1"
+}
+# end func_to_host_path
+
+
+# func_convert_path_noop ARG
+# Copy ARG to func_to_host_path_result.
+func_convert_path_noop ()
+{
+ func_to_host_path_result="$1"
+}
+# end func_convert_path_noop
+
+
+# func_convert_path_msys_to_w32 ARG
+# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
+# conversion to w32 is not available inside the cwrapper. Returns result in
+# func_to_host_path_result.
+func_convert_path_msys_to_w32 ()
+{
+ $opt_debug
+ 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 ';.';
+ # and winepath ignores them completely.
+ 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_convert_path_check : ";" \
+ "$func_to_host_path_tmp1" "$func_to_host_path_result"
+ func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
+ fi
+}
+# end func_convert_path_msys_to_w32
+
+
+# func_convert_path_cygwin_to_w32 ARG
+# Convert path ARG from Cygwin to w32 format. Returns result in
+# func_to_host_file_result.
+func_convert_path_cygwin_to_w32 ()
+{
+ $opt_debug
+ 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_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
+ func_convert_path_check : ";" \
+ "$func_to_host_path_tmp1" "$func_to_host_path_result"
+ func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
+ fi
+}
+# end func_convert_path_cygwin_to_w32
+
+
+# func_convert_path_nix_to_w32 ARG
+# Convert path ARG from *nix to w32 format. Requires a wine environment and
+# a working winepath. Returns result in func_to_host_file_result.
+func_convert_path_nix_to_w32 ()
{
- write_libobj=${1}
- if test "$build_libtool_libs" = yes; then
- write_lobj=\'${2}\'
- else
- write_lobj=none
- fi
-
- if test "$build_old_libs" = yes; then
- write_oldobj=\'${3}\'
- else
- write_oldobj=none
- fi
+ $opt_debug
+ 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_convert_path_check : ";" \
+ "$func_to_host_path_tmp1" "$func_to_host_path_result"
+ func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
+ fi
+}
+# end func_convert_path_nix_to_w32
- $opt_dry_run || {
- cat >${write_libobj}T <<EOF
-# $write_libobj - a libtool object file
-# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-# Name of the PIC object.
-pic_object=$write_lobj
+# func_convert_path_msys_to_cygwin ARG
+# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set.
+# Returns result in func_to_host_file_result.
+func_convert_path_msys_to_cygwin ()
+{
+ $opt_debug
+ 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_convert_path_check : : \
+ "$func_to_host_path_tmp1" "$func_to_host_path_result"
+ func_convert_path_front_back_pathsep ":*" "*:" : "$1"
+ fi
+}
+# end func_convert_path_msys_to_cygwin
-# Name of the non-PIC object
-non_pic_object=$write_oldobj
-EOF
- $MV "${write_libobj}T" "${write_libobj}"
- }
+# func_convert_path_nix_to_cygwin ARG
+# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a
+# a wine environment, working winepath, and LT_CYGPATH set. Returns result in
+# func_to_host_file_result.
+func_convert_path_nix_to_cygwin ()
+{
+ $opt_debug
+ 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 ';.', and winepath ignores them completely.
+ func_stripname : : "$1"
+ 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_convert_path_check : : \
+ "$func_to_host_path_tmp1" "$func_to_host_path_result"
+ func_convert_path_front_back_pathsep ":*" "*:" : "$1"
+ fi
}
+# end func_convert_path_nix_to_cygwin
+
# func_mode_compile arg...
func_mode_compile ()
;;
-pie | -fpie | -fPIE)
- pie_flag="$pie_flag $arg"
+ func_append pie_flag " $arg"
continue
;;
-shared | -static | -prefer-pic | -prefer-non-pic)
- later="$later $arg"
+ func_append later " $arg"
continue
;;
save_ifs="$IFS"; IFS=','
for arg in $args; do
IFS="$save_ifs"
- func_quote_for_eval "$arg"
- lastarg="$lastarg $func_quote_for_eval_result"
+ func_append_quoted lastarg "$arg"
done
IFS="$save_ifs"
func_stripname ' ' '' "$lastarg"
lastarg=$func_stripname_result
# Add the arguments to base_compile.
- base_compile="$base_compile $lastarg"
+ func_append base_compile " $lastarg"
continue
;;
esac # case $arg_mode
# Aesthetically quote the previous argument.
- func_quote_for_eval "$lastarg"
- base_compile="$base_compile $func_quote_for_eval_result"
+ func_append_quoted base_compile "$lastarg"
done # for arg
case $arg_mode in
*.[cCFSifmso] | \
*.ada | *.adb | *.ads | *.asm | \
*.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
- *.[fF][09]? | *.for | *.java | *.obj | *.sx | *.cu | *.cup)
+ *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
func_xform "$libobj"
libobj=$func_xform_result
;;
$opt_dry_run || $RM $removelist
exit $EXIT_FAILURE
fi
- removelist="$removelist $output_obj"
+ func_append removelist " $output_obj"
$ECHO "$srcfile" > "$lockfile"
fi
$opt_dry_run || $RM $removelist
- removelist="$removelist $lockfile"
+ func_append removelist " $lockfile"
trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
- if test -n "$fix_srcfile_path"; then
- eval srcfile=\"$fix_srcfile_path\"
- fi
+ func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
+ srcfile=$func_to_tool_file_result
func_quote_for_eval "$srcfile"
qsrcfile=$func_quote_for_eval_result
if test -z "$output_obj"; then
# Place PIC objects in $objdir
- command="$command -o $lobj"
+ func_append command " -o $lobj"
fi
func_show_eval_locale "$command" \
command="$base_compile $qsrcfile $pic_flag"
fi
if test "$compiler_c_o" = yes; then
- command="$command -o $obj"
+ func_append command " -o $obj"
fi
# Suppress compiler output if we already did a PIC compilation.
- command="$command$suppress_output"
+ func_append command "$suppress_output"
func_show_eval_locale "$command" \
'$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
}
$opt_help || {
- test "$mode" = compile && func_mode_compile ${1+"$@"}
+ test "$opt_mode" = compile && func_mode_compile ${1+"$@"}
}
func_mode_help ()
{
# We need to display help for each of the modes.
- case $mode in
+ case $opt_mode in
"")
# Generic help is extracted from the usage comments
# at the start of this file.
;;
*)
- func_fatal_help "invalid operation mode \`$mode'"
+ func_fatal_help "invalid operation mode \`$opt_mode'"
;;
esac
else
{
func_help noexit
- for mode in compile link execute install finish uninstall clean; do
+ for opt_mode in compile link execute install finish uninstall clean; do
func_mode_help
done
} | sed -n '1p; 2,$s/^Usage:/ or: /p'
{
func_help noexit
- for mode in compile link execute install finish uninstall clean; do
+ for opt_mode in compile link execute install finish uninstall clean; do
echo
func_mode_help
done
func_fatal_help "you must specify a COMMAND"
# Handle -dlopen flags immediately.
- for file in $execute_dlfiles; do
+ for file in $opt_dlopen; do
test -f "$file" \
|| func_fatal_help "\`$file' is not a file"
dir=
case $file in
*.la)
+ func_resolve_sysroot "$file"
+ file=$func_resolve_sysroot_result
+
# 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"
dir="$func_dirname_result"
if test -f "$dir/$objdir/$dlname"; then
- dir="$dir/$objdir"
+ func_append dir "/$objdir"
else
if test ! -f "$dir/$dlname"; then
func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
;;
esac
# Quote arguments (to preserve shell metacharacters).
- func_quote_for_eval "$file"
- args="$args $func_quote_for_eval_result"
+ func_append_quoted args "$file"
done
if test "X$opt_dry_run" = Xfalse; then
fi
}
-test "$mode" = execute && func_mode_execute ${1+"$@"}
+test "$opt_mode" = execute && func_mode_execute ${1+"$@"}
# func_mode_finish arg...
func_mode_finish ()
{
$opt_debug
- libdirs="$nonopt"
+ libs=
+ libdirs=
admincmds=
- if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
- for dir
- do
- libdirs="$libdirs $dir"
- done
+ for opt in "$nonopt" ${1+"$@"}
+ do
+ if test -d "$opt"; then
+ func_append libdirs " $opt"
+
+ elif test -f "$opt"; then
+ if func_lalib_unsafe_p "$opt"; then
+ func_append libs " $opt"
+ else
+ func_warning "\`$opt' is not a valid libtool archive"
+ fi
+
+ else
+ func_fatal_error "invalid argument \`$opt'"
+ fi
+ done
+
+ if test -n "$libs"; then
+ if test -n "$lt_sysroot"; then
+ sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
+ sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
+ else
+ sysroot_cmd=
+ fi
+
+ # Remove sysroot references
+ if $opt_dry_run; then
+ for lib in $libs; do
+ 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 \
+ > $tmpdir/tmp-la
+ mv -f $tmpdir/tmp-la $lib
+ done
+ ${RM}r "$tmpdir"
+ fi
+ fi
+ if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
for libdir in $libdirs; do
if test -n "$finish_cmds"; then
# Do each command in the finish commands.
if test -n "$finish_eval"; then
# Do the single finish_eval.
eval cmds=\"$finish_eval\"
- $opt_dry_run || eval "$cmds" || admincmds="$admincmds
+ $opt_dry_run || eval "$cmds" || func_append admincmds "
$cmds"
fi
done
# Exit here if they wanted silent mode.
$opt_silent && exit $EXIT_SUCCESS
- echo "----------------------------------------------------------------------"
- echo "Libraries have been installed in:"
- for libdir in $libdirs; do
- $ECHO " $libdir"
- done
- 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 "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 " during execution"
- fi
- if test -n "$runpath_var"; then
- 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\"
+ if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+ echo "----------------------------------------------------------------------"
+ echo "Libraries have been installed in:"
+ for libdir in $libdirs; do
+ $ECHO " $libdir"
+ done
+ 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 "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 " during execution"
+ fi
+ if test -n "$runpath_var"; then
+ 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"
- 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'"
- fi
- echo
+ $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'"
+ fi
+ echo
- echo "See any operating system documentation about shared libraries for"
- case $host in
- solaris2.[6789]|solaris2.1[0-9])
- echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
- echo "pages."
- ;;
- *)
- echo "more information, such as the ld(1) and ld.so(8) manual pages."
- ;;
- esac
- echo "----------------------------------------------------------------------"
+ echo "See any operating system documentation about shared libraries for"
+ case $host in
+ solaris2.[6789]|solaris2.1[0-9])
+ echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
+ echo "pages."
+ ;;
+ *)
+ echo "more information, such as the ld(1) and ld.so(8) manual pages."
+ ;;
+ esac
+ echo "----------------------------------------------------------------------"
+ fi
exit $EXIT_SUCCESS
}
-test "$mode" = finish && func_mode_finish ${1+"$@"}
+test "$opt_mode" = finish && func_mode_finish ${1+"$@"}
# func_mode_install arg...
# The real first argument should be the name of the installation program.
# Aesthetically quote it.
func_quote_for_eval "$arg"
- install_prog="$install_prog$func_quote_for_eval_result"
+ func_append install_prog "$func_quote_for_eval_result"
install_shared_prog=$install_prog
case " $install_prog " in
*[\\\ /]cp\ *) install_cp=: ;;
do
arg2=
if test -n "$dest"; then
- files="$files $dest"
+ func_append files " $dest"
dest=$arg
continue
fi
# Aesthetically quote the argument.
func_quote_for_eval "$arg"
- install_prog="$install_prog $func_quote_for_eval_result"
+ func_append install_prog " $func_quote_for_eval_result"
if test -n "$arg2"; then
func_quote_for_eval "$arg2"
fi
- install_shared_prog="$install_shared_prog $func_quote_for_eval_result"
+ func_append install_shared_prog " $func_quote_for_eval_result"
done
test -z "$install_prog" && \
if test -n "$install_override_mode" && $no_mode; then
if $install_cp; then :; else
func_quote_for_eval "$install_override_mode"
- install_shared_prog="$install_shared_prog -m $func_quote_for_eval_result"
+ func_append install_shared_prog " -m $func_quote_for_eval_result"
fi
fi
case $file in
*.$libext)
# Do the static libraries later.
- staticlibs="$staticlibs $file"
+ func_append staticlibs " $file"
;;
*.la)
+ func_resolve_sysroot "$file"
+ file=$func_resolve_sysroot_result
+
# 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"
if test "X$destdir" = "X$libdir"; then
case "$current_libdirs " in
*" $libdir "*) ;;
- *) current_libdirs="$current_libdirs $libdir" ;;
+ *) func_append current_libdirs " $libdir" ;;
esac
else
# Note the libdir as a future libdir.
case "$future_libdirs " in
*" $libdir "*) ;;
- *) future_libdirs="$future_libdirs $libdir" ;;
+ *) func_append future_libdirs " $libdir" ;;
esac
fi
func_dirname "$file" "/" ""
dir="$func_dirname_result"
- dir="$dir$objdir"
+ func_append dir "$objdir"
if test -n "$relink_command"; then
# Determine the prefix the user has applied to our future dir.
func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
# Maybe install the static library, too.
- test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
+ test -n "$old_library" && func_append staticlibs " $dir/$old_library"
;;
*.lo)
# Set up the ranlib parameters.
oldlib="$destdir/$name"
+ func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
+ tool_oldlib=$func_to_tool_file_result
func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
if test -n "$stripme" && test -n "$old_striplib"; then
- func_show_eval "$old_striplib $oldlib" 'exit $?'
+ func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
fi
# Do each command in the postinstall commands.
fi
}
-test "$mode" = install && func_mode_install ${1+"$@"}
+test "$opt_mode" = install && func_mode_install ${1+"$@"}
# func_generate_dlsyms outputname originator pic_p
#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
+ relocations are performed -- see ld's documentation on pseudo-relocs. */
+# define LT_DLSYM_CONST
+#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
+
/* External symbol declarations for the compiler. */\
"
# Add our own program objects to the symbol list.
progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
for progfile in $progfiles; do
- func_verbose "extracting global C symbols from \`$progfile'"
- $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
+ func_to_tool_file "$progfile" func_convert_file_msys_to_w32
+ 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
if test -n "$exclude_expsyms"; then
func_verbose "extracting global C symbols from \`$dlprefile'"
func_basename "$dlprefile"
name="$func_basename_result"
- $opt_dry_run || {
- eval '$ECHO ": $name " >> "$nlist"'
- eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
- }
+ 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=""
+ 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
+ func_basename "$dlprefile_dlname"
+ dlprefile_dlbasename="$func_basename_result"
+ else
+ # no lafile. user explicitly requested -dlpreopen <import library>.
+ $sharedlib_from_linklib_cmd "$dlprefile"
+ dlprefile_dlbasename=$sharedlib_from_linklib_result
+ fi
+ fi
+ $opt_dry_run || {
+ if test -n "$dlprefile_dlbasename" ; then
+ eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
+ else
+ func_warning "Could not compute DLL name from $name"
+ eval '$ECHO ": $name " >> "$nlist"'
+ fi
+ func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
+ eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
+ $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
+ }
+ else # not an import lib
+ $opt_dry_run || {
+ eval '$ECHO ": $name " >> "$nlist"'
+ func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
+ eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
+ }
+ fi
+ ;;
+ *)
+ $opt_dry_run || {
+ eval '$ECHO ": $name " >> "$nlist"'
+ func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
+ eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
+ }
+ ;;
+ esac
done
$opt_dry_run || {
const char *name;
void *address;
} lt_dlsymlist;
-"
- case $host in
- *cygwin* | *mingw* | *cegcc* )
- echo >> "$output_objdir/$my_dlsyms" "\
-/* DATA imports from DLLs on WIN32 con't be const, because
- runtime relocations are performed -- see ld's documentation
- on pseudo-relocs. */"
- lt_dlsym_const= ;;
- *osf5*)
- echo >> "$output_objdir/$my_dlsyms" "\
-/* This system does not cope well with relocations in const data */"
- lt_dlsym_const= ;;
- *)
- lt_dlsym_const=const ;;
- esac
-
- echo >> "$output_objdir/$my_dlsyms" "\
-extern $lt_dlsym_const lt_dlsymlist
+extern LT_DLSYM_CONST lt_dlsymlist
lt_${my_prefix}_LTX_preloaded_symbols[];
-$lt_dlsym_const lt_dlsymlist
+LT_DLSYM_CONST lt_dlsymlist
lt_${my_prefix}_LTX_preloaded_symbols[] =
{\
{ \"$my_originator\", (void *) 0 },"
# linked before any other PIC object. But we must not use
# pic_flag when linking with -static. The problem exists in
# FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
- *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+ *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
*-*-hpux*)
pic_flag_for_symtable=" $pic_flag" ;;
for arg in $LTCFLAGS; do
case $arg in
-pie | -fpie | -fPIE) ;;
- *) symtab_cflags="$symtab_cflags $arg" ;;
+ *) func_append symtab_cflags " $arg" ;;
esac
done
# 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
- win32_nmres=`eval $NM -f posix -A $1 |
+ 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 /{
$ECHO "$win32_libid_type"
}
+# func_cygming_dll_for_implib ARG
+#
+# Platform-specific function to extract the
+# name of the DLL associated with the specified
+# import library ARG.
+# Invoked by eval'ing the libtool variable
+# $sharedlib_from_linklib_cmd
+# Result is available in the variable
+# $sharedlib_from_linklib_result
+func_cygming_dll_for_implib ()
+{
+ $opt_debug
+ sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
+}
+
+# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
+#
+# The is the core of a fallback implementation of a
+# platform-specific function to extract the name of the
+# DLL associated with the specified import library LIBNAME.
+#
+# SECTION_NAME is either .idata$6 or .idata$7, depending
+# on the platform and compiler that created the implib.
+#
+# Echos the name of the DLL associated with the
+# specified import library.
+func_cygming_dll_for_implib_fallback_core ()
+{
+ $opt_debug
+ match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
+ $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
+ $SED '/^Contents of section '"$match_literal"':/{
+ # Place marker at beginning of archive member dllname section
+ s/.*/====MARK====/
+ p
+ d
+ }
+ # These lines can sometimes be longer than 43 characters, but
+ # are always uninteresting
+ /:[ ]*file format pe[i]\{,1\}-/d
+ /^In archive [^:]*:/d
+ # Ensure marker is printed
+ /^====MARK====/p
+ # Remove all lines with less than 43 characters
+ /^.\{43\}/!d
+ # From remaining lines, remove first 43 characters
+ s/^.\{43\}//' |
+ $SED -n '
+ # Join marker and all lines until next marker into a single line
+ /^====MARK====/ b para
+ H
+ $ b para
+ b
+ :para
+ x
+ s/\n//g
+ # Remove the marker
+ s/^====MARK====//
+ # Remove trailing dots and whitespace
+ s/[\. \t]*$//
+ # Print
+ /./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
+ # 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
+ # begins with a literal '.' or a single character followed by
+ # a '.'.
+ #
+ # Of those that remain, print the first one.
+ $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
+# import library ARG.
+#
+# This fallback implementation is for use when $DLLTOOL
+# does not support the --identify-strict option.
+# Invoked by eval'ing the libtool variable
+# $sharedlib_from_linklib_cmd
+# Result is available in the variable
+# $sharedlib_from_linklib_result
+func_cygming_dll_for_implib_fallback ()
+{
+ $opt_debug
+ 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
+ # ms-generated import library
+ sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
+ else
+ # unknown
+ sharedlib_from_linklib_result=""
+ fi
+}
# func_extract_an_archive dir oldlib
# launches target application with the remaining arguments.
func_exec_program ()
{
- for lt_wr_arg
- do
- case \$lt_wr_arg in
- --lt-*) ;;
- *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
- esac
- shift
- done
+ case \" \$* \" in
+ *\\ --lt-*)
+ for lt_wr_arg
+ do
+ case \$lt_wr_arg in
+ --lt-*) ;;
+ *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
+ esac
+ shift
+ done ;;
+ esac
func_exec_program_core \${1+\"\$@\"}
}
if test -f \"\$progdir/\$program\"; then"
+ # fixup the dll searchpath if we need to.
+ #
+ # Fix the DLL searchpath if we need to. Do this before prepending
+ # to shlibpath, because on Windows, both are PATH and uninstalled
+ # libraries must come first.
+ if test -n "$dllsearchpath"; then
+ $ECHO "\
+ # Add the dll search path components to the executable PATH
+ PATH=$dllsearchpath:\$PATH
+"
+ fi
+
# Export our shlibpath_var if we have one.
if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
$ECHO "\
"
fi
- # fixup the dll searchpath if we need to.
- if test -n "$dllsearchpath"; then
- $ECHO "\
- # Add the dll search path components to the executable PATH
- PATH=$dllsearchpath:\$PATH
-"
- fi
-
$ECHO "\
if test \"\$libtool_execute_magic\" != \"$magic\"; then
# Run the actual program with our arguments.
}
-# func_to_host_path arg
-#
-# Convert paths to host format when used with build tools.
-# Intended for use with "native" mingw (where libtool itself
-# is running under the msys shell), or in the following cross-
-# build environments:
-# $build $host
-# mingw (msys) mingw [e.g. native]
-# cygwin mingw
-# *nix + wine mingw
-# where wine is equipped with the `winepath' executable.
-# In the native mingw case, the (msys) shell automatically
-# converts paths for any non-msys applications it launches,
-# but that facility isn't available from inside the cwrapper.
-# Similar accommodations are necessary for $host mingw and
-# $build cygwin. Calling this function does no harm for other
-# $host/$build combinations not listed above.
-#
-# ARG is the path (on $build) that should be converted to
-# the proper representation for $host. The result is stored
-# in $func_to_host_path_result.
-func_to_host_path ()
-{
- func_to_host_path_result="$1"
- if test -n "$1"; then
- case $host in
- *mingw* )
- lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
- case $build in
- *mingw* ) # actually, msys
- # awkward: cmd appends spaces to result
- func_to_host_path_result=`( cmd //c echo "$1" ) 2>/dev/null |
- $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
- ;;
- *cygwin* )
- func_to_host_path_result=`cygpath -w "$1" |
- $SED -e "$lt_sed_naive_backslashify"`
- ;;
- * )
- # Unfortunately, winepath does not exit with a non-zero
- # error code, so we are forced to check the contents of
- # stdout. On the other hand, if the command is not
- # found, the shell will set an exit code of 127 and print
- # *an error message* to stdout. So we must check for both
- # error code of zero AND non-empty stdout, which explains
- # the odd construction:
- func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null`
- if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then
- func_to_host_path_result=`$ECHO "$func_to_host_path_tmp1" |
- $SED -e "$lt_sed_naive_backslashify"`
- else
- # Allow warning below.
- func_to_host_path_result=
- fi
- ;;
- esac
- if test -z "$func_to_host_path_result" ; then
- func_error "Could not determine host path corresponding to"
- func_error " \`$1'"
- func_error "Continuing, but uninstalled executables may not work."
- # Fallback:
- func_to_host_path_result="$1"
- fi
- ;;
- esac
- fi
-}
-# end: func_to_host_path
-
-# func_to_host_pathlist arg
-#
-# Convert pathlists to host format when used with build tools.
-# See func_to_host_path(), above. This function supports the
-# following $build/$host combinations (but does no harm for
-# combinations not listed here):
-# $build $host
-# mingw (msys) mingw [e.g. native]
-# cygwin mingw
-# *nix + wine mingw
-#
-# Path separators are also converted from $build format to
-# $host format. If ARG begins or ends with a path separator
-# character, it is preserved (but converted to $host format)
-# on output.
-#
-# ARG is a pathlist (on $build) that should be converted to
-# the proper representation on $host. The result is stored
-# in $func_to_host_pathlist_result.
-func_to_host_pathlist ()
-{
- func_to_host_pathlist_result="$1"
- if test -n "$1"; then
- case $host in
- *mingw* )
- lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
- # Remove leading and trailing path separator characters from
- # ARG. msys behavior is inconsistent here, cygpath turns them
- # into '.;' and ';.', and winepath ignores them completely.
- func_stripname : : "$1"
- func_to_host_pathlist_tmp1=$func_stripname_result
- case $build in
- *mingw* ) # Actually, msys.
- # Awkward: cmd appends spaces to result.
- func_to_host_pathlist_result=`
- ( cmd //c echo "$func_to_host_pathlist_tmp1" ) 2>/dev/null |
- $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
- ;;
- *cygwin* )
- func_to_host_pathlist_result=`cygpath -w -p "$func_to_host_pathlist_tmp1" |
- $SED -e "$lt_sed_naive_backslashify"`
- ;;
- * )
- # unfortunately, winepath doesn't convert pathlists
- func_to_host_pathlist_result=""
- func_to_host_pathlist_oldIFS=$IFS
- IFS=:
- for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do
- IFS=$func_to_host_pathlist_oldIFS
- if test -n "$func_to_host_pathlist_f" ; then
- func_to_host_path "$func_to_host_pathlist_f"
- if test -n "$func_to_host_path_result" ; then
- if test -z "$func_to_host_pathlist_result" ; then
- func_to_host_pathlist_result="$func_to_host_path_result"
- else
- func_append func_to_host_pathlist_result ";$func_to_host_path_result"
- fi
- fi
- fi
- done
- IFS=$func_to_host_pathlist_oldIFS
- ;;
- esac
- if test -z "$func_to_host_pathlist_result"; then
- func_error "Could not determine the host path(s) corresponding to"
- func_error " \`$1'"
- func_error "Continuing, but uninstalled executables may not work."
- # Fallback. This may break if $1 contains DOS-style drive
- # specifications. The fix is not to complicate the expression
- # below, but for the user to provide a working wine installation
- # with winepath so that path translation in the cross-to-mingw
- # case works properly.
- lt_replace_pathsep_nix_to_dos="s|:|;|g"
- func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\
- $SED -e "$lt_replace_pathsep_nix_to_dos"`
- fi
- # Now, add the leading and trailing path separators back
- case "$1" in
- :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result"
- ;;
- esac
- case "$1" in
- *: ) func_append func_to_host_pathlist_result ";"
- ;;
- esac
- ;;
- esac
- fi
-}
-# end: func_to_host_pathlist
-
# func_emit_cwrapperexe_src
# emit the source code for a wrapper executable on stdout
# Must ONLY be called from within func_mode_link because
EOF
cat <<EOF
-const char * MAGIC_EXE = "$magic_exe";
+volatile const char * MAGIC_EXE = "$magic_exe";
const char * LIB_PATH_VARNAME = "$shlibpath_var";
EOF
if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
- func_to_host_pathlist "$temp_rpath"
+ func_to_host_path "$temp_rpath"
cat <<EOF
-const char * LIB_PATH_VALUE = "$func_to_host_pathlist_result";
+const char * LIB_PATH_VALUE = "$func_to_host_path_result";
EOF
else
cat <<"EOF"
fi
if test -n "$dllsearchpath"; then
- func_to_host_pathlist "$dllsearchpath:"
+ func_to_host_path "$dllsearchpath:"
cat <<EOF
const char * EXE_PATH_VARNAME = "PATH";
-const char * EXE_PATH_VALUE = "$func_to_host_pathlist_result";
+const char * EXE_PATH_VALUE = "$func_to_host_path_result";
EOF
else
cat <<"EOF"
lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
lt_setenv ("DUALCASE", "1"); /* for MSK sh */
- lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
+ /* Update the DLL searchpath. EXE_PATH_VALUE ($dllsearchpath) must
+ be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
+ because on Windows, both *_VARNAMEs are PATH but uninstalled
+ libraries must come first. */
lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
+ lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
nonnull (lt_argv_zero));
{
EOF
func_emit_wrapper yes |
- $SED -e 's/\([\\"]\)/\\\1/g' \
- -e 's/^/ fputs ("/' -e 's/$/\\n", f);/'
-
+ $SED -n -e '
+s/^\(.\{79\}\)\(..*\)/\1\
+\2/
+h
+s/\([\\"]\)/\\\1/g
+s/$/\\n/
+s/\([^\n]*\).*/ fputs ("\1", f);/p
+g
+D'
cat <<"EOF"
}
EOF
;;
*)
if test "$prev" = dlfiles; then
- dlfiles="$dlfiles $arg"
+ func_append dlfiles " $arg"
else
- dlprefiles="$dlprefiles $arg"
+ func_append dlprefiles " $arg"
fi
prev=
continue
*-*-darwin*)
case "$deplibs " in
*" $qarg.ltframework "*) ;;
- *) deplibs="$deplibs $qarg.ltframework" # this is fixed later
+ *) func_append deplibs " $qarg.ltframework" # this is fixed later
;;
esac
;;
moreargs=
for fil in `cat "$save_arg"`
do
-# moreargs="$moreargs $fil"
+# func_append moreargs " $fil"
arg=$fil
# A libtool-controlled object.
if test "$prev" = dlfiles; then
if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
- dlfiles="$dlfiles $pic_object"
+ func_append dlfiles " $pic_object"
prev=
continue
else
# CHECK ME: I think I busted this. -Ossama
if test "$prev" = dlprefiles; then
# Preload the old-style object.
- dlprefiles="$dlprefiles $pic_object"
+ func_append dlprefiles " $pic_object"
prev=
fi
if test "$prev" = rpath; then
case "$rpath " in
*" $arg "*) ;;
- *) rpath="$rpath $arg" ;;
+ *) func_append rpath " $arg" ;;
esac
else
case "$xrpath " in
*" $arg "*) ;;
- *) xrpath="$xrpath $arg" ;;
+ *) func_append xrpath " $arg" ;;
esac
fi
prev=
continue
;;
weak)
- weak_libs="$weak_libs $arg"
+ func_append weak_libs " $arg"
prev=
continue
;;
xcclinker)
- linker_flags="$linker_flags $qarg"
- compiler_flags="$compiler_flags $qarg"
+ func_append linker_flags " $qarg"
+ func_append compiler_flags " $qarg"
prev=
func_append compile_command " $qarg"
func_append finalize_command " $qarg"
continue
;;
xcompiler)
- compiler_flags="$compiler_flags $qarg"
+ func_append compiler_flags " $qarg"
prev=
func_append compile_command " $qarg"
func_append finalize_command " $qarg"
continue
;;
xlinker)
- linker_flags="$linker_flags $qarg"
- compiler_flags="$compiler_flags $wl$qarg"
+ func_append linker_flags " $qarg"
+ func_append compiler_flags " $wl$qarg"
prev=
func_append compile_command " $wl$qarg"
func_append finalize_command " $wl$qarg"
;;
-L*)
- func_stripname '-L' '' "$arg"
- dir=$func_stripname_result
- if test -z "$dir"; then
+ 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'"
else
func_fatal_error "need path for \`-L' option"
fi
fi
+ func_resolve_sysroot "$func_stripname_result"
+ dir=$func_resolve_sysroot_result
# We need an absolute path.
case $dir in
[\\/]* | [A-Za-z]:[\\/]*) ;;
;;
esac
case "$deplibs " in
- *" -L$dir "*) ;;
+ *" -L$dir "* | *" $arg "*)
+ # Will only happen for absolute or sysroot arguments
+ ;;
*)
- deplibs="$deplibs -L$dir"
- lib_search_path="$lib_search_path $dir"
+ # Preserve sysroot, but never include relative directories
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
+ *) func_append deplibs " -L$dir" ;;
+ esac
+ func_append lib_search_path " $dir"
;;
esac
case $host in
case :$dllsearchpath: in
*":$dir:"*) ;;
::) dllsearchpath=$dir;;
- *) dllsearchpath="$dllsearchpath:$dir";;
+ *) func_append dllsearchpath ":$dir";;
esac
case :$dllsearchpath: in
*":$testbindir:"*) ;;
::) dllsearchpath=$testbindir;;
- *) dllsearchpath="$dllsearchpath:$testbindir";;
+ *) func_append dllsearchpath ":$testbindir";;
esac
;;
esac
;;
*-*-rhapsody* | *-*-darwin1.[012])
# Rhapsody C and math libraries are in the System framework
- deplibs="$deplibs System.ltframework"
+ func_append deplibs " System.ltframework"
continue
;;
*-*-sco3.2v5* | *-*-sco5v6*)
;;
esac
fi
- deplibs="$deplibs $arg"
+ func_append deplibs " $arg"
continue
;;
# Tru64 UNIX uses -model [arg] to determine the layout of C++
# classes, name mangling, and exception handling.
# Darwin uses the -arch flag to determine output architecture.
- -model|-arch|-isysroot)
- compiler_flags="$compiler_flags $arg"
+ -model|-arch|-isysroot|--sysroot)
+ func_append compiler_flags " $arg"
func_append compile_command " $arg"
func_append finalize_command " $arg"
prev=xcompiler
continue
;;
- -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
- compiler_flags="$compiler_flags $arg"
+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
+ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
+ func_append compiler_flags " $arg"
func_append compile_command " $arg"
func_append finalize_command " $arg"
case "$new_inherited_linker_flags " in
*" $arg "*) ;;
- * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
+ * ) func_append new_inherited_linker_flags " $arg" ;;
esac
continue
;;
# We need an absolute path.
case $dir in
[\\/]* | [A-Za-z]:[\\/]*) ;;
+ =*)
+ func_stripname '=' '' "$dir"
+ dir=$lt_sysroot$func_stripname_result
+ ;;
*)
func_fatal_error "only absolute run-paths are allowed"
;;
esac
case "$xrpath " in
*" $dir "*) ;;
- *) xrpath="$xrpath $dir" ;;
+ *) func_append xrpath " $dir" ;;
esac
continue
;;
for flag in $args; do
IFS="$save_ifs"
func_quote_for_eval "$flag"
- arg="$arg $func_quote_for_eval_result"
- compiler_flags="$compiler_flags $func_quote_for_eval_result"
+ func_append arg " $func_quote_for_eval_result"
+ func_append compiler_flags " $func_quote_for_eval_result"
done
IFS="$save_ifs"
func_stripname ' ' '' "$arg"
for flag in $args; do
IFS="$save_ifs"
func_quote_for_eval "$flag"
- arg="$arg $wl$func_quote_for_eval_result"
- compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
- linker_flags="$linker_flags $func_quote_for_eval_result"
+ 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"
func_stripname ' ' '' "$arg"
# -p, -pg, --coverage, -fprofile-* profiling 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
-64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
- -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*)
+ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
+ -O*|-flto*|-fwhopr*|-fuse-linker-plugin)
func_quote_for_eval "$arg"
arg="$func_quote_for_eval_result"
func_append compile_command " $arg"
func_append finalize_command " $arg"
- compiler_flags="$compiler_flags $arg"
+ func_append compiler_flags " $arg"
continue
;;
*.$objext)
# A standard object.
- objs="$objs $arg"
+ func_append objs " $arg"
;;
*.lo)
if test "$prev" = dlfiles; then
if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
- dlfiles="$dlfiles $pic_object"
+ func_append dlfiles " $pic_object"
prev=
continue
else
# CHECK ME: I think I busted this. -Ossama
if test "$prev" = dlprefiles; then
# Preload the old-style object.
- dlprefiles="$dlprefiles $pic_object"
+ func_append dlprefiles " $pic_object"
prev=
fi
*.$libext)
# An archive.
- deplibs="$deplibs $arg"
- old_deplibs="$old_deplibs $arg"
+ func_append deplibs " $arg"
+ func_append old_deplibs " $arg"
continue
;;
*.la)
# A libtool-controlled library.
+ func_resolve_sysroot "$arg"
if test "$prev" = dlfiles; then
# This library was specified with -dlopen.
- dlfiles="$dlfiles $arg"
+ func_append dlfiles " $func_resolve_sysroot_result"
prev=
elif test "$prev" = dlprefiles; then
# The library was specified with -dlpreopen.
- dlprefiles="$dlprefiles $arg"
+ func_append dlprefiles " $func_resolve_sysroot_result"
prev=
else
- deplibs="$deplibs $arg"
+ func_append deplibs " $func_resolve_sysroot_result"
fi
continue
;;
func_dirname "$output" "/" ""
output_objdir="$func_dirname_result$objdir"
+ func_to_tool_file "$output_objdir/"
+ tool_output_objdir=$func_to_tool_file_result
# Create the object directory.
func_mkdir_p "$output_objdir"
# 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_duplicate_deps ; then
+ if $opt_preserve_dup_deps ; then
case "$libs " in
- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ *" $deplib "*) func_append specialdeplibs " $deplib" ;;
esac
fi
- libs="$libs $deplib"
+ func_append libs " $deplib"
done
if test "$linkmode" = lib; then
if $opt_duplicate_compiler_generated_deps; then
for pre_post_dep in $predeps $postdeps; do
case "$pre_post_deps " in
- *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
+ *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
esac
- pre_post_deps="$pre_post_deps $pre_post_dep"
+ func_append pre_post_deps " $pre_post_dep"
done
fi
pre_post_deps=
for lib in $dlprefiles; do
# Ignore non-libtool-libs
dependency_libs=
+ func_resolve_sysroot "$lib"
case $lib in
- *.la) func_source "$lib" ;;
+ *.la) func_source "$func_resolve_sysroot_result" ;;
esac
# Collect preopened libtool deplibs, except any this library
deplib_base=$func_basename_result
case " $weak_libs " in
*" $deplib_base "*) ;;
- *) deplibs="$deplibs $deplib" ;;
+ *) func_append deplibs " $deplib" ;;
esac
done
done
lib=
found=no
case $deplib in
- -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
+ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
if test "$linkmode,$pass" = "prog,link"; then
compile_deplibs="$deplib $compile_deplibs"
finalize_deplibs="$deplib $finalize_deplibs"
else
- compiler_flags="$compiler_flags $deplib"
+ func_append compiler_flags " $deplib"
if test "$linkmode" = lib ; then
case "$new_inherited_linker_flags " in
*" $deplib "*) ;;
- * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
+ * ) func_append new_inherited_linker_flags " $deplib" ;;
esac
fi
fi
if test "$linkmode" = lib ; then
case "$new_inherited_linker_flags " in
*" $deplib "*) ;;
- * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
+ * ) func_append new_inherited_linker_flags " $deplib" ;;
esac
fi
fi
test "$pass" = conv && continue
newdependency_libs="$deplib $newdependency_libs"
func_stripname '-L' '' "$deplib"
- newlib_search_path="$newlib_search_path $func_stripname_result"
+ func_resolve_sysroot "$func_stripname_result"
+ func_append newlib_search_path " $func_resolve_sysroot_result"
;;
prog)
if test "$pass" = conv; then
finalize_deplibs="$deplib $finalize_deplibs"
fi
func_stripname '-L' '' "$deplib"
- newlib_search_path="$newlib_search_path $func_stripname_result"
+ func_resolve_sysroot "$func_stripname_result"
+ func_append newlib_search_path " $func_resolve_sysroot_result"
;;
*)
func_warning "\`-L' is ignored for archives/objects"
-R*)
if test "$pass" = link; then
func_stripname '-R' '' "$deplib"
- dir=$func_stripname_result
+ func_resolve_sysroot "$func_stripname_result"
+ dir=$func_resolve_sysroot_result
# Make sure the xrpath contains only unique directories.
case "$xrpath " in
*" $dir "*) ;;
- *) xrpath="$xrpath $dir" ;;
+ *) func_append xrpath " $dir" ;;
esac
fi
deplibs="$deplib $deplibs"
continue
;;
- *.la) lib="$deplib" ;;
+ *.la)
+ func_resolve_sysroot "$deplib"
+ lib=$func_resolve_sysroot_result
+ ;;
*.$libext)
if test "$pass" = conv; then
deplibs="$deplib $deplibs"
if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
# If there is no dlopen support or we're linking statically,
# we need to preload.
- newdlprefiles="$newdlprefiles $deplib"
+ func_append newdlprefiles " $deplib"
compile_deplibs="$deplib $compile_deplibs"
finalize_deplibs="$deplib $finalize_deplibs"
else
- newdlfiles="$newdlfiles $deplib"
+ func_append newdlfiles " $deplib"
fi
fi
continue
for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
case " $new_inherited_linker_flags " in
*" $tmp_inherited_linker_flag "*) ;;
- *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
+ *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
esac
done
fi
if test "$linkmode,$pass" = "lib,link" ||
test "$linkmode,$pass" = "prog,scan" ||
{ test "$linkmode" != prog && test "$linkmode" != lib; }; then
- test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
- test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
+ test -n "$dlopen" && func_append dlfiles " $dlopen"
+ test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
fi
if test "$pass" = conv; then
func_fatal_error "cannot find name of link library for \`$lib'"
fi
# It is a libtool convenience library, so add in its objects.
- convenience="$convenience $ladir/$objdir/$old_library"
- old_convenience="$old_convenience $ladir/$objdir/$old_library"
+ func_append convenience " $ladir/$objdir/$old_library"
+ func_append old_convenience " $ladir/$objdir/$old_library"
elif test "$linkmode" != prog && test "$linkmode" != lib; then
func_fatal_error "\`$lib' is not a convenience library"
fi
tmp_libs=
for deplib in $dependency_libs; do
deplibs="$deplib $deplibs"
- if $opt_duplicate_deps ; then
+ if $opt_preserve_dup_deps ; then
case "$tmp_libs " in
- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ *" $deplib "*) func_append specialdeplibs " $deplib" ;;
esac
fi
- tmp_libs="$tmp_libs $deplib"
+ func_append tmp_libs " $deplib"
done
continue
fi # $pass = conv
# Get the name of the library we link against.
linklib=
- for l in $old_library $library_names; do
- linklib="$l"
- done
+ if test -n "$old_library" &&
+ { test "$prefer_static_libs" = yes ||
+ test "$prefer_static_libs,$installed" = "built,no"; }; then
+ linklib=$old_library
+ else
+ for l in $old_library $library_names; do
+ linklib="$l"
+ done
+ fi
if test -z "$linklib"; then
func_fatal_error "cannot find name of link library for \`$lib'"
fi
# statically, we need to preload. We also need to preload any
# dependent libraries so libltdl's deplib preloader doesn't
# bomb out in the load deplibs phase.
- dlprefiles="$dlprefiles $lib $dependency_libs"
+ func_append dlprefiles " $lib $dependency_libs"
else
- newdlfiles="$newdlfiles $lib"
+ func_append newdlfiles " $lib"
fi
continue
fi # $pass = dlopen
# Find the relevant object directory and library name.
if test "X$installed" = Xyes; then
- if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; 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"
else
- dir="$libdir"
- absdir="$libdir"
+ dir="$lt_sysroot$libdir"
+ absdir="$lt_sysroot$libdir"
fi
test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
else
dir="$ladir"
absdir="$abs_ladir"
# Remove this search path later
- notinst_path="$notinst_path $abs_ladir"
+ func_append notinst_path " $abs_ladir"
else
dir="$ladir/$objdir"
absdir="$abs_ladir/$objdir"
# Remove this search path later
- notinst_path="$notinst_path $abs_ladir"
+ func_append notinst_path " $abs_ladir"
fi
fi # $installed = yes
func_stripname 'lib' '.la' "$laname"
if test -z "$libdir" && test "$linkmode" = prog; then
func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
fi
- # Prefer using a static library (so that no silly _DYNAMIC symbols
- # are required to link).
- if test -n "$old_library"; then
- newdlprefiles="$newdlprefiles $dir/$old_library"
- # Keep a list of preopened convenience libraries to check
- # that they are being used correctly in the link pass.
- test -z "$libdir" && \
- dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
- # Otherwise, use the dlname, so that lt_dlopen finds it.
- elif test -n "$dlname"; then
- newdlprefiles="$newdlprefiles $dir/$dlname"
- else
- newdlprefiles="$newdlprefiles $dir/$linklib"
- fi
+ case "$host" in
+ # special handling for platforms with PE-DLLs.
+ *cygwin* | *mingw* | *cegcc* )
+ # Linker will automatically link against shared library if both
+ # static and shared are present. Therefore, ensure we extract
+ # symbols from the import library if a shared library is present
+ # (otherwise, the dlopen module name will be incorrect). We do
+ # this by putting the import library name into $newdlprefiles.
+ # We recover the dlopen module name by 'saving' the la file
+ # name in a special purpose variable, and (later) extracting the
+ # dlname from the la file.
+ if test -n "$dlname"; then
+ func_tr_sh "$dir/$linklib"
+ eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
+ func_append newdlprefiles " $dir/$linklib"
+ else
+ func_append newdlprefiles " $dir/$old_library"
+ # Keep a list of preopened convenience libraries to check
+ # that they are being used correctly in the link pass.
+ test -z "$libdir" && \
+ func_append dlpreconveniencelibs " $dir/$old_library"
+ fi
+ ;;
+ * )
+ # Prefer using a static library (so that no silly _DYNAMIC symbols
+ # are required to link).
+ if test -n "$old_library"; then
+ func_append newdlprefiles " $dir/$old_library"
+ # Keep a list of preopened convenience libraries to check
+ # that they are being used correctly in the link pass.
+ test -z "$libdir" && \
+ func_append dlpreconveniencelibs " $dir/$old_library"
+ # Otherwise, use the dlname, so that lt_dlopen finds it.
+ elif test -n "$dlname"; then
+ func_append newdlprefiles " $dir/$dlname"
+ else
+ func_append newdlprefiles " $dir/$linklib"
+ fi
+ ;;
+ esac
fi # $pass = dlpreopen
if test -z "$libdir"; then
if test "$linkmode" = prog && test "$pass" != link; then
- newlib_search_path="$newlib_search_path $ladir"
+ func_append newlib_search_path " $ladir"
deplibs="$lib $deplibs"
linkalldeplibs=no
for deplib in $dependency_libs; do
case $deplib in
-L*) func_stripname '-L' '' "$deplib"
- newlib_search_path="$newlib_search_path $func_stripname_result"
+ func_resolve_sysroot "$func_stripname_result"
+ func_append newlib_search_path " $func_resolve_sysroot_result"
;;
esac
# Need to link against all dependency_libs?
# or/and link against static libraries
newdependency_libs="$deplib $newdependency_libs"
fi
- if $opt_duplicate_deps ; then
+ if $opt_preserve_dup_deps ; then
case "$tmp_libs " in
- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ *" $deplib "*) func_append specialdeplibs " $deplib" ;;
esac
fi
- tmp_libs="$tmp_libs $deplib"
+ func_append tmp_libs " $deplib"
done # for deplib
continue
fi # $linkmode = prog...
# Make sure the rpath contains only unique directories.
case "$temp_rpath:" in
*"$absdir:"*) ;;
- *) temp_rpath="$temp_rpath$absdir:" ;;
+ *) func_append temp_rpath "$absdir:" ;;
esac
fi
*)
case "$compile_rpath " in
*" $absdir "*) ;;
- *) compile_rpath="$compile_rpath $absdir"
+ *) func_append compile_rpath " $absdir" ;;
esac
;;
esac
*)
case "$finalize_rpath " in
*" $libdir "*) ;;
- *) finalize_rpath="$finalize_rpath $libdir"
+ *) func_append finalize_rpath " $libdir" ;;
esac
;;
esac
case $host in
*cygwin* | *mingw* | *cegcc*)
# No point in relinking DLLs because paths are not encoded
- notinst_deplibs="$notinst_deplibs $lib"
+ func_append notinst_deplibs " $lib"
need_relink=no
;;
*)
if test "$installed" = no; then
- notinst_deplibs="$notinst_deplibs $lib"
+ func_append notinst_deplibs " $lib"
need_relink=yes
fi
;;
*)
case "$compile_rpath " in
*" $absdir "*) ;;
- *) compile_rpath="$compile_rpath $absdir"
+ *) func_append compile_rpath " $absdir" ;;
esac
;;
esac
*)
case "$finalize_rpath " in
*" $libdir "*) ;;
- *) finalize_rpath="$finalize_rpath $libdir"
+ *) func_append finalize_rpath " $libdir" ;;
esac
;;
esac
linklib=$newlib
fi # test -n "$old_archive_from_expsyms_cmds"
- if test "$linkmode" = prog || test "$mode" != relink; then
+ if test "$linkmode" = prog || test "$opt_mode" != relink; then
add_shlibpath=
add_dir=
add=
test "$hardcode_direct_absolute" = no; then
add="$dir/$linklib"
elif test "$hardcode_minus_L" = yes; then
- add_dir="-L$dir"
+ 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
[\\/]*)
- add_dir="$add_dir -L$inst_prefix_dir$libdir"
+ func_append add_dir " -L$inst_prefix_dir$libdir"
;;
esac
fi
if test -n "$add_shlibpath"; then
case :$compile_shlibpath: in
*":$add_shlibpath:"*) ;;
- *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
+ *) func_append compile_shlibpath "$add_shlibpath:" ;;
esac
fi
if test "$linkmode" = prog; then
test "$hardcode_shlibpath_var" = yes; then
case :$finalize_shlibpath: in
*":$libdir:"*) ;;
- *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+ *) func_append finalize_shlibpath "$libdir:" ;;
esac
fi
fi
fi
- if test "$linkmode" = prog || test "$mode" = relink; then
+ if test "$linkmode" = prog || test "$opt_mode" = relink; then
add_shlibpath=
add_dir=
add=
elif test "$hardcode_shlibpath_var" = yes; then
case :$finalize_shlibpath: in
*":$libdir:"*) ;;
- *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+ *) func_append finalize_shlibpath "$libdir:" ;;
esac
add="-l$name"
elif test "$hardcode_automatic" = yes; then
if test -n "$inst_prefix_dir"; then
case $libdir in
[\\/]*)
- add_dir="$add_dir -L$inst_prefix_dir$libdir"
+ func_append add_dir " -L$inst_prefix_dir$libdir"
;;
esac
fi
temp_xrpath=$func_stripname_result
case " $xrpath " in
*" $temp_xrpath "*) ;;
- *) xrpath="$xrpath $temp_xrpath";;
+ *) func_append xrpath " $temp_xrpath";;
esac;;
- *) temp_deplibs="$temp_deplibs $libdir";;
+ *) func_append temp_deplibs " $libdir";;
esac
done
dependency_libs="$temp_deplibs"
fi
- newlib_search_path="$newlib_search_path $absdir"
+ func_append newlib_search_path " $absdir"
# Link against this library
test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
# ... and its dependency_libs
tmp_libs=
for deplib in $dependency_libs; do
newdependency_libs="$deplib $newdependency_libs"
- if $opt_duplicate_deps ; then
+ case $deplib in
+ -L*) func_stripname '-L' '' "$deplib"
+ func_resolve_sysroot "$func_stripname_result";;
+ *) func_resolve_sysroot "$deplib" ;;
+ esac
+ if $opt_preserve_dup_deps ; then
case "$tmp_libs " in
- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ *" $func_resolve_sysroot_result "*)
+ func_append specialdeplibs " $func_resolve_sysroot_result" ;;
esac
fi
- tmp_libs="$tmp_libs $deplib"
+ func_append tmp_libs " $func_resolve_sysroot_result"
done
if test "$link_all_deplibs" != no; then
case $deplib in
-L*) path="$deplib" ;;
*.la)
+ func_resolve_sysroot "$deplib"
+ deplib=$func_resolve_sysroot_result
func_dirname "$deplib" "" "."
- dir="$func_dirname_result"
+ dir=$func_dirname_result
# We need an absolute path.
case $dir in
[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
if test -z "$darwin_install_name"; then
darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
fi
- compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
- linker_flags="$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
for dir in $newlib_search_path; do
case "$lib_search_path " in
*" $dir "*) ;;
- *) lib_search_path="$lib_search_path $dir" ;;
+ *) func_append lib_search_path " $dir" ;;
esac
done
newlib_search_path=
-L*)
case " $tmp_libs " in
*" $deplib "*) ;;
- *) tmp_libs="$tmp_libs $deplib" ;;
+ *) func_append tmp_libs " $deplib" ;;
esac
;;
- *) tmp_libs="$tmp_libs $deplib" ;;
+ *) func_append tmp_libs " $deplib" ;;
esac
done
eval $var=\"$tmp_libs\"
;;
esac
if test -n "$i" ; then
- tmp_libs="$tmp_libs $i"
+ func_append tmp_libs " $i"
fi
done
dependency_libs=$tmp_libs
# Now set the variables for building old libraries.
build_libtool_libs=no
oldlibs="$output"
- objs="$objs$old_deplibs"
+ func_append objs "$old_deplibs"
;;
lib)
echo
$ECHO "*** Warning: Linking the shared library $output against the non-libtool"
$ECHO "*** objects $objs is not portable!"
- libobjs="$libobjs $objs"
+ func_append libobjs " $objs"
fi
fi
# which 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)
func_arith $number_major + $number_minor
current=$func_arith_result
versuffix="$major.$revision"
;;
- linux)
+ linux) # correct to gnu/linux during the next big refactor
func_arith $current - $age
major=.$func_arith_result
versuffix="$major.$age.$revision"
done
# Make executables depend on our current version.
- verstring="$verstring:${current}.0"
+ func_append verstring ":${current}.0"
;;
qnx)
fi
func_generate_dlsyms "$libname" "$libname" "yes"
- libobjs="$libobjs $symfileobj"
+ func_append libobjs " $symfileobj"
test "X$libobjs" = "X " && libobjs=
- if test "$mode" != relink; then
+ if test "$opt_mode" != relink; then
# Remove our outputs, but don't remove object files since they
# may have been created when compiling PIC objects.
removelist=
continue
fi
fi
- removelist="$removelist $p"
+ func_append removelist " $p"
;;
*) ;;
esac
# Now set the variables for building old libraries.
if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
- oldlibs="$oldlibs $output_objdir/$libname.$libext"
+ func_append oldlibs " $output_objdir/$libname.$libext"
# Transform .lo files to .o files.
oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
# If the user specified any rpath flags, then add them.
temp_xrpath=
for libdir in $xrpath; do
- temp_xrpath="$temp_xrpath -R$libdir"
+ func_replace_sysroot "$libdir"
+ func_append temp_xrpath " -R$func_replace_sysroot_result"
case "$finalize_rpath " in
*" $libdir "*) ;;
- *) finalize_rpath="$finalize_rpath $libdir" ;;
+ *) func_append finalize_rpath " $libdir" ;;
esac
done
if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
for lib in $old_dlfiles; do
case " $dlprefiles $dlfiles " in
*" $lib "*) ;;
- *) dlfiles="$dlfiles $lib" ;;
+ *) func_append dlfiles " $lib" ;;
esac
done
for lib in $old_dlprefiles; do
case "$dlprefiles " in
*" $lib "*) ;;
- *) dlprefiles="$dlprefiles $lib" ;;
+ *) func_append dlprefiles " $lib" ;;
esac
done
;;
*-*-rhapsody* | *-*-darwin1.[012])
# Rhapsody C library is in the System framework
- deplibs="$deplibs System.ltframework"
+ func_append deplibs " System.ltframework"
;;
*-*-netbsd*)
# Don't link with libc until the a.out ld.so is fixed.
*)
# Add libc to deplibs on all other systems if necessary.
if test "$build_libtool_need_lc" = "yes"; then
- deplibs="$deplibs -lc"
+ func_append deplibs " -lc"
fi
;;
esac
if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
case " $predeps $postdeps " in
*" $i "*)
- newdeplibs="$newdeplibs $i"
+ func_append newdeplibs " $i"
i=""
;;
esac
set dummy $deplib_matches; shift
deplib_match=$1
if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
- newdeplibs="$newdeplibs $i"
+ func_append newdeplibs " $i"
else
droppeddeps=yes
echo
fi
;;
*)
- newdeplibs="$newdeplibs $i"
+ func_append newdeplibs " $i"
;;
esac
done
if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
case " $predeps $postdeps " in
*" $i "*)
- newdeplibs="$newdeplibs $i"
+ func_append newdeplibs " $i"
i=""
;;
esac
set dummy $deplib_matches; shift
deplib_match=$1
if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
- newdeplibs="$newdeplibs $i"
+ func_append newdeplibs " $i"
else
droppeddeps=yes
echo
fi
;;
*)
- newdeplibs="$newdeplibs $i"
+ func_append newdeplibs " $i"
;;
esac
done
if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
case " $predeps $postdeps " in
*" $a_deplib "*)
- newdeplibs="$newdeplibs $a_deplib"
+ func_append newdeplibs " $a_deplib"
a_deplib=""
;;
esac
fi
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`
for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
- potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+ if test "$want_nocaseglob" = yes; then
+ shopt -s nocaseglob
+ potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
+ $nocaseglob
+ else
+ potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
+ fi
for potent_lib in $potential_libs; do
# Follow soft links.
if ls -lLd "$potent_lib" 2>/dev/null |
if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
$SED -e 10q |
$EGREP "$file_magic_regex" > /dev/null; then
- newdeplibs="$newdeplibs $a_deplib"
+ func_append newdeplibs " $a_deplib"
a_deplib=""
break 2
fi
;;
*)
# Add a -L argument.
- newdeplibs="$newdeplibs $a_deplib"
+ func_append newdeplibs " $a_deplib"
;;
esac
done # Gone through all deplibs.
if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
case " $predeps $postdeps " in
*" $a_deplib "*)
- newdeplibs="$newdeplibs $a_deplib"
+ func_append newdeplibs " $a_deplib"
a_deplib=""
;;
esac
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
- newdeplibs="$newdeplibs $a_deplib"
+ func_append newdeplibs " $a_deplib"
a_deplib=""
break 2
fi
;;
*)
# Add a -L argument.
- newdeplibs="$newdeplibs $a_deplib"
+ func_append newdeplibs " $a_deplib"
;;
esac
done # Gone through all deplibs.
*)
case " $deplibs " in
*" -L$path/$objdir "*)
- new_libs="$new_libs -L$path/$objdir" ;;
+ func_append new_libs " -L$path/$objdir" ;;
esac
;;
esac
-L*)
case " $new_libs " in
*" $deplib "*) ;;
- *) new_libs="$new_libs $deplib" ;;
+ *) func_append new_libs " $deplib" ;;
esac
;;
- *) new_libs="$new_libs $deplib" ;;
+ *) func_append new_libs " $deplib" ;;
esac
done
deplibs="$new_libs"
# 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.
+ # FIXME: should test the right _cmds variable.
+ case $archive_cmds in
+ *\$LD\ *) wl= ;;
+ esac
if test "$hardcode_into_libs" = yes; then
# Hardcode the library paths
hardcode_libdirs=
dep_rpath=
rpath="$finalize_rpath"
- test "$mode" != relink && rpath="$compile_rpath$rpath"
+ test "$opt_mode" != relink && 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"
else
*"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
;;
*)
- hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+ func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
;;
esac
fi
else
eval flag=\"$hardcode_libdir_flag_spec\"
- dep_rpath="$dep_rpath $flag"
+ func_append dep_rpath " $flag"
fi
elif test -n "$runpath_var"; then
case "$perm_rpath " in
*" $libdir "*) ;;
- *) perm_rpath="$perm_rpath $libdir" ;;
+ *) func_append perm_rpath " $libdir" ;;
esac
fi
done
if test -n "$hardcode_libdir_separator" &&
test -n "$hardcode_libdirs"; then
libdir="$hardcode_libdirs"
- if test -n "$hardcode_libdir_flag_spec_ld"; then
- eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
- else
- eval dep_rpath=\"$hardcode_libdir_flag_spec\"
- fi
+ eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
fi
if test -n "$runpath_var" && test -n "$perm_rpath"; then
# We should set the runpath_var.
rpath=
for dir in $perm_rpath; do
- rpath="$rpath$dir:"
+ func_append rpath "$dir:"
done
eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
fi
fi
shlibpath="$finalize_shlibpath"
- test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
+ test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
if test -n "$shlibpath"; then
eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
fi
linknames=
for link
do
- linknames="$linknames $link"
+ func_append linknames " $link"
done
# Use standard objects if they are pic
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"
- delfiles="$delfiles $export_symbols"
+ func_append delfiles " $export_symbols"
fi
orig_export_symbols=
$opt_dry_run || $RM $export_symbols
cmds=$export_symbols_cmds
save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
+ for cmd1 in $cmds; do
IFS="$save_ifs"
- eval cmd=\"$cmd\"
- func_len " $cmd"
- len=$func_len_result
- if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ # 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
+ *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
+ try_normal_branch=yes
+ eval cmd=\"$cmd1\"
+ func_len " $cmd"
+ len=$func_len_result
+ ;;
+ *)
+ try_normal_branch=no
+ ;;
+ esac
+ if test "$try_normal_branch" = yes \
+ && { test "$len" -lt "$max_cmd_len" \
+ || test "$max_cmd_len" -le -1; }
+ then
+ func_show_eval "$cmd" 'exit $?'
+ skipped_export=false
+ elif test -n "$nm_file_list_spec"; then
+ func_basename "$output"
+ output_la=$func_basename_result
+ save_libobjs=$libobjs
+ save_output=$output
+ 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"
+ func_verbose "creating $NM input file list: $output"
+ for obj in $save_libobjs; do
+ func_to_tool_file "$obj"
+ $ECHO "$func_to_tool_file_result"
+ done > "$output"
+ eval cmd=\"$cmd1\"
func_show_eval "$cmd" 'exit $?'
+ output=$save_output
+ libobjs=$save_libobjs
skipped_export=false
else
# The command line is too long to execute in one step.
# global variables. join(1) would be nice here, but unfortunately
# isn't a blessed tool.
$opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
- delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
+ func_append delfiles " $export_symbols $output_objdir/$libname.filter"
export_symbols=$output_objdir/$libname.def
$opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
fi
case " $convenience " in
*" $test_deplib "*) ;;
*)
- tmp_deplibs="$tmp_deplibs $test_deplib"
+ func_append tmp_deplibs " $test_deplib"
;;
esac
done
test "X$libobjs" = "X " && libobjs=
else
gentop="$output_objdir/${outputname}x"
- generated="$generated $gentop"
+ func_append generated " $gentop"
func_extract_archives $gentop $convenience
- libobjs="$libobjs $func_extract_archives_result"
+ func_append libobjs " $func_extract_archives_result"
test "X$libobjs" = "X " && libobjs=
fi
fi
if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
eval flag=\"$thread_safe_flag_spec\"
- linker_flags="$linker_flags $flag"
+ func_append linker_flags " $flag"
fi
# Make a backup of the uninstalled library when relinking
- if test "$mode" = relink; then
+ if test "$opt_mode" = relink; then
$opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
fi
echo 'INPUT (' > $output
for obj in $save_libobjs
do
- $ECHO "$obj" >> $output
+ func_to_tool_file "$obj"
+ $ECHO "$func_to_tool_file_result" >> $output
done
echo ')' >> $output
- delfiles="$delfiles $output"
+ 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
func_verbose "creating linker input file list: $output"
fi
for obj
do
- $ECHO "$obj" >> $output
+ func_to_tool_file "$obj"
+ $ECHO "$func_to_tool_file_result" >> $output
done
- delfiles="$delfiles $output"
- output=$firstobj\"$file_list_spec$output\"
+ func_append delfiles " $output"
+ func_to_tool_file "$output"
+ output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
else
if test -n "$save_libobjs"; then
func_verbose "creating reloadable object files..."
if test -n "$last_robj"; then
eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
fi
- delfiles="$delfiles $output"
+ func_append delfiles " $output"
else
output=
lt_exit=$?
# Restore the uninstalled library and exit
- if test "$mode" = relink; then
+ if test "$opt_mode" = relink; then
( cd "$output_objdir" && \
$RM "${realname}T" && \
$MV "${realname}U" "$realname" )
# global variables. join(1) would be nice here, but unfortunately
# isn't a blessed tool.
$opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
- delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
+ func_append delfiles " $export_symbols $output_objdir/$libname.filter"
export_symbols=$output_objdir/$libname.def
$opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
fi
# Add any objects from preloaded convenience libraries
if test -n "$dlprefiles"; then
gentop="$output_objdir/${outputname}x"
- generated="$generated $gentop"
+ func_append generated " $gentop"
func_extract_archives $gentop $dlprefiles
- libobjs="$libobjs $func_extract_archives_result"
+ func_append libobjs " $func_extract_archives_result"
test "X$libobjs" = "X " && libobjs=
fi
lt_exit=$?
# Restore the uninstalled library and exit
- if test "$mode" = relink; then
+ if test "$opt_mode" = relink; then
( cd "$output_objdir" && \
$RM "${realname}T" && \
$MV "${realname}U" "$realname" )
IFS="$save_ifs"
# Restore the uninstalled library and exit
- if test "$mode" = relink; then
+ if test "$opt_mode" = relink; 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
reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
else
gentop="$output_objdir/${obj}x"
- generated="$generated $gentop"
+ func_append generated " $gentop"
func_extract_archives $gentop $convenience
reload_conv_objs="$reload_objs $func_extract_archives_result"
fi
fi
+ # If we're not building shared, we need to use non_pic_objs
+ test "$build_libtool_libs" != yes && 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
if test "$tagname" = CXX ; then
case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
10.[0123])
- compile_command="$compile_command ${wl}-bind_at_load"
- finalize_command="$finalize_command ${wl}-bind_at_load"
+ func_append compile_command " ${wl}-bind_at_load"
+ func_append finalize_command " ${wl}-bind_at_load"
;;
esac
fi
*)
case " $compile_deplibs " in
*" -L$path/$objdir "*)
- new_libs="$new_libs -L$path/$objdir" ;;
+ func_append new_libs " -L$path/$objdir" ;;
esac
;;
esac
-L*)
case " $new_libs " in
*" $deplib "*) ;;
- *) new_libs="$new_libs $deplib" ;;
+ *) func_append new_libs " $deplib" ;;
esac
;;
- *) new_libs="$new_libs $deplib" ;;
+ *) func_append new_libs " $deplib" ;;
esac
done
compile_deplibs="$new_libs"
- compile_command="$compile_command $compile_deplibs"
- finalize_command="$finalize_command $finalize_deplibs"
+ func_append compile_command " $compile_deplibs"
+ func_append finalize_command " $finalize_deplibs"
if test -n "$rpath$xrpath"; then
# If the user specified any rpath flags, then add them.
# This is the magic to use -rpath.
case "$finalize_rpath " in
*" $libdir "*) ;;
- *) finalize_rpath="$finalize_rpath $libdir" ;;
+ *) func_append finalize_rpath " $libdir" ;;
esac
done
fi
*"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
;;
*)
- hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+ func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
;;
esac
fi
else
eval flag=\"$hardcode_libdir_flag_spec\"
- rpath="$rpath $flag"
+ func_append rpath " $flag"
fi
elif test -n "$runpath_var"; then
case "$perm_rpath " in
*" $libdir "*) ;;
- *) perm_rpath="$perm_rpath $libdir" ;;
+ *) func_append perm_rpath " $libdir" ;;
esac
fi
case $host in
case :$dllsearchpath: in
*":$libdir:"*) ;;
::) dllsearchpath=$libdir;;
- *) dllsearchpath="$dllsearchpath:$libdir";;
+ *) func_append dllsearchpath ":$libdir";;
esac
case :$dllsearchpath: in
*":$testbindir:"*) ;;
::) dllsearchpath=$testbindir;;
- *) dllsearchpath="$dllsearchpath:$testbindir";;
+ *) func_append dllsearchpath ":$testbindir";;
esac
;;
esac
*"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
;;
*)
- hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+ func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
;;
esac
fi
else
eval flag=\"$hardcode_libdir_flag_spec\"
- rpath="$rpath $flag"
+ func_append rpath " $flag"
fi
elif test -n "$runpath_var"; then
case "$finalize_perm_rpath " in
*" $libdir "*) ;;
- *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
+ *) func_append finalize_perm_rpath " $libdir" ;;
esac
fi
done
exit_status=0
func_show_eval "$link_command" 'exit_status=$?'
+ if test -n "$postlink_cmds"; then
+ func_to_tool_file "$output"
+ postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
+ func_execute_cmds "$postlink_cmds" 'exit $?'
+ fi
+
# Delete the generated files.
if test -f "$output_objdir/${outputname}S.${objext}"; then
func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
# We should set the runpath_var.
rpath=
for dir in $perm_rpath; do
- rpath="$rpath$dir:"
+ func_append rpath "$dir:"
done
compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
fi
# We should set the runpath_var.
rpath=
for dir in $finalize_perm_rpath; do
- rpath="$rpath$dir:"
+ func_append rpath "$dir:"
done
finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
fi
$opt_dry_run || $RM $output
# Link the executable and exit
func_show_eval "$link_command" 'exit $?'
+
+ if test -n "$postlink_cmds"; then
+ func_to_tool_file "$output"
+ postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
+ func_execute_cmds "$postlink_cmds" 'exit $?'
+ fi
+
exit $EXIT_SUCCESS
fi
func_show_eval "$link_command" 'exit $?'
+ if test -n "$postlink_cmds"; then
+ func_to_tool_file "$output_objdir/$outputname"
+ postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
+ func_execute_cmds "$postlink_cmds" 'exit $?'
+ fi
+
# Now create the wrapper script.
func_verbose "creating $output"
else
oldobjs="$old_deplibs $non_pic_objects"
if test "$preload" = yes && test -f "$symfileobj"; then
- oldobjs="$oldobjs $symfileobj"
+ func_append oldobjs " $symfileobj"
fi
fi
addlibs="$old_convenience"
if test -n "$addlibs"; then
gentop="$output_objdir/${outputname}x"
- generated="$generated $gentop"
+ func_append generated " $gentop"
func_extract_archives $gentop $addlibs
- oldobjs="$oldobjs $func_extract_archives_result"
+ func_append oldobjs " $func_extract_archives_result"
fi
# Do each command in the archive commands.
# Add any objects from preloaded convenience libraries
if test -n "$dlprefiles"; then
gentop="$output_objdir/${outputname}x"
- generated="$generated $gentop"
+ func_append generated " $gentop"
func_extract_archives $gentop $dlprefiles
- oldobjs="$oldobjs $func_extract_archives_result"
+ func_append oldobjs " $func_extract_archives_result"
fi
# POSIX demands no paths to be encoded in archives. We have
else
echo "copying selected object files to avoid basename conflicts..."
gentop="$output_objdir/${outputname}x"
- generated="$generated $gentop"
+ func_append generated " $gentop"
func_mkdir_p "$gentop"
save_oldobjs=$oldobjs
oldobjs=
esac
done
func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
- oldobjs="$oldobjs $gentop/$newobj"
+ func_append oldobjs " $gentop/$newobj"
;;
- *) oldobjs="$oldobjs $obj" ;;
+ *) func_append oldobjs " $obj" ;;
esac
done
fi
+ func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
+ tool_oldlib=$func_to_tool_file_result
eval cmds=\"$old_archive_cmds\"
func_len " $cmds"
len=$func_len_result
if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
cmds=$old_archive_cmds
+ elif test -n "$archiver_list_spec"; then
+ func_verbose "using command file archive linking..."
+ for obj in $oldobjs
+ do
+ func_to_tool_file "$obj"
+ $ECHO "$func_to_tool_file_result"
+ done > $output_objdir/$libname.libcmd
+ func_to_tool_file "$output_objdir/$libname.libcmd"
+ oldobjs=" $archiver_list_spec$func_to_tool_file_result"
+ cmds=$old_archive_cmds
else
# the command line is too long to link in one step, link in parts
func_verbose "using piecewise archive linking..."
*.la)
func_basename "$deplib"
name="$func_basename_result"
- eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+ func_resolve_sysroot "$deplib"
+ 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"
- newdependency_libs="$newdependency_libs $libdir/$name"
+ func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
+ ;;
+ -L*)
+ func_stripname -L '' "$deplib"
+ func_replace_sysroot "$func_stripname_result"
+ func_append newdependency_libs " -L$func_replace_sysroot_result"
+ ;;
+ -R*)
+ func_stripname -R '' "$deplib"
+ func_replace_sysroot "$func_stripname_result"
+ func_append newdependency_libs " -R$func_replace_sysroot_result"
;;
- *) newdependency_libs="$newdependency_libs $deplib" ;;
+ *) func_append newdependency_libs " $deplib" ;;
esac
done
dependency_libs="$newdependency_libs"
eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
test -z "$libdir" && \
func_fatal_error "\`$lib' is not a valid libtool archive"
- newdlfiles="$newdlfiles $libdir/$name"
+ func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
;;
- *) newdlfiles="$newdlfiles $lib" ;;
+ *) func_append newdlfiles " $lib" ;;
esac
done
dlfiles="$newdlfiles"
eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
test -z "$libdir" && \
func_fatal_error "\`$lib' is not a valid libtool archive"
- newdlprefiles="$newdlprefiles $libdir/$name"
+ func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
;;
esac
done
[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
*) abs=`pwd`"/$lib" ;;
esac
- newdlfiles="$newdlfiles $abs"
+ func_append newdlfiles " $abs"
done
dlfiles="$newdlfiles"
newdlprefiles=
[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
*) abs=`pwd`"/$lib" ;;
esac
- newdlprefiles="$newdlprefiles $abs"
+ func_append newdlprefiles " $abs"
done
dlprefiles="$newdlprefiles"
fi
exit $EXIT_SUCCESS
}
-{ test "$mode" = link || test "$mode" = relink; } &&
+{ test "$opt_mode" = link || test "$opt_mode" = relink; } &&
func_mode_link ${1+"$@"}
for arg
do
case $arg in
- -f) RM="$RM $arg"; rmforce=yes ;;
- -*) RM="$RM $arg" ;;
- *) files="$files $arg" ;;
+ -f) func_append RM " $arg"; rmforce=yes ;;
+ -*) func_append RM " $arg" ;;
+ *) func_append files " $arg" ;;
esac
done
rmdirs=
- origobjdir="$objdir"
for file in $files; do
func_dirname "$file" "" "."
dir="$func_dirname_result"
if test "X$dir" = X.; then
- objdir="$origobjdir"
+ odir="$objdir"
else
- objdir="$dir/$origobjdir"
+ odir="$dir/$objdir"
fi
func_basename "$file"
name="$func_basename_result"
- test "$mode" = uninstall && objdir="$dir"
+ test "$opt_mode" = uninstall && odir="$dir"
- # Remember objdir for removal later, being careful to avoid duplicates
- if test "$mode" = clean; then
+ # Remember odir for removal later, being careful to avoid duplicates
+ if test "$opt_mode" = clean; then
case " $rmdirs " in
- *" $objdir "*) ;;
- *) rmdirs="$rmdirs $objdir" ;;
+ *" $odir "*) ;;
+ *) func_append rmdirs " $odir" ;;
esac
fi
# Delete the libtool libraries and symlinks.
for n in $library_names; do
- rmfiles="$rmfiles $objdir/$n"
+ func_append rmfiles " $odir/$n"
done
- test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
+ test -n "$old_library" && func_append rmfiles " $odir/$old_library"
- case "$mode" in
+ case "$opt_mode" in
clean)
- case " $library_names " in
- # " " in the beginning catches empty $dlname
+ case " $library_names " in
*" $dlname "*) ;;
- *) rmfiles="$rmfiles $objdir/$dlname" ;;
+ *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
esac
- test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
+ test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
;;
uninstall)
if test -n "$library_names"; then
# Add PIC object to the list of files to remove.
if test -n "$pic_object" &&
test "$pic_object" != none; then
- rmfiles="$rmfiles $dir/$pic_object"
+ 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
- rmfiles="$rmfiles $dir/$non_pic_object"
+ func_append rmfiles " $dir/$non_pic_object"
fi
fi
;;
*)
- if test "$mode" = clean ; then
+ if test "$opt_mode" = clean ; then
noexename=$name
case $file in
*.exe)
noexename=$func_stripname_result
# $file with .exe has already been added to rmfiles,
# add $file without .exe
- rmfiles="$rmfiles $file"
+ func_append rmfiles " $file"
;;
esac
# Do a test to see if this is a libtool program.
func_ltwrapper_scriptname "$file"
relink_command=
func_source $func_ltwrapper_scriptname_result
- rmfiles="$rmfiles $func_ltwrapper_scriptname_result"
+ func_append rmfiles " $func_ltwrapper_scriptname_result"
else
relink_command=
func_source $dir/$noexename
# note $name still contains .exe if it was in $file originally
# as does the version of $file that was added into $rmfiles
- rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
+ func_append rmfiles " $odir/$name $odir/${name}S.${objext}"
if test "$fast_install" = yes && test -n "$relink_command"; then
- rmfiles="$rmfiles $objdir/lt-$name"
+ func_append rmfiles " $odir/lt-$name"
fi
if test "X$noexename" != "X$name" ; then
- rmfiles="$rmfiles $objdir/lt-${noexename}.c"
+ func_append rmfiles " $odir/lt-${noexename}.c"
fi
fi
fi
esac
func_show_eval "$RM $rmfiles" 'exit_status=1'
done
- objdir="$origobjdir"
# Try to remove the ${objdir}s in the directories where we deleted files
for dir in $rmdirs; do
exit $exit_status
}
-{ test "$mode" = uninstall || test "$mode" = clean; } &&
+{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
func_mode_uninstall ${1+"$@"}
-test -z "$mode" && {
+test -z "$opt_mode" && {
help="$generic_help"
func_fatal_help "you must specify a MODE"
}
test -z "$exec_cmd" && \
- func_fatal_help "invalid operation mode \`$mode'"
+ func_fatal_help "invalid operation mode \`$opt_mode'"
if test -n "$exec_cmd"; then
eval exec "$exec_cmd"
-# ld-version-script.m4 serial 1
-dnl Copyright (C) 2008, 2009 Free Software Foundation, Inc.
+# ld-version-script.m4 serial 3
+dnl Copyright (C) 2008-2013 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
save_LDFLAGS="$LDFLAGS"
LDFLAGS="$LDFLAGS -Wl,--version-script=conftest.map"
cat > conftest.map <<EOF
+foo
+EOF
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
+ [accepts_syntax_errors=yes], [accepts_syntax_errors=no])
+ if test "$accepts_syntax_errors" = no; then
+ cat > conftest.map <<EOF
VERS_1 {
- global: sym;
+ global: sym;
};
VERS_2 {
global: sym;
} VERS_1;
EOF
- AC_LINK_IFELSE(AC_LANG_PROGRAM([], []),
- [have_ld_version_script=yes], [have_ld_version_script=no])
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
+ [have_ld_version_script=yes], [have_ld_version_script=no])
+ else
+ have_ld_version_script=no
+ fi
rm -f conftest.map
LDFLAGS="$save_LDFLAGS"
AC_MSG_RESULT($have_ld_version_script)
fi
+ AM_CONDITIONAL(HAVE_LD_VERSION_SCRIPT, test "$have_ld_version_script" = "yes")
])
dnl this macro is used first.
AC_BEFORE([$0], [NEON_XML_PARSER])
-AC_CHECK_HEADERS(sys/time.h stdint.h locale.h signal.h)
+AC_CHECK_HEADERS(sys/time.h stdint.h locale.h)
AC_CHECK_FUNCS(pipe isatty usleep shutdown setlocale gethostname)
-# Copyright (C) 1998-2010 Joe Orton <joe@manyfish.co.uk> -*- autoconf -*-
+# Copyright (C) 1998-2009 Joe Orton <joe@manyfish.co.uk> -*- autoconf -*-
# Copyright (C) 2004 Aleix Conchillo Flaque <aleix@member.fsf.org>
#
# This file is free software; you may copy and/or distribute it with
# Define the current versions.
NE_VERSION_MAJOR=0
-NE_VERSION_MINOR=29
-NE_VERSION_PATCH=6
+NE_VERSION_MINOR=30
+NE_VERSION_PATCH=0
NE_VERSION_TAG=
-# 0.29.x is backwards-compatible to 0.27.x, so AGE=2
-NE_LIBTOOL_VERSINFO="29:${NE_VERSION_PATCH}:2"
+# 0.30.x is backwards-compatible to 0.27.x, so AGE=3
+NE_LIBTOOL_VERSINFO="30:${NE_VERSION_PATCH}:3"
NE_DEFINE_VERSIONS
AC_REQUIRE([AC_HEADER_STDC])
-AC_CHECK_HEADERS([errno.h stdarg.h string.h stdlib.h])
+AC_CHECK_HEADERS([errno.h stdarg.h string.h stdlib.h sys/uio.h])
NEON_FORMAT(size_t,,u) dnl size_t is unsigned; use %u formats
NEON_FORMAT(off_t)
if test "$NE_FLAG_LFS" = "yes"; then
AC_DEFINE_UNQUOTED([NE_FMT_NE_OFF_T], [NE_FMT_OFF64_T],
[Define to be printf format string for ne_off_t])
+ NE_ADD_ABITAG(LFS)
else
AC_DEFINE_UNQUOTED([NE_FMT_NE_OFF_T], [NE_FMT_OFF_T])
fi
# Check for functions in later releases
NE_CHECK_FUNCS([gnutls_session_get_data2 gnutls_x509_dn_get_rdn_ava \
gnutls_sign_callback_set \
+ gnutls_certificate_get_issuer \
gnutls_certificate_get_x509_cas \
- gnutls_certificate_verify_peers2])
+ gnutls_x509_crt_sign2])
- # fail if gnutls_certificate_verify_peers2 is not found
- if test x${ac_cv_func_gnutls_certificate_verify_peers2} != xyes; then
- AC_MSG_ERROR([GnuTLS version predates gnutls_certificate_verify_peers2, newer version required])
+ # fail if gnutls_x509_crt_sign2 is not found (it was introduced in 1.2.0, which is required)
+ if test x${ac_cv_func_gnutls_x509_crt_sign2} != xyes; then
+ AC_MSG_ERROR([GnuTLS version predates gnutls_x509_crt_sign2, newer version required (at least 1.2.0)])
fi
# Check for iconv support if using the new RDN access functions:
# presume that dgettext() is available if bindtextdomain() is...
# checking for dgettext() itself is awkward because gcc has a
# builtin of that function, which confuses AC_CHECK_FUNCS et al.
- NE_SEARCH_LIBS(bindtextdomain, intl,,[enable_nls=no])
+ NE_SEARCH_LIBS(bindtextdomain, intl, -liconv ,[enable_nls=no])
NE_CHECK_FUNCS(bind_textdomain_codeset)
fi
msgstr ""
"Project-Id-Version: sitecopy 0.11.4\n"
"Report-Msgid-Bugs-To: neon@lists.manyfish.co.uk\n"
-"POT-Creation-Date: 2010-10-01 13:30+0100\n"
+"POT-Creation-Date: 2013-07-31 16:46+0100\n"
"PO-Revision-Date: 2002-04-09 11:12+0100\n"
"Last-Translator: Petr Prazak <prazak@grisoft.cz>\n"
"Language-Team: cz\n"
+"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-2\n"
"Content-Transfer-Encoding: 8bit\n"
"Stavová øádka byla: %s"
# src/console_fe.c:961
-#: src/ne_auth.c:134
+#: src/ne_auth.c:139
#, fuzzy, c-format
msgid "Could not authenticate to server: %s"
msgstr "Nelze se pøipojit k serveru"
# src/console_fe.c:961
-#: src/ne_auth.c:139
+#: src/ne_auth.c:144
#, fuzzy, c-format
msgid "Could not authenticate to proxy server: %s"
msgstr "Nelze se pøipojit k proxy serveru"
-#: src/ne_auth.c:374
+#: src/ne_auth.c:386
#, c-format
msgid "rejected %s challenge"
msgstr ""
-#: src/ne_auth.c:390
+#: src/ne_auth.c:402
msgid "missing realm in Basic challenge"
msgstr ""
-#: src/ne_auth.c:485
+#: src/ne_auth.c:497
msgid "invalid Negotiate token"
msgstr ""
-#: src/ne_auth.c:508
+#: src/ne_auth.c:520
#, fuzzy
msgid "GSSAPI authentication error: "
msgstr "Je vy¾adována autentizace na %s `%s':\n"
-#: src/ne_auth.c:521
+#: src/ne_auth.c:533
#, c-format
msgid "GSSAPI failure (code %u)"
msgstr ""
-#: src/ne_auth.c:556
+#: src/ne_auth.c:568
msgid "ignoring empty Negotiate continuation"
msgstr ""
-#: src/ne_auth.c:571
+#: src/ne_auth.c:583
#, c-format
msgid "Negotiate response verification failed: invalid response header token"
msgstr ""
-#: src/ne_auth.c:593
+#: src/ne_auth.c:605
#, c-format
msgid "Negotiate response verification failure: %s"
msgstr ""
-#: src/ne_auth.c:765
+#: src/ne_auth.c:669
+#, c-format
+msgid "SSPI response verification failed: invalid response header token"
+msgstr ""
+
+#: src/ne_auth.c:802
msgid "unknown algorithm in Digest challenge"
msgstr ""
-#: src/ne_auth.c:769
+#: src/ne_auth.c:806
msgid "incompatible algorithm in Digest challenge"
msgstr ""
-#: src/ne_auth.c:773
+#: src/ne_auth.c:810
msgid "missing parameter in Digest challenge"
msgstr ""
-#: src/ne_auth.c:777
+#: src/ne_auth.c:814
msgid "initial Digest challenge was stale"
msgstr ""
-#: src/ne_auth.c:784
+#: src/ne_auth.c:821
msgid "stale Digest challenge with new algorithm or realm"
msgstr ""
-#: src/ne_auth.c:796
+#: src/ne_auth.c:833
#, fuzzy
msgid "could not parse domain in Digest challenge"
msgstr "Nelze zpracovat velikost bloku"
-#: src/ne_auth.c:1105
+#: src/ne_auth.c:1142
#, c-format
msgid "Digest mutual authentication failure: missing parameters"
msgstr ""
-#: src/ne_auth.c:1110
+#: src/ne_auth.c:1147
#, c-format
msgid "Digest mutual authentication failure: client nonce mismatch"
msgstr ""
-#: src/ne_auth.c:1120
+#: src/ne_auth.c:1157
#, c-format
msgid "Digest mutual authentication failure: could not parse nonce count"
msgstr ""
-#: src/ne_auth.c:1125
+#: src/ne_auth.c:1162
#, c-format
msgid "Digest mutual authentication failure: nonce count mismatch (%u not %u)"
msgstr ""
-#: src/ne_auth.c:1168
+#: src/ne_auth.c:1205
#, c-format
msgid "Digest mutual authentication failure: request-digest mismatch"
msgstr ""
-#: src/ne_auth.c:1299
+#: src/ne_auth.c:1336
#, c-format
msgid "ignored %s challenge"
msgstr ""
-#: src/ne_auth.c:1378
+#: src/ne_auth.c:1415
#, fuzzy
msgid "could not parse challenge"
msgstr "Nelze zpracovat velikost bloku"
msgid "Could not initialize zlib"
msgstr "Nelze otevøít soubor: "
-#: src/ne_gnutls.c:172
+#: src/ne_gnutls.c:176
#, c-format
msgid "[unprintable:#%lu]"
msgstr ""
-#: src/ne_gnutls.c:201
+#: src/ne_gnutls.c:205
msgid "[unprintable]"
msgstr ""
-#: src/ne_gnutls.c:817
+#: src/ne_gnutls.c:845
msgid "signed using insecure algorithm"
msgstr ""
-#: src/ne_gnutls.c:820
+#: src/ne_gnutls.c:848
#, c-format
msgid "unrecognized errors (%u)"
msgstr ""
-#: src/ne_gnutls.c:865 src/ne_openssl.c:468
+#: src/ne_gnutls.c:893 src/ne_openssl.c:470
#, c-format
msgid "Server certificate was missing commonName attribute in subject name"
msgstr ""
# src/console_fe.c:992
-#: src/ne_gnutls.c:879
+#: src/ne_gnutls.c:907
#, fuzzy, c-format
msgid "Could not verify server certificate: %s"
msgstr "Nelze zapsat do souboru: %s"
-#: src/ne_gnutls.c:891 src/ne_openssl.c:455
+#: src/ne_gnutls.c:919 src/ne_openssl.c:457
#, c-format
msgid "Certificate verification error: %s"
msgstr ""
-#: src/ne_gnutls.c:924 src/ne_openssl.c:674
+#: src/ne_gnutls.c:952 src/ne_openssl.c:702
#, c-format
msgid "SSL handshake failed, client certificate was requested: %s"
msgstr ""
# src/console_fe.c:992
-#: src/ne_gnutls.c:929 src/ne_openssl.c:679
+#: src/ne_gnutls.c:957 src/ne_openssl.c:707
#, fuzzy, c-format
msgid "SSL handshake failed: %s"
msgstr "Nelze zapsat do souboru: %s"
-#: src/ne_gnutls.c:939
+#: src/ne_gnutls.c:967
#, c-format
msgid "Server did not send certificate chain"
msgstr ""
msgid "No activelock for <%s> returned in LOCK refresh response"
msgstr ""
-#: src/ne_openssl.c:699
+#: src/ne_openssl.c:727
#, c-format
msgid "SSL server did not present certificate"
msgstr ""
-#: src/ne_openssl.c:708
+#: src/ne_openssl.c:736
#, c-format
msgid "Server certificate changed: connection intercepted?"
msgstr ""
msgid "Could not seek to offset %s of request body file: %s"
msgstr "Nelze zapsat do souboru: %s"
-#: src/ne_request.c:385
+#: src/ne_request.c:423
msgid "Could not send request body"
msgstr "Nelze odeslat tìlo po¾adavku"
-#: src/ne_request.c:728
+#: src/ne_request.c:450
+#, fuzzy
+msgid "Could not send chunked request terminator"
+msgstr "Nelze poslat po¾adavek"
+
+#: src/ne_request.c:784
msgid "Could not read chunk size"
msgstr "Nelze naèíst velikost bloku"
-#: src/ne_request.c:735
+#: src/ne_request.c:791
msgid "Could not parse chunk size"
msgstr "Nelze zpracovat velikost bloku"
-#: src/ne_request.c:772
+#: src/ne_request.c:828
msgid "Could not read response body"
msgstr "Nelze naèíst tìlo odpovìdi"
-#: src/ne_request.c:788
+#: src/ne_request.c:844
#, fuzzy
msgid "Could not read chunk delimiter"
msgstr "Nelze naèíst velikost bloku"
-#: src/ne_request.c:791
+#: src/ne_request.c:847
msgid "Chunk delimiter was invalid"
msgstr ""
-#: src/ne_request.c:896
+#: src/ne_request.c:952
msgid "Could not read status line"
msgstr "Nelze pøeèíst stavový øádek"
-#: src/ne_request.c:918
+#: src/ne_request.c:974
#, fuzzy
msgid "Could not parse response status line"
msgstr "Nelze zpracovat stavový øádek odpovìdi."
-#: src/ne_request.c:930
+#: src/ne_request.c:986
#, fuzzy
msgid "Could not read interim response headers"
msgstr "Nelze naèíst tìlo odpovìdi"
-#: src/ne_request.c:964
+#: src/ne_request.c:1020
msgid "Could not send request"
msgstr "Nelze poslat po¾adavek"
-#: src/ne_request.c:1012 src/ne_request.c:1030 src/ne_request.c:1040
+#: src/ne_request.c:1068 src/ne_request.c:1086 src/ne_request.c:1096
msgid "Error reading response headers"
msgstr "Chyba pøi ètení hlavièek odpovìdi"
-#: src/ne_request.c:1058
+#: src/ne_request.c:1114
#, c-format
msgid "Response header too long"
msgstr "Hlavièka odpovìdi je pøíli¹ dlouhá"
-#: src/ne_request.c:1140
+#: src/ne_request.c:1196
#, fuzzy
msgid "Response exceeded maximum number of header fields"
msgstr "Odpovìï pøekrocila maximální poøet polo¾ek v hlavicce."
# src/console_fe.c:956
-#: src/ne_request.c:1155
+#: src/ne_request.c:1211
#, fuzzy, c-format
msgid "Could not resolve hostname `%s': %s"
msgstr "%s: Chyba: Nelze najít adresu vzdáleného poèítaèe (%s).\n"
-#: src/ne_request.c:1286
+#: src/ne_request.c:1342
msgid "Unknown transfer-coding in response"
msgstr ""
-#: src/ne_request.c:1299
+#: src/ne_request.c:1355
msgid "Invalid Content-Length in response"
msgstr ""
# src/console_fe.c:992
-#: src/ne_request.c:1372
+#: src/ne_request.c:1428
#, c-format
msgid "Could not write to file: %s"
msgstr "Nelze zapsat do souboru: %s"
-#: src/ne_request.c:1445
+#: src/ne_request.c:1501
#, fuzzy, c-format
msgid "Could not create SSL connection through proxy server: %s"
msgstr "Nelze navázat SSL spojení pøes proxy server."
-#: src/ne_request.c:1484
+#: src/ne_request.c:1540
#, fuzzy, c-format
msgid "Could not create socket"
msgstr "Nelze navázat SSL spojení"
# src/console_fe.c:961
-#: src/ne_request.c:1518
+#: src/ne_request.c:1574
msgid "Could not connect to server"
msgstr "Nelze se pøipojit k serveru"
# src/console_fe.c:961
-#: src/ne_request.c:1520
+#: src/ne_request.c:1576
msgid "Could not connect to proxy server"
msgstr "Nelze se pøipojit k proxy serveru"
-#: src/ne_request.c:1563
+#: src/ne_request.c:1619
#, c-format
msgid "Could not find IPv4 address of hostname %s for SOCKS v4 proxy"
msgstr ""
-#: src/ne_request.c:1621
+#: src/ne_request.c:1677
#, fuzzy, c-format
msgid "Could not establish connection from SOCKS proxy (%s:%u): %s"
msgstr "Nelze navázat SSL spojení pøes proxy server."
-#: src/ne_session.c:530 src/ne_session.c:541
+#: src/ne_session.c:538 src/ne_session.c:549
msgid "[invalid date]"
msgstr ""
-#: src/ne_session.c:554
+#: src/ne_session.c:562
msgid "certificate is not yet valid"
msgstr ""
-#: src/ne_session.c:555
+#: src/ne_session.c:563
msgid "certificate has expired"
msgstr ""
-#: src/ne_session.c:556
+#: src/ne_session.c:564
msgid "certificate issued for a different hostname"
msgstr ""
-#: src/ne_session.c:557
+#: src/ne_session.c:565
msgid "issuer is not trusted"
msgstr ""
-#: src/ne_session.c:558
+#: src/ne_session.c:566
msgid "bad certificate chain"
msgstr ""
-#: src/ne_session.c:559
+#: src/ne_session.c:567
msgid "certificate has been revoked"
msgstr ""
-#: src/ne_session.c:564
+#: src/ne_session.c:572
msgid "Server certificate verification failed: "
msgstr ""
-#: src/ne_socket.c:516 src/ne_socket.c:612 src/ne_socket.c:716
+#: src/ne_socket.c:522 src/ne_socket.c:618 src/ne_socket.c:722
#, fuzzy
msgid "Connection closed"
msgstr "Server ukonèil spojení."
-#: src/ne_socket.c:622 src/ne_socket.c:728
+#: src/ne_socket.c:628 src/ne_socket.c:736
#, fuzzy
msgid "Secure connection truncated"
msgstr "Spojení vypr¹elo."
-#: src/ne_socket.c:634 src/ne_socket.c:740
+#: src/ne_socket.c:640 src/ne_socket.c:748
#, fuzzy, c-format
msgid "SSL error: %s"
msgstr "%s: Chyba: %s\n"
-#: src/ne_socket.c:637
+#: src/ne_socket.c:643
#, c-format
msgid "SSL error code %d/%d/%lu"
msgstr ""
-#: src/ne_socket.c:721
+#: src/ne_socket.c:727
#, fuzzy, c-format
msgid "SSL alert received: %s"
msgstr "%s: Chyba: %s\n"
-#: src/ne_socket.c:736
+#: src/ne_socket.c:744
msgid "SSL socket read failed"
msgstr ""
-#: src/ne_socket.c:867
+#: src/ne_socket.c:875
msgid "Line too long"
msgstr "Øádek je pøíli¹ dlouhý"
-#: src/ne_socket.c:1012 src/ne_socket.c:1018
+#: src/ne_socket.c:1036 src/ne_socket.c:1042
msgid "Host not found"
msgstr "Poèítaè nenalezen"
-#: src/ne_socket.c:1221
+#: src/ne_socket.c:1249
#, fuzzy
msgid "Connection timed out"
msgstr "%s: spojení vypr¹elo."
-#: src/ne_socket.c:1412
+#: src/ne_socket.c:1442
msgid "Socket descriptor number exceeds FD_SETSIZE"
msgstr ""
-#: src/ne_socket.c:1474
+#: src/ne_socket.c:1504
msgid "Socket family not supported"
msgstr ""
-#: src/ne_socket.c:1701
+#: src/ne_socket.c:1735
msgid "Client certificate verification failed"
msgstr ""
-#: src/ne_socket.c:1717
+#: src/ne_socket.c:1751
msgid "SSL disabled due to lack of entropy"
msgstr ""
-#: src/ne_socket.c:1724
-msgid "SSL disabled due to library version mismatch"
-msgstr ""
-
-#: src/ne_socket.c:1730
+#: src/ne_socket.c:1757
#, fuzzy
msgid "Could not create SSL structure"
msgstr "Nelze navázat SSL spojení"
msgstr ""
"Project-Id-Version: sitecopy 0.11.3\n"
"Report-Msgid-Bugs-To: neon@lists.manyfish.co.uk\n"
-"POT-Creation-Date: 2010-10-01 13:30+0100\n"
+"POT-Creation-Date: 2013-07-31 16:46+0100\n"
"PO-Revision-Date: 2002-01-13 13:37+0100\n"
"Last-Translator: Thomas Schultz <tststs@gmx.de>\n"
"Language-Team: de\n"
+"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
"Ungültige HTTP Status-Zeile im Status-Element in Zeile %d der Antwort:\n"
"Status-Zeile war: %s"
-#: src/ne_auth.c:134
+#: src/ne_auth.c:139
#, fuzzy, c-format
msgid "Could not authenticate to server: %s"
msgstr "Verbindungsaufbau zum Server gescheitert."
-#: src/ne_auth.c:139
+#: src/ne_auth.c:144
#, fuzzy, c-format
msgid "Could not authenticate to proxy server: %s"
msgstr "Verbindungsaufbau zum Proxy-Server gescheitert."
-#: src/ne_auth.c:374
+#: src/ne_auth.c:386
#, c-format
msgid "rejected %s challenge"
msgstr ""
-#: src/ne_auth.c:390
+#: src/ne_auth.c:402
msgid "missing realm in Basic challenge"
msgstr ""
-#: src/ne_auth.c:485
+#: src/ne_auth.c:497
msgid "invalid Negotiate token"
msgstr ""
-#: src/ne_auth.c:508
+#: src/ne_auth.c:520
#, fuzzy
msgid "GSSAPI authentication error: "
msgstr "Anmeldung wird benötigt auf %s `%s':\n"
-#: src/ne_auth.c:521
+#: src/ne_auth.c:533
#, c-format
msgid "GSSAPI failure (code %u)"
msgstr ""
-#: src/ne_auth.c:556
+#: src/ne_auth.c:568
msgid "ignoring empty Negotiate continuation"
msgstr ""
-#: src/ne_auth.c:571
+#: src/ne_auth.c:583
#, c-format
msgid "Negotiate response verification failed: invalid response header token"
msgstr ""
-#: src/ne_auth.c:593
+#: src/ne_auth.c:605
#, c-format
msgid "Negotiate response verification failure: %s"
msgstr ""
-#: src/ne_auth.c:765
+#: src/ne_auth.c:669
+#, c-format
+msgid "SSPI response verification failed: invalid response header token"
+msgstr ""
+
+#: src/ne_auth.c:802
msgid "unknown algorithm in Digest challenge"
msgstr ""
-#: src/ne_auth.c:769
+#: src/ne_auth.c:806
msgid "incompatible algorithm in Digest challenge"
msgstr ""
-#: src/ne_auth.c:773
+#: src/ne_auth.c:810
msgid "missing parameter in Digest challenge"
msgstr ""
-#: src/ne_auth.c:777
+#: src/ne_auth.c:814
msgid "initial Digest challenge was stale"
msgstr ""
-#: src/ne_auth.c:784
+#: src/ne_auth.c:821
msgid "stale Digest challenge with new algorithm or realm"
msgstr ""
-#: src/ne_auth.c:796
+#: src/ne_auth.c:833
#, fuzzy
msgid "could not parse domain in Digest challenge"
msgstr "Parser-Fehler bei Ermittlung der Blockgröße"
-#: src/ne_auth.c:1105
+#: src/ne_auth.c:1142
#, c-format
msgid "Digest mutual authentication failure: missing parameters"
msgstr ""
-#: src/ne_auth.c:1110
+#: src/ne_auth.c:1147
#, c-format
msgid "Digest mutual authentication failure: client nonce mismatch"
msgstr ""
-#: src/ne_auth.c:1120
+#: src/ne_auth.c:1157
#, c-format
msgid "Digest mutual authentication failure: could not parse nonce count"
msgstr ""
-#: src/ne_auth.c:1125
+#: src/ne_auth.c:1162
#, c-format
msgid "Digest mutual authentication failure: nonce count mismatch (%u not %u)"
msgstr ""
-#: src/ne_auth.c:1168
+#: src/ne_auth.c:1205
#, c-format
msgid "Digest mutual authentication failure: request-digest mismatch"
msgstr ""
-#: src/ne_auth.c:1299
+#: src/ne_auth.c:1336
#, c-format
msgid "ignored %s challenge"
msgstr ""
-#: src/ne_auth.c:1378
+#: src/ne_auth.c:1415
#, fuzzy
msgid "could not parse challenge"
msgstr "Parser-Fehler bei Ermittlung der Blockgröße"
msgid "Could not initialize zlib"
msgstr "Konnte Datei nicht öffnen: "
-#: src/ne_gnutls.c:172
+#: src/ne_gnutls.c:176
#, c-format
msgid "[unprintable:#%lu]"
msgstr ""
-#: src/ne_gnutls.c:201
+#: src/ne_gnutls.c:205
msgid "[unprintable]"
msgstr ""
-#: src/ne_gnutls.c:817
+#: src/ne_gnutls.c:845
msgid "signed using insecure algorithm"
msgstr ""
-#: src/ne_gnutls.c:820
+#: src/ne_gnutls.c:848
#, c-format
msgid "unrecognized errors (%u)"
msgstr ""
-#: src/ne_gnutls.c:865 src/ne_openssl.c:468
+#: src/ne_gnutls.c:893 src/ne_openssl.c:470
#, c-format
msgid "Server certificate was missing commonName attribute in subject name"
msgstr ""
-#: src/ne_gnutls.c:879
+#: src/ne_gnutls.c:907
#, fuzzy, c-format
msgid "Could not verify server certificate: %s"
msgstr "Konnte nicht in diese Datei schreiben: %s"
-#: src/ne_gnutls.c:891 src/ne_openssl.c:455
+#: src/ne_gnutls.c:919 src/ne_openssl.c:457
#, c-format
msgid "Certificate verification error: %s"
msgstr ""
-#: src/ne_gnutls.c:924 src/ne_openssl.c:674
+#: src/ne_gnutls.c:952 src/ne_openssl.c:702
#, c-format
msgid "SSL handshake failed, client certificate was requested: %s"
msgstr ""
-#: src/ne_gnutls.c:929 src/ne_openssl.c:679
+#: src/ne_gnutls.c:957 src/ne_openssl.c:707
#, fuzzy, c-format
msgid "SSL handshake failed: %s"
msgstr "Konnte nicht in diese Datei schreiben: %s"
-#: src/ne_gnutls.c:939
+#: src/ne_gnutls.c:967
#, c-format
msgid "Server did not send certificate chain"
msgstr ""
msgid "No activelock for <%s> returned in LOCK refresh response"
msgstr ""
-#: src/ne_openssl.c:699
+#: src/ne_openssl.c:727
#, c-format
msgid "SSL server did not present certificate"
msgstr ""
-#: src/ne_openssl.c:708
+#: src/ne_openssl.c:736
#, c-format
msgid "Server certificate changed: connection intercepted?"
msgstr ""
msgid "Could not seek to offset %s of request body file: %s"
msgstr "Konnte nicht in diese Datei schreiben: %s"
-#: src/ne_request.c:385
+#: src/ne_request.c:423
msgid "Could not send request body"
msgstr "Konnte den Rumpf der Anfrage nicht schicken"
-#: src/ne_request.c:728
+#: src/ne_request.c:450
+#, fuzzy
+msgid "Could not send chunked request terminator"
+msgstr "Konnte keine Anfrage (request) schicken"
+
+#: src/ne_request.c:784
msgid "Could not read chunk size"
msgstr "Lesefehler bei Ermittlung der Blockgröße"
-#: src/ne_request.c:735
+#: src/ne_request.c:791
msgid "Could not parse chunk size"
msgstr "Parser-Fehler bei Ermittlung der Blockgröße"
-#: src/ne_request.c:772
+#: src/ne_request.c:828
msgid "Could not read response body"
msgstr "Konnte Rumpf der Antwort nicht lesen"
-#: src/ne_request.c:788
+#: src/ne_request.c:844
#, fuzzy
msgid "Could not read chunk delimiter"
msgstr "Lesefehler bei Ermittlung der Blockgröße"
-#: src/ne_request.c:791
+#: src/ne_request.c:847
msgid "Chunk delimiter was invalid"
msgstr ""
-#: src/ne_request.c:896
+#: src/ne_request.c:952
msgid "Could not read status line"
msgstr "Konnte Status-Zeile des Servers nicht lesen"
-#: src/ne_request.c:918
+#: src/ne_request.c:974
#, fuzzy
msgid "Could not parse response status line"
msgstr "Konnte Status-Zeile des Servers nicht interpretieren."
-#: src/ne_request.c:930
+#: src/ne_request.c:986
#, fuzzy
msgid "Could not read interim response headers"
msgstr "Konnte Rumpf der Antwort nicht lesen"
-#: src/ne_request.c:964
+#: src/ne_request.c:1020
msgid "Could not send request"
msgstr "Konnte keine Anfrage (request) schicken"
-#: src/ne_request.c:1012 src/ne_request.c:1030 src/ne_request.c:1040
+#: src/ne_request.c:1068 src/ne_request.c:1086 src/ne_request.c:1096
msgid "Error reading response headers"
msgstr "Fehler beim Lesen der Kopfzeilen (header) der Antwort"
-#: src/ne_request.c:1058
+#: src/ne_request.c:1114
#, c-format
msgid "Response header too long"
msgstr "Kopfzeilen (header) der Antwort zu lang"
-#: src/ne_request.c:1140
+#: src/ne_request.c:1196
#, fuzzy
msgid "Response exceeded maximum number of header fields"
msgstr "Antwort hatte zu viele Header-Felder."
-#: src/ne_request.c:1155
+#: src/ne_request.c:1211
#, fuzzy, c-format
msgid "Could not resolve hostname `%s': %s"
msgstr "%s: Fehler: Konnte den Namen des Servers nicht auflösen (%s).\n"
-#: src/ne_request.c:1286
+#: src/ne_request.c:1342
msgid "Unknown transfer-coding in response"
msgstr ""
-#: src/ne_request.c:1299
+#: src/ne_request.c:1355
msgid "Invalid Content-Length in response"
msgstr ""
-#: src/ne_request.c:1372
+#: src/ne_request.c:1428
#, c-format
msgid "Could not write to file: %s"
msgstr "Konnte nicht in diese Datei schreiben: %s"
-#: src/ne_request.c:1445
+#: src/ne_request.c:1501
#, fuzzy, c-format
msgid "Could not create SSL connection through proxy server: %s"
msgstr "Konnte durch den Proxy-Server keine SSL-Verbindung herstellen"
-#: src/ne_request.c:1484
+#: src/ne_request.c:1540
#, fuzzy, c-format
msgid "Could not create socket"
msgstr "Konnte keine SSL-Sitzung herstellen"
-#: src/ne_request.c:1518
+#: src/ne_request.c:1574
msgid "Could not connect to server"
msgstr "Verbindungsaufbau zum Server gescheitert."
-#: src/ne_request.c:1520
+#: src/ne_request.c:1576
msgid "Could not connect to proxy server"
msgstr "Verbindungsaufbau zum Proxy-Server gescheitert."
-#: src/ne_request.c:1563
+#: src/ne_request.c:1619
#, c-format
msgid "Could not find IPv4 address of hostname %s for SOCKS v4 proxy"
msgstr ""
-#: src/ne_request.c:1621
+#: src/ne_request.c:1677
#, fuzzy, c-format
msgid "Could not establish connection from SOCKS proxy (%s:%u): %s"
msgstr "Konnte durch den Proxy-Server keine SSL-Verbindung herstellen"
-#: src/ne_session.c:530 src/ne_session.c:541
+#: src/ne_session.c:538 src/ne_session.c:549
msgid "[invalid date]"
msgstr ""
-#: src/ne_session.c:554
+#: src/ne_session.c:562
msgid "certificate is not yet valid"
msgstr ""
-#: src/ne_session.c:555
+#: src/ne_session.c:563
msgid "certificate has expired"
msgstr ""
-#: src/ne_session.c:556
+#: src/ne_session.c:564
msgid "certificate issued for a different hostname"
msgstr ""
-#: src/ne_session.c:557
+#: src/ne_session.c:565
msgid "issuer is not trusted"
msgstr ""
-#: src/ne_session.c:558
+#: src/ne_session.c:566
msgid "bad certificate chain"
msgstr ""
-#: src/ne_session.c:559
+#: src/ne_session.c:567
msgid "certificate has been revoked"
msgstr ""
-#: src/ne_session.c:564
+#: src/ne_session.c:572
msgid "Server certificate verification failed: "
msgstr ""
-#: src/ne_socket.c:516 src/ne_socket.c:612 src/ne_socket.c:716
+#: src/ne_socket.c:522 src/ne_socket.c:618 src/ne_socket.c:722
#, fuzzy
msgid "Connection closed"
msgstr "Verbindung vom Server geschlossen"
-#: src/ne_socket.c:622 src/ne_socket.c:728
+#: src/ne_socket.c:628 src/ne_socket.c:736
#, fuzzy
msgid "Secure connection truncated"
msgstr "Verbindung wegen Zeitüberschreitung abgebrochen."
-#: src/ne_socket.c:634 src/ne_socket.c:740
+#: src/ne_socket.c:640 src/ne_socket.c:748
#, fuzzy, c-format
msgid "SSL error: %s"
msgstr "%s: Fehler: %s\n"
-#: src/ne_socket.c:637
+#: src/ne_socket.c:643
#, c-format
msgid "SSL error code %d/%d/%lu"
msgstr ""
-#: src/ne_socket.c:721
+#: src/ne_socket.c:727
#, fuzzy, c-format
msgid "SSL alert received: %s"
msgstr "%s: Fehler: %s\n"
-#: src/ne_socket.c:736
+#: src/ne_socket.c:744
msgid "SSL socket read failed"
msgstr ""
-#: src/ne_socket.c:867
+#: src/ne_socket.c:875
msgid "Line too long"
msgstr "Zeile zu lang"
-#: src/ne_socket.c:1012 src/ne_socket.c:1018
+#: src/ne_socket.c:1036 src/ne_socket.c:1042
msgid "Host not found"
msgstr "Host nicht gefunden"
-#: src/ne_socket.c:1221
+#: src/ne_socket.c:1249
#, fuzzy
msgid "Connection timed out"
msgstr "%s: Verbindung wegen Zeitüberschreitung geschlossen."
-#: src/ne_socket.c:1412
+#: src/ne_socket.c:1442
msgid "Socket descriptor number exceeds FD_SETSIZE"
msgstr ""
-#: src/ne_socket.c:1474
+#: src/ne_socket.c:1504
msgid "Socket family not supported"
msgstr ""
-#: src/ne_socket.c:1701
+#: src/ne_socket.c:1735
msgid "Client certificate verification failed"
msgstr ""
-#: src/ne_socket.c:1717
+#: src/ne_socket.c:1751
msgid "SSL disabled due to lack of entropy"
msgstr ""
-#: src/ne_socket.c:1724
-msgid "SSL disabled due to library version mismatch"
-msgstr ""
-
-#: src/ne_socket.c:1730
+#: src/ne_socket.c:1757
#, fuzzy
msgid "Could not create SSL structure"
msgstr "Konnte keine SSL-Sitzung herstellen"
msgstr ""
"Project-Id-Version: sitecopy 0.9.3\n"
"Report-Msgid-Bugs-To: neon@lists.manyfish.co.uk\n"
-"POT-Creation-Date: 2010-10-01 13:30+0100\n"
+"POT-Creation-Date: 2013-07-31 16:46+0100\n"
"PO-Revision-Date: 2000-01-31 00:00+0100\n"
"Last-Translator: Sylvain Glaize <mokona@puupuu.org>\n"
"Language-Team: fr\n"
+"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
"Status line was: %s"
msgstr ""
-#: src/ne_auth.c:134
+#: src/ne_auth.c:139
#, fuzzy, c-format
msgid "Could not authenticate to server: %s"
msgstr "%s: erreur: impossible de se connecter à l'hôte distant.\n"
-#: src/ne_auth.c:139
+#: src/ne_auth.c:144
#, fuzzy, c-format
msgid "Could not authenticate to proxy server: %s"
msgstr "%s: erreur: impossible de se connecter à l'hôte distant.\n"
-#: src/ne_auth.c:374
+#: src/ne_auth.c:386
#, c-format
msgid "rejected %s challenge"
msgstr ""
-#: src/ne_auth.c:390
+#: src/ne_auth.c:402
msgid "missing realm in Basic challenge"
msgstr ""
-#: src/ne_auth.c:485
+#: src/ne_auth.c:497
msgid "invalid Negotiate token"
msgstr ""
-#: src/ne_auth.c:508
+#: src/ne_auth.c:520
msgid "GSSAPI authentication error: "
msgstr ""
-#: src/ne_auth.c:521
+#: src/ne_auth.c:533
#, c-format
msgid "GSSAPI failure (code %u)"
msgstr ""
-#: src/ne_auth.c:556
+#: src/ne_auth.c:568
msgid "ignoring empty Negotiate continuation"
msgstr ""
-#: src/ne_auth.c:571
+#: src/ne_auth.c:583
#, c-format
msgid "Negotiate response verification failed: invalid response header token"
msgstr ""
-#: src/ne_auth.c:593
+#: src/ne_auth.c:605
#, c-format
msgid "Negotiate response verification failure: %s"
msgstr ""
-#: src/ne_auth.c:765
+#: src/ne_auth.c:669
+#, c-format
+msgid "SSPI response verification failed: invalid response header token"
+msgstr ""
+
+#: src/ne_auth.c:802
msgid "unknown algorithm in Digest challenge"
msgstr ""
-#: src/ne_auth.c:769
+#: src/ne_auth.c:806
msgid "incompatible algorithm in Digest challenge"
msgstr ""
-#: src/ne_auth.c:773
+#: src/ne_auth.c:810
msgid "missing parameter in Digest challenge"
msgstr ""
-#: src/ne_auth.c:777
+#: src/ne_auth.c:814
msgid "initial Digest challenge was stale"
msgstr ""
-#: src/ne_auth.c:784
+#: src/ne_auth.c:821
msgid "stale Digest challenge with new algorithm or realm"
msgstr ""
-#: src/ne_auth.c:796
+#: src/ne_auth.c:833
#, fuzzy
msgid "could not parse domain in Digest challenge"
msgstr "%s: erreur: impossible d'ouvrir le fichier de ressources: %s\n"
-#: src/ne_auth.c:1105
+#: src/ne_auth.c:1142
#, c-format
msgid "Digest mutual authentication failure: missing parameters"
msgstr ""
-#: src/ne_auth.c:1110
+#: src/ne_auth.c:1147
#, c-format
msgid "Digest mutual authentication failure: client nonce mismatch"
msgstr ""
-#: src/ne_auth.c:1120
+#: src/ne_auth.c:1157
#, c-format
msgid "Digest mutual authentication failure: could not parse nonce count"
msgstr ""
-#: src/ne_auth.c:1125
+#: src/ne_auth.c:1162
#, c-format
msgid "Digest mutual authentication failure: nonce count mismatch (%u not %u)"
msgstr ""
-#: src/ne_auth.c:1168
+#: src/ne_auth.c:1205
#, c-format
msgid "Digest mutual authentication failure: request-digest mismatch"
msgstr ""
-#: src/ne_auth.c:1299
+#: src/ne_auth.c:1336
#, c-format
msgid "ignored %s challenge"
msgstr ""
-#: src/ne_auth.c:1378
+#: src/ne_auth.c:1415
#, fuzzy
msgid "could not parse challenge"
msgstr "%s: erreur: impossible d'ouvrir le fichier de ressources: %s\n"
msgid "Could not initialize zlib"
msgstr "%s: erreur: impossible d'ouvrir le fichier de ressources: %s\n"
-#: src/ne_gnutls.c:172
+#: src/ne_gnutls.c:176
#, c-format
msgid "[unprintable:#%lu]"
msgstr ""
-#: src/ne_gnutls.c:201
+#: src/ne_gnutls.c:205
msgid "[unprintable]"
msgstr ""
-#: src/ne_gnutls.c:817
+#: src/ne_gnutls.c:845
msgid "signed using insecure algorithm"
msgstr ""
-#: src/ne_gnutls.c:820
+#: src/ne_gnutls.c:848
#, c-format
msgid "unrecognized errors (%u)"
msgstr ""
-#: src/ne_gnutls.c:865 src/ne_openssl.c:468
+#: src/ne_gnutls.c:893 src/ne_openssl.c:470
#, c-format
msgid "Server certificate was missing commonName attribute in subject name"
msgstr ""
-#: src/ne_gnutls.c:879
+#: src/ne_gnutls.c:907
#, fuzzy, c-format
msgid "Could not verify server certificate: %s"
msgstr "%s: erreur: impossible d'ouvrir le fichier de ressources: %s\n"
-#: src/ne_gnutls.c:891 src/ne_openssl.c:455
+#: src/ne_gnutls.c:919 src/ne_openssl.c:457
#, c-format
msgid "Certificate verification error: %s"
msgstr ""
-#: src/ne_gnutls.c:924 src/ne_openssl.c:674
+#: src/ne_gnutls.c:952 src/ne_openssl.c:702
#, c-format
msgid "SSL handshake failed, client certificate was requested: %s"
msgstr ""
-#: src/ne_gnutls.c:929 src/ne_openssl.c:679
+#: src/ne_gnutls.c:957 src/ne_openssl.c:707
#, fuzzy, c-format
msgid "SSL handshake failed: %s"
msgstr "%s: erreur: impossible d'ouvrir le fichier de ressources: %s\n"
-#: src/ne_gnutls.c:939
+#: src/ne_gnutls.c:967
#, c-format
msgid "Server did not send certificate chain"
msgstr ""
msgid "No activelock for <%s> returned in LOCK refresh response"
msgstr ""
-#: src/ne_openssl.c:699
+#: src/ne_openssl.c:727
#, c-format
msgid "SSL server did not present certificate"
msgstr ""
-#: src/ne_openssl.c:708
+#: src/ne_openssl.c:736
#, c-format
msgid "Server certificate changed: connection intercepted?"
msgstr ""
msgid "Could not seek to offset %s of request body file: %s"
msgstr "%s: erreur: impossible d'ouvrir le fichier de ressources: %s\n"
-#: src/ne_request.c:385
+#: src/ne_request.c:423
msgid "Could not send request body"
msgstr ""
-#: src/ne_request.c:728
+#: src/ne_request.c:450
+#, fuzzy
+msgid "Could not send chunked request terminator"
+msgstr "%s: erreur: impossible de se connecter à l'hôte distant.\n"
+
+#: src/ne_request.c:784
msgid "Could not read chunk size"
msgstr ""
-#: src/ne_request.c:735
+#: src/ne_request.c:791
#, fuzzy
msgid "Could not parse chunk size"
msgstr "%s: erreur: impossible d'ouvrir le fichier de ressources: %s\n"
-#: src/ne_request.c:772
+#: src/ne_request.c:828
msgid "Could not read response body"
msgstr ""
-#: src/ne_request.c:788
+#: src/ne_request.c:844
#, fuzzy
msgid "Could not read chunk delimiter"
msgstr "%s: erreur: impossible d'ouvrir le fichier de ressources: %s\n"
-#: src/ne_request.c:791
+#: src/ne_request.c:847
msgid "Chunk delimiter was invalid"
msgstr ""
-#: src/ne_request.c:896
+#: src/ne_request.c:952
msgid "Could not read status line"
msgstr ""
-#: src/ne_request.c:918
+#: src/ne_request.c:974
#, fuzzy
msgid "Could not parse response status line"
msgstr "%s: erreur: impossible d'ouvrir le fichier de ressources: %s\n"
-#: src/ne_request.c:930
+#: src/ne_request.c:986
#, fuzzy
msgid "Could not read interim response headers"
msgstr "%s: erreur: impossible d'ouvrir le fichier de ressources: %s\n"
-#: src/ne_request.c:964
+#: src/ne_request.c:1020
msgid "Could not send request"
msgstr ""
-#: src/ne_request.c:1012 src/ne_request.c:1030 src/ne_request.c:1040
+#: src/ne_request.c:1068 src/ne_request.c:1086 src/ne_request.c:1096
msgid "Error reading response headers"
msgstr ""
-#: src/ne_request.c:1058
+#: src/ne_request.c:1114
#, c-format
msgid "Response header too long"
msgstr ""
-#: src/ne_request.c:1140
+#: src/ne_request.c:1196
msgid "Response exceeded maximum number of header fields"
msgstr ""
-#: src/ne_request.c:1155
+#: src/ne_request.c:1211
#, fuzzy, c-format
msgid "Could not resolve hostname `%s': %s"
msgstr "%s: erreur: impossible de trouver le nom de l'hôte distant.\n"
-#: src/ne_request.c:1286
+#: src/ne_request.c:1342
msgid "Unknown transfer-coding in response"
msgstr ""
-#: src/ne_request.c:1299
+#: src/ne_request.c:1355
msgid "Invalid Content-Length in response"
msgstr ""
-#: src/ne_request.c:1372
+#: src/ne_request.c:1428
#, fuzzy, c-format
msgid "Could not write to file: %s"
msgstr "%s: erreur: impossible d'ouvrir le fichier de ressources: %s\n"
-#: src/ne_request.c:1445
+#: src/ne_request.c:1501
#, fuzzy, c-format
msgid "Could not create SSL connection through proxy server: %s"
msgstr "%s: erreur: impossible de se connecter à l'hôte distant.\n"
-#: src/ne_request.c:1484
+#: src/ne_request.c:1540
#, fuzzy, c-format
msgid "Could not create socket"
msgstr "%s: erreur: impossible de se connecter à l'hôte distant.\n"
-#: src/ne_request.c:1518
+#: src/ne_request.c:1574
#, fuzzy
msgid "Could not connect to server"
msgstr "%s: erreur: impossible de se connecter à l'hôte distant.\n"
-#: src/ne_request.c:1520
+#: src/ne_request.c:1576
#, fuzzy
msgid "Could not connect to proxy server"
msgstr "%s: erreur: impossible de se connecter à l'hôte distant.\n"
-#: src/ne_request.c:1563
+#: src/ne_request.c:1619
#, c-format
msgid "Could not find IPv4 address of hostname %s for SOCKS v4 proxy"
msgstr ""
-#: src/ne_request.c:1621
+#: src/ne_request.c:1677
#, fuzzy, c-format
msgid "Could not establish connection from SOCKS proxy (%s:%u): %s"
msgstr "%s: erreur: impossible de se connecter à l'hôte distant.\n"
-#: src/ne_session.c:530 src/ne_session.c:541
+#: src/ne_session.c:538 src/ne_session.c:549
msgid "[invalid date]"
msgstr ""
-#: src/ne_session.c:554
+#: src/ne_session.c:562
msgid "certificate is not yet valid"
msgstr ""
-#: src/ne_session.c:555
+#: src/ne_session.c:563
msgid "certificate has expired"
msgstr ""
-#: src/ne_session.c:556
+#: src/ne_session.c:564
msgid "certificate issued for a different hostname"
msgstr ""
-#: src/ne_session.c:557
+#: src/ne_session.c:565
msgid "issuer is not trusted"
msgstr ""
-#: src/ne_session.c:558
+#: src/ne_session.c:566
msgid "bad certificate chain"
msgstr ""
-#: src/ne_session.c:559
+#: src/ne_session.c:567
msgid "certificate has been revoked"
msgstr ""
-#: src/ne_session.c:564
+#: src/ne_session.c:572
msgid "Server certificate verification failed: "
msgstr ""
-#: src/ne_socket.c:516 src/ne_socket.c:612 src/ne_socket.c:716
+#: src/ne_socket.c:522 src/ne_socket.c:618 src/ne_socket.c:722
msgid "Connection closed"
msgstr ""
-#: src/ne_socket.c:622 src/ne_socket.c:728
+#: src/ne_socket.c:628 src/ne_socket.c:736
msgid "Secure connection truncated"
msgstr ""
-#: src/ne_socket.c:634 src/ne_socket.c:740
+#: src/ne_socket.c:640 src/ne_socket.c:748
#, fuzzy, c-format
msgid "SSL error: %s"
msgstr ""
"%s: dans issue_error\n"
"%s"
-#: src/ne_socket.c:637
+#: src/ne_socket.c:643
#, c-format
msgid "SSL error code %d/%d/%lu"
msgstr ""
-#: src/ne_socket.c:721
+#: src/ne_socket.c:727
#, fuzzy, c-format
msgid "SSL alert received: %s"
msgstr ""
"%s: dans issue_error\n"
"%s"
-#: src/ne_socket.c:736
+#: src/ne_socket.c:744
msgid "SSL socket read failed"
msgstr ""
-#: src/ne_socket.c:867
+#: src/ne_socket.c:875
msgid "Line too long"
msgstr ""
-#: src/ne_socket.c:1012 src/ne_socket.c:1018
+#: src/ne_socket.c:1036 src/ne_socket.c:1042
msgid "Host not found"
msgstr ""
-#: src/ne_socket.c:1221
+#: src/ne_socket.c:1249
msgid "Connection timed out"
msgstr ""
-#: src/ne_socket.c:1412
+#: src/ne_socket.c:1442
msgid "Socket descriptor number exceeds FD_SETSIZE"
msgstr ""
-#: src/ne_socket.c:1474
+#: src/ne_socket.c:1504
msgid "Socket family not supported"
msgstr ""
-#: src/ne_socket.c:1701
+#: src/ne_socket.c:1735
msgid "Client certificate verification failed"
msgstr ""
-#: src/ne_socket.c:1717
+#: src/ne_socket.c:1751
msgid "SSL disabled due to lack of entropy"
msgstr ""
-#: src/ne_socket.c:1724
-msgid "SSL disabled due to library version mismatch"
-msgstr ""
-
-#: src/ne_socket.c:1730
+#: src/ne_socket.c:1757
#, fuzzy
msgid "Could not create SSL structure"
msgstr "%s: erreur: impossible de se connecter à l'hôte distant.\n"
msgstr ""
"Project-Id-Version: sitecopy 0.10.14\n"
"Report-Msgid-Bugs-To: neon@lists.manyfish.co.uk\n"
-"POT-Creation-Date: 2010-10-01 13:30+0100\n"
+"POT-Creation-Date: 2013-07-31 16:46+0100\n"
"PO-Revision-Date: 2001-01-16 07:32+0900\n"
"Last-Translator: Nobuyuki Tsuchimura <tutimura@nn.iij4u.or.jp>\n"
"Language-Team: ja\n"
+"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=EUC-JP\n"
"Content-Transfer-Encoding: 8-bit\n"
"Status line was: %s"
msgstr ""
-#: src/ne_auth.c:134
+#: src/ne_auth.c:139
#, fuzzy, c-format
msgid "Could not authenticate to server: %s"
msgstr "¥×¥í¥¥·¡¼¥µ¡¼¥Ð¡¼¤ËÀܳ¤Ç¤¤Þ¤»¤ó"
-#: src/ne_auth.c:139
+#: src/ne_auth.c:144
#, fuzzy, c-format
msgid "Could not authenticate to proxy server: %s"
msgstr "¥×¥í¥¥·¡¼¥µ¡¼¥Ð¡¼¤ËÀܳ¤Ç¤¤Þ¤»¤ó"
-#: src/ne_auth.c:374
+#: src/ne_auth.c:386
#, c-format
msgid "rejected %s challenge"
msgstr ""
-#: src/ne_auth.c:390
+#: src/ne_auth.c:402
msgid "missing realm in Basic challenge"
msgstr ""
-#: src/ne_auth.c:485
+#: src/ne_auth.c:497
msgid "invalid Negotiate token"
msgstr ""
-#: src/ne_auth.c:508
+#: src/ne_auth.c:520
#, fuzzy
msgid "GSSAPI authentication error: "
msgstr "%s ¤Ø¤Îǧ¾Ú¤¬ %s ¤ÇɬÍפǤ¹ '%s':\n"
-#: src/ne_auth.c:521
+#: src/ne_auth.c:533
#, c-format
msgid "GSSAPI failure (code %u)"
msgstr ""
-#: src/ne_auth.c:556
+#: src/ne_auth.c:568
msgid "ignoring empty Negotiate continuation"
msgstr ""
-#: src/ne_auth.c:571
+#: src/ne_auth.c:583
#, c-format
msgid "Negotiate response verification failed: invalid response header token"
msgstr ""
-#: src/ne_auth.c:593
+#: src/ne_auth.c:605
#, c-format
msgid "Negotiate response verification failure: %s"
msgstr ""
-#: src/ne_auth.c:765
+#: src/ne_auth.c:669
+#, c-format
+msgid "SSPI response verification failed: invalid response header token"
+msgstr ""
+
+#: src/ne_auth.c:802
msgid "unknown algorithm in Digest challenge"
msgstr ""
-#: src/ne_auth.c:769
+#: src/ne_auth.c:806
msgid "incompatible algorithm in Digest challenge"
msgstr ""
-#: src/ne_auth.c:773
+#: src/ne_auth.c:810
msgid "missing parameter in Digest challenge"
msgstr ""
-#: src/ne_auth.c:777
+#: src/ne_auth.c:814
msgid "initial Digest challenge was stale"
msgstr ""
-#: src/ne_auth.c:784
+#: src/ne_auth.c:821
msgid "stale Digest challenge with new algorithm or realm"
msgstr ""
-#: src/ne_auth.c:796
+#: src/ne_auth.c:833
#, fuzzy
msgid "could not parse domain in Digest challenge"
msgstr "chunk ¤ÎÂ礤µ¤ò²òÀϤǤ¤Þ¤»¤ó"
-#: src/ne_auth.c:1105
+#: src/ne_auth.c:1142
#, c-format
msgid "Digest mutual authentication failure: missing parameters"
msgstr ""
-#: src/ne_auth.c:1110
+#: src/ne_auth.c:1147
#, c-format
msgid "Digest mutual authentication failure: client nonce mismatch"
msgstr ""
-#: src/ne_auth.c:1120
+#: src/ne_auth.c:1157
#, c-format
msgid "Digest mutual authentication failure: could not parse nonce count"
msgstr ""
-#: src/ne_auth.c:1125
+#: src/ne_auth.c:1162
#, c-format
msgid "Digest mutual authentication failure: nonce count mismatch (%u not %u)"
msgstr ""
-#: src/ne_auth.c:1168
+#: src/ne_auth.c:1205
#, c-format
msgid "Digest mutual authentication failure: request-digest mismatch"
msgstr ""
-#: src/ne_auth.c:1299
+#: src/ne_auth.c:1336
#, c-format
msgid "ignored %s challenge"
msgstr ""
-#: src/ne_auth.c:1378
+#: src/ne_auth.c:1415
#, fuzzy
msgid "could not parse challenge"
msgstr "chunk ¤ÎÂ礤µ¤ò²òÀϤǤ¤Þ¤»¤ó"
msgid "Could not initialize zlib"
msgstr "¥Õ¥¡¥¤¥ë¤¬½ñ¤±¤Þ¤»¤ó: "
-#: src/ne_gnutls.c:172
+#: src/ne_gnutls.c:176
#, c-format
msgid "[unprintable:#%lu]"
msgstr ""
-#: src/ne_gnutls.c:201
+#: src/ne_gnutls.c:205
msgid "[unprintable]"
msgstr ""
-#: src/ne_gnutls.c:817
+#: src/ne_gnutls.c:845
msgid "signed using insecure algorithm"
msgstr ""
-#: src/ne_gnutls.c:820
+#: src/ne_gnutls.c:848
#, c-format
msgid "unrecognized errors (%u)"
msgstr ""
-#: src/ne_gnutls.c:865 src/ne_openssl.c:468
+#: src/ne_gnutls.c:893 src/ne_openssl.c:470
#, c-format
msgid "Server certificate was missing commonName attribute in subject name"
msgstr ""
-#: src/ne_gnutls.c:879
+#: src/ne_gnutls.c:907
#, fuzzy, c-format
msgid "Could not verify server certificate: %s"
msgstr "¥Õ¥¡¥¤¥ë¤¬½ñ¤±¤Þ¤»¤ó: %s"
-#: src/ne_gnutls.c:891 src/ne_openssl.c:455
+#: src/ne_gnutls.c:919 src/ne_openssl.c:457
#, c-format
msgid "Certificate verification error: %s"
msgstr ""
-#: src/ne_gnutls.c:924 src/ne_openssl.c:674
+#: src/ne_gnutls.c:952 src/ne_openssl.c:702
#, c-format
msgid "SSL handshake failed, client certificate was requested: %s"
msgstr ""
-#: src/ne_gnutls.c:929 src/ne_openssl.c:679
+#: src/ne_gnutls.c:957 src/ne_openssl.c:707
#, fuzzy, c-format
msgid "SSL handshake failed: %s"
msgstr "¥Õ¥¡¥¤¥ë¤¬½ñ¤±¤Þ¤»¤ó: %s"
-#: src/ne_gnutls.c:939
+#: src/ne_gnutls.c:967
#, c-format
msgid "Server did not send certificate chain"
msgstr ""
msgid "No activelock for <%s> returned in LOCK refresh response"
msgstr ""
-#: src/ne_openssl.c:699
+#: src/ne_openssl.c:727
#, c-format
msgid "SSL server did not present certificate"
msgstr ""
-#: src/ne_openssl.c:708
+#: src/ne_openssl.c:736
#, c-format
msgid "Server certificate changed: connection intercepted?"
msgstr ""
msgid "Could not seek to offset %s of request body file: %s"
msgstr "¥Õ¥¡¥¤¥ë¤¬½ñ¤±¤Þ¤»¤ó: %s"
-#: src/ne_request.c:385
+#: src/ne_request.c:423
msgid "Could not send request body"
msgstr ""
-#: src/ne_request.c:728
+#: src/ne_request.c:450
+#, fuzzy
+msgid "Could not send chunked request terminator"
+msgstr "¥×¥í¥¥·¡¼¥µ¡¼¥Ð¡¼¤ËÀܳ¤Ç¤¤Þ¤»¤ó"
+
+#: src/ne_request.c:784
msgid "Could not read chunk size"
msgstr "chunk ¤ÎÂ礤µ¤¬Æɤá¤Þ¤»¤ó"
-#: src/ne_request.c:735
+#: src/ne_request.c:791
msgid "Could not parse chunk size"
msgstr "chunk ¤ÎÂ礤µ¤ò²òÀϤǤ¤Þ¤»¤ó"
-#: src/ne_request.c:772
+#: src/ne_request.c:828
msgid "Could not read response body"
msgstr "response body ¤¬Æɤá¤Þ¤»¤ó"
-#: src/ne_request.c:788
+#: src/ne_request.c:844
#, fuzzy
msgid "Could not read chunk delimiter"
msgstr "chunk ¤ÎÂ礤µ¤¬Æɤá¤Þ¤»¤ó"
-#: src/ne_request.c:791
+#: src/ne_request.c:847
msgid "Chunk delimiter was invalid"
msgstr ""
-#: src/ne_request.c:896
+#: src/ne_request.c:952
msgid "Could not read status line"
msgstr ""
-#: src/ne_request.c:918
+#: src/ne_request.c:974
#, fuzzy
msgid "Could not parse response status line"
msgstr "response body ¤¬Æɤá¤Þ¤»¤ó"
-#: src/ne_request.c:930
+#: src/ne_request.c:986
#, fuzzy
msgid "Could not read interim response headers"
msgstr "response body ¤¬Æɤá¤Þ¤»¤ó"
-#: src/ne_request.c:964
+#: src/ne_request.c:1020
msgid "Could not send request"
msgstr ""
-#: src/ne_request.c:1012 src/ne_request.c:1030 src/ne_request.c:1040
+#: src/ne_request.c:1068 src/ne_request.c:1086 src/ne_request.c:1096
msgid "Error reading response headers"
msgstr ""
-#: src/ne_request.c:1058
+#: src/ne_request.c:1114
#, c-format
msgid "Response header too long"
msgstr ""
-#: src/ne_request.c:1140
+#: src/ne_request.c:1196
msgid "Response exceeded maximum number of header fields"
msgstr ""
-#: src/ne_request.c:1155
+#: src/ne_request.c:1211
#, fuzzy, c-format
msgid "Could not resolve hostname `%s': %s"
msgstr "%s: ¥¨¥é¡¼: ¥µ¡¼¥Ð¡¼¤Î¥Û¥¹¥È̾ (%s) ¤ò IP ¥¢¥É¥ì¥¹¤ËÊÑ´¹¤Ç¤¤Þ¤»¤ó¡£\n"
-#: src/ne_request.c:1286
+#: src/ne_request.c:1342
msgid "Unknown transfer-coding in response"
msgstr ""
-#: src/ne_request.c:1299
+#: src/ne_request.c:1355
msgid "Invalid Content-Length in response"
msgstr ""
-#: src/ne_request.c:1372
+#: src/ne_request.c:1428
#, c-format
msgid "Could not write to file: %s"
msgstr "¥Õ¥¡¥¤¥ë¤¬½ñ¤±¤Þ¤»¤ó: %s"
-#: src/ne_request.c:1445
+#: src/ne_request.c:1501
#, fuzzy, c-format
msgid "Could not create SSL connection through proxy server: %s"
msgstr "¥×¥í¥¥·¡¼¥µ¡¼¥Ð¡¼¤Ë SSL Àܳ¤Ç¤¤Þ¤»¤ó"
-#: src/ne_request.c:1484
+#: src/ne_request.c:1540
#, fuzzy, c-format
msgid "Could not create socket"
msgstr "¥×¥í¥¥·¡¼¥µ¡¼¥Ð¡¼¤Ë SSL Àܳ¤Ç¤¤Þ¤»¤ó"
-#: src/ne_request.c:1518
+#: src/ne_request.c:1574
msgid "Could not connect to server"
msgstr "¥×¥í¥¥·¡¼¥µ¡¼¥Ð¡¼¤ËÀܳ¤Ç¤¤Þ¤»¤ó"
-#: src/ne_request.c:1520
+#: src/ne_request.c:1576
msgid "Could not connect to proxy server"
msgstr "¥×¥í¥¥·¡¼¥µ¡¼¥Ð¡¼¤ËÀܳ¤Ç¤¤Þ¤»¤ó"
-#: src/ne_request.c:1563
+#: src/ne_request.c:1619
#, c-format
msgid "Could not find IPv4 address of hostname %s for SOCKS v4 proxy"
msgstr ""
-#: src/ne_request.c:1621
+#: src/ne_request.c:1677
#, fuzzy, c-format
msgid "Could not establish connection from SOCKS proxy (%s:%u): %s"
msgstr "¥×¥í¥¥·¡¼¥µ¡¼¥Ð¡¼¤Ë SSL Àܳ¤Ç¤¤Þ¤»¤ó"
-#: src/ne_session.c:530 src/ne_session.c:541
+#: src/ne_session.c:538 src/ne_session.c:549
msgid "[invalid date]"
msgstr ""
-#: src/ne_session.c:554
+#: src/ne_session.c:562
msgid "certificate is not yet valid"
msgstr ""
-#: src/ne_session.c:555
+#: src/ne_session.c:563
msgid "certificate has expired"
msgstr ""
-#: src/ne_session.c:556
+#: src/ne_session.c:564
msgid "certificate issued for a different hostname"
msgstr ""
-#: src/ne_session.c:557
+#: src/ne_session.c:565
msgid "issuer is not trusted"
msgstr ""
-#: src/ne_session.c:558
+#: src/ne_session.c:566
msgid "bad certificate chain"
msgstr ""
-#: src/ne_session.c:559
+#: src/ne_session.c:567
msgid "certificate has been revoked"
msgstr ""
-#: src/ne_session.c:564
+#: src/ne_session.c:572
msgid "Server certificate verification failed: "
msgstr ""
-#: src/ne_socket.c:516 src/ne_socket.c:612 src/ne_socket.c:716
+#: src/ne_socket.c:522 src/ne_socket.c:618 src/ne_socket.c:722
#, fuzzy
msgid "Connection closed"
msgstr "%s: Àܳ¤¬¥µ¡¼¥Ð¡¼¤ËÀÚ¤é¤ì¤Þ¤·¤¿¡£"
-#: src/ne_socket.c:622 src/ne_socket.c:728
+#: src/ne_socket.c:628 src/ne_socket.c:736
#, fuzzy
msgid "Secure connection truncated"
msgstr "Àܳ¥¿¥¤¥à¥¢¥¦¥È¡£"
-#: src/ne_socket.c:634 src/ne_socket.c:740
+#: src/ne_socket.c:640 src/ne_socket.c:748
#, c-format
msgid "SSL error: %s"
msgstr ""
-#: src/ne_socket.c:637
+#: src/ne_socket.c:643
#, c-format
msgid "SSL error code %d/%d/%lu"
msgstr ""
-#: src/ne_socket.c:721
+#: src/ne_socket.c:727
#, c-format
msgid "SSL alert received: %s"
msgstr ""
-#: src/ne_socket.c:736
+#: src/ne_socket.c:744
msgid "SSL socket read failed"
msgstr ""
-#: src/ne_socket.c:867
+#: src/ne_socket.c:875
msgid "Line too long"
msgstr ""
-#: src/ne_socket.c:1012 src/ne_socket.c:1018
+#: src/ne_socket.c:1036 src/ne_socket.c:1042
msgid "Host not found"
msgstr ""
-#: src/ne_socket.c:1221
+#: src/ne_socket.c:1249
#, fuzzy
msgid "Connection timed out"
msgstr "%s: Àܳ¥¿¥¤¥à¥¢¥¦¥È¤Ç¤¹¡£"
-#: src/ne_socket.c:1412
+#: src/ne_socket.c:1442
msgid "Socket descriptor number exceeds FD_SETSIZE"
msgstr ""
-#: src/ne_socket.c:1474
+#: src/ne_socket.c:1504
msgid "Socket family not supported"
msgstr ""
-#: src/ne_socket.c:1701
+#: src/ne_socket.c:1735
msgid "Client certificate verification failed"
msgstr ""
-#: src/ne_socket.c:1717
+#: src/ne_socket.c:1751
msgid "SSL disabled due to lack of entropy"
msgstr ""
-#: src/ne_socket.c:1724
-msgid "SSL disabled due to library version mismatch"
-msgstr ""
-
-#: src/ne_socket.c:1730
+#: src/ne_socket.c:1757
#, fuzzy
msgid "Could not create SSL structure"
msgstr "¥×¥í¥¥·¡¼¥µ¡¼¥Ð¡¼¤Ë SSL Àܳ¤Ç¤¤Þ¤»¤ó"
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: neon@lists.manyfish.co.uk\n"
-"POT-Creation-Date: 2010-10-01 13:30+0100\n"
+"POT-Creation-Date: 2013-07-31 16:46+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
"Status line was: %s"
msgstr ""
-#: src/ne_auth.c:134
+#: src/ne_auth.c:139
#, c-format
msgid "Could not authenticate to server: %s"
msgstr ""
-#: src/ne_auth.c:139
+#: src/ne_auth.c:144
#, c-format
msgid "Could not authenticate to proxy server: %s"
msgstr ""
-#: src/ne_auth.c:374
+#: src/ne_auth.c:386
#, c-format
msgid "rejected %s challenge"
msgstr ""
-#: src/ne_auth.c:390
+#: src/ne_auth.c:402
msgid "missing realm in Basic challenge"
msgstr ""
-#: src/ne_auth.c:485
+#: src/ne_auth.c:497
msgid "invalid Negotiate token"
msgstr ""
-#: src/ne_auth.c:508
+#: src/ne_auth.c:520
msgid "GSSAPI authentication error: "
msgstr ""
-#: src/ne_auth.c:521
+#: src/ne_auth.c:533
#, c-format
msgid "GSSAPI failure (code %u)"
msgstr ""
-#: src/ne_auth.c:556
+#: src/ne_auth.c:568
msgid "ignoring empty Negotiate continuation"
msgstr ""
-#: src/ne_auth.c:571
+#: src/ne_auth.c:583
#, c-format
msgid "Negotiate response verification failed: invalid response header token"
msgstr ""
-#: src/ne_auth.c:593
+#: src/ne_auth.c:605
#, c-format
msgid "Negotiate response verification failure: %s"
msgstr ""
-#: src/ne_auth.c:765
+#: src/ne_auth.c:669
+#, c-format
+msgid "SSPI response verification failed: invalid response header token"
+msgstr ""
+
+#: src/ne_auth.c:802
msgid "unknown algorithm in Digest challenge"
msgstr ""
-#: src/ne_auth.c:769
+#: src/ne_auth.c:806
msgid "incompatible algorithm in Digest challenge"
msgstr ""
-#: src/ne_auth.c:773
+#: src/ne_auth.c:810
msgid "missing parameter in Digest challenge"
msgstr ""
-#: src/ne_auth.c:777
+#: src/ne_auth.c:814
msgid "initial Digest challenge was stale"
msgstr ""
-#: src/ne_auth.c:784
+#: src/ne_auth.c:821
msgid "stale Digest challenge with new algorithm or realm"
msgstr ""
-#: src/ne_auth.c:796
+#: src/ne_auth.c:833
msgid "could not parse domain in Digest challenge"
msgstr ""
-#: src/ne_auth.c:1105
+#: src/ne_auth.c:1142
#, c-format
msgid "Digest mutual authentication failure: missing parameters"
msgstr ""
-#: src/ne_auth.c:1110
+#: src/ne_auth.c:1147
#, c-format
msgid "Digest mutual authentication failure: client nonce mismatch"
msgstr ""
-#: src/ne_auth.c:1120
+#: src/ne_auth.c:1157
#, c-format
msgid "Digest mutual authentication failure: could not parse nonce count"
msgstr ""
-#: src/ne_auth.c:1125
+#: src/ne_auth.c:1162
#, c-format
msgid "Digest mutual authentication failure: nonce count mismatch (%u not %u)"
msgstr ""
-#: src/ne_auth.c:1168
+#: src/ne_auth.c:1205
#, c-format
msgid "Digest mutual authentication failure: request-digest mismatch"
msgstr ""
-#: src/ne_auth.c:1299
+#: src/ne_auth.c:1336
#, c-format
msgid "ignored %s challenge"
msgstr ""
-#: src/ne_auth.c:1378
+#: src/ne_auth.c:1415
msgid "could not parse challenge"
msgstr ""
msgid "Could not initialize zlib"
msgstr ""
-#: src/ne_gnutls.c:172
+#: src/ne_gnutls.c:176
#, c-format
msgid "[unprintable:#%lu]"
msgstr ""
-#: src/ne_gnutls.c:201
+#: src/ne_gnutls.c:205
msgid "[unprintable]"
msgstr ""
-#: src/ne_gnutls.c:817
+#: src/ne_gnutls.c:845
msgid "signed using insecure algorithm"
msgstr ""
-#: src/ne_gnutls.c:820
+#: src/ne_gnutls.c:848
#, c-format
msgid "unrecognized errors (%u)"
msgstr ""
-#: src/ne_gnutls.c:865 src/ne_openssl.c:468
+#: src/ne_gnutls.c:893 src/ne_openssl.c:470
#, c-format
msgid "Server certificate was missing commonName attribute in subject name"
msgstr ""
-#: src/ne_gnutls.c:879
+#: src/ne_gnutls.c:907
#, c-format
msgid "Could not verify server certificate: %s"
msgstr ""
-#: src/ne_gnutls.c:891 src/ne_openssl.c:455
+#: src/ne_gnutls.c:919 src/ne_openssl.c:457
#, c-format
msgid "Certificate verification error: %s"
msgstr ""
-#: src/ne_gnutls.c:924 src/ne_openssl.c:674
+#: src/ne_gnutls.c:952 src/ne_openssl.c:702
#, c-format
msgid "SSL handshake failed, client certificate was requested: %s"
msgstr ""
-#: src/ne_gnutls.c:929 src/ne_openssl.c:679
+#: src/ne_gnutls.c:957 src/ne_openssl.c:707
#, c-format
msgid "SSL handshake failed: %s"
msgstr ""
-#: src/ne_gnutls.c:939
+#: src/ne_gnutls.c:967
#, c-format
msgid "Server did not send certificate chain"
msgstr ""
msgid "No activelock for <%s> returned in LOCK refresh response"
msgstr ""
-#: src/ne_openssl.c:699
+#: src/ne_openssl.c:727
#, c-format
msgid "SSL server did not present certificate"
msgstr ""
-#: src/ne_openssl.c:708
+#: src/ne_openssl.c:736
#, c-format
msgid "Server certificate changed: connection intercepted?"
msgstr ""
msgid "Could not seek to offset %s of request body file: %s"
msgstr ""
-#: src/ne_request.c:385
+#: src/ne_request.c:423
msgid "Could not send request body"
msgstr ""
-#: src/ne_request.c:728
+#: src/ne_request.c:450
+msgid "Could not send chunked request terminator"
+msgstr ""
+
+#: src/ne_request.c:784
msgid "Could not read chunk size"
msgstr ""
-#: src/ne_request.c:735
+#: src/ne_request.c:791
msgid "Could not parse chunk size"
msgstr ""
-#: src/ne_request.c:772
+#: src/ne_request.c:828
msgid "Could not read response body"
msgstr ""
-#: src/ne_request.c:788
+#: src/ne_request.c:844
msgid "Could not read chunk delimiter"
msgstr ""
-#: src/ne_request.c:791
+#: src/ne_request.c:847
msgid "Chunk delimiter was invalid"
msgstr ""
-#: src/ne_request.c:896
+#: src/ne_request.c:952
msgid "Could not read status line"
msgstr ""
-#: src/ne_request.c:918
+#: src/ne_request.c:974
msgid "Could not parse response status line"
msgstr ""
-#: src/ne_request.c:930
+#: src/ne_request.c:986
msgid "Could not read interim response headers"
msgstr ""
-#: src/ne_request.c:964
+#: src/ne_request.c:1020
msgid "Could not send request"
msgstr ""
-#: src/ne_request.c:1012 src/ne_request.c:1030 src/ne_request.c:1040
+#: src/ne_request.c:1068 src/ne_request.c:1086 src/ne_request.c:1096
msgid "Error reading response headers"
msgstr ""
-#: src/ne_request.c:1058
+#: src/ne_request.c:1114
#, c-format
msgid "Response header too long"
msgstr ""
-#: src/ne_request.c:1140
+#: src/ne_request.c:1196
msgid "Response exceeded maximum number of header fields"
msgstr ""
-#: src/ne_request.c:1155
+#: src/ne_request.c:1211
#, c-format
msgid "Could not resolve hostname `%s': %s"
msgstr ""
-#: src/ne_request.c:1286
+#: src/ne_request.c:1342
msgid "Unknown transfer-coding in response"
msgstr ""
-#: src/ne_request.c:1299
+#: src/ne_request.c:1355
msgid "Invalid Content-Length in response"
msgstr ""
-#: src/ne_request.c:1372
+#: src/ne_request.c:1428
#, c-format
msgid "Could not write to file: %s"
msgstr ""
-#: src/ne_request.c:1445
+#: src/ne_request.c:1501
#, c-format
msgid "Could not create SSL connection through proxy server: %s"
msgstr ""
-#: src/ne_request.c:1484
+#: src/ne_request.c:1540
#, c-format
msgid "Could not create socket"
msgstr ""
-#: src/ne_request.c:1518
+#: src/ne_request.c:1574
msgid "Could not connect to server"
msgstr ""
-#: src/ne_request.c:1520
+#: src/ne_request.c:1576
msgid "Could not connect to proxy server"
msgstr ""
-#: src/ne_request.c:1563
+#: src/ne_request.c:1619
#, c-format
msgid "Could not find IPv4 address of hostname %s for SOCKS v4 proxy"
msgstr ""
-#: src/ne_request.c:1621
+#: src/ne_request.c:1677
#, c-format
msgid "Could not establish connection from SOCKS proxy (%s:%u): %s"
msgstr ""
-#: src/ne_session.c:530 src/ne_session.c:541
+#: src/ne_session.c:538 src/ne_session.c:549
msgid "[invalid date]"
msgstr ""
-#: src/ne_session.c:554
+#: src/ne_session.c:562
msgid "certificate is not yet valid"
msgstr ""
-#: src/ne_session.c:555
+#: src/ne_session.c:563
msgid "certificate has expired"
msgstr ""
-#: src/ne_session.c:556
+#: src/ne_session.c:564
msgid "certificate issued for a different hostname"
msgstr ""
-#: src/ne_session.c:557
+#: src/ne_session.c:565
msgid "issuer is not trusted"
msgstr ""
-#: src/ne_session.c:558
+#: src/ne_session.c:566
msgid "bad certificate chain"
msgstr ""
-#: src/ne_session.c:559
+#: src/ne_session.c:567
msgid "certificate has been revoked"
msgstr ""
-#: src/ne_session.c:564
+#: src/ne_session.c:572
msgid "Server certificate verification failed: "
msgstr ""
-#: src/ne_socket.c:516 src/ne_socket.c:612 src/ne_socket.c:716
+#: src/ne_socket.c:522 src/ne_socket.c:618 src/ne_socket.c:722
msgid "Connection closed"
msgstr ""
-#: src/ne_socket.c:622 src/ne_socket.c:728
+#: src/ne_socket.c:628 src/ne_socket.c:736
msgid "Secure connection truncated"
msgstr ""
-#: src/ne_socket.c:634 src/ne_socket.c:740
+#: src/ne_socket.c:640 src/ne_socket.c:748
#, c-format
msgid "SSL error: %s"
msgstr ""
-#: src/ne_socket.c:637
+#: src/ne_socket.c:643
#, c-format
msgid "SSL error code %d/%d/%lu"
msgstr ""
-#: src/ne_socket.c:721
+#: src/ne_socket.c:727
#, c-format
msgid "SSL alert received: %s"
msgstr ""
-#: src/ne_socket.c:736
+#: src/ne_socket.c:744
msgid "SSL socket read failed"
msgstr ""
-#: src/ne_socket.c:867
+#: src/ne_socket.c:875
msgid "Line too long"
msgstr ""
-#: src/ne_socket.c:1012 src/ne_socket.c:1018
+#: src/ne_socket.c:1036 src/ne_socket.c:1042
msgid "Host not found"
msgstr ""
-#: src/ne_socket.c:1221
+#: src/ne_socket.c:1249
msgid "Connection timed out"
msgstr ""
-#: src/ne_socket.c:1412
+#: src/ne_socket.c:1442
msgid "Socket descriptor number exceeds FD_SETSIZE"
msgstr ""
-#: src/ne_socket.c:1474
+#: src/ne_socket.c:1504
msgid "Socket family not supported"
msgstr ""
-#: src/ne_socket.c:1701
+#: src/ne_socket.c:1735
msgid "Client certificate verification failed"
msgstr ""
-#: src/ne_socket.c:1717
+#: src/ne_socket.c:1751
msgid "SSL disabled due to lack of entropy"
msgstr ""
-#: src/ne_socket.c:1724
-msgid "SSL disabled due to library version mismatch"
-msgstr ""
-
-#: src/ne_socket.c:1730
+#: src/ne_socket.c:1757
msgid "Could not create SSL structure"
msgstr ""
msgstr ""
"Project-Id-Version: sitecopy 0.11.4\n"
"Report-Msgid-Bugs-To: neon@lists.manyfish.co.uk\n"
-"POT-Creation-Date: 2010-10-01 13:30+0100\n"
+"POT-Creation-Date: 2013-07-31 16:46+0100\n"
"PO-Revision-Date: 2002-11-07 18:11+0100\n"
"Last-Translator: Karl Ove Hufthammer <karl@huftis.org>\n"
"Language-Team: Norwegian Nynorsk <i18n-nn@lister.ping.uio.no>\n"
+"Language: nn\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Ugyldig HTTP-statuslinje i statuselement på linje %d av svaret:\n"
"Statuslinja var: %s"
-#: src/ne_auth.c:134
+#: src/ne_auth.c:139
#, fuzzy, c-format
msgid "Could not authenticate to server: %s"
msgstr "Klarte ikkje kopla til tenaren."
-#: src/ne_auth.c:139
+#: src/ne_auth.c:144
#, fuzzy, c-format
msgid "Could not authenticate to proxy server: %s"
msgstr "Klarte ikkje kopla til mellomtenar"
-#: src/ne_auth.c:374
+#: src/ne_auth.c:386
#, c-format
msgid "rejected %s challenge"
msgstr ""
-#: src/ne_auth.c:390
+#: src/ne_auth.c:402
msgid "missing realm in Basic challenge"
msgstr ""
-#: src/ne_auth.c:485
+#: src/ne_auth.c:497
msgid "invalid Negotiate token"
msgstr ""
-#: src/ne_auth.c:508
+#: src/ne_auth.c:520
#, fuzzy
msgid "GSSAPI authentication error: "
msgstr "Krev autentisering på %s «%s»:\n"
-#: src/ne_auth.c:521
+#: src/ne_auth.c:533
#, c-format
msgid "GSSAPI failure (code %u)"
msgstr ""
-#: src/ne_auth.c:556
+#: src/ne_auth.c:568
msgid "ignoring empty Negotiate continuation"
msgstr ""
-#: src/ne_auth.c:571
+#: src/ne_auth.c:583
#, c-format
msgid "Negotiate response verification failed: invalid response header token"
msgstr ""
-#: src/ne_auth.c:593
+#: src/ne_auth.c:605
#, fuzzy, c-format
msgid "Negotiate response verification failure: %s"
msgstr "Tenarsertifikatet er utgått på dato."
-#: src/ne_auth.c:765
+#: src/ne_auth.c:669
+#, c-format
+msgid "SSPI response verification failed: invalid response header token"
+msgstr ""
+
+#: src/ne_auth.c:802
msgid "unknown algorithm in Digest challenge"
msgstr ""
-#: src/ne_auth.c:769
+#: src/ne_auth.c:806
msgid "incompatible algorithm in Digest challenge"
msgstr ""
-#: src/ne_auth.c:773
+#: src/ne_auth.c:810
msgid "missing parameter in Digest challenge"
msgstr ""
-#: src/ne_auth.c:777
+#: src/ne_auth.c:814
msgid "initial Digest challenge was stale"
msgstr ""
-#: src/ne_auth.c:784
+#: src/ne_auth.c:821
msgid "stale Digest challenge with new algorithm or realm"
msgstr ""
-#: src/ne_auth.c:796
+#: src/ne_auth.c:833
#, fuzzy
msgid "could not parse domain in Digest challenge"
msgstr "Klarte ikkje tolka storleik på oppdelt svar"
-#: src/ne_auth.c:1105
+#: src/ne_auth.c:1142
#, c-format
msgid "Digest mutual authentication failure: missing parameters"
msgstr ""
-#: src/ne_auth.c:1110
+#: src/ne_auth.c:1147
#, c-format
msgid "Digest mutual authentication failure: client nonce mismatch"
msgstr ""
-#: src/ne_auth.c:1120
+#: src/ne_auth.c:1157
#, c-format
msgid "Digest mutual authentication failure: could not parse nonce count"
msgstr ""
-#: src/ne_auth.c:1125
+#: src/ne_auth.c:1162
#, c-format
msgid "Digest mutual authentication failure: nonce count mismatch (%u not %u)"
msgstr ""
-#: src/ne_auth.c:1168
+#: src/ne_auth.c:1205
#, c-format
msgid "Digest mutual authentication failure: request-digest mismatch"
msgstr ""
-#: src/ne_auth.c:1299
+#: src/ne_auth.c:1336
#, c-format
msgid "ignored %s challenge"
msgstr ""
-#: src/ne_auth.c:1378
+#: src/ne_auth.c:1415
#, fuzzy
msgid "could not parse challenge"
msgstr "Klarte ikkje tolka storleik på oppdelt svar"
msgid "Could not initialize zlib"
msgstr "Klarte ikkje opna fil: "
-#: src/ne_gnutls.c:172
+#: src/ne_gnutls.c:176
#, c-format
msgid "[unprintable:#%lu]"
msgstr ""
-#: src/ne_gnutls.c:201
+#: src/ne_gnutls.c:205
msgid "[unprintable]"
msgstr ""
-#: src/ne_gnutls.c:817
+#: src/ne_gnutls.c:845
msgid "signed using insecure algorithm"
msgstr ""
-#: src/ne_gnutls.c:820
+#: src/ne_gnutls.c:848
#, c-format
msgid "unrecognized errors (%u)"
msgstr ""
-#: src/ne_gnutls.c:865 src/ne_openssl.c:468
+#: src/ne_gnutls.c:893 src/ne_openssl.c:470
#, c-format
msgid "Server certificate was missing commonName attribute in subject name"
msgstr ""
-#: src/ne_gnutls.c:879
+#: src/ne_gnutls.c:907
#, fuzzy, c-format
msgid "Could not verify server certificate: %s"
msgstr "Klarte ikkje skriva til fil: %s"
-#: src/ne_gnutls.c:891 src/ne_openssl.c:455
+#: src/ne_gnutls.c:919 src/ne_openssl.c:457
#, c-format
msgid "Certificate verification error: %s"
msgstr ""
-#: src/ne_gnutls.c:924 src/ne_openssl.c:674
+#: src/ne_gnutls.c:952 src/ne_openssl.c:702
#, c-format
msgid "SSL handshake failed, client certificate was requested: %s"
msgstr ""
-#: src/ne_gnutls.c:929 src/ne_openssl.c:679
+#: src/ne_gnutls.c:957 src/ne_openssl.c:707
#, fuzzy, c-format
msgid "SSL handshake failed: %s"
msgstr "Klarte ikkje skriva til fil: %s"
-#: src/ne_gnutls.c:939
+#: src/ne_gnutls.c:967
#, c-format
msgid "Server did not send certificate chain"
msgstr ""
msgid "No activelock for <%s> returned in LOCK refresh response"
msgstr ""
-#: src/ne_openssl.c:699
+#: src/ne_openssl.c:727
#, c-format
msgid "SSL server did not present certificate"
msgstr ""
-#: src/ne_openssl.c:708
+#: src/ne_openssl.c:736
#, fuzzy, c-format
msgid "Server certificate changed: connection intercepted?"
msgstr "Tenarsertifikatet er utgått på dato."
msgid "Could not seek to offset %s of request body file: %s"
msgstr "Klarte ikkje skriva til fil: %s"
-#: src/ne_request.c:385
+#: src/ne_request.c:423
msgid "Could not send request body"
msgstr "Klarte ikkje senda førespurnad"
-#: src/ne_request.c:728
+#: src/ne_request.c:450
+#, fuzzy
+msgid "Could not send chunked request terminator"
+msgstr "Klarte ikkje senda førespurnad"
+
+#: src/ne_request.c:784
msgid "Could not read chunk size"
msgstr "Klarte ikkje lesa storleik på oppdelt svar"
-#: src/ne_request.c:735
+#: src/ne_request.c:791
msgid "Could not parse chunk size"
msgstr "Klarte ikkje tolka storleik på oppdelt svar"
-#: src/ne_request.c:772
+#: src/ne_request.c:828
msgid "Could not read response body"
msgstr "Klarte ikkje lesa svar"
-#: src/ne_request.c:788
+#: src/ne_request.c:844
#, fuzzy
msgid "Could not read chunk delimiter"
msgstr "Klarte ikkje lesa storleik på oppdelt svar"
-#: src/ne_request.c:791
+#: src/ne_request.c:847
msgid "Chunk delimiter was invalid"
msgstr ""
-#: src/ne_request.c:896
+#: src/ne_request.c:952
msgid "Could not read status line"
msgstr "Klarte ikkje lesa statuslinja"
-#: src/ne_request.c:918
+#: src/ne_request.c:974
#, fuzzy
msgid "Could not parse response status line"
msgstr "Klarte ikkje tolka statuslinja i svaret."
-#: src/ne_request.c:930
+#: src/ne_request.c:986
#, fuzzy
msgid "Could not read interim response headers"
msgstr "Klarte ikkje lesa svarlinje"
-#: src/ne_request.c:964
+#: src/ne_request.c:1020
msgid "Could not send request"
msgstr "Klarte ikkje senda førespurnad"
-#: src/ne_request.c:1012 src/ne_request.c:1030 src/ne_request.c:1040
+#: src/ne_request.c:1068 src/ne_request.c:1086 src/ne_request.c:1096
msgid "Error reading response headers"
msgstr "Feil ved lesing av svarhovud"
-#: src/ne_request.c:1058
+#: src/ne_request.c:1114
#, c-format
msgid "Response header too long"
msgstr "For langt svarhovud"
-#: src/ne_request.c:1140
+#: src/ne_request.c:1196
#, fuzzy
msgid "Response exceeded maximum number of header fields"
msgstr "Svaret inneheld for mange header-felt."
-#: src/ne_request.c:1155
+#: src/ne_request.c:1211
#, fuzzy, c-format
msgid "Could not resolve hostname `%s': %s"
msgstr "%s: Feil: Fann ikkje adressa til nettverksvert (%s).\n"
-#: src/ne_request.c:1286
+#: src/ne_request.c:1342
msgid "Unknown transfer-coding in response"
msgstr ""
-#: src/ne_request.c:1299
+#: src/ne_request.c:1355
msgid "Invalid Content-Length in response"
msgstr ""
-#: src/ne_request.c:1372
+#: src/ne_request.c:1428
#, c-format
msgid "Could not write to file: %s"
msgstr "Klarte ikkje skriva til fil: %s"
-#: src/ne_request.c:1445
+#: src/ne_request.c:1501
#, fuzzy, c-format
msgid "Could not create SSL connection through proxy server: %s"
msgstr "Klarte ikkje oppretta SSL-tilkopling til mellomtenar"
-#: src/ne_request.c:1484
+#: src/ne_request.c:1540
#, fuzzy, c-format
msgid "Could not create socket"
msgstr "Klarte ikkje forhandla SSL-økt"
-#: src/ne_request.c:1518
+#: src/ne_request.c:1574
msgid "Could not connect to server"
msgstr "Klarte ikkje kopla til tenaren."
-#: src/ne_request.c:1520
+#: src/ne_request.c:1576
msgid "Could not connect to proxy server"
msgstr "Klarte ikkje kopla til mellomtenar"
-#: src/ne_request.c:1563
+#: src/ne_request.c:1619
#, c-format
msgid "Could not find IPv4 address of hostname %s for SOCKS v4 proxy"
msgstr ""
-#: src/ne_request.c:1621
+#: src/ne_request.c:1677
#, fuzzy, c-format
msgid "Could not establish connection from SOCKS proxy (%s:%u): %s"
msgstr "Klarte ikkje oppretta SSL-tilkopling til mellomtenar"
-#: src/ne_session.c:530 src/ne_session.c:541
+#: src/ne_session.c:538 src/ne_session.c:549
#, fuzzy
msgid "[invalid date]"
msgstr "[ugyldig dato]"
-#: src/ne_session.c:554
+#: src/ne_session.c:562
#, fuzzy
msgid "certificate is not yet valid"
msgstr "Sertifikatet er gyldig"
-#: src/ne_session.c:555
+#: src/ne_session.c:563
#, fuzzy
msgid "certificate has expired"
msgstr "Tenarsertifikatet er utgått på dato."
-#: src/ne_session.c:556
+#: src/ne_session.c:564
#, fuzzy
msgid "certificate issued for a different hostname"
msgstr "Sertifikatet er utferda av:"
-#: src/ne_session.c:557
+#: src/ne_session.c:565
msgid "issuer is not trusted"
msgstr ""
-#: src/ne_session.c:558
+#: src/ne_session.c:566
#, fuzzy
msgid "bad certificate chain"
msgstr "Tenarsertifikatet er utgått på dato."
-#: src/ne_session.c:559
+#: src/ne_session.c:567
#, fuzzy
msgid "certificate has been revoked"
msgstr "Tenarsertifikatet er utgått på dato."
-#: src/ne_session.c:564
+#: src/ne_session.c:572
#, fuzzy
msgid "Server certificate verification failed: "
msgstr "Tenarsertifikatet er utgått på dato."
-#: src/ne_socket.c:516 src/ne_socket.c:612 src/ne_socket.c:716
+#: src/ne_socket.c:522 src/ne_socket.c:618 src/ne_socket.c:722
#, fuzzy
msgid "Connection closed"
msgstr "Tilkoplinga vart lukka av tenaren"
-#: src/ne_socket.c:622 src/ne_socket.c:728
+#: src/ne_socket.c:628 src/ne_socket.c:736
#, fuzzy
msgid "Secure connection truncated"
msgstr "Sambandet vart tidsavbrote."
-#: src/ne_socket.c:634 src/ne_socket.c:740
+#: src/ne_socket.c:640 src/ne_socket.c:748
#, fuzzy, c-format
msgid "SSL error: %s"
msgstr "%s: Feil: %s\n"
-#: src/ne_socket.c:637
+#: src/ne_socket.c:643
#, c-format
msgid "SSL error code %d/%d/%lu"
msgstr ""
-#: src/ne_socket.c:721
+#: src/ne_socket.c:727
#, fuzzy, c-format
msgid "SSL alert received: %s"
msgstr "%s: Feil: %s\n"
-#: src/ne_socket.c:736
+#: src/ne_socket.c:744
msgid "SSL socket read failed"
msgstr ""
-#: src/ne_socket.c:867
+#: src/ne_socket.c:875
msgid "Line too long"
msgstr "For lang linje"
-#: src/ne_socket.c:1012 src/ne_socket.c:1018
+#: src/ne_socket.c:1036 src/ne_socket.c:1042
msgid "Host not found"
msgstr "Fann ikkje vert"
-#: src/ne_socket.c:1221
+#: src/ne_socket.c:1249
#, fuzzy
msgid "Connection timed out"
msgstr "%s: sambandet vart tidsavbrote."
-#: src/ne_socket.c:1412
+#: src/ne_socket.c:1442
msgid "Socket descriptor number exceeds FD_SETSIZE"
msgstr ""
-#: src/ne_socket.c:1474
+#: src/ne_socket.c:1504
msgid "Socket family not supported"
msgstr ""
-#: src/ne_socket.c:1701
+#: src/ne_socket.c:1735
#, fuzzy
msgid "Client certificate verification failed"
msgstr "Tenarsertifikatet er utgått på dato."
-#: src/ne_socket.c:1717
+#: src/ne_socket.c:1751
#, fuzzy
msgid "SSL disabled due to lack of entropy"
msgstr "SSL avslått grunna mangel på entropi"
-#: src/ne_socket.c:1724
-#, fuzzy
-msgid "SSL disabled due to library version mismatch"
-msgstr "SSL avslått grunna mangel på entropi"
-
-#: src/ne_socket.c:1730
+#: src/ne_socket.c:1757
#, fuzzy
msgid "Could not create SSL structure"
msgstr "Klarte ikkje forhandla SSL-økt"
msgstr "Klarte ikkje lesa «LIST»-svar."
#, fuzzy
+#~ msgid "SSL disabled due to library version mismatch"
+#~ msgstr "SSL avslått grunna mangel på entropi"
+
+#, fuzzy
#~ msgid "%s: %s"
#~ msgstr "%s: %s\n"
#
msgid ""
msgstr ""
-"Project-Id-Version: Neon 0.29.0\n"
+"Project-Id-Version: Neon 0.30.0\n"
"Report-Msgid-Bugs-To: neon@lists.manyfish.co.uk\n"
-"POT-Creation-Date: 2010-10-01 13:30+0100\n"
+"POT-Creation-Date: 2013-07-31 16:46+0100\n"
"PO-Revision-Date: 2009-09-04 02:00+0200\n"
"Last-Translator: Arfrever Frehtes Taifersar Arahesis <Arfrever.FTA@gmail."
"com>\n"
"Language-Team: Polish Neon Translator Arfrever Frehtes Taifersar Arahesis "
"<Arfrever.FTA@gmail.com>\n"
+"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Niewłaściwa linia statusu HTTP w elemencie statusu w linii %d odpowiedzi:\n"
"Linia statusu była: %s"
-#: src/ne_auth.c:134
+#: src/ne_auth.c:139
#, c-format
msgid "Could not authenticate to server: %s"
msgstr "Nie można autentykować się do serwera: %s"
-#: src/ne_auth.c:139
+#: src/ne_auth.c:144
#, c-format
msgid "Could not authenticate to proxy server: %s"
msgstr "Nie można autentykować się do serwera proxy: %s"
-#: src/ne_auth.c:374
+#: src/ne_auth.c:386
#, c-format
msgid "rejected %s challenge"
msgstr "odrzucone wezwanie %s"
-#: src/ne_auth.c:390
+#: src/ne_auth.c:402
msgid "missing realm in Basic challenge"
msgstr "brakująca domena w wezwaniu Basic"
-#: src/ne_auth.c:485
+#: src/ne_auth.c:497
msgid "invalid Negotiate token"
msgstr "niewłaściwy żeton Negotiate"
-#: src/ne_auth.c:508
+#: src/ne_auth.c:520
msgid "GSSAPI authentication error: "
msgstr "Błąd autentykacji GSSAPI: "
-#: src/ne_auth.c:521
+#: src/ne_auth.c:533
#, c-format
msgid "GSSAPI failure (code %u)"
msgstr "Porażka GSSAPI (kod %u)"
-#: src/ne_auth.c:556
+#: src/ne_auth.c:568
msgid "ignoring empty Negotiate continuation"
msgstr "ignorowanie pustej kontynuacji Negotiate"
-#: src/ne_auth.c:571
+#: src/ne_auth.c:583
#, c-format
msgid "Negotiate response verification failed: invalid response header token"
msgstr ""
"weryfikacja odpowiedzi Negotiate nie udała się: niewłaściwy żeton nagłówka "
"odpowiedzi"
-#: src/ne_auth.c:593
+#: src/ne_auth.c:605
#, c-format
msgid "Negotiate response verification failure: %s"
msgstr "porażka weryfikacji odpowiedzi Negotiate: %s"
-#: src/ne_auth.c:765
+#: src/ne_auth.c:669
+#, fuzzy, c-format
+msgid "SSPI response verification failed: invalid response header token"
+msgstr ""
+"weryfikacja odpowiedzi Negotiate nie udała się: niewłaściwy żeton nagłówka "
+"odpowiedzi"
+
+#: src/ne_auth.c:802
msgid "unknown algorithm in Digest challenge"
msgstr "nieznany algorytm w wezwaniu Digest"
-#: src/ne_auth.c:769
+#: src/ne_auth.c:806
msgid "incompatible algorithm in Digest challenge"
msgstr "niekompatybilny algorytm w wezwaniu Digest"
-#: src/ne_auth.c:773
+#: src/ne_auth.c:810
msgid "missing parameter in Digest challenge"
msgstr "brakujący parametr w wezwaniu Digest"
-#: src/ne_auth.c:777
+#: src/ne_auth.c:814
msgid "initial Digest challenge was stale"
msgstr "początkowe wezwanie Digest było nieaktualne"
-#: src/ne_auth.c:784
+#: src/ne_auth.c:821
msgid "stale Digest challenge with new algorithm or realm"
msgstr "nieaktualne wezwanie Digest z nowym algorytmem lub domeną"
-#: src/ne_auth.c:796
+#: src/ne_auth.c:833
msgid "could not parse domain in Digest challenge"
msgstr "nie można parsować domeny w wezwaniu Digest"
-#: src/ne_auth.c:1105
+#: src/ne_auth.c:1142
#, c-format
msgid "Digest mutual authentication failure: missing parameters"
msgstr "Porażka wzajemnego uwierzytelniania Digest: brakujące parametry"
-#: src/ne_auth.c:1110
+#: src/ne_auth.c:1147
#, c-format
msgid "Digest mutual authentication failure: client nonce mismatch"
msgstr ""
"Porażka wzajemnego uwierzytelniania Digest: niezgodność posłańca klienta"
-#: src/ne_auth.c:1120
+#: src/ne_auth.c:1157
#, c-format
msgid "Digest mutual authentication failure: could not parse nonce count"
msgstr ""
"Porażka wzajemnego uwierzytelniania Digest: nie można parsować licznika "
"posłańca"
-#: src/ne_auth.c:1125
+#: src/ne_auth.c:1162
#, c-format
msgid "Digest mutual authentication failure: nonce count mismatch (%u not %u)"
msgstr ""
-"Porażka wzajemnego uwierzytelniania Digest: niezgodność licznika posłańca (%"
-"u nie %u)"
+"Porażka wzajemnego uwierzytelniania Digest: niezgodność licznika posłańca "
+"(%u nie %u)"
-#: src/ne_auth.c:1168
+#: src/ne_auth.c:1205
#, c-format
msgid "Digest mutual authentication failure: request-digest mismatch"
msgstr ""
"Porażka wzajemnego uwierzytelniania Digest: niezgodność request-digest "
"mismatch"
-#: src/ne_auth.c:1299
+#: src/ne_auth.c:1336
#, c-format
msgid "ignored %s challenge"
msgstr "wezwanie %s zignorowane"
-#: src/ne_auth.c:1378
+#: src/ne_auth.c:1415
msgid "could not parse challenge"
msgstr "nie można parsować wezwania"
msgid "Could not initialize zlib"
msgstr "Nie można zainicjalizować zlib"
-#: src/ne_gnutls.c:172
+#: src/ne_gnutls.c:176
#, c-format
msgid "[unprintable:#%lu]"
msgstr "[niedrukowalne:#%lu]"
-#: src/ne_gnutls.c:201
+#: src/ne_gnutls.c:205
msgid "[unprintable]"
msgstr "[niedrukowalne]"
-#: src/ne_gnutls.c:817
+#: src/ne_gnutls.c:845
msgid "signed using insecure algorithm"
msgstr "podpisane przy użyciu niebezpiecznego algorytmu"
-#: src/ne_gnutls.c:820
+#: src/ne_gnutls.c:848
#, c-format
msgid "unrecognized errors (%u)"
msgstr "nierozpoznane błędy (%u)"
-#: src/ne_gnutls.c:865 src/ne_openssl.c:468
+#: src/ne_gnutls.c:893 src/ne_openssl.c:470
#, c-format
msgid "Server certificate was missing commonName attribute in subject name"
msgstr "Certyfikat serwera nie posiada atrybutu commonName w nazwie tematu"
-#: src/ne_gnutls.c:879
+#: src/ne_gnutls.c:907
#, c-format
msgid "Could not verify server certificate: %s"
msgstr "Nie można zweryfikować certyfikatu serwera: %s"
-#: src/ne_gnutls.c:891 src/ne_openssl.c:455
+#: src/ne_gnutls.c:919 src/ne_openssl.c:457
#, c-format
msgid "Certificate verification error: %s"
msgstr "Błąd weryfikacji certyfikatu: %s"
-#: src/ne_gnutls.c:924 src/ne_openssl.c:674
+#: src/ne_gnutls.c:952 src/ne_openssl.c:702
#, c-format
msgid "SSL handshake failed, client certificate was requested: %s"
msgstr "Uzgodnienie SSL nie udało się, certyfikat klienta został zażądany: %s"
-#: src/ne_gnutls.c:929 src/ne_openssl.c:679
+#: src/ne_gnutls.c:957 src/ne_openssl.c:707
#, c-format
msgid "SSL handshake failed: %s"
msgstr "Uzgodnienie SSL nie udało się: %s"
-#: src/ne_gnutls.c:939
+#: src/ne_gnutls.c:967
#, c-format
msgid "Server did not send certificate chain"
msgstr "Serwer nie wysłał łańcucha certyfikatu"
msgstr ""
"Nie zwrócono żadnej aktywnej blokady dla <%s> w odpowiedzi LOCK refresh"
-#: src/ne_openssl.c:699
+#: src/ne_openssl.c:727
#, c-format
msgid "SSL server did not present certificate"
msgstr "Serwer SSL nie przedstawił certyfikatu"
-#: src/ne_openssl.c:708
+#: src/ne_openssl.c:736
#, c-format
msgid "Server certificate changed: connection intercepted?"
msgstr "Certyfikat serwera zmienił się: połączenie przechwycone?"
msgid "Could not seek to offset %s of request body file: %s"
msgstr "Nie można szukać przesunięcia %s pliku ciała żądania: %s"
-#: src/ne_request.c:385
+#: src/ne_request.c:423
msgid "Could not send request body"
msgstr "Nie można wysłać ciała żądania"
-#: src/ne_request.c:728
+#: src/ne_request.c:450
+#, fuzzy
+msgid "Could not send chunked request terminator"
+msgstr "Nie można wysłać żądania połączenia"
+
+#: src/ne_request.c:784
msgid "Could not read chunk size"
msgstr "Nie można odczytać rozmiaru kawałka"
-#: src/ne_request.c:735
+#: src/ne_request.c:791
msgid "Could not parse chunk size"
msgstr "Nie można parsować rozmiaru kawałka"
-#: src/ne_request.c:772
+#: src/ne_request.c:828
msgid "Could not read response body"
msgstr "Nie można odczytać ciała odpowiedzi"
-#: src/ne_request.c:788
+#: src/ne_request.c:844
msgid "Could not read chunk delimiter"
msgstr "Nie można odczytać ogranicznika kawałka"
-#: src/ne_request.c:791
+#: src/ne_request.c:847
msgid "Chunk delimiter was invalid"
msgstr "Ogranicznik kawałka był nieprawidłowy"
-#: src/ne_request.c:896
+#: src/ne_request.c:952
msgid "Could not read status line"
msgstr "Nie można odczytać linii statusu"
-#: src/ne_request.c:918
+#: src/ne_request.c:974
msgid "Could not parse response status line"
msgstr "Nie można parsować linii statusu odpowiedzi"
-#: src/ne_request.c:930
+#: src/ne_request.c:986
msgid "Could not read interim response headers"
msgstr "Nie można odczytać nagłówków tymczasowej odpowiedzi"
-#: src/ne_request.c:964
+#: src/ne_request.c:1020
msgid "Could not send request"
msgstr "Nie można wysłać żądania"
-#: src/ne_request.c:1012 src/ne_request.c:1030 src/ne_request.c:1040
+#: src/ne_request.c:1068 src/ne_request.c:1086 src/ne_request.c:1096
msgid "Error reading response headers"
msgstr "Błąd podczas odczytywania nagłówków odpowiedzi"
-#: src/ne_request.c:1058
+#: src/ne_request.c:1114
#, c-format
msgid "Response header too long"
msgstr "Nagłówek odpowiedzi zbyt długi"
-#: src/ne_request.c:1140
+#: src/ne_request.c:1196
msgid "Response exceeded maximum number of header fields"
msgstr "Odpowiedź przekroczyła maksymalną liczbę pól nagłówka"
-#: src/ne_request.c:1155
+#: src/ne_request.c:1211
#, c-format
msgid "Could not resolve hostname `%s': %s"
msgstr "Nie można rozwiązać nazwy hosta `%s': %s"
-#: src/ne_request.c:1286
+#: src/ne_request.c:1342
msgid "Unknown transfer-coding in response"
msgstr "Nieznane transfer-coding w odpowiedzi"
-#: src/ne_request.c:1299
+#: src/ne_request.c:1355
msgid "Invalid Content-Length in response"
msgstr "Nieprawidłowe Content-Length w odpowiedzi"
-#: src/ne_request.c:1372
+#: src/ne_request.c:1428
#, c-format
msgid "Could not write to file: %s"
msgstr "Nie można pisać do pliku: %s"
-#: src/ne_request.c:1445
+#: src/ne_request.c:1501
#, c-format
msgid "Could not create SSL connection through proxy server: %s"
msgstr "Nie można utworzyć połączenia SSL przez serwer proxy: %s"
-#: src/ne_request.c:1484
+#: src/ne_request.c:1540
#, c-format
msgid "Could not create socket"
msgstr "Nie można utworzyć gniazda"
-#: src/ne_request.c:1518
+#: src/ne_request.c:1574
msgid "Could not connect to server"
msgstr "Nie można połączyć się z serwerem"
-#: src/ne_request.c:1520
+#: src/ne_request.c:1576
msgid "Could not connect to proxy server"
msgstr "Nie można połączyć się z serwerem proxy"
-#: src/ne_request.c:1563
+#: src/ne_request.c:1619
#, c-format
msgid "Could not find IPv4 address of hostname %s for SOCKS v4 proxy"
msgstr "Nie można znaleźć adresu IPv4 nazwy hosta %s dla proxy SOCKS v4"
-#: src/ne_request.c:1621
+#: src/ne_request.c:1677
#, c-format
msgid "Could not establish connection from SOCKS proxy (%s:%u): %s"
msgstr "Nie można nawiązać połączenia z proxy SOCKS (%s:%u): %s"
-#: src/ne_session.c:530 src/ne_session.c:541
+#: src/ne_session.c:538 src/ne_session.c:549
msgid "[invalid date]"
msgstr "[nieprawidłowa data]"
-#: src/ne_session.c:554
+#: src/ne_session.c:562
msgid "certificate is not yet valid"
msgstr "certyfikat nie jest jeszcze poprawny"
-#: src/ne_session.c:555
+#: src/ne_session.c:563
msgid "certificate has expired"
msgstr "certyfikat wygasł"
-#: src/ne_session.c:556
+#: src/ne_session.c:564
msgid "certificate issued for a different hostname"
msgstr "certyfikat wydany dla innej nazwy hosta"
-#: src/ne_session.c:557
+#: src/ne_session.c:565
msgid "issuer is not trusted"
msgstr "wydawca nie jest zaufany"
-#: src/ne_session.c:558
+#: src/ne_session.c:566
msgid "bad certificate chain"
msgstr "zły łańcuch certyfikatu"
-#: src/ne_session.c:559
+#: src/ne_session.c:567
msgid "certificate has been revoked"
msgstr "certyfikat został unieważniony"
-#: src/ne_session.c:564
+#: src/ne_session.c:572
msgid "Server certificate verification failed: "
msgstr "Weryfikacja certyfikatu serwera nie powiodła się: "
-#: src/ne_socket.c:516 src/ne_socket.c:612 src/ne_socket.c:716
+#: src/ne_socket.c:522 src/ne_socket.c:618 src/ne_socket.c:722
msgid "Connection closed"
msgstr "Połączenie zamknięte"
-#: src/ne_socket.c:622 src/ne_socket.c:728
+#: src/ne_socket.c:628 src/ne_socket.c:736
msgid "Secure connection truncated"
msgstr "Bezpieczne połączenie obcięte"
-#: src/ne_socket.c:634 src/ne_socket.c:740
+#: src/ne_socket.c:640 src/ne_socket.c:748
#, c-format
msgid "SSL error: %s"
msgstr "Błąd SSL: %s"
-#: src/ne_socket.c:637
+#: src/ne_socket.c:643
#, c-format
msgid "SSL error code %d/%d/%lu"
msgstr "Kod błędu SSL %d/%d/%lu"
-#: src/ne_socket.c:721
+#: src/ne_socket.c:727
#, c-format
msgid "SSL alert received: %s"
msgstr "Alarm SSL otrzymany: %s"
-#: src/ne_socket.c:736
+#: src/ne_socket.c:744
msgid "SSL socket read failed"
msgstr "Odczytywanie gniazda SSL nie powiodło się"
-#: src/ne_socket.c:867
+#: src/ne_socket.c:875
msgid "Line too long"
msgstr "Linia zbyt długa"
-#: src/ne_socket.c:1012 src/ne_socket.c:1018
+#: src/ne_socket.c:1036 src/ne_socket.c:1042
msgid "Host not found"
msgstr "Host nieznaleziony"
-#: src/ne_socket.c:1221
+#: src/ne_socket.c:1249
msgid "Connection timed out"
msgstr "Czas połączenia się skończył"
-#: src/ne_socket.c:1412
+#: src/ne_socket.c:1442
msgid "Socket descriptor number exceeds FD_SETSIZE"
msgstr "Numer deskryptoru gniazda przekracza FD_SETSIZE"
-#: src/ne_socket.c:1474
+#: src/ne_socket.c:1504
msgid "Socket family not supported"
msgstr "Rodzina gniazda niewspierana"
-#: src/ne_socket.c:1701
+#: src/ne_socket.c:1735
msgid "Client certificate verification failed"
msgstr "Weryfikacja certyfikatu klienta nie powiodła się"
-#: src/ne_socket.c:1717
+#: src/ne_socket.c:1751
msgid "SSL disabled due to lack of entropy"
msgstr "SSL wyłączone z powodu braku entropii"
-#: src/ne_socket.c:1724
-msgid "SSL disabled due to library version mismatch"
-msgstr "SSL wyłączone z powodu niezgodności wersji biblioteki"
-
-#: src/ne_socket.c:1730
+#: src/ne_socket.c:1757
msgid "Could not create SSL structure"
msgstr "Nie można utworzyć struktury SSL"
#, c-format
msgid "Could not parse response: %s"
msgstr "Nie można parsować odpowiedzi: %s"
+
+#~ msgid "SSL disabled due to library version mismatch"
+#~ msgstr "SSL wyłączone z powodu niezgodności wersji biblioteki"
msgstr ""
"Project-Id-Version: sitecopy 0.11.5\n"
"Report-Msgid-Bugs-To: neon@lists.manyfish.co.uk\n"
-"POT-Creation-Date: 2010-10-01 13:30+0100\n"
+"POT-Creation-Date: 2013-07-31 16:46+0100\n"
"PO-Revision-Date: 2002-11-11 14:28+0000\n"
"Last-Translator: Michael Sobolev <neon@webdav.org>\n"
"Language-Team: ru\n"
+"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=koi8-r\n"
"Content-Transfer-Encoding: 8bit\n"
"Status line was: %s"
msgstr ""
-#: src/ne_auth.c:134
+#: src/ne_auth.c:139
#, fuzzy, c-format
msgid "Could not authenticate to server: %s"
msgstr "%s: ïÛÉÂËÁ: îÅ ÕÄÁÌÏÓØ ÏÔËÒÙÔØ ËÏÎÆÉÇÕÒÁÃÉÏÎÎÙÊ ÆÁÊÌ: %s\n"
-#: src/ne_auth.c:139
+#: src/ne_auth.c:144
#, fuzzy, c-format
msgid "Could not authenticate to proxy server: %s"
msgstr "%s: ïÛÉÂËÁ: îÅ ÕÄÁÌÏÓØ ÏÔËÒÙÔØ ËÏÎÆÉÇÕÒÁÃÉÏÎÎÙÊ ÆÁÊÌ: %s\n"
-#: src/ne_auth.c:374
+#: src/ne_auth.c:386
#, c-format
msgid "rejected %s challenge"
msgstr ""
-#: src/ne_auth.c:390
+#: src/ne_auth.c:402
msgid "missing realm in Basic challenge"
msgstr ""
-#: src/ne_auth.c:485
+#: src/ne_auth.c:497
msgid "invalid Negotiate token"
msgstr ""
-#: src/ne_auth.c:508
+#: src/ne_auth.c:520
msgid "GSSAPI authentication error: "
msgstr ""
-#: src/ne_auth.c:521
+#: src/ne_auth.c:533
#, c-format
msgid "GSSAPI failure (code %u)"
msgstr ""
-#: src/ne_auth.c:556
+#: src/ne_auth.c:568
msgid "ignoring empty Negotiate continuation"
msgstr ""
-#: src/ne_auth.c:571
+#: src/ne_auth.c:583
#, c-format
msgid "Negotiate response verification failed: invalid response header token"
msgstr ""
-#: src/ne_auth.c:593
+#: src/ne_auth.c:605
#, c-format
msgid "Negotiate response verification failure: %s"
msgstr ""
-#: src/ne_auth.c:765
+#: src/ne_auth.c:669
+#, c-format
+msgid "SSPI response verification failed: invalid response header token"
+msgstr ""
+
+#: src/ne_auth.c:802
msgid "unknown algorithm in Digest challenge"
msgstr ""
-#: src/ne_auth.c:769
+#: src/ne_auth.c:806
msgid "incompatible algorithm in Digest challenge"
msgstr ""
-#: src/ne_auth.c:773
+#: src/ne_auth.c:810
msgid "missing parameter in Digest challenge"
msgstr ""
-#: src/ne_auth.c:777
+#: src/ne_auth.c:814
msgid "initial Digest challenge was stale"
msgstr ""
-#: src/ne_auth.c:784
+#: src/ne_auth.c:821
msgid "stale Digest challenge with new algorithm or realm"
msgstr ""
-#: src/ne_auth.c:796
+#: src/ne_auth.c:833
#, fuzzy
msgid "could not parse domain in Digest challenge"
msgstr "%s: ïÛÉÂËÁ: îÅ ÕÄÁÌÏÓØ ÏÔËÒÙÔØ ËÏÎÆÉÇÕÒÁÃÉÏÎÎÙÊ ÆÁÊÌ: %s\n"
-#: src/ne_auth.c:1105
+#: src/ne_auth.c:1142
#, c-format
msgid "Digest mutual authentication failure: missing parameters"
msgstr ""
-#: src/ne_auth.c:1110
+#: src/ne_auth.c:1147
#, c-format
msgid "Digest mutual authentication failure: client nonce mismatch"
msgstr ""
-#: src/ne_auth.c:1120
+#: src/ne_auth.c:1157
#, c-format
msgid "Digest mutual authentication failure: could not parse nonce count"
msgstr ""
-#: src/ne_auth.c:1125
+#: src/ne_auth.c:1162
#, c-format
msgid "Digest mutual authentication failure: nonce count mismatch (%u not %u)"
msgstr ""
-#: src/ne_auth.c:1168
+#: src/ne_auth.c:1205
#, c-format
msgid "Digest mutual authentication failure: request-digest mismatch"
msgstr ""
-#: src/ne_auth.c:1299
+#: src/ne_auth.c:1336
#, c-format
msgid "ignored %s challenge"
msgstr ""
-#: src/ne_auth.c:1378
+#: src/ne_auth.c:1415
#, fuzzy
msgid "could not parse challenge"
msgstr "%s: ïÛÉÂËÁ: îÅ ÕÄÁÌÏÓØ ÏÔËÒÙÔØ ËÏÎÆÉÇÕÒÁÃÉÏÎÎÙÊ ÆÁÊÌ: %s\n"
msgid "Could not initialize zlib"
msgstr "%s: ïÛÉÂËÁ: îÅ ÕÄÁÌÏÓØ ÏÔËÒÙÔØ ËÏÎÆÉÇÕÒÁÃÉÏÎÎÙÊ ÆÁÊÌ: %s\n"
-#: src/ne_gnutls.c:172
+#: src/ne_gnutls.c:176
#, c-format
msgid "[unprintable:#%lu]"
msgstr ""
-#: src/ne_gnutls.c:201
+#: src/ne_gnutls.c:205
msgid "[unprintable]"
msgstr ""
-#: src/ne_gnutls.c:817
+#: src/ne_gnutls.c:845
msgid "signed using insecure algorithm"
msgstr ""
-#: src/ne_gnutls.c:820
+#: src/ne_gnutls.c:848
#, c-format
msgid "unrecognized errors (%u)"
msgstr ""
-#: src/ne_gnutls.c:865 src/ne_openssl.c:468
+#: src/ne_gnutls.c:893 src/ne_openssl.c:470
#, c-format
msgid "Server certificate was missing commonName attribute in subject name"
msgstr ""
-#: src/ne_gnutls.c:879
+#: src/ne_gnutls.c:907
#, fuzzy, c-format
msgid "Could not verify server certificate: %s"
msgstr "%s: ïÛÉÂËÁ: îÅ ÕÄÁÌÏÓØ ÏÔËÒÙÔØ ËÏÎÆÉÇÕÒÁÃÉÏÎÎÙÊ ÆÁÊÌ: %s\n"
-#: src/ne_gnutls.c:891 src/ne_openssl.c:455
+#: src/ne_gnutls.c:919 src/ne_openssl.c:457
#, c-format
msgid "Certificate verification error: %s"
msgstr ""
-#: src/ne_gnutls.c:924 src/ne_openssl.c:674
+#: src/ne_gnutls.c:952 src/ne_openssl.c:702
#, c-format
msgid "SSL handshake failed, client certificate was requested: %s"
msgstr ""
-#: src/ne_gnutls.c:929 src/ne_openssl.c:679
+#: src/ne_gnutls.c:957 src/ne_openssl.c:707
#, fuzzy, c-format
msgid "SSL handshake failed: %s"
msgstr "%s: ïÛÉÂËÁ: îÅ ÕÄÁÌÏÓØ ÏÔËÒÙÔØ ËÏÎÆÉÇÕÒÁÃÉÏÎÎÙÊ ÆÁÊÌ: %s\n"
-#: src/ne_gnutls.c:939
+#: src/ne_gnutls.c:967
#, c-format
msgid "Server did not send certificate chain"
msgstr ""
msgid "No activelock for <%s> returned in LOCK refresh response"
msgstr ""
-#: src/ne_openssl.c:699
+#: src/ne_openssl.c:727
#, c-format
msgid "SSL server did not present certificate"
msgstr ""
-#: src/ne_openssl.c:708
+#: src/ne_openssl.c:736
#, c-format
msgid "Server certificate changed: connection intercepted?"
msgstr ""
msgid "Could not seek to offset %s of request body file: %s"
msgstr "%s: ïÛÉÂËÁ: îÅ ÕÄÁÌÏÓØ ÏÔËÒÙÔØ ËÏÎÆÉÇÕÒÁÃÉÏÎÎÙÊ ÆÁÊÌ: %s\n"
-#: src/ne_request.c:385
+#: src/ne_request.c:423
msgid "Could not send request body"
msgstr ""
-#: src/ne_request.c:728
+#: src/ne_request.c:450
+#, fuzzy
+msgid "Could not send chunked request terminator"
+msgstr "%s: ïÛÉÂËÁ: îÅ ÕÄÁÌÏÓØ ÏÔËÒÙÔØ ËÏÎÆÉÇÕÒÁÃÉÏÎÎÙÊ ÆÁÊÌ: %s\n"
+
+#: src/ne_request.c:784
msgid "Could not read chunk size"
msgstr ""
-#: src/ne_request.c:735
+#: src/ne_request.c:791
#, fuzzy
msgid "Could not parse chunk size"
msgstr "%s: ïÛÉÂËÁ: îÅ ÕÄÁÌÏÓØ ÏÔËÒÙÔØ ËÏÎÆÉÇÕÒÁÃÉÏÎÎÙÊ ÆÁÊÌ: %s\n"
-#: src/ne_request.c:772
+#: src/ne_request.c:828
msgid "Could not read response body"
msgstr ""
-#: src/ne_request.c:788
+#: src/ne_request.c:844
#, fuzzy
msgid "Could not read chunk delimiter"
msgstr "%s: ïÛÉÂËÁ: îÅ ÕÄÁÌÏÓØ ÏÔËÒÙÔØ ËÏÎÆÉÇÕÒÁÃÉÏÎÎÙÊ ÆÁÊÌ: %s\n"
-#: src/ne_request.c:791
+#: src/ne_request.c:847
msgid "Chunk delimiter was invalid"
msgstr ""
-#: src/ne_request.c:896
+#: src/ne_request.c:952
msgid "Could not read status line"
msgstr ""
-#: src/ne_request.c:918
+#: src/ne_request.c:974
#, fuzzy
msgid "Could not parse response status line"
msgstr "%s: ïÛÉÂËÁ: îÅ ÕÄÁÌÏÓØ ÏÔËÒÙÔØ ËÏÎÆÉÇÕÒÁÃÉÏÎÎÙÊ ÆÁÊÌ: %s\n"
-#: src/ne_request.c:930
+#: src/ne_request.c:986
#, fuzzy
msgid "Could not read interim response headers"
msgstr "%s: ïÛÉÂËÁ: îÅ ÕÄÁÌÏÓØ ÏÔËÒÙÔØ ËÏÎÆÉÇÕÒÁÃÉÏÎÎÙÊ ÆÁÊÌ: %s\n"
-#: src/ne_request.c:964
+#: src/ne_request.c:1020
msgid "Could not send request"
msgstr ""
-#: src/ne_request.c:1012 src/ne_request.c:1030 src/ne_request.c:1040
+#: src/ne_request.c:1068 src/ne_request.c:1086 src/ne_request.c:1096
msgid "Error reading response headers"
msgstr ""
-#: src/ne_request.c:1058
+#: src/ne_request.c:1114
#, c-format
msgid "Response header too long"
msgstr ""
-#: src/ne_request.c:1140
+#: src/ne_request.c:1196
msgid "Response exceeded maximum number of header fields"
msgstr ""
-#: src/ne_request.c:1155
+#: src/ne_request.c:1211
#, fuzzy, c-format
msgid "Could not resolve hostname `%s': %s"
msgstr "%s: ïÛÉÂËÁ: îÅ ÕÄÁÌÏÓØ ÏÔËÒÙÔØ ËÏÎÆÉÇÕÒÁÃÉÏÎÎÙÊ ÆÁÊÌ: %s.\n"
-#: src/ne_request.c:1286
+#: src/ne_request.c:1342
msgid "Unknown transfer-coding in response"
msgstr ""
-#: src/ne_request.c:1299
+#: src/ne_request.c:1355
msgid "Invalid Content-Length in response"
msgstr ""
-#: src/ne_request.c:1372
+#: src/ne_request.c:1428
#, fuzzy, c-format
msgid "Could not write to file: %s"
msgstr "%s: ïÛÉÂËÁ: îÅ ÕÄÁÌÏÓØ ÏÔËÒÙÔØ ËÏÎÆÉÇÕÒÁÃÉÏÎÎÙÊ ÆÁÊÌ: %s\n"
-#: src/ne_request.c:1445
+#: src/ne_request.c:1501
#, c-format
msgid "Could not create SSL connection through proxy server: %s"
msgstr ""
-#: src/ne_request.c:1484
+#: src/ne_request.c:1540
#, fuzzy, c-format
msgid "Could not create socket"
msgstr "%s: ïÛÉÂËÁ: îÅ ÕÄÁÌÏÓØ ÏÔËÒÙÔØ ËÏÎÆÉÇÕÒÁÃÉÏÎÎÙÊ ÆÁÊÌ: %s\n"
-#: src/ne_request.c:1518
+#: src/ne_request.c:1574
msgid "Could not connect to server"
msgstr ""
-#: src/ne_request.c:1520
+#: src/ne_request.c:1576
msgid "Could not connect to proxy server"
msgstr ""
-#: src/ne_request.c:1563
+#: src/ne_request.c:1619
#, c-format
msgid "Could not find IPv4 address of hostname %s for SOCKS v4 proxy"
msgstr ""
-#: src/ne_request.c:1621
+#: src/ne_request.c:1677
#, c-format
msgid "Could not establish connection from SOCKS proxy (%s:%u): %s"
msgstr ""
-#: src/ne_session.c:530 src/ne_session.c:541
+#: src/ne_session.c:538 src/ne_session.c:549
msgid "[invalid date]"
msgstr ""
-#: src/ne_session.c:554
+#: src/ne_session.c:562
msgid "certificate is not yet valid"
msgstr ""
-#: src/ne_session.c:555
+#: src/ne_session.c:563
msgid "certificate has expired"
msgstr ""
-#: src/ne_session.c:556
+#: src/ne_session.c:564
msgid "certificate issued for a different hostname"
msgstr ""
-#: src/ne_session.c:557
+#: src/ne_session.c:565
msgid "issuer is not trusted"
msgstr ""
-#: src/ne_session.c:558
+#: src/ne_session.c:566
msgid "bad certificate chain"
msgstr ""
-#: src/ne_session.c:559
+#: src/ne_session.c:567
msgid "certificate has been revoked"
msgstr ""
-#: src/ne_session.c:564
+#: src/ne_session.c:572
msgid "Server certificate verification failed: "
msgstr ""
-#: src/ne_socket.c:516 src/ne_socket.c:612 src/ne_socket.c:716
+#: src/ne_socket.c:522 src/ne_socket.c:618 src/ne_socket.c:722
msgid "Connection closed"
msgstr ""
-#: src/ne_socket.c:622 src/ne_socket.c:728
+#: src/ne_socket.c:628 src/ne_socket.c:736
msgid "Secure connection truncated"
msgstr ""
-#: src/ne_socket.c:634 src/ne_socket.c:740
+#: src/ne_socket.c:640 src/ne_socket.c:748
#, c-format
msgid "SSL error: %s"
msgstr ""
-#: src/ne_socket.c:637
+#: src/ne_socket.c:643
#, c-format
msgid "SSL error code %d/%d/%lu"
msgstr ""
-#: src/ne_socket.c:721
+#: src/ne_socket.c:727
#, c-format
msgid "SSL alert received: %s"
msgstr ""
-#: src/ne_socket.c:736
+#: src/ne_socket.c:744
msgid "SSL socket read failed"
msgstr ""
-#: src/ne_socket.c:867
+#: src/ne_socket.c:875
msgid "Line too long"
msgstr ""
-#: src/ne_socket.c:1012 src/ne_socket.c:1018
+#: src/ne_socket.c:1036 src/ne_socket.c:1042
msgid "Host not found"
msgstr ""
-#: src/ne_socket.c:1221
+#: src/ne_socket.c:1249
msgid "Connection timed out"
msgstr ""
-#: src/ne_socket.c:1412
+#: src/ne_socket.c:1442
msgid "Socket descriptor number exceeds FD_SETSIZE"
msgstr ""
-#: src/ne_socket.c:1474
+#: src/ne_socket.c:1504
msgid "Socket family not supported"
msgstr ""
-#: src/ne_socket.c:1701
+#: src/ne_socket.c:1735
msgid "Client certificate verification failed"
msgstr ""
-#: src/ne_socket.c:1717
+#: src/ne_socket.c:1751
msgid "SSL disabled due to lack of entropy"
msgstr ""
-#: src/ne_socket.c:1724
-msgid "SSL disabled due to library version mismatch"
-msgstr ""
-
-#: src/ne_socket.c:1730
+#: src/ne_socket.c:1757
msgid "Could not create SSL structure"
msgstr ""
msgstr ""
"Project-Id-Version: sitecopy-0.10.10\n"
"Report-Msgid-Bugs-To: neon@lists.manyfish.co.uk\n"
-"POT-Creation-Date: 2010-10-01 13:30+0100\n"
+"POT-Creation-Date: 2013-07-31 16:46+0100\n"
"PO-Revision-Date: 2001-01-03 HO:MI+ZONE\n"
"Last-Translator: A. Sinan Unur <sinan@unur.com>\n"
"Language-Team: tr\n"
+"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-9\n"
"Content-Transfer-Encoding: 8bit\n"
"Invalid HTTP status line in status element at line %d of response:\n"
"Status line was: %s"
-#: src/ne_auth.c:134
+#: src/ne_auth.c:139
#, fuzzy, c-format
msgid "Could not authenticate to server: %s"
msgstr "Sunucuyla baðlantý kurulamadý"
-#: src/ne_auth.c:139
+#: src/ne_auth.c:144
#, fuzzy, c-format
msgid "Could not authenticate to proxy server: %s"
msgstr "Ara sunucuyla baðlantý kurulamadý"
-#: src/ne_auth.c:374
+#: src/ne_auth.c:386
#, c-format
msgid "rejected %s challenge"
msgstr ""
-#: src/ne_auth.c:390
+#: src/ne_auth.c:402
msgid "missing realm in Basic challenge"
msgstr ""
-#: src/ne_auth.c:485
+#: src/ne_auth.c:497
msgid "invalid Negotiate token"
msgstr ""
-#: src/ne_auth.c:508
+#: src/ne_auth.c:520
msgid "GSSAPI authentication error: "
msgstr ""
-#: src/ne_auth.c:521
+#: src/ne_auth.c:533
#, c-format
msgid "GSSAPI failure (code %u)"
msgstr ""
-#: src/ne_auth.c:556
+#: src/ne_auth.c:568
msgid "ignoring empty Negotiate continuation"
msgstr ""
-#: src/ne_auth.c:571
+#: src/ne_auth.c:583
#, c-format
msgid "Negotiate response verification failed: invalid response header token"
msgstr ""
-#: src/ne_auth.c:593
+#: src/ne_auth.c:605
#, c-format
msgid "Negotiate response verification failure: %s"
msgstr ""
-#: src/ne_auth.c:765
+#: src/ne_auth.c:669
+#, c-format
+msgid "SSPI response verification failed: invalid response header token"
+msgstr ""
+
+#: src/ne_auth.c:802
msgid "unknown algorithm in Digest challenge"
msgstr ""
-#: src/ne_auth.c:769
+#: src/ne_auth.c:806
msgid "incompatible algorithm in Digest challenge"
msgstr ""
-#: src/ne_auth.c:773
+#: src/ne_auth.c:810
msgid "missing parameter in Digest challenge"
msgstr ""
-#: src/ne_auth.c:777
+#: src/ne_auth.c:814
msgid "initial Digest challenge was stale"
msgstr ""
-#: src/ne_auth.c:784
+#: src/ne_auth.c:821
msgid "stale Digest challenge with new algorithm or realm"
msgstr ""
-#: src/ne_auth.c:796
+#: src/ne_auth.c:833
#, fuzzy
msgid "could not parse domain in Digest challenge"
msgstr "Parça boyutu anlaþýlamadý"
-#: src/ne_auth.c:1105
+#: src/ne_auth.c:1142
#, c-format
msgid "Digest mutual authentication failure: missing parameters"
msgstr ""
-#: src/ne_auth.c:1110
+#: src/ne_auth.c:1147
#, c-format
msgid "Digest mutual authentication failure: client nonce mismatch"
msgstr ""
-#: src/ne_auth.c:1120
+#: src/ne_auth.c:1157
#, c-format
msgid "Digest mutual authentication failure: could not parse nonce count"
msgstr ""
-#: src/ne_auth.c:1125
+#: src/ne_auth.c:1162
#, c-format
msgid "Digest mutual authentication failure: nonce count mismatch (%u not %u)"
msgstr ""
-#: src/ne_auth.c:1168
+#: src/ne_auth.c:1205
#, c-format
msgid "Digest mutual authentication failure: request-digest mismatch"
msgstr ""
-#: src/ne_auth.c:1299
+#: src/ne_auth.c:1336
#, c-format
msgid "ignored %s challenge"
msgstr ""
-#: src/ne_auth.c:1378
+#: src/ne_auth.c:1415
#, fuzzy
msgid "could not parse challenge"
msgstr "Parça boyutu anlaþýlamadý"
msgid "Could not initialize zlib"
msgstr "Dosyaya yazým yapýlamadý: "
-#: src/ne_gnutls.c:172
+#: src/ne_gnutls.c:176
#, c-format
msgid "[unprintable:#%lu]"
msgstr ""
-#: src/ne_gnutls.c:201
+#: src/ne_gnutls.c:205
msgid "[unprintable]"
msgstr ""
-#: src/ne_gnutls.c:817
+#: src/ne_gnutls.c:845
msgid "signed using insecure algorithm"
msgstr ""
-#: src/ne_gnutls.c:820
+#: src/ne_gnutls.c:848
#, c-format
msgid "unrecognized errors (%u)"
msgstr ""
-#: src/ne_gnutls.c:865 src/ne_openssl.c:468
+#: src/ne_gnutls.c:893 src/ne_openssl.c:470
#, c-format
msgid "Server certificate was missing commonName attribute in subject name"
msgstr ""
-#: src/ne_gnutls.c:879
+#: src/ne_gnutls.c:907
#, fuzzy, c-format
msgid "Could not verify server certificate: %s"
msgstr "%s dosyasýna yazým yapýlamadý"
-#: src/ne_gnutls.c:891 src/ne_openssl.c:455
+#: src/ne_gnutls.c:919 src/ne_openssl.c:457
#, c-format
msgid "Certificate verification error: %s"
msgstr ""
-#: src/ne_gnutls.c:924 src/ne_openssl.c:674
+#: src/ne_gnutls.c:952 src/ne_openssl.c:702
#, c-format
msgid "SSL handshake failed, client certificate was requested: %s"
msgstr ""
-#: src/ne_gnutls.c:929 src/ne_openssl.c:679
+#: src/ne_gnutls.c:957 src/ne_openssl.c:707
#, fuzzy, c-format
msgid "SSL handshake failed: %s"
msgstr "%s dosyasýna yazým yapýlamadý"
-#: src/ne_gnutls.c:939
+#: src/ne_gnutls.c:967
#, c-format
msgid "Server did not send certificate chain"
msgstr ""
msgid "No activelock for <%s> returned in LOCK refresh response"
msgstr ""
-#: src/ne_openssl.c:699
+#: src/ne_openssl.c:727
#, c-format
msgid "SSL server did not present certificate"
msgstr ""
-#: src/ne_openssl.c:708
+#: src/ne_openssl.c:736
#, c-format
msgid "Server certificate changed: connection intercepted?"
msgstr ""
msgid "Could not seek to offset %s of request body file: %s"
msgstr "%s dosyasýna yazým yapýlamadý"
-#: src/ne_request.c:385
+#: src/ne_request.c:423
msgid "Could not send request body"
msgstr "Ýstek metni gönderilemedi"
-#: src/ne_request.c:728
+#: src/ne_request.c:450
+#, fuzzy
+msgid "Could not send chunked request terminator"
+msgstr "Ýstek gönderilemedi"
+
+#: src/ne_request.c:784
msgid "Could not read chunk size"
msgstr "Parça boyutu öðrenilemedi"
-#: src/ne_request.c:735
+#: src/ne_request.c:791
msgid "Could not parse chunk size"
msgstr "Parça boyutu anlaþýlamadý"
-#: src/ne_request.c:772
+#: src/ne_request.c:828
msgid "Could not read response body"
msgstr "Yanýt metni okunamadý"
-#: src/ne_request.c:788
+#: src/ne_request.c:844
#, fuzzy
msgid "Could not read chunk delimiter"
msgstr "Parça boyutu öðrenilemedi"
-#: src/ne_request.c:791
+#: src/ne_request.c:847
msgid "Chunk delimiter was invalid"
msgstr ""
-#: src/ne_request.c:896
+#: src/ne_request.c:952
msgid "Could not read status line"
msgstr "Durum satýrý okunamadý"
-#: src/ne_request.c:918
+#: src/ne_request.c:974
#, fuzzy
msgid "Could not parse response status line"
msgstr "Durum satýrý anlaþýlamadý."
-#: src/ne_request.c:930
+#: src/ne_request.c:986
#, fuzzy
msgid "Could not read interim response headers"
msgstr "Yanýt metni okunamadý"
-#: src/ne_request.c:964
+#: src/ne_request.c:1020
msgid "Could not send request"
msgstr "Ýstek gönderilemedi"
-#: src/ne_request.c:1012 src/ne_request.c:1030 src/ne_request.c:1040
+#: src/ne_request.c:1068 src/ne_request.c:1086 src/ne_request.c:1096
msgid "Error reading response headers"
msgstr "Yanýt baþlýklarý okunurken hata"
-#: src/ne_request.c:1058
+#: src/ne_request.c:1114
#, c-format
msgid "Response header too long"
msgstr "Yanýt baþlýðý çok uzun"
-#: src/ne_request.c:1140
+#: src/ne_request.c:1196
msgid "Response exceeded maximum number of header fields"
msgstr ""
-#: src/ne_request.c:1155
+#: src/ne_request.c:1211
#, fuzzy, c-format
msgid "Could not resolve hostname `%s': %s"
msgstr "%s: Hata: %s sunucusunun adresi bulunamadý.\n"
-#: src/ne_request.c:1286
+#: src/ne_request.c:1342
msgid "Unknown transfer-coding in response"
msgstr ""
-#: src/ne_request.c:1299
+#: src/ne_request.c:1355
msgid "Invalid Content-Length in response"
msgstr ""
-#: src/ne_request.c:1372
+#: src/ne_request.c:1428
#, c-format
msgid "Could not write to file: %s"
msgstr "%s dosyasýna yazým yapýlamadý"
-#: src/ne_request.c:1445
+#: src/ne_request.c:1501
#, fuzzy, c-format
msgid "Could not create SSL connection through proxy server: %s"
msgstr "Ara sunucu üzerinden SSL baðlantýsý kurulamadý"
-#: src/ne_request.c:1484
+#: src/ne_request.c:1540
#, fuzzy, c-format
msgid "Could not create socket"
msgstr "SSL baðlantýsý kurulamadý"
-#: src/ne_request.c:1518
+#: src/ne_request.c:1574
msgid "Could not connect to server"
msgstr "Sunucuyla baðlantý kurulamadý"
-#: src/ne_request.c:1520
+#: src/ne_request.c:1576
msgid "Could not connect to proxy server"
msgstr "Ara sunucuyla baðlantý kurulamadý"
-#: src/ne_request.c:1563
+#: src/ne_request.c:1619
#, c-format
msgid "Could not find IPv4 address of hostname %s for SOCKS v4 proxy"
msgstr ""
-#: src/ne_request.c:1621
+#: src/ne_request.c:1677
#, fuzzy, c-format
msgid "Could not establish connection from SOCKS proxy (%s:%u): %s"
msgstr "Ara sunucu üzerinden SSL baðlantýsý kurulamadý"
-#: src/ne_session.c:530 src/ne_session.c:541
+#: src/ne_session.c:538 src/ne_session.c:549
msgid "[invalid date]"
msgstr ""
-#: src/ne_session.c:554
+#: src/ne_session.c:562
msgid "certificate is not yet valid"
msgstr ""
-#: src/ne_session.c:555
+#: src/ne_session.c:563
msgid "certificate has expired"
msgstr ""
-#: src/ne_session.c:556
+#: src/ne_session.c:564
msgid "certificate issued for a different hostname"
msgstr ""
-#: src/ne_session.c:557
+#: src/ne_session.c:565
msgid "issuer is not trusted"
msgstr ""
-#: src/ne_session.c:558
+#: src/ne_session.c:566
msgid "bad certificate chain"
msgstr ""
-#: src/ne_session.c:559
+#: src/ne_session.c:567
msgid "certificate has been revoked"
msgstr ""
-#: src/ne_session.c:564
+#: src/ne_session.c:572
msgid "Server certificate verification failed: "
msgstr ""
-#: src/ne_socket.c:516 src/ne_socket.c:612 src/ne_socket.c:716
+#: src/ne_socket.c:522 src/ne_socket.c:618 src/ne_socket.c:722
#, fuzzy
msgid "Connection closed"
msgstr "Baðlantý sunucu tarafýndan kesildi"
-#: src/ne_socket.c:622 src/ne_socket.c:728
+#: src/ne_socket.c:628 src/ne_socket.c:736
#, fuzzy
msgid "Secure connection truncated"
msgstr "Baðlantý süre sýnýrý aþýldý."
-#: src/ne_socket.c:634 src/ne_socket.c:740
+#: src/ne_socket.c:640 src/ne_socket.c:748
#, fuzzy, c-format
msgid "SSL error: %s"
msgstr "%s: Hata: %s\n"
-#: src/ne_socket.c:637
+#: src/ne_socket.c:643
#, c-format
msgid "SSL error code %d/%d/%lu"
msgstr ""
-#: src/ne_socket.c:721
+#: src/ne_socket.c:727
#, fuzzy, c-format
msgid "SSL alert received: %s"
msgstr "%s: Hata: %s\n"
-#: src/ne_socket.c:736
+#: src/ne_socket.c:744
msgid "SSL socket read failed"
msgstr ""
-#: src/ne_socket.c:867
+#: src/ne_socket.c:875
msgid "Line too long"
msgstr "Satýr çok uzun"
-#: src/ne_socket.c:1012 src/ne_socket.c:1018
+#: src/ne_socket.c:1036 src/ne_socket.c:1042
msgid "Host not found"
msgstr "Sunucu bulunamadý"
-#: src/ne_socket.c:1221
+#: src/ne_socket.c:1249
#, fuzzy
msgid "Connection timed out"
msgstr "%s: baðlantý bekleme sýnýrý aþýldý."
-#: src/ne_socket.c:1412
+#: src/ne_socket.c:1442
msgid "Socket descriptor number exceeds FD_SETSIZE"
msgstr ""
-#: src/ne_socket.c:1474
+#: src/ne_socket.c:1504
msgid "Socket family not supported"
msgstr ""
-#: src/ne_socket.c:1701
+#: src/ne_socket.c:1735
msgid "Client certificate verification failed"
msgstr ""
-#: src/ne_socket.c:1717
+#: src/ne_socket.c:1751
msgid "SSL disabled due to lack of entropy"
msgstr ""
-#: src/ne_socket.c:1724
-msgid "SSL disabled due to library version mismatch"
-msgstr ""
-
-#: src/ne_socket.c:1730
+#: src/ne_socket.c:1757
#, fuzzy
msgid "Could not create SSL structure"
msgstr "SSL baðlantýsý kurulamadý"
msgstr ""
"Project-Id-Version: neon 0.29.x\n"
"Report-Msgid-Bugs-To: neon@lists.manyfish.co.uk\n"
-"POT-Creation-Date: 2010-10-01 13:30+0100\n"
+"POT-Creation-Date: 2013-07-31 16:46+0100\n"
"PO-Revision-Date: 2008-03-03 11:20+0800\n"
"Last-Translator: Dongsheng Song <dongsheng.song@gmail.com>\n"
"Language-Team: neon@webdav.org\n"
+"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"响应信息中 %d 行的状态元素中发现非法 HTTP 状态行:\n"
"状态行是: %s"
-#: src/ne_auth.c:134
+#: src/ne_auth.c:139
#, c-format
msgid "Could not authenticate to server: %s"
msgstr "不能认证到服务器: %s"
-#: src/ne_auth.c:139
+#: src/ne_auth.c:144
#, c-format
msgid "Could not authenticate to proxy server: %s"
msgstr "不能认证到代理服务器: %s"
-#: src/ne_auth.c:374
+#: src/ne_auth.c:386
#, c-format
msgid "rejected %s challenge"
msgstr "被拒绝的 %s 挑战"
-#: src/ne_auth.c:390
+#: src/ne_auth.c:402
msgid "missing realm in Basic challenge"
msgstr "在基本挑战中丢失了领域"
-#: src/ne_auth.c:485
+#: src/ne_auth.c:497
msgid "invalid Negotiate token"
msgstr "非法磋商令牌"
-#: src/ne_auth.c:508
+#: src/ne_auth.c:520
msgid "GSSAPI authentication error: "
msgstr "GSSAPI 认证错误: "
-#: src/ne_auth.c:521
+#: src/ne_auth.c:533
#, c-format
msgid "GSSAPI failure (code %u)"
msgstr "GSSAPI 失败(代码 %u)"
-#: src/ne_auth.c:556
+#: src/ne_auth.c:568
msgid "ignoring empty Negotiate continuation"
msgstr "忽略后续的空磋商"
-#: src/ne_auth.c:571
+#: src/ne_auth.c:583
#, c-format
msgid "Negotiate response verification failed: invalid response header token"
msgstr "校验协商响应失败:非法响应头令牌"
-#: src/ne_auth.c:593
+#: src/ne_auth.c:605
#, c-format
msgid "Negotiate response verification failure: %s"
msgstr "磋商响应校验失败: %s"
-#: src/ne_auth.c:765
+#: src/ne_auth.c:669
+#, fuzzy, c-format
+msgid "SSPI response verification failed: invalid response header token"
+msgstr "校验协商响应失败:非法响应头令牌"
+
+#: src/ne_auth.c:802
msgid "unknown algorithm in Digest challenge"
msgstr "在摘要挑战中的算法不可识别"
-#: src/ne_auth.c:769
+#: src/ne_auth.c:806
msgid "incompatible algorithm in Digest challenge"
msgstr "在摘要挑战中的算法不兼容"
-#: src/ne_auth.c:773
+#: src/ne_auth.c:810
msgid "missing parameter in Digest challenge"
msgstr "在摘要挑战中的参数丢失"
-#: src/ne_auth.c:777
+#: src/ne_auth.c:814
msgid "initial Digest challenge was stale"
msgstr "陈旧的初始化摘要挑战"
-#: src/ne_auth.c:784
+#: src/ne_auth.c:821
msgid "stale Digest challenge with new algorithm or realm"
msgstr "陈旧的摘要挑战用于新算法或新领域"
-#: src/ne_auth.c:796
+#: src/ne_auth.c:833
msgid "could not parse domain in Digest challenge"
msgstr "在摘要挑战中的不能解析域"
-#: src/ne_auth.c:1105
+#: src/ne_auth.c:1142
#, c-format
msgid "Digest mutual authentication failure: missing parameters"
msgstr "摘要互相认证失败:参数遗漏"
-#: src/ne_auth.c:1110
+#: src/ne_auth.c:1147
#, c-format
msgid "Digest mutual authentication failure: client nonce mismatch"
msgstr "摘要互相认证失败:客户现时不匹配"
-#: src/ne_auth.c:1120
+#: src/ne_auth.c:1157
#, c-format
msgid "Digest mutual authentication failure: could not parse nonce count"
msgstr "摘要互相认证失败:不能解析现时计数"
-#: src/ne_auth.c:1125
+#: src/ne_auth.c:1162
#, c-format
msgid "Digest mutual authentication failure: nonce count mismatch (%u not %u)"
msgstr "摘要互相认证失败:现时计算不匹配 (应该是 %u,不是 %u)"
-#: src/ne_auth.c:1168
+#: src/ne_auth.c:1205
#, c-format
msgid "Digest mutual authentication failure: request-digest mismatch"
msgstr "摘要互相认证失败:请求摘要不匹配"
-#: src/ne_auth.c:1299
+#: src/ne_auth.c:1336
#, c-format
msgid "ignored %s challenge"
msgstr "被忽略的 %s 挑战"
-#: src/ne_auth.c:1378
+#: src/ne_auth.c:1415
msgid "could not parse challenge"
msgstr "不能解析挑战"
msgid "Could not initialize zlib"
msgstr "初始化 zlib 失败"
-#: src/ne_gnutls.c:172
+#: src/ne_gnutls.c:176
#, c-format
msgid "[unprintable:#%lu]"
msgstr "[非打印字符:#%lu]"
-#: src/ne_gnutls.c:201
+#: src/ne_gnutls.c:205
msgid "[unprintable]"
msgstr "[非打印字符]"
-#: src/ne_gnutls.c:817
+#: src/ne_gnutls.c:845
msgid "signed using insecure algorithm"
msgstr ""
-#: src/ne_gnutls.c:820
+#: src/ne_gnutls.c:848
#, c-format
msgid "unrecognized errors (%u)"
msgstr ""
-#: src/ne_gnutls.c:865 src/ne_openssl.c:468
+#: src/ne_gnutls.c:893 src/ne_openssl.c:470
#, c-format
msgid "Server certificate was missing commonName attribute in subject name"
msgstr "服务器证书在主题名称遗漏了属性 commonName"
-#: src/ne_gnutls.c:879
+#: src/ne_gnutls.c:907
#, fuzzy, c-format
msgid "Could not verify server certificate: %s"
msgstr "不能写入文件:%s"
-#: src/ne_gnutls.c:891 src/ne_openssl.c:455
+#: src/ne_gnutls.c:919 src/ne_openssl.c:457
#, c-format
msgid "Certificate verification error: %s"
msgstr "证书校验失败:%s"
-#: src/ne_gnutls.c:924 src/ne_openssl.c:674
+#: src/ne_gnutls.c:952 src/ne_openssl.c:702
#, c-format
msgid "SSL handshake failed, client certificate was requested: %s"
msgstr ""
-#: src/ne_gnutls.c:929 src/ne_openssl.c:679
+#: src/ne_gnutls.c:957 src/ne_openssl.c:707
#, fuzzy, c-format
msgid "SSL handshake failed: %s"
msgstr "SSL 协商失败:%s"
-#: src/ne_gnutls.c:939
+#: src/ne_gnutls.c:967
#, c-format
msgid "Server did not send certificate chain"
msgstr "服务器不能发送证书链"
msgid "No activelock for <%s> returned in LOCK refresh response"
msgstr "刷新锁定 %s 的响应没有返回主动锁"
-#: src/ne_openssl.c:699
+#: src/ne_openssl.c:727
#, c-format
msgid "SSL server did not present certificate"
msgstr "SSL 服务器不能呈现证书"
-#: src/ne_openssl.c:708
+#: src/ne_openssl.c:736
#, c-format
msgid "Server certificate changed: connection intercepted?"
msgstr "服务器证书改变:是否被拦截攻击?"
msgid "Could not seek to offset %s of request body file: %s"
msgstr "在请求主体文件不能定位到偏移 %s: %s"
-#: src/ne_request.c:385
+#: src/ne_request.c:423
msgid "Could not send request body"
msgstr "不能发送请求主体"
-#: src/ne_request.c:728
+#: src/ne_request.c:450
+#, fuzzy
+msgid "Could not send chunked request terminator"
+msgstr "不能发送请求"
+
+#: src/ne_request.c:784
msgid "Could not read chunk size"
msgstr "不能读块大小"
-#: src/ne_request.c:735
+#: src/ne_request.c:791
msgid "Could not parse chunk size"
msgstr "不能解析块大小"
-#: src/ne_request.c:772
+#: src/ne_request.c:828
msgid "Could not read response body"
msgstr "不能读取响应主体"
-#: src/ne_request.c:788
+#: src/ne_request.c:844
msgid "Could not read chunk delimiter"
msgstr "不能读块分割符"
-#: src/ne_request.c:791
+#: src/ne_request.c:847
msgid "Chunk delimiter was invalid"
msgstr "非法的分割符"
-#: src/ne_request.c:896
+#: src/ne_request.c:952
msgid "Could not read status line"
msgstr "不能读状态行"
-#: src/ne_request.c:918
+#: src/ne_request.c:974
msgid "Could not parse response status line"
msgstr "不能解析响应状态行"
-#: src/ne_request.c:930
+#: src/ne_request.c:986
msgid "Could not read interim response headers"
msgstr "不能读临时响应头"
-#: src/ne_request.c:964
+#: src/ne_request.c:1020
msgid "Could not send request"
msgstr "不能发送请求"
-#: src/ne_request.c:1012 src/ne_request.c:1030 src/ne_request.c:1040
+#: src/ne_request.c:1068 src/ne_request.c:1086 src/ne_request.c:1096
msgid "Error reading response headers"
msgstr "读取响应头出错"
-#: src/ne_request.c:1058
+#: src/ne_request.c:1114
#, c-format
msgid "Response header too long"
msgstr "响应头太长"
-#: src/ne_request.c:1140
+#: src/ne_request.c:1196
msgid "Response exceeded maximum number of header fields"
msgstr "响应头的域数量超出了最大数量"
-#: src/ne_request.c:1155
+#: src/ne_request.c:1211
#, c-format
msgid "Could not resolve hostname `%s': %s"
msgstr "不能解析主机名称 “%s”: %s"
-#: src/ne_request.c:1286
+#: src/ne_request.c:1342
msgid "Unknown transfer-coding in response"
msgstr "响应中的传输代码未知"
-#: src/ne_request.c:1299
+#: src/ne_request.c:1355
msgid "Invalid Content-Length in response"
msgstr "非法的 Content-Length 响应域"
-#: src/ne_request.c:1372
+#: src/ne_request.c:1428
#, c-format
msgid "Could not write to file: %s"
msgstr "不能写入文件:%s"
-#: src/ne_request.c:1445
+#: src/ne_request.c:1501
#, c-format
msgid "Could not create SSL connection through proxy server: %s"
msgstr "不能通过代理服务器 “%s” 创建 SSL 连接"
-#: src/ne_request.c:1484
+#: src/ne_request.c:1540
#, c-format
msgid "Could not create socket"
msgstr "不能创建套接字"
-#: src/ne_request.c:1518
+#: src/ne_request.c:1574
msgid "Could not connect to server"
msgstr "不能连接到服务器"
-#: src/ne_request.c:1520
+#: src/ne_request.c:1576
msgid "Could not connect to proxy server"
msgstr "不能连接到代理服务器"
-#: src/ne_request.c:1563
+#: src/ne_request.c:1619
#, c-format
msgid "Could not find IPv4 address of hostname %s for SOCKS v4 proxy"
msgstr ""
-#: src/ne_request.c:1621
+#: src/ne_request.c:1677
#, fuzzy, c-format
msgid "Could not establish connection from SOCKS proxy (%s:%u): %s"
msgstr "不能通过代理服务器 “%s” 创建 SSL 连接"
-#: src/ne_session.c:530 src/ne_session.c:541
+#: src/ne_session.c:538 src/ne_session.c:549
msgid "[invalid date]"
msgstr "[非法日期]"
-#: src/ne_session.c:554
+#: src/ne_session.c:562
msgid "certificate is not yet valid"
msgstr "证书还未生效"
-#: src/ne_session.c:555
+#: src/ne_session.c:563
msgid "certificate has expired"
msgstr "证书已经过时"
-#: src/ne_session.c:556
+#: src/ne_session.c:564
msgid "certificate issued for a different hostname"
msgstr "此证书是为不同的主机名称颁发"
-#: src/ne_session.c:557
+#: src/ne_session.c:565
msgid "issuer is not trusted"
msgstr "证书发行者不被信任"
-#: src/ne_session.c:558
+#: src/ne_session.c:566
#, fuzzy
msgid "bad certificate chain"
msgstr "证书已经过时"
-#: src/ne_session.c:559
+#: src/ne_session.c:567
#, fuzzy
msgid "certificate has been revoked"
msgstr "证书已经过时"
-#: src/ne_session.c:564
+#: src/ne_session.c:572
msgid "Server certificate verification failed: "
msgstr "服务器证书校验失败"
-#: src/ne_socket.c:516 src/ne_socket.c:612 src/ne_socket.c:716
+#: src/ne_socket.c:522 src/ne_socket.c:618 src/ne_socket.c:722
msgid "Connection closed"
msgstr "连接关闭"
-#: src/ne_socket.c:622 src/ne_socket.c:728
+#: src/ne_socket.c:628 src/ne_socket.c:736
msgid "Secure connection truncated"
msgstr "安全连接切断"
-#: src/ne_socket.c:634 src/ne_socket.c:740
+#: src/ne_socket.c:640 src/ne_socket.c:748
#, c-format
msgid "SSL error: %s"
msgstr "SSL 错误:%s"
-#: src/ne_socket.c:637
+#: src/ne_socket.c:643
#, c-format
msgid "SSL error code %d/%d/%lu"
msgstr "SSL 错误代码 %d/%d/%lu"
-#: src/ne_socket.c:721
+#: src/ne_socket.c:727
#, c-format
msgid "SSL alert received: %s"
msgstr "收到 SSL 警报: %s"
-#: src/ne_socket.c:736
+#: src/ne_socket.c:744
msgid "SSL socket read failed"
msgstr "SSL 套接字读取失败"
-#: src/ne_socket.c:867
+#: src/ne_socket.c:875
msgid "Line too long"
msgstr "行太长"
-#: src/ne_socket.c:1012 src/ne_socket.c:1018
+#: src/ne_socket.c:1036 src/ne_socket.c:1042
msgid "Host not found"
msgstr "没有发现主机"
-#: src/ne_socket.c:1221
+#: src/ne_socket.c:1249
msgid "Connection timed out"
msgstr "连接超时"
-#: src/ne_socket.c:1412
+#: src/ne_socket.c:1442
msgid "Socket descriptor number exceeds FD_SETSIZE"
msgstr "套接字数量超过 FD_SETSIZE"
-#: src/ne_socket.c:1474
+#: src/ne_socket.c:1504
msgid "Socket family not supported"
msgstr ""
-#: src/ne_socket.c:1701
+#: src/ne_socket.c:1735
msgid "Client certificate verification failed"
msgstr "客户证书校验失败"
-#: src/ne_socket.c:1717
+#: src/ne_socket.c:1751
msgid "SSL disabled due to lack of entropy"
msgstr "由于缺少熵,SSL 已经禁用"
-#: src/ne_socket.c:1724
-msgid "SSL disabled due to library version mismatch"
-msgstr "由于库版本不匹配,SSL 已经禁用"
-
-#: src/ne_socket.c:1730
+#: src/ne_socket.c:1757
msgid "Could not create SSL structure"
msgstr "不能创建 SSL 结构"
#, c-format
msgid "Could not parse response: %s"
msgstr "不能解析响应:%s"
+
+#~ msgid "SSL disabled due to library version mismatch"
+#~ msgstr "由于库版本不匹配,SSL 已经禁用"
ne_private.h ne_request.h ne_utils.h ne_privssl.h
#### ---CUT--- DO NOT REMOVE THIS LINE. Generated dependencies follow. ####
ne_request.@NEON_OBJEXT@: ne_request.c $(top_builddir)/config.h ne_internal.h ne_defs.h ne_alloc.h \
- ne_request.h ne_utils.h ne_string.h ne_session.h ne_ssl.h ne_uri.h \
- ne_socket.h ne_private.h
+ ne_request.h ne_utils.h ne_string.h ne_session.h ne_ssl.h ne_uri.h \
+ ne_socket.h ne_private.h
ne_session.@NEON_OBJEXT@: ne_session.c $(top_builddir)/config.h ne_session.h ne_ssl.h ne_defs.h \
- ne_uri.h ne_socket.h ne_alloc.h ne_utils.h ne_internal.h ne_string.h \
- ne_dates.h ne_private.h ne_request.h
+ ne_uri.h ne_socket.h ne_alloc.h ne_utils.h ne_internal.h ne_string.h \
+ ne_dates.h ne_private.h ne_request.h
ne_basic.@NEON_OBJEXT@: ne_basic.c $(top_builddir)/config.h ne_request.h ne_utils.h ne_defs.h \
- ne_string.h ne_alloc.h ne_session.h ne_ssl.h ne_uri.h ne_socket.h \
- ne_basic.h ne_207.h ne_xml.h ne_locks.h ne_dates.h ne_internal.h
+ ne_string.h ne_alloc.h ne_session.h ne_ssl.h ne_uri.h ne_socket.h \
+ ne_basic.h ne_207.h ne_xml.h ne_locks.h ne_dates.h ne_internal.h
ne_string.@NEON_OBJEXT@: ne_string.c $(top_builddir)/config.h ne_alloc.h ne_defs.h ne_string.h
ne_uri.@NEON_OBJEXT@: ne_uri.c $(top_builddir)/config.h ne_string.h ne_defs.h ne_alloc.h ne_uri.h
ne_dates.@NEON_OBJEXT@: ne_dates.c $(top_builddir)/config.h ne_alloc.h ne_defs.h ne_dates.h \
- ne_string.h
+ ne_string.h
ne_alloc.@NEON_OBJEXT@: ne_alloc.c $(top_builddir)/config.h ne_alloc.h ne_defs.h
ne_md5.@NEON_OBJEXT@: ne_md5.c $(top_builddir)/config.h ne_md5.h ne_defs.h ne_string.h ne_alloc.h
ne_utils.@NEON_OBJEXT@: ne_utils.c $(top_builddir)/config.h ne_utils.h ne_defs.h ne_string.h \
- ne_alloc.h ne_dates.h
+ ne_alloc.h ne_dates.h
ne_socket.@NEON_OBJEXT@: ne_socket.c $(top_builddir)/config.h ne_privssl.h ne_ssl.h ne_defs.h \
- ne_socket.h ne_internal.h ne_utils.h ne_string.h ne_alloc.h ne_sspi.h
+ ne_socket.h ne_internal.h ne_utils.h ne_string.h ne_alloc.h ne_sspi.h
ne_auth.@NEON_OBJEXT@: ne_auth.c $(top_builddir)/config.h ne_md5.h ne_defs.h ne_dates.h \
- ne_request.h ne_utils.h ne_string.h ne_alloc.h ne_session.h ne_ssl.h \
- ne_uri.h ne_socket.h ne_auth.h ne_internal.h
+ ne_request.h ne_utils.h ne_string.h ne_alloc.h ne_session.h ne_ssl.h \
+ ne_uri.h ne_socket.h ne_auth.h ne_internal.h ne_ntlm.h
ne_redirect.@NEON_OBJEXT@: ne_redirect.c $(top_builddir)/config.h ne_session.h ne_ssl.h ne_defs.h \
- ne_uri.h ne_socket.h ne_request.h ne_utils.h ne_string.h ne_alloc.h \
- ne_redirect.h ne_internal.h
+ ne_uri.h ne_socket.h ne_request.h ne_utils.h ne_string.h ne_alloc.h \
+ ne_redirect.h ne_internal.h
ne_compress.@NEON_OBJEXT@: ne_compress.c $(top_builddir)/config.h ne_request.h ne_utils.h \
- ne_defs.h ne_string.h ne_alloc.h ne_session.h ne_ssl.h ne_uri.h \
- ne_socket.h ne_compress.h ne_internal.h
+ ne_defs.h ne_string.h ne_alloc.h ne_session.h ne_ssl.h ne_uri.h \
+ ne_socket.h ne_compress.h ne_internal.h
ne_i18n.@NEON_OBJEXT@: ne_i18n.c $(top_builddir)/config.h ne_i18n.h ne_defs.h
ne_socks.@NEON_OBJEXT@: ne_socks.c $(top_builddir)/config.h ne_internal.h ne_defs.h ne_string.h \
- ne_alloc.h ne_socket.h ne_ssl.h ne_utils.h
+ ne_alloc.h ne_socket.h ne_ssl.h ne_utils.h
+ne_ntlm.@NEON_OBJEXT@: ne_ntlm.c ne_ntlm.h $(top_builddir)/config.h ne_defs.h ne_string.h \
+ ne_alloc.h
ne_207.@NEON_OBJEXT@: ne_207.c $(top_builddir)/config.h ne_alloc.h ne_defs.h ne_utils.h ne_xml.h \
- ne_207.h ne_request.h ne_string.h ne_session.h ne_ssl.h ne_uri.h \
- ne_socket.h ne_basic.h ne_internal.h
+ ne_207.h ne_request.h ne_string.h ne_session.h ne_ssl.h ne_uri.h \
+ ne_socket.h ne_basic.h ne_internal.h
ne_xml.@NEON_OBJEXT@: ne_xml.c $(top_builddir)/config.h ne_internal.h ne_defs.h ne_alloc.h \
- ne_xml.h ne_utils.h ne_string.h
+ ne_xml.h ne_utils.h ne_string.h
ne_props.@NEON_OBJEXT@: ne_props.c $(top_builddir)/config.h ne_alloc.h ne_defs.h ne_xml.h \
- ne_props.h ne_request.h ne_utils.h ne_string.h ne_session.h ne_ssl.h \
- ne_uri.h ne_socket.h ne_207.h ne_basic.h ne_locks.h ne_internal.h
+ ne_props.h ne_request.h ne_utils.h ne_string.h ne_session.h ne_ssl.h \
+ ne_uri.h ne_socket.h ne_207.h ne_basic.h ne_locks.h ne_internal.h
ne_locks.@NEON_OBJEXT@: ne_locks.c $(top_builddir)/config.h ne_alloc.h ne_defs.h ne_request.h \
- ne_utils.h ne_string.h ne_session.h ne_ssl.h ne_uri.h ne_socket.h \
- ne_xml.h ne_locks.h ne_basic.h ne_props.h ne_207.h ne_internal.h \
- ne_xmlreq.h
+ ne_utils.h ne_string.h ne_session.h ne_ssl.h ne_uri.h ne_socket.h \
+ ne_xml.h ne_locks.h ne_basic.h ne_props.h ne_207.h ne_internal.h \
+ ne_xmlreq.h
ne_xmlreq.@NEON_OBJEXT@: ne_xmlreq.c $(top_builddir)/config.h ne_internal.h ne_defs.h ne_xmlreq.h \
- ne_request.h ne_utils.h ne_string.h ne_alloc.h ne_session.h ne_ssl.h \
- ne_uri.h ne_socket.h ne_xml.h ne_basic.h
+ ne_request.h ne_utils.h ne_string.h ne_alloc.h ne_session.h ne_ssl.h \
+ ne_uri.h ne_socket.h ne_xml.h ne_basic.h
ne_oldacl.@NEON_OBJEXT@: ne_oldacl.c $(top_builddir)/config.h ne_request.h ne_utils.h ne_defs.h \
- ne_string.h ne_alloc.h ne_session.h ne_ssl.h ne_uri.h ne_socket.h \
- ne_locks.h ne_acl.h ne_xml.h
+ ne_string.h ne_alloc.h ne_session.h ne_ssl.h ne_uri.h ne_socket.h \
+ ne_locks.h ne_acl.h ne_xml.h
ne_acl3744.@NEON_OBJEXT@: ne_acl3744.c $(top_builddir)/config.h ne_request.h ne_utils.h ne_defs.h \
- ne_string.h ne_alloc.h ne_session.h ne_ssl.h ne_uri.h ne_socket.h \
- ne_locks.h ne_acl.h ne_xml.h
+ ne_string.h ne_alloc.h ne_session.h ne_ssl.h ne_uri.h ne_socket.h \
+ ne_locks.h ne_acl3744.h ne_xml.h
/*
HTTP Authentication routines
- Copyright (C) 1999-2009, Joe Orton <joe@manyfish.co.uk>
+ Copyright (C) 1999-2011, Joe Orton <joe@manyfish.co.uk>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
/* This is used for SSPI (Negotiate/NTLM) auth */
char *sspi_token;
void *sspi_context;
+ char *sspi_host;
#endif
#ifdef HAVE_NTLM
/* This is used for NTLM auth */
sess->sspi_token = NULL;
ne_sspi_destroy_context(sess->sspi_context);
sess->sspi_context = NULL;
+ if (sess->sspi_host) ne_free(sess->sspi_host);
+ sess->sspi_host = NULL;
#endif
#ifdef HAVE_NTLM
if (sess->ntlm_context) {
NE_DEBUG(NE_DBG_HTTPAUTH, "auth: SSPI challenge.\n");
if (!sess->sspi_context) {
- ne_uri uri = {0};
-
- ne_fill_server_uri(sess->sess, &uri);
-
- status = ne_sspi_create_context(&sess->sspi_context, uri.host, ntlm);
-
- ne_uri_free(&uri);
-
+ status = ne_sspi_create_context(&sess->sspi_context, sess->sspi_host, ntlm);
if (status) {
return status;
}
digest_challenge, request_digest, verify_digest_response,
0 },
#ifdef HAVE_GSSAPI
- { NE_AUTH_GSSAPI, 30, "Negotiate",
+ { NE_AUTH_GSSAPI_ONLY, 30, "Negotiate",
negotiate_challenge, request_negotiate, verify_negotiate_response,
AUTH_FLAG_OPAQUE_PARAM|AUTH_FLAG_VERIFY_NON40x|AUTH_FLAG_CONN_AUTH },
#endif
{ NE_AUTH_NTLM, 30, "NTLM",
sspi_challenge, request_sspi, NULL,
AUTH_FLAG_OPAQUE_PARAM|AUTH_FLAG_VERIFY_NON40x|AUTH_FLAG_CONN_AUTH },
- { NE_AUTH_GSSAPI, 30, "Negotiate",
+ { NE_AUTH_SSPI, 30, "Negotiate",
sspi_challenge, request_sspi, verify_sspi,
AUTH_FLAG_OPAQUE_PARAM|AUTH_FLAG_VERIFY_NON40x|AUTH_FLAG_CONN_AUTH },
#endif
}
#ifdef HAVE_SSPI
- /* Clear the SSPI context after successfull authentication. */
- if ((status->klass == 2 || status->klass == 3) && sess->sspi_context) {
+ /* Clear the SSPI context after successful authentication. */
+ if (status->code != sess->spec->status_code && sess->sspi_context) {
ne_sspi_clear_context(sess->sspi_context);
}
#endif
/* Map NEGOTIATE to NTLM | GSSAPI. */
protomask |= NE_AUTH_GSSAPI | NE_AUTH_NTLM;
}
+
+ if ((protomask & NE_AUTH_GSSAPI) == NE_AUTH_GSSAPI) {
+ /* Map GSSAPI to GSSAPI_ONLY | SSPI. */
+ protomask |= NE_AUTH_GSSAPI_ONLY | NE_AUTH_SSPI;
+ }
ahs = ne_get_session_private(sess, id);
if (ahs == NULL) {
}
#ifdef HAVE_GSSAPI
- if ((protomask & NE_AUTH_GSSAPI) && ahs->gssname == GSS_C_NO_NAME) {
+ if ((protomask & NE_AUTH_GSSAPI_ONLY) && ahs->gssname == GSS_C_NO_NAME) {
ne_uri uri = {0};
if (isproxy)
ne_uri_free(&uri);
}
#endif
+#ifdef HAVE_SSPI
+ if ((protomask & (NE_AUTH_NTLM|NE_AUTH_SSPI)) && !ahs->sspi_host) {
+ ne_uri uri = {0};
+
+ if (isproxy)
+ ne_fill_proxy_uri(sess, &uri);
+ else
+ ne_fill_server_uri(sess, &uri);
+
+ ahs->sspi_host = uri.host;
+ uri.host = NULL;
+
+ ne_uri_free(&uri);
+ }
+#endif
/* Find the end of the handler list, and add a new one. */
hdl = &ahs->handlers;
/* NE_AUTH_GSSAPI: Use GSSAPI or SSPI to authenticate the user; an
* active attacker can modify any of the request/response at will, so
- * this must not be used over an unsecured channel. */
+ * this must not be used over an unsecured channel. NE_AUTH_GSSAPI
+ * is currently equivalent to (NE_AUTH_GSSAPI_ONLY | NE_AUTH_SSPI). */
#define NE_AUTH_GSSAPI (0x0008)
/* NE_AUTH_NTLM: Use NTLM to authenticate the user; an active attacker
* used over an unsecured channel. */
#define NE_AUTH_NTLM (0x0010)
+/* NE_AUTH_SSPI: Use SSPI to authenticate the user; an
+ * active attacker can modify any of the request/response at will, so
+ * this must not be used over an unsecured channel. */
+#define NE_AUTH_SSPI (0x0020)
+
+/* NE_AUTH_GSSAPI_ONLY: Use GSSAPI to authenticate the user; an
+ * active attacker can modify any of the request/response at will, so
+ * this must not be used over an unsecured channel. */
+#define NE_AUTH_GSSAPI_ONLY (0x0040)
+
/* The default set of supported protocols, as deemed appropriate for
* the given session scheme. */
#define NE_AUTH_DEFAULT (0x1000)
{ "working-resource", NE_CAP_WORK_RESOURCE },
{ "merge", NE_CAP_MERGE },
{ "baseline", NE_CAP_BASELINE },
- { "version-controlled-collection", NE_CAP_VC_COLLECTION }
+ { "version-controlled-collection", NE_CAP_VC_COLLECTION },
+ { "extended-mkcol", NE_CAP_EXT_MKCOL }
};
static void parse_dav_header(const char *value, unsigned int *caps)
* property a. la. mod_dav */
} ne_server_capabilities;
-/* DEPRECATED: Determines server capabilities (using OPTIONS). */
+/* DEPRECATED: Determines server capabilities (using OPTIONS). Use
+ * ne_options2() instead. */
int ne_options(ne_session *sess, const char *path,
ne_server_capabilities *caps);
#define NE_CAP_BASELINE (0x2000) /* DeltaV baseline */
#define NE_CAP_ACTIVITY (0x4000) /* DeltaV activity */
#define NE_CAP_VC_COLLECTION (0x8000) /* DeltaV version-controlled-collection */
+#define NE_CAP_EXT_MKCOL (0x10000) /* extended-mkcol (RFC 5689) */
/* Determines resource capailities, using an OPTIONS request. On
* return, *caps is set to a bit-mask of the above NE_CAP_* constants
#include <sys/types.h>
#ifdef NE_LFS
+# ifdef _MSC_VER
+typedef __int64 off64_t;
+# endif
typedef off64_t ne_off_t;
#else
typedef off_t ne_off_t;
/*
neon SSL/TLS support using GNU TLS
- Copyright (C) 2002-2010, Joe Orton <joe@manyfish.co.uk>
+ Copyright (C) 2002-2011, Joe Orton <joe@manyfish.co.uk>
Copyright (C) 2004, Aleix Conchillo Flaque <aleix@member.fsf.org>
This library is free software; you can redistribute it and/or
gnutls_x509_dn_t dn;
#else
int subject; /* non-zero if this is the subject DN object */
- gnutls_x509_crt cert;
+ gnutls_x509_crt_t cert;
#endif
};
struct ne_ssl_certificate_s {
ne_ssl_dname subj_dn, issuer_dn;
- gnutls_x509_crt subject;
+ gnutls_x509_crt_t subject;
ne_ssl_certificate *issuer;
char *identity;
};
struct ne_ssl_client_cert_s {
- gnutls_pkcs12 p12;
+ gnutls_pkcs12_t p12;
int decrypted; /* non-zero if successfully decrypted. */
int keyless;
ne_ssl_certificate cert;
- gnutls_x509_privkey pkey;
+ gnutls_x509_privkey_t pkey;
char *friendly_name;
};
/* Returns the highest used index in subject (or issuer) DN of
* certificate CERT for OID, or -1 if no RDNs are present in the DN
* using that OID. */
-static int oid_find_highest_index(gnutls_x509_crt cert, int subject, const char *oid)
+static int oid_find_highest_index(gnutls_x509_crt_t cert, int subject, const char *oid)
{
int ret, idx = -1;
#ifdef HAVE_ICONV
static void convert_dirstring(ne_buffer *buf, const char *charset,
- gnutls_datum *data)
+ gnutls_datum_t *data)
{
iconv_t id = iconv_open("UTF-8", charset);
size_t inlen = data->size, outlen = buf->length - buf->used;
#define TAG_UNIVERSAL (28)
#define TAG_BMP (30)
-static void append_dirstring(ne_buffer *buf, gnutls_datum *data, unsigned long tag)
+static void append_dirstring(ne_buffer *buf, gnutls_datum_t *data, unsigned long tag)
{
switch (tag) {
case TAG_UTF8:
/* Appends the value of RDN with given oid from certitifcate x5
* subject (if subject is non-zero), or issuer DN to buffer 'buf': */
-static void append_rdn(ne_buffer *buf, gnutls_x509_crt x5, int subject, const char *oid)
+static void append_rdn(ne_buffer *buf, gnutls_x509_crt_t x5, int subject, const char *oid)
{
int idx, top, ret;
char rdn[50];
* If 'identity' is non-NULL, store the malloc-allocated identity in
* *identity. If 'server' is non-NULL, it must be the network address
* of the server in use, and identity must be NULL. */
-static int check_identity(const ne_uri *server, gnutls_x509_crt cert,
+static int check_identity(const ne_uri *server, gnutls_x509_crt_t cert,
char **identity)
{
char name[255];
* that x5 is owned by returned cert object and must not be otherwise
* freed by the caller. */
static ne_ssl_certificate *populate_cert(ne_ssl_certificate *cert,
- gnutls_x509_crt x5)
+ gnutls_x509_crt_t x5)
{
#ifdef HAVE_NEW_DN_API
gnutls_x509_crt_get_subject(x5, &cert->subj_dn.dn);
}
/* Returns a copy certificate of certificate SRC. */
-static gnutls_x509_crt x509_crt_copy(gnutls_x509_crt src)
+static gnutls_x509_crt_t x509_crt_copy(gnutls_x509_crt_t src)
{
int ret;
- size_t size;
- gnutls_datum tmp;
- gnutls_x509_crt dest;
+ size_t size = 0;
+ gnutls_datum_t tmp;
+ gnutls_x509_crt_t dest;
if (gnutls_x509_crt_init(&dest) != 0) {
return NULL;
}
/* Callback invoked when the SSL server requests a client certificate. */
-static int provide_client_cert(gnutls_session session,
- const gnutls_datum *req_ca_rdn, int nreqs,
- const gnutls_pk_algorithm *sign_algos,
+static int provide_client_cert(gnutls_session_t session,
+ const gnutls_datum_t *req_ca_rdn, int nreqs,
+ const gnutls_pk_algorithm_t *sign_algos,
int sign_algos_length, gnutls_retr_st *st)
{
ne_session *sess = gnutls_session_get_ptr(session);
}
if (sess->client_cert) {
- gnutls_certificate_type type = gnutls_certificate_type_get(session);
- if (type == GNUTLS_CRT_X509) {
+ gnutls_certificate_type_t type = gnutls_certificate_type_get(session);
+ if (type == GNUTLS_CRT_X509
+#if LIBGNUTLS_VERSION_NUMBER > 0x030000
+ /* Ugly hack; prevent segfaults w/GnuTLS 3.0. */
+ && sess->client_cert->pkey != NULL
+#endif
+ ) {
NE_DEBUG(NE_DBG_SSL, "Supplying client certificate.\n");
st->type = type;
/* SSLv2 not supported. */
}
+int ne_ssl_context_get_flag(ne_ssl_context *ctx, int flag)
+{
+ return 0;
+}
+
void ne_ssl_context_destroy(ne_ssl_context *ctx)
{
gnutls_certificate_free_credentials(ctx->cred);
ne_free(ctx);
}
-#ifdef HAVE_GNUTLS_CERTIFICATE_GET_X509_CAS
+#if !defined(HAVE_GNUTLS_CERTIFICATE_GET_ISSUER) && defined(HAVE_GNUTLS_CERTIFICATE_GET_X509_CAS)
/* Return the issuer of the given certificate, or NULL if none can be
* found. */
-static gnutls_x509_crt find_issuer(gnutls_x509_crt *ca_list,
+static gnutls_x509_crt_t find_issuer(gnutls_x509_crt_t *ca_list,
unsigned int num_cas,
- gnutls_x509_crt cert)
+ gnutls_x509_crt_t cert)
{
unsigned int n;
#endif
/* Return the certificate chain sent by the peer, or NULL on error. */
-static ne_ssl_certificate *make_peers_chain(gnutls_session sock,
- gnutls_certificate_credentials crd)
+static ne_ssl_certificate *make_peers_chain(gnutls_session_t sock,
+ gnutls_certificate_credentials_t crd)
{
ne_ssl_certificate *current = NULL, *top = NULL;
- const gnutls_datum *certs;
+ const gnutls_datum_t *certs;
unsigned int n, count;
ne_ssl_certificate *cert;
NE_DEBUG(NE_DBG_SSL, "ssl: Got %u certs in peer chain.\n", count);
for (n = 0; n < count; n++) {
- gnutls_x509_crt x5;
+ gnutls_x509_crt_t x5;
if (gnutls_x509_crt_init(&x5) ||
gnutls_x509_crt_import(x5, &certs[n], GNUTLS_X509_FMT_DER)) {
}
}
-#ifdef HAVE_GNUTLS_CERTIFICATE_GET_X509_CAS
+#if defined(HAVE_GNUTLS_CERTIFICATE_GET_ISSUER) || defined(HAVE_GNUTLS_CERTIFICATE_GET_X509_CAS)
/* GnuTLS only returns the peers which were *sent* by the server
* in the Certificate list during the handshake. Fill in the
* complete chain manually against the certs we trust: */
if (current->issuer == NULL) {
- gnutls_x509_crt issuer;
- gnutls_x509_crt *ca_list;
+ gnutls_x509_crt_t issuer;
+
+#ifndef HAVE_GNUTLS_CERTIFICATE_GET_ISSUER
+ gnutls_x509_crt_t *ca_list;
unsigned int num_cas;
gnutls_certificate_get_x509_cas(crd, &ca_list, &num_cas);
+#endif
do {
/* Look up the issuer. */
+#ifndef HAVE_GNUTLS_CERTIFICATE_GET_ISSUER
issuer = find_issuer(ca_list, num_cas, current->subject);
+#else
+ if (gnutls_certificate_get_issuer(crd, current->subject, &issuer, 0))
+ issuer = NULL;
+#endif
+
if (issuer) {
issuer = x509_crt_copy(issuer);
+ if (issuer == NULL)
+ break;
+
cert = populate_cert(ne_calloc(sizeof *cert), issuer);
/* Check that the issuer does not match the current
* cert. */
}
/* Verifies an SSL server certificate. */
-static int check_certificate(ne_session *sess, gnutls_session sock,
+static int check_certificate(ne_session *sess, gnutls_session_t sock,
ne_ssl_certificate *chain)
{
int ret, failures = 0;
{
ne_ssl_context *const ctx = sess->ssl_context;
ne_ssl_certificate *chain;
- gnutls_session sock;
+ gnutls_session_t sock;
NE_DEBUG(NE_DBG_SSL, "Negotiating SSL connection.\n");
void ne_ssl_context_trustcert(ne_ssl_context *ctx, const ne_ssl_certificate *cert)
{
- gnutls_x509_crt certs = cert->subject;
+ gnutls_x509_crt_t certs = cert->subject;
gnutls_certificate_set_x509_trust(ctx->cred, &certs, 1);
}
}
/* Read the contents of file FILENAME into *DATUM. */
-static int read_to_datum(const char *filename, gnutls_datum *datum)
+static int read_to_datum(const char *filename, gnutls_datum_t *datum)
{
FILE *f = fopen(filename, "r");
ne_buffer *buf;
/* Parses a PKCS#12 structure and loads the certificate, private key
* and friendly name if possible. Returns zero on success, non-zero
* on error. */
-static int pkcs12_parse(gnutls_pkcs12 p12, gnutls_x509_privkey *pkey,
- gnutls_x509_crt *x5, char **friendly_name,
+static int pkcs12_parse(gnutls_pkcs12_t p12, gnutls_x509_privkey_t *pkey,
+ gnutls_x509_crt_t *x5, char **friendly_name,
const char *password)
{
- gnutls_pkcs12_bag bag = NULL;
+ gnutls_pkcs12_bag_t bag = NULL;
int i, j, ret = 0;
for (i = 0; ret == 0; ++i) {
gnutls_pkcs12_bag_decrypt(bag, password);
for (j = 0; ret == 0 && j < gnutls_pkcs12_bag_get_count(bag); ++j) {
- gnutls_pkcs12_bag_type type;
- gnutls_datum data;
+ gnutls_pkcs12_bag_type_t type;
+ gnutls_datum_t data;
if (friendly_name && *friendly_name == NULL) {
char *name = NULL;
ne_ssl_client_cert *ne_ssl_clicert_read(const char *filename)
{
+ gnutls_datum_t datum;
+ ne_ssl_client_cert *cc;
+
+ if (read_to_datum(filename, &datum))
+ return NULL;
+
+ cc = ne_ssl_clicert_import(datum.data, datum.size);
+
+ ne_free(datum.data);
+
+ return cc;
+}
+
+ne_ssl_client_cert *ne_ssl_clicert_import(const unsigned char *buffer, size_t buflen)
+{
int ret;
- gnutls_datum data;
- gnutls_pkcs12 p12;
+ gnutls_datum_t data;
+ gnutls_pkcs12_t p12;
ne_ssl_client_cert *cc;
char *friendly_name = NULL;
- gnutls_x509_crt cert = NULL;
- gnutls_x509_privkey pkey = NULL;
+ gnutls_x509_crt_t cert = NULL;
+ gnutls_x509_privkey_t pkey = NULL;
- if (read_to_datum(filename, &data))
- return NULL;
+ data.data = buffer;
+ data.size = buflen;
if (gnutls_pkcs12_init(&p12) != 0) {
return NULL;
}
ret = gnutls_pkcs12_import(p12, &data, GNUTLS_X509_FMT_DER, 0);
- ne_free(data.data);
if (ret < 0) {
gnutls_pkcs12_deinit(p12);
return NULL;
size_t der_len)
{
ne_ssl_client_cert *cc;
- gnutls_x509_crt x5;
- gnutls_datum datum;
+ gnutls_x509_crt_t x5;
+ gnutls_datum_t datum;
datum.data = (unsigned char *)der;
datum.size = der_len;
int ne_ssl_clicert_decrypt(ne_ssl_client_cert *cc, const char *password)
{
int ret;
- gnutls_x509_crt cert = NULL;
- gnutls_x509_privkey pkey = NULL;
+ gnutls_x509_crt_t cert = NULL;
+ gnutls_x509_privkey_t pkey = NULL;
if (gnutls_pkcs12_verify_mac(cc->p12, password) != 0) {
return -1;
ne_ssl_certificate *ne_ssl_cert_read(const char *filename)
{
int ret;
- gnutls_datum data;
- gnutls_x509_crt x5;
+ gnutls_datum_t data;
+ gnutls_x509_crt_t x5;
if (read_to_datum(filename, &data))
return NULL;
int ret;
size_t len;
unsigned char *der;
- gnutls_datum buffer = { NULL, 0 };
- gnutls_x509_crt x5;
+ gnutls_datum_t buffer = { NULL, 0 };
+ gnutls_x509_crt_t x5;
if (gnutls_x509_crt_init(&x5) != 0)
return NULL;
{
/* Take yet unprocessed bytes into account. */
md5_uint32 bytes = ctx->buflen;
+ md5_uint32 swap_bytes;
size_t pad;
/* Now count remaining bytes. */
pad = bytes >= 56 ? 64 + 56 - bytes : 56 - bytes;
memcpy (&ctx->buffer[bytes], fillbuf, pad);
- /* Put the 64-bit file length in *bits* at the end of the buffer. */
- *(md5_uint32 *) &ctx->buffer[bytes + pad] = SWAP (ctx->total[0] << 3);
- *(md5_uint32 *) &ctx->buffer[bytes + pad + 4] = SWAP ((ctx->total[1] << 3) |
- (ctx->total[0] >> 29));
+ /* Put the 64-bit file length in *bits* at the end of the buffer.
+ Use memcpy to avoid aliasing problems. On most systems, this
+ will be optimized away to the same code. */
+ swap_bytes = SWAP (ctx->total[0] << 3);
+ memcpy (&ctx->buffer[bytes + pad], &swap_bytes, sizeof (swap_bytes));
+ swap_bytes = SWAP ((ctx->total[1] << 3) | (ctx->total[0] >> 29));
+ memcpy (&ctx->buffer[bytes + pad + 4], &swap_bytes, sizeof (swap_bytes));
/* Process last bytes. */
md5_process_block (ctx->buffer, bytes + pad + 8, ctx);
/*
neon SSL/TLS support using OpenSSL
- Copyright (C) 2002-2009, Joe Orton <joe@manyfish.co.uk>
+ Copyright (C) 2002-2011, Joe Orton <joe@manyfish.co.uk>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
#ifdef NE_HAVE_TS_SSL
#include <stdlib.h> /* for abort() */
+#ifndef _WIN32
#include <pthread.h>
#endif
+#endif
#include "ne_ssl.h"
#include "ne_string.h"
} else if (mode == NE_SSL_CTX_SERVER) {
ctx->ctx = SSL_CTX_new(SSLv23_server_method());
SSL_CTX_set_session_cache_mode(ctx->ctx, SSL_SESS_CACHE_CLIENT);
+#ifdef SSL_OP_NO_TICKET
+ /* disable ticket support since it inhibits testing of session
+ * caching. */
+ SSL_CTX_set_options(ctx->ctx, SSL_OP_NO_TICKET);
+#endif
} else {
+#ifdef OPENSSL_NO_SSL2
+ ne_free(ctx);
+ return NULL;
+#else
ctx->ctx = SSL_CTX_new(SSLv2_server_method());
SSL_CTX_set_session_cache_mode(ctx->ctx, SSL_SESS_CACHE_CLIENT);
+#endif
}
return ctx;
}
SSL_CTX_set_options(ctx->ctx, opts);
}
+int ne_ssl_context_get_flag(ne_ssl_context *ctx, int flag)
+{
+ switch (flag) {
+ case NE_SSL_CTX_SSLv2:
+#ifdef OPENSSL_NO_SSL2
+ return 0;
+#else
+ return ! (SSL_CTX_get_options(ctx->ctx) & SSL_OP_NO_SSLv2);
+#endif
+ default:
+ break;
+ }
+
+ return 0;
+}
+
int ne_ssl_context_keypair(ne_ssl_context *ctx, const char *cert,
const char *key)
{
return name;
}
-ne_ssl_client_cert *ne_ssl_clicert_read(const char *filename)
+static ne_ssl_client_cert *parse_client_cert(PKCS12 *p12)
{
- PKCS12 *p12;
- FILE *fp;
X509 *cert;
EVP_PKEY *pkey;
ne_ssl_client_cert *cc;
- fp = fopen(filename, "rb");
- if (fp == NULL)
- return NULL;
-
- p12 = d2i_PKCS12_fp(fp, NULL);
-
- fclose(fp);
-
if (p12 == NULL) {
ERR_clear_error();
return NULL;
}
}
+ne_ssl_client_cert *ne_ssl_clicert_import(const unsigned char *buffer,
+ size_t buflen)
+{
+ ne_d2i_uchar *p;
+ PKCS12 *p12;
+
+ p = buffer;
+ p12 = d2i_PKCS12(NULL, &p, buflen);
+
+ return parse_client_cert(p12);
+}
+
+ne_ssl_client_cert *ne_ssl_clicert_read(const char *filename)
+{
+ PKCS12 *p12;
+ FILE *fp;
+
+ fp = fopen(filename, "rb");
+ if (fp == NULL)
+ return NULL;
+
+ p12 = d2i_PKCS12_fp(fp, NULL);
+
+ fclose(fp);
+
+ return parse_client_cert(p12);
+}
+
#ifdef HAVE_PAKCHOIS
ne_ssl_client_cert *ne__ssl_clicert_exkey_import(const unsigned char *der,
size_t der_len,
* it's necessary to cast from a pthread_t to an unsigned long at some
* point. */
+#ifndef _WIN32
static pthread_mutex_t *locks;
+#else
+static HANDLE *locks;
+#endif
static size_t num_locks;
#ifndef HAVE_CRYPTO_SET_IDPTR_CALLBACK
/* Named to be obvious when it shows up in a backtrace. */
static unsigned long thread_id_neon(void)
{
+#ifndef _WIN32
/* This will break if pthread_t is a structure; upgrading OpenSSL
* >= 0.9.9 (which does not require this callback) is the only
* solution. */
return (unsigned long) pthread_self();
+#else
+ return (unsigned long) GetCurrentThreadId();
+#endif
}
#endif
static void thread_lock_neon(int mode, int n, const char *file, int line)
{
if (mode & CRYPTO_LOCK) {
+#ifndef _WIN32
if (pthread_mutex_lock(&locks[n])) {
+#else
+ if (WaitForSingleObject(locks[n], INFINITE)) {
+#endif
abort();
}
}
else {
+#ifndef _WIN32
if (pthread_mutex_unlock(&locks[n])) {
+#else
+ if (!ReleaseMutex(locks[n])) {
+#endif
abort();
}
}
locks = malloc(num_locks * sizeof *locks);
for (n = 0; n < num_locks; n++) {
+#ifndef _WIN32
if (pthread_mutex_init(&locks[n], NULL)) {
+#else
+ if ((locks[n] = CreateMutex(NULL, FALSE, NULL)) == NULL) {
+#endif
NE_DEBUG(NE_DBG_SOCKET, "ssl: Failed to initialize pthread mutex.\n");
return -1;
}
CRYPTO_set_locking_callback(NULL);
for (n = 0; n < num_locks; n++) {
+#ifndef _WIN32
pthread_mutex_destroy(&locks[n]);
+#else
+ CloseHandle(locks[n]);
+#endif
}
free(locks);
#include <gnutls/gnutls.h>
struct ne_ssl_context_s {
- gnutls_certificate_credentials cred;
+ gnutls_certificate_credentials_t cred;
int verify; /* non-zero if client cert verification required */
const char *hostname; /* for SNI */
/* Session cache. */
union ne_ssl_scache {
struct {
- gnutls_datum key, data;
+ gnutls_datum_t key, data;
} server;
#if defined(HAVE_GNUTLS_SESSION_GET_DATA2)
- gnutls_datum client;
+ gnutls_datum_t client;
#else
struct {
char *data;
#endif
};
-typedef gnutls_session ne_ssl_socket;
+typedef gnutls_session_t ne_ssl_socket;
NE_PRIVATE ne_ssl_client_cert *
ne__ssl_clicert_exkey_import(const unsigned char *der, size_t der_len);
((((code) == NE_SOCK_CLOSED || (code) == NE_SOCK_RESET || \
(code) == NE_SOCK_TRUNC) && retry) ? NE_RETRY : (acode))
+/* For sending chunks, an 8-byte prefix is reserved at the beginning
+ * of the buffer. This is large enough for a trailing \r\n for the
+ * previous chunk, the chunk size, and the \r\n following the
+ * chunk-size. */
+#define CHUNK_OFFSET (8)
+#define CHUNK_TERM "\r\n0\r\n\r\n"
+#define CHUNK_NULL_TERM "0\r\n\r\n"
+
/* Sends the request body; returns 0 on success or an NE_* error code.
* If retry is non-zero; will return NE_RETRY on persistent connection
* timeout. On error, the session error string is set and the
static int send_request_body(ne_request *req, int retry)
{
ne_session *const sess = req->session;
- char buffer[NE_BUFSIZ];
+ char buffer[NE_BUFSIZ], *start;
ssize_t bytes;
+ size_t buflen;
+ int chunked = req->body_length < 0, chunknum = 0;
+ int ret;
NE_DEBUG(NE_DBG_HTTP, "Sending request body:\n");
+ /* Set up status union and (start, buflen) as the buffer to be
+ * passed the supplied callback. */
+ if (chunked) {
+ start = buffer + CHUNK_OFFSET;
+ buflen = sizeof(buffer) - CHUNK_OFFSET;
+ req->session->status.sr.total = -1;
+ }
+ else {
+ start = buffer;
+ buflen = sizeof buffer;
+ req->session->status.sr.total = req->body_length;
+ }
+
req->session->status.sr.progress = 0;
- req->session->status.sr.total = req->body_length;
notify_status(sess, ne_status_sending);
/* tell the source to start again from the beginning. */
return NE_ERROR;
}
- while ((bytes = req->body_cb(req->body_ud, buffer, sizeof buffer)) > 0) {
- int ret = ne_sock_fullwrite(sess->socket, buffer, bytes);
+ while ((bytes = req->body_cb(req->body_ud, start, buflen)) > 0) {
+ req->session->status.sr.progress += bytes;
+ if (chunked) {
+ /* Overwrite the buffer prefix with the appropriate chunk
+ * size; since ne_snprintf always NUL-terminates, the \n
+ * is omitted and placed over the NUL afterwards. */
+ if (chunknum++ == 0)
+ ne_snprintf(buffer, CHUNK_OFFSET,
+ "%06x\r", (unsigned)bytes);
+ else
+ ne_snprintf(buffer, CHUNK_OFFSET,
+ "\r\n%04x\r", (unsigned)bytes);
+ buffer[CHUNK_OFFSET - 1] = '\n';
+ bytes += CHUNK_OFFSET;
+ }
+ ret = ne_sock_fullwrite(sess->socket, buffer, bytes);
+
if (ret < 0) {
int aret = aborted(req, _("Could not send request body"), ret);
return RETRY_RET(retry, ret, aret);
bytes, (int)bytes, buffer);
/* invoke progress callback */
- req->session->status.sr.progress += bytes;
notify_status(sess, ne_status_sending);
}
- if (bytes == 0) {
- return NE_OK;
- } else {
+ if (bytes) {
NE_DEBUG(NE_DBG_HTTP, "Request body provider failed with "
"%" NE_FMT_SSIZE_T "\n", bytes);
ne_close_connection(sess);
return NE_ERROR;
}
+
+ if (chunked) {
+ if (chunknum == 0)
+ ret = ne_sock_fullwrite(sess->socket, CHUNK_NULL_TERM,
+ sizeof(CHUNK_NULL_TERM) - 1);
+ else
+ ret = ne_sock_fullwrite(sess->socket, CHUNK_TERM,
+ sizeof(CHUNK_TERM) - 1);
+ if (ret < 0) {
+ int aret = aborted(req, _("Could not send chunked "
+ "request terminator"), ret);
+ return RETRY_RET(retry, ret, aret);
+ }
+ }
+
+ return NE_OK;
}
/* Lob the User-Agent, connection and host headers in to the request
static void set_body_length(ne_request *req, ne_off_t length)
{
req->body_length = length;
- ne_print_request_header(req, "Content-Length", "%" FMT_NE_OFF_T, length);
+
+ if (length >= 0)
+ ne_print_request_header(req, "Content-Length", "%" FMT_NE_OFF_T, length);
+ else /* length < 0 => chunked body */
+ ne_add_request_header(req, "Transfer-Encoding", "chunked");
+
}
void ne_set_request_body_buffer(ne_request *req, const char *buffer,
void ne_set_request_flag(ne_request *req, ne_request_flag flag, int value)
{
- if (flag < NE_SESSFLAG_LAST) {
+ if (flag < (ne_request_flag)NE_SESSFLAG_LAST) {
req->flags[flag] = value;
}
}
int ne_get_request_flag(ne_request *req, ne_request_flag flag)
{
- if (flag < NE_REQFLAG_LAST) {
+ if (flag < (ne_request_flag)NE_REQFLAG_LAST) {
return req->flags[flag];
}
return -1;
return RETRY_RET(retry, sret, aret);
}
- if (!req->flags[NE_REQFLAG_EXPECT100] && req->body_length > 0) {
+ if (!req->flags[NE_REQFLAG_EXPECT100] && req->body_length) {
/* Send request body, if not using 100-continue. */
ret = send_request_body(req, retry);
if (ret) {
if ((ret = discard_headers(req)) != NE_OK) break;
if (req->flags[NE_REQFLAG_EXPECT100] && (status->code == 100)
- && req->body_length > 0 && !sentbody) {
+ && req->body_length && !sentbody) {
/* Send the body after receiving the first 100 Continue */
if ((ret = send_request_body(req, 0)) != NE_OK) break;
sentbody = 1;
/* Install a callback which is invoked as needed to provide the
* request body, a block at a time. The total size of the request
* body is 'length'; the callback must ensure that it returns no more
- * than 'length' bytes in total. */
+ * than 'length' bytes in total. If 'length' is set to -1, then the
+ * total size of the request is unknown by the caller and chunked
+ * tranfer will be used. */
void ne_set_request_body_provider(ne_request *req, ne_off_t length,
- ne_provide_body provider, void *userdata);
+ ne_provide_body provider, void *userdata);
/* Handling response bodies; two callbacks must be provided:
*
ne_free(hi);
}
+ sess->proxies = NULL;
sess->any_proxy_http = 0;
}
#endif
}
-void ne_set_addrlist(ne_session *sess, const ne_inet_addr **addrs, size_t n)
+void ne_set_addrlist2(ne_session *sess, unsigned int port,
+ const ne_inet_addr **addrs, size_t n)
{
struct host_info *hi, **lasthi;
size_t i;
hi->proxy = PROXY_NONE;
hi->network = addrs[i];
- hi->port = sess->server.port;
+ hi->port = port;
lasthi = &hi->next;
}
}
+void ne_set_addrlist(ne_session *sess, const ne_inet_addr **addrs, size_t n)
+{
+ ne_set_addrlist2(sess, sess->server.port, addrs, n);
+}
+
void ne_set_localaddr(ne_session *sess, const ne_inet_addr *addr)
{
sess->local_addr = addr;
#ifdef NE_HAVE_SSL
if (flag == NE_SESSFLAG_SSLv2 && sess->ssl_context) {
ne_ssl_context_set_flag(sess->ssl_context, NE_SSL_CTX_SSLv2, value);
+ sess->flags[flag] = ne_ssl_context_get_flag(sess->ssl_context, NE_SSL_CTX_SSLv2);
}
#endif
}
* session. */
void ne_close_connection(ne_session *sess);
-/* Set the proxy server to be used for the session. This function
- * will override (remove) any proxy servers previously configured, and
- * must be called before any requests are created using this
- * session. */
+/* Configure an HTTP proxy server for the session. This function will
+ * override (remove) any proxy servers previously configured, and must
+ * be called before any requests are created using this session. */
void ne_session_proxy(ne_session *sess,
const char *hostname, unsigned int port);
* created using this session. */
void ne_set_addrlist(ne_session *sess, const ne_inet_addr **addrs, size_t n);
+/* Bypass the normal name resolution; force the use of specific set of
+ * addresses for this session, addrs[0]...addrs[n-1]. The 'addrs'
+ * array and pointed-to objects must remain valid until the session is
+ * destroyed. This function will override (remove) any proxy servers
+ * previously configured, and must be called before any requests are
+ * created using this session. Port number 'port' will be used
+ * instead of the "real" session port, to connect to the proxy. */
+void ne_set_addrlist2(ne_session *sess, unsigned int port,
+ const ne_inet_addr **addrs, size_t n);
+
/* Bind connections to the specified local address. If the address
* determined for the remote host has a different family (type) to
* 'addr', 'addr' will be ignored. The 'addr' object must remain
/*
Socket handling routines
- Copyright (C) 1998-2009, Joe Orton <joe@manyfish.co.uk>
+ Copyright (C) 1998-2011, Joe Orton <joe@manyfish.co.uk>
Copyright (C) 2004 Aleix Conchillo Flaque <aleix@member.fsf.org>
This library is free software; you can redistribute it and/or
#include "config.h"
#include <sys/types.h>
+#ifdef HAVE_SYS_UIO_h
+#include <sys/uio.h> /* writev(2) */
+#endif
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
#else
struct in_addr *addrs;
size_t cursor, count;
+ char *name;
#endif
int errnum;
};
ret = poll(&fds, 1, timeout);
} while (ret < 0 && NE_ISINTR(ne_errno));
#else
- fd_set rdfds, wrfds;
+ fd_set rdfds, wrfds, exfds;
struct timeval timeout, *tvp = (secs >= 0 ? &timeout : NULL);
/* Init the fd set */
FD_ZERO(&rdfds);
FD_ZERO(&wrfds);
+ FD_ZERO(&exfds);
/* Note that (amazingly) the FD_SET macro does not expand
* correctly on Netware if not inside a compound statement
} else {
FD_SET(fdno, &wrfds);
}
+ FD_SET(fdno, &exfds);
if (tvp) {
tvp->tv_sec = secs;
tvp->tv_usec = 0;
}
do {
- ret = select(fdno + 1, &rdfds, &wrfds, NULL, tvp);
+ ret = select(fdno + 1, &rdfds, &wrfds, &exfds, tvp);
} while (ret < 0 && NE_ISINTR(ne_errno));
#endif
return ret;
_("SSL alert received: %s"),
gnutls_alert_get_name(gnutls_alert_get(sock->ssl)));
break;
+#if GNUTLS_VERSION_MAJOR > 2 || (GNUTLS_VERSION_MAJOR == 2 && GNUTLS_VERSION_MINOR >= 99)
+ case GNUTLS_E_PREMATURE_TERMINATION:
+#else
case GNUTLS_E_UNEXPECTED_PACKET_LENGTH:
- /* It's not exactly an API guarantee but this error will
- * always mean a premature EOF. */
+#endif
ret = NE_SOCK_TRUNC;
set_error(sock, _("Secure connection truncated"));
break;
hints.ai_socktype = SOCK_STREAM;
+ if (flags & NE_ADDR_CANON) {
+ hints.ai_flags = AI_CANONNAME;
+ }
+
#ifdef AF_INET6
if (hostname[0] == '[' && ((pnt = strchr(hostname, ']')) != NULL)) {
char *hn = ne_strdup(hostname + 1);
hn[pnt - hostname - 1] = '\0';
#ifdef AI_NUMERICHOST /* added in the RFC2553 API */
- hints.ai_flags = AI_NUMERICHOST;
+ hints.ai_flags |= AI_NUMERICHOST;
#endif
hints.ai_family = AF_INET6;
addr->errnum = getaddrinfo(hn, NULL, &hints, &addr->result);
#endif /* AF_INET6 */
{
#ifdef USE_GAI_ADDRCONFIG /* added in the RFC3493 API */
- hints.ai_flags = AI_ADDRCONFIG;
+ hints.ai_flags |= AI_ADDRCONFIG;
hints.ai_family = AF_UNSPEC;
addr->errnum = getaddrinfo(hostname, NULL, &hints, &addr->result);
#else
for (n = 0; n < addr->count; n++)
memcpy(&addr->addrs[n], hp->h_addr_list[n], hp->h_length);
+
+ if (hp->h_name && hp->h_name[0])
+ addr->name = ne_strdup(hp->h_name);
}
} else {
addr->addrs = ne_malloc(sizeof *addr->addrs);
return addr->errnum;
}
+const char *ne_addr_canonical(const ne_sock_addr *addr)
+{
+#ifdef USE_GETADDRINFO
+ return addr->result ? addr->result->ai_canonname : NULL;
+#else
+ return addr->name;
+#endif
+}
+
const ne_inet_addr *ne_addr_first(ne_sock_addr *addr)
{
#ifdef USE_GETADDRINFO
#else
struct hostent *hp;
- hp = gethostbyaddr(ia, sizeof *ia, AF_INET);
+ /* Cast to const void *; some old libc headers apparently expect
+ * const char * here. */
+ hp = gethostbyaddr((const void *)ia, sizeof *ia, AF_INET);
if (hp && hp->h_name) {
ne_strnzcpy(buf, hp->h_name, bufsiz);
return 0;
#else
if (addr->addrs)
ne_free(addr->addrs);
+ if (addr->name)
+ ne_free(addr->name);
#endif
ne_free(addr);
}
}
}
- /* Reset to old flags: */
- if (fcntl(fd, F_SETFL, flags) == -1) {
+ /* Reset to old flags; fail on error if no previous error. */
+ if (fcntl(fd, F_SETFL, flags) == -1 && !ret) {
set_strerror(sock, errno);
ret = NE_SOCK_ERROR;
- }
+ }
} else
#endif /* USE_NONBLOCKING_CONNECT */
{
ret = raw_connect(fd, sa, salen);
if (ret < 0) {
- set_strerror(sock, errno);
+ set_strerror(sock, ne_errno);
ret = NE_SOCK_ERROR;
}
}
#ifdef SOCK_CLOEXEC
/* sock_cloexec is initialized to SOCK_CLOEXEC and cleared to zero if
- * a socket() call ever fails with EINVAL. */
+ * a socket() call ever fails with EINVAL; not strictly thread-safe
+ * but in practice it will not matter if two threads race accessing
+ * the variable. */
static int sock_cloexec = SOCK_CLOEXEC;
#define RETRY_ON_EINVAL
#else
ia_family(sock->laddr) == ia_family(addr))) {
ret = do_bind(fd, ia_family(addr), sock->laddr, sock->lport);
if (ret < 0) {
- int errnum = errno;
+ int errnum = ne_errno;
ne_close(fd);
set_strerror(sock, errnum);
return NE_SOCK_ERROR;
{
int fd = accept(listener, NULL, NULL);
- if (fd < 0)
+ if (fd < 0) {
+ set_strerror(sock, ne_errno);
return -1;
+ }
sock->fd = fd;
return 0;
* session. */
/* Copy datum 'src' to 'dest'. */
-static void copy_datum(gnutls_datum *dest, gnutls_datum *src)
+static void copy_datum(gnutls_datum_t *dest, gnutls_datum_t *src)
{
dest->size = src->size;
dest->data = memcpy(gnutls_malloc(src->size), src->data, src->size);
}
/* Callback to store a session 'data' with id 'key'. */
-static int store_sess(void *userdata, gnutls_datum key, gnutls_datum data)
+static int store_sess(void *userdata, gnutls_datum_t key, gnutls_datum_t data)
{
ne_ssl_context *ctx = userdata;
}
/* Returns non-zero if d1 and d2 are the same datum. */
-static int match_datum(gnutls_datum *d1, gnutls_datum *d2)
+static int match_datum(gnutls_datum_t *d1, gnutls_datum_t *d2)
{
return d1->size == d2->size
&& memcmp(d1->data, d2->data, d1->size) == 0;
}
/* Callback to retrieve a session of id 'key'. */
-static gnutls_datum retrieve_sess(void *userdata, gnutls_datum key)
+static gnutls_datum_t retrieve_sess(void *userdata, gnutls_datum_t key)
{
ne_ssl_context *ctx = userdata;
- gnutls_datum ret = { NULL, 0 };
+ gnutls_datum_t ret = { NULL, 0 };
if (match_datum(&ctx->cache.server.key, &key)) {
copy_datum(&ret, &ctx->cache.server.data);
/* Callback to remove a session of id 'key'; stub needed but
* implementation seems unnecessary. */
-static int remove_sess(void *userdata, gnutls_datum key)
+static int remove_sess(void *userdata, gnutls_datum_t key)
{
return -1;
}
NE_DEBUG(NE_DBG_SSL, "ssl: Server reused session.\n");
}
#elif defined(HAVE_GNUTLS)
+ unsigned int verify_status;
+
gnutls_init(&ssl, GNUTLS_SERVER);
gnutls_credentials_set(ssl, GNUTLS_CRD_CERTIFICATE, ctx->cred);
gnutls_set_default_priority(ssl);
gnutls_db_set_ptr(ssl, ctx);
if (ctx->verify)
- gnutls_certificate_server_set_request(ssl, GNUTLS_CERT_REQUEST);
+ gnutls_certificate_server_set_request(ssl, GNUTLS_CERT_REQUIRE);
sock->ssl = ssl;
- gnutls_transport_set_ptr(sock->ssl, (gnutls_transport_ptr)(long)sock->fd);
+ gnutls_transport_set_ptr(sock->ssl, (gnutls_transport_ptr_t)(long)sock->fd);
ret = gnutls_handshake(ssl);
if (ret < 0) {
return error_gnutls(sock, ret);
}
- if (ctx->verify && gnutls_certificate_verify_peers(ssl)) {
+ if (ctx->verify && (gnutls_certificate_verify_peers2(ssl, &verify_status) || verify_status)) {
set_error(sock, _("Client certificate verification failed"));
return NE_SOCK_ERROR;
}
return NE_SOCK_ERROR;
}
- /* If runtime library version differs from compile-time version
- * number in major/minor/fix level, abort soon. */
- if ((SSLeay() ^ OPENSSL_VERSION_NUMBER) & 0xFFFFF000) {
- set_error(sock, _("SSL disabled due to library version mismatch"));
- return NE_SOCK_ERROR;
- }
-
sock->ssl = ssl = SSL_new(ctx->ctx);
if (!ssl) {
set_error(sock, _("Could not create SSL structure"));
strlen(ctx->hostname));
}
- gnutls_transport_set_ptr(sock->ssl, (gnutls_transport_ptr)(long)sock->fd);
+ gnutls_transport_set_ptr(sock->ssl, (gnutls_transport_ptr_t)(long)sock->fd);
if (ctx->cache.client.data) {
#if defined(HAVE_GNUTLS_SESSION_GET_DATA2)
* times to ne_sock_init() for the process. */
void ne_sock_exit(void);
-/* Resolve the given hostname. 'flags' must be zero. Hex
- * string IPv6 addresses (e.g. `::1') may be enclosed in brackets
- * (e.g. `[::1]'). */
+#define NE_ADDR_CANON (0x01)
+/* Resolve the given hostname. Hex string IPv6 addresses (e.g. `::1')
+ * may be enclosed in brackets (e.g. `[::1]'). 'flags' should be
+ * zero, or if NE_ADDR_CANON is passed, the canonical name for the
+ * hostname will be determind. */
ne_sock_addr *ne_addr_resolve(const char *hostname, int flags);
/* Returns zero if name resolution was successful, non-zero on
* which is of size 'bufsiz'. 'buffer' is returned. */
char *ne_addr_error(const ne_sock_addr *addr, char *buffer, size_t bufsiz);
+/* Returns the canonical name of the host as a NUL-terminated string,
+ * if NE_ADDR_CANON was used, and name resolution was successful.
+ * Otherwise, returns NULL. */
+const char *ne_addr_canonical(const ne_sock_addr *addr);
+
/* Destroys an address object created by ne_addr_resolve. */
void ne_addr_destroy(ne_sock_addr *addr);
* "decrypted" state. */
typedef struct ne_ssl_client_cert_s ne_ssl_client_cert;
-/* Read a client certificate and private key from a PKCS12 file;
- * returns NULL if the file could not be parsed, or otherwise
- * returning a client certificate object. The returned object may be
- * in either the encrypted or decrypted state. */
+/* Read a client certificate (and private key) in PKCS#12 format from
+ * file 'filename'; returns NULL if the file could not be parsed, or
+ * otherwise returning a client certificate object. The returned
+ * object may be in either the encrypted or decrypted state. */
ne_ssl_client_cert *ne_ssl_clicert_read(const char *filename);
+/* Read a client certificate (and private key) in PKCS#12 format from
+ * 'buffer', of length 'buflen', returning NULL if the certificate
+ * could not be parsed, or otherwise returning a client certificate
+ * object. The returned object may be in either the encrypted or
+ * decrypted state. */
+ne_ssl_client_cert *ne_ssl_clicert_import(const unsigned char *buffer,
+ size_t buflen);
+
/* Returns non-zero if client cert is in the encrypted state. */
int ne_ssl_clicert_encrypted(const ne_ssl_client_cert *ccert);
/* Set a flag for the SSL context. */
void ne_ssl_context_set_flag(ne_ssl_context *ctx, int flag, int value);
+/* Return flag value. */
+int ne_ssl_context_get_flag(ne_ssl_context *ctx, int flag);
+
/* Destroy an SSL context. */
void ne_ssl_context_destroy(ne_ssl_context *ctx);
*/
static char *canonical_hostname(const char *serverName)
{
- char *hostname;
- ne_sock_addr *addresses;
+ const char *hostname;
+ ne_sock_addr *addr;
- /* DNS resolution. It would be useful to be able to use the
- * AI_CANONNAME flag where getaddrinfo() is available, but the
- * reverse-lookup is sufficient and simpler. */
- addresses = ne_addr_resolve(serverName, 0);
- if (ne_addr_result(addresses)) {
+ addr = ne_addr_resolve(serverName, NE_ADDR_CANON);
+ if (ne_addr_result(addr) || ne_addr_canonical(addr) == NULL) {
/* Lookup failed */
char buf[256];
NE_DEBUG(NE_DBG_HTTPAUTH,
"sspi: Could not resolve IP address for `%s': %s\n",
- serverName, ne_addr_error(addresses, buf, sizeof buf));
+ serverName, ne_addr_error(addr, buf, sizeof buf));
hostname = ne_strdup(serverName);
- } else {
- char hostbuffer[256];
- const ne_inet_addr *address = ne_addr_first(addresses);
-
- if (ne_iaddr_reverse(address, hostbuffer, sizeof hostbuffer) == 0) {
- hostname = ne_strdup(hostbuffer);
- } else {
- NE_DEBUG(NE_DBG_HTTPAUTH, "sspi: Could not resolve host name"
- "from IP address for `%s'\n", serverName);
- hostname = ne_strdup(serverName);
- }
}
+ else {
+ hostname = ne_strdup(ne_addr_canonical(addr));
+ }
+
+ ne_addr_destroy(addr);
- ne_addr_destroy(addresses);
return hostname;
}
return status;
}
sspiContext->authfinished = 0;
+ sspiContext->continueNeeded = 0;
return 0;
}
/*
}
/* CH must be an unsigned char; evaluates to 1 if CH should be
- * percent-encoded. */
-#define path_escape_ch(ch) (uri_lookup(ch) & URI_ESCAPE)
+ * percent-encoded (note !!x == x ? 1 : 0). */
+#define path_escape_ch(ch) (!!(uri_lookup(ch) & URI_ESCAPE))
char *ne_path_escape(const char *path)
{
#ifdef HAVE_GNUTLS
", GNU TLS " LIBGNUTLS_VERSION
#endif /* HAVE_GNUTLS */
+#ifdef HAVE_SSPI
+ ", SSPI"
+#endif /* HAVE_SSPI */
"."
;
switch (feature) {
#if defined(NE_HAVE_SSL) || defined(NE_HAVE_ZLIB) || defined(NE_HAVE_IPV6) \
|| defined(NE_HAVE_SOCKS) || defined(NE_HAVE_LFS) \
- || defined(NE_HAVE_TS_SSL) || defined(NE_HAVE_I18N)
+ || defined(NE_HAVE_TS_SSL) || defined(NE_HAVE_I18N) || defined(HAVE_SSPI)
#ifdef NE_HAVE_SSL
case NE_FEATURE_SSL:
#endif
#ifdef NE_HAVE_I18N
case NE_FEATURE_I18N:
#endif
+#ifdef HAVE_SSPI
+ case NE_FEATURE_SSPI:
+#endif
return 1;
#endif /* NE_HAVE_* */
default:
#define NE_FEATURE_SOCKS (5) /* SOCKSv5 support */
#define NE_FEATURE_TS_SSL (6) /* Thread-safe SSL/TLS support */
#define NE_FEATURE_I18N (7) /* i18n error message support */
+#define NE_FEATURE_SSPI (8) /* NTLM/Negotiate authentication protocol via SSPI */
/* Returns non-zero if library is built with support for the given
* NE_FEATURE_* feature code 'code'. */
ne_acl3744_set;
ne_buffer_qappend;
ne_strnqdup;
- ne_iaddr_parse;
+};
+
+NEON_0_30 {
+ ne_ssl_clicert_import;
+ ne_addr_canonical;
+ ne_ssl_context_get_flag;
+ ne_set_addrlist2;
};
--- /dev/null
+handle SIGPIPE noprint pass nostop
+handle SIGUSR1 print pass nostop
/* crashes with neon <0.22 */
static int forget_regress(void)
{
- ne_session *sess = ne_session_create("http", "localhost", 7777);
+ ne_session *sess = ne_session_create("http", "localhost", 1234);
ne_forget_auth(sess);
ne_session_destroy(sess);
return OK;
/* this may trigger a segfault in neon 0.21.x and earlier. */
static int tunnel_regress(void)
{
- ne_session *sess = ne_session_create("https", "localhost", 443);
- ne_session_proxy(sess, "localhost", 7777);
+ ne_session *sess;
+
+ CALL(proxied_session_server(&sess, "http", "localhost", 443,
+ single_serve_string,
+ "HTTP/1.1 401 Auth failed.\r\n"
+ "WWW-Authenticate: Basic realm=asda\r\n"
+ "Content-Length: 0\r\n\r\n"));
ne_set_server_auth(sess, fail_auth_cb, NULL);
- CALL(spawn_server(7777, single_serve_string,
- "HTTP/1.1 401 Auth failed.\r\n"
- "WWW-Authenticate: Basic realm=asda\r\n"
- "Content-Length: 0\r\n\r\n"));
any_request(sess, "/foo");
ne_session_destroy(sess);
CALL(await_server());
* token. */
static int negotiate_regress(void)
{
- ne_session *sess = ne_session_create("http", "localhost", 7777);
+ ne_session *sess;
+
+ CALL(session_server(&sess, single_serve_string,
+ "HTTP/1.1 401 Auth failed.\r\n"
+ "WWW-Authenticate: Negotiate\r\n"
+ "Content-Length: 0\r\n\r\n"));
ne_set_server_auth(sess, fail_auth_cb, NULL);
- CALL(spawn_server(7777, single_serve_string,
- "HTTP/1.1 401 Auth failed.\r\n"
- "WWW-Authenticate: Negotiate\r\n"
- "Content-Length: 0\r\n\r\n"));
any_request(sess, "/foo");
ne_session_destroy(sess);
CALL(await_server());
parms->stale);
if (parms->proxy) {
- sess = ne_session_create("http", "www.example.com", 80);
- ne_session_proxy(sess, "localhost", 7777);
+ CALL(proxied_session_server(&sess, "http", "www.example.com", 80,
+ serve_digest, parms));
ne_set_proxy_auth(sess, auth_cb, NULL);
}
else {
- sess = ne_session_create("http", "localhost", 7777);
+ CALL(session_server(&sess, serve_digest, parms));
ne_set_server_auth(sess, auth_cb, NULL);
}
- CALL(spawn_server(7777, serve_digest, parms));
-
do {
CALL(any_2xx_request(sess, "/fish"));
} while (--parms->num_requests);
parms.num_requests = 1;
for (n = 0; fails[n].message; n++) {
- ne_session *sess = ne_session_create("http", "localhost", 7777);
+ ne_session *sess;
int ret;
parms.failure = fails[n].mode;
NE_DEBUG(NE_DBG_HTTP, ">>> New Digest failure test, "
"expecting failure '%s'\n", fails[n].message);
+ CALL(session_server(&sess, serve_digest, &parms));
+
ne_set_server_auth(sess, auth_cb, NULL);
- CALL(spawn_server(7777, serve_digest, &parms));
ret = any_2xx_request(sess, "/fish");
ONV(ret == NE_OK,
parms.realm = "WallyWorld";
parms.rfc2617 = 1;
parms.nonce = "agoog";
- parms.domain = "http://localhost:7777/fish/ https://example.com /agaor /other";
+ parms.domain = "http://localhost:4242/fish/ https://example.com /agaor /other";
parms.num_requests = 6;
- CALL(make_session(&sess, serve_digest, &parms));
+ CALL(proxied_session_server(&sess, "http", "localhost", 4242,
+ serve_digest, &parms));
ne_set_server_auth(sess, auth_cb, NULL);
- ne_session_proxy(sess, "localhost", 7777);
-
CALL(any_2xx_request(sess, "/fish/0"));
CALL(any_2xx_request(sess, "/outside"));
CALL(any_2xx_request(sess, "/others"));
parms.domain = "foo";
parms.num_requests = 1;
- CALL(make_session(&sess, serve_digest, &parms));
+ CALL(proxied_session_server(&sess, "http", "www.example.com", 80,
+ serve_digest, &parms));
ne_set_server_auth(sess, auth_cb, NULL);
- ne_session_proxy(sess, "localhost", 7777);
-
any_2xx_request(sess, "/fish/0");
ne_session_destroy(sess);
/*
Tests for high-level HTTP interface (ne_basic.h)
- Copyright (C) 2002-2008, Joe Orton <joe@manyfish.co.uk>
+ Copyright (C) 2002-2008, 2012, Joe Orton <joe@manyfish.co.uk>
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
return OK;
}
+#define CLASS_12 (NE_CAP_DAV_CLASS1 | NE_CAP_DAV_CLASS2)
+
+static int options2(void)
+{
+ static const struct {
+ const char *hdrs;
+ unsigned int caps;
+ } ts[] = {
+ { "1,2\r\n", CLASS_12 },
+ { "1 2\r\n", 0 },
+ /* these aren't strictly legal headers: */
+ { "2,1\r\n", CLASS_12 },
+ { " 1, 2 \r\n", CLASS_12 },
+ { "1\r\nDAV:2\r\n", CLASS_12 },
+ /* extended types */
+ { "1, 2, extended-mkcol", CLASS_12 | NE_CAP_EXT_MKCOL },
+ { NULL, 0 }
+ };
+ char resp[BUFSIZ];
+ int n;
+
+ for (n = 0; ts[n].hdrs != NULL; n++) {
+ ne_session *sess;
+ unsigned int caps;
+
+ ne_snprintf(resp, BUFSIZ, "HTTP/1.0 200 OK\r\n"
+ "Connection: close\r\n"
+ "Content-Length: 0\r\n"
+ "DAV: %s" "\r\n\r\n", ts[n].hdrs);
+
+ CALL(make_session(&sess, single_serve_string, resp));
+
+ ONREQ(ne_options2(sess, "/foo", &caps));
+
+ ONV(caps != ts[n].caps,
+ ("capabilities for 'DAV: %s' were 0x%x, expected 0x%x",
+ ts[n].hdrs, caps, ts[n].caps));
+
+ CALL(await_server());
+
+ ne_session_destroy(sess);
+ }
+
+ return OK;
+}
+
ne_test tests[] = {
T(lookup_localhost),
T(content_type),
T(fail_range_unsatify),
T(dav_capabilities),
T(get),
+ T(options2),
T(NULL)
};
/*
Framework for testing with a server process
- Copyright (C) 2001-2008, Joe Orton <joe@manyfish.co.uk>
+ Copyright (C) 2001-2010, Joe Orton <joe@manyfish.co.uk>
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
int clength;
-static struct in_addr lh_addr = {0}, hn_addr = {0};
+static struct in_addr lh_addr, hn_addr;
+
+static int have_lh_addr;
const char *want_header = NULL;
got_header_fn got_header = NULL;
/* this will break if a system is set up so that `localhost' does
* not resolve to 127.0.0.1, but... */
lh_addr.s_addr = inet_addr("127.0.0.1");
+ have_lh_addr = 1;
return OK;
}
/* print the error out otherwise it gets lost. */
if (ret) {
- printf("server child failed: %s\n", test_context);
+ printf("server child failed (%s): %s\n",
+ tests[test_num].name, test_context);
}
/* and quit the child. */
NE_DEBUG(NE_DBG_HTTP, "child awaiting connection #%d.\n", count);
ONN("accept failed", ne_sock_accept(sock, listener));
ret = fn(sock, userdata);
+ NE_DEBUG(NE_DBG_HTTP, "child handled connection, %d.\n", ret);
close_socket(sock);
- NE_DEBUG(NE_DBG_HTTP, "child served request, %d.\n", ret);
if (ret) {
- printf("server child failed: %s\n", test_context);
+ printf("server child failed (%s, iteration %d/%d): %s\n",
+ tests[test_num].name, count, n, test_context);
exit(-1);
}
/* don't send back notification to parent more than
return OK;
}
+int new_spawn_server(int count, server_fn fn, void *userdata,
+ unsigned int *port)
+{
+ ne_inet_addr *addr;
+ int ret;
+
+ ret = new_spawn_server2(count, fn, userdata, &addr, port);
+
+ ne_iaddr_free(addr);
+
+ return ret;
+}
+
+int new_spawn_server2(int count, server_fn fn, void *userdata,
+ ne_inet_addr **addr, unsigned int *port)
+{
+ struct sockaddr_in sa;
+ socklen_t salen = sizeof sa;
+ int ls;
+
+ if (!have_lh_addr)
+ lookup_localhost();
+
+ ls = do_listen(lh_addr, 0);
+ ONN("could not bind/listen fd for server", ls < 0);
+
+ ONV(getsockname(ls, &sa, &salen) != 0,
+ ("could not get socket name for listening fd: %s",
+ strerror(errno)));
+
+ *port = ntohs(sa.sin_port);
+ *addr = ne_iaddr_make(ne_iaddr_ipv4, (unsigned char *)&lh_addr.s_addr);
+
+ NE_DEBUG(NE_DBG_SOCKET, "child using port %u\n", *port);
+
+ NE_DEBUG(NE_DBG_SOCKET, "child forking now...\n");
+
+ child = fork();
+ ONN("failed to fork server", child == -1);
+
+ if (child == 0) {
+ int ret, iter = 1;
+
+ in_child();
+
+ NE_DEBUG(NE_DBG_SOCKET, ">>> child spawned, port %u, %d iterations.\n",
+ *port, count);
+
+ do {
+ ne_socket *sock = ne_sock_create();
+ char errbuf[256];
+ int cret;
+
+ NE_DEBUG(NE_DBG_HTTP, "child iteration #%d (of %d), "
+ "awaiting connection...\n", iter, count);
+
+ if (ne_sock_accept(sock, ls)) {
+ t_context("Server child could not accept connection: %s",
+ ne_sock_error(sock));
+ exit(FAIL);
+ }
+
+ NE_DEBUG(NE_DBG_HTTP, "child got connection, invoking server\n");
+ ret = fn(sock, userdata);
+ NE_DEBUG(NE_DBG_HTTP, "child iteration #%d returns %d\n",
+ iter, ret);
+
+ cret = close_socket(sock);
+ NE_DEBUG(NE_DBG_HTTP, "child closed connection, %d: %s.\n", cret,
+ cret ? ne_strerror(cret, errbuf, sizeof errbuf)
+ : "no error");
+
+ } while (ret == 0 && ++iter <= count);
+
+ NE_DEBUG(NE_DBG_HTTP, "child terminating with %d\n", ret);
+ exit(ret);
+ }
+
+ close(ls);
+
+ return OK;
+}
+
int dead_server(void)
{
int status;
/*
Framework for testing with a server process
- Copyright (C) 2001-2004, Joe Orton <joe@manyfish.co.uk>
+ Copyright (C) 2001-2004, 2009, Joe Orton <joe@manyfish.co.uk>
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
* child process exits with a failure status. */
int spawn_server_repeat(int port, server_fn fn, void *userdata, int n);
+/* Forks a server child process running 'fn(userdata)' on an
+ * unspecified port. Sets test suite error on failure; on success,
+ * sets *port to bound port number. */
+int new_spawn_server(int count, server_fn fn, void *userdata,
+ unsigned int *port);
+
+/* As per new_spawn_server, but also returns the bound address as *addr. */
+int new_spawn_server2(int count, server_fn fn, void *userdata,
+ ne_inet_addr **addr, unsigned int *port);
+
/* Blocks until child process exits, and gives return code of 'fn'. */
int await_server(void);
break;
case FAILHARD:
aborted = 1;
+ COL("41;37;01"); printf("fatal error - "); NOCOL;
/* fall-through */
case FAIL:
COL("41;37;01"); printf("FAIL"); NOCOL;
if (warnings) {
if (quiet) {
printf("(%d warning%s)\n", warnings,
- warnings==1?"s":"");
+ warnings > 1 ? "s" : "");
}
else {
printf("-> %d warning%s issued.\n", warnings,
#include <unistd.h>
#endif
-#include <fcntl.h>
-
#include "ne_compress.h"
#include "ne_auth.h"
return 0;
}
-static int file2buf(int fd, ne_buffer *buf)
-{
- char buffer[BUFSIZ];
- ssize_t n;
-
- while ((n = read(fd, buffer, BUFSIZ)) > 0) {
- ne_buffer_append(buf, buffer, n);
- }
-
- return 0;
-}
-
static int do_fetch(const char *realfn, const char *gzipfn,
int chunked, int expect_fail)
{
ne_session *sess;
ne_request *req;
- int fd, ret;
+ int ret;
ne_buffer *buf = ne_buffer_create();
struct serve_file_args sfargs;
ne_decompress *dc;
struct string body;
- fd = open(realfn, O_RDONLY);
- ONN("failed to open file", fd < 0);
- file2buf(fd, buf);
- (void) close(fd);
+ CALL(file_to_buffer(realfn, buf));
body.data = buf->data;
body.len = buf->used - 1;
/*
lock tests
- Copyright (C) 2002-2006, Joe Orton <joe@manyfish.co.uk>
+ Copyright (C) 2002-2010, Joe Orton <joe@manyfish.co.uk>
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
return OK;
}
+/* Use a fake session forced to use port 7777 to the origin, to
+ * simplify the tests. */
+static int fake_session(ne_session **sess, server_fn fn, void *userdata)
+{
+ return proxied_session_server(sess, "http", "localhost", 7777,
+ fn, userdata);
+}
+
/* regression test for <= 0.18.2, where timeout field was not parsed correctly. */
static int lock_timeout(void)
{
"Lock-Token: <opaquelocktoken:foo>" EOL
"Connection: close\r\n\r\n", rbody, NULL);
- CALL(make_session(&sess, single_serve_string, resp));
+ CALL(fake_session(&sess, single_serve_string, resp));
ne_free(resp);
ne_fill_server_uri(sess, &lock->uri);
expect_if = ne_concat("<http://localhost:7777", lockpath,
"> (<somelocktoken>)", NULL);
- CALL(make_session(&sess, serve_verify_if, expect_if));
+ CALL(fake_session(&sess, serve_verify_if, expect_if));
ne_free(expect_if);
ne_fill_server_uri(sess, &lk->uri);
static int discover(void)
{
- ne_session *sess = ne_session_create("http", "localhost", 7777);
+ ne_session *sess;
char *response;
int ret;
struct result_args args;
args.lock->owner = ne_strdup("someowner");
args.lock->token = ne_strdup("sometoken");
-
+ args.lock->uri.host = ne_strdup("localhost");
+ args.lock->uri.port = 7777;
+ args.lock->uri.scheme = ne_strdup("http");
+
/* default */
args.result = FAIL;
t_context("results callback never invoked");
- ne_fill_server_uri(sess, &args.lock->uri);
- args.lock->uri.path = ne_strdup("/lockme");
-
response = discover_response("/lockme", args.lock);
- CALL(spawn_server(7777, serve_discovery, response));
+ CALL(fake_session(&sess, serve_discovery, response));
+ args.lock->uri.path = ne_strdup("/lockme");
ret = ne_lock_discover(sess, "/lockme", discover_result, &args);
CALL(await_server());
"Connection: close\r\n\r\n", rbody, NULL);
ne_free(rbody);
- CALL(make_session(&sess, single_serve_string, resp));
+ CALL(fake_session(&sess, single_serve_string, resp));
ne_free(resp);
lock = ne_lock_create();
ne_session *sess;
int ret;
- CALL(make_session(&sess, single_serve_string,
+ CALL(fake_session(&sess, single_serve_string,
"HTTP/1.0 207 OK\r\n" "Connection: close\r\n" "\r\n"
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
"<D:multistatus xmlns:D='DAV:'>\n"
"\r\n";
args.count = 2;
- CALL(make_session(&sess, many_serve_string, &args));
+ CALL(fake_session(&sess, many_serve_string, &args));
ne_set_server_auth(sess, no_creds, NULL);
"Content-type: application/xml" EOL
"Connection: close\r\n\r\n", rbody, NULL);
- CALL(make_session(&sess, single_serve_string, resp));
+ CALL(fake_session(&sess, single_serve_string, resp));
ne_free(resp);
ne_fill_server_uri(sess, &lock->uri);
mkdir $i
touch $i/index.txt
echo 01 > $i/serial
- ${OPENSSL} genrsa -rand ${srcdir}/../configure > $i/key.pem
+ ${OPENSSL} genrsa -rand ${srcdir}/../configure 1024 > $i/key.pem
done
-${OPENSSL} genrsa -rand ${srcdir}/../configure > client.key
+${OPENSSL} genrsa -rand ${srcdir}/../configure 1024 > client.key
${OPENSSL} dsaparam -genkey -rand ${srcdir}/../configure 1024 > client.dsap
${OPENSSL} gendsa client.dsap > clientdsa.key
/*
Tests for property handling
- Copyright (C) 2002-2008, Joe Orton <joe@manyfish.co.uk>
+ Copyright (C) 2002-2009, Joe Orton <joe@manyfish.co.uk>
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
static int run_207_response(char *resp, const char *expected)
{
ne_buffer *buf = ne_buffer_create();
- ne_session *sess = ne_session_create("http", "localhost", 7777);
+ ne_session *sess;
ne_xml_parser *p = ne_xml_create();
ne_207_parser *p207;
- ne_request *req = ne_request_create(sess, "PROPFIND", "/foo");
+ ne_request *req;
ne_uri base = {0};
struct propctx ctx;
+ CALL(session_server(&sess, single_serve_string, resp));
+ req = ne_request_create(sess, "PROPFIND", "/foo");
ne_fill_server_uri(sess, &base);
base.path = ne_strdup("/foo");
p207 = ne_207_create(p, &base, buf);
ctx.p207 = p207;
ne_xml_push_handler(p, tos_startprop, tos_cdata, tos_endprop, &ctx);
- CALL(spawn_server(7777, single_serve_string, resp));
ONREQ(ne_request_dispatch(req));
0, PF_SIMPLE},
/* whitespace handling. */
- { MULTI_207(RESP_207("\r\nhttp://localhost:7777/alpha ",
+ { MULTI_207(RESP_207("\r\nhttp://localhost/alpha ",
PSTAT_207(PROPS_207(APROP_207("alpha", "beta"))
"<D:status>\r\nHTTP/1.1 200 OK </D:status>"))),
"results(/alpha,prop:[{DAV:,alpha}='beta':{200 OK}];)//",
0, PF_SIMPLE},
/* attribute handling. */
- { MULTI_207(RESP_207("\r\nhttp://localhost:7777/alpha ",
+ { MULTI_207(RESP_207("\r\nhttp://localhost/alpha ",
PSTAT_207(PROPS_207("<D:alpha>"
"<D:foo D:fee='bar' bar='fee'>beta</D:foo></D:alpha>")
"<D:status>\r\nHTTP/1.1 200 OK </D:status>"))),
{
ne_session *sess;
struct infinite i = { header, repeats};
- int dbg;
CALL(make_session(&sess, serve_infinite, &i));
- dbg = ne_debug_mask;
-
ONN("unbounded PROPFIND response did not fail",
ne_simple_propfind(sess, "/", 0, NULL,
dummy_results, NULL) != NE_ERROR);
ne_session *sess;
const ne_uri *loc;
char *unp;
+ char *full_expect = NULL;
CALL(make_session(&sess, serve_redir, args));
ne_redirect_register(sess);
+ if (expect[0] == '/') {
+ ne_uri uri = {0};
+ ne_fill_server_uri(sess, &uri);
+ uri.path = (char *)expect;
+ full_expect = ne_uri_unparse(&uri);
+ expect = full_expect;
+ uri.path = NULL;
+ ne_uri_free(&uri);
+ }
+
CALL(process_redir(sess, args->path, &loc));
ONN("redirect location was NULL", loc == NULL);
ne_session_destroy(sess);
CALL(await_server());
+ if (full_expect) ne_free(full_expect);
return OK;
}
static int non_absolute(void)
{
struct redir_args args = {302, "/foo/bar/blah", PATH};
- return check_redir(&args, "http://localhost:7777/foo/bar/blah");
+ return check_redir(&args, "/foo/bar/blah");
}
static int relative_1(void)
{
struct redir_args args = {302, "norman", "/foo/bar"};
- return check_redir(&args, "http://localhost:7777/foo/norman");
+ return check_redir(&args, "/foo/norman");
}
static int relative_2(void)
{
struct redir_args args = {302, "wishbone", "/foo/bar/"};
- return check_redir(&args, "http://localhost:7777/foo/bar/wishbone");
+ return check_redir(&args, "/foo/bar/wishbone");
}
#if 0
* been encountered, or redirect hooks aren't registered. */
static int no_redirect(void)
{
- ne_session *sess = ne_session_create("http", "localhost", 7777);
+ ne_session *sess;
const ne_uri *loc;
+ CALL(session_server(&sess, single_serve_string,
+ "HTTP/1.1 200 OK\r\n" "Content-Length: 0\r\n\r\n"
+ "HTTP/1.0 302 Get Ye Away\r\n"
+ "Location: /blah\r\n" "\r\n"));
ONN("redirect non-NULL before register", ne_redirect_location(sess));
ne_redirect_register(sess);
ONN("initial redirect non-NULL", ne_redirect_location(sess));
- CALL(spawn_server(7777, single_serve_string,
- "HTTP/1.0 200 OK\r\n\r\n\r\n"));
ONREQ(any_request(sess, "/noredir"));
- CALL(await_server());
ONN("redirect non-NULL after non-redir req", ne_redirect_location(sess));
- CALL(spawn_server(7777, single_serve_string, "HTTP/1.0 302 Get Ye Away\r\n"
- "Location: /blah\r\n" "\r\n"));
CALL(process_redir(sess, "/foo", &loc));
CALL(await_server());
static ne_session *def_sess;
static ne_request *def_req;
+/* Last (real) port used by fail_request_with_error(). */
+static unsigned int fail_request_last_port;
+
static int prepare_request(server_fn fn, void *ud)
{
static char uri[100];
+ unsigned int port;
+
+ CALL(new_spawn_server(1, fn, ud, &port));
- def_sess = ne_session_create("http", "localhost", 7777);
+ def_sess = ne_session_create("http", "localhost", port);
sprintf(uri, "/test%d", test_num);
def_req = ne_request_create(def_sess, "GET", uri);
- CALL(spawn_server(7777, fn, ud));
-
return OK;
}
* 'expect' */
static int expect_response(const char *expect, server_fn fn, void *userdata)
{
- ne_session *sess = ne_session_create("http", "localhost", 7777);
+ ne_session *sess;
ne_buffer *buf = ne_buffer_create();
- ON(sess == NULL || buf == NULL);
- ON(spawn_server(7777, fn, userdata));
-
+ CALL(session_server(&sess, fn, userdata));
CALL(run_request(sess, 200, construct_get, buf));
-
- ON(await_server());
+ CALL(await_server());
ONN("response body match", strcmp(buf->data, expect));
* header. */
static int expect_no_body(const char *method, const char *resp)
{
- ne_session *sess = ne_session_create("http", "localhost", 7777);
- ne_request *req = ne_request_create(sess, method, "/first");
+ ne_session *sess;
+ ne_request *req;
ssize_t ret;
char *r = ne_malloc(strlen(resp) + sizeof(EMPTY_RESP));
strcpy(r, resp);
strcat(r, EMPTY_RESP);
- ON(spawn_server(7777, single_serve_string, r));
+ CALL(session_server(&sess, single_serve_string, r));
ne_free(r);
+ req = ne_request_create(sess, method, "/first");
ONN("failed to begin request", ne_begin_request(req));
ret = ne_read_response_block(req, buffer, BUFSIZ);
ONV(ret != 0, ("got response block of size %" NE_FMT_SSIZE_T, ret));
* 'body' both times. */
static int test_persist_p(const char *response, const char *body, int proxy)
{
- ne_session *sess = ne_session_create("http", "localhost", 7777);
+ ne_session *sess;
ne_buffer *buf = ne_buffer_create();
- ON(sess == NULL || buf == NULL);
- ON(spawn_server(7777, serve_twice, (char *)response));
-
if (proxy) {
- ne_session_proxy(sess, "localhost", 7777);
+ CALL(proxied_session_server(&sess, "http", "localhost", 1234,
+ serve_twice, (void *)response));
ne_set_session_flag(sess, NE_SESSFLAG_CONNAUTH, 1);
}
+ else {
+ CALL(session_server(&sess, serve_twice, (void *)response));
+ }
CALL(run_request(sess, 200, construct_get, buf));
* error if the request is then retried, and the test fails. */
static int fail_early_eof(const char *resp)
{
- ne_session *sess = ne_session_create("http", "localhost", 7777);
-
- CALL(spawn_server_repeat(7777, serve_eof, (char *)resp, 3));
+ ne_session *sess;
+ unsigned int port;
+ CALL(new_spawn_server(3, serve_eof, (char *)resp, &port));
+
+ sess = ne_session_create("http", "localhost", port);
ONREQ(any_request(sess, "/foo"));
ONN("request retried after early EOF",
any_request(sess, "/foobar") == NE_OK);
* second request reads the status-line. */
static int ptimeout_eof(void)
{
- ne_session *sess = ne_session_create("http", "localhost", 7777);
+ ne_session *sess;
+ unsigned int port;
- CALL(spawn_server_repeat(7777, single_serve_string,
- RESP200 "Content-Length: 0\r\n" "\r\n", 4));
+ CALL(new_spawn_server(4, single_serve_string,
+ RESP200 "Content-Length: 0\r\n" "\r\n",
+ &port));
+ sess = ne_session_create("http", "localhost", port);
CALL(any_2xx_request(sess, "/first"));
CALL(any_2xx_request(sess, "/second"));
* the body. */
static int ptimeout_eof2(void)
{
- ne_session *sess = ne_session_create("http", "localhost", 7777);
+ ne_session *sess;
+ unsigned int port;
- CALL(spawn_server_repeat(7777, single_serve_string,
- RESP200 "Content-Length: 0\r\n" "\r\n", 4));
+ CALL(new_spawn_server(4, single_serve_string,
+ RESP200 "Content-Length: 0\r\n" "\r\n",
+ &port));
+ sess = ne_session_create("http", "localhost", port);
CALL(any_2xx_request(sess, "/first"));
minisleep();
CALL(any_2xx_request_body(sess, "/second"));
/* TODO: add a ptimeout_reset too, if an RST can be reliably generated
* mid-connection. */
+static int incr_server(ne_socket *sock, void *arg)
+{
+ struct many_serve_args *msa = arg;
+
+ CALL(many_serve_string(sock, msa));
+
+ msa->count++;
+
+ return OK;
+}
+
/* Emulates a persistent connection timeout on the server. This tests
* the timeout occuring after between 1 and 10 requests down the
* connection. */
static int persist_timeout(void)
{
- ne_session *sess = ne_session_create("http", "localhost", 7777);
+ ne_session *sess;
ne_buffer *buf = ne_buffer_create();
- int n;
struct many_serve_args args;
-
- ON(sess == NULL || buf == NULL);
+ unsigned int port;
+ int n;
args.str = RESP200 "Content-Length: 5\r\n\r\n" "abcde";
+ args.count = 1;
+
+ CALL(new_spawn_server(9, incr_server, &args, &port));
- for (args.count = 1; args.count < 10; args.count++) {
+ sess = ne_session_create("http", "localhost", port);
- ON(spawn_server(7777, many_serve_string, &args));
+ for (args.count = 1; args.count < 10; args.count++) {
for (n = 0; n < args.count; n++) {
-
ONV(run_request(sess, 200, construct_get, buf),
("%d of %d, request failed: %s", n, args.count,
ne_get_error(sess)));
/* Ready for next time. */
ne_buffer_clear(buf);
}
-
- ON(await_server());
-
}
ne_session_destroy(sess);
* connections by default. */
static int no_persist_http10(void)
{
- ne_session *sess = ne_session_create("http", "localhost", 7777);
+ ne_session *sess;
+ unsigned int port;
+
+ CALL(new_spawn_server(4, single_serve_string,
+ "HTTP/1.0 200 OK\r\n"
+ "Content-Length: 5\r\n\r\n"
+ "abcde"
+ "Hello, world - what a nice day!\r\n",
+ &port));
- CALL(spawn_server_repeat(7777, single_serve_string,
- "HTTP/1.0 200 OK\r\n"
- "Content-Length: 5\r\n\r\n"
- "abcde"
- "Hello, world - what a nice day!\r\n",
- 4));
+ sess = ne_session_create("http", "localhost", port);
/* if the connection is treated as persistent, the status-line for
* the second request will be "Hello, world...", which will
for (m = 0; m < 2; m++) {
for (n = 0; bodies[n].body != NULL; n++) {
- ne_session *sess = ne_session_create("http", "localhost", 7777);
+ ne_session *sess;
ne_request *req;
- ON(sess == NULL);
- ON(spawn_server(7777, want_body, &(bodies[n])));
+ CALL(session_server(&sess, want_body, &(bodies[n])));
req = ne_request_create(sess, "PUT", "/");
ON(req == NULL);
static int fail_request_with_error(int with_body, server_fn fn, void *ud,
int forever, const char *error)
{
- ne_session *sess = ne_session_create("http", "localhost", 7777);
+ ne_session *sess;
ne_request *req;
+ unsigned int port;
int ret;
- ON(sess == NULL);
-
- if (forever) {
- ON(spawn_server_repeat(7777, fn, ud, 100));
- } else {
- ON(spawn_server(7777, fn, ud));
- }
-
+ CALL(new_spawn_server(forever ? 100 : 1, fn, ud, &port));
+ sess = ne_session_create("http", "localhost", port);
req = ne_request_create(sess, "GET", "/");
- ON(req == NULL);
if (with_body) {
static const char *body = "random stuff";
ne_request_destroy(req);
ne_session_destroy(sess);
+
+ fail_request_last_port = port;
return OK;
}
addr = ne_addr_resolve("localhost", 0);
for (ia = ne_addr_first(addr); ia && !connected; ia = ne_addr_next(addr))
- connected = ne_sock_connect(sock, ia, 7777) == 0;
+ connected = ne_sock_connect(sock, ia, port) == 0;
ne_addr_destroy(addr);
if (sock == NULL)
return 0;
* request eventually fails... */
CALL(fail_request(1, serve_close, NULL, 1));
/* if server died -> infinite loop was detected. */
- ret = !is_alive(7777);
+ ret = !is_alive(fail_request_last_port);
reap_server();
ONN("server aborted, infinite loop?", ret);
return OK;
static int close_not_retried(void)
{
int count = 0;
- ne_session *sess = ne_session_create("http", "localhost", 7777);
- CALL(spawn_server_repeat(7777, serve_close2, &count, 3));
+ ne_session *sess;
+ unsigned int port;
+ CALL(new_spawn_server(3, serve_close2, &count, &port));
+ sess = ne_session_create("http", "localhost", port);
ONN("request was retried after EOF", any_request(sess, "/foo") == NE_OK);
reap_server();
ne_session_destroy(sess);
static int fail_lookup(void)
{
- return fail_noserver("no.such.domain", 7777, NE_LOOKUP);
+ return fail_noserver("no.such.domain", 4242, NE_LOOKUP);
}
/* neon 0.23.0 to 0.23.3: if a nameserver lookup failed, subsequent
static int fail_connect(void)
{
- return fail_noserver("localhost", 7777, NE_CONNECT);
+ return fail_noserver("localhost", 32767, NE_CONNECT);
}
/* Test that the origin server hostname is NOT resolved for a proxied
* request. */
static int proxy_no_resolve(void)
{
- ne_session *sess = ne_session_create("http", "nonesuch2.invalid", 80);
- int ret;
-
- ne_session_proxy(sess, "localhost", 7777);
- CALL(spawn_server(7777, single_serve_string,
- RESP200 "Content-Length: 0\r\n\r\n"));
-
- ret = any_request(sess, "/foo");
- ne_session_destroy(sess);
-
- ONN("origin server name resolved when proxy used", ret == NE_LOOKUP);
-
- CALL(await_server());
-
- return OK;
+ ne_session *sess;
+ int ret;
+
+ CALL(proxied_session_server(&sess, "http", "no.such.server.invalid", 80,
+ single_serve_string,
+ RESP200 "Content-Length: 0\r\n\r\n"));
+
+ ret = any_request(sess, "/foo");
+ ne_session_destroy(sess);
+
+ ONN("origin server name resolved when proxy used", ret == NE_LOOKUP);
+
+ CALL(await_server());
+
+ return OK;
}
/* If the chunk size is entirely invalid, the request should be
return OK;
}
-static int serve_abort(ne_socket *sock, void *ud)
+static int serve_then_abort(ne_socket *sock, void *ud)
{
+ int *flag = ud;
+
+ if (*flag == 1) {
+ CALL(single_serve_string(sock,
+ RESP200 "Content-Length: 0\r\n\r\n"
+ RESP200 TE_CHUNKED "\r\n"
+ "zzzzz\r\n"));
+ *flag = 0;
+ }
+
exit(0);
}
static int retry_after_abort(void)
{
ne_session *sess;
+ int flag = 1;
/* Serve two responses down a single persistent connection, the
* second of which is invalid and will cause the request to be
* aborted. */
- CALL(make_session(&sess, single_serve_string,
- RESP200 "Content-Length: 0\r\n\r\n"
- RESP200 TE_CHUNKED "\r\n"
- "zzzzz\r\n"));
+ CALL(make_session(&sess, serve_then_abort, &flag));
- CALL(any_request(sess, "/first"));
+ ONREQ(any_request(sess, "/first"));
ONN("second request should fail", any_request(sess, "/second") == NE_OK);
+
CALL(await_server());
- /* spawn a server, abort the server immediately. If the
- * connection reset is interpreted as a p.conn timeout, a new
- * connection will be attempted, which will fail with
- * NE_CONNECT. */
- CALL(spawn_server(7777, serve_abort, NULL));
+ /* A third attempt to connect to the server should fail to
+ * connect, though this is racy since someone else might come
+ * along and steal the port... oh well. */
ONN("third request was retried",
- any_request(sess, "/third") == NE_CONNECT);
- reap_server();
+ any_request(sess, "/third") != NE_CONNECT);
ne_session_destroy(sess);
return OK;
{
ne_session *sess;
struct cr_args args;
+ ne_uri uri;
+ char *u;
CALL(make_session(&sess, single_serve_string, EMPTY_RESP EMPTY_RESP));
ONN("first hook never called", args.result == -1);
if (args.result) return FAIL;
- args.uri = "http://localhost:7777/bar";
+ memset(&uri, 0, sizeof uri);
+ ne_fill_server_uri(sess, &uri);
+ uri.path = "/bar";
+
+ args.uri = u = ne_uri_unparse(&uri);
args.result = -1;
-
+
+ ne_free(uri.host);
+ ne_free(uri.scheme);
+
/* force use of absoluteURI in request-uri */
ne_session_proxy(sess, "localhost", 7777);
ONN("second hook never called", args.result == -1);
if (args.result) return FAIL;
+ ne_free(u);
+
ne_session_destroy(sess);
return OK;
{
ne_session *sess;
ne_buffer *buf = ne_buffer_create();
- ne_sock_addr *sa = ne_addr_resolve("localhost", 0);
- char addr[64], expect[1024];
-
- ONN("could not resolve localhost", ne_addr_result(sa));
+ char expect[1024];
ne_snprintf(expect, sizeof expect,
- "lookup(localhost)-"
- "connecting(localhost,%s)-"
- "connected(localhost)-"
+ "lookup(127.0.0.1)-"
+ "connecting(127.0.0.1,127.0.0.1)-"
+ "connected(127.0.0.1)-"
"send(0,5000)-"
"send(5000,5000)-"
"recv(0,5)-"
"recv(5,5)-"
- "disconnected(localhost)-",
- ne_iaddr_print(ne_addr_first(sa), addr, sizeof addr));
-
- ne_addr_destroy(sa);
+ "disconnected(127.0.0.1)-");
CALL(make_session(&sess, single_serve_string, RESP200
"Content-Length: 5\r\n\r\n" "abcde"));
{
ne_session *sess;
ne_buffer *buf = ne_buffer_create();
- ne_sock_addr *sa = ne_addr_resolve("localhost", 0);
- char addr[64], expect[1024];
-
- ONN("could not resolve localhost", ne_addr_result(sa));
+ char expect[1024];
/* This sequence is not exactly guaranteed by the API, but it's
* what the current implementation should do. */
ne_snprintf(expect, sizeof expect,
- "lookup(localhost)-"
- "connecting(localhost,%s)-"
- "connected(localhost)-"
+ "lookup(127.0.0.1)-"
+ "connecting(127.0.0.1,127.0.0.1)-"
+ "connected(127.0.0.1)-"
"send(0,5000)-"
"send(5000,5000)-"
"recv(0,-1)-"
"recv(3,-1)-"
"recv(4,-1)-"
"recv(5,-1)-"
- "disconnected(localhost)-",
- ne_iaddr_print(ne_addr_first(sa), addr, sizeof addr));
-
- ne_addr_destroy(sa);
+ "disconnected(127.0.0.1)-");
CALL(make_session(&sess, single_serve_string,
RESP200 TE_CHUNKED "\r\n" ABCDE_CHUNKS));
ne_session *sess;
ne_inet_addr *ia = ne_iaddr_make(ne_iaddr_ipv4, raw_127);
const ne_inet_addr *ial[1];
+ unsigned int port;
- sess = ne_session_create("http", "www.example.com", 7777);
-
- CALL(spawn_server(7777, single_serve_string, EMPTY_RESP));
+ CALL(new_spawn_server(1, single_serve_string, EMPTY_RESP, &port));
+ sess = ne_session_create("http", "www.example.com", port);
ial[0] = ia;
const char *hostname, unsigned int port,
server_fn server, void *userdata)
{
+ unsigned int realport;
+
srv->server = server;
srv->userdata = userdata;
- CALL(spawn_server(7777, socks_server, srv));
+
+ CALL(new_spawn_server(1, socks_server, srv, &realport));
*sess = ne_session_create("http", hostname, port);
- ne_session_socks_proxy(*sess, srv->version, "localhost", 7777,
+ ne_session_socks_proxy(*sess, srv->version, "localhost", realport,
srv->username, srv->password);
return OK;
}
ne_request_destroy(req);
ne_session_destroy(sess);
+ ne_buffer_destroy(buf);
close(fd);
return await_server();
}
T(fail_long_header),
T(fail_on_invalid),
T(read_timeout),
- T(fail_lookup),
- T(fail_double_lookup),
T(fail_connect),
T(proxy_no_resolve),
T(fail_chunksize),
T(socks_v4_proxy),
T(send_length),
T(socks_fail),
+ T(fail_lookup),
+ T(fail_double_lookup),
T(NULL)
};
# enable glibc malloc safety checks
MALLOC_CHECK_=2
-export MALLOC_CHECK_
+MALLOC_PERTURB_=242
+export MALLOC_CHECK_ MALLOC_PERTURB_
cd data
/*
Tests for session handling
- Copyright (C) 2002-2006, Joe Orton <joe@manyfish.co.uk>
+ Copyright (C) 2002-2006, 2009, Joe Orton <joe@manyfish.co.uk>
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
static int fill_uri(void)
{
ne_uri uri = {0};
- ne_session *sess = ne_session_create("http", "localhost", 7777);
+ ne_session *sess = ne_session_create("http", "localhost", 1234);
ne_fill_server_uri(sess, &uri);
ONCMP("localhost", uri.host, "fill_uri", "host");
- ONN("port mis-match", uri.port != 7777);
+ ONN("port mis-match", uri.port != 1234);
ONCMP("http", uri.scheme, "fill_uri", "scheme");
ne_session_destroy(sess);
static int fill_proxy_uri(void)
{
ne_uri uri = {0};
- ne_session *sess = ne_session_create("http", "localhost", 7777);
+ ne_session *sess = ne_session_create("http", "localhost", 1234);
ne_fill_proxy_uri(sess, &uri);
return OK;
}
+static int proxies(void)
+{
+ ne_session *sess = ne_session_create("https", "localhost", 443);
+
+ ne_session_proxy(sess, "http", 80);
+ ne_set_addrlist2(sess, 80, NULL, 0);
+
+ ne_session_destroy(sess);
+
+ return OK;
+}
+
ne_test tests[] = {
T(fill_uri),
T(fill_proxy_uri),
T(privates),
T(get_scheme),
T(flags),
+ T(proxies),
T(NULL)
};
/*
Socket handling tests
- Copyright (C) 2002-2009, Joe Orton <joe@manyfish.co.uk>
+ Copyright (C) 2002-2011, Joe Orton <joe@manyfish.co.uk>
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
static int begin(ne_socket **sock, server_fn fn, void *ud)
{
struct serve_pair pair;
+ unsigned int port;
pair.fn = fn;
pair.userdata = ud;
- CALL(spawn_server(7777, wrap_serve, &pair));
- CALL(do_connect(sock, localhost, 7777));
+ CALL(new_spawn_server(1, wrap_serve, &pair, &port));
+ CALL(do_connect(sock, localhost, port));
ONV(ne_sock_connect_ssl(*sock, client_ctx, NULL),
("SSL negotation failed: %s", ne_sock_error(*sock)));
return OK;
/* non-SSL begin() function. */
static int begin(ne_socket **sock, server_fn fn, void *ud)
{
- CALL(spawn_server(7777, fn, ud));
- return do_connect(sock, localhost, 7777);
+ unsigned int port;
+ CALL(new_spawn_server(1, fn, ud, &port));
+ return do_connect(sock, localhost, port);
}
#endif
return OK;
}
+static int addr_canonical(void)
+{
+ ne_sock_addr *sa;
+ const char *h;
+
+ sa = ne_addr_resolve("localhost", NE_ADDR_CANON);
+ ONN("could not resolve localhost", sa == NULL);
+
+ h = ne_addr_canonical(sa);
+ ONN("no canonical name for localhost", h == NULL);
+
+ NE_DEBUG(NE_DBG_SOCKET, "canonical name: %s\n", h);
+
+ ne_addr_destroy(sa);
+
+ return OK;
+}
+
static int just_connect(void)
{
ne_socket *sock;
{
ne_socket *sock = ne_sock_create();
ne_inet_addr *ia;
+ unsigned int port;
ia = ne_iaddr_make(ne_iaddr_ipv4, raw_127);
ONN("ne_iaddr_make returned NULL", ia == NULL);
- CALL(spawn_server(7777, serve_close, NULL));
- ONN("could not connect", ne_sock_connect(sock, ia, 7777));
+ CALL(new_spawn_server(1, serve_close, NULL, &port));
+ ONN("could not connect", ne_sock_connect(sock, ia, port));
ne_sock_close(sock);
CALL(await_server());
{
ne_socket *sock = ne_sock_create();
ne_inet_addr *ia, *ia2;
- unsigned int port = 9999;
+ unsigned int port = 9999, realport;
int ret;
ia = ne_iaddr_make(ne_iaddr_ipv4, raw_127);
ONN("ne_iaddr_make returned NULL", ia == NULL);
- CALL(spawn_server(7777, serve_close, NULL));
- ONN("could not connect", ne_sock_connect(sock, ia, 7777));
+ CALL(new_spawn_server(1, serve_close, NULL, &realport));
+ ONN("could not connect", ne_sock_connect(sock, ia, realport));
ia2 = ne_sock_peer(sock, &port);
ret = ne_iaddr_cmp(ia, ia2);
ONV(ret != 0,
("comparison of peer with server address was %d", ret));
- ONV(port != 7777, ("got peer port %u", port));
+ ONV(port != realport, ("got peer port %u, expected %u", port, realport));
ne_sock_close(sock);
CALL(await_server());
ONV(ret != NE_SOCK_RESET && ret != NE_SOCK_CLOSED,
("write got %" NE_FMT_SSIZE_T " not reset or closure: %s", ret,
ne_sock_error(sock)));
- return good_close(sock);
+ ne_sock_close(sock);
+ return OK;
}
static int serve_truncate(ne_socket *sock, void *userdata)
ONV(ret != NE_SOCK_TRUNC,
("socket got error %d not truncation: `%s'", ret,
ne_sock_error(sock)));
- return finish(sock, 0);
+ ne_sock_close(sock);
+ CALL(await_server());
+ return OK;
}
#else
ne_socket *sock = ne_sock_create();
ne_inet_addr *ia;
char buf[128], line[256];
+ unsigned int srvport;
ia = ne_iaddr_make(ne_iaddr_ipv4, raw_127);
ONN("ne_iaddr_make returned NULL", ia == NULL);
- CALL(spawn_server(7777, serve_ppeer, NULL));
+ CALL(new_spawn_server(1, serve_ppeer, NULL, &srvport));
ne_sock_prebind(sock, addr ? ia : NULL, port ? 7778 : 0);
- ONN("could not connect", ne_sock_connect(sock, ia, 7777));
+ ONN("could not connect", ne_sock_connect(sock, ia, srvport));
ne_snprintf(line, sizeof line,
"%s@%d\n", ne_iaddr_print(ia, buf, sizeof buf),
static int begin_socks(ne_socket **sock, struct socks_server *srv,
server_fn server, void *userdata)
{
+ unsigned int port;
srv->server = server;
srv->userdata = userdata;
srv->say_hello = 1;
- CALL(spawn_server(7777, socks_server, srv));
- return do_connect(sock, localhost, 7777);
+ CALL(new_spawn_server(1, socks_server, srv, &port));
+ return do_connect(sock, localhost, port);
}
static int socks_proxy(void)
T(just_connect),
T(addr_connect),
T(addr_peer),
+ T(addr_canonical),
T(read_close),
T(peek_close),
T(single_read),
return OK;
}
+static int clicert_import(void)
+{
+ ne_ssl_client_cert *cc;
+ ne_buffer *buf = ne_buffer_create();
+
+ CALL(file_to_buffer("client.p12", buf));
+
+ cc = ne_ssl_clicert_import((unsigned char *)buf->data, ne_buffer_size(buf));
+ ONN("could not import client cert from buffer", cc == NULL);
+
+ ONN("failed to decrypt", ne_ssl_clicert_decrypt(cc, P12_PASSPHRASE));
+ ne_ssl_clicert_free(cc);
+ ne_buffer_destroy(buf);
+
+ return OK;
+}
+
/* Test that 'cert', which is signed by CA_CERT, is accepted
* unconditionaly. */
static int accept_signed_cert_for_hostname(char *cert, const char *hostname)
return accept_signed_cert(SERVER_CERT);
}
+#if 0 /* No longer works for modern SSL libraries, rightly so. */
/* Test for SSL operation when server uses SSLv2 */
static int simple_sslv2(void)
{
-#ifdef HAVE_OPENSSL
- return SKIP; /* this is breaking with current SSL. */
-#else
ne_session *sess = ne_session_create("https", "localhost", 7777);
struct ssl_server_args args = {SERVER_CERT, 0};
+
args.use_ssl2 = 1;
-
ne_set_session_flag(sess, NE_SESSFLAG_SSLv2, 1);
+
+ if (ne_get_session_flag(sess, NE_SESSFLAG_SSLv2) != 1) {
+ t_context("no SSLv2 support in SSL library");
+ ne_session_destroy(sess);
+ return SKIP;
+ }
+
CALL(any_ssl_request(sess, ssl_server, &args, CA_CERT, NULL, NULL));
ne_session_destroy(sess);
return OK;
-#endif
}
+#endif
/* Serves using HTTP/1.0 get-till-EOF semantics. */
static int serve_eof(ne_socket *sock, void *ud)
static int cache_verify(void)
{
ne_session *sess = DEFSESS;
- int ret, count = 0;
+ int count = 0;
struct ssl_server_args args = {SERVER_CERT, 0};
/* force verify cert. */
- ret = any_ssl_request(sess, ssl_server, &args, NULL, count_vfy,
- &count);
+ CALL(any_ssl_request(sess, ssl_server, &args, NULL, count_vfy,
+ &count));
CALL(spawn_server(7777, ssl_server, &args));
- ret = any_request(sess, "/foo2");
+ ONREQ(any_request(sess, "/foo2"));
CALL(await_server());
ONV(count != 1,
return -1;
}
-/* Helper function: run a request using the given self-signed server
- * certificate, and expect the request to fail with the given
- * verification failure flags. */
+/* Helper function for expected-to-fail SSL tests.
+ *
+ * An SSL server is spawned using 'cert' and 'key' as the key pair.
+ * The client will trust CA cert 'cacert', and use 'host' as the server
+ * name. If realhost is non-NULL, this address will be used to connect
+ * to in favour of host; the server is otherwise identified as 'host'.
+ * 'msg' must be a substring of the error string.
+ * 'failures' must equal the failure bitmask passed to the verify
+ * callback in the client.
+ * If none of the expected conditions is met, 'errstr' will be
+ * used in the test failure context.
+ */
static int fail_ssl_request_with_error2(char *cert, char *key, char *cacert,
- const char *host, const char *fakehost,
+ const char *host, const char *realhost,
const char *msg, int failures,
const char *errstr)
{
ne_session *sess = ne_session_create("https", host, 7777);
int gotf = 0, ret;
struct ssl_server_args args = {0};
- ne_sock_addr *addr;
- const ne_inet_addr *list[1];
+ ne_sock_addr *addr = NULL;
+ const ne_inet_addr **list = NULL;
- if (fakehost) {
- addr = ne_addr_resolve(fakehost, 0);
+ if (realhost) {
+ size_t n;
+ const ne_inet_addr *ia;
+
+ addr = ne_addr_resolve(realhost, 0);
ONV(ne_addr_result(addr),
- ("fake hostname lookup failed for %s", fakehost));
-
- list[0] = ne_addr_first(addr);
+ ("fake hostname lookup failed for %s", realhost));
+
+ NE_DEBUG(NE_DBG_SSL, "ssl: Using fake hostname '%s'\n", realhost);
+
+ for (n = 0, ia = ne_addr_first(addr); ia; ia = ne_addr_next(addr))
+ n++;
+
+ NE_DEBUG(NE_DBG_SSL, "ssl: Address count '%lu'\n", n);
+
+ list = ne_calloc(n * sizeof(*list));
+
+ for (n = 0, ia = ne_addr_first(addr); ia; ia = ne_addr_next(addr))
+ list[n++] = ia;
- ne_set_addrlist(sess, list, 1);
+ ne_set_addrlist(sess, list, n);
}
args.cert = cert;
ne_get_error(sess), errstr));
ne_session_destroy(sess);
+ if (addr) ne_addr_destroy(addr);
return OK;
}
T(read_write),
T(load_client_cert),
+ T(clicert_import),
T(simple),
+#if 0
T(simple_sslv2),
+#endif
T(simple_eof),
T(empty_truncated_eof),
T(fail_not_ssl),
#ifndef NE_HAVE_SSL
static int stub_ssl(void)
{
- ne_session *sess = ne_session_create("https", "localhost", 7777);
+ ne_session *sess = ne_session_create("https", "localhost", 1234);
ne_ssl_certificate *cert;
ne_ssl_client_cert *cc;
("'%s' and '%s' did not compare as different",
diff[n].left, diff[n].right));
- ONV(r1 + r2 != 0,
+ ONV(((r1 > 0) != (r2 < 0) || (r1 < 0) != (r2 > 0)),
("'%s' and '%s' did not compare reflexively (%d vs %d)",
diff[n].left, diff[n].right, r1, r2));
/*
Utility functions for HTTP client tests
- Copyright (C) 2001-2008, Joe Orton <joe@manyfish.co.uk>
+ Copyright (C) 2001-2009, Joe Orton <joe@manyfish.co.uk>
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
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
+#include <fcntl.h>
#include "ne_session.h"
#include "tests.h"
#include "utils.h"
-int make_session(ne_session **sess, server_fn fn, void *ud)
-{
- *sess = ne_session_create("http", "localhost", 7777);
- return spawn_server(7777, fn, ud);
-}
-
static int serve_response(ne_socket *s, const char *response)
{
CALL(discard_request(s));
return OK;
}
+int session_server(ne_session **sess, server_fn fn, void *userdata)
+{
+ unsigned int port;
+
+ CALL(new_spawn_server(1, fn, userdata, &port));
+
+ *sess = ne_session_create("http", "127.0.0.1", port);
+
+ return OK;
+}
+
+int proxied_session_server(ne_session **sess, const char *scheme,
+ const char *host, unsigned int fakeport,
+ server_fn fn, void *userdata)
+{
+ unsigned int port;
+
+ CALL(new_spawn_server(1, fn, userdata, &port));
+
+ *sess = ne_session_create(scheme, host, fakeport);
+
+ NE_DEBUG(NE_DBG_HTTP, "test: Using proxied session to port %u.\n", port);
+
+ ne_session_proxy(*sess, "127.0.0.1", port);
+
+ return OK;
+}
+
+static void fakesess_destroy(void *userdata)
+{
+ ne_inet_addr *addr = userdata;
+
+ ne_iaddr_free(addr);
+}
+
+int fakeproxied_session_server(ne_session **sess, const char *scheme,
+ const char *host, unsigned int fakeport,
+ server_fn fn, void *userdata)
+{
+ unsigned int port;
+ ne_inet_addr *addr;
+ const ne_inet_addr *alist[1];
+
+ CALL(new_spawn_server2(1, fn, userdata, &addr, &port));
+
+ alist[0] = addr;
+
+ *sess = ne_session_create(scheme, host, fakeport);
+
+ ne_set_addrlist2(*sess, port, alist, 1);
+
+ ne_hook_destroy_session(*sess, fakesess_destroy, addr);
+
+ return OK;
+}
+
+int make_session(ne_session **sess, server_fn fn, void *ud)
+{
+ return session_server(sess, fn, ud);
+}
+
+int file_to_buffer(const char *filename, ne_buffer *buf)
+{
+ char buffer[BUFSIZ];
+ int fd;
+ ssize_t n;
+
+ fd = open(filename, O_RDONLY);
+ ONV(fd < 0, ("could not open file %s", filename));
+
+ while ((n = read(fd, buffer, BUFSIZ)) > 0) {
+ ne_buffer_append(buf, buffer, n);
+ }
+
+ close(fd);
+
+ return 0;
+}
/*
neon-specific test utils
- Copyright (C) 2001-2008, Joe Orton <joe@manyfish.co.uk>
+ Copyright (C) 2001-2009, Joe Orton <joe@manyfish.co.uk>
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
int full_write(ne_socket *sock, const char *data, size_t len);
+/* Create a session with server process running fn(userdata). Sets
+ * test suite error on failure; initializes *sess with a new session
+ * on success. Uses an unspecified hostname/port for the server. */
+int session_server(ne_session **sess, server_fn fn, void *userdata);
+
+/* Create a session with server process running fn(userdata). Sets
+ * test suite error on failure; initializes *sess with a new session
+ * on success. Uses an unspecified hostname/port for the server;
+ * session is created as if using origin 'host:fakeport' via HTTP
+ * proxy to spawned server. */
+int proxied_session_server(ne_session **sess, const char *scheme,
+ const char *host, unsigned int fakeport,
+ server_fn fn, void *userdata);
+
+/* As per proxied_session_server, but uses a "fake" (direct) TCP proxy
+ * rather than an HTTP proxy. */
+int fakeproxied_session_server(ne_session **sess, const char *scheme,
+ const char *host, unsigned int fakeport,
+ server_fn fn, void *userdata);
+
+/* Read contents of file 'filename' into buffer 'buf'. */
+int file_to_buffer(const char *filename, ne_buffer *buf);
+
#endif /* UTILS_H */