Compare commits

..

479 Commits

Author SHA1 Message Date
Daniel Stenberg
6ebc2b2561 the web mirror system is dropped 2008-09-01 14:38:40 +00:00
Daniel Stenberg
95b817e8d7 stand back for 7.19.0 2008-09-01 14:28:48 +00:00
Daniel Stenberg
558f034007 mention the curl_off_t changes first 2008-09-01 14:27:24 +00:00
Daniel Stenberg
72ea805298 Add README.curl_off_t to the release archive 2008-09-01 14:25:37 +00:00
Yang Tse
79ffbf7fe1 MSVC adjustment 2008-08-31 12:12:35 +00:00
Daniel Stenberg
4f0d286d2c Added:
165 - "Problem with CURLOPT_RESUME_FROM and CURLOPT_APPEND" by Daniele Pinau,
      recipe: http://curl.haxx.se/mail/lib-2008-08/0439.html
2008-08-30 20:23:31 +00:00
Yang Tse
6fb5888e55 vc6curl.dsw and MSVC 6 IDE build directions 2008-08-30 04:13:31 +00:00
Dan Fandrich
b5810dfe9d Removed one, added two 2008-08-29 23:49:30 +00:00
Dan Fandrich
85a79f9d67 Added tests 1071 through 1074 to test automatic downgrading from HTTP 1.1
to HTTP 1.0 upon receiving a response from the HTTP server.  Tests 1072
and 1073 are similar to test 1069 in that they involve the impossible
scenario of sending chunked data to a HTTP 1.0 server.  All these currently
fail and are added to DISABLED.

Added test 1075 to test --anyauth with Basic authentication.
2008-08-29 23:42:39 +00:00
Daniel Stenberg
d24465b79a test 1070 added 2008-08-29 10:48:27 +00:00
Daniel Stenberg
c67a99ff27 - When libcurl was doing a HTTP POST and the server would respond with
"Connection: close" and actually close the connection after the
  response-body, libcurl could still have outstanding data to send and it
  would not properly notice this and stop sending. This caused weirdness and
  sad faces. http://curl.haxx.se/bug/view.cgi?id=2080222

  Note that there are still reasons to consider libcurl's behavior when
  getting a >= 400 response code while sending data, as Craig Perras' note
  "http upload: how to stop on error" specifies:
  http://curl.haxx.se/mail/archive-2008-08/0138.html
2008-08-29 10:47:59 +00:00
Daniel Stenberg
bae4e12302 we start over working towards 1.5.4 2008-08-29 08:55:02 +00:00
Daniel Stenberg
09df1cdb5c Version 1.5.3 2008-08-29 08:33:02 +00:00
Daniel Stenberg
2946d87e48 added the three people from RELEASE-NOTES and sorted the list alphabetically 2008-08-29 08:29:47 +00:00
Yang Tse
6a2d7bff1a Project and workspace files for VC6 IDE supporting 4 configurations:
curl - Win32 using libcurl DLL Debug
curl - Win32 using libcurl DLL Release
curl - Win32 using libcurl LIB Debug
curl - Win32 using libcurl LIB Release
2008-08-29 02:08:11 +00:00
Yang Tse
9b7b2b347f When not using large file support WIN32's lseek offset is a 'long'. 2008-08-28 22:41:35 +00:00
Daniel Stenberg
33638d5347 Andres Garcia pointed out these Makefile mistakes... 2008-08-28 20:08:37 +00:00
Yang Tse
2ae7d2e6ea Adjust curl_off_t definitions for DJGPP.
Ancient versions of DJGPP do not have a 64-bit data type.
2008-08-28 16:08:31 +00:00
Yang Tse
ffc490ef89 Issue #144 seems to be complete. It should no longer be a show-stopper. 2008-08-28 14:06:12 +00:00
Yang Tse
29b75ca46f ignore curlver.h.dist 2008-08-28 13:58:07 +00:00
Yang Tse
004dde18a7 Adjust generation of MSVC project files 2008-08-28 13:53:44 +00:00
Daniel Stenberg
3440e8d208 don't use the mirrors anymore 2008-08-28 11:40:37 +00:00
Daniel Stenberg
e138ae5ec9 - I'm abandoning the system with the web site mirrors (but keeping download
files bing mirrored) and thus I've changed the URL in the cookiejar header
  to no longer use curlm.haxx.se but instead use the main site curl.haxx.se
2008-08-28 11:35:54 +00:00
Daniel Stenberg
bf8ba229e0 we need to look over what libcurl does (not) do when error is received when it
wants to send data
2008-08-28 08:57:15 +00:00
Daniel Stenberg
19d0a7495e minor code indent fixes 2008-08-28 07:41:15 +00:00
Daniel Stenberg
099b62f124 - Dengminwen reported that libcurl would lock a (cookie) share twice (without
an unlock in between) for a certain case and that in fact works when using
  regular windows mutexes but not with pthreads'! Locks should of course not
  get locked again so this is now fixed.
  http://curl.haxx.se/mail/lib-2008-08/0422.html
2008-08-28 07:37:29 +00:00
Dan Fandrich
8ce78ca488 Fixed test case 1065 by changing the handling of CURLOPT_UPLOAD to set
the HTTP method to GET (or HEAD) when given a value of 0.
2008-08-28 06:28:07 +00:00
Yang Tse
fc9610919c This file must be kept in CVS with DOS style CR+LF line endings. 2008-08-28 03:31:54 +00:00
Dan Fandrich
e082d2403c Fixed a couple of typos 2008-08-28 02:32:41 +00:00
Dan Fandrich
370c3afc71 Added test 1069 to test PUT from stdin without content length. It fails
in a similar manner to test 1065 so is added to DISABLED.
2008-08-28 02:24:46 +00:00
Dan Fandrich
93357ef017 Added test 1069 to test PUT from stdin without content length. It fails
in a similar manner to test 1065 so is added to DISABLED.
2008-08-28 02:18:44 +00:00
Dan Fandrich
753592cc70 Added test case 1068 to do a simple HTTP PUT from stdin 2008-08-28 02:03:54 +00:00
Yang Tse
b150e6866d DLL's resource file specification for VC6 generated .dsp file 2008-08-28 01:22:26 +00:00
Yang Tse
2f475fa9ea Add /D "CURL_STATICLIB" to LIB's BASE configuration 2008-08-27 23:46:33 +00:00
Yang Tse
ecff50c2b4 VC6 generated .dsp file now supports 4 configurations:
libcurl - Win32 DLL Debug
libcurl - Win32 DLL Release
libcurl - Win32 LIB Debug
libcurl - Win32 LIB Release
2008-08-27 23:31:58 +00:00
Daniel Stenberg
6f53cf9cc6 s/you you/you/ thanks to hexo6 at wp.pl 2008-08-27 08:01:59 +00:00
Daniel Stenberg
1056202b48 spell! (most of it fixed by Tor Arntsen) 2008-08-27 06:10:47 +00:00
Dan Fandrich
709de3d621 Fix large file support for Symbian OS on the emulator. 2008-08-27 01:48:33 +00:00
Yang Tse
f9894f4ebc Don't abort configuration if recvfrom() is not available. 2008-08-27 00:25:02 +00:00
Dan Fandrich
74d3b80d70 Treat all ARM compilers (RVCT, GCC) equally on Symbian OS. They are both
compatible, and otherwise the dependency generation phase of the build
would throw warnings since the actual compiler isn't known at that time.
2008-08-26 22:36:03 +00:00
Dan Fandrich
4b01dfe369 Fixed out of memory problems that caused torture test failures in tests
1021 and 1067.
2008-08-26 21:28:57 +00:00
Dan Fandrich
fc09d10560 Added multi keyword 2008-08-26 20:21:59 +00:00
Dan Fandrich
59b2e3ea4a Added multi keyword 2008-08-26 20:11:12 +00:00
Yang Tse
243cf29793 Windows build targets don't use the 'SONAME' mechanism. 2008-08-26 16:46:46 +00:00
Yang Tse
9ded8fbe58 Another task completed and removed from #144:
- Enabling and disabling of large file support is now complete.
2008-08-26 13:40:19 +00:00
Yang Tse
9258928c2d minor language adjustment 2008-08-26 13:35:06 +00:00
Daniel Stenberg
132cd3aa2c spell out some benefits of this new approach of doing curl_off_t 2008-08-26 12:57:29 +00:00
Yang Tse
fef60d9d41 Added check and symbol definition for WIN32 file API usage in configure,
supporting configure's --disable-largefile option for WIN32 targets also.
Non-configure systems which do not use config-win32.h configuration file,
and want to use the WIN32 file API, must define USE_WIN32_LARGE_FILES or
USE_WIN32_SMALL_FILES as appropriate in their own configuration files.
2008-08-26 12:54:12 +00:00
Yang Tse
2fdd24c724 Fix default SIZEOF_OFF_T definition logic 2008-08-26 10:48:52 +00:00
Patrick Monnerat
852a02daff Fix _LARGE_FILES definition (thanks to Yang Tse for signaling the bug) 2008-08-26 09:26:06 +00:00
Yang Tse
2a6148716c Functionality only possible if recvfrom() is available. 2008-08-26 03:08:27 +00:00
Yang Tse
5ca692fc89 Three tasks completed and removed:
- Logic based on CURL_SIZEOF_CURL_OFF_T and SIZEOF_OFF_T already adjusted.
- Test case 557 already passes on all autobuilds.
- System off_t, or equivalent, size is finally not recorded in curlbuild.h
  for this release. SIZEOF_OFF_T from config file is used.
2008-08-26 01:55:05 +00:00
Yang Tse
3e2487493e Use SIZEOF_OFF_T definition from config file 2008-08-26 01:40:19 +00:00
Patrick Monnerat
fdcb0cd2bc Adapting OS400 build scripts to new features: new curlbuild.h file and soname in VERSION --> VERSIONINFO 2008-08-25 13:58:45 +00:00
Yang Tse
4962e1772d Add missing preprocessor symbol definition checks 2008-08-25 13:42:53 +00:00
Daniel Stenberg
d7d5618498 remove some leftover debug code 2008-08-25 12:50:02 +00:00
Daniel Stenberg
3f3d6ebe66 if the size of off_t is not the same as curl_off_t, this is not like how libcurl
used to get built < 7.19.0 so we enforce an soname bump and display a warning
2008-08-25 12:49:13 +00:00
Yang Tse
ec28988bfa leftover 2008-08-25 03:50:51 +00:00
Yang Tse
db23538898 George Neill's fix acountry sample application compilation failure. 2008-08-25 03:44:43 +00:00
Yang Tse
423a18cecc Brad House's validation that DNS response address matches the request address 2008-08-25 03:34:50 +00:00
Yang Tse
f164260eee For congruency sake with the naming of other CURL_XXXXXX_CURL_OFF_T macros,
the name of the curl_off_t data type used now becomes CURL_TYPEOF_CURL_OFF_T

CURL_OFF_T -> CURL_TYPEOF_CURL_OFF_T
2008-08-25 01:18:49 +00:00
Yang Tse
a091121293 Rename some shell vars with more descriptive names:
x_typeof -> curl_typeof_curl_off_t
x_sizeof -> curl_sizeof_curl_off_t
x_format -> curl_format_curl_off_t
u_format -> curl_format_curl_off_tu
2008-08-25 00:56:50 +00:00
Yang Tse
d744c85310 Re-enable all tests on x86_64 and ia64. 2008-08-24 23:26:07 +00:00
Yang Tse
c9f2c54c49 Remove debug tracing and nearly all changes introduced since revision 1.72
The effective result of this commit is revision 1.72 plus two changed lines. These
can be viewed in http://cool.haxx.se/cvs.cgi/curl/lib/mprintf.c.diff?r1=1.72&r2=1.77
2008-08-24 23:21:46 +00:00
Daniel Stenberg
f29d223ed5 58. It seems sensible to be able to use CURLOPT_NOBODY and
CURLOPT_FAILONERROR with FTP to detect if a file exists or not, but it is
  not working: http://curl.haxx.se/mail/lib-2008-07/0295.html
2008-08-24 22:08:42 +00:00
Daniel Stenberg
8dabd34432 Introduced the configure option --enable-soname-bump that lets a user enforce
an SONAME bump.
2008-08-24 21:26:42 +00:00
Daniel Stenberg
a104a365e3 Added firefox-db2pem.sh to the release archive 2008-08-24 20:42:51 +00:00
Yang Tse
62d94ff342 Fix wrong signed int formatting string directive in test case #557.
This error did not cause test failures on systems where sizeof(int) == sizeof(long).
2008-08-24 17:10:24 +00:00
Yang Tse
cbc04a7d40 Debug trace curl_mprintf() on x86_64 and ia64 systems. 2008-08-24 16:01:15 +00:00
Yang Tse
71d3c5bf41 Disable all tests except #557 on x86_64 and ia64 to debug trace curl_mprintf() on these systems. 2008-08-24 15:57:52 +00:00
Yang Tse
bc69e46ad1 x86_64 fixes 2008-08-24 10:40:38 +00:00
Yang Tse
13f035b905 x86_64 fixes 2008-08-24 03:59:43 +00:00
Yang Tse
79cbe50894 Test if type casting a 'signed int' to a 'signed long long' fails to do sign extension on x86_64. 2008-08-24 00:15:59 +00:00
Daniel Stenberg
1c04aa54a7 - Running 'make ca-firefox' in the root build dir will now run the new
firefox-db2pem.sh conversion script that converts a local Firefox db of ca
  certs into PEM format, suitable for use with a OpenSSL or GnuTLS built
  libcurl.
2008-08-23 22:02:41 +00:00
Gunter Knauf
b718283327 removed obsolete slash in URL. 2008-08-23 21:31:09 +00:00
Daniel Stenberg
b34390017b added test case 1067 to verify --referer "firstone.html;auto" 2008-08-23 21:27:58 +00:00
Daniel Stenberg
8980f89370 revert accidental commit of test code 2008-08-23 12:14:35 +00:00
Daniel Stenberg
f46d47239f revert accidental commit 2008-08-23 12:14:05 +00:00
Daniel Stenberg
13dc82b9d4 - Constantine Sapuntzakis fixed a bug when doing proxy CONNECT with the multi
interface, and the proxy would send Connection: close during the
  authentication phase.  http://curl.haxx.se/bug/view.cgi?id=2069047
2008-08-23 12:11:38 +00:00
Daniel Stenberg
a243dd4587 mention the no soname bump too 2008-08-23 11:37:42 +00:00
Daniel Stenberg
9d5d6c557b my first take at documenting the curl_off_t situation when doing an upgrade
< 7.19.0 to >= 7.19.x
2008-08-23 11:34:42 +00:00
Daniel Stenberg
a604682805 Andy Tsouladze's fix to kill the knowledge of servers properly after they have
been killed.
2008-08-23 11:25:14 +00:00
Yang Tse
70b1cd798f explicit value assignment for comparison result 2008-08-23 02:35:16 +00:00
Yang Tse
578f42d588 typecast constant in comparison 2008-08-23 02:04:55 +00:00
Dan Fandrich
e3ad6d2bd1 Fixed a problem when --dump-header - was given with more than one URL,
which caused an error when the second header was dumped due to stdout
being closed.  Added test case 1066 to verify.  Also fixed a potential
problem where a closed file descriptor might be used for an upload
when more than one URL is given.
2008-08-22 22:57:25 +00:00
Daniel Stenberg
4b64a8d20d 161 - test case 1065 failure (HTTP PUT with one file but two URLs)
http://curl.haxx.se/mail/archive-2008-08/0075.html
2008-08-22 21:37:10 +00:00
Yang Tse
fcc8700218 Reinstate struct_stat definition that got lost in previous commit. 2008-08-22 19:01:00 +00:00
Yang Tse
e5b713ee63 Increase to 20 the number of CVS update retries. 2008-08-22 18:18:20 +00:00
Yang Tse
9849c6b847 Adjustments to better select/differentiate when large/small file
support is provided using WIN32 functions directly.
2008-08-22 18:09:03 +00:00
Yang Tse
9bb5da968c Improved curl_m*printf() integral data type size and signedness handling 2008-08-22 11:11:33 +00:00
Daniel Stenberg
d5a71fd567 Removed issue #154 due to the massive problems I've had to repeat it and since
this really hasn't bitten anyone else. The issuer of the report (Felix) suggested
the closure himself and he will get back when (if?) he manage to get a more
reliable way to see the problem.

154 - bug #2041827 "Segfault in http_output_auth w/ FORBID_REUSE (7.18.2)"
2008-08-22 09:00:47 +00:00
Daniel Stenberg
0f98ba4729 Jamie Lokier is always helpful and this time around too... 2008-08-22 07:59:42 +00:00
Daniel Stenberg
a6a2174bf7 Sort of hackish approach to get the off_t size before large file support
is enabled (or skipped). Thanks to Jamie Lokier for the nice work-around the
cached-check-problem: http://curl.haxx.se/mail/lib-2008-08/0331.html
2008-08-22 07:58:30 +00:00
Yang Tse
f07c3171e3 cleanup the BOOL usage 2008-08-22 06:53:01 +00:00
Daniel Stenberg
6cb1e3f3fa 57. On VMS-Alpha: When using an http-file-upload the file is not sent to the
Server with the correct content-length.  Sending a file with 511 or less
  bytes, content-length 512 is used.  Sending a file with 513 - 1023 bytes,
  content-length 1024 is used.  Files with a length of a multiple of 512 Bytes
  show the correct content-length. Only these files work for upload.
  http://curl.haxx.se/bug/view.cgi?id=2057858
2008-08-21 18:28:58 +00:00
Daniel Stenberg
81b64f69a5 use a more updated certdata.txt URL 2008-08-21 17:51:22 +00:00
Gisle Vanem
17e1f58fd6 Work around a scanf() bug in djgpp 2.04. The assignments for this
format is working okay. But the return value is incorrectly EOF.
2008-08-21 16:20:38 +00:00
Gisle Vanem
582833b338 Added '#define HAVE_STRUCT_IN6_ADDR 1' needed when
building with 'USE_ARES'.
2008-08-21 14:08:47 +00:00
Gisle Vanem
48be4fa069 Added rule to generate '../include/curl/curlbuild.h'. 2008-08-21 13:51:07 +00:00
Gisle Vanem
2af05bdd3c Assume we have 'CRYPTO_cleanup_all_ex_data()' on OpenSSL/DOS too. 2008-08-21 13:47:18 +00:00
Yang Tse
4dbfc91e2b MSVC's __int64 data type is only available when _INTEGRAL_MAX_BITS >= 64 2008-08-21 06:58:12 +00:00
Yang Tse
95cef39def Test case 557 now also verifies signed and unsigned int formatting. 2008-08-21 05:19:40 +00:00
Yang Tse
00fb5bcf35 Old logic based on ENABLE_64BIT and HAVE_LONGLONG already revisited and adjusted.
Old logic based on CURL_SIZEOF_CURL_OFF_T is only partially adjusted.
2008-08-21 03:16:38 +00:00
Yang Tse
42eeb93d99 Fixed a couple of bugs in libcurl's internal curl_m*printf() functions. 2008-08-21 01:55:33 +00:00
Yang Tse
afe7bb4b33 Fix a LONG_MIN and LLONG_MIN related bug in internal m*printf() 2008-08-21 01:49:19 +00:00
Yang Tse
0f5f91df0b fix the output name 2008-08-21 00:13:48 +00:00
Yang Tse
f209a4804b Fix one bug detected thanks to test case 557. 2008-08-21 00:12:03 +00:00
Yang Tse
5794ffe4bd Some data type size adjustments. 2008-08-21 00:10:27 +00:00
Yang Tse
ceb49d3742 Get rid of ENABLE_64BIT symbol definition and usage.
Improve HAVE_LONGLONG symbol description.
2008-08-21 00:06:15 +00:00
Yang Tse
44142f8234 Update of lib/Makefile.Watcom. 2008-08-20 23:40:40 +00:00
Yang Tse
347213d124 Export 'ares_process_fd' too. 2008-08-20 23:38:36 +00:00
Yang Tse
8ca51bc68a Added option to use c-ares resolver lib. 2008-08-20 23:35:48 +00:00
Yang Tse
56f852a64f Use 'Curl_inet_pton()' instead of 'inet_pton()'. 2008-08-20 23:32:50 +00:00
Yang Tse
1c68e79091 Simplify condition check 2008-08-20 23:29:07 +00:00
Daniel Stenberg
473a050f0b the .netrc curl checks for is called _netrc on windows bug report #2061610 2008-08-20 21:06:56 +00:00
Dan Fandrich
6768e81d5d Added an edited version of Vincent Le Normand's documentation of SFTP quote
commands to the man pages.
2008-08-20 19:45:43 +00:00
Daniel Stenberg
3743f515cf - Phil Pellouchoud pointed out that the windows version of libcurl had a
memory leak because it never called the OpenSSL function
  CRYPTO_cleanup_all_ex_data() as it was supposed to. This was because of a
  missing define in config-win32.h!
2008-08-20 19:29:00 +00:00
Yang Tse
3e0b6a7d1f Update test case 557 2008-08-18 18:52:13 +00:00
Yang Tse
ef72f7d513 #159 and #160 already done.
Add more tasks to #144.
2008-08-18 10:11:26 +00:00
Yang Tse
2f71461b29 Added test case 557 to verify libcurl's internal curl_m*printf() functions
formatting functionality when handling signed and unsigned longs, as well as
our curl_off_t data type.
2008-08-18 09:58:08 +00:00
Gisle Vanem
d8cab4c133 Pick-up programs from Makefile.inc. 2008-08-17 16:20:23 +00:00
Gisle Vanem
95a093e97b Replace 'HttpPost' with 'curl_httppost'. 2008-08-17 13:55:24 +00:00
Gisle Vanem
68bb51c55b Rewritten to also produce a static library (libcurl_wc.lib). 2008-08-17 13:34:15 +00:00
Yang Tse
fb8fe6f2b3 OpenSSl enabled NetWare builds are changed to use the 'openssl' subdirectory
when including the OpenSSL header files. This is the recommended setting, this
prevents the undesired inclusion of header files with the same name as those
of OpenSSL but which do not belong to the OpenSSL package. The visible change
from previously released libcurl versions is that now OpenSSl enabled NetWare
builds also define USE_OPENSSL in config files, and that OpenSSL header files
must be located in a subdirectory named 'openssl'.
2008-08-17 13:25:54 +00:00
Yang Tse
3e61c90dbe Adjust usage of conditional definition of USE_OPENSSL 2008-08-17 01:57:10 +00:00
Yang Tse
ac18b471d2 libcurl internal base64.h header file renamed to curl_base64.h 2008-08-17 00:25:38 +00:00
Yang Tse
bbe2386bff libcurl internal md5.h header file renamed to curl_md5.h 2008-08-17 00:01:26 +00:00
Yang Tse
2f47248e3c Added #159 and #160 2008-08-16 17:12:42 +00:00
Gisle Vanem
315bb970a5 Ops, remove 'use_vc'. 2008-08-16 17:05:42 +00:00
Gisle Vanem
65b0f6049d Support Watt-32 under Win32. 2008-08-16 16:42:44 +00:00
Yang Tse
0033535e21 Oops, missed FORMAT_OFF_TU 2008-08-16 03:40:25 +00:00
Yang Tse
3e4a8cb800 Fix Use of conditional definition of USE_OPENSSL 2008-08-16 03:27:07 +00:00
Yang Tse
ad638da2c2 Library internal only C preprocessor macros FORMAT_OFF_T and FORMAT_OFF_TU
remain in use as internal curl_off_t print formatting strings for the internal
*printf functions which still cannot handle print formatting string directives
such as "I64d", "I64u", and others available on MSVC, MinGW, Intel's ICC, and
other DOS/Windows compilers.

This reverts previous commit part which did:

FORMAT_OFF_T  -> CURL_FORMAT_CURL_OFF_T
FORMAT_OFF_TU -> CURL_FORMAT_CURL_OFF_TU
2008-08-16 01:33:59 +00:00
Dan Fandrich
a923d8541c Added test case 1065 to test a PUT with a single file but two URLs. This
was discovered to be problematic while investigating an incident reported by
Von back in May.  curl in this case doesn't include a Content-Length: or
Transfer-Encoding: chunked header which is illegal. This test case is
added to DISABLED until a solution is found.
2008-08-15 19:18:46 +00:00
Yang Tse
66fb9ca5f6 For congruency sake with the naming of other CURL_XXXXXX_CURL_OFF_T macros,
the names of the curl_off_t formatting string directives now become
CURL_FORMAT_CURL_OFF_T and CURL_FORMAT_CURL_OFF_TU.

CURL_FMT_OFF_T  -> CURL_FORMAT_CURL_OFF_T
CURL_FMT_OFF_TU -> CURL_FORMAT_CURL_OFF_TU

Remove the use of an internal name for the curl_off_t formatting string directives
and use the common one available from the inside and outside of the library.

FORMAT_OFF_T  -> CURL_FORMAT_CURL_OFF_T
FORMAT_OFF_TU -> CURL_FORMAT_CURL_OFF_TU
2008-08-15 02:58:15 +00:00
Yang Tse
11cb78c5f8 curlbuild.h is a generated file on configure-capable systems 2008-08-14 23:55:24 +00:00
Dan Fandrich
527a5f0980 Added Range keyword 2008-08-14 19:18:18 +00:00
Dan Fandrich
6e878d2ca4 Added test 1063 to test an invalid large range on a file: 2008-08-14 19:18:01 +00:00
Dan Fandrich
cf30b24706 Fixed unused variable warning 2008-08-14 18:41:37 +00:00
Yang Tse
709a2ed474 Take three at trying to detect signed and unsigned curl_off_t integer constant
suffixes, using a test-and-try suffix approach letting the compiler validate it.
2008-08-14 18:30:19 +00:00
Yang Tse
ecd30cc8bb When using our internal curlx_strtoll function NEED_CURL_STRTOLL must be defined,
the source code of curlx_strtoll is excluded if NEED_CURL_STRTOLL isn't defined.
2008-08-14 11:56:55 +00:00
Yang Tse
0105ad5e39 CURL_LLONG_MIN should now be signed 2008-08-14 10:30:45 +00:00
Yang Tse
cebaab8ee5 Use our CURL_LLONG_MAX and CURL_LLONG_MIN which are defined with the proper suffix. 2008-08-14 03:39:45 +00:00
Yang Tse
34281925d6 Change CURL_CHECK_DEF_INTXX_C suffix definition detection.
Add debug tracing for CURL_CHECK_DEF_INTXX_C.
2008-08-14 01:39:49 +00:00
Daniel Stenberg
e90c4fa770 Fixed:
155 - bug #2038004 "Curl OpenSSL not compatible with 7.17 or 7.18"

156 - proxy CONNECT issue (details not public yet due to possible security impact)
2008-08-13 21:05:13 +00:00
Yang Tse
a06e077938 Use autoconf's result of AC_CHECK_SIZEOF(long) in CURL_CONFIGURE_LONG 2008-08-13 19:49:19 +00:00
Yang Tse
7bdae7be4f Ensure that the compiler 'knows' the 'long' type in CURL_CONFIGURE_LONG 2008-08-13 18:57:48 +00:00
Yang Tse
c125d83e9e Sync config.h generation from lib/Makefile.netware and src/Makefile.netware 2008-08-13 18:43:53 +00:00
Yang Tse
2abf9221e3 Using the name of a macro inside AC_MSG_WARN takes aclocal to NeverLand. 2008-08-13 17:23:13 +00:00
Yang Tse
6f1e89085c Adjust IBM C compiler CURL_SIZEOF_LONG 2008-08-13 16:14:22 +00:00
Yang Tse
5303cdc4af Remove first version of comment not intended to be finally committed. 2008-08-13 15:48:44 +00:00
Yang Tse
feb03e4717 The size of long is a build time characteristic and as such it is now recorded
in curlbuild.h as CURL_SIZEOF_LONG. Definition now done from configure process
and in CVS curlbuild.h.dist for non-configure systems.
2008-08-13 15:32:20 +00:00
Yang Tse
64e3a091c3 Split comparison among several lines for debugging 2008-08-13 13:07:50 +00:00
Daniel Stenberg
a2c50a980c on second thought, let's remove this number from here since it doesn't really
belong among the release numbers anyway
2008-08-13 10:57:11 +00:00
Daniel Stenberg
23478b891f dead mirrors removed => http://curl.haxx.se/mail/lib-2008-08/0208.html 2008-08-13 10:55:23 +00:00
Daniel Stenberg
aab2d52b25 httpcustomheader.c is a new tiny example showing a HTTP request with a custom
header replacing an internal one
2008-08-13 08:51:52 +00:00
Gisle Vanem
9a9041f1ce Watcom doesn't have <sys/time.h>. 2008-08-13 08:32:22 +00:00
Gisle Vanem
0aa704935b Remved '-dDEBUG_THREADING_GETADDRINFO' (no longer used). 2008-08-13 08:19:51 +00:00
Gisle Vanem
ede7f8f5de Update dependencies. 2008-08-13 08:17:50 +00:00
Gisle Vanem
3c317d2fac Update dependencies. 2008-08-13 07:30:21 +00:00
Gisle Vanem
b55b0258e0 MingW uses gcc. Hence the suffixes for 64-bit are 'LL' and 'ULL'. 2008-08-13 07:16:20 +00:00
Yang Tse
55a8098d48 Adjustment due to curl_off_t no longer following off_t 2008-08-13 03:05:00 +00:00
Dan Fandrich
389e50ff1e Added a few user-visible bug fixes 2008-08-13 00:43:46 +00:00
Gunter Knauf
1df4043ad7 sync src makefile with lib makefile. 2008-08-12 21:25:11 +00:00
Dan Fandrich
b000b8a736 Removed unneeded header files 2008-08-12 20:21:40 +00:00
Dan Fandrich
7eab7fa353 Fixed a buffer overflow problem in Curl_proxyCONNECT that could occur
when a server responded with long headers and data.  Luckily, the buffer
overflowed into another unused buffer, so no actual harm was done.
Added test cases 1060 and 1061 to verify.
2008-08-12 20:07:52 +00:00
Yang Tse
58f7c82d52 Fix 'result' may be used uninitialized in function readwrite_data() 2008-08-12 19:09:20 +00:00
Yang Tse
4d1cd0da93 Fix curl_off_t sized constants usage 2008-08-12 18:49:33 +00:00
Dan Fandrich
9ee7a014c9 Handle short reads 2008-08-12 18:32:55 +00:00
Yang Tse
e1ab7db87d DOS/Windows 'shells' eat echoed percent sign characters unless escaped. 2008-08-12 10:08:14 +00:00
Daniel Stenberg
14a5596346 - Andy Tsouladze fixed runtests.pl to not attempt to execute the stunnel
_directory_ if that happened to appear in the path!
2008-08-12 07:21:39 +00:00
Yang Tse
2eba5f33b9 Fix CURL_CHECK_DEF_INTXX_C suffix definition detection 2008-08-12 07:20:44 +00:00
Yang Tse
60a3773c50 Added macros for minimum-width signed and unsigned curl_off_t integer
constants CURL_OFF_T_C and CURL_OFF_TU_C. The clever double helper macro
used internally to provide its functionality is thanks to Lars Nilsson.
2008-08-12 03:00:24 +00:00
Dan Fandrich
e8e8177e9d Added HTTP CONNECT keywords 2008-08-11 23:16:48 +00:00
Dan Fandrich
f1fe04245a Fixed a boundary condition error in ftp_readresp() whereby a non-terminal
line of a multiline FTP response whose last byte landed exactly at the end
of the BUFSIZE-length buffer would be treated as the terminal response
line.  The following response code read in would then actually be the
end of the previous response line, and all responses from then on would
correspond to the wrong command. Test case 1062 verifies this.

Stop closing a never-opened ftp socket.
2008-08-11 23:16:08 +00:00
Daniel Stenberg
8bb208e8f8 152 + 153 are fixed! 2008-08-11 20:30:37 +00:00
Daniel Stenberg
f8a3aa91cd - Constantine Sapuntzakis filed bug report #2042430
(http://curl.haxx.se/bug/view.cgi?id=2042430) with a patch. "NTLM Windows
  SSPI code is not thread safe". This was due to libcurl using static
  variables to tell wether to load the necessary SSPI DLL, but now the loading
  has been moved to the more suitable curl_global_init() call.
2008-08-11 20:29:36 +00:00
Daniel Stenberg
019bde82ce - Constantine Sapuntzakis filed bug report #2042440
(http://curl.haxx.se/bug/view.cgi?id=2042440) with a patch. He identified a
  problem when using NTLM over a proxy but the end-point does Basic, and then
  libcurl would do wrong when the host sent "Connection: close" as the proxy's
  NTLM state was erroneously cleared.
2008-08-11 19:26:01 +00:00
Yang Tse
ca5e38751c Ooops 2008-08-11 19:00:26 +00:00
Yang Tse
b5b25b39e9 Added missing signed and unsigned curl_off_t integer constant suffixes for
internal and external use. CURL_SUFFIX_CURL_OFF_T, CURL_SUFFIX_CURL_OFF_TU.
2008-08-11 18:27:21 +00:00
Daniel Stenberg
1784523cc6 added two known topics for 7.19.1 2008-08-11 12:41:13 +00:00
Daniel Stenberg
d71d10adbc five more bugs I'd like to get fixed or at least considered before 7.19.0 2008-08-11 10:55:47 +00:00
Yang Tse
40fb750589 Old logic based on CURL_SIZEOF_CURL_OFF_T, ENABLE_64BIT, HAVE_LONGLONG,
has to be revisited and adjusted as appropriate.

Enabling and disabling of large file support needs further inspection.
2008-08-11 03:26:23 +00:00
Yang Tse
62a6b8d4a6 Fix NetWare missing curl_off_t typedef!! 2008-08-11 02:40:19 +00:00
Yang Tse
24b1890710 s/SIZEOF_CURL_OFF_T/CURL_SIZEOF_CURL_OFF_T/g 2008-08-11 01:22:57 +00:00
Yang Tse
3a1d28379a Die when curlbuild.h is not created or available 2008-08-11 00:15:20 +00:00
Gunter Knauf
c57285d199 fixed creation of curlbuild.h. 2008-08-10 22:28:51 +00:00
Yang Tse
68cfe929c4 Fix NetWare curlbuild.h
NetWare curlbuild.h settings depend on whether LIBC or CLIB is used.

The NetWare specific Makefile is capable of knowing which target is being built.
So, finally, the NetWare Makefile will take care of generating curlbuild.h
2008-08-10 18:33:41 +00:00
Yang Tse
6237fd2c16 Fix: Remove now this SIZEOF_CURL_OFF_T symbol definition.
This should have been done with the initial 64-bit curl_off_t patch.
2008-08-10 00:39:45 +00:00
Yang Tse
b023f9bd2a When running testcurl.pl display definitions from curlbuild.h 2008-08-09 23:14:40 +00:00
Yang Tse
b7ac885d38 Remove debug tracing for DO_CURL_OFF_T_CHECK and CURL_CHECK_DEF 2008-08-09 21:10:31 +00:00
Yang Tse
cbd9dcbe41 Use int64_t in favour of __int64 for curl_off_t when both are available. 2008-08-09 17:46:25 +00:00
Yang Tse
4594187732 Improve CURL_CHECK_DEF 2008-08-09 17:26:24 +00:00
Yang Tse
63818f8488 Fix IBM C and DEC/Compaq C compiler detection 2008-08-09 17:01:17 +00:00
Yang Tse
8af61cdb66 Remove some redundancy 2008-08-09 15:28:13 +00:00
Dan Fandrich
ab83c0fd5b Refactored Curl_readwrite() into a number of smaller functions. 2008-08-08 20:37:54 +00:00
Yang Tse
3cc40a2584 Add debug tracing for DO_CURL_OFF_T_CHECK 2008-08-08 17:42:58 +00:00
Yang Tse
c11933b3fd Remove some redundancy 2008-08-08 16:53:02 +00:00
Yang Tse
4687699726 Remove potential overquoting 2008-08-08 16:25:07 +00:00
Yang Tse
012dcb4893 Remove rule no longer needed since tests/testcurl.pl revision 1.63
See CVS commit comment on tests/testcurl.pl revision 1.63
2008-08-08 15:16:59 +00:00
Yang Tse
f01d18e4b9 Reintroduce the adjustment previously done in testcurl.pl so that it copies the
CVS checked out curlbuild.h.dist as curlbuild.h for any non-configure target
when host system is not running buildconf.bat.

All the curlbuild.h stuff was done taking in consideration that no adjustment
would be needed in non-configure makefiles.

As it is documented, when trying to build on non-configure capable systems or on
systems which for any reason don't run the true configure script, it is required
to have the proper curlbuild.h in place before calling any makefile.

Due to the hardcore memory debugging stuff c-ares enabled debug builds also need
the file in the proper place before attempting to build c-ares.
2008-08-08 12:34:01 +00:00
Yang Tse
dabd3cd355 Add debug tracing for CURL_CHECK_DEF 2008-08-08 11:34:08 +00:00
Dan Fandrich
fa001f27a5 Made ftp a required feature 2008-08-08 07:51:50 +00:00
Dan Fandrich
40b2e06a7f Added test1059 to test the FTP proxy tunnel problem fixed July 11. 2008-08-08 07:26:30 +00:00
Yang Tse
8008499028 Peek at predefined symbols done. and now removed.
Netware's autobuilds gcc can not been told apart from a standard built gcc.
2008-08-08 05:58:08 +00:00
Yang Tse
3ac6929919 Add metroworks and generic gcc 2008-08-08 05:53:01 +00:00
Yang Tse
8d36acd29b Take a peek at netware's gcc predefined symbols. 2008-08-08 03:09:16 +00:00
Dan Fandrich
e54209d643 Fixed an uninitialized variable in multi_runsingle() that could cause a
request to prematurely end.
2008-08-08 01:52:08 +00:00
Yang Tse
f6a958dc3a Remove last adjustment done to testcurl.pl to verify if change introduced by
Guenter Knauf in lib/Makefile.netware is enough to get the netware autobuilds
going again.
2008-08-07 22:40:06 +00:00
Gunter Knauf
2548e7b23f use CP macro rather than cp command. 2008-08-07 21:43:30 +00:00
Gunter Knauf
97046a3548 added rule to create include/curl/curlbuild.h from include/curl/curlbuild.h.dist. 2008-08-07 21:34:35 +00:00
Yang Tse
a7d52c414f Adjust testcurl.pl to copy checked out curlbuild.h.dist as curlbuild.h
for non-configure targets when host system doesn't run buildconf.bat.
2008-08-07 20:41:12 +00:00
Yang Tse
479466a495 Skip data type check in DO_CURL_OFF_T_CHECK macro when argument is empty. 2008-08-07 19:03:46 +00:00
Yang Tse
fa2a8f6fb8 Prevent buildconf from removing 'Makefile' and 'missing' files. This would blow
away our CVS checked 'missing' file and also CVS checked 'hiper/Makefile'.
2008-08-07 16:22:25 +00:00
Yang Tse
ddfa33be79 Fix CURL_CHECK_DEF so that when the expansion of the preprocessor symbol results
in a set of double-quoted strings, this macro will now return an expansion which
consists of a single double-quoted string result of concatenating all of them.
2008-08-07 16:07:26 +00:00
Yang Tse
25c76a760e sync with reality 2008-08-07 02:46:23 +00:00
Yang Tse
14240e9e10 Initial support of curlbuild.h and curlrules.h which allows
to have a curl_off_t data type no longer gated to off_t.
2008-08-07 00:29:08 +00:00
Daniel Stenberg
a3045b4e49 - mention curl_multi_socket_action() rather than the deprecated
curl_multi_socket()
- don't claim that it has an argument named 'easy' because it doesn't!
2008-08-06 21:22:07 +00:00
Daniel Stenberg
b0685b3576 remove debug code I accidentally left in here 2008-08-06 09:54:34 +00:00
Gisle Vanem
138c57c76a Removed TRACE() code. 2008-08-06 08:05:09 +00:00
Yang Tse
182a415555 The minimum autoconf version required for this file is 2.50
Avoid dot notation in aclocal serial file number, use a single number now.
2008-08-05 09:08:43 +00:00
Yang Tse
6e789fc516 #148 Removed.
Rebooting the problematic system, releasing allocated memory and swap,
has allowed buildconf and configure to complete sucessfully since then.
2008-08-05 06:44:21 +00:00
Yang Tse
09f278121e Validate that autom4te and autoconf versions match.
Validate that aclocal and automake versions match.

Improve removal of previous run generated files.

Remove verbose debug logging of aclocal on Solaris.
2008-08-05 06:20:18 +00:00
Daniel Stenberg
ed50e3f1b4 - Yehoshua Hershberg found a problem that would make libcurl re-use a
connection with the multi interface even if a previous use of it caused a
  CURLE_PEER_FAILED_VERIFICATION to get returned. I now make sure that failed
  SSL connections properly close the connections.
2008-08-04 22:07:50 +00:00
Daniel Stenberg
3a499099af - Test cases 1051, 1052 and 1055 were added by Daniel Fandrich on July 30 and
proved how PUT and POST with a redirect could lead to a "hang" due to the
  data stream not being rewound properly when it had to in order to get sent
  properly (again) to the subsequent URL. This is now fixed and these test
  cases are no longer disabled.
2008-08-04 22:00:22 +00:00
Daniel Stenberg
931fc45f05 - Fix by Tofu Linden:
The symptom:
  * Users (usually, but not always) on 2-Wire routers and the Comcast service
  and a wired connection to their router would find that the second and
  subsequent DNS lookups from fresh processes using c-ares to resolve the same
  address would cause the process to never see a reply (it keeps polling for
  around 1m15s before giving up).

  The repro:
  * On such a machine (and yeah, it took us a lot of QA to find the systems
  that reproduce such a specific problem!), do 'ahost www.secondlife.com',
  then do it again.  The first process's lookup will work, subsequent lookups
  will time-out and fail.

  The cause:
  * init_id_key() was calling randomize_key() *before* it initialized
  key->state, meaning that the randomness generated by randomize_key() is
  immediately overwritten with deterministic values. (/dev/urandom was also
  being read incorrectly in the c-ares version we were using, but this was
  fixed in a later version.)
  * This makes the stream of generated query-IDs from any new c-ares process
  be an identical and predictable sequence of IDs.
  * This makes the 2-Wire's default built-in DNS server detect these queries
  as probable-duplicates and (erroneously) not respond at all.
2008-08-04 20:23:12 +00:00
Yang Tse
6076c74041 Update #144
Third version of the patch fixing a failure to chose a proper data
type submitted to the mailing list 2008-08-04.
2008-08-04 10:13:02 +00:00
Yang Tse
b4fdccf87a Autoconf 2.62 has changed the behaviour of the AC_AIX macro which we use.
Prior versions of autoconf defined _ALL_SOURCE if _AIX was defined. But,
autoconf 2.62 version of AC_AIX defines _ALL_SOURCE along with other four
preprocessor symbols no matter if the system is AIX or not. To keep the
traditional behaviour, as well as an uniform one, across autoconf versions
AC_AIX is replaced with our own internal macro.
2008-08-04 06:48:11 +00:00
Daniel Stenberg
8d012181b0 - Test case 1041 (added by Daniel Fandrich April 14th) proved a bug where PUT
with -C - sent garbage in the Content-Range: header. I fixed this problem by
  making sure libcurl always sets the size of the _entire_ upload if an app
  attemps to do resumed uploads since libcurl simply cannot know the size of
  what is currently at the server end. Test 1041 is no longer disabled.
2008-08-03 22:20:58 +00:00
Daniel Stenberg
d6344d9b5f refer to the new option by its real name 2008-08-03 21:50:56 +00:00
Yang Tse
cb9410ded2 Update #148
Rebooting the Solaris system, releasing allocated memory and swap,
has allowed buildconf and configure to complete sucessfully. Further
tests on the system might allow determination of the problem origin.
Solaris AutoBuilds suceeded on August 2 and 3.
2008-08-03 16:46:20 +00:00
Dan Fandrich
6838fb32af Improved title 2008-08-03 05:13:05 +00:00
Yang Tse
74d77cb140 Adjust DEC/Compaq C compiler settings. 2008-08-03 03:14:05 +00:00
Yang Tse
7ad3abfd05 Another AC_TRY_COMPILE conversion to AC_COMPILE_IFELSE 2008-08-03 01:01:05 +00:00
Yang Tse
7c6df7132e No longer test availability of the gdi32 library, nor use it for linking, even
when we have been doing this since revision 1.47 of configure.ac 4 years and
5 months ago when cross-compiling a Windows target. We actually don't use any
function from the Windows GDI (Graphics Device Interface) related with drawing
or graphics-related operations.
2008-08-02 01:44:13 +00:00
Dan Fandrich
f27299dc3b Added tests 1057 and 1058 to test FTP and HTTPS transfers with ranges
relative to end of file.
2008-08-01 22:12:34 +00:00
Yang Tse
47724ef238 Another AC_TRY_LINK conversion to AC_LINK_IFELSE.
Proper definition of HAVE_function if function is found deeper.
2008-08-01 19:29:05 +00:00
Yang Tse
357389a905 Another AC_TRY_LINK conversion to AC_LINK_IFELSE.
Sorting of function names.
Proper definition of HAVE_function if function is found deeper.
2008-08-01 19:01:35 +00:00
Dan Fandrich
42cabc14d4 Added support for --append on SFTP uploads. Unfortunately, OpenSSH doesn't
support this so it goes untested.
2008-08-01 18:41:14 +00:00
Yang Tse
a948ca1669 This line was for local testing, not intended to be committed. 2008-08-01 07:46:21 +00:00
Yang Tse
9cef14dfb2 Add a whitespace 2008-08-01 06:21:34 +00:00
Yang Tse
2d15d84a01 Ensure that reserved keyword AC_DEFUN is only used for its purpose. 2008-08-01 06:07:43 +00:00
Yang Tse
1035469662 Removed definition of CURL_CHECK_WORKING_RESOLVER from acinclude.m4 it has
not been in use since revision 1.81 of configure.in 6 years, 9 months ago.
2008-08-01 05:24:19 +00:00
Yang Tse
296a6f7749 Sync up with reality 2008-08-01 03:17:38 +00:00
Yang Tse
5cff8124b0 Sync up with reality 2008-08-01 03:10:54 +00:00
Yang Tse
90e2510e2f Rename reentrant.m4 to avoid filename clash. 2008-08-01 02:48:00 +00:00
Dan Fandrich
9251dd7b24 User names embedded in proxy URLs without a password were parsed
incorrectly--the host name is treated as part of the user name and the
port number becomes the password.  This can be observed in test 279
(was KNOWN_ISSUE #54).
2008-08-01 02:09:08 +00:00
Dan Fandrich
3615063fbc Added more code under #ifndef CURL_DISABLE_HTTP to fix builds with
--disable-http
2008-08-01 01:39:24 +00:00
Dan Fandrich
09664f1ab8 Refactored create_conn by breaking it up into many smaller functions 2008-08-01 00:55:43 +00:00
Dan Fandrich
bdf1157d55 Made a parameter const 2008-08-01 00:49:29 +00:00
Dan Fandrich
b4a5ce89c2 Fixed a problem with any FTP URL or any URLs containing an IPv6 address
being mangled when passed to proxies when CURLOPT_PORT is also set
(reported by Pramod Sharma).
2008-07-31 22:46:29 +00:00
Dan Fandrich
660516914e Fixed parsing of an IPv6 proxy address to support a scope identifier,
as well as IPv4 addresses in IPv6 format. Also, better handle the case
of a malformatted IPv6 address (avoid empty and NULL strings).
2008-07-31 20:04:00 +00:00
Yang Tse
4c1c479fcf Second version of the patch addressing building outside of CVS tree
submitted to the mailing list 2008-07-31. Awaiting Ok to commit.
2008-07-31 17:58:28 +00:00
Patrick Monnerat
309651dc82 New CURLOPT_ADDRESS_SCOPE option in ILE/RPG binding 2008-07-31 13:20:23 +00:00
Dan Fandrich
b13b9f3331 Fixed keyword 2008-07-31 05:00:02 +00:00
Dan Fandrich
108e584983 Added keywords 2008-07-31 02:51:44 +00:00
Dan Fandrich
f3b4071209 Added test of IPv6 scope handling 2008-07-31 02:38:51 +00:00
Dan Fandrich
fe1d024351 Fixed a couple of problems in the IPv6 scope code. First, a host name in
an URL in a Location: header didn't have the scope ID removed, so an
invalid host name was used.  Second, when the scope ID was removed, it
also removed any port number that may have existed in the URL.
2008-07-31 02:18:01 +00:00
Yang Tse
0de08d418f s/silly/underquoted definition/ 2008-07-31 01:41:20 +00:00
Yang Tse
109edaae6d #149 fully done and verified. Removed from here now. 2008-07-31 01:20:25 +00:00
Dan Fandrich
d69a630989 Fixed a couple of buffer overflows in the MS-DOS port of the curl tool.
Factored out unslashquote. Added some 'const's in function parameters.
2008-07-31 01:12:06 +00:00
Dan Fandrich
987b67bd2e Added IPv6 section 2008-07-30 23:49:20 +00:00
Daniel Stenberg
f4d56802f9 Committed just now and thus removed from here:
145 - Phil Blundell's CURLOPT_SCOPE patch/work
2008-07-30 22:09:30 +00:00
Daniel Stenberg
9dfd6eacf4 another option added, bump counter 2008-07-30 21:57:27 +00:00
Daniel Stenberg
5aed78e183 - Phil Blundell added the CURLOPT_SCOPE option, as well as adjusted the URL
parser to allow numerical IPv6-addresses to be specified with the scope
  given, as per RFC4007 - with a percent letter that itself needs to be URL
  escaped. For example, for an address of fe80::1234%1 the HTTP URL is:
  "http://[fe80::1234%251]/"
2008-07-30 21:55:26 +00:00
Daniel Stenberg
011e5dd864 Fixed:
147 - PHP's bug report #43158 (http://bugs.php.net/bug.php?id=43158) identifies
      a true bug in libcurl built with OpenSSL.
2008-07-30 21:42:26 +00:00
Daniel Stenberg
ae654266df - PHP's bug report #43158 (http://bugs.php.net/bug.php?id=43158) identifies a
true bug in libcurl built with OpenSSL. It made curl_easy_getinfo() more or
  less always return 0 for CURLINFO_SSL_VERIFYRESULT because the function that
  would set it to something non-zero would return before the assign in almost
  all error cases. The internal variable is now set to non-zero from the start
  of the function only to get cleared later on if things work out fine.
2008-07-30 21:24:59 +00:00
Daniel Stenberg
03986f1b8b - Made the curl tool's -w option support the %{ssl_verify_result} variable 2008-07-30 21:24:19 +00:00
Dan Fandrich
bc649593e4 Added test cases 1052 through 1055 to test uploading data from files
during redirects.  Test cases 1052 and 1055 show problems (maybe the same
root cause as 1051) and are disabled.
2008-07-30 21:04:44 +00:00
Dan Fandrich
cc0285da7f Factored out Curl_copy_header_value 2008-07-30 20:11:51 +00:00
Yang Tse
f3bc16f4f5 Add file version serial number that might be used by 'aclocal' and others.
Keep the '#' character as the first one on the line.
2008-07-30 12:09:35 +00:00
Yang Tse
15f94858f2 Update copyright year. 2008-07-30 08:27:02 +00:00
Yang Tse
5febd06c25 Sync comment with reality. 2008-07-30 08:21:25 +00:00
Dan Fandrich
9eb7fe8ac0 Added the problems with test cases 1041 and 1051 2008-07-30 07:31:10 +00:00
Dan Fandrich
1f26ea4a85 Added test case 1051 to test Location: following with PUT, as reported
by Ben Sutcliffe.  The test when run manually shows a problem in curl,
but the test harness web server doesn't run the test correctly so it's
disabled for now.
2008-07-30 07:24:59 +00:00
Yang Tse
912c29fd8c Undo using the sreadfrom() wrapper to replace recvfrom() in our code, for real ;-) 2008-07-30 06:20:43 +00:00
Yang Tse
eea468918e #149 done. Awaiting autobuild verification before removing. 2008-07-30 05:15:51 +00:00
Yang Tse
537490e391 Undo using the sreadfrom() wrapper to replace recvfrom() in our code. 2008-07-30 05:10:42 +00:00
Yang Tse
de8e362d4a #148 no longer blocks #144 2008-07-30 04:46:24 +00:00
Yang Tse
7a588144b7 Reinstate hiding aclocal 'underquoted definition' warnings. 2008-07-30 04:42:16 +00:00
Yang Tse
7f2999aa43 updated #148 2008-07-30 03:24:38 +00:00
Yang Tse
a3498f96ef Reinstate the 'aclocal -I m4' in buildconf and 'ACLOCAL_AMFLAGS = -I m4' way of
including our local m4/reentrant.m4 file. This even takes care of including the
file in the distribution tarball.
2008-07-30 03:10:03 +00:00
Yang Tse
637bfa0252 Show autom4te and aclocal versions.
Set SED for Solaris to gsed if available.
2008-07-30 01:17:15 +00:00
Dan Fandrich
1c8f689ecb Minor Symbian updates. 2008-07-30 00:10:32 +00:00
Dan Fandrich
7a8b11d716 Fixed --use-ascii to properly convert text files on Symbian OS, MS-DOS
and OS/2.
2008-07-30 00:09:02 +00:00
Yang Tse
a67e207866 Updtae #148 with link to start of thread 2008-07-29 23:56:01 +00:00
Yang Tse
5817209158 Updated #144
Added #148 and # 149
2008-07-29 23:51:01 +00:00
Daniel Stenberg
b39d409aa2 56. When libcurl sends CURLOPT_POSTQUOTE commands when connected to a SFTP
server using the multi interface, the commands are not being sent correctly
  and instead the connection is "cancelled" (the operation is considered done)
  prematurely. There is a half-baked (busy-looping) patch provided in the bug
  report but it cannot be accepted as-is. See
  http://curl.haxx.se/bug/view.cgi?id=2006544
2008-07-29 21:51:47 +00:00
Daniel Stenberg
a18fb9448b Added:
146 - Yehoshua Hershberg's re-using of connections that failed with
      CURLE_PEER_FAILED_VERIFICATION

147 - PHP's bug report #43158 (http://bugs.php.net/bug.php?id=43158) identifies
      a true bug in libcurl built with OpenSSL.
2008-07-29 21:39:05 +00:00
Dan Fandrich
1f3007dbb4 Document that PKG_CONFIG_PATH is the preferred way to configure with
OpenSSL.
2008-07-29 20:59:51 +00:00
Yang Tse
5dafa4a270 For testing purposes on SunOS systems; directly feed acinclude.m4 with
reentrant.m4 and remove reentrant.m4 before calling aclocal.
2008-07-29 19:31:34 +00:00
Yang Tse
e93bcbeee1 For debugging purposes, show all sed's available in PATH on SunOS systems. 2008-07-29 19:01:34 +00:00
Dan Fandrich
adc032e7d8 Return an error code when extra files are found in filecheck: 2008-07-29 18:57:01 +00:00
Dan Fandrich
248c2b9bf5 Eliminate a unnecessary socket creation in Curl_getaddrinfo for an IPv4
address in an IPv6 capable libcurl.
2008-07-29 18:26:35 +00:00
Yang Tse
a8baa05023 Add quoting for the AC_DEFINE arguments. 2008-07-29 18:23:11 +00:00
Yang Tse
7066a79466 Also remove the whitespace. 2008-07-29 18:01:29 +00:00
Yang Tse
4a623f7ed2 Also remove the extra quoting. 2008-07-29 17:45:33 +00:00
Yang Tse
f18700ef64 Replace some '@%:@' quadigraphs by its actual representation '#'.
This quadigraph used before a C preprocessor 'define' directive could
be fooling M4, when processing this file, and make it think that the
line contains a pure M4 'define' macro.
2008-07-29 16:29:34 +00:00
Yang Tse
52d9a3c34f Tests done using 'aclocal -I m4' in buildconf and 'ACLOCAL_AMFLAGS = -I m4
in top Makefile.am triggered a problem that prevented aclocal from running
successfully on SunOS 5.10 with GNU m4 1.4.5 and GNU Autoconf 2.61

A tarball which reproduces mentioned problem is the one dated July-28-2008
http://cool.haxx.se/curl-daily/curl-7.19.0-20080728.tar.gz

We actually don't need all the bells and whistles that the above mechanism
provides. We only need to include our m4/reentrant.m4 file in acinclude.m4
so here we go with this simpler mechanism.
2008-07-29 02:26:21 +00:00
Yang Tse
d785ed2588 ignore *.dist files 2008-07-29 02:05:07 +00:00
Dan Fandrich
4ff37a4ed1 Added test case 1050 to test --ftp-port with an IPv6 address.
Made --interface tests less restrictive on host address.
2008-07-29 01:05:28 +00:00
Daniel Stenberg
fe167b6ba2 I removed: "139 - Christopher Palow's CURLM_EASY_HANDLE_EXISTS patch" simply
because at the current point in time I think the benefit of adding that new
return code is very slim and it is a lot of work to introduce new return codes
(for docs and maintenance etc)

I added "145 - Phil Blundell's CURLOPT_SCOPE patch/work" since I want it
sorted/committed.
2008-07-28 21:53:25 +00:00
Dan Fandrich
f042a7419d Added test cases 1045 through 1049 as simple tests of --interface using the
localhost interface.
2008-07-28 18:39:32 +00:00
Dan Fandrich
bc0ebfcdeb Fixed display of the interface bind address in the trace output when it's
an IPv6 address.
2008-07-28 18:35:34 +00:00
Yang Tse
57d13c770a Ensure that buildconf runs from the subdirectory where configure.ac lives 2008-07-28 16:17:51 +00:00
Yang Tse
1692384636 Remove files generated on previous buildconf/configure run,
and for debugging purposes show ACLOCAL_FLAGS.
2008-07-28 15:15:13 +00:00
Yang Tse
7634091325 for debugging purposes show ACLOCAL_FLAGS 2008-07-28 15:13:31 +00:00
Yang Tse
bdc8f59c17 ignore another file that might be generated 2008-07-28 12:36:51 +00:00
Yang Tse
817efbc29c These lines were unintentionally removed in previous commit 2008-07-27 23:43:53 +00:00
Yang Tse
d2661cb4b2 Partially undo change that prevented SED, GREP, EGREP and AR from being changed by libtool or autoconf. 2008-07-27 22:25:07 +00:00
Yang Tse
9b0110f50c Assert that SED and GREP are set 2008-07-27 21:47:22 +00:00
Yang Tse
5876381f86 Require autoconf 2.57 or newer 2008-07-27 20:29:04 +00:00
Yang Tse
c4edc25d01 When calling aclocal, user defined ACLOCAL_FLAGS will now precede ours. 2008-07-27 18:10:54 +00:00
Yang Tse
36361d14cf For debugging purposes, run aclocal in verbose mode on SunOS systems. 2008-07-27 17:24:37 +00:00
Yang Tse
c8fe5f485c move ACLOCAL_AMFLAGS after AUTOMAKE_OPTIONS 2008-07-27 16:37:02 +00:00
Yang Tse
1ac1212925 setup.h handles definition of _REENTRANT based on NEED_REENTRANT
definition which might be defined in config.h or config-*.h files
2008-07-27 03:16:37 +00:00
Yang Tse
3d4fb5136d Remove explicit inclusion of our m4 files first. It was interesting as a test,
but it breaks aclocal execution on some systems, with the following error:

Can't locate object method "rel2abs" via package "File::Spec" at /usr/local/bin/aclocal line 256.
2008-07-27 02:41:13 +00:00
Dan Fandrich
b6b03c8ab9 Added feature in runtests.pl to select tests based on key word. 2008-07-27 02:34:27 +00:00
Dan Fandrich
432945e422 Eliminate a unnecessary socket creation in Curl_getaddrinfo for an IPv4
address in an IPv6 capable libcurl.
2008-07-27 02:20:34 +00:00
Yang Tse
052f9ddedb Another step towards detecting if _REENTRANT is already defined or actually
needed, and being able to define it if appropriate for further configure tests
as well as for the generated config file.
2008-07-27 01:36:33 +00:00
Daniel Stenberg
a96784b98e - David Bau filed bug report #2026240 "CURL_READFUNC_PAUSE leads to buffer
overrun" (http://curl.haxx.se/bug/view.cgi?id=2026240) identifying two
  problems, and providing the fix for them:

  - CURL_READFUNC_PAUSE did in fact not pause the _sending_ of data that it is
    designed for but paused _receiving_ of data!

  - libcurl didn't internally set the read counter to zero when this return
    code was detected, which would potentially lead to junk getting sent to
    the server.
2008-07-26 21:15:47 +00:00
Dan Fandrich
e06944438a Added test 1044 to test large file support in ftp with -I. 2008-07-26 20:09:36 +00:00
Yang Tse
fa1009b6fc Explicitly include our m4 files first. This might minimize the impact
that other package's underquoted m4 function definitions have on ours.
2008-07-26 14:45:16 +00:00
Yang Tse
b377e857bd simplify multi '#' char comment line 2008-07-26 12:11:22 +00:00
Yang Tse
9a806f667b Add a 3 argument check for getprotobyname_r 2008-07-26 01:24:50 +00:00
Yang Tse
979c9ce8e3 additional debug logging of getprotobyname_r on Tru64 and AIX 2008-07-26 01:00:41 +00:00
Yang Tse
b217e6eed7 No longer hide aclocal 'underquoted definition' warnings.
http://sources.redhat.com/automake/automake.html#Extending-aclocal documents
that starting with Automake 1.8, aclocal will warn about all underquoted calls
to AC_DEFUN due to the fact that in a single aclocal run it might include more
than once all .m4 files which it finds available, this includes .m4 files from
other software packages.

If the first argument to AC_DEFUN is underquoted and the same macro is included
more than once, successive inclusions after the first one will expand the macro
instead of assuming it is the same as the first one included.
2008-07-26 00:19:03 +00:00
Yang Tse
6b7e74a030 move reentrant.m4 to the m4 subdirectory to avoid infinite loop inclusion problem 2008-07-25 13:21:14 +00:00
Yang Tse
7fdeb14e6d add checks for strtok_r and getprotobyname_r 2008-07-24 18:02:44 +00:00
Yang Tse
8a323f8354 Another step towards detecting if _REENTRANT is already defined or actually
needed, and being able to define it if appropriate for further configure tests
as well as for the generated config file.

Introduced reentrant.m4 intended for our reentrant related autotools/m4 macros.
2008-07-24 15:20:35 +00:00
Yang Tse
a7abd5bf70 ignore curllib.vcproj 2008-07-24 15:11:24 +00:00
Dan Fandrich
932b589780 Changed the long logfile elision code in runtests.pl to properly handle
lines ending in \r.
2008-07-24 02:16:48 +00:00
Dan Fandrich
27c282a6ee Mention that the test harness can't check every possible feature. 2008-07-23 23:03:52 +00:00
Dan Fandrich
5373289574 Eliminated references to TRUE and FALSE since those identifiers aren't
defined by the libcurl API. Also changed curl_easy_setopt examples to
pass longs where appropriate.
2008-07-23 22:02:03 +00:00
Daniel Stenberg
7d0eabaa80 - I went over the curl_easy_setopt man page and replaced most references to
non-zero with the fixed value of 1. We should strive at making options
  support '1' for enabling them mentioned explicitly, as that then will allow
  us for to extend them in the future without breaking older programs.
2008-07-23 20:53:04 +00:00
Dan Fandrich
e7f5d12cb6 Simplified Minix compile instructions and added some special cases. 2008-07-23 18:17:25 +00:00
Yang Tse
f14e020370 reorder argument number detection for getservbyport_r to
actually verify if the test is properly working
2008-07-23 04:20:39 +00:00
Yang Tse
e933b28aaf cleanup duplicate line 2008-07-22 19:13:35 +00:00
Yang Tse
1bc490077a Make sure that configure process tests are done with the same _REENTRANT
setting as the one actually used when finally building the library.
2008-07-22 19:04:16 +00:00
Yang Tse
7d773abe50 checks for gethostbyaddr_r with 7 and 8 args now also done with -D_REENTRANT
checks for gethostbyname_r with 5 and 6 args now also done with -D_REENTRANT
2008-07-22 18:56:46 +00:00
Yang Tse
f22114aeed minor reordering in OS/400 config/setup files 2008-07-22 00:12:06 +00:00
Yang Tse
0919de4511 Change recvfrom's sixth argument data type to the 'historically standard' 'int'
data type for systems where this sixth argument is prototyped as a void pointer.

Start of thread: http://curl.haxx.se/mail/lib-2008-07/0153.html
2008-07-21 18:24:32 +00:00
Gisle Vanem
3e5292a052 Undefine 'byte' due to dict.c. 2008-07-21 15:39:54 +00:00
Yang Tse
2066d60b16 use prototypes to improve getservbyport_r detection 2008-07-21 14:01:46 +00:00
Yang Tse
51e84c77e7 fix compiler warning: implicit conversion from "long" to "int" 2008-07-21 09:23:56 +00:00
Yang Tse
775d9e0615 fix compiler warning: comparison between signed and unsigned 2008-07-21 03:59:23 +00:00
Yang Tse
a20d55fb64 Adjust recvfrom's sixth arg data type definition for NetWare (LIBC) 2008-07-21 03:50:02 +00:00
Yang Tse
1b37baf656 Use the sreadfrom() wrapper to replace recvfrom() in our code. 2008-07-21 03:06:07 +00:00
Yang Tse
bffe69a151 when recvfrom prototype uses a void pointer for arguments 2, 5 or 6 this will
now cause the definition of RECVFROM_TYPE_ARG2_IS_VOID, RECVFROM_TYPE_ARG5_IS_VOID
or RECVFROM_TYPE_ARG6_IS_VOID, as appropriate.
2008-07-21 00:36:55 +00:00
Yang Tse
71525352f0 Adjust DEC/Compaq C compiler settings 2008-07-20 17:18:29 +00:00
Yang Tse
facc5f7ec5 Remove showing additional info needed to debug configure
failure to properly detect recvfrom arg types on Solaris
2008-07-20 09:51:52 +00:00
Yang Tse
184229b1e5 Added "pointer to void" as another data type to check for the sixth argument of
function recvfrom as a result of the info additionally logged when running on a
Solaris system.

The compiler error showed that the prototype being used on Solaris was the one
declared in line 427 of "/usr/include/sys/socket.h" as:

function(int,
         pointer to void,
         unsigned int,
         int,
         pointer to struct sockaddr,
         pointer to void) returning int
2008-07-20 09:46:52 +00:00
Yang Tse
3e488c4f19 Temporarily show additional info needed to debug configure
failure to properly detect recvfrom arg types on Solaris
2008-07-19 18:32:27 +00:00
Yang Tse
3f84e373ac Adjust DEC/Compaq C compiler settings 2008-07-19 11:27:45 +00:00
Patrick Monnerat
ac6d6ec2f1 README.OS400 update for new string options. 2008-07-18 14:46:52 +00:00
Patrick Monnerat
f11d5d9de8 README.OS400 update for new string options. 2008-07-18 14:43:17 +00:00
Dan Fandrich
ed2dbefa73 Fixed the XML syntax of a few test files. 2008-07-17 22:39:23 +00:00
Yang Tse
39f23aec6b RECVFROM_TYPE_ARG2, RECVFROM_TYPE_ARG5 and RECVFROM_TYPE_ARG6 are now defined
to the data type pointed by its respective argument and not the pointer type.
2008-07-17 03:07:54 +00:00
Yang Tse
362422641e fix comment 2008-07-16 19:24:03 +00:00
Yang Tse
a9dc900515 Configure process now checks availability of recvfrom() socket function and
finds out its return type and the types of its arguments. Added definitions
for non-configure systems config files, and introduced macro sreadfrom which
will be used on udp sockets as a recvfrom() wrapper.
2008-07-16 19:16:41 +00:00
Yang Tse
3a705696af Initial DEC/Compaq C compiler detection and flags 2008-07-16 14:17:56 +00:00
Yang Tse
2cfb8a2bf0 Improved configure detection of number of arguments for getservbyport_r 2008-07-16 12:26:09 +00:00
Yang Tse
21ee1c2d01 Allow --enable-largefile and --disable-largefile configurations.
Configure process no longer needs nor checks size of curl_off_t.
Library will now be built with _REENTRANT symbol defined.
2008-07-15 16:43:39 +00:00
Yang Tse
a00febe1a0 add comment for include paths 2008-07-15 13:54:30 +00:00
Yang Tse
1e7125ae7b add comment for include paths 2008-07-15 05:46:49 +00:00
Dan Fandrich
aa4a7471dd Added test1042 and test1043 to test -C - on HTTP. 2008-07-15 04:12:15 +00:00
Dan Fandrich
69a03ce23c Added test1040 and test1041 to test -C - on HTTP. Test 1041 failed so it's
added to DISABLED.
2008-07-15 03:36:38 +00:00
Yang Tse
0f50cd7623 Move _REENTRANT definition earlier in lib/setup.h 2008-07-14 17:31:39 +00:00
Yang Tse
669c555874 Removed inclusion of remaining system header files from configuration files.
These are included from lib/setup.h or specific source code file.
2008-07-14 16:58:34 +00:00
Yang Tse
1cfb73a129 Inclusion of <extra/stricmp.h> and <extra/strdup.h> is moved to lib/setup.h 2008-07-14 16:10:29 +00:00
Yang Tse
2a585c2fba Remove duplicate file inclusions. These are already done in lib/setup.h
and lib/setup_once.h
2008-07-14 15:58:02 +00:00
Yang Tse
32a83128e6 Remove duplicate file inclusions. These are already done in lib/setup.h 2008-07-14 15:30:26 +00:00
Yang Tse
fe7bb33af8 HTTP_ONLY definition check in lib/setup.h is now done once that configuration
file has been included. In this way if symbol is defined in the config file
it will no longer be ignored.
2008-07-14 12:39:50 +00:00
Yang Tse
da6fa34f02 fix multiple header inclusion prevention definition 2008-07-11 18:59:00 +00:00
Yang Tse
37a358ab93 move multiple header inclusion prevention definition to top of file 2008-07-11 18:52:35 +00:00
Yang Tse
3452c8d693 Added missing multiple header inclusion prevention definition 2008-07-11 18:42:30 +00:00
Dan Fandrich
336992cc54 Fixed test 553 to pass the torture test. 2008-07-11 18:23:06 +00:00
Dan Fandrich
13afcbd1eb Avoid a potential zombie process when killing an old ftpserver 2008-07-11 17:18:37 +00:00
Daniel Stenberg
e58a3fd0aa document the exit codes 82 and 83 that are new in 7.19.0 2008-07-11 10:50:30 +00:00
Daniel Stenberg
57625b6c4c indent and comment cleanup (no code change) 2008-07-11 09:18:30 +00:00
Daniel Stenberg
0d058d2174 - Daniel Fandrich found out we didn't pass on the user-agent properly when
doing "proxy-tunnels" with non-HTTP prototols and that was simply because
  the code assumed the user-agent was only needed for HTTP.
2008-07-11 09:08:27 +00:00
Dan Fandrich
8d49a8f278 Added test cases 1038 and 1039 to test Adrian Kreher's report that ftp
uploads with -C - didn't resume properly, but the tests pass.
2008-07-11 05:08:06 +00:00
Dan Fandrich
b4b6cfdb1c Changed slightly the SFTP quote commands chmod, chown and chgrp to only
set the attribute that has changed instead of all possible ones. Hopefully,
this will solve the "Permission denied" problem that Nagarajan Sreenivasan
reported when setting some modes, but regardless, it saves a protocol
round trip in the chmod case.
2008-07-11 04:38:11 +00:00
Daniel Stenberg
6b7ccde156 (Added in the section for CURLOPT_DNS_CACHE_TIMEOUT, pointed out on the
curl-library list on July 9th 2008 by Mathew Hounsell)

NOTE: the name resolve functions of various libc implementations don't re-read
name server information unless explicitly told so (by for example calling
Ires_init(3). This may cause libcurl to keep using the older server even
if DHCP has updated the server info, and this may look like a DNS cache issue
to the casual libcurl-app user.
2008-07-10 22:24:11 +00:00
Daniel Stenberg
9b0fd007fd --remote-name-all 2008-07-10 20:29:27 +00:00
Dan Fandrich
6f3ef94836 Fixed another OOM problem, this time with test 64. 2008-07-10 18:15:22 +00:00
Yang Tse
08ac9866e0 Peter Lamberg filed bug report #2015126: "poll gives WSAEINVAL when POLLPRI
is set in fdset.events" (http://curl.haxx.se/bug/view.cgi?id=2015126) which
exactly pinpointed the problem only triggered on Windows Vista, provided
reference to docs and also a fix. There is much work behind Peter Lamberg's
excellent bug report. Thank You!
2008-07-10 18:01:44 +00:00
Daniel Stenberg
a17fadea3a updated to match current reality 2008-07-10 13:40:59 +00:00
Yang Tse
e30bbfd85d fix compiler warning 2008-07-10 08:21:48 +00:00
Daniel Stenberg
120f9d81b2 s/muse/must 2008-07-10 08:00:05 +00:00
Daniel Stenberg
fa38839a80 document --remote-name-all 2008-07-10 07:53:10 +00:00
Yang Tse
d8f109176c fallback to gettimeofday when monotonic clock is unavailable at run-time 2008-07-10 07:16:45 +00:00
Dan Fandrich
bbb1b99ce1 Added tests 1036 and 1037 to verify resumed ftp downloads with -C - 2008-07-10 06:09:03 +00:00
Daniel Stenberg
0cd8840dba - Andreas Schuldei improved Phil Blundell's patch for IPv6 using c-ares, and I
edited it slightly. Now you should be able to use IPv6 addresses fine even
  with libcurl built to use c-ares.
2008-07-09 18:39:49 +00:00
Dan Fandrich
d4b253ba3e Fixed an OOM handling problem that cause test 11 to fail the torture test. 2008-07-09 18:33:35 +00:00
Yang Tse
aee7fc118b since Jun 30 2008 MAXHOSTNAMELEN define is no longer used 2008-07-09 16:38:55 +00:00
Dan Fandrich
60f0b4fffe Fixed test 554 to pass the torture test. 2008-07-08 21:16:18 +00:00
Gisle Vanem
a95e600eb0 Added libidn libs as needed. Added compilation of sendrecv.c
and cookie_interface.c.
2008-07-08 13:55:20 +00:00
Dan Fandrich
a25959184e Added test cases 1034 & 1035 to test IDN name conversion failures. 2008-07-07 23:52:52 +00:00
Daniel Stenberg
0e5da5b8bc - Scott Barrett provided a test case for a segfault in the FTP code and the
fix for it. It occured when you did a FTP transfer using
  CURLFTPMETHOD_SINGLECWD and then did another one on the same easy handle but
  switched to CURLFTPMETHOD_NOCWD. Due to the "dir depth" variable not being
  cleared properly.  Scott's test case is now known as test 539 and it
  verifies the fix.
2008-07-07 20:37:07 +00:00
Patrick Monnerat
ddfa4b8896 New options added to OS400 wrapper and ILERPG definitions.
Wrong defines (typos) for QSSL layer fixed.
2008-07-07 10:39:46 +00:00
Yang Tse
d816a11bca fix c-ares version reported in generated libcares.pc file when building
from CVS tree.
2008-07-07 02:11:21 +00:00
Yang Tse
7820391cb9 fix compiler warning: empty body in an if-statement 2008-07-05 03:31:41 +00:00
Yang Tse
148866bc73 mention that egrep and ar are also mandatory 2008-07-05 03:12:47 +00:00
Yang Tse
0b57c47547 egrep and ar are also mandatory 2008-07-04 04:03:55 +00:00
Daniel Stenberg
02db4450df just to clarify that c-ares actually have some ipv6 support 2008-07-03 11:41:11 +00:00
Daniel Stenberg
ed7af82bdf ares_gethostbyname() fallback from AAA to A records with CNAME present 2008-07-03 11:34:34 +00:00
Daniel Stenberg
e3b5673e98 - Phil Blundell: If you ask ares_gethostbyname() to do an AF_INET6 lookup and
the target host has only A records, it automatically falls back to an
  AF_INET lookup and gives you the A results.  However, if the target host has
  a CNAME record, this behaviour is defeated since the original query does
  return some data even though ares_parse_aaa_reply() doesn't consider it
  relevant. Here's a small patch to make it behave the same with and without
  the CNAME.
2008-07-03 11:32:35 +00:00
Daniel Stenberg
82412f218f Phil Blundell provided a fix for libcurl's treatment of unexpected 1xx
response codes. Previously libcurl would hang on such occurances. I added
test case 1033 to verify.
2008-07-03 08:47:53 +00:00
Daniel Stenberg
7c648782bc Introcuding a new timestamp for curl_easy_getinfo():
CURLINFO_APPCONNECT_TIME. This is set with the "application layer"
handshake/connection is completed (typically SSL, TLS or SSH). By using this
you can figure out the application layer's own connect time. You can extract
the time stamp using curl's -w option and the new variable named
'time_appconnect'. This feature was sponsored by Lenny Rachitsky at NeuStar.
2008-07-03 06:56:03 +00:00
Dan Fandrich
ee64d14733 Support Open Watcom C on Linux (as well as Windows). 2008-07-02 18:34:00 +00:00
Yang Tse
bfaab6ed6b The configure process will now halt when sed or grep are unavailable 2008-07-02 17:42:08 +00:00
Yang Tse
97333deb3f fallback to gettimeofday when monotonic clock is unavailable at run-time 2008-07-02 03:04:56 +00:00
Daniel Stenberg
400d9d4205 - Rolland Dudemaine provided fixes to get libcurl to build for the INTEGRITY
operating system.
2008-07-01 21:53:47 +00:00
Daniel Stenberg
ad1145a201 CreateConnection collided with a function using the exact same name in the
INTEGRITY RTOS, so I renamed it to create_conn. It then made sense to also
rename SetupConnection to setup_conn to match it.
2008-07-01 21:53:18 +00:00
Yang Tse
513c22df3b IBM C/C++ compiler predefined macro check 2008-07-01 10:29:25 +00:00
Yang Tse
b5afd53138 set earlier in configure process IBM compilers optimization flags 2008-07-01 00:30:44 +00:00
Yang Tse
72b4b3c7f8 make check message wording more precise 2008-06-30 14:10:27 +00:00
Daniel Stenberg
eb60ba23f5 - Stephen Collyer and Tor Arntsen helped identify a flaw in the range code
which output the range using a signed variable where it should rather use
  unsigned.
2008-06-30 13:07:05 +00:00
Daniel Stenberg
69aac49f79 made %llu work for printing unsigned long longs, added the generic curl source
header
2008-06-30 12:58:15 +00:00
Daniel Stenberg
67f139e016 - As was pointed out to me by Andreas Schuldei, the MAXHOSTNAMELEN define is
not posix or anything and thus c-ares failed to build on hurd (and possibly
  elsewhere). The define was also somewhat artificially used in the windows
  port. Now, I instead rewrote the use of gethostbyname to enlarge the host
  name buffer in case of need and totally avoid the use of the MAXHOSTNAMELEN
  define. I thus also removed the defien from the namser.h file where it was
  once added for the windows build.

  I also fixed init_by_defaults() function to not leak memory in case if
  error.
2008-06-30 12:48:25 +00:00
Daniel Stenberg
654f047302 minor language fix 2008-06-30 09:39:26 +00:00
Yang Tse
e6c23672b2 fix C style comment 2008-06-29 11:08:52 +00:00
Yang Tse
1058e5fdde John Lightsey filed bug report #1999181: "CLOCK_MONOTONIC always fails on
some systems" (http://curl.haxx.se/bug/view.cgi?id=1999181). The problem was
that the configure script did not use the _POSIX_MONOTONIC_CLOCK feature test
macro when checking monotonic clock availability. This is now fixed and the
monotonic clock will not be used unless the feature test macro is defined
with a value greater than zero indicating always supported.
2008-06-29 03:19:20 +00:00
Daniel Stenberg
6929d9355f let's try to maintain compatibility with NSS 3.11.x 2008-06-26 07:53:44 +00:00
Dan Fandrich
8c377ad965 Honour --stderr with the -v option.
Fixed a file handle leak in the command line client if more than one
--stderr option was given.
2008-06-26 01:43:53 +00:00
Daniel Stenberg
a81a16beac Added README.NSS to describe the current NSS situation. 2008-06-24 08:52:35 +00:00
Daniel Stenberg
d92945bb8a - Eduard Bloch filed the debian bug report #487567
(http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=487567) pointing out that
  libcurl used Content-Range: instead of Range when doing a range request with
  --head (CURLOPT_NOBODY). This is now fixed and test case 1032 was added to
  verify.
2008-06-22 20:38:16 +00:00
Dan Fandrich
90a6a59a2f Stopped using ranges in scanf character sequences (e.g. %[a-z]) since that
is not ANSI C, just a common extension.  This caused problems on
at least Open Watcom C.
2008-06-22 06:57:00 +00:00
Daniel Stenberg
8bae3d9007 Oops, that was an experimental change not meant to be committed! 2008-06-21 21:21:29 +00:00
Daniel Stenberg
98042b858d made Curl_nss_send() take const data to kill compiler warning 2008-06-21 21:19:42 +00:00
Dan Fandrich
a837bd08b0 Edited some test keywords for consistency 2008-06-21 17:56:48 +00:00
Yang Tse
2c61e9c76a Modified configuration script to actually verify if the compiler is good
enough at detecting compilation errors or at least it has been properly
configured to do so. Configuration heavily depends on this capability, so
if this compiler sanity check fails the configuration process will now fail.
2008-06-20 18:09:48 +00:00
Daniel Stenberg
da97f78ae0 - Phil Pellouchoud found a case where libcurl built with NSS failed to
handshake with a SSLv2 server, and it turned out to be because it didn't
  recognize the cipher named "rc4-md5". In our list that cipher was named
  plainly "rc4". I've now added rc4-md5 to work as an alias as Phil reported
  that it made things work for him again.
2008-06-20 11:15:54 +00:00
Daniel Stenberg
2e1a9da5e2 remove leftover proto that isn't used, I made it a macro instead 2008-06-20 10:45:26 +00:00
Daniel Stenberg
422fd933f5 - Hans-Jurgen May pointed out that trying SCP or SFTP over a SOCKS proxy
crashed libcurl. This is now addressed by making sure we use "plain send"
  internally when doing the socks handshake instead of the Curl_write()
  function which is designed to use the "target" protocol. That's then SCP or
  SFTP in this case. I also took the opportunity and cleaned up some ssh-
  related #ifdefs in the code for readability.
2008-06-20 10:43:32 +00:00
Daniel Stenberg
2594124825 minor language fix 2008-06-19 22:24:21 +00:00
Daniel Stenberg
d09b6ecaa5 - Christopher Palow fixed a curl_multi_socket() issue which previous caused
libcurl to not tell the app properly when a socket was closed (when the name
  resolve done by c-ares is done) and then immediately re-created and put to
  use again (for the actual connection). Since the closure will make the
  "watch status" get lost in several event-based systems libcurl will need to
  tell the app about this close/re-create case.
2008-06-19 21:32:51 +00:00
Daniel Stenberg
fb2e71b9bd - Dengminwen found a bug in the connection re-use function when using the
multi interface with pipelining enabled as it would wrongly check for,
  detect and close "dead connections" even though that connection was already
  in use!
2008-06-19 08:31:22 +00:00
Daniel Stenberg
68b67e24f2 Removed the #define of ciphernum since keeping a define updated to be the
number of entries in a provided table is doomed to fail in the long run. Now
we use the NUM_OF_CIPHERS define instead to figure out the amount.
2008-06-19 05:47:27 +00:00
Daniel Stenberg
c1e2341f0a s/strcasecmp/strequal to make it more portable 2008-06-19 05:42:45 +00:00
Dan Fandrich
70d834c512 Always use $LOGDIR when referring to the log directory. 2008-06-19 01:12:02 +00:00
Dan Fandrich
65ee4e4555 Fixed a memory leak in the command-line tool that caused a valgrind error. 2008-06-19 00:30:02 +00:00
Dan Fandrich
5304b13365 Added SSH failure test cases 628-632 2008-06-19 00:18:58 +00:00
Daniel Stenberg
e547bfa933 - Rob Crittenden brought a fix for the NSS layer that makes libcurl no longer
always fire up a new connection rather than using the existing one when the
  multi interface is used. Original bug report:
  https://bugzilla.redhat.com/show_bug.cgi?id=450140
2008-06-18 22:01:55 +00:00
Daniel Stenberg
36ddb13d1f removed warning about unused argument by simply removing that argument from
the check_issuer_cert() proto
2008-06-18 21:50:40 +00:00
Daniel Stenberg
74e3def5b3 check_issuer_cert() now builds and there's one warning less. Still one compiler
warning in the code though but we need NSS' base64.h header for that and we
don't currently have a suitable way to include it as our own base64.h header
kind of "blocks" it.
2008-06-18 21:48:51 +00:00
Yang Tse
24d41452b0 No longer break out of a shell "for" statement from inside
AC_FOO_IFELSE macros, otherwise temp files are not removed.

Identation adjustment.
2008-06-18 04:39:29 +00:00
Daniel Stenberg
2597020d22 In checkPendPipeline() we can't be setting the TIMER_CONNECT correctly as that
is for the TCP connect. I changed it to TIMER_PRETRANSFER which seems to be
what was intended here.
2008-06-13 21:16:10 +00:00
Daniel Stenberg
2d0fea2650 fixed the language somewhat 2008-06-13 20:45:34 +00:00
Dan Fandrich
c1a71ad14f Fixed curl-config --ca which wasn't being exported by configure. 2008-06-13 00:03:12 +00:00
Dan Fandrich
024c7641a9 Added IPv6 keywords for some more tests that require IPv6 networking support 2008-06-12 23:50:57 +00:00
Daniel Stenberg
5c56bdf229 fixed bad infof() usage! 2008-06-12 22:00:35 +00:00
Daniel Stenberg
af779fa57c added the versions of a range of build tools that we want to remain to work 2008-06-12 21:16:00 +00:00
Daniel Stenberg
9918541795 My first attempt at documenting what we try to support and make curl run with
in regard to C standard, third party libraries and operating systems etc.
2008-06-12 21:03:16 +00:00
Daniel Stenberg
04d5c8fb77 - I did a cleanup of the internal generic SSL layer and how the various SSL
libraries are supported. Starting now, each underlying SSL library support
  code does a set of defines for the 16 functions the generic layer (sslgen.c)
  uses (all these new function defines use the prefix "curlssl_"). This
  greatly simplified the generic layer in readability by involving much less
  #ifdefs and other preprocessor stuff and should make it easier for people to
  make libcurl work with new SSL libraries.

  Hopefully I can later on document these 16 functions somewhat as well.

  I also made most of the internal SSL-dependent functions (using Curl_ssl_
  prefix) #defined to nothing when no SSL support is requested - previously
  they would unnecessarily call mostly empty functions.
2008-06-11 17:01:58 +00:00
Yang Tse
5980b3cbb0 fix compiler warning: conversion from pointer to void' to pointer to int
function(pointer to char,int,int,pointer to void)' is compiler dependent
2008-06-11 15:26:04 +00:00
Gunter Knauf
10074bfcc6 enable additional CFLAGS from commandline. 2008-06-11 00:07:08 +00:00
Daniel Stenberg
3940e69c91 fix warning in GnuTLS build by making sure Curl_gtls_send() takes a const
void *
2008-06-10 21:53:59 +00:00
Daniel Stenberg
0ace5f6553 - I made the OpenSSL code build again with OpenSSL 0.9.6. The CRLFILE
functionality killed it due to its unconditional use of
  X509_STORE_set_flags...
2008-06-10 20:49:17 +00:00
Michal Marek
b8a9f19515 CURLOPT_CRLFILE and CURLOPT_ISSUERCERT are new string options 2008-06-09 11:13:19 +00:00
Yang Tse
6cd007838d fix pkg-config reporting of private libraries needed for static linking 2008-06-09 01:06:48 +00:00
Gunter Knauf
72870e2c57 enable additional CFLAGS from commandline. 2008-06-08 22:29:34 +00:00
Daniel Stenberg
9c8997cbe4 7.19.0 is next 2008-06-08 22:00:42 +00:00
Daniel Stenberg
c6efb82526 the next release is now called 7.19.0 2008-06-08 21:04:46 +00:00
Daniel Stenberg
5abfdc0140 - curl the tool now deals with its command line options somewhat differently!
All boolean options (such as -O, -I, -v etc), both short and long versions,
  now always switch on/enable the option named. Using the same option multiple
  times thus make no difference. To switch off one of those options, you need
  to use the long version of the option and type --no-OPTION. Like to disable
  verbose mode you use --no-verbose!

- Added --remote-name-all to curl, which if used changes the default for all
  given URLs to be dealt with as if -O is used. So if you want to disable that
  for a specific URL after --remote-name-all has been used, you muse use -o -
  or --no-remote-name.
2008-06-08 20:53:49 +00:00
Gunter Knauf
d8bc4a0e9a use our *printf functions only. 2008-06-08 15:52:03 +00:00
Daniel Stenberg
8ad2fdd71e Moved all changes from 2007 from CHANGES to CHANGES.0 2008-06-06 22:11:24 +00:00
Daniel Stenberg
a2e45a2211 code style cleanup 2008-06-06 20:57:32 +00:00
Daniel Stenberg
621c2b9015 - Axel Tillequin and Arnaud Ebalard added support for CURLOPT_ISSUERCERT, for
OpenSSL, NSS and GnuTLS-built libcurls.
2008-06-06 20:52:32 +00:00
Yang Tse
b39d1e9b9d MSVC does build Windows native targets 2008-06-06 18:44:39 +00:00
Daniel Stenberg
e1c456407e mention added in 7.18.3 2008-06-06 18:40:58 +00:00
Daniel Stenberg
3fe8251dfb - Axel Tillequin and Arnaud Ebalard added support for CURLOPT_CRLFILE, for
OpenSSL, NSS and GnuTLS-built libcurls.
2008-06-06 18:40:21 +00:00
Daniel Stenberg
930a45e7a9 - Added CURLINFO_PRIMARY_IP as a new information retrievable with
curl_easy_getinfo. It returns a pointer to a string with the most recently
  used IP address. Modified test case 500 to also verify this feature. The
  implementing of this feature was sponsored by Lenny Rachitsky at NeuStar.
2008-06-06 17:33:35 +00:00
Daniel Stenberg
afc66554d7 7.18.2 is done now 2008-06-05 12:33:33 +00:00
Dan Fandrich
998ab15570 Mention the minimum Symbian OS version required. 2008-06-05 00:15:01 +00:00
Dan Fandrich
c0d258ca17 Mention a few options that require an argument in --help 2008-06-04 23:44:53 +00:00
Daniel Stenberg
230e4547e8 start working on 7.18.3! 2008-06-04 16:05:48 +00:00
Daniel Stenberg
4cf33909ee new contributors from the 7.18.2 release 2008-06-04 16:03:54 +00:00
314 changed files with 19946 additions and 6883 deletions

View File

@@ -4,6 +4,7 @@ Makefile
libtool
Makefile.in
aclocal.m4
aclocal.m4.bak
configure
config.h
config.status

2217
CHANGES

File diff suppressed because it is too large Load Diff

1603
CHANGES.0

File diff suppressed because it is too large Load Diff

View File

@@ -23,8 +23,11 @@
AUTOMAKE_OPTIONS = foreign
ACLOCAL_AMFLAGS = -I m4
EXTRA_DIST = CHANGES COPYING maketgz reconf Makefile.dist curl-config.in \
curl-style.el sample.emacs RELEASE-NOTES buildconf buildconf.bat libcurl.pc.in
curl-style.el sample.emacs RELEASE-NOTES buildconf buildconf.bat \
libcurl.pc.in vc6curl.dsw
bin_SCRIPTS = curl-config
@@ -135,3 +138,7 @@ uninstall-hook:
ca-bundle: lib/mk-ca-bundle.pl
@echo "generate a fresh ca-bundle.crt"
@perl $< -b -l -u lib/ca-bundle.crt
ca-firefox: lib/firefox-db2pem.sh
@echo "generate a fresh ca-bundle.crt"
./lib/firefox-db2pem.sh lib/ca-bundle.crt

View File

@@ -265,4 +265,6 @@ ca-bundle: lib/mk-ca-bundle.pl
@echo "generate a fresh ca-bundle.crt"
@perl $< -b -l -u lib/ca-bundle.crt
ca-firefox: lib/firefox-db2pem.sh
@echo "generate a fresh ca-bundle.crt"
./lib/firefox-db2pem.sh lib/ca-bundle.crt

5
README
View File

@@ -30,10 +30,9 @@ CONTACT
WEB SITE
Visit the curl web site or mirrors for the latest news and downloads:
Visit the curl web site for the latest news and downloads:
Sweden http://curl.haxx.se/
Mirrors http://curlm.haxx.se/
http://curl.haxx.se/
CVS

View File

@@ -1,46 +1,69 @@
Curl and libcurl 7.18.2
Curl and libcurl 7.19.0
Public curl releases: 105
Command line options: 126
curl_easy_setopt() options: 150
Public curl releases: 106
Command line options: 127
curl_easy_setopt() options: 153
Public functions in libcurl: 58
Public web site mirrors: 37
Known libcurl bindings: 36
Contributors: 636
Contributors: 654
This release includes the following changes:
o curl_off_t gets its size/typedef somewhat differently than before. This _may_
cause an ABI change for you. See lib/README.curl_off_t for a full explanation.
o CURLFORM_STREAM was added
o CURLOPT_NOBODY is now supported over SFTP
o curl can now run on Symbian OS
o curl -w redirect_url and CURLINFO_REDIRECT_URL
o added curl_easy_send() and curl_easy_recv()
o Added CURLINFO_PRIMARY_IP
o Added CURLOPT_CRLFILE and CURLE_SSL_CRL_BADFILE
o Added CURLOPT_ISSUERCERT and CURLE_SSL_ISSUER_ERROR
o curl's option parser for boolean options reworked
o Added --remote-name-all
o Now builds for the INTEGRITY operating system
o Added CURLINFO_APPCONNECT_TIME
o Added test selection by key word in runtests.pl
o the curl tool's -w option support the %{ssl_verify_result} variable
o Added CURLOPT_ADDRESS_SCOPE and scope parsing of the URL according to RFC4007
o Support --append on SFTP uploads (not with OpenSSH, though)
o Added curlbuild.h and curlrules.h to the external library interface
This release includes the following bugfixes:
o CURLOPT_NOBODY first set to TRUE and then FALSE for HTTP no longer causes
the confusion that could lead to a hung transfer
o curl_easy_reset() resets the max redirect limit properly
o configure now correctly recognizes Heimdal and MIT gssapi libraries
o malloc() failure check in Negotiate
o -i and -I together now work the same no matter what order they're used
o the typechecker can be bypassed by defining CURL_DISABLE_TYPECHECK
o a pointer mixup could make the FTP code send bad user+password under rare
circumstances (found when using curlftpfs)
o CURLOPT_OPENSOCKETFUNCTION can now be used to create a unix domain socket
o CURLOPT_TCP_NODELAY crash due to getprotobyname() use
o libcurl sometimes sent body twice when using CURLAUTH_ANY
o configure detecting debug-enabled c-ares
o microsecond resolution keys for internal splay trees
o krb4 and krb5 ftp segfault
o multi interface busy loop for CONNECT requests
o internal time differences now use monotonic time source if available
o several curl_multi_socket() fixes
o builds fine for Haiku OS
o follow redirect with only a new query string
o SCP and SFTP memory leaks on aborted transfers
o curl_multi_socket() and HTTP pipelining transfer stalls
o lost telnet data on an EWOULDBLOCK condition
o Fixed curl-config --ca
o Fixed the multi interface connection re-use with NSS-built libcurl
o connection re-use when using the multi interface with pipelining enabled
o curl_multi_socket() socket callback fix for close/re-create sockets case
o SCP or SFTP over socks proxy crashed
o RC4-MD5 cipher now works with NSS-built libcurl
o range requests with --head are now done correctly
o fallback to gettimeofday when monotonic clock is unavailable at run-time
o range numbers could be made to wrongly get output as signed
o unexpected 1xx responses hung transfers
o FTP transfers segfault when using different CURLOPT_FTP_FILEMETHOD
o c-ares powered libcurls can resolve/use IPv6 addresses
o poll not working on Windows Vista due to POLLPRI being incorrectly used
o user-agent in CONNECT with non-HTTP protocols
o CURL_READFUNC_PAUSE problems fixed
o --use-ascii now works on Symbian OS, MS-DOS and OS/2
o CURLINFO_SSL_VERIFYRESULT is fixed
o FTP URLs and IPv6 URLs mangled when sent to proxy with CURLOPT_PORT set
o a user name in a proxy URL without a password was parsed incorrectly
o library will now be built with _REENTRANT symbol defined only if needed
o no longer link with gdi32 on Windows cross-compiled targets
o HTTP PUT with -C - sent bad Content-Range: header
o HTTP PUT or POST with redirect could lead to hang
o re-use of connections with failed SSL connects in the multi interface
o NTLM over proxy state was wrongly cleared when host connection was closed
o Windows SSPI DLL loading is now done in curl_global_init()
o runtests.pl has an improved find-stunnel-and-invoke
o FTP sessions could go out of sync on a long header boundary condition
o potential buffer overflows in the MS-DOS command-line port fixed
o --stderr is now honoured with the -v option
o memory leak in libcurl on Windows built with OpenSSL
o improved curl_m*printf() integral data type size and signedness handling
o error when --dump-header - used with more than one URL
o proxy closing connect during CONNECT with auth with the multi interface
o CURLOPT_UPLOAD sets HTTP method back to GET or HEAD when passed in a 0
o shared cookies could get locked twice
o deal with closed connection while doing POST/PUT
This release includes the following known bugs:
@@ -48,21 +71,18 @@ This release includes the following known bugs:
Other curl-related news:
o pycurl 7.18.1 was released: http://pycurl.sf.net/
o brand new curl Haskell binding:
http://hackage.haskell.org/cgi-bin/hackage-scripts/package/curl
New curl mirrors:
o
This release would not have looked like this without help, code, reports and
advice from friends like these:
Michal Marek, Daniel Fandrich, Scott Barrett, Alexey Simak, Daniel Black,
Rafa Muyo, Andre Guibert de Bruet, Brock Noland, Sandor Feldi, Stefan Krause,
David Shaw, Norbert Frese, Bart Whiteley, Jean-Francois Bertrand, Ben Van Hof,
Yuriy Sosov, Christopher Palow, Yang Tse, Liam Healy, Nikolai Kondrashov,
David Rosenstrauch, Andreas Faerber, Scott McCreary, Jeff Weber, Emil Romanus
Lenny Rachitsky, Axel Tillequin, Arnaud Ebalard, Yang Tse, Dan Fandrich,
Rob Crittenden, Dengminwen, Christopher Palow, Hans-Jurgen May,
Phil Pellouchoud, Eduard Bloch, John Lightsey, Stephen Collyer, Tor Arntsen,
Rolland Dudemaine, Phil Blundell, Scott Barrett, Andreas Schuldei,
Peter Lamberg, David Bau, Pramod Sharma, Yehoshua Hershberg,
Constantine Sapuntzakis, Lars Nilsson, Andy Tsouladze, Jamie Lokier,
Vincent Le Normand
Thanks! (and sorry if I forgot to mention someone)

View File

@@ -1,17 +1,26 @@
To be addressed before 7.18.2 (planned release: June 2008)
To be addressed before 7.19.0 (planned release: August 2008)
=============================
To be addressed before 7.18.3 (planned release: August 2008)
To be addressed before 7.19.1 (planned release: October 2008)
=============================
139 - Christopher Palow's CURLM_EASY_HANDLE_EXISTS patch
157 - the CERTINFO patch as posted to:
http://curl.haxx.se/mail/lib-2008-08/0105.html
140 - Arnaud Ebalard and Axel Tillequin's CRL support and issuer check patches
158 - Martin Drasar's CURLOPT_POSTREDIR work:
http://curl.haxx.se/mail/lib-2008-08/0170.html
141 - The sponsored feature CURLINFO_PRIMARY_IP that returns the IP address
as a string for the most recently used connection.
162 - Craig Perras' note "http upload: how to stop on error"
http://curl.haxx.se/mail/archive-2008-08/0138.html
144 - Help apps use 64bit/LFS libcurl!
163 - Detecting illegal attempts at chunked transfers on HTTP 1.0
(tests 1069, 1072, 1073)
http://curl.haxx.se/mail/archive-2008-08/0435.html
145 -
164 - Automatic downgrading to HTTP 1.0 (tests 1071 through 1074)
165 - "Problem with CURLOPT_RESUME_FROM and CURLOPT_APPEND" by Daniele Pinau,
recipe: http://curl.haxx.se/mail/lib-2008-08/0439.html
166 -

File diff suppressed because it is too large Load Diff

View File

@@ -1,34 +1,37 @@
c-ares is based on ares, and these are the people that have worked on it since
the fork was made:
Daniel Stenberg
Dominick Meglio
liren at vivisimo.com
James Bursa
Duncan Wilcox
Dirk Manske
Alexander Lazic
Alexey Simak
Andreas Rieke
Ashish Sharma
Brad House
Brad Spencer
Bram Matthys
Dan Fandrich
Daniel Stenberg
Dirk Manske
Dominick Meglio
Doug Goldstein
Duncan Wilcox
Eino Tuominen
Erik Kline
George Neill
Gisle Vanem
Guilherme Balena Versiani
Gunter Knauf
Henrik Stoerner
Yang Tse
Nick Mathewson
Alexander Lazic
Andreas Rieke
Guilherme Balena Versiani
Brad Spencer
Ravi Pratap
William Ahern
Bram Matthys
James Bursa
Michael Wallner
Vlad Dinulescu
Brad House
Shmulik Regev
Ashish Sharma
Steinar H. Gunderson
Nick Mathewson
Phil Blundell
Ravi Pratap
Robin Cornelius
Erik Kline
Alexey Simak
Eino Tuominen
Doug Goldstein
Sebastian at basti79.de
Shmulik Regev
Steinar H. Gunderson
Tofu Linden
Vlad Dinulescu
William Ahern
Yang Tse
liren at vivisimo.com

View File

@@ -1,5 +1,122 @@
Changelog for the c-ares project
Version 1.5.3 (Aug 29, 2008)
* Aug 25 2008 (Yang Tse)
- Improvement by Brad House:
This patch addresses an issue in which a response could be sent back to the
source port of a client from a different address than the request was made to.
This is one form of a DNS cache poisoning attack.
The patch simply uses recvfrom() rather than recv() and validates that the
address returned from recvfrom() matches the address of the server we have
connected to. Only necessary on UDP sockets as they are connection-less, TCP
is unaffected.
- Fix by George Neill:
Fixed compilation of acountry sample application failure on some systems.
* Aug 4 2008 (Daniel Stenberg)
- Fix by Tofu Linden:
The symptom:
* Users (usually, but not always) on 2-Wire routers and the Comcast service
and a wired connection to their router would find that the second and
subsequent DNS lookups from fresh processes using c-ares to resolve the same
address would cause the process to never see a reply (it keeps polling for
around 1m15s before giving up).
The repro:
* On such a machine (and yeah, it took us a lot of QA to find the systems
that reproduce such a specific problem!), do 'ahost www.secondlife.com',
then do it again. The first process's lookup will work, subsequent lookups
will time-out and fail.
The cause:
* init_id_key() was calling randomize_key() *before* it initialized
key->state, meaning that the randomness generated by randomize_key() is
immediately overwritten with deterministic values. (/dev/urandom was also
being read incorrectly in the c-ares version we were using, but this was
fixed in a later version.)
* This makes the stream of generated query-IDs from any new c-ares process
be an identical and predictable sequence of IDs.
* This makes the 2-Wire's default built-in DNS server detect these queries
as probable-duplicates and (erroneously) not respond at all.
* Aug 4 2008 (Yang Tse)
- Autoconf 2.62 has changed the behaviour of the AC_AIX macro which we use.
Prior versions of autoconf defined _ALL_SOURCE if _AIX was defined. 2.62
version of AC_AIX defines _ALL_SOURCE and other four preprocessor symbols
no matter if the system is AIX or not. To keep the traditional behaviour,
and an uniform one across autoconf versions AC_AIX is replaced with our
own internal macro CARES_CHECK_AIX_ALL_SOURCE.
* Aug 1 2008 (Yang Tse)
- Configure process now checks if the preprocessor _REENTRANT symbol is already
defined. If it isn't currently defined a set of checks are performed to test
if its definition is required to make visible to the compiler a set of *_r
functions. Finally, if _REENTRANT is already defined or needed it takes care
of making adjustments necessary to ensure that it is defined equally for the
configure process tests and generated config file.
* Jul 20 2008 (Yang Tse)
- When recvfrom prototype uses a void pointer for arguments 2, 5 or 6 this will
now cause the definition, as appropriate, of RECVFROM_TYPE_ARG2_IS_VOID,
RECVFROM_TYPE_ARG5_IS_VOID or RECVFROM_TYPE_ARG6_IS_VOID.
* Jul 17 2008 (Yang Tse)
- RECVFROM_TYPE_ARG2, RECVFROM_TYPE_ARG5 and RECVFROM_TYPE_ARG6 are now defined
to the data type pointed by its respective argument and not the pointer type.
* Jul 16 2008 (Yang Tse)
- Improved configure detection of number of arguments for getservbyport_r.
Detection is now based on compilation checks instead of linker ones.
- Configure process now checks availability of recvfrom() socket function and
finds out its return type and the types of its arguments. Added definitions
for non-configure systems config files, and introduced macro sreadfrom which
will be used on udp sockets as a recvfrom() wrapper in the future.
* Jul 15 2008 (Yang Tse)
- Introduce definition of _REENTRANT symbol in setup.h to improve library
usability. Previously the configure process only used the AC_SYS_LARGEFILE
macro for debug builds, now it is also used for non-debug ones enabling the
use of configure options --enable-largefile and --disable-largefile which
might be needed for library compatibility. Remove checking the size of
curl_off_t, it is no longer needed.
* Jul 3 2008 (Daniel Stenberg)
- Phil Blundell: If you ask ares_gethostbyname() to do an AF_INET6 lookup and
the target host has only A records, it automatically falls back to an
AF_INET lookup and gives you the A results. However, if the target host has
a CNAME record, this behaviour is defeated since the original query does
return some data even though ares_parse_aaa_reply() doesn't consider it
relevant. Here's a small patch to make it behave the same with and without
the CNAME.
* Jul 2 2008 (Yang Tse)
- Fallback to gettimeofday when monotonic clock is unavailable at run-time.
* Jun 30 2008 (Daniel Stenberg)
- As was pointed out to me by Andreas Schuldei, the MAXHOSTNAMELEN define is
not posix or anything and thus c-ares failed to build on hurd (and possibly
elsewhere). The define was also somewhat artificially used in the windows
port. Now, I instead rewrote the use of gethostbyname to enlarge the host
name buffer in case of need and totally avoid the use of the MAXHOSTNAMELEN
define. I thus also removed the defien from the namser.h file where it was
once added for the windows build.
I also fixed init_by_defaults() function to not leak memory in case if
error.
* Jun 9 2008 (Yang Tse)
- Make libcares.pc generated file for pkg-config include information relative
to the libraries needed for the static linking of c-ares.
* May 30 2008 (Yang Tse)
- Brad House fixed a missing header file inclusion in adig sample program.

View File

@@ -1,4 +1,30 @@
AUTOMAKE_OPTIONS = foreign
AUTOMAKE_OPTIONS = foreign nostdinc
ACLOCAL_AMFLAGS = -I m4
# Specify our include paths here, and do it relative to $(top_srcdir) and
# $(top_builddir), to ensure that these paths which belong to the library
# being currently built and tested are searched before the library which
# might possibly already be installed in the system.
#
# When using the low-level hard-hacking memory leak tracking code from
# libcurl the generated curl/curlbuild.h file must also be reachable.
# Using the libcurl lowlevel code from within c-ares library is ugly and
# only works when c-ares is built and linked with a similarly debug-build
# libcurl, but we do this anyway for convenience.
#
# $(top_builddir)/../include is for libcurl's generated curl/curlbuild.h file
# $(top_builddir) is for c-ares's generated config.h file
# $(top_srcdir) is for c-ares's lib/setup.h and other "c-ares-private" files
if CURLDEBUG
INCLUDES = -I$(top_builddir)/../include \
-I$(top_builddir) \
-I$(top_srcdir)
else
INCLUDES = -I$(top_builddir) \
-I$(top_srcdir)
endif
lib_LTLIBRARIES = libcares.la

View File

@@ -23,7 +23,12 @@ CFLAGS += -DWATT32 -DHAVE_AF_INET6 -DHAVE_PF_INET6 -DHAVE_IOCTLSOCKET \
-DRECV_TYPE_ARG1='int' -DRECV_TYPE_ARG2='void*' \
-DRECV_TYPE_ARG3='int' -DRECV_TYPE_ARG4='int' \
-DRECV_TYPE_RETV='int' -DHAVE_STRUCT_TIMEVAL \
-Dselect=select_s -Dsocklen_t=int -UHAVE_CONFIG_H
-Dselect=select_s -Dsocklen_t=int -UHAVE_CONFIG_H \
-DRECVFROM_TYPE_ARG1='int' -DRECVFROM_TYPE_ARG2='void' \
-DRECVFROM_TYPE_ARG3='int' -DRECVFROM_TYPE_ARG4='int' \
-DRECVFROM_TYPE_ARG6='int' -DRECVFROM_TYPE_RETV='int' \
-DRECVFROM_TYPE_ARG5='struct sockaddr' -DHAVE_RECVFROM \
-DRECVFROM_TYPE_ARG2_IS_VOID
LDFLAGS = -s

View File

@@ -75,7 +75,7 @@ MKDIR = mkdir
MPKXDC = mkxdc
# Global flags for all compilers
CFLAGS = $(OPT) -D$(DB) -DNETWARE -DHAVE_CONFIG_H -nostdinc
CFLAGS += $(OPT) -D$(DB) -DNETWARE -DHAVE_CONFIG_H -nostdinc
ifeq ($(CC),mwccnlm)
LD = mwldnlm
@@ -282,13 +282,19 @@ config.h: Makefile.netware
@echo $(DL)#define PACKAGE_BUGREPORT "a suitable curl mailing list => http://curl.haxx.se/mail/"$(DL) >> $@
ifeq ($(LIBARCH),CLIB)
@echo $(DL)#define OS "i586-pc-clib-NetWare"$(DL) >> $@
@echo $(DL)#define MAXHOSTNAMELEN 256$(DL) >> $@
@echo $(DL)#define NETDB_USE_INTERNET 1$(DL) >> $@
@echo $(DL)#define RECV_TYPE_ARG1 int$(DL) >> $@
@echo $(DL)#define RECV_TYPE_ARG2 char *$(DL) >> $@
@echo $(DL)#define RECV_TYPE_ARG3 int$(DL) >> $@
@echo $(DL)#define RECV_TYPE_ARG4 int$(DL) >> $@
@echo $(DL)#define RECV_TYPE_RETV int$(DL) >> $@
@echo $(DL)#define RECVFROM_TYPE_ARG1 int$(DL) >> $@
@echo $(DL)#define RECVFROM_TYPE_ARG2 char$(DL) >> $@
@echo $(DL)#define RECVFROM_TYPE_ARG3 int$(DL) >> $@
@echo $(DL)#define RECVFROM_TYPE_ARG4 int$(DL) >> $@
@echo $(DL)#define RECVFROM_TYPE_ARG5 struct sockaddr$(DL) >> $@
@echo $(DL)#define RECVFROM_TYPE_ARG6 int$(DL) >> $@
@echo $(DL)#define RECVFROM_TYPE_RETV int$(DL) >> $@
@echo $(DL)#define SEND_QUAL_ARG2$(DL) >> $@
@echo $(DL)#define SEND_TYPE_ARG1 int$(DL) >> $@
@echo $(DL)#define SEND_TYPE_ARG2 char *$(DL) >> $@
@@ -325,6 +331,14 @@ else
@echo $(DL)#define RECV_TYPE_ARG3 size_t$(DL) >> $@
@echo $(DL)#define RECV_TYPE_ARG4 int$(DL) >> $@
@echo $(DL)#define RECV_TYPE_RETV ssize_t$(DL) >> $@
@echo $(DL)#define RECVFROM_TYPE_ARG1 int$(DL) >> $@
@echo $(DL)#define RECVFROM_TYPE_ARG2 void$(DL) >> $@
@echo $(DL)#define RECVFROM_TYPE_ARG3 size_t$(DL) >> $@
@echo $(DL)#define RECVFROM_TYPE_ARG4 int$(DL) >> $@
@echo $(DL)#define RECVFROM_TYPE_ARG5 struct sockaddr$(DL) >> $@
@echo $(DL)#define RECVFROM_TYPE_ARG6 size_t$(DL) >> $@
@echo $(DL)#define RECVFROM_TYPE_RETV ssize_t$(DL) >> $@
@echo $(DL)#define RECVFROM_TYPE_ARG2_IS_VOID 1$(DL) >> $@
@echo $(DL)#define SEND_QUAL_ARG2$(DL) >> $@
@echo $(DL)#define SEND_TYPE_ARG1 int$(DL) >> $@
@echo $(DL)#define SEND_TYPE_ARG2 void *$(DL) >> $@
@@ -350,6 +364,7 @@ endif
@echo $(DL)#define HAVE_MALLOC_H 1$(DL) >> $@
@echo $(DL)#define HAVE_NETINET_IN_H 1$(DL) >> $@
@echo $(DL)#define HAVE_RECV 1$(DL) >> $@
@echo $(DL)#define HAVE_RECVFROM 1$(DL) >> $@
@echo $(DL)#define HAVE_SELECT 1$(DL) >> $@
@echo $(DL)#define HAVE_SEND 1$(DL) >> $@
@echo $(DL)#define HAVE_SETJMP_H 1$(DL) >> $@
@@ -373,7 +388,6 @@ endif
@echo $(DL)#define HAVE_UTIME 1$(DL) >> $@
@echo $(DL)#define HAVE_UTIME_H 1$(DL) >> $@
@echo $(DL)#define RETSIGTYPE void$(DL) >> $@
@echo $(DL)#define SIZEOF_CURL_OFF_T 4$(DL) >> $@
@echo $(DL)#define SIZEOF_STRUCT_IN_ADDR 4$(DL) >> $@
@echo $(DL)#define STDC_HEADERS 1$(DL) >> $@
@echo $(DL)#define TIME_WITH_SYS_TIME 1$(DL) >> $@

View File

@@ -111,6 +111,7 @@ $(DEF_FILE): $(OBJECTS) Makefile.VC6
@echo ares_parse_ptr_reply >> $@
@echo ares_parse_ns_reply >> $@
@echo ares_process >> $@
@echo ares_process_fd >> $@
@echo ares_query >> $@
@echo ares_search >> $@
@echo ares_strerror >> $@

View File

@@ -27,7 +27,7 @@ call ares_process() when select() returns.
Some features are missing from the current version of ares, relative
to the BIND resolver:
* There is no IPV6 support.
* There is no IPV6 support. [not true for c-ares]
* There is no hostname verification.
* There is no logging of unexpected events.
* There is no debugging-oriented logging.

View File

@@ -1,10 +1,10 @@
This is what's new and changed in the c-ares 1.5.3 release:
This is what's new and changed in the c-ares 1.5.4 release:
o adig sample application compilation failure on some systems
o
Thanks go to these friendly people for their efforts and contributions:
Brad House
and obviously Daniel Stenberg
Have fun!

File diff suppressed because it is too large Load Diff

View File

@@ -47,7 +47,7 @@
#include <strings.h>
#endif
#if defined(WIN32)
#if defined(WIN32) && !defined(WATT32)
#include <winsock.h>
#else
#include <arpa/inet.h>
@@ -60,6 +60,10 @@
#include "inet_net_pton.h"
#include "inet_ntop.h"
#ifndef INADDR_NONE
#define INADDR_NONE 0xffffffff
#endif
static const char *usage = "acountry [-vh?] {host|addr} ...\n";
static const char nerd_fmt[] = "%u.%u.%u.%u.zz.countries.nerd.dk";
static const char *nerd_ver1 = nerd_fmt + 14;
@@ -90,7 +94,7 @@ int main(int argc, char **argv)
ares_channel channel;
int ch, status;
#ifdef WIN32
#if defined(WIN32) && !defined(WATT32)
WORD wVersionRequested = MAKEWORD(USE_WINSOCK,USE_WINSOCK);
WSADATA wsaData;
WSAStartup(wVersionRequested, &wsaData);
@@ -158,7 +162,7 @@ int main(int argc, char **argv)
wait_ares(channel);
ares_destroy(channel);
#ifdef WIN32
#if defined(WIN32) && !defined(WATT32)
WSACleanup();
#endif

View File

@@ -46,9 +46,24 @@ struct timeval ares__tvnow(void)
*/
struct timeval now;
struct timespec tsnow;
(void)clock_gettime(CLOCK_MONOTONIC, &tsnow);
now.tv_sec = tsnow.tv_sec;
now.tv_usec = tsnow.tv_nsec / 1000;
if(0 == clock_gettime(CLOCK_MONOTONIC, &tsnow)) {
now.tv_sec = tsnow.tv_sec;
now.tv_usec = tsnow.tv_nsec / 1000;
}
/*
** Even when the configure process has truly detected monotonic clock
** availability, it might happen that it is not actually available at
** run-time. When this occurs simply fallback to other time source.
*/
#ifdef HAVE_GETTIMEOFDAY
else
(void)gettimeofday(&now, NULL);
#else
else {
now.tv_sec = (long)time(NULL);
now.tv_usec = 0;
}
#endif
return now;
}

View File

@@ -176,6 +176,15 @@ static void host_callback(void *arg, int status, int timeouts,
else if (hquery->family == AF_INET6)
{
status = ares_parse_aaaa_reply(abuf, alen, &host, NULL, NULL);
if (status == ARES_ENODATA)
{
/* The query returned something (e.g. CNAME) but there were no
AAAA records. Try looking up A instead. */
hquery->family = AF_INET;
ares_search(hquery->channel, hquery->name, C_IN, T_A, host_callback,
hquery);
return;
}
if (host && channel->nsort)
sort6_addresses(host, channel->sortlist, channel->nsort);
}

View File

@@ -912,7 +912,8 @@ okay:
static int init_by_defaults(ares_channel channel)
{
char hostname[MAXHOSTNAMELEN + 1];
char *hostname = NULL;
int rc = ARES_SUCCESS;
if (channel->flags == -1)
channel->flags = 0;
@@ -927,53 +928,103 @@ static int init_by_defaults(ares_channel channel)
if (channel->tcp_port == -1)
channel->tcp_port = htons(NAMESERVER_PORT);
if (channel->nservers == -1)
{
/* If nobody specified servers, try a local named. */
channel->servers = malloc(sizeof(struct server_state));
if (!channel->servers)
return ARES_ENOMEM;
channel->servers[0].addr.s_addr = htonl(INADDR_LOOPBACK);
channel->nservers = 1;
if (channel->nservers == -1) {
/* If nobody specified servers, try a local named. */
channel->servers = malloc(sizeof(struct server_state));
if (!channel->servers) {
rc = ARES_ENOMEM;
goto error;
}
channel->servers[0].addr.s_addr = htonl(INADDR_LOOPBACK);
channel->nservers = 1;
}
#ifdef ENAMETOOLONG
#define toolong(x) (x == -1) && ((ENAMETOOLONG == errno) || (EINVAL == errno))
#else
#define toolong(x) (x == -1) && (EINVAL == errno)
#endif
if (channel->ndomains == -1) {
/* Derive a default domain search list from the kernel hostname,
* or set it to empty if the hostname isn't helpful.
*/
size_t len = 64;
int res;
hostname = (char *)malloc(len);
if(!hostname) {
rc = ARES_ENOMEM;
goto error;
}
if (channel->ndomains == -1)
{
/* Derive a default domain search list from the kernel hostname,
* or set it to empty if the hostname isn't helpful.
*/
if (gethostname(hostname, sizeof(hostname)) == -1
|| !strchr(hostname, '.'))
{
channel->ndomains = 0;
do {
res = gethostname(hostname, len);
if(toolong(res)) {
char *p;
len *= 2;
p = realloc(hostname, len);
if(!p) {
rc = ARES_ENOMEM;
goto error;
}
else
{
channel->domains = malloc(sizeof(char *));
if (!channel->domains)
return ARES_ENOMEM;
channel->ndomains = 0;
channel->domains[0] = strdup(strchr(hostname, '.') + 1);
if (!channel->domains[0])
return ARES_ENOMEM;
channel->ndomains = 1;
}
}
hostname = p;
continue;
}
else if(res) {
rc = ARES_EBADNAME;
goto error;
}
if (channel->nsort == -1)
{
channel->sortlist = NULL;
channel->nsort = 0;
}
} while(0);
if (!channel->lookups)
{
channel->lookups = strdup("fb");
if (!channel->lookups)
return ARES_ENOMEM;
}
channel->ndomains = 0; /* default to none */
if (strchr(hostname, '.')) {
/* a dot was found */
return ARES_SUCCESS;
channel->domains = malloc(sizeof(char *));
if (!channel->domains) {
rc = ARES_ENOMEM;
goto error;
}
channel->domains[0] = strdup(strchr(hostname, '.') + 1);
if (!channel->domains[0]) {
rc = ARES_ENOMEM;
goto error;
}
channel->ndomains = 1;
}
}
if (channel->nsort == -1) {
channel->sortlist = NULL;
channel->nsort = 0;
}
if (!channel->lookups) {
channel->lookups = strdup("fb");
if (!channel->lookups)
rc = ARES_ENOMEM;
}
error:
if(rc) {
if(channel->servers)
free(channel->servers);
if(channel->domains && channel->domains[0])
free(channel->domains[0]);
if(channel->domains)
free(channel->domains);
if(channel->lookups)
free(channel->lookups);
}
if(hostname)
free(hostname);
return rc;
}
#ifndef WIN32
@@ -1413,11 +1464,11 @@ static int init_id_key(rc4_key* key,int key_data_len)
if (!key_data_ptr)
return ARES_ENOMEM;
randomize_key(key->state,key_data_len);
state = &key->state[0];
for(counter = 0; counter < 256; counter++)
/* unnecessary AND but it keeps some compilers happier */
state[counter] = (unsigned char)(counter & 0xff);
randomize_key(key->state,key_data_len);
key->x = 0;
key->y = 0;
index1 = 0;

View File

@@ -268,8 +268,8 @@ int ares__timedout(struct timeval *now,
int ares__timeadd(struct timeval *now,
int millisecs);
/* return time offset between now and (future) check, in milliseconds */
int ares__timeoffset(struct timeval *now,
struct timeval *check);
long ares__timeoffset(struct timeval *now,
struct timeval *check);
void ares__rc4(rc4_key* key,unsigned char *buffer_ptr, int buffer_len);
void ares__send_query(ares_channel channel, struct query *query,
struct timeval *now);

View File

@@ -133,13 +133,11 @@ int ares__timeadd(struct timeval *now,
}
/* return time offset between now and (future) check, in milliseconds */
int ares__timeoffset(struct timeval *now,
struct timeval *check)
long ares__timeoffset(struct timeval *now,
struct timeval *check)
{
int secs = (check->tv_sec - now->tv_sec); /* this many seconds */
int us = (check->tv_usec - now->tv_usec); /* this many microseconds */
return secs*1000 + us/1000; /* return them combined as milliseconds */
return (check->tv_sec - now->tv_sec)*1000 +
(check->tv_usec - now->tv_usec)/1000;
}
@@ -431,6 +429,10 @@ static void read_udp_packets(ares_channel channel, fd_set *read_fds,
int i;
ssize_t count;
unsigned char buf[PACKETSZ + 1];
#ifdef HAVE_RECVFROM
struct sockaddr_in from;
socklen_t fromlen;
#endif
if(!read_fds && (read_fd == ARES_SOCKET_BAD))
/* no possible action */
@@ -464,11 +466,24 @@ static void read_udp_packets(ares_channel channel, fd_set *read_fds,
/* To reduce event loop overhead, read and process as many
* packets as we can. */
do {
#ifdef HAVE_RECVFROM
fromlen = sizeof(from);
count = (ssize_t)recvfrom(server->udp_socket, (void *)buf, sizeof(buf),
0, (struct sockaddr *)&from, &fromlen);
#else
count = sread(server->udp_socket, buf, sizeof(buf));
#endif
if (count == -1 && try_again(SOCKERRNO))
continue;
else if (count <= 0)
handle_error(channel, i, now);
#ifdef HAVE_RECVFROM
else if (from.sin_addr.s_addr != server->addr.s_addr)
/* Address response came from did not match the address
* we sent the request to. Someone may be attempting
* to perform a cache poisoning attack */
break;
#endif
else
process_answer(channel, buf, (int)count, i, 0, now);
} while (count > 0);

View File

@@ -74,7 +74,8 @@ void ares_send(ares_channel channel, const unsigned char *qbuf, int qlen,
/* Compute the query ID. Start with no timeout. */
query->qid = (unsigned short)DNS_HEADER_QID(qbuf);
query->timeout.tv_sec = query->timeout.tv_usec = 0;
query->timeout.tv_sec = 0;
query->timeout.tv_usec = 0;
/* Form the TCP query buffer by prepending qlen (as two
* network-order bytes) to qbuf.

View File

@@ -5,11 +5,11 @@
#define ARES_VERSION_MAJOR 1
#define ARES_VERSION_MINOR 5
#define ARES_VERSION_PATCH 3
#define ARES_VERSION_PATCH 4
#define ARES_VERSION ((ARES_VERSION_MAJOR<<16)|\
(ARES_VERSION_MINOR<<8)|\
(ARES_VERSION_PATCH))
#define ARES_VERSION_STR "1.5.3-CVS"
#define ARES_VERSION_STR "1.5.4-CVS"
#ifdef __cplusplus
extern "C" {

View File

@@ -1,7 +1,7 @@
#!/bin/sh
${LIBTOOLIZE:-libtoolize} --copy --automake --force
${ACLOCAL:-aclocal} $ACLOCAL_FLAGS
${ACLOCAL:-aclocal} -I m4 $ACLOCAL_FLAGS
${AUTOHEADER:-autoheader}
${AUTOCONF:-autoconf}
${AUTOMAKE:-automake} --add-missing

View File

@@ -3,7 +3,7 @@
/* $Id$ */
/* Copyright (C) 2004 - 2006 by Daniel Stenberg et al
/* Copyright (C) 2004 - 2008 by Daniel Stenberg et al
*
* Permission to use, copy, modify, and distribute this software and its
* documentation for any purpose and without fee is hereby granted, provided
@@ -97,6 +97,30 @@
/* Define to the function return type for recv. */
#define RECV_TYPE_RETV int
/* Define if you have the recvfrom function. */
#define HAVE_RECVFROM 1
/* Define to the type of arg 1 for recvfrom. */
#define RECVFROM_TYPE_ARG1 SOCKET
/* Define to the type pointed by arg 2 for recvfrom. */
#define RECVFROM_TYPE_ARG2 char
/* Define to the type of arg 3 for recvfrom. */
#define RECVFROM_TYPE_ARG3 int
/* Define to the type of arg 4 for recvfrom. */
#define RECVFROM_TYPE_ARG4 int
/* Define to the type pointed by arg 5 for recvfrom. */
#define RECVFROM_TYPE_ARG5 struct sockaddr
/* Define to the type pointed by arg 6 for recvfrom. */
#define RECVFROM_TYPE_ARG6 int
/* Define to the function return type for recvfrom. */
#define RECVFROM_TYPE_RETV int
/* Define if you have the send function. */
#define HAVE_SEND 1

View File

@@ -1,9 +1,60 @@
AC_INIT([c-ares],[1.5.1],[daniel@haxx.se])
AC_PREREQ(2.57)
dnl Version not hardcoded here. Fetched later from ares_version.h
AC_INIT([c-ares], [-],
[c-ares mailing list => http://cool.haxx.se/mailman/listinfo/c-ares])
AC_CONFIG_SRCDIR([ares_ipv6.h])
AM_CONFIG_HEADER([config.h])
AM_MAINTAINER_MODE
AM_INIT_AUTOMAKE
dnl SED is mandatory for configure process and libtool.
dnl Set it now, allowing it to be changed later.
AC_PATH_PROG([SED], [sed], [not_found],
[$PATH:/usr/bin:/usr/local/bin])
if test -z "$SED" || test "$SED" = "not_found"; then
AC_MSG_ERROR([sed not found in PATH. Cannot continue without sed.])
fi
AC_SUBST([SED])
dnl GREP is mandatory for configure process and libtool.
dnl Set it now, allowing it to be changed later.
AC_PATH_PROG([GREP], [grep], [not_found],
[$PATH:/usr/bin:/usr/local/bin])
if test -z "$GREP" || test "$GREP" = "not_found"; then
AC_MSG_ERROR([grep not found in PATH. Cannot continue without grep.])
fi
AC_SUBST([GREP])
dnl EGREP is mandatory for configure process and libtool.
dnl Set it now, allowing it to be changed later.
if echo a | ($GREP -E '(a|b)') >/dev/null 2>&1; then
AC_MSG_CHECKING([for egrep])
EGREP="$GREP -E"
AC_MSG_RESULT([$EGREP])
else
AC_PATH_PROG([EGREP], [egrep], [not_found],
[$PATH:/usr/bin:/usr/local/bin])
fi
if test -z "$EGREP" || test "$EGREP" = "not_found"; then
AC_MSG_ERROR([egrep not found in PATH. Cannot continue without egrep.])
fi
AC_SUBST([EGREP])
dnl AR is mandatory for configure process and libtool.
dnl This is target dependant, so check it as a tool.
AC_PATH_TOOL([AR], [ar], [not_found],
[$PATH:/usr/bin:/usr/local/bin])
if test -z "$AR" || test "$AR" = "not_found"; then
AC_MSG_ERROR([ar not found in PATH. Cannot continue without ar.])
fi
AC_SUBST([AR])
dnl Fetch c-ares version from ares_version.h
VERSION=`$SED -ne 's/^#define ARES_VERSION_STR "\(.*\)"/\1/p' ${srcdir}/ares_version.h`
AM_INIT_AUTOMAKE([c-ares], [$VERSION])
AC_MSG_CHECKING([c-ares version])
AC_MSG_RESULT([$VERSION])
dnl
dnl Detect the canonical host and target build environment
@@ -13,11 +64,19 @@ AC_CANONICAL_HOST
dnl Get system canonical name
AC_DEFINE_UNQUOTED(OS, "${host}", [cpu-machine-OS])
AC_AIX
AC_PROG_CC
AM_PROG_CC_C_O
AC_PROG_INSTALL
dnl This defines _ALL_SOURCE for AIX
CARES_CHECK_AIX_ALL_SOURCE
dnl Our configure and build reentrant settings
CARES_CONFIGURE_REENTRANT
dnl check for how to do large files
AC_SYS_LARGEFILE
case $host_os in
solaris*)
AC_DEFINE(ETC_INET, 1, [if a /etc/inet dir is being used])
@@ -54,15 +113,6 @@ AC_HELP_STRING([--disable-debug],[Disable debug options]),
CPPFLAGS="$CPPFLAGS -DCURLDEBUG -I$srcdir/../include"
CFLAGS="$CFLAGS -g"
dnl check for how to do large files, needed to get the curl_off_t check
dnl done right
AC_SYS_LARGEFILE
AC_CHECK_SIZEOF(curl_off_t, ,[
#include <stdio.h>
#include "$srcdir/../include/curl/curl.h"
])
dnl set compiler "debug" options to become more picky, and remove
dnl optimize options from CFLAGS
CURL_CC_DEBUG_OPTS
@@ -72,6 +122,7 @@ AC_HELP_STRING([--disable-debug],[Disable debug options]),
AC_MSG_RESULT(no)
)
AM_CONDITIONAL(DEBUGBUILD, test x$debugbuild = xyes)
AM_CONDITIONAL(CURLDEBUG, test x$debugbuild = xyes)
dnl skip libtool C++ and Fortran compiler checks
m4_ifdef([AC_PROG_CXX], [m4_undefine([AC_PROG_CXX])])
@@ -123,28 +174,6 @@ dnl gethostbyname_r() version
dnl **********************************************************************
CURL_DETECT_ICC([CFLAGS="$CFLAGS -we 147"])
dnl **********************************************************************
dnl Make sure that our checks for headers windows.h winsock.h winsock2.h
dnl and ws2tcpip.h take precedence over any other further checks which
dnl could be done later using AC_CHECK_HEADER or AC_CHECK_HEADERS for
dnl this specific header files. And do them before its results are used.
dnl **********************************************************************
CURL_CHECK_HEADER_WINDOWS
CURL_CHECK_NATIVE_WINDOWS
case X-"$ac_cv_native_windows" in
X-yes)
CURL_CHECK_HEADER_WINSOCK
CURL_CHECK_HEADER_WINSOCK2
CURL_CHECK_HEADER_WS2TCPIP
;;
*)
ac_cv_header_winsock_h="no"
ac_cv_header_winsock2_h="no"
ac_cv_header_ws2tcpip_h="no"
;;
esac
dnl **********************************************************************
dnl platform/compiler/architecture specific checks/flags
dnl **********************************************************************
@@ -182,6 +211,73 @@ case $host in
#
esac
AC_MSG_CHECKING([whether we are using the IBM C compiler])
CURL_CHECK_DEF([__IBMC__], [], [silent])
if test "$curl_cv_have_def___IBMC__" = "yes"; then
AC_MSG_RESULT([yes])
dnl Ensure that compiler optimizations are always thread-safe.
CFLAGS="$CFLAGS -qthreaded"
dnl Disable type based strict aliasing optimizations, using worst
dnl case aliasing assumptions when compiling. Type based aliasing
dnl would restrict the lvalues that could be safely used to access
dnl a data object.
CFLAGS="$CFLAGS -qnoansialias"
dnl Force compiler to stop after the compilation phase, without
dnl generating an object code file when compilation has errors.
CFLAGS="$CFLAGS -qhalt=e"
else
AC_MSG_RESULT([no])
fi
AC_MSG_CHECKING([whether we are using the DEC/Compaq C compiler])
CURL_CHECK_DEF([__DECC], [], [silent])
CURL_CHECK_DEF([__DECC_VER], [], [silent])
if test "$curl_cv_have_def___DECC" = "yes" &&
test "$curl_cv_have_def___DECC_VER" = "yes"; then
AC_MSG_RESULT([yes])
dnl Select strict ANSI C compiler mode
CFLAGS="$CFLAGS -std1"
dnl Turn off optimizer ANSI C aliasing rules
CFLAGS="$CFLAGS -noansi_alias"
dnl Select a higher warning level than default level2
CFLAGS="$CFLAGS -msg_enable level3"
dnl Generate warnings for missing function prototypes
CFLAGS="$CFLAGS -warnprotos"
dnl Change some warnings into fatal errors
CFLAGS="$CFLAGS -msg_fatal toofewargs,toomanyargs"
else
AC_MSG_RESULT([no])
fi
CURL_CHECK_COMPILER_HALT_ON_ERROR
CURL_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE
dnl **********************************************************************
dnl Compilation based checks should not be done before this point.
dnl **********************************************************************
dnl **********************************************************************
dnl Make sure that our checks for headers windows.h winsock.h winsock2.h
dnl and ws2tcpip.h take precedence over any other further checks which
dnl could be done later using AC_CHECK_HEADER or AC_CHECK_HEADERS for
dnl this specific header files. And do them before its results are used.
dnl **********************************************************************
CURL_CHECK_HEADER_WINDOWS
CURL_CHECK_NATIVE_WINDOWS
case X-"$ac_cv_native_windows" in
X-yes)
CURL_CHECK_HEADER_WINSOCK
CURL_CHECK_HEADER_WINSOCK2
CURL_CHECK_HEADER_WS2TCPIP
;;
*)
ac_cv_header_winsock_h="no"
ac_cv_header_winsock2_h="no"
ac_cv_header_ws2tcpip_h="no"
;;
esac
dnl **********************************************************************
dnl Checks for libraries.
dnl **********************************************************************
@@ -415,26 +511,6 @@ if test "x$RECENTAIX" = "xyes"; then
AC_DEFINE(_THREAD_SAFE, 1, [define this if you need it to compile thread-safe code])
dnl check if this is the IBM xlc compiler
dnl Details thanks to => http://predef.sourceforge.net/
AC_MSG_CHECKING([if this is the xlc compiler])
AC_EGREP_CPP([^__xlC__], [__xlC__],
dnl action if the text is found, this it has not been replaced by the
dnl cpp
XLC="no"
AC_MSG_RESULT([no]),
dnl the text was not found, it was replaced by the cpp
XLC="yes"
AC_MSG_RESULT([yes])
CFLAGS="$CFLAGS -qthreaded"
dnl AIX xlc has to have strict aliasing turned off. If not,
dnl the optimizer assumes that pointers can only point to
dnl an object of the same type.
CFLAGS="$CFLAGS -qnoansialias"
dnl Force AIX xlc to stop after the compilation phase, and not
dnl generate object code, when the source compiles with errors.
CFLAGS="$CFLAGS -qhalt=e"
)
fi
@@ -506,7 +582,8 @@ AC_CHECK_SIZEOF(long)
AC_CHECK_SIZEOF(time_t)
AC_CHECK_TYPE(long long,
[AC_DEFINE(HAVE_LONGLONG, 1, [if your compiler supports long long])]
[AC_DEFINE(HAVE_LONGLONG, 1,
[Define to 1 if the compiler supports the 'long long' data type.])]
longlong="yes"
)
@@ -549,9 +626,8 @@ TYPE_SIG_ATOMIC_T
AC_TYPE_SIGNAL
CURL_CHECK_FUNC_RECV
CURL_CHECK_FUNC_RECVFROM
CURL_CHECK_FUNC_SEND
CURL_CHECK_MSG_NOSIGNAL
dnl check for AF_INET6
@@ -720,23 +796,27 @@ AC_CHECK_MEMBER(struct addrinfo.ai_flags,
)
AC_CHECK_FUNCS( bitncmp \
gettimeofday \
if_indextoname,
dnl if found
[],
dnl if not found, $ac_func is the name we check for
func="$ac_func"
AC_MSG_CHECKING([deeper for $func])
AC_TRY_LINK( [],
[ $func ();],
AC_MSG_RESULT(yes!)
eval "ac_cv_func_$func=yes"
def=`echo "HAVE_$func" | tr 'a-z' 'A-Z'`
AC_DEFINE_UNQUOTED($def, 1, [If you have $func]),
AC_MSG_RESULT(but still no)
)
)
AC_CHECK_FUNCS([bitncmp \
gettimeofday \
if_indextoname
],[
],[
func="$ac_func"
AC_MSG_CHECKING([deeper for $func])
AC_LINK_IFELSE([
AC_LANG_PROGRAM([[
]],[[
$func ();
]])
],[
AC_MSG_RESULT([yes])
eval "ac_cv_func_$func=yes"
AC_DEFINE_UNQUOTED([AS_TR_CPP([HAVE_$func])], [1],
[Define to 1 if you have the $func function.])
],[
AC_MSG_RESULT([but still no])
])
])
dnl check for inet_pton
@@ -930,5 +1010,8 @@ if test -n "$RANDOM_FILE" && test X"$RANDOM_FILE" != Xno ; then
[a suitable file/device to read random data from])
fi
CARES_PRIVATE_LIBS="$LIBS"
AC_SUBST(CARES_PRIVATE_LIBS)
AC_CONFIG_FILES([Makefile libcares.pc])
AC_OUTPUT

View File

@@ -3,7 +3,7 @@
# / __|____ / _` | '__/ _ \/ __|
# | (_|_____| (_| | | | __/\__ \
# \___| \__,_|_| \___||___/
# $id: $
# $Id$
#
prefix=@prefix@
exec_prefix=@exec_prefix@
@@ -18,3 +18,4 @@ Requires:
Requires.private:
Cflags: -I${includedir}
Libs: -L${libdir} -lcares
Libs.private: @CARES_PRIVATE_LIBS@

442
ares/m4/cares-reentrant.m4 Normal file
View File

@@ -0,0 +1,442 @@
#***************************************************************************
# $Id$
#
# Copyright (C) 2008 by Daniel Stenberg et al
#
# Permission to use, copy, modify, and distribute this software and its
# documentation for any purpose and without fee is hereby granted, provided
# that the above copyright notice appear in all copies and that both that
# copyright notice and this permission notice appear in supporting
# documentation, and that the name of M.I.T. not be used in advertising or
# publicity pertaining to distribution of the software without specific,
# written prior permission. M.I.T. makes no representations about the
# suitability of this software for any purpose. It is provided "as is"
# without express or implied warranty.
#
#***************************************************************************
# File version for 'aclocal' use. Keep it a single number.
# serial 2
dnl Note 1
dnl ------
dnl None of the CARES_CHECK_NEED_REENTRANT_* macros shall use HAVE_FOO_H to
dnl conditionally include header files. These macros are used early in the
dnl configure process much before header file availability is known.
dnl CARES_CHECK_NEED_REENTRANT_GMTIME_R
dnl -------------------------------------------------
dnl Checks if the preprocessor _REENTRANT definition
dnl makes function gmtime_r compiler visible.
AC_DEFUN([CARES_CHECK_NEED_REENTRANT_GMTIME_R], [
AC_LINK_IFELSE([
AC_LANG_FUNC_LINK_TRY([gmtime_r])
],[
tmp_gmtime_r="yes"
],[
tmp_gmtime_r="no"
])
if test "$tmp_gmtime_r" = "yes"; then
AC_EGREP_CPP([gmtime_r],[
#include <sys/types.h>
#include <time.h>
],[
tmp_gmtime_r="proto_declared"
],[
AC_EGREP_CPP([gmtime_r],[
#define _REENTRANT
#include <sys/types.h>
#include <time.h>
],[
tmp_gmtime_r="proto_needs_reentrant"
tmp_need_reentrant="yes"
])
])
fi
])
dnl CARES_CHECK_NEED_REENTRANT_LOCALTIME_R
dnl -------------------------------------------------
dnl Checks if the preprocessor _REENTRANT definition
dnl makes function localtime_r compiler visible.
AC_DEFUN([CARES_CHECK_NEED_REENTRANT_LOCALTIME_R], [
AC_LINK_IFELSE([
AC_LANG_FUNC_LINK_TRY([localtime_r])
],[
tmp_localtime_r="yes"
],[
tmp_localtime_r="no"
])
if test "$tmp_localtime_r" = "yes"; then
AC_EGREP_CPP([localtime_r],[
#include <sys/types.h>
#include <time.h>
],[
tmp_localtime_r="proto_declared"
],[
AC_EGREP_CPP([localtime_r],[
#define _REENTRANT
#include <sys/types.h>
#include <time.h>
],[
tmp_localtime_r="proto_needs_reentrant"
tmp_need_reentrant="yes"
])
])
fi
])
dnl CARES_CHECK_NEED_REENTRANT_STRERROR_R
dnl -------------------------------------------------
dnl Checks if the preprocessor _REENTRANT definition
dnl makes function strerror_r compiler visible.
AC_DEFUN([CARES_CHECK_NEED_REENTRANT_STRERROR_R], [
AC_LINK_IFELSE([
AC_LANG_FUNC_LINK_TRY([strerror_r])
],[
tmp_strerror_r="yes"
],[
tmp_strerror_r="no"
])
if test "$tmp_strerror_r" = "yes"; then
AC_EGREP_CPP([strerror_r],[
#include <sys/types.h>
#include <string.h>
],[
tmp_strerror_r="proto_declared"
],[
AC_EGREP_CPP([strerror_r],[
#define _REENTRANT
#include <sys/types.h>
#include <string.h>
],[
tmp_strerror_r="proto_needs_reentrant"
tmp_need_reentrant="yes"
])
])
fi
])
dnl CARES_CHECK_NEED_REENTRANT_STRTOK_R
dnl -------------------------------------------------
dnl Checks if the preprocessor _REENTRANT definition
dnl makes function strtok_r compiler visible.
AC_DEFUN([CARES_CHECK_NEED_REENTRANT_STRTOK_R], [
AC_LINK_IFELSE([
AC_LANG_FUNC_LINK_TRY([strtok_r])
],[
tmp_strtok_r="yes"
],[
tmp_strtok_r="no"
])
if test "$tmp_strtok_r" = "yes"; then
AC_EGREP_CPP([strtok_r],[
#include <sys/types.h>
#include <string.h>
],[
tmp_strtok_r="proto_declared"
],[
AC_EGREP_CPP([strtok_r],[
#define _REENTRANT
#include <sys/types.h>
#include <string.h>
],[
tmp_strtok_r="proto_needs_reentrant"
tmp_need_reentrant="yes"
])
])
fi
])
dnl CARES_CHECK_NEED_REENTRANT_INET_NTOA_R
dnl -------------------------------------------------
dnl Checks if the preprocessor _REENTRANT definition
dnl makes function inet_ntoa_r compiler visible.
AC_DEFUN([CARES_CHECK_NEED_REENTRANT_INET_NTOA_R], [
AC_LINK_IFELSE([
AC_LANG_FUNC_LINK_TRY([inet_ntoa_r])
],[
tmp_inet_ntoa_r="yes"
],[
tmp_inet_ntoa_r="no"
])
if test "$tmp_inet_ntoa_r" = "yes"; then
AC_EGREP_CPP([inet_ntoa_r],[
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
],[
tmp_inet_ntoa_r="proto_declared"
],[
AC_EGREP_CPP([inet_ntoa_r],[
#define _REENTRANT
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
],[
tmp_inet_ntoa_r="proto_needs_reentrant"
tmp_need_reentrant="yes"
])
])
fi
])
dnl CARES_CHECK_NEED_REENTRANT_GETHOSTBYADDR_R
dnl -------------------------------------------------
dnl Checks if the preprocessor _REENTRANT definition
dnl makes function gethostbyaddr_r compiler visible.
AC_DEFUN([CARES_CHECK_NEED_REENTRANT_GETHOSTBYADDR_R], [
AC_LINK_IFELSE([
AC_LANG_FUNC_LINK_TRY([gethostbyaddr_r])
],[
tmp_gethostbyaddr_r="yes"
],[
tmp_gethostbyaddr_r="no"
])
if test "$tmp_gethostbyaddr_r" = "yes"; then
AC_EGREP_CPP([gethostbyaddr_r],[
#include <sys/types.h>
#include <netdb.h>
],[
tmp_gethostbyaddr_r="proto_declared"
],[
AC_EGREP_CPP([gethostbyaddr_r],[
#define _REENTRANT
#include <sys/types.h>
#include <netdb.h>
],[
tmp_gethostbyaddr_r="proto_needs_reentrant"
tmp_need_reentrant="yes"
])
])
fi
])
dnl CARES_CHECK_NEED_REENTRANT_GETHOSTBYNAME_R
dnl -------------------------------------------------
dnl Checks if the preprocessor _REENTRANT definition
dnl makes function gethostbyname_r compiler visible.
AC_DEFUN([CARES_CHECK_NEED_REENTRANT_GETHOSTBYNAME_R], [
AC_LINK_IFELSE([
AC_LANG_FUNC_LINK_TRY([gethostbyname_r])
],[
tmp_gethostbyname_r="yes"
],[
tmp_gethostbyname_r="no"
])
if test "$tmp_gethostbyname_r" = "yes"; then
AC_EGREP_CPP([gethostbyname_r],[
#include <sys/types.h>
#include <netdb.h>
],[
tmp_gethostbyname_r="proto_declared"
],[
AC_EGREP_CPP([gethostbyname_r],[
#define _REENTRANT
#include <sys/types.h>
#include <netdb.h>
],[
tmp_gethostbyname_r="proto_needs_reentrant"
tmp_need_reentrant="yes"
])
])
fi
])
dnl CARES_CHECK_NEED_REENTRANT_GETPROTOBYNAME_R
dnl -------------------------------------------------
dnl Checks if the preprocessor _REENTRANT definition
dnl makes function getprotobyname_r compiler visible.
AC_DEFUN([CARES_CHECK_NEED_REENTRANT_GETPROTOBYNAME_R], [
AC_LINK_IFELSE([
AC_LANG_FUNC_LINK_TRY([getprotobyname_r])
],[
tmp_getprotobyname_r="yes"
],[
tmp_getprotobyname_r="no"
])
if test "$tmp_getprotobyname_r" = "yes"; then
AC_EGREP_CPP([getprotobyname_r],[
#include <sys/types.h>
#include <netdb.h>
],[
tmp_getprotobyname_r="proto_declared"
],[
AC_EGREP_CPP([getprotobyname_r],[
#define _REENTRANT
#include <sys/types.h>
#include <netdb.h>
],[
tmp_getprotobyname_r="proto_needs_reentrant"
tmp_need_reentrant="yes"
])
])
fi
])
dnl CARES_CHECK_NEED_REENTRANT_GETSERVBYPORT_R
dnl -------------------------------------------------
dnl Checks if the preprocessor _REENTRANT definition
dnl makes function getservbyport_r compiler visible.
AC_DEFUN([CARES_CHECK_NEED_REENTRANT_GETSERVBYPORT_R], [
AC_LINK_IFELSE([
AC_LANG_FUNC_LINK_TRY([getservbyport_r])
],[
tmp_getservbyport_r="yes"
],[
tmp_getservbyport_r="no"
])
if test "$tmp_getservbyport_r" = "yes"; then
AC_EGREP_CPP([getservbyport_r],[
#include <sys/types.h>
#include <netdb.h>
],[
tmp_getservbyport_r="proto_declared"
],[
AC_EGREP_CPP([getservbyport_r],[
#define _REENTRANT
#include <sys/types.h>
#include <netdb.h>
],[
tmp_getservbyport_r="proto_needs_reentrant"
tmp_need_reentrant="yes"
])
])
fi
])
dnl CARES_CHECK_NEED_REENTRANT_FUNCTIONS_R
dnl -------------------------------------------------
dnl Checks if the preprocessor _REENTRANT definition
dnl makes several _r functions compiler visible.
dnl Internal macro for CARES_CONFIGURE_REENTRANT.
AC_DEFUN([CARES_CHECK_NEED_REENTRANT_FUNCTIONS_R], [
#
tmp_need_reentrant="no"
#
if test "$tmp_need_reentrant" = "no"; then
CARES_CHECK_NEED_REENTRANT_GMTIME_R
fi
if test "$tmp_need_reentrant" = "no"; then
CARES_CHECK_NEED_REENTRANT_LOCALTIME_R
fi
if test "$tmp_need_reentrant" = "no"; then
CARES_CHECK_NEED_REENTRANT_STRERROR_R
fi
if test "$tmp_need_reentrant" = "no"; then
CARES_CHECK_NEED_REENTRANT_STRTOK_R
fi
if test "$tmp_need_reentrant" = "no"; then
CARES_CHECK_NEED_REENTRANT_INET_NTOA_R
fi
if test "$tmp_need_reentrant" = "no"; then
CARES_CHECK_NEED_REENTRANT_GETHOSTBYADDR_R
fi
if test "$tmp_need_reentrant" = "no"; then
CARES_CHECK_NEED_REENTRANT_GETHOSTBYNAME_R
fi
if test "$tmp_need_reentrant" = "no"; then
CARES_CHECK_NEED_REENTRANT_GETPROTOBYNAME_R
fi
if test "$tmp_need_reentrant" = "no"; then
CARES_CHECK_NEED_REENTRANT_GETSERVBYPORT_R
fi
])
dnl CARES_CONFIGURE_FROM_NOW_ON_WITH_REENTRANT
dnl -------------------------------------------------
dnl This macro ensures that configuration tests done
dnl after this will execute with preprocessor symbol
dnl _REENTRANT defined. This macro also ensures that
dnl the generated config file defines NEED_REENTRANT
dnl and that in turn setup.h will define _REENTRANT.
dnl Internal macro for CARES_CONFIGURE_REENTRANT.
AC_DEFUN([CARES_CONFIGURE_FROM_NOW_ON_WITH_REENTRANT], [
AC_DEFINE(NEED_REENTRANT, 1,
[Define to 1 if _REENTRANT preprocessor symbol must be defined.])
cat >>confdefs.h <<_EOF
#ifndef _REENTRANT
# define _REENTRANT
#endif
_EOF
])
dnl CARES_CONFIGURE_REENTRANT
dnl -------------------------------------------------
dnl This first checks if the preprocessor _REENTRANT
dnl symbol is already defined. If it isn't currently
dnl defined a set of checks are performed to verify
dnl if its definition is required to make visible to
dnl the compiler a set of *_r functions. Finally, if
dnl _REENTRANT is already defined or needed it takes
dnl care of making adjustments necessary to ensure
dnl that it is defined equally for further configure
dnl tests and generated config file.
AC_DEFUN([CARES_CONFIGURE_REENTRANT], [
AC_PREREQ([2.50])dnl
#
AC_MSG_CHECKING([if _REENTRANT is already defined])
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
]],[[
#ifdef _REENTRANT
int dummy=1;
#else
force compilation error
#endif
]])
],[
AC_MSG_RESULT([yes])
tmp_reentrant_initially_defined="yes"
],[
AC_MSG_RESULT([no])
tmp_reentrant_initially_defined="no"
])
#
if test "$tmp_reentrant_initially_defined" = "no"; then
AC_MSG_CHECKING([if _REENTRANT is actually needed])
CARES_CHECK_NEED_REENTRANT_FUNCTIONS_R
if test "$tmp_need_reentrant" = "yes"; then
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi
fi
#
AC_MSG_CHECKING([if _REENTRANT is onwards defined])
if test "$tmp_reentrant_initially_defined" = "yes" ||
test "$tmp_need_reentrant" = "yes"; then
CARES_CONFIGURE_FROM_NOW_ON_WITH_REENTRANT
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi
#
])

View File

@@ -38,7 +38,7 @@ if(!-f "configure") {
`./buildconf`;
}
print "adding $version in the configure.ac file\n";
`sed -e 's/AC_INIT.*/AC_INIT([c-ares], [$version])/' < configure.ac > configure.ac.dist`;
`sed -e 's/AC_INIT.*/AC_INIT([c-ares], [$version],/' < configure.ac > configure.ac.dist`;
# now make a new configure script with this
print "makes a new configure script\n";
@@ -50,9 +50,11 @@ print "running configure\n";
# now make the actual tarball
print "running make dist\n";
`make dist`;
`make dist VERSION=$version`;
print "removing temporary configure.ac file\n";
`rm configure.ac.dist`;
print "removing temporary ares_version.h file\n";
`rm ares_version.h.dist`;
print "NOTE: now cvs tag this release!\n";

View File

@@ -13,8 +13,6 @@
#ifndef NETWARE
#define MAXHOSTNAMELEN 256
/* Structure for scatter/gather I/O. */
struct iovec
{

View File

@@ -3,7 +3,7 @@
/* $Id$ */
/* Copyright (C) 2004 - 2007 by Daniel Stenberg et al
/* Copyright (C) 2004 - 2008 by Daniel Stenberg et al
*
* Permission to use, copy, modify, and distribute this software and its
* documentation for any purpose and without fee is hereby granted, provided
@@ -39,6 +39,18 @@
#endif /* HAVE_CONFIG_H */
/*
* Tru64 needs _REENTRANT set for a few function prototypes and
* things to appear in the system header files. Unixware needs it
* to build proper reentrant code. Others may also need it.
*/
#ifdef NEED_REENTRANT
# ifndef _REENTRANT
# define _REENTRANT
# endif
#endif
/*
* Include header files for windows builds before redefining anything.
* Use this preproessor block only to include or exclude windows.h,

View File

@@ -3,7 +3,7 @@
/* $Id$ */
/* Copyright (C) 2004 - 2007 by Daniel Stenberg et al
/* Copyright (C) 2004 - 2008 by Daniel Stenberg et al
*
* Permission to use, copy, modify, and distribute this software and its
* documentation for any purpose and without fee is hereby granted, provided
@@ -191,6 +191,46 @@ struct timeval {
#endif /* HAVE_SEND */
#if 0
#if defined(HAVE_RECVFROM)
/*
* Currently recvfrom is only used on udp sockets.
*/
#if !defined(RECVFROM_TYPE_ARG1) || \
!defined(RECVFROM_TYPE_ARG2) || \
!defined(RECVFROM_TYPE_ARG3) || \
!defined(RECVFROM_TYPE_ARG4) || \
!defined(RECVFROM_TYPE_ARG5) || \
!defined(RECVFROM_TYPE_ARG6) || \
!defined(RECVFROM_TYPE_RETV)
/* */
Error Missing_definition_of_return_and_arguments_types_of_recvfrom
/* */
#else
#define sreadfrom(s,b,bl,f,fl) (ssize_t)recvfrom((RECVFROM_TYPE_ARG1) (s), \
(RECVFROM_TYPE_ARG2 *)(b), \
(RECVFROM_TYPE_ARG3) (bl), \
(RECVFROM_TYPE_ARG4) (0), \
(RECVFROM_TYPE_ARG5 *)(f), \
(RECVFROM_TYPE_ARG6 *)(fl))
#endif
#else /* HAVE_RECVFROM */
#ifndef sreadfrom
/* */
Error Missing_definition_of_macro_sreadfrom
/* */
#endif
#endif /* HAVE_RECVFROM */
#ifdef RECVFROM_TYPE_ARG6_IS_VOID
# define RECVFROM_ARG6_T int
#else
# define RECVFROM_ARG6_T RECVFROM_TYPE_ARG6
#endif
#endif /* if 0 */
/*
* Uppercase macro versions of ANSI/ISO is*() functions/macros which
* avoid negative number inputs with argument byte codes > 127.

104
buildconf
View File

@@ -6,7 +6,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
# Copyright (C) 1998 - 2006, Daniel Stenberg, <daniel@haxx.se>, et al.
# Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -27,22 +27,57 @@ die(){
exit
}
# this works as 'which' but we use a different name to make it more obvious we
# aren't using 'which'! ;-)
#--------------------------------------------------------------------------
# findtool works as 'which' but we use a different name to make it more
# obvious we aren't using 'which'! ;-)
#
findtool(){
file="$1"
IFS=":"
old_IFS=$IFS; IFS=':'
for path in $PATH
do
IFS=$old_IFS
# echo "checks for $file in $path" >&2
if test -f "$path/$file"; then
echo "$path/$file"
return
fi
done
IFS=$old_IFS
}
#--------------------------------------------------------------------------
# removethis() removes all files and subdirectories with the given name,
# inside and below the current subdirectory at invocation time.
#
removethis(){
if test "$#" = "1"; then
find . -depth -name $1 -print > buildconf.tmp.$$
while read fdname
do
if test -f "$fdname"; then
rm -f "$fdname"
elif test -d "$fdname"; then
rm -f -r "$fdname"
fi
done < buildconf.tmp.$$
rm -f buildconf.tmp.$$
fi
}
#--------------------------------------------------------------------------
# Ensure that buildconf runs from the subdirectory where configure.ac lives
#
if test ! -f configure.ac ||
test ! -f src/main.c ||
test ! -f lib/urldata.h ||
test ! -f include/curl/curl.h; then
echo "Can not run buildconf from outside of curl's source subdirectory!"
echo "Change to the subdirectory where buildconf is found, and try again."
exit 1
fi
#--------------------------------------------------------------------------
# autoconf 2.57 or newer
#
@@ -65,6 +100,18 @@ fi
echo "buildconf: autoconf version $ac_version (ok)"
am4te_version=`${AUTOM4TE:-autom4te} --version 2>/dev/null|head -n 1| sed -e 's/autom4te\(.*\)/\1/' -e 's/^[^0-9]*//' -e 's/[a-z]* *$//'`
if test -z "$am4te_version"; then
echo "buildconf: autom4te not found. Weird autoconf installation!"
exit 1
fi
if test "$am4te_version" = "$ac_version"; then
echo "buildconf: autom4te version $am4te_version (ok)"
else
echo "buildconf: autom4te version $am4te_version (ERROR: does not match autoconf version)"
exit 1
fi
#--------------------------------------------------------------------------
# autoheader 2.50 or newer
#
@@ -108,12 +155,16 @@ fi
echo "buildconf: automake version $am_version (ok)"
ac=`findtool ${ACLOCAL:-aclocal}`
if test -z "$ac"; then
acloc_version=`${ACLOCAL:-aclocal} --version 2>/dev/null|head -n 1| sed -e 's/^.* \([0-9]\)/\1/' -e 's/[a-z]* *$//' -e 's/\(.*\)\(-p.*\)/\1/'`
if test -z "$acloc_version"; then
echo "buildconf: aclocal not found. Weird automake installation!"
exit 1
fi
if test "$acloc_version" = "$am_version"; then
echo "buildconf: aclocal version $acloc_version (ok)"
else
echo "buildconf: aclocal found"
echo "buildconf: aclocal version $acloc_version (ERROR: does not match automake version)"
exit 1
fi
#--------------------------------------------------------------------------
@@ -202,14 +253,46 @@ fi
#
PERL=`findtool ${PERL:-perl}`
# ------------------------------------------------------------
#--------------------------------------------------------------------------
# Remove files generated on previous buildconf/configure run.
#
for fname in .deps \
Makefile.in \
aclocal.m4 \
aclocal.m4.bak \
autom4te.cache \
compile \
config.guess \
config.h \
config.h.in \
config.log \
config.status \
config.sub \
configure \
curl-config \
curlbuild.h \
depcomp \
libcares.pc \
libcurl.pc \
libtool \
libtool.m4 \
ltmain.sh \
stamp-h1 \
stamp-h2 \
stamp-h3 ; do
removethis "$fname"
done
#--------------------------------------------------------------------------
# run the correct scripts now
#
echo "buildconf: running libtoolize"
$libtoolize --copy --automake --force || die "The libtoolize command failed"
echo "buildconf: running aclocal"
${ACLOCAL:-aclocal} $ACLOCAL_FLAGS || die "The aclocal command line failed"
${ACLOCAL:-aclocal} -I m4 $ACLOCAL_FLAGS || die "The aclocal command line failed"
if test -n "$PERL"; then
echo "buildconf: running aclocal hack to convert all mv to mv -f"
$PERL -i.bak -pe 's/\bmv +([^-\s])/mv -f $1/g' aclocal.m4
@@ -217,10 +300,13 @@ else
echo "buildconf: perl not found"
exit 1
fi
echo "buildconf: running autoheader"
${AUTOHEADER:-autoheader} || die "The autoheader command failed"
echo "buildconf: cp lib/config.h.in src/config.h.in"
cp lib/config.h.in src/config.h.in
echo "buildconf: running autoconf"
${AUTOCONF:-autoconf} || die "The autoconf command failed"

View File

@@ -8,3 +8,6 @@ copy src\hugehelp.c.cvs src\hugehelp.c
REM create Makefile
copy Makefile.dist Makefile
REM create curlbuild.h
copy include\curl\curlbuild.h.dist include\curl\curlbuild.h

View File

@@ -19,7 +19,7 @@
# KIND, either express or implied.
#
# $Id$
###########################################################################
#***************************************************************************
dnl Process this file with autoconf to produce a configure script.
AC_PREREQ(2.57)
@@ -33,28 +33,51 @@ This configure script may be copied, distributed and modified under the
terms of the curl license; see COPYING for more details])
AC_CONFIG_SRCDIR([lib/urldata.h])
AM_CONFIG_HEADER(lib/config.h src/config.h)
AM_CONFIG_HEADER(lib/config.h src/config.h include/curl/curlbuild.h)
AM_MAINTAINER_MODE
dnl SED is needed by some of the tools
AC_PATH_PROG( SED, sed, sed-was-not-found-by-configure,
$PATH:/usr/bin:/usr/local/bin)
AC_SUBST(SED)
if test "x$SED" = "xsed-was-not-found-by-configure"; then
AC_MSG_WARN([sed was not found, this may ruin your chances to build fine])
dnl SED is mandatory for configure process and libtool.
dnl Set it now, allowing it to be changed later.
AC_PATH_PROG([SED], [sed], [not_found],
[$PATH:/usr/bin:/usr/local/bin])
if test -z "$SED" || test "$SED" = "not_found"; then
AC_MSG_ERROR([sed not found in PATH. Cannot continue without sed.])
fi
AC_SUBST([SED])
dnl AR is used by libtool, and try the odd Solaris path too
dnl we use AC_CHECK_TOOL since this should make a library for the target
dnl platform
AC_CHECK_TOOL(AR, ar,
ar-was-not-found-by-configure,
$PATH:/usr/bin:/usr/local/bin:/usr/ccs/bin)
AC_SUBST(AR)
if test "x$AR" = "xar-was-not-found-by-configure"; then
AC_MSG_WARN([ar was not found, this may ruin your chances to build fine])
dnl GREP is mandatory for configure process and libtool.
dnl Set it now, allowing it to be changed later.
AC_PATH_PROG([GREP], [grep], [not_found],
[$PATH:/usr/bin:/usr/local/bin])
if test -z "$GREP" || test "$GREP" = "not_found"; then
AC_MSG_ERROR([grep not found in PATH. Cannot continue without grep.])
fi
AC_SUBST([GREP])
dnl EGREP is mandatory for configure process and libtool.
dnl Set it now, allowing it to be changed later.
if echo a | ($GREP -E '(a|b)') >/dev/null 2>&1; then
AC_MSG_CHECKING([for egrep])
EGREP="$GREP -E"
AC_MSG_RESULT([$EGREP])
else
AC_PATH_PROG([EGREP], [egrep], [not_found],
[$PATH:/usr/bin:/usr/local/bin])
fi
if test -z "$EGREP" || test "$EGREP" = "not_found"; then
AC_MSG_ERROR([egrep not found in PATH. Cannot continue without egrep.])
fi
AC_SUBST([EGREP])
dnl AR is mandatory for configure process and libtool.
dnl This is target dependant, so check it as a tool.
AC_PATH_TOOL([AR], [ar], [not_found],
[$PATH:/usr/bin:/usr/local/bin])
if test -z "$AR" || test "$AR" = "not_found"; then
AC_MSG_ERROR([ar not found in PATH. Cannot continue without ar.])
fi
AC_SUBST([AR])
AC_SUBST(libext)
dnl figure out the libcurl version
@@ -106,12 +129,18 @@ AC_CANONICAL_HOST
dnl Get system canonical name
AC_DEFINE_UNQUOTED(OS, "${host}", [cpu-machine-OS])
dnl Check for AIX weirdos
AC_AIX
dnl Checks for programs.
AC_PROG_CC
dnl Our curl_off_t internal and external configure settings
CURL_CONFIGURE_CURL_OFF_T
dnl This defines _ALL_SOURCE for AIX
CURL_CHECK_AIX_ALL_SOURCE
dnl Our configure and build reentrant settings
CURL_CONFIGURE_REENTRANT
dnl check for how to do large files
AC_SYS_LARGEFILE
@@ -212,32 +241,6 @@ AC_PROG_MAKE_SET
dnl check if there's a way to force code inline
AC_C_INLINE
dnl **********************************************************************
dnl Make sure that our checks for headers windows.h winsock.h winsock2.h
dnl and ws2tcpip.h take precedence over any other further checks which
dnl could be done later using AC_CHECK_HEADER or AC_CHECK_HEADERS for
dnl this specific header files. And do them before its results are used.
dnl **********************************************************************
CURL_CHECK_HEADER_WINDOWS
CURL_CHECK_NATIVE_WINDOWS
case X-"$ac_cv_native_windows" in
X-yes)
CURL_CHECK_HEADER_WINSOCK
CURL_CHECK_HEADER_WINSOCK2
CURL_CHECK_HEADER_WS2TCPIP
CURL_CHECK_HEADER_WINLDAP
CURL_CHECK_HEADER_WINBER
;;
*)
ac_cv_header_winsock_h="no"
ac_cv_header_winsock2_h="no"
ac_cv_header_ws2tcpip_h="no"
ac_cv_header_winldap_h="no"
ac_cv_header_winber_h="no"
;;
esac
dnl **********************************************************************
dnl platform/compiler/architecture specific checks/flags
dnl **********************************************************************
@@ -275,6 +278,78 @@ case $host in
#
esac
AC_MSG_CHECKING([whether we are using the IBM C compiler])
CURL_CHECK_DEF([__IBMC__], [], [silent])
if test "$curl_cv_have_def___IBMC__" = "yes"; then
AC_MSG_RESULT([yes])
dnl Ensure that compiler optimizations are always thread-safe.
CFLAGS="$CFLAGS -qthreaded"
dnl Disable type based strict aliasing optimizations, using worst
dnl case aliasing assumptions when compiling. Type based aliasing
dnl would restrict the lvalues that could be safely used to access
dnl a data object.
CFLAGS="$CFLAGS -qnoansialias"
dnl Force compiler to stop after the compilation phase, without
dnl generating an object code file when compilation has errors.
CFLAGS="$CFLAGS -qhalt=e"
else
AC_MSG_RESULT([no])
fi
AC_MSG_CHECKING([whether we are using the DEC/Compaq C compiler])
CURL_CHECK_DEF([__DECC], [], [silent])
CURL_CHECK_DEF([__DECC_VER], [], [silent])
if test "$curl_cv_have_def___DECC" = "yes" &&
test "$curl_cv_have_def___DECC_VER" = "yes"; then
AC_MSG_RESULT([yes])
dnl Select strict ANSI C compiler mode
CFLAGS="$CFLAGS -std1"
dnl Turn off optimizer ANSI C aliasing rules
CFLAGS="$CFLAGS -noansi_alias"
dnl Select a higher warning level than default level2
CFLAGS="$CFLAGS -msg_enable level3"
dnl Generate warnings for missing function prototypes
CFLAGS="$CFLAGS -warnprotos"
dnl Change some warnings into fatal errors
CFLAGS="$CFLAGS -msg_fatal toofewargs,toomanyargs"
else
AC_MSG_RESULT([no])
fi
CURL_CHECK_COMPILER_HALT_ON_ERROR
CURL_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE
dnl **********************************************************************
dnl Compilation based checks should not be done before this point.
dnl **********************************************************************
dnl **********************************************************************
dnl Make sure that our checks for headers windows.h winsock.h winsock2.h
dnl and ws2tcpip.h take precedence over any other further checks which
dnl could be done later using AC_CHECK_HEADER or AC_CHECK_HEADERS for
dnl this specific header files. And do them before its results are used.
dnl **********************************************************************
CURL_CHECK_HEADER_WINDOWS
CURL_CHECK_NATIVE_WINDOWS
case X-"$ac_cv_native_windows" in
X-yes)
CURL_CHECK_HEADER_WINSOCK
CURL_CHECK_HEADER_WINSOCK2
CURL_CHECK_HEADER_WS2TCPIP
CURL_CHECK_HEADER_WINLDAP
CURL_CHECK_HEADER_WINBER
;;
*)
ac_cv_header_winsock_h="no"
ac_cv_header_winsock2_h="no"
ac_cv_header_ws2tcpip_h="no"
ac_cv_header_winldap_h="no"
ac_cv_header_winber_h="no"
;;
esac
CURL_CHECK_WIN32_LARGEFILE
dnl ************************************************************
dnl switch off particular protocols
dnl
@@ -1045,24 +1120,25 @@ if test x"$want_gss" = xyes; then
AC_DEFINE(HAVE_GSSMIT, 1, [if you have the MIT gssapi libraries])
dnl check if we have a really old MIT kerberos (<= 1.2)
AC_MSG_CHECKING([if gssapi headers declare GSS_C_NT_HOSTBASED_SERVICE])
AC_TRY_COMPILE([
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
#include <gssapi/gssapi.h>
#include <gssapi/gssapi_generic.h>
#include <gssapi/gssapi_krb5.h>
],[
]],[[
gss_import_name(
(OM_uint32 *)0,
(gss_buffer_t)0,
GSS_C_NT_HOSTBASED_SERVICE,
(gss_name_t *)0);
],[
AC_MSG_RESULT([yes])
],[
AC_MSG_RESULT([no])
AC_DEFINE(HAVE_OLD_GSSMIT, 1, [if you have an old MIT gssapi library, lacking GSS_C_NT_HOSTBASED_SERVICE])
]
)
]])
],[
AC_MSG_RESULT([yes])
],[
AC_MSG_RESULT([no])
AC_DEFINE(HAVE_OLD_GSSMIT, 1,
[if you have an old MIT gssapi library, lacking GSS_C_NT_HOSTBASED_SERVICE])
])
fi
]
)
@@ -1176,28 +1252,6 @@ if test X"$OPT_SSL" != Xno; then
fi
fi
dnl This is for Msys/Mingw
case $host in
*-*-cygwin*)
dnl Under Cygwin this is extraneous and causes an unnecessary -lgdi32
dnl to be added to LIBS and recorded in the .la file.
;;
*)
AC_MSG_CHECKING([for gdi32])
my_ac_save_LIBS=$LIBS
LIBS="-lgdi32 $LIBS"
AC_TRY_LINK([#include <windef.h>
#include <wingdi.h>],
[GdiFlush();],
[ dnl worked!
AC_MSG_RESULT([yes])],
[ dnl failed, restore LIBS
LIBS=$my_ac_save_LIBS
AC_MSG_RESULT(no)]
)
;;
esac
AC_CHECK_LIB(crypto, CRYPTO_lock,[
HAVECRYPTO="yes"
LIBS="-lcrypto $LIBS"
@@ -1805,28 +1859,6 @@ if test "x$RECENTAIX" = "xyes"; then
AC_DEFINE(_THREAD_SAFE, 1, [define this if you need it to compile thread-safe code])
dnl check if this is the IMB xlc compiler
dnl Details thanks to => http://predef.sourceforge.net/
AC_MSG_CHECKING([if this is the xlc compiler])
AC_EGREP_CPP([^__xlC__], [__xlC__],
dnl action if the text is found, this it has not been replaced by the
dnl cpp
XLC="no"
AC_MSG_RESULT([no]),
dnl the text was not found, it was replaced by the cpp
XLC="yes"
AC_MSG_RESULT([yes])
CFLAGS="$CFLAGS -qthreaded"
dnl AIX xlc has to have strict aliasing turned off. If not,
dnl the optimizer assumes that pointers can only point to
dnl an object of the same type.
CFLAGS="$CFLAGS -qnoansialias"
dnl Force AIX xlc to stop after the compilation phase, and not
dnl generate object code, when the source compiles with errors.
CFLAGS="$CFLAGS -qhalt=e"
)
dnl is there a localtime_r()
CURL_CHECK_LOCALTIME_R()
@@ -1963,17 +1995,25 @@ AC_HEADER_TIME
CURL_CHECK_STRUCT_TIMEVAL
CURL_VERIFY_RUNTIMELIBS
AC_CHECK_SIZEOF(curl_off_t, ,[
#include <stdio.h>
#include "$srcdir/include/curl/curl.h"
])
AC_CHECK_SIZEOF(size_t)
AC_CHECK_SIZEOF(int)
AC_CHECK_SIZEOF(long)
CURL_CONFIGURE_LONG
AC_CHECK_SIZEOF(time_t)
AC_CHECK_SIZEOF(off_t)
soname_bump=no
if test x"$ac_cv_native_windows" != "xyes" &&
test $ac_cv_sizeof_off_t -ne $curl_sizeof_curl_off_t; then
AC_MSG_WARN([This libcurl built is probably not ABI compatible with previous])
AC_MSG_WARN([builds! You MUST read lib/README.curl_off_t to figure it out.])
soname_bump=yes
fi
AC_CHECK_TYPE(long long,
[AC_DEFINE(HAVE_LONGLONG, 1, [if your compiler supports long long])]
[AC_DEFINE(HAVE_LONGLONG, 1,
[Define to 1 if the compiler supports the 'long long' data type.])]
longlong="yes"
)
@@ -2018,9 +2058,8 @@ AC_TYPE_SIGNAL
CURL_CHECK_FUNC_SELECT
CURL_CHECK_FUNC_RECV
CURL_CHECK_FUNC_RECVFROM
CURL_CHECK_FUNC_SEND
CURL_CHECK_MSG_NOSIGNAL
dnl Checks for library functions.
@@ -2034,60 +2073,66 @@ case $host in
AC_MSG_NOTICE([skip check for pipe on msdosdjgpp])
;;
esac
AC_CHECK_FUNCS( strtoll \
socket \
strdup \
strstr \
strcasestr \
strtok_r \
uname \
strcasecmp \
stricmp \
strcmpi \
gethostbyaddr \
gettimeofday \
inet_addr \
inet_ntoa \
inet_pton \
perror \
closesocket \
siginterrupt \
sigaction \
signal \
getpass_r \
strlcat \
getpwuid \
geteuid \
getppid \
utime \
sigsetjmp \
basename \
setlocale \
ftruncate \
pipe \
poll \
getprotobyname \
getrlimit \
setrlimit \
fork \
setmode,
dnl if found
[],
dnl if not found, $ac_func is the name we check for
func="$ac_func"
eval skipcheck=\$skipcheck_$func
if test "x$skipcheck" != "xyes"; then
AC_MSG_CHECKING([deeper for $func])
AC_TRY_LINK( [],
[ $func ();],
AC_MSG_RESULT(yes!)
eval "ac_cv_func_$func=yes"
def=`echo "HAVE_$func" | tr 'a-z' 'A-Z'`
AC_DEFINE_UNQUOTED($def, 1, [If you have $func]),
AC_MSG_RESULT(but still no)
)
fi
)
AC_CHECK_FUNCS([basename \
closesocket \
fork \
ftruncate \
geteuid \
gethostbyaddr \
getpass_r \
getppid \
getprotobyname \
getpwuid \
getrlimit \
gettimeofday \
inet_addr \
inet_ntoa \
inet_pton \
perror \
pipe \
poll \
setlocale \
setmode \
setrlimit \
sigaction \
siginterrupt \
signal \
sigsetjmp \
socket \
strcasecmp \
strcasestr \
strcmpi \
strdup \
stricmp \
strlcat \
strstr \
strtok_r \
strtoll \
uname \
utime
],[
],[
func="$ac_func"
eval skipcheck=\$skipcheck_$func
if test "x$skipcheck" != "xyes"; then
AC_MSG_CHECKING([deeper for $func])
AC_LINK_IFELSE([
AC_LANG_PROGRAM([[
]],[[
$func ();
]])
],[
AC_MSG_RESULT([yes])
eval "ac_cv_func_$func=yes"
AC_DEFINE_UNQUOTED([AS_TR_CPP([HAVE_$func])], [1],
[Define to 1 if you have the $func function.])
],[
AC_MSG_RESULT([but still no])
])
fi
])
dnl sigsetjmp() might be a macro and no function so if it isn't found already
dnl we make an extra check here!
@@ -2452,6 +2497,27 @@ AC_HELP_STRING([--disable-hidden-symbols],[Leave all symbols with default visibi
AC_MSG_RESULT(no)
)
dnl ************************************************************
dnl enforce SONAME bump
dnl
AC_MSG_CHECKING([whether to enforce SONAME bump])
AC_ARG_ENABLE(soname-bump,
AC_HELP_STRING([--enable-soname-bump],[Enable enforced SONAME bump])
AC_HELP_STRING([--disable-soname-bump],[Disable enforced SONAME bump]),
[ case "$enableval" in
yes) AC_MSG_RESULT(yes)
soname_bump=yes
;;
*)
AC_MSG_RESULT(no)
;;
esac ],
AC_MSG_RESULT($soname_bump)
)
AM_CONDITIONAL(SONAME_BUMP, test x$soname_bump = xyes)
dnl ************************************************************
if test ! -z "$winsock_LIB"; then
@@ -2534,5 +2600,16 @@ AC_MSG_NOTICE([Configured to build curl/libcurl:
ca cert bundle: ${ca}
ca cert path: ${capath}
LDAP support: ${curl_ldap_msg}
LDAPS support: ${curl_ldaps_msg}
LDAPS support: ${curl_ldaps_msg}
])
if test "x$soname_bump" = "xyes"; then
cat <<EOM
SONAME bump: yes - WARNING: this library will be built with the SONAME
number bumped due to (a detected) ABI breakage.
See lib/README.curl_off_t for details on this.
EOM
fi

View File

@@ -53,8 +53,12 @@ UNIX
./configure --with-ssl
If you have OpenSSL installed somewhere else (for example, /opt/OpenSSL,)
you can run configure like this:
If you have OpenSSL installed somewhere else (for example, /opt/OpenSSL)
and you have pkg-config installed, set the pkg-config path first, like this:
env PKG_CONFIG_PATH=/opt/OpenSSL/lib/pkgconfig ./configure --with-ssl
Without pkg-config installed, use this:
./configure --with-ssl=/opt/OpenSSL
@@ -70,22 +74,23 @@ UNIX
(with the Bourne shell and its clones):
CPPFLAGS="-I/path/to/ssl/include" LDFLAGS="-L/path/to/ssl/lib" \
CPPFLAGS="-I/path/to/ssl/include" LDFLAGS="-L/path/to/ssl/lib" \
./configure
(with csh, tcsh and their clones):
env CPPFLAGS="-I/path/to/ssl/include" LDFLAGS="-L/path/to/ssl/lib" \
./configure
env CPPFLAGS="-I/path/to/ssl/include" LDFLAGS="-L/path/to/ssl/lib" \
./configure
If you have shared SSL libs installed in a directory where your run-time
linker doesn't find them (which usually causes configure failures), you can
provide the -R option to ld on some operating systems to set a hard-coded
path to the run-time linker:
LDFLAGS=-R/usr/local/ssl/lib ./configure --with-ssl
env LDFLAGS=-R/usr/local/ssl/lib ./configure --with-ssl
MORE OPTIONS
------------
To force configure to use the standard cc compiler if both cc and gcc are
present, run configure like
@@ -127,7 +132,7 @@ UNIX
To build with GnuTLS support instead of OpenSSL for SSL/TLS, note that
you need to use both --without-ssl and --with-gnutls.
To build with yassl support instead of OpenSSL or GunTLS, you must build
To build with yassl support instead of OpenSSL or GnuTLS, you must build
yassl with its OpenSSL emulation enabled and point to that directory root
with configure --with-ssl.
@@ -140,6 +145,16 @@ UNIX
To get support for SCP and SFTP, build with --with-libssh2 and have
libssh2 0.16 or later installed.
SPECIAL CASES
-------------
Some versions of uClibc require configuring with CPPFLAGS=-D_GNU_SOURCE=1
to get correct large file support.
The Open Watcom C compiler on Linux requires configuring with the variables:
./configure CC=owcc AR="$WATCOM/binl/wlib" AR_FLAGS=-q \
RANLIB=/bin/true STRIP="$WATCOM/binl/wstrip" CFLAGS=-Wextra
Win32
=====
@@ -272,6 +287,37 @@ Win32
at runtime.
Run 'nmake vc-ssl-zlib' to build with both ssl and zlib support.
MSVC 6 IDE
----------
A minimal VC++ 6.0 reference workspace (vc6curl.dsw) is available with the
source distribution archive to allow proper building of the two included
projects, the libcurl library and the curl tool.
1) Open the vc6curl.dsw workspace with MSVC6's IDE.
2) Select 'Build' from top menu.
3) Select 'Batch Build' from dropdown menu.
4) Make sure that the eight project configurations are 'checked'.
5) Click on the 'Build' button.
6) Once the eight project configurations are built you are done.
Dynamic and static libcurl libraries are built in debug and release flavours,
and can be located each one in its own subdirectory, DLL-Debug, DLL-Release,
LIB-Debug and LIB-Release, all of them below the 'lib' subdirectory.
In the same way four curl executables are created, each using its respective
library. The resulting curl executables are located in its own subdirectory,
DLL-Debug, DLL-Release, LIB-Debug and LIB-Release, below the 'src' subdir.
These reference VC++ 6.0 configurations are generated using the dynamic CRT.
Intentionally, these reference VC++ 6.0 projects and configurations don't use
third party libraries, such as OpenSSL or Zlib, to allow proper compilation
and configuration for all new users without further requirements.
If you need something more 'involved' you might adjust them for your own use,
or explore the world of makefiles described above 'MSVC from command line'.
Borland C++ compiler
---------------------
@@ -300,9 +346,8 @@ Win32
-L c:\openssl\out32\ssleay32.lib
simplessl.c
MSVC IDE
--------
OTHER MSVC IDEs
---------------
If you use VC++, Borland or similar compilers. Include all lib source
files in a static lib "project" (all .c and .h files that is).
@@ -311,9 +356,6 @@ Win32
Make the sources in the src/ drawer be a "win32 console application"
project. Name it curl.
For VC++ 6, there's an included Makefile.vc6 that should be possible
to use out-of-the-box.
Disabling Specific Protocols in Win32 builds
--------------------------------------------
@@ -332,10 +374,12 @@ Win32
CURL_DISABLE_DICT disables DICT
CURL_DISABLE_FILE disables FILE
CURL_DISABLE_TFTP disables TFTP
CURL_DISABLE_HTTP disables HTTP
If you want to set any of these defines you have the following
possibilities:
- Modify lib/config-win32.h
- Modify lib/setup.h
- Modify lib/Makefile.vc6
- Add defines to Project/Settings/C/C++/General/Preprocessor Definitions
@@ -618,40 +662,29 @@ eCos
Minix
=====
curl can be compiled on Minix 3 using gcc or ACK (starting with
ver. 3.1.3). The default heap size allocated to several required
programs is inadequate for configuring and compiling curl and will
result in strange errors unless fixed (which only needs to be done
once).
ver. 3.1.3).
ACK
---
Increase heap sizes with the commands:
Increase the heap sizes of the compiler with the command:
chmem =1024000 /usr/lib/em_cemcom.ansi
chmem =512000 /usr/lib/i386/as
If you have bash installed:
chmem =2048000 /usr/local/bin/bash
binsizes xxl
Configure and compile with:
./configure CC=cc LD=cc GREP=grep CPPFLAGS=-D_POSIX_SOURCE=1
./configure CONFIG_SHELL=/bin/bigsh CC=cc LD=cc AR=/usr/bin/aal \
GREP=grep CPPFLAGS=-D_POSIX_SOURCE=1
make
GCC
---
If you have bash installed:
chmem =2048000 /usr/local/bin/bash
Make sure gcc is in your PATH with the command:
export PATH=/usr/gnu/bin:$PATH
then configure and compile curl with:
./configure CC=gcc GREP=grep AR=/usr/gnu/bin/gar
./configure CONFIG_SHELL=/bin/bigsh CC=gcc AR=/usr/gnu/bin/gar GREP=grep
make
@@ -673,7 +706,7 @@ CROSS COMPILE
(This section was graciously brought to us by Jim Duey, with additions by
Dan Fandrich)
Download and unpack the cURL package. Version should be 7.9.1 or later.
Download and unpack the cURL package.
'cd' to the new directory. (e.g. cd curl-7.12.3)
@@ -723,12 +756,12 @@ REDUCING SIZE
important factor. First, be sure to set the CFLAGS variable when
configuring with any relevant compiler optimization flags to reduce the
size of the binary. For gcc, this would mean at minimum the -Os option,
potentially the -march=X and -mdynamic-no-pic options as well, e.g.:
and potentially the -march=X and -mdynamic-no-pic options as well, e.g.
./configure CFLAGS='-Os' ...
Note that newer compilers often produce smaller code than older versions
due to better optimization.
due to improved optimization.
Be sure to specify as many --disable- and --without- flags on the configure
command-line as you can to disable all the libcurl features that you
@@ -787,6 +820,7 @@ PORTS
- Pocket PC/Win CE 3.0
- Power AIX 3.2.5, 4.2, 4.3.1, 4.3.2, 5.1, 5.2
- PowerPC Darwin 1.0
- PowerPC INTEGRITY
- PowerPC Linux
- PowerPC Mac OS 9
- PowerPC Mac OS X
@@ -799,7 +833,8 @@ PORTS
- StrongARM (and other ARM) RISC OS 3.1, 4.02
- StrongARM/ARM7/ARM9 Linux 2.4, 2.6
- StrongARM NetBSD 1.4.1
- Symbian OS (P.I.P.S.)
- ARM INTEGRITY
- Symbian OS (P.I.P.S.) 9.x
- TPF
- Ultrix 4.3a
- UNICOS 9.0

View File

@@ -22,6 +22,56 @@ CVS
Tagging shall be used extensively, and by the time we release new archives we
should tag the sources with a name similar to the released version number.
Portability
===========
We write curl and libcurl to compile with C89 compilers. On 32bit and up
machines. Most of libcurl assumes more or less POSIX compliance but that's
not a requirement.
We write libcurl to build and work with lots of third party tools, and we
want it to remain functional and buildable with these and later versions
(older versions may still work but is not what we work hard to maintain):
OpenSSL 0.9.6
GnuTLS 1.2
zlib 1.1.4
libssh2 0.16
c-ares 1.5.0
libidn 0.4.1
*yassl 1.4.0 (http://curl.haxx.se/mail/lib-2008-02/0093.html)
openldap 2.0
MIT krb5 lib 1.2.4
qsossl V5R2M0
NSS 3.11.x
Heimdal ?
* = only partly functional, but that's due to bugs in the third party lib, not
because of libcurl code
On systems where configure runs, we aim at working on them all - if they have
a suitable C compiler. On systems that don't run configure, we strive to keep
curl running fine on:
Windows 98
AS/400 V5R2M0
Symbian 9.1
Windows CE ?
TPF ?
When writing code (mostly for generating stuff included in release tarballs)
we use a few "build tools" and we make sure that we remain functional with
these versions:
GNU Libtool 1.4.2
GNU Autoconf 2.57
GNU Automake 1.7 (we currently avoid 1.10 due to Solaris-related bugs)
GNU M4 1.4
perl 4
roffit 0.5
groff ? (any version that supports "groff -Tps -man [in] [out]")
ps2pdf (gs) ?
Windows vs Unix
===============

View File

@@ -3,14 +3,28 @@ join in and help us correct one or more of these! Also be sure to check the
changelog of the current development status, as one or more of these problems
may have been fixed since this was written!
58. It seems sensible to be able to use CURLOPT_NOBODY and
CURLOPT_FAILONERROR with FTP to detect if a file exists or not, but it is
not working: http://curl.haxx.se/mail/lib-2008-07/0295.html
57. On VMS-Alpha: When using an http-file-upload the file is not sent to the
Server with the correct content-length. Sending a file with 511 or less
bytes, content-length 512 is used. Sending a file with 513 - 1023 bytes,
content-length 1024 is used. Files with a length of a multiple of 512 Bytes
show the correct content-length. Only these files work for upload.
http://curl.haxx.se/bug/view.cgi?id=2057858
56. When libcurl sends CURLOPT_POSTQUOTE commands when connected to a SFTP
server using the multi interface, the commands are not being sent correctly
and instead the connection is "cancelled" (the operation is considered done)
prematurely. There is a half-baked (busy-looping) patch provided in the bug
report but it cannot be accepted as-is. See
http://curl.haxx.se/bug/view.cgi?id=2006544
55. libcurl fails to build with MIT Kerberos for Windows (KfW) due to KfW's
library header files exporting symbols/macros that should be kept private
to the KfW library. See ticket #5601 at http://krbdev.mit.edu/rt/
54. User names embedded in URLs without a password are parsed incorrectly--the
host name is treated as part of the user name and the port number becomes the
password. This can be observed test 279.
53. SFTP busy-loop problem. When doing SFTP uploads, we can see that libcurl
occasionally will busy-loop while waiting for certain network conditions.
Reported by Pavel Shalagin, explained somewhat by Daniel Stenberg here:

View File

@@ -48,6 +48,9 @@ SIMPLE USAGE
curl -u username: --key ~/.ssh/id_dsa --pubkey ~/.ssh/id_dsa.pub \
scp://shell.example.com/~/personal.txt
Get the main page from an IPv6 web server:
curl -g "http://[2001:1890:1112:1::20]/"
DOWNLOAD TO A FILE
@@ -86,6 +89,13 @@ USING PASSWORDS
standards while the recommended "explicit" way is done by using FTP:// and
the --ftp-ssl option.
SFTP / SCP
This is similar to FTP, but you can specify a private key to use instead of
a password. Note that the private key may itself be protected by a password
that is unrelated to the login password of the remote system. If you
provide a private key file you must also provide a public key file.
HTTP
Curl also supports user and password in HTTP URLs, thus you can pick a file
@@ -154,9 +164,9 @@ RANGES
UPLOADING
FTP
FTP / FTPS / SFTP / SCP
Upload all data on stdin to a specified ftp site:
Upload all data on stdin to a specified server:
curl -T - ftp://ftp.upload.com/myfile
@@ -169,7 +179,7 @@ UPLOADING
curl -T uploadfile -u user:passwd ftp://ftp.upload.com/
Upload a local file to get appended to the remote file using ftp:
Upload a local file to get appended to the remote file:
curl -T localfile -a ftp://ftp.upload.com/remotefile
@@ -331,7 +341,7 @@ REFERRER
curl -e www.coolsite.com http://www.showme.com/
NOTE: The referer field is defined in the HTTP spec to be a full URL.
NOTE: The Referer: [sic] field is defined in the HTTP spec to be a full URL.
USER AGENT
@@ -496,7 +506,7 @@ CONFIG FILE
with = or :. Comments can be used within the file. If the first letter on a
line is a '#'-letter the rest of the line is treated as a comment.
If you want the parameter to contain spaces, you must inclose the entire
If you want the parameter to contain spaces, you must enclose the entire
parameter within double quotes ("). Within those quotes, you specify a
quote as \".
@@ -564,10 +574,18 @@ FTP and PATH NAMES
(I.e with an extra slash in front of the file name.)
SFTP and SCP and PATH NAMES
With sftp: and scp: URLs, the path name given is the absolute name on the
server. To access a file relative to the remote user's home directory,
prefix the file with /~/ , such as:
curl -u $USER sftp://home.example.com/~/.bashrc
FTP and firewalls
The FTP protocol requires one of the involved parties to open a second
connction as soon as data is about to get transfered. There are two ways to
connection as soon as data is about to get transfered. There are two ways to
do this.
The default way for curl is to issue the PASV command which causes the
@@ -875,7 +893,8 @@ MULTIPLE TRANSFERS WITH A SINGLE COMMAND LINE
As is mentioned above, you can download multiple files with one command line
by simply adding more URLs. If you want those to get saved to a local file
instead of just printed to stdout, you need to add one save option for each
URL you specify. Note that this also goes for the -O option.
URL you specify. Note that this also goes for the -O option (but not
--remote-name-all).
For example: get two files and use -O for the first and a custom file
name for the second:
@@ -886,6 +905,28 @@ MULTIPLE TRANSFERS WITH A SINGLE COMMAND LINE
curl -T local1 ftp://ftp.com/moo.exe -T local2 ftp://ftp.com/moo2.txt
IPv6
curl will connect to a server with IPv6 when a host lookup returns an IPv6
address and fall back to IPv4 if the connection fails. The --ipv4 and --ipv6
options can specify which address to use when both are available. IPv6
addresses can also be specified directly in URLs using the syntax:
http://[2001:1890:1112:1::20]/overview.html
When this style is used, the -g option must be given to stop curl from
interpreting the square brackets as special globbing characters. Link local
and site local addresses including a scope identifier, such as fe80::1234%1,
may also be used, but the scope portion must be numeric and the percent
character must be URL escaped. The previous example in an SFTP URL might
look like:
sftp://[fe80::1234%251]/
IPv6 addresses provided other than in URLs (e.g. to the --proxy, --interface
or --ftp-port options) should not be URL encoded.
MAILING LISTS
For your convenience, we have several open mailing lists to discuss curl,

View File

@@ -31,6 +31,7 @@ Anders Gustafsson
Andi Jahja
Andre Guibert de Bruet
Andreas Damm
Andreas Faerber
Andreas Ntaflos
Andreas Olsson
Andreas Rieke
@@ -54,8 +55,10 @@ Arve Knudsen
Ates Goral
Augustus Saunders
Avery Fay
Bart Whiteley
Ben Greear
Ben Madsen
Ben Van Hof
Benjamin Gerard
Bernard Leak
Bertrand Demiddelaer
@@ -71,6 +74,7 @@ Brian Akins
Brian Dessent
Brian R Duffy
Brian Ulm
Brock Noland
Bruce Mitchener
Bryan Henderson
Bryan Kemp
@@ -87,6 +91,7 @@ Christian Robottom Reis
Christian Vogt
Christophe Demory
Christophe Legry
Christopher Palow
Christopher R. Palmer
Ciprian Badescu
Clarence Gardner
@@ -111,6 +116,7 @@ Dan Zitter
Daniel Black
Daniel Cater
Daniel Egger
Daniel Fandrich
Daniel Johnson
Daniel Stenberg
Daniel at touchtunes
@@ -133,6 +139,7 @@ David LeBlanc
David McCreedy
David Odin
David Phillips
David Rosenstrauch
David Shaw
David Tarendash
David Thiel
@@ -273,6 +280,7 @@ Jayesh A Shah
Jaz Fresh
Jean Jacques Drouin
Jean-Claude Chauve
Jean-Francois Bertrand
Jean-Louis Lemaire
Jean-Marc Ranger
Jean-Philippe Barrette-LaPierre
@@ -280,6 +288,7 @@ Jeff Johnson
Jeff Lawson
Jeff Phillips
Jeff Pohlmeyer
Jeff Weber
Jeffrey Pohlmeyer
Jeremy Friesner
Jerome Muffat-Meridol
@@ -357,6 +366,7 @@ Lau Hang Kin
Legoff Vincent
Lehel Bernadt
Len Krause
Liam Healy
Linas Vepstas
Ling Thio
Linus Nielsen Feltzing
@@ -372,7 +382,7 @@ Maciej Karpiuk
Maciej W. Rozycki
Manfred Schwarb
Marc Boucher
Marcelo Juchem
Marcelo Juchem
Marcin Konicki
Marco G. Salvagno
Marcus Webster
@@ -443,9 +453,11 @@ Niels van Tongeren
Nikita Schmidt
Nikitinskit Dmitriy
Niklas Angebrand
Nikolai Kondrashov
Nir Soffer
Nis Jorgensen
Nodak Sodak
Norbert Frese
Norbert Novotny
Ofer
Olaf Stueben
@@ -487,6 +499,7 @@ Pierre
Pooyan McSporran
Puneet Pawaia
Quagmire
Rafa Muyo
Rafael Sagula
Ralf S. Engelschall
Ralph Beckmann
@@ -542,9 +555,12 @@ Sampo Kellomaki
Samuel D<>az Garc<72>a
Samuel Listopad
Sander Gates
Sandor Feldi
Saul good
Scott Barrett
Scott Cantor
Scott Davis
Scott McCreary
Sebastien Willemijns
Sergio Ballestrero
Seshubabu Pasam
@@ -635,9 +651,10 @@ Wojciech Zwiefka
Xavier Bouchoux
Yang Tse
Yarram Sunil
Yuriy Sosov
Yves Lejeune
Zmey Petroff
Zvi Har'El
Zvi Har'El
nk
swalkaus at yahoo.com
tommink[at]post.pl

View File

@@ -375,12 +375,11 @@ Date: May 28, 2008
11.1 Certificates
In the HTTPS world, you use certificates to validate that you are the one
you you claim to be, as an addition to normal passwords. Curl supports
client-side certificates. All certificates are locked with a pass phrase,
which you need to enter before the certificate can be used by curl. The pass
phrase can be specified on the command line or if not, entered interactively
when curl queries for it. Use a certificate with curl on a HTTPS server
like:
you claim to be, as an addition to normal passwords. Curl supports client-
side certificates. All certificates are locked with a pass phrase, which you
need to enter before the certificate can be used by curl. The pass phrase
can be specified on the command line or if not, entered interactively when
curl queries for it. Use a certificate with curl on a HTTPS server like:
curl -E mycert.pem https://that.secure.server.com

View File

@@ -21,7 +21,7 @@
.\" * $Id$
.\" **************************************************************************
.\"
.TH curl 1 "5 Jan 2008" "Curl 7.18.0" "Curl Manual"
.TH curl 1 "10 July 2008" "Curl 7.19.0" "Curl Manual"
.SH NAME
curl \- transfer a URL
.SH SYNOPSIS
@@ -99,11 +99,16 @@ any response data to the terminal.
If you prefer a progress "bar" instead of the regular meter, \fI-#\fP is your
friend.
.SH OPTIONS
In general, all boolean options are enabled with --option and yet again
disabled with --\fBno-\fPoption. That is, you use the exact same option name
but prefix it with "no-". However, in this list we mostly only list and show
the --option version of them. (This concept with --no options was added in
7.19.0. Previously most options were toggled on/off on repeated use of the
same command line option.)
.IP "-a/--append"
(FTP) When used in an FTP upload, this will tell curl to append to the target
(FTP/SFTP) When used in an upload, this will tell curl to append to the target
file instead of overwriting it. If the file doesn't exist, it will be created.
If this option is used twice, the second one will disable append mode again.
Note that this flag is ignored by some SSH servers (including OpenSSH).
.IP "-A/--user-agent <agent string>"
(HTTP) Specify the User-Agent string to send to the HTTP server. Some badly
done CGIs fail if this field isn't set to "Mozilla/4.0". To encode blanks in
@@ -124,9 +129,6 @@ Note that using --anyauth is not recommended if you do uploads from stdin,
since it may require data to be sent twice and then the client must be able to
rewind. If the need should arise when uploading from stdin, the upload
operation will fail.
If this option is used several times, the following occurrences make no
difference.
.IP "-b/--cookie <name=data>"
(HTTP)
Pass the data to the HTTP server as a cookie. It is supposedly the
@@ -152,16 +154,11 @@ used.
Enable ASCII transfer when using FTP or LDAP. For FTP, this can also be
enforced by using an URL that ends with ";type=A". This option causes data
sent to stdout to be in text mode for win32 systems.
If this option is used twice, the second one will disable ASCII usage.
.IP "--basic"
(HTTP) Tells curl to use HTTP Basic authentication. This is the default and
this option is usually pointless, unless you use it to override a previously
set option that sets a different authentication method (such as \fI--ntlm\fP,
\fI--digest\fP and \fI--negotiate\fP).
If this option is used several times, the following occurrences make no
difference.
.IP "--ciphers <list of ciphers>"
(SSL) Specifies which ciphers to use in the connection. The list of ciphers
must be using valid ciphers. Read up on SSL cipher list details on this URL:
@@ -175,9 +172,7 @@ If this option is used several times, the last one will override the others.
.IP "--compressed"
(HTTP) Request a compressed response using one of the algorithms libcurl
supports, and return the uncompressed document. If this option is used and
the server sends an unsupported encoding, Curl will report an error.
If this option is used several times, each occurrence will toggle it on/off.
the server sends an unsupported encoding, curl will report an error.
.IP "--connect-timeout <seconds>"
Maximum time in seconds that you allow the connection to the server to take.
This only limits the connection phase, once curl has connected this option is
@@ -220,9 +215,6 @@ To create remote directories when using FTP or SFTP, try
\fI--ftp-create-dirs\fP.
.IP "--crlf"
(FTP) Convert LF to CRLF in upload. Useful for MVS (OS/390).
If this option is used several times, the following occurrences make no
difference.
.IP "-d/--data <data>"
(HTTP) Sends the specified data in a POST request to the HTTP server, in the
same way that a browser does when a user has filled in an HTML form and
@@ -298,13 +290,15 @@ away. EPRT and LPRT are extensions to the original FTP protocol, may not work
on all servers but enable more functionality in a better way than the
traditional PORT command.
If this option is used several times, each occurrence will toggle this on/off.
Since curl 7.19.0, \fB--eprt\fP can be used to explicitly enable EPRT again
and \fB--no-eprt\fP is an alias for \fB--disable-eprt\fP.
.IP "--disable-epsv"
(FTP) Tell curl to disable the use of the EPSV command when doing passive FTP
transfers. Curl will normally always first attempt to use EPSV before PASV,
but with this option, it will not try using EPSV.
If this option is used several times, each occurrence will toggle this on/off.
Since curl 7.19.0, \fB--epsv\fP can be used to explicitly enable EPRT again
and \fB--no-epsv\fP is an alias for \fB--disable-epsv\fP.
.IP "-D/--dump-header <file>"
Write the protocol headers to the specified file.
@@ -334,8 +328,6 @@ run-time.
(RISC OS ONLY) Sets a range of environment variables, using the names the -w
option supports, to easier allow extraction of useful information after having
run curl.
If this option is used several times, each occurrence will toggle this on/off.
.IP "--egd-file <file>"
(SSL) Specify the path name to the Entropy Gathering Daemon socket. The socket
is used to seed the random engine for SSL connections. See also the
@@ -400,8 +392,6 @@ will prevent curl from outputting that and return error 22.
This method is not fail-safe and there are occasions where non-successful
response codes will slip through, especially when authentication is involved
(response codes 401 and 407).
If this option is used twice, the second will again disable silent failure.
.IP "--ftp-account [data]"
(FTP) When an FTP server asks for "account data" after user name and password
has been provided, this data is sent off using the ACCT command. (Added in
@@ -413,8 +403,6 @@ If this option is used twice, the second will override the previous use.
currently exist on the server, the standard behavior of curl is to
fail. Using this option, curl will instead attempt to create missing
directories.
If this option is used twice, the second will again disable directory creation.
.IP "--ftp-method [method]"
(FTP) Control what method curl should use to reach a file on a FTP(S)
server. The method argument should be one of the following alternatives:
@@ -437,7 +425,8 @@ using this option can be used to override a previous --ftp-port option. (Added
in 7.11.0)
If this option is used several times, the following occurrences make no
difference.
difference. Undoing an enforced PASV really isn't doable but you must then
instead enforce the correct EPRT again.
.IP "--ftp-alternative-to-user <command>"
(FTP) If authenticating with the USER and PASS commands fails, send this
command. When connecting to Tumbleweed's Secure Transport server over FTPS
@@ -450,28 +439,19 @@ will re-use the same IP address it already uses for the control
connection. (Added in 7.14.2)
This option has no effect if PORT, EPRT or EPSV is used instead of PASV.
If this option is used twice, the second will again use the server's suggested
address.
.IP "--ftp-ssl"
(FTP) Try to use SSL/TLS for the FTP connection. Reverts to a non-secure
connection if the server doesn't support SSL/TLS. See also
\fI--ftp-ssl-control\fP and \fI--ftp-ssl-reqd\fP for different levels of
encryption required. (Added in 7.11.0)
If this option is used twice, the second will again disable this.
.IP "--ftp-ssl-control"
(FTP) Require SSL/TLS for the ftp login, clear for transfer. Allows secure
authentication, but non-encrypted data transfers for efficiency. Fails the
transfer if the server doesn't support SSL/TLS. (Added in 7.16.0)
If this option is used twice, the second will again disable this.
.IP "--ftp-ssl-reqd"
(FTP) Require SSL/TLS for the FTP connection.
Terminates the connection if the server doesn't support SSL/TLS.
(Added in 7.15.5)
If this option is used twice, the second will again disable this.
.IP "--ftp-ssl-ccc"
(FTP) Use CCC (Clear Command Channel)
Shuts down the SSL/TLS layer after authenticating. The rest of the
@@ -479,8 +459,6 @@ control channel communication will be unencrypted. This allows
NAT routers to follow the FTP transaction. The default mode is
passive. See --ftp-ssl-ccc-mode for other modes.
(Added in 7.16.1)
If this option is used twice, the second will again disable this.
.IP "--ftp-ssl-ccc-mode [active/passive]"
(FTP) Use CCC (Clear Command Channel)
Sets the CCC mode. The passive mode will not initiate the shutdown, but
@@ -545,7 +523,8 @@ If used in combination with -I, the POST data will instead be appended to the
URL with a HEAD request.
If this option is used several times, the following occurrences make no
difference.
difference. This is because undoing a GET doesn't make sense, but you should
then instead enforce the alternative method you prefer.
.IP "-h/--help"
Usage help.
.IP "-H/--header <header>"
@@ -566,7 +545,7 @@ for you.
See also the \fI-A/--user-agent\fP and \fI-e/--referer\fP options.
This option can be used multiple times to add/replace/remove multiple headers.
.IP "--hostpubmd5"
.IP "--hostpubmd5 <md5>"
Pass a string containing 32 hexadecimal digits. The string should be the 128
bit MD5 checksum of the remote host's public key, curl will refuse the
connection with the host unless the md5sums match. This option is only for SCP
@@ -577,11 +556,8 @@ Ignore the Content-Length header. This is particularly useful for servers
running Apache 1.x, which will report incorrect Content-Length for files
larger than 2 gigabytes.
.IP "-i/--include"
(HTTP)
Include the HTTP-header in the output. The HTTP-header includes things
(HTTP) Include the HTTP-header in the output. The HTTP-header includes things
like server-name, date of the document, HTTP-version and more...
If this option is used twice, the second will again disable header include.
.IP "--interface <name>"
Perform an operation using a specified interface. You can enter interface
name, IP address or host name. An example could look like:
@@ -595,15 +571,11 @@ Fetch the HTTP-header only! HTTP-servers feature the command HEAD
which this uses to get nothing but the header of a document. When used
on a FTP or FILE file, curl displays the file size and last modification
time only.
If this option is used twice, the second will again disable header only.
.IP "-j/--junk-session-cookies"
(HTTP) When curl is told to read cookies from a given file, this option will
make it discard all "session cookies". This will basically have the same effect
as if a new session is started. Typical browsers always discard session
cookies when they're closed down.
If this option is used several times, each occurrence will toggle this on/off.
.IP "-k/--insecure"
(SSL) This option explicitly allows curl to perform "insecure" SSL connections
and transfers. All SSL connections are attempted to be made secure by using
@@ -612,8 +584,6 @@ considered "insecure" to fail unless \fI-k/--insecure\fP is used.
See this online resource for further details:
\fBhttp://curl.haxx.se/docs/sslcerts.html\fP
If this option is used twice, the second time will again disable it.
.IP "--keepalive-time <seconds>"
This option sets the time a connection needs to remain idle before sending
keepalive probes and the time between individual keepalive probes. It is
@@ -738,7 +708,6 @@ This option causes an FTP NLST command to be sent. Some FTP servers
list only files in their response to NLST; they do not include
subdirectories and symbolic links.
If this option is used twice, the second will again disable list only.
.IP "--local-port <num>[-num]"
Set a preferred number or range of local port numbers to use for the
connection(s). Note that port numbers by nature is a scarce resource that
@@ -759,8 +728,6 @@ When curl follows a redirect and the request is not a plain GET (for example
POST or PUT), it will do the following request with a GET if the HTTP response
was 301, 302, or 303. If the response code was any other 3xx code, curl will
re-send the following request using the same unmodified method.
If this option is used twice, the second will again disable location following.
.IP "--location-trusted"
(HTTP/HTTPS) Like \fI-L/--location\fP, but will allow sending the name +
password to all hosts that the site may redirect to. This may or may not
@@ -768,7 +735,6 @@ introduce a security breach if the site redirects you do a site to which
you'll send your authentication info (which is plaintext in the case of HTTP
Basic authentication).
If this option is used twice, the second will again disable location following.
.IP "--max-filesize <bytes>"
Specify the maximum size (in bytes) of a file to download. If the file
requested is larger than this value, the transfer will not start and curl will
@@ -786,9 +752,9 @@ If this option is used several times, the last one will be used.
.IP "-M/--manual"
Manual. Display the huge help text.
.IP "-n/--netrc"
Makes curl scan the \fI.netrc\fP file in the user's home directory for login
name and password. This is typically used for ftp on unix. If used with http,
curl will enable user authentication. See
Makes curl scan the \fI.netrc\fP (\fI_netrc\fP on Windows) file in the user's
home directory for login name and password. This is typically used for ftp on
unix. If used with http, curl will enable user authentication. See
.BR netrc(4)
or
.BR ftp(1)
@@ -802,8 +768,6 @@ to ftp to the machine host.domain.com with user name \&'myself' and password
\&'secret' should look similar to:
.B "machine host.domain.com login myself password secret"
If this option is used twice, the second will again disable netrc usage.
.IP "--netrc-optional"
Very similar to \fI--netrc\fP, but this option makes the .netrc usage
\fBoptional\fP and not mandatory as the \fI--netrc\fP does.
@@ -833,12 +797,14 @@ will use a standard buffered output stream that will have the effect that it
will output the data in chunks, not necessarily exactly when the data arrives.
Using this option will disable that buffering.
If this option is used twice, the second will again switch on buffering.
Note that this is the negated option name documented. You can thus use
\fI--buffer\fP to enforce the buffering.
.IP "--no-keepalive"
Disables the use of keepalive messages on the TCP connection, as by default
curl enables them.
If this option is used twice, the second will again enable keepalive.
Note that this is the negated option name documented. You can thus use
\fI--keepalive\fP to enforce keepalive.
.IP "--no-sessionid"
(SSL) Disable curl's use of SSL session-ID caching. By default all transfers
are done using the cache. Note that while nothing ever should get hurt by
@@ -846,8 +812,8 @@ attempting to reuse SSL session-IDs, there seem to be broken SSL
implementations in the wild that may require you to disable this in order for
you to succeed. (Added in 7.16.0)
If this option is used twice, the second will again switch on use of the
session cache.
Note that this is the negated option name documented. You can thus use
\fI--sessionid\fP to enforce session-ID caching.
.IP "--ntlm"
(HTTP) Enables NTLM authentication. The NTLM authentication method was
designed by Microsoft and is used by IIS web servers. It is a proprietary
@@ -888,6 +854,11 @@ The remote file name to use for saving is extracted from the given URL,
nothing else.
You may use this option as many times as you have number of URLs.
.IP "--remote-name-all"
This option changes the default action for all given URLs to be dealt with as
if \fI-O/--remote-name\fP were used for each one. So if you want to disable
that for a specific URL after \fI--remote-name-all\fP has been used, you must
use "-o -" or \fI--no-remote-name\fP. (Added in 7.19.0)
.IP "--pass <phrase>"
(SSL/SSH) Pass phrase for the private key
@@ -903,41 +874,26 @@ a redirection. This option is meaningful only when using \fI-L/--location\fP
Tells curl to pick a suitable authentication method when communicating with
the given proxy. This might cause an extra request/response round-trip. (Added
in 7.13.2)
If this option is used twice, the second will again disable the proxy use-any
authentication.
.IP "--proxy-basic"
Tells curl to use HTTP Basic authentication when communicating with the given
proxy. Use \fI--basic\fP for enabling HTTP Basic with a remote host. Basic is
the default authentication method curl uses with proxies.
If this option is used twice, the second will again disable proxy HTTP Basic
authentication.
.IP "--proxy-digest"
Tells curl to use HTTP Digest authentication when communicating with the given
proxy. Use \fI--digest\fP for enabling HTTP Digest with a remote host.
If this option is used twice, the second will again disable proxy HTTP Digest.
.IP "--proxy-negotiate"
Tells curl to use HTTP Negotiate authentication when communicating
with the given proxy. Use \fI--negotiate\fP for enabling HTTP Negotiate
with a remote host.
If this option is used twice, the second will again disable proxy HTTP
Negotiate. (Added in 7.17.1)
with a remote host. (Added in 7.17.1)
.IP "--proxy-ntlm"
Tells curl to use HTTP NTLM authentication when communicating with the given
proxy. Use \fI--ntlm\fP for enabling NTLM with a remote host.
If this option is used twice, the second will again disable proxy HTTP NTLM.
.IP "-p/--proxytunnel"
When an HTTP proxy is used (\fI-x/--proxy\fP), this option will cause non-HTTP
protocols to attempt to tunnel through the proxy instead of merely using it to
do HTTP-like operations. The tunnel approach is made with the HTTP proxy
CONNECT request and requires that the proxy allows direct connect to the
remote port number curl wants to tunnel through to.
If this option is used twice, the second will again disable proxy tunnel.
.IP "--pubkey <key>"
(SSH) Public key file name. Allows you to provide your public key in this
separate file.
@@ -978,11 +934,42 @@ just before the transfer command(s), prefix the command with '+' (this
is only supported for FTP). You may specify any number of commands. If
the server returns failure for one of the commands, the entire operation
will be aborted. You must send syntactically correct FTP commands as
RFC959 defines to FTP servers, or one of the following commands (with
appropriate arguments) to SFTP servers: chgrp, chmod, chown, ln, mkdir,
pwd, rename, rm, rmdir, symlink.
RFC959 defines to FTP servers, or one of the commands listed below to
SFTP servers. This option can be used multiple times.
This option can be used multiple times.
SFTP is a binary protocol. Unlike for FTP, libcurl interprets SFTP quote
commands before sending them to the server. Following is the list of
all supported SFTP quote commands:
.RS
.IP "chgrp group file"
The chgrp command sets the group ID of the file named by the file operand to the
group ID specified by the group operand. The group operand is a decimal
integer group ID.
.IP "chmod mode file"
The chmod command modifies the file mode bits of the specified file. The
mode operand is an octal integer mode number.
.IP "chown user file"
The chown command sets the owner of the file named by the file operand to the
user ID specified by the user operand. The user operand is a decimal
integer user ID.
.IP "ln source_file target_file"
The ln and symlink commands create a symbolic link at the target_file location
pointing to the source_file location.
.IP "mkdir directory_name"
The mkdir command creates the directory named by the directory_name operand.
.IP "pwd"
The pwd command returns the absolute pathname of the current working directory.
.IP "rename source target"
The rename command renames the file or directory named by the source
operand to the destination path named by the target operand.
.IP "rm file"
The rm command removes the file specified by the file operand.
.IP "rmdir directory"
The rmdir command removes the directory entry specified by the directory
operand, provided it is empty.
.IP "symlink source_file target_file"
See ln.
.RE
.IP "--random-file <file>"
(SSL) Specify the path name to file containing what will be considered as
random data. The data is used to seed the random engine for SSL connections.
@@ -1033,14 +1020,10 @@ If this option is used several times, the last one will be used.
.IP "--raw"
When used, it disables all internal HTTP decoding of content or transfer
encodings and instead makes them passed on unaltered, raw. (Added in 7.16.2)
If this option is used several times, each occurrence toggles this on/off.
.IP "-R/--remote-time"
When used, this will make libcurl attempt to figure out the timestamp of the
remote file, and if that is available make the local file get that same
timestamp.
If this option is used twice, the second time disables this again.
.IP "--retry <num>"
If a transient error is returned when curl tries to perform a transfer, it
will retry this number of times before giving up. Setting the number to 0
@@ -1075,12 +1058,8 @@ If this option is used multiple times, the last occurrence decide the amount.
.IP "-s/--silent"
Silent mode. Don't show progress meter or error messages. Makes
Curl mute.
If this option is used twice, the second will again disable silent mode.
.IP "-S/--show-error"
When used with -s it makes curl show error message if it fails.
If this option is used twice, the second will again disable show error.
.IP "--socks4 <host[:port]>"
Use the specified SOCKS4 proxy. If the port number is not specified, it is
assumed at port 1080. (Added in 7.15.2)
@@ -1127,8 +1106,6 @@ If this option is used several times, the last one will be used.
.IP "--tcp-nodelay"
Turn on the TCP_NODELAY option. See the \fIcurl_easy_setopt(3)\fP man page for
details about this option. (Added in 7.11.2)
If this option is used several times, each occurrence toggles this on/off.
.IP "-t/--telnet-option <OPT=val>"
Pass options to the telnet protocol. Supported options are:
@@ -1181,8 +1158,6 @@ If this option is used several times, the last one will be used.
.IP "--trace-time"
Prepends a time stamp to each trace or verbose line that curl displays.
(Added in 7.14.0)
If this option is used several times, each occurrence will toggle it on/off.
.IP "-u/--user <user:password>"
Specify user and password to use for server authentication. Overrides
\fI-n/--netrc\fP and \fI--netrc-optional\fP.
@@ -1222,8 +1197,6 @@ If you think this option still doesn't give you enough details, consider using
\fI--trace\fP or \fI--trace-ascii\fP instead.
This option overrides previous uses of \fI--trace-ascii\fP or \fI--trace\fP.
If this option is used twice, the second will do nothing extra.
.IP "-V/--version"
Displays information about curl and the libcurl version it uses.
@@ -1305,8 +1278,12 @@ The time, in seconds, it took from the start until the name resolving was
completed.
.TP
.B time_connect
The time, in seconds, it took from the start until the connect to the remote
host (or proxy) was completed.
The time, in seconds, it took from the start until the TCP connect to the
remote host (or proxy) was completed.
.TP
.B time_appconnect
The time, in seconds, it took from the start until the SSL/SSH/etc
connect/handshake to the remote host was completed. (Added in 7.19.0)
.TP
.B time_pretransfer
The time, in seconds, it took from the start until the file transfer is just
@@ -1358,6 +1335,10 @@ will show the actual URL a redirect \fIwould\fP take you to. (Added in 7.18.2)
.B ftp_entry_path
The initial path libcurl ended up in when logging on to the remote FTP
server. (Added in 7.15.4)
.TP
.B ssl_verify_result
The result of the SSL peer certificate verification that was requested. 0
means the verification was successful. (Added in 7.19.0)
.RE
If this option is used several times, the last one will be used.
@@ -1447,8 +1428,6 @@ IPv6 addresses only.
.IP "-#/--progress-bar"
Make curl display progress information as a progress bar instead of the
default statistics.
If this option is used twice, the second will again disable the progress bar.
.SH FILES
.I ~/.curlrc
.RS
@@ -1613,6 +1592,10 @@ The resource referenced in the URL does not exist
An unspecified error occurred during the SSH session
.IP 80
Failed to shut down the SSL connection
.IP 82
Could not load CRL file, missing or wrong format (added in 7.19.0)
.IP 83
Issuer check failed (added in 7.19.0)
.IP XX
There will appear more error codes here in future releases. The existing ones
are meant to never change.

View File

@@ -16,11 +16,10 @@
#include <errno.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <curl/multi.h>
#ifdef WIN32
#include <windows.h>
#ifndef WIN32
# include <unistd.h>
#endif
#include <curl/multi.h>
static const char *urls[] = {
"http://www.microsoft.com",

View File

@@ -7,7 +7,16 @@ AUTOMAKE_OPTIONS = foreign nostdinc
EXTRA_DIST = README Makefile.example Makefile.inc Makefile.m32 \
makefile.dj $(COMPLICATED_EXAMPLES)
INCLUDES = -I$(top_srcdir)/include
# Specify our include paths here, and do it relative to $(top_srcdir) and
# $(top_builddir), to ensure that these paths which belong to the library
# being currently built and tested are searched before the library which
# might possibly already be installed in the system.
#
# $(top_builddir)/include is for libcurl's generated curl/curlbuild.h file
# $(top_srcdir)/include is for libcurl's external include files
INCLUDES = -I$(top_builddir)/include \
-I$(top_srcdir)/include
LIBDIR = $(top_builddir)/lib

View File

@@ -5,7 +5,7 @@ check_PROGRAMS = 10-at-a-time anyauthput cookie_interface \
https multi-app multi-debugcallback multi-double \
multi-post multi-single persistant post-callback \
postit2 sepheaders simple simplepost simplessl \
sendrecv
sendrecv httpcustomheader
# These examples require external dependencies that may not be commonly
# available on POSIX systems, so don't bother attempting to compile them here.

View File

@@ -9,10 +9,23 @@
*/
#include <stdio.h>
#include <stdint.h>
#include <fcntl.h>
#ifdef WIN32
# include <io.h>
#else
# include <stdint.h>
# include <unistd.h>
#endif
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#ifdef _MSC_VER
# ifdef _WIN64
typedef __int64 intptr_t;
# else
typedef int intptr_t;
# endif
#endif
#include <curl/curl.h>

View File

@@ -45,7 +45,9 @@
#include <stdio.h>
#include <string.h>
#include <sys/time.h>
#ifndef WIN32
# include <sys/time.h>
#endif
#include <stdlib.h>
#include <errno.h>

View File

@@ -21,6 +21,9 @@
#include <curl/curl.h>
#if defined(_MSC_VER) && (_MSC_VER < 1300)
# error _snscanf requires MSVC 7.0 or later.
#endif
/* The MinGW headers are missing a few Win32 function definitions,
you shouldn't need this if you use VC++ */

View File

@@ -0,0 +1,38 @@
/*****************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* $Id$
*/
#include <stdio.h>
#include <curl/curl.h>
int main(void)
{
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
struct curl_slist *chunk = NULL;
chunk = curl_slist_append(chunk, "Accept: moo");
/* request with the built-in Accept: */
curl_easy_setopt(curl, CURLOPT_URL, "localhost");
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
res = curl_easy_perform(curl);
/* redo request with our own custom Accept: */
res = curl_easy_setopt(curl, CURLOPT_HTTPHEADER, chunk);
res = curl_easy_perform(curl);
/* always cleanup */
curl_easy_cleanup(curl);
}
return 0;
}

View File

@@ -16,16 +16,15 @@ ifeq ($(USE_SSL),1)
LIBS += $(OPENSSL_ROOT)/lib/libssl.a $(OPENSSL_ROOT)/lib/libcrypt.a
endif
ifeq ($(USE_IDNA),1)
LIBS += $(LIBIDN_ROOT)/lib/dj_obj/libidn.a -liconv
endif
LIBS += $(WATT32_ROOT)/lib/libwatt.a $(ZLIB_ROOT)/libz.a
CSOURCES = fopen.c ftpget.c ftpgetresp.c ftpupload.c getinmemory.c \
http-post.c httpput.c https.c multi-app.c multi-double.c \
multi-post.c multi-single.c persistant.c post-callback.c \
postit2.c sepheaders.c simple.c simplepost.c simplessl.c \
multi-debugcallback.c fileupload.c getinfo.c anyauthput.c \
10-at-a-time.c # ftpuploadresume.c cookie_interface.c
include Makefile.inc
PROGRAMS = $(CSOURCES:.c=.exe)
PROGRAMS = $(patsubst %,%.exe,$(check_PROGRAMS))
all: $(PROGRAMS)
@echo Welcome to libcurl example program

View File

@@ -18,7 +18,6 @@
static int wait_on_socket(int sockfd, int for_recv, long timeout_ms)
{
struct timeval tv;
long seconds, usecs;
fd_set infd, outfd, errfd;
int res;

View File

@@ -9,7 +9,7 @@
ABI - Application Binary Interface
First, allow me to define the word for this context: ABI describes the
low-level interface between an application program a library. Calling
low-level interface between an application program and a library. Calling
conventions, function arguments, return values, struct sizes/defines and
more.

View File

@@ -71,6 +71,12 @@ start until the name resolving was completed.
.IP CURLINFO_CONNECT_TIME
Pass a pointer to a double to receive the time, in seconds, it took from the
start until the connect to the remote host (or proxy) was completed.
.IP CURLINFO_APPCONNECT_TIME
Pass a pointer to a double to receive the time, in seconds, it took from the
start until the SSL/SSH connect/handshake to the remote host was completed.
This time is most often very near to the PRETRANSFER time, except for cases
such as HTTP pippelining where the pretransfer time can be delayed due to
waits in line for the pipeline and more. (Added in 7.19.0)
.IP CURLINFO_PRETRANSFER_TIME
Pass a pointer to a double to receive the time, in seconds, it took from the
start until the file transfer is just about to begin. This includes all
@@ -159,6 +165,12 @@ counted). Combined with \fICURLINFO_REDIRECT_COUNT\fP you are able to know
how many times libcurl successfully reused existing connection(s) or not. See
the Connection Options of \fIcurl_easy_setopt(3)\fP to see how libcurl tries
to make persistent connections to save time. (Added in 7.12.3)
.IP CURLINFO_PRIMARY_IP
Pass a pointer to a char pointer to receive the pointer to a zero-terminated
string holding the IP address of the most recent connection done with this
\fBcurl\fP handle. This string may be IPv6 if that's enabled. Note that you
get a pointer to a memory area that will be re-used at next request so you
need to copy the string if you want to keep the information. (Added in 7.19.0)
.IP CURLINFO_COOKIELIST
Pass a pointer to a 'struct curl_slist *' to receive a linked-list of all
cookies cURL knows (expired ones, too). Don't forget to
@@ -184,29 +196,33 @@ An overview of the six time values available from curl_easy_getinfo()
curl_easy_perform()
|
|--NT
|--|--CT
|--|--|--PT
|--|--|--|--ST
|--|--|--|--|--TT
|--|--|--|--|--RT
|--NAMELOOKUP
|--|--CONNECT
|--|--|--APPCONNECT
|--|--|--|--PRETRANSFER
|--|--|--|--|--STARTTRANSFER
|--|--|--|--|--|--TOTAL
|--|--|--|--|--|--REDIRECT
.FI
.IP NT
.IP NAMELOOKUP
\fICURLINFO_NAMELOOKUP_TIME\fP. The time it took from the start until the name
resolving was completed.
.IP CT
.IP CONNECT
\fICURLINFO_CONNECT_TIME\fP. The time it took from the start until the connect
to the remote host (or proxy) was completed.
.IP PT
.IP APPCONNECT
\fICURLINFO_APPCONNECT_TIME\fP. The time it took from the start until the SSL
connect/handshake with the remote host was completed. (Added in in 7.19.0)
.IP PRETRANSFER
\fICURLINFO_PRETRANSFER_TIME\fP. The time it took from the start until the
file transfer is just about to begin. This includes all pre-transfer commands
and negotiations that are specific to the particular protocol(s) involved.
.IP ST
.IP STARTTRANSFER
\fICURLINFO_STARTTRANSFER_TIME\fP. The time it took from the start until the
first byte is just about to be transferred.
.IP TT
.IP TOTAL
\fICURLINFO_TOTAL_TIME\fP. Total time of the previous request.
.IP RT
.IP REDIRECT
\fICURLINFO_REDIRECT_TIME\fP. The time it took for all redirection steps
include name lookup, connect, pretransfer and transfer before final
transaction was started. So, this is zero if no redirection took place.

View File

@@ -21,7 +21,7 @@
.\" * $Id$
.\" **************************************************************************
.\"
.TH curl_easy_setopt 3 "5 Jan 2008" "libcurl 7.18.0" "libcurl Manual"
.TH curl_easy_setopt 3 "30 Jul 2008" "libcurl 7.19.0" "libcurl Manual"
.SH NAME
curl_easy_setopt \- set options for a curl easy handle
.SH SYNOPSIS
@@ -56,7 +56,7 @@ The \fIhandle\fP is the return code from a \fIcurl_easy_init(3)\fP or
\fIcurl_easy_duphandle(3)\fP call.
.SH BEHAVIOR OPTIONS
.IP CURLOPT_VERBOSE
Set the parameter to non-zero to get the library to display a lot of verbose
Set the parameter to 1 to get the library to display a lot of verbose
information about its operations. Very useful for libcurl and/or protocol
debugging and understanding. The verbose information will be sent to stderr,
or the stream set with \fICURLOPT_STDERR\fP.
@@ -65,17 +65,17 @@ You hardly ever want this set in production use, you will almost always want
this when you debug/report problems. Another neat option for debugging is the
\fICURLOPT_DEBUGFUNCTION\fP.
.IP CURLOPT_HEADER
A non-zero parameter tells the library to include the header in the body
A parameter set to 1 tells the library to include the header in the body
output. This is only relevant for protocols that actually have headers
preceding the data (like HTTP).
.IP CURLOPT_NOPROGRESS
A non-zero parameter tells the library to shut off the built-in progress meter
A parameter set to 1 tells the library to shut off the built-in progress meter
completely.
Future versions of libcurl is likely to not have any built-in progress meter
at all.
.IP CURLOPT_NOSIGNAL
Pass a long. If it is non-zero, libcurl will not use any functions that
Pass a long. If it is 1, libcurl will not use any functions that
install signal handlers or any functions that cause signals to be sent to the
process. This option is mainly here to allow multi-threaded unix applications
to still set/use all timeout options etc, without risking getting signals.
@@ -188,7 +188,7 @@ rewind a stream when doing a HTTP PUT or POST with a multi-pass authentication
method. The function shall work like "fseek" or "lseek" and accepted SEEK_SET,
SEEK_CUR and SEEK_END as argument for origin, although (in 7.18.0) libcurl
only passes SEEK_SET. The callback must return 0 on success as returning
non-zero will cause the upload operation to fail.
something else will cause the upload operation to fail.
If you forward the input arguments directly to "fseek" or "lseek", note that
the data type for \fIoffset\fP is not the same as defined for curl_off_t on
@@ -251,7 +251,7 @@ If you transfer data with the multi interface, this function will not be
called during periods of idleness unless you call the appropriate libcurl
function that performs transfers.
\fICURLOPT_NOPROGRESS\fP must be set to FALSE to make this function actually
\fICURLOPT_NOPROGRESS\fP must be set to 0 to make this function actually
get called.
.IP CURLOPT_PROGRESSDATA
Pass a pointer that will be untouched by libcurl and passed as the first
@@ -410,7 +410,7 @@ touched. Do not rely on the contents in those cases.
Pass a FILE * as parameter. Tell libcurl to use this stream instead of stderr
when showing the progress meter and displaying \fICURLOPT_VERBOSE\fP data.
.IP CURLOPT_FAILONERROR
A non-zero parameter tells the library to fail silently if the HTTP code
A parameter set to 1 tells the library to fail silently if the HTTP code
returned is equal to or larger than 400. The default action would be to return
the page normally, ignoring that code.
@@ -473,12 +473,12 @@ this are \fICURLPROXY_HTTP\fP, \fICURLPROXY_SOCKS4\fP (added in 7.15.2),
\fICURLPROXY_SOCKS5_HOSTNAME\fP (added in 7.18.0). The HTTP type is
default. (Added in 7.10)
.IP CURLOPT_HTTPPROXYTUNNEL
Set the parameter to non-zero to get the library to tunnel all operations
through a given HTTP proxy. There is a big difference between using a proxy
and to tunnel through it. If you don't know what this means, you probably
don't want this tunneling option.
Set the parameter to 1 to make the library tunnel all operations through a
given HTTP proxy. There is a big difference between using a proxy and to
tunnel through it. If you don't know what this means, you probably don't want
this tunneling option.
.IP CURLOPT_SOCKS5_RESOLVE_LOCAL
Set the parameter to 1 to get the library to resolve the host name locally
Set the parameter to 1 to make the library to resolve the host name locally
instead of passing it to the proxy to resolve, when using a SOCKS5 proxy.
Note that libcurl before 7.18.0 always resolved the host name locally even
@@ -495,18 +495,24 @@ set. Note that port numbers are only valid 1 - 65535. (Added in 7.15.2)
.IP CURLOPT_LOCALPORTRANGE
Pass a long. This is the number of attempts libcurl should do to find a
working local port number. It starts with the given \fICURLOPT_LOCALPORT\fP
and adds one to the number for each retry. Setting this value to 1 or below
will make libcurl do only one try for exact port number. Note that port
numbers by nature is a scarce resource that will be busy at times so setting
this value to something too low might cause unnecessary connection setup
and adds one to the number for each retry. Setting this to 1 or below will
make libcurl do only one try for the exact port number. Note that port numbers
by nature are scarce resources that will be busy at times so setting this
value to something too low might cause unnecessary connection setup
failures. (Added in 7.15.2)
.IP CURLOPT_DNS_CACHE_TIMEOUT
Pass a long, this sets the timeout in seconds. Name resolves will be kept in
memory for this number of seconds. Set to zero (0) to completely disable
memory for this number of seconds. Set to zero to completely disable
caching, or set to -1 to make the cached entries remain forever. By default,
libcurl caches this info for 60 seconds.
NOTE: the name resolve functions of various libc implementations don't re-read
name server information unless explicitly told so (by for example calling
\fIres_init(3)\fP. This may cause libcurl to keep using the older server even
if DHCP has updated the server info, and this may look like a DNS cache issue
to the casual libcurl-app user.
.IP CURLOPT_DNS_USE_GLOBAL_CACHE
Pass a long. If the value is non-zero, it tells curl to use a global DNS cache
Pass a long. If the value is 1, it tells curl to use a global DNS cache
that will survive between easy handle creations and deletions. This is not
thread-safe and this will use a global variable.
@@ -541,6 +547,9 @@ notably telnet or rlogin) small segments may need to be sent
without delay. This is less efficient than sending larger amounts of
data at a time, and can contribute to congestion on the network if
overdone.
.IP CURLOPT_ADDRESS_SCOPE
Pass a long specifying the scope_id value to use when connecting to IPv6
link-local or site-local addresses.
.SH NAMES and PASSWORDS OPTIONS (Authentication)
.IP CURLOPT_NETRC
This parameter controls the preference of libcurl between using user names and
@@ -554,11 +563,11 @@ parameter.
Pass a long, set to one of the values described below.
.RS
.IP CURL_NETRC_OPTIONAL
The use of your \fI~/.netrc\fP file is optional,
and information in the URL is to be preferred. The file will be scanned
with the host and user name (to find the password only) or with the host only,
to find the first user name and password after that \fImachine\fP,
which ever information is not specified in the URL.
The use of your \fI~/.netrc\fP file is optional, and information in the URL is
to be preferred. The file will be scanned with the host and user name (to
find the password only) or with the host only, to find the first user name and
password after that \fImachine\fP, which ever information is not specified in
the URL.
Undefined values of the option will have this effect.
.IP CURL_NETRC_IGNORED
@@ -566,9 +575,8 @@ The library will ignore the file and use only the information in the URL.
This is the default.
.IP CURL_NETRC_REQUIRED
This value tells the library that use of the file is required,
to ignore the information in the URL,
and to search the file with the host only.
This value tells the library that use of the file is required, to ignore the
information in the URL, and to search the file with the host only.
.RE
Only machine name, user name and password are taken into account
(init macros and similar things aren't supported).
@@ -579,7 +587,7 @@ standard Unix ftp client does). It should only be readable by user.
Pass a char * as parameter, pointing to a zero terminated string containing
the full path name to the file you want libcurl to use as .netrc file. If this
option is omitted, and \fICURLOPT_NETRC\fP is set, libcurl will attempt to
find the a .netrc file in the current user's home directory. (Added in 7.10.9)
find a .netrc file in the current user's home directory. (Added in 7.10.9)
.IP CURLOPT_USERPWD
Pass a char * as parameter, which should be [user name]:[password] to use for
the connection. Use \fICURLOPT_HTTPAUTH\fP to decide authentication method.
@@ -653,24 +661,23 @@ bitmask can be constructed by or'ing together the bits listed above for the
work. (Added in 7.10.7)
.SH HTTP OPTIONS
.IP CURLOPT_AUTOREFERER
Pass a non-zero parameter to enable this. When enabled, libcurl will
Pass a parameter set to 1 to enable this. When enabled, libcurl will
automatically set the Referer: field in requests where it follows a Location:
redirect.
.IP CURLOPT_ENCODING
Sets the contents of the Accept-Encoding: header sent in an HTTP
request, and enables decoding of a response when a Content-Encoding:
header is received. Three encodings are supported: \fIidentity\fP,
which does nothing, \fIdeflate\fP which requests the server to
compress its response using the zlib algorithm, and \fIgzip\fP which
requests the gzip algorithm. If a zero-length string is set, then an
Accept-Encoding: header containing all supported encodings is sent.
Sets the contents of the Accept-Encoding: header sent in an HTTP request, and
enables decoding of a response when a Content-Encoding: header is received.
Three encodings are supported: \fIidentity\fP, which does nothing,
\fIdeflate\fP which requests the server to compress its response using the
zlib algorithm, and \fIgzip\fP which requests the gzip algorithm. If a
zero-length string is set, then an Accept-Encoding: header containing all
supported encodings is sent.
This is a request, not an order; the server may or may not do it. This
option must be set (to any non-NULL value) or else any unsolicited
encoding done by the server is ignored. See the special file
lib/README.encoding for details.
This is a request, not an order; the server may or may not do it. This option
must be set (to any non-NULL value) or else any unsolicited encoding done by
the server is ignored. See the special file lib/README.encoding for details.
.IP CURLOPT_FOLLOWLOCATION
A non-zero parameter tells the library to follow any Location: header that the
A parameter set to 1 tells the library to follow any Location: header that the
server sends as part of an HTTP header.
This means that the library will re-send the same request on the new location
@@ -678,7 +685,7 @@ and follow new Location: headers all the way until no more such headers are
returned. \fICURLOPT_MAXREDIRS\fP can be used to limit the number of redirects
libcurl will follow.
.IP CURLOPT_UNRESTRICTED_AUTH
A non-zero parameter tells the library it can continue to send authentication
A parameter set to 1 tells the library it can continue to send authentication
(user+password) when following locations, even when hostname changed. This
option is meaningful only when setting \fICURLOPT_FOLLOWLOCATION\fP.
.IP CURLOPT_MAXREDIRS
@@ -689,21 +696,21 @@ redirections have been followed, the next redirect will cause an error
Setting the limit to 0 will make libcurl refuse any redirect. Set it to -1 for
an infinite number of redirects (which is the default)
.IP CURLOPT_POST301
A non-zero parameter tells the library to respect RFC 2616/10.3.2 and not
A parameter set to 1 tells the library to respect RFC 2616/10.3.2 and not
convert POST requests into GET requests when following a 301 redirection. The
non-RFC behaviour is ubiquitous in web browsers, so the library does the
conversion by default to maintain consistency. However, a server may requires
a POST to remain a POST after such a redirection. This option is meaningful
only when setting \fICURLOPT_FOLLOWLOCATION\fP. (Added in 7.17.1)
.IP CURLOPT_PUT
A non-zero parameter tells the library to use HTTP PUT to transfer data. The
A parameter set to 1 tells the library to use HTTP PUT to transfer data. The
data should be set with \fICURLOPT_READDATA\fP and \fICURLOPT_INFILESIZE\fP.
This option is deprecated and starting with version 7.12.1 you should instead
use \fICURLOPT_UPLOAD\fP.
.IP CURLOPT_POST
A non-zero parameter tells the library to do a regular HTTP post. This will
also make the library use the a "Content-Type:
A parameter set to 1 tells the library to do a regular HTTP post. This will
also make the library use a "Content-Type:
application/x-www-form-urlencoded" header. (This is by far the most commonly
used POST method).
@@ -732,7 +739,7 @@ adding a header like "Transfer-Encoding: chunked" with
\fICURLOPT_HTTPHEADER\fP. With HTTP 1.0 or without chunked transfer, you must
specify the size in the request.
When setting \fICURLOPT_POST\fP to a non-zero value, it will automatically set
When setting \fICURLOPT_POST\fP to 1, it will automatically set
\fICURLOPT_NOBODY\fP to 0 (since 7.14.1).
If you issue a POST request and then want to make a HEAD or GET using the same
@@ -894,12 +901,12 @@ error for this. Using \fICURLOPT_VERBOSE\fP or \fICURLOPT_DEBUGFUNCTION\fP
will get a warning to display, but that is the only visible feedback you get
about this possibly lethal situation.
.IP CURLOPT_COOKIESESSION
Pass a long set to non-zero to mark this as a new cookie "session". It will
force libcurl to ignore all cookies it is about to load that are "session
cookies" from the previous session. By default, libcurl always stores and
loads all cookies, independent if they are session cookies are not. Session
cookies are cookies without expiry date and they are meant to be alive and
existing for this "session" only.
Pass a long set to 1 to mark this as a new cookie "session". It will force
libcurl to ignore all cookies it is about to load that are "session cookies"
from the previous session. By default, libcurl always stores and loads all
cookies, independent if they are session cookies are not. Session cookies are
cookies without expiry date and they are meant to be alive and existing for
this "session" only.
.IP CURLOPT_COOKIELIST
Pass a char * to a cookie string. Cookie can be either in Netscape / Mozilla
format or just regular HTTP-style header (Set-Cookie: ...) format. If cURL
@@ -910,12 +917,12 @@ by cURL. (Added in 7.15.4) Passing the special string \&"FLUSH" will write
all cookies known by cURL to the file specified by \fICURLOPT_COOKIEJAR\fP.
(Added in 7.17.1)
.IP CURLOPT_HTTPGET
Pass a long. If the long is non-zero, this forces the HTTP request to get back
Pass a long. If the long is 1, this forces the HTTP request to get back
to GET. usable if a POST, HEAD, PUT or a custom request have been used
previously using the same curl handle.
When setting \fICURLOPT_HTTPGET\fP to a non-zero value, it will automatically
set \fICURLOPT_NOBODY\fP to 0 (since 7.14.1).
When setting \fICURLOPT_HTTPGET\fP to 1, it will automatically set
\fICURLOPT_NOBODY\fP to 0 (since 7.14.1).
.IP CURLOPT_HTTP_VERSION
Pass a long, set to one of the values described below. They force libcurl to
use the specific HTTP versions. This is not sensible to do unless you have a
@@ -965,8 +972,12 @@ properly filled in with text strings. Use \fIcurl_slist_append(3)\fP
to append strings (commands) to the list, and clear the entire list
afterwards with \fIcurl_slist_free_all(3)\fP. Disable this operation
again by setting a NULL to this option.
The set of valid FTP commands depends on the server (see RFC959 for a
list of mandatory commands).
The valid SFTP commands are: chgrp, chmod, chown, ln, mkdir, pwd,
rename, rm, rmdir, symlink. (SFTP support added in 7.16.3)
rename, rm, rmdir, symlink (see
.BR curl (1))
(SFTP support added in 7.16.3)
.IP CURLOPT_POSTQUOTE
Pass a pointer to a linked list of FTP or SFTP commands to pass to the
server after your ftp transfer request. The linked list should be a
@@ -978,10 +989,10 @@ Pass a pointer to a linked list of FTP commands to pass to the server after
the transfer type is set. The linked list should be a fully valid list of
struct curl_slist structs properly filled in as described for
\fICURLOPT_QUOTE\fP. Disable this operation again by setting a NULL to this
option. Before version 7.15.6, if you also set \fICURLOPT_NOBODY\fP non-zero,
this option didn't work.
option. Before version 7.15.6, if you also set \fICURLOPT_NOBODY\fP to 1, this
option didn't work.
.IP CURLOPT_DIRLISTONLY
A non-zero parameter tells the library to just list the names of files in a
A parameter set to 1 tells the library to just list the names of files in a
directory, instead of doing a full directory listing that would include file
sizes, dates etc. This works for FTP and SFTP URLs.
@@ -991,27 +1002,27 @@ might not include subdirectories and symbolic links.
(This option was known as CURLOPT_FTPLISTONLY up to 7.16.4)
.IP CURLOPT_APPEND
A non-zero parameter tells the library to append to the remote file instead of
A parameter set to 1 tells the library to append to the remote file instead of
overwrite it. This is only useful when uploading to an ftp site.
(This option was known as CURLOPT_FTPAPPEND up to 7.16.4)
.IP CURLOPT_FTP_USE_EPRT
Pass a long. If the value is non-zero, it tells curl to use the EPRT (and
Pass a long. If the value is 1, it tells curl to use the EPRT (and
LPRT) command when doing active FTP downloads (which is enabled by
\fICURLOPT_FTPPORT\fP). Using EPRT means that it will first attempt to use
EPRT and then LPRT before using PORT, but if you pass FALSE (zero) to this
EPRT and then LPRT before using PORT, but if you pass zero to this
option, it will not try using EPRT or LPRT, only plain PORT. (Added in 7.10.5)
If the server is an IPv6 host, this option will have no effect as of 7.12.3.
.IP CURLOPT_FTP_USE_EPSV
Pass a long. If the value is non-zero, it tells curl to use the EPSV command
Pass a long. If the value is 1, it tells curl to use the EPSV command
when doing passive FTP downloads (which it always does by default). Using EPSV
means that it will first attempt to use EPSV before using PASV, but if you
pass FALSE (zero) to this option, it will not try using EPSV, only plain PASV.
pass zero to this option, it will not try using EPSV, only plain PASV.
If the server is an IPv6 host, this option will have no effect as of 7.12.3.
.IP CURLOPT_FTP_CREATE_MISSING_DIRS
Pass a long. If the value is non-zero, curl will attempt to create any remote
Pass a long. If the value is 1, curl will attempt to create any remote
directory that it fails to CWD into. CWD is the command that changes working
directory. (Added in 7.10.7)
@@ -1034,11 +1045,11 @@ fails. This is currently only known to be required when connecting to
Tumbleweed's Secure Transport FTPS server using client certificates for
authentication. (Added in 7.15.5)
.IP CURLOPT_FTP_SKIP_PASV_IP
Pass a long. If set to a non-zero value, it instructs libcurl to not use the
IP address the server suggests in its 227-response to libcurl's PASV command
when libcurl connects the data connection. Instead libcurl will re-use the
same IP address it already uses for the control connection. But it will use
the port number from the 227-response. (Added in 7.14.2)
Pass a long. If set to 1, it instructs libcurl to not use the IP address the
server suggests in its 227-response to libcurl's PASV command when libcurl
connects the data connection. Instead libcurl will re-use the same IP address
it already uses for the control connection. But it will use the port number
from the 227-response. (Added in 7.14.2)
This option has no effect if PORT, EPRT or EPSV is used instead of PASV.
.IP CURLOPT_USE_SSL
@@ -1107,7 +1118,7 @@ compliant than 'nocwd' but without the full penalty of 'multicwd'.
.RE
.SH PROTOCOL OPTIONS
.IP CURLOPT_TRANSFERTEXT
A non-zero parameter tells the library to use ASCII mode for ftp transfers,
A parameter set to 1 tells the library to use ASCII mode for ftp transfers,
instead of the default binary transfer. For win32 systems it does not set the
stdout to binary mode. This option can be usable when transferring text data
between systems with different views on certain characters, such as newlines
@@ -1119,10 +1130,10 @@ simply sets the mode to ascii and performs a standard transfer.
.IP CURLOPT_PROXY_TRANSFER_MODE
Pass a long. If the value is set to 1 (one), it tells libcurl to set the
transfer mode (binary or ASCII) for FTP transfers done via an HTTP proxy, by
appending ;type=a or ;type=i to the URL. Without this setting, or it being
set to 0 (zero, the default), \fICURLOPT_TRANSFERTEXT\fP has no effect when
doing FTP via a proxy. Beware that not all proxies support this feature.
(Added in 7.18.0)
appending ;type=a or ;type=i to the URL. Without this setting, or it being set
to 0 (zero, the default), \fICURLOPT_TRANSFERTEXT\fP has no effect when doing
FTP via a proxy. Beware that not all proxies support this feature. (Added in
7.18.0)
.IP CURLOPT_CRLF
Convert Unix newlines to CRLF newlines on transfers.
.IP CURLOPT_RANGE
@@ -1167,13 +1178,13 @@ possibly confuse the remote server badly. Use \fICURLOPT_POST\fP and
replace or extend the set of headers sent by libcurl. Use
\fICURLOPT_HTTP_VERSION\fP to change HTTP version.
.IP CURLOPT_FILETIME
Pass a long. If it is a non-zero value, libcurl will attempt to get the
modification date of the remote document in this operation. This requires that
the remote server sends the time or replies to a time querying command. The
Pass a long. If it is 1, libcurl will attempt to get the modification date of
the remote document in this operation. This requires that the remote server
sends the time or replies to a time querying command. The
\fIcurl_easy_getinfo(3)\fP function with the \fICURLINFO_FILETIME\fP argument
can be used after a transfer to extract the received time (if any).
.IP CURLOPT_NOBODY
A non-zero parameter tells the library to not include the body-part in the
A parameter set to 1 tells the library to not include the body-part in the
output. This is only relevant for protocols that have separate header and body
parts. On HTTP(S) servers, this will make libcurl do a HEAD request.
@@ -1199,7 +1210,7 @@ For uploading using SCP, this option or \fICURLOPT_INFILESIZE\fP is mandatory.
Note that this option does not limit how much data libcurl will actually send,
as that is controlled entirely by what the read callback returns.
.IP CURLOPT_UPLOAD
A non-zero parameter tells the library to prepare for an upload. The
A parameter set to 1 tells the library to prepare for an upload. The
\fICURLOPT_READDATA\fP and \fICURLOPT_INFILESIZE\fP or
\fICURLOPT_INFILESIZE_LARGE\fP options are also interesting for uploads. If
the protocol is HTTP, uploading means using the PUT request unless you tell
@@ -1295,14 +1306,14 @@ the \fICURLMOPT_MAXCONNECTS\fP option.
.IP CURLOPT_CLOSEPOLICY
(Obsolete) This option does nothing.
.IP CURLOPT_FRESH_CONNECT
Pass a long. Set to non-zero to make the next transfer use a new (fresh)
connection by force. If the connection cache is full before this connection,
one of the existing connections will be closed as according to the selected or
default policy. This option should be used with caution and only if you
understand what it does. Set this to 0 to have libcurl attempt re-using an
existing connection (default behavior).
Pass a long. Set to 1 to make the next transfer use a new (fresh) connection
by force. If the connection cache is full before this connection, one of the
existing connections will be closed as according to the selected or default
policy. This option should be used with caution and only if you understand
what it does. Set this to 0 to have libcurl attempt re-using an existing
connection (default behavior).
.IP CURLOPT_FORBID_REUSE
Pass a long. Set to non-zero to make the next transfer explicitly close the
Pass a long. Set to 1 to make the next transfer explicitly close the
connection when done. Normally, libcurl keep all connections alive when done
with one transfer in case there comes a succeeding one that can re-use them.
This option should be used with caution and only if you understand what it
@@ -1334,8 +1345,8 @@ Resolve to ipv4 addresses.
Resolve to ipv6 addresses.
.RE
.IP CURLOPT_CONNECT_ONLY
Pass a long. A non-zero parameter tells the library to perform any required
proxy authentication and connection setup, but no data transfer.
Pass a long. If the parameter equals 1, it tells the library to perform all
the required proxy authentication and connection setup, but no data transfer.
This option is useful with the \fICURLINFO_LASTSOCKET\fP option to
\fIcurl_easy_getinfo(3)\fP. The library can set up the connection and then the
@@ -1410,26 +1421,25 @@ Force SSLv3
.IP CURLOPT_SSL_VERIFYPEER
Pass a long as parameter.
This option determines whether curl verifies the authenticity of the
peer's certificate. A nonzero value means curl verifies; zero means it
doesn't. The default is nonzero, but before 7.10, it was zero.
This option determines whether curl verifies the authenticity of the peer's
certificate. A value of 1 means curl verifies; zero means it doesn't. The
default is nonzero, but before 7.10, it was zero.
When negotiating an SSL connection, the server sends a certificate
indicating its identity. Curl verifies whether the certificate is
authentic, i.e. that you can trust that the server is who the
certificate says it is. This trust is based on a chain of digital
signatures, rooted in certification authority (CA) certificates you
supply. As of 7.10, curl installs a default bundle of CA certificates
and you can specify alternate certificates with the
When negotiating an SSL connection, the server sends a certificate indicating
its identity. Curl verifies whether the certificate is authentic, i.e. that
you can trust that the server is who the certificate says it is. This trust
is based on a chain of digital signatures, rooted in certification authority
(CA) certificates you supply. As of 7.10, curl installs a default bundle of
CA certificates and you can specify alternate certificates with the
\fICURLOPT_CAINFO\fP option or the \fICURLOPT_CAPATH\fP option.
When \fICURLOPT_SSL_VERIFYPEER\fP is nonzero, and the verification
fails to prove that the certificate is authentic, the connection
fails. When the option is zero, the connection succeeds regardless.
When \fICURLOPT_SSL_VERIFYPEER\fP is nonzero, and the verification fails to
prove that the certificate is authentic, the connection fails. When the
option is zero, the connection succeeds regardless.
Authenticating the certificate is not by itself very useful. You
typically want to ensure that the server, as authentically identified
by its certificate, is the server you mean to be talking to. Use
Authenticating the certificate is not by itself very useful. You typically
want to ensure that the server, as authentically identified by its
certificate, is the server you mean to be talking to. Use
\fICURLOPT_SSL_VERIFYHOST\fP to control that.
.IP CURLOPT_CAINFO
Pass a char * to a zero terminated string naming a file holding one or more
@@ -1443,6 +1453,22 @@ bundle is assumed to be stored, as established at build time.
When built against NSS this is the directory that the NSS certificate
database resides in.
.IP CURLOPT_ISSUERCERT
Pass a char * to a zero terminated string naming a file holding a CA
certificate in PEM format. If the option is set, an additional check against
the peer certificate is performed to verify the issuer is indeed the one
associated with the certificate provided by the option. This additional check
is useful in multi-level PKI where one need to enforce the peer certificate is
from a specific branch of the tree.
This option makes sense only when used in combination with the
\fICURLOPT_SSL_VERIFYPEER\fP option. Otherwise, the result of the check is not
considered as failure.
A specific error code (CURLE_SSL_ISSUER_ERROR) is defined with the option,
which is returned if the setup of the SSL/TLS session has failed due to a
mismatch with the issuer of peer certificate (\fICURLOPT_SSL_VERIFYPEER\fP has
to be set too for the check to fail). (Added in 7.19.0)
.IP CURLOPT_CAPATH
Pass a char * to a zero terminated string naming a directory holding multiple
CA certificates to verify the peer with. The certificate directory must be
@@ -1452,6 +1478,24 @@ in combination with the \fICURLOPT_SSL_VERIFYPEER\fP option. If
indicate an accessible path. The \fICURLOPT_CAPATH\fP function apparently
does not work in Windows due to some limitation in openssl. This option is
OpenSSL-specific and does nothing if libcurl is built to use GnuTLS.
.IP CURLOPT_CRLFILE
Pass a char * to a zero terminated string naming a file with the concatenation
of CRL (in PEM format) to use in the certificate validation that occurs during
the SSL exchange.
When curl is built to use NSS or GnuTLS, there is no way to influence the use
of CRL passed to help in the verification process. When libcurl is built with
OpenSSL support, X509_V_FLAG_CRL_CHECK and X509_V_FLAG_CRL_CHECK_ALL are both
set, requiring CRL check against all the elements of the certificate chain if
a CRL file is passed.
This option makes sense only when used in combination with the
\fICURLOPT_SSL_VERIFYPEER\fP option.
A specific error code (CURLE_SSL_CRL_BADFILE) is defined with the option. It
is returned when the SSL exchange fails because the CRL file cannot be loaded.
Note that a failure in certificate verification due to a revocation information
found in the CRL does not trigger this specific error. (Added in 7.19.0)
.IP CURLOPT_RANDOM_FILE
Pass a char * to a zero terminated file name. The file will be used to read
from to seed the random engine for SSL. The more random the specified file is,
@@ -1531,7 +1575,7 @@ CURLSSH_AUTH_KEYBOARD. Set CURLSSH_AUTH_ANY to let libcurl pick one.
(Added in 7.16.1)
.IP CURLOPT_SSH_HOST_PUBLIC_KEY_MD5
Pass a char * pointing to a string containing 32 hexadecimal digits. The
string should be the 128 bit MD5 cheksum of the remote host's public key, and
string should be the 128 bit MD5 checksum of the remote host's public key, and
libcurl will reject the connection to the host unless the md5sums match. This
option is only for SCP and SFTP transfers. (Added in 7.17.1)
.IP CURLOPT_SSH_PUBLIC_KEYFILE
@@ -1590,4 +1634,4 @@ If you try to set an option that libcurl doesn't know about, perhaps because
the library is too old to support it or the option was removed in a recent
version, this function will return \fICURLE_FAILED_INIT\fP.
.SH "SEE ALSO"
.BR curl_easy_init "(3), " curl_easy_cleanup "(3), " curl_easy_reset "(3), "
.BR curl_easy_init "(3), " curl_easy_cleanup "(3), " curl_easy_reset "(3)"

View File

@@ -128,9 +128,9 @@ you've called \fIcurl_easy_cleanup(3)\fP for the curl handle.
See example below.
.SH RETURN VALUE
0 means everything was ok, non-zero means an error occurred as
0 means everything was ok, non-zero means an error occurred corresponding
to a CURL_FORMADD_* constant defined in
.I <curl/curl.h>
defines.
.SH EXAMPLE
.nf

View File

@@ -10,7 +10,10 @@ curl_multi_socket \- reads/writes available data
CURLMcode curl_multi_socket_action(CURLM * multi_handle,
curl_socket_t sockfd, int ev_bitmask,
int *running_handles);
.fi
.B "Now deprecated versions:"
.nf
CURLMcode curl_multi_socket(CURLM * multi_handle, curl_socket_t sockfd,
int *running_handles);
@@ -20,47 +23,48 @@ CURLMcode curl_multi_socket_all(CURLM *multi_handle,
.SH DESCRIPTION
Alternative versions of \fIcurl_multi_perform(3)\fP that allows the
application to pass in the file descriptor/socket that has been detected to
have \&"action" on it and let libcurl perform. This allows libcurl to not have
to scan through all possible file descriptors to check for action. When the
application has detected action on a socket handled by libcurl, it should call
\fIcurl_multi_socket_action(3)\fP with the \fBsockfd\fP argument set to the
socket with the action. When the events on a socket are known, they can be
passed as an events bitmask \fBev_bitmask\fP by first setting \fBev_bitmask\fP
to 0, and then adding using bitwise OR (|) any combination of events to be
chosen from CURL_CSELECT_IN, CURL_CSELECT_OUT or CURL_CSELECT_ERR. When the
events on a socket are unknown, pass 0 instead, and libcurl will test the
descriptor internally.
have \&"action" on it and let libcurl perform. This lets libcurl avoid having
to scan through all possible file descriptors to check for action.
At return, the int \fBrunning_handles\fP points to will contain the number of
still running easy handles within the multi handle. When this number reaches
zero, all transfers are complete/done. Note that when you call
When the application has detected action on a socket handled by libcurl, it
should call \fIcurl_multi_socket_action(3)\fP with the \fBsockfd\fP argument
set to the socket with the action. When the events on a socket are known, they
can be passed as an events bitmask \fBev_bitmask\fP by first setting
\fBev_bitmask\fP to 0, and then adding using bitwise OR (|) any combination of
events to be chosen from CURL_CSELECT_IN, CURL_CSELECT_OUT or
CURL_CSELECT_ERR. When the events on a socket are unknown, pass 0 instead, and
libcurl will test the descriptor internally.
At return, the integer \fBrunning_handles\fP points to will contain the number
of still running easy handles within the multi handle. When this number
reaches zero, all transfers are complete/done. Note that when you call
\fIcurl_multi_socket_action(3)\fP on a specific socket and the counter
decreases by one, it DOES NOT necessarily mean that this exact socket/transfer
is the one that completed. Use \fIcurl_multi_info_read(3)\fP to figure out
which easy handle that completed.
The curl_multi_socket functions inform the application about updates in the
socket (file descriptor) status by doing none, one or multiple calls to the
socket callback function set with the CURLMOPT_SOCKETFUNCTION option to
\fIcurl_multi_setopt(3)\fP. They update the status with changes since the
previous time this function was called.
The \fBcurl_multi_socket_action(3)\fP functions inform the application about
updates in the socket (file descriptor) status by doing none, one or multiple
calls to the socket callback function set with the CURLMOPT_SOCKETFUNCTION
option to \fIcurl_multi_setopt(3)\fP. They update the status with changes
since the previous time the callback was called.
Get the timeout time by setting the \fICURLMOPT_TIMERFUNCTION\fP option with
\fIcurl_multi_setopt(3)\fP. Your application will then get called with
information on how long to wait for socket actions at most before doing the
timeout action: call the \fBcurl_multi_socket_action(3)\fP function with the
\fBsockfd\fP argument set to CURL_SOCKET_TIMEOUT. You can also use the
\fIcurl_multi_timeout(3)\fP function to poll the value at any given time, but
for an event-based system using the callback is far better than relying on
polling the timeout value.
Usage of \fIcurl_multi_socket(3)\fP is deprecated, whereas the function is
equivalent to \fIcurl_multi_socket_action(3)\fP with \fBev_bitmask\fP set to
0.
Force libcurl to (re-)check all its internal sockets and transfers instead of
just a single one by calling \fBcurl_multi_socket_all(3)\fP. Note that there
should rarely be reasons to use this function!
Get the timeout time - how long to wait for socket actions at most before
doing the timeout action: call the \fBcurl_multi_socket(3)\fP function with
the \fBsockfd\fP argument set to CURL_SOCKET_TIMEOUT, by setting the
\fICURLMOPT_TIMERFUNCTION\fP option with \fIcurl_multi_setopt(3)\fP. You can
also use the \fIcurl_multi_timeout(3)\fP function to poll the value at any
given time, but for an event-based system using the callback is far better
than relying on polling the timeout value.
Usage of \fIcurl_multi_socket(3)\fP is deprecated, whereas the function is
equivalent to \fIcurl_multi_socket_action(3)\fP, when \fBev_bitmask\fP is set
to 0.
should not exist any reasons to use this function!
.SH "CALLBACK DETAILS"
The socket \fBcallback\fP function uses a prototype like this
@@ -107,15 +111,19 @@ The \fIuserp\fP argument is a private pointer you have previously set with
.SH "RETURN VALUE"
CURLMcode type, general libcurl multi interface error code.
If you receive \fICURLM_CALL_MULTI_PERFORM\fP, this basically means that you
should call \fIcurl_multi_socket(3)\fP again, before you wait for more actions
on libcurl's sockets. You don't have to do it immediately, but the return code
means that libcurl may have more data available to return or that there may be
more data to send off before it is "satisfied".
Legacy: If you receive \fICURLM_CALL_MULTI_PERFORM\fP, this basically means
that you should call \fIcurl_multi_socket(3)\fP again, before you wait for
more actions on libcurl's sockets. You don't have to do it immediately, but
the return code means that libcurl may have more data available to return or
that there may be more data to send off before it is "satisfied".
NOTE that this only returns errors etc regarding the whole multi stack. There
might still have occurred problems on individual transfers even when this
function returns OK.
In modern libcurls, \fICURLM_CALL_MULTI_PERFORM\fP or
\fICURLM_CALL_MULTI_SOKCET\fP should not be returned and no application needs
to care about them.
NOTE that the return code is for the whole multi stack. There might still have
occurred problems on individual transfers even when one of these functions
return OK.
.SH "TYPICAL USAGE"
1. Create a multi handle

View File

@@ -14,10 +14,9 @@ An application using the libcurl multi interface should call
actions \- at most \- before proceeding.
Proceeding means either doing the socket-style timeout action: call the
\fBcurl_multi_socket(3)\fP function with the \fBsockfd\fP argument set to
CURL_SOCKET_TIMEOUT and the \fBeasy\fP argument set to CURL_EASY_TIMEOUT, or
simply calling \fBcurl_multi_perform(3)\fP if you're using the simpler and
older multi interface approach.
\fBcurl_multi_socket_action(3)\fP function with the \fBsockfd\fP argument set
to CURL_SOCKET_TIMEOUT, or call \fBcurl_multi_perform(3)\fP if you're using
the simpler and older multi interface approach.
The timeout value returned in the long \fBtimeout\fP points to, is in number
of milliseconds at this very moment. If 0, it means you should proceed

View File

@@ -21,7 +21,7 @@
.\" * $Id$
.\" **************************************************************************
.\"
.TH libcurl-errors 3 "30 Aug 2007" "libcurl 7.17.0" "libcurl errors"
.TH libcurl-errors 3 "8 Jun 2008" "libcurl 7.19.0" "libcurl errors"
.SH NAME
libcurl-errors \- error codes in libcurl
.SH DESCRIPTION
@@ -212,6 +212,10 @@ Failed to shut down the SSL connection
Socket is not ready for send/recv wait till it's ready and try again. This
return code is only returned from \fIcurl_easy_recv(3)\fP and
\fIcurl_easy_send(3)\fP (Added in 7.18.2)
.IP "CURLE_SSL_CRL_BADFILE (82)"
Failed to load CRL file (Added in 7.19.0)
.IP "CURLE_SSL_ISSUER_ERROR (83)"
Issuer check failed (Added in 7.19.0)
.IP "CURLE_OBSOLETE*"
These error codes will never be returned. They used to be used in an old libcurl
version and are currently unused.

View File

@@ -276,7 +276,7 @@ yassl
Required actions unknown
When using multiple threads you should set the CURLOPT_NOSIGNAL option to TRUE
When using multiple threads you should set the CURLOPT_NOSIGNAL option to 1
for all handles. Everything will or might work fine except that timeouts are
not honored during the DNS lookup - which you can work around by building
libcurl with c-ares support. c-ares is a library that provides asynchronous
@@ -293,12 +293,12 @@ actually does, or the remote server might return non-standard replies that
confuse the library which then confuses your program.
There's one golden rule when these things occur: set the CURLOPT_VERBOSE
option to TRUE. It'll cause the library to spew out the entire protocol
option to 1. It'll cause the library to spew out the entire protocol
details it sends, some internal info and some received protocol data as well
(especially when using FTP). If you're using HTTP, adding the headers in the
received output to study is also a clever way to get a better understanding
why the server behaves the way it does. Include headers in the normal body
output with CURLOPT_HEADER set TRUE.
output with CURLOPT_HEADER set 1.
Of course there are bugs left. We need to get to know about them to be able
to fix them, so we're quite dependent on your bug reports! When you do report
@@ -343,7 +343,7 @@ between the application and the callback.
Tell libcurl that we want to upload:
curl_easy_setopt(easyhandle, CURLOPT_UPLOAD, TRUE);
curl_easy_setopt(easyhandle, CURLOPT_UPLOAD, 1L);
A few protocols won't behave properly when uploads are done without any prior
knowledge of the expected file size. So, set the upload file size using the
@@ -398,7 +398,7 @@ use for a particular host. As an extension to the normal functionality,
libcurl also supports this file for non-FTP protocols such as HTTP. To make
curl use this file, use the CURLOPT_NETRC option:
curl_easy_setopt(easyhandle, CURLOPT_NETRC, TRUE);
curl_easy_setopt(easyhandle, CURLOPT_NETRC, 1L);
And a very basic example of how such a .netrc file may look like:
@@ -486,7 +486,7 @@ then passing that list to libcurl.
curl_easy_setopt(easyhandle, CURLOPT_POSTFIELDS, binaryptr);
/* set the size of the postfields data */
curl_easy_setopt(easyhandle, CURLOPT_POSTFIELDSIZE, 23);
curl_easy_setopt(easyhandle, CURLOPT_POSTFIELDSIZE, 23L);
/* pass our list of custom made headers */
curl_easy_setopt(easyhandle, CURLOPT_HTTPHEADER, headers);
@@ -563,7 +563,7 @@ curl to go back to a plain GET request if you intend to do such a one as your
next request. You force an easyhandle to back to GET by using the
CURLOPT_HTTPGET option:
curl_easy_setopt(easyhandle, CURLOPT_HTTPGET, TRUE);
curl_easy_setopt(easyhandle, CURLOPT_HTTPGET, 1L);
Just setting CURLOPT_POSTFIELDS to "" or NULL will *not* stop libcurl from
doing a POST. It will just make it POST without any data to send!
@@ -575,7 +575,7 @@ that can be switched on and then makes it presents a progress meter in your
terminal.
Switch on the progress meter by, oddly enough, set CURLOPT_NOPROGRESS to
FALSE. This option is set to TRUE by default.
zero. This option is set to 1 by default.
For most applications however, the built-in progress meter is useless and
what instead is interesting is the ability to specify a progress
@@ -725,7 +725,7 @@ rarely allowed.
Tell libcurl to use proxy tunneling like this:
curl_easy_setopt(easyhandle, CURLOPT_HTTPPROXYTUNNEL, TRUE);
curl_easy_setopt(easyhandle, CURLOPT_HTTPPROXYTUNNEL, 1L);
In fact, there might even be times when you want to do plain HTTP
operations using a tunnel like this, as it then enables you to operate on
@@ -790,9 +790,9 @@ just a matter of thinking again.
To force your upcoming request to not use an already existing connection (it
will even close one first if there happens to be one alive to the same host
you're about to operate on), you can do that by setting CURLOPT_FRESH_CONNECT
to TRUE. In a similar spirit, you can also forbid the upcoming request to be
to 1. In a similar spirit, you can also forbid the upcoming request to be
"lying" around and possibly get re-used after the request by setting
CURLOPT_FORBID_REUSE to TRUE.
CURLOPT_FORBID_REUSE to 1.
.SH "HTTP Headers Used by libcurl"
When you use libcurl to do HTTP requests, it'll pass along a series of headers
@@ -935,7 +935,7 @@ error code (CURLE_QUOTE_ERROR). Note that if you use CURLOPT_QUOTE to send
commands before a transfer, no transfer will actually take place when a quote
command has failed.
If you set the CURLOPT_HEADER to true, you will tell libcurl to get
If you set the CURLOPT_HEADER to 1, you will tell libcurl to get
information about the target file and output "headers" about it. The headers
will be in "HTTP-style", looking like they do in HTTP.
@@ -1015,7 +1015,7 @@ work it tries PASV instead. (EPSV is an extension to the original FTP spec
and does not exist nor work on all FTP servers.)
You can prevent libcurl from first trying the EPSV command by setting
CURLOPT_FTP_USE_EPSV to FALSE.
CURLOPT_FTP_USE_EPSV to zero.
In some cases, you will prefer to have the server connect back to you for the
second connection. This might be when the server is perhaps behind a firewall
@@ -1029,14 +1029,14 @@ from.
When doing the "PORT" approach, libcurl will attempt to use the EPRT and the
LPRT before trying PORT, as they work with more protocols. You can disable
this behavior by setting CURLOPT_FTP_USE_EPRT to FALSE.
this behavior by setting CURLOPT_FTP_USE_EPRT to zero.
.SH "Headers Equal Fun"
Some protocols provide "headers", meta-data separated from the normal
data. These headers are by default not included in the normal data stream,
but you can make them appear in the data stream by setting CURLOPT_HEADER to
TRUE.
1.
What might be even more useful, is libcurl's ability to separate the headers
from the data and thus make the callbacks differ. You can for example set a

View File

@@ -7,7 +7,7 @@
Include files for libcurl, external users.
They're all placed in the curl subdirectory here for better fit in any kind
of environment. You should include files from here using...
of environment. You must include files from here using...
#include <curl/curl.h>
@@ -16,14 +16,31 @@ curl subdirectory. It makes it more likely to survive future modifications.
NOTE FOR LIBCURL HACKERS
All the include files in this tree are written and intended to be installed on
a system that may serve multiple platforms and multiple applications, all
using libcurl (possibly even different libcurl installations using different
versions). Therefore, all header files in here must obey these rules:
The following notes apply to libcurl version 7.19.0 and later.
* They cannot depend on or use configure-generated results from libcurl's or
curl's directories. Other applications may not run configure as (lib)curl
does, and using platform dependent info here may break other platforms.
* The distributed curl/curlbuild.h file is only intended to be used on systems
which can not run the also distributed configure script.
* The distributed curlbuild.h file is generated as a copy of curlbuild.h.dist
when the libcurl source code distribution archive file is originally created.
* If you check out from CVS on a non-configure platform, you must run the
appropriate buildconf* script to set up curlbuild.h and other local files
before being able of compiling the library.
* On systems capable of running the configure script, the configure process
will overwrite the distributed include/curl/curlbuild.h file with one that
is suitable and specific to the library being configured and built, which
is generated from the include/curl/curlbuild.h.in template file.
* If you intend to distribute an already compiled libcurl library you _MUST_
also distribute along with it the generated curl/curlbuild.h which has been
used to compile it. Otherwise the library will be of no use for the users of
the library that you have built. It is _your_ responsability to provide this
file. No one at the cURL project can know how you have built the library.
* File curl/curlbuild.h includes platform and configuration dependant info,
and must not be modified by anyone. Configure script generates it for you.
* We cannot assume anything else but very basic compiler features being
present. While libcurl requires an ANSI C compiler to build, some of the

View File

@@ -1,3 +1,5 @@
Makefile
Makefile.in
*.dist
curlbuild.h
curlver.h.dist
stamp-*

View File

@@ -1,6 +1,25 @@
pkginclude_HEADERS = \
curl.h curlver.h easy.h mprintf.h stdcheaders.h types.h multi.h \
typecheck-gcc.h
typecheck-gcc.h curlbuild.h curlrules.h
pkgincludedir= $(includedir)/curl
CLEANFILES = *dist
# curlbuild.h does not exist in the CVS tree. When the original libcurl
# source code distribution archive file is created, curlbuild.h.dist is
# renamed to curlbuild.h and included in the tarball so that it can be
# used directly on non-configure systems.
#
# The distributed curlbuild.h will be overwritten on configure systems
# when the configure script runs, with one that is suitable and specific
# to the library being configured and built.
#
# curlbuild.h.in is the distributed template file from which the configure
# script creates curlbuild.h at library configuration time, overwiting the
# one included in the distribution archive.
#
# curlbuild.h.dist is not included in the source code distribution archive.
EXTRA_DIST = curlbuild.h.in
DISTCLEANFILES = curlbuild.h

View File

@@ -23,11 +23,17 @@
* $Id$
***************************************************************************/
/* If you have problems, all libcurl docs and details are found here:
http://curl.haxx.se/libcurl/
*/
/*
* If you have libcurl problems, all docs and details are found here:
* http://curl.haxx.se/libcurl/
*
* curl-library mailing list subscription and unsubscription web interface:
* http://cool.haxx.se/mailman/listinfo/curl-library/
*/
#include "curlver.h" /* the libcurl version defines */
#include "curlver.h" /* libcurl version defines */
#include "curl/curlbuild.h" /* libcurl build definitions */
#include "curlrules.h" /* libcurl rules enforcement */
/*
* Define WIN32 when build target is Win32 API
@@ -64,14 +70,14 @@
libc5-based Linux systems. Only include it on system that are known to
require it! */
#if defined(_AIX) || defined(__NOVELL_LIBC__) || defined(__NetBSD__) || \
defined(__minix) || defined(__SYMBIAN32__)
defined(__minix) || defined(__SYMBIAN32__) || defined(__INTEGRITY)
#include <sys/select.h>
#endif
#ifndef _WIN32_WCE
#include <sys/socket.h>
#endif
#ifndef __WATCOMC__
#if !defined(WIN32) && !defined(__WATCOMC__)
#include <sys/time.h>
#endif
#include <sys/types.h>
@@ -113,74 +119,6 @@ typedef void CURL;
#endif
#endif
/*
* We want the typedef curl_off_t setup for large file support on all
* platforms. We also provide a CURL_FORMAT_OFF_T define to use in *printf
* format strings when outputting a variable of type curl_off_t.
*
* Note: "pocc -Ze" is MSVC compatibility mode and this sets _MSC_VER!
*/
#if (defined(_MSC_VER) && !defined(__POCC__)) || (defined(__LCC__) && \
defined(WIN32))
/* MSVC */
#ifdef _WIN32_WCE
typedef long curl_off_t;
#define CURL_FORMAT_OFF_T "%ld"
#else
typedef signed __int64 curl_off_t;
#define CURL_FORMAT_OFF_T "%I64d"
#endif
#else /* (_MSC_VER && !__POCC__) || (__LCC__ && WIN32) */
#if (defined(__GNUC__) && defined(WIN32)) || defined(__WATCOMC__)
/* gcc on windows or Watcom */
typedef long long curl_off_t;
#define CURL_FORMAT_OFF_T "%I64d"
#else /* GCC or Watcom on Windows */
#if defined(__ILEC400__)
/* OS400 C compiler. */
typedef long long curl_off_t;
#define CURL_FORMAT_OFF_T "%lld"
#else /* OS400 C compiler. */
/* "normal" POSIX approach, do note that this does not necessarily mean that
the type is >32 bits, see the SIZEOF_CURL_OFF_T define for that! */
typedef off_t curl_off_t;
/* Check a range of defines to detect large file support. On Linux it seems
none of these are set by default, so if you don't explicitly switches on
large file support, this define will be made for "small file" support. */
#ifndef _FILE_OFFSET_BITS
#define _FILE_OFFSET_BITS 0 /* to prevent warnings in the check below */
#define UNDEF_FILE_OFFSET_BITS
#endif
#ifndef FILESIZEBITS
#define FILESIZEBITS 0 /* to prevent warnings in the check below */
#define UNDEF_FILESIZEBITS
#endif
#if defined(_LARGE_FILES) || (_FILE_OFFSET_BITS > 32) || (FILESIZEBITS > 32) \
|| defined(_LARGEFILE_SOURCE) || defined(_LARGEFILE64_SOURCE)
/* For now, we assume at least one of these to be set for large files to
work! */
#define CURL_FORMAT_OFF_T "%lld"
#else /* LARGE_FILE support */
#define CURL_FORMAT_OFF_T "%ld"
#endif
#endif /* OS400 C compiler. */
#endif /* GCC or Watcom on Windows */
#endif /* (_MSC_VER && !__POCC__) || (__LCC__ && WIN32) */
#ifdef UNDEF_FILE_OFFSET_BITS
/* this was defined above for our checks, undefine it again */
#undef _FILE_OFFSET_BITS
#endif
#ifdef UNDEF_FILESIZEBITS
/* this was defined above for our checks, undefine it again */
#undef FILESIZEBITS
#endif
#ifndef curl_socket_typedef
/* socket typedef */
#ifdef WIN32
@@ -452,7 +390,12 @@ typedef enum {
CURLE_SSL_SHUTDOWN_FAILED, /* 80 - Failed to shut down the SSL
connection */
CURLE_AGAIN, /* 81 - socket is not ready for send/recv,
wait till it's ready and try again */
wait till it's ready and try again (Added
in 7.18.2) */
CURLE_SSL_CRL_BADFILE, /* 82 - could not load CRL file, missing or
wrong format (Added in 7.19.0) */
CURLE_SSL_ISSUER_ERROR, /* 83 - Issuer check failed. (Added in
7.19.0) */
CURL_LAST /* never use! */
} CURLcode;
@@ -605,23 +548,6 @@ typedef enum {
#ifdef CINIT
#undef CINIT
#endif
/*
* Figure out if we can use the ## operator, which is supported by ISO/ANSI C
* and C++. Some compilers support it without setting __STDC__ or __cplusplus
* so we need to carefully check for them too. We don't use configure-checks
* for these since we want these headers to remain generic and working for all
* platforms.
*/
#if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus) || \
defined(__HP_aCC) || defined(__BORLANDC__) || defined(__LCC__) || \
defined(__POCC__) || defined(__SALFORDC__) || defined(__HIGHC__) || \
defined(__ILEC400__)
/* This compiler is believed to have an ISO compatible preprocessor */
#define CURL_ISOCPP
#else
/* This compiler is believed NOT to have an ISO compatible preprocessor */
#undef CURL_ISOCPP
#endif
#ifdef CURL_ISOCPP
#define CINIT(name,type,number) CURLOPT_ ## name = CURLOPTTYPE_ ## type + number
@@ -732,7 +658,7 @@ typedef enum {
/* This points to a linked list of headers, struct curl_slist kind */
CINIT(HTTPHEADER, OBJECTPOINT, 23),
/* This points to a linked list of post entries, struct HttpPost */
/* This points to a linked list of post entries, struct curl_httppost */
CINIT(HTTPPOST, OBJECTPOINT, 24),
/* name of the file keeping your private SSL-certificate */
@@ -1200,6 +1126,15 @@ typedef enum {
CINIT(SEEKFUNCTION, FUNCTIONPOINT, 167),
CINIT(SEEKDATA, OBJECTPOINT, 168),
/* CRL file */
CINIT(CRLFILE, OBJECTPOINT, 169),
/* Issuer certificate */
CINIT(ISSUERCERT, OBJECTPOINT, 170),
/* (IPv6) Address scope */
CINIT(ADDRESS_SCOPE, LONG, 171),
CURLOPT_LASTENTRY /* the last unused */
} CURLoption;
@@ -1349,7 +1284,7 @@ struct curl_forms {
* CURL_FORMADD_MEMORY if the allocation of a FormInfo struct failed
* CURL_FORMADD_UNKNOWN_OPTION if an unknown option was used
* CURL_FORMADD_INCOMPLETE if the some FormInfo is not complete (or error)
* CURL_FORMADD_MEMORY if a HttpPost struct cannot be allocated
* CURL_FORMADD_MEMORY if a curl_httppost struct cannot be allocated
* CURL_FORMADD_MEMORY if some allocation for string copying failed.
* CURL_FORMADD_ILLEGAL_ARRAY if an illegal option is used in an array
*
@@ -1596,9 +1531,11 @@ typedef enum {
CURLINFO_LASTSOCKET = CURLINFO_LONG + 29,
CURLINFO_FTP_ENTRY_PATH = CURLINFO_STRING + 30,
CURLINFO_REDIRECT_URL = CURLINFO_STRING + 31,
CURLINFO_PRIMARY_IP = CURLINFO_STRING + 32,
CURLINFO_APPCONNECT_TIME = CURLINFO_DOUBLE + 33,
/* Fill in new entries below here! */
CURLINFO_LASTONE = 31
CURLINFO_LASTONE = 33
} CURLINFO;
/* CURLINFO_RESPONSE_CODE is the new name for the option previously known as

View File

@@ -0,0 +1,502 @@
#ifndef __CURL_CURLBUILD_H
#define __CURL_CURLBUILD_H
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at http://curl.haxx.se/docs/copyright.html.
*
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
* copies of the Software, and permit persons to whom the Software is
* furnished to do so, under the terms of the COPYING file.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
* $Id$
***************************************************************************/
/* ================================================================ */
/* NOTES FOR CONFIGURE CAPABLE SYSTEMS */
/* ================================================================ */
/*
* NOTE 1:
* -------
*
* See file include/curl/curlbuild.h.in, run configure, and forget
* that this file exists it is only used for non-configure systems.
* But you can keep reading if you want ;-)
*
*/
/* ================================================================ */
/* NOTES FOR NON-CONFIGURE SYSTEMS */
/* ================================================================ */
/*
* NOTE 1:
* -------
*
* Nothing in this file is intended to be modified or adjusted by the
* curl library user nor by the curl library builder.
*
* If you think that something actually needs to be changed, adjusted
* or fixed in this file, then, report it on the libcurl development
* mailing list: http://cool.haxx.se/mailman/listinfo/curl-library/
*
* Try to keep one section per platform, compiler and architecture,
* otherwise, if an existing section is reused for a different one and
* later on the original is adjusted, probably the piggybacking one can
* be adversely changed.
*
* In order to differentiate between platforms/compilers/architectures
* use only compiler built in predefined preprocessor symbols.
*
* This header file shall only export symbols which are 'curl' or 'CURL'
* prefixed, otherwise public name space would be polluted.
*
* NOTE 2:
* -------
*
* For any given platform/compiler curl_off_t must be typedef'ed to a
* 64-bit wide signed integral data type. The width of this data type
* must remain constant and independant of any possible large file
* support settings.
*
* As an exception to the above, curl_off_t shall be typedef'ed to a
* 32-bit wide signed integral data type if there is no 64-bit type.
*
* As a general rule, curl_off_t shall not be mapped to off_t. This
* rule shall only be violated if off_t is the only 64-bit data type
* available and the size of off_t is independant of large file support
* settings. Keep your build on the safe side avoiding an off_t gating.
* If you have a 64-bit off_t then take for sure that another 64-bit
* data type exists, dig deeper and you will find it.
*
* NOTE 3:
* -------
*
* Right now you might be staring at file include/curl/curlbuild.h.dist or
* at file include/curl/curlbuild.h, this is due to the following reason:
* file include/curl/curlbuild.h.dist is renamed to include/curl/curlbuild.h
* when the libcurl source code distribution archive file is created.
*
* File include/curl/curlbuild.h.dist is not included in the distribution
* archive. File include/curl/curlbuild.h is not present in the CVS tree.
*
* The distributed include/curl/curlbuild.h file is only intended to be used
* on systems which can not run the also distributed configure script.
*
* On systems capable of running the configure script, the configure process
* will overwrite the distributed include/curl/curlbuild.h file with one that
* is suitable and specific to the library being configured and built, which
* is generated from the include/curl/curlbuild.h.in template file.
*
* If you check out from CVS on a non-configure platform, you must run the
* appropriate buildconf* script to set up curlbuild.h and other local files.
*
*/
/* ================================================================ */
/* DEFINITION OF THESE SYMBOLS SHALL NOT TAKE PLACE ANYWHERE ELSE */
/* ================================================================ */
#ifdef CURL_SIZEOF_LONG
# error "CURL_SIZEOF_LONG shall not be defined except in curlbuild.h"
Error Compilation_aborted_CURL_SIZEOF_LONG_already_defined
#endif
#ifdef CURL_TYPEOF_CURL_OFF_T
# error "CURL_TYPEOF_CURL_OFF_T shall not be defined except in curlbuild.h"
Error Compilation_aborted_CURL_TYPEOF_CURL_OFF_T_already_defined
#endif
#ifdef CURL_FORMAT_CURL_OFF_T
# error "CURL_FORMAT_CURL_OFF_T shall not be defined except in curlbuild.h"
Error Compilation_aborted_CURL_FORMAT_CURL_OFF_T_already_defined
#endif
#ifdef CURL_FORMAT_CURL_OFF_TU
# error "CURL_FORMAT_CURL_OFF_TU shall not be defined except in curlbuild.h"
Error Compilation_aborted_CURL_FORMAT_CURL_OFF_TU_already_defined
#endif
#ifdef CURL_FORMAT_OFF_T
# error "CURL_FORMAT_OFF_T shall not be defined except in curlbuild.h"
Error Compilation_aborted_CURL_FORMAT_OFF_T_already_defined
#endif
#ifdef CURL_SIZEOF_CURL_OFF_T
# error "CURL_SIZEOF_CURL_OFF_T shall not be defined except in curlbuild.h"
Error Compilation_aborted_CURL_SIZEOF_CURL_OFF_T_already_defined
#endif
#ifdef CURL_SUFFIX_CURL_OFF_T
# error "CURL_SUFFIX_CURL_OFF_T shall not be defined except in curlbuild.h"
Error Compilation_aborted_CURL_SUFFIX_CURL_OFF_T_already_defined
#endif
#ifdef CURL_SUFFIX_CURL_OFF_TU
# error "CURL_SUFFIX_CURL_OFF_TU shall not be defined except in curlbuild.h"
Error Compilation_aborted_CURL_SUFFIX_CURL_OFF_TU_already_defined
#endif
/* ================================================================ */
/* EXTERNAL INTERFACE SETTINGS FOR NON-CONFIGURE SYSTEMS ONLY */
/* ================================================================ */
#if defined(__DJGPP__) || defined(__GO32__)
# if defined(__DJGPP__) && (__DJGPP__ > 1)
# define CURL_SIZEOF_LONG 4
# define CURL_TYPEOF_CURL_OFF_T long long
# define CURL_FORMAT_CURL_OFF_T "lld"
# define CURL_FORMAT_CURL_OFF_TU "llu"
# define CURL_FORMAT_OFF_T "%lld"
# define CURL_SIZEOF_CURL_OFF_T 8
# define CURL_SUFFIX_CURL_OFF_T LL
# define CURL_SUFFIX_CURL_OFF_TU ULL
# else
# define CURL_SIZEOF_LONG 4
# define CURL_TYPEOF_CURL_OFF_T long
# define CURL_FORMAT_CURL_OFF_T "ld"
# define CURL_FORMAT_CURL_OFF_TU "lu"
# define CURL_FORMAT_OFF_T "%ld"
# define CURL_SIZEOF_CURL_OFF_T 4
# define CURL_SUFFIX_CURL_OFF_T L
# define CURL_SUFFIX_CURL_OFF_TU UL
# endif
#elif defined(__SALFORDC__)
# define CURL_SIZEOF_LONG 4
# define CURL_TYPEOF_CURL_OFF_T long
# define CURL_FORMAT_CURL_OFF_T "ld"
# define CURL_FORMAT_CURL_OFF_TU "lu"
# define CURL_FORMAT_OFF_T "%ld"
# define CURL_SIZEOF_CURL_OFF_T 4
# define CURL_SUFFIX_CURL_OFF_T L
# define CURL_SUFFIX_CURL_OFF_TU UL
#elif defined(__BORLANDC__)
# if (__BORLANDC__ < 0x520)
# define CURL_SIZEOF_LONG 4
# define CURL_TYPEOF_CURL_OFF_T long
# define CURL_FORMAT_CURL_OFF_T "ld"
# define CURL_FORMAT_CURL_OFF_TU "lu"
# define CURL_FORMAT_OFF_T "%ld"
# define CURL_SIZEOF_CURL_OFF_T 4
# define CURL_SUFFIX_CURL_OFF_T L
# define CURL_SUFFIX_CURL_OFF_TU UL
# else
# define CURL_SIZEOF_LONG 4
# define CURL_TYPEOF_CURL_OFF_T __int64
# define CURL_FORMAT_CURL_OFF_T "I64d"
# define CURL_FORMAT_CURL_OFF_TU "I64u"
# define CURL_FORMAT_OFF_T "%I64d"
# define CURL_SIZEOF_CURL_OFF_T 8
# define CURL_SUFFIX_CURL_OFF_T i64
# define CURL_SUFFIX_CURL_OFF_TU ui64
# endif
#elif defined(__TURBOC__)
# define CURL_SIZEOF_LONG 4
# define CURL_TYPEOF_CURL_OFF_T long
# define CURL_FORMAT_CURL_OFF_T "ld"
# define CURL_FORMAT_CURL_OFF_TU "lu"
# define CURL_FORMAT_OFF_T "%ld"
# define CURL_SIZEOF_CURL_OFF_T 4
# define CURL_SUFFIX_CURL_OFF_T L
# define CURL_SUFFIX_CURL_OFF_TU UL
#elif defined(__WATCOMC__)
# if defined(__386__)
# define CURL_SIZEOF_LONG 4
# define CURL_TYPEOF_CURL_OFF_T __int64
# define CURL_FORMAT_CURL_OFF_T "I64d"
# define CURL_FORMAT_CURL_OFF_TU "I64u"
# define CURL_FORMAT_OFF_T "%I64d"
# define CURL_SIZEOF_CURL_OFF_T 8
# define CURL_SUFFIX_CURL_OFF_T i64
# define CURL_SUFFIX_CURL_OFF_TU ui64
# else
# define CURL_SIZEOF_LONG 4
# define CURL_TYPEOF_CURL_OFF_T long
# define CURL_FORMAT_CURL_OFF_T "ld"
# define CURL_FORMAT_CURL_OFF_TU "lu"
# define CURL_FORMAT_OFF_T "%ld"
# define CURL_SIZEOF_CURL_OFF_T 4
# define CURL_SUFFIX_CURL_OFF_T L
# define CURL_SUFFIX_CURL_OFF_TU UL
# endif
#elif defined(__POCC__)
# if (__POCC__ < 280)
# define CURL_SIZEOF_LONG 4
# define CURL_TYPEOF_CURL_OFF_T long
# define CURL_FORMAT_CURL_OFF_T "ld"
# define CURL_FORMAT_CURL_OFF_TU "lu"
# define CURL_FORMAT_OFF_T "%ld"
# define CURL_SIZEOF_CURL_OFF_T 4
# define CURL_SUFFIX_CURL_OFF_T L
# define CURL_SUFFIX_CURL_OFF_TU UL
# elif defined(_MSC_VER)
# define CURL_SIZEOF_LONG 4
# define CURL_TYPEOF_CURL_OFF_T __int64
# define CURL_FORMAT_CURL_OFF_T "I64d"
# define CURL_FORMAT_CURL_OFF_TU "I64u"
# define CURL_FORMAT_OFF_T "%I64d"
# define CURL_SIZEOF_CURL_OFF_T 8
# define CURL_SUFFIX_CURL_OFF_T i64
# define CURL_SUFFIX_CURL_OFF_TU ui64
# else
# define CURL_SIZEOF_LONG 4
# define CURL_TYPEOF_CURL_OFF_T long long
# define CURL_FORMAT_CURL_OFF_T "lld"
# define CURL_FORMAT_CURL_OFF_TU "llu"
# define CURL_FORMAT_OFF_T "%lld"
# define CURL_SIZEOF_CURL_OFF_T 8
# define CURL_SUFFIX_CURL_OFF_T LL
# define CURL_SUFFIX_CURL_OFF_TU ULL
# endif
#elif defined(__LCC__)
# define CURL_SIZEOF_LONG 4
# define CURL_TYPEOF_CURL_OFF_T long
# define CURL_FORMAT_CURL_OFF_T "ld"
# define CURL_FORMAT_CURL_OFF_TU "lu"
# define CURL_FORMAT_OFF_T "%ld"
# define CURL_SIZEOF_CURL_OFF_T 4
# define CURL_SUFFIX_CURL_OFF_T L
# define CURL_SUFFIX_CURL_OFF_TU UL
#elif defined(__SYMBIAN32__)
# if defined(__EABI__) /* Treat all ARM compilers equally */
# define CURL_SIZEOF_LONG 4
# define CURL_TYPEOF_CURL_OFF_T long long
# define CURL_FORMAT_CURL_OFF_T "lld"
# define CURL_FORMAT_CURL_OFF_TU "llu"
# define CURL_FORMAT_OFF_T "%lld"
# define CURL_SIZEOF_CURL_OFF_T 8
# define CURL_SUFFIX_CURL_OFF_T LL
# define CURL_SUFFIX_CURL_OFF_TU ULL
# elif defined(__CW32__)
# pragma longlong on
# define CURL_SIZEOF_LONG 4
# define CURL_TYPEOF_CURL_OFF_T long long
# define CURL_FORMAT_CURL_OFF_T "lld"
# define CURL_FORMAT_CURL_OFF_TU "llu"
# define CURL_FORMAT_OFF_T "%lld"
# define CURL_SIZEOF_CURL_OFF_T 8
# define CURL_SUFFIX_CURL_OFF_T LL
# define CURL_SUFFIX_CURL_OFF_TU ULL
# elif defined(__VC32__)
# define CURL_SIZEOF_LONG 4
# define CURL_TYPEOF_CURL_OFF_T __int64
# define CURL_FORMAT_CURL_OFF_T "lld"
# define CURL_FORMAT_CURL_OFF_TU "llu"
# define CURL_FORMAT_OFF_T "%lld"
# define CURL_SIZEOF_CURL_OFF_T 8
# define CURL_SUFFIX_CURL_OFF_T LL
# define CURL_SUFFIX_CURL_OFF_TU ULL
# endif
#elif defined(__MWERKS__)
# define CURL_SIZEOF_LONG 4
# define CURL_TYPEOF_CURL_OFF_T long long
# define CURL_FORMAT_CURL_OFF_T "lld"
# define CURL_FORMAT_CURL_OFF_TU "llu"
# define CURL_FORMAT_OFF_T "%lld"
# define CURL_SIZEOF_CURL_OFF_T 8
# define CURL_SUFFIX_CURL_OFF_T LL
# define CURL_SUFFIX_CURL_OFF_TU ULL
#elif defined(_WIN32_WCE)
# define CURL_SIZEOF_LONG 4
# define CURL_TYPEOF_CURL_OFF_T __int64
# define CURL_FORMAT_CURL_OFF_T "I64d"
# define CURL_FORMAT_CURL_OFF_TU "I64u"
# define CURL_FORMAT_OFF_T "%I64d"
# define CURL_SIZEOF_CURL_OFF_T 8
# define CURL_SUFFIX_CURL_OFF_T i64
# define CURL_SUFFIX_CURL_OFF_TU ui64
#elif defined(__MINGW32__)
# define CURL_SIZEOF_LONG 4
# define CURL_TYPEOF_CURL_OFF_T long long
# define CURL_FORMAT_CURL_OFF_T "I64d"
# define CURL_FORMAT_CURL_OFF_TU "I64u"
# define CURL_FORMAT_OFF_T "%I64d"
# define CURL_SIZEOF_CURL_OFF_T 8
# define CURL_SUFFIX_CURL_OFF_T LL
# define CURL_SUFFIX_CURL_OFF_TU ULL
#elif defined(__VMS)
# if defined(__alpha) || defined(__ia64)
# define CURL_SIZEOF_LONG 4
# define CURL_TYPEOF_CURL_OFF_T long long
# define CURL_FORMAT_CURL_OFF_T "lld"
# define CURL_FORMAT_CURL_OFF_TU "llu"
# define CURL_FORMAT_OFF_T "%lld"
# define CURL_SIZEOF_CURL_OFF_T 8
# define CURL_SUFFIX_CURL_OFF_T LL
# define CURL_SUFFIX_CURL_OFF_TU ULL
# else
# define CURL_SIZEOF_LONG 4
# define CURL_TYPEOF_CURL_OFF_T long
# define CURL_FORMAT_CURL_OFF_T "ld"
# define CURL_FORMAT_CURL_OFF_TU "lu"
# define CURL_FORMAT_OFF_T "%ld"
# define CURL_SIZEOF_CURL_OFF_T 4
# define CURL_SUFFIX_CURL_OFF_T L
# define CURL_SUFFIX_CURL_OFF_TU UL
# endif
#elif defined(__OS400__)
# if defined(__ILEC400__)
# define CURL_SIZEOF_LONG 4
# define CURL_TYPEOF_CURL_OFF_T long long
# define CURL_FORMAT_CURL_OFF_T "lld"
# define CURL_FORMAT_CURL_OFF_TU "llu"
# define CURL_FORMAT_OFF_T "%lld"
# define CURL_SIZEOF_CURL_OFF_T 8
# define CURL_SUFFIX_CURL_OFF_T LL
# define CURL_SUFFIX_CURL_OFF_TU ULL
# endif
#elif defined(__MVS__)
# if defined(__IBMC__) || defined(__IBMCPP__)
# if defined(_ILP32)
# define CURL_SIZEOF_LONG 4
# elif defined(_LP64)
# define CURL_SIZEOF_LONG 8
# endif
# if defined(_LONG_LONG)
# define CURL_TYPEOF_CURL_OFF_T long long
# define CURL_FORMAT_CURL_OFF_T "lld"
# define CURL_FORMAT_CURL_OFF_TU "llu"
# define CURL_FORMAT_OFF_T "%lld"
# define CURL_SIZEOF_CURL_OFF_T 8
# define CURL_SUFFIX_CURL_OFF_T LL
# define CURL_SUFFIX_CURL_OFF_TU ULL
# elif defined(_LP64)
# define CURL_TYPEOF_CURL_OFF_T long
# define CURL_FORMAT_CURL_OFF_T "ld"
# define CURL_FORMAT_CURL_OFF_TU "lu"
# define CURL_FORMAT_OFF_T "%ld"
# define CURL_SIZEOF_CURL_OFF_T 8
# define CURL_SUFFIX_CURL_OFF_T L
# define CURL_SUFFIX_CURL_OFF_TU UL
# else
# define CURL_TYPEOF_CURL_OFF_T long
# define CURL_FORMAT_CURL_OFF_T "ld"
# define CURL_FORMAT_CURL_OFF_TU "lu"
# define CURL_FORMAT_OFF_T "%ld"
# define CURL_SIZEOF_CURL_OFF_T 4
# define CURL_SUFFIX_CURL_OFF_T L
# define CURL_SUFFIX_CURL_OFF_TU UL
# endif
# endif
#elif defined(__370__)
# if defined(__IBMC__) || defined(__IBMCPP__)
# if defined(_ILP32)
# define CURL_SIZEOF_LONG 4
# elif defined(_LP64)
# define CURL_SIZEOF_LONG 8
# endif
# if defined(_LONG_LONG)
# define CURL_TYPEOF_CURL_OFF_T long long
# define CURL_FORMAT_CURL_OFF_T "lld"
# define CURL_FORMAT_CURL_OFF_TU "llu"
# define CURL_FORMAT_OFF_T "%lld"
# define CURL_SIZEOF_CURL_OFF_T 8
# define CURL_SUFFIX_CURL_OFF_T LL
# define CURL_SUFFIX_CURL_OFF_TU ULL
# elif defined(_LP64)
# define CURL_TYPEOF_CURL_OFF_T long
# define CURL_FORMAT_CURL_OFF_T "ld"
# define CURL_FORMAT_CURL_OFF_TU "lu"
# define CURL_FORMAT_OFF_T "%ld"
# define CURL_SIZEOF_CURL_OFF_T 8
# define CURL_SUFFIX_CURL_OFF_T L
# define CURL_SUFFIX_CURL_OFF_TU UL
# else
# define CURL_TYPEOF_CURL_OFF_T long
# define CURL_FORMAT_CURL_OFF_T "ld"
# define CURL_FORMAT_CURL_OFF_TU "lu"
# define CURL_FORMAT_OFF_T "%ld"
# define CURL_SIZEOF_CURL_OFF_T 4
# define CURL_SUFFIX_CURL_OFF_T L
# define CURL_SUFFIX_CURL_OFF_TU UL
# endif
# endif
/* ===================================== */
/* KEEP MSVC THE PENULTIMATE ENTRY */
/* ===================================== */
#elif defined(_MSC_VER)
# if (_MSC_VER >= 900) && (_INTEGRAL_MAX_BITS >= 64)
# define CURL_SIZEOF_LONG 4
# define CURL_TYPEOF_CURL_OFF_T __int64
# define CURL_FORMAT_CURL_OFF_T "I64d"
# define CURL_FORMAT_CURL_OFF_TU "I64u"
# define CURL_FORMAT_OFF_T "%I64d"
# define CURL_SIZEOF_CURL_OFF_T 8
# define CURL_SUFFIX_CURL_OFF_T i64
# define CURL_SUFFIX_CURL_OFF_TU ui64
# else
# define CURL_SIZEOF_LONG 4
# define CURL_TYPEOF_CURL_OFF_T long
# define CURL_FORMAT_CURL_OFF_T "ld"
# define CURL_FORMAT_CURL_OFF_TU "lu"
# define CURL_FORMAT_OFF_T "%ld"
# define CURL_SIZEOF_CURL_OFF_T 4
# define CURL_SUFFIX_CURL_OFF_T L
# define CURL_SUFFIX_CURL_OFF_TU UL
# endif
/* ===================================== */
/* KEEP GENERIC GCC THE LAST ENTRY */
/* ===================================== */
#elif defined(__GNUC__)
# if defined(__i386__)
# define CURL_SIZEOF_LONG 4
# define CURL_TYPEOF_CURL_OFF_T long long
# define CURL_FORMAT_CURL_OFF_T "lld"
# define CURL_FORMAT_CURL_OFF_TU "llu"
# define CURL_FORMAT_OFF_T "%lld"
# define CURL_SIZEOF_CURL_OFF_T 8
# define CURL_SUFFIX_CURL_OFF_T LL
# define CURL_SUFFIX_CURL_OFF_TU ULL
# elif defined(__x86_64__)
# define CURL_SIZEOF_LONG 8
# define CURL_TYPEOF_CURL_OFF_T long
# define CURL_FORMAT_CURL_OFF_T "ld"
# define CURL_FORMAT_CURL_OFF_TU "lu"
# define CURL_FORMAT_OFF_T "%ld"
# define CURL_SIZEOF_CURL_OFF_T 8
# define CURL_SUFFIX_CURL_OFF_T L
# define CURL_SUFFIX_CURL_OFF_TU UL
# endif
#else
# error "Unknown non-configure build target!"
Error Compilation_aborted_Unknown_non_configure_build_target
#endif
/* Data type definition of curl_off_t. */
#ifdef CURL_TYPEOF_CURL_OFF_T
typedef CURL_TYPEOF_CURL_OFF_T curl_off_t;
#endif
#endif /* __CURL_CURLBUILD_H */

153
include/curl/curlbuild.h.in Normal file
View File

@@ -0,0 +1,153 @@
#ifndef __CURL_CURLBUILD_H
#define __CURL_CURLBUILD_H
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at http://curl.haxx.se/docs/copyright.html.
*
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
* copies of the Software, and permit persons to whom the Software is
* furnished to do so, under the terms of the COPYING file.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
* $Id$
***************************************************************************/
/* ================================================================ */
/* NOTES FOR CONFIGURE CAPABLE SYSTEMS */
/* ================================================================ */
/*
* NOTE 1:
* -------
*
* Nothing in this file is intended to be modified or adjusted by the
* curl library user nor by the curl library builder.
*
* If you think that something actually needs to be changed, adjusted
* or fixed in this file, then, report it on the libcurl development
* mailing list: http://cool.haxx.se/mailman/listinfo/curl-library/
*
* This header file shall only export symbols which are 'curl' or 'CURL'
* prefixed, otherwise public name space would be polluted.
*
* NOTE 2:
* -------
*
* Right now you might be staring at file include/curl/curlbuild.h.in or
* at file include/curl/curlbuild.h, this is due to the following reason:
*
* On systems capable of running the configure script, the configure process
* will overwrite the distributed include/curl/curlbuild.h file with one that
* is suitable and specific to the library being configured and built, which
* is generated from the include/curl/curlbuild.h.in template file.
*
*/
/* ================================================================ */
/* DEFINITION OF THESE SYMBOLS SHALL NOT TAKE PLACE ANYWHERE ELSE */
/* ================================================================ */
#ifdef CURL_SIZEOF_LONG
# error "CURL_SIZEOF_LONG shall not be defined except in curlbuild.h"
Error Compilation_aborted_CURL_SIZEOF_LONG_already_defined
#endif
#ifdef CURL_TYPEOF_CURL_OFF_T
# error "CURL_TYPEOF_CURL_OFF_T shall not be defined except in curlbuild.h"
Error Compilation_aborted_CURL_TYPEOF_CURL_OFF_T_already_defined
#endif
#ifdef CURL_FORMAT_CURL_OFF_T
# error "CURL_FORMAT_CURL_OFF_T shall not be defined except in curlbuild.h"
Error Compilation_aborted_CURL_FORMAT_CURL_OFF_T_already_defined
#endif
#ifdef CURL_FORMAT_CURL_OFF_TU
# error "CURL_FORMAT_CURL_OFF_TU shall not be defined except in curlbuild.h"
Error Compilation_aborted_CURL_FORMAT_CURL_OFF_TU_already_defined
#endif
#ifdef CURL_FORMAT_OFF_T
# error "CURL_FORMAT_OFF_T shall not be defined except in curlbuild.h"
Error Compilation_aborted_CURL_FORMAT_OFF_T_already_defined
#endif
#ifdef CURL_SIZEOF_CURL_OFF_T
# error "CURL_SIZEOF_CURL_OFF_T shall not be defined except in curlbuild.h"
Error Compilation_aborted_CURL_SIZEOF_CURL_OFF_T_already_defined
#endif
#ifdef CURL_SUFFIX_CURL_OFF_T
# error "CURL_SUFFIX_CURL_OFF_T shall not be defined except in curlbuild.h"
Error Compilation_aborted_CURL_SUFFIX_CURL_OFF_T_already_defined
#endif
#ifdef CURL_SUFFIX_CURL_OFF_TU
# error "CURL_SUFFIX_CURL_OFF_TU shall not be defined except in curlbuild.h"
Error Compilation_aborted_CURL_SUFFIX_CURL_OFF_TU_already_defined
#endif
/* ================================================================ */
/* EXTERNAL INTERFACE SETTINGS FOR CONFIGURE CAPABLE SYSTEMS ONLY */
/* ================================================================ */
/* Configure process defines this to 1 when it finds out that system */
/* header file sys/types.h must be included by the external interface. */
#undef CURL_PULL_SYS_TYPES_H
#ifdef CURL_PULL_SYS_TYPES_H
# include <sys/types.h>
#endif
/* Configure process defines this to 1 when it finds out that system */
/* header file stdint.h must be included by the external interface. */
#undef CURL_PULL_STDINT_H
#ifdef CURL_PULL_STDINT_H
# include <stdint.h>
#endif
/* Configure process defines this to 1 when it finds out that system */
/* header file inttypes.h must be included by the external interface. */
#undef CURL_PULL_INTTYPES_H
#ifdef CURL_PULL_INTTYPES_H
# include <inttypes.h>
#endif
/* The size of `long', as computed by sizeof. */
#undef CURL_SIZEOF_LONG
/* Signed integral data type used for curl_off_t. */
#undef CURL_TYPEOF_CURL_OFF_T
/* Data type definition of curl_off_t. */
typedef CURL_TYPEOF_CURL_OFF_T curl_off_t;
/* curl_off_t formatting string directive without "%" conversion specifier. */
#undef CURL_FORMAT_CURL_OFF_T
/* unsigned curl_off_t formatting string without "%" conversion specifier. */
#undef CURL_FORMAT_CURL_OFF_TU
/* curl_off_t formatting string directive with "%" conversion specifier. */
#undef CURL_FORMAT_OFF_T
/* The size of `curl_off_t', as computed by sizeof. */
#undef CURL_SIZEOF_CURL_OFF_T
/* curl_off_t constant suffix. */
#undef CURL_SUFFIX_CURL_OFF_T
/* unsigned curl_off_t constant suffix. */
#undef CURL_SUFFIX_CURL_OFF_TU
#endif /* __CURL_CURLBUILD_H */

216
include/curl/curlrules.h Normal file
View File

@@ -0,0 +1,216 @@
#ifndef __CURL_CURLRULES_H
#define __CURL_CURLRULES_H
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at http://curl.haxx.se/docs/copyright.html.
*
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
* copies of the Software, and permit persons to whom the Software is
* furnished to do so, under the terms of the COPYING file.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
* $Id$
***************************************************************************/
/* ================================================================ */
/* COMPILE TIME SANITY CHECKS */
/* ================================================================ */
/*
* NOTE 1:
* -------
*
* All checks done in this file are intentionally placed in a public
* header file which is pulled by curl/curl.h when an application is
* being built using an already built libcurl library. Additionally
* this file is also included and used when building the library.
*
* If compilation fails on this file it is certainly sure that the
* problem is elsewhere. It could be a problem in the curlbuild.h
* header file, or simply that you are using different compilation
* settings than those used to build the library.
*
* Nothing in this file is intended to be modified or adjusted by the
* curl library user nor by the curl library builder.
*
* Do not deactivate any check, these are done to make sure that the
* library is properly built and used.
*
* You can find further help on the libcurl development mailing list:
* http://cool.haxx.se/mailman/listinfo/curl-library/
*
* NOTE 2
* ------
*
* Some of the following compile time checks are based on the fact
* that the dimension of a constant array can not be a negative one.
* In this way if the compile time verification fails, the compilation
* will fail issuing an error. The error description wording is compiler
* dependant but it will be quite similar to one of the following:
*
* "negative subscript or subscript is too large"
* "array must have at least one element"
* "-1 is an illegal array size"
* "size of array is negative"
*
* If you are building an application which tries to use an already
* built libcurl library and you are getting this kind of errors on
* this file, it is a clear indication that there is a mismatch between
* how the library was built and how you are trying to use it for your
* application. Your already compiled or binary library provider is the
* only one who can give you the details you need to properly use it.
*/
/*
* Verify that some macros are actually defined.
*/
#ifndef CURL_SIZEOF_LONG
# error "CURL_SIZEOF_LONG definition is missing!"
Error Compilation_aborted_CURL_SIZEOF_LONG_is_missing
#endif
#ifndef CURL_TYPEOF_CURL_OFF_T
# error "CURL_TYPEOF_CURL_OFF_T definition is missing!"
Error Compilation_aborted_CURL_TYPEOF_CURL_OFF_T_is_missing
#endif
#ifndef CURL_FORMAT_CURL_OFF_T
# error "CURL_FORMAT_CURL_OFF_T definition is missing!"
Error Compilation_aborted_CURL_FORMAT_CURL_OFF_T_is_missing
#endif
#ifndef CURL_FORMAT_CURL_OFF_TU
# error "CURL_FORMAT_CURL_OFF_TU definition is missing!"
Error Compilation_aborted_CURL_FORMAT_CURL_OFF_TU_is_missing
#endif
#ifndef CURL_FORMAT_OFF_T
# error "CURL_FORMAT_OFF_T definition is missing!"
Error Compilation_aborted_CURL_FORMAT_OFF_T_is_missing
#endif
#ifndef CURL_SIZEOF_CURL_OFF_T
# error "CURL_SIZEOF_CURL_OFF_T definition is missing!"
Error Compilation_aborted_CURL_SIZEOF_CURL_OFF_T_is_missing
#endif
#ifndef CURL_SUFFIX_CURL_OFF_T
# error "CURL_SUFFIX_CURL_OFF_T definition is missing!"
Error Compilation_aborted_CURL_SUFFIX_CURL_OFF_T_is_missing
#endif
#ifndef CURL_SUFFIX_CURL_OFF_TU
# error "CURL_SUFFIX_CURL_OFF_TU definition is missing!"
Error Compilation_aborted_CURL_SUFFIX_CURL_OFF_TU_is_missing
#endif
/*
* Macros private to this header file.
*/
#define CurlchkszEQ(t, s) sizeof(t) == s ? 1 : -1
#define CurlchkszGE(t1, t2) sizeof(t1) >= sizeof(t2) ? 1 : -1
/*
* Verify that the size previously defined and expected for long
* is the same as the one reported by sizeof() at compile time.
*/
typedef char
__curl_rule_01__
[CurlchkszEQ(long, CURL_SIZEOF_LONG)];
/*
* Verify that the size previously defined and expected for
* curl_off_t is actually the the same as the one reported
* by sizeof() at compile time.
*/
typedef char
__curl_rule_02__
[CurlchkszEQ(curl_off_t, CURL_SIZEOF_CURL_OFF_T)];
/*
* Verify at compile time that the size of curl_off_t as reported
* by sizeof() is greater or equal than the one reported for long
* for the current compilation.
*/
typedef char
__curl_rule_03__
[CurlchkszGE(curl_off_t, long)];
/* ================================================================ */
/* EXTERNALLY AND INTERNALLY VISIBLE DEFINITIONS */
/* ================================================================ */
/*
* CURL_ISOCPP and CURL_OFF_T_C definitions are done here in order to allow
* these to be visible and exported by the external libcurl interface API,
* while also making them visible to the library internals, simply including
* setup.h, without actually needing to include curl.h internally.
* If some day this section would grow big enough, all this should be moved
* to its own header file.
*/
/*
* Figure out if we can use the ## preprocessor operator, which is supported
* by ISO/ANSI C and C++. Some compilers support it without setting __STDC__
* or __cplusplus so we need to carefully check for them too.
*/
#if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus) || \
defined(__HP_aCC) || defined(__BORLANDC__) || defined(__LCC__) || \
defined(__POCC__) || defined(__SALFORDC__) || defined(__HIGHC__) || \
defined(__ILEC400__)
/* This compiler is believed to have an ISO compatible preprocessor */
#define CURL_ISOCPP
#else
/* This compiler is believed NOT to have an ISO compatible preprocessor */
#undef CURL_ISOCPP
#endif
/*
* Macros for minimum-width signed and unsigned curl_off_t integer constants.
*/
#ifdef CURL_ISOCPP
# define __CURL_OFF_T_C_HELPER2(Val,Suffix) Val ## Suffix
#else
# define __CURL_OFF_T_C_HELPER2(Val,Suffix) Val/**/Suffix
#endif
#define __CURL_OFF_T_C_HELPER1(Val,Suffix) __CURL_OFF_T_C_HELPER2(Val,Suffix)
#define CURL_OFF_T_C(Val) __CURL_OFF_T_C_HELPER1(Val,CURL_SUFFIX_CURL_OFF_T)
#define CURL_OFF_TU_C(Val) __CURL_OFF_T_C_HELPER1(Val,CURL_SUFFIX_CURL_OFF_TU)
/*
* Get rid of macros private to this header file.
*/
#undef CurlchkszEQ
#undef CurlchkszGE
/*
* Get rid of macros not intended to exist beyond this point.
*/
#undef CURL_PULL_SYS_TYPES_H
#undef CURL_PULL_STDINT_H
#undef CURL_PULL_INTTYPES_H
#undef CURL_TYPEOF_CURL_OFF_T
#endif /* __CURL_CURLRULES_H */

View File

@@ -31,13 +31,13 @@
/* This is the version number of the libcurl package from which this header
file origins: */
#define LIBCURL_VERSION "7.18.2-CVS"
#define LIBCURL_VERSION "7.19.0-CVS"
/* The numeric version number is also available "in parts" by using these
defines: */
#define LIBCURL_VERSION_MAJOR 7
#define LIBCURL_VERSION_MINOR 18
#define LIBCURL_VERSION_PATCH 2
#define LIBCURL_VERSION_MINOR 19
#define LIBCURL_VERSION_PATCH 0
/* This is the numeric version of the libcurl version number, meant for easier
parsing and comparions by programs. The LIBCURL_VERSION_NUM define will
@@ -54,7 +54,7 @@
and it is always a greater number in a more recent release. It makes
comparisons with greater than and less than work.
*/
#define LIBCURL_VERSION_NUM 0x071202
#define LIBCURL_VERSION_NUM 0x071300
/*
* This is the date and time when the full source package was created. The

View File

@@ -224,6 +224,8 @@ _CURL_WARNING(_curl_easy_getinfo_err_curl_slist,
(option) == CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 || \
(option) == CURLOPT_SSH_PUBLIC_KEYFILE || \
(option) == CURLOPT_SSH_PRIVATE_KEYFILE || \
(option) == CURLOPT_CRLFILE || \
(option) == CURLOPT_ISSUERCERT || \
0)
/* evaluates to true if option takes a curl_write_callback argument */

View File

@@ -8,3 +8,5 @@ config.h
stamp-*
getdate.c
curllib.dsp
curllib.vcproj
*.dist

View File

@@ -4,30 +4,35 @@
#
# $Id$
TARGETS = libcurl_wc.dll libcurl_wc_imp.lib
TARGETS = libcurl_wc.dll libcurl_wc_imp.lib libcurl_wc.lib
CC = wcc386
CFLAGS = -3r -mf -d3 -hc -zff -zgf -zq -zm -zc -s -fr=con -w2 -fpi -oilrtfm -bt=nt &
-bd -d+ -dWIN32 -dCURL_CA_BUNDLE=getenv("CURL_CA_BUNDLE") &
-dBUILDING_LIBCURL -dHAVE_SPNEGO=1 -dENABLE_IPV6 &
-dDEBUG_THREADING_GETADDRINFO -dDEBUG=1 -dCURLDEBUG -d_WIN32_WINNT=0x0501 &
-dWINBERAPI=__declspec(cdecl) -dWINLDAPAPI=__declspec(cdecl) &
-I. -I..\include
-dDEBUG=1 -dCURLDEBUG -d_WIN32_WINNT=0x0501 -dWINBERAPI=__declspec(cdecl) &
-dWINLDAPAPI=__declspec(cdecl) -I. -I..\include
#
# Change to suite.
#
ZLIB_ROOT = ..\..\..\zlib-1.2.3
USE_ZLIB = 0
USE_ARES = 0
!ifeq USE_ZLIB 1
CFLAGS += -dHAVE_ZLIB_H -dHAVE_LIBZ -I$(ZLIB_ROOT)
!endif
OBJ_DIR = WC_Win32.obj
C_ARG = $(OBJ_DIR)\wcc386.arg
LINK_ARG = $(OBJ_DIR)\wlink.arg
!ifeq USE_ARES 1
CFLAGS += -dUSE_ARES -I..\ares
!endif
OBJ_BASE = WC_Win32.obj
C_ARG = $(OBJ_BASE)\wcc386.arg
LINK_ARG = $(OBJ_BASE)\dyn\wlink.arg
LIB_ARG = $(OBJ_BASE)\stat\wlib.arg
OBJS = $(OBJ_DIR)\base64.obj $(OBJ_DIR)\connect.obj &
$(OBJ_DIR)\content_encoding.obj $(OBJ_DIR)\cookie.obj &
@@ -59,32 +64,52 @@ OBJS = $(OBJ_DIR)\base64.obj $(OBJ_DIR)\connect.obj &
$(OBJ_DIR)\timeval.obj $(OBJ_DIR)\transfer.obj &
$(OBJ_DIR)\url.obj $(OBJ_DIR)\version.obj
RESOURCE = $(OBJ_DIR)\libcurl.res
#
# Use $(OBJS) as a template to generate $(OBJS_STAT) and $(OBJS_DYN).
#
OBJ_DIR = $(OBJ_BASE)\stat
OBJS_STAT = $+ $(OBJS) $-
all: $(OBJ_DIR) $(C_ARG) $(TARGETS) .SYMBOLIC
OBJ_DIR = $(OBJ_BASE)\dyn
OBJS_DYN = $+ $(OBJS) $-
RESOURCE = $(OBJ_BASE)\dyn\libcurl.res
all: $(OBJ_BASE) $(C_ARG) $(TARGETS) .SYMBOLIC
@echo Welcome to libcurl
$(OBJ_DIR):
mkdir $(OBJ_DIR)
$(OBJ_BASE):
- mkdir $(OBJ_BASE)
- mkdir $(OBJ_BASE)\stat
- mkdir $(OBJ_BASE)\dyn
libcurl_wc.dll libcurl_wc_imp.lib: $(OBJS) $(RESOURCE) $(LINK_ARG)
libcurl_wc.dll libcurl_wc_imp.lib: $(OBJS_DYN) $(RESOURCE) $(LINK_ARG)
wlink name libcurl_wc.dll @$(LINK_ARG)
libcurl_wc.lib: $(OBJS_STAT) $(LIB_ARG)
wlib -q -b- c $@ @$(LIB_ARG)
clean: .SYMBOLIC
- rm -f $(OBJS) $(RESOURCE)
- rm -f $(OBJS_STAT) $(OBJS_DYN) $(RESOURCE) $(C_ARG) $(LINK_ARG) $(LIB_ARG)
vclean realclean: clean .SYMBOLIC
- rm -f $(TARGETS) $(C_ARG) $(LINK_ARG) libcurl_wc.map
- rmdir $(OBJ_DIR)
- rm -f $(TARGETS) libcurl_wc.map
- rmdir $(OBJ_BASE)\stat
- rmdir $(OBJ_BASE)\dyn
- rmdir $(OBJ_BASE)
.ERASE
$(RESOURCE): libcurl.rc
wrc -dCURLDEBUG=1 -q -r -zm -I..\include -fo=$@ libcurl.rc
.ERASE
.c{$(OBJ_DIR)}.obj:
.c{$(OBJ_BASE)\dyn}.obj:
$(CC) $[@ @$(C_ARG) -fo=$@
.ERASE
.c{$(OBJ_BASE)\stat}.obj:
$(CC) $[@ @$(C_ARG) -DCURL_STATICLIB -fo=$@
$(C_ARG): $(__MAKEFILES__)
%create $^@
%append $^@ $(CFLAGS)
@@ -92,268 +117,389 @@ $(C_ARG): $(__MAKEFILES__)
$(LINK_ARG): $(__MAKEFILES__)
%create $^@
@%append $^@ system nt dll
@%append $^@ file { $(OBJS) }
@%append $^@ file { $(OBJS_DYN) }
@%append $^@ option quiet, map, caseexact, eliminate, implib=libcurl_wc_imp.lib,
@%append $^@ res=$(RESOURCE) libpath $(%watcom)\lib386;$(%watcom)\lib386\nt
@%append $^@ library clib3r.lib, wldap32.lib, ws2_32.lib
!ifeq USE_ZLIB 1
@%append $^@ library $(ZLIB_ROOT)\zlib.lib
!endif
!ifeq USE_ARES 1
@%append $^@ library ..\ares\cares.lib
!endif
$(LIB_ARG): $(__MAKEFILES__)
%create $^@
for %f in ($(OBJS_STAT)) do @%append $^@ +- %f
#
# Dependencies based on "gcc -MM .."
#
$(OBJ_DIR)\file.obj: file.c setup.h config-win32.h setup_once.h urldata.h cookie.h &
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
$(OBJ_DIR)\file.obj: file.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h strtoofft.h urldata.h cookie.h &
..\include\curl\curl.h ..\include\curl\curlver.h &
..\include\curl\curlrules.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h formdata.h timeval.h &
http_chunks.h hostip.h hash.h llist.h splay.h progress.h sendf.h &
escape.h file.h speedcheck.h getinfo.h transfer.h url.h memory.h &
parsedate.h ..\include\curl\mprintf.h memdebug.h .\memory.h
$(OBJ_DIR)\timeval.obj: timeval.c timeval.h setup.h config-win32.h setup_once.h
$(OBJ_DIR)\base64.obj: base64.c setup.h config-win32.h setup_once.h &
..\include\curl\mprintf.h ..\include\curl\curl.h &
..\include\curl\curlver.h ..\include\curl\easy.h &
..\include\curl\multi.h base64.h memory.h ..\include\curl\curl.h &
memdebug.h .\memory.h
$(OBJ_DIR)\hostip.obj: hostip.c setup.h config-win32.h setup_once.h urldata.h cookie.h &
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
parsedate.h ..\include\curl\mprintf.h memdebug.h
$(OBJ_DIR)\timeval.obj: timeval.c timeval.h setup.h config-win32.h &
..\include\curl\curlbuild.h ..\include\curl\curlrules.h setup_once.h
$(OBJ_DIR)\base64.obj: base64.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h ..\include\curl\mprintf.h &
..\include\curl\curl.h ..\include\curl\curlver.h &
..\include\curl\curlrules.h ..\include\curl\easy.h &
..\include\curl\multi.h urldata.h cookie.h ..\include\curl\curl.h &
formdata.h timeval.h http_chunks.h hostip.h hash.h llist.h splay.h &
easyif.h curl_base64.h memory.h memdebug.h
$(OBJ_DIR)\hostip.obj: hostip.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h urldata.h cookie.h &
..\include\curl\curl.h ..\include\curl\curlver.h &
..\include\curl\curlrules.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h formdata.h timeval.h &
http_chunks.h hostip.h hash.h llist.h splay.h sendf.h share.h &
strerror.h url.h inet_ntop.h ..\include\curl\mprintf.h memory.h &
memdebug.h .\memory.h
$(OBJ_DIR)\progress.obj: progress.c setup.h config-win32.h setup_once.h &
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h urldata.h cookie.h &
formdata.h timeval.h http_chunks.h hostip.h hash.h llist.h splay.h &
sendf.h progress.h ..\include\curl\mprintf.h
$(OBJ_DIR)\formdata.obj: formdata.c setup.h config-win32.h setup_once.h &
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h formdata.h strequal.h &
memory.h ..\include\curl\mprintf.h memdebug.h .\memory.h
$(OBJ_DIR)\cookie.obj: cookie.c setup.h config-win32.h setup_once.h &
..\include\curl\mprintf.h ..\include\curl\curl.h &
..\include\curl\curlver.h ..\include\curl\easy.h &
memdebug.h
$(OBJ_DIR)\progress.obj: progress.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h urldata.h cookie.h &
..\include\curl\curl.h ..\include\curl\curlver.h &
..\include\curl\curlrules.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h formdata.h timeval.h &
http_chunks.h hostip.h hash.h llist.h splay.h sendf.h progress.h &
..\include\curl\mprintf.h
$(OBJ_DIR)\formdata.obj: formdata.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h ..\include\curl\curl.h &
..\include\curl\curlver.h ..\include\curl\curlrules.h &
..\include\curl\easy.h ..\include\curl\multi.h ..\include\curl\curl.h &
urldata.h cookie.h formdata.h timeval.h http_chunks.h hostip.h hash.h &
llist.h splay.h easyif.h strequal.h memory.h ..\include\curl\mprintf.h &
memdebug.h
$(OBJ_DIR)\cookie.obj: cookie.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h ..\include\curl\mprintf.h &
..\include\curl\curl.h ..\include\curl\curlver.h &
..\include\curl\curlrules.h ..\include\curl\easy.h &
..\include\curl\multi.h urldata.h cookie.h ..\include\curl\curl.h &
formdata.h timeval.h http_chunks.h hostip.h hash.h llist.h splay.h &
strequal.h strtok.h sendf.h memory.h share.h strtoofft.h memdebug.h &
.\memory.h
$(OBJ_DIR)\http.obj: http.c setup.h config-win32.h setup_once.h urldata.h cookie.h &
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
strequal.h strtok.h sendf.h memory.h share.h strtoofft.h memdebug.h
$(OBJ_DIR)\http.obj: http.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h urldata.h cookie.h &
..\include\curl\curl.h ..\include\curl\curlver.h &
..\include\curl\curlrules.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h formdata.h timeval.h &
http_chunks.h hostip.h hash.h llist.h splay.h transfer.h sendf.h &
progress.h base64.h strequal.h sslgen.h http_digest.h http_ntlm.h &
http_negotiate.h url.h share.h http.h memory.h select.h parsedate.h &
strtoofft.h multiif.h ..\include\curl\mprintf.h memdebug.h .\memory.h
$(OBJ_DIR)\sendf.obj: sendf.c setup.h config-win32.h setup_once.h ..\include\curl\curl.h &
..\include\curl\curlver.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h urldata.h cookie.h &
formdata.h timeval.h http_chunks.h hostip.h hash.h llist.h splay.h &
sendf.h connect.h sslgen.h ..\include\curl\mprintf.h memory.h &
strerror.h easyif.h memdebug.h .\memory.h
$(OBJ_DIR)\ftp.obj: ftp.c setup.h config-win32.h setup_once.h ..\include\curl\curl.h &
..\include\curl\curlver.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h urldata.h cookie.h &
formdata.h timeval.h http_chunks.h hostip.h hash.h llist.h splay.h &
sendf.h easyif.h if2ip.h progress.h transfer.h escape.h http.h ftp.h &
strtoofft.h strequal.h sslgen.h connect.h strerror.h memory.h &
inet_ntop.h select.h parsedate.h sockaddr.h multiif.h &
..\include\curl\mprintf.h memdebug.h .\memory.h
$(OBJ_DIR)\url.obj: url.c setup.h config-win32.h setup_once.h urldata.h cookie.h &
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
easyif.h progress.h curl_base64.h strequal.h sslgen.h http_digest.h &
http_ntlm.h http_negotiate.h url.h share.h http.h memory.h select.h &
parsedate.h strtoofft.h multiif.h ..\include\curl\mprintf.h memdebug.h
$(OBJ_DIR)\sendf.obj: sendf.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h ..\include\curl\curl.h &
..\include\curl\curlver.h ..\include\curl\curlrules.h &
..\include\curl\easy.h ..\include\curl\multi.h ..\include\curl\curl.h &
urldata.h cookie.h formdata.h timeval.h http_chunks.h hostip.h hash.h &
llist.h splay.h sendf.h connect.h sslgen.h ssh.h multiif.h &
..\include\curl\mprintf.h memory.h strerror.h easyif.h memdebug.h
$(OBJ_DIR)\ftp.obj: ftp.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h ..\include\curl\curl.h &
..\include\curl\curlver.h ..\include\curl\curlrules.h &
..\include\curl\easy.h ..\include\curl\multi.h ..\include\curl\curl.h &
urldata.h cookie.h formdata.h timeval.h http_chunks.h hostip.h hash.h &
llist.h splay.h sendf.h easyif.h if2ip.h progress.h transfer.h escape.h &
http.h socks.h ftp.h strtoofft.h strequal.h sslgen.h connect.h &
strerror.h memory.h inet_ntop.h select.h parsedate.h sockaddr.h &
multiif.h url.h ..\include\curl\mprintf.h memdebug.h
$(OBJ_DIR)\url.obj: url.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h urldata.h cookie.h &
..\include\curl\curl.h ..\include\curl\curlver.h &
..\include\curl\curlrules.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h formdata.h timeval.h &
http_chunks.h hostip.h hash.h llist.h splay.h netrc.h base64.h sslgen.h &
http_chunks.h hostip.h hash.h llist.h splay.h netrc.h sslgen.h &
transfer.h sendf.h progress.h strequal.h strerror.h escape.h strtok.h &
share.h content_encoding.h http_digest.h http_negotiate.h select.h &
multiif.h ftp.h dict.h telnet.h tftp.h http.h file.h curl_ldap.h url.h &
connect.h inet_ntop.h http_ntlm.h &
..\include\curl\mprintf.h memory.h memdebug.h .\memory.h
$(OBJ_DIR)\dict.obj: dict.c setup.h config-win32.h setup_once.h urldata.h cookie.h &
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
multiif.h easyif.h speedcheck.h ftp.h dict.h telnet.h tftp.h http.h &
file.h curl_ldap.h ssh.h url.h connect.h inet_ntop.h http_ntlm.h &
socks.h ..\include\curl\mprintf.h memory.h memdebug.h
$(OBJ_DIR)\dict.obj: dict.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h urldata.h cookie.h &
..\include\curl\curl.h ..\include\curl\curlver.h &
..\include\curl\curlrules.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h formdata.h timeval.h &
http_chunks.h hostip.h hash.h llist.h splay.h transfer.h sendf.h &
progress.h strequal.h dict.h ..\include\curl\mprintf.h memdebug.h &
.\memory.h
$(OBJ_DIR)\if2ip.obj: if2ip.c setup.h config-win32.h setup_once.h if2ip.h inet_ntop.h &
memory.h ..\include\curl\curl.h ..\include\curl\curlver.h &
..\include\curl\easy.h ..\include\curl\multi.h ..\include\curl\curl.h &
memdebug.h .\memory.h
$(OBJ_DIR)\speedcheck.obj: speedcheck.c setup.h config-win32.h setup_once.h &
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
progress.h strequal.h dict.h ..\include\curl\mprintf.h memdebug.h
$(OBJ_DIR)\if2ip.obj: if2ip.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h if2ip.h
$(OBJ_DIR)\speedcheck.obj: speedcheck.c setup.h config-win32.h &
..\include\curl\curlbuild.h ..\include\curl\curlrules.h setup_once.h &
..\include\curl\curl.h ..\include\curl\curlver.h &
..\include\curl\curlrules.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h urldata.h cookie.h &
formdata.h timeval.h http_chunks.h hostip.h hash.h llist.h splay.h &
sendf.h multiif.h speedcheck.h
$(OBJ_DIR)\ldap.obj: ldap.c setup.h config-win32.h setup_once.h
$(OBJ_DIR)\ssluse.obj: ssluse.c setup.h config-win32.h setup_once.h urldata.h cookie.h &
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
$(OBJ_DIR)\ldap.obj: ldap.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h urldata.h cookie.h &
..\include\curl\curl.h ..\include\curl\curlver.h &
..\include\curl\curlrules.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h formdata.h timeval.h &
http_chunks.h hostip.h hash.h llist.h splay.h sendf.h escape.h &
transfer.h strequal.h strtok.h curl_ldap.h memory.h curl_base64.h &
..\include\curl\mprintf.h memdebug.h
$(OBJ_DIR)\ssluse.obj: ssluse.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h urldata.h cookie.h &
..\include\curl\curl.h ..\include\curl\curlver.h &
..\include\curl\curlrules.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h formdata.h timeval.h &
http_chunks.h hostip.h hash.h llist.h splay.h sendf.h url.h inet_pton.h &
ssluse.h connect.h strequal.h select.h sslgen.h &
..\include\curl\mprintf.h
$(OBJ_DIR)\version.obj: version.c setup.h config-win32.h setup_once.h ..\include\curl\curl.h &
..\include\curl\curlver.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h urldata.h cookie.h &
formdata.h timeval.h http_chunks.h hostip.h hash.h llist.h splay.h &
sslgen.h ..\include\curl\mprintf.h
$(OBJ_DIR)\getenv.obj: getenv.c setup.h config-win32.h setup_once.h ..\include\curl\curl.h &
..\include\curl\curlver.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h memory.h memdebug.h &
.\memory.h
$(OBJ_DIR)\escape.obj: escape.c setup.h config-win32.h setup_once.h ..\include\curl\curl.h &
..\include\curl\curlver.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h memory.h urldata.h &
cookie.h formdata.h timeval.h http_chunks.h hostip.h hash.h llist.h &
splay.h easyif.h ..\include\curl\mprintf.h memdebug.h .\memory.h
$(OBJ_DIR)\mprintf.obj: mprintf.c setup.h config-win32.h setup_once.h &
..\include\curl\mprintf.h ..\include\curl\curl.h &
..\include\curl\curlver.h ..\include\curl\easy.h &
..\include\curl\multi.h memory.h ..\include\curl\curl.h memdebug.h &
.\memory.h
$(OBJ_DIR)\telnet.obj: telnet.c setup.h config-win32.h setup_once.h urldata.h cookie.h &
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
$(OBJ_DIR)\version.obj: version.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h ..\include\curl\curl.h &
..\include\curl\curlver.h ..\include\curl\curlrules.h &
..\include\curl\easy.h ..\include\curl\multi.h ..\include\curl\curl.h &
urldata.h cookie.h formdata.h timeval.h http_chunks.h hostip.h hash.h &
llist.h splay.h sslgen.h ..\include\curl\mprintf.h
$(OBJ_DIR)\getenv.obj: getenv.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h ..\include\curl\curl.h &
..\include\curl\curlver.h ..\include\curl\curlrules.h &
..\include\curl\easy.h ..\include\curl\multi.h ..\include\curl\curl.h &
memory.h memdebug.h
$(OBJ_DIR)\escape.obj: escape.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h ..\include\curl\curl.h &
..\include\curl\curlver.h ..\include\curl\curlrules.h &
..\include\curl\easy.h ..\include\curl\multi.h ..\include\curl\curl.h &
memory.h urldata.h cookie.h formdata.h timeval.h http_chunks.h hostip.h &
hash.h llist.h splay.h easyif.h ..\include\curl\mprintf.h memdebug.h
$(OBJ_DIR)\mprintf.obj: mprintf.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h ..\include\curl\mprintf.h &
..\include\curl\curl.h ..\include\curl\curlver.h &
..\include\curl\curlrules.h ..\include\curl\easy.h &
..\include\curl\multi.h memory.h ..\include\curl\curl.h memdebug.h
$(OBJ_DIR)\telnet.obj: telnet.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h urldata.h cookie.h &
..\include\curl\curl.h ..\include\curl\curlver.h &
..\include\curl\curlrules.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h formdata.h timeval.h &
http_chunks.h hostip.h hash.h llist.h splay.h transfer.h sendf.h &
telnet.h connect.h ..\include\curl\mprintf.h arpa_telnet.h memory.h &
select.h memdebug.h .\memory.h
$(OBJ_DIR)\netrc.obj: netrc.c setup.h config-win32.h setup_once.h ..\include\curl\curl.h &
..\include\curl\curlver.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h netrc.h strequal.h &
strtok.h memory.h ..\include\curl\mprintf.h memdebug.h .\memory.h
$(OBJ_DIR)\getinfo.obj: getinfo.c setup.h config-win32.h setup_once.h ..\include\curl\curl.h &
..\include\curl\curlver.h ..\include\curl\easy.h &
select.h memdebug.h
$(OBJ_DIR)\netrc.obj: netrc.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h ..\include\curl\curl.h &
..\include\curl\curlver.h ..\include\curl\curlrules.h &
..\include\curl\easy.h ..\include\curl\multi.h ..\include\curl\curl.h &
netrc.h strequal.h strtok.h memory.h ..\include\curl\mprintf.h &
memdebug.h
$(OBJ_DIR)\getinfo.obj: getinfo.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h ..\include\curl\curl.h &
..\include\curl\curlver.h ..\include\curl\curlrules.h &
..\include\curl\easy.h ..\include\curl\multi.h ..\include\curl\curl.h &
urldata.h cookie.h formdata.h timeval.h http_chunks.h hostip.h hash.h &
llist.h splay.h getinfo.h memory.h sslgen.h connect.h memdebug.h
$(OBJ_DIR)\transfer.obj: transfer.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h strtoofft.h strequal.h &
..\include\curl\curl.h ..\include\curl\curlver.h &
..\include\curl\curlrules.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h urldata.h cookie.h &
formdata.h timeval.h http_chunks.h hostip.h hash.h llist.h splay.h &
getinfo.h memory.h sslgen.h memdebug.h .\memory.h
$(OBJ_DIR)\transfer.obj: transfer.c setup.h config-win32.h setup_once.h strtoofft.h &
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h strequal.h urldata.h &
cookie.h formdata.h timeval.h http_chunks.h hostip.h hash.h llist.h &
splay.h netrc.h content_encoding.h transfer.h sendf.h speedcheck.h &
progress.h http.h url.h getinfo.h sslgen.h http_digest.h http_ntlm.h &
netrc.h content_encoding.h transfer.h sendf.h speedcheck.h progress.h &
http.h url.h getinfo.h sslgen.h http_digest.h http_ntlm.h &
http_negotiate.h share.h memory.h select.h multiif.h easyif.h &
..\include\curl\mprintf.h memdebug.h .\memory.h
$(OBJ_DIR)\strequal.obj: strequal.c setup.h config-win32.h setup_once.h strequal.h &
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
..\include\curl\mprintf.h memdebug.h
$(OBJ_DIR)\strequal.obj: strequal.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h strequal.h &
..\include\curl\curl.h ..\include\curl\curlver.h &
..\include\curl\curlrules.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h
$(OBJ_DIR)\easy.obj: easy.c setup.h config-win32.h setup_once.h strequal.h &
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
$(OBJ_DIR)\easy.obj: easy.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h strequal.h &
..\include\curl\curl.h ..\include\curl\curlver.h &
..\include\curl\curlrules.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h urldata.h cookie.h &
formdata.h timeval.h http_chunks.h hostip.h hash.h llist.h splay.h &
transfer.h sslgen.h url.h getinfo.h share.h strdup.h memory.h &
progress.h easyif.h sendf.h ..\include\curl\mprintf.h memdebug.h &
.\memory.h
$(OBJ_DIR)\security.obj: security.c setup.h config-win32.h setup_once.h
$(OBJ_DIR)\krb4.obj: krb4.c setup.h config-win32.h setup_once.h
$(OBJ_DIR)\memdebug.obj: memdebug.c setup.h config-win32.h setup_once.h &
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h &
progress.h easyif.h select.h sendf.h http_ntlm.h connect.h &
..\include\curl\mprintf.h memdebug.h
$(OBJ_DIR)\security.obj: security.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h
$(OBJ_DIR)\krb4.obj: krb4.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h
$(OBJ_DIR)\krb5.obj: krb5.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h
$(OBJ_DIR)\memdebug.obj: memdebug.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h ..\include\curl\curl.h &
..\include\curl\curlver.h ..\include\curl\curlrules.h &
..\include\curl\easy.h ..\include\curl\multi.h ..\include\curl\curl.h &
..\include\curl\mprintf.h urldata.h cookie.h formdata.h timeval.h &
http_chunks.h hostip.h hash.h llist.h splay.h memory.h memdebug.h &
.\memory.h
$(OBJ_DIR)\http_chunks.obj: http_chunks.c setup.h config-win32.h setup_once.h urldata.h &
cookie.h ..\include\curl\curl.h ..\include\curl\curlver.h &
..\include\curl\easy.h ..\include\curl\multi.h ..\include\curl\curl.h &
formdata.h timeval.h http_chunks.h hostip.h hash.h llist.h splay.h &
sendf.h content_encoding.h http.h memory.h ..\include\curl\mprintf.h &
memdebug.h .\memory.h
$(OBJ_DIR)\strtok.obj: strtok.c setup.h config-win32.h setup_once.h strtok.h
$(OBJ_DIR)\connect.obj: connect.c setup.h config-win32.h setup_once.h urldata.h cookie.h &
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
http_chunks.h hostip.h hash.h llist.h splay.h memory.h memdebug.h
$(OBJ_DIR)\http_chunks.obj: http_chunks.c setup.h config-win32.h &
..\include\curl\curlbuild.h ..\include\curl\curlrules.h setup_once.h &
urldata.h cookie.h ..\include\curl\curl.h ..\include\curl\curlver.h &
..\include\curl\curlrules.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h formdata.h timeval.h &
http_chunks.h hostip.h hash.h llist.h splay.h sendf.h if2ip.h &
strerror.h connect.h memory.h select.h url.h multiif.h sockaddr.h &
inet_ntop.h memdebug.h .\memory.h
$(OBJ_DIR)\llist.obj: llist.c setup.h config-win32.h setup_once.h llist.h memory.h &
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h memdebug.h .\memory.h
$(OBJ_DIR)\hash.obj: hash.c setup.h config-win32.h setup_once.h hash.h llist.h memory.h &
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h memdebug.h .\memory.h
$(OBJ_DIR)\multi.obj: multi.c setup.h config-win32.h setup_once.h ..\include\curl\curl.h &
..\include\curl\curlver.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h urldata.h cookie.h &
http_chunks.h hostip.h hash.h llist.h splay.h sendf.h &
content_encoding.h http.h memory.h easyif.h ..\include\curl\mprintf.h &
memdebug.h
$(OBJ_DIR)\strtok.obj: strtok.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h strtok.h
$(OBJ_DIR)\connect.obj: connect.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h ..\include\curl\mprintf.h &
..\include\curl\curl.h ..\include\curl\curlver.h &
..\include\curl\curlrules.h ..\include\curl\easy.h &
..\include\curl\multi.h urldata.h cookie.h ..\include\curl\curl.h &
formdata.h timeval.h http_chunks.h hostip.h hash.h llist.h splay.h &
transfer.h url.h connect.h progress.h memory.h easyif.h multiif.h &
sendf.h memdebug.h .\memory.h
$(OBJ_DIR)\content_encoding.obj: content_encoding.c setup.h config-win32.h setup_once.h
$(OBJ_DIR)\share.obj: share.c setup.h config-win32.h setup_once.h ..\include\curl\curl.h &
..\include\curl\curlver.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h urldata.h cookie.h &
formdata.h timeval.h http_chunks.h hostip.h hash.h llist.h splay.h &
share.h memory.h memdebug.h .\memory.h
$(OBJ_DIR)\http_digest.obj: http_digest.c setup.h config-win32.h setup_once.h urldata.h &
cookie.h ..\include\curl\curl.h ..\include\curl\curlver.h &
sendf.h if2ip.h strerror.h connect.h memory.h select.h url.h multiif.h &
sockaddr.h inet_ntop.h inet_pton.h sslgen.h memdebug.h
$(OBJ_DIR)\llist.obj: llist.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h llist.h memory.h &
..\include\curl\curl.h ..\include\curl\curlver.h &
..\include\curl\curlrules.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h memdebug.h
$(OBJ_DIR)\hash.obj: hash.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h hash.h llist.h memory.h &
..\include\curl\curl.h ..\include\curl\curlver.h &
..\include\curl\curlrules.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h memdebug.h
$(OBJ_DIR)\multi.obj: multi.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h ..\include\curl\curl.h &
..\include\curl\curlver.h ..\include\curl\curlrules.h &
..\include\curl\easy.h ..\include\curl\multi.h ..\include\curl\curl.h &
formdata.h timeval.h http_chunks.h hostip.h hash.h llist.h splay.h &
sendf.h strequal.h base64.h md5.h http_digest.h strtok.h url.h memory.h &
..\include\curl\mprintf.h memdebug.h .\memory.h
$(OBJ_DIR)\md5.obj: md5.c setup.h config-win32.h setup_once.h md5.h
$(OBJ_DIR)\http_negotiate.obj: http_negotiate.c setup.h config-win32.h setup_once.h
$(OBJ_DIR)\http_ntlm.obj: http_ntlm.c setup.h config-win32.h setup_once.h
$(OBJ_DIR)\inet_pton.obj: inet_pton.c setup.h config-win32.h setup_once.h
$(OBJ_DIR)\strtoofft.obj: strtoofft.c setup.h config-win32.h setup_once.h strtoofft.h &
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h
$(OBJ_DIR)\strerror.obj: strerror.c setup.h config-win32.h setup_once.h &
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h strerror.h urldata.h &
cookie.h formdata.h timeval.h http_chunks.h hostip.h hash.h llist.h &
splay.h ..\include\curl\mprintf.h
$(OBJ_DIR)\hostares.obj: hostares.c setup.h config-win32.h setup_once.h urldata.h cookie.h &
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
urldata.h cookie.h formdata.h timeval.h http_chunks.h hostip.h hash.h &
llist.h splay.h transfer.h url.h connect.h progress.h memory.h easyif.h &
multiif.h sendf.h http.h memdebug.h
$(OBJ_DIR)\content_encoding.obj: content_encoding.c setup.h config-win32.h &
..\include\curl\curlbuild.h ..\include\curl\curlrules.h setup_once.h
$(OBJ_DIR)\share.obj: share.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h ..\include\curl\curl.h &
..\include\curl\curlver.h ..\include\curl\curlrules.h &
..\include\curl\easy.h ..\include\curl\multi.h ..\include\curl\curl.h &
urldata.h cookie.h formdata.h timeval.h http_chunks.h hostip.h hash.h &
llist.h splay.h share.h memory.h memdebug.h
$(OBJ_DIR)\http_digest.obj: http_digest.c setup.h config-win32.h &
..\include\curl\curlbuild.h ..\include\curl\curlrules.h setup_once.h &
urldata.h cookie.h ..\include\curl\curl.h ..\include\curl\curlver.h &
..\include\curl\curlrules.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h formdata.h timeval.h &
http_chunks.h hostip.h hash.h llist.h splay.h sendf.h strequal.h &
curl_base64.h curl_md5.h http_digest.h strtok.h url.h memory.h easyif.h &
..\include\curl\mprintf.h memdebug.h
$(OBJ_DIR)\md5.obj: md5.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h curl_md5.h
$(OBJ_DIR)\http_negotiate.obj: http_negotiate.c setup.h config-win32.h &
..\include\curl\curlbuild.h ..\include\curl\curlrules.h setup_once.h
$(OBJ_DIR)\http_ntlm.obj: http_ntlm.c setup.h config-win32.h &
..\include\curl\curlbuild.h ..\include\curl\curlrules.h setup_once.h &
urldata.h cookie.h ..\include\curl\curl.h ..\include\curl\curlver.h &
..\include\curl\curlrules.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h formdata.h timeval.h &
http_chunks.h hostip.h hash.h llist.h splay.h easyif.h sendf.h &
strequal.h curl_base64.h http_ntlm.h url.h memory.h ssluse.h &
..\include\curl\mprintf.h memdebug.h
$(OBJ_DIR)\inet_pton.obj: inet_pton.c setup.h config-win32.h &
..\include\curl\curlbuild.h ..\include\curl\curlrules.h setup_once.h &
inet_pton.h
$(OBJ_DIR)\strtoofft.obj: strtoofft.c setup.h config-win32.h &
..\include\curl\curlbuild.h ..\include\curl\curlrules.h setup_once.h &
strtoofft.h
$(OBJ_DIR)\strerror.obj: strerror.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h ..\include\curl\curl.h &
..\include\curl\curlver.h ..\include\curl\curlrules.h &
..\include\curl\easy.h ..\include\curl\multi.h ..\include\curl\curl.h &
strerror.h urldata.h cookie.h formdata.h timeval.h http_chunks.h &
hostip.h hash.h llist.h splay.h ..\include\curl\mprintf.h
$(OBJ_DIR)\hostares.obj: hostares.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h urldata.h cookie.h &
..\include\curl\curl.h ..\include\curl\curlver.h &
..\include\curl\curlrules.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h formdata.h timeval.h &
http_chunks.h hostip.h hash.h llist.h splay.h sendf.h share.h &
strerror.h url.h connect.h ..\include\curl\mprintf.h memory.h &
memdebug.h .\memory.h
$(OBJ_DIR)\hostasyn.obj: hostasyn.c setup.h config-win32.h setup_once.h urldata.h cookie.h &
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
strerror.h url.h multiif.h connect.h select.h ..\include\curl\mprintf.h &
memory.h memdebug.h
$(OBJ_DIR)\hostasyn.obj: hostasyn.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h urldata.h cookie.h &
..\include\curl\curl.h ..\include\curl\curlver.h &
..\include\curl\curlrules.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h formdata.h timeval.h &
http_chunks.h hostip.h hash.h llist.h splay.h sendf.h share.h &
strerror.h url.h ..\include\curl\mprintf.h memory.h memdebug.h &
.\memory.h
$(OBJ_DIR)\hostip4.obj: hostip4.c setup.h config-win32.h setup_once.h urldata.h cookie.h &
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
strerror.h url.h ..\include\curl\mprintf.h memory.h memdebug.h
$(OBJ_DIR)\hostip4.obj: hostip4.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h urldata.h cookie.h &
..\include\curl\curl.h ..\include\curl\curlver.h &
..\include\curl\curlrules.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h formdata.h timeval.h &
http_chunks.h hostip.h hash.h llist.h splay.h sendf.h share.h &
strerror.h url.h inet_pton.h ..\include\curl\mprintf.h memory.h &
memdebug.h .\memory.h
$(OBJ_DIR)\hostip6.obj: hostip6.c setup.h config-win32.h setup_once.h urldata.h cookie.h &
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
memdebug.h
$(OBJ_DIR)\hostip6.obj: hostip6.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h urldata.h cookie.h &
..\include\curl\curl.h ..\include\curl\curlver.h &
..\include\curl\curlrules.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h formdata.h timeval.h &
http_chunks.h hostip.h hash.h llist.h splay.h sendf.h share.h &
strerror.h url.h inet_pton.h connect.h ..\include\curl\mprintf.h &
memory.h memdebug.h .\memory.h
$(OBJ_DIR)\hostsyn.obj: hostsyn.c setup.h config-win32.h setup_once.h urldata.h cookie.h &
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
memory.h memdebug.h
$(OBJ_DIR)\hostsyn.obj: hostsyn.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h urldata.h cookie.h &
..\include\curl\curl.h ..\include\curl\curlver.h &
..\include\curl\curlrules.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h formdata.h timeval.h &
http_chunks.h hostip.h hash.h llist.h splay.h sendf.h share.h &
strerror.h url.h ..\include\curl\mprintf.h memory.h memdebug.h &
.\memory.h
$(OBJ_DIR)\hostthre.obj: hostthre.c setup.h config-win32.h setup_once.h urldata.h cookie.h &
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
strerror.h url.h ..\include\curl\mprintf.h memory.h memdebug.h
$(OBJ_DIR)\hostthre.obj: hostthre.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h urldata.h cookie.h &
..\include\curl\curl.h ..\include\curl\curlver.h &
..\include\curl\curlrules.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h formdata.h timeval.h &
http_chunks.h hostip.h hash.h llist.h splay.h sendf.h share.h &
strerror.h url.h multiif.h ..\include\curl\mprintf.h inet_ntop.h &
memory.h memdebug.h .\memory.h
$(OBJ_DIR)\inet_ntop.obj: inet_ntop.c setup.h config-win32.h setup_once.h
$(OBJ_DIR)\parsedate.obj: parsedate.c setup.h config-win32.h setup_once.h &
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
memory.h memdebug.h
$(OBJ_DIR)\inet_ntop.obj: inet_ntop.c setup.h config-win32.h &
..\include\curl\curlbuild.h ..\include\curl\curlrules.h setup_once.h &
..\include\curl\mprintf.h ..\include\curl\curl.h &
..\include\curl\curlver.h ..\include\curl\curlrules.h &
..\include\curl\easy.h ..\include\curl\multi.h inet_ntop.h
$(OBJ_DIR)\parsedate.obj: parsedate.c setup.h config-win32.h &
..\include\curl\curlbuild.h ..\include\curl\curlrules.h setup_once.h &
..\include\curl\curl.h ..\include\curl\curlver.h &
..\include\curl\curlrules.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h
$(OBJ_DIR)\select.obj: select.c setup.h config-win32.h setup_once.h ..\include\curl\curl.h &
..\include\curl\curlver.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h urldata.h cookie.h &
formdata.h timeval.h http_chunks.h hostip.h hash.h llist.h splay.h &
connect.h select.h
$(OBJ_DIR)\gtls.obj: gtls.c setup.h config-win32.h setup_once.h
$(OBJ_DIR)\sslgen.obj: sslgen.c setup.h config-win32.h setup_once.h urldata.h cookie.h &
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
$(OBJ_DIR)\select.obj: select.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h ..\include\curl\curl.h &
..\include\curl\curlver.h ..\include\curl\curlrules.h &
..\include\curl\easy.h ..\include\curl\multi.h ..\include\curl\curl.h &
urldata.h cookie.h formdata.h timeval.h http_chunks.h hostip.h hash.h &
llist.h splay.h connect.h select.h
$(OBJ_DIR)\gtls.obj: gtls.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h
$(OBJ_DIR)\sslgen.obj: sslgen.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h urldata.h cookie.h &
..\include\curl\curl.h ..\include\curl\curlver.h &
..\include\curl\curlrules.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h formdata.h timeval.h &
http_chunks.h hostip.h hash.h llist.h splay.h sslgen.h ssluse.h gtls.h &
sendf.h strequal.h url.h memory.h memdebug.h .\memory.h
$(OBJ_DIR)\tftp.obj: tftp.c setup.h config-win32.h setup_once.h urldata.h cookie.h &
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
nssg.h qssl.h sendf.h strequal.h url.h memory.h progress.h memdebug.h
$(OBJ_DIR)\tftp.obj: tftp.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h urldata.h cookie.h &
..\include\curl\curl.h ..\include\curl\curlver.h &
..\include\curl\curlrules.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h formdata.h timeval.h &
http_chunks.h hostip.h hash.h llist.h splay.h transfer.h sendf.h tftp.h &
progress.h connect.h strerror.h sockaddr.h ..\include\curl\mprintf.h &
memory.h select.h memdebug.h .\memory.h
$(OBJ_DIR)\splay.obj: splay.c splay.h
$(OBJ_DIR)\strdup.obj: strdup.c setup.h config-win32.h setup_once.h strdup.h
progress.h connect.h strerror.h sockaddr.h url.h &
..\include\curl\mprintf.h memory.h select.h memdebug.h
$(OBJ_DIR)\splay.obj: splay.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h splay.h
$(OBJ_DIR)\strdup.obj: strdup.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h strdup.h
$(OBJ_DIR)\socks.obj: socks.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h urldata.h cookie.h &
..\include\curl\curl.h ..\include\curl\curlver.h &
..\include\curl\curlrules.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h formdata.h timeval.h &
http_chunks.h hostip.h hash.h llist.h splay.h sendf.h strequal.h &
select.h connect.h socks.h memdebug.h
$(OBJ_DIR)\ssh.obj: ssh.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h
$(OBJ_DIR)\nss.obj: nss.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h urldata.h cookie.h &
..\include\curl\curl.h ..\include\curl\curlver.h &
..\include\curl\curlrules.h ..\include\curl\easy.h &
..\include\curl\multi.h ..\include\curl\curl.h formdata.h timeval.h &
http_chunks.h hostip.h hash.h llist.h splay.h sendf.h url.h connect.h &
strequal.h select.h sslgen.h ..\include\curl\mprintf.h
$(OBJ_DIR)\qssl.obj: qssl.c setup.h config-win32.h ..\include\curl\curlbuild.h &
..\include\curl\curlrules.h setup_once.h

View File

@@ -26,31 +26,52 @@ DSP = curllib.dsp
VCPROJ = curllib.vcproj
DOCS = README.encoding README.memoryleak README.ares README.curlx \
README.hostip README.multi_socket README.httpauth README.pipelining
README.hostip README.multi_socket README.httpauth README.pipelining \
README.NSS README.curl_off_t
EXTRA_DIST = Makefile.b32 Makefile.m32 Makefile.vc6 Makefile.riscos \
$(DSP) curllib.dsw config-win32.h config-win32ce.h config-riscos.h \
config-mac.h config.h.in makefile.dj config.dos \
libcurl.framework.make libcurl.plist libcurl.rc config-amigaos.h \
amigaos.c amigaos.h makefile.amiga Makefile.netware nwlib.c nwos.c \
libcurl.imp msvcproj.head msvcproj.foot config-win32ce.h \
config-os400.h setup-os400.h config-symbian.h \
Makefile.Watcom config-tpf.h $(DOCS) $(VCPROJ) mk-ca-bundle.pl
EXTRA_DIST = Makefile.b32 Makefile.m32 Makefile.vc6 Makefile.riscos $(DSP) \
curllib.dsw config-win32.h config-win32ce.h config-riscos.h config-mac.h \
config.h.in makefile.dj config.dos libcurl.framework.make libcurl.plist \
libcurl.rc config-amigaos.h amigaos.c amigaos.h makefile.amiga \
Makefile.netware nwlib.c nwos.c libcurl.imp msvcproj.head msvcproj.foot \
config-win32ce.h config-os400.h setup-os400.h config-symbian.h \
Makefile.Watcom config-tpf.h $(DOCS) $(VCPROJ) mk-ca-bundle.pl \
firefox-db2pem.sh
CLEANFILES = $(DSP) $(VCPROJ)
lib_LTLIBRARIES = libcurl.la
LIBCURL_LIBS = @LIBCURL_LIBS@
# we use srcdir/include for the static global include files
# we use builddir/lib for the generated lib/config.h file to get found
# we use srcdir/lib for the lib-private header files
# Specify our include paths here, and do it relative to $(top_srcdir) and
# $(top_builddir), to ensure that these paths which belong to the library
# being currently built and tested are searched before the library which
# might possibly already be installed in the system.
#
# $(top_builddir)/include is for libcurl's generated curl/curlbuild.h file
# $(top_srcdir)/include is for libcurl's external include files
# $(top_builddir)/lib is for libcurl's generated lib/config.h file
# $(top_srcdir)/lib is for libcurl's lib/setup.h and other "private" files
INCLUDES = -I$(top_srcdir)/include \
-I$(top_builddir)/lib \
INCLUDES = -I$(top_builddir)/include \
-I$(top_srcdir)/include \
-I$(top_builddir)/lib \
-I$(top_srcdir)/lib
VERSION=-version-info 5:0:1
if SONAME_BUMP
#
# Bumping of SONAME conditionally may seem like a weird thing to do, and yeah
# it is. The problem is that we try to avoid the bump as hard as possible, but
# yet it is still necessary for a few rare situations. The configure script will
# attempt to figure out these situations, and it can be forced to consider this
# to be such a case! See README.curl_off_t for further details.
#
# This conditional soname bump SHOULD be removed at next "proper" bump.
#
VERSIONINFO=-version-info 6:0:1
else
VERSIONINFO=-version-info 5:0:1
endif
# This flag accepts an argument of the form current[:revision[:age]]. So,
# passing -version-info 3:12:1 sets current to 3, revision to 12, and age to
@@ -91,7 +112,7 @@ if MIMPURE
MIMPURE = -mimpure-text
endif
libcurl_la_LDFLAGS = $(UNDEF) $(VERSION) $(MIMPURE) $(LIBCURL_LIBS)
libcurl_la_LDFLAGS = $(UNDEF) $(VERSIONINFO) $(MIMPURE) $(LIBCURL_LIBS)
# Makefile.inc provides the CSOURCES and HHEADERS defines
include Makefile.inc
@@ -108,7 +129,11 @@ $(DSP): msvcproj.head msvcproj.foot Makefile.am
echo "creating $(DSP)"
@(cp $(srcdir)/msvcproj.head $(DSP); \
echo "# Begin Group \"Source Files\"" $(DSPOUT); \
for file in $(WIN32SOURCES); do \
echo "" $(DSPOUT); \
echo "# PROP Default_Filter \"\"" $(DSPOUT); \
win32_srcs='$(WIN32SOURCES)'; \
sorted_srcs=`for file in $$win32_srcs; do echo $$file; done | sort`; \
for file in $$sorted_srcs; do \
echo "# Begin Source File" $(DSPOUT); \
echo "" $(DSPOUT); \
echo "SOURCE=.\\"$$file $(DSPOUT); \
@@ -116,7 +141,11 @@ $(DSP): msvcproj.head msvcproj.foot Makefile.am
done; \
echo "# End Group" $(DSPOUT); \
echo "# Begin Group \"Header Files\"" $(DSPOUT); \
for file in $(WIN32HEADERS); do \
echo "" $(DSPOUT); \
echo "# PROP Default_Filter \"\"" $(DSPOUT); \
win32_hdrs='$(WIN32HEADERS)'; \
sorted_hdrs=`for file in $$win32_hdrs; do echo $$file; done | sort`; \
for file in $$sorted_hdrs; do \
echo "# Begin Source File" $(DSPOUT); \
echo "" $(DSPOUT); \
echo "SOURCE=.\\"$$file $(DSPOUT); \
@@ -128,11 +157,15 @@ $(DSP): msvcproj.head msvcproj.foot Makefile.am
$(VCPROJ): vc8proj.head vc8proj.foot Makefile.am
echo "creating $(VCPROJ)"
@(cp $(srcdir)/vc8proj.head $(VCPROJ); \
for file in $(WIN32SOURCES); do \
win32_srcs='$(WIN32SOURCES)'; \
sorted_srcs=`for file in $$win32_srcs; do echo $$file; done | sort`; \
for file in $$sorted_srcs; do \
echo "<File RelativePath=\""$$file"\"></File>" $(VCPROJOUT); \
done; \
echo "</Filter><Filter Name=\"Header Files\">" $(VCPROJOUT); \
for file in $(WIN32HEADERS); do \
win32_hdrs='$(WIN32HEADERS)'; \
sorted_hdrs=`for file in $$win32_hdrs; do echo $$file; done | sort`; \
for file in $$sorted_hdrs; do \
echo "<File RelativePath=\""$$file"\"></File>" $(VCPROJOUT); \
done; \
cat $(srcdir)/vc8proj.foot $(VCPROJOUT) )

View File

@@ -11,13 +11,13 @@ CSOURCES = file.c timeval.c base64.c hostip.c progress.c formdata.c \
inet_ntop.c parsedate.c select.c gtls.c sslgen.c tftp.c splay.c \
strdup.c socks.c ssh.c nss.c qssl.c
HHEADERS = arpa_telnet.h netrc.h file.h timeval.h base64.h hostip.h \
HHEADERS = arpa_telnet.h netrc.h file.h timeval.h qssl.h hostip.h \
progress.h formdata.h cookie.h http.h sendf.h ftp.h url.h dict.h \
if2ip.h speedcheck.h urldata.h curl_ldap.h ssluse.h escape.h telnet.h \
getinfo.h strequal.h krb4.h memdebug.h inet_ntoa_r.h http_chunks.h \
strtok.h connect.h llist.h hash.h content_encoding.h share.h md5.h \
http_digest.h http_negotiate.h http_ntlm.h inet_pton.h \
strtok.h connect.h llist.h hash.h content_encoding.h share.h \
curl_md5.h http_digest.h http_negotiate.h http_ntlm.h inet_pton.h \
strtoofft.h strerror.h inet_ntop.h curlx.h memory.h setup.h \
transfer.h select.h easyif.h multiif.h parsedate.h sslgen.h gtls.h \
tftp.h sockaddr.h splay.h strdup.h setup_once.h socks.h ssh.h nssg.h \
qssl.h
curl_base64.h

View File

@@ -20,7 +20,7 @@ endif
# Edit the path below to point to the base of your OpenSSL package.
ifndef OPENSSL_PATH
OPENSSL_PATH = ../../openssl-0.9.8g
OPENSSL_PATH = ../../openssl-0.9.8h
endif
# Edit the path below to point to the base of your LibSSH2 package.
@@ -94,7 +94,7 @@ LIBARCH_L = $(shell $(AWK) 'BEGIN {print tolower(ARGV[1])}' $(LIBARCH))
-include $(OBJDIR)/version.inc
# Global flags for all compilers
CFLAGS = $(OPT) -D$(DB) -DNETWARE -DHAVE_CONFIG_H -nostdinc
CFLAGS += $(OPT) -D$(DB) -DNETWARE -DHAVE_CONFIG_H -nostdinc
ifeq ($(CC),mwccnlm)
LD = mwldnlm
@@ -168,7 +168,7 @@ else
endif
endif
ifdef WITH_SSL
INCLUDES += -I$(OPENSSL_PATH)/outinc_nw_$(LIBARCH_L) -I$(OPENSSL_PATH)/outinc_nw_$(LIBARCH_L)/openssl
INCLUDES += -I$(OPENSSL_PATH)/outinc_nw_$(LIBARCH_L)
LDLIBS += $(OPENSSL_PATH)/out_nw_$(LIBARCH_L)/ssl.$(LIBEXT)
LDLIBS += $(OPENSSL_PATH)/out_nw_$(LIBARCH_L)/crypto.$(LIBEXT)
IMPORTS += GetProcessSwitchCount RunningProcess
@@ -212,9 +212,11 @@ endif
ifeq ($(findstring linux,$(OSTYPE)),linux)
DL = '
DS = /
PCT = %
#-include $(NDKBASE)/nlmconv/ncpfs.inc
else
DS = \\
PCT = %%
endif
# Makefile.inc provides the CSOURCES and HHEADERS defines
@@ -230,7 +232,7 @@ nlm: prebuild $(TARGET).nlm
lib: prebuild $(TARGET).$(LIBEXT)
prebuild: $(OBJDIR) $(OBJDIR)/version.inc config.h
prebuild: $(OBJDIR) $(CURL_INC)/curl/curlbuild.h $(OBJDIR)/version.inc config.h
$(OBJDIR)/%.o: %.c
# @echo Compiling $<
@@ -382,6 +384,13 @@ ifeq ($(LIBARCH),CLIB)
@echo $(DL)#define RECV_TYPE_ARG3 int$(DL) >> $@
@echo $(DL)#define RECV_TYPE_ARG4 int$(DL) >> $@
@echo $(DL)#define RECV_TYPE_RETV int$(DL) >> $@
@echo $(DL)#define RECVFROM_TYPE_ARG1 int$(DL) >> $@
@echo $(DL)#define RECVFROM_TYPE_ARG2 char$(DL) >> $@
@echo $(DL)#define RECVFROM_TYPE_ARG3 int$(DL) >> $@
@echo $(DL)#define RECVFROM_TYPE_ARG4 int$(DL) >> $@
@echo $(DL)#define RECVFROM_TYPE_ARG5 struct sockaddr$(DL) >> $@
@echo $(DL)#define RECVFROM_TYPE_ARG6 int$(DL) >> $@
@echo $(DL)#define RECVFROM_TYPE_RETV int$(DL) >> $@
@echo $(DL)#define SEND_QUAL_ARG2$(DL) >> $@
@echo $(DL)#define SEND_TYPE_ARG1 int$(DL) >> $@
@echo $(DL)#define SEND_TYPE_ARG2 char *$(DL) >> $@
@@ -389,6 +398,7 @@ ifeq ($(LIBARCH),CLIB)
@echo $(DL)#define SEND_TYPE_ARG4 int$(DL) >> $@
@echo $(DL)#define SEND_TYPE_RETV int$(DL) >> $@
@echo $(DL)#define socklen_t int$(DL) >> $@
@echo $(DL)#define pressanykey PressAnyKeyToContinue$(DL) >> $@
else
@echo $(DL)#define OS "i586-pc-libc-NetWare"$(DL) >> $@
@echo $(DL)#define HAVE_FTRUNCATE 1$(DL) >> $@
@@ -414,6 +424,14 @@ else
@echo $(DL)#define RECV_TYPE_ARG3 size_t$(DL) >> $@
@echo $(DL)#define RECV_TYPE_ARG4 int$(DL) >> $@
@echo $(DL)#define RECV_TYPE_RETV ssize_t$(DL) >> $@
@echo $(DL)#define RECVFROM_TYPE_ARG1 int$(DL) >> $@
@echo $(DL)#define RECVFROM_TYPE_ARG2 void$(DL) >> $@
@echo $(DL)#define RECVFROM_TYPE_ARG3 size_t$(DL) >> $@
@echo $(DL)#define RECVFROM_TYPE_ARG4 int$(DL) >> $@
@echo $(DL)#define RECVFROM_TYPE_ARG5 struct sockaddr$(DL) >> $@
@echo $(DL)#define RECVFROM_TYPE_ARG6 size_t$(DL) >> $@
@echo $(DL)#define RECVFROM_TYPE_RETV ssize_t$(DL) >> $@
@echo $(DL)#define RECVFROM_TYPE_ARG2_IS_VOID 1$(DL) >> $@
@echo $(DL)#define SEND_QUAL_ARG2$(DL) >> $@
@echo $(DL)#define SEND_TYPE_ARG1 int$(DL) >> $@
@echo $(DL)#define SEND_TYPE_ARG2 void *$(DL) >> $@
@@ -425,6 +443,7 @@ ifdef ENABLE_IPV6
@echo $(DL)#define ENABLE_IPV6 1$(DL) >> $@
endif
endif
@echo $(DL)#define USE_MANUAL 1$(DL) >> $@
@echo $(DL)#define HAVE_ARPA_INET_H 1$(DL) >> $@
@echo $(DL)#define HAVE_ASSERT_H 1$(DL) >> $@
@echo $(DL)#define HAVE_ERR_H 1$(DL) >> $@
@@ -437,13 +456,16 @@ endif
@echo $(DL)#define HAVE_INET_ADDR 1$(DL) >> $@
@echo $(DL)#define HAVE_INET_NTOA 1$(DL) >> $@
@echo $(DL)#define HAVE_LL 1$(DL) >> $@
@echo $(DL)#define HAVE_LOCALE_H 1$(DL) >> $@
@echo $(DL)#define HAVE_LOCALTIME_R 1$(DL) >> $@
@echo $(DL)#define HAVE_MALLOC_H 1$(DL) >> $@
@echo $(DL)#define HAVE_NETINET_IN_H 1$(DL) >> $@
@echo $(DL)#define HAVE_RECV 1$(DL) >> $@
@echo $(DL)#define HAVE_RECVFROM 1$(DL) >> $@
@echo $(DL)#define HAVE_SELECT 1$(DL) >> $@
@echo $(DL)#define HAVE_SEND 1$(DL) >> $@
@echo $(DL)#define HAVE_SETJMP_H 1$(DL) >> $@
@echo $(DL)#define HAVE_SETLOCALE 1$(DL) >> $@
@echo $(DL)#define HAVE_SIGNAL 1$(DL) >> $@
@echo $(DL)#define HAVE_SIGNAL_H 1$(DL) >> $@
@echo $(DL)#define HAVE_SIG_ATOMIC_T 1$(DL) >> $@
@@ -464,7 +486,6 @@ endif
@echo $(DL)#define HAVE_UTIME 1$(DL) >> $@
@echo $(DL)#define HAVE_UTIME_H 1$(DL) >> $@
@echo $(DL)#define RETSIGTYPE void$(DL) >> $@
@echo $(DL)#define SIZEOF_CURL_OFF_T 4$(DL) >> $@
@echo $(DL)#define SIZEOF_STRUCT_IN_ADDR 4$(DL) >> $@
@echo $(DL)#define STDC_HEADERS 1$(DL) >> $@
@echo $(DL)#define TIME_WITH_SYS_TIME 1$(DL) >> $@
@@ -569,4 +590,33 @@ ca-bundle.crt: mk-ca-bundle.pl
@echo Creating $@
@-$(PERL) $< -b -n $@
$(CURL_INC)/curl/curlbuild.h: Makefile.netware FORCE
@echo Creating $@
@echo $(DL)/* $@ intended for NetWare target.$(DL) > $@
@echo $(DL)** Do not edit this file - it is created by make!$(DL) >> $@
@echo $(DL)** All your changes will be lost!!$(DL) >> $@
@echo $(DL)*/$(DL) >> $@
@echo $(DL)#ifndef __CURL_CURLBUILD_H$(DL) >> $@
@echo $(DL)#define __CURL_CURLBUILD_H$(DL) >> $@
ifeq ($(LIBARCH),LIBC)
@echo $(DL)#define CURL_SIZEOF_LONG 4$(DL) >> $@
@echo $(DL)#define CURL_TYPEOF_CURL_OFF_T long long$(DL) >> $@
@echo $(DL)#define CURL_FORMAT_CURL_OFF_T "lld"$(DL) >> $@
@echo $(DL)#define CURL_FORMAT_CURL_OFF_TU "llu"$(DL) >> $@
@echo $(DL)#define CURL_FORMAT_OFF_T "$(PCT)lld"$(DL) >> $@
@echo $(DL)#define CURL_SIZEOF_CURL_OFF_T 8$(DL) >> $@
@echo $(DL)#define CURL_SUFFIX_CURL_OFF_T LL$(DL) >> $@
@echo $(DL)#define CURL_SUFFIX_CURL_OFF_TU ULL$(DL) >> $@
else
@echo $(DL)#define CURL_SIZEOF_LONG 4$(DL) >> $@
@echo $(DL)#define CURL_TYPEOF_CURL_OFF_T long$(DL) >> $@
@echo $(DL)#define CURL_FORMAT_CURL_OFF_T "ld"$(DL) >> $@
@echo $(DL)#define CURL_FORMAT_CURL_OFF_TU "lu"$(DL) >> $@
@echo $(DL)#define CURL_FORMAT_OFF_T "$(PCT)ld"$(DL) >> $@
@echo $(DL)#define CURL_SIZEOF_CURL_OFF_T 4$(DL) >> $@
@echo $(DL)#define CURL_SUFFIX_CURL_OFF_T L$(DL) >> $@
@echo $(DL)#define CURL_SUFFIX_CURL_OFF_TU UL$(DL) >> $@
endif
@echo $(DL)typedef CURL_TYPEOF_CURL_OFF_T curl_off_t;$(DL) >> $@
@echo $(DL)#endif /* __CURL_CURLBUILD_H */$(DL) >> $@

33
lib/README.NSS Normal file
View File

@@ -0,0 +1,33 @@
libcurl with NSS
================
Author: Daniel Stenberg
Date: June 24, 2008
NSS home => http://www.mozilla.org/projects/security/pki/nss/
libcurl can be built to use the NSS libraries for SSL/TLS. Invoke configure
--without-ssl --with-nss.
The source code in lib/nss.c currently cause a compiler warning due to the
lack of a prototype. The prototype is provided by the public header provided
by NSS called "base64.h". But since we use a private header in libcurl named
identically, we cannot include the NSS one.
This problem persists because:
* NSS doesn't use a properly established separate subdir for their include
files. Instead different distros have put them in /usr/include/nss and
/usr/include/nss3 etc.
* The pkg-config output for NSS provides a full -I path to the nss include dir,
so we cannot #include <nss/base64.h> or <nss3/base64.h>. This too may be due
to how distros do it.
* I tried getting the (all new in June 2008) NSS 3.12 tarball to check how it
behaves out-of-box but this wouldn't even build - complaining on missing
files that aren't included in the tarball. The tarball doesn't even include
build instuctions but you must hunt them down on their web site.
Due to these design problems we may of course get further similar problems in
the future, but I hope we can work them out somehow along the way.

68
lib/README.curl_off_t Normal file
View File

@@ -0,0 +1,68 @@
curl_off_t explained
====================
curl_off_t is a data type provided by the external libcurl include headers. It
is the type meant to be used for the curl_easy_setopt() options that end with
LARGE. The type is 64bit large on most modern platforms.
Transition from < 7.19.0 to >= 7.19.0
-------------------------------------
Applications that used libcurl before 7.19.0 that are rebuilt with a libcurl
that is 7.19.0 or later may or may not have to worry about anything of
this. We have made a significant effort to make the transition really seamless
and transparent.
You have have to take notice if you are in one of the following situations:
o Your app is using or will after the transition use a libcurl that is built
with LFS (large file support) disabled even though your system otherwise
supports it.
o Your app is using or will after the transition use a libcurl that doesn't
support LFS at all, but your system and compiler support 64bit data types.
In both these cases, the curl_off_t type will now (after the transition) be
64bit where it previously was 32bit. This will cause a binary incompatibility
that you MAY need to deal with.
Benefits
--------
This new way has several benefits:
o Platforms without LFS support can still use libcurl to do >32 bit file
transfers and range operations etc as long as they have >32 bit data-types
supported.
o Applications will no longer easily build with the curl_off_t size
mismatched, which has been a very frequent (and annoying) problem with
libcurl <= 7.18.2
Historically
------------
Previously, before 7.19.0, the curl_off_t type would be rather strongly
connected to the size of the system off_t type, where currently curl_off_t is
independent of that.
The strong connection to off_t made it troublesome for application authors
since when they did mistakes, they could get curl_off_t type of different
sizes in the app vs libcurl, and that caused strange effects that were hard to
track and detect by users of libcurl.
SONAME
------
We opted to not bump the soname for the library unconditionally, simply
because soname bumping is causing a lot of grief and moaning all over the
community so we try to keep that at minimum. Also, our selected design path
should be 100% backwards compatible for the vast majority of all libcurl
users.
Enforce SONAME bump
-------------------
If configure doesn't detect your case where a bump is necessary, re-run it
with the --enable-soname-bump command line option!

View File

@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) 1998 - 2007, Daniel Stenberg, <daniel@haxx.se>, et al.
* Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -42,7 +42,7 @@
#include "urldata.h" /* for the SessionHandle definition */
#include "easyif.h" /* for Curl_convert_... prototypes */
#include "base64.h"
#include "curl_base64.h"
#include "memory.h"
/* include memdebug.h last */

View File

@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) 1998 - 2007, Daniel Stenberg, <daniel@haxx.se>, et al.
* Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -103,7 +103,6 @@
#define SELECT_TYPE_ARG1 int
#define SELECT_TYPE_ARG234 (fd_set *)
#define SELECT_TYPE_ARG5 (struct timeval *)
#define SIZEOF_CURL_OFF_T 4
#define STDC_HEADERS 1
#define TIME_WITH_SYS_TIME 1
@@ -131,6 +130,15 @@
#define RECV_TYPE_ARG4 long
#define RECV_TYPE_RETV long
#define HAVE_RECVFROM 1
#define RECVFROM_TYPE_ARG1 long
#define RECVFROM_TYPE_ARG2 char
#define RECVFROM_TYPE_ARG3 long
#define RECVFROM_TYPE_ARG4 long
#define RECVFROM_TYPE_ARG5 struct sockaddr
#define RECVFROM_TYPE_ARG6 long
#define RECVFROM_TYPE_RETV long
#define HAVE_SEND 1
#define SEND_TYPE_ARG1 int
#define SEND_QUAL_ARG2 const

View File

@@ -63,6 +63,16 @@
#define RECV_TYPE_ARG4 int
#define RECV_TYPE_RETV ssize_t
#define HAVE_RECVFROM 1
#define RECVFROM_TYPE_ARG1 int
#define RECVFROM_TYPE_ARG2 void
#define RECVFROM_TYPE_ARG3 size_t
#define RECVFROM_TYPE_ARG4 int
#define RECVFROM_TYPE_ARG5 struct sockaddr
#define RECVFROM_TYPE_ARG6 int
#define RECVFROM_TYPE_RETV ssize_t
#define RECVFROM_TYPE_ARG2_IS_VOID 1
#define HAVE_SEND 1
#define SEND_TYPE_ARG1 int
#define SEND_QUAL_ARG2 const
@@ -71,5 +81,5 @@
#define SEND_TYPE_ARG4 int
#define SEND_TYPE_RETV ssize_t
#include <extra/stricmp.h>
#include <extra/strdup.h>
#define HAVE_EXTRA_STRICMP_H 1
#define HAVE_EXTRA_STRDUP_H 1

View File

@@ -364,7 +364,7 @@
/* The size of a `long double', as computed by sizeof. */
#define SIZEOF_LONG_DOUBLE 8
/* Define if 64 bit integers are supported. */
/* Define if the compiler supports the 'long long' data type. */
#define HAVE_LONGLONG
/* The size of a `long long', as computed by sizeof. */
@@ -374,14 +374,6 @@
#define HAVE_LL
/* The size of `curl_off_t', as computed by sizeof. */
#ifndef _LARGE_FILES
#define _LARGE_FILES
#endif
#define SIZEOF_CURL_OFF_T 8
/* Define this if you have struct sockaddr_storage */
#define HAVE_STRUCT_SOCKADDR_STORAGE
@@ -398,7 +390,7 @@
#undef _FILE_OFFSET_BITS
/* Define for large files, on AIX-style hosts. */
#undef _LARGE_FILES
#define _LARGE_FILES
/* Define to empty if `const' does not conform to ANSI C. */
#undef const
@@ -456,6 +448,30 @@
/* Define to the function return type for recv. */
#define RECV_TYPE_RETV int
/* Define if you have the recvfrom function. */
#define HAVE_RECVFROM
/* Define to the type of arg 1 for recvfrom. */
#define RECVFROM_TYPE_ARG1 int
/* Define to the type pointed by arg 2 for recvfrom. */
#define RECVFROM_TYPE_ARG2 char
/* Define to the type of arg 3 for recvfrom. */
#define RECVFROM_TYPE_ARG3 int
/* Define to the type of arg 4 for recvfrom. */
#define RECVFROM_TYPE_ARG4 int
/* Define to the type pointed by arg 5 for recvfrom. */
#define RECVFROM_TYPE_ARG5 struct sockaddr
/* Define to the type pointed by arg 6 for recvfrom. */
#define RECVFROM_TYPE_ARG6 int
/* Define to the function return type for recvfrom. */
#define RECVFROM_TYPE_RETV int
/* Define if you have the send function. */
#define HAVE_SEND
@@ -482,3 +498,15 @@
/* Use the system keyring as the default CA bundle. */
#define CURL_CA_BUNDLE "/QIBM/UserData/ICSS/Cert/Server/DEFAULT.KDB"
/* ---------------------------------------------------------------- */
/* ADDITIONAL DEFINITIONS */
/* ---------------------------------------------------------------- */
/* The following must be defined BEFORE system header files inclusion. */
#define __ptr128 /* No teraspace. */
#define qadrt_use_fputc_inline /* Generate fputc() wrapper inline. */
#define qadrt_use_fread_inline /* Generate fread() wrapper inline. */
#define qadrt_use_fwrite_inline /* Generate fwrite() wrapper inline. */

View File

@@ -430,6 +430,33 @@
/* Define to the function return type for recv. */
#define RECV_TYPE_RETV ssize_t
/* Define 1 if you have the recvfrom function. */
#define HAVE_RECVFROM 1
/* Define to the type of arg 1 for recvfrom. */
#define RECVFROM_TYPE_ARG1 int
/* Define to the type pointed by arg 2 for recvfrom. */
#define RECVFROM_TYPE_ARG2 void
/* Define to 1 if the type pointed by arg 2 for recvfrom is void. */
#define RECVFROM_TYPE_ARG2_IS_VOID 1
/* Define to the type of arg 3 for recvfrom. */
#define RECVFROM_TYPE_ARG3 size_t
/* Define to the type of arg 4 for recvfrom. */
#define RECVFROM_TYPE_ARG4 int
/* Define to the type pointed by arg 5 for recvfrom. */
#define RECVFROM_TYPE_ARG5 struct sockaddr
/* Define to the type pointed by arg 6 for recvfrom. */
#define RECVFROM_TYPE_ARG6 int
/* Define to the function return type for recvfrom. */
#define RECVFROM_TYPE_RETV ssize_t
/* Define if you have the send function. */
#define HAVE_SEND 1

View File

@@ -312,7 +312,7 @@
/* Define to 1 if you have the `localtime_r' function. */
#define HAVE_LOCALTIME_R 1
/* if your compiler supports long long */
/* Define to 1 if the compiler supports the 'long long' data type. */
#define HAVE_LONGLONG 1
/* Define to 1 if you have the malloc.h header file. */
@@ -415,6 +415,9 @@
/* Define to 1 if you have the recv function. */
#define HAVE_RECV 1
/* Define to 1 if you have the recvfrom function. */
#define HAVE_RECVFROM 1
/* Define to 1 if you have the <rsa.h> header file. */
/* #undef HAVE_RSA_H */
@@ -599,7 +602,7 @@
#define HAVE_VARIADIC_MACROS_C99 1
/* Define to 1 if compiler supports old gcc variadic macro style. */
#define HAVE_VARIADIC_MACROS_GCC 1
/*#define HAVE_VARIADIC_MACROS_GCC 1*/
/* Define to 1 if you have the winber.h header file. */
/* #undef HAVE_WINBER_H */
@@ -680,6 +683,15 @@
#define RECV_TYPE_ARG4 int
#define RECV_TYPE_RETV ssize_t
#define RECVFROM_TYPE_ARG1 int
#define RECVFROM_TYPE_ARG2 void
#define RECVFROM_TYPE_ARG3 size_t
#define RECVFROM_TYPE_ARG4 int
#define RECVFROM_TYPE_ARG5 struct sockaddr
#define RECVFROM_TYPE_ARG6 size_t
#define RECVFROM_TYPE_RETV ssize_t
#define RECVFROM_TYPE_ARG2_IS_VOID 1
#define SEND_TYPE_ARG1 int
#define SEND_QUAL_ARG2 const
#define SEND_TYPE_ARG2 void*
@@ -700,12 +712,6 @@
/* Define to the type of arg 5 for `select'. */
#define SELECT_TYPE_ARG5 (struct timeval *)
/* The size of `curl_off_t', as computed by sizeof. */
#define SIZEOF_CURL_OFF_T 8
/* The size of `long', as computed by sizeof. */
#define SIZEOF_LONG 4
/* The size of `off_t', as computed by sizeof. */
#define SIZEOF_OFF_T 8
@@ -796,3 +802,8 @@
#ifdef _DEBUG
/* #define CURLDEBUG */
#endif
/* sys/cdefs.h fails to define this for WINSCW */
#ifndef __LONG_LONG_SUPPORTED
#define __LONG_LONG_SUPPORTED
#endif

View File

@@ -272,7 +272,7 @@
/* Define to 1 if you have the `localtime_r' function. */
#define HAVE_LOCALTIME_R 1
/* if your compiler supports long long */
/* Define to 1 if the compiler supports the 'long long' data type. */
#define HAVE_LONGLONG 1
/* Define to 1 if you need the malloc.h header file even with stdlib.h */
@@ -593,12 +593,6 @@
/* Define to the type of arg 5 for `select'. */
#define SELECT_TYPE_ARG5 (struct timeval *)
/* The size of a `curl_off_t', as computed by sizeof. */
#define SIZEOF_CURL_OFF_T 8
/* The size of a `long', as computed by sizeof. */
#define SIZEOF_LONG 8
/* The size of a `size_t', as computed by sizeof. */
#define SIZEOF_SIZE_T 8
@@ -702,6 +696,30 @@
/* Define to the function return type for recv. */
#define RECV_TYPE_RETV int
/* Define to 1 if you have the recvfrom function. */
#define HAVE_RECVFROM 1
/* Define to the type of arg 1 for recvfrom. */
#define RECVFROM_TYPE_ARG1 int
/* Define to the type pointed by arg 2 for recvfrom. */
#define RECVFROM_TYPE_ARG2 char
/* Define to the type of arg 3 for recvfrom. */
#define RECVFROM_TYPE_ARG3 int
/* Define to the type of arg 4 for recvfrom. */
#define RECVFROM_TYPE_ARG4 int
/* Define to the type pointed by arg 5 for recvfrom. */
#define RECVFROM_TYPE_ARG5 struct sockaddr
/* Define to the type pointed by arg 6 for recvfrom. */
#define RECVFROM_TYPE_ARG6 int
/* Define to the function return type for recvfrom. */
#define RECVFROM_TYPE_RETV int
/* Define to 1 if you have the send function. */
#define HAVE_SEND 1
@@ -728,15 +746,5 @@
#define CURL_ICONV_CODESET_OF_HOST "IBM-1047"
#endif
/* ---------------------------------------------------------------- */
/* HEADER FILES */
/* ---------------------------------------------------------------- */
#include <strings.h> /* for bzero, strcasecmp, and strncasecmp */
#include <string.h> /* for strcpy and strlen */
#include <stdlib.h> /* for rand and srand */
#include <sys/socket.h> /* for select and ioctl*/
#include <netdb.h> /* for in_addr_t definition */
#include <tpf/sysapi.h> /* for tpf_process_signals */
#endif /* __LIBCONFIGTPF_H */

View File

@@ -172,6 +172,10 @@
/* Define if you have the `RAND_status' function when using SSL. */
#define HAVE_RAND_STATUS 1
/* Define to 1 if you have the `CRYPTO_cleanup_all_ex_data' function.
This is present in OpenSSL versions after 0.9.6b */
#define HAVE_CRYPTO_CLEANUP_ALL_EX_DATA 1
/* Define if you have the select function. */
#define HAVE_SELECT 1
@@ -248,6 +252,30 @@
/* Define to the function return type for recv. */
#define RECV_TYPE_RETV int
/* Define if you have the recvfrom function. */
#define HAVE_RECVFROM 1
/* Define to the type of arg 1 for recvfrom. */
#define RECVFROM_TYPE_ARG1 SOCKET
/* Define to the type pointed by arg 2 for recvfrom. */
#define RECVFROM_TYPE_ARG2 char
/* Define to the type of arg 3 for recvfrom. */
#define RECVFROM_TYPE_ARG3 int
/* Define to the type of arg 4 for recvfrom. */
#define RECVFROM_TYPE_ARG4 int
/* Define to the type pointed by arg 5 for recvfrom. */
#define RECVFROM_TYPE_ARG5 struct sockaddr
/* Define to the type pointed by arg 6 for recvfrom. */
#define RECVFROM_TYPE_ARG6 int
/* Define to the function return type for recvfrom. */
#define RECVFROM_TYPE_RETV int
/* Define if you have the send function. */
#define HAVE_SEND 1
@@ -300,21 +328,6 @@
/* The number of bytes in a long long. */
/* #define SIZEOF_LONG_LONG 8 */
/* Undef SIZEOF_CURL_OFF_T if already defined. */
#ifdef SIZEOF_CURL_OFF_T
#undef SIZEOF_CURL_OFF_T
#endif
/* Define SIZEOF_CURL_OFF_T as computed by sizeof(curl_off_t) */
/* Borland/PellesC/SalfordC lacks _lseeki64(), so we don't support
* >2GB files.
*/
#if defined(__BORLANDC__) || defined(__POCC__) || defined(__SALFORDC__)
#define SIZEOF_CURL_OFF_T 4
#else
#define SIZEOF_CURL_OFF_T 8
#endif
/* ---------------------------------------------------------------- */
/* STRUCT RELATED */
/* ---------------------------------------------------------------- */
@@ -342,7 +355,7 @@
#define HAVE_VARIADIC_MACROS_C99 1
#endif
/* Define if the compiler supports LONGLONG. */
/* Define if the compiler supports the 'long long' data type. */
#if defined(__MINGW32__) || defined(__WATCOMC__)
#define HAVE_LONGLONG 1
#endif
@@ -377,6 +390,22 @@
# endif
#endif
/* ---------------------------------------------------------------- */
/* LARGE FILE SUPPORT */
/* ---------------------------------------------------------------- */
#if defined(_MSC_VER) && !defined(_WIN32_WCE)
# if (_MSC_VER >= 900) && (_INTEGRAL_MAX_BITS >= 64)
# define USE_WIN32_LARGE_FILES
# else
# define USE_WIN32_SMALL_FILES
# endif
#endif
#if !defined(USE_WIN32_LARGE_FILES) && !defined(USE_WIN32_SMALL_FILES)
# define USE_WIN32_SMALL_FILES
#endif
/* ---------------------------------------------------------------- */
/* LDAP SUPPORT */
/* ---------------------------------------------------------------- */

View File

@@ -234,6 +234,30 @@
/* Define to the function return type for recv. */
#define RECV_TYPE_RETV int
/* Define if you have the recvfrom function. */
#define HAVE_RECVFROM 1
/* Define to the type of arg 1 for recvfrom. */
#define RECVFROM_TYPE_ARG1 SOCKET
/* Define to the type pointed by arg 2 for recvfrom. */
#define RECVFROM_TYPE_ARG2 char
/* Define to the type of arg 3 for recvfrom. */
#define RECVFROM_TYPE_ARG3 int
/* Define to the type of arg 4 for recvfrom. */
#define RECVFROM_TYPE_ARG4 int
/* Define to the type pointed by arg 5 for recvfrom. */
#define RECVFROM_TYPE_ARG5 struct sockaddr
/* Define to the type pointed by arg 6 for recvfrom. */
#define RECVFROM_TYPE_ARG6 int
/* Define to the function return type for recvfrom. */
#define RECVFROM_TYPE_RETV int
/* Define if you have the send function. */
#define HAVE_SEND 1
@@ -283,14 +307,6 @@
/* The number of bytes in a long long. */
/* #define SIZEOF_LONG_LONG 8 */
/* Undef SIZEOF_CURL_OFF_T if already defined. */
#ifdef SIZEOF_CURL_OFF_T
#undef SIZEOF_CURL_OFF_T
#endif
/* Define SIZEOF_CURL_OFF_T as computed by sizeof(curl_off_t) */
#define SIZEOF_CURL_OFF_T 4
/* ---------------------------------------------------------------- */
/* STRUCT RELATED */
/* ---------------------------------------------------------------- */
@@ -324,6 +340,22 @@
# endif
#endif
/* ---------------------------------------------------------------- */
/* LARGE FILE SUPPORT */
/* ---------------------------------------------------------------- */
#if defined(_MSC_VER) && !defined(_WIN32_WCE)
# if (_MSC_VER >= 900) && (_INTEGRAL_MAX_BITS >= 64)
# define USE_WIN32_LARGE_FILES
# else
# define USE_WIN32_SMALL_FILES
# endif
#endif
#if !defined(USE_WIN32_LARGE_FILES) && !defined(USE_WIN32_SMALL_FILES)
# define USE_WIN32_SMALL_FILES
#endif
/* ---------------------------------------------------------------- */
/* LDAP SUPPORT */
/* ---------------------------------------------------------------- */
@@ -351,24 +383,6 @@
#define CURL_DISABLE_TELNET 1
#define CURL_DISABLE_LDAP 1
#ifdef HAVE_WINDOWS_H
# ifndef WIN32_LEAN_AND_MEAN
# define WIN32_LEAN_AND_MEAN
# endif
# include <windows.h>
# ifdef HAVE_WINSOCK2_H
# include <winsock2.h>
# ifdef HAVE_WS2TCPIP_H
# include <ws2tcpip.h>
# endif
# else
# ifdef HAVE_WINSOCK_H
# include <winsock.h>
# endif
# endif
# include <process.h>
#endif
#define ENOSPC 1
#define ENOMEM 2
#define EAGAIN 3

View File

@@ -35,6 +35,7 @@
#define HAVE_NET_IF_H 1
#define HAVE_PROCESS_H 1
#define HAVE_RECV 1
#define HAVE_RECVFROM 1
#define HAVE_SELECT 1
#define HAVE_SEND 1
#define HAVE_SETJMP_H 1
@@ -47,6 +48,7 @@
#define HAVE_STRICMP 1
#define HAVE_STRTOLL 1
#define HAVE_STRUCT_TIMEVAL 1
#define HAVE_STRUCT_IN6_ADDR 1
#define HAVE_SYS_IOCTL_H 1
#define HAVE_SYS_SOCKET_H 1
#define HAVE_SYS_STAT_H 1
@@ -59,12 +61,11 @@
#define RETSIGTYPE void
#define SIZEOF_LONG_DOUBLE 16
#define SIZEOF_CURL_OFF_T 4 /* no huge file support */
#define STDC_HEADERS 1
#define TIME_WITH_SYS_TIME 1
/* Qualifiers for send() and recv().
*/
/* Qualifiers for send(), recv() and recvfrom(). */
#define SEND_TYPE_ARG1 int
#define SEND_QUAL_ARG2 const
#define SEND_TYPE_ARG2 void *
@@ -78,6 +79,14 @@
#define RECV_TYPE_ARG4 int
#define RECV_TYPE_RETV int
#define RECVFROM_TYPE_ARG1 int
#define RECVFROM_TYPE_ARG2 void
#define RECVFROM_TYPE_ARG3 int
#define RECVFROM_TYPE_ARG4 int
#define RECVFROM_TYPE_ARG5 struct sockaddr
#define RECVFROM_TYPE_ARG6 int
#define RECVFROM_TYPE_RETV int
#define RECVFROM_TYPE_ARG2_IS_VOID 1
#define BSD
@@ -89,6 +98,7 @@
#endif
#ifdef USE_SSLEAY /* on cmd-line */
#define HAVE_CRYPTO_CLEANUP_ALL_EX_DATA 1
#define HAVE_OPENSSL_ENGINE_H 1
#define OPENSSL_NO_KRB5 1
#define USE_OPENSSL 1
@@ -133,10 +143,6 @@
#define HAVE_SYS_TIME_H 1
#endif
#include <stdlib.h>
#include <string.h>
#include <tcp.h> /* Watt-32 API */
#undef word
#undef byte

View File

@@ -77,6 +77,9 @@
#include <errno.h>
#include <string.h>
#define _MPRINTF_REPLACE /* use our functions only */
#include <curl/mprintf.h>
#include "urldata.h"
#include "sendf.h"
#include "if2ip.h"
@@ -337,9 +340,7 @@ static CURLcode bindlocal(struct connectdata *conn,
if(h) {
if(in == CURL_INADDR_NONE)
/* convert the resolved address, sizeof myhost >= INET_ADDRSTRLEN */
Curl_inet_ntop(h->addr->ai_addr->sa_family,
&((struct sockaddr_in*)h->addr->ai_addr)->sin_addr,
myhost, sizeof myhost);
Curl_printable_address(h->addr, myhost, sizeof myhost);
else
/* we know data->set.device is shorter than the myhost array */
strcpy(myhost, dev);
@@ -551,7 +552,7 @@ CURLcode Curl_store_ip_addr(struct connectdata *conn)
}
/* Used within the multi interface. Try next IP address, return TRUE if no
more address exists */
more address exists or error */
static bool trynextip(struct connectdata *conn,
int sockindex,
bool *connected)
@@ -577,8 +578,7 @@ static bool trynextip(struct connectdata *conn,
conn->sock[sockindex] = sockfd;
conn->ip_addr = ai;
Curl_store_ip_addr(conn);
return FALSE;
return Curl_store_ip_addr(conn) != CURLE_OK;
}
ai = ai->ai_next;
}
@@ -772,12 +772,22 @@ singleipconnect(struct connectdata *conn,
*connected = FALSE; /* default is not connected */
#ifdef CURLRES_IPV6
if (conn->scope && (addr->family == AF_INET6)) {
struct sockaddr_in6 *in6 = (struct sockaddr_in6 *)&addr->addr;
in6->sin6_scope_id = conn->scope;
}
#endif
/* FIXME: do we have Curl_printable_address-like with struct sockaddr* as
argument? */
#if defined(HAVE_SYS_UN_H) && defined(AF_UNIX)
if(addr->family==AF_UNIX)
if(addr->family==AF_UNIX) {
infof(data, " Trying %s... ",
((const struct sockaddr_un*)(&addr->addr))->sun_path);
snprintf(data->info.ip, MAX_IPADR_LEN, "%s",
((const struct sockaddr_un*)(&addr->addr))->sun_path);
}
else
#endif
{
@@ -789,8 +799,10 @@ singleipconnect(struct connectdata *conn,
iptoprint = &((const struct sockaddr_in*)(&addr->addr))->sin_addr;
if(Curl_inet_ntop(addr->family, iptoprint, addr_buf,
sizeof(addr_buf)) != NULL)
sizeof(addr_buf)) != NULL) {
infof(data, " Trying %s... ", addr_buf);
snprintf(data->info.ip, MAX_IPADR_LEN, "%s", addr_buf);
}
}
if(data->set.tcp_nodelay)
@@ -906,6 +918,7 @@ CURLcode Curl_connecthost(struct connectdata *conn, /* context */
long timeout_ms;
long timeout_per_addr;
DEBUGASSERT(sockconn);
*connected = FALSE; /* default to not connected */
/* get the timeout left */
@@ -954,9 +967,10 @@ CURLcode Curl_connecthost(struct connectdata *conn, /* context */
before = after;
} /* end of connect-to-each-address loop */
*sockconn = sockfd; /* the socket descriptor we've connected */
if(sockfd == CURL_SOCKET_BAD) {
/* no good connect was made */
*sockconn = CURL_SOCKET_BAD;
failf(data, "couldn't connect to host");
return CURLE_COULDNT_CONNECT;
}
@@ -967,10 +981,6 @@ CURLcode Curl_connecthost(struct connectdata *conn, /* context */
if(addr)
*addr = curr_addr;
/* allow NULL-pointers to get passed in */
if(sockconn)
*sockconn = sockfd; /* the socket descriptor we've connected */
data->info.numconnects++; /* to track the number of connections made */
return CURLE_OK;

View File

@@ -1,3 +1,5 @@
#ifndef __CURL_CONTENT_ENCODING_H
#define __CURL_CONTENT_ENCODING_H
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
@@ -5,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) 1998 - 2007, Daniel Stenberg, <daniel@haxx.se>, et al.
* Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -39,3 +41,5 @@ CURLcode
Curl_unencode_gzip_write(struct connectdata *conn,
struct SingleRequest *k,
ssize_t nread);
#endif

View File

@@ -990,7 +990,7 @@ int Curl_cookie_output(struct CookieInfo *c, const char *dumphere)
char *format_ptr;
fputs("# Netscape HTTP Cookie File\n"
"# http://curlm.haxx.se/rfc/cookie_spec.html\n"
"# http://curl.haxx.se/rfc/cookie_spec.html\n"
"# This file was generated by libcurl! Edit at your own risk.\n\n",
out);
co = c->cookies;

View File

@@ -1,5 +1,5 @@
#ifndef __BASE64_H
#define __BASE64_H
#ifndef __CURL_BASE64_H
#define __CURL_BASE64_H
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) 1998 - 2007, Daniel Stenberg, <daniel@haxx.se>, et al.
* Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms

View File

@@ -1,5 +1,5 @@
#ifndef __MD5_H
#define __MD5_H
#ifndef __CURL_MD5_H
#define __CURL_MD5_H
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) 1998 - 2004, Daniel Stenberg, <daniel@haxx.se>, et al.
* Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms

View File

@@ -83,6 +83,7 @@
#include "easyif.h"
#include "select.h"
#include "sendf.h" /* for failf function prototype */
#include "http_ntlm.h"
#include "connect.h" /* for Curl_getconnectinfo */
#define _MPRINTF_REPLACE /* use our functions only */
@@ -103,18 +104,23 @@
/* The last #include file should be: */
#include "memdebug.h"
#ifdef USE_WINSOCK
/* win32_cleanup() is for win32 socket cleanup functionality, the opposite
of win32_init() */
static void win32_cleanup(void)
{
#ifdef USE_WINSOCK
WSACleanup();
#endif
#ifdef USE_WINDOWS_SSPI
Curl_ntlm_global_cleanup();
#endif
}
/* win32_init() performs win32 socket initialization to properly setup the
stack to allow networking */
static CURLcode win32_init(void)
{
#ifdef USE_WINSOCK
WORD wVersionRequested;
WSADATA wsaData;
int err;
@@ -147,15 +153,19 @@ static CURLcode win32_init(void)
return CURLE_FAILED_INIT;
}
/* The Windows Sockets DLL is acceptable. Proceed. */
#endif
#ifdef USE_WINDOWS_SSPI
{
CURLcode err = Curl_ntlm_global_init();
if (err != CURLE_OK)
return err;
}
#endif
return CURLE_OK;
}
#else
/* These functions exist merely to prevent compiler warnings */
static CURLcode win32_init(void) { return CURLE_OK; }
static void win32_cleanup(void) { }
#endif
#ifdef USE_LIBIDN
/*
* Initialise use of IDNA library.
@@ -195,6 +205,10 @@ static long init_flags;
#define system_strdup strdup
#endif
#if defined(_MSC_VER) && defined(_DLL)
# pragma warning(disable:4232) /* MSVC extension, dllimport identity */
#endif
#ifndef __SYMBIAN32__
/*
* If a memory-using function (like curl_getenv) is used before
@@ -217,6 +231,10 @@ curl_strdup_callback Curl_cstrdup;
curl_calloc_callback Curl_ccalloc;
#endif
#if defined(_MSC_VER) && defined(_DLL)
# pragma warning(default:4232) /* MSVC extension, dllimport identity */
#endif
/**
* curl_global_init() globally initializes cURL given a bitwise set of the
* different features of what to initialize.
@@ -949,7 +967,8 @@ CURLcode Curl_convert_from_network(struct SessionHandle *data,
rc, curl_easy_strerror(rc));
}
return(rc);
} else {
}
else {
#ifdef HAVE_ICONV
/* do the translation ourselves */
char *input_ptr, *output_ptr;
@@ -964,9 +983,9 @@ CURLcode Curl_convert_from_network(struct SessionHandle *data,
error = ERRNO;
failf(data,
"The iconv_open(\"%s\", \"%s\") call failed with errno %i: %s",
CURL_ICONV_CODESET_OF_HOST,
CURL_ICONV_CODESET_OF_NETWORK,
error, strerror(error));
CURL_ICONV_CODESET_OF_HOST,
CURL_ICONV_CODESET_OF_NETWORK,
error, strerror(error));
return CURLE_CONV_FAILED;
}
}
@@ -978,8 +997,8 @@ CURLcode Curl_convert_from_network(struct SessionHandle *data,
if((rc == ICONV_ERROR) || (in_bytes != 0)) {
error = ERRNO;
failf(data,
"The Curl_convert_from_network iconv call failed with errno %i: %s",
error, strerror(error));
"The Curl_convert_from_network iconv call failed with errno %i: %s",
error, strerror(error));
return CURLE_CONV_FAILED;
}
#else
@@ -1025,9 +1044,9 @@ CURLcode Curl_convert_from_utf8(struct SessionHandle *data,
error = ERRNO;
failf(data,
"The iconv_open(\"%s\", \"%s\") call failed with errno %i: %s",
CURL_ICONV_CODESET_OF_HOST,
CURL_ICONV_CODESET_FOR_UTF8,
error, strerror(error));
CURL_ICONV_CODESET_OF_HOST,
CURL_ICONV_CODESET_FOR_UTF8,
error, strerror(error));
return CURLE_CONV_FAILED;
}
}
@@ -1039,8 +1058,8 @@ CURLcode Curl_convert_from_utf8(struct SessionHandle *data,
if((rc == ICONV_ERROR) || (in_bytes != 0)) {
error = ERRNO;
failf(data,
"The Curl_convert_from_utf8 iconv call failed with errno %i: %s",
error, strerror(error));
"The Curl_convert_from_utf8 iconv call failed with errno %i: %s",
error, strerror(error));
return CURLE_CONV_FAILED;
}
if(output_ptr < input_ptr) {

55
lib/firefox-db2pem.sh Executable file
View File

@@ -0,0 +1,55 @@
#!/bin/sh
# ***************************************************************************
# * _ _ ____ _
# * Project ___| | | | _ \| |
# * / __| | | | |_) | |
# * | (__| |_| | _ <| |___
# * \___|\___/|_| \_\_____|
# *
# * Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al.
# *
# * This software is licensed as described in the file COPYING, which
# * you should have received as part of this distribution. The terms
# * are also available at http://curl.haxx.se/docs/copyright.html.
# *
# * You may opt to use, copy, modify, merge, publish, distribute and/or sell
# * copies of the Software, and permit persons to whom the Software is
# * furnished to do so, under the terms of the COPYING file.
# *
# * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# * KIND, either express or implied.
# *
# * $Id$
# ***************************************************************************
# This shell script creates a fresh ca-bundle.crt file for use with libcurl.
# It extracts all ca certs it finds in the local Firefox database and converts
# them all into PEM format.
#
db=`ls -1d $HOME/.mozilla/firefox/*default`
out=$1
if test -z "$out"; then
out="ca-bundle.crt" # use a sensible default
fi
currentdate=`date`
cat >$out <<EOF
##
## Bundle of CA Root Certificates
##
## Converted at: ${currentdate}
## These were converted from the local Firefox directory by the db2pem script.
##
EOF
certutil -L -h 'Builtin Object Token' -d $db | \
grep ' *[CcGTPpu]*,[CcGTPpu]*,[CcGTPpu]* *$' | \
sed -e 's/ *[CcGTPpu]*,[CcGTPpu]*,[CcGTPpu]* *$//' -e 's/\(.*\)/"\1"/' | \
sort | \
while read nickname; \
do echo $nickname | sed -e "s/Builtin Object Token://g"; \
eval certutil -d $db -L -n "$nickname" -a ; \
done >> $out

View File

@@ -705,7 +705,7 @@ CURLFORMcode FormAdd(struct curl_httppost **httppost,
}
if(CURL_FORMADD_OK == return_value) {
/* go through the list, check for copleteness and if everything is
/* go through the list, check for completeness and if everything is
* alright add the HttpPost item otherwise set return_value accordingly */
post = NULL;
@@ -1674,7 +1674,7 @@ int main(int argc, argv_item_t argv[])
} while(1);
fprintf(stdout, "size: ");
fprintf(stdout, CURL_FORMAT_OFF_T, size);
fprintf(stdout, "%" FORMAT_OFF_T, size);
fprintf(stdout, "\n");
if(errors)
fprintf(stdout, "\n==> %d Test(s) failed!\n", errors);

View File

@@ -279,6 +279,7 @@ static void freedirs(struct ftp_conn *ftpc)
}
free(ftpc->dirs);
ftpc->dirs = NULL;
ftpc->dirdepth = 0;
}
if(ftpc->file) {
free(ftpc->file);
@@ -387,7 +388,7 @@ static CURLcode ftp_readresp(curl_socket_t sockfd,
ssize_t gotbytes;
char *ptr;
struct SessionHandle *data = conn->data;
char *buf = data->state.buffer;
char * const buf = data->state.buffer;
CURLcode result = CURLE_OK;
struct ftp_conn *ftpc = &conn->proto.ftpc;
int code = 0;
@@ -413,6 +414,7 @@ static CURLcode ftp_readresp(curl_socket_t sockfd,
* int to begin with, even though its datatype may be larger
* than an int.
*/
DEBUGASSERT((ptr+ftpc->cache_size) <= (buf+BUFSIZE+1));
memcpy(ptr, ftpc->cache, (int)ftpc->cache_size);
gotbytes = (int)ftpc->cache_size;
free(ftpc->cache); /* free the cache */
@@ -426,6 +428,7 @@ static CURLcode ftp_readresp(curl_socket_t sockfd,
conn->data_prot = 0;
#endif
DEBUGASSERT((ptr+BUFSIZE-ftpc->nread_resp) <= (buf+BUFSIZE+1));
res = Curl_read(conn, sockfd, ptr, BUFSIZE-ftpc->nread_resp,
&gotbytes);
#if defined(HAVE_KRB4) || defined(HAVE_GSSAPI)
@@ -534,9 +537,10 @@ static CURLcode ftp_readresp(curl_socket_t sockfd,
dash or a space and it is significant */
clipamount = 4;
}
else if(perline && (ftpc->nread_resp > BUFSIZE/2)) {
/* We got a large chunk of data and there's still trailing data to
take care of, so we put that part in the "cache" and restart */
else if(ftpc->nread_resp > BUFSIZE/2) {
/* We got a large chunk of data and there's potentially still trailing
data to take care of, so we put any such part in the "cache", clear
the buffer to make space and restart. */
clipamount = perline;
restart = TRUE;
}
@@ -3223,17 +3227,19 @@ static CURLcode ftp_done(struct connectdata *conn, CURLcode status,
shutdown(conn->sock[SECONDARYSOCKET],2); /* SD_BOTH */
#endif
if(conn->ssl[SECONDARYSOCKET].use) {
/* The secondary socket is using SSL so we must close down that part first
before we close the socket for real */
Curl_ssl_close(conn, SECONDARYSOCKET);
if(conn->sock[SECONDARYSOCKET] != CURL_SOCKET_BAD) {
if(conn->ssl[SECONDARYSOCKET].use) {
/* The secondary socket is using SSL so we must close down that part first
before we close the socket for real */
Curl_ssl_close(conn, SECONDARYSOCKET);
/* Note that we keep "use" set to TRUE since that (next) connection is
still requested to use SSL */
/* Note that we keep "use" set to TRUE since that (next) connection is
still requested to use SSL */
}
sclose(conn->sock[SECONDARYSOCKET]);
conn->sock[SECONDARYSOCKET] = CURL_SOCKET_BAD;
}
sclose(conn->sock[SECONDARYSOCKET]);
conn->sock[SECONDARYSOCKET] = CURL_SOCKET_BAD;
if((ftp->transfer == FTPTRANSFER_BODY) && !status && !premature) {
/*

View File

@@ -137,6 +137,9 @@ CURLcode Curl_getinfo(struct SessionHandle *data, CURLINFO info, ...)
case CURLINFO_CONNECT_TIME:
*param_doublep = data->progress.t_connect;
break;
case CURLINFO_APPCONNECT_TIME:
*param_doublep = data->progress.t_appconnect;
break;
case CURLINFO_PRETRANSFER_TIME:
*param_doublep = data->progress.t_pretransfer;
break;
@@ -210,6 +213,10 @@ CURLcode Curl_getinfo(struct SessionHandle *data, CURLINFO info, ...)
option had been enabled! */
*param_charp = data->info.wouldredirect;
break;
case CURLINFO_PRIMARY_IP:
/* Return the ip address of the most recent (primary) connection */
*param_charp = data->info.ip;
break;
default:
return CURLE_BAD_FUNCTION_ARGUMENT;
}

View File

@@ -143,6 +143,32 @@ static void showtime(struct SessionHandle *data,
infof(data, "%s", data->state.buffer);
}
static gnutls_datum load_file (const char *file)
{
FILE *f;
gnutls_datum loaded_file = { NULL, 0 };
long filelen;
void *ptr;
if (!(f = fopen(file, "r"))
|| fseek(f, 0, SEEK_END) != 0
|| (filelen = ftell(f)) < 0
|| fseek(f, 0, SEEK_SET) != 0
|| !(ptr = malloc((size_t)filelen))
|| fread(ptr, 1, (size_t)filelen, f) < (size_t)filelen) {
return loaded_file;
}
loaded_file.data = ptr;
loaded_file.size = (unsigned int)filelen;
return loaded_file;
}
static void unload_file(gnutls_datum data) {
free(data.data);
}
/* this function does a BLOCKING SSL/TLS (re-)handshake */
static CURLcode handshake(struct connectdata *conn,
gnutls_session session,
@@ -221,7 +247,8 @@ Curl_gtls_connect(struct connectdata *conn,
unsigned int cert_list_size;
const gnutls_datum *chainp;
unsigned int verify_status;
gnutls_x509_crt x509_cert;
gnutls_x509_crt x509_cert,x509_issuer;
gnutls_datum issuerp;
char certbuf[256]; /* big enough? */
size_t size;
unsigned int algo;
@@ -271,6 +298,21 @@ Curl_gtls_connect(struct connectdata *conn,
rc, data->set.ssl.CAfile);
}
if(data->set.ssl.CRLfile) {
/* set the CRL list file */
rc = gnutls_certificate_set_x509_crl_file(conn->ssl[sockindex].cred,
data->set.ssl.CRLfile,
GNUTLS_X509_FMT_PEM);
if(rc < 0) {
failf(data, "error reading crl file %s (%s)\n",
data->set.ssl.CRLfile, gnutls_strerror(rc));
return CURLE_SSL_CRL_BADFILE;
}
else
infof(data, "found %d CRL in %s\n",
rc, data->set.ssl.CRLfile);
}
/* Initialize TLS session as a client */
rc = gnutls_init(&conn->ssl[sockindex].session, GNUTLS_CLIENT);
if(rc) {
@@ -360,7 +402,9 @@ Curl_gtls_connect(struct connectdata *conn,
chainp = gnutls_certificate_get_peers(session, &cert_list_size);
if(!chainp) {
if(data->set.ssl.verifypeer) {
if(data->set.ssl.verifypeer ||
data->set.ssl.verifyhost ||
data->set.ssl.issuercert) {
failf(data, "failed to get server cert");
return CURLE_PEER_FAILED_VERIFICATION;
}
@@ -384,8 +428,9 @@ Curl_gtls_connect(struct connectdata *conn,
/* verify_status is a bitmask of gnutls_certificate_status bits */
if(verify_status & GNUTLS_CERT_INVALID) {
if(data->set.ssl.verifypeer) {
failf(data, "server certificate verification failed. CAfile: %s",
data->set.ssl.CAfile?data->set.ssl.CAfile:"none");
failf(data, "server certificate verification failed. CAfile: %s "
"CRLfile: %s", data->set.ssl.CAfile?data->set.ssl.CAfile:"none",
data->set.ssl.CRLfile?data->set.ssl.CRLfile:"none");
return CURLE_SSL_CACERT;
}
else
@@ -404,6 +449,21 @@ Curl_gtls_connect(struct connectdata *conn,
gnutls_x509_crt_t format */
gnutls_x509_crt_import(x509_cert, chainp, GNUTLS_X509_FMT_DER);
if (data->set.ssl.issuercert) {
gnutls_x509_crt_init(&x509_issuer);
issuerp = load_file(data->set.ssl.issuercert);
gnutls_x509_crt_import(x509_issuer, &issuerp, GNUTLS_X509_FMT_PEM);
rc = gnutls_x509_crt_check_issuer(x509_cert,x509_issuer);
unload_file(issuerp);
if (rc <= 0) {
failf(data, "server certificate issuer check failed (IssuerCert: %s)",
data->set.ssl.issuercert?data->set.ssl.issuercert:"none");
return CURLE_SSL_ISSUER_ERROR;
}
infof(data,"\t server certificate issuer check OK (Issuer Cert: %s)\n",
data->set.ssl.issuercert?data->set.ssl.issuercert:"none");
}
size=sizeof(certbuf);
rc = gnutls_x509_crt_get_dn_by_oid(x509_cert, GNUTLS_OID_X520_COMMON_NAME,
0, /* the first and only one */
@@ -547,9 +607,9 @@ Curl_gtls_connect(struct connectdata *conn,
/* return number of sent (non-SSL) bytes */
ssize_t Curl_gtls_send(struct connectdata *conn,
int sockindex,
void *mem,
size_t len)
int sockindex,
const void *mem,
size_t len)
{
ssize_t rc = gnutls_record_send(conn->ssl[sockindex].session, mem, len);

View File

@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) 1998 - 2007, Daniel Stenberg, <daniel@haxx.se>, et al.
* Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -22,6 +22,9 @@
*
* $Id$
***************************************************************************/
#ifdef USE_GNUTLS
int Curl_gtls_init(void);
int Curl_gtls_cleanup(void);
CURLcode Curl_gtls_connect(struct connectdata *conn, int sockindex);
@@ -35,7 +38,7 @@ void Curl_gtls_close(struct connectdata *conn, int sockindex);
/* return number of sent (non-SSL) bytes */
ssize_t Curl_gtls_send(struct connectdata *conn, int sockindex,
void *mem, size_t len);
const void *mem, size_t len);
ssize_t Curl_gtls_recv(struct connectdata *conn, /* connection data */
int num, /* socketindex */
char *buf, /* store read data here */
@@ -45,4 +48,22 @@ void Curl_gtls_session_free(void *ptr);
size_t Curl_gtls_version(char *buffer, size_t size);
int Curl_gtls_shutdown(struct connectdata *conn, int sockindex);
/* API setup for GnuTLS */
#define curlssl_init Curl_gtls_init
#define curlssl_cleanup Curl_gtls_cleanup
#define curlssl_connect Curl_gtls_connect
#define curlssl_session_free(x) Curl_gtls_session_free(x)
#define curlssl_close_all Curl_gtls_close_all
#define curlssl_close Curl_gtls_close
#define curlssl_shutdown(x,y) Curl_gtls_shutdown(x,y)
#define curlssl_set_engine(x,y) (x=x, y=y, CURLE_FAILED_INIT)
#define curlssl_set_engine_default(x) (x=x, CURLE_FAILED_INIT)
#define curlssl_engines_list(x) (x=x, NULL)
#define curlssl_send Curl_gtls_send
#define curlssl_recv Curl_gtls_recv
#define curlssl_version Curl_gtls_version
#define curlssl_check_cxn(x) (x=x, -1)
#define curlssl_data_pending(x,y) (x=x, y=y, 0)
#endif /* USE_GNUTLS */
#endif

Some files were not shown because too many files have changed in this diff Show More